{ description = "A very basic flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; authentik = { url = "github:nix-community/authentik-nix"; }; mailserver = { url = "git+https://gitlab.com/simple-nixos-mailserver/nixos-mailserver?ref=nixos-25.05"; inputs = { nixpkgs.follows = "nixpkgs"; nixpkgs-25_05.follows = "nixpkgs"; }; }; sops = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, authentik, mailserver, disko, sops, }: rec { formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style; packages.x86_64-linux = builtins.foldl' ( result: name: result // { iso = nixosConfigurations.${name}.config.system.build.isoImage; } ) { } ( # filter all nixos configs containing installer builtins.filter (item: nixpkgs.lib.hasInfix "installer" item) ( builtins.attrNames nixosConfigurations ) ); nixosConfigurations = builtins.foldl' ( result: input: result // { "${input}" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ./hosts/${input} ./hosts/${input}/hetzner-disk.nix ./default.nix disko.nixosModules.disko authentik.nixosModules.default mailserver.nixosModules.mailserver ]; }; # build iso image vor every config "${input}-installer" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ./hosts/${input} ./default.nix disko.nixosModules.disko authentik.nixosModules.default mailserver.nixosModules.mailserver "${nixpkgs}/nixos/modules/installer/cd-dvd/iso-image.nix" { users.users.administration.password = "test"; users.users.root.password = "test"; } ]; }; } ) { } (builtins.attrNames (builtins.readDir ./hosts)); }; }