Automated setup scripts, dotfiles, and Cloudflare Workers for provisioning personal development environments across Windows, WSL/Linux, and macOS.
Warning
Are you installing an LTSC version of Windows? Those are missing the Microsoft Store app, install it along WinGet with this tool.
Important
- You may need to install or update WinGet.
- A regular Windows machine will have it installed, but it might be outdated. Open this link to the Microsoft Store and update it if needed.
- You may also need to execute
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Processif you encounter elevation issues. - All package installations must be explicitly specified - there is no default installation.
irm win.jfa.dev | iex # Display help message with all available profilesAll commands require elevated PowerShell:
# Single profile
irm win.jfa.dev/base | iex
irm win.jfa.dev/dev | iex
# Multiple profiles combined
irm win.jfa.dev/base+dev+gaming | iex
irm win.jfa.dev/dev+gaming+qol | iexAvailable WinGet profiles:
base- Core packages, runtimes, and utilitiesdev- Development tools and environmentsgaming- Gaming platforms and toolswork- Work-related applicationsqol- Quality of life improvementsnetwork- Network tools and utilities
Note
Microsoft Store packages require the /msstore/ prefix in the URL.
Install apps from the Microsoft Store:
# Single profile
irm win.jfa.dev/msstore/msstore-base | iex
# Multiple profiles combined (note the /msstore/ prefix)
irm win.jfa.dev/msstore/msstore-base+msstore-gaming | iex
irm win.jfa.dev/msstore/msstore-base+msstore-gaming+msstore-qol | iexAvailable Microsoft Store profiles:
msstore-base- Core Microsoft Store appsmsstore-dev- Development-related Store appsmsstore-gaming- Gaming-related Store appsmsstore-work- Work-related Store appsmsstore-qol- Quality of life Store apps
Correct format:
irm win.jfa.dev/msstore/<profile>+<profile> | iexInstall Bun global packages (requires Bun to be installed first via dev profile):
irm win.jfa.dev/bun | iexFor Ubuntu-based WSL distributions:
Default mode (personal profile):
curl -L wsl.jfa.dev | bash- Updates Nix channels and packages
- Applies Home Manager configuration (personal profile)
- Skips APT package installation
Full installation:
curl -L wsl.jfa.dev | bash -s -- --full-installOther modes:
curl -L wsl.jfa.dev | bash -s -- --update-only # APT + system packages only
curl -L wsl.jfa.dev | bash -s -- --nix-only # Nix installation onlyChoose between personal or work profiles at installation time:
# Personal profile (default)
curl -L wsl.jfa.dev | bash
# Work profile
curl -L wsl.jfa.dev | bash -s -- --work-profile
# Explicit personal profile selection
curl -L wsl.jfa.dev | bash -s -- --personal-profile
# Combine with installation modes
curl -L wsl.jfa.dev | bash -s -- --full-install --work-profileAfter installation, you can switch profiles using these commands:
# Check current active profile
hm-profile
# Switch to personal profile
hm-personal
# Switch to work profile
hm-work
# Apply configuration changes
hm-sync
# Update packages and apply configuration
hm-updatecurl -L mac.jfa.dev | bashDuring installation, the repository is automatically cloned to ~/.config/outfitting/repo and symlinked to configuration directories:
WSL/Linux:
~/.config/home-manager → ~/.config/outfitting/repo/packages/x64-linuxmacOS:
~/.config/home-manager → ~/.config/outfitting/repo/packages/aarch64-darwin
~/.nixpkgs/darwin-configuration.nix → ~/.config/outfitting/repo/packages/aarch64-darwin/darwin.nixcurl -L wsl.jfa.dev | bashAfter editing files in ~/.config/outfitting/repo:
git pull # Pull latest changes from GitHub
hm-sync # Apply configurationhm-update # Update Nix channels + apply configuration
update-all # Update APT + Nix + Bun packages + cleanupcurl -L wsl.jfa.dev | bash -s -- --update-only # APT packages only
curl -L wsl.jfa.dev | bash -s -- --full-install # Full reinstallAfter editing files in ~/.config/outfitting/repo:
git pull # Pull latest changes from GitHub
hm-sync # Apply configuration via symlinkshm-update # Update Nix channels + apply configuration
update-all # Update Homebrew + Nix + Bun packages + cleanup# Build and apply changes
or switch # Apply current configuration
or build # Test build without applying
or test # Test build and show results
# Update with new packages
or upgrade # Update packages and apply
# Check what would change
or dry # Dry-run to preview changes
# List and rollback generations
drl # List available generations
drr # Rollback to previous generation
# Traditional nix-darwin commands (from repo directory)
darwin-rebuild switch --flake ".#macos" # Apply configuration
darwin-rebuild build --flake ".#macos" # Test build onlyTest packages before adding them to your configuration:
nix-test bat # Test if 'bat' package works
nix-try ripgrep # Search for ripgrep and suggest testingirm win.jfa.dev/config/pwsh-profile | iexirm win.jfa.dev/bun | iexWSL/Linux:
curl -fsSL wsl.jfa.dev/packages/bun | xargs -I {} bun install -g {}macOS:
curl -fsSL mac.jfa.dev/packages/bun | xargs -I {} bun install -g {}