#!/usr/bin/env fish

set -f nix_os (uname)
set -f nix_hostname (hostname -s)
set -f other_hostname $argv[1]

switch $nix_os
    case Darwin
        set -f config_dir "$HOME/.config/nixpkgs"
    case Linux
        set -f config_dir /etc/nixos
    case '*'
        echo "Unsupported OS"
        exit 1
end

pushd "$config_dir"
rm -rf result

if test -z "$DIRENV_DIR"
    eval (direnv export fish 2>/dev/null)
end

if test "$other_hostname" = ""
    switch $nix_os
        case Darwin
            git pull
            nom build ".#darwinConfigurations.$nix_hostname.config.system.build.toplevel"
            if test $status -eq 0
                env TERM=xterm-256color darwin-rebuild switch --flake ".#$nix_hostname"
            end
        case Linux
            sudo git pull
            sudo nixos-rebuild switch --flake .
    end
else
    git pull
    colmena apply --on $other_hostname -v
end

if test $status -eq 0
    if test "$other_hostname" = ""
        attic push nifoc-systems /run/current-system
    else
        ssh -t "$other_hostname" attic push nifoc-systems /run/current-system
    end
end

rm -f result

popd