{ description = "Main Flake: LuminiferousLilith"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; nixpkgs-stable.url = "github:NixOS/nixpkgs/release-24.05"; flake-utils.url = "github:numtide/flake-utils"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs-stable.follows = "nixpkgs-stable"; }; impermanence.url = "github:nix-community/impermanence"; helix.url = "github:pascalkuthe/helix/inline-diagnostics"; }; outputs = { self, nixpkgs, ... } @ inputs: let inherit (self) outputs; hosts = builtins.filter (host: builtins.pathExists ./hosts/${host}/configuration.nix) (builtins.attrNames (builtins.readDir ./hosts)); mkHostConfig = host: let defaultConf = rec { hostname = host; uid = 1000; user = "lilith"; home = /home/${user}; }; in nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs outputs; conf = defaultConf; }; modules = [ ./hosts/${host}/configuration.nix ./hosts/${host}/hardware-configuration.nix ]; }; in { nixosConfigurations = builtins.listToAttrs ( map (host: { name = host; value = mkHostConfig host; }) hosts ); }; }