Consolidate fish configuration
Months ago when I was revisiting Nix, I decided to nixify my fish configuration. This was a useful learning exercise. I've had two config.fish files floating around this repository ever since then. I sometimes update one and other times I update the other. I'm consolidating these files into one, so I that this is no longer as issue.
This commit is contained in:
parent
ea5db41722
commit
ef2ce90aa7
5 changed files with 117 additions and 465 deletions
|
@ -1,5 +1,6 @@
|
||||||
# While I work use a variety of programs, below of some of my more commonly used
|
# While I work use a variety of programs, below of some of my more commonly used
|
||||||
# programs that I have decided to support with aliases. # Applications
|
# programs that I have decided to support with aliases.
|
||||||
|
# Applications
|
||||||
# java: jv
|
# java: jv
|
||||||
# tmux: t
|
# tmux: t
|
||||||
# $EDITOR: e
|
# $EDITOR: e
|
||||||
|
@ -43,13 +44,6 @@
|
||||||
# Ideally a file like this would be either unnecessary in the case of a fully
|
# Ideally a file like this would be either unnecessary in the case of a fully
|
||||||
# embraced Emacs workflow or compiled from some high-level language like
|
# embraced Emacs workflow or compiled from some high-level language like
|
||||||
# Elisp.
|
# Elisp.
|
||||||
#
|
|
||||||
# Most of this was ported from my aliases.zsh file, which I accumulated over a
|
|
||||||
# two to three year period. If some of the fish code herein is not idiomatic, it
|
|
||||||
# is most likely because I'm new to the ecosystem.
|
|
||||||
|
|
||||||
# TODO: Decide if I prefer `abbr` or `alias` for fish. `abbr` is a new concept
|
|
||||||
# for me.
|
|
||||||
|
|
||||||
# Remove the default greeting from fish
|
# Remove the default greeting from fish
|
||||||
set fish_greeting ""
|
set fish_greeting ""
|
||||||
|
@ -75,242 +69,124 @@ function fish_prompt
|
||||||
echo -e "\n$suffix "
|
echo -e "\n$suffix "
|
||||||
end
|
end
|
||||||
|
|
||||||
function nix-eval --description 'Evaluate Nix expression from file, $1.'
|
source ./functions.fish
|
||||||
# Notice the empty string at the end of the invocation here. This is
|
|
||||||
# intentional. For more information, see this issue:
|
|
||||||
# https://github.com/NixOS/nix/issues/2078
|
|
||||||
nix eval --file $argv[1] ""
|
|
||||||
end
|
|
||||||
|
|
||||||
# Setup fzf for fuzzily finding commands, files, directories
|
# Setup fzf for fuzzily finding commands, files, directories
|
||||||
source (fzf-share)/key-bindings.fish && fzf_key_bindings
|
source (fzf-share)/key-bindings.fish && fzf_key_bindings
|
||||||
|
|
||||||
|
# TODO: What is the difference between `source` and `eval`
|
||||||
|
# direnv
|
||||||
eval (direnv hook fish)
|
eval (direnv hook fish)
|
||||||
|
|
||||||
# Aliases
|
|
||||||
alias briefcase='cd $BRIEFCASE'
|
|
||||||
|
|
||||||
# Miscellaneous
|
# Miscellaneous
|
||||||
abbr --add c xclip -selection clipboard -i
|
alias c='xclip -selection clipboard -i'
|
||||||
abbr --add p xclip -selection clipboard -o
|
alias p='xclip -selection clipboard -o'
|
||||||
# TODO: Depend on `cp_dwim`.
|
alias lorem='echo "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."'
|
||||||
abbr --add cp cp_dwim
|
alias cat='bat --theme=TwoDark'
|
||||||
abbr --add lorem echo "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
|
alias vim=nvim
|
||||||
|
alias rg='rg --ignore-case'
|
||||||
abbr --add e emacsclient
|
alias rgh='rg --hidden' # By default, rg skips hidden files
|
||||||
|
alias fdh='fd --hidden' # By default, fd skips hidden files
|
||||||
abbr --add cat bat --theme=TwoDark
|
alias tpr='tput reset'
|
||||||
# TODO: Support this once `fasd` works.
|
alias define=sdcv # uses stardict to lookup a word
|
||||||
# abbr --add j fasd_cd -d # Use j to emulate autojump; my muscle memory is hardened here
|
alias perms='ls -ld' # list the permissions of a directory
|
||||||
abbr --add vim nvim
|
alias rmrf='rm -rf' # sometimes the space and dash are too much...
|
||||||
|
alias open=xdg-open
|
||||||
# TODO: Support `blutetoothctl` with Nix.
|
alias stopx='sudo service lightdm stop' # stop X server session
|
||||||
abbr --add btctl bluetoothctl
|
alias please='eval sudo $history[1]'
|
||||||
|
alias chrome=google-chrome
|
||||||
abbr --add rg rg --ignore-case
|
alias sys='systemctl'
|
||||||
abbr --add rgh rg --hidden # By default, rg skips hidden files
|
alias sysu='systemctl --user'
|
||||||
abbr --add fdh fd --hidden # By default, rg skips hidden files
|
|
||||||
abbr --add define sdcv # uses stardict to lookup a word
|
|
||||||
abbr --add intellij nohup /opt/intellij-ce-stable/bin/idea.sh >/dev/null 2>&1 &
|
|
||||||
abbr --add tpr tput reset
|
|
||||||
abbr --add nordvpn sudo openvpn /etc/openvpn/ovpn_tcp/us3559.nordvpn.com.tcp.ovpn # connects to the nordvpn servers in USA
|
|
||||||
abbr --add perms ls -ld # list the permissions of a directory
|
|
||||||
abbr --add rmrf rm -rf # sometimes the space and dash are too much...
|
|
||||||
abbr --add open xdg-open
|
|
||||||
abbr --add o open
|
|
||||||
abbr --add stopx sudo service lightdm stop # stop X server session
|
|
||||||
abbr --add please 'eval sudo $history[1]'
|
|
||||||
abbr --add plz please
|
|
||||||
|
|
||||||
# TODO: Package this with Nix.
|
|
||||||
abbr --add simple_vim vim -u ~/.config/nvim/simple.vim
|
|
||||||
|
|
||||||
# Filesystem
|
# Filesystem
|
||||||
# TODO: Depend on `mkdir_cd`.
|
# TODO: Depend on `mkdir_cd`.
|
||||||
abbr --add mdd mkdir_cd
|
alias mdd=mkdir_cd
|
||||||
abbr --add mdp mkdir --parents
|
alias ls='exa --sort=type'
|
||||||
abbr --add ls exa --sort=type
|
alias ll='exa --long --sort=type'
|
||||||
abbr --add ll exa --long --sort=type
|
alias la='exa --long --all --sort=type'
|
||||||
abbr --add la exa --long --all --sort=type
|
|
||||||
|
|
||||||
# TODO: Depend on these functions once they're defined.
|
# TODO: Depend on these functions once they're defined.
|
||||||
abbr --add files laf
|
alias files=laf
|
||||||
abbr --add dirs lad
|
alias dirs=lad
|
||||||
abbr --add links lal
|
alias links=lal
|
||||||
|
|
||||||
# Device and power management
|
# Device and power management
|
||||||
abbr --add off shutdown now
|
alias off='shutdown now'
|
||||||
abbr --add suspend systemctl suspend
|
alias suspend='systemctl suspend'
|
||||||
abbr --add hibernate systemctl hibernate
|
alias hibernate='systemctl hibernate'
|
||||||
|
|
||||||
abbr --add pscp pass show --clip
|
|
||||||
|
|
||||||
# TODO: Debug `Error: No interface specified.`.
|
# TODO: Debug `Error: No interface specified.`.
|
||||||
abbr --add wfls nmcli device wifi
|
alias wfls='nmcli device wifi'
|
||||||
abbr --add wfls nmcli device connect
|
alias wfc='nmcli device connect'
|
||||||
|
|
||||||
# Tmux
|
# Tmux
|
||||||
abbr --add tls tmux list-sessions
|
alias tls='tmux list-sessions'
|
||||||
abbr --add ta tmux attach
|
alias ta ='tmux attach'
|
||||||
abbr --add td tmux detach
|
alias td ='tmux detach'
|
||||||
|
|
||||||
# Chrome
|
|
||||||
abbr --add chrome google-chrome
|
|
||||||
abbr --add cssh chrome --app-id=pnhechapfaindjhompbnflcldabbghjo # Secure Shell
|
|
||||||
abbr --add crd chrome --app-id=gbchcmhmhahfdphkhkmpfmihenigjmpp # Chrome Remote Desktop
|
|
||||||
|
|
||||||
# Dropbox
|
# Dropbox
|
||||||
abbr --add drst dropbox.py status
|
alias drst='dropbox.py status'
|
||||||
|
|
||||||
# Docker
|
|
||||||
abbr --add dk docker
|
|
||||||
abbr --add dkps docker ps
|
|
||||||
abbr --add dkpsa docker ps -a
|
|
||||||
abbr --add dkrm docker rm
|
|
||||||
abbr --add dkrmi docker rmi
|
|
||||||
abbr --add dkrd docker run -d
|
|
||||||
abbr --add dki docker images
|
|
||||||
|
|
||||||
# Java
|
|
||||||
# TODO: Consider packaging this idea with Nix instead
|
|
||||||
abbr --add jvsh env CLASSPATH=(fd '\\.jar$' ~/Dropbox/programming/jars | tr \\n :) jshell
|
|
||||||
|
|
||||||
# Elixir
|
|
||||||
abbr --add m mix
|
|
||||||
abbr --add mc mix compile
|
|
||||||
abbr --add mcf mix compile --force
|
|
||||||
abbr --add ism iex -S mix
|
|
||||||
abbr --add tism MIX_ENV=test iex -S mix
|
|
||||||
abbr --add mdg mix deps.get
|
|
||||||
abbr --add mdu mix deps.update
|
|
||||||
abbr --add mdup mix docker.up
|
|
||||||
|
|
||||||
# GPG
|
# GPG
|
||||||
abbr --add gpged gpg --edit-key wpcarro@gmail.com
|
alias gpged='gpg --edit-key wpcarro@gmail.com'
|
||||||
abbr --add gpge gpg --encrypt
|
alias gpge='gpg --encrypt'
|
||||||
abbr --add gpgd gpg --decrypt
|
alias gpgd='gpg --decrypt'
|
||||||
abbr --add gpgls gpg --list-keys
|
alias gpgls='gpg --list-keys'
|
||||||
|
|
||||||
# Git
|
# Git
|
||||||
abbr --add glp git log --graph --pretty='format:"%Cred%h%Creset -%Cblue %an %Creset - %C(yellow)%d%Creset %s %Cgreen(%cr)%Creset" --abbrev-commit --date=relative'
|
# alias glp='git log --graph --pretty="format:"%Cred%h%Creset -%Cblue %an %Creset - %C(yellow)%d%Creset %s %Cgreen(%cr)%Creset" --abbrev-commit --date=relative'
|
||||||
abbr --add g hub
|
alias g=hub
|
||||||
abbr --add git hub
|
alias git=hub
|
||||||
abbr --add ga git add
|
alias ga='git add'
|
||||||
abbr --add gc git commit
|
alias gc='git commit'
|
||||||
abbr --add gco git checkout
|
alias gco='git checkout'
|
||||||
abbr --add gd git diff
|
alias gd='git diff'
|
||||||
abbr --add gp git push
|
alias gp='git push'
|
||||||
abbr --add grbi git rebase --interactive
|
alias grbi='git rebase --interactive'
|
||||||
abbr --add grba git rebase --abort
|
alias grba='git rebase --abort'
|
||||||
abbr --add grbc git rebase --continue
|
alias grbc='git rebase --continue'
|
||||||
abbr --add gprom git pull --rebase origin master
|
alias gprom='git pull --rebase origin master'
|
||||||
abbr --add gca git commit --amend
|
alias gca='git commit --amend'
|
||||||
abbr --add gcan git commit --amend --no-edit
|
alias gcan='git commit --amend --no-edit'
|
||||||
abbr --add gpf git push --force
|
alias gpf='git push --force'
|
||||||
abbr --add gpff git push --force --no-verify
|
alias gpff='git push --force --no-verify'
|
||||||
abbr --add gds git diff --staged
|
alias gds='git diff --staged'
|
||||||
abbr --add gfx git commit --fixup
|
alias gfx='git commit --fixup'
|
||||||
abbr --add gsh git show
|
alias gsh='git show'
|
||||||
abbr --add gwip 'git add . && git commit -m wip'
|
alias gwip='git add . && git commit -m wip'
|
||||||
abbr --add gpr git pull-request
|
alias gpr='git pull-request'
|
||||||
abbr --add gst 'git status && hub pr list'
|
alias gst='git status && hub pr list'
|
||||||
|
|
||||||
# Mercurial
|
# Mercurial
|
||||||
# The attempt here is to map my well-known, existing `git` aliases to their
|
# The attempt here is to map my well-known, existing `git` aliases to their
|
||||||
# Mercurial counterparts. Some may map 1:1, others may be like putting a square
|
# Mercurial counterparts. Some may map 1:1, others may be like putting a square
|
||||||
# peg into a round hole. I will try and use my best judgement in these cases
|
# peg into a round hole. I will try and use my best judgement in these cases
|
||||||
# while erring on the side of unifying the two APIs.
|
# while erring on the side of unifying the two APIs.
|
||||||
abbr --add hgst hg status
|
alias hgst='hg status'
|
||||||
abbr --add hglp hg xl
|
alias hglp'=hg xl'
|
||||||
abbr --add hgp hg uploadchain # this is like `git push`
|
alias hgp='hg uploadchain'
|
||||||
abbr --add hga hg add
|
alias hga='hg add'
|
||||||
abbr --add hgc hg commit
|
alias hgc='hg commit'
|
||||||
abbr --add hgcan hg amend # like `git commit --amend --no-edit'
|
alias hgcan='hg amend'
|
||||||
abbr --add hgpr hg mail -r . -m # this may be similar to `hub pull-request`
|
alias hgpr='hg mail -r . -m'
|
||||||
abbr --add hgd hg diff
|
alias hgd='hg diff'
|
||||||
abbr --add hgsh hg export
|
alias hgsh='hg export'
|
||||||
abbr --add hgco hg update
|
alias hgco='hg update'
|
||||||
abbr --add hgls hg citc --list # should have different output from `pils`
|
alias hgls='hg citc --list'
|
||||||
abbr --add hgrc hg rebase --continue
|
alias hgrc='hg rebase --continue'
|
||||||
abbr --add hgra hg rebase --abort
|
alias hgra='hg rebase --abort'
|
||||||
abbr --add hgrm hg citc -d # delete a CitC client created with Fig
|
alias hgrm='hg citc -d'
|
||||||
abbr --add hgwhat 'hg status --rev p4base:(hg id -i)'
|
alias hgconflicts='hg resolve --list "set:unresolved()"'
|
||||||
abbr --add hgconflicts hg resolve --list 'set:unresolved()' # much like `gconflicts`
|
|
||||||
|
|
||||||
# Haskell
|
|
||||||
abbr --add sb stack build
|
|
||||||
abbr --add se stack exec --
|
|
||||||
abbr --add sc stack clean
|
|
||||||
abbr --add st stack test
|
|
||||||
abbr --add haddocks 'open (stack path --local-doc-root)/index.html'
|
|
||||||
|
|
||||||
# Kubernetes
|
|
||||||
abbr --add kc kubectl
|
|
||||||
abbr --add kpods kubectl get pods
|
|
||||||
abbr --add knodes kubectl get nodes
|
|
||||||
abbr --add kdeploys kubectl get deployments
|
|
||||||
abbr --add kdns kubectl get ing
|
|
||||||
abbr --add kedit kubectl edit deployments
|
|
||||||
abbr --add kswitch gcloud container clusters get-credentials
|
|
||||||
|
|
||||||
# Nix
|
|
||||||
# TODO: Ensure that this depends on `nix_introspect` as defined in
|
|
||||||
# functions.fish.
|
|
||||||
abbr --add nq nix_introspect
|
|
||||||
abbr --add nsh nix-shell
|
|
||||||
abbr --add nshp nix-shell --pure
|
|
||||||
abbr --add nr nix repl
|
|
||||||
abbr --add ni nix-env --install
|
|
||||||
abbr --add nrm nix-env --uninstall
|
|
||||||
abbr --add nls nix-env --query
|
|
||||||
abbr --add nrs sudo nixos-rebuild switch
|
|
||||||
|
|
||||||
# Aptitude (apt)
|
# Aptitude (apt)
|
||||||
abbr --add apti sudo apt-get install --assume-yes
|
alias apti='sudo apt-get install --assume-yes'
|
||||||
abbr --add aptrm sudo apt remove
|
alias aptrm='sudo apt remove'
|
||||||
|
|
||||||
# Pacman
|
|
||||||
abbr --add pmi sudo pacman -S --noconfirm
|
|
||||||
abbr --add pms pacman -Ss
|
|
||||||
abbr --add pmrm sudo pacman -Rs
|
|
||||||
|
|
||||||
# Couple the e* aliases to the <leader>e* kbds in vim.
|
|
||||||
abbr --add ev e ~/.config/nvim/init.vim
|
|
||||||
abbr --add ee e ~/.emacs.d/init.el
|
|
||||||
abbr --add ez e ~/.zshrc
|
|
||||||
abbr --add ea e ~/aliases.zsh
|
|
||||||
abbr --add ef e ~/functions.zsh
|
|
||||||
abbr --add el e ~/variables.zsh
|
|
||||||
abbr --add ex e ~/.Xresources
|
|
||||||
abbr --add em e ~/.tmux.conf
|
|
||||||
abbr --add er e $BRIEFCASE/README.md
|
|
||||||
|
|
||||||
# Couple the s* aliases to the <leader>s* kbds in vim.
|
|
||||||
abbr --add sz source ~/.zshrc
|
|
||||||
abbr --add sa source ~/aliases.zsh
|
|
||||||
abbr --add sf source ~/functions.zsh
|
|
||||||
abbr --add sl source ~/variables.zsh
|
|
||||||
abbr --add sx xrdb ~/.Xresources
|
|
||||||
abbr --add sm tmux source-file ~/.tmux.conf
|
|
||||||
abbr --add sn sudo nixos-rebuild switch
|
|
||||||
|
|
||||||
# CircleCI
|
|
||||||
abbr --add cci circleci local
|
|
||||||
abbr --add ccijob circleci local execute --job
|
|
||||||
|
|
||||||
# Google stuff
|
# Google stuff
|
||||||
abbr --add bzb blaze build
|
alias bzb='blaze build'
|
||||||
abbr --add bzt blaze test --test_output=all
|
alias bzt='blaze test --test_output=all'
|
||||||
abbr --add br borgcfg
|
alias br=borgcfg
|
||||||
abbr --add pils p4 listclients
|
alias pils='p4 listclients'
|
||||||
abbr --add pirm p4 citc -d
|
alias pirm='p4 citc -d'
|
||||||
abbr --add ppls 'g4 listclients | sed \'s/^Client wpcarro://\' | sed \'s/:[0-9]*:citc.*$//g\''
|
alias ppls='g4 listclients | sed \'s/^Client wpcarro://\' | sed \'s/:[0-9]*:citc.*$//g\''
|
||||||
abbr --add pprm p4 citc -d -f # WARNING: This will forcefully delete a CitC client even if contains pending changes.
|
alias pprm='p4 citc -d -f' # WARNING: This will forcefully delete a CitC client even if contains pending changes.
|
||||||
abbr --add flagpick /google/data/ro/users/sk/skaushik/www/public-tools/flagpick
|
alias aclcheck=/google/data/ro/projects/ganpati/aclcheck
|
||||||
abbr --add jaze /google/data/ro/projects/devtools/javascript/jaze
|
|
||||||
abbr --add aclcheck /google/data/ro/projects/ganpati/aclcheck
|
|
||||||
abbr --add g3python /google/data/ro/projects/g3python/g3python
|
|
||||||
abbr --add pb /google/src/head/depot/eng/tools/pastebin
|
|
||||||
abbr --add pbc 'pb --private --title $(date +$date_fmt)| tee >(c && chrome (p))' # create a private gPaste from your clipboard's content; open the result in a browser
|
|
||||||
abbr --add pbcp 'p | pb --private --title (date +$date_fmt)| tee >(c && chrome (p))' # create a private gPaste from your clipboard's content; open the result in a browser
|
|
||||||
abbr --add pbls $BROWSER https://paste.googleplex.com/(whoami)
|
|
||||||
|
|
27
configs/shared/.config/fish/fish_variables
Normal file
27
configs/shared/.config/fish/fish_variables
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# This file contains fish universal variable definitions.
|
||||||
|
# VERSION: 3.0
|
||||||
|
SETUVAR fish_color_autosuggestion:555\x1ebrblack
|
||||||
|
SETUVAR fish_color_cancel:\x2dr
|
||||||
|
SETUVAR fish_color_command:005fd7
|
||||||
|
SETUVAR fish_color_comment:990000
|
||||||
|
SETUVAR fish_color_cwd:green
|
||||||
|
SETUVAR fish_color_cwd_root:red
|
||||||
|
SETUVAR fish_color_end:009900
|
||||||
|
SETUVAR fish_color_error:ff0000
|
||||||
|
SETUVAR fish_color_escape:00a6b2
|
||||||
|
SETUVAR fish_color_history_current:\x2d\x2dbold
|
||||||
|
SETUVAR fish_color_host:normal
|
||||||
|
SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
|
||||||
|
SETUVAR fish_color_normal:normal
|
||||||
|
SETUVAR fish_color_operator:00a6b2
|
||||||
|
SETUVAR fish_color_param:00afff
|
||||||
|
SETUVAR fish_color_quote:999900
|
||||||
|
SETUVAR fish_color_redirection:00afff
|
||||||
|
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
|
||||||
|
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
|
||||||
|
SETUVAR fish_color_user:brgreen
|
||||||
|
SETUVAR fish_color_valid_path:\x2d\x2dunderline
|
||||||
|
SETUVAR fish_key_bindings:fish_default_key_bindings
|
||||||
|
SETUVAR fish_pager_color_description:B3A06D\x1eyellow
|
||||||
|
SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
|
||||||
|
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
|
199
fish/config.fish
199
fish/config.fish
|
@ -1,199 +0,0 @@
|
||||||
# While I work use a variety of programs, below of some of my more commonly used
|
|
||||||
# programs that I have decided to support with aliases.
|
|
||||||
# Applications
|
|
||||||
# java: jv
|
|
||||||
# tmux: t
|
|
||||||
# $EDITOR: e
|
|
||||||
# vim: v
|
|
||||||
# GnuPG: gpg
|
|
||||||
# blaze: bz
|
|
||||||
# borgcfg: br
|
|
||||||
# piper: pi
|
|
||||||
# pass: ps
|
|
||||||
# pastebin: pb
|
|
||||||
# pacman: pm
|
|
||||||
# codesearch: cs
|
|
||||||
# git: g
|
|
||||||
# mercurial: hg
|
|
||||||
# aptitude: apt
|
|
||||||
# chrome: c
|
|
||||||
# elixir: ex
|
|
||||||
# haskell: hk
|
|
||||||
# wifi: wf
|
|
||||||
# piper: pp
|
|
||||||
# g4: pp
|
|
||||||
# g4d: pp
|
|
||||||
# cci: circleci
|
|
||||||
#
|
|
||||||
# Below are some common modifiers or flags that programs support.
|
|
||||||
# Supported qualifiers:
|
|
||||||
# hidden: h
|
|
||||||
# ignore-case: i
|
|
||||||
#
|
|
||||||
# I've found that much of my time is spent working with programs that support
|
|
||||||
# some many of the following actions.
|
|
||||||
# Supported verbs:
|
|
||||||
# source: s
|
|
||||||
# install: i
|
|
||||||
# test: t
|
|
||||||
# build: b
|
|
||||||
# list: ls
|
|
||||||
# shell: REPL
|
|
||||||
#
|
|
||||||
# Commentary:
|
|
||||||
# Ideally a file like this would be either unnecessary in the case of a fully
|
|
||||||
# embraced Emacs workflow or compiled from some high-level language like
|
|
||||||
# Elisp.
|
|
||||||
|
|
||||||
# Remove the default greeting from fish
|
|
||||||
set fish_greeting ""
|
|
||||||
|
|
||||||
# TODO: This installs $1, which is most likely not desirable.
|
|
||||||
function nix_find
|
|
||||||
nix-build '<nixpkgs>' --no-build-output -A $argv[1]
|
|
||||||
end
|
|
||||||
|
|
||||||
# Prompt
|
|
||||||
function fish_prompt
|
|
||||||
set -l color_cwd
|
|
||||||
set -l suffix
|
|
||||||
switch "$USER"
|
|
||||||
case root toor
|
|
||||||
if set -q fish_color_cwd_root
|
|
||||||
set color_cwd $fish_color_cwd_root
|
|
||||||
else
|
|
||||||
set color_cwd $fish_color_cwd
|
|
||||||
end
|
|
||||||
set suffix '#'
|
|
||||||
case '*'
|
|
||||||
set color_cwd $fish_color_cwd
|
|
||||||
set suffix '>'
|
|
||||||
end
|
|
||||||
|
|
||||||
echo -n -s "$USER" @ (prompt_hostname) ' ' (set_color $color_cwd) (pwd) (set_color normal)
|
|
||||||
echo -e "\n$suffix "
|
|
||||||
end
|
|
||||||
|
|
||||||
# Setup fzf for fuzzily finding commands, files, directories
|
|
||||||
source (fzf-share)/key-bindings.fish && fzf_key_bindings
|
|
||||||
|
|
||||||
# Setup autojump for a frequency-based alternative to cd.
|
|
||||||
# TODO: Debug why I couldn't get `fasd` to work with Nix and fish.
|
|
||||||
source (nix_find autojump)/share/autojump/autojump.fish
|
|
||||||
|
|
||||||
# TODO: What is the difference between `source` and `eval`
|
|
||||||
# direnv
|
|
||||||
source (direnv hook fish)
|
|
||||||
|
|
||||||
# Miscellaneous
|
|
||||||
alias c='xclip -selection clipboard -i'
|
|
||||||
alias p='xclip -selection clipboard -o'
|
|
||||||
alias lorem='echo "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."'
|
|
||||||
alias cat='bat --theme=TwoDark'
|
|
||||||
alias vim=nvim
|
|
||||||
alias rg='rg --ignore-case'
|
|
||||||
alias rgh='rg --hidden' # By default, rg skips hidden files
|
|
||||||
alias fdh='fd --hidden' # By default, fd skips hidden files
|
|
||||||
alias tpr='tput reset'
|
|
||||||
alias define=sdcv # uses stardict to lookup a word
|
|
||||||
alias perms='ls -ld' # list the permissions of a directory
|
|
||||||
alias rmrf='rm -rf' # sometimes the space and dash are too much...
|
|
||||||
alias open=xdg-open
|
|
||||||
alias stopx='sudo service lightdm stop' # stop X server session
|
|
||||||
alias please='eval sudo $history[1]'
|
|
||||||
alias chrome=google-chrome
|
|
||||||
alias sys='systemctl'
|
|
||||||
alias sysu='systemctl --user'
|
|
||||||
|
|
||||||
# Filesystem
|
|
||||||
# TODO: Depend on `mkdir_cd`.
|
|
||||||
alias mdd=mkdir_cd
|
|
||||||
alias ls='exa --sort=type'
|
|
||||||
alias ll='exa --long --sort=type'
|
|
||||||
alias la='exa --long --all --sort=type'
|
|
||||||
# TODO: Depend on these functions once they're defined.
|
|
||||||
alias files=laf
|
|
||||||
alias dirs=lad
|
|
||||||
alias links=lal
|
|
||||||
|
|
||||||
# Device and power management
|
|
||||||
alias off='shutdown now'
|
|
||||||
alias suspend='systemctl suspend'
|
|
||||||
alias hibernate='systemctl hibernate'
|
|
||||||
|
|
||||||
# TODO: Debug `Error: No interface specified.`.
|
|
||||||
alias wfls='nmcli device wifi'
|
|
||||||
alias wfc='nmcli device connect'
|
|
||||||
|
|
||||||
# Tmux
|
|
||||||
alias tls='tmux list-sessions'
|
|
||||||
alias ta ='tmux attach'
|
|
||||||
alias td ='tmux detach'
|
|
||||||
|
|
||||||
# Dropbox
|
|
||||||
alias drst='dropbox.py status'
|
|
||||||
|
|
||||||
# GPG
|
|
||||||
alias gpged='gpg --edit-key wpcarro@gmail.com'
|
|
||||||
alias gpge='gpg --encrypt'
|
|
||||||
alias gpgd='gpg --decrypt'
|
|
||||||
alias gpgls='gpg --list-keys'
|
|
||||||
|
|
||||||
# Git
|
|
||||||
alias glp='git log --graph --pretty="format:"%Cred%h%Creset -%Cblue %an %Creset - %C(yellow)%d%Creset %s %Cgreen(%cr)%Creset" --abbrev-commit --date=relative'
|
|
||||||
alias g=hub
|
|
||||||
alias git=hub
|
|
||||||
alias ga='git add'
|
|
||||||
alias gc='git commit'
|
|
||||||
alias gco='git checkout'
|
|
||||||
alias gd='git diff'
|
|
||||||
alias gp='git push'
|
|
||||||
alias grbi='git rebase --interactive'
|
|
||||||
alias grba='git rebase --abort'
|
|
||||||
alias grbc='git rebase --continue'
|
|
||||||
alias gprom='git pull --rebase origin master'
|
|
||||||
alias gca='git commit --amend'
|
|
||||||
alias gcan='git commit --amend --no-edit'
|
|
||||||
alias gpf='git push --force'
|
|
||||||
alias gpff='git push --force --no-verify'
|
|
||||||
alias gds='git diff --staged'
|
|
||||||
alias gfx='git commit --fixup'
|
|
||||||
alias gsh='git show'
|
|
||||||
alias gwip='git add . && git commit -m wip'
|
|
||||||
alias gpr='git pull-request'
|
|
||||||
alias gst='git status && hub pr list'
|
|
||||||
|
|
||||||
# Mercurial
|
|
||||||
# The attempt here is to map my well-known, existing `git` aliases to their
|
|
||||||
# Mercurial counterparts. Some may map 1:1, others may be like putting a square
|
|
||||||
# peg into a round hole. I will try and use my best judgement in these cases
|
|
||||||
# while erring on the side of unifying the two APIs.
|
|
||||||
alias hgst='hg status'
|
|
||||||
alias hglp'=hg xl'
|
|
||||||
alias hgp='hg uploadchain'
|
|
||||||
alias hga='hg add'
|
|
||||||
alias hgc='hg commit'
|
|
||||||
alias hgcan='hg amend'
|
|
||||||
alias hgpr='hg mail -r . -m'
|
|
||||||
alias hgd='hg diff'
|
|
||||||
alias hgsh='hg export'
|
|
||||||
alias hgco='hg update'
|
|
||||||
alias hgls='hg citc --list'
|
|
||||||
alias hgrc='hg rebase --continue'
|
|
||||||
alias hgra='hg rebase --abort'
|
|
||||||
alias hgrm='hg citc -d'
|
|
||||||
alias hgconflicts='hg resolve --list "set:unresolved()"'
|
|
||||||
|
|
||||||
# Aptitude (apt)
|
|
||||||
alias apti='sudo apt-get install --assume-yes'
|
|
||||||
alias aptrm='sudo apt remove'
|
|
||||||
|
|
||||||
# Google stuff
|
|
||||||
alias bzb='blaze build'
|
|
||||||
alias bzt='blaze test --test_output=all'
|
|
||||||
alias br=borgcfg
|
|
||||||
alias pils='p4 listclients'
|
|
||||||
alias pirm='p4 citc -d'
|
|
||||||
alias ppls='g4 listclients | sed \'s/^Client wpcarro://\' | sed \'s/:[0-9]*:citc.*$//g\''
|
|
||||||
alias pprm='p4 citc -d -f' # WARNING: This will forcefully delete a CitC client even if contains pending changes.
|
|
||||||
alias aclcheck=/google/data/ro/projects/ganpati/aclcheck
|
|
|
@ -1,52 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
# TODO: Is it appropriate to put programming language dependencies here? Should
|
|
||||||
# I have a bin dependency for every fish `abbr` and `alias` that I use? What
|
|
||||||
# makes the most sense?
|
|
||||||
|
|
||||||
# TODO: Some of the abbreviations / aliases depend on binaries and some depend
|
|
||||||
# on files (e.g. ~/.config/nvim/init.vim). How should I handle the file
|
|
||||||
# dependencies?
|
|
||||||
|
|
||||||
# TODO: Support symlinking config.fish to ~/.config/fish/config.fish using Nix.
|
|
||||||
|
|
||||||
let
|
|
||||||
fishBinPath = pkgs.lib.strings.makeBinPath (with pkgs; [
|
|
||||||
# TODO: Support fasd instead of autojump.
|
|
||||||
# fasd
|
|
||||||
direnv
|
|
||||||
autojump
|
|
||||||
fzf
|
|
||||||
fd
|
|
||||||
xclip
|
|
||||||
bat
|
|
||||||
neovim
|
|
||||||
ripgrep
|
|
||||||
sdcv
|
|
||||||
exa
|
|
||||||
pass
|
|
||||||
networkmanager
|
|
||||||
google-chrome
|
|
||||||
docker
|
|
||||||
elixir
|
|
||||||
clojure
|
|
||||||
gnupg
|
|
||||||
git
|
|
||||||
tmux
|
|
||||||
# This is not that same as `hub`.
|
|
||||||
# git-hub
|
|
||||||
mercurial
|
|
||||||
stack
|
|
||||||
kubernetes
|
|
||||||
circleci-cli
|
|
||||||
nix # Really?
|
|
||||||
apt # Really?
|
|
||||||
pacman # Really?
|
|
||||||
]);
|
|
||||||
# TODO: It's difficult to test if the `--init-command` is working since fish
|
|
||||||
# persists functions, abbreviations, aliases between sessions so it's easy to
|
|
||||||
# get tricked by false-positives.
|
|
||||||
in pkgs.writeShellScriptBin "wpcarros-fish" ''
|
|
||||||
export PATH="${fishBinPath}:$PATH"
|
|
||||||
exec ${pkgs.fish}/bin/fish --init-command 'source ${ ./functions.fish }'
|
|
||||||
''
|
|
Loading…
Reference in a new issue