From 17ade4a5e4dc04c30f31bba0964aebb1b41b36cf Mon Sep 17 00:00:00 2001 From: dimti Date: Tue, 11 Apr 2023 17:21:55 +0300 Subject: [PATCH] * initial commit - dotfiles based on DoomHammer --- .bash_logout | 3 + .bash_profile | 14 ++ .bashrc | 75 +++++++++++ .config/alacritty/alacritty.yml | 134 +++++++++++++++++++ .config/btop/btop.conf | 200 +++++++++++++++++++++++++++ .config/lsd/config.yaml | 3 + .config/lsd/themes/solarized.yaml | 24 ++++ .config/nix/installed_packages | 29 ++++ .config/nvim/init.vim | 6 + .config/starship.toml | 56 ++++++++ .config/yadm/bootstrap | 49 +++++++ .dircolors | 235 ++++++++++++++++++++++++++++++++ .gitconfig | 122 +++++++++++++++++ .gitignore | 1 + .gitignore_global | 71 ++++++++++ .gitmessage | 13 ++ .profile | 25 ++++ .shell-aliases | 36 +++++ .shell-common | 11 ++ .shell-env | 22 +++ .shell-logout | 26 ++++ .tmux.conf | 89 ++++++++++++ .vim/undodir/.gitkeep | 0 .vimrc | 275 ++++++++++++++++++++++++++++++++++++++ README.md | 1 + 25 files changed, 1520 insertions(+) create mode 100644 .bash_logout create mode 100644 .bash_profile create mode 100644 .bashrc create mode 100644 .config/alacritty/alacritty.yml create mode 100644 .config/btop/btop.conf create mode 100644 .config/lsd/config.yaml create mode 100644 .config/lsd/themes/solarized.yaml create mode 100644 .config/nix/installed_packages create mode 100644 .config/nvim/init.vim create mode 100644 .config/starship.toml create mode 100755 .config/yadm/bootstrap create mode 100644 .dircolors create mode 100644 .gitconfig create mode 100644 .gitignore create mode 100644 .gitignore_global create mode 100644 .gitmessage create mode 100644 .profile create mode 100644 .shell-aliases create mode 100644 .shell-common create mode 100644 .shell-env create mode 100644 .shell-logout create mode 100644 .tmux.conf create mode 100644 .vim/undodir/.gitkeep create mode 100644 .vimrc create mode 100644 README.md diff --git a/.bash_logout b/.bash_logout new file mode 100644 index 0000000..77c4b72 --- /dev/null +++ b/.bash_logout @@ -0,0 +1,3 @@ +# ~/.bash_logout: executed by bash(1) when login shell exits. + +test -r ~/.shell-logout && source ~/.shell-logout diff --git a/.bash_profile b/.bash_profile new file mode 100644 index 0000000..3b92c72 --- /dev/null +++ b/.bash_profile @@ -0,0 +1,14 @@ +# Via https://tanguy.ortolo.eu/blog/article25/shrc +# +# At startup, depending on the case: +# - run as a login shell (or with the option --login), it executes profile (or +# bash_profile instead if it exists (only user-specific version)); +# - run as an interactive, non-login shell, it executes bashrc (the system-wide +# version is called bash.bashrc). +# +# At exit, it executes ~/.bash_logout (the system-wide version is called +# bash.bash_logout). +# Note the funny (read: insane) non-login condition for executing bashrc: it is +# often worked around by having the profile execute bashrc anyway. + +[[ -f ~/.profile ]] && . ~/.profile diff --git a/.bashrc b/.bashrc new file mode 100644 index 0000000..3e4607c --- /dev/null +++ b/.bashrc @@ -0,0 +1,75 @@ +# Via https://tanguy.ortolo.eu/blog/article25/shrc +# +# At startup, depending on the case: +# - run as a login shell (or with the option --login), it executes profile (or +# bash_profile instead if it exists (only user-specific version)); +# - run as an interactive, non-login shell, it executes bashrc (the system-wide +# version is called bash.bashrc). +# +# At exit, it executes ~/.bash_logout (the system-wide version is called +# bash.bash_logout). +# Note the funny (read: insane) non-login condition for executing bashrc: it is +# often worked around by having the profile execute bashrc anyway. + +# If not running interactively, don't do anything +[ -z "$PS1" ] && return + +# Source global definitions +test -r /etc/bashrc && . /etc/bashrc + +test -r ~/.shell-env && . ~/.shell-env +test -r ~/.shell-aliases && . ~/.shell-aliases +test -r ~/.shell-common && . ~/.shell-common + +# don't put duplicate lines in the history. See bash(1) for more options +# ... or force ignoredups and ignorespace +HISTCONTROL=ignoreboth +export HISTIGNORE="&:ls:[bf]g:pwd:exit:cd .." + +# append to the history file, don't overwrite it +shopt -s histappend +PROMPT_COMMAND="history -a;$PROMPT_COMMAND" + +# Store multiline commands as one line. +shopt -s cmdhist + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=10000 +HISTFILESIZE=20000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# Spellcheck directories +shopt -s dirspell + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +test -f /usr/share/bash-completion/bash_completion && . /usr/share/bash-completion/bash_completion +test -f /etc/bash_completion && . /etc/bash_completion +test -f $BREW_PREFIX/etc/bash_completion && . $BREW_PREFIX/etc/bash_completion + +test -r ~/.bashrc.local && . ~/.bashrc.local + +if command -v fzf-share >/dev/null; then + source "$(fzf-share)/key-bindings.bash" + source "$(fzf-share)/completion.bash" +fi + +eval "$(direnv hook bash)" + +function right_prompt(){ + RIGHT_PROMPT="$(starship prompt --right)" + RIGHT_PROMPT_RENDERED="${RIGHT_PROMPT@P}" + # For some reason this one is less accurate, while the other method below + # gives better precision, but also throws errors. Curious! + #RIGHT_PROMPT_RENDERED_stripped=$(sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" <<<"$RIGHT_PROMPT_RENDERED") + RIGHT_PROMPT_RENDERED_stripped="$(sed -r 's:\\\[([^\\]|\\[^]])*\\\]::g' <<<$RIGHT_PROMPT_RENDERED)" + RIGHT_PROMPT_RENDERED_stripped="$(eval echo -e $RIGHT_PROMPT_RENDERED_stripped 2>/dev/null)" + printf "\033[50D\033[$((${COLUMNS:-$(tput cols)}-${#RIGHT_PROMPT_RENDERED_stripped}))C$RIGHT_PROMPT_RENDERED\n" +} +starship_precmd_user_func="right_prompt" + +eval "$(starship init bash)" diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..8e9508d --- /dev/null +++ b/.config/alacritty/alacritty.yml @@ -0,0 +1,134 @@ +font: + normal: + family: Iosevka Nerd Font Mono + style: Regular + bold: + family: Iosevka Nerd Font Mono + style: Bold + italic: + family: Iosevka Nerd Font Mono + style: Italic + size: 14 + use_thin_strokes: true + +selection: + save_to_clipboard: true + +key_bindings: + - { key: V, mods: Control|Shift, action: Paste } + # Support for Meta(Alt/Option)+key {{ + # from: https://github.com/alacritty/alacritty/issues/62 + - { key: A, mods: Alt, chars: "\x1ba" } + - { key: B, mods: Alt, chars: "\x1bb" } + - { key: C, mods: Alt, chars: "\x1bc" } + - { key: D, mods: Alt, chars: "\x1bd" } + - { key: E, mods: Alt, chars: "\x1be" } + - { key: F, mods: Alt, chars: "\x1bf" } + - { key: G, mods: Alt, chars: "\x1bg" } + - { key: H, mods: Alt, chars: "\x1bh" } + - { key: I, mods: Alt, chars: "\x1bi" } + - { key: J, mods: Alt, chars: "\x1bj" } + - { key: K, mods: Alt, chars: "\x1bk" } + - { key: L, mods: Alt, chars: "\x1bl" } + - { key: M, mods: Alt, chars: "\x1bm" } + - { key: N, mods: Alt, chars: "\x1bn" } + - { key: O, mods: Alt, chars: "\x1bo" } + - { key: P, mods: Alt, chars: "\x1bp" } + - { key: Q, mods: Alt, chars: "\x1bq" } + - { key: R, mods: Alt, chars: "\x1br" } + - { key: S, mods: Alt, chars: "\x1bs" } + - { key: T, mods: Alt, chars: "\x1bt" } + - { key: U, mods: Alt, chars: "\x1bu" } + - { key: V, mods: Alt, chars: "\x1bv" } + - { key: W, mods: Alt, chars: "\x1bw" } + - { key: X, mods: Alt, chars: "\x1bx" } + - { key: Y, mods: Alt, chars: "\x1by" } + - { key: Z, mods: Alt, chars: "\x1bz" } + - { key: A, mods: Alt|Shift, chars: "\x1bA" } + - { key: B, mods: Alt|Shift, chars: "\x1bB" } + - { key: C, mods: Alt|Shift, chars: "\x1bC" } + - { key: D, mods: Alt|Shift, chars: "\x1bD" } + - { key: E, mods: Alt|Shift, chars: "\x1bE" } + - { key: F, mods: Alt|Shift, chars: "\x1bF" } + - { key: G, mods: Alt|Shift, chars: "\x1bG" } + - { key: H, mods: Alt|Shift, chars: "\x1bH" } + - { key: I, mods: Alt|Shift, chars: "\x1bI" } + - { key: J, mods: Alt|Shift, chars: "\x1bJ" } + - { key: K, mods: Alt|Shift, chars: "\x1bK" } + - { key: L, mods: Alt|Shift, chars: "\x1bL" } + - { key: M, mods: Alt|Shift, chars: "\x1bM" } + - { key: N, mods: Alt|Shift, chars: "\x1bN" } + - { key: O, mods: Alt|Shift, chars: "\x1bO" } + - { key: P, mods: Alt|Shift, chars: "\x1bP" } + - { key: Q, mods: Alt|Shift, chars: "\x1bQ" } + - { key: R, mods: Alt|Shift, chars: "\x1bR" } + - { key: S, mods: Alt|Shift, chars: "\x1bS" } + - { key: T, mods: Alt|Shift, chars: "\x1bT" } + - { key: U, mods: Alt|Shift, chars: "\x1bU" } + - { key: V, mods: Alt|Shift, chars: "\x1bV" } + - { key: W, mods: Alt|Shift, chars: "\x1bW" } + - { key: X, mods: Alt|Shift, chars: "\x1bX" } + - { key: Y, mods: Alt|Shift, chars: "\x1bY" } + - { key: Z, mods: Alt|Shift, chars: "\x1bZ" } + - { key: Key1, mods: Alt, chars: "\x1b1" } + - { key: Key2, mods: Alt, chars: "\x1b2" } + - { key: Key3, mods: Alt, chars: "\x1b3" } + - { key: Key4, mods: Alt, chars: "\x1b4" } + - { key: Key5, mods: Alt, chars: "\x1b5" } + - { key: Key6, mods: Alt, chars: "\x1b6" } + - { key: Key7, mods: Alt, chars: "\x1b7" } + - { key: Key8, mods: Alt, chars: "\x1b8" } + - { key: Key9, mods: Alt, chars: "\x1b9" } + - { key: Key0, mods: Alt, chars: "\x1b0" } + - { key: Space, mods: Control, chars: "\x00" } + - { key: Grave, mods: Alt, chars: "\x1b`" } + - { key: Grave, mods: Alt|Shift, chars: "\x1b~" } + - { key: Period, mods: Alt, chars: "\x1b." } + - { key: Key8, mods: Alt|Shift, chars: "\x1b*" } + - { key: Key3, mods: Alt|Shift, chars: "\x1b#" } + - { key: Period, mods: Alt|Shift, chars: "\x1b>" } + - { key: Comma, mods: Alt|Shift, chars: "\x1b<" } + - { key: Minus, mods: Alt|Shift, chars: "\x1b_" } + - { key: Key5, mods: Alt|Shift, chars: "\x1b%" } + - { key: Key6, mods: Alt|Shift, chars: "\x1b^" } + - { key: Backslash, mods: Alt, chars: "\x1b\\" } + - { key: Backslash, mods: Alt|Shift, chars: "\x1b|" } + # Support for Meta(Alt/Option)+key {{ + # from: https://github.com/alacritty/alacritty/issues/62 + +# Base16 Solarized Light - alacritty color config +# Ethan Schoonover (modified by aramisgithub) +colors: + # Default colors + primary: + background: '0xfdf6e3' + foreground: '0x586e75' + + # Colors the cursor will use if `custom_cursor_colors` is true + cursor: + text: '0xfdf6e3' + cursor: '0x586e75' + + # Normal colors + normal: + black: '0xfdf6e3' + red: '0xdc322f' + green: '0x859900' + yellow: '0xb58900' + blue: '0x268bd2' + magenta: '0x6c71c4' + cyan: '0x2aa198' + white: '0x586e75' + + # Bright colors + bright: + black: '0x839496' + red: '0xcb4b16' + green: '0xeee8d5' + yellow: '0x93a1a1' + blue: '0x657b83' + magenta: '0x073642' + cyan: '0xd33682' + white: '0x002b36' + +draw_bold_text_with_bright_colors: false diff --git a/.config/btop/btop.conf b/.config/btop/btop.conf new file mode 100644 index 0000000..983c6e5 --- /dev/null +++ b/.config/btop/btop.conf @@ -0,0 +1,200 @@ +#? Config file for btop v. 1.2.5 + +#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. +#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" +color_theme = "solarized_dark" + +#* If the theme set background should be shown, set to False if you want terminal background transparency. +theme_background = True + +#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. +truecolor = True + +#* Set to true to force tty mode regardless if a real tty has been detected or not. +#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. +force_tty = False + +#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. +#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. +#* Use withespace " " as separator between different presets. +#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" +presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" + +#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. +#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. +vim_keys = False + +#* Rounded corners on boxes, is ignored if TTY mode is ON. +rounded_corners = True + +#* Default symbols to use for graph creation, "braille", "block" or "tty". +#* "braille" offers the highest resolution but might not be included in all fonts. +#* "block" has half the resolution of braille but uses more common characters. +#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. +#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. +graph_symbol = "braille" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_cpu = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_mem = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_net = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_proc = "default" + +#* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace. +shown_boxes = "cpu mem net proc" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 2000 + +#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", +#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. +proc_sorting = "memory" + +#* Reverse sorting order, True or False. +proc_reversed = False + +#* Show processes as a tree. +proc_tree = False + +#* Use the cpu graph colors in the process list. +proc_colors = True + +#* Use a darkening gradient in the process list. +proc_gradient = True + +#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. +proc_per_core = True + +#* Show process memory as bytes instead of percent. +proc_mem_bytes = True + +#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) +proc_info_smaps = False + +#* Show proc box on left side of screen instead of right. +proc_left = False + +#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_upper = "total" + +#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_lower = "total" + +#* Toggles if the lower CPU graph should be inverted. +cpu_invert_lower = True + +#* Set to True to completely disable the lower CPU graph. +cpu_single_graph = False + +#* Show cpu box at bottom of screen instead of top. +cpu_bottom = False + +#* Shows the system uptime in the CPU box. +show_uptime = True + +#* Show cpu temperature. +check_temp = True + +#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. +cpu_sensor = "Auto" + +#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. +show_coretemp = True + +#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. +#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. +#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. +#* Example: "4:0 5:1 6:3" +cpu_core_map = "" + +#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". +temp_scale = "celsius" + +#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. +base_10_sizes = False + +#* Show CPU frequency. +show_cpu_freq = True + +#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. +#* Special formatting: /host = hostname | /user = username | /uptime = system uptime +clock_format = "%X" + +#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. +background_update = True + +#* Custom cpu model name, empty string to disable. +custom_cpu_name = "" + +#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". +#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user". +disks_filter = "" + +#* Show graphs instead of meters for memory values. +mem_graphs = True + +#* Show mem box below net box instead of above. +mem_below_net = False + +#* If swap memory should be shown in memory box. +show_swap = True + +#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. +swap_disk = True + +#* If mem box should be split to also show disks info. +show_disks = True + +#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. +only_physical = True + +#* Read disks list from /etc/fstab. This also disables only_physical. +use_fstab = True + +#* Set to true to show available disk space for privileged users. +disk_free_priv = False + +#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. +show_io_stat = True + +#* Toggles io mode for disks, showing big graphs for disk read/write speeds. +io_mode = False + +#* Set to True to show combined read/write io graphs in io mode. +io_graph_combined = False + +#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". +#* Example: "/mnt/media:100 /:20 /boot:1". +io_graph_speeds = "" + +#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. +net_download = 100 + +net_upload = 100 + +#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. +net_auto = True + +#* Sync the auto scaling for download and upload to whichever currently has the highest scale. +net_sync = False + +#* Starts with the Network Interface specified here. +net_iface = "" + +#* Show battery stats in top right if battery is present. +show_battery = True + +#* Which battery to use if multiple are present. "Auto" for auto detection. +selected_battery = "Auto" + +#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. +log_level = "WARNING" \ No newline at end of file diff --git a/.config/lsd/config.yaml b/.config/lsd/config.yaml new file mode 100644 index 0000000..cf8874e --- /dev/null +++ b/.config/lsd/config.yaml @@ -0,0 +1,3 @@ +color: + theme: solarized +indicators: true diff --git a/.config/lsd/themes/solarized.yaml b/.config/lsd/themes/solarized.yaml new file mode 100644 index 0000000..6434829 --- /dev/null +++ b/.config/lsd/themes/solarized.yaml @@ -0,0 +1,24 @@ +user: magenta +group: dark_magenta +permission: + read: dark_green + write: dark_yellow + exec: dark_red + exec-sticky: 5 + no-access: 245 +date: + hour-old: 40 + day-old: 42 + older: 36 +size: + none: blue + small: dark_blue + medium: red + large: dark_red +inode: + valid: 13 + invalid: 245 +links: + valid: 13 + invalid: 245 +tree-edge: 245 diff --git a/.config/nix/installed_packages b/.config/nix/installed_packages new file mode 100644 index 0000000..a62652f --- /dev/null +++ b/.config/nix/installed_packages @@ -0,0 +1,29 @@ +nixpkgs.btop +nixpkgs.cacert +nixpkgs.cmake +nixpkgs.coreutils +nixpkgs.croc +nixpkgs.curl +nixpkgs.direnv +nixpkgs.fd +nixpkgs.fzf +nixpkgs.git +nixpkgs.git-lfs +nixpkgs.gnumake +nixpkgs.go +nixpkgs.jq +nixpkgs.lesspipe +nixpkgs.lsd +nixpkgs.neovim +nixpkgs.nix +nixpkgs.nix-zsh-completions +nixpkgs.ripgrep +nixpkgs.silver-searcher +nixpkgs.starship +nixpkgs.tmate +nixpkgs.tmux +nixpkgs.unzip +nixpkgs.wget +nixpkgs.yadm +nixpkgs.zplug +nixpkgs.zsh diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim new file mode 100644 index 0000000..00c7bcb --- /dev/null +++ b/.config/nvim/init.vim @@ -0,0 +1,6 @@ +" Configure python provider +let $PYTHONPATH = $HOME . '/.nix-profile/lib/python3.8/site-packages:' . $PYTHONPATH +let g:python3_host_prog = '~/.nix-profile/bin/python' +let g:loaded_python_provider = 0 + +source ~/.vimrc diff --git a/.config/starship.toml b/.config/starship.toml new file mode 100644 index 0000000..2c7b87b --- /dev/null +++ b/.config/starship.toml @@ -0,0 +1,56 @@ +format = """ +$jobs\ +$character\ +""" + +right_format = """ +$cmd_duration\ +$directory\ +$git_branch\ +$git_status\ +$hostname\ +""" + +add_newline = false + + +[jobs] +format = "[\\[$number\\]]($style) " +style = "242" +number_threshold = 1 +symbol_threshold = 2 + +[character] +success_symbol = "[%](blue)" +error_symbol = "[%](red)" +vicmd_symbol = "[%](blue)" + +[cmd_duration] +format = "[$duration]($style) " +style = "150" + +[directory] +style = "blue" +truncate_to_repo = false +truncation_length = 10 +truncation_symbol = "…/" + +[git_branch] +format = "[$branch]($style)" +style = "242" + +[git_status] +format = " [$modified]($style)" +style = "242" +conflicted = "" +untracked = "" +modified = "+" +staged = "" +renamed = "" +deleted = "" +stashed = "" + +[hostname] +format = "[$hostname]($style)" +ssh_only = true +style = "150" diff --git a/.config/yadm/bootstrap b/.config/yadm/bootstrap new file mode 100755 index 0000000..9c455f3 --- /dev/null +++ b/.config/yadm/bootstrap @@ -0,0 +1,49 @@ +#!/bin/sh +# vim: set ft=sh sw=2 et : + +install_nix() { + # This one courtesy of: + # https://github.com/shadowrylander/shadowrylander/blob/35bb51822c46578d0a5da5810263fa85d464043c/.config/yadm/bootstrap#L56 + install_nix_bin() { + curl -L https://nixos.org/nix/install | sh + if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then + . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' + fi + } + command -v nix >/dev/null 2>&1 || install_nix_bin + + if [ -f "$HOME/.config/nix/installed_packages" ]; then + # This list created with `nix-env -qaPs|grep '^I'|awk '{print $2}' > ~/.config/nix/installed_packages` + cat "$HOME/.config/nix/installed_packages" | xargs nix-env -iA + fi + if [ -f "$HOME/.config/nix/installed_packages.local" ]; then + # Additional packages that might be needed here or there + cat "$HOME/.config/nix/installed_packages.local" | xargs nix-env -i + fi +} + +#configure_zsh() { +# # FIXME: We deserve better +# source $HOME/.zshrc +#} + +configure_vim() { + # Install vim-plug for Vim + curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + vim +'PlugInstall --sync' +qa + # Install vim-plug for Neovim + sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' + nvim +'PlugInstall --sync' +qa +} + +configure_tmux() { + ~/.tmux/plugins/tpm/bin/install_plugins +} + +install_nix + +#configure_zsh +configure_vim +configure_tmux diff --git a/.dircolors b/.dircolors new file mode 100644 index 0000000..64105a2 --- /dev/null +++ b/.dircolors @@ -0,0 +1,235 @@ +# Configuration file for dircolors, a utility to help you set the +# LS_COLORS environment variable used by GNU ls with the --color option. +# Copyright (C) 1996, 1999-2010 Free Software Foundation, Inc. +# Copying and distribution of this file, with or without modification, +# are permitted provided the copyright notice and this notice are preserved. +# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the +# slackware version of dircolors) are recognized but ignored. +# Below, there should be one TERM entry for each termtype that is colorizable +TERM Eterm +TERM ansi +TERM color-xterm +TERM con132x25 +TERM con132x30 +TERM con132x43 +TERM con132x60 +TERM con80x25 +TERM con80x28 +TERM con80x30 +TERM con80x43 +TERM con80x50 +TERM con80x60 +TERM cons25 +TERM console +TERM cygwin +TERM dtterm +TERM eterm-color +TERM gnome +TERM gnome-256color +TERM jfbterm +TERM konsole +TERM kterm +TERM linux +TERM linux-c +TERM mach-color +TERM mlterm +TERM putty +TERM rxvt +TERM rxvt-256color +TERM rxvt-cygwin +TERM rxvt-cygwin-native +TERM rxvt-unicode +TERM rxvt-unicode256 +TERM rxvt-unicode-256color +TERM screen +TERM screen-256color +TERM screen-256color-bce +TERM screen-bce +TERM screen-w +TERM screen.linux +TERM vt100 +TERM xterm +TERM xterm-16color +TERM xterm-256color +TERM xterm-88color +TERM xterm-color +TERM xterm-debian +# Below are the color init strings for the basic file types. A color init +# string consists of one or more of the following numeric codes: +# Attribute codes: +# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed +# Text color codes: +# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white +# Background color codes: +# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white + +## dircolors 256 COLOR SUPPORT (see here: http://www.mail-archive.com/bug-coreutils@gnu.org/msg11030.html) +# Text 256 color coding: +# 38;5;COLOR_NUMBER +# Background 256 color coding: +# 48;5;COLOR_NUMBER + +NORMAL 00;38;5;244 # no color code at all +#FILE 00 # regular file: use no color at all +RESET 0 # reset to "normal" color +DIR 00;38;5;33 # directory 01;34 +LINK 01;38;5;33 # symbolic link. (If you set this to 'target' instead of a + # numerical value, the color is as for the file pointed to.) +MULTIHARDLINK 00 # regular file with more than one link +FIFO 48;5;230;38;5;136;01 # pipe +SOCK 48;5;230;38;5;136;01 # socket +DOOR 48;5;230;38;5;136;01 # door +BLK 48;5;230;38;5;244;01 # block device driver +CHR 48;5;230;38;5;244;01 # character device driver +ORPHAN 48;5;235;38;5;160 # symlink to nonexistent file, or non-stat'able file +SETUID 48;5;160;38;5;230 # file that is setuid (u+s) +SETGID 48;5;136;38;5;230 # file that is setgid (g+s) +CAPABILITY 30;41 # file with capability +STICKY_OTHER_WRITABLE 48;5;64;38;5;230 # dir that is sticky and other-writable (+t,o+w) +OTHER_WRITABLE 48;5;235;38;5;33 # dir that is other-writable (o+w) and not sticky +STICKY 48;5;33;38;5;230 # dir with the sticky bit set (+t) and not other-writable +# This is for files with execute permission: +EXEC 01;38;5;64 +# List any file extensions like '.gz' or '.tar' that you would like ls +# to colorize below. Put the extension, a space, and the color init string. +# (and any comments you want to add after a '#') +# If you use DOS-style suffixes, you may want to uncomment the following: +#.cmd 01;32 # executables (bright green) +#.exe 01;32 +#.com 01;32 +#.btm 01;32 +#.bat 01;32 +# Or if you want to colorize scripts even if they do not have the +# executable bit actually set. +#.sh 01;32 +#.csh 01;32 + + # archives or compressed (violet + bold for compression) +.tar 00;38;5;61 +.tgz 01;38;5;61 +.arj 01;38;5;61 +.taz 01;38;5;61 +.lzh 01;38;5;61 +.lzma 01;38;5;61 +.tlz 01;38;5;61 +.txz 01;38;5;61 +.zip 01;38;5;61 +.z 01;38;5;61 +.Z 01;38;5;61 +.dz 01;38;5;61 +.gz 01;38;5;61 +.lz 01;38;5;61 +.xz 01;38;5;61 +.bz2 01;38;5;61 +.bz 01;38;5;61 +.tbz 01;38;5;61 +.tbz2 01;38;5;61 +.tz 01;38;5;61 +.deb 01;38;5;61 +.rpm 01;38;5;61 +.jar 01;38;5;61 +.rar 01;38;5;61 +.ace 01;38;5;61 +.zoo 01;38;5;61 +.cpio 01;38;5;61 +.7z 01;38;5;61 +.rz 01;38;5;61 +.apk 01;38;5;61 + +# image formats (yellow) +.jpg 00;38;5;136 +.JPG 00;38;5;136 #stupid but needed +.jpeg 00;38;5;136 +.gif 00;38;5;136 +.bmp 00;38;5;136 +.pbm 00;38;5;136 +.pgm 00;38;5;136 +.ppm 00;38;5;136 +.tga 00;38;5;136 +.xbm 00;38;5;136 +.xpm 00;38;5;136 +.tif 00;38;5;136 +.tiff 00;38;5;136 +.png 00;38;5;136 +.svg 00;38;5;136 +.svgz 00;38;5;136 +.mng 00;38;5;136 +.pcx 00;38;5;136 +.dl 00;38;5;136 +.xcf 00;38;5;136 +.xwd 00;38;5;136 +.yuv 00;38;5;136 +.cgm 00;38;5;136 +.emf 00;38;5;136 +.eps 00;38;5;136 +.CR2 00;38;5;136 + +# files of interest (base1 + bold) +.pdf 01;38;5;245 +.tex 01;38;5;245 +.rdf 01;38;5;245 +.owl 01;38;5;245 +.n3 01;38;5;245 +.tt 01;38;5;245 +.nt 01;38;5;245 +.torrent 01;38;5;245 + +# "unimportant" files as logs and backups (base01) +.log 00;38;5;240 +.bak 00;38;5;240 +.aux 00;38;5;240 +.bbl 00;38;5;240 +.blg 00;38;5;240 +*~ 00;38;5;240 +*# 00;38;5;240 +.part 00;38;5;240 +.incomplete 00;38;5;240 +.swp 00;38;5;240 + +# audio formats (orange) +.aac 00;38;5;166 +.au 00;38;5;166 +.flac 00;38;5;166 +.mid 00;38;5;166 +.midi 00;38;5;166 +.mka 00;38;5;166 +.mp3 00;38;5;166 +.mpc 00;38;5;166 +.ogg 00;38;5;166 +.ra 00;38;5;166 +.wav 00;38;5;166 +.m4a 00;38;5;166 +# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions +.axa 00;38;5;166 +.oga 00;38;5;166 +.spx 00;38;5;166 +.xspf 00;38;5;166 + +# video formats (as audio + bold) +.mov 01;38;5;166 +.mpg 01;38;5;166 +.mpeg 01;38;5;166 +.m2v 01;38;5;166 +.mkv 01;38;5;166 +.ogm 01;38;5;166 +.mp4 01;38;5;166 +.m4v 01;38;5;166 +.mp4v 01;38;5;166 +.vob 01;38;5;166 +.qt 01;38;5;166 +.nuv 01;38;5;166 +.wmv 01;38;5;166 +.asf 01;38;5;166 +.rm 01;38;5;166 +.rmvb 01;38;5;166 +.flc 01;38;5;166 +.avi 01;38;5;166 +.fli 01;38;5;166 +.flv 01;38;5;166 +.gl 01;38;5;166 +.m2ts 01;38;5;166 +# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions +.axv 01;38;5;166 +.anx 01;38;5;166 +.ogv 01;38;5;166 +.ogx 01;38;5;166 diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000..c3e41dc --- /dev/null +++ b/.gitconfig @@ -0,0 +1,122 @@ +# vim: set sw=2 sts=2 ts=2 noexpandtab : +[color] + ui = auto + branch = auto + diff = auto + grep = auto + interactive = auto + status = auto + +[user] + email = info@wpstudio.ru + name = WP Studio + +[core] + autocrlf = false + excludesfile = ~/.gitignore_global + whitespace = blank-at-eol,blank-at-eof,space-before-tab + +[push] + default = simple + +[rerere] + enabled = true + autoupdate = true + +[rebase] + # Automatically stash before a rebase and unstash afterwards. + autoStash = true + +[commit] + # Show diff when preparing commit message + verbose = true + template = ~/.gitmessage + +[alias] + a = add + s = status + st = status + ci = commit + b = branch + co = checkout + re = remote + d = diff + dc = diff --cached + lol = log --graph --decorate --pretty=oneline --abbrev-commit + lola = log --graph --decorate --pretty=oneline --abbrev-commit --all + ls = ls-files + lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit + lgi = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ci) %C(bold blue)<%an>%Creset' --abbrev-commit + # Pull Upstream + pu = !"git fetch origin -v; git fetch upstream -v; git merge upstream/master" + # Commit Amend Reuse Message HEAD + carmh = commit --amend --reuse-message=HEAD + # Push Current + pc = !"f() { remote=\"${1:-origin}\"; git push -u \"$remote\" $(git rev-parse --abbrev-ref HEAD); }; f" + # Push Current Force + pcf = !"f() { echo git pc \"$@\" -f; }; f" + # Mainly for YADM + untracked = !"f() { git status --porcelain=v1 -zunormal | xargs -0n1 printf \"%s\\n\" | grep -E '^\\?\\? \\.' | cut -c4-; }; f" + # Current branch + current = rev-parse --abbrev-ref HEAD + cof = !git for-each-ref --format='%(refname:short)' refs/heads | fzf | xargs git checkout + +[merge] + tool = vimdiff + conflictstyle = diff3 + +[mergetool] + prompt = false + keepBackup = false + +[mergetool "vimdiff"] + cmd = nvim -d $BASE $LOCAL $REMOTE $MERGED -c '$wincmd w' -c 'wincmd J' + +### +### Git-up specific +### https://github.com/aanand/git-up +### +[git-up "rebase"] + arguments = --preserve-merges + +### +### Github specific +### +[github] + user = dimti + +# read from given uri +# push to writable one +# http://bit.ly/g9c9Y2 +# +[url "http://github.com/"] + insteadOf = "gh:" + +[url "git@github.com:"] + pushInsteadOf = "https://github.com/" + pushInsteadOf = "http://github.com/" + pushInsteadOf = "gh:" + +[credential] + helper = "cache --timeout 86400" + +[pack] + threads = 2 + +### +### Include local overrides +### +[include] + path = .gitconfig.local + +[pull] + rebase = true + +[lfs] + fetchexclude = * + +[filter "lfs"] + clean = git-lfs clean -- %f + smudge = git-lfs smudge -- %f + process = git-lfs filter-process + required = true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a09c56d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.idea diff --git a/.gitignore_global b/.gitignore_global new file mode 100644 index 0000000..b6e8ca1 --- /dev/null +++ b/.gitignore_global @@ -0,0 +1,71 @@ +.~lock.*# + +# Mac stuff +.DS_Store + +# vim-session +Session.vim + +# Ctags +tags +TAGS +tags +.tags + +# Backup +*.bak +*.tmp +*~ +.*.sw* + +# Python +*.pyc + +# Archives +*.7z +*.jar +*.rar +*.zip +*.tgz +*.gz +*.bzip +*.xz +*.lzma +*.iso +*.tar +*.dmg +*.xpi +*.gem +*.egg +*.deb +*.rpm + +# LaTeX +*.aux +*.bbl +*.blg +*.dvi +*.fdb_latexmk +*.glg +*.glo +*.gls +*.idx +*.ilg +*.ind +*.ist +*.lof +*.log +*.lot +*.nav +*.nlo +*.out +*.pdfsync +*.ps +*.snm +*.spl +*.synctex.gz +*.toc +*.vrb +*.maf +*.mtc +*.mtc0 diff --git a/.gitmessage b/.gitmessage new file mode 100644 index 0000000..4059a07 --- /dev/null +++ b/.gitmessage @@ -0,0 +1,13 @@ +# vi:ft=gitcommit:tw=72:sw=2:ts=2:expandtab:spell +# +# 50-character subject line +# +# If applied, this commit will... + +# 72-character wrapped longer description. +# +# Why is this change needed? + +# How does it address the issue? + +# Provide links to any relevant tickets, articles or other resources diff --git a/.profile b/.profile new file mode 100644 index 0000000..5131940 --- /dev/null +++ b/.profile @@ -0,0 +1,25 @@ +# ~/.profile: executed by the command interpreter for login shells. +# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login +# exists. +# see /usr/share/doc/bash/examples/startup-files for examples. +# the files are located in the bash-doc package. + +# the default umask is set in /etc/profile; for setting the umask +# for ssh logins, install and configure the libpam-umask package. +#umask 022 + +# if running bash +if [ -n "$BASH_VERSION" ]; then + # include .bashrc if it exists + if [ -f "$HOME/.bashrc" ]; then + . "$HOME/.bashrc" + fi +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/bin" ] ; then + PATH="$HOME/bin:$PATH" +fi + +export BREW_PREFIX=/home/linuxbrew/.linuxbrew +export CHROME_REMOTE_DESKTOP_DEFAULT_DESKTOP_SIZES=1440x900 diff --git a/.shell-aliases b/.shell-aliases new file mode 100644 index 0000000..9994b2d --- /dev/null +++ b/.shell-aliases @@ -0,0 +1,36 @@ +# If not running interactively, don't do anything +[ -z "$PS1" ] && return + +# Source global definitions +test -r /etc/bashrc && . /etc/bashrc + +test -r ~/.bash_aliases && . ~/.bash_aliases + +# don't put duplicate lines in the history. See bash(1) for more options +# ... or force ignoredups and ignorespace +HISTCONTROL=ignoreboth +export HISTIGNORE="&:ls:[bf]g:pwd:exit:cd .." + +# append to the history file, don't overwrite it +shopt -s histappend +PROMPT_COMMAND="history -a;$PROMPT_COMMAND" + +# Store multiline commands as one line. +shopt -s cmdhist + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=10000 +HISTFILESIZE=20000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# Spellcheck directories +shopt -s dirspell + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +test -f /usr/share/bash-completion/bash_completion && . /usr/share/bash-completion/bash_completion +test -f /etc/bash_completion && . /etc/bash_completion diff --git a/.shell-common b/.shell-common new file mode 100644 index 0000000..6b714e1 --- /dev/null +++ b/.shell-common @@ -0,0 +1,11 @@ +# vim: set ft=sh sw=2 et : + +# make less more friendly for non-text input files, see lesspipe(1) +command -v lesspipe.sh >/dev/null 2>&1 && eval "$(SHELL=/bin/sh lesspipe.sh)" + +# enable color support of ls and also add handy aliases +if command -v dircolors >/dev/null 2>&1; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" +fi + +test -r ~/.shell-common.local && source ~/.shell-common.local diff --git a/.shell-env b/.shell-env new file mode 100644 index 0000000..5468432 --- /dev/null +++ b/.shell-env @@ -0,0 +1,22 @@ +# vim: set ft=sh sw=2 et : + +## +## Editors +## +export EDITOR=vi +export GIT_EDITOR="$EDITOR" +export USE_EDITOR="$EDITOR" +export VISUAL=$EDITOR +export PAGER=less + +## +## Pager +## +export PAGER=less +export LESS='-iFMRSX -x4' + +if [ -f "$HOME/.shell-env.local" ]; then + . "$HOME/.shell-env.local" +fi + +umask 022 diff --git a/.shell-logout b/.shell-logout new file mode 100644 index 0000000..a6cd4e6 --- /dev/null +++ b/.shell-logout @@ -0,0 +1,26 @@ +# vim: set ft=sh sw=2 et : + +# when leaving the console clear the screen to increase privacy + +if [ "$SHLVL" = 1 ]; then + [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q +fi + +# When leaving the console clear the screen to increase privacy. Also clear the +# scroll-back buffer by switching to tty63 and back. +case "$(tty)" in + /dev/tty[0-9]) + t=$(v=`tty` ; echo ${v##*ty}) + clear + chvt 63; chvt "$t" + ;; + + /dev/tty[0-9][0-9]) + t=$(v=`tty` ; echo ${v##*ty}) + clear + chvt 63; chvt "$t" + ;; + + *) + ;; +esac diff --git a/.tmux.conf b/.tmux.conf new file mode 100644 index 0000000..7402030 --- /dev/null +++ b/.tmux.conf @@ -0,0 +1,89 @@ +## Prefix like in screen +set -g prefix 'C-a' + +## Use xterm keys (makes eg. Ctrl+Arrow navigate words) +set-window-option -g xterm-keys on + +## List of plugins +# For this to work you need to install https://github.com/tmux-plugins/tpm +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' +# Those two allow continuous saving and restoring of tmux sessions +set -g @plugin 'tmux-plugins/tmux-resurrect' +set -g @plugin 'tmux-plugins/tmux-continuum' +# Intuitive bindings for splitting panes +set -g @plugin 'tmux-plugins/tmux-pain-control' +# Integrations with system clipboard +set -g @plugin 'tmux-plugins/tmux-yank' +# Easier session management +set -g @plugin 'tmux-plugins/tmux-sessionist' +# Man in a split +set -g @plugin 'knakayama/tmux-man' +# Peek-a-boo +set -g @plugin 'knakayama/tmux-newline-detector' + +## Plugin configuration +set -g @continuum-restore 'on' +set -g @continuum-save-interval '5' +set -g @resurrect-capture-pane-contents 'on' +set -g @yank_selection 'primary' +set -g @man-size '40%' +set -g @man-orientation 'h' +set -g @man-shell-interactive 'off' + +# True colors (via: https://jdhao.github.io/2018/10/19/tmux_nvim_true_color/ ) +set -g default-terminal "screen-256color" +# tell Tmux that outside terminal supports true color +set -ag terminal-overrides ",alacritty:RGB" + +## Windows style +set-option -g status-style fg=yellow,bg=default +set-window-option -g pane-active-border-style '' + +## A bit more space in right status bar +set -g status-right-length 50 + +## Rename windows to fit current application +setw -g automatic-rename on + +# Use zsh regardless of default settings +if-shell 'test -x /usr/bin/zsh' 'set-option -g default-shell /usr/bin/zsh' + +# switch panes using Alt-arrow without prefix +bind -n M-Left select-pane -L +bind -n M-Right select-pane -R +bind -n M-Up select-pane -U +bind -n M-Down select-pane -D + +## Mouse On by default +set -g mouse on + +# PageUp/PageDown works for scrolling +bind-key -T root PPage if-shell -F "#{alternate_on}" "send-keys PPage" "copy-mode -e; send-keys PPage" +bind-key -T copy-mode-vi PPage send-keys -X page-up +bind-key -T copy-mode-vi NPage send-keys -X page-down + +# Same for the mouse scroll button +bind-key -T root WheelUpPane if-shell -F -t = "#{alternate_on}" "send-keys -M" "select-pane -t =; copy-mode -e; send-keys -M" +bind-key -T root WheelDownPane if-shell -F -t = "#{alternate_on}" "send-keys -M" "select-pane -t =; send-keys -M" +bind-key -T copy-mode-vi WheelUpPane send-keys -X halfpage-up +bind-key -T copy-mode-vi WheelDownPane send-keys -X halfpage-down + +# Toggle prefix on/off with F12 (for nested remote sessions) +bind -T root F12 \ + set prefix None \;\ + set key-table off \;\ + if -F '#{pane_in_mode}' 'send-keys -X cancel' \;\ + refresh-client -S \;\ + +bind -T off F12 \ + set -u prefix \;\ + set -u key-table \;\ + refresh-client -S + +# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) +if "test ! -d ~/.tmux/plugins/tpm" \ + "run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'" +run '~/.tmux/plugins/tpm/tpm' + +# vim: se ft=tmux : diff --git a/.vim/undodir/.gitkeep b/.vim/undodir/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..965b8d3 --- /dev/null +++ b/.vimrc @@ -0,0 +1,275 @@ +" vim: set sw=2 et : + +" Configure plug.vim +if has('nvim') + let vimautoloaddir='~/.config/nvim/site/autoload' +else + let vimautoloaddir='~/.vim/autoload' +endif + +call plug#begin() + +" This is taking care of the plugins +Plug 'junegunn/vim-plug' + +" Neovim is sensible by default +if !has('nvim') + Plug 'tpope/vim-sensible' +endif + +" Editing eye-candy +Plug 'junegunn/goyo.vim' +Plug 'junegunn/limelight.vim' + +" Solarized colorscheme +Plug 'altercation/vim-colors-solarized' + +" Tmux .conf +Plug 'tmux-plugins/vim-tmux' +" Tmux Focus Events +Plug 'tmux-plugins/vim-tmux-focus-events' + +" Automatically detect indentation +Plug 'tpope/vim-sleuth' + +if has('nvim') + " Asynchronous make for neovim + Plug 'neomake/neomake' + " Automated code formatter + Plug 'sbdchd/neoformat' + " Popup terminal + Plug 'kassio/neoterm' + " Nice tree view + Plug 'kyazdani42/nvim-tree.lua' + " Icons for the tree view + Plug 'kyazdani42/nvim-web-devicons' + " A buffer bar + Plug 'noib3/nvim-cokeline' + " Better syntax recognition + Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} + " Mason is now preferred over LSP Installer + Plug 'williamboman/mason.nvim' + " LSP config + Plug 'neovim/nvim-lspconfig' + Plug 'williamboman/mason-lspconfig.nvim' + " Auto completion + Plug 'hrsh7th/cmp-nvim-lsp' + Plug 'hrsh7th/cmp-nvim-lsp-signature-help' + Plug 'hrsh7th/cmp-buffer' + Plug 'hrsh7th/cmp-path' + Plug 'hrsh7th/cmp-cmdline' + Plug 'hrsh7th/nvim-cmp' + " Snippets + Plug 'hrsh7th/cmp-vsnip' + Plug 'hrsh7th/vim-vsnip' + Plug 'rafamadriz/friendly-snippets' + " Telescope for quick switching + Plug 'nvim-lua/plenary.nvim' + Plug 'nvim-telescope/telescope.nvim' + Plug 'nvim-telescope/telescope-fzf-native.nvim', { 'do': 'make' } + " Copliot here + Plug 'github/copilot.vim' + " Nice colours for our NeoVim + Plug 'ishan9299/nvim-solarized-lua' + Plug 'shaunsingh/solarized.nvim' + + " Show indent lines + Plug 'lukas-reineke/indent-blankline.nvim' + " Status line + Plug 'feline-nvim/feline.nvim' + " Dim inactive windows + Plug 'sunjon/shade.nvim' +endif + +call plug#end() + +if has('nvim') + " Add some colors + set termguicolors + colorscheme solarized-high + + " When writing a buffer (no delay), and on normal mode changes (after 750ms). + call neomake#configure#automake('nw', 750) + " Call Neomake when writing a buffer (no delay) + let g:neomake_open_list = 2 + + " Configure Cokeline + lua << EOF + require('cokeline').setup({ + show_if_buffers_are_at_least = 2 + }) + + local map = vim.api.nvim_set_keymap + + map('n', '', '(cokeline-focus-prev)', { silent = true }) + map('n', '', '(cokeline-focus-next)', { silent = true }) + map('n', 'h', '(cokeline-focus-prev)', { silent = true }) + map('n', 'l', '(cokeline-focus-next)', { silent = true }) +EOF + + " Configure completion and LSP + set completeopt=menu,menuone,noselect + autocmd BufWritePre * lua vim.lsp.buf.formatting_sync(nil, 4000) + + lua <'] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'nvim_lsp_signature_help' }, + { name = 'vsnip' }, + }, { + { name = 'buffer' }, + }) + }) + + require("mason").setup({ + automatic_installation = true, + }) + require("mason-lspconfig").setup() +EOF + + " Configure NvimTree + lua << EOF + require('nvim-tree').setup() +EOF + nmap n :NvimTreeToggle + + " Configure Telescope + lua << EOF + require('telescope').load_extension('fzf') +EOF + " Find files using Telescope command-line sugar. + nnoremap ff Telescope find_files + nnoremap fg Telescope live_grep + nnoremap fb Telescope buffers + nnoremap fh Telescope help_tags + + " Configure tree-sitter with folding + lua < + +" Configure Goyo +nmap ] :Goyo +function! s:goyo_enter() + if exists('$TMUX') + " Hide the status panel and zoom in the current pane + silent !tmux set status off + " This hackery checks whether the pane is zoomed and toggles the status if + " not + silent !tmux list-panes -F '\#F'|grep -q Z || tmux resize-pane -Z + endif + " All eyes on me + Limelight + " Resize after zoom + if !exists("g:goyo_width") + let g:goyo_width=80 + endif + if !exists("g:goyo_height") + let g:goyo_height='85%' + endif + execute "Goyo ".g:goyo_width."x".g:goyo_height + set scrolloff=999 +endfunction + +function! s:goyo_leave() + if exists('$TMUX') + " Show the status panel and zoom out the current pane + silent !tmux set status on + silent !tmux list-panes -F '\#F'|grep -q Z && tmux resize-pane -Z + endif + Limelight! + set scrolloff=5 +endfunction + +autocmd! User GoyoEnter nested call goyo_enter() +autocmd! User GoyoLeave nested call goyo_leave() + +" Configure Limelight +let g:limelight_conceal_ctermfg = 245 " Solarized Base1 +let g:limelight_conceal_guifg = '#8a8a8a' " Solarized Base1 + +""" +""" Visually indicate long columns +""" Taken from https://www.youtube.com/watch?v=aHm36-na4-4 +""" +highlight ColorColumn ctermbg=magenta +call matchadd('ColorColumn', '\%81v', 100) + +" Prefer two spaces +set shiftwidth=2 +set softtabstop=2 + +" Show me those tabs, BTW +set list +set listchars=trail:~,nbsp:␣,tab:▸\ + +" Easy moves through wrapped lines +nnoremap j gj +nnoremap k gk + +" Work with tmux mouse integration +set mouse=a + +if has('nvim') + set undodir=~/.config/nvim/undodir +else + set undodir=~/.vim/undodir +endif +set undofile diff --git a/README.md b/README.md new file mode 100644 index 0000000..9508386 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +Based from https://github.com/DoomHammer/dotfiles.git