{ description = "A very basic flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; hyprland.url = "github:hyprwm/Hyprland"; wrappers.url = "github:lassulus/wrappers"; otter-launcher = { url = "github:kuokuo123/otter-launcher"; inputs.nixpkgs.follows = "nixpkgs"; }; wshowkeys = { url = "github:voidarclabs/wshowkeys"; inputs.nixpkgs.follows = "nixpkgs"; }; woomer.url = "github:coffeeispower/woomer"; }; outputs = { self, nixpkgs, wrappers, ... } @ inputs: let system = "x86_64-linux"; pkgs = import nixpkgs {inherit system;}; hypr = inputs.hyprland.packages.${system}.default; defaultRuntimePkgs = let input = { package, output ? "default", }: inputs.${package}.packages.${system}.${output}; in { inherit (pkgs) kitty firefox nemo wlogout grimblast wpaperd syncthing gotify-desktop wayvnc quickshell way-edges waybar dunst ; otter-launcher = input {package = "otter-launcher";}; wshowkeys = input {package = "wshowkeys";}; woomer = input {package = "woomer";}; }; mkWrapped = { pkgs, package, runtimePackages, exePath, flags, env, }: (wrappers.lib.wrapPackage { inherit env pkgs package exePath flags; }).overrideAttrs (old: { passthru = (old.passthru or {}) // {inherit runtimePackages;}; }); repoSrc = pkgs.lib.cleanSourceWith { src = ./.; filter = path: type: let name = baseNameOf path; in !(name == ".git" || name == ".gitignore" || name == "result" || name == ".direnv"); }; in { lib.defaultRuntimePkgs.${system} = defaultRuntimePkgs; packages.${system} = { default = pkgs.lib.makeOverridable mkWrapped { inherit pkgs; package = hypr; runtimePackages = defaultRuntimePkgs; exePath = pkgs.lib.getExe hypr; env."MODULES_ROOT" = ./modules; flags."--config" = ./hyprland.lua; }; repo-files = pkgs.stdenvNoCC.mkDerivation { pname = "hyprland-repo-files"; version = "1.0"; src = repoSrc; dontBuild = true; installPhase = '' mkdir -p $out cp -r . $out/ ''; }; }; }; }