Initial commit
This commit is contained in:
commit
b9e9909aa8
42
.bashrc
Normal file
42
.bashrc
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Set global variables
|
||||||
|
export EDITOR=nvim
|
||||||
|
export LANG='en_US.UTF-8'
|
||||||
|
export MANPAGER='nvim +Man!'
|
||||||
|
|
||||||
|
# Path
|
||||||
|
export PATH="$HOME/bin"
|
||||||
|
export PATH="$PATH:/usr/local/bin"
|
||||||
|
export PATH="$PATH:/usr/bin"
|
||||||
|
export PATH="$PATH:/bin"
|
||||||
|
export PATH="$PATH:/usr/local/sbin"
|
||||||
|
export PATH="$PATH:/usr/sbin"
|
||||||
|
export PATH="$PATH:/sbin"
|
||||||
|
|
||||||
|
# Java environment
|
||||||
|
export JAVA_HOME_8=$(/usr/libexec/java_home -v 1.8)
|
||||||
|
export JAVA_HOME_11=$(/usr/libexec/java_home -v 11)
|
||||||
|
export JAVA_HOME=$JAVA_HOME_8
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
alias adventure='emacs -batch -l dunnet'
|
||||||
|
alias afk='pmset displaysleepnow'
|
||||||
|
alias dnsflush='sudo killall -HUP mDNSResponder'
|
||||||
|
alias java8="set -gx JAVA_HOME $JAVA_HOME_8"
|
||||||
|
alias java11="set -gx JAVA_HOME $JAVA_HOME_11"
|
||||||
|
alias md5sum="md5 -r $argv"
|
||||||
|
alias vi='nvim'
|
||||||
|
|
||||||
|
# Do not save lines which begin with a space character
|
||||||
|
# Do not save lines which match the previous history entry
|
||||||
|
# Remove from history all previous lines matching the current line
|
||||||
|
export HISTCONTROL=ignoreboth:erasedups
|
||||||
|
|
||||||
|
# Completions
|
||||||
|
[ -f /usr/local/etc/bash_completion ] && source /usr/local/etc/bash_completion
|
||||||
|
|
||||||
|
# Colorized prompt with Git information
|
||||||
|
export CLICOLOR=1
|
||||||
|
GIT_PS1_SHOWDIRTYSTATE=true
|
||||||
|
GIT_PS1_SHOWSTASHSTATE=true
|
||||||
|
GIT_PS1_SHOWUNTRACKEDFILES=true
|
||||||
|
export PS1='\[\e[33m\]\w\[\e[36m\]$(__git_ps1)\[\e[m\] $ '
|
32
Brewfile
Normal file
32
Brewfile
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# Utilities
|
||||||
|
tap "homebrew/bundle"
|
||||||
|
tap "homebrew/cask"
|
||||||
|
tap "homebrew/core"
|
||||||
|
brew "bash"
|
||||||
|
brew "bat"
|
||||||
|
brew "diff-so-fancy"
|
||||||
|
brew "diskus"
|
||||||
|
brew "dos2unix"
|
||||||
|
brew "fd"
|
||||||
|
brew "fish"
|
||||||
|
brew "fzf"
|
||||||
|
brew "git"
|
||||||
|
brew "htop"
|
||||||
|
brew "jq"
|
||||||
|
brew "neovim"
|
||||||
|
brew "ripgrep"
|
||||||
|
brew "telnet"
|
||||||
|
brew "tig"
|
||||||
|
brew "tldr"
|
||||||
|
brew "tree"
|
||||||
|
brew "watch"
|
||||||
|
brew "wget"
|
||||||
|
|
||||||
|
# JVM
|
||||||
|
tap "adoptopenjdk/openjdk"
|
||||||
|
cask "adoptopenjdk/openjdk/adoptopenjdk8"
|
||||||
|
cask "adoptopenjdk/openjdk/adoptopenjdk11"
|
||||||
|
brew "kotlin"
|
||||||
|
brew "maven"
|
||||||
|
brew "sbt"
|
||||||
|
brew "scala"
|
19
Brewfile.opt
Normal file
19
Brewfile.opt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Docker
|
||||||
|
cask "docker"
|
||||||
|
cask "minikube"
|
||||||
|
brew "docker-completion"
|
||||||
|
brew "kubernetes-cli"
|
||||||
|
|
||||||
|
# Protobuf / gRPC
|
||||||
|
brew "grpc"
|
||||||
|
brew "grpcurl"
|
||||||
|
brew "protobuf"
|
||||||
|
brew "prototool"
|
||||||
|
|
||||||
|
# Graphics
|
||||||
|
brew "handbrake"
|
||||||
|
brew "imagemagick"
|
||||||
|
brew "scour"
|
||||||
|
brew "svg2png"
|
||||||
|
brew "termtosvg"
|
||||||
|
brew "triangle"
|
11
README.md
Normal file
11
README.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
### Dotfiles
|
||||||
|
|
||||||
|
My personal configuration files.
|
||||||
|
|
||||||
|
##### Usage
|
||||||
|
|
||||||
|
1. Clone this repository into `~/.dotfiles`
|
||||||
|
2. Install Homebrew: https://brew.sh/
|
||||||
|
3. Install tools: `brew bundle install`
|
||||||
|
4. (Optional) Install more tools: `brew bundle install --file=Brewfile.opt`
|
||||||
|
5. Install everything else, including symlinks: `./install.sh`
|
34
fish/config.fish
Normal file
34
fish/config.fish
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# Disable the default shell greeting
|
||||||
|
set fish_greeting
|
||||||
|
|
||||||
|
# Disable the abbreviated directory format
|
||||||
|
set fish_prompt_pwd_dir_length 0
|
||||||
|
|
||||||
|
# Set global variables
|
||||||
|
set -x EDITOR nvim
|
||||||
|
set -x LANG en_US.UTF-8
|
||||||
|
set -x MANPAGER 'nvim +Man!'
|
||||||
|
|
||||||
|
# Java environment
|
||||||
|
set JAVA_HOME_8 (/usr/libexec/java_home -v 1.8)
|
||||||
|
set JAVA_HOME_11 (/usr/libexec/java_home -v 11)
|
||||||
|
set -x JAVA_HOME $JAVA_HOME_8
|
||||||
|
|
||||||
|
# Path
|
||||||
|
set --erase PATH
|
||||||
|
test -d $HOME/bin ; and set -x PATH $HOME/bin
|
||||||
|
test -d /usr/local/bin ; and set -x PATH $PATH /usr/local/bin
|
||||||
|
test -d /usr/bin ; and set -x PATH $PATH /usr/bin
|
||||||
|
test -d /bin ; and set -x PATH $PATH /bin
|
||||||
|
test -d /usr/local/sbin ; and set -x PATH $PATH /usr/local/sbin
|
||||||
|
test -d /usr/sbin ; and set -x PATH $PATH /usr/sbin
|
||||||
|
test -d /sbin ; and set -x PATH $PATH /sbin
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
alias adventure='emacs -batch -l dunnet'
|
||||||
|
alias afk='pmset displaysleepnow'
|
||||||
|
alias dnsflush='sudo killall -HUP mDNSResponder'
|
||||||
|
alias java8="set -gx JAVA_HOME $JAVA_HOME_8"
|
||||||
|
alias java11="set -gx JAVA_HOME $JAVA_HOME_11"
|
||||||
|
alias md5sum="md5 -r $argv"
|
||||||
|
alias vi='nvim'
|
34
fish/fish_variables
Normal file
34
fish/fish_variables
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# This file contains fish universal variable definitions.
|
||||||
|
# VERSION: 3.0
|
||||||
|
SETUVAR __fish_init_2_39_8:\x1d
|
||||||
|
SETUVAR __fish_init_2_3_0:\x1d
|
||||||
|
SETUVAR __fish_init_3_x:\x1d
|
||||||
|
SETUVAR fish_color_autosuggestion:969896
|
||||||
|
SETUVAR fish_color_cancel:\x2dr
|
||||||
|
SETUVAR fish_color_command:c397d8
|
||||||
|
SETUVAR fish_color_comment:e7c547
|
||||||
|
SETUVAR fish_color_cwd:yellow
|
||||||
|
SETUVAR fish_color_cwd_root:red
|
||||||
|
SETUVAR fish_color_end:c397d8
|
||||||
|
SETUVAR fish_color_error:d54e53
|
||||||
|
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:7aa6da
|
||||||
|
SETUVAR fish_color_quote:b9ca4a
|
||||||
|
SETUVAR fish_color_redirection:70c0b1
|
||||||
|
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_status:red
|
||||||
|
SETUVAR fish_color_user:brgreen
|
||||||
|
SETUVAR fish_color_valid_path:\x2d\x2dunderline
|
||||||
|
SETUVAR fish_greeting:\x1d
|
||||||
|
SETUVAR fish_key_bindings:fish_default_key_bindings
|
||||||
|
SETUVAR fish_pager_color_completion:normal
|
||||||
|
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
|
||||||
|
SETUVAR pure_version:2\x2e1\x2e5
|
22
fish/functions/compress_video.fish
Normal file
22
fish/functions/compress_video.fish
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
function compress_video --argument-names srcfile
|
||||||
|
if test -z "$srcfile"
|
||||||
|
echo "Error: missing argument"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
if not test -f "$srcfile"
|
||||||
|
echo "Error: not a regular file: $srcfile"
|
||||||
|
return 2
|
||||||
|
end
|
||||||
|
if not command --search --quiet HandBrakeCLI
|
||||||
|
echo "Error: HandBrakeCLI is required"
|
||||||
|
return 3
|
||||||
|
end
|
||||||
|
|
||||||
|
set --local dstdir (dirname $srcfile)/Compressed
|
||||||
|
set --local dstfile (dirname $srcfile)/Compressed/(basename $srcfile)
|
||||||
|
set --local preset 'Vimeo YouTube HQ 720p60'
|
||||||
|
|
||||||
|
mkdir -p $dstdir
|
||||||
|
|
||||||
|
HandBrakeCLI --preset $preset --input $srcfile --output $dstfile
|
||||||
|
end
|
23
fish/functions/fish_prompt.fish
Normal file
23
fish/functions/fish_prompt.fish
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
function fish_prompt --description 'Write out the prompt'
|
||||||
|
# Save status code for previous command
|
||||||
|
set -l last_status $status
|
||||||
|
|
||||||
|
# Print working directory
|
||||||
|
set_color $fish_color_cwd
|
||||||
|
echo -n (prompt_pwd)
|
||||||
|
set_color normal
|
||||||
|
|
||||||
|
# Print Git information
|
||||||
|
fish_prompt_git_settings
|
||||||
|
printf '%s ' (__fish_git_prompt)
|
||||||
|
|
||||||
|
# Print status code for previous command, if nonzero
|
||||||
|
if not test $last_status -eq 0
|
||||||
|
set_color $fish_color_error
|
||||||
|
echo -n "[$last_status] "
|
||||||
|
set_color normal
|
||||||
|
end
|
||||||
|
|
||||||
|
# Print the final character (§)
|
||||||
|
echo -n "§ "
|
||||||
|
end
|
38
fish/functions/fish_prompt_git_settings.fish
Normal file
38
fish/functions/fish_prompt_git_settings.fish
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
function fish_prompt_git_settings --description 'Configure the git prompt'
|
||||||
|
# Toggles
|
||||||
|
#if not set -q __fish_git_prompt_showcolorhints
|
||||||
|
# set -g __fish_git_prompt_showcolorhints 1
|
||||||
|
#end
|
||||||
|
if not set -q __fish_git_prompt_showdirtystate
|
||||||
|
set -g __fish_git_prompt_showdirtystate 1
|
||||||
|
end
|
||||||
|
if not set -q __fish_git_prompt_showstashstate
|
||||||
|
set -g __fish_git_prompt_showstashstate 1
|
||||||
|
end
|
||||||
|
if not set -q __fish_git_prompt_showuntrackedfiles
|
||||||
|
set -g __fish_git_prompt_showuntrackedfiles 1
|
||||||
|
end
|
||||||
|
if not set -q __fish_git_prompt_showupstream
|
||||||
|
set -g __fish_git_prompt_showupstream "none"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
if not set -q __fish_git_prompt_color_branch
|
||||||
|
set -g __fish_git_prompt_color_branch cyan
|
||||||
|
end
|
||||||
|
if not set -q __fish_git_prompt_color_dirtystate
|
||||||
|
set -g __fish_git_prompt_color_dirtystate cyan
|
||||||
|
end
|
||||||
|
if not set -q __fish_git_prompt_color_invalidstate
|
||||||
|
set -g __fish_git_prompt_color_invalidstate red
|
||||||
|
end
|
||||||
|
if not set -q __fish_git_prompt_color_stagedstate
|
||||||
|
set -g __fish_git_prompt_color_stagedstate cyan
|
||||||
|
end
|
||||||
|
if not set -q __fish_git_prompt_color_stashstate
|
||||||
|
set -g __fish_git_prompt_color_stashstate cyan
|
||||||
|
end
|
||||||
|
if not set -q __fish_git_prompt_color_untrackedfiles
|
||||||
|
set -g __fish_git_prompt_color_untrackedfiles cyan
|
||||||
|
end
|
||||||
|
end
|
5
fish/functions/hr.fish
Normal file
5
fish/functions/hr.fish
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
function hr --description "Draw horizontal rule"
|
||||||
|
set --local char '─'
|
||||||
|
printf "%.s$char" (seq $COLUMNS)
|
||||||
|
echo
|
||||||
|
end
|
6
fish/functions/motd.fish
Normal file
6
fish/functions/motd.fish
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
function motd
|
||||||
|
if not command --search --quiet fortune ; echo "Error: function requires fortune" ; return 1 ; end
|
||||||
|
if not command --search --quiet cowsay ; echo "Error: function requires cowsay" ; return 2 ; end
|
||||||
|
if not command --search --quiet lolcat ; echo "Error: function requires lolcat" ; return 3 ; end
|
||||||
|
fortune | cowsay | lolcat
|
||||||
|
end
|
7
fish/functions/portlistener.fish
Normal file
7
fish/functions/portlistener.fish
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
function portlistener --argument-names port
|
||||||
|
if test -n "$port"
|
||||||
|
lsof -n -i :$port | grep LISTEN
|
||||||
|
else
|
||||||
|
lsof -n -i | grep LISTEN
|
||||||
|
end
|
||||||
|
end
|
56
git/config
Normal file
56
git/config
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
[user]
|
||||||
|
name = Charles Gould
|
||||||
|
email = cgould@protonmail.com
|
||||||
|
[core]
|
||||||
|
autocrlf = input
|
||||||
|
editor = nvim
|
||||||
|
pager = diff-so-fancy | less --tabs=4 -RFX
|
||||||
|
[alias]
|
||||||
|
aliases = config --get-regexp alias
|
||||||
|
br = branch
|
||||||
|
co = checkout
|
||||||
|
df = diff
|
||||||
|
dc = diff --cached
|
||||||
|
dch = diff --cached HEAD~
|
||||||
|
lol = log --oneline --max-count=10 --decorate=no
|
||||||
|
ss = status --short
|
||||||
|
st = status --long
|
||||||
|
cp = cherry-pick
|
||||||
|
f = fetch --all --prune
|
||||||
|
pl = pull
|
||||||
|
ps = push
|
||||||
|
pu = push --set-upstream
|
||||||
|
pf = push --force
|
||||||
|
cm = commit -m
|
||||||
|
cv = commit -v
|
||||||
|
ca = commit --amend
|
||||||
|
can = commit --amend --no-edit
|
||||||
|
cand = commit --amend --no-edit --date=now
|
||||||
|
rbi = rebase --interactive
|
||||||
|
rh = reset HEAD
|
||||||
|
[color]
|
||||||
|
ui = auto
|
||||||
|
[color "branch"]
|
||||||
|
current = yellow reverse
|
||||||
|
local = yellow
|
||||||
|
remote = green
|
||||||
|
[color "diff"]
|
||||||
|
meta = yellow
|
||||||
|
frag = magenta bold
|
||||||
|
commit = yellow bold
|
||||||
|
old = red bold
|
||||||
|
new = green bold
|
||||||
|
whitespace = red reverse
|
||||||
|
[color "diff-highlight"]
|
||||||
|
oldNormal = red bold
|
||||||
|
oldHighlight = red bold 52
|
||||||
|
newNormal = green bold
|
||||||
|
newHighlight = green bold 22
|
||||||
|
[color "status"]
|
||||||
|
added = yellow
|
||||||
|
changed = green
|
||||||
|
untracked = cyan
|
||||||
|
[push]
|
||||||
|
default = current
|
||||||
|
[log]
|
||||||
|
date = human
|
12
install-symlinks.sh
Executable file
12
install-symlinks.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
DOTFILES="$HOME/.dotfiles"
|
||||||
|
|
||||||
|
# Create required directories before making links
|
||||||
|
mkdir -p "$HOME/.config"
|
||||||
|
|
||||||
|
# Create symlinks, forcing updates
|
||||||
|
ln -Fsv "$DOTFILES/.bashrc" "$HOME/.bashrc" # bash does not support XDG config
|
||||||
|
ln -Fsv "$DOTFILES/fish" "$HOME/.config"
|
||||||
|
ln -Fsv "$DOTFILES/nvim" "$HOME/.config"
|
||||||
|
ln -Fsv "$DOTFILES/git" "$HOME/.config"
|
21
install.sh
Executable file
21
install.sh
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
DOTFILES="$HOME/.dotfiles"
|
||||||
|
|
||||||
|
# Install plugin manager for Neovim, if it doesn't exist
|
||||||
|
VIM_PLUG_SRC="https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"
|
||||||
|
VIM_PLUG_DST="$HOME/.local/share/nvim/site/autoload/plug.vim"
|
||||||
|
if [ ! -f "$VIM_PLUG_DST" ]; then
|
||||||
|
echo "Downloading plug.vim ..."
|
||||||
|
curl -fLo "$VIM_PLUG_DST" --create-dirs "$VIM_PLUG_SRC"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add Homebrew-managed shells to system list
|
||||||
|
grep -q /usr/local/bin/bash /etc/shells || echo /usr/local/bin/bash | sudo tee -a /etc/shells
|
||||||
|
grep -q /usr/local/bin/fish /etc/shells || echo /usr/local/bin/fish | sudo tee -a /etc/shells
|
||||||
|
|
||||||
|
# Make fish the default shell
|
||||||
|
chsh -s /usr/local/bin/fish
|
||||||
|
|
||||||
|
# Install symlinks
|
||||||
|
"$DOTFILES/install-symlinks.sh"
|
34
nvim/init.vim
Normal file
34
nvim/init.vim
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
" use Vim mode instead of pure Vi, must be the first instruction
|
||||||
|
" wrapped in conditional to avoid side effects when already set
|
||||||
|
if &compatible
|
||||||
|
set nocompatible
|
||||||
|
endif
|
||||||
|
|
||||||
|
" configure plugins using vim-plug
|
||||||
|
" https://github.com/junegunn/vim-plug
|
||||||
|
call plug#begin('~/.cache/nvim/plugged')
|
||||||
|
Plug 'https://github.com/farmergreg/vim-lastplace' " intelligently reopen files at last edit position
|
||||||
|
Plug 'https://github.com/ntpeters/vim-better-whitespace' " highlights trailing whitespace, :StripWhitespace to remove
|
||||||
|
Plug 'https://github.com/tpope/vim-sensible' " defaults everyone can agree on
|
||||||
|
Plug 'https://github.com/vim-airline/vim-airline' " fancy statusline
|
||||||
|
call plug#end()
|
||||||
|
|
||||||
|
" display settings
|
||||||
|
set nonumber norelativenumber " show hybrid line numbers at startup
|
||||||
|
noremap <F2> :set number! relativenumber!<CR> " toggle line numbers
|
||||||
|
|
||||||
|
" write settings
|
||||||
|
set confirm " confirm :q in case of unsaved changes
|
||||||
|
|
||||||
|
" tab/space settings
|
||||||
|
set expandtab
|
||||||
|
set shiftwidth=2
|
||||||
|
set softtabstop=2
|
||||||
|
|
||||||
|
" clipboard settings
|
||||||
|
set clipboard=unnamedplus " enable copy/paste/yank to and from Vim/Neovim
|
||||||
|
|
||||||
|
" paste settings (in Neovim, use plain insert mode)
|
||||||
|
if !has('nvim')
|
||||||
|
set pastetoggle=<F3>
|
||||||
|
endif
|
Loading…
x
Reference in New Issue
Block a user