{ moduleWithSystem, self, inputs, ... }: { flake.nixosModules.hyprland = moduleWithSystem ({ self', pkgs, system, ... }: let modules = with self.nixosModules; [ audio systemTheme ]; runtimePkgs = self'.packages.hyprland.passthru.runtimePackages; lib = pkgs.lib; in { imports = modules; programs.hyprland = { enable = true; package = self'.packages.hyprland; portalPackage = inputs.hyprland.inputs.hyprland.packages.${system}.xdg-desktop-portal-hyprland; }; services.xserver.enable = true; security.polkit.enable = true; environment.systemPackages = with pkgs; [ hyprlock gsettings-desktop-schemas ]; system.activationScripts.hyprRuntimeEnv = lib.stringAfter ["specialfs"] '' mkdir -p /run/hypr-runtime-env/bin ${lib.concatStringsSep "\n" (lib.mapAttrsToList (name: pkg: '' ln -sfn ${lib.getExe pkg} /run/hypr-runtime-env/bin/${name} '') runtimePkgs)} ''; }); perSystem = { self', system, inputs', ... }: { packages = { hyprland = inputs'.hyprland.packages.default.override { runtimePackages = inputs.hyprland.lib.defaultRuntimePkgs.${system} // { wpaperd = self'.packages.wpaperd; kitty = self'.packages.kitty; gotify-desktop = self'.packages.gotify-desktop; otter-launcher = self'.packages.otter-launcher; quickshell = self'.packages.quickshell; waybar = self'.packages.waybar; wlogout = self'.packages.wlogout; way-edges = self'.packages.way-edges; }; }; }; }; }