personal-
infra

My whole computer in one repo. Linux on dwm, macOS on AeroSpace, one bootstrap.sh that sets up either, and one theme command that recolours every app from a single palette file.

st~

      

Architecture

One parent repo holds the install machinery. Each part of the setup is its own repo, pulled in as a git submodule. To change a part, commit and push inside its submodule first, then record the new version in the parent.

personal-infra repo ↗

The parent repo. It installs everything and holds no app config itself.

  • bootstrap.sh runs the steps for the detected OS
  • packages/ apt.txt, Brewfile, tools.txt, opt.txt
  • builds/ things built from source
  • links.txt config symlinks into $HOME, per OS
  • SOFTWARE.md every installed app
  • docs/ this site

dotfiles/ Dotfiles ↗

App configs, the colour themes and the theme command. The user manual is MANUAL.md.

  • themes
  • alacritty
  • kitty
  • bash
  • doom emacs
  • nvim
  • vscode
  • firefox
  • obsidian
  • zathura
  • lf
  • hledger
  • claude

desktop/ desktop ↗

The window-manager layer, split per OS: linux/ (suckless tools, X11, dunst, cursors) and mac/ (AeroSpace, SketchyBar, a Swift dmenu, swallow).

  • dwm + dmenu + dwmblocks
  • st
  • slock
  • dunst
  • mac: aerospace
  • mac: sketchybar
  • mac: dmenu
  • mac: borders

keymap/ homerow-keymap ↗

One home-row layout on every machine: keyd on Linux, Karabiner rules generated from the same file on macOS.

  • linux/keyd.conf
  • mac/karabiner
  • draw.py

rime/ private

Rime input schemes (小鹤双拼 with 形码 auxiliary codes) for fcitx5 on Linux and Squirrel on macOS.

  • fcitx5
  • Squirrel
  • cn_dicts

syncthing-hub/ syncthing-hub ↗

Syncthing as hub and spoke: an always-on Linux hub holds every folder, and each machine syncs only the folders it needs through it. One TOML file describes the layout; the tool sets every machine up over SSH.

  • syncthing-hubspoke.py
  • config.toml (not in git)
  • hub + client scripts

knowledge-forge/ knowledge-forge ↗

A public Obsidian vault template for a research and startup pipeline.

  • Inbox
  • Projects
  • Sources
  • Experiments
  • Writing
  • Templates

assets assets ↗

Not a submodule: fonts and wallpapers, fetched by bootstrap.sh fonts and by theme on first use.

  • fonts
  • wallpapers

Pages