https://github.com/nyambogahezron/dotfiles
dotfiles & dev setups
https://github.com/nyambogahezron/dotfiles
config dotfiles shell
Last synced: 4 days ago
JSON representation
dotfiles & dev setups
- Host: GitHub
- URL: https://github.com/nyambogahezron/dotfiles
- Owner: nyambogahezron
- License: mit
- Created: 2025-08-07T17:54:20.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2026-06-11T13:39:23.000Z (14 days ago)
- Last Synced: 2026-06-11T15:23:41.196Z (14 days ago)
- Topics: config, dotfiles, shell
- Language: Shell
- Homepage:
- Size: 84.5 MB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Dotfiles
Modern, production-grade development environment managed by [GNU Stow](https://www.gnu.org/software/stow/), with a modular setup toolkit for languages, apps, and tooling.
## Features
- **Modular Shell Layout**: Shared aliases, functions, and exports across Bash and Zsh.
- **GNU Stow**: Symlink-based management for easy tracking and deployment.
- **Fast and Lightweight**: No templates or complex logic, just plain configuration files.
- **Automation**: Bootstrap scripts for one-command environment setup and migration helpers.
## Getting Started
### Prerequisites
- `git`
- `stow`
### Quick Start
```bash
git clone https://github.com/nyambogahezron/dotfiles.git ~/Projects/dotfiles
cd ~/Projects/dotfiles
./install.sh
```
To install the full development environment from one script:
```bash
./install-all.sh
```
The full installer checks for existing tools before installing them and skips detected installs by default. Use `./install-all.sh --force-reinstall` only when you explicitly want to reinstall detected runtimes/tools.
### Setup Scripts
The `setup/` directory is organized by purpose:
- `setup/langs/`: Programming language installers and language-specific tooling.
- `setup/apps/`: Applications, fonts, Neovim, and GNOME helpers.
- `setup/tools/`: Core tools, shell setup, Git, and Docker.
- `setup/utils/`: Shared helpers used by the setup scripts.
- `setup/main.sh`: Interactive entry point that can install a full environment or selected groups.
## Included Tools & Applications
The automated `setup/main.sh` installer can dynamically provision the following software (you will be interactively prompted to select what you want):
### DevOps & Infrastructure
- **Cloud & IaC**: Terraform, AWS CLI, HashiCorp Vault
- **Kubernetes**: Kubectl, Helm, k9s
- **Configuration & Secrets**: Ansible, sops
- **VCS**: Git, GitHub CLI (`gh`), GitLab CLI (`glab`)
- **Linting**: tflint
### Observability Stack (Docker Compose)
- Grafana, Prometheus, Loki, Tempo, VictoriaMetrics, Redis
### Programming Languages & Runtimes
- **JavaScript/TypeScript**: Node.js (via NVM), Bun, Deno
- **Python**: Python, uv, pipenv, virtualenv, Jupyter, pytest
- **Others**: Rust, Go, PHP (with Laravel environment)
### Modern CLI & Shell
- **Shell**: Zsh, Oh-My-Zsh, ASDF Version Manager
- **Prompt & History**: Starship, Atuin
- **File Management**: yazi, dust, zoxide
- **Search**: ripgrep, fd-find, fzf
- **Terminal UI**: lazygit, lazydocker, btop, eza, bat, tealdeer (`tldr`)
### Desktop & Productivity
- **Editors & AI**: VS Code, Neovim, Google Antigravity, Opencode, Gemini-CLI
- **Browsers**: Google Chrome, Firefox, Brave
- **Communication**: Slack, Discord
- **Media**: VLC, GIMP, OBS Studio
- **Utilities**: Flameshot, Ulauncher
- **Note-Taking**: Obsidian, Anytype
- **Databases & APIs**: DBeaver CE, Postman, HTTPie, ngrok, mkcert
- **VPN**: OpenVPN, ProtonVPN
### GNOME Configuration
- Automated installation of GNOME Extensions and Tweaks
- Export and automatic restoration of `dconf` settings, GTK Themes, and Icons
## Usage
### Management
The repository uses `stow` to link files from the repo root to your home directory.
- **Apply changes**: `make apply` or `./install.sh`
- **Run setup installer**: `make setup`
- **Install everything**: `make install-all` or `./install-all.sh`
- **Update repo**: `make update` (pulls changes and re-stows)
- **Check differences**: `git diff`
### Migrating Away From Stow
If you want to stop using symlinks created by Stow and turn them into real files, use the migration helper:
```bash
bash scripts/migrate-from-stow.sh --dry-run
bash scripts/migrate-from-stow.sh --yes
```
By default, the script backs up replaced files into a timestamped folder in your home directory. Use `--backup-dir` to change that location.
### Customization
- **Aliases**: Edit `.config/shell/aliases.zsh`
- **Functions**: Edit `.config/shell/functions.zsh`
- **Env Vars**: Edit `.config/shell/exports.zsh`
## Structure
- `.config/`: Application-specific configurations.
- `.local/bin/`: Custom scripts and binaries.
- `.bashrc` / `.zshrc`: Shell entry points.
- `setup/`: Installation scripts grouped by language, app, and tool.
- `Makefile`: Management tasks.
- `install.sh`: Bootstrap script.
## License
MIT