Skip to content

mkofinas/dotfiles

Repository files navigation

dotfiles

Personal configuration files. Tested on Ubuntu 14.04 LTS and managed using GNU Stow.

Summary

This repository contains configuration files for the following:

Dependencies

Some configuration files rely on external modules in order to work appropriately. For example, in order to use the suggested bash prompt, a set of support scripts and a set of themes have to be downloaded.

Additionally, in many cases, such as vim and bash prompt, nerd-fonts are used. The dependencies mentioned above are either listed as submodules or downloaded automatically using the install script explained below.

Installation

One-Liner (Experimental)

Clone with HTTPS:

curl -L https://raw.githubusercontent.com/mkofinas/dotfiles/master/download_install.sh | bash

Or, if you prefer, clone with SSH:

curl -L https://raw.githubusercontent.com/mkofinas/dotfiles/master/download_install.sh | bash /dev/stdin -s

You can also specify the directory you wish to install the dotfiles (e.g. .dotfiles):

curl -L https://raw.githubusercontent.com/mkofinas/dotfiles/master/download_install.sh | bash /dev/stdin -s .dotfiles

Manual Installation

Clone the repo to a directory of your choice and use the install.sh script in order to configure and install everything. Clone as .dotfiles if you want to make it hidden.

git clone --recursive https://github.com/mkofinas/dotfiles.git dotfiles
cd dotfiles
./install.sh

Implementation Details

To actually use the configuration files, install.sh creates a backup of the already existing dotfiles and then creates symbolic links to the right place using GNU Stow.

The installation script defines the packages to be installed using declarative arrays (i.e. dictionaries) as follows:

declare -A dotfiles_packages
# ...
dotfiles_packages["neovim"]=${XDG_CONFIG_HOME:-${HOME}/.config}
# ...

You might want to take a look at the packages to be installed and modify the installation script according to your needs, by simply commenting out or adding packages.

XDG Base Directory Specification

Whenever possible, I try to follow the XDG Base Directory Specification to organize my dotfiles, in order to avoid the pollution of my entire HOME directory. Towards the organization of software following XDG specification, I recommend taking a look at the Arch Linux wiki.

Adding new Neovim plugins

This repo uses Vim-Plug as a plugin manager for Neovim.

To manage plugins, simply add a vim-plug section to your ~/.config/nvim/init.vim:

  1. Begin the section with plug#begin()
  2. List the plugins with Plug commands
  3. plug#end() to update &runtimepath and initialize plugin system

Then, reload your configuration file and run :PlugInstall. To update existing plugins run :PlugUpdate.

To install from command line: nvim -c 'PlugInstall'

For more information, visit the Vim-Plug example.