Skip to content

jfalava/outfitting

Repository files navigation

Outfitting

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.

How to run the automatic installation scripts

Windows

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 Process if you encounter elevation issues.
  • All package installations must be explicitly specified - there is no default installation.

View Available Packages

irm win.jfa.dev | iex  # Display help message with all available profiles

WinGet Package Installation

All 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 | iex

Available WinGet profiles:

  • base - Core packages, runtimes, and utilities
  • dev - Development tools and environments
  • gaming - Gaming platforms and tools
  • work - Work-related applications
  • qol - Quality of life improvements
  • network - Network tools and utilities

Microsoft Store Package Installation

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

Available Microsoft Store profiles:

  • msstore-base - Core Microsoft Store apps
  • msstore-dev - Development-related Store apps
  • msstore-gaming - Gaming-related Store apps
  • msstore-work - Work-related Store apps
  • msstore-qol - Quality of life Store apps

Correct format:

irm win.jfa.dev/msstore/<profile>+<profile> | iex

Bun Global Packages Installation

Install Bun global packages (requires Bun to be installed first via dev profile):

irm win.jfa.dev/bun | iex

WSL/Linux

For Ubuntu-based WSL distributions:

Installation Modes

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

Other 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 only

Profile Selection

Choose 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-profile

Profile Commands

After 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-update

macOS

curl -L mac.jfa.dev | bash

Repository Configuration

Automatic Setup

During 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-linux

macOS:

~/.config/home-manager → ~/.config/outfitting/repo/packages/aarch64-darwin
~/.nixpkgs/darwin-configuration.nix → ~/.config/outfitting/repo/packages/aarch64-darwin/darwin.nix

Updating After Installation

WSL/Linux

Quick Update

curl -L wsl.jfa.dev | bash

Update Local Configuration

After editing files in ~/.config/outfitting/repo:

git pull                    # Pull latest changes from GitHub
hm-sync                     # Apply configuration

Update Packages

hm-update                   # Update Nix channels + apply configuration
update-all                  # Update APT + Nix + Bun packages + cleanup

Other Update Modes

curl -L wsl.jfa.dev | bash -s -- --update-only   # APT packages only
curl -L wsl.jfa.dev | bash -s -- --full-install  # Full reinstall

macOS

Update Local Configuration

After editing files in ~/.config/outfitting/repo:

git pull                    # Pull latest changes from GitHub
hm-sync                     # Apply configuration via symlinks

Update Packages

hm-update                   # Update Nix channels + apply configuration
update-all                  # Update Homebrew + Nix + Bun packages + cleanup

Nix-darwin profile management

# 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 only

Nix package testing

Test packages before adding them to your configuration:

nix-test bat                # Test if 'bat' package works
nix-try ripgrep             # Search for ripgrep and suggest testing

Windows

Update PowerShell Profile

irm win.jfa.dev/config/pwsh-profile | iex

Install/Update Bun Global Packages

irm win.jfa.dev/bun | iex

Install/Update Bun Global Packages (WSL/macOS)

WSL/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 {}

About

Automatic outfitting for my personal machines

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •