{ flake, config, lib, ... }: let inherit (flake.config.machines) devices; inherit (flake.config.services) instances; hostname = config.networking.hostName; dotPath = "~/projects/dotfiles"; mkLocalRebuild = '' rebuild: nixos-rebuild switch --sudo --flake ${dotPath}#${hostname} --show-trace ''; mkRemoteRebuild = name: ip: '' rebuild-${name}: nixos-rebuild switch --flake ${dotPath}#${name} --target-host ${ip} --sudo --ask-sudo-password --show-trace ''; mkSshCommands = name: ip: '' ${name}: ssh ${ip} ''; mkMicrVMSshCommands = name: ssh: '' ${name}: ssh -p ${builtins.toString ssh} root@localhost ''; balanceHosts = lib.concatStringsSep ", " [ ''{name: "${devices.ceres.name}", ssh: "${devices.ceres.ip.address0}"}'' ''{name: "${devices.eris.name}", ssh: "${devices.eris.ip.address0}"}'' ''{name: "${devices.mars.name}", ssh: "${devices.mars.ip.address0}"}'' ''{name: "${devices.deimos.name}", ssh: "${devices.deimos.ip.address0}"}'' ''{name: "${devices.phobos.name}", ssh: "${devices.phobos.ip.address0}"}'' ''{name: "${devices.lamdagibson.short}", ssh: "-o StrictHostKeyChecking=no denise@${devices.lamdagibson.ip.address0}"}'' ]; systemRecords = command: lib.concatStrings [ (command devices.ceres.name devices.ceres.ip.address0) (command devices.eris.name devices.eris.ip.address0) (command devices.mars.name devices.mars.ip.address0) (command devices.deimos.name devices.deimos.ip.address0) (command devices.phobos.name devices.phobos.ip.address0) (command "lamba" "-o StrictHostKeyChecking=no denise@192.168.50.131") ]; instanceRecords = command: lib.concatStrings [ (command instances.vaultwarden.name instances.vaultwarden.interface.ssh) (command instances.jellyfin.name instances.jellyfin.interface.ssh) (command instances.forgejo.name instances.forgejo.interface.ssh) (command instances.firefly-iii.name instances.firefly-iii.interface.ssh) (command instances.mastodon.name instances.mastodon.interface.ssh) ]; localRebuild = mkLocalRebuild; remoteRebuild = systemRecords mkRemoteRebuild; sshCommand = systemRecords mkSshCommands; microVMSshCommand = instanceRecords mkMicrVMSshCommands; in { text = '' ${localRebuild} ${remoteRebuild} ${sshCommand} ${microVMSshCommand} balance: #!/usr/bin/env nu let results = [${balanceHosts}] | each { |h| let val = (^ssh ...($h.ssh | split row " ") 'nu -c "open /var/lib/defenseio-data/MidnightMiner/balances.json | get snapshots | last | get balance"' | into float); print $"($h.name):"; print $val; $val } print "---" print "total:" $results | math sum ''; }