π― A template repository for bootstrapping a modern, reproducible Mac development environment with 120+ tools using Nix-Darwin.
If you find bleuprint helpful, please consider starring it! Your stars help others discover this template and motivate continued development.
- π One-command setup - Bootstrap a new Mac in ~15 minutes
- π Security-first design - Safe for public repos, manual configuration required
- π¦ 120+ modern CLI tools - Including Rust-based replacements for traditional Unix tools
- π Fully reproducible - Same command = same environment, every time
- β‘ Instant rollbacks - Break something? Roll back in seconds
- ποΈ Highly configurable - Modular design makes customization easy
- π‘οΈ Security-first - Git hooks prevent sensitive data leaks, Touch ID sudo, encryption tools
# One-liner: Download and run with sensible defaults
curl -fsSL https://bleulabs.github.io/bleuprint/install.sh | bashWhat this does:
- β Downloads the latest bleuprint template
- β Installs Nix (if not present)
- β Sets up all 120+ tools with sensible defaults
- β Configures modern shell aliases
- β No manual configuration required!
β οΈ Note: Uses sensible defaults (Developer,dev@example.local, hostname:macbook). For production use with your personal details, follow the template setup below.
- Click "Use this template" button above
- Clone your new repository
- Follow the Setup Guide
# After creating from template, clone your new repository
git clone https://github.com/yourusername/your-dotfiles.git
cd your-dotfiles
# π REQUIRED: Update configuration (for security)
# Option A: Environment file (recommended - keeps sensitive data out of repo)
cp .env.example .env           # Copy template
nano .env                      # Edit with your details
./scripts/load-env-config.sh   # Apply configuration
# Option B: Manual configuration
# nano modules/home/default.nix  # Set Git name/email
# nano flake.nix                 # Set hostname/username
# Optional: Interactive configuration wizard
./scripts/auto-configure.sh
# Bootstrap your Mac
./scripts/bootstrap-mac.sh
# Verify installation
./scripts/smoke-test.sh
β οΈ Security Notice: This template requires manual configuration of personal details. It will NOT automatically write sensitive information like emails or SSH keys to avoid security risks in public repositories.
.
βββ flake.nix                    # Main configuration entry point
βββ scripts/                     # Setup and utility scripts
β   βββ bootstrap-mac.sh         # One-click setup script
β   βββ smoke-test.sh            # Verify installation
β   βββ auto-configure.sh        # Interactive configuration wizard
β   βββ load-env-config.sh       # Environment-based configuration
βββ docs/                        # Documentation files
β   βββ SETUP.md                 # Detailed setup guide
β   βββ CONFIG_OPTIONS.md        # All configuration options
β   βββ CLI_CHEATSHEET.md        # Quick reference for tools
βββ assets/                      # Images and media files
β   βββ image.png                # Bleuprint logo
βββ modules/
    βββ system/
    β   βββ core.nix            # Languages, build tools, system settings
    β   βββ cli-utils.nix       # 100+ CLI productivity tools
    β   βββ ml-stack.nix        # Optional ML/data science tools
    βββ homebrew/
    β   βββ apps.nix            # GUI apps and Mac-specific tools
    βββ home/
        βββ default.nix         # User configuration (shell, git, etc.)
        βββ aliases.nix         # Configurable modern tool aliases
- Languages: Go 1.24, Rust (via rustup), Python 3.13, Node.js 22 LTS
- Build Tools: CMake, Make, Just, Ninja
- Environment: direnv, nix-direnv
- System Settings: Touch ID sudo, fast key repeat, Nix hardening (fsync)
- Modern Replacements: eza/lsd(ls),bat(cat),fd(find),ripgrep(grep),erd(tree)
- Productivity: fzf/sk,zoxide,tldr,atuin/mcfly,starship
- Development: gh,lazygit/gitui,delta,httpie/xh/curlie,jq/yq
- System Monitoring: btop/bottom,duf,dust,procs,bandwhich
- Text Processing: sd,gron,choose,grex,hexyl
- Security: age,sops,gpg,yubikey-manager
- Containers: act,podman,dive
- Performance: hyperfine,flamegraph,perf
- Additional: helix,zellij,broot,silicon,mdbook
- Essentials: Raycast, VS Code, OrbStack, Kitty
- Productivity: Obsidian, Slack, Notion
- Dev Tools: GitHub Desktop, Insomnia, TablePlus
- Utilities: Stats, Rectangle, iTerm2, WezTerm
- Security: 1Password, 1Password CLI
- Deep Learning: PyTorch, TensorFlow (with Metal support)
- Data Science: scikit-learn, pandas, numpy, matplotlib
- Notebooks: Jupyter, IPython
- Big Data: Apache Spark, DuckDB, Polars
- Visualization: Plotly
- Shell: Zsh with syntax highlighting, autosuggestions
- Git: Delta diffs, useful aliases, better defaults
- Tmux: Vi mode, better keybindings, mouse support
- SSH: Connection multiplexing for speed
# Apply changes after editing
darwin-rebuild switch --flake ".#testhost"
# Rollback to previous generation
darwin-rebuild rollback
# Update all packages
nix flake update
darwin-rebuild switch --flake ".#testhost"
# Search for packages
nix search nixpkgs <package-name>
# Clean old generations
nix-collect-garbage -dTo replace traditional commands with modern alternatives, edit modules/home/default.nix:
# Change from:
programs.modernTools.enable = false;
# To:
programs.modernTools.enable = true;This will set up aliases like:
- lsβ- eza --icons
- catβ- bat
- grepβ- rg
- findβ- fd
- topβ- btop
- dfβ- duf
- duβ- dust
- And more...
Edit modules/system/cli-utils.nix:
environment.systemPackages = with pkgs; [
  # ... existing packages ...
  your-new-tool  # https://link-to-docs.com
];Edit modules/homebrew/apps.nix:
casks = [
  # ... existing casks ...
  "your-app-name"
];Edit modules/home/default.nix:
shellAliases = {
  # ... existing aliases ...
  myalias = "my-command";
};Edit flake.nix to add the ML module:
modules = [
  ./modules/system/core.nix
  ./modules/system/cli-utils.nix
  ./modules/system/ml-stack.nix  # Add this line
  ./modules/homebrew/apps.nix
  # ...
];- π Official Documentation
- Configuration Options - All available settings
- CLI Cheatsheet - Quick command reference
- Setup Guide - Detailed installation instructions
- Nix-Darwin Documentation
- Home Manager Options
- Nix Package Search
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
This template is available under the MIT License - see LICENSE for details.
- Nix-Darwin for the excellent macOS Nix integration
- Home Manager for user environment management
- The Nix community for amazing packages and support
- Use tldr <command>for quick command examples
- z <partial-path>to jump to directories (via zoxide)
- Ctrl+Rfor fuzzy history search (via fzf)
- lazygitfor visual Git operations
- btopfor beautiful system monitoring
- Run ./test-modern-tools.shto see your current configuration
  Made with β€οΈ for the Mac development community
  β Star this repo β’
  π Report an issue β’
  π¬ Discussions
