{
  lib,
  writeText,
  writeShellApplication,
  substituteAll,
  gum,
  inputs,
  hosts ? { },
  ...
}:

let
  inherit (lib) mapAttrsToList concatStringsSep;
  inherit (lib.metacfg) 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