dotfiles/profiles/user0/files/misc/justfile.nix

66 lines
1.9 KiB
Nix
Raw Normal View History

2025-10-01 19:51:55 -05:00
{
flake,
config,
lib,
...
}:
let
inherit (flake.config.machines) devices;
inherit (flake.config.services) instances;
hostname = config.networking.hostName;
2025-11-13 19:54:25 -06:00
dotPath = "~/projects/dotfiles";
mkLocalRebuild = type: ''
2025-11-16 01:09:16 -06:00
${type}-rebuild:
2025-11-13 20:09:28 -06:00
nixos-rebuild ${type} --sudo --flake ${dotPath}#${hostname} --show-trace
2025-11-13 19:54:25 -06:00
'';
mkRemoteRebuild = name: ip: ''
2025-11-16 01:09:16 -06:00
${name}-rebuild:
2025-11-13 19:54:25 -06:00
nixos-rebuild switch --flake ${dotPath}#${name} --target-host ${ip} --sudo --ask-sudo-password --show-trace
'';
mkSshCommands = name: ip: ''
2025-11-16 01:09:16 -06:00
${name}-ssh:
2025-11-13 19:54:25 -06:00
ssh ${ip}
'';
mkMicrVMSshCommands = name: ssh: ''
${name}:
2025-11-13 19:56:52 -06:00
ssh -p ${builtins.toString ssh} root@localhost
2025-11-13 19:54:25 -06:00
'';
systemRecords =
command:
lib.concatStrings [
(command devices.ceres.name devices.ceres.ip.address0)
(command devices.eris.name devices.eris.ip.address0)
2025-11-13 19:56:52 -06:00
(command devices.mars.name devices.mars.ip.address0)
2025-11-13 19:54:25 -06:00
(command devices.deimos.name devices.deimos.ip.address0)
(command devices.phobos.name devices.phobos.ip.address0)
];
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)
2025-11-13 20:09:28 -06:00
(command instances.firefly-iii.name instances.firefly-iii.interface.ssh)
2025-11-13 19:54:25 -06:00
(command instances.mastodon.name instances.mastodon.interface.ssh)
];
typeLabels =
type:
lib.concatStrings [
2025-11-13 20:09:28 -06:00
(type "switch")
(type "build")
(type "boot")
2025-11-13 19:54:25 -06:00
];
localRebuild = typeLabels mkLocalRebuild;
remoteRebuild = systemRecords mkRemoteRebuild;
sshCommand = systemRecords mkSshCommands;
microVMSshCommand = instanceRecords mkMicrVMSshCommands;
2025-10-01 19:51:55 -05:00
in
{
2025-11-13 19:54:25 -06:00
text = ''
${localRebuild}
${remoteRebuild}
${sshCommand}
${microVMSshCommand}
'';
2025-10-01 19:51:55 -05:00
}