SSH_OPTIONS := "-o PubkeyAuthentication=no -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" nixdisk := "vda" nixaddr := "" hostname := lowercase(`hostname -s`) default: @just --list [doc('update dependencies')] [group('nix')] update-deps: nix flake update --commit-lock-file [doc('a simple check to ensure the nix configuration is OK')] [group('nix')] test-nix: nix flake check nix develop -c echo OK [doc('run various formatting tools')] [group('nix')] fmt: nix fmt # Nix Store can contains corrupted entries if the nix store object has been modified unexpectedly. # This command will verify all the store entries, [doc('verify all the store entries')] [group('nix')] verify-store: nix store verify --all [doc('garbage collect all unused nix store entries (system-wide and home-manager)')] [group('nix')] gc: # garbage collect all unused nix store entries(system-wide) sudo nix-collect-garbage --delete-older-than 7d # garbage collect all unused nix store entries(for the user - home-manager) # https://github.com/NixOS/nix/issues/8508 nix-collect-garbage --delete-older-than 7d [doc('list recent version')] [group('nix')] history: nix profile history --profile /nix/var/nix/profiles/system [doc('show all the auto gc roots in the nix store')] [group('nix')] gcroot: ls -al /nix/var/nix/gcroots/auto/ [doc('build the configuration for the current host')] [group('machines')] [macos] build: darwin-rebuild build --flake .#{{ hostname }} [doc('switch the configuration for the current host')] [group('machines')] [macos] switch: darwin-rebuild switch --flake .#{{ hostname }} [doc('build the configuration for the current host')] [group('machines')] [linux] build: nixos-rebuild build --flake .#{{ hostname }} [doc('switch the configuration for the current host')] [group('machines')] [linux] switch: nixos-rebuild switch --flake .#{{ hostname }} [group('vm')] vm-bootstrap: #!/usr/bin/env bash set -euxo pipefail ssh {{ SSH_OPTIONS }} root@{{ nixaddr }} " \ parted /dev/{{ nixdisk }} -- mklabel gpt; \ parted /dev/{{ nixdisk }} -- mkpart primary 512MB 100%; \ parted /dev/{{ nixdisk }} -- mkpart ESP fat32 1MB 512MB; \ parted /dev/{{ nixdisk }} -- set 2 esp on; \ sleep 1; \ mkfs.ext4 -L nixos /dev/{{ nixdisk }}1; \ mkfs.fat -F 32 -n boot /dev/{{ nixdisk }}2; \ sleep 1; \ mount /dev/disk/by-label/nixos /mnt; \ mkdir -p /mnt/boot; \ mount /dev/disk/by-label/boot /mnt/boot; \ nixos-generate-config --root /mnt; \ sed --in-place '/system\.stateVersion = .*/a \ nix.extraOptions = \"experimental-features = nix-command flakes\";\n \ services.openssh.enable = true;\n \ services.openssh.settings.PasswordAuthentication = true;\n \ services.openssh.settings.PermitRootLogin = \"yes\";\n \ users.users.root.initialPassword = \"root\";\n \ ' /mnt/etc/nixos/configuration.nix; \ nixos-install --no-root-passwd && reboot; \ " [group('vm')] vm-copy: #!/usr/bin/env fish rsync -av -e 'ssh {{ SSH_OPTIONS }}' \ --exclude='.git/' \ --exclude='result' \ --exclude='.direnv/' \ --rsync-path="sudo rsync" \ $(dirname justfile)/ {{ nixaddr }}:/nix-config [group('llm')] llm: #!/usr/bin/env fish uv tool install llm -U llm install -U llm-anthropic llm models default anthropic/claude-3-7-sonnet-20250219 llm keys set anthropic --value (op read --account my.1password.com "op://Private/anthropic llm/credential")