Welcome to my world. This is an advanced macOS development setup optimized for modern software development.
This setup works perfectly for developers and software architects who work with macOS. If this particular setup doesn't work for you, please feel free to borrow some ideas from it. Pull requests, comments, requests, and any other contributions are welcome!
- ✨ Features
- 📦 What's Included
- 🚀 Quick Start
- 🐳 Try it with Docker
- 📁 Project Structure
- ⚙️ Configuration Details
- 🔄 Updates & Maintenance
- 📝 Planning & Roadmap
- 🤝 Contributing
- 📄 License
- 👤 Author
- 🙏 Acknowledgments
- 🎨 Beautiful terminal setup with Ghostty and tmux
- 🔧 Comprehensive ZSH configuration with custom themes
- 📦 Automated installation and setup process
- 🎯 Version management with asdf
- 🎨 Catppuccin Mocha theme across all tools
- 📊 Advanced system monitoring with btop and k9s
- 🚀 Git workflow optimization with lazygit
- 🔐 Secure secrets management
- 🐳 Docker images for instant access (terminal, browser, full desktop)
- 📁 Organized project folder structure
- 🍺 Homebrew - Package manager for macOS with comprehensive Brewfile
- 270+ packages, casks, and Mac App Store apps
- Organized with taps for specialized tools
- Automated installation and updates
- 🐚 ZSH - Advanced shell configuration
- Custom aliases and functions
- Catppuccin Mocha syntax highlighting
- Integration with bat, eza, and fzf
- Optimized completion system
- 📝 Neovim - Modern text editor configuration
- Extensible plugin setup
- Custom keybindings and workflows
- Integrated with terminal tools
- 🔀 Git - Version control with custom configurations
- Catppuccin theme integration
- Git Delta for beautiful diffs
- Git LFS support
- GitHub CLI (gh) and GitLab CLI (glab)
- 🔧 asdf - Universal version manager
- Node.js, Deno, Python, Rust
- Kubernetes tools (kubectl, helm)
- Unified version management
- 🐳 Docker - Container management
- Docker Compose integration
- Lazydocker for easy management
- Container security tools (Trivy, Dockle)
- 🦭 Podman - Daemonless container engine
- Drop-in replacement for Docker
- Rootless containers
- Podman Compose for Docker Compose compatibility
- Podman Desktop for GUI management
- 👻 Ghostty - Modern, fast terminal emulator
- GPU-accelerated rendering
- Catppuccin Mocha theme support
- 🖥️ tmux - Terminal multiplexer
- Custom keybindings and workflows
- Plugin manager integration
- Catppuccin theme configuration
- Session management with sesh
- 🦇 bat - Enhanced cat with syntax highlighting
- Git integration
- Custom themes
- 🌳 eza - Modern, colorful ls replacement
- File type icons
- Git status integration
- 🔍 fzf - Fuzzy finder for command-line
- ZSH integration
- File and history search
- 📊 btop - Beautiful resource monitor
- CPU, memory, disk, network stats
- Process management
- Catppuccin Mocha theme
- 🎮 k9s - Kubernetes CLI manager
- Real-time cluster monitoring
- Pod and container management
- Log viewing and resource editing
- 🦎 lazygit - Simple terminal UI for git
- Visual git workflow
- 14 Catppuccin color variants included
- Interactive staging and commits
- 🐳 lazydocker - Simple Docker/container TUI
- Container and image management
- Real-time stats and logs
- 🚀 starship - Minimal, fast, customizable shell prompt
- Cross-shell compatibility
- Rich status information
- 🔎 ripgrep - Ultra-fast recursive search tool
- 🔍 fd - Fast, user-friendly alternative to find
- 🌐 glow - Render markdown in the terminal
- 📚 tldr - Simplified, practical man pages
- 🗑️ trash - Move files to macOS Trash from CLI
- 🔄 zoxide - Smarter cd command
- 🎯 direnv - Environment switcher for the shell
- 🔧 asdf - Universal version manager (see Core Tools)
- Manages multiple language runtimes
- Plugin-based architecture
- Configured plugins: Node.js, Deno, Python, Rust, kubectl, helm
- 📦 Node.js - JavaScript runtime
- Managed via asdf
- npm, yarn, and pnpm support
- 🦕 Deno - Secure JavaScript/TypeScript runtime
- 🦀 Rust - Systems programming language
- Rustup toolchain manager
- Cargo package manager
- 🐹 Go - Go programming language
- gopls language server
- delve debugger
- Built-in cross-compilation via
GOOS/GOARCH
- 🐍 Python - Python 3.13+
- Managed via asdf and Homebrew
- ⚡ Swift - Apple's programming language
- ☸️ kubectl - Kubernetes command-line tool
- Cluster management and deployment
- 📦 Helm - Kubernetes package manager
- 🔍 k9s - Kubernetes CLI manager (see Terminal Tools)
- 🚢 kind - Kubernetes in Docker
- 🎯 minikube - Local Kubernetes
- 🧊 kubectx - Fast context/namespace switching
- 🔒 kubeseal - Sealed Secrets
- 🔎 kubescape - Security posture management
- 🕵️ kubeshark - API traffic viewer
- 🐋 Docker - Container platform
- 🦭 Podman - Daemonless container engine
- 🌌 OrbStack - Fast, lightweight containers & VMs for macOS
- 🔧 Terraform - Infrastructure as Code
- 🏗️ OpenTofu - Open-source Terraform alternative
- Drop-in replacement for Terraform
- Community-driven infrastructure as code
- 📜 Ansible - Automation and configuration management
- 🔒 Trivy - Container security scanner
- 🐶 Dockle - Container image linter
- 🔍 Dive - Docker image exploration tool
- Layer content analysis
- Image size optimization
- 📋 Hadolint - Dockerfile linter
- Best practice validation
- Inline bash checking
- 📦 Skopeo - Container image operations tool
- Image copying and inspection
- Registry management
- 💾 Mackup - Application settings backup and sync
- 📓 Obsidian - Powerful knowledge base
- Markdown-based note-taking
- Second Brain / PARA methodology
- iCloud sync for macOS and iOS
- Full configuration automation (in progress)
- 🔐 1Password - Password manager
- CLI integration included
- 🎨 Cursor - AI-powered code editor
- 🌐 Arc Browser - Modern, feature-rich browser
- 💬 Raycast - Extendable launcher and productivity tool
- 📊 Linear - Project management for software teams
- 💼 Notion - All-in-one workspace
- 📅 Notion Calendar - Calendar integration
- 🎬 CleanShot - Advanced screenshot and recording tool
The brew/Brewfile contains 270+ additional packages including:
- 🔒 Security tools (nmap, hydra, wireshark, gpg)
- 🎥 Media tools (ffmpeg, imagemagick, obs)
- 🗂️ File utilities (p7zip, unarchiver, tree)
- 🌐 Network tools (wget, curl, ssh)
- 📝 Documentation tools (pandoc, texlive)
- ⌨️ Custom keyboard firmware (QMK, Vial)
- And many more specialized tools...
- macOS (tested on latest versions)
- Command Line Tools for Xcode
- Internet connection
Run this command in your terminal to bootstrap everything (Xcode CLT, Homebrew, dotfiles, all packages):
curl -fsSL https://raw.githubusercontent.com/snics/dotfiles/master/bootstrap.sh | bashIf you prefer to clone first and review:
git clone https://github.com/snics/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
just allDon't want to install anything on your machine? The entire development environment is available as layered Docker images. Try NeoVim, the full CLI toolchain, or even a complete Linux desktop — right from your terminal or browser.
debian:bookworm-slim
└── snic/nvim NeoVim + 77 plugins + LSPs
└── snic/devenv + zsh, tmux, starship, lazygit, 330+ tools
├── snic/devenv-web-terminal + browser terminal (ttyd)
└── snic/devenv-web-desktop + full XFCE4 desktop in the browser
# NeoVim with all plugins and LSPs — open any project
docker run -it --rm -v "$(pwd):/home/developer" snic/nvim
# Full dev environment — zsh + tmux + starship + lazygit + all CLI tools
docker run -it --rm -v "$(pwd):/home/developer/workspace" snic/devenv
# Terminal in the browser (http://localhost:7681)
docker run --rm -p 7681:7681 snic/devenv-web-terminal
# tmux in the browser
docker run --rm -p 7681:7681 -e TTYD_MODE=tmux snic/devenv-web-terminal
# NeoVim in the browser
docker run --rm -p 7681:7681 -e TTYD_MODE=nvim snic/devenv-web-terminal
# Full Linux desktop in the browser (http://localhost:3000)
docker run --rm -p 3000:3000 --shm-size=256m snic/devenv-web-desktopAll images support linux/amd64 and linux/arm64. See _images/README.md for details.
This dotfiles repository uses the following structure:
~/.dotfiles/
├── _docs/ # Documentation and screenshots
├── _images/ # Docker build files (nvim, devenv, web-terminal, web-desktop)
├── _install/ # Setup scripts for optional tools (golang, rust, claude, obsidian)
├── _lib/ # Shared shell libraries (platform detection)
├── _macOS/ # macOS system settings and dock scripts
├── _planning/ # Project planning and roadmap
├── _test/ # Validation and VM test scripts
├── asdf/ # asdf version manager configuration
├── brew/ # Split Brewfiles (13 categories, concatenated at shell startup)
├── claude/ # Claude Code config and MCP servers
├── cursor/ # Cursor editor config
├── ghostty/ # Ghostty terminal configuration
├── git/ # Git configuration and themes
├── k9s/ # Kubernetes CLI configuration
├── lazygit/ # Lazygit themes and settings
├── nvim/ # Neovim configuration
├── obsidian/ # Obsidian vault structure and settings
├── opencode/ # OpenCode AI agent config
├── tmux/ # tmux configuration and plugins
├── zed/ # Zed editor config
├── zsh/ # ZSH configuration, themes, and functions
├── bootstrap.sh # Curl-pipeable first-run installer
└── install.sh # Cross-platform installer (macOS, Linux, containers)
I use a well-organized folder structure for all development work. The installation wizard can optionally create this structure for you:
~/Projects/ # Root folder for all development
├── GitHub/ # GitHub repositories
├── GitLab/ # GitLab repositories
├── Scripts/ # Automation scripts and utilities
├── Tools/ # Tools and utilities in development
├── Learning/ # Learning projects and experiments
├── Clients/ # Client projects (optional)
├── Startups/ # Startup projects (optional)
├── Non-Profit/ # Non-profit organization projects (optional)
├── Talks/ # Presentations and talk materials (optional)
├── Workshop/ # Workshop materials and projects (optional)
└── Throwaway/ # Temporary projects and experimentsNeovim should work out of the box once the correct plugins are installed. To install the plugins, open Neovim with:
nvim +PlugInstallFor sensitive information like API keys and tokens, create a ~/.secrets file. An example template is provided:
cp -f ~/.dotfiles/.secrets.example ~/.secretsEdit the file and add your secrets:
vim ~/.secretsThe .secrets file is sourced by ZSH and should contain bash-compatible environment variable exports.
Each configuration directory contains settings for its respective tool. Feel free to customize:
- ZSH: Edit files in
zsh/settings/ - Git: Modify
git/catppuccin.gitconfig - tmux: Adjust
tmux/.config/tmux/tmux.conf - Ghostty: Configure
ghostty/settings
Updating your installed applications and tools is simple! I've created a convenient alias that updates everything at once:
updateThis command will:
- Update Homebrew and all installed packages
- Update ZSH plugins
- Update asdf plugins and tool versions
- Perform system maintenance tasks
You can find the implementation in zsh/functions/update.zsh.
I maintain a structured planning system for future improvements and features. Check out the _planning/ directory for:
- Roadmap: High-level plans and timeline
- Backlog: Ideas and future enhancements
- In Progress: Currently working on features
Feel free to suggest new features or improvements by opening an issue!
Some planned improvements include:
- Obsidian Second Brain Setup - Complete automation with templates, plugins, and PARA methodology
- Further automation of the installation process
- Additional tool integrations
- Enhanced documentation
- More themes and customization options
See the full roadmap in _planning/backlog.md for details.
Suggestions and improvements are welcome!
If you'd like to contribute:
- Fork this repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes using emojis (
git commit -m '✨ Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project uses emojis in commit messages for better readability:
- ✨ New feature or major addition
- 📝 Documentation updates
- 🔧 Configuration changes
- ♻️ Refactoring or code cleanup
- 🐛 Bug fixes
- 🔥 Removing code or files
- 🎨 Styling or UI improvements
- ⚡ Performance improvements
- 🚀 Deployment or release changes
- 📝 Update license to MIT (Nov 2024)
- ♻️ Remove PHP and Kotlin from setup (Nov 2024)
- ✨ Add Non-Profit and Workshop folders to project structure (Nov 2024)
- 📝 Restructure README with improved organization (Nov 2024)
- ✨ Create planning system with backlog and roadmap (Nov 2024)
This project is licensed under the MIT License - see the LICENSE file for details.
Feel free to use, modify, and share these dotfiles as you wish!
| Nico Swiatecki |
This dotfiles repository was inspired by and borrows ideas from many amazing developers:
- Mathias Bynens' dotfiles - Excellent macOS settings
- Nick Nisi's dotfiles - Great Neovim configuration


