{ 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"; }; }; outputs = { self, nixpkgs, nixvim, disko, ... }: { nixosConfigurations = ( let x86_64-hosts = builtins.filter (file: file != "aarch64-linux") ( builtins.attrNames (builtins.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; } disko.nixosModules.disko ./hosts/${host}/configuration.nix ./hosts/${host}/state.nix ]; } ) ) x86_64-hosts ) ) // ( let aarch64-linux-hosts = (builtins.attrNames (builtins.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; } ./hosts/aarch64-linux/${host}/configuration.nix ]; } ) ) 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; }; }