ebkalderon / dotfiles

Tiny platform-agnostic package manager for my personal dotfiles

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dotfiles

Many people are posting their configuration files on GitHub, so here are mine. Keep in mind that these dotfiles are for my own personal use, so occasional breakage may occur.

Screenshot of terminal in active use

Overview

This repository contains my dotfiles, along with a tiny package manager for managing and deploying them across both personal and work machines.

This little package manager is written in pure Bash and relies on GNU Stow under the hood. The dotfiles themselves are organized into small "packages" which bundle together:

  • Base configuration, if any
  • OS-specific configuration, if any
  • Profile-specific configuration, if any (e.g. work or home-server)
  • Scriptable pre/post transaction hooks

Packages are defined according to a simple, declarative, and self-describing format. Using the included dotfiles command, you can pick and choose which dotfiles to install. For instance:

dotfiles list                   # Lists all available dotfiles and profiles
dotfiles install bash+work fzf  # Installs `bash` configs (work profile) and `fzf` configs
dotfiles install                # Installs _all_ dotfiles compatible with your OS

Highlights

  • Supports Arch Linux, Linux Mint, and macOS
  • Colorful bash prompt, displays the current git/svn repo branch
  • Fuzzy-find all the things with fzf + ripgrep (files, bash history, man pages, git branches, and more)
  • Custom Neovim config with LSP and telescope.nvim for fuzzy-finding
  • tmux as terminal multiplexer and session manager (with custom theme)
  • mpd/mopidy and ncmpcpp for playing music in the terminal
  • Beautiful Monokai color palette for everything 😍

Install

Warning Please audit the bootstrap script first before executing the commands below!

bash <(curl https://raw.githubusercontent.com/ebkalderon/dotfiles/master/bootstrap -sSf)
cd ~/.dotfiles
./dotfiles install

The bootstrap script from the snippet above performs a few pre-setup tasks (ensuring git, stow, and bash are installed and fully up-to-date) and ./dotfiles install actually deploys the dotfiles to your ~ directory.

A short summary of changes and an interactive confirmation prompt are shown before any action is taken.

Install alongside existing

If you'd like to give my dotfiles a try, but don't want to replace your existing setup, you can override $HOME before running ./dotfiles install:

cd ~/.dotfiles
mkdir .sandbox
env HOME=~/.dotfiles/.sandbox ./dotfiles install

This will deploy everything into the ~/.dotfiles/.sandbox/ directory instead of ~, leaving your existing setup completely untouched. If you don't like my setup, the ~/.dotfiles directory can be safely discarded.

Uninstall

To remove one or more specific dotfiles from your system:

dotfiles uninstall gnupg neovim

To remove all of my dotfiles your system:

dotfiles uninstall

A short summary of changes and an interactive confirmation prompt are shown before any action is taken.

Key bindings

Command-line:

Binding Description
Ctrl+R Fuzzy search command history with fzf/ripgrep
Ctrl+T Fuzzy search filesystem in the current directory with fzf/ripgrep

TODO: List all the rest of the keybindings

License

These dotfiles are distributed as free and open source software under the terms of the MIT License.

About

Tiny platform-agnostic package manager for my personal dotfiles

License:MIT License


Languages

Language:Shell 64.0%Language:Lua 36.0%