Dotfiles

I like my development environment to feel like mine, whichever machine I'm using. This is how I take it with me.

My terminal and development configuration lives in the dotfiles repository. These commands fetch its installers directly from GitHub. Select and copy the command block for your operating system.

Before you start

Install Git first. Applying a module also requires Python 3.9 or newer: python3 on macOS/Linux, or python on Windows. Python is not required with --no-module. The installer does not install these prerequisites or elevate privileges.

The quick commands execute code from the repository's current main branch. Only run code you trust. To inspect it first, use the download-and-review alternative and run its final line only after reviewing the downloaded file. Download into a directory where it will not overwrite an existing installer file.

macOS and Linux

Download and run

curl -fsSL https://raw.githubusercontent.com/rahul0705/dotfiles/main/install.sh | sh

Download and review first

curl -fsSL https://raw.githubusercontent.com/rahul0705/dotfiles/main/install.sh -o install.sh
less install.sh
sh install.sh

Windows (PowerShell)

Use PowerShell 5.1 or newer. Applying modules that create symbolic links requires Windows Developer Mode or appropriate symlink privileges. Your execution policy still applies; these commands do not bypass it or request elevation. Both run the installer in a child PowerShell process so its exit cannot close your interactive session.

Download and run

powershell.exe -NoProfile -Command "& ([ScriptBlock]::Create((Invoke-RestMethod -Uri 'https://raw.githubusercontent.com/rahul0705/dotfiles/main/install.ps1' -ErrorAction Stop)))"

Download and review first

Invoke-WebRequest -UseBasicParsing -Uri 'https://raw.githubusercontent.com/rahul0705/dotfiles/main/install.ps1' -OutFile install.ps1
Get-Content ./install.ps1
powershell.exe -NoProfile -File ./install.ps1

What gets installed?

A fresh install clones into ~/.dotfiles, initializes the pinned Git submodules recursively, and applies only the etch module by default. It does not apply the full developer profile.

After downloading the installer, use --module NAME to apply a different module, or --no-module to clone and initialize submodules without applying any module. --no-module takes precedence regardless of argument order.

macOS/Linux options

sh install.sh --no-module
DOTFILES_DIR="$HOME/my dotfiles" sh install.sh --module git

Windows options

powershell.exe -NoProfile -File ./install.ps1 --no-module
$env:DOTFILES_DIR = Join-Path $HOME 'my dotfiles'
powershell.exe -NoProfile -File ./install.ps1 --module git

The option examples are alternatives, not a sequence: choose one for a fresh destination. Set DOTFILES_DIR to override the checkout location. The PowerShell environment setting remains in effect for the current session. Open a new terminal after setup to pick up any user PATH changes.

Existing checkouts and recovery

An existing checkout with a matching origin is a strict no-op: the installer does not pull changes, initialize submodules, or apply modules, even if you pass different options. An unrelated occupied path is refused. This bootstrap is not an updater.

A failed installation may leave a partial checkout. Do not rely on rerunning the bootstrap to repair it. For recovery, updates, and applying the full developer profile, follow the dotfiles README.