refactor: justfile

This commit is contained in:
Ryan Yin
2024-07-31 10:08:03 +08:00
parent c059d90b17
commit 422ec75ec0
+184 -65
View File
@@ -9,49 +9,59 @@ set shell := ["nu", "-c"]
# #
############################################################################ ############################################################################
# Remote deployment via colmena
col tag:
colmena apply --on '@{{tag}}' --verbose --show-trace
local name mode="default":
use utils.nu *; \
nixos-switch {{name}} {{mode}}
# Run eval tests # Run eval tests
[group('nix')]
test: test:
nix eval .#evalTests --show-trace --print-build-logs --verbose nix eval .#evalTests --show-trace --print-build-logs --verbose
# update all the flake inputs # update all the flake inputs
[group('nix')]
up: up:
nix flake update nix flake update
# Update specific input # Update specific input
# Usage: just upp nixpkgs # Usage: just upp nixpkgs
[group('nix')]
upp input: upp input:
nix flake update {{input}} nix flake update {{input}}
# List all generations of the system profile # List all generations of the system profile
[group('nix')]
history: history:
nix profile history --profile /nix/var/nix/profiles/system nix profile history --profile /nix/var/nix/profiles/system
# Open a nix shell with the flake # Open a nix shell with the flake
[group('nix')]
repl: repl:
nix repl -f flake:nixpkgs nix repl -f flake:nixpkgs
# remove all generations older than 7 days # remove all generations older than 7 days
[group('nix')]
clean: clean:
sudo nix profile wipe-history --profile /nix/var/nix/profiles/system --older-than 7d sudo nix profile wipe-history --profile /nix/var/nix/profiles/system --older-than 7d
# Garbage collect all unused nix store entries # Garbage collect all unused nix store entries
[group('nix')]
gc: gc:
# garbage collect all unused nix store entries # garbage collect all unused nix store entries
sudo nix store gc --debug
sudo nix-collect-garbage --delete-old sudo nix-collect-garbage --delete-old
# Remove all reflog entries and prune unreachable objects # Enter a shell session which has all the necessary tools for this flake
gitgc: [linux]
git reflog expire --expire-unreachable=now --all [group('nix')]
git gc --prune=now shell:
nix shell nixpkgs#just nixpkgs#nushell nixpkgs#colmena
# Enter a shell session which has all the necessary tools for this flake
[macos]
[group('nix')]
shell:
nix shell nixpkgs#just nixpkgs#nushell
[group('nix')]
fmt:
# format the nix files in this repo
nix fmt
############################################################################ ############################################################################
# #
@@ -60,24 +70,32 @@ gitgc:
############################################################################ ############################################################################
[linux] [linux]
[group('desktop')]
i3 mode="default": i3 mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
nixos-switch ai-i3 {{mode}} nixos-switch ai-i3 {{mode}}
[linux] [linux]
[group('desktop')]
hypr mode="default": hypr mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
nixos-switch ai-hyprland {{mode}} nixos-switch ai-hyprland {{mode}}
[linux] [linux]
[group('desktop')]
s-i3 mode="default": s-i3 mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
nixos-switch shoukei-i3 {{mode}} nixos-switch shoukei-i3 {{mode}}
[linux] [linux]
[group('desktop')]
s-hypr mode="default": s-hypr mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
nixos-switch shoukei-hyprland {{mode}} nixos-switch shoukei-hyprland {{mode}}
############################################################################ ############################################################################
@@ -87,31 +105,39 @@ s-hypr mode="default":
############################################################################ ############################################################################
[macos] [macos]
[group('desktop')]
darwin-set-proxy: darwin-set-proxy:
sudo python3 scripts/darwin_set_proxy.py sudo python3 scripts/darwin_set_proxy.py
sleep 1sec sleep 1sec
[macos] [macos]
[group('desktop')]
darwin-rollback: darwin-rollback:
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
darwin-rollback darwin-rollback
# Deploy to harmonica(macOS host) # Deploy to harmonica(macOS host)
[macos] [macos]
[group('desktop')]
ha mode="default": ha mode="default":
use utils.nu *; \ #!/usr/bin/env nu
darwin-build "harmonica" {{mode}}; \ use utils.nu *;
darwin-build "harmonica" {{mode}};
darwin-switch "harmonica" {{mode}} darwin-switch "harmonica" {{mode}}
# Depoly to fern(macOS host) # Depoly to fern(macOS host)
[macos] [macos]
[group('desktop')]
fe mode="default": darwin-set-proxy fe mode="default": darwin-set-proxy
use utils.nu *; \ #!/usr/bin/env nu
darwin-build "fern" {{mode}}; \ use utils.nu *;
darwin-build "fern" {{mode}};
darwin-switch "fern" {{mode}} darwin-switch "fern" {{mode}}
# Reload yabai and skhd(macOS) # Reload yabai and skhd(macOS)
[macos] [macos]
[group('desktop')]
yabai-reload: yabai-reload:
launchctl kickstart -k "gui/502/org.nixos.yabai"; launchctl kickstart -k "gui/502/org.nixos.yabai";
launchctl kickstart -k "gui/502/org.nixos.skhd"; launchctl kickstart -k "gui/502/org.nixos.skhd";
@@ -122,34 +148,67 @@ yabai-reload:
# #
############################################################################ ############################################################################
# Remote deployment via colmena
[linux]
[group('homelab')]
col tag:
colmena apply --on '@{{tag}}' --verbose --show-trace
[linux]
[group('homelab')]
local name mode="default":
#!/usr/bin/env nu
use utils.nu *;
nixos-switch {{name}} {{mode}}
# Build and upload a vm image # Build and upload a vm image
[linux]
[group('homelab')]
upload-vm name mode="default": upload-vm name mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
upload-vm {{name}} {{mode}} upload-vm {{name}} {{mode}}
# Deploy all the KubeVirt nodes(Physical machines running KubeVirt) # Deploy all the KubeVirt nodes(Physical machines running KubeVirt)
[linux]
[group('homelab')]
lab: lab:
colmena apply --on '@virt-*' --verbose --show-trace colmena apply --on '@virt-*' --verbose --show-trace
[linux]
[group('homelab')]
shoryu: shoryu:
colmena apply --on '@kubevirt-shoryu' --verbose --show-trace colmena apply --on '@kubevirt-shoryu' --verbose --show-trace
[linux]
[group('homelab')]
shoryu-local mode="default": shoryu-local mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
nixos-switch kubevirt-shoryu {{mode}} nixos-switch kubevirt-shoryu {{mode}}
[linux]
[group('homelab')]
shushou: shushou:
colmena apply --on '@kubevirt-shushou' --verbose --show-trace colmena apply --on '@kubevirt-shushou' --verbose --show-trace
[linux]
[group('homelab')]
shushou-local mode="default": shushou-local mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
nixos-switch kubevirt-shushou {{mode}} nixos-switch kubevirt-shushou {{mode}}
[linux]
[group('homelab')]
youko: youko:
colmena apply --on '@kubevirt-youko' --verbose --show-trace colmena apply --on '@kubevirt-youko' --verbose --show-trace
[linux]
[group('homelab')]
youko-local mode="default": youko-local mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
nixos-switch kubevirt-youko {{mode}} nixos-switch kubevirt-youko {{mode}}
############################################################################ ############################################################################
@@ -159,31 +218,49 @@ youko-local mode="default":
############################################################################ ############################################################################
# Build and upload a vm image # Build and upload a vm image
[linux]
[group('homelab')]
upload-idols mode="default": upload-idols mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
upload-vm aquamarine {{mode}} upload-vm aquamarine {{mode}}
upload-vm ruby {{mode}} upload-vm ruby {{mode}}
upload-vm kana {{mode}} upload-vm kana {{mode}}
[linux]
[group('homelab')]
aqua: aqua:
colmena apply --on '@aqua' --verbose --show-trace colmena apply --on '@aqua' --verbose --show-trace
[linux]
[group('homelab')]
aqua-local mode="default": aqua-local mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
nixos-switch aquamarine {{mode}} nixos-switch aquamarine {{mode}}
[linux]
[group('homelab')]
ruby: ruby:
colmena apply --on '@ruby' --verbose --show-trace colmena apply --on '@ruby' --verbose --show-trace
[linux]
[group('homelab')]
ruby-local mode="default": ruby-local mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
nixos-switch ruby {{mode}} nixos-switch ruby {{mode}}
[linux]
[group('homelab')]
kana: kana:
colmena apply --on '@kana' --verbose --show-trace colmena apply --on '@kana' --verbose --show-trace
[linux]
[group('homelab')]
kana-local mode="default": kana-local mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
nixos-switch kana {{mode}} nixos-switch kana {{mode}}
############################################################################ ############################################################################
@@ -193,30 +270,44 @@ kana-local mode="default":
############################################################################ ############################################################################
# Build and upload a vm image # Build and upload a vm image
[linux]
[group('homelab')]
upload-k3s mode="default": upload-k3s mode="default":
use utils.nu *; \ #!/usr/bin/env nu
upload-vm k3s-prod-1-master-1 {{mode}}; \ use utils.nu *;
upload-vm k3s-prod-1-master-2 {{mode}}; \ upload-vm k3s-prod-1-master-1 {{mode}};
upload-vm k3s-prod-1-master-3 {{mode}}; \ upload-vm k3s-prod-1-master-2 {{mode}};
upload-vm k3s-prod-1-worker-1 {{mode}}; \ upload-vm k3s-prod-1-master-3 {{mode}};
upload-vm k3s-prod-1-worker-2 {{mode}}; \ upload-vm k3s-prod-1-worker-1 {{mode}};
upload-vm k3s-prod-1-worker-2 {{mode}};
upload-vm k3s-prod-1-worker-3 {{mode}}; upload-vm k3s-prod-1-worker-3 {{mode}};
[linux]
[group('homelab')]
upload-k3s-test mode="default": upload-k3s-test mode="default":
use utils.nu *; \ #!/usr/bin/env nu
upload-vm k3s-test-1-master-1 {{mode}}; \ use utils.nu *;
upload-vm k3s-test-1-master-2 {{mode}}; \ upload-vm k3s-test-1-master-1 {{mode}};
upload-vm k3s-test-1-master-2 {{mode}};
upload-vm k3s-test-1-master-3 {{mode}}; upload-vm k3s-test-1-master-3 {{mode}};
[linux]
[group('homelab')]
k3s: k3s:
colmena apply --on '@k3s-*' --verbose --show-trace colmena apply --on '@k3s-*' --verbose --show-trace
[linux]
[group('homelab')]
master: master:
colmena apply --on '@k3s-prod-1-master-*' --verbose --show-trace colmena apply --on '@k3s-prod-1-master-*' --verbose --show-trace
[linux]
[group('homelab')]
worker: worker:
colmena apply --on '@k3s-prod-1-worker-*' --verbose --show-trace colmena apply --on '@k3s-prod-1-worker-*' --verbose --show-trace
[linux]
[group('homelab')]
k3s-test: k3s-test:
colmena apply --on '@k3s-test-*' --verbose --show-trace colmena apply --on '@k3s-test-*' --verbose --show-trace
@@ -226,12 +317,18 @@ k3s-test:
# #
############################################################################ ############################################################################
[linux]
[group('homelab')]
riscv: riscv:
colmena apply --on '@riscv' --verbose --show-trace colmena apply --on '@riscv' --verbose --show-trace
[linux]
[group('homelab')]
nozomi: nozomi:
colmena apply --on '@nozomi' --verbose --show-trace colmena apply --on '@nozomi' --verbose --show-trace
[linux]
[group('homelab')]
yukina: yukina:
colmena apply --on '@yukina' --verbose --show-trace colmena apply --on '@yukina' --verbose --show-trace
@@ -241,42 +338,49 @@ yukina:
# #
############################################################################ ############################################################################
[linux]
[group('homelab')]
rakushun: rakushun:
colmena apply --on '@rakushun' --build-on-target --verbose --show-trace colmena apply --on '@rakushun' --build-on-target --verbose --show-trace
[linux]
[group('homelab')]
rakushun-local mode="default": rakushun-local mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
nixos-switch rakushun {{mode}} nixos-switch rakushun {{mode}}
[linux]
[group('homelab')]
suzu-set-proxy: suzu-set-proxy:
ip route del default via 192.168.5.1 ip route del default via 192.168.5.1
ip route add default via 192.168.5.178 ip route add default via 192.168.5.178
[linux]
[group('homelab')]
suzu-unset-proxy: suzu-unset-proxy:
ip route del default via 192.168.5.178 ip route del default via 192.168.5.178
ip route add default via 192.168.5.1 ip route add default via 192.168.5.1
[linux]
[group('homelab')]
suzu-local mode="default": suzu-local mode="default":
use utils.nu *; \ #!/usr/bin/env nu
use utils.nu *;
nixos-switch suzu {{mode}} nixos-switch suzu {{mode}}
############################################################################ ############################################################################
# #
# Misc, other useful commands # Neovim related commands
# #
############################################################################ ############################################################################
fmt: [group('neovim')]
# format the nix files in this repo
nix fmt
path:
$env.PATH | split row ":"
nvim-test: nvim-test:
rm -rf $"($env.HOME)/.config/nvim" rm -rf $"($env.HOME)/.config/nvim"
rsync -avz --copy-links --chmod=D2755,F744 home/base/tui/editors/neovim/nvim/ $"($env.HOME)/.config/nvim/" rsync -avz --copy-links --chmod=D2755,F744 home/base/tui/editors/neovim/nvim/ $"($env.HOME)/.config/nvim/"
[group('neovim')]
nvim-clean: nvim-clean:
rm -rf $"($env.HOME)/.config/nvim" rm -rf $"($env.HOME)/.config/nvim"
@@ -284,45 +388,60 @@ nvim-clean:
# Emacs related commands # Emacs related commands
# ================================================= # =================================================
emacs-plist-path := "~/Library/LaunchAgents/org.nix-community.home.emacs.plist" [group('emacs')]
reload-emacs-cmd := if os() == "macos" {
"launchctl unload " + emacs-plist-path
+ "\n"
+ "launchctl load " + emacs-plist-path
+ "\n"
+ "tail -f ~/Library/Logs/emacs-daemon.stderr.log"
} else {
"systemctl --user restart emacs.service"
+ "\n"
+ "systemctl --user status emacs.service"
}
emacs-test: emacs-test:
rm -rf $"($env.HOME)/.config/doom" rm -rf $"($env.HOME)/.config/doom"
rsync -avz --copy-links --chmod=D2755,F744 home/base/tui/editors/emacs/doom/ $"($env.HOME)/.config/doom/" rsync -avz --copy-links --chmod=D2755,F744 home/base/tui/editors/emacs/doom/ $"($env.HOME)/.config/doom/"
doom clean doom clean
doom sync doom sync
[group('emacs')]
emacs-clean: emacs-clean:
rm -rf $"($env.HOME)/.config/doom/" rm -rf $"($env.HOME)/.config/doom/"
[group('emacs')]
emacs-purge: emacs-purge:
doom purge doom purge
doom clean doom clean
doom sync doom sync
[group('emacs')]
[no-quiet]
emacs-reload: emacs-reload:
#!/usr/bin/env nu
doom sync doom sync
{{reload-emacs-cmd}}
let emacs_plist_path = "~/Library/LaunchAgents/org.nix-community.home.emacs.plist"
if "Darwin" == (uname).kernel-name {
print $"Running on macOS, reload launchd daemon via ($emacs_plist_path)"
launchctl unload $emacs_plist_path
launchctl load $emacs_plist_path
tail -f ~/Library/Logs/emacs-daemon.stderr.log
} else if "Linux" == (uname).kernel-name {
systemctl --user restart emacs.service
systemctl --user status emacs.service
} else {
print "Unsupported platform"
exit 1
}
# ================================================= # =================================================
# #
# Kubernetes related commands # Other useful commands
# #
# ================================================= # =================================================
[group('common')]
path:
$env.PATH | split row ":"
# Remove all reflog entries and prune unreachable objects
[group('git')]
gitgc:
git reflog expire --expire-unreachable=now --all
git gc --prune=now
# Delete all failed pods
[group('k8s')]
del-failed: del-failed:
kubectl delete pod --all-namespaces --field-selector="status.phase==Failed" kubectl delete pod --all-namespaces --field-selector="status.phase==Failed"