{ description = "JawZ NixOS flake setup"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; nixpkgs-small.url = "github:nixos/nixpkgs?ref=nixos-unstable-small"; nixpkgs-chrome.url = "github:nixos/nixpkgs?rev=05bbf675397d5366259409139039af8077d695ce"; ucodenix.url = "github:e-tho/ucodenix"; nix-gaming.url = "github:fufexan/nix-gaming"; hyprland.url = "github:hyprwm/Hyprland"; zen-browser.url = "github:MarceColl/zen-browser-flake"; home-manager = { url = "github:nix-community/home-manager/master"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-cosmic = { url = "github:lilyinstarlight/nixos-cosmic"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, ... }@inputs: let inherit (self) outputs; lib = inputs.nixpkgs.lib // inputs.home-manager.lib; system = "x86_64-linux"; makePkgs = repo: import repo { inherit system; config.allowUnfree = true; }; pkgs = makePkgs inputs.nixpkgs; pkgs-small = makePkgs inputs.nixpkgs-small; pkgs-chrome = makePkgs inputs.nixpkgs-chrome; overlays = [ (import ./overlay.nix { inherit pkgs pkgs-chrome; }) ]; createConfig = name: packageSet: { inherit system; specialArgs = { inherit inputs outputs; pkgs = packageSet; }; modules = [ (_: { nixpkgs.overlays = overlays; }) ./hosts/${name}/configuration.nix inputs.sops-nix.nixosModules.sops inputs.nixos-cosmic.nixosModules.default ]; }; in { inherit lib; nixosConfigurations = { workstation = lib.nixosSystem (createConfig "workstation" pkgs); miniserver = lib.nixosSystem (createConfig "miniserver" pkgs-small); server = lib.nixosSystem (createConfig "server" pkgs-small); }; }; }