{{ if eq .chezmoi.os "linux" -}} #!/bin/bash set -xeu {{/* This script is intended to be idempotent and should be safe to run multiple times. */ -}} {{/* No custom packages should be expected to be installed by default. */ -}} {{ if .wsl }} # WSL-specific commands sudo apt install -y keychain {{ else }} # Non-WSL commands sudo apt install -y xclip xsel {{ end }} {{/* TODO: Add basic yes/no prompts before installing packages */ -}} # Install Fisher (Fish plugin manager) and plugins from fish_plugins file if type -P fish; then if [ ! -f ~/.config/fish/functions/fisher.fish ]; then echo "chezmoi: Installing Fisher (Fish plugin manager)" fish -c "curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher" fi # Update plugins from fish_plugins file if [ -f ~/.config/fish/fish_plugins ]; then echo "chezmoi: Updating Fish plugins from fish_plugins file" fish -c "fisher update" fi fi # Install micro (+ register as text editor) if ! type -P micro; then echo "chezmoi: Installing micro" sudo apt remove -y micro curl https://getmic.ro/r | sudo sh sudo mv ./micro /usr/bin/micro fi echo "chezmoi: Installing apt packages" PACKAGES='git fzf fish sqlite curl ripgrep jq' # Install and/or update sudo apt install -y $PACKAGES INSTALL_ONLY_PACKAGES='iperf3 unzip p7zip-full nmap reptyr btop' # Install only if missing MISSING_PACKAGES="" for pkg in $INSTALL_ONLY_PACKAGES; do if ! dpkg -l $pkg >/dev/null 2>&1; then MISSING_PACKAGES="$MISSING_PACKAGES $pkg" fi done if [ -n "$MISSING_PACKAGES" ]; then echo "chezmoi: The following packages are missing and will be installed: $MISSING_PACKAGES" sudo apt install -y $MISSING_PACKAGES fi # Install hishtory if ! type -P hishtory; then echo "chezmoi: Installing hishtory" export HISHTORY_SERVER="https://hsh.{{ dopplerProjectJson.PRIVATE_DOMAIN }}" export HISHTORY_SKIP_INIT_IMPORT='true' curl https://hishtory.dev/install.py | python3 - --offline --skip-config-modification fi # Hishtory initialization if type -P hishtory; then if ! hishtory status | grep -q "$(doppler secrets get HISHTORY_USER_SECRET --plain)"; then echo "chezmoi: expected user secret not found, initializing hishtory" hishtory init "$(doppler secrets get HISHTORY_USER_SECRET --plain)" --force hishtory syncing enable fi else echo "chezmoi: hishtory not found, skipping initialization" fi # Install chatgpt if ! type -P chatgpt; then echo "chezmoi: Installing chatgpt" curl -L -o chatgpt https://github.com/kardolus/chatgpt-cli/releases/latest/download/chatgpt-linux-amd64 chmod +x chatgpt sudo mv chatgpt /usr/local/bin/ fi # Set Fish as default shell if type -P fish; then FISH_PATH=$(which fish) CURRENT_SHELL=$(getent passwd "$USER" | cut -d: -f7) if [ "$CURRENT_SHELL" != "$FISH_PATH" ]; then echo "chezmoi: Setting Fish as default shell" # Add fish to /etc/shells if not already present if ! grep -q "^$FISH_PATH$" /etc/shells; then echo "$FISH_PATH" | sudo tee -a /etc/shells fi # Change default shell sudo chsh -s "$FISH_PATH" "$USER" echo "chezmoi: Default shell changed to Fish. Please log out and back in for changes to take effect." else echo "chezmoi: Fish is already the default shell" fi fi {{- else if eq .chezmoi.os "darwin" -}} #!/bin/sh brew install ripgrep {{ end -}}