No description
  • Roff 49%
  • Shell 21.5%
  • Ruby 10.3%
  • Python 8.8%
  • Perl 3.3%
  • Other 6.8%
Find a file
2026-06-07 04:43:31 +01:00
.mise/tasks refactor(system): restructure into 3-tier per-machine profiles 2026-06-07 03:52:15 +01:00
home refactor(steam): gem-free launch-options sync with source-only backup 2026-06-07 00:58:34 +01:00
ruby-scripts refactor(steam): gem-free launch-options sync with source-only backup 2026-06-07 00:58:34 +01:00
system fix(system): deploy as root without root-group name 2026-06-07 04:43:31 +01:00
vendor refactor: manage dotfiles with chezmoi 2026-04-05 04:55:07 +01:00
.chezmoiroot refactor: manage dotfiles with chezmoi 2026-04-05 04:55:07 +01:00
.gitignore refactor: manage dotfiles with chezmoi 2026-04-05 04:55:07 +01:00
.gitmodules refactor: manage dotfiles with chezmoi 2026-04-05 04:55:07 +01:00
bootstrap.sh feat(system): add openbsd/public server profile 2026-06-07 04:27:05 +01:00
LICENSE chore: license 2026-04-05 17:07:07 +01:00
mise.toml refactor(steam): gem-free launch-options sync with source-only backup 2026-06-07 00:58:34 +01:00
README.md feat(system): add openbsd/public server profile 2026-06-07 04:27:05 +01:00

dotfiles

Gentoo Linux and macOS configs, managed with chezmoi and mise.

Structure

home/             chezmoi source — deploys to $HOME
system/           3-tier system config (/etc), see below
  hosts/<name>    per-host manifest: os= role=
  lib/deploy.sh   layered deploy/pull/diff core (POSIX sh)
  <os>/           bootstrap.sh, rsync-filter, <role>/etc (tier 2), <host>/etc (tier 3)
.mise/tasks/      task runner scripts
vendor/           git submodules (zgenom, tokyonight.nvim)

The mkaito portage overlay lives in its own repo at ~/dev/portage.

Bootstrap

./bootstrap.sh

Installs mise. macOS homebrew installation is not yet automated — see the TODO in bootstrap.sh.

Dotfiles

mise run install   # first run: init submodules, link chezmoi source, apply
chezmoi apply      # re-apply after changes

System config (3 tiers)

A machine composes from three explicit, separately-installed tiers, resolved from system/hosts/$(hostname) (os=, role=):

  1. bootstrap — bare-metal prep for the OS (system/<os>/bootstrap.sh).
  2. common — OS/role baseline (system/<os>/<role>/etc), e.g. gentoo/desktop.
  3. machine — host-specific deltas (system/<os>/<host>/etc), overlaid on common.

Hosts: aldheim (gentoo/desktop), public (openbsd/server — public.lomdar.com).

mise run system:bootstrap   # tier 1
mise run system:common      # tier 2 -> /etc
mise run system:machine     # tier 3 -> /etc
mise run system:pull        # pull live /etc changes back into the owning tier
mise run system:diff        # diff repo tiers vs live /etc

Where mise is unavailable (e.g. OpenBSD), call the core directly: sh system/lib/deploy.sh {bootstrap|common|machine|pull|diff}.

Deploy is sequential per layer with no --delete: machine overlays common, and file removals are not auto-propagated — system:diff surfaces drift, prune /etc by hand. make.conf is a directory (make.conf/00-base + host make.conf/50-host) so the layers don't clobber each other.

Packages

chezmoi apply installs missing packages via emerge or brew when .chezmoidata/packages.yaml changes.

Platform-specific files

Exclusions are in home/.chezmoiignore. Platform-specific zsh config is in home/dot_config/zsh/conf.d/: linux.zsh, gentoo.zsh, aldheim.zsh, macos.zsh.