Newest version of dotfiles with Ghostty, Fish, kickstart vim and zsh updates
This commit is contained in:
47
.config/fish/conf.d/aliases.fish
Normal file
47
.config/fish/conf.d/aliases.fish
Normal file
@@ -0,0 +1,47 @@
|
||||
# All your aliases
|
||||
alias ld="ls -lisaGh"
|
||||
alias g="goto"
|
||||
alias vim="nvim"
|
||||
alias code="open -a 'Visual Studio Code'"
|
||||
alias kubi="open -a 'Lens'"
|
||||
alias update-system="brew update && brew upgrade && npm update -g"
|
||||
alias do-st="docker compose"
|
||||
alias do-re="docker compose down && docker compose up -d"
|
||||
alias hetzi="ssh root@128.140.71.88"
|
||||
alias qaserv="TERM=xterm-256color ssh root@195.201.17.47"
|
||||
alias kc1="set -gx KUBECONFIG ~/.kube/config"
|
||||
alias kc2="set -gx KUBECONFIG ~/.kube/mobilistics"
|
||||
alias ram="vm_stat"
|
||||
|
||||
# DevOps Core Tools
|
||||
alias d="docker"
|
||||
alias dc="docker compose"
|
||||
alias dcu="docker compose up -d"
|
||||
alias dcd="docker compose down"
|
||||
alias dcl="docker compose logs -f"
|
||||
alias dce="docker compose exec"
|
||||
alias dps="docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'"
|
||||
|
||||
# Kubernetes power aliases
|
||||
alias k="kubectl"
|
||||
alias kx="kubectx" # Context switching
|
||||
alias kn="kubens" # Namespace switching
|
||||
alias kgp="kubectl get pods -o wide"
|
||||
alias kgs="kubectl get svc -o wide"
|
||||
alias kgd="kubectl get deploy -o wide"
|
||||
alias kl="kubectl logs -f"
|
||||
alias ke="kubectl exec -it"
|
||||
alias kdesc="kubectl describe"
|
||||
alias kpf="kubectl port-forward"
|
||||
|
||||
# Testing
|
||||
alias pw="npx playwright"
|
||||
alias pwt="npx playwright test"
|
||||
alias pwh="npx playwright test --headed"
|
||||
alias pwr="npx playwright show-report"
|
||||
|
||||
# Python/Go
|
||||
alias py="python3"
|
||||
alias pip="pip3"
|
||||
alias venv="python3 -m venv"
|
||||
alias activate="source venv/bin/activate"
|
||||
34
.config/fish/conf.d/dev-helpers.fish
Normal file
34
.config/fish/conf.d/dev-helpers.fish
Normal file
@@ -0,0 +1,34 @@
|
||||
# Quick project setup
|
||||
function mkproj
|
||||
mkdir -p $argv[1]
|
||||
cd $argv[1]
|
||||
git init
|
||||
touch README.md .gitignore
|
||||
echo "# $argv[1]" > README.md
|
||||
end
|
||||
|
||||
# Docker cleanup
|
||||
function docker-cleanup
|
||||
docker system prune -af
|
||||
docker volume prune -f
|
||||
end
|
||||
|
||||
# Kubernetes context info
|
||||
function kinfo
|
||||
echo "Context: "(kubectl config current-context)
|
||||
echo "Namespace: "(kubectl config view --minify -o jsonpath='{..namespace}')
|
||||
kubectl get nodes --no-headers | wc -l | xargs echo "Nodes:"
|
||||
end
|
||||
|
||||
# Quick YAML validation
|
||||
function yaml-check
|
||||
python3 -c "import yaml; yaml.safe_load(open('$argv[1]'))"
|
||||
end
|
||||
|
||||
# Environment file loader
|
||||
function loadenv
|
||||
if test -f .env
|
||||
export (cat .env | grep -v '^#' | xargs)
|
||||
echo "Loaded .env"
|
||||
end
|
||||
end
|
||||
340
.config/fish/conf.d/done.fish
Normal file
340
.config/fish/conf.d/done.fish
Normal file
@@ -0,0 +1,340 @@
|
||||
# MIT License
|
||||
|
||||
# Copyright (c) 2016 Francisco Lourenço & Daniel Wehner
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in all
|
||||
# copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
|
||||
if not status is-interactive
|
||||
exit
|
||||
end
|
||||
|
||||
set -g __done_version 1.20.0
|
||||
|
||||
function __done_run_powershell_script
|
||||
set -l powershell_exe (command --search "powershell.exe")
|
||||
|
||||
if test $status -ne 0
|
||||
and command --search wslvar
|
||||
|
||||
set -l powershell_exe (wslpath (wslvar windir)/System32/WindowsPowerShell/v1.0/powershell.exe)
|
||||
end
|
||||
|
||||
if string length --quiet "$powershell_exe"
|
||||
and test -x "$powershell_exe"
|
||||
|
||||
set cmd (string escape $argv)
|
||||
|
||||
eval "$powershell_exe -Command $cmd"
|
||||
end
|
||||
end
|
||||
|
||||
function __done_windows_notification -a title -a message
|
||||
if test "$__done_notify_sound" -eq 1
|
||||
set soundopt "<audio silent=\"false\" src=\"ms-winsoundevent:Notification.Default\" />"
|
||||
else
|
||||
set soundopt "<audio silent=\"true\" />"
|
||||
end
|
||||
|
||||
__done_run_powershell_script "
|
||||
[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | Out-Null
|
||||
[Windows.UI.Notifications.ToastNotification, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
|
||||
|
||||
\$toast_xml_source = @\"
|
||||
<toast>
|
||||
$soundopt
|
||||
<visual>
|
||||
<binding template=\"ToastText02\">
|
||||
<text id=\"1\">$title</text>
|
||||
<text id=\"2\">$message</text>
|
||||
</binding>
|
||||
</visual>
|
||||
</toast>
|
||||
\"@
|
||||
|
||||
\$toast_xml = New-Object Windows.Data.Xml.Dom.XmlDocument
|
||||
\$toast_xml.loadXml(\$toast_xml_source)
|
||||
|
||||
\$toast = New-Object Windows.UI.Notifications.ToastNotification \$toast_xml
|
||||
|
||||
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier(\"fish\").Show(\$toast)
|
||||
"
|
||||
end
|
||||
|
||||
function __done_get_focused_window_id
|
||||
if type -q lsappinfo
|
||||
lsappinfo info -only bundleID (lsappinfo front | string replace 'ASN:0x0-' '0x') | cut -d '"' -f4
|
||||
else if test -n "$SWAYSOCK"
|
||||
and type -q jq
|
||||
swaymsg --type get_tree | jq '.. | objects | select(.focused == true) | .id'
|
||||
else if test -n "$HYPRLAND_INSTANCE_SIGNATURE"
|
||||
hyprctl activewindow | awk 'NR==1 {print $2}'
|
||||
else if test -n "$NIRI_SOCKET"
|
||||
and type -q jq
|
||||
niri msg --json focused-window | jq ".id"
|
||||
else if begin
|
||||
test "$XDG_SESSION_DESKTOP" = gnome; and type -q gdbus
|
||||
end
|
||||
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'global.display.focus_window.get_id()'
|
||||
else if type -q xprop
|
||||
and test -n "$DISPLAY"
|
||||
# Test that the X server at $DISPLAY is running
|
||||
and xprop -grammar >/dev/null 2>&1
|
||||
xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2
|
||||
else if uname -a | string match --quiet --ignore-case --regex microsoft
|
||||
__done_run_powershell_script '
|
||||
Add-Type @"
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
public class WindowsCompat {
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr GetForegroundWindow();
|
||||
}
|
||||
"@
|
||||
[WindowsCompat]::GetForegroundWindow()
|
||||
'
|
||||
else if set -q __done_allow_nongraphical
|
||||
echo 12345 # dummy value
|
||||
end
|
||||
end
|
||||
|
||||
function __done_is_tmux_window_active
|
||||
set -q fish_pid; or set -l fish_pid %self
|
||||
|
||||
# find the outermost process within tmux
|
||||
# ppid != "tmux" -> pid = ppid
|
||||
# ppid == "tmux" -> break
|
||||
set tmux_fish_pid $fish_pid
|
||||
while set tmux_fish_ppid (ps -o ppid= -p $tmux_fish_pid | string trim)
|
||||
# remove leading hyphen so that basename does not treat it as an argument (e.g. -fish), and return only
|
||||
# the actual command and not its arguments so that basename finds the correct command name.
|
||||
# (e.g. '/usr/bin/tmux' from command '/usr/bin/tmux new-session -c /some/start/dir')
|
||||
and ! string match -q "tmux*" (basename (ps -o command= -p $tmux_fish_ppid | string replace -r '^-' '' | string split ' ')[1])
|
||||
set tmux_fish_pid $tmux_fish_ppid
|
||||
end
|
||||
|
||||
# tmux session attached and window is active -> no notification
|
||||
# all other combinations -> send notification
|
||||
tmux list-panes -a -F "#{session_attached} #{window_active} #{pane_pid}" | string match -q "1 1 $tmux_fish_pid"
|
||||
end
|
||||
|
||||
function __done_is_screen_window_active
|
||||
string match --quiet --regex "$STY\s+\(Attached" (screen -ls)
|
||||
end
|
||||
|
||||
function __done_is_process_window_focused
|
||||
# Return false if the window is not focused
|
||||
|
||||
if set -q __done_allow_nongraphical
|
||||
return 1
|
||||
end
|
||||
|
||||
if set -q __done_kitty_remote_control
|
||||
kitty @ --password="$__done_kitty_remote_control_password" ls | jq -e ".[].tabs[] | select(any(.windows[]; .is_self)) | .is_focused" >/dev/null
|
||||
return $status
|
||||
end
|
||||
|
||||
set __done_focused_window_id (__done_get_focused_window_id)
|
||||
if test "$__done_sway_ignore_visible" -eq 1
|
||||
and test -n "$SWAYSOCK"
|
||||
string match --quiet --regex "^true" (swaymsg -t get_tree | jq ".. | objects | select(.id == "$__done_initial_window_id") | .visible")
|
||||
return $status
|
||||
else if test -n "$HYPRLAND_INSTANCE_SIGNATURE"
|
||||
and test $__done_initial_window_id = (hyprctl activewindow | awk 'NR==1 {print $2}')
|
||||
return $status
|
||||
else if test -n "$NIRI_SOCKET"
|
||||
and test $__done_initial_window_id = (niri msg --json focused-window | jq ".id")
|
||||
return $status
|
||||
else if test "$__done_initial_window_id" != "$__done_focused_window_id"
|
||||
return 1
|
||||
end
|
||||
# If inside a tmux session, check if the tmux window is focused
|
||||
if type -q tmux
|
||||
and test -n "$TMUX"
|
||||
__done_is_tmux_window_active
|
||||
return $status
|
||||
end
|
||||
|
||||
# If inside a screen session, check if the screen window is focused
|
||||
if type -q screen
|
||||
and test -n "$STY"
|
||||
__done_is_screen_window_active
|
||||
return $status
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
function __done_humanize_duration -a milliseconds
|
||||
set -l seconds (math --scale=0 "$milliseconds/1000" % 60)
|
||||
set -l minutes (math --scale=0 "$milliseconds/60000" % 60)
|
||||
set -l hours (math --scale=0 "$milliseconds/3600000")
|
||||
|
||||
if test $hours -gt 0
|
||||
printf '%s' $hours'h '
|
||||
end
|
||||
if test $minutes -gt 0
|
||||
printf '%s' $minutes'm '
|
||||
end
|
||||
if test $seconds -gt 0
|
||||
printf '%s' $seconds's'
|
||||
end
|
||||
end
|
||||
|
||||
# verify that the system has graphical capabilities before initializing
|
||||
if test -z "$SSH_CLIENT" # not over ssh
|
||||
and count (__done_get_focused_window_id) >/dev/null # is able to get window id
|
||||
set __done_enabled
|
||||
end
|
||||
|
||||
if set -q __done_allow_nongraphical
|
||||
and set -q __done_notification_command
|
||||
set __done_enabled
|
||||
end
|
||||
|
||||
if set -q __done_enabled
|
||||
set -g __done_initial_window_id ''
|
||||
set -q __done_min_cmd_duration; or set -g __done_min_cmd_duration 5000
|
||||
set -q __done_exclude; or set -g __done_exclude '^git (?!push|pull|fetch)'
|
||||
set -q __done_notify_sound; or set -g __done_notify_sound 0
|
||||
set -q __done_sway_ignore_visible; or set -g __done_sway_ignore_visible 0
|
||||
set -q __done_tmux_pane_format; or set -g __done_tmux_pane_format '[#{window_index}]'
|
||||
set -q __done_notification_duration; or set -g __done_notification_duration 3000
|
||||
|
||||
function __done_started --on-event fish_preexec
|
||||
set __done_initial_window_id (__done_get_focused_window_id)
|
||||
end
|
||||
|
||||
function __done_ended --on-event fish_postexec
|
||||
set -l exit_status $status
|
||||
|
||||
# backwards compatibility for fish < v3.0
|
||||
set -q cmd_duration; or set -l cmd_duration $CMD_DURATION
|
||||
|
||||
if test $cmd_duration
|
||||
and test $cmd_duration -gt $__done_min_cmd_duration # longer than notify_duration
|
||||
and not __done_is_process_window_focused # process pane or window not focused
|
||||
|
||||
# don't notify if command matches exclude list
|
||||
for pattern in $__done_exclude
|
||||
if string match -qr $pattern $argv[1]
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
# Store duration of last command
|
||||
set -l humanized_duration (__done_humanize_duration "$cmd_duration")
|
||||
|
||||
set -l title "Done in $humanized_duration"
|
||||
set -l wd (string replace --regex "^$HOME" "~" (pwd))
|
||||
set -l message "$wd/ $argv[1]"
|
||||
set -l sender $__done_initial_window_id
|
||||
|
||||
if test $exit_status -ne 0
|
||||
set title "Failed ($exit_status) after $humanized_duration"
|
||||
end
|
||||
|
||||
if test -n "$TMUX_PANE"
|
||||
set message (tmux lsw -F"$__done_tmux_pane_format" -f '#{==:#{pane_id},'$TMUX_PANE'}')" $message"
|
||||
end
|
||||
|
||||
if set -q __done_notification_command
|
||||
eval $__done_notification_command
|
||||
if test "$__done_notify_sound" -eq 1
|
||||
echo -e "\a" # bell sound
|
||||
end
|
||||
else if set -q KITTY_WINDOW_ID
|
||||
printf "\x1b]99;i=done:d=0;$title\x1b\\"
|
||||
printf "\x1b]99;i=done:d=1:p=body;$message\x1b\\"
|
||||
else if type -q terminal-notifier # https://github.com/julienXX/terminal-notifier
|
||||
if test "$__done_notify_sound" -eq 1
|
||||
# pipe message into terminal-notifier to avoid escaping issues (https://github.com/julienXX/terminal-notifier/issues/134). fixes #140
|
||||
echo "$message" | terminal-notifier -title "$title" -sender "$__done_initial_window_id" -sound default
|
||||
else
|
||||
echo "$message" | terminal-notifier -title "$title" -sender "$__done_initial_window_id"
|
||||
end
|
||||
|
||||
else if type -q osascript # AppleScript
|
||||
# escape double quotes that might exist in the message and break osascript. fixes #133
|
||||
set -l message (string replace --all '"' '\"' "$message")
|
||||
set -l title (string replace --all '"' '\"' "$title")
|
||||
|
||||
if test "$__done_notify_sound" -eq 1
|
||||
osascript -e "display notification \"$message\" with title \"$title\" sound name \"Glass\""
|
||||
else
|
||||
osascript -e "display notification \"$message\" with title \"$title\""
|
||||
end
|
||||
|
||||
else if type -q notify-send # Linux notify-send
|
||||
# set urgency to normal
|
||||
set -l urgency normal
|
||||
|
||||
# use user-defined urgency if set
|
||||
if set -q __done_notification_urgency_level
|
||||
set urgency "$__done_notification_urgency_level"
|
||||
end
|
||||
# override user-defined urgency level if non-zero exitstatus
|
||||
if test $exit_status -ne 0
|
||||
set urgency critical
|
||||
if set -q __done_notification_urgency_level_failure
|
||||
set urgency "$__done_notification_urgency_level_failure"
|
||||
end
|
||||
end
|
||||
|
||||
notify-send --hint=int:transient:1 --urgency=$urgency --icon=utilities-terminal --app-name=fish --expire-time=$__done_notification_duration "$title" "$message"
|
||||
|
||||
if test "$__done_notify_sound" -eq 1
|
||||
echo -e "\a" # bell sound
|
||||
end
|
||||
|
||||
else if type -q notify-desktop # Linux notify-desktop
|
||||
set -l urgency
|
||||
if test $exit_status -ne 0
|
||||
set urgency "--urgency=critical"
|
||||
end
|
||||
notify-desktop $urgency --icon=utilities-terminal --app-name=fish "$title" "$message"
|
||||
if test "$__done_notify_sound" -eq 1
|
||||
echo -e "\a" # bell sound
|
||||
end
|
||||
|
||||
else if uname -a | string match --quiet --ignore-case --regex microsoft
|
||||
__done_windows_notification "$title" "$message"
|
||||
|
||||
else # anything else
|
||||
echo -e "\a" # bell sound
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function __done_uninstall -e done_uninstall
|
||||
# Erase all __done_* functions
|
||||
functions -e __done_ended
|
||||
functions -e __done_started
|
||||
functions -e __done_get_focused_window_id
|
||||
functions -e __done_is_tmux_window_active
|
||||
functions -e __done_is_screen_window_active
|
||||
functions -e __done_is_process_window_focused
|
||||
functions -e __done_windows_notification
|
||||
functions -e __done_run_powershell_script
|
||||
functions -e __done_humanize_duration
|
||||
|
||||
# Erase __done variables
|
||||
set -e __done_version
|
||||
end
|
||||
28
.config/fish/conf.d/fzf.fish
Normal file
28
.config/fish/conf.d/fzf.fish
Normal file
@@ -0,0 +1,28 @@
|
||||
# fzf.fish is only meant to be used in interactive mode. If not in interactive mode and not in CI, skip the config to speed up shell startup
|
||||
if not status is-interactive && test "$CI" != true
|
||||
exit
|
||||
end
|
||||
|
||||
# Because of scoping rules, to capture the shell variables exactly as they are, we must read
|
||||
# them before even executing _fzf_search_variables. We use psub to store the
|
||||
# variables' info in temporary files and pass in the filenames as arguments.
|
||||
# This variable is global so that it can be referenced by fzf_configure_bindings and in tests
|
||||
set --global _fzf_search_vars_command '_fzf_search_variables (set --show | psub) (set --names | psub)'
|
||||
|
||||
|
||||
# Install the default bindings, which are mnemonic and minimally conflict with fish's preset bindings
|
||||
fzf_configure_bindings
|
||||
|
||||
# Doesn't erase autoloaded _fzf_* functions because they are not easily accessible once key bindings are erased
|
||||
function _fzf_uninstall --on-event fzf_uninstall
|
||||
_fzf_uninstall_bindings
|
||||
|
||||
set --erase _fzf_search_vars_command
|
||||
functions --erase _fzf_uninstall _fzf_migration_message _fzf_uninstall_bindings fzf_configure_bindings
|
||||
complete --erase fzf_configure_bindings
|
||||
|
||||
set_color cyan
|
||||
echo "fzf.fish uninstalled."
|
||||
echo "You may need to manually remove fzf_configure_bindings from your config.fish if you were using custom key bindings."
|
||||
set_color normal
|
||||
end
|
||||
42
.config/fish/conf.d/kubernetes.fish
Normal file
42
.config/fish/conf.d/kubernetes.fish
Normal file
@@ -0,0 +1,42 @@
|
||||
# Kubernetes setup
|
||||
set -gx KUBECONFIG ~/.kube/config
|
||||
|
||||
# Kubernetes aliases
|
||||
alias k="kubectl"
|
||||
alias kgp="kubectl get pods"
|
||||
alias kgn="kubectl get nodes"
|
||||
alias kgs="kubectl get services"
|
||||
alias kgc="kubectl config get-contexts"
|
||||
alias kuc="kubectl config use-context"
|
||||
alias kns="kubectl config set-context --current --namespace"
|
||||
|
||||
# Kubernetes context function
|
||||
function update_kubernetes_context
|
||||
if command -q kubectl
|
||||
set -l kube_ctx (kubectl config current-context 2>/dev/null)
|
||||
if test $status -eq 0
|
||||
set -l kube_ns (kubectl config view --minify --output 'jsonpath={..namespace}' 2>/dev/null)
|
||||
set -gx STARSHIP_KUBERNETES_CONTEXT $kube_ctx
|
||||
if test -n "$kube_ns"
|
||||
set -gx STARSHIP_KUBERNETES_NAMESPACE $kube_ns
|
||||
end
|
||||
else
|
||||
set -e STARSHIP_KUBERNETES_CONTEXT
|
||||
set -e STARSHIP_KUBERNETES_NAMESPACE
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Wrapper for kubectl
|
||||
function kubectl
|
||||
command kubectl $argv
|
||||
set -l exit_code $status
|
||||
|
||||
if test $exit_code -eq 0; and test "$argv[1]" = "config"; and contains "$argv[2]" "use-context" "set-context"
|
||||
update_kubernetes_context
|
||||
end
|
||||
return $exit_code
|
||||
end
|
||||
|
||||
# Update context on startup
|
||||
update_kubernetes_context
|
||||
34
.config/fish/conf.d/nvim.fish
Normal file
34
.config/fish/conf.d/nvim.fish
Normal file
@@ -0,0 +1,34 @@
|
||||
# Enhanced nvim with project detection
|
||||
function v
|
||||
if test (count $argv) -eq 0
|
||||
# Open nvim in project root or current dir
|
||||
if test -f package.json; or test -f go.mod; or test -f requirements.txt; or test -f Dockerfile; or test -f docker-compose.yml
|
||||
nvim .
|
||||
else
|
||||
nvim
|
||||
end
|
||||
else
|
||||
nvim $argv
|
||||
end
|
||||
end
|
||||
|
||||
# Quick config edit
|
||||
function vconfig
|
||||
nvim ~/.config/nvim/
|
||||
end
|
||||
|
||||
# Edit dockerfile
|
||||
function vdocker
|
||||
if test -f Dockerfile
|
||||
nvim Dockerfile
|
||||
else if test -f docker-compose.yml
|
||||
nvim docker-compose.yml
|
||||
else
|
||||
echo "No Docker files found"
|
||||
end
|
||||
end
|
||||
|
||||
# Edit kubernetes manifests
|
||||
function vk8s
|
||||
find . -name "*.yaml" -o -name "*.yml" | grep -E "(k8s|kubernetes|deploy)" | head -5 | xargs nvim
|
||||
end
|
||||
28
.config/fish/conf.d/nvm.fish
Normal file
28
.config/fish/conf.d/nvm.fish
Normal file
@@ -0,0 +1,28 @@
|
||||
set --query XDG_DATA_HOME || set --local XDG_DATA_HOME ~/.local/share
|
||||
set --query nvm_mirror || set --global nvm_mirror https://nodejs.org/dist
|
||||
set --query nvm_data || set --global nvm_data $XDG_DATA_HOME/nvm
|
||||
|
||||
function _nvm_install --on-event nvm_install
|
||||
test ! -d $nvm_data && command mkdir -p $nvm_data
|
||||
echo "Downloading the Node distribution index..." 2>/dev/null
|
||||
_nvm_index_update
|
||||
end
|
||||
|
||||
function _nvm_update --on-event nvm_update
|
||||
set --query --universal nvm_data && set --erase --universal nvm_data
|
||||
set --query --universal nvm_mirror && set --erase --universal nvm_mirror
|
||||
set --query nvm_mirror || set --global nvm_mirror https://nodejs.org/dist
|
||||
end
|
||||
|
||||
function _nvm_uninstall --on-event nvm_uninstall
|
||||
command rm -rf $nvm_data
|
||||
|
||||
set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version
|
||||
|
||||
set --names | string replace --filter --regex -- "^nvm" "set --erase nvm" | source
|
||||
functions --erase (functions --all | string match --entire --regex -- "^_nvm_")
|
||||
end
|
||||
|
||||
if status is-interactive && set --query nvm_default_version && ! set --query nvm_current_version
|
||||
nvm use --silent $nvm_default_version
|
||||
end
|
||||
10
.config/fish/conf.d/paths.fish
Normal file
10
.config/fish/conf.d/paths.fish
Normal file
@@ -0,0 +1,10 @@
|
||||
# Development paths
|
||||
fish_add_path /opt/homebrew/bin
|
||||
fish_add_path ~/.cargo/bin
|
||||
fish_add_path ~/.local/bin
|
||||
fish_add_path /usr/local/go/bin
|
||||
fish_add_path $GOPATH/bin
|
||||
|
||||
# Go environment
|
||||
set -gx GOPATH ~/go
|
||||
set -gx GO111MODULE on
|
||||
10
.config/fish/conf.d/ssh-gpg.fish
Normal file
10
.config/fish/conf.d/ssh-gpg.fish
Normal file
@@ -0,0 +1,10 @@
|
||||
# SSH/GPG setup
|
||||
set -gx GPG_TTY (tty)
|
||||
set -gx SSH_AUTH_SOCK ~/.gnupg/S.gpg-agent.ssh
|
||||
|
||||
# Launch GPG agent
|
||||
gpgconf --launch gpg-agent
|
||||
|
||||
if test "$gnupg_SSH_AUTH_SOCK_by" != "$fish_pid"
|
||||
set -gx SSH_AUTH_SOCK (gpgconf --list-dirs agent-ssh-socket)
|
||||
end
|
||||
7
.config/fish/conf.d/testing.fish
Normal file
7
.config/fish/conf.d/testing.fish
Normal file
@@ -0,0 +1,7 @@
|
||||
# Testing environment variables
|
||||
set -gx PLAYWRIGHT_BROWSERS_PATH ~/.cache/ms-playwright
|
||||
set -gx PYTEST_CURRENT_TEST ""
|
||||
|
||||
# Test result formatting
|
||||
alias pytest="python -m pytest -v --tb=short"
|
||||
alias test-docker="docker run --rm -v (pwd):/app -w /app"
|
||||
14
.config/fish/conf.d/tools.fish
Normal file
14
.config/fish/conf.d/tools.fish
Normal file
@@ -0,0 +1,14 @@
|
||||
# Starship
|
||||
if command -q starship
|
||||
starship init fish | source
|
||||
end
|
||||
|
||||
# Zoxide
|
||||
if command -q zoxide
|
||||
zoxide init --cmd cd fish | source
|
||||
end
|
||||
|
||||
# GPG
|
||||
set -gx GPG_TTY (tty)
|
||||
set -gx SSH_AUTH_SOCK ~/.gnupg/S.gpg-agent.ssh
|
||||
gpgconf --launch gpg-agent
|
||||
Reference in New Issue
Block a user