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}