197 lines
4.4 KiB
Bash
197 lines
4.4 KiB
Bash
#!/bin/zsh
|
|
|
|
function _package_manager {
|
|
local pkg_manager=""
|
|
|
|
if [[ -f bun.lockb ]]; then
|
|
pkg_manager="bun"
|
|
elif [[ -f pnpm-lock.yaml ]]; then
|
|
pkg_manager="pnpm"
|
|
elif [[ -f yarn.lock ]]; then
|
|
pkg_manager="yarn"
|
|
elif [[ -f package-lock.json ]]; then
|
|
pkg_manager="npm"
|
|
else
|
|
pkg_manager="pnpm"
|
|
fi
|
|
|
|
if [[ -f package.json ]] && [[ $1 != "run" ]] && [[ $1 != "install" ]] && [[ $1 != "add" ]] && [[ $1 != "remove" ]] && [[ $1 != "i" ]] && [[ $1 != "rm" ]]; then
|
|
if command -v jq >/dev/null 2>&1 && jq -e ".scripts[\"$1\"] != null" package.json >/dev/null 2>&1; then
|
|
set -- "run" "$@"
|
|
fi
|
|
fi
|
|
|
|
if command -v corepack >/dev/null 2>&1; then
|
|
corepack ${pkg_manager} "$@"
|
|
else
|
|
command ${pkg_manager} "$@"
|
|
fi
|
|
}
|
|
|
|
function vimrc {
|
|
if [[ -z "$XDG_CONFIG_HOME" ]]; then
|
|
echo "Error: XDG_CONFIG_HOME not set" >&2
|
|
return 1
|
|
fi
|
|
|
|
local original_dir=$(pwd)
|
|
cd "$XDG_CONFIG_HOME/nvim" || {
|
|
echo "Error: Cannot access $XDG_CONFIG_HOME/nvim" >&2
|
|
return 1
|
|
}
|
|
nvim
|
|
cd "$original_dir"
|
|
}
|
|
|
|
function nixrc {
|
|
if [[ -z "$XDG_CONFIG_HOME" ]]; then
|
|
echo "Error: XDG_CONFIG_HOME not set" >&2
|
|
return 1
|
|
fi
|
|
|
|
local original_dir=$(pwd)
|
|
cd "$XDG_CONFIG_HOME/nixos" || {
|
|
echo "Error: Cannot access $XDG_CONFIG_HOME/nixos" >&2
|
|
return 1
|
|
}
|
|
nvim
|
|
cd "$original_dir"
|
|
}
|
|
|
|
function zshrc {
|
|
if [[ -z "$XDG_CONFIG_HOME" ]]; then
|
|
echo "Error: XDG_CONFIG_HOME not set" >&2
|
|
return 1
|
|
fi
|
|
|
|
local original_dir=$(pwd)
|
|
cd "$XDG_CONFIG_HOME/zsh" || {
|
|
echo "Error: Cannot access $XDG_CONFIG_HOME/zsh" >&2
|
|
return 1
|
|
}
|
|
nvim
|
|
cd "$original_dir"
|
|
}
|
|
|
|
function yay() {
|
|
case "$1" in
|
|
update|"-Syu")
|
|
echo "Updating NixOS system..."
|
|
nh os switch ~/.config/nixos --update --ask
|
|
;;
|
|
|
|
search|"-Ss")
|
|
[ -z "$2" ] && { echo "Usage: yay search <package>"; return 1; }
|
|
echo "Searching for '$2'..."
|
|
nix search nixpkgs "$2" 2>/dev/null || nix-env -qaP | grep -i "$2"
|
|
;;
|
|
|
|
install|"-S")
|
|
[ -z "$2" ] && { echo "Usage: yay install <package>"; return 1; }
|
|
echo "Installing $2..."
|
|
nix-env -iA nixpkgs.$2
|
|
;;
|
|
|
|
remove|"-R")
|
|
[ -z "$2" ] && { echo "Usage: yay remove <package>"; return 1; }
|
|
echo "Removing $2..."
|
|
nix-env -e "$2"
|
|
;;
|
|
|
|
list|"-Q")
|
|
echo "Installed packages:"
|
|
nix-env -q
|
|
;;
|
|
|
|
shell|"-p")
|
|
shift
|
|
if [ $# -eq 0 ]; then
|
|
echo "Usage: yay shell <pkg1> [pkg2 ...]"
|
|
return 1
|
|
fi
|
|
echo "Starting nix-shell with: $*"
|
|
nix-shell -p "$@"
|
|
;;
|
|
|
|
clean|"-Sc")
|
|
echo "Cleaning nix store..."
|
|
nix-collect-garbage
|
|
sudo nix-collect-garbage -d
|
|
;;
|
|
|
|
help|"-h")
|
|
bat -Pp << 'EOF'
|
|
yay - Simple NixOS package manager wrapper
|
|
|
|
Commands:
|
|
yay Rebuild system
|
|
yay update Update system
|
|
yay search <pkg> Search packages
|
|
yay install <pkg> Install package (user)
|
|
yay remove <pkg> Remove package
|
|
yay list List installed packages
|
|
yay shell <pkg...> Start nix-shell with packages
|
|
yay clean Clean package cache
|
|
yay help Show this help
|
|
|
|
Note: For system packages, edit ~/.config/nixos/configuration.nix
|
|
EOF
|
|
;;
|
|
|
|
"")
|
|
echo "Rebuilding NixOS system..."
|
|
nh os switch ~/.config/nixos --ask
|
|
;;
|
|
|
|
*)
|
|
if [[ ! "$1" =~ ^- ]]; then
|
|
echo "Installing '$1'..."
|
|
nix-env -iA nixpkgs.$1
|
|
else
|
|
echo "Unknown option: $1"
|
|
echo "Run 'yay help' for available commands"
|
|
return 1
|
|
fi
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_package_manager_completion() {
|
|
local -a commands
|
|
commands=(
|
|
'run:Run npm script'
|
|
'install:Install dependencies'
|
|
'add:Add dependency'
|
|
'remove:Remove dependency'
|
|
'dev:Start dev server'
|
|
'build:Build project'
|
|
'test:Run tests'
|
|
'lint:Run linter'
|
|
)
|
|
_describe 'package manager commands' commands
|
|
}
|
|
|
|
_yay_completion() {
|
|
local -a opts
|
|
opts=(
|
|
'-Syyu:Update system'
|
|
'-Syu:Update system'
|
|
'-Ss:Search packages'
|
|
'-S:Install system-wide'
|
|
'-R:Remove package'
|
|
'-Q:List installed'
|
|
'-Si:Package info'
|
|
'-Sc:Clean cache'
|
|
'-p:Open nix-shell with packages'
|
|
'help:Show help'
|
|
'install:Install to user env'
|
|
'remove:Remove from user env'
|
|
'list:List installed packages'
|
|
'clean:Clean nix store'
|
|
'shell:Start nix-shell with packages'
|
|
)
|
|
_describe 'yay commands' opts
|
|
}
|
|
|
|
compdef _package_manager_completion _package_manager p
|
|
compdef _yay_completion yay
|