summaryrefslogtreecommitdiff
path: root/justfile
diff options
context:
space:
mode:
authorMike Vink <mike@pionative.com>2024-06-19 00:04:27 +0200
committerMike Vink <mike@pionative.com>2024-06-19 00:04:27 +0200
commit0aaaf2021709000f858bde126fcff19a67227113 (patch)
treec89d4abd07b40fdfd9a6a7aa1c92dc3eaa0debd9 /justfile
parent8f7474d4f0c274e1a2c0d748b7dd9e22b4fb39d7 (diff)
add justfile
Diffstat (limited to 'justfile')
-rw-r--r--justfile51
1 files changed, 51 insertions, 0 deletions
diff --git a/justfile b/justfile
new file mode 100644
index 0000000..808e3cc
--- /dev/null
+++ b/justfile
@@ -0,0 +1,51 @@
+SSH_OPTIONS := "-o PubkeyAuthentication=no -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+NIXNAME := "vm-aarch64"
+
+@vm-bootstrap0 diskname ip:
+ #!/usr/bin/env bash
+ ssh {{SSH_OPTIONS}} -p22 root@{{ip}} "
+ parted /dev/{{diskname}} -- mklabel gpt
+ parted /dev/{{diskname}} -- mkpart primary 512MB -8GB
+ parted /dev/{{diskname}} -- mkpart primary linux-swap -8GB 100\%
+ parted /dev/{{diskname}} -- mkpart ESP fat32 1MB 512MB
+ parted /dev/{{diskname}} -- set 3 esp on
+ sleep 1
+ mkfs.ext4 -L nixos /dev/{{diskname}}p1
+ mkswap -L swap /dev/{{diskname}}p2
+ mkfs.fat -F 32 -n boot /dev/{{diskname}}p3
+ 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.package = pkgs.nixVersions.latest;\n \
+ nix.extraOptions = \"experimental-features = nix-command flakes configurable-impure-env\";\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
+ "
+
+# copy the Nix configurations into the VM.
+@vm-copy ip:
+ rsync -av -e 'ssh {{SSH_OPTIONS}} -p22' \
+ --exclude='.git/' \
+ --rsync-path="sudo rsync" \
+ ./ root@{{ip}}:/nix-config
+
+# run the nixos-rebuild switch command. This does NOT copy files so you
+# have to run vm/copy before.
+@vm-switch ip: (vm-copy ip)
+ ssh {{SSH_OPTIONS}} -p22 root@{{ip}} " \
+ sudo NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nixos-rebuild switch --flake \"/nix-config#{{NIXNAME}}\" \
+ "
+
+# after bootstrap0, run this to finalize. After this, do everything else
+# in the VM unless secrets change.
+@vm-bootstrap ip: (vm-switch ip)
+ ssh {{SSH_OPTIONS}} -p22 root@{{ip}} " \
+ sudo reboot; \
+ "