#!/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 < Search packages ny shell Temporary shell ny clean Clean nix store ny help Show help Shortcuts: ny s Search ny sh 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 " run nix search nixpkgs "$2" ;; shell) shift [[ $# -gt 0 ]] || die "usage: ny shell " 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