#!/usr/bin/env sh

# Take a host name and return the nix store path to the host's system info.
# Type
# _system_info :: String -> Path
_system_info() {
    nix --option warn-dirty false build .#nixosConfigurations."$1".config.vhack.system-info.markdown --print-out-paths --no-link
}

_glow() {
    if command -v glow >/dev/null; then
        glow --width 0
    else
        cat
    fi
}

# The expression is not meant to be expanded by the shell
# shellcheck disable=SC2016
nix eval --expr '"${builtins.concatStringsSep "\n" (builtins.attrNames (builtins.fromTOML (builtins.readFile ./hosts/host-names.toml)))}\n"' --impure --raw | while read -r host; do
    echo "# $host" | _glow
    _glow <"$(_system_info "$host")"
done

# vim: ft=sh