Home

dotnix @main - refs - log -
-
https://git.jolheiser.com/dotnix.git
My nix dotfiles
tree log patch
niri
Signature
-----BEGIN SSH SIGNATURE----- U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgBTEvCQk6VqUAdN2RuH6bj1dNkY oOpbPWj+jw4ua1B1cAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 AAAAQP0LdzEhvMbm5hCPqxLtYJjCXk80NgHWQMZ9Rk/pqy0DC+ymoSE3uM74P7PB8rdqS6 CI/5yYSP8S8QYd5xg6lAQ= -----END SSH SIGNATURE-----
jolheiser <git@jolheiser.com>
2 weeks ago
6 changed files, 303 additions(+), 15 deletions(-)
apps/de/default.nixapps/gui/default.nixapps/gui/niri.nixflake.lockflake.nixmachines/common/gui/default.nix
M apps/de/default.nixapps/de/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
diff --git a/apps/de/default.nix b/apps/de/default.nix
index 25c34e35131dfb70ccbda8ea2164784d9ddd55d4..a9af9e409e9e96a1b9462029611ece62b6cf2489 100644
--- a/apps/de/default.nix
+++ b/apps/de/default.nix
@@ -1,6 +1,8 @@
 { pkgs, ... }:
 {
-  imports = [ ./gtk.nix ];
+  imports = [
+    ./gtk.nix
+  ];
   dconf.settings =
     let
       wallpaper = pkgs.fetchurl {
M apps/gui/default.nixapps/gui/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
diff --git a/apps/gui/default.nix b/apps/gui/default.nix
index ffb0a61d400785ec8f677fc1a924d9e32c2c28ea..19e99056f419f0f3ade964569cc56df7c0e866a4 100644
--- a/apps/gui/default.nix
+++ b/apps/gui/default.nix
@@ -5,6 +5,7 @@     ../nogui
     ./firefox.nix
     ./flameshot.nix
     ./ghostty.nix
+    ./niri.nix
     ./obs.nix
     ./spotify.nix
     ./wezterm.nix
I apps/gui/niri.nix
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
diff --git a/apps/gui/niri.nix b/apps/gui/niri.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ac36582078dc2ad70cf248db8da8f4c96b2dff2a
--- /dev/null
+++ b/apps/gui/niri.nix
@@ -0,0 +1,125 @@
+{ pkgs, ... }:
+{
+  home.packages = with pkgs; [
+    wofi
+    waybar
+  ];
+  programs.niri = {
+    enable = true;
+    settings = {
+      input = {
+        #keyboard = {
+        #  layout = "us";
+        #};
+        touchpad = {
+          tap = true;
+          natural-scroll = true;
+        };
+      };
+
+      binds = {
+        "Mod+T" = {
+          action.spawn = "ghostty";
+        };
+
+        # App launcher
+        "Mod+D" = {
+          action.spawn = [
+            "wofi"
+            "--show"
+            "drun"
+          ];
+        };
+
+        "Mod+Q" = {
+          action.close-window = { };
+        };
+
+        "Mod+Shift+E" = {
+          action.quit = { };
+        };
+
+        "Print" = {
+          action.spawn = "grim";
+        };
+        "Shift+Print" = {
+          action.spawn = [
+            "sh"
+            "-c"
+            "grim -g \"$(slurp)\""
+          ];
+        };
+
+        "Mod+Left" = {
+          action.focus-column-left = { };
+        };
+        "Mod+Right" = {
+          action.focus-column-right = { };
+        };
+        "Mod+Up" = {
+          action.focus-window-up = { };
+        };
+        "Mod+Down" = {
+          action.focus-window-down = { };
+        };
+
+        "Mod+Shift+Left" = {
+          action.move-column-left = { };
+        };
+        "Mod+Shift+Right" = {
+          action.move-column-right = { };
+        };
+        "Mod+Shift+Up" = {
+          action.move-window-up = { };
+        };
+        "Mod+Shift+Down" = {
+          action.move-window-down = { };
+        };
+
+        "Mod+R" = {
+          action.switch-preset-column-width = { };
+        };
+
+        "Mod+1" = {
+          action.focus-workspace = 1;
+        };
+        "Mod+2" = {
+          action.focus-workspace = 2;
+        };
+        "Mod+3" = {
+          action.focus-workspace = 3;
+        };
+        "Mod+4" = {
+          action.focus-workspace = 4;
+        };
+
+        "Mod+Shift+1" = {
+          action.move-column-to-workspace = 1;
+        };
+        "Mod+Shift+2" = {
+          action.move-column-to-workspace = 2;
+        };
+        "Mod+Shift+3" = {
+          action.move-column-to-workspace = 3;
+        };
+        "Mod+Shift+4" = {
+          action.move-column-to-workspace = 4;
+        };
+      };
+
+      layout = {
+        gaps = 16;
+        center-focused-column = "never";
+      };
+
+      window-rules = [
+        {
+          matches = [ { app-id = "firefox"; } ];
+          default-column-width = {
+            proportion = 0.5;
+          };
+        }
+      ];
+    };
+  };
+}
M flake.lockflake.lock
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
diff --git a/flake.lock b/flake.lock
index a3a1018b8c3076af27b1f5278c027f02d7d52677..f94fd6717ec5262899098722b75182641bf0e771 100644
--- a/flake.lock
+++ b/flake.lock
@@ -120,6 +120,62 @@         "repo": "home-manager",
         "type": "github"
       }
     },
+    "niri": {
+      "inputs": {
+        "niri-stable": "niri-stable",
+        "niri-unstable": "niri-unstable",
+        "nixpkgs": "nixpkgs_4",
+        "nixpkgs-stable": "nixpkgs-stable",
+        "xwayland-satellite-stable": "xwayland-satellite-stable",
+        "xwayland-satellite-unstable": "xwayland-satellite-unstable"
+      },
+      "locked": {
+        "lastModified": 1750270605,
+        "narHash": "sha256-JfuuBGrM36I7KB9UID5urRvjHWWjFW//gMxQ5g9PrSo=",
+        "owner": "sodiboo",
+        "repo": "niri-flake",
+        "rev": "da32eedd0d2c980fc90fe2b5cdd9080cc8c9f51f",
+        "type": "github"
+      },
+      "original": {
+        "owner": "sodiboo",
+        "repo": "niri-flake",
+        "type": "github"
+      }
+    },
+    "niri-stable": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1748151941,
+        "narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=",
+        "owner": "YaLTeR",
+        "repo": "niri",
+        "rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7",
+        "type": "github"
+      },
+      "original": {
+        "owner": "YaLTeR",
+        "ref": "v25.05.1",
+        "repo": "niri",
+        "type": "github"
+      }
+    },
+    "niri-unstable": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1750225787,
+        "narHash": "sha256-7O/8CChaOhSBSu94McHE0vyH0o+J5R4exq2DDq4zHAg=",
+        "owner": "YaLTeR",
+        "repo": "niri",
+        "rev": "ed14e8da8476d5fde27b14d1dde03256a2f6e11b",
+        "type": "github"
+      },
+      "original": {
+        "owner": "YaLTeR",
+        "repo": "niri",
+        "type": "github"
+      }
+    },
     "nixos-hardware": {
       "locked": {
         "lastModified": 1747900541,
@@ -152,6 +208,22 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
+    "nixpkgs-stable": {
+      "locked": {
+        "lastModified": 1750133334,
+        "narHash": "sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "36ab78dab7da2e4e27911007033713bab534187b",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixos-25.05",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
     "nixpkgs_2": {
       "locked": {
         "lastModified": 1733935885,
@@ -185,6 +257,22 @@         "type": "github"
       }
     },
     "nixpkgs_4": {
+      "locked": {
+        "lastModified": 1750134718,
+        "narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_5": {
       "locked": {
         "lastModified": 1748190013,
         "narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=",
@@ -200,7 +288,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_5": {
+    "nixpkgs_6": {
       "locked": {
         "lastModified": 1748190013,
         "narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=",
@@ -216,7 +304,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_6": {
+    "nixpkgs_7": {
       "locked": {
         "lastModified": 1741037377,
         "narHash": "sha256-SvtvVKHaUX4Owb+PasySwZsoc5VUeTf1px34BByiOxw=",
@@ -232,7 +320,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_7": {
+    "nixpkgs_8": {
       "locked": {
         "lastModified": 1726937504,
         "narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=",
@@ -248,7 +336,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_8": {
+    "nixpkgs_9": {
       "locked": {
         "lastModified": 1743583204,
         "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=",
@@ -266,7 +354,7 @@     },
     "nur": {
       "inputs": {
         "flake-parts": "flake-parts",
-        "nixpkgs": "nixpkgs_5",
+        "nixpkgs": "nixpkgs_6",
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
@@ -285,7 +373,7 @@       }
     },
     "pokego": {
       "inputs": {
-        "nixpkgs": "nixpkgs_6"
+        "nixpkgs": "nixpkgs_7"
       },
       "locked": {
         "lastModified": 1741123315,
@@ -308,8 +396,9 @@         "cfg": "cfg",
         "gomodinit": "gomodinit",
         "helix": "helix",
         "home-manager": "home-manager",
+        "niri": "niri",
         "nixos-hardware": "nixos-hardware",
-        "nixpkgs": "nixpkgs_4",
+        "nixpkgs": "nixpkgs_5",
         "nur": "nur",
         "pokego": "pokego",
         "spectre": "spectre",
@@ -318,7 +407,7 @@       }
     },
     "spectre": {
       "inputs": {
-        "nixpkgs": "nixpkgs_7"
+        "nixpkgs": "nixpkgs_8"
       },
       "locked": {
         "lastModified": 1732207908,
@@ -366,7 +455,7 @@       }
     },
     "tclip": {
       "inputs": {
-        "nixpkgs": "nixpkgs_8",
+        "nixpkgs": "nixpkgs_9",
         "utils": "utils"
       },
       "locked": {
@@ -419,6 +508,39 @@       },
       "original": {
         "owner": "numtide",
         "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "xwayland-satellite-stable": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1748488455,
+        "narHash": "sha256-IiLr1alzKFIy5tGGpDlabQbe6LV1c9ABvkH6T5WmyRI=",
+        "owner": "Supreeeme",
+        "repo": "xwayland-satellite",
+        "rev": "3ba30b149f9eb2bbf42cf4758d2158ca8cceef73",
+        "type": "github"
+      },
+      "original": {
+        "owner": "Supreeeme",
+        "ref": "v0.6",
+        "repo": "xwayland-satellite",
+        "type": "github"
+      }
+    },
+    "xwayland-satellite-unstable": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1749315541,
+        "narHash": "sha256-bEik1BfVOFnWvtOrcOHluos/edJ8f+G2y1QySbt/0Ak=",
+        "owner": "Supreeeme",
+        "repo": "xwayland-satellite",
+        "rev": "da2ecb5be816de35e2efe23a408a1c49fe8b11ba",
+        "type": "github"
+      },
+      "original": {
+        "owner": "Supreeeme",
+        "repo": "xwayland-satellite",
         "type": "github"
       }
     }
M flake.nixflake.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
diff --git a/flake.nix b/flake.nix
index 04d9c1fdf43fbdfc4aa9fc78ff0e4a86cd70f261..4b73e654f07113c23cb558eb1f202af47a16420e 100644
--- a/flake.nix
+++ b/flake.nix
@@ -16,6 +16,7 @@         nixpkgs.follows = "nixpkgs";
       };
     };
     nixos-hardware.url = "github:nixos/nixos-hardware/master";
+    niri.url = "github:sodiboo/niri-flake";
     nur.url = "github:nix-community/NUR";
     helix.url = "git+https://git.jolheiser.com/helix.drv.git";
     gomodinit.url = "git+https://git.jolheiser.com/gomodinit.git";
@@ -30,6 +31,7 @@     {
       nixpkgs,
       home-manager,
       nixos-hardware,
+      niri,
       agenix,
       ...
     }@inputs:
@@ -103,7 +105,10 @@       overlays.default = overlay;
       homeConfigurations = {
         "jolheiser" = home-manager.lib.homeManagerConfiguration {
           inherit pkgs;
-          modules = homeManagerModules ++ [ ./apps/de ];
+          modules = homeManagerModules ++ [
+            niri.homeModules.niri
+            ./apps/de
+          ];
         };
       };
       nixosConfigurations = {
@@ -111,6 +116,7 @@         "genmaicha" = nixpkgs.lib.nixosSystem {
           inherit system;
           modules = [
             nixos-hardware.nixosModules.framework-13-7040-amd
+            niri.nixosModules.niri
             ./machines/genmaicha
             commonConfig
           ];
@@ -129,4 +135,19 @@           agenix.packages.${system}.agenix
         ];
       };
     };
+  nixConfig = {
+    warn-dirty = false;
+    extra-experimental-features = [
+      "nix-command"
+      "flakes"
+    ];
+    extra-substituters = [
+      "https://niri.cachix.org"
+      "https://jolheiser.cachix.org"
+    ];
+    extra-trusted-public-keys = [
+      "niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
+      "jolheiser.cachix.org-1:fiKkfTuHFqDK5ZOVxcqb4InUkKsrTvtMLISid7XvuVg="
+    ];
+  };
 }
M machines/common/gui/default.nixmachines/common/gui/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
diff --git a/machines/common/gui/default.nix b/machines/common/gui/default.nix
index 907b59f29e089434d6f24f1494ed9b0eeb4546c4..3330e35d21e9e6e87c971df5739744168195d8cb 100644
--- a/machines/common/gui/default.nix
+++ b/machines/common/gui/default.nix
@@ -1,6 +1,8 @@
 { pkgs, ... }:
 {
-  imports = [ ../nogui ];
+  imports = [
+    ../nogui
+  ];
 
   security = {
     rtkit.enable = true;
@@ -14,19 +16,34 @@     };
     pulseaudio.enable = false;
     xserver = {
       enable = true;
-      displayManager.lightdm.enable = true;
-      desktopManager.cinnamon.enable = true;
+      displayManager.gdm = {
+        enable = true;
+        wayland = true;
+      };
       xkb = {
         layout = "us";
         variant = "";
       };
     };
   };
+  xdg.portal = {
+    enable = true;
+    wlr.enable = true;
+    extraPortals = with pkgs; [
+      xdg-desktop-portal-gtk
+    ];
+  };
+
   fonts.packages = with pkgs.nerd-fonts; [
     hack
     iosevka
     jetbrains-mono
     monaspace
   ];
-  environment.systemPackages = [ pkgs.tailscale-systray ];
+  environment.systemPackages = with pkgs; [
+    tailscale-systray
+    grim
+    slurp
+    wl-clipboard
+  ];
 }