{ inputs, self, ... }: { flake.nixosModules.graphics = { config, pkgs, lib, ... }: { config = lib.mkIf ((config.components.windowManagers == "niri")||(builtins.elem "niri" config.components.windowManagers)) { environment.systemPackages = with pkgs; [ xdg-desktop-portal-gnome wl-clipboard libsecret cage wev qalculate-qt ]; features.applications.gui.nautilus.enable = true; services.upower.enable = true; services.udisks2.enable = true; programs.niri = { enable = true; useNautilus = true; # override niri source to use https://github.com/niri-wm/niri/pull/3642 package = (pkgs.niri.overrideAttrs (finalAttrs: prevAttrs: { cargoHash = "sha256-HypBB3PL4nVFMNH2+jEK0+dG9dJ920nHi8GwRoeH/v4="; src = pkgs.fetchFromGitHub { owner = "niri-wm"; repo = "niri"; rev = "cb41d54703eef73883bb2be58e19bcf3715d777c"; sha256 = "sha256-cLzTeMcCdQJ+kHGcOposjeheFyEG/tGOA1jFAORMHjI="; }; cargoDeps = pkgs.rustPlatform.fetchCargoVendor { inherit (finalAttrs) pname src version; hash = finalAttrs.cargoHash; }; })); }; home-manager.users.${config.info.userName} = lib.mkIf (config.features.nixos.home-manager.enable) { components.windowManagers = [ "niri" ]; }; }; }; flake.homeModules.graphics = { config, pkgs, lib, inputs, ... }: { home = lib.mkIf ((config.components.windowManagers == "niri")||(builtins.elem "niri" config.components.windowManagers)) { activation.linkNiriConfig = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { target = "${config.xdg.configHome}/niri/config.kdl"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/niri.kdl"; }); }; }; }