A focused Zsh-only dotfiles configuration providing a modern development environment with comprehensive aliases, functions, and environment setup.
⚠️ These dotfiles are intended for my own environment. Use at your own risk.
Originally inspired by craftzdog, this repository has been consolidated to focus on Zsh as the primary shell.
- Modular configuration: Organized Zsh settings split across multiple files for easy maintenance
- 150+ aliases: Navigation, git, system utilities, network tools, and macOS-specific commands
- Utility functions: File management, archive extraction, Grimoire integration
- Modern development tools: Support for Go, Node.js, Python, Rust, and other tools
- Easy customization: Local overrides via
.zshrc.localwithout modifying base config - Clean separation: Environment variables in
.zshenv, interactive config in.zshrc, modular configs in.config/zsh/
dotfiles/
├── .zshenv # Environment variables and PATH (always loaded)
├── .zprofile # Login shell initialization
├── .zshrc # Main interactive shell config (sources modular files)
├── .config/
│ └── zsh/
│ ├── aliases.zsh # Aliases (navigation, git, system, network, Grimoire)
│ ├── functions.zsh # Custom shell functions
│ ├── utilities.zsh # Utility aliases and compatibility fixes
│ └── macos.zsh # macOS-specific aliases and functions
├── .gitconfig # Git configuration and aliases
├── .editorconfig # Editor settings
├── .inputrc # Readline configuration
├── .curlrc # Curl configuration
├── .wgetrc # Wget configuration
└── bootstrap.sh # Installation script
The configuration is split into multiple files for better organization:
.zshenv- Always loaded first (environment variables, PATH).zprofile- Login shells only (startup programs).zshrc- Interactive shells (Oh-My-Zsh, sources modular configs)
aliases.zsh- All aliases organized by categoryfunctions.zsh- Custom shell functionsutilities.zsh- Utility aliases and compatibility fixesmacos.zsh- macOS-specific configuration (only loaded on macOS)
The configuration sources .zshrc.local if it exists, allowing for machine-specific overrides without modifying the base config.
-
Clone the repository:
git clone https://github.com/dave6892/dotfiles.git cd dotfiles -
Run the installation script:
./bootstrap.sh
Or use the
--forceoption to skip the confirmation prompt:./bootstrap.sh --force
-
Apply the changes:
- Restart your terminal, or
- Source the configuration manually:
source ~/.zshrc
The bootstrap.sh script will:
- Copy all configuration files to your home directory
- Preserve your existing files (creates backups when needed)
- Shell: Zsh
- Supported platforms: macOS, Linux
- Dependencies:
rsync(usually pre-installed)
Once installed, you'll have access to these aliases across all shells:
.. # cd ..
... # cd ../..
.... # cd ../../..
..... # cd ../../../..
d # cd ~/Documents
dl # cd ~/Downloads
dt # cd ~/Desktop
dev # cd ~/Developerg # git
gst # git status
ga # git add
grm # git rm
gc # git commit
gp # git push
gl # git pull
gd # git diff
gb # git branch
gco # git checkouth # history
j # jobs
week # show current week number
timer # simple timer utility
# Network
ip # get external IP address
localip # get local IP address
flush # flush DNS cache
# File operations
c # trim newlines and copy to clipboard
cleanup # remove .DS_Store files recursivelyshow # show hidden files in Finder
hide # hide hidden files in Finder
showdesktop # show desktop icons
hidedesktop # hide desktop icons
spotoff # disable Spotlight indexing
spoton # enable Spotlight indexingThese functions work across all supported shells:
# Create directory and cd into it
mkd project-name
# Change to top-most Finder window location (macOS)
cdf
# Create compressed tar.gz archive
targz folder-name
# Extract various archive formats
extract archive.zip
extract archive.tar.gz
extract archive.rar
# ... supports many formatsThe configuration sets up several useful environment variables:
- PATH: Optimized with common development tool paths
- EDITOR: Set to your preferred editor (neovim if available, vim otherwise)
- Development tools: Configured for various programming languages and tools
Add machine-specific settings without modifying the main configuration:
- Create
~/.zshrc.localwith your custom settings
This file is automatically sourced at the end of .zshrc if it exists.
To add new aliases or functions:
- Edit
.zshrcand add your customizations, or - Add them to
~/.zshrc.localto keep them separate from the base config
Requires Neovim (>= 0.5)
- vim-plug - A minimalist Vim plugin manager
- nvim-lspconfig - A collection of configurations for Neovim's built-in LSP
- nvim-treesitter - Treesitter configurations and abstraction layer for Neovim
- nvim-cmp - A completion plugin for neovim coded in Lua
- lspsaga.nvim - A light-weight LSP plugin based on Neovim built-in LSP with highly a performant UI
- nvim-lsp-installer - An LSP server installer
- It is used for installing an LSP server for Tailwind CSS
- telescope.nvim - A highly extendable fuzzy finder over lists
- defx.nvim - A file explorer
- Modern terminal multiplexer setup with sensible defaults
- Mouse support and improved key bindings
- Seamless navigation between tmux panes and vim splits
- Useful aliases for common git operations
- Enhanced diff and log visualization
- Sensible defaults for better usability
- craftzdog or devaslife on YouTube: inspired the original environment setup.
- dev-setup: Check out my software setup suite. (Private for now).
dev-setupis inspired by donnemartin's repo.
This project is licensed under MIT License - see the LICENSE file for details.