From 4ec6a6b6a8c8c1bea5ab1249a82afb4b4c4377bd Mon Sep 17 00:00:00 2001 From: randogoth Date: Thu, 5 Feb 2026 09:19:35 +0200 Subject: [PATCH] feat(just): add init-home recipe --- modules/system/justfile.nix | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/modules/system/justfile.nix b/modules/system/justfile.nix index 25b391f..60ed567 100644 --- a/modules/system/justfile.nix +++ b/modules/system/justfile.nix @@ -2,6 +2,8 @@ let justfileText = '' + FORCE := "0" + [no-cd] manage: $EDITOR ~/.config/home-manager/home.nix @@ -22,10 +24,40 @@ let update: sudo nix flake update --flake "''${NIXOS_FLAKE:-/etc/nixos}" just rebuild + + [no-cd] + init-home: + #!/usr/bin/env bash + set -euo pipefail + + src="/etc/skel/.config/home-manager" + dst="${XDG_CONFIG_HOME:-$HOME/.config}/home-manager" + + mkdir -p "$dst" + chmod 700 "$dst" || true + + overwrite="0" + if [[ "${FORCE}" == "1" ]]; then + overwrite="1" + elif [[ -e "$dst/flake.nix" || -e "$dst/home.nix" ]]; then + read -r -p "Home Manager files already exist in $dst. Overwrite? [y/N] " ans + case "${ans:-}" in + y|Y|yes|YES) overwrite="1" ;; + *) overwrite="0" ;; + esac + fi + + for f in flake.nix home.nix; do + if [[ "$overwrite" == "1" || ! -e "$dst/$f" ]]; then + install -m 600 "$src/$f" "$dst/$f" + echo "copied $f -> $dst/$f" + else + echo "kept $dst/$f" + fi + done ''; in { # Global Just recipes (system-wide). Used when `XDG_CONFIG_DIRS` includes `/etc/xdg` (default). environment.etc."xdg/just/justfile".text = justfileText; } -