Personal Linux development environment managed with Git and GNU Stow.
- Git
- GNU Stow
sudo apt update
sudo apt install git stow.
├── bash/
├── git/
├── nvim/
├── zellij/
└── ...
Each top-level directory is a Stow package. Files inside each package mirror their destination in $HOME.
Example:
nvim/
└── .config/
└── nvim/
└── init.lua
This becomes:
~/.config/nvim/init.lua
Clone the repository:
git clone https://github.com/JiruGutema/dotfiles.git ~/dotfiles
cd ~/dotfilesCreate symlinks with Stow:
stow bash git nvim zellijOr stow all packages:
stow */First move the configuration files to a new package directory. For example, to add a new package called .config/custom that lives under your home directory, do the following:
-
Move the configuration files to
dotfiles/custom/.config/custom/ -
Then run the following command to create symlinks:
stow custom
-
verify that the symlinks were created correctly:
ls -l ~/.config/custom -
Update your repository with the new package if you have set up a remote repository:
If you already have a configuration file on your system and want to avoid moving it manually, you can use the --adopt flag. This tells Stow to automatically move the existing file into your dotfiles directory and create the symlink.
cd ~/dotfiles
stow --adopt <package_name>Edit configuration files normally through their locations in $HOME:
nvim ~/.config/nvim/init.luaChanges are stored in this repository because the files are symlinked.
Commit and push updates:
git add .
git commit -m "Update configuration"
git pushUnstow a package:
stow -D nvimRestow it:
stow nvimbash— Bash configuration and aliasesgit— Git configurationnvim— Neovim configurationzellij— Zellij terminal workspace configurationtmux— Tmux confifguration
- Neovim ≥ 0.10
- Node.js ≥ 18 (required for Copilot and several LSP servers)
- Git
- A Nerd Font (recommended: FiraCode Nerd Font or JetBrainsMono Nerd Font)
Original Lazyvim keybindings are used for most operations.
- http://www.lazyvim.org/keymaps
- key bindingings can be found under config/keymaps.lua
- Stow manages symlinks only.
- Existing files may need to be moved or backed up before stowing.
- Package directories should mirror the target directory structure in
$HOME. - For tmux, make sure you have installed tpm (Tmux Plugin Manager)