aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-14 11:25:43 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-14 11:25:43 +0100
commit78630287855397723fd5d81a7995c3eea4b25c12 (patch)
tree849d85573e9e54c96e520658462797ee75a48c15
parent89829b5beaad70aa58cd566bd975aafcfe8d1f8f (diff)
downloaddotfiles-78630287855397723fd5d81a7995c3eea4b25c12.tar.gz
dotfiles-78630287855397723fd5d81a7995c3eea4b25c12.tar.bz2
dotfiles-78630287855397723fd5d81a7995c3eea4b25c12.zip
feat(remote-dev): add justfile with update/pull/switch/gc recipes
Wraps the bootstrap-day-2 incantations so you don't have to remember `home-manager switch --impure --flake '.#vm' -b backup` and its zsh quoting gotcha. Recipes: - `just update` — pull + switch (the everyday one) - `just pull` — config-only changes, no nix rebuild - `just switch` — rebuild HM from the current checkout - `just gc` — expire HM generations >7d and gc the nix store README updated to use these.
-rw-r--r--remote-dev/README.md23
-rw-r--r--remote-dev/justfile21
2 files changed, 34 insertions, 10 deletions
diff --git a/remote-dev/README.md b/remote-dev/README.md
index 455b108..4622f31 100644
--- a/remote-dev/README.md
+++ b/remote-dev/README.md
@@ -30,24 +30,27 @@ GitHub on first launch.
## Updating after a dotfiles change
-Two flavours of update:
+Run from `~/.local/share/dotfiles/remote-dev`:
```sh
-# (a) Config-only change (nvim/zellij/zsh/git/ssh): no rebuild needed.
-git -C ~/.local/share/dotfiles pull
+just update # pull + home-manager switch (handles everything)
+```
+
+Or piece-by-piece if you know which one you need:
-# (b) Package set in home.nix changed: rebuild HM.
-cd ~/.local/share/dotfiles/remote-dev
-home-manager switch --impure --flake '.#vm' -b backup
+```sh
+just pull # config-only changes (nvim/zellij/zsh/git/ssh): no rebuild needed
+just switch # rebuild home-manager from the current checkout
```
-> The flake ref is single-quoted because the shared zshrc enables
-> `extendedglob`, which would otherwise interpret `.#vm` as a glob pattern
-> and fail with `zsh: no matches found`.
+> `just update` runs `pull` then `switch`. The home-manager invocation
+> uses `--impure --flake '.#vm' -b backup`; the single-quotes around the
+> flake ref matter because our zsh enables `extendedglob`, which would
+> otherwise interpret `.#vm` as a glob pattern.
## Adding a tool
-Edit `home.nix`, add to `home.packages`, then `home-manager switch`.
+Edit `home.nix`, add to `home.packages`, then `just switch` (or `just update`).
## Single-shell policy (leaf tools only)
diff --git a/remote-dev/justfile b/remote-dev/justfile
new file mode 100644
index 0000000..db254df
--- /dev/null
+++ b/remote-dev/justfile
@@ -0,0 +1,21 @@
+# Recipes for the remote-dev VM. Run from ~/.local/share/dotfiles/remote-dev.
+
+# Show available recipes (default)
+default:
+ @just --list
+
+# Pull latest dotfiles and rebuild Home-Manager profile
+update: pull switch
+
+# Pull latest dotfiles only (config-only changes, no nix rebuild)
+pull:
+ git -C {{ justfile_directory() }}/.. pull --ff-only
+
+# Rebuild Home-Manager profile from the current checkout (no pull)
+switch:
+ home-manager switch --impure --flake '{{ justfile_directory() }}#vm' -b backup
+
+# Garbage-collect old home-manager generations and nix store
+gc:
+ home-manager expire-generations '-7 days'
+ nix-collect-garbage -d