summaryrefslogtreecommitdiff
path: root/gemfeed/examples/conf/dotfiles
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-10-02 11:28:55 +0300
committerPaul Buetow <paul@buetow.org>2025-10-02 11:28:55 +0300
commit2b034797107660d4d83f8a7acdc55d32db785b82 (patch)
tree522fb586193c8a65ca6aee42df64eecc3555f644 /gemfeed/examples/conf/dotfiles
parent4d7d90638186ac71067232007607f6637d560a4d (diff)
Update content for md
Diffstat (limited to 'gemfeed/examples/conf/dotfiles')
-rw-r--r--gemfeed/examples/conf/dotfiles/Rexfile225
-rw-r--r--gemfeed/examples/conf/dotfiles/bash/bash_profile3
-rw-r--r--gemfeed/examples/conf/dotfiles/bash/bashrc15
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/ai.fish39
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/alternatives.fish17
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/config.fish31
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/dotfiles.fish48
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/editor.fish44
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/fuzzy.fish5
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/games.fish15
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/gos.fish6
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/k8s.fish76
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/quickedit.fish93
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/supersync.fish114
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/taskwarrior.fish121
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/timr.fish25
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/tmputils.fish54
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/tmux.fish94
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/update.fish75
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/utils.fish142
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/worktime.fish122
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/zoxide.fish6
-rw-r--r--gemfeed/examples/conf/dotfiles/fish/conf.d/zsh.fish12
-rw-r--r--gemfeed/examples/conf/dotfiles/ghostty/config17
-rw-r--r--gemfeed/examples/conf/dotfiles/gitsyncer/config.json33
-rw-r--r--gemfeed/examples/conf/dotfiles/helix/config.toml87
-rw-r--r--gemfeed/examples/conf/dotfiles/helix/languages.toml203
-rw-r--r--gemfeed/examples/conf/dotfiles/nvim/init.lua70
-rw-r--r--gemfeed/examples/conf/dotfiles/pipewire/pipewire.conf257
-rwxr-xr-xgemfeed/examples/conf/dotfiles/scripts/ai7
-rw-r--r--gemfeed/examples/conf/dotfiles/scripts/brokenlinkfinder73
-rwxr-xr-xgemfeed/examples/conf/dotfiles/scripts/gvim7
-rwxr-xr-xgemfeed/examples/conf/dotfiles/scripts/hx.aichat-prompt9
-rwxr-xr-xgemfeed/examples/conf/dotfiles/scripts/hx.chatgpt-prompt3
-rwxr-xr-xgemfeed/examples/conf/dotfiles/scripts/hx.goformatter3
-rwxr-xr-xgemfeed/examples/conf/dotfiles/scripts/hx.hexai-prompt9
-rwxr-xr-xgemfeed/examples/conf/dotfiles/scripts/hx.nvim-copilot-prompt32
-rwxr-xr-xgemfeed/examples/conf/dotfiles/scripts/hx.prompt14
-rw-r--r--gemfeed/examples/conf/dotfiles/scripts/randomnote.rb30
-rw-r--r--gemfeed/examples/conf/dotfiles/scripts/taskwarriorfeeder.rb221
-rw-r--r--gemfeed/examples/conf/dotfiles/signature2
-rw-r--r--gemfeed/examples/conf/dotfiles/ssh/config21
-rw-r--r--gemfeed/examples/conf/dotfiles/sway/config.d/keyboard.conf6
-rw-r--r--gemfeed/examples/conf/dotfiles/tmux/tmux.conf32
-rw-r--r--gemfeed/examples/conf/dotfiles/tmux/tmux.local.conf2
-rw-r--r--gemfeed/examples/conf/dotfiles/vale.ini6
-rw-r--r--gemfeed/examples/conf/dotfiles/waybar/config.jsonc194
-rw-r--r--gemfeed/examples/conf/dotfiles/waybar/style.css326
48 files changed, 3046 insertions, 0 deletions
diff --git a/gemfeed/examples/conf/dotfiles/Rexfile b/gemfeed/examples/conf/dotfiles/Rexfile
new file mode 100644
index 00000000..e0e002e5
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/Rexfile
@@ -0,0 +1,225 @@
+use Rex -feature => [ '1.14', 'exec_autodie' ];
+use Rex::Logger;
+
+our $HOME = $ENV{HOME};
+
+# In a public Git rapository.
+our $DOT = "$HOME/git/conf/dotfiles";
+
+# In a private Git repository.
+our $DOT_PRIVATE = "$HOME/git/conf_private/dotfiles";
+
+sub ensure_dir {
+ my ( $src_glob, $dst_dir, $file_mode ) = @_;
+ Rex::Logger::info("Ensure dir glob $src_glob");
+
+ file $dst_dir,
+ ensure => 'directory',
+ mode => '0700';
+
+ file "$dst_dir/" . basename($_),
+ ensure => 'present',
+ source => $_,
+ mode => $file_mode // '0640'
+ for glob $src_glob;
+}
+
+sub ensure_file {
+ my ( $src_file, $dst_file, $file_mode ) = @_;
+
+ file $dst_file,
+ ensure => 'present',
+ source => $src_file,
+ mode => $file_mode // '0640';
+}
+
+sub ensure {
+ my ( $src, $dst, $mode ) = @_;
+ ( $dst =~ /\/$/ ? \&ensure_dir : \&ensure_file )->( $src, $dst, $mode );
+}
+
+desc 'Install packages on Termux';
+task 'pkg_termux', sub {
+ my @pkgs = qw/
+ ack-grep
+ ctags
+ fzf
+ golang
+ htop
+ make
+ nodejs
+ ripgrep
+ rsync
+ ruby
+ starship
+ tig
+ /;
+
+ for my $pkg (@pkgs) {
+ Rex::Logger::info("Installing package $pkg");
+ pkg $pkg, ensure => 'installed';
+ }
+};
+
+desc 'Install packages on FreeBSD';
+task 'pkg_freebsd', sub {
+ my @pkgs = qw/
+ bat
+ ctags
+ fzf
+ gmake
+ go
+ gron
+ htop
+ lynx
+ node
+ p5-ack
+ ripgrep
+ starship
+ tig
+ tmux
+ /;
+
+ for my $pkg (@pkgs) {
+ Rex::Logger::info("Installing package $pkg");
+ pkg $pkg, ensure => 'installed';
+ }
+};
+
+desc 'Install packages on Fedora Linux';
+task 'pkg_fedora', sub {
+ my @pkgs = qw/
+ opendoas
+ fd-find
+ nodejs-bash-language-server
+ fortune-mod
+ syncthing
+ ncdu
+ ack
+ fish
+ bat
+ ctags
+ fzf
+ golang
+ golang-x-tools-gopls
+ gpaste
+ gron
+ htop
+ java-latest-openjdk-devel
+ lynx
+ make
+ nodejs
+ perl-File-Slurp
+ procs
+ rakudo
+ Rex
+ ripgrep
+ ruby
+ strace
+ task2
+ tig
+ tmux
+ dialect
+ chromium
+ strawberry
+ gnumeric
+ sway-config-fedora
+ sway
+ waybar
+ zathura
+ /;
+
+ for my $pkg (@pkgs) {
+ Rex::Logger::info("Installing package $pkg");
+ pkg $pkg, ensure => 'installed';
+ }
+};
+
+desc 'Install ~/.config/helix';
+task 'home_helix', sub { ensure "$DOT/helix/*" => "$HOME/.config/helix/" };
+
+desc 'Install ~/.config/ghostty';
+task 'home_ghostty', sub { ensure "$DOT/ghostty/*" => "$HOME/.config/ghostty/" };
+
+desc 'Install ~/scripts';
+task 'home_scripts', sub { ensure "$DOT/scripts/*" => "$HOME/scripts/", '0750' };
+
+desc 'Install ~/.ssh files';
+task 'home_ssh', sub { ensure "$DOT/ssh/config" => "$HOME/.ssh/config", '0600' };
+
+desc 'Install BASH configuration';
+task 'home_bash', sub {
+ ensure "$DOT/bash/bash_profile" => "$HOME/.bash_profile";
+ ensure "$DOT/bash/bashrc" => "$HOME/.bashrc";
+};
+
+desc 'Install fish configuration';
+task 'home_fish', sub {
+
+ # ensure "$DOT/fish/conf.d/*" => "$HOME/.config/fish/conf.d/";
+ my $dest_dir = "$HOME/.config/fish/conf.d";
+ if ( !-l $dest_dir ) {
+ if ( -d $dest_dir ) {
+ rename $dest_dir, "$dest_dir.old" or die "Could not rename $dest_dir: $!";
+ }
+ symlink "$DOT/fish/conf.d" => $dest_dir or die "Could not create symlink: $!";
+ }
+};
+
+desc 'Install gitsyncer configuration';
+task 'home_gitsyncer', sub {
+ my $dest_dir = "$HOME/.config/gitsyncer";
+ symlink "$DOT/gitsyncer/" => $dest_dir or die "Could not create symlink: $!";
+};
+
+sub isFileSymlink() {
+ my $file = shift;
+ return -l $file && -e $file;
+}
+
+desc 'Vale and proselint';
+task 'home_vale', sub {
+ ensure "$DOT/vale.ini" => "$HOME/.vale.ini";
+ say 'Now you can run "vale sync"';
+};
+
+desc 'Install tmux configuration';
+task 'home_tmux', sub {
+ ensure "$DOT/tmux/*" => "$HOME/.config/tmux/";
+};
+
+desc 'Install Sway configuration';
+task 'home_sway', sub {
+ ensure "$DOT/sway/config.d/*" => "$HOME/.config/sway/config.d/";
+ ensure "$DOT/waybar/*" => "$HOME/.config/waybar/";
+};
+
+desc 'Install my signature';
+task 'home_signature', sub {
+ ensure "$DOT/signature" => "$HOME/.signature";
+};
+
+desc 'Install my calendar files';
+task 'home_calendar', sub {
+ unless ( -d $DOT_PRIVATE ) {
+ Rex::Logger::info( "$DOT_PRIVATE not there, skipping task", 'warn' );
+ }
+ else {
+ ensure "$DOT_PRIVATE/calendar/*" => "$HOME/.calendar/";
+ }
+};
+
+desc 'Install my Pipewire tuned for High-Res config';
+task 'home_pipewire', sub {
+ file "$HOME/.config/pipewire" => ensure => 'directory',
+ mode => '0750';
+ ensure
+ "$DOT/pipewire/pipewire.conf" => "$HOME/.config/pipewire/pipewire.conf",
+ '0600';
+};
+
+desc 'Install all my ~ files';
+task 'home', sub {
+ require Rex::TaskList;
+ run_task $_ for Rex::TaskList->create()->get_all_tasks('^home_');
+};
diff --git a/gemfeed/examples/conf/dotfiles/bash/bash_profile b/gemfeed/examples/conf/dotfiles/bash/bash_profile
new file mode 100644
index 00000000..004a7b32
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/bash/bash_profile
@@ -0,0 +1,3 @@
+if [ -f $HOME/.bashrc ]; then
+ source $HOME/.bashrc
+fi
diff --git a/gemfeed/examples/conf/dotfiles/bash/bashrc b/gemfeed/examples/conf/dotfiles/bash/bashrc
new file mode 100644
index 00000000..ec2b10c3
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/bash/bashrc
@@ -0,0 +1,15 @@
+# If shell is interactive
+if [[ ! -z "$PS1" && ! -f $HOME/.nofish ]]; then
+ # Use fish if it's installed
+ if [ -e /opt/local/bin/fish ]; then
+ exec /opt/local/bin/fish
+ elif [ -e /bin/fish ]; then
+ exec /bin/fish
+ elif [ -e /usr/bin/fish ]; then
+ exec /usr/bin/fish
+ elif [ -e /data/data/com.termux/files/usr/bin/fish ]; then
+ exec /data/data/com.termux/files/usr/bin/fish
+ fi
+
+ echo 'I might want to install fish on this host'
+fi
diff --git a/gemfeed/examples/conf/dotfiles/fish/conf.d/ai.fish b/gemfeed/examples/conf/dotfiles/fish/conf.d/ai.fish
new file mode 100644
index 00000000..23ce2b20
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/fish/conf.d/ai.fish
@@ -0,0 +1,39 @@
+abbr -a gpt chatgpt
+abbr -a gpti "chatgpt --interactive"
+abbr -a suggest hexai
+abbr -a explain 'hexai explain'
+abbr -a aic 'aichat -e'
+
+# helix-gpt env vars used
+# set -gx COPILOT_MODEL gpt-4.1 # can be changed with aimodels function
+set -gx COPILOT_MODEL gpt-4o # can be changed with aimodels function
+set -gx HANDLER copilot
+
+# TODO: also reconfigure aichat tool using this function
+function aimodels
+ # nvim for the ai tool wrapper so i can use Copilot Chat from the command line.
+ set -l NVIM_DIR "$HOME/.config/nvim/"
+ set -l COPILOT_CHAT_DIR "$NVIM_DIR/pack/copilotchat/start/CopilotChat.nvim/lua/CopilotChat"
+
+ printf "gpt-4o
+gpt-5
+gpt-o3
+gpt-4.1
+claude-3.7-sonnet
+claude-3.7-sonnet-thought
+claude-4.0-sonnet
+gemini-2.5-pro" >~/.aimodels
+
+ set -gx COPILOT_MODEL (cat ~/.aimodels | fzf)
+ set -gx OPENAI_MODEL $COPILOT_MODEL
+
+ if test -d $COPILOT_CHAT_DIR
+ set -l model_config "$COPILOT_CHAT_DIR/config-$COPILOT_MODEL.lua"
+ if test -f "$model_config"
+ echo "Using CopilotChat config from $model_config"
+ cp -v $model_config "$COPILOT_CHAT_DIR/config.lua"
+ else
+ echo "No config found at $model_config"
+ end
+ end
+end
diff --git a/gemfeed/examples/conf/dotfiles/fish/conf.d/alternatives.fish b/gemfeed/examples/conf/dotfiles/fish/conf.d/alternatives.fish
new file mode 100644
index 00000000..491cf1fe
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/fish/conf.d/alternatives.fish
@@ -0,0 +1,17 @@
+if type -q bat
+ alias Cat=/usr/bin/cat
+ alias cat=bat
+end
+if type -q see
+ alias ca=see
+end
+if type -q bit
+ alias Git=/usr/bin/git
+ alias git=bit
+end
+if type -q procs
+ alias p='procs'
+end
+if type -q carl
+ alias cal='carl'
+end
diff --git a/gemfeed/examples/conf/dotfiles/fish/conf.d/config.fish b/gemfeed/examples/conf/dotfiles/fish/conf.d/config.fish
new file mode 100644
index 00000000..670ca861
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/fish/conf.d/config.fish
@@ -0,0 +1,31 @@
+fish_vi_key_bindings
+
+# Add paths to PATH
+set -U fish_user_paths ~/bin ~/scripts ~/go/bin ~/.cargo/bin $fish_user_paths
+
+if command -q -v doas >/dev/null
+ abbr -a s doas
+else
+ abbr -a s sudo
+end
+
+abbr -a g 'grep -E -i'
+abbr -a no 'grep -E -i -v'
+abbr -a not 'grep -E -i -v'
+abbr -a gl 'git log --pretty=oneline --graph --decorate --all'
+abbr -a gp 'begin; git commit -a; and git pull; and git push; end'
+
+for dir in ~/.config/fish/conf.d.work ~/.config/fish/conf.d.local
+ if test -d $dir
+ for file in $dir/*.fish
+ source $file
+ end
+ end
+end
+
+if test -d /home/linuxbrew/.linuxbrew
+ if status is-interactive
+ # Commands to run in interactive sessions can go here
+ end
+ eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
+end
diff --git a/gemfeed/examples/conf/dotfiles/fish/conf.d/dotfiles.fish b/gemfeed/examples/conf/dotfiles/fish/conf.d/dotfiles.fish
new file mode 100644
index 00000000..6304d321
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/fish/conf.d/dotfiles.fish
@@ -0,0 +1,48 @@
+set -gx DOTFILES_DIR ~/git/rexfiles/dotfiles
+
+function dotfiles::update
+ set -l prev_pwd (pwd)
+ cd $DOTFILES_DIR
+ rex home
+ cd "$prev_pwd"
+end
+
+function dotfiles::update::git
+ set -l prev_pwd (pwd)
+ cd $DOTFILES_DIR
+ git pull
+ git commit -a
+ git push
+ rex home
+ cd "$prev_pwd"
+end
+
+function dotfiles::fuzzy::edit
+ set -l prev_pwd (pwd)
+ cd $DOTFILES_DIR
+ set -l dotfile (find . -type f -not -path '*/.git/*' | fzf)
+ $EDITOR "$dotfile"
+ if echo "$dotfile" | grep -F -q .fish
+ echo "Sourcing $dotfile"
+ source "$dotfile"
+ end
+ cd "$prev_pwd"
+end
+
+function dotfiles::rexify
+ cd $DOTFILES_DIR
+ rex home
+ cd -
+end
+
+function dotfiles::random::edit
+ $EDITOR (find $DOTFILES_DIR -type f -not -path '*/.git/*' | shuf -n 1)
+end
+
+abbr -a .u 'dotfiles::update'
+abbr -a .ug 'dotfiles::update::git'
+abbr -a .e 'dotfiles::fuzzy::edit'
+abbr -a .rex 'dotfiles::rexify'
+abbr -a .re 'dotfiles::random::edit'
+abbr -a cdconf "cd $HOME/git/conf"
+abbr -a cdotfiles "cd $HOME/git/conf/dotfiles"
diff --git a/gemfeed/examples/conf/dotfiles/fish/conf.d/editor.fish b/gemfeed/examples/conf/dotfiles/fish/conf.d/editor.fish
new file mode 100644
index 00000000..bda46448
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/fish/conf.d/editor.fish
@@ -0,0 +1,44 @@
+set -gx EDITOR hx
+set -gx VISUAL $EDITOR
+set -gx GIT_EDITOR $EDITOR
+set -gx HELIX_CONFIG_DIR $HOME/.config/helix
+
+function editor::helix::open_with_lock
+ set -l file $argv[1]
+ set -l lock "$file.lock"
+ if test -f "$lock"
+ echo "File lock $lock exists! Another instance is editing it?"
+ return 2
+ end
+ touch $lock
+ hx $file $argv[2..-1]
+ rm $lock
+end
+
+function editor::helix::open_with_lock::force
+ set -l file $argv[1]
+ set -l lock "$file.lock"
+ if test -f "$lock"
+ echo "File lock $lock exists! Force deleting it and terminating all $EDITOR instances?"
+ rm -f $lock
+ pkill -f $EDITOR
+ end
+ touch $lock
+ hx $file $argv[2..-1]
+ rm $lock
+end
+
+function editor::helix::edit::remote
+ set -l local_path $argv[1]
+ set -l remote_uri $argv[2]
+ scp $local_path $remote_uri; or return 1
+ echo "LOCAL_PATH=$local_path; REMOTE_URI=$remote_uri" >~/.hx.remote.source
+ hx $local_path
+end
+
+abbr -a lhx 'editor::helix::open_with_lock'
+abbr -a hxl 'editor::helix::open_with_lock'
+abbr -a hxlf 'editor::helix::open_with_lock::force'
+abbr -a lhxf 'editor::helix::open_with_lock::force'
+abbr -a rhx 'editor::helix::edit::remote'
+abbr -a x hx
diff --git a/gemfeed/examples/conf/dotfiles/fish/conf.d/fuzzy.fish b/gemfeed/examples/conf/dotfiles/fish/conf.d/fuzzy.fish
new file mode 100644
index 00000000..7683a0e7
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/fish/conf.d/fuzzy.fish
@@ -0,0 +1,5 @@
+function __tv_git
+ tv git-repos
+end
+
+bind \cg __tv_git
diff --git a/gemfeed/examples/conf/dotfiles/fish/conf.d/games.fish b/gemfeed/examples/conf/dotfiles/fish/conf.d/games.fish
new file mode 100644
index 00000000..291a798f
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/fish/conf.d/games.fish
@@ -0,0 +1,15 @@
+function games::colorscript
+ if test -e ~/git/shell-color-scripts
+ cd ~/git/shell-color-scripts
+ set -x DEV 1
+ ./colorscript.sh --random
+ cd -
+ else
+ echo 'No colorscripts installed. Go to:'
+ echo ' https://gitlab.com/dwt1/shell-color-scripts'
+ end
+end
+
+if not test -f ~/.colorscript.disable
+ games::colorscript
+end
diff --git a/gemfeed/examples/conf/dotfiles/fish/conf.d/gos.fish b/gemfeed/examples/conf/dotfiles/fish/conf.d/gos.fish
new file mode 100644
index 00000000..a23d7a7b
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/fish/conf.d/gos.fish
@@ -0,0 +1,6 @@
+set -x GOS_BIN ~/go/bin/gos
+set -x GOS_DIR ~/.gosdir
+
+if test -f $GOS_BIN
+ alias cdgos "cd $GOS_DIR"
+end
diff --git a/gemfeed/examples/conf/dotfiles/fish/conf.d/k8s.fish b/gemfeed/examples/conf/dotfiles/fish/conf.d/k8s.fish
new file mode 100644
index 00000000..ee1584bf
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/fish/conf.d/k8s.fish
@@ -0,0 +1,76 @@
+function kcompletions
+ if command -q -v kubectl >/dev/null
+ kubectl completion fish | source
+ end
+end
+
+# Check if the directory $HOME/.krew exists and update PATH
+if test -d $HOME/.krew
+ set -x PATH (set -q KREW_ROOT; and echo $KREW_ROOT; or echo $HOME/.krew)/bin $PATH
+end
+
+function kpod
+ set pattern "."
+ if test -n "$argv[1]"
+ set pattern "$argv[1]"
+ end
+ set -gx POD (kubectl get pods | grep "$pattern" | sort -R | head -n 1 | cut -d' ' -f1)
+ echo "Pod is $POD"
+end
+
+function klogsf
+ if test -z "$POD" -o -n "$argv[1]"
+ kpod $argv
+ end
+ kubectl logs -f $POD
+end
+
+function klogs
+ if test -z "$POD" -o -n "$argv[1]"
+ kpod $argv
+ end
+ kubectl logs $POD
+end
+
+function kbash
+ if test -z "$POD" -o -n "$argv[1]"
+ kpod $argv
+ end
+ kubectl exec -it $POD -- /bin/bash
+end
+
+function kshell
+ if test -z "$POD" -o -n "$argv[1]"
+ kpod $argv
+ end
+ kubectl exec -it $POD -- /bin/sh
+end
+
+function kdesc
+ if test -z "$POD" -o -n "$argv[1]"
+ kpod $argv
+ end
+ kubectl describe pod $POD
+end
+
+function kedit
+ if test -z "$POD" -o -n "$argv[1]"
+ kpod $argv
+ end
+ kubectl edit pod $POD
+end
+
+function k8s::kubectl::config::contexts
+ kubectl config get-contexts | sed '1d; /\*/d' | awk '{ print $1 }' | sort
+end
+alias kcontexts="k8s::kubectl::config::contexts"
+
+function k8s::kubectl::config::use_context
+ kubectl config use-context (kubectl config get-contexts | sed '1d; /\*/d' | awk '{ print $1 }' | sort | fzf)
+end
+alias kcontext="k8s::kubectl::config::use_context"
+
+function k8s::kubectl::config::set_namespace
+ kubectl config set-context --current --namespace=(kubectl get ns | sed 1d | awk '{ print $1 }' | sort | fzf)
+end
+alias knamespace="k8s::kubectl::config::set_namespace"
diff --git a/gemfeed/examples/conf/dotfiles/fish/conf.d/quickedit.fish b/gemfeed/examples/conf/dotfiles/fish/conf.d/quickedit.fish
new file mode 100644
index 00000000..c722acc6
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/fish/conf.d/quickedit.fish
@@ -0,0 +1,93 @@
+set -gx QUICKEDIT_DIR ~/QuickEdit
+
+function quickedit::postaction
+ set -l file_path $argv[1]
+ set -l make_run 0
+
+ if test -f Makefile
+ make
+ set make_run 1
+ end
+
+ # Go to git toplevel dir (if exists)
+ cd (dirname $file_path)
+ set -l git_dir (git rev-parse --show-toplevel 2>/dev/null)
+ if test $status -eq 0
+ cd $git_dir
+ end
+ if not test $make_run -eq 1
+ if test -f Makefile
+ make
+ end
+ end
+ if test -d .git
+ git commit -a -m Update
+ git pull
+ git push
+ end
+end
+
+function quickedit
+ set -l prev_dir (pwd)
+ set -l grep_pattern .
+
+ if test (count $argv) -gt 0
+ set grep_pattern $argv[1]
+ end
+
+ cd $QUICKEDIT_DIR
+ set files (find -L . -type f -not -path '*/.*' | grep -E "$grep_pattern")
+
+ switch (count $files)
+ case 0
+ echo No result found
+ return
+ case 1
+ set file_path $files[1]
+ case '*'
+ set file_path (printf '%s\n' $files | fzf)
+ end
+
+ if editor::helix::open_with_lock $file_path
+ quickedit::postaction $file_path
+ end
+
+ cd $prev_dir
+end
+
+function quickedit::direct
+ set -l dir $argv[1]
+ set -l file $argv[2]
+ cd $dir
+
+ if editor::helix::open_with_lock $file
+ quickedit::postaction $file
+ end
+
+ cd -
+end
+
+function quickedit::scratchpad
+ quickedit::direct ~/Notes Scratchpad.md
+end
+
+function quickedit::quicknote
+ quickedit::direct ~/Notes QuickNote.md
+end
+
+function quickedit::performance
+ quickedit::direct ~/Notes Performance.md
+end
+
+abbr -a e quickedit
+abbr -a scratch quickedit::scratchpad
+abbr -a S quickedit::scratchpad
+abbr -a quicknote quickedit::quicknote
+abbr -a performance quickedit::performance
+abbr -a goals quickedit::performance
+abbr -a er "ranger $QUICKEDIT_DIR"
+abbr -a cdquickedit "cd $QUICKEDIT_DIR"
+abbr -a cdnotes 'cd ~/Notes'
+abbr -a cdfish 'cd ~/.config/fish/conf.d'
+abbr -a cddocs 'cd ~/Documents'
+abbr -a cdocs 'cd ~/Documents'
diff --git a/gemfeed/examples/conf/dotfiles/fish/conf.d/supersync.fish b/gemfeed/examples/conf/dotfiles/fish/conf.d/supersync.fish
new file mode 100644
index 00000000..356f773f
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/fish/conf.d/supersync.fish
@@ -0,0 +1,114 @@
+set -x SUPERSYNC_STAMP_FILE ~/.supersync.last
+
+# Only sync the HabitsAndQuotes when it's asked for via function parameter
+function supersync::worktime
+ set -l worktime_dir ~/git/worktime
+
+ if not test -d $worktime_dir
+ echo "Warning: Directory $worktime_dir does not exist"
+ return 1
+ end
+ cd $worktime_dir
+
+ if test (count $argv) -gt 0 -a $argv[1] = sync_quotes
+ if test -d ~/Notes/HabitsAndQuotes
+ echo "" >work-wisdoms.md.tmp
+ for notes in ~/Notes/HabitsAndQuotes/{Productivity,Ment