diff options
| author | 2026-05-20 13:56:09 +0100 | |
|---|---|---|
| committer | 2026-05-20 13:56:09 +0100 | |
| commit | d22a2336c19fc1fd08e3b1f9d88629b319558cab (patch) | |
| tree | 907dcb604718125d7bf8d652070bac5893f90491 /justfile | |
| parent | 5f361d0172103df5c16baae8427dba78e8b0dfae (diff) | |
| download | dotfiles-d22a2336c19fc1fd08e3b1f9d88629b319558cab.tar.gz dotfiles-d22a2336c19fc1fd08e3b1f9d88629b319558cab.tar.bz2 dotfiles-d22a2336c19fc1fd08e3b1f9d88629b319558cab.zip | |
feat(bootstrap): install nix + Home-Manager on Arch host (p8)
Append two steps to the root bootstrap.sh:
5a. install nix via the Determinate Systems multi-user installer
(same as remote-dev/nix; gives us a proper nix-daemon.service).
5b. chsh to ~/.nix-profile/bin/zsh after appending to /etc/shells.
Add a 'just nix-switch' recipe that auto-picks the host vs vm profile
based on /etc/os-release ID, and wire it into 'just init' and
'just sync' so day-to-day reconciliation also re-applies Home-Manager.
The recipe is a no-op when nix isn't installed, so it stays safe for
pre-bootstrap states and for hosts where the user opts out.
Phase 8 of the nix-on-host migration plan.
Diffstat (limited to 'justfile')
| -rw-r--r-- | justfile | 27 |
1 files changed, 23 insertions, 4 deletions
@@ -6,20 +6,39 @@ default: # Setup # ═══════════════════════════════════════════════════════════════════ -# First-time machine setup: regenerate chezmoi config, install git hooks, deploy dotfiles, install base packages, enable curated units -init: _chezmoi-init _install-hooks apply (pkg-apply "base") unit-apply +# First-time machine setup: regenerate chezmoi config, install git hooks, deploy dotfiles, install base packages, enable curated units, switch Home-Manager +init: _chezmoi-init _install-hooks apply (pkg-apply "base") unit-apply nix-switch # ═══════════════════════════════════════════════════════════════════ # Day-to-day # ═══════════════════════════════════════════════════════════════════ -# Reconcile everything: deploy dotfiles + /etc, top up packages, enable curated units -sync: apply pkg-fix unit-apply +# Reconcile everything: deploy dotfiles + /etc, top up packages, enable curated units, sync Home-Manager +sync: apply pkg-fix unit-apply nix-switch # Deploy dotfiles AND /etc atomically (chezmoi apply; /etc handled by onchange template) apply: chezmoi apply -S . -v +# Apply Home-Manager profile (host on Arch, vm on Ubuntu remote-dev). Falls + +# back to a no-op when nix isn't installed (pre-bootstrap state). +nix-switch: + #!/bin/sh + set -eu + if ! command -v nix >/dev/null 2>&1; then + echo "nix not installed; skipping home-manager switch" >&2 + exit 0 + fi + profile=host + [ -f /etc/os-release ] && . /etc/os-release || true + case "${ID:-}" in + ubuntu|debian) profile=vm ;; + esac + nix --extra-experimental-features 'nix-command flakes' \ + run home-manager/master -- \ + switch --impure --flake "{{ justfile_directory() }}/nix#${profile}" -b backup + # ═══════════════════════════════════════════════════════════════════ # Updates # ═══════════════════════════════════════════════════════════════════ |
