commit d8a298bb825cf4af9d0b2570b3e5207b763d5018 Author: Zoé Cassiopée Gauthier Date: Tue Jan 4 22:41:41 2022 -0500 Initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..ce6ba37 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# dotfiles + +* Execute `./bootstrap.sh` the first time to install a package manager and the dotfiles themselves. + +## Updating + +* Refresh this repository from GitHub by executing `git pull`. +* Execute `./bootstrap.sh` any time to install any new dotfile that may have been added to the repository. diff --git a/ackrc b/ackrc new file mode 100644 index 0000000..bda09a2 --- /dev/null +++ b/ackrc @@ -0,0 +1,7 @@ +--type-set +log=.log + +--nolog + +--pager +less -RFSX diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 0000000..b1fdd51 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +set -e + +if [ $SPIN ]; then + DOTFILES="$HOME/dotfiles" +else + DOTFILES="$(dirname -- "$(readlink -f -- "$0")")" +fi + +echo "🐚 Installing dotfiles from '$DOTFILES'..." + +ln -sf "$DOTFILES/ackrc" ~/.ackrc +ln -sf "$DOTFILES/gitconfig" ~/.gitconfig +ln -sf "$DOTFILES/inputrc" ~/.inputrc +ln -sf "$DOTFILES/tmux.conf" ~/.tmux.conf +ln -sf "$DOTFILES/zshenv" ~/.zshenv +ln -sf "$DOTFILES/zshrc" ~/.zshrc + +mkdir -p ~/.config +ln -sf "$DOTFILES/starship.toml" ~/.config/starship.toml + +if [ ! -d ~/.vim ]; then + git clone --quiet https://github.com/deuxpi/dotvim.git ~/.vim + ln -sf ~/.vim/vimrc ~/.vimrc +else + git -C ~/.vim pull --quiet +fi +mkdir -p ~/.config/coc/ +vim +'PlugInstall --sync' +qa + +if [ ! -d ~/.oh-my-zsh ]; then + sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended --keep-zshrc +fi +if [ ! -d ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions ]; then + git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions +fi +if [ ! -d ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting ]; then + git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting +fi +mkdir -p ~/.oh-my-zsh/custom/themes +ln -sf "$DOTFILES/themes/witchhazelhypercolor.zsh-theme" ~/.oh-my-zsh/custom/themes/witchhazelhypercolor.zsh-theme + +if ! [ -x "$(command -v starship)" ]; then + sh -c "$(curl -fsSL https://starship.rs/install.sh)" -- -y +fi + +mkdir -p ~/.config/kitty/ +ln -sf "$DOTFILES/kitty.conf" ~/.config/kitty/kitty.conf diff --git a/gitconfig b/gitconfig new file mode 100644 index 0000000..7e49997 --- /dev/null +++ b/gitconfig @@ -0,0 +1,3 @@ +[user] + name = Zoé Cassiopée Gauthier + email = hello@blorp.dev diff --git a/inputrc b/inputrc new file mode 100644 index 0000000..f5f45d0 --- /dev/null +++ b/inputrc @@ -0,0 +1,29 @@ +set input-meta on +set output-meta on +set colored-stats on +set completion-ignore-case on +set page-completions on +set show-all-if-ambiguous on +set show-all-if-unmodified on +set visible-stats on + +# Be more intelligent when autocompleting by also looking at the text after +# the cursor. For example, when the current line is "cd ~/src/mozil", and +# the cursor is on the "z", pressing Tab will not autocomplete it to "cd +# ~/src/mozillail", but to "cd ~/src/mozilla". (This is supported by the +# Readline used by Bash 4.) [from https://github.com/mathiasbynens/dotfiles] +set skip-completed-text on + +"\e[1~": beginning-of-line +"\e[4~": end-of-line +"\e[1;5C": forward-word +"\e[1;5D": backward-word +"\e[5C": forward-word +"\e[5D": backward-word +"\e\e[C": forward-word +"\e\e[D": backward-word + +# Use the text that has already been typed as the prefix for searching through +# commands (i.e. more intelligent Up/Down behavior) +"\e[B": history-search-forward +"\e[A": history-search-backward diff --git a/kitty.conf b/kitty.conf new file mode 100644 index 0000000..f1a0ee5 --- /dev/null +++ b/kitty.conf @@ -0,0 +1,55 @@ +# vim:fileencoding=utf-8:ft=conf:foldmethod=marker + +font_family IBM Plex Mono Semibold +italic_font IBM Plex Mono Semibold Italic +bold_font IBM Plex Mono Bold + +font_size 14 + +copy_on_select clipboard + +remember_window_size no +initial_window_width 120c +initial_window_height 50c + +cursor #F8F8F0 +cursor_text_color background + +foreground #F8F8F2 +background #282634 + +color0 #282634 +color1 #BF5C7D +color2 #62C28E +color3 #FFF781 +color4 #DCC8FF +color5 #716799 +color6 #62B5C1 +color7 #F8F8F2 + +color8 #665D8D +color9 #FFB8D1 +color10 #81FFBE +color11 #FFF9A3 +color12 #C5A3FF +color13 #8077A8 +color14 #81EEFF +color15 #F8F8F0 + +tab_bar_style powerline +tab_activity_symbol ✨ +tab_title_template "{index}: {title}" +active_tab_background #81FFBE +inactive_tab_background #FFB8D1 + +macos_quit_when_last_window_closed yes + +map cmd+kp_1 goto_tab 1 +map cmd+kp_2 goto_tab 2 +map cmd+kp_3 goto_tab 3 +map cmd+kp_4 goto_tab 4 +map cmd+kp_5 goto_tab 5 +map cmd+kp_6 goto_tab 6 +map cmd+kp_7 goto_tab 7 +map cmd+kp_8 goto_tab 8 +map cmd+kp_9 goto_tab 9 diff --git a/starship.toml b/starship.toml new file mode 100644 index 0000000..91a3980 --- /dev/null +++ b/starship.toml @@ -0,0 +1,19 @@ +command_timeout = 10000 + +[docker_context] +disabled = true + +[gcloud] +disabled = true + +[git_status] +conflicted = "🏳" +ahead = "🏎💨" +behind = "😰" +diverged = "😵" +untracked = "🤷‍" +stashed = "📦" +modified = "📝" +staged = '[++\($count\)](green)' +renamed = "👅" +deleted = "🗑" diff --git a/themes/witchhazelhypercolor.zsh-theme b/themes/witchhazelhypercolor.zsh-theme new file mode 100644 index 0000000..e51e0da --- /dev/null +++ b/themes/witchhazelhypercolor.zsh-theme @@ -0,0 +1,20 @@ +# Witch Hazel Hypercolor ZSH Theme +# +# by @medecau and @zoeisnowooze +# +# https://witchhazel.thea.codes/ +# https://twitter.com/ZoeIsNowOoze/status/1418271734327820289 +# +# 1. Create a file ~/.oh-my-zsh/custom/themes/witchhazelhypercolor.zsh-theme +# +# 2. Set the name of the theme to load in the ~/.zshrc configuration, for example: +# +# ZSH_THEME="witchhazelhypercolor" + +PROMPT="%(?:%{$FG[121]%}❯ :%{$FG[218]%}❯ )" +PROMPT+=' %{$FG[123]%}%c%{$reset_color%} $(git_prompt_info)' + +ZSH_THEME_GIT_PROMPT_PREFIX="%{$bold_color%}%{$FG[183]%}git:(%{$FG[218]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " +ZSH_THEME_GIT_PROMPT_DIRTY="%{$FG[183]%}) %{$FG[228]%}✗" +ZSH_THEME_GIT_PROMPT_CLEAN="%{$FG[183]%})" diff --git a/tmux.conf b/tmux.conf new file mode 100644 index 0000000..033cd79 --- /dev/null +++ b/tmux.conf @@ -0,0 +1,28 @@ +set-option -g prefix C-a +unbind-key C-b +bind-key a send-prefix + +# increase number of lines in window history +set -g history-limit 50000 + +# windows start at 1, not 0 +set -g base-index 1 + +# default terminal +set -g default-terminal "screen-256color" + +# display activity on status line +set -g visual-activity on + +# attempt to set terminal title +set -g set-titles on + +# don't wait for escape sequences +set -sg escape-time 0 + +# aggressive resize causes window to only resize to smallest client that is +# "actively" looking at the window +setw -g aggressive-resize on + +# monitor activity in all windows +setw -g monitor-activity diff --git a/zshenv b/zshenv new file mode 100644 index 0000000..c36eec6 --- /dev/null +++ b/zshenv @@ -0,0 +1,7 @@ +export EDITOR=vim +export PAGER=less +export LESS=RSM + +if [ -f "$HOME/.cargo/env" ]; then + . "$HOME/.cargo/env" +fi diff --git a/zshrc b/zshrc new file mode 100644 index 0000000..ab48ac8 --- /dev/null +++ b/zshrc @@ -0,0 +1,133 @@ +if [ -n "${commands[fzf-share]}" ]; then + source "$(fzf-share)/key-bindings.zsh" + source "$(fzf-share)/completion.zsh" +fi + +fpath+=~/.zfunc + +# If you come from bash you might have to change your $PATH. +# export PATH=$HOME/bin:/usr/local/bin:$PATH +export PATH=$HOME/.local/bin:$PATH + +# Path to your oh-my-zsh installation. +export ZSH="$HOME/.oh-my-zsh" + +# Set name of the theme to load --- if set to "random", it will +# load a random theme each time oh-my-zsh is loaded, in which case, +# to know which specific one was loaded, run: echo $RANDOM_THEME +# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes +ZSH_THEME="witchhazelhypercolor" + +# Set list of themes to pick from when loading at random +# Setting this variable when ZSH_THEME=random will cause zsh to load +# a theme from this variable instead of looking in $ZSH/themes/ +# If set to an empty array, this variable will have no effect. +# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) + +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" + +# Uncomment the following line to use hyphen-insensitive completion. +# Case-sensitive completion must be off. _ and - will be interchangeable. +# HYPHEN_INSENSITIVE="true" + +# Uncomment the following line to disable bi-weekly auto-update checks. +# DISABLE_AUTO_UPDATE="true" + +# Uncomment the following line to automatically update without prompting. +# DISABLE_UPDATE_PROMPT="true" + +# Uncomment the following line to change how often to auto-update (in days). +# export UPDATE_ZSH_DAYS=13 + +# Uncomment the following line if pasting URLs and other text is messed up. +# DISABLE_MAGIC_FUNCTIONS="true" + +# Uncomment the following line to disable colors in ls. +# DISABLE_LS_COLORS="true" + +# Uncomment the following line to disable auto-setting terminal title. +# DISABLE_AUTO_TITLE="true" + +# Uncomment the following line to enable command auto-correction. +# ENABLE_CORRECTION="true" + +# Uncomment the following line to display red dots whilst waiting for completion. +# COMPLETION_WAITING_DOTS="true" + +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +# DISABLE_UNTRACKED_FILES_DIRTY="true" + +# Uncomment the following line if you want to change the command execution time +# stamp shown in the history command output. +# You can set one of the optional three formats: +# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" +# or set a custom format using the strftime function format specifications, +# see 'man strftime' for details. +# HIST_STAMPS="mm/dd/yyyy" + +# Would you like to use another custom folder than $ZSH/custom? +# ZSH_CUSTOM=/path/to/new-custom-folder + +# Which plugins would you like to load? +# Standard plugins can be found in $ZSH/plugins/ +# Custom plugins may be added to $ZSH_CUSTOM/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. +plugins=( + common-aliases + fzf + git + zsh-autosuggestions + zsh-syntax-highlighting +) + +ZSH_HIGHLIGHT_MAXLENGTH=300 + +ZSH_HIGHLIGHT_HIGHLIGHTERS=( + main + brackets + pattern + cursor +) + +ZSH_AUTOSUGGEST_STRATEGY=match_prev_cmd + +source $ZSH/oh-my-zsh.sh + +# User configuration + +# export MANPATH="/usr/local/man:$MANPATH" + +# You may need to manually set your language environment +# export LANG=en_US.UTF-8 + +# Preferred editor for local and remote sessions +# if [[ -n $SSH_CONNECTION ]]; then +# export EDITOR='vim' +# else +# export EDITOR='mvim' +# fi + +# Compilation flags +# export ARCHFLAGS="-arch x86_64" + +# Set personal aliases, overriding those provided by oh-my-zsh libs, +# plugins, and themes. Aliases can be placed here, though oh-my-zsh +# users are encouraged to define aliases within the ZSH_CUSTOM folder. +# For a full list of active aliases, run `alias`. +# +# Example aliases +# alias zshconfig="mate ~/.zshrc" +# alias ohmyzsh="mate ~/.oh-my-zsh" + +alias ssh="kitty +kitten ssh" +alias icat="kitty icat --align=left" +alias isvg="rsvg-convert | icat" +alias idot='dot -Tsvg -Gbgcolor="transparent" -Ecolor="#f8f8f2ff" -Efontcolor="#f8f8f2ff" -Efontname="IBM Plex Mono Semibold" -Ncolor="#f8f8f2ff" -Nfontcolor="#f8f8f2ff" -Nfontname="IBM Plex Mono Semibold" | isvg' + +if which starship >/dev/null 2>&1; then + eval "$(starship init zsh)" +fi