{ mainUser, inputs, getFlakePkg', lib, config, ... }: let niri = (getFlakePkg' inputs.niri "niri-unstable"); xwayland-satellite = (getFlakePkg' inputs.niri "xwayland-satellite-unstable"); inherit (config) rice; in { imports = [ inputs.niri.nixosModules.niri inputs.niri-tag.nixosModules.niri-tag inputs.niri-s76.nixosModules.default ]; user.desktops.niri = { enable = true; config = let template = builtins.readFile ./niri.kdl; baseConfig = with rice; lib.replaceStrings [ "%CURSOR%" "%ROUNDING%" "%GAPS%" "%BORDER%" "%ACTIVE%" "%INACTIVE%" "%SATELLITE%" ] [ cursor.name (toString borders.rounding) (toString borders.gaps) (toString borders.thickness) palette.shortHex.bright.yellow palette.shortHex.normal.white (lib.getExe xwayland-satellite) ] template; in baseConfig; }; user.packages = [ niri xwayland-satellite ]; services.greetd = { enable = true; restart = false; settings = let session = { command = "niri-session"; user = "${mainUser}"; }; in { default_session = session; initial_session = session; }; }; programs.niri = { enable = true; package = niri; }; services.niri-tag = { enable = true; # scratchpads = { # "${config.apps.streamPlayer}" = 99; # "${config.apps.passwordManager}" = 101; # }; }; services.niri-s76-bridge.enable = true; }