{ description = "A very basic flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; flake-base = { url = "git+https://khs.codes/nix/flake-base"; inputs.nixpkgs.follows = "nixpkgs"; }; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ self, nixpkgs, ... }: let profileArgs = { inherit self; }; profiles = builtins.readDir ./nix/profiles; profilesDirs = nixpkgs.lib.filterAttrs (name: kind: kind == "directory") profiles; profileNames = builtins.attrNames profilesDirs; inputModules = [ inputs.disko.nixosModules.disko ]; in inputs.flake-base.lib.mkFlake { inherit inputs; src = ./.; systems.modules.nixos = inputModules; snowfall = { root = ./nix; namespace = "khscodes"; meta = { title = "Nix machines for KHS"; name = "Machines"; }; }; modules.nixos = { default = { imports = [ self.nixosModules.hetzner self.nixosModules.sshd self.nixosModules.sshd self.nixosModules.systemd-boot self.nixosModules.qemu-guest inputs.disko.nixosModules.disko ]; } // (builtins.listToAttrs ( builtins.map (n: { name = n; value = (import ./nix/profiles/${n} profileArgs); }) profileNames )); }; }; }