{ config, lib, pkgs, ... }: let inherit (lib.modules) mkForce mkIf; inherit (lib.options) mkEnableOption; inherit (config.modules.system) isGraphical; cfg = config.modules.desktops.niri; patched-niri = pkgs.niri.overrideAttrs (prev: { src = pkgs.fetchFromGitHub { inherit (prev.src) owner repo; rev = "37458d94b288945f6cfbd3c5c233f634d59f246c"; hash = "sha256-F5iVU/hjoSHSSe0gllxm0PcAaseEtGNanYK5Ha3k2Tg="; }; cargoDeps = pkgs.rustPlatform.fetchCargoVendor { inherit (patched-niri) src; hash = "sha256-fT0L/OTlQ9BnKHnckKsLi+tN+oevEU+eJWrh1INqQhA="; }; patches = [ (pkgs.fetchpatch { url = "https://github.com/YaLTeR/niri/commit/ab71a6c553f9c53ea484ec6dedc5dcede708929f.diff"; hash = "sha256-C3TJIK5/YTAcmdSP6NyOwX+1oA36u6nrMuJuVYIvAHQ="; }) ]; }); in { options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor"; config = mkIf (cfg.enable || isGraphical) { programs.niri = { enable = true; package = patched-niri; }; # The niri module auto enables the gnome keyring, # which is something I direly want to avoid. services.gnome.gnome-keyring.enable = mkForce false; environment.etc."niri/config.kdl".source = ./config.kdl; environment.systemPackages = builtins.attrValues { inherit (pkgs) xwayland-satellite avizo playerctl wl-clipboard ; }; }; }