mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-03-15 18:19:00 +00:00
228 lines
4.9 KiB
Nix
228 lines
4.9 KiB
Nix
{ pkgs, lib, self }:
|
|
|
|
{
|
|
/**
|
|
Create a derivation containing an XDG MIME association listing.
|
|
|
|
# Arguments
|
|
|
|
It's a sole attribute set with the following attributes:
|
|
|
|
config
|
|
: Nix-representable settings in INI format.
|
|
|
|
desktopName
|
|
: An optional string containing the desktop name. By default, it's empty
|
|
representing the global settings. Otherwise, it's considered to be
|
|
desktop-specific.
|
|
|
|
addedAssociations
|
|
: An attrset of MIME associations. This is not set if it's a
|
|
desktop-specific configuration.
|
|
|
|
removedAssociations
|
|
: An attrset of MIME associations. This is not set if it's a
|
|
desktop-specific configuration.
|
|
|
|
defaultApplications
|
|
: An attrset of MIME associations for default applications.
|
|
|
|
settings
|
|
: Nix-representable settings in INI format. Mutually exclusive with the
|
|
proper associations attribute and ignores proper checking if set. By
|
|
default, it is empty.
|
|
|
|
# Type
|
|
|
|
```
|
|
makeXDGMimeAssociationList :: Attr -> Derivation
|
|
```
|
|
|
|
# Examples
|
|
|
|
```nix
|
|
makeXDGMimeAssociationList {
|
|
defaultApplications = { "application/pdf" = "firefox.desktop"; };
|
|
addedAssociations = {
|
|
};
|
|
}
|
|
```
|
|
*/
|
|
makeXDGMimeAssociationList =
|
|
pkgs.callPackage ./xdg/make-association-list.nix { };
|
|
|
|
/**
|
|
Create a derivation containing an XDG Portal configuration.
|
|
|
|
# Arguments
|
|
|
|
It's a sole attribute set with the following attributes:
|
|
|
|
config
|
|
: The settings as a Nix-representable settings in INI format.
|
|
|
|
desktopName
|
|
: The name of the desktop name. By default, it is set to `common` which is
|
|
considered as the global namespace. Otherwise, you can just set
|
|
desktop-specific settings.
|
|
|
|
# Type
|
|
|
|
```
|
|
makeXDGPortalConfiguration :: Attr -> Derivation
|
|
```
|
|
|
|
# Examples
|
|
|
|
```nix
|
|
makeXDGPortalConfiguration {
|
|
desktopName = "one.foodogsquared.SampleDesktop";
|
|
config.preferred = {
|
|
default = "gtk";
|
|
"org.freedesktop.impl.portal.Screencast" = "gnome";
|
|
};
|
|
}
|
|
```
|
|
*/
|
|
makeXDGPortalConfiguration =
|
|
pkgs.callPackage ./xdg/make-portal-config.nix { };
|
|
|
|
/**
|
|
Create a derivation containing an XDG desktop entry file. Unlike
|
|
`pkgs.makeDesktopItem`, it's more freeform.
|
|
|
|
# Arguments
|
|
|
|
It's a sole attribute set with the following attributes:
|
|
|
|
name
|
|
: Name of the desktop entry. Only used as part of the package name and the
|
|
default value of the destination path.
|
|
|
|
config
|
|
: Nix-representable data to be exported as the desktop entry.
|
|
|
|
validate
|
|
: Add a validation check for the exported desktop entry.
|
|
|
|
destination
|
|
: Destination path relative to the output path.
|
|
|
|
# Type
|
|
|
|
```
|
|
makeXDGDesktopEntry :: Attr -> Derivation
|
|
```
|
|
|
|
# Examples
|
|
|
|
```nix
|
|
makeXDGDesktopEntry {
|
|
name = "horizontal-hunger";
|
|
validate = false;
|
|
config = { "Desktop Entry".Exec = "Hello"; };
|
|
}
|
|
```
|
|
*/
|
|
makeXDGDesktopEntry = pkgs.callPackage ./xdg/make-desktop-entry.nix { };
|
|
|
|
/**
|
|
A wrapper for building Hugo projects.
|
|
|
|
# Arguments
|
|
|
|
Similar to `pkgs.buildGoModule`.
|
|
|
|
# Type
|
|
|
|
```
|
|
buildHugoSite :: Attr -> Derivation
|
|
```
|
|
|
|
# Examples
|
|
|
|
```nix
|
|
buildHugoSite {
|
|
pname = "foodogsquared-hm-startpage";
|
|
version = "0.3.0";
|
|
src = lib.cleanSource ./.;
|
|
|
|
vendorHash = "sha256-Mi61QK1yKWIneZ+i79fpJqP9ew5r5vnv7ptr9YGq0Uk=";
|
|
|
|
preBuild = ''
|
|
install -Dm0644 ${
|
|
../tinted-theming/base16/bark-on-a-tree.yaml
|
|
} ./data/foodogsquared-homepage/themes/_dark.yaml
|
|
install -Dm0644 ${
|
|
../tinted-theming/base16/albino-bark-on-a-tree.yaml
|
|
} ./data/foodogsquared-homepage/themes/_light.yaml
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "foodogsquared's homepage";
|
|
license = licenses.gpl3Only;
|
|
};
|
|
}
|
|
```
|
|
*/
|
|
buildHugoSite = pkgs.callPackage ./hugo-build-site { };
|
|
|
|
/**
|
|
An convenient function for building with the custom extended stdenv.
|
|
|
|
# Arguments
|
|
|
|
Similar to `pkgs.buildEnv`.
|
|
|
|
# Type
|
|
|
|
```
|
|
buildFDSEnv :: Attr -> Derivation
|
|
```
|
|
|
|
# Examples
|
|
|
|
```nix
|
|
buildFDSEnv {
|
|
paths = with pkgs; [ hello ];
|
|
pathsToLink = [ "/bin" "/share" ];
|
|
}
|
|
```
|
|
*/
|
|
buildFDSEnv =
|
|
pkgs.callPackage ./build-fds-env.nix { extendedStdenv = self.stdenv; };
|
|
|
|
/**
|
|
A wrapper for creating dconf databases.
|
|
|
|
# Arguments
|
|
|
|
A sole attribute set with the following attributes:
|
|
|
|
dir
|
|
: The directory of the dconf keyfiles.
|
|
|
|
name
|
|
: The name of the dconf database. By default, it is based from the directory name.
|
|
|
|
keyfiles
|
|
: A list of keyfiles to be included in the dconf database compilation.
|
|
|
|
# Type
|
|
|
|
```
|
|
buildDconfDb :: Attr -> Derivation
|
|
```
|
|
|
|
# Examples
|
|
|
|
```nix
|
|
buildDconfDb {
|
|
dir = ./config/dconf;
|
|
name = "custom-gnome";
|
|
}
|
|
```
|
|
*/
|
|
buildDconfDb = pkgs.callPackage ./build-dconf-db.nix { };
|
|
}
|