{ description = "Homelab configuration"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; impermanence.url = "github:nix-community/impermanence"; # Sops-nix, a secrets manager sops-nix.url = "github:Mic92/sops-nix"; sops-nix.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { self, nixpkgs, ... }@inputs: let outputs = self.outputs; utils = import ./utils.nix; homelabConfig = import ./config.nix; roles = import ./roles { inherit utils; }; hosts = import ./hosts.nix { inherit homelabConfig roles; lib = nixpkgs.lib; }; pkgs = nixpkgs.legacyPackages.x86_64-linux; in { devShells.x86_64-linux.default = pkgs.mkShell { buildInputs = [ pkgs.colmena ]; }; colmena = { meta = { nixpkgs = import nixpkgs { system = "x86_64-linux"; }; specialArgs = { inherit inputs outputs hosts ; }; }; } // (nixpkgs.lib.mapAttrs ( _: value: (utils.mkSystem { hostConfig = value; }) ) hosts); nixosConfigurations = { template = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ ./systems/template/configuration.nix ]; }; }; }; }