These are my personal dotfiles and my attempt at getting more organized.
Recommended (with submodules):
git clone --recurse-submodules https://github.com/aggiebill/dotfiles.git
cd dotfiles
chmod +x install.sh
./install.shIf you already cloned without submodules:
git submodule update --init --recursiveDownload the repo as a zip, extract, and run the install script (submodules will be missing):
chmod +x install.sh
./install.shThis will create symlinks for the dotfiles and install necessary packages.
ln -s <dotfiles_dir>/bash_aliases ~/.bash_aliases
ln -s <dotfiles_dir>/vimrc ~/.vimrc
ln -s <dotfiles_dir>/gitconfig ~/.gitconfig
ln -s <dotfiles_dir>/vim ~/.vim
ln -s <dotfiles_dir>/nvim ~/.config/nvim # Neovim primary config (reuses vim/ backend)
ln -s <dotfiles_dir>/fastfetch ~/.config/fastfetch # WSL-optimized fastfetch (replaces neofetch)
ln -s <dotfiles_dir>/gnupg/* ~/.gnupg/Note: After manual symlink setup, initialize submodules so color schemes work:
cd <dotfiles_dir>
git submodule update --init --recursiveThe install script installs these packages automatically:
sudo apt install apt-transport-https neovim vim build-essential htop git bind9-dnsutils software-properties-common fastfetch curl
# - neovim is the primary editor (vim kept only for compatibility)
# - fastfetch replaces neofetch (neofetch is deprecated and not installed)
# - bind9-dnsutils provides dig/nslookup (old "dnsutils" name is a virtual package)Additionally, it installs:
- uv: Modern Python package manager
- ruff: Python linter and formatter
Using uv for Python package management and ruff for linting/formatting.
To import a GPG key from a file (e.g., a public key or private key export):
gpg --import /path/to/your/key.ascAfter importing, verify the key:
gpg --list-keysIf importing a private key, you may need to trust it:
gpg --edit-key <key-id>
# Then type 'trust' and select the trust level.Ensure your GPG configs are symlinked via the install script for modern compatibility.
This repo defaults to desktop use, so the packaged GPG settings are aimed at a GUI-capable machine.
- Use the repo as-is; the current
gnupg/config is intended for desktop GPG usage. - GUI pinentry is expected, and the default pinentry program works with your desktop environment.
- If you sign Git commits, make sure your signing key is configured in Git.
- Install
pinentry-cursesfor terminal-based passphrase entry. - Set
GPG_TTY=$(tty)in your shell environment before using GPG. - Override
pinentry-programif needed, for example:echo 'pinentry-program /usr/bin/pinentry-curses' >> ~/.gnupg/gpg-agent.conf
- The repo already uses
no-honor-keyserver-urlingnupg/dirmngr.conf, which is safer for server environments.
No longer needed with modern tools.
The install script sets up fastfetch (replacing neofetch) with a WSL-optimized config in /etc/profile.d/mymotd.sh and ~/.config/fastfetch/. Neovim is the primary editor.
The old vim/syntax/python.vim (from hdima/python-syntax, last updated 2015) has been removed.
Modern Neovim should use Tree-sitter for Python instead (see "Recommended Modern Setup" below).
Classic vim/syntax/ and vim/colors/ directories are no longer used directly — color schemes now live in git submodules under vim/bundle/.
For the best Python (and other language) experience in Neovim, install nvim-treesitter:
mkdir -p ~/.vim/pack/plugins/start
git clone https://github.com/nvim-treesitter/nvim-treesitter.git ~/.vim/pack/plugins/start/nvim-treesitterThen add this to your Neovim config (already partially prepared in nvim/init.vim):
" In nvim/init.vim or after loading
lua << EOF
require('nvim-treesitter.configs').setup {
ensure_installed = { "python", "lua", "vim", "bash" },
highlight = { enable = true },
indent = { enable = true },
}
EOFAfter first launch, run inside Neovim:
:TSInstall python
This completely replaces legacy syntax/python.vim files with superior, accurate highlighting and indentation.
- @chriskempson for base16-vim (included as git submodule)
- @altercation for vim-colors-solarized (included as git submodule)
- For the number of other GitHub dotfile repos I borrowed from:
- @tpope for numerous useful repos
- @webpro for awesome-dotfiles
- @kdeldycke for dotfiles