nixcfg/packages/nixos-hosts/default.nix

50 lines
968 B
Nix
Raw Normal View History

{ lib
, writeText
, writeShellApplication
, substituteAll
, gum
, inputs
, hosts ? { }
, ...
}:
let
inherit (lib) mapAttrsToList concatStringsSep;
inherit (lib.plusultra) override-meta;
substitute = args: builtins.readFile (substituteAll args);
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 = substitute {
src = ./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