vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / config / xdg / icons.nix
blobb0267d21d3eb337044f417209c16cc50299af844
1 { config, lib, pkgs, ... }:
3   meta = {
4     maintainers = lib.teams.freedesktop.members;
5   };
7   options = {
8     xdg.icons.enable = lib.mkOption {
9       type = lib.types.bool;
10       default = true;
11       description = ''
12         Whether to install files to support the
13         [XDG Icon Theme specification](https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html).
14       '';
15     };
16     xdg.icons.fallbackCursorThemes = lib.mkOption {
17       type = lib.types.listOf lib.types.str;
18       default = [];
19       description = ''
20         Names of the fallback cursor themes, in order of preference, to be used when no other icon source can be found.
21         Set to `[]` to disable the fallback entirely.
22       '';
23     };
24   };
26   config = lib.mkIf config.xdg.icons.enable {
27     environment.pathsToLink = [
28       "/share/icons"
29       "/share/pixmaps"
30     ];
32     environment.systemPackages = [
33       # Empty icon theme that contains index.theme file describing directories
34       # where toolkits should look for icons installed by apps.
35       pkgs.hicolor-icon-theme
36     ] ++ lib.optionals (config.xdg.icons.fallbackCursorThemes != []) [
37       (pkgs.writeTextFile {
38         name = "fallback-cursor-theme";
39         text = ''
40           [Icon Theme]
41           Inherits=${lib.concatStringsSep "," config.xdg.icons.fallbackCursorThemes}
42         '';
43         destination = "/share/icons/default/index.theme";
44       })
45     ];
47     # libXcursor looks for cursors in XCURSOR_PATH
48     # it mostly follows the spec for icons
49     # See: https://www.x.org/releases/current/doc/man/man3/Xcursor.3.xhtml Themes
51     # These are preferred so they come first in the list
52     environment.sessionVariables.XCURSOR_PATH = [
53       "$HOME/.icons"
54       "$HOME/.local/share/icons"
55     ];
57     environment.profileRelativeSessionVariables.XCURSOR_PATH = [
58       "/share/icons"
59       "/share/pixmaps"
60     ];
61   };