π― 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 | bash
What 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 -d
To 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+R
for fuzzy history search (via fzf)lazygit
for visual Git operationsbtop
for beautiful system monitoring- Run
./test-modern-tools.sh
to see your current configuration
Made with β€οΈ for the Mac development community
β Star this repo β’
π Report an issue β’
π¬ Discussions