This commit is contained in:
Brian Zalewski 2023-07-17 07:28:38 +00:00
parent b67595624c
commit 59c7401138
24 changed files with 283 additions and 85 deletions

View file

@ -5,7 +5,9 @@ xattr -d com.apple.quarantine rclone
# TODOs # TODOs
This page outlines various projects and tasks that we are currently working on. Creating a GitHub issue for each of these items would be overkill. This page outlines various projects and tasks that we are currently working on. Creating a GitHub issue for each of these items would be overkill.
* [Title](https://www.ipfire.org/)
* `git-credential-manager configure`
* [Title](https://github.com/git-ecosystem/git-credential-manager/blob/release/docs/wsl.md)
* [Title](https://github.com/KnowledgeCanvas/knowledge) * [Title](https://github.com/KnowledgeCanvas/knowledge)
* Configure Navi to automatically download and use the best cheat repositories * Configure Navi to automatically download and use the best cheat repositories
* Finish TS from 1400 stars * Finish TS from 1400 stars
@ -76,6 +78,7 @@ The following links include software that need to be reviewed before including t
The following items are Docker containers that we may want to include as default containers deployed in our system. The following items are Docker containers that we may want to include as default containers deployed in our system.
* [Title](https://github.com/sipt/shuttle)
* https://github.com/erxes/erxes - CRM * https://github.com/erxes/erxes - CRM
* https://github.com/pawelmalak/flame - Homepage * https://github.com/pawelmalak/flame - Homepage
* https://github.com/thelounge/thelounge - IRC * https://github.com/thelounge/thelounge - IRC

View file

@ -325,10 +325,13 @@ softwareGroups:
- axel - axel
- bin - bin
- bitly - bitly
- brew-gem
- brew-pkg
- charm - charm
- cod - cod
- desed - desed
- difftastic - difftastic
- dockutil
- duti - duti
- emplace - emplace
- emoj - emoj
@ -518,6 +521,8 @@ softwareGroups:
Essentials: &Essentials Essentials: &Essentials
- clamav - clamav
- docker - docker
- meta-package-manager
- openssl-osx-ca
- rkhunter - rkhunter
Essentials-Desktop: &Essentials-Desktop Essentials-Desktop: &Essentials-Desktop
- autokey - autokey
@ -664,6 +669,7 @@ softwareGroups:
- crunch - crunch
- exiftool - exiftool
- ffmpeg - ffmpeg
- gifsicle
- imagemagick - imagemagick
- jpegoptim - jpegoptim
- korkut - korkut
@ -675,6 +681,7 @@ softwareGroups:
- vidmerger - vidmerger
- wkhtmltopdf - wkhtmltopdf
- youtube-dl - youtube-dl
- yt-dlp
Media-Desktop: &Media-Desktop Media-Desktop: &Media-Desktop
- adobe-creative-cloud - adobe-creative-cloud
- audacity - audacity
@ -768,6 +775,7 @@ softwareGroups:
- platformio - platformio
- please - please
- porter - porter
- proxyman
- rust - rust
- snapcraft - snapcraft
- solidity - solidity
@ -791,6 +799,7 @@ softwareGroups:
- cockpit - cockpit
- cups - cups
- lexicon - lexicon
- squid
Networking: &Networking Networking: &Networking
- etcd - etcd
- cloudflared - cloudflared
@ -1377,6 +1386,8 @@ softwareGroups:
note: Unused Docker assistance package note: Unused Docker assistance package
- pkg: catfs - pkg: catfs
note: CatFS is reportedly in the alpha stage of development and we experienced issues when trying to use it. note: CatFS is reportedly in the alpha stage of development and we experienced issues when trying to use it.
- pkg: ccat
note: bat can be used instead and has more features
- pkg: cerebro - pkg: cerebro
note: macOS system search more native way of providing similar features. Better alternatives are available. note: macOS system search more native way of providing similar features. Better alternatives are available.
- pkg: chromium - pkg: chromium

View file

@ -31,6 +31,14 @@
type = "file" type = "file"
url = "https://curl.se/ca/cacert.pem" url = "https://curl.se/ca/cacert.pem"
### Update scripts
[".local/bin/update"]
type = "git-repo"
url = "https://github.com/UpdateCommand/update.git"
clone.args = ["--depth", "1"]
pull.args = ["--ff-only"]
refreshPeriod = "{{ $refreshPeriod }}"
### Betelgeuse Theme ### Betelgeuse Theme
[".local/src/betelgeuse"] [".local/src/betelgeuse"]
type = "git-repo" type = "git-repo"

View file

@ -28,23 +28,56 @@ if [ -d /Applications ] && [ -d /Library ] && [ -z "$NO_RESTART" ]; then
logg info 'If system updates were downloaded / installed, a reboot might be required.' logg info 'If system updates were downloaded / installed, a reboot might be required.'
fi fi
### Install Xcode CLI tools on macOS ### Ensure dependencies are installed on Linux
if [ -d /Applications ] && [ -d /Library ]; then if ! command -v curl > /dev/null || ! command -v git > /dev/null || ! command -v expect > /dev/null || ! command -v rsync > /dev/null; then
logg info 'Ensuring xcode-select is installed for developer tools' if command -v apt-get > /dev/null; then
xcode-select -p >/dev/null 2>&1 || sudo xcode-select --install # @description Ensure `build-essential`, `curl`, `expect`, `git`, `rsync`, `procps`, and `file` are installed on Debian / Ubuntu
sudo apt-get update
sudo apt-get install -y build-essential curl expect git rsync procps file
elif command -v dnf > /dev/null; then
# @description Ensure `curl`, `expect`, `git`, `rsync`, `procps-ng`, and `file` are installed on Fedora (as well as the Development Tools package)
sudo dnf groupinstall -y 'Development Tools'
sudo dnf install -y curl expect git rsync procps-ng file
elif command -v yum > /dev/null; then
# @description Ensure `curl`, `expect`, `git`, `rsync`, `procps-ng`, and `file` are installed on CentOS (as well as the Development Tools package)
sudo yum groupinstall -y 'Development Tools'
sudo yum install -y curl expect git rsync procps-ng file
elif command -v pacman > /dev/null; then
# @description Ensure `base-devel`, `curl`, `expect`, `git`, `rsync`, `procps-ng`, and `file` are installed on Archlinux
sudo pacman update
sudo pacman -Sy base-devel curl expect git rsync procps-ng file
elif command -v zypper > /dev/null; then
# @description Ensure `curl`, `expect`, `git`, `rsync`, `procps`, and `file` are installed on OpenSUSE (as well as the devel_basis pattern)
sudo zypper install -yt pattern devel_basis
sudo zypper install -y curl expect git rsync procps file
elif command -v apk > /dev/null; then
# @description Ensure `curl`, `expect`, `git`, `rsync`, `procps`, and `file` are installed on Alpine
apk add build-base curl expect git rsync procps file
elif [ -d /Applications ] && [ -d /Library ]; then
# @description Ensure CLI developer tools are available on macOS (via `xcode-select`)
sudo xcode-select -p >/dev/null 2>&1 || xcode-select --install
elif [[ "$OSTYPE" == 'cygwin' ]] || [[ "$OSTYPE" == 'msys' ]] || [[ "$OSTYPE" == 'win32' ]]; then
# @description Ensure `curl`, `expect`, `git`, and `rsync` are installed on Windows
choco install -y curl expect git rsync
fi
fi fi
### Install Homebrew ### Ensure Linux Homebrew is loaded
ensurePackageManagerHomebrew() { loadLinuxbrew() {
if ! command -v brew > /dev/null; then if ! command -v brew > /dev/null; then
if command -v sudo > /dev/null && sudo -n true; then if [ -d "$HOME/.linuxbrew" ]; then
echo | bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" eval "$("$HOME/.linuxbrew/bin/brew" shellenv)"
else elif [ -d "/home/linuxbrew/.linuxbrew" ]; then
logg info 'Homebrew is not installed. Password may be required.' eval "(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" || BREW_EXIT_CODE="$?" fi
if [ -n "$BREW_EXIT_CODE" ]; then fi
}
### Ensures Homebrew folders have proper owners / permissions
fixHomebrewPermissions() {
if command -v brew > /dev/null; then if command -v brew > /dev/null; then
logg warn 'Homebrew was installed but part of the installation failed. Attempting to fix..' logg info 'Applying proper permissions on Homebrew folders'
sudo chmod -R go-w "$(brew --prefix)/share"
BREW_DIRS="share/man share/doc share/zsh/site-functions etc/bash_completion.d" BREW_DIRS="share/man share/doc share/zsh/site-functions etc/bash_completion.d"
for BREW_DIR in $BREW_DIRS; do for BREW_DIR in $BREW_DIRS; do
if [ -d "$(brew --prefix)/$BREW_DIR" ]; then if [ -d "$(brew --prefix)/$BREW_DIR" ]; then
@ -53,13 +86,30 @@ ensurePackageManagerHomebrew() {
done done
brew update --force --quiet brew update --force --quiet
fi fi
}
### Installs Homebrew
ensurePackageManagerHomebrew() {
if ! command -v brew > /dev/null; then
if command -v sudo > /dev/null && sudo -n true; then
echo | bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
else
logg info 'Homebrew is not installed. Password may be required.'
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" || BREW_EXIT_CODE="$?"
if [ -n "$BREW_EXIT_CODE" ]; then
logg warn 'Homebrew was installed but part of the installation failed to complete successfully.'
fi fi
fi fi
fi fi
} }
ensurePackageManagerHomebrew
# @description Enable auto-update service ### Logic
loadLinuxbrew
ensurePackageManagerHomebrew
loadLinuxbrew
fixHomebrewPermissions
### Enable auto-update service
if brew autoupdate status | grep 'Autoupdate is not configured.' > /dev/null; then if brew autoupdate status | grep 'Autoupdate is not configured.' > /dev/null; then
logg info 'Enabling Homebrew auto-update service (every 24 hours)' logg info 'Enabling Homebrew auto-update service (every 24 hours)'
brew autoupdate start --cleanup --greedy --upgrade brew autoupdate start --cleanup --greedy --upgrade

View file

@ -0,0 +1,20 @@
#!/usr/bin/env bash
# @file Ensure Auto-Update
# @brief Configures macOS to automatically check for system updates
# @description
# This script adds a macOS LaunchDaemon for the root user that checks for updates and automatically
# applies them. It will run if the file is available at `$HOME/Library/LaunchDaemons/com.apple.automatedupdates.plist`.
{{ includeTemplate "universal/profile" }}
{{ includeTemplate "universal/logg" }}
### Enable automated updates on macOS
if [ -d /Applications ] && [ -d /System ]; then
if [ -f "$HOME/Library/LaunchDaemons/com.apple.automatedupdates.plist" ] && [ ! -f "/Library/LaunchDaemons/com.apple.automatedupdates.plist" ]; then
logg info 'Configuring macOS to automatically apply system updates'
sudo mkdir -p /Library/LaunchDaemons
sudo cp -f "$HOME/Library/LaunchDaemons/com.apple.automatedupdates.plist" "/Library/LaunchDaemons/com.apple.automatedupdates.plist"
logg info 'Loading `/Library/LaunchDaemons/com.apple.automatedupdates.plist`'
sudo launchctl load "/Library/LaunchDaemons/com.apple.automatedupdates.plist" && logg success 'launchctl load successful'
fi
fi

View file

@ -104,6 +104,27 @@ if command -v rclone > /dev/null; then
sudo systemctl enable "s3-${USER}" sudo systemctl enable "s3-${USER}"
sudo systemctl restart "s3-${USER}" sudo systemctl restart "s3-${USER}"
fi fi
if [ -d /Applications ] && [ -d /System ]; then
### Enable Rclone mounts
logg info 'Ensuring Rclone mount-on-reboot definitions are in place'
if [ -f "$HOME/Library/LaunchDaemons/rclone.private.plist" ] && [ ! -f "/Library/LaunchDaemons/rclone.private.plist" ]; then
logg info 'Adding /Volumes/Private as S3 bucket mount, enabled at boot'
sudo mkdir -p /Library/LaunchDaemons
sudo cp -f "$HOME/Library/LaunchDaemons/rclone.private.plist" '/Library/LaunchDaemons/rclone.private.plist'
sudo launchctl load '/Library/LaunchDaemons/rclone.private.plist' && logg success 'launchctl load successful'
fi
if [ -f "$HOME/Library/LaunchDaemons/rclone.public.plist" ] && [ ! -f "/Library/LaunchDaemons/rclone.public.plist" ]; then
logg info 'Adding /Volumes/Public as S3 bucket mount, enabled at boot'
sudo mkdir -p /Library/LaunchDaemons
sudo cp -f "$HOME/Library/LaunchDaemons/rclone.public.plist" '/Library/LaunchDaemons/rclone.public.plist'
sudo launchctl load '/Library/LaunchDaemons/rclone.public.plist' && logg success 'launchctl load successful'
fi
if [ -f "$HOME/Library/LaunchDaemons/rclone.user.plist" ] && ! launchctl list | grep 'rclone.user' > /dev/null; then
logg info 'Adding ~/Public as S3 bucket mount, enabled at boot'
launchctl load "$HOME/Library/LaunchDaemons/rclone.user.plist" && logg success 'user launchctl load successful'
fi
fi
else else
logg info '`rclone` is not available' logg info '`rclone` is not available'
fi fi

View file

@ -12,7 +12,7 @@ if [ -d "${XDG_DATA_HOME:-$HOME/.local/share}/emsdk" ]; then
cd "${XDG_DATA_HOME:-$HOME/.local/share}/emsdk" cd "${XDG_DATA_HOME:-$HOME/.local/share}/emsdk"
logg info 'Pulling latest changes for Emscripten source code' logg info 'Pulling latest changes for Emscripten source code'
git pull && logg success 'Successfully pulled latest Emscripten source code' git pull && logg success 'Successfully pulled latest Emscripten source code'
./emsdk install latest && logg success 'Installed latest Emscripten target' ./emsdk install latest > /dev/null && logg success 'Installed latest Emscripten target'
./emsdk activate latest && logg success 'Activated latest Emscripten target' ./emsdk activate latest > /dev/null && logg success 'Activated latest Emscripten target'
logg info 'Profile source inclusions are already implemented in Bash / ZSH profile' logg info 'Profile source inclusions are already implemented in Bash / ZSH profile'
fi fi

View file

@ -200,6 +200,13 @@ if command -v warp-cli > /dev/null; then
if [ -d /System ] && [ -d /Applications ]; then if [ -d /System ] && [ -d /Applications ]; then
sudo cp -f "$HOME/Library/Managed Preferences/com.cloudflare.warp.plist" '/Library/Managed Preferences/com.cloudflare.warp.plist' sudo cp -f "$HOME/Library/Managed Preferences/com.cloudflare.warp.plist" '/Library/Managed Preferences/com.cloudflare.warp.plist'
sudo plutil -convert binary1 '/Library/Managed Preferences/com.cloudflare.warp.plist' sudo plutil -convert binary1 '/Library/Managed Preferences/com.cloudflare.warp.plist'
### Enable CloudFlare WARP credentials auto-populate (since file is deleted when not managed with MDM)
if [ -f "$HOME/Library/LaunchDaemons/com.cloudflare.warp.plist" ] && [ ! -f "/Library/LaunchDaemons/com.cloudflare.warp.plist" ]; then
sudo mkdir -p /Library/LaunchDaemons
sudo cp -f "$HOME/Library/LaunchDaemons/com.cloudflare.warp.plist" '/Library/LaunchDaemons/com.cloudflare.warp.plist'
sudo launchctl load "/Library/LaunchDaemons/com.cloudflare.warp.plist"
fi
elif [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/warp/mdm.xml" ]; then elif [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/warp/mdm.xml" ]; then
sudo mkdir -p /var/lib/cloudflare-warp sudo mkdir -p /var/lib/cloudflare-warp
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/warp/mdm.xml" /var/lib/cloudflare-warp/mdm.xml sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/warp/mdm.xml" /var/lib/cloudflare-warp/mdm.xml

View file

@ -5,7 +5,7 @@
<key>KeepAlive</key> <key>KeepAlive</key>
<true/> <true/>
<key>Label</key> <key>Label</key>
<string>rclone.public</string> <string>rclone.user</string>
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>/usr/local/bin/rclone-mount</string> <string>/usr/local/bin/rclone-mount</string>

View file

@ -1,32 +0,0 @@
#!/usr/bin/env bash
if [ -d /Applications ] && [ -d /System ]; then
### Enable automated updates on macOS
if [ -f "$HOME/Library/LaunchDaemons/com.apple.automatedupdates.plist" ] && [ ! -f "/Library/LaunchDaemons/com.apple.automatedupdates.plist" ]; then
sudo mkdir -p /Library/LaunchDaemons
sudo cp -f "$HOME/Library/LaunchDaemons/com.apple.automatedupdates.plist" "/Library/LaunchDaemons/com.apple.automatedupdates.plist"
sudo launchctl load "/Library/LaunchDaemons/com.apple.automatedupdates.plist"
fi
### Enable CloudFlare WARP credentials auto-populate (since file is deleted when not managed with MDM)
if [ -f "$HOME/Library/LaunchDaemons/com.cloudflare.warp.plist" ] && [ ! -f "/Library/LaunchDaemons/com.cloudflare.warp.plist" ]; then
sudo mkdir -p /Library/LaunchDaemons
sudo cp -f "$HOME/Library/LaunchDaemons/com.cloudflare.warp.plist" '/Library/LaunchDaemons/com.cloudflare.warp.plist'
sudo launchctl load "/Library/LaunchDaemons/com.cloudflare.warp.plist"
fi
### Enable Rclone mounts
if [ -f "$HOME/Library/LaunchDaemons/rclone.private.plist" ] && [ ! -f "/Library/LaunchDaemons/rclone.private.plist" ]; then
sudo mkdir -p /Library/LaunchDaemons
sudo cp -f "$HOME/Library/LaunchDaemons/rclone.private.plist" '/Library/LaunchDaemons/rclone.private.plist'
sudo launchctl load '/Library/LaunchDaemons/rclone.private.plist'
fi
if [ -f "$HOME/Library/LaunchDaemons/rclone.public.plist" ] && [ ! -f "/Library/LaunchDaemons/rclone.public.plist" ]; then
sudo mkdir -p /Library/LaunchDaemons
sudo cp -f "$HOME/Library/LaunchDaemons/rclone.public.plist" '/Library/LaunchDaemons/rclone.public.plist'
sudo launchctl load '/Library/LaunchDaemons/rclone.public.plist'
fi
if [ -f "$HOME/Library/LaunchDaemons/rclone.user.plist" ]; then
launchctl load "$HOME/Library/LaunchDaemons/rclone.user.plist"
fi
fi

View file

@ -69,12 +69,8 @@ if [ "$BASH_SUPPORT" = 'true' ]; then
fi fi
fi fi
### Bash Completion
if [ -f "/usr/local/etc/profile.d/bash_completion.sh" ]; then
. "/usr/local/etc/profile.d/bash_completion.sh"
fi
### Bash Completion (Homebrew) ### Bash Completion (Homebrew)
autoload -U +X bashcompinit && bashcompinit
if command -v brew > /dev/null; then if command -v brew > /dev/null; then
if [[ -r "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" ]]; then if [[ -r "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" ]]; then
. "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" . "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh"
@ -142,6 +138,6 @@ if [ "$BASH_SUPPORT" = 'true' ]; then
### zoxide ### zoxide
if command -v zoxide > /dev/null; then if command -v zoxide > /dev/null; then
eval "$(zoxide init --cmd cd bash)" eval "$(zoxide init --cmd cd bash)" > /dev/null
fi fi
fi fi

View file

@ -0,0 +1,9 @@
### Homebrew Completions
# Source: https://docs.brew.sh/Shell-Completion#configuring-completions-in-fish
if test -d (brew --prefix)"/share/fish/completions"
set -gx fish_complete_path $fish_complete_path (brew --prefix)/share/fish/completions
end
if test -d (brew --prefix)"/share/fish/vendor_completions.d"
set -gx fish_complete_path $fish_complete_path (brew --prefix)/share/fish/vendor_completions.d
end

View file

@ -61,6 +61,7 @@
whitespace = trailing-space,space-before-tab whitespace = trailing-space,space-before-tab
[credential] [credential]
helper = cache --timeout=3600 helper = cache --timeout=3600
credentialStore = {{ if eq .host.distro.id "darwin" }}keychain{{ else }}{{ if eq .host.distro.id "windows" }}wincredman{{ else }}secretservice{{ end }}{{ end }}
[credential "https://github.com"] [credential "https://github.com"]
helper = !gh auth git-credential helper = !gh auth git-credential
[credential "https://gist.github.com"] [credential "https://gist.github.com"]

View file

@ -361,6 +361,11 @@ export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
### SDKMan ### SDKMan
export SDKMAN_DIR="$XDG_DATA_HOME/sdkman" export SDKMAN_DIR="$XDG_DATA_HOME/sdkman"
### Update
if [ -d "$HOME/.local/bin/update/bin" ]; then
export PATH="$PATH:$HOME/.local/bin/update/bin"
fi
### Vagrant ### Vagrant
export VAGRANT_ALIAS_FILE="$XDG_CONFIG_HOME/vagrant/aliases" export VAGRANT_ALIAS_FILE="$XDG_CONFIG_HOME/vagrant/aliases"
export VAGRANT_DEFAULT_PROVIDER=virtualbox export VAGRANT_DEFAULT_PROVIDER=virtualbox

View file

@ -0,0 +1,10 @@
# Run first
You can put any scripts you want into this directory, and the program
will run your scripts first, before any of the update commands.
You may freely create subdirectories.
The program runs the executable files.
The program skips the non-executable files.

View file

@ -0,0 +1,3 @@
# Run last
All executable scripts in this folder get run after all the other update commands.

View file

@ -0,0 +1,5 @@
#!/usr/bin/env bash
if command -v brew > /dev/null; then
brew info --json=v1 --installed
fi

View file

@ -62,7 +62,7 @@ setopt SHARE_HISTORY
if [ ! -d "$XDG_CACHE_HOME/zsh" ]; then if [ ! -d "$XDG_CACHE_HOME/zsh" ]; then
mkdir -p "$XDG_CACHE_HOME/zsh" mkdir -p "$XDG_CACHE_HOME/zsh"
fi fi
autoload -U +X compinit && compinit -d "$XDG_CACHE_HOME/zsh/zcompdump-$ZSH_VERSION"
zstyle ':completion:*:*:*:*:*' menu select zstyle ':completion:*:*:*:*:*' menu select
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/zcompcache" zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/zcompcache"
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
@ -259,10 +259,6 @@ xterm*|rxvt*|Eterm|aterm|kterm|gnome*|alacritty)
;; ;;
esac esac
### Homebrew ZSH Completions
# Must be sourced before compinit / Oh-My-ZSH inclusion
FPATH="$HOMEBREW_PREFIX/share/zsh/site-functions:${FPATH}"
### Antigen ### Antigen
if [ -f "$HOME/.local/scripts/antigen.zsh" ]; then if [ -f "$HOME/.local/scripts/antigen.zsh" ]; then
source "$HOME/.local/scripts/antigen.zsh" source "$HOME/.local/scripts/antigen.zsh"
@ -392,6 +388,19 @@ if command -v fzf > /dev/null; then
zstyle ':autocomplete:*' fzf-completion yes zstyle ':autocomplete:*' fzf-completion yes
fi fi
### Homebrew ZSH Completions
# Must be sourced before compinit / Oh-My-ZSH inclusion
FPATH="$HOMEBREW_PREFIX/share/zsh/site-functions:${FPATH}"
### ZSH compinit
autoload -Uz +X compinit && compinit -d "$XDG_CACHE_HOME/zsh/zcompdump-$ZSH_VERSION"
### Bash Completions
autoload -U +X bashcompinit && bashcompinit
if [ -f "/usr/local/etc/profile.d/bash_completion.sh" ]; then
. "/usr/local/etc/profile.d/bash_completion.sh"
fi
### Atuin ### Atuin
if command -v atuin > /dev/null; then if command -v atuin > /dev/null; then
eval "$(atuin init zsh)" eval "$(atuin init zsh)"
@ -451,9 +460,6 @@ if command -v thefuck > /dev/null; then
eval "$(thefuck --alias)" eval "$(thefuck --alias)"
fi fi
### Bash Completions
autoload -U +X bashcompinit && bashcompinit
### HashiCorp Vault ### HashiCorp Vault
if command -v vault > /dev/null; then if command -v vault > /dev/null; then
complete -o nospace -C vault vault complete -o nospace -C vault vault

View file

@ -252,25 +252,28 @@ fi
# @description Ensure basic system packages are available on the device # @description Ensure basic system packages are available on the device
if ! command -v curl > /dev/null || ! command -v git > /dev/null || ! command -v expect > /dev/null || ! command -v rsync > /dev/null; then if ! command -v curl > /dev/null || ! command -v git > /dev/null || ! command -v expect > /dev/null || ! command -v rsync > /dev/null; then
if command -v apt-get > /dev/null; then if command -v apt-get > /dev/null; then
# @description Ensure `build-essential`, `curl`, `expect`, `git`, and `rsync` are installed on Debian / Ubuntu # @description Ensure `build-essential`, `curl`, `expect`, `git`, `rsync`, `procps`, and `file` are installed on Debian / Ubuntu
sudo apt-get update sudo apt-get update
sudo apt-get install -y build-essential curl expect git rsync sudo apt-get install -y build-essential curl expect git rsync procps file
elif command -v dnf > /dev/null; then elif command -v dnf > /dev/null; then
# @description Ensure `curl`, `expect`, `git`, and `rsync` are installed on Fedora # @description Ensure `curl`, `expect`, `git`, `rsync`, `procps-ng`, and `file` are installed on Fedora (as well as the Development Tools package)
sudo dnf install -y curl expect git rsync sudo dnf groupinstall -y 'Development Tools'
sudo dnf install -y curl expect git rsync procps-ng file
elif command -v yum > /dev/null; then elif command -v yum > /dev/null; then
# @description Ensure `curl`, `expect`, `git`, and `rsync` are installed on CentOS # @description Ensure `curl`, `expect`, `git`, `rsync`, `procps-ng`, and `file` are installed on CentOS (as well as the Development Tools package)
sudo yum install -y curl expect git rsync sudo yum groupinstall -y 'Development Tools'
sudo yum install -y curl expect git rsync procps-ng file
elif command -v pacman > /dev/null; then elif command -v pacman > /dev/null; then
# @description Ensure `curl`, `expect`, `git`, and `rsync` are installed on Archlinux # @description Ensure `base-devel`, `curl`, `expect`, `git`, `rsync`, `procps-ng`, and `file` are installed on Archlinux
sudo pacman update sudo pacman update
sudo pacman -Sy curl expect git rsync sudo pacman -Sy base-devel curl expect git rsync procps-ng file
elif command -v zypper > /dev/null; then elif command -v zypper > /dev/null; then
# @description Ensure `curl`, `expect`, `git`, and `rsync` are installed on OpenSUSE # @description Ensure `curl`, `expect`, `git`, `rsync`, `procps`, and `file` are installed on OpenSUSE (as well as the devel_basis pattern)
sudo zypper install -y curl expect git rsync sudo zypper install -yt pattern devel_basis
sudo zypper install -y curl expect git rsync procps file
elif command -v apk > /dev/null; then elif command -v apk > /dev/null; then
# @description Ensure `curl`, `expect`, `git`, and `rsync` are installed on Alpine # @description Ensure `curl`, `expect`, `git`, `rsync`, `procps`, and `file` are installed on Alpine
apk add curl expect git rsync apk add build-base curl expect git rsync procps file
elif [ -d /Applications ] && [ -d /Library ]; then elif [ -d /Applications ] && [ -d /Library ]; then
# @description Ensure CLI developer tools are available on macOS (via `xcode-select`) # @description Ensure CLI developer tools are available on macOS (via `xcode-select`)
sudo xcode-select -p >/dev/null 2>&1 || xcode-select --install sudo xcode-select -p >/dev/null 2>&1 || xcode-select --install

View file

@ -1,6 +1,6 @@
--- ---
# eslint-disable eslint-comments/disable-enable-pair, max-len, max-lines, no-warning-comments # eslint-disable eslint-comments/disable-enable-pair, max-len, max-lines, no-warning-comments
# rhino mkvtoolnix testdisk ccat git-credential-manager source-highlight giter8 saltstack squid ettercap calc mongodb wdiff dialog john reaver oath-toolkit xhyve elm icdiff ddrescue gitlab-ci-multi-runner tcl-tk flac zenity terragrunt dbus grpc diffutils sonarqube haproxy cabal-install sonar-scanner wakeonlan tmate solr tcptraceroute hashcat handbrake iproute2mac 2fsprogs hydra you-get cabextract trash sphinx-doc iftop htop-osx dockutil xctool aspell w3m grc screenfetch moreutils brew-cask-completion openconnect media-info lftp unison logstash pstree rpm opam iperf3 libav gifsicle iperf colordiff lmdb mcrypt httprack aircrack-ng ntfs-3g glide glog parallel bison rename kubernetes-helm gdbm mobile-shell geckodriver pv sdl swig winetricks doxygen mtr graphicsmagick dos2unix highlight putty llvm flow watch gdb ant mariadb mercurial pidof autoconf maven readline libtool chromedriver pkg-config # ettercap calc mongodb wdiff dialog john reaver oath-toolkit xhyve elm icdiff ddrescue gitlab-ci-multi-runner tcl-tk flac zenity terragrunt dbus grpc diffutils sonarqube haproxy cabal-install sonar-scanner tmate solr tcptraceroute hashcat handbrake iproute2mac 2fsprogs hydra you-get cabextract trash sphinx-doc iftop htop-osx w3m grc moreutils brew-cask-completion openconnect media-info lftp unison logstash pstree rpm iperf3 libav iperf colordiff lmdb mcrypt httprack aircrack-ng ntfs-3g glog parallel rename kubernetes-helm gdbm mobile-shell geckodriver pv sdl swig winetricks doxygen mtr graphicsmagick dos2unix highlight putty llvm flow watch gdb ant mariadb mercurial pidof autoconf maven readline libtool chromedriver pkg-config
# `softwarePackages` is a map of possible package managers to use while installing a program. The installer will # `softwarePackages` is a map of possible package managers to use while installing a program. The installer will
# look at the `installerPreference` variable and find the first package manager that is in the package's possible # look at the `installerPreference` variable and find the first package manager that is in the package's possible
# installation method and then use that. It is also sensitive to the type of operating system so a package with # installation method and then use that. It is also sensitive to the type of operating system so a package with
@ -868,6 +868,11 @@ softwarePackages:
_home: https://astronvim.github.io/ _home: https://astronvim.github.io/
_name: AstroNvim _name: AstroNvim
_post: nvim --headless -c 'autocmd User PackerComplete quitall' & _post: nvim --headless -c 'autocmd User PackerComplete quitall' &
dockutil:
_bin: dockutil
_github: https://github.com/kcrawford/dockutil
_name: DockUtil
brew:darwin: dockutil
platformio: platformio:
_bin: platformio _bin: platformio
_github: https://github.com/platformio/platformio-core _github: https://github.com/platformio/platformio-core
@ -1053,6 +1058,13 @@ softwarePackages:
_home: https://jamiemason.github.io/syncpack/ _home: https://jamiemason.github.io/syncpack/
_name: Syncpack _name: Syncpack
npm: syncpack npm: syncpack
ccat:
_bin: ccat
_github: https://github.com/owenthereal/ccat
_name: ccat
brew: ccat
go: github.com/owenthereal/ccat@latest
pacman: ccat
flake8: flake8:
_bin: flake8 _bin: flake8
_desc: Flake8 is a python tool that glues together pycodestyle, pyflakes, mccabe, and third-party plugins to check the style and quality of some python code. _desc: Flake8 is a python tool that glues together pycodestyle, pyflakes, mccabe, and third-party plugins to check the style and quality of some python code.
@ -1100,17 +1112,49 @@ softwarePackages:
_name: bane _name: bane
github: github.com/genuinetools/bane github: github.com/genuinetools/bane
go: github.com/genuinetools/bane@latest go: github.com/genuinetools/bane@latest
openssl-osx-ca:
_bin: openssl-osx-ca
_github: https://github.com/raggi/openssl-osx-ca
_name: OpenSSL macOS CA
_service: openssl-osx-ca
brew:darwin: raggi/ale/openssl-osx-ca
meta-package-manager:
_bin: mpm
_github: https://github.com/kdeldycke/meta-package-manager
_name: Meta Package Manager
brew: meta-package-manager
pipx: meta-package-manager
yt-dlp:
_bin: yt-dlp
_github: https://github.com/yt-dlp/yt-dlp/wiki/Installation
_name: YouTube Download
brew: yt-dlp
choco: yt-dlp
pacman: yt-dlp
pipx: yt-dlp
scoop: yt-dlp
port: yt-dlp
winget: yt-dlp
brew-gem:
_bin: brew-gem
_github: https://github.com/sportngin/brew-gem
_name: Homebrew RubyGems
brew: brew-gem
brew-pkg:
_bin: brew-pkg
_github: https://github.com/timsutton/brew-pkg
_name: Homebrew Pkg
brew:darwin: timsutton/formulae/brew-pkg
bash-completion: bash-completion:
_bin: null _bin: null
_desc: null _desc: null
_docs: https://docs.brew.sh/Shell-Completion _docs: https://docs.brew.sh/Shell-Completion
_github: null _github: null
_home: null _home: null
_name: null _name: Bash Completion Formula
_when:darwin: '! brew list bash-completion | grep bash-completion > /dev/null' _when: '! brew list bash-completion | grep bash-completion > /dev/null'
_when:linux: '! brew list bash-completion | grep bash-completion > /dev/null' brew: bash-completion@2
brew:darwin: bash-completion brew: bash-completion@2
brew:linux: bash-completion
axel: axel:
_bin: axel _bin: axel
_docs: null _docs: null
@ -6637,6 +6681,18 @@ softwarePackages:
- gifski - gifski
- peek - peek
yay: peek-git yay: peek-git
gifsicle:
_bin: gifsicle
_github: https://github.com/kohler/gifsicle
_name: Gifsicle
apt: gifsicle
brew: gifsicle
dnf: gifsicle
pacman: gifsicle
choco: gifsicle
scoop: gifsicle
port: gifsicle
pgcli: pgcli:
_bin: pgcli _bin: pgcli
_desc: '[pgcli](https://www.pgcli.com/) is a free and open-source CLI for Postgres that does auto-completion and syntax highlighting.' _desc: '[pgcli](https://www.pgcli.com/) is a free and open-source CLI for Postgres that does auto-completion and syntax highlighting.'
@ -10050,6 +10106,21 @@ softwarePackages:
dnf: tigervnc-server dnf: tigervnc-server
pacman: tigervnc pacman: tigervnc
zypper: tigervnc zypper: tigervnc
proxyman:
_bin: proxyman
_github: https://github.com/ProxymanApp/Proxyman
_name: Proxyman
_when:cask: '! test -d /Applications/Proxyman.app && ! test -d $HOME/Applications/Proxyman.app'
cask: proxyman
squid:
_bin: squid
_github: https://github.com/squid-cache/squid
_name: Squid
_service: squid
apt: squid
brew: squid
dnf: squid
pacman: squid
zap: zap:
_bin: zap _bin: zap
_desc: Delightful AppImage package manager _desc: Delightful AppImage package manager
@ -10179,6 +10250,7 @@ softwarePlugins:
plugins: plugins:
- microsoft.cst.attacksurfaceanalyzer.cli - microsoft.cst.attacksurfaceanalyzer.cli
- dotnet-format - dotnet-format
- git-credential-manager
gcloud: gcloud:
cmd: bash -c 'if ! gcloud components list | grep "Installed.*{PLUGIN}" &> /dev/null; then gcloud components install "{PLUGIN}"; fi' cmd: bash -c 'if ! gcloud components list | grep "Installed.*{PLUGIN}" &> /dev/null; then gcloud components install "{PLUGIN}"; fi'
plugins: plugins: