Skip to content

Latest commit

ย 

History

History
433 lines (349 loc) ยท 17.5 KB

File metadata and controls

433 lines (349 loc) ยท 17.5 KB

Nico's dotfiles

macOS.png

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!

๐Ÿ“‹ Contents

โœจ Features

  • ๐ŸŽจ 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

๐Ÿ“ฆ What's Included

Core Tools

  • ๐Ÿบ 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

Terminal & CLI Tools

  • ๐Ÿ‘ป 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

Development Tools & Languages

  • ๐Ÿ”ง 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

Kubernetes & DevOps Tools

  • โ˜ธ๏ธ 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

Productivity & Apps

  • ๐Ÿ’พ 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

Additional Tools & Utilities

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...

๐Ÿš€ Quick Start

Prerequisites

  • macOS (tested on latest versions)
  • Command Line Tools for Xcode
  • Internet connection

Installation

โš ๏ธ Warning: If you want to give these dotfiles a try, you should first fork this repository, review the code, and remove things you don't want or need. Don't blindly use my settings unless you know what they do. Use at your own risk!

One-Line Install

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 | bash

Manual Install

If you prefer to clone first and review:

git clone https://github.com/snics/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
just all

๐Ÿณ Try it with Docker

Don'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-desktop

All images support linux/amd64 and linux/arm64. See _images/README.md for details.

๐Ÿ“ Project Structure

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)

My Development Folder Structure

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
โ”œโ”€โ”€ _archive/         # Retired projects (kept out of pickers)
โ”œโ”€โ”€ _worktrees/       # Central git worktrees (herdr/sessionizer)
โ”œโ”€โ”€ GitHub/           # GitHub repositories
โ”œโ”€โ”€ Clients/          # Client projects (optional)
โ”œโ”€โ”€ Startups/         # Startup projects, one folder per org (optional)
โ”œโ”€โ”€ Talks/            # Presentations and talk materials (optional)
โ””โ”€โ”€ Workshop/         # Workshop materials and projects (optional)

โš™๏ธ Configuration Details

Neovim Setup

terminal.gif

Neovim should work out of the box once the correct plugins are installed. To install the plugins, open Neovim with:

nvim +PlugInstall

NeoVim.png

Setup ~/.secrets

For sensitive information like API keys and tokens, create a ~/.secrets file. An example template is provided:

cp -f ~/.dotfiles/.secrets.example ~/.secrets

Edit the file and add your secrets:

vim ~/.secrets

The .secrets file is sourced by ZSH and should contain bash-compatible environment variable exports.

Customizing the Setup

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

๐Ÿ”„ Updates & Maintenance

Updating your installed applications and tools is simple! I've created a convenient alias that updates everything at once:

update

This 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.

๐Ÿ“ Planning & Roadmap

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!

What's Next

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.

๐Ÿค Contributing

Suggestions and improvements are welcome!

If you'd like to contribute:

  1. Fork this repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes using emojis (git commit -m 'โœจ Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Commit Conventions

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

Recent Contributions

  • ๐Ÿ“ 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)

๐Ÿ“„ License

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!

๐Ÿ‘ค Author

LinkedIn/NicoSwiatecki
Nico Swiatecki

๐Ÿ™ Acknowledgments

This dotfiles repository was inspired by and borrows ideas from many amazing developers:

Dotfiles Inspiration