{ config, pkgs, ... }: { # Bash configuration programs.bash = { enable = true; enableCompletion = true; # Shell aliases (equivalent to your script functions) shellAliases = { sudo = "sudo "; # Nix rb = "git add . && sudo nixos-rebuild switch --flake $HOME/nix#default"; eza = "eza"; ls = "eza -lh --group-directories-first --icons"; cat = "bat"; bat = "bat"; # Quicker navigation ".." = "cd .."; "..." = "cd ../.."; "...." = "cd ../../.."; "....." = "cd ../../../.."; # Git gs = "git status"; ga = "git add -A"; gc = "git commit -m"; grm = "git rm $(git ls-files --deleted)"; gb = "git checkout -b"; # Docker aliases dc = "docker-compose"; bx = "docker buildx"; de = "docker exec -it"; dub = "docker compose up -d --build"; dup = "docker-compose up"; dwn = "docker-compose down"; da = "docker_artisan"; # Laravel & php a = "php artisan"; # Convenience cls = "clear"; home = "cd ~"; projects = "cd ~/projects"; co = "code ."; clipboard = "xclip -selection clipboard"; # Jigsaw jig = "vendor/bin/jigsaw"; # Golang gr = "go run ."; gmt = "go mod tidy"; }; # Additional bash configuration bashrcExtra = '' function pape() { hyprctl hyprpaper preload $1 hyprctl hyprpaper wallpaper ", $1" } # Open something in the projects folder function o() { cd "$HOME/projects/$1" } function proj() { eza -ld $HOME/projects/* --color=never | awk '{print $7}' | wofi --dmenu --prompt "Open project:" | xargs -I{} code {} -n && exit } function makepasswd() { openssl rand -base64 16 | clipboard echo "Password copied to clipboard" } function mountnewshares() { sudo systemctl daemon-reload sudo mount -a } function makerole() { mkdir -p "roles/$1/tasks" mkdir -p "roles/$1/defaults" touch "roles/$1/tasks/main.yml" touch "roles/$1/defaults/main.yml" } function pyvenv() { python3 -m venv .venv source .venv/bin/activate } function newsshkey() { KEY_NAME="id_ed25519_$1" KEY_PATH="$HOME/.ssh/$KEY_NAME" ssh-keygen -t ed25519 -C "$1" -f "$KEY_PATH" -N "" ssh-add "$KEY_PATH" echo "Key created and added" echo "Key: $KEY_NAME" echo "Saved to: $KEY_PATH" } function listsshkeys() { ls "$HOME/.ssh" } function copypublickey() { KEY_NAME="$1" KEY_PATH="$HOME/.ssh/$KEY_NAME" cat "$KEY_PATH.pub" | clipboard echo "Key copied to clipboard" } function makerole() { mkdir -p "roles/$1/tasks" mkdir -p "roles/$1/defaults" touch "roles/$1/tasks/main.yml" touch "roles/$1/defaults/main.yml" } ''; }; }