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