{ description = "Hyprland test wrapper from nixpkgs only"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05"; }; outputs = { self, nixpkgs, ... }: let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; config.allowUnfree = false; }; hypr = pkgs.hyprland; configDir = pkgs.lib.cleanSource ./.; configFile = "${configDir}/hyprland.lua"; runtimePackages = with pkgs; [ wofi grim swaynotificationcenter hyprpaper lxsession hyprlock hyprshot wayvnc pamixer pavucontrol brightnessctl python313Packages.requests networkmanagerapplet swaybg quickshell waybar blueman ]; runtimePath = pkgs.lib.makeBinPath runtimePackages; verifyScript = pkgs.writeShellScript "hyprland-verify" '' export PATH=${runtimePath}:$PATH exec ${hypr}/bin/Hyprland --config ${configFile} --verify-config ''; runScript = pkgs.writeShellScript "hyprland-run" '' export PATH=${runtimePath}:$PATH exec ${hypr}/bin/Hyprland --config ${configFile} ''; startScript = pkgs.writeShellScript "start-hyprland" '' export PATH=${runtimePath}:$PATH export XDG_CONFIG_HOME=${configDir} exec ${hypr}/bin/start-hyprland --config ${configFile} ''; in { homeManagerModules.default = { pkgs, ... }: { wayland.windowManager.hyprland = { enable = true; xwayland.enable = true; configType = "lua"; extraConfig = ""; }; programs.waybar.enable = true; xdg.configFile."hypr" = { source = configDir; recursive = true; }; }; apps.${system} = { default = { type = "app"; program = "${verifyScript}"; }; run = { type = "app"; program = "${runScript}"; }; start-hyprland = { type = "app"; program = "${startScript}"; }; }; packages.${system}.default = pkgs.runCommand "hyprland-config-check" { } '' ${verifyScript} touch $out ''; }; }