Profile Management with Git and GitHub
EFI boot picker screen
EFI menu screen
ZSH command prompt with powerlevel9k theme
ZSH command prompt with auto-suggestions
TMUX status line showing host OS, session name and other things
Neovim setup, customized for C++ developement
Neomutt setup, terminal based email utility
AweomeWM - Alacritty, Zim, Zathura and notifications panel
AweomeWM - firefox
$ bash -c "$(curl -fsSL https://raw.githubusercontent.com/ragu-manjegowda/config/master/.config/scripts/bootstrap.sh)"
The following describes a simple way to manage profile configuration files using GitHub.
Centralized configuration management
Files live in their native locations (no symbolic linking)
Home directory is not a Git repository
All the power of git with a simple alias
Log into GitHub and create a repository named config
Add your public keys to GitHub (if you haven’t done so already)
Open a terminal and switch to your home directory
$ cd ~
Create a configuration directory
$ mkdir .config.git
Add the following alias to your .bashrc
and/or your .bash_profile
alias config='git --git-dir=$HOME/.config.git/ --work-tree=$HOME'
Add your .bash_profile
to the configuration repository
$ config add .bash_profile
Commit the changes
$ config commit -m 'Initial commit'
Change the origin to GitHub
$ config remote add origin [email protected] :GITHUB_USERNAME/config.git
Push the changes
config push origin master
If you get an error when running config pull
to the effect of You asked me to pull without...
run the follow:
$ echo -e '[branch "master"]\n remote = origin\n merge = refs/heads/master' >> ~/.config.git/config
Setup Configuration Management on a Different System
Add your public keys to GitHub (if you haven’t done so already)
Switch to your home directory
$ cd ~
Backup your local configuration files, example:
$ mv .bash_profile .bash_profile.bk
$ mv .bashrc .bashrc.bk
Clone your configuration repository
$ git clone [email protected] :GITHUB_USERNAME/config.git config.git
Move the git metadata to ~/.config.git
$ mv config.git/.git .config.git
Enable dotglob
$ shopt -s dotglob
Move your configuration files to your home directory
$ mv -i config.git/* .
Delete the config.git
directory
$ rmdir config.git
Logout and log back in
Note: Sub-modules needs to be updated
$ git submodule update --remote --rebase
Git tracking using vim plugins
Set core.worktree
like the following
$ git --git-dir=$HOME/.config.git --work-tree=$HOME config --local core.worktree $HOME
open files of this repository with the alias cvim
config pull
- get latest configuration changes
config add FILENAME
- add a configuration file
config commit -a
- save all configuration changes
config push
- push configuration changes to GitHub
and any other config GIT_OPTION