den
 1{lib, ...}: {
 2  den.aspects.desktop.provides.de.provides.custom.provides.wm.provides.niri.nixos = {
 3    programs.niri = {
 4      enable = true;
 5      useNautilus = true;
 6    };
 7  };
 8  den.aspects.desktop.provides.de.provides.custom.provides.wm.provides.niri.homeManager = {
 9    config,
10    pkgs,
11    ...
12  }: {
13    options = {
14      programs.niri = {
15        extraConfig = lib.mkOption {
16          type = lib.types.lines;
17          description = "Extra configuration for Niri, in KDL format.";
18        };
19        extraKeybinds = lib.mkOption {
20          type = lib.types.lines;
21          description = "Extra keybindings for Niri, in KDL format.";
22        };
23      };
24    };
25    config = {
26      xdg.configFile."niri" = {
27        source = ./config;
28        recursive = true;
29      };
30      xdg.configFile."niri/nix/misc.kdl".text = ''
31        screenshot-path "${config.xdg.userDirs.pictures}/Screenshots/Screenshot_%Y-%m-%d_%H-%M-%S.png";
32        hotkey-overlay {
33          skip-at-startup
34          hide-not-bound
35        }
36        xwayland-satellite { path "${lib.getExe pkgs.xwayland-satellite}"; }
37        prefer-no-csd
38        layout {
39          focus-ring {
40            active-color "#${config.lib.stylix.colors.base0E}"
41          }
42        }
43        window-rule {
44          opacity ${toString config.stylix.opacity.applications}
45        }
46      '';
47      services.xsettingsd = {
48        enable = true;
49      };
50
51      programs.niri.extraConfig = ''
52        binds {
53          ${config.programs.niri.extraKeybinds}
54        }
55      '';
56      xdg.configFile."niri/nix/extra.kdl".text = config.programs.niri.extraConfig;
57    };
58  };
59}