{ 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"; # Import personal packages repo sqlfmt.url = "git+https://git.bitlab21.com/sam/flake-packages?dir=sqlfmt"; poetry2nix.url = "github:nix-community/poetry2nix"; # Home manager home-manager = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; # Nixvim nixvim = { #url = "github:nix-community/nixvim"; # If you are not running an unstable channel of nixpkgs, select the corresponding branch of 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"; 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 , poetry2nix , ... } @ inputs: let inherit (self) outputs; systems = [ "x86_64-linux" ]; forAllSystems = nixpkgs.lib.genAttrs systems; specialArgs = { inherit inputs outputs; }; in { poetry2nix = forAllSystems (system: nixpkgs.legacyPackages.${system}.extend poetry2nix.overlays.default); 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; } ]; }; }; # # Standalone home-manager configuration entrypoint # # Available through 'home-manager --flake .#your-username@your-hostname' # homeConfigurations = { # # FIXME replace with your username@hostname # "sam@nixdev" = home-manager.lib.homeManagerConfiguration { # pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance # extraSpecialArgs = {inherit inputs outputs ;}; # modules = [ # # > Our main home-manager configuration file < # ./home/nixdev.nix # ]; # }; # "admin@fileserver" = home-manager.lib.homeManagerConfiguration { # pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance # extraSpecialArgs = {inherit inputs outputs ;}; # modules = [ # # > Our main home-manager configuration file < # ./home/nixdev.nix # ]; # }; # }; }; }