Just my personal configuration for different machines!
- Shell 52.6%
- PowerShell 47.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| bearable-windows | ||
| hooks | ||
| workstation | ||
| x270 | ||
| dirs.json | ||
| install.ps1 | ||
| install.sh | ||
| README.md | ||
dotfiles
Machine-specific dot files, published as selectable "dots" — one folder per machine or profile. The installers ask which dots you want, show a dry-run plan, and install only what is missing.
Install
Linux / macOS
curl -fsSL https://dot.rplawski.pl | sh
Windows (PowerShell)
irm https://win.rplawski.pl | iex
Short links: dot.rplawski.pl serves the raw install.sh, win.rplawski.pl
serves the raw install.ps1.
Non-interactive
curl -fsSL https://dot.rplawski.pl | sh -s -- --list
curl -fsSL https://dot.rplawski.pl | sh -s -- --dirs "workstation x270" --dest "$HOME" --yes
$env:DOTFILES_DIRS = 'bearable-windows'
irm https://win.rplawski.pl | iex
From a clone you can pass flags directly:
sh install.sh --list
./install.ps1 -List
| sh | PowerShell | meaning |
|---|---|---|
-l, --list |
-List |
list available dots and exit |
-y, --yes |
-Yes |
skip confirmation prompts |
-d, --dirs "..." |
-Dirs "..." |
pick dots by name or number ("1 3", "x270") |
-D, --dest PATH |
-Dest PATH |
destination directory (default: $HOME) |
-h, --help |
-Help |
show help |
Environment overrides for both installers:
| variable | default | meaning |
|---|---|---|
DOTFILES_BASE_URL |
https://git.rplawski.pl |
Forgejo base URL |
DOTFILES_REPO |
robertplawski/dotfiles |
owner/repo |
DOTFILES_REF |
main |
branch or tag |
DOTFILES_TOKEN |
— | access token, for private repos |
DOTFILES_DEST |
$HOME |
destination directory |
DOTFILES_DIRS |
— | same as --dirs |
DOTFILES_SYSTEM |
auto-detected | override system, e.g. linux/fedora-44 |
NO_COLOR |
— | disable colors |
How it works
- The installer curls
dirs.json, which maps every dot folder to itsmetadata.json. metadata.jsonlists supported systems (linux/fedora-44,microsoft/windows-11, ...). Dots matching your machine are marked[match]and preselected;linux/*style wildcards match any distro.- After you pick, the installer downloads the repo archive and shows a dry-run plan of every file that would be written.
- Files are copied into the destination, merging the dot's tree over it
(e.g.
workstation/.bashrc→~/.bashrc). Existing files are never overwritten — colliding files are skipped and reported. - If a dot ships
install.sh(Linux) orinstall.ps1(Windows), that script is run afterwards from the dot's folder, like a dependency install step. It receivesDOTFILES_DEST,DOTFILES_DIR,DOTFILES_NAME,DOTFILES_SYSTEMandDOTFILES_ASSUME_YESin its environment.
Repo layout
dirs.json generated manifest (folder -> metadata.json), committed
install.sh Linux/macOS installer
install.ps1 Windows installer
hooks/pre-push regenerates and commits dirs.json on every push
<dot>/metadata.json supported systems for that dot
<dot>/install.sh optional Linux install hook for that dot
<dot>/install.ps1 optional Windows install hook for that dot
Adding a dot
-
Create a folder with its files and a
metadata.json:{ "systems": ["linux/fedora-44"] } -
Optionally add
install.sh/install.ps1for setup steps (package installs, registry tweaks, ...). -
Activate the manifest hook once per clone:
git config core.hooksPath hooks -
Push. The hook regenerates
dirs.json, commits it, and aborts the push once so the fresh manifest ships — just rungit pushagain. A second push with nothing changed goes straight through.