A comprehensive cross-platform development environment setup with automated installation, themes, and update management.
git clone https://github.com/antosubash/dotfiles ~/dotfilescd ~/dotfiles
./install.shOn Windows, the equivalent symlink installer is:
pwsh -ExecutionPolicy Bypass -File .\install.ps1./scripts/setup-macos.sh./scripts/setup-ubuntu.sh./scripts/setup-server.sh# From an elevated PowerShell 7+ session:
pwsh -ExecutionPolicy Bypass -File .\scripts\setup-windows.ps1Uses winget for GUI apps (browsers, IDEs, Docker Desktop,
communication apps) and scoop for CLI dev tools (gh, jq, fzf,
ripgrep, fd, lazygit, kubectl, helm, neovim, etc.). Installs language
runtimes (Node LTS, Python 3.12, Go, Rust, Temurin JDK 21, .NET SDK
7/8/9 + preview 10), enables WSL2 + Ubuntu so setup-ubuntu.sh can
run inside WSL, and configures the terminal (Windows Terminal with
Catppuccin Mocha + MesloLGS NF, oh-my-posh prompt, PSReadLine
predictions, Alacritty linked to config/alacritty.toml). Flags:
-SkipWSL, -SkipFonts, -SkipGUI, -SkipTerminal, -BootstrapWSL.
Pass -BootstrapWSL once your Ubuntu distro is initialized with a
user account β it'll clone the dotfiles inside Ubuntu and run
install.sh for you.
To re-run terminal config only:
pwsh -ExecutionPolicy Bypass -File .\scripts\setup-windows-terminal.ps1To update everything later:
pwsh -File .\scripts\update-windows.ps1 # full pass
pwsh -File .\scripts\update-windows.ps1 -Quick # winget + scoop + rustup onlyHeadless variant: same dev toolchain as setup-ubuntu.sh (Java,
.NET 7/8/9/10, Go, Rust, Node, Python/uv, Docker, k8s, GDAL/PROJ/GEOS,
etc.) but drops GUI items (Wireshark, VLC, Thunderbird, snap chat apps,
terminal fonts) and adds server essentials: openssh-server,
unattended-upgrades, fail2ban, sysstat, ncdu, iotop, plus a
UFW default config that allows SSH.
./scripts/setup-update.shdotfiles/
βββ install.sh # Main dotfiles installation (macOS / Linux)
βββ install.ps1 # Main dotfiles installation (Windows)
βββ scripts/
β βββ setup-macos.sh # macOS full development setup
β βββ setup-ubuntu.sh # Ubuntu desktop development setup
β βββ setup-server.sh # Ubuntu Server (headless) setup
β βββ setup-windows.ps1 # Windows development setup (winget + scoop)
β βββ setup-windows-terminal.ps1 # Windows Terminal + oh-my-posh + Alacritty
β βββ update-windows.ps1 # Update winget + scoop + modules + WSL distros
β βββ setup-agnoster.sh # Agnoster theme installer
β βββ setup-terminal.sh # Terminal theme configuration
β βββ setup-update.sh # Update command installer
β βββ update-all.sh # Full system updater
β βββ update-quick.sh # Quick daily updater
βββ shell/
β βββ .zshrc # Enhanced Zsh configuration
β βββ .bashrc # Bash configuration (Ubuntu)
β βββ .profile # Shell profile
β βββ agnoster.zsh-theme # Agnoster theme
βββ git/
β βββ .gitconfig # Git configuration
βββ vim/
β βββ .vimrc # Vim configuration
βββ config/
βββ terminal-colors.md # Terminal color schemes
# Clone repository
git clone https://github.com/antosubash/dotfiles ~/dotfiles
# Install dotfiles (creates symlinks)
cd ~/dotfiles
./install.sh
# Restart your terminal or run:
source ~/.zshrc # or ~/.bashrc on UbuntuChoose your platform:
./scripts/setup-macos.sh./scripts/setup-ubuntu.shWhat gets installed:
- π¦ Package managers (Homebrew / apt / winget + scoop)
- π» Languages (Node.js, Python, Java, Go, Rust, .NET)
- π³ Container tools (Docker, Kubernetes, Helm)
- π§ Productivity tools (tmux, fzf, ripgrep, fd)
- π API tools (HTTPie, jq, yq, curlie)
- π Security tools (GPG, pass, nmap, Wireshark)
- π± Communication apps (Slack, Discord, Zoom)
- πΊοΈ Geospatial tools (GDAL, PROJ, GEOS)
- π€ Nerd Fonts (JetBrainsMono, FiraCode, MesloLGS NF)
- πͺ Windows extras: Windows Terminal w/ Catppuccin Mocha, oh-my-posh, PSReadLine, Alacritty, WSL2 + Ubuntu (optional auto-bootstrap)
# Install Agnoster theme with fonts
./scripts/setup-agnoster.sh
# Set terminal font to "Meslo LG Nerd Font"
# Restart terminal# Configure terminal colors
./scripts/setup-terminal.sh# Install update commands
./scripts/setup-update.sh
# Available commands after installation:
update # Full system update
update-quick # Fast daily update
update-manager # Interactive managerupdate # Full update of all tools
update-quick # Fast daily updates (package managers only)
update-manager # Interactive update interface
update --cleanup # Clean caches and old files
# Aliases
upd # Quick update alias
upf # Full update alias
upc # Cleanup alias# Git
gs, ga, gc, gp, gl # Git status, add, commit, push, log
gd, gco # Git diff, checkout
# Docker
d, dc, dps, di # Docker, docker-compose, ps, images
# Node.js
ns, nr, ni, nb # npm start, run, install, build
# Navigation & Files
ll, la, lt # Enhanced ls commands
mkcd # Make and enter directory
extract # Universal archive extractorbackup <file> # Create timestamped backup
server [port] # Start quick web server
checkport <port> # Check what's using a port
replace <search> <replace> <dir> # Find and replace- Smart Context: Shows user@host only for SSH
- Git Integration: Branch status, dirty/clean indicators
- Development Tools: Node.js, Rust, Go detection
- Cloud Tools: Kubernetes, Docker, AWS profiles
- Execution Time: Command duration tracking
- Status Indicators: Error codes, background jobs
The Agnoster theme uses default Oh My Zsh settings. You can customize it by editing your .zshrc file or creating a custom theme file in ~/.oh-my-zsh/custom/themes/.
Use Nordic color scheme in config/terminal-colors.md for consistency.
# Quick daily update
update-quick
# Check what's outdated
update-manager status# Full system update
update
# Clean up system
update --cleanup# Package managers only
brew update && brew upgrade # macOS
sudo apt update && sudo apt upgrade # Ubuntu
# Language-specific
npm update -g # Node.js
pip3 list --outdated # Python
rustup update # RustThis dotfiles setup works seamlessly on:
- π Homebrew package management
- π₯οΈ Terminal.app and iTerm2 support
- πΌ Cocoa application installation
- π€ Native font management
- π§ APT package management
- π¦ Snap and Flatpak support
- π§ System service management
- π― Desktop environment integration
Automatic Detection:
- OS type (macOS/Linux)
- Shell type (Zsh/Bash)
- Package manager availability
- Installed applications
# Install required fonts
./scripts/setup-agnoster.sh
# Set terminal font to "Meslo LG Nerd Font"# Reinstall update commands
./scripts/setup-update.sh
# Restart terminal or source shell config
source ~/.zshrc# Make scripts executable
chmod +x ~/dotfiles/scripts/*.sh# Reinstall Oh My Zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"update-manager help # Show all update options./scripts/setup-macos.sh --help
./scripts/update-all.sh --helpupdate-manager status # Check all tool versionsAdd to ~/.zshrc.local:
# Your custom aliases
alias myproject="cd ~/projects/myapp"
alias test="./scripts/test.sh"Add to ~/.local/bin/env:
# Custom environment variables
export API_KEY="your-key-here"
export DATABASE_URL="postgresql://..."Create project templates in ~/dotfiles/templates/ for quick scaffolding.
- Fork the repository
- Create feature branch
- Make your changes
- Test on both platforms if possible
- Submit pull request
This repository follows the MIT License - feel free to use and modify for your own needs.
You now have a powerful, cross-platform development setup with:
- β‘ Automated updates
- π¨ Beautiful themes
- π οΈ Rich tooling
- π Cross-platform compatibility
- π¦ Intelligent package management
Happy coding! π