{ ... }: let justfileText = '' [no-cd] manage module="": #!/usr/bin/env bash set -euo pipefail if [ -z "{{module}}" ]; then $EDITOR ~/.config/home-manager/home.nix; else $EDITOR ~/.config/home-manager/modules/{{module}}.nix; fi [no-cd] switch: home-manager switch --flake ~/.config/home-manager#$USER [no-cd] rebuild: sudo nixos-rebuild switch --flake "''${NIXOS_FLAKE:-/etc/nixos}#$HOSTNAME" [no-cd] clean: nix-collect-garbage -d [no-cd] update target="": #!/usr/bin/env bash set -euo pipefail update_system() { sudo nix flake update --flake "''${NIXOS_FLAKE:-/etc/nixos}" just rebuild } update_home() { nix flake update --flake "''${XDG_CONFIG_HOME:-$HOME/.config}/home-manager" just switch } case "{{target}}" in system) update_system ;; home) update_home ;; "") update_system; update_home ;; *) echo "usage: just update [system|home] (empty = both)" >&2 exit 1 ;; esac [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:-0}" == "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 environment.etc."just/justfile".text = justfileText; }