main
 1{den, ...}: {
 2  den.aspects.desktop.env.shell.noctalia = {
 3    includes =
 4      den.lib.policy.when
 5      ({host, ...}: host.hasAspect den.aspects.desktop.env.wm.niri)
 6      [den.aspects.desktop.env.shell.noctalia.integration.niri];
 7  };
 8
 9  den.aspects.desktop.env.shell.noctalia.integration = {
10    niri = {
11      homeManager = {
12        programs.noctalia.settings = {
13          backdrop.enabled = true;
14        };
15
16        programs.niri.extraConfig = {
17          pre = {
18            _children = [
19              {spawn-at-startup = "noctalia";}
20              {
21                layer-rule = {
22                  match._props = {namespace = "^noctalia-backdrop";};
23                  place-within-backdrop = true;
24                };
25              }
26              {
27                layer-rule = {
28                  match._props = {namespace = "^noctalia-(bar-[^\"]+|notification|dock|panel|attached-panel|osd)$";};
29                  background-effect = {
30                    xray = false;
31                  };
32                };
33              }
34              {
35                window-rule = {
36                  match._props = {app-id = "dev.noctalia.Noctalia.Settings";};
37                  open-floating = true;
38                  default-column-width = {fixed = 1080;};
39                  default-window-height = {fixed = 920;};
40                  background-effect = {
41                    xray = false;
42                  };
43                };
44              }
45            ];
46            binds = {
47              "Mod+Space" = {
48                _props.hotkey-overlay-title = "Toggle Application Launcher";
49                spawn-sh = "noctalia msg panel-toggle launcher";
50              };
51              "Mod+X" = {
52                _props.hotkey-overlay-title = "Toggle Noctalia Control Center";
53                spawn-sh = "noctalia msg panel-toggle control-center";
54              };
55              "Mod+V" = {
56                _props.hotkey-overlay-title = "Toggle Clipboard History";
57                spawn-sh = "noctalia msg panel-toggle clipboard";
58              };
59              "Mod+Alt+L" = {
60                _props.hotkey-overlay-title = "Lock Screen";
61                spawn-sh = "noctalia msg session lock";
62              };
63
64              XF86AudioRaiseVolume.spawn-sh = "noctalia msg volume-up";
65              XF86AudioLowerVolume.spawn-sh = "noctalia msg volume-down";
66              XF86AudioMute.spawn-sh = "noctalia msg volume-mute";
67              XF86MonBrightnessUp.spawn-sh = "noctalia msg brightness-up";
68              XF86MonBrightnessDown.spawn-sh = "noctalia msg brightness-down";
69            };
70          };
71        };
72      };
73    };
74  };
75}