{ description = "All system configurations for Vili Sinervä"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; nixvim = { url = "github:nix-community/nixvim"; inputs.nixpkgs.follows = "nixpkgs"; }; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; impermanence.url = "github:nix-community/impermanence"; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, nixvim, disko, impermanence, sops-nix, ... }: { nixosConfigurations = ( let x86_64-hosts = with builtins; (map (file: nixpkgs.lib.removeSuffix ".nix" file) ( filter (file: file != "aarch64-linux" && file != "installer") (attrNames (readDir ./hosts)) )); in builtins.listToAttrs ( map ( host: nixpkgs.lib.nameValuePair host ( nixpkgs.lib.nixosSystem { specialArgs = { nixpkgs-flake = nixpkgs; inherit nixvim; inherit disko; }; system = "x86_64-linux"; modules = [ { networking.hostName = host; } ./default.nix ./hosts/${host}.nix disko.nixosModules.disko impermanence.nixosModules.impermanence sops-nix.nixosModules.sops ]; } ) ) x86_64-hosts ) ) // ( let aarch64-linux-hosts = with builtins; (map (file: nixpkgs.lib.removeSuffix ".nix" file) (attrNames (readDir ./hosts/aarch64-linux))); in builtins.listToAttrs ( map ( host: nixpkgs.lib.nameValuePair host ( nixpkgs.lib.nixosSystem { specialArgs = { nixpkgs-flake = nixpkgs; inherit nixvim; inherit disko; }; system = "aarch64-linux"; modules = [ { networking.hostName = host; } ./default.nix ./hosts/aarch64-linux/${host}.nix disko.nixosModules.disko impermanence.nixosModules.impermanence sops-nix.nixosModules.sops ]; } ) ) aarch64-linux-hosts ) ); hydraJobs.hosts = builtins.mapAttrs ( _: host: host.config.system.build.toplevel ) self.nixosConfigurations; hydraJobs.isos.installer = self.nixosConfigurations.installer.config.system.build.isoImage; }; }