To download my dotfiles, you can run either of the following commands:
curl https://dotfiles.ajai.dev/download | shwget -O - https://dotfiles.ajai.dev/download | shBy default, it will download to ~/prog/dotfiles. If you want it to download to a different directory, set the DOTFILES environment variable to the location the repository should go.
Or you can just clone it yourself:
git clone --depth=1 https://github.com/AjaiKN/dotfilesIf you don't have git installed, you should probably install it. But you can also download my dotfiles without git:
curl -LO 'https://github.com/AjaiKN/dotfiles/releases/latest/download/dotfiles.tar.gz'
# OR: wget 'https://github.com/AjaiKN/dotfiles/releases/latest/download/dotfiles.tar.gz'
tar xf dotfiles.tar.gzTo install the dotfiles to your home directory, run ./install.
(The download script will also offer to run this for you.)
If any of the relevant dotfiles already exist in the home directory, don't worry: the install script will prompt to ask you whether to skip that file, delete the original file, back up the original file, or zap the original file to the trash.
If you want to remove all the symlinks to my dotfiles, run ./uninstall.
NOTE: The uninstall script ONLY removes symlinks to my dotfiles. If you told the install script to delete, zap/trash, or back up any of the original files, the uninstall script will not undo that; you'll have to undo it yourself.
config/: Files that belong in~/.config/($XDG_CONFIG_HOME)dot-home/: Files that go directly in my home directory (~)bin/: Custom scripts and utilities that belong in my PATHscripts/: Scripts that don't need to be in my PATHlaunchd/: macOS LaunchAgents for background tasksnix/: Nix, NixOS, and Home Manager configurationsvendor/: Third-party dependenciesprivate/: A git submodule linking to a private repository containing configuration I haven't (yet) publicized
My very customized Doom Emacs configuration is in config/doom/.
See config/doom/README.org.
I have a bunch of custom Doom modules in config/doom/modules/.
See config/doom/modules/README.org.
config/shell/*.sh: General shell configuration (for both bash and zsh)config/zsh/: Zsh configurationconfig/zsh/plugin-manager.zsh: My custom zsh plugin manager
config/bash/: Bash configuration
config/git/config: Git configurationconfig/gh/config.yml: GitHub CLI configuration (including a bunch of aliases)- Custom Git Subcommands (in
bin/)git exclude: Add to.git/info/excludegit ignore: Add to.gitignoregit force: Force push relatively safely using--force-with-leaseand--force-if-includesgit ff: Do a fast-forward mergegit shelve: Hide branches so they're not listed bygit branchbut are still accessiblegit unshelve: Unhide a branchgit shelved: List hidden branches
git stash-unstaged: Stash only unstaged changesgit undo-last-commit: Safely undo the last commit while keeping changesgit redo-commit: Re-commit the undone commit (starting with the same commit message)
zap: Move files to the trash instead of deleting (supports both macOS and Linux, no dependencies except bash)delete-ds-stores: Clean up macOS .DS_Store files recursivelyscripts/secure_path: A best-effort attempt to make my PATH cleaner and more secure by removing potentially dangerous directories- Emacs Integration
dot-home/.vimrc: Vim configuration (relatively minimal)config/nvim/: Neovim configuration
config/wezterm/: WezTerm terminal emulator configdot-home/.tmux.conf: tmux configuration
Copyright (C) 2025 Ajai Khatri Nelson
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.