{ description = "JawZ NixOS flake setup"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; nixpkgs-paint.url = "github:nixos/nixpkgs?ref=nixos-24.05"; ucodenix.url = "github:e-tho/ucodenix"; doom-emacs.url = "github:marienz/nix-doom-emacs-unstraightened"; ghostty.url = "github:ghostty-org/ghostty"; jawz-scripts = { url = "git+ssh://git@gitlab.com/CaptainJawZ/scripts-flake.git"; inputs.nixpkgs.follows = "nixpkgs"; }; nur = { url = "github:nix-community/nur"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-gaming = { url = "github:fufexan/nix-gaming"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprland = { url = "github:hyprwm/Hyprland"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; stylix = { url = "github:danth/stylix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, ... }@inputs: let inherit (self) outputs; system = "x86_64-linux"; mkpkgs = repo: import repo { inherit system; config.allowUnfree = true; }; pkgs = mkpkgs inputs.nixpkgs; pkgsP = mkpkgs inputs.nixpkgs-paint; lib = inputs.nixpkgs.lib // inputs.home-manager.lib; createConfig = name: lib.nixosSystem { inherit system; specialArgs = { inherit inputs outputs; }; modules = [ { nixpkgs.overlays = [ (import ./overlay.nix { inherit pkgs pkgsP; }) inputs.doom-emacs.overlays.default ]; } ./hosts/${name}/configuration.nix inputs.nur.modules.nixos.default inputs.sops-nix.nixosModules.sops inputs.stylix.nixosModules.stylix ]; }; in { nixosConfigurations = { workstation = "workstation" |> createConfig; miniserver = "miniserver" |> createConfig; server = "server" |> createConfig; }; }; }