{ description = "A very basic flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; authentik = { url = "github:nix-community/authentik-nix"; }; mailserver = { url = "git+https://gitlab.com/simple-nixos-mailserver/nixos-mailserver?ref=nixos-25.05"; }; 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}".extendModules { modules = [ "${nixpkgs}/nixos/modules/installer/cd-dvd/iso-image.nix" { users.users.administration.password = "test"; users.users.root.password = "test"; } ]; }).config.system.build.isoImage; "${name}-container" = (nixosConfigurations."${name}".extendModules { modules = [ "${nixpkgs}/nixos/modules/virtualisation/proxmox-lxc.nix" { networking.defaultGateway.interface = "enp1s0"; } ]; }).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 ''; "${name}-deploy-test" = nixpkgs.legacyPackages.x86_64-linux.writeShellScriptBin "deploy" '' FILENAME="$(ls ${self.packages.x86_64-linux."${name}-iso".outPath}/iso)" scp ${self.packages.x86_64-linux."${name}-iso".outPath}/iso/$FILENAME root@10.1.0.17:/var/lib/vz/template/iso/$FILENAME ssh 10.1.0.17 "qm create $1 --cores 4 --memory 4096 --sata1 file=/var/lib/vz/template/iso/$FILENAME,media=cdrom --scsi1 pool1:32 --scsihw virtio-scsi-single --net0 virtio,bridge=vmbr1 --description \"von goeranh mailserver flake genierierte wegwerf-vm\"" ssh 10.1.0.17 "qm start $1" ''; } ) { } ( # 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 ]; }; } ) { } (builtins.attrNames (builtins.readDir ./hosts)); }; }