🧰 ~ • My Đotfiles
Go to file
2022-08-14 23:24:11 +01:00
.github :octocat: Adds GH workflow to test dotfiles 2022-03-19 15:25:43 +00:00
bash 🔧 Adds a .bashrc, for systems without ZSH installed yet 2022-03-13 22:42:05 +00:00
configs Adds .wgetrc config 2022-08-14 23:22:02 +01:00
dotbot@4ec846cdad 📥 Updated install script with Dotbot 2022-03-12 19:27:04 +00:00
installs Adds Winget apps for Windows 2022-08-14 23:24:11 +01:00
tmux ⚙ Updates install scripts 2022-03-15 23:38:47 +00:00
tpm@b699a7e01c 📝 Adds readme back in 2022-03-15 23:36:58 +00:00
utils Fixes formatting of welcome banner on MacOS 2022-08-12 12:22:45 +01:00
vim Updates web-search and welcome-banner 2022-08-06 20:25:55 +01:00
zsh In NVM install, also set default version to LTS 2022-08-14 23:23:27 +01:00
.gitignore Updates dotfiles for MacOS 2022-08-11 10:22:22 +01:00
.gitmodules 📝 Adds readme back in 2022-03-15 23:36:58 +00:00
.install.conf.yaml Updates git configuration 2022-08-12 12:22:26 +01:00
install.sh Adds Windows install in install.sh and formatting update 2022-08-14 23:20:38 +01:00

    ____        __  _____ __         
   / __ \____  / /_/ __(_) /__  _____
  / / / / __ \/ __/ /_/ / / _ \/ ___/
 / /_/ / /_/ / /_/ __/ / /  __(__  ) 
/_____/\____/\__/_/ /_/_/\___/____/       

Intro

My personal dot files, that I use to quickly configure a Linux environment on desktop and server instances. Dotbot is being used to create symlinks in all the right places.

Tested and used on Ubuntu, Arch Linux and Manjaro.


Setup

To setup, just clone the repo, cd into it, and run the install script.

git clone git@github.com:Lissy93/dotfiles.git
cd dotfiles
./install.sh

Configuring

Configuration is specified in .install.conf.yaml and managed with Dotbot.

The bootstrap configurations are idempotent (and so the installer can be run multiple times without causing any problems).

To only install certain parts of the config, pass the --only flag to the install.sh script, similarly --except can be used to exclude certain directives.


Dependencies

These dot files make use of the following packages, and hence they are required

  • zsh - Interactive Shell
  • vim - Fast, solid customizable text editor
  • tmux - Detachable terminal multiplexer
  • ranger - CLI-based file manager with VI bindings
  • git - Version control system

They can be easily installed/ updated with your package manger, e.g:

  • Ubuntu Server: sudo apt install -y zsh vim tmux ranger git
  • Arch Linux: sudo pacman -S zsh vim tmux ranger git

Depending on your setup, the following utils may also be required: make, ctags, fzf and python3-pip


Documentation

The following section briefly explains the configuration and plug-ins for the main components (Tmux, Vim and Zsh)

Tmux

Fairly standard Tmux configuration, strongly based off Tmux-sensible. Configuration is defined in .tmux.conf

Tmux plugins are managed using TMP and defined in .tmux.conf. To install them from GitHub, run prefix + I from within Tmux, and they will be cloned int ~/.tmux/plugins/.

Plugins

  • Tmux-sensible: tmux-plugins/tmux-sensible - General, sensible Tmux config
  • Tmux-continuum: tmux-plugins/tmux-continuum - Continuously saves and environment with automatic restore
  • Tmux-yank: tmux-plugins/tmux-yank - Allows access to system clipboard
  • Tmux-prefix-highlight: tmux-plugins/tmux-prefix-highlight - Highlight Tmux prefix key when pressed
  • Tmux-online-status: tmux-plugins/tmux-online-status - Displays network status
  • Tmux-open: tmux-plugins/tmux-open - Bindings for quick opening selected path/ url
  • Tmux-mem-cpu-load: thewtex/tmux-mem-cpu-load - Shows system resources

Vim

The entry point for the Vim config is the vimrc, but the main editor settings are defined in vim/editor.vim

Plugins

Vim plugins are managed using Plug defined in vim/plugins.vim. To install them from GitHub, run :PlugInstall (see options) from within Vim.

Layout & Navigation:

  • Airline: vim-airline/vim-airline - A very nice status line at the bottom of each window, displaying useful info
  • Nerd-tree: preservim/nerdtree - Alter files in larger projects more easily, with a nice tree-view pain
  • Matchup: andymass/vim-matchup - Better % naviagtion, to highlight and jump between open and closing blocks
  • TagBar: preservim/tagbar - Provides an overview of the structure of a long file, shows tags ordered by scope
  • Gutentags: ludovicchabant/vim-gutentags - Manages tag files
  • Fzf: junegunn/fzf and junegunn/fzf.vim - Command-line fuzzy finder and corresponding vim bindings
  • Deoplete.nvim: Shougo/deoplete.nvim - Extensible and asynchronous auto completion framework
  • Smoothie: psliwka/vim-smoothie - Smooth scrolling, supporting ^D, ^U, ^F and ^B
  • DevIcons: ryanoasis/vim-devicons - Adds file-type icons to Nerd-tree and other plugins

Operations:

  • Nerd-Commenter: preservim/nerdcommenter - For auto-commenting code blocks
  • Ale: dense-analysis/ale - Checks syntax asynchronously, with lint support
  • Surround: tpope/vim-surround - Easily surround selected text with brackets, quotes, tags etc
  • IncSearch: haya14busa/incsearch.vim - Efficient incremental searching within files
  • Vim-Visual-Multi: mg979/vim-visual-multi - Allows for inserting/ deleting in multiple places simultaneously
  • Visual-Increment: triglav/vim-visual-increment - Create an increasing sequence of numbers/ letters with Ctrl + A/X
  • Vim-Test: janko/vim-test - A wrapper for running tests on different granularities
  • Syntastic: vim-syntastic/syntastic - Syntax checking that warns in the gutter when there's an issue

Git:

  • Git-Gutter: airblade/vim-gitgutter - Shows git diff markers in the gutter column
  • Vim-fugitive: tpope/vim-fugitive - A git wrapper for git that lets you call a git command using :Git
  • Committia: rhysd/committia.vim - Shows a diff, status and edit window for git commits
  • Vim-Git: tpope/vim-git - Runtime files for git in vim, for git, gitcommit, gitconfig, gitrebase, and gitsendemail

File-Type Plugins:

  • Vim-JavaScript: pangloss/vim-javascript (JavaScript) - Syntax highlighting and improved indentation for JS files
  • Yats: HerringtonDarkholme/yats.vim (TypeScript) - Syntax highlighting and snippets for TypeScript files
  • Vim-jsx-pretty: MaxMEllon/vim-jsx-pretty (React) - Highlighting and indentation for React .tsx and .jsx files
  • Vim-CSS-Color: ap/vim-css-color (CSS/ SASS) - Previews colors as text highlight, where hex codes are present
  • Mustache and Handlebars: mustache/vim-mustache-handlebars (Mustache/ Handlebars) - Auto handles braces
  • Vim-Go: fatih/vim-go (GoLang) - Go support, with syntax highlighting, quick execute, imports, formatting etc
  • Indentpython: vim-scripts/indentpython.vim (Python) - Correct indentation for Python files
  • Semshi: numirias/semshi (Python) - Advanced syntax highlighting for Python files
  • SimpylFold: tmhedberg/SimpylFold (Python) - Code-folding for Python
  • Vimtex: lervag/vimtex (LaTex) - Completion of citations, labels, commands and glossary entries
  • Dockerfile.vim: ekalinin/Dockerfile.vim (Docker) - Syntax highlighting and snippets for Dockerfiles
  • Vim-Json: elzr/vim-json (JSON) - Syntax highlighting, warnings, and quote concealing foe .json files
  • Requirements: raimon49/requirements.txt.vim (Requirements) - Syntax highlighting for the requirements file format
  • Vim-Markdown: gabrielelana/vim-markdown (Markdown) - Syntax highlighting, auto format, easy tables and more
  • Zinit: zinit-zsh/zinit-vim-syntax (ZSH) - syntax definition for Zinit commands in any file of type zsh
  • Nginx:chr4/nginx.vim (Nginx) - Integer matching, hichlight syntax and IPv4/ IPv6, mark insecure protocols and more

Themes: