{ 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 // { "${name}-iso" = nixosConfigurations."${name}-installer".config.system.build.isoImage; "${name}-container" = nixosConfigurations."${name}-container".config.system.build.tarball; "${name}-update" = nixpkgs.legacyPackages.x86_64-linux.writeShellScriptBin "update" '' nixos-rebuild switch --flake .#${name} --target-host root@${name}.test.htw.stura-dresden.de ''; } ) { } ( # filter all nixos configs containing installer builtins.filter (item: !nixpkgs.lib.hasInfix "-" item) ( builtins.attrNames nixosConfigurations ) );# // builtins.foldl' ( result: name: result // { # "${name}test" = "safd"; #}) {} (builtins.filter(name: nixpkgs.lib.hasInfix "-")(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 ]; # "${input}-test" = 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"; } ]; }; "${input}-container" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ./hosts/${input} ./default.nix disko.nixosModules.disko authentik.nixosModules.default mailserver.nixosModules.mailserver "${nixpkgs}/nixos/modules/virtualisation/proxmox-lxc.nix" { networking.defaultGateway.interface = "enp1s0"; } ]; }; } ) { } (builtins.attrNames (builtins.readDir ./hosts)); }; }