# Return a list of all NixOS hosts { nixpkgs, ... }: let inherit (nixpkgs) lib; in lib.pipe (lib.filesystem.listFilesRecursive ./.) [ # Get only files ending in default.nix (builtins.filter (name: lib.hasSuffix "default.nix" name)) # Remove this file (builtins.filter (name: name != ./default.nix)) # Import each host function map (file: { name = builtins.baseNameOf (builtins.dirOf file); value = import file; }) # Convert to an attrset of hostname -> host function (builtins.listToAttrs) ]