{ description = "Nix Config"; inputs = { # Nixpkgs nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; # NUR nur.url = "github:nix-community/NUR"; # Home manager home-manager = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; # Nixvim nixvim = { url = "github:nix-community/nixvim/nixos-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; # Nix colors nix-colors.url = "github:misterio77/nix-colors"; # Declarative partitioning and formatting disko = { url = "github:nix-community/disko/v1.6.1"; inputs.nixpkgs.follows = "nixpkgs"; }; impermanence = { url = "github:nix-community/impermanence"; }; # Secrets management sops-nix = { url = "github:mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-secrets = { url = "git+ssh://git@git.bitlab21.com/sam/nix-secrets.git"; flake = false; }; }; outputs = { self , nixpkgs , home-manager , ... } @ inputs: let inherit (self) outputs; systems = [ "x86_64-linux" ]; forAllSystems = nixpkgs.lib.genAttrs systems; specialArgs = { inherit inputs outputs; }; in { packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system}); formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra); overlays = import ./overlays { inherit inputs; }; nixosModules = import ./modules/nixos; homeManagerModules = import ./modules/home-manager; # System level configs nixosConfigurations = { nixdev = nixpkgs.lib.nixosSystem { inherit specialArgs; modules = [ ./hosts/nixdev home-manager.nixosModules.home-manager { home-manager.extraSpecialArgs = specialArgs; } ]; }; fileserver = nixpkgs.lib.nixosSystem { inherit specialArgs; modules = [ ./hosts/fileserver home-manager.nixosModules.home-manager { home-manager.extraSpecialArgs = specialArgs; } ]; }; bootstrap = nixpkgs.lib.nixosSystem { inherit specialArgs; modules = [ ./hosts/bootstrap ]; }; sparky = nixpkgs.lib.nixosSystem { inherit specialArgs; modules = [ ./hosts/sparky home-manager.nixosModules.home-manager { home-manager.extraSpecialArgs = specialArgs; } ]; }; semita = nixpkgs.lib.nixosSystem { inherit specialArgs; modules = [ ./hosts/semita home-manager.nixosModules.home-manager { home-manager.extraSpecialArgs = specialArgs; } ]; }; overseer = nixpkgs.lib.nixosSystem { inherit specialArgs; modules = [ ./hosts/overseer home-manager.nixosModules.home-manager { home-manager.extraSpecialArgs = specialArgs; } ]; }; }; }; }