My NixOS configuration (mirror)
1{
2 config,
3 inputs,
4 lib,
5 pkgs,
6 ...
7}: {
8 options.modules.programs.niri.enable = lib.mkEnableOption "niri support";
9
10 config = let
11 stashPkg = inputs.stash.packages.x86_64-linux.stash;
12 in
13 lib.mkIf config.modules.programs.niri.enable {
14 environment.systemPackages = with pkgs; [
15 swww # needs to be installed at the system level
16 polkit_gnome
17 stashPkg
18 ];
19
20 systemd.packages = [stashPkg];
21
22 programs.niri = {
23 enable = true;
24 package = pkgs.niri;
25 };
26
27 # shoutout @CodedNil on gh for the fix
28 # waiting on https://github.com/YaLTeR/niri/pull/1923 for a real fix
29 services.keyd = {
30 enable = true;
31 keyboards.default = {
32 ids = ["*"];
33 settings.global = {
34 overload_tap_timeout = 200; #ms
35 };
36 settings.main = {
37 compose = "layer(meta)";
38 leftmeta = "overload(meta, macro(leftmeta+z))";
39 };
40 };
41 };
42
43 # turns out i've been using this the whole time!
44 # i believe niri uses this automatically, but it doesn't hurt to set it
45 services.gnome.gnome-keyring.enable = true;
46
47 systemd = {
48 user.services.polkit-gnome-authentication-agent-1 = {
49 description = "polkit-gnome-authentication-agent-1";
50 wantedBy = ["graphical-session.target"];
51 wants = ["graphical-session.target"];
52 after = ["graphical-session.target"];
53 serviceConfig = {
54 Type = "simple";
55 ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
56 Restart = "on-failure";
57 RestartSec = 1;
58 TimeoutStopSec = 10;
59 };
60 };
61 };
62 };
63}