A comprehensive dotfiles setup with automatic environment detection and configuration management using GNU Stow.
Get started instantly with one command:
curl -fsSL https://tinyurl.com/nealdotfiles | bash- Multi-Environment Support: Automatically detects and configures for:
- 🏠 Local development environments
- 🐳 GitHub Codespaces
- 🔧 Omarchy Linux setups
- Smart Configuration Management: Uses GNU Stow for clean symlink management
- Command-Specific Options: Enforced argument validation for different operations
- Zsh with Oh My Zsh framework
- Starship prompt with custom configuration
- Custom aliases and shell functions
- Syntax highlighting and autosuggestions
curl -fsSL https://tinyurl.com/nealdotfiles | bashgit clone --recurse-submodules https://github.com/Nvveen/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./setup.sh install# Full installation (OS setup + configurations)
./setup.sh install
# Install only configuration files (skip OS-specific setup)
./setup.sh install --only-configs
# Install for specific environment
./setup.sh install --env omarchy-h, --help- Show help message
--only-configs- Install only configuration files--env <ENV>- Override environment detection (omarchy, local, codespace)
- Basic shell configuration
- Development tool setup
- Optimized for containerized development
- Automatic Oh My Zsh installation
- Lightweight configuration
- Full system package management
- Theme configuration
- Window manager setup
- Package installation/removal
configs/
├── .config/
│ ├── hypr/ # Hyprland window manager
│ ├── nvim/ # Neovim configuration
│ └── starship.toml # Starship prompt
├── .oh-my-zsh/
│ └── custom/ # Custom Oh My Zsh plugins
├── .vimrc # Vim configuration
├── .zprofile # Zsh profile
└── .zshrc # Zsh configuration
- Fork the repository to your GitHub account
- Modify configurations in the
configs/directory - Update the curl URL to point to your fork
- Customize environment detection in
detect_environment()
# First-time setup
curl -fsSL https://tinyurl.com/nealdotfiles | bash
# Install only configs (skip system packages)
./setup.sh install --only-configs
# Force specific environment
./setup.sh install --env localPermission errors: Ensure you have write access to your home directory and the ability to install packages (if doing full install).
Stow conflicts: Existing dotfiles may conflict. The script will remove conflicting files, so make sure to backup any important configurations manually if needed.
./setup.sh --help- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source. Feel free to use, modify, and distribute as needed.
Made with ❤️ for consistent development environments across all platforms.