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