From 6f63073657dfe77878045ab99ef3e6eb8dcf627e Mon Sep 17 00:00:00 2001 From: Tyrone Meijn Date: Fri, 20 Dec 2024 13:47:25 +0000 Subject: [PATCH] feat(shell): migrate from bash to fish shell --- chezmoi/.chezmoiignore | 6 ++ chezmoi/dot_bash_functions | 21 +----- chezmoi/dot_bash_profile | 7 -- chezmoi/dot_bashrc | 3 - chezmoi/dot_config/aquaproj-aqua/aqua.yaml | 3 + chezmoi/dot_config/fish/conf.d/.keep | 0 .../fish/conf.d/10_abbreviations.fish | 42 ++++++++++++ .../dot_config/fish/conf.d/20_aliases.fish | 19 ++++++ .../fish/conf.d/30_tool_managers.fish | 16 +++++ .../fish/conf.d/99_bitwarden_tokens.fish | 37 +++++++++++ chezmoi/dot_config/fish/conf.d/__init__.fish | 21 ++++++ chezmoi/dot_config/fish/config.fish | 64 +++++++++++++++++++ chezmoi/dot_config/fish/fish_plugins | 7 ++ chezmoi/dot_config/fish/functions/.keep | 0 .../dot_config/fish/functions/benchmark.fish | 10 +++ .../fish/functions/check_git_status.fish | 13 ++++ .../fish/functions/profile_shell_startup.fish | 14 ++++ chezmoi/dot_config/fish/functions/tfinit.fish | 33 ++++++++++ .../fish/functions/update_completions.fish | 41 ++++++++++++ .../dot_config/fish/functions/weather.fish | 8 +++ chezmoi/dot_config/fish/themes/.keep | 0 chezmoi/dot_config/kitty/kitty.conf | 2 + chezmoi/dot_config/mise/config.toml | 22 ++++--- 23 files changed, 350 insertions(+), 39 deletions(-) create mode 100644 chezmoi/dot_config/fish/conf.d/.keep create mode 100644 chezmoi/dot_config/fish/conf.d/10_abbreviations.fish create mode 100644 chezmoi/dot_config/fish/conf.d/20_aliases.fish create mode 100644 chezmoi/dot_config/fish/conf.d/30_tool_managers.fish create mode 100644 chezmoi/dot_config/fish/conf.d/99_bitwarden_tokens.fish create mode 100644 chezmoi/dot_config/fish/conf.d/__init__.fish create mode 100644 chezmoi/dot_config/fish/config.fish create mode 100644 chezmoi/dot_config/fish/fish_plugins create mode 100644 chezmoi/dot_config/fish/functions/.keep create mode 100644 chezmoi/dot_config/fish/functions/benchmark.fish create mode 100644 chezmoi/dot_config/fish/functions/check_git_status.fish create mode 100644 chezmoi/dot_config/fish/functions/profile_shell_startup.fish create mode 100644 chezmoi/dot_config/fish/functions/tfinit.fish create mode 100644 chezmoi/dot_config/fish/functions/update_completions.fish create mode 100644 chezmoi/dot_config/fish/functions/weather.fish create mode 100644 chezmoi/dot_config/fish/themes/.keep diff --git a/chezmoi/.chezmoiignore b/chezmoi/.chezmoiignore index 9e4be7e1..3ff832b6 100644 --- a/chezmoi/.chezmoiignore +++ b/chezmoi/.chezmoiignore @@ -11,3 +11,9 @@ ansible dconf.ini installed-extensions.txt + +# Fish +.config/fish/plugins +.config/fish/completion +.config/fish/fishprof.txt +.config/fish/fish_variables diff --git a/chezmoi/dot_bash_functions b/chezmoi/dot_bash_functions index 00f3a15c..0c0b808f 100644 --- a/chezmoi/dot_bash_functions +++ b/chezmoi/dot_bash_functions @@ -6,25 +6,6 @@ function g_commit_and_push() { git push } -function g_setup_mr_branch() { - local branch_name="$1" - - # Determine default branch on remote - local default_branch="$(git remote show origin | sed -n '/HEAD branch/s/.*: //p')" - - # Make sure the default branch is up to date locally - echo "default branch: '${default_branch}'. Updating default branch..." - git switch "${default_branch}" - git pull - - echo "creating branch '${branch_name}'..." - git switch -c "${branch_name}" "${default_branch}" - - git push -u origin "${branch_name}" - - echo "Done!" -} - function tfinit() { export TF_HTTP_USERNAME="tmeijn" @@ -53,7 +34,7 @@ function tfinit() { } -# Function to check if a directory has pending changes +# Function to check if a git repository has pending changes check_git_status() { find . -type d -name ".git" ! -path "*/.terraform/modules*" -exec dirname {} \; | while read -r dir; do if [ -d "$dir/.git" ]; then diff --git a/chezmoi/dot_bash_profile b/chezmoi/dot_bash_profile index 8cbe615c..12f5f5de 100644 --- a/chezmoi/dot_bash_profile +++ b/chezmoi/dot_bash_profile @@ -8,13 +8,6 @@ if [ -d "$HOME/.local/bin" ] ; then PATH="$HOME/.local/bin:$PATH" fi -eval "$(mise activate bash --shims)" - -export AQUA_ROOT_DIR="${XDG_DATA_HOME:-$HOME/.local/share/aquaproj-aqua}" -export PATH="${AQUA_ROOT_DIR}/bin:$PATH" -export AQUA_GLOBAL_CONFIG=${AQUA_GLOBAL_CONFIG:-${XDG_CONFIG_HOME:-$HOME/.config}/aquaproj-aqua/aqua.yaml} -export AQUA_GENERATE_WITH_DETAIL=true - if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi diff --git a/chezmoi/dot_bashrc b/chezmoi/dot_bashrc index 9c52ce91..4d6582e4 100644 --- a/chezmoi/dot_bashrc +++ b/chezmoi/dot_bashrc @@ -26,7 +26,6 @@ fi HISTCONTROL=ignoreboth # append to the history file, don't overwrite it -shopt -s histappend export PROMPT_COMMAND="history -a" # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) @@ -148,8 +147,6 @@ if command -v rbw &> /dev/null; then export LAB_CORE_TOKEN="$gitlab_token" && echo "✍🏾 LAB_CORE_TOKEN" github_token="$(rbw get GITHUB_TOKEN)" export GITHUB_TOKEN="$github_token" && echo "✍🏾 GITHUB_TOKEN" - jira_token="$(rbw get JIRA_API_TOKEN)" - export JIRA_API_TOKEN="$jira_token" && echo "✍🏾 JIRA_API_TOKEN" else echo "🔒 Bitwarden vault locked, not loading tokens. 🔒" echo "💡 To load tokens run the \`reco\` alias. 💡" diff --git a/chezmoi/dot_config/aquaproj-aqua/aqua.yaml b/chezmoi/dot_config/aquaproj-aqua/aqua.yaml index aac75293..49ddfc46 100644 --- a/chezmoi/dot_config/aquaproj-aqua/aqua.yaml +++ b/chezmoi/dot_config/aquaproj-aqua/aqua.yaml @@ -325,3 +325,6 @@ packages: - name: atc0005/send2teams@v0.13.8 description: Small CLI tool used to submit messages to Microsoft Teams link: https://github.com/atc0005/send2teams +- name: sharkdp/fd@v10.2.0 + description: A simple, fast and user-friendly alternative to 'find' + link: https://github.com/sharkdp/fd diff --git a/chezmoi/dot_config/fish/conf.d/.keep b/chezmoi/dot_config/fish/conf.d/.keep new file mode 100644 index 00000000..e69de29b diff --git a/chezmoi/dot_config/fish/conf.d/10_abbreviations.fish b/chezmoi/dot_config/fish/conf.d/10_abbreviations.fish new file mode 100644 index 00000000..00c6fa76 --- /dev/null +++ b/chezmoi/dot_config/fish/conf.d/10_abbreviations.fish @@ -0,0 +1,42 @@ +#!/usr/bin/env fish + +abbr --add fish-reload-config 'source ~/.config/fish/**/*.fish' +abbr --add g_commit_and_push --set-cursor 'git commit -am "%" && git push' +abbr --add starwars 'telnet towel.blinkenlights.nl' +abbr --add agi 'aqua g -g -i' + + +abbr --position anywhere --add p0 "&> /dev/null" # Pipe everything to /dev/null + +# Function to set abbreviation if command exists +function set_abbr_if_cmd_exists + set -l cmd $argv[1] + set -l abbr_name $argv[2] + set -l abbr_value $argv[3] + if command -v $cmd >/dev/null + abbr -a $abbr_name $abbr_value + end +end + +# Function to set environment variable if command exists +function set_env_if_cmd_exists + set -l cmd $argv[1] + set -l var_name $argv[2] + set -l var_value $argv[3] + if command -v $cmd >/dev/null + set -gx $var_name $var_value + end +end + +# Aqua installed tools +set_abbr_if_cmd_exists eza ls eza +set_abbr_if_cmd_exists eza ll "eza -al" +set_abbr_if_cmd_exists bat cat bat +set_abbr_if_cmd_exists gping ping gping +set_abbr_if_cmd_exists hwatch watch hwatch +set_abbr_if_cmd_exists lazydocker lzd lazydocker +set_abbr_if_cmd_exists lazygit lzg lazygit + +# Mise installed tools +set_env_if_cmd_exists moar PAGER "moar -no-clear-on-exit" +set_abbr_if_cmd_exists pgcli psql pgcli diff --git a/chezmoi/dot_config/fish/conf.d/20_aliases.fish b/chezmoi/dot_config/fish/conf.d/20_aliases.fish new file mode 100644 index 00000000..94735ca2 --- /dev/null +++ b/chezmoi/dot_config/fish/conf.d/20_aliases.fish @@ -0,0 +1,19 @@ +# Repeats the last command with `sudo` prefix +alias pls='sudo $history[1]' + +# Needed for granted to work, see: https://docs.commonfate.io/granted/internals/shell-alias#grantedinternalsshell-alias +alias assume="source "$(dirname $(aqua which assume))"/assume.fish" + +# Terraform aliases +alias tfapply='terraform apply plan.tfplan' +alias tfcopyplan='terraform show -no-color plan.tfplan | pbcopy' +alias tfplan='terraform plan -out=plan.tfplan' + +# Helpers for working with Clipboard +alias pbcopy='xclip -selection clipboard' +alias pbpaste='xclip -selection clipboard -o' +alias cb='flatpak run app.getclipboard.Clipboard' + +# Provision Hetzner GitLab Runners using scheduled pipelines trigger +alias gl_runner_up='glab -R el-capitano/operations/hetzner-cloud-runners schedule run 2691862' +alias gl_runner_down='glab -R el-capitano/operations/hetzner-cloud-runners schedule run 383558' diff --git a/chezmoi/dot_config/fish/conf.d/30_tool_managers.fish b/chezmoi/dot_config/fish/conf.d/30_tool_managers.fish new file mode 100644 index 00000000..bba302ff --- /dev/null +++ b/chezmoi/dot_config/fish/conf.d/30_tool_managers.fish @@ -0,0 +1,16 @@ +# Set Aqua variables and paths +if set -q XDG_DATA_HOME + set -gx AQUA_ROOT_DIR "$XDG_DATA_HOME/aquaproj-aqua" +else + set -gx AQUA_ROOT_DIR "$HOME/.local/share/aquaproj-aqua" +end + +set -gx PATH "$AQUA_ROOT_DIR/bin" $PATH + +if set -q XDG_CONFIG_HOME + set -gx AQUA_GLOBAL_CONFIG "$XDG_CONFIG_HOME/aquaproj-aqua/aqua.yaml" +else + set -gx AQUA_GLOBAL_CONFIG "$HOME/.config/aquaproj-aqua/aqua.yaml" +end + +set -gx AQUA_GENERATE_WITH_DETAIL true diff --git a/chezmoi/dot_config/fish/conf.d/99_bitwarden_tokens.fish b/chezmoi/dot_config/fish/conf.d/99_bitwarden_tokens.fish new file mode 100644 index 00000000..7c31d094 --- /dev/null +++ b/chezmoi/dot_config/fish/conf.d/99_bitwarden_tokens.fish @@ -0,0 +1,37 @@ +############################################## +# BITWARDEN: auto load tokens if DB unlocked # +############################################## + +function __load_tokens_if_rbw_unlocks --on-event rbw-unlocked + if command -v rbw >/dev/null 2>&1 + if rbw unlocked >/dev/null 2>&1 + echo "🔓🗝️ Session unlocked, loading tokens from Bitwarden... 🔓🗝️" + + load_token OPENAI_API_KEY + load_token GITLAB_TOKEN TF_HTTP_PASSWORD TF_VAR_gitlab_token GL_TOKEN LAB_CORE_TOKEN + load_token GITHUB_TOKEN + else + echo "🔒 Bitwarden vault locked, not loading tokens. 🔒" + echo "💡 To load tokens run the `reco` alias. 💡" + end + end +end + +function load_token + set -l token_name $argv[1] + set -l token_value (rbw get $token_name) + set -gx $token_name $token_value + echo "🔓 $token_name" + for alias in $argv[2..-1] + set -gx $alias $token_value + echo "🔓 $alias (alias of $token_name)" + end +end + +function reco + rbw unlock + emit rbw-unlocked +end + +# Call one time to see if already unlocked. +__load_tokens_if_rbw_unlocks diff --git a/chezmoi/dot_config/fish/conf.d/__init__.fish b/chezmoi/dot_config/fish/conf.d/__init__.fish new file mode 100644 index 00000000..73f8db54 --- /dev/null +++ b/chezmoi/dot_config/fish/conf.d/__init__.fish @@ -0,0 +1,21 @@ +# Set fisher plugin path and load these plugins. +# Source: https://github.com/jorgebucaran/fisher/issues/640#issuecomment-1878499811 +set fisher_path $__fish_config_dir/plugins + +set fish_complete_path $fish_complete_path[1] $fisher_path/completions $fish_complete_path[2..] +set fish_function_path $fish_function_path[1] $fisher_path/functions $fish_function_path[2..] + +for file in $fisher_path/conf.d/*.fish + source $file +end + +# +# Helpers +# + +# Source: https://www.reddit.com/r/fishshell/comments/1fmbypo/is_there_a_nicer_way_to_create_auto_complete_for/lo9vqzz/ +function optspec2comp + string replace -r / "\n-" $argv | + string replace -r '^' - | + string replace -r '=$' "" +end diff --git a/chezmoi/dot_config/fish/config.fish b/chezmoi/dot_config/fish/config.fish new file mode 100644 index 00000000..bebc3bd7 --- /dev/null +++ b/chezmoi/dot_config/fish/config.fish @@ -0,0 +1,64 @@ +# Some nice resources +# - https://www.reddit.com/r/fishshell/comments/1he9bd8/what_are_you_abbreviations/ +# - https://www.reddit.com/r/fishshell/comments/1gp750x/can_i_see_your_fish_configs/ + +set -x TF_CLI_ARGS_plan "-lock=false" +set -x TF_HTTP_USERNAME tmeijn + +fish_add_path $HOME/.krew/bin $HOME/.cargo/bin $HOME/.local/bin $HOME/bin + +# Everything below this should only be loaded on interactive shells. +if ! status is-interactive + mise activate fish --shims | source + return 0 +end + +if command -v mise &>/dev/null + mise activate fish | source + mise hook-env -s fish | source + # Mise itself doesn't export this as a variable as Aqua does do, so we do it ourself. + set -gx MISE_GLOBAL_CONFIG (mise config ls --no-header | head -n1 | awk '{print $1}') + set -gx MISE_GLOBAL_CONFIG (string replace -a '~' $HOME $MISE_GLOBAL_CONFIG) +end + +if command -v git-town &> /dev/null + alias gt='git-town' +end + +if command -v kubectl &>/dev/null + function kubectl --wraps kubectl + command kubecolor $argv + end + + # adds alias for "k" to "kubecolor" with completions + function k --wraps kubectl + command kubecolor $argv + end + + # Set `dyff` as the kubectl differ (k diff ...) + set -x KUBECTL_EXTERNAL_DIFF "dyff between --omit-header --set-exit-code" +end + +if command -v aws_completer &>/dev/null + # Enable AWS CLI autocompletion: https://github.com/aws/aws-cli/issues/1079#issuecomment-541997810 + complete --command aws --no-files --arguments '(begin; set --local --export COMP_SHELL fish; set --local --export COMP_LINE (commandline); aws_completer | sed \'s/ $//\'; end)' +end + +# Only update completions once a day since this is a slow operation. +if test ! -e $HOME/.update_completions_lock || test (math (date +%s) - (stat -c %Y $HOME/.update_completions_lock)) -gt 86400 + update_completions + echo "Updating completions..." + touch $HOME/.update_completions_lock +end + +# Can be used as fallback when rbw is broken. +if test -f ~/.env + set -gx (cat ~/.env | string split -f1 '=') +end + +# ENHANCE! +command -v fixit >/dev/null; and fixit init fish | source +command -v zoxide >/dev/null; and zoxide init --cmd cd fish | source +command -v atuin >/dev/null; and atuin init fish | source +#command -v savvy >/dev/null; and savvy init fish | source # Disabled: not currently used, so saving in Fish startup costs. +command -v starship >/dev/null; and starship init fish | source diff --git a/chezmoi/dot_config/fish/fish_plugins b/chezmoi/dot_config/fish/fish_plugins new file mode 100644 index 00000000..1da5e376 --- /dev/null +++ b/chezmoi/dot_config/fish/fish_plugins @@ -0,0 +1,7 @@ +jorgebucaran/fisher +nickeb96/puffer-fish +jorgebucaran/replay.fish +jorgebucaran/autopair.fish +gazorby/fish-abbreviation-tips +patrickf1/fzf.fish +decors/fish-colored-man diff --git a/chezmoi/dot_config/fish/functions/.keep b/chezmoi/dot_config/fish/functions/.keep new file mode 100644 index 00000000..e69de29b diff --git a/chezmoi/dot_config/fish/functions/benchmark.fish b/chezmoi/dot_config/fish/functions/benchmark.fish new file mode 100644 index 00000000..64b044f6 --- /dev/null +++ b/chezmoi/dot_config/fish/functions/benchmark.fish @@ -0,0 +1,10 @@ +function benchmark \ + --description 'benchmark a shell' \ + --argument-names shellname + + test -n "$shellname" || set shellname fish + echo "running $shellname 10 times..." + for i in (seq 10) + /usr/bin/time -f "\t%E real,\t%U user,\t%S sys" $shellname -i -c exit + end +end diff --git a/chezmoi/dot_config/fish/functions/check_git_status.fish b/chezmoi/dot_config/fish/functions/check_git_status.fish new file mode 100644 index 00000000..30f21da0 --- /dev/null +++ b/chezmoi/dot_config/fish/functions/check_git_status.fish @@ -0,0 +1,13 @@ +# Function to check if a git repository has pending changes +function check_git_status + find . -type d -name ".git" ! -path "*/.terraform/modules*" -exec dirname {} \; | while read -l dir + if test -d "$dir/.git" + pushd "$dir" > /dev/null; or return + if git status --porcelain | grep -q . + echo "=== Pending changes in $dir ===" + git status -s + end + popd > /dev/null; or return + end + end +end diff --git a/chezmoi/dot_config/fish/functions/profile_shell_startup.fish b/chezmoi/dot_config/fish/functions/profile_shell_startup.fish new file mode 100644 index 00000000..bd4640bc --- /dev/null +++ b/chezmoi/dot_config/fish/functions/profile_shell_startup.fish @@ -0,0 +1,14 @@ +function profile_shell_startup --description 'Profile fish shell startup time' + set shellname fish + set fprof $__fish_config_dir/fishprof.txt + fish --profile-startup=$fprof -i -c exit + awk 'NR==1 || $3==">"{print}' $fprof | string replace $HOME '~' + + read -l -P "Do you want to see the sorted profile results? (y/N) " confirm + switch $confirm + case Y y + sort -nk2 $fprof + case '' N n + echo "Sorting skipped." + end +end diff --git a/chezmoi/dot_config/fish/functions/tfinit.fish b/chezmoi/dot_config/fish/functions/tfinit.fish new file mode 100644 index 00000000..751aec39 --- /dev/null +++ b/chezmoi/dot_config/fish/functions/tfinit.fish @@ -0,0 +1,33 @@ +set -g tfinit_optspec 'b/backend=' no-plan + +function tfinit --description 'Initialize Terraform with an optional partial backend file.' + argparse $tfinit_optspec -- $argv + or return + + set -l init_args + + if test -f "backends/local.tfbackend" + echo "Local backend file detected, setting in command" + set -gx TF_CLI_ARGS_init "-backend-config=backends/local.tfbackend" + end + + if set -q _flag_backend + if not test -f "backends/$_flag_backend.tfbackend" + echo "Backend file 'backends/$_flag_backend.tfbackend' does not exist!" + return 1 + end + set init_args $init_args "-backend-config=backends/$_flag_backend.tfbackend" + set -gx TF_VAR_env "$_flag_backend" + end + + set init_args $init_args -reconfigure $argv + + terraform init $init_args + + if not set -q _flag_no_plan + echo "==== Executing Terraform plan command... ====" + terraform plan -out=plan.tfplan + end +end + +complete -f --command tfinit --arguments='(optspec2comp $tfinit_optspec)' diff --git a/chezmoi/dot_config/fish/functions/update_completions.fish b/chezmoi/dot_config/fish/functions/update_completions.fish new file mode 100644 index 00000000..f437ed2b --- /dev/null +++ b/chezmoi/dot_config/fish/functions/update_completions.fish @@ -0,0 +1,41 @@ +function update_completions + set -l _completion_dir $fish_complete_path[1] + if not test -d "$_completion_dir" + echo "Fish completion directory does not exist, not updating completions" + return + end + + if command -v aqua >/dev/null + aqua completion fish >"$_completion_dir/aqua.fish" + end + if command -v lab >/dev/null + lab completion fish >"$_completion_dir/lab.fish" + end + if command -v glab >/dev/null + glab completion -s fish >"$_completion_dir/glab.fish" + end + if command -v mise >/dev/null + mise completion fish >"$_completion_dir/mise.fish" + end + if command -v rbw >/dev/null + rbw gen-completions fish >"$_completion_dir/rbw.fish" + end + if command -v ghorg >/dev/null + ghorg completion fish >"$_completion_dir/ghorg.fish" + end + if command -v starship >/dev/null + starship completions fish >"$_completion_dir/starship.fish" + end + if command -v tenv >/dev/null + tenv completion fish >"$_completion_dir/tenv.fish" + end + if command -v kubectl >/dev/null + kubectl completion fish >"$_completion_dir/kubectl.fish" + end + if command -v git-town >/dev/null + git-town completions fish >"$_completion_dir/git-town.fish" + end + if command -v fzf >/dev/null + fzf --fish >"$_completion_dir/fzf.fish" + end +end diff --git a/chezmoi/dot_config/fish/functions/weather.fish b/chezmoi/dot_config/fish/functions/weather.fish new file mode 100644 index 00000000..2fdbd308 --- /dev/null +++ b/chezmoi/dot_config/fish/functions/weather.fish @@ -0,0 +1,8 @@ +function weather --description 'What is the weather?' -a location + if test -z "$location" + set location "almere" + end + set location (string escape --style=url "$location") + echo "http://wttr.in/$location" + curl "http://wttr.in/$location" +end diff --git a/chezmoi/dot_config/fish/themes/.keep b/chezmoi/dot_config/fish/themes/.keep new file mode 100644 index 00000000..e69de29b diff --git a/chezmoi/dot_config/kitty/kitty.conf b/chezmoi/dot_config/kitty/kitty.conf index 230058d7..ab95d5fc 100644 --- a/chezmoi/dot_config/kitty/kitty.conf +++ b/chezmoi/dot_config/kitty/kitty.conf @@ -2,6 +2,8 @@ include themes/tokyo-night-kitty.conf +shell $HOME/.local/share/mise/shims/fish + # Remap default to open current workspace map ctrl+shift+enter launch --cwd=current map ctrl+alt+enter new_window diff --git a/chezmoi/dot_config/mise/config.toml b/chezmoi/dot_config/mise/config.toml index 74a4b982..8ddead3b 100644 --- a/chezmoi/dot_config/mise/config.toml +++ b/chezmoi/dot_config/mise/config.toml @@ -1,26 +1,27 @@ [tools] aws-nuke = "latest" cosign = "2.4.1" -glab = "1.50.0" +fd = "10.2.0" +glab = "1.51.0" go = "1.23.4" -node = "22.12.0" +node = "23.4.0" python = "3.13.1" pre-commit = "latest" protoc = "latest" rust = "1.83.0" slsa-verifier = "2.6.0" terraform-docs = "latest" -usage = "latest" +usage = "1.7.2" tflint = "latest" -##################################### -# Python Packages - Managed by pipx # -##################################### +################################### +# Python Packages - Managed by uv # +################################### pipx = "latest" "pipx:ansible" = "latest" "pipx:ansible-lint" = "latest" "pipx:aws-gate" = "latest" -"pipx:gnome-extensions-cli" = "0.10.3" +"pipx:gnome-extensions-cli" = "0.10.4" "pipx:harlequin" = { version = "latest", extras = "postgres", uvx_args = "--python 3.12" } # Python 3.13 not yet supported: https://github.com/tconbeer/harlequin/issues/697 "pipx:pgcli" = "latest" "pipx:readmeai" = "latest" @@ -35,6 +36,7 @@ pipx = "latest" "cargo:bandwhich" = "latest" "cargo:crates-tui" = "latest" "cargo:gitnr" = "latest" +"cargo:fish-shell/fish-shell" = "rev:4.0b1" "cargo:hwatch" = "latest" "cargo:oha" = "latest" "cargo:onefetch" = "latest" @@ -52,8 +54,8 @@ pipx = "latest" "go:github.com/chip/pathos" = "latest" "go:github.com/umlx5h/gtrash" = "latest" "go:github.com/walles/moar" = "latest" -"go:google.golang.org/grpc/cmd/protoc-gen-go-grpc" = "v1.2" -"go:google.golang.org/protobuf/cmd/protoc-gen-go" = "v1.28" +"go:google.golang.org/grpc/cmd/protoc-gen-go-grpc" = "1.5" +"go:google.golang.org/protobuf/cmd/protoc-gen-go" = "1.36" ################ # NPM Packages # @@ -63,7 +65,9 @@ pipx = "latest" ################ # UBI Packages # ################ +"ubi:aws-cloudformation/rain" = "1.20.2" "ubi:darkhz/bluetuith" = "latest" +"ubi:eugene-babichenko/fixit" = "0.9.0" "ubi:gdubicki/ets" = "0.3.0" "ubi:joschi/dive" = "0.13.1"