| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #!/usr/bin/env bash
- set -euo pipefail
- # -----------------------------
- # Config (override via env)
- # -----------------------------
- NY_FLAKE_PATH="${NY_FLAKE_PATH:-$HOME/.config/nixos}"
- # -----------------------------
- # Helpers
- # -----------------------------
- die() {
- echo "error: $*" >&2
- exit 1
- }
- info() {
- echo "→ $*"
- }
- run() {
- info "$*"
- "$@"
- }
- has() {
- command -v "$1" >/dev/null 2>&1
- }
- # -----------------------------
- # Help
- # -----------------------------
- help() {
- cat <<EOF
- ny — simple NixOS sync command
- Usage:
- ny Rebuild system
- ny up Update flake + rebuild
- ny diff Show pending system changes
- ny search <q> Search packages
- ny shell <pkg> Temporary shell
- ny clean Clean nix store
- ny help Show help
- Shortcuts:
- ny s <q> Search
- ny sh <pkg> Shell
- Env:
- NY_FLAKE_PATH Path to NixOS flake (default: ~/.config/nixos)
- EOF
- }
- # -----------------------------
- # Shortcuts
- # -----------------------------
- CMD="${1:-}"
- case "$CMD" in
- help)
- help
- exit 0
- ;;
- s) set -- search "${@:2}" ;;
- sh) set -- shell "${@:2}" ;;
- esac
- CMD="${1:-}"
- # -----------------------------
- # Commands
- # -----------------------------
- case "$CMD" in
- "")
- cd "$NY_FLAKE_PATH" || die "flake path not found: $NY_FLAKE_PATH"
- run sudo nixos-rebuild switch --flake .
- ;;
- up)
- cd "$NY_FLAKE_PATH" || die "flake path not found: $NY_FLAKE_PATH"
- run nix flake update
- run sudo nixos-rebuild switch --flake .
- ;;
- diff)
- cd "$NY_FLAKE_PATH" || die "flake path not found: $NY_FLAKE_PATH"
- info "Computing system diff…"
- if has nvd; then
- run sudo nixos-rebuild build --flake .
- run nvd diff /run/current-system ./result
- rm -f result
- elif has nix-diff; then
- run sudo nixos-rebuild build --flake .
- run nix-diff /run/current-system ./result
- rm -f result
- else
- info "nvd/nix-diff not found, using dry-run"
- run sudo nixos-rebuild dry-run --flake .
- fi
- ;;
- search)
- [[ -n "${2:-}" ]] || die "usage: ny search <query>"
- run nix search nixpkgs "$2"
- ;;
- shell)
- shift
- [[ $# -gt 0 ]] || die "usage: ny shell <pkg...>"
- run nix shell "${@/#/nixpkgs#}"
- ;;
- clean)
- run nix store optimise
- run nix-collect-garbage
- run sudo nix-collect-garbage -d
- ;;
- *)
- die "unknown command: $CMD (run 'ny help')"
- ;;
- esac
|