nixcfg/packages/nixos-hosts/default.nix
2025-12-02 18:58:52 +01:00

42 lines
880 B
Nix

{
lib,
writeText,
writeShellApplication,
replaceVars,
gum,
inputs,
hosts ? { },
...
}:
let
inherit (lib) mapAttrsToList concatStringsSep;
inherit (lib.metacfg) override-meta;
formatted-hosts = mapAttrsToList (name: host: "${name},${host.pkgs.system}") hosts;
hosts-csv = writeText "hosts.csv" ''
Name,System
${concatStringsSep "\n" formatted-hosts}
'';
nixos-hosts = writeShellApplication {
name = "nixos-hosts";
text = replaceVars ./nixos-hosts.sh {
help = ./help;
hosts = if hosts == { } then "" else hosts-csv;
};
checkPhase = "";
runtimeInputs = [ gum ];
};
new-meta = with lib; {
description = "A helper to list all of the NixOS hosts available from your flake.";
license = licenses.asl20;
maintainers = with maintainers; [ jakehamilton ];
};
in
override-meta new-meta nixos-hosts