update dotfiles 11.2024

This commit is contained in:
2024-11-06 13:18:05 +01:00
parent 5b47968d93
commit c1e4702866
29 changed files with 1312 additions and 443 deletions

View File

@@ -1,27 +0,0 @@
alias ohmyzsh="mate ~/.oh-my-zsh"
alias private='set +o history'
alias uprivate='set -o history'
alias wion='networksetup -setairportpower en0 on'
alias wiof='networksetup -setairportpower en0 off'
alias blueon='blueutil -p 1'
alias blueoff='blueutil -p 0'
alias cli='python ~/Dropbox/python/cli.py'
alias plexloop='watch -n 4 python ~/Dropbox/Node-Com-Handler/old_v0.1/plexLoop.py'
alias load='/Volumes/keys/load'
alias sumcheck='python ~/python/sumcheck.py'
alias home='watch python3 ~/python/homeChecker/homeCheck.py'
alias goo='~/./python/api/gooShort.py -c'
alias pirate='~/./python/pirateFetch/fetchPiratebay.py'
alias show='~/./python/seasonedShows/seasonedFolders.py'
alias llpass='lpass show -c --password'
alias subl='open /Applications/Sublime\ Text.app/'
alias playing='http https://api.kevinmidboe.com/api/v1/plex/playing -b'
alias toggle='curl -X POST 10.0.0.67:3069/toggle > /dev/null 2>&1'
alias forecast='~/python/termWeather/term_forecast/./term_weather.py'
alias trash='rmtrash'
alias del="rmtrash"
alias emoji="http https://api.kevinmidboe.com/api/v1/emoji -b"
alias gimme="grep -rnw ''"
alias config='/usr/bin/git --git-dir=$HOME/.dots/ --work-tree=$HOME'
alias l='tree -C -L 1'
alias l2='tree -C -L 2'

View File

@@ -1,47 +0,0 @@
export PS1="\W:$ "
export SHELL="/bin/bash"
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
HISTFILESIZE=10000
# import aliases from file
. ~/.aliases
function vpn-connect {
/usr/bin/env osascript <<-EOF
tell application "System Events"
tell current location of network preferences
set VPN to service "VPN (midboe.ddns.net)" -- your VPN name here
if exists VPN then connect VPN
repeat while (current configuration of VPN is not connected)
delay 1
end repeat
end tell
end tell
EOF
}
function vpn-disconnect {
/usr/bin/env osascript <<-EOF
tell application "System Events"
tell current location of network preferences
set VPN to service "VPN (midboe.ddns.net)" -- your VPN name here
if exists VPN then disconnect VPN
end tell
end tell
return
EOF
}
# Setting PATH for Python 3.4
# The orginal version is saved in .bash_profile.pysave
# PATH="/Library/Frameworks/Python.framework/Versions/3.4/bin:${PATH}"
# export PATH
# Setting PATH for Python 3.6
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
export PATH
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

View File

@@ -1,5 +0,0 @@
# PATH=$PATH:~/bin
Tab: menu-complete
"\e[Z": complete
alias config=/usr/bin/git --git-dir=/Users/kevinmidboe/.cfg/ --work-tree=/Users/kevinmidboe'

11
.gitignore vendored
View File

@@ -1,11 +0,0 @@
/*
!.bashrc
!.bash_profile
!.vimrc
!.zshrc
!/.zsh-themes
!.aliases
!/.ssh
/.ssh/*
!/.ssh/*config
!.hyper.js

132
.hyper.js
View File

@@ -1,132 +0,0 @@
// Future versions of Hyper may add additional config options,
// which will not automatically be merged into this file.
// See https://hyper.is#cfg for all currently supported options.
module.exports = {
config: {
// default font size in pixels for all tabs
fontSize: 12,
// font family with optional fallbacks
fontFamily: 'Menlo, "DejaVu Sans Mono", Consolas, "Lucida Console", monospace',
// terminal cursor background color and opacity (hex, rgb, hsl, hsv, hwb or cmyk)
cursorColor: 'rgba(248,28,229,0.8)',
// `BEAM` for |, `UNDERLINE` for _, `BLOCK` for █
cursorShape: 'BLOCK',
// set to true for blinking cursor
cursorBlink: false,
// color of the text
foregroundColor: '#fff',
// terminal background color
backgroundColor: '#000',
// border color (window, tabs)
borderColor: '#333',
// custom css to embed in the main window
css: '',
// custom css to embed in the terminal window
termCSS: '',
// set to `true` (without backticks) if you're using a Linux setup that doesn't show native menus
// default: `false` on Linux, `true` on Windows (ignored on macOS)
showHamburgerMenu: '',
// set to `false` if you want to hide the minimize, maximize and close buttons
// additionally, set to `'left'` if you want them on the left, like in Ubuntu
// default: `true` on windows and Linux (ignored on macOS)
showWindowControls: '',
// custom padding (css format, i.e.: `top right bottom left`)
padding: '12px 14px',
// the full list. if you're going to provide the full color palette,
// including the 6 x 6 color cubes and the grayscale map, just provide
// an array here instead of a color map object
colors: {
black: '#000000',
red: '#ff0000',
green: '#33ff00',
yellow: '#ffff00',
blue: '#0066ff',
magenta: '#cc00ff',
cyan: '#00ffff',
white: '#d0d0d0',
lightBlack: '#808080',
lightRed: '#ff0000',
lightGreen: '#33ff00',
lightYellow: '#ffff00',
lightBlue: '#0066ff',
lightMagenta: '#cc00ff',
lightCyan: '#00ffff',
lightWhite: '#ffffff'
},
// the shell to run when spawning a new session (i.e. /usr/local/bin/fish)
// if left empty, your system's login shell will be used by default
// make sure to use a full path if the binary name doesn't work
// (e.g `C:\\Windows\\System32\\bash.exe` instead of just `bash.exe`)
// if you're using powershell, make sure to remove the `--login` below
shell: '/bin/zsh',
// for setting shell arguments (i.e. for using interactive shellArgs: ['-i'])
// by default ['--login'] will be used
shellArgs: ['--login'],
// for environment variables
env: {},
// set to false for no bell
// bell: 'SOUND',
bell: false,
// if true, selected text will automatically be copied to the clipboard
copyOnSelect: false
// if true, on right click selected text will be copied or pasted if no
// selection is present (true by default on Windows)
// quickEdit: true
// URL to custom bell
// bellSoundURL: 'http://example.com/bell.mp3',
// for advanced config flags please refer to https://hyper.is/#cfg
},
// a list of plugins to fetch and install from npm
// format: [@org/]project[#version]
// examples:
// `hyperpower`
// `@company/project`
// `project#1.0.1`
plugins: [
"hyper-markdown-preview",
"hypercwd",
"hyper-statusline",
"hyper-pane",
"hyper-chesterish",
"hyperterm-tabs",
"hyper-dracula"
],
// in development, you can create a directory under
// `~/.hyper_plugins/local/` and include it here
// to load it and avoid it being `npm install`ed
localPlugins: [],
hyperStatusLine: {
dirtyColor: 'salmon',
},
paneNavigation: {
showIndicators: false,
indicatorPrefix: '^ddd',
},
};

View File

@@ -1,66 +0,0 @@
Include ~/.ssh/*_config
Host imm
HostName 10.0.0.114
User USERID
KexAlgorithms diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
Host *
AddKeysToAgent yes
IgnoreUnknown UseKeychain
UseKeychain yes
Host apollo
HostName 10.0.0.102
User kevin
Host janus
HostName 10.0.0.110
User root
Host xoa
HostName 10.0.0.43
User kevin
Host plex
HostName 10.0.0.44
User kevin
Host api
HostName 10.0.0.114
User kevin
Host elasic
HostName 10.0.0.115
Host i2c
HostName 10.0.0.69
User pi
Host macserver
HostName 10.0.0.31
User macserver
Host airplay
HostName 10.0.0.21
User pi
Host hub
HostName 10.0.0.25
User pi
Host ntnu
Hostname login.stud.ntnu.no
User komidboe
Host chip2
Hostname 10.0.0.67
User chip
Host zerow
Hostname 10.0.0.68
User pi
Host curtain
Hostname 10.0.0.9
User pi

50
.vimrc
View File

@@ -1,50 +0,0 @@
syntax on
set nocompatible " be iMproved, required
filetype plugin on
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'git@github.com:ajh17/VimCompletesMe.git'
Plugin 'git@github.com:Valloric/YouCompleteMe.git'
Plugin 'git@github.com:moll/vim-node.git'
" Vue syntax highlighting - https://github.com/posva/vim-vue
Plugin 'posva/vim-vue'
" Wakatime plugin
Plugin 'wakatime/vim-wakatime'
" autocmd FileType markdown let b:dispatch = 'octodown --live-reload %'
" Plugin 'JamshedVesuna/vim-markdown-preview'
" let vim_markdown_preview_github=1
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line
" Set tab to 2 spaces
set tabstop=2
set shiftwidth=2
set softtabstop=2
set expandtab
" Set line number
set number

View File

@@ -1,7 +0,0 @@
local ret_status="%(?:%{$fg_bold[green]%}%M ➜ :%{$fg_bold[red]%}%M ➜ )"
PROMPT='${ret_status} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"

98
.zshrc
View File

@@ -1,98 +0,0 @@
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH=$HOME/.oh-my-zsh
export PATH="$HOME/.cargo/bin:$PATH"
export PATH="/usr/local/opt/ruby/bin:$PATH"
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
# Set name of the theme to load. Optionally, if you set this to "random"
# it'll load a random theme each time that oh-my-zsh is loaded.
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="robbyrussell"
# Set list of themes to load
# Setting this variable when ZSH_THEME=random
# cause zsh load theme from this variable instead of
# looking in ~/.oh-my-zsh/themes/
# An empty array 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 change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13
# 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.
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# 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? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
git
)
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"
# ssh
# export SSH_KEY_PATH="~/.ssh/rsa_id"
# 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"
. ~/.aliases

7
README.md Normal file
View File

@@ -0,0 +1,7 @@
# kevinmidboe dotfiles
Install using curl
```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/kevinmidboe/dotfiles/main/install.sh)"
```

14
alacritty/alacritty.yml Normal file
View File

@@ -0,0 +1,14 @@
font:
size: 14
normal:
family: SFMono Nerd Font
# Colors (Terminal.app)
alt_send_esc: false
# New shells should run fish
shell:
program: /usr/local/bin/fish
args:
- --login

View File

@@ -0,0 +1,7 @@
complete --command fisher --exclusive --long help --description "Print help"
complete --command fisher --exclusive --long version --description "Print version"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex"
complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)"

185
fish/completions/git.fish Normal file
View File

@@ -0,0 +1,185 @@
abbr -a -- ga 'git add'
abbr -a -- gaa 'git add --all'
abbr -a -- gapa 'git add --patch'
abbr -a -- gau 'git add --update'
abbr -a -- gav 'git add --verbose'
abbr -a -- gap 'git apply'
abbr -a -- gapt 'git apply --3way'
abbr -a -- gb 'git branch'
abbr -a -- gba 'git branch --all'
abbr -a -- gbd 'git branch --delete'
abbr -a -- gbD 'git branch --delete --force'
abbr -a -- gbl 'git blame -b -w'
abbr -a -- gbnm 'git branch --no-merged'
abbr -a -- gbr 'git branch --remote'
abbr -a -- gbs 'git bisect'
abbr -a -- gbsb 'git bisect bad'
abbr -a -- gbsg 'git bisect good'
abbr -a -- gbsr 'git bisect reset'
abbr -a -- gbss 'git bisect start'
abbr -a -- gc 'git commit --verbose'
abbr -a -- gc ='git commit --verbose --amend'
abbr -a -- gcn ='git commit --verbose --no-edit --amend'
abbr -a -- gca 'git commit --verbose --all'
abbr -a -- gca ='git commit --verbose --all --amend'
abbr -a -- gcan ='git commit --verbose --all --no-edit --amend'
abbr -a -- gcans ='git commit --verbose --all --signoff --no-edit --amend'
abbr -a -- gcam 'git commit --all --message'
abbr -a -- gcsm 'git commit --signoff --message'
abbr -a -- gcas 'git commit --all --signoff'
abbr -a -- gcasm 'git commit --all --signoff --message'
abbr -a -- gcb 'git checkout -b'
abbr -a -- gcf 'git config --list'
abbr -a -- gcl 'git clone --recurse-submodules'
abbr -a -- gclean 'git clean --interactive -d'
abbr -a -- gpristine 'git reset --hard && git clean --force -dx'
abbr -a -- gcm 'git checkout $(git_main_branch)'
abbr -a -- gcd 'git checkout $(git_develop_branch)'
abbr -a -- gcmsg 'git commit --message'
abbr -a -- gco 'git checkout'
abbr -a -- gcor 'git checkout --recurse-submodules'
abbr -a -- gcount 'git shortlog --summary --numbered'
abbr -a -- gcp 'git cherry-pick'
abbr -a -- gcpa 'git cherry-pick --abort'
abbr -a -- gcpc 'git cherry-pick --continue'
abbr -a -- gcs 'git commit --gpg-sign'
abbr -a -- gcss 'git commit --gpg-sign --signoff'
abbr -a -- gcssm 'git commit --gpg-sign --signoff --message'
alias gd='git diff'
alias gdca='git diff --cached'
alias gdcw='git diff --cached --word-diff'
alias gdct='git describe --tags $(git rev-list --tags --max-count=1)'
alias gds='git diff --staged'
alias gdt='git diff-tree --no-commit-id --name-only -r'
alias gdup='git diff @{upstream}'
alias gdw='git diff --word-diff'
abbr -a -- ggpull 'git pull origin "$(git_current_branch)"'
abbr -a -- ggpush 'git push origin "$(git_current_branch)"'
abbr -a -- ggsup 'git branch --set-upstream-to=origin/$(git_current_branch)'
abbr -a -- gpsup 'git push --set-upstream origin $(git_current_branch)'
abbr -a -- ghh 'git help'
abbr -a -- gignore 'git update-index --assume-unchanged'
abbr -a -- gignored 'git ls-files -v | grep "^[[:lower:]]"'
abbr -a -- gk '\gitk --all --branches &!'
abbr -a -- gke '\gitk --all $(git log --walk-reflogs --pretty=%h) &!'
abbr -a -- gl 'git pull'
abbr -a -- glg 'git log --stat'
abbr -a -- glgp 'git log --stat --patch'
abbr -a -- glgg 'git log --graph'
abbr -a -- glgga 'git log --graph --decorate --all'
abbr -a -- glgm 'git log --graph --max-count=10'
abbr -a -- glo 'git log --oneline --decorate'
abbr -a -- glol "git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'"
abbr -a -- glols "git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --stat"
abbr -a -- glod "git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset'"
abbr -a -- glods "git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short"
abbr -a -- glola "git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --all"
abbr -a -- glog 'git log --oneline --decorate --graph'
abbr -a -- gloga 'git log --oneline --decorate --graph --all'
abbr -a -- glp "_git_log_prettily"
abbr -a -- gm 'git merge'
abbr -a -- gmom 'git merge origin/$(git_main_branch)'
abbr -a -- gmtl 'git mergetool --no-prompt'
abbr -a -- gmtlvim 'git mergetool --no-prompt --tool=vimdiff'
abbr -a -- gmum 'git merge upstream/$(git_main_branch)'
abbr -a -- gma 'git merge --abort'
abbr -a -- gp 'git push'
abbr -a -- gpd 'git push --dry-run'
abbr -a -- gpf 'git push --force-with-lease'
abbr -a -- gpf ='git push --force'
abbr -a -- gpoat 'git push origin --all && git push origin --tags'
abbr -a -- gpr 'git pull --rebase'
abbr -a -- gpu 'git push upstream'
abbr -a -- gpv 'git push --verbose'
abbr -a -- gr 'git remote'
abbr -a -- gra 'git remote add'
abbr -a -- grb 'git rebase'
abbr -a -- grba 'git rebase --abort'
abbr -a -- grbc 'git rebase --continue'
abbr -a -- grbd 'git rebase $(git_develop_branch)'
abbr -a -- grbi 'git rebase --interactive'
abbr -a -- grbm 'git rebase $(git_main_branch)'
abbr -a -- grbom 'git rebase origin/$(git_main_branch)'
abbr -a -- grbo 'git rebase --onto'
abbr -a -- grbs 'git rebase --skip'
abbr -a -- grev 'git revert'
abbr -a -- grh 'git reset'
abbr -a -- grhh 'git reset --hard'
abbr -a -- groh 'git reset origin/$(git_current_branch) --hard'
abbr -a -- grm 'git rm'
abbr -a -- grmc 'git rm --cached'
abbr -a -- grmv 'git remote rename'
abbr -a -- grrm 'git remote remove'
abbr -a -- grs 'git restore'
abbr -a -- grset 'git remote set-url'
abbr -a -- grss 'git restore --source'
abbr -a -- grst 'git restore --staged'
abbr -a -- grt 'cd "$(git rev-parse --show-toplevel || echo .)"'
abbr -a -- gru 'git reset --'
abbr -a -- grup 'git remote update'
abbr -a -- grv 'git remote --verbose'
abbr -a -- gsb 'git status --short --branch'
abbr -a -- gsd 'git svn dcommit'
abbr -a -- gsh 'git show'
abbr -a -- gsi 'git submodule init'
abbr -a -- gsps 'git show --pretty=short --show-signature'
abbr -a -- gsr 'git svn rebase'
abbr -a -- gss 'git status --short'
abbr -a -- gst 'git status'
abbr -a -- gstaa 'git stash apply'
abbr -a -- gstc 'git stash clear'
abbr -a -- gstd 'git stash drop'
abbr -a -- gstl 'git stash list'
abbr -a -- gstp 'git stash pop'
abbr -a -- gsts 'git stash show --text'
abbr -a -- gstu 'gsta --include-untracked'
abbr -a -- gstall 'git stash --all'
abbr -a -- gsu 'git submodule update'
abbr -a -- gsw 'git switch'
abbr -a -- gswc 'git switch --create'
abbr -a -- gswm 'git switch $(git_main_branch)'
abbr -a -- gswd 'git switch $(git_develop_branch)'
abbr -a -- gts 'git tag --sign'
abbr -a -- gtv 'git tag | sort -V'
abbr -a -- gtl 'gtl(){ git tag --sort=-v:refname -n --list "${1}*" }; noglob gtl'
abbr -a -- gunignore 'git update-index --no-assume-unchanged'
abbr -a -- gunwip 'git log --max-count=1 | grep -q -c "\--wip--" && git reset HEAD~1'
abbr -a -- gup 'git pull --rebase'
abbr -a -- gupv 'git pull --rebase --verbose'
abbr -a -- gupa 'git pull --rebase --autostash'
abbr -a -- gupav 'git pull --rebase --autostash --verbose'
abbr -a -- gupom 'git pull --rebase origin $(git_main_branch)'
abbr -a -- gupomi 'git pull --rebase=interactive origin $(git_main_branch)'
abbr -a -- glum 'git pull upstream $(git_main_branch)'
abbr -a -- gluc 'git pull upstream $(git_current_branch)'
abbr -a -- gwch 'git whatchanged -p --abbrev-commit --pretty=medium'
abbr -a -- gwip 'git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]"'
abbr -a -- gwt 'git worktree'
abbr -a -- gwta 'git worktree add'
abbr -a -- gwtls 'git worktree list'
abbr -a -- gwtmv 'git worktree move'
abbr -a -- gwtrm 'git worktree remove'
abbr -a -- gam 'git am'
abbr -a -- gamc 'git am --continue'
abbr -a -- gams 'git am --skip'
abbr -a -- gama 'git am --abort'
abbr -a -- gamscp 'git am --show-current-patch'

7
fish/conf.d/omf.fish Normal file
View File

@@ -0,0 +1,7 @@
# Path to Oh My Fish install.
set -q XDG_DATA_HOME
and set -gx OMF_PATH "$XDG_DATA_HOME/omf"
or set -gx OMF_PATH "$HOME/.local/share/omf"
# Load Oh My Fish configuration.
source $OMF_PATH/init.fish

17
fish/config.fish Normal file
View File

@@ -0,0 +1,17 @@
if status is-interactive
# Commands to run in interactive sessions can go here
end
source $HOME/.profile
# Common programs
abbr -a -- vi nvim
# File exploring
abbr -a -- l 'tree -L 1 -a'
abbr -a -- ll 'tree -L 2 -a'
# Git (loaded from completions/git.fish)
source $HOME/.config/fish/completions/git.fish
# thefuck --alias | source

1
fish/fish_plugins Normal file
View File

@@ -0,0 +1 @@
jorgebucaran/fisher

33
fish/fish_variables Normal file
View File

@@ -0,0 +1,33 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3400
SETUVAR _fisher_upgraded_to_4_4:\x1d
SETUVAR fish_color_autosuggestion:555\x1ebrblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:blue
SETUVAR fish_color_comment:red
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:green
SETUVAR fish_color_error:brred
SETUVAR fish_color_escape:brcyan
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:brcyan
SETUVAR fish_color_param:cyan
SETUVAR fish_color_quote:yellow
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
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_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:B3A06D\x1eyellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr
SETUVAR fish_user_paths:/opt/homebrew/opt/ruby\x402\x2e7/bin

240
fish/functions/fisher.fish Normal file
View File

@@ -0,0 +1,240 @@
function fisher --argument-names cmd --description "A plugin manager for Fish"
set --query fisher_path || set --local fisher_path $__fish_config_dir
set --local fisher_version 4.4.3
set --local fish_plugins $__fish_config_dir/fish_plugins
switch "$cmd"
case -v --version
echo "fisher, version $fisher_version"
case "" -h --help
echo "Usage: fisher install <plugins...> Install plugins"
echo " fisher remove <plugins...> Remove installed plugins"
echo " fisher update <plugins...> Update installed plugins"
echo " fisher update Update all installed plugins"
echo " fisher list [<regex>] List installed plugins matching regex"
echo "Options:"
echo " -v or --version Print version"
echo " -h or --help Print this help message"
echo "Variables:"
echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~
case ls list
string match --entire --regex -- "$argv[2]" $_fisher_plugins
case install update remove
isatty || read --local --null --array stdin && set --append argv $stdin
set --local install_plugins
set --local update_plugins
set --local remove_plugins
set --local arg_plugins $argv[2..-1]
set --local old_plugins $_fisher_plugins
set --local new_plugins
test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins)
if ! set --query argv[2]
if test "$cmd" != update
echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1
else if ! set --query file_plugins
echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1
end
set arg_plugins $file_plugins
end
for plugin in $arg_plugins
set plugin (test -e "$plugin" && realpath $plugin || string lower -- $plugin)
contains -- "$plugin" $new_plugins || set --append new_plugins $plugin
end
if set --query argv[2]
for plugin in $new_plugins
if contains -- "$plugin" $old_plugins
test "$cmd" = remove &&
set --append remove_plugins $plugin ||
set --append update_plugins $plugin
else if test "$cmd" = install
set --append install_plugins $plugin
else
echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1
end
end
else
for plugin in $new_plugins
contains -- "$plugin" $old_plugins &&
set --append update_plugins $plugin ||
set --append install_plugins $plugin
end
for plugin in $old_plugins
contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin
end
end
set --local pid_list
set --local source_plugins
set --local fetch_plugins $update_plugins $install_plugins
set --local fish_path (status fish-path)
echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal)
for plugin in $fetch_plugins
set --local source (command mktemp -d)
set --append source_plugins $source
command mkdir -p $source/{completions,conf.d,themes,functions}
$fish_path --command "
if test -e $plugin
command cp -Rf $plugin/* $source
else
set temp (command mktemp -d)
set repo (string split -- \@ $plugin) || set repo[2] HEAD
if set path (string replace --regex -- '^(https://)?gitlab.com/' '' \$repo[1])
set name (string split -- / \$path)[-1]
set url https://gitlab.com/\$path/-/archive/\$repo[2]/\$name-\$repo[2].tar.gz
else
set url https://api.github.com/repos/\$repo[1]/tarball/\$repo[2]
end
echo Fetching (set_color --underline)\$url(set_color normal)
if curl --silent -L \$url | tar -xzC \$temp -f - 2>/dev/null
command cp -Rf \$temp/*/* $source
else
echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2
command rm -rf $source
end
command rm -rf \$temp
end
set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files
" &
set --append pid_list (jobs --last --pid)
end
wait $pid_list 2>/dev/null
for plugin in $fetch_plugins
if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source
if set --local index (contains --index -- "$plugin" $install_plugins)
set --erase install_plugins[$index]
else
set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)]
end
end
end
for plugin in $update_plugins $remove_plugins
if set --local index (contains --index -- "$plugin" $_fisher_plugins)
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
if contains -- "$plugin" $remove_plugins
for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var)
emit {$name}_uninstall
end
printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
set --erase _fisher_plugins[$index]
end
command rm -rf (string replace -- \~ ~ $$plugin_files_var)
functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var)
for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var)
complete --erase --command $name
end
set --erase $plugin_files_var
end
end
if set --query update_plugins[1] || set --query install_plugins[1]
command mkdir -p $fisher_path/{functions,themes,conf.d,completions}
end
for plugin in $update_plugins $install_plugins
set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)]
set --local files $source/{functions,themes,conf.d,completions}/*
if set --local index (contains --index -- $plugin $install_plugins)
set --local user_files $fisher_path/{functions,themes,conf.d,completions}/*
set --local conflict_files
for file in (string replace -- $source/ $fisher_path/ $files)
contains -- $file $user_files && set --append conflict_files $file
end
if set --query conflict_files[1] && set --erase install_plugins[$index]
echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2
continue
end
end
for file in (string replace -- $source/ "" $files)
command cp -RLf $source/$file $fisher_path/$file
end
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files | string replace -- ~ \~)
contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin
contains -- $plugin $install_plugins && set --local event install || set --local event update
printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var | string replace -- \~ ~)
source $file
if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file)
emit {$name}_$event
end
end
end
command rm -rf $source_plugins
if set --query _fisher_plugins[1]
set --local commit_plugins
for plugin in $file_plugins
contains -- (string lower -- $plugin) (string lower -- $_fisher_plugins) && set --append commit_plugins $plugin
end
for plugin in $_fisher_plugins
contains -- (string lower -- $plugin) (string lower -- $commit_plugins) || set --append commit_plugins $plugin
end
printf "%s\n" $commit_plugins >$fish_plugins
else
set --erase _fisher_plugins
command rm -f $fish_plugins
end
set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins)
test "$total" != "0 0 0" && echo (string join ", " (
test $total[1] = 0 || echo "Installed $total[1]") (
test $total[2] = 0 || echo "Updated $total[2]") (
test $total[3] = 0 || echo "Removed $total[3]")
) plugin/s
case \*
echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1
end
end
if ! set --query _fisher_upgraded_to_4_4
set --universal _fisher_upgraded_to_4_4
if functions --query _fisher_list
set --query XDG_DATA_HOME[1] || set --local XDG_DATA_HOME ~/.local/share
command rm -rf $XDG_DATA_HOME/fisher
functions --erase _fisher_{list,plugin_parse}
fisher update >/dev/null 2>/dev/null
else
for var in (set --names | string match --entire --regex '^_fisher_.+_files$')
set $var (string replace -- ~ \~ $$var)
end
functions --erase _fisher_fish_postexec
end
end

25
install.sh Normal file
View File

@@ -0,0 +1,25 @@
#!/bin/sh
export REPO="https://github.com/kevinmidboe/dotfiles"
export DOT_CONFIG_FOLDER="$HOME/.config"
# clone dotfiles repo
echo "Cloning github repo"
git clone --depth=1 $REPO $DOT_CONFIG_FOLDER
cd $DOT_CONFIG_FOLDER
# create symlinks
echo "Creating symlinks"
ln -s $HOME/.config/profile $HOME/.profile
ln -s $HOME/.config/wakatime.cfg $HOME/.wakatime.cfg
# copy script files
echo "Copying scripts to /usr/local/bin"
cp scripts/* /usr/local/bin/
# run install scripts
for script in install/*.sh; do
echo "Running install script $script..."
sh "$script"
done

14
install/0-brew-cask.sh Normal file
View File

@@ -0,0 +1,14 @@
# Install cask packages
apps=(
1password
1password-cli
docker
firefox
google-cloud-sdk
google-chrome
homerow
vlc
)
brew install "${apps[@]}" --cask

56
install/0-brew.sh Normal file
View File

@@ -0,0 +1,56 @@
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew update
brew upgrade
# Add required taps
brew tap hashicorp/tap
# Install packages
apps=(
ansible
binwalk
btop
cario
cmake
drone-cli
elixir
erlang
fd
ffmpeg
fish
gcc
gd
gh
gnupg
gnutls
go
helm
httpie
iperf3
ipmitool
jq
k9s
lsusb
lua
lua-language-server
meson
ncdu
neovim
nmap
ruby
tailscale
telnet
hashicorp/tap/terraform
tmux
tree
watch
wget
zig
)
brew install "${apps[@]}"
# Git comes with diff-highlight, but isn't in the PATH
ln -sf "$(brew --prefix)/share/git-core/contrib/diff-highlight/diff-highlight" /usr/local/bin/diff-highlight

14
install/node.sh Normal file
View File

@@ -0,0 +1,14 @@
# install latest node & yarn
brew install node yarn
# install specific node versions
brew install node@20
brew install node@18
# Globally install with npm
packages=(
prettier
)
yarn global install "${packages[@]}"

11
install/python.sh Normal file
View File

@@ -0,0 +1,11 @@
# Install lastest python
brew install python3
# Install specific versions of python
brew install python@3.12
brew install python@3.18
# Install global python pacakges
# pip3 install setuptools
brew install virtualenv

597
nvim/init.lua Normal file
View File

@@ -0,0 +1,597 @@
-- Install packer
local install_path = vim.fn.stdpath 'data' .. '/site/pack/packer/start/packer.nvim'
local is_bootstrap = false
if vim.fn.empty(vim.fn.glob(install_path)) > 0 then
is_bootstrap = true
vim.fn.system { 'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path }
vim.cmd [[packadd packer.nvim]]
end
require('packer').startup(function(use)
-- Package manager
use 'wbthomason/packer.nvim'
use { -- LSP Configuration & Plugins
'neovim/nvim-lspconfig',
requires = {
-- Automatically install LSPs to stdpath for neovim
'williamboman/mason.nvim',
'williamboman/mason-lspconfig.nvim',
-- Useful status updates for LSP
'j-hui/fidget.nvim',
-- Additional lua configuration, makes nvim stuff amazing
'folke/neodev.nvim',
},
}
use { -- Autocompletion
'hrsh7th/nvim-cmp',
requires = { 'hrsh7th/cmp-nvim-lsp', 'L3MON4D3/LuaSnip', 'saadparwaiz1/cmp_luasnip' },
}
use { -- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter',
run = function()
pcall(require('nvim-treesitter.install').update { with_sync = true })
end,
}
use { -- Additional text objects via treesitter
'nvim-treesitter/nvim-treesitter-textobjects',
after = 'nvim-treesitter',
}
-- Git related plugins
use 'tpope/vim-fugitive'
use 'tpope/vim-rhubarb'
use 'lewis6991/gitsigns.nvim'
-- use 'navarasu/onedark.nvim' -- Theme inspired by Atom
use 'nvim-lualine/lualine.nvim' -- Fancier statusline
use { 'lukas-reineke/indent-blankline.nvim', main = "ibl", opts = {} } -- Add indentation guides even on blank lines
use 'numToStr/Comment.nvim' -- "gc" to comment visual regions/lines
use 'tpope/vim-sleuth' -- Detect tabstop and shiftwidth automatically
-- Fuzzy Finder (files, lsp, etc)
use { 'nvim-telescope/telescope.nvim', branch = '0.1.x', requires = { 'nvim-lua/plenary.nvim' } }
-- Fuzzy Finder Algorithm which requires local dependencies to be built. Only load if `make` is available
use { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make', cond = vim.fn.executable 'make' == 1 }
-- Tree file explorer pacakge: https://github.com/nvim-tree/nvim-tree.lua
use {
'nvim-tree/nvim-tree.lua',
requires = {
'nvim-tree/nvim-web-devicons', -- optional, for file icons
},
tag = 'nightly' -- optional, updated every week. (see issue #1193)
}
-- nvim tree package: https://github.com/romgrk/barbar.nvim
use {'romgrk/barbar.nvim'}
-- Custom color schema
use { 'bluz71/vim-moonfly-colors', branch = 'cterm-compat' }
-- Svelte setup
use 'evanleck/vim-svelte'
use 'pangloss/vim-javascript'
use 'HerringtonDarkholme/yats.vim'
-- Svelte coc
use { 'neoclide/coc.nvim', branch = 'release' }
-- Prettier
use('jose-elias-alvarez/null-ls.nvim')
use('MunifTanjim/prettier.nvim')
-- Wakatime
use 'wakatime/vim-wakatime'
-- golang
use 'ray-x/go.nvim'
use 'ray-x/guihua.lua'
-- Elixir
use({ "elixir-tools/elixir-tools.nvim", requires = { "nvim-lua/plenary.nvim" }})
local elixir = require("elixir")
local elixirls = require("elixir.elixirls")
elixir.setup {
elixirls = {
-- specify a repository and branch
repo = "mhanberg/elixir-ls", -- defaults to elixir-lsp/elixir-ls
branch = "mh/all-workspace-symbols", -- defaults to nil, just checkouts out the default branch, mutually exclusive with the `tag` option
tag = "v0.13.0", -- defaults to nil, mutually exclusive with the `branch` option
-- alternatively, point to an existing elixir-ls installation (optional)
-- not currently supported by elixirls, but can be a table if you wish to pass other args `{"path/to/elixirls", "--foo"}`
-- cmd = "/usr/local/bin/elixir-ls.sh",
-- default settings, use the `settings` function to override settings
settings = elixirls.settings {
dialyzerEnabled = true,
fetchDeps = false,
enableTestLenses = false,
suggestSpecs = false,
},
-- on_attach = function(client, bufnr)
-- local map_opts = { buffer = true, noremap = true}
--
-- -- run the codelens under the cursor
-- vim.keymap.set("n", "<space>r", vim.lsp.codelens.run, map_opts)
-- -- remove the pipe operator
-- vim.keymap.set("n", "<space>fp", ":ElixirFromPipe<cr>", map_opts)
-- -- add the pipe operator
-- vim.keymap.set("n", "<space>tp", ":ElixirToPipe<cr>", map_opts)
-- vim.keymap.set("v", "<space>em", ":ElixirExpandMacro<cr>", map_opts)
--
-- -- bindings for standard LSP functions.
-- vim.keymap.set("n", "<space>df", "<cmd>lua vim.lsp.buf.format()<cr>", map_opts)
-- vim.keymap.set("n", "<space>gd", "<cmd>lua vim.diagnostic.open_float()<cr>", map_opts)
-- vim.keymap.set("n", "<space>dt", "<cmd>lua vim.lsp.buf.definition()<cr>", map_opts)
-- vim.keymap.set("n", "<space>K", "<cmd>lua vim.lsp.buf.hover()<cr>", map_opts)
-- vim.keymap.set("n", "<space>gD","<cmd>lua vim.lsp.buf.implementation()<cr>", map_opts)
-- vim.keymap.set("n", "<space>1gD","<cmd>lua vim.lsp.buf.type_definition()<cr>", map_opts)
-- -- keybinds for fzf-lsp.nvim: https://github.com/gfanto/fzf-lsp.nvim
-- -- you could also use telescope.nvim: https://github.com/nvim-telescope/telescope.nvim
-- -- there are also core vim.lsp functions that put the same data in the loclist
-- vim.keymap.set("n", "<space>gr", ":References<cr>", map_opts)
-- vim.keymap.set("n", "<space>g0", ":DocumentSymbols<cr>", map_opts)
-- vim.keymap.set("n", "<space>gW", ":WorkspaceSymbols<cr>", map_opts)
-- vim.keymap.set("n", "<leader>d", ":Diagnostics<cr>", map_opts)
-- end
}
}
-- Add custom plugins to packer from ~/.config/nvim/lua/custom/plugins.lua
local has_plugins, plugins = pcall(require, 'custom.plugins')
if has_plugins then
plugins(use)
end
if is_bootstrap then
require('packer').sync()
end
end)
-- When we are bootstrapping a configuration, it doesn't
-- make sense to execute the rest of the init.lua.
--
-- You'll need to restart nvim, and then it will work.
if is_bootstrap then
print '=================================='
print ' Plugins are being installed'
print ' Wait until Packer completes,'
print ' then restart nvim'
print '=================================='
return
end
-- Automatically source and re-compile packer whenever you save this init.lua
local packer_group = vim.api.nvim_create_augroup('Packer', { clear = true })
vim.api.nvim_create_autocmd('BufWritePost', {
command = 'source <afile> | silent! LspStop | silent! LspStart | PackerCompile',
group = packer_group,
pattern = vim.fn.expand '$MYVIMRC',
})
-- [[ Setting options ]]
-- See `:help vim.o`
-- Set highlight on search
vim.o.hlsearch = false
-- Make line numbers default
vim.wo.number = true
-- Enable mouse mode
vim.o.mouse = 'a'
-- Enable break indent
vim.o.breakindent = true
-- Save undo history
vim.o.undofile = true
-- Case insensitive searching UNLESS /C or capital in search
vim.o.ignorecase = true
vim.o.smartcase = true
-- Decrease update time
vim.o.updatetime = 250
vim.wo.signcolumn = 'yes'
-- Set colorscheme
vim.o.termguicolors = true
-- vim.cmd [[colorscheme onedark]]
vim.cmd [[colorscheme moonfly]]
-- Set completeopt to have a better completion experience
vim.o.completeopt = 'menuone,noselect'
-- set tab key to two spaces
vim.o.expandtab = true
vim.o.tabstop = 2
vim.o.softtabstop = 2
vim.o.shiftwidth = 2
vim.o.relativenumber = true
-- [[ Basic Keymaps ]]
-- Set <space> as the leader key
-- See `:help mapleader`
-- NOTE: Must happen before plugins are required (otherwise wrong leader will be used)
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
-- Keymaps for better default experience
-- See `:help vim.keymap.set()`
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
-- Remap for dealing with word wrap
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
-- [[ Highlight on yank ]]
-- See `:help vim.highlight.on_yank()`
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
vim.api.nvim_create_autocmd('TextYankPost', {
callback = function()
vim.highlight.on_yank()
end,
group = highlight_group,
pattern = '*',
})
-- Set lualine as statusline
-- See `:help lualine.txt`
require('lualine').setup {
options = {
icons_enabled = false,
theme = 'moonfly',
component_separators = '|',
section_separators = '',
},
}
-- Configure prettier
local prettier = require("prettier")
prettier.setup({
bin = 'prettier', -- or `'prettierd'` (v0.22+)
filetypes = {
"css",
"graphql",
"html",
"javascript",
"javascriptreact",
"json",
"less",
"markdown",
"scss",
"typescript",
"typescriptreact",
"yaml",
},
})
local null_ls = require("null-ls")
local group = vim.api.nvim_create_augroup("lsp_format_on_save", { clear = false })
local event = "BufWritePre" -- or "BufWritePost"
local async = event == "BufWritePost"
null_ls.setup({
on_attach = function(client, bufnr)
if client.supports_method("textDocument/formatting") then
vim.keymap.set("n", "<Leader>f", function()
vim.lsp.buf.format({ bufnr = vim.api.nvim_get_current_buf() })
end, { buffer = bufnr, desc = "[lsp] format" })
-- format on save
vim.api.nvim_clear_autocmds({ buffer = bufnr, group = group })
vim.api.nvim_create_autocmd(event, {
buffer = bufnr,
group = group,
callback = function()
vim.lsp.buf.format({ bufnr = bufnr, async = async })
end,
desc = "[lsp] format on save",
})
end
if client.supports_method("textDocument/rangeFormatting") then
vim.keymap.set("x", "<Leader>f", function()
vim.lsp.buf.format({ bufnr = vim.api.nvim_get_current_buf() })
end, { buffer = bufnr, desc = "[lsp] format" })
end
end,
})
-- Enable Comment.nvim
require('Comment').setup()
-- Enable `lukas-reineke/indent-blankline.nvim`
-- See `:help indent_blankline.txt`
--require('indent_blankline').setup {
-- char = '┊',
-- show_trailing_blankline_indent = false,
--}
-- Gitsigns
-- See `:help gitsigns.txt`
require('gitsigns').setup {
signs = {
add = { text = '+' },
change = { text = '~' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
},
}
-- [[ Configure Telescope ]]
-- See `:help telescope` and `:help telescope.setup()`
require('telescope').setup {
defaults = {
mappings = {
i = {
['<C-u>'] = false,
['<C-d>'] = false,
},
},
file_ignore_patterns = {"node_modules"}
},
}
-- Enable telescope fzf native, if installed
pcall(require('telescope').load_extension, 'fzf')
-- See `:help telescope.builtin`
vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' })
vim.keymap.set('n', '<leader>/', function()
-- You can pass additional configuration to telescope to change theme, layout, etc.
require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
winblend = 10,
previewer = false,
})
end, { desc = '[/] Fuzzily search in current buffer]' })
vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' })
vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' })
vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' })
vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
-- [[ Configure Treesitter ]]
-- See `:help nvim-treesitter`
require('nvim-treesitter.configs').setup {
-- Add languages to be installed here that you want installed for treesitter
ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'typescript', 'help', 'vim' },
highlight = { enable = true },
indent = { enable = true, disable = { 'python' } },
incremental_selection = {
enable = true,
keymaps = {
init_selection = '<c-space>',
node_incremental = '<c-space>',
scope_incremental = '<c-s>',
node_decremental = '<c-backspace>',
},
},
textobjects = {
select = {
enable = true,
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
keymaps = {
-- You can use the capture groups defined in textobjects.scm
['aa'] = '@parameter.outer',
['ia'] = '@parameter.inner',
['af'] = '@function.outer',
['if'] = '@function.inner',
['ac'] = '@class.outer',
['ic'] = '@class.inner',
},
},
move = {
enable = true,
set_jumps = true, -- whether to set jumps in the jumplist
goto_next_start = {
[']m'] = '@function.outer',
[']]'] = '@class.outer',
},
goto_next_end = {
[']M'] = '@function.outer',
[']['] = '@class.outer',
},
goto_previous_start = {
['[m'] = '@function.outer',
['[['] = '@class.outer',
},
goto_previous_end = {
['[M'] = '@function.outer',
['[]'] = '@class.outer',
},
},
swap = {
enable = true,
swap_next = {
['<leader>a'] = '@parameter.inner',
},
swap_previous = {
['<leader>A'] = '@parameter.inner',
},
},
},
}
-- Empty nvim-tree setup using defaults
require("nvim-tree").setup()
-- Keymaps leader (space) + f to toggle nvim-tree
vim.keymap.set('n', '<leader>f', ':NvimTreeToggle<CR>', {
noremap = true
})
-- Diagnostic keymaps
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float)
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist)
-- LSP settings.
-- This function gets run when an LSP connects to a particular buffer.
local on_attach = function(_, bufnr)
-- NOTE: Remember that lua is a real programming language, and as such it is possible
-- to define small helper and utility functions so you don't have to repeat yourself
-- many times.
--
-- In this case, we create a function that lets us more easily define mappings specific
-- for LSP related items. It sets the mode, buffer and description for us each time.
local nmap = function(keys, func, desc)
if desc then
desc = 'LSP: ' .. desc
end
vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc })
end
-- barbar.nvim
local map = vim.api.nvim_set_keymap
local opts = { noremap = true, silent = true }
map('n', '<A-,>', '<Cmd>BufferPrevious<CR>', opts)
map('n', '<A-.>', '<Cmd>BufferNext<CR>', opts)
nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition')
nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation')
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
-- See `:help K` for why this keymap
nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation')
-- Lesser used LSP functionality
nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder')
nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder')
nmap('<leader>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, '[W]orkspace [L]ist Folders')
-- Create a command `:Format` local to the LSP buffer
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
vim.lsp.buf.format()
end, { desc = 'Format current buffer with LSP' })
end
-- Setup neovim lua configuration
require('neodev').setup()
--
-- nvim-cmp supports additional completion capabilities, so broadcast that to servers
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
-- Enable the following language servers
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
--
-- Add any additional override configuration in the following tables. They will be passed to
-- the `settings` field of the server config. You must look up that documentation yourself.
local servers = {
clangd = {},
cssls = {},
elixirls = {},
eslint = {},
jsonls = {},
golangci_lint_ls = {},
gopls = {},
lua_ls = {},
pylsp = {},
rust_analyzer = {},
svelte = {},
tsserver = {},
vimls = {},
volar = {},
}
-- Setup mason so it can manage external tooling
require("mason").setup()
-- Configure lspconfig for each server
local mason_lspconfig = require 'mason-lspconfig'
mason_lspconfig.setup {
ensure_installed = vim.tbl_keys(servers),
}
mason_lspconfig.setup_handlers {
function(server_name)
require('lspconfig')[server_name].setup {
capabilities = capabilities,
on_attach = on_attach,
settings = servers[server_name],
}
end,
}
-- Turn on lsp status information
require('fidget').setup()
-- nvim-cmp setup
local cmp = require 'cmp'
local luasnip = require 'luasnip'
cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert {
['<C-d>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true,
},
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
},
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
},
}
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et

13
nvim/lua/plugins.lua Normal file
View File

@@ -0,0 +1,13 @@
-- This file can be loaded by calling `lua require('plugins')` from your init.vim
-- Only required if you have packer configured as `opt`
vim.cmd [[packadd packer.nvim]]
return require('packer').startup(function(use)
-- Packer can manage itself
use 'wbthomason/packer.nvim'
use 'wakatime/vim-wakatime'
use 'nvim-tree/nvim-web-devicons'
use {'romgrk/barbar.nvim', wants = 'nvim-web-devicons'}
end)

27
profile Normal file
View File

@@ -0,0 +1,27 @@
# Make sure SHELL is set to fish
export SHELL="$(which fish)"
# Setting PATH for Homebrew that should take precedence
# over system-provided programs
export PATH="/usr/local/bin:$PATH"
# Add homebrew arm64 install path if applicable
if test $(uname -m) = "arm64"
export PATH="/opt/homebrew/bin:$PATH"
end
# MacPorts Installer rddition on 2022-10-31_at_23:07:29: adding an appropriate PATH variable for use with MacPorts.
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
# Setting go environment
export GOPATH=$HOME/dev/go
export GOROOT="$(brew --prefix golang)/libexec"
export PATH="$PATH:$GOPATH/bin:$GOROOT/bin"
# Setting up node/npm
export NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
export NPM_PACKAGES="$HOME/.npm-packages"
export PATH="$NPM_PACKAGES/bin:$PATH"
# Setting up ruby & gem
export PATH="/Users/kevinmidboe/.gem/ruby/2.7.0/bin:$PATH"

9
scripts/tbind.sh Normal file
View File

@@ -0,0 +1,9 @@
#!/bin/sh
CAPS_KEY=0x700000039
F10_KEY=0x700000043
DATA=$(printf '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":%s,"HIDKeyboardModifierMappingDst":%s}]}' $CAPS_KEY $F10_KEY)
hidutil property --set $DATA
echo "Successfully overwrote CAPS KEY to F10!"

26
tmux/tmux.config Normal file
View File

@@ -0,0 +1,26 @@
# remap previx from 'C-b' to 'F10' and should
# map caps-lock to F10
unbind-key C-b
set-option -g prefix F10
bind-key F10 send-prefix
# Remove delay
set -s escape-time 1
# scroll window buffer history, not commands history
set -g mouse on
set -g default-terminal "xterm-256color"
set-option -g default-shell /opt/homebrew/bin/fish
# Navigate panes using vim bindings
setw -g mode-keys vi
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Set new panes to open in current directory
bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"

9
wakatime.cfg Normal file
View File

@@ -0,0 +1,9 @@
[settings]
debug = false
hidefilenames = false
ignore =
COMMIT_EDITMSG$
PULLREQ_EDITMSG$
MERGE_MSG$
TAG_EDITMSG$
api_key=