▗▄▄▄ ▗▄▄▄▄ ▄▄▄▖
▜███▙ ▜███▙ ▟███▛
▜███▙ ▜███▙▟███▛
▜███▙ ▜██████▛
▟█████████████████▙ ▜████▛ ▟▙
▟███████████████████▙ ▜███▙ ▟██▙
▄▄▄▄▖ ▜███▙ ▟███▛
▟███▛ ▜██▛ ▟███▛
▟███▛ ▜▛ ▟███▛
▟███████████▛ ▟██████████▙
▜██████████▛ ▟███████████▛
▟███▛ ▟▙ ▟███▛
▟███▛ ▟██▙ ▟███▛
▟███▛ ▜███▙ ▝▀▀▀▀
▜██▛ ▜███▙ ▜██████████████████▛
▜▛ ▟████▙ ▜████████████████▛
▟██████▙ ▜███▙
▟███▛▜███▙ ▜███▙
▟███▛ ▜███▙ ▜███▙
▝▀▀▀ ▀▀▀▀▘ ▀▀▀▘
This comprises most of my dotfiles, managed (mostly) by nix.
docs/runbooks.md holds the recipes for changing it: adding a package, an
overlay, a host, or a module, and recovering a failed switch.
# The first run needs `nix run`.
nix run nixpkgs#nh -- darwin switch .
nh darwin switch .Use the installed nh for routine switches. Enter nix develop for lint and tests.
To review a build before activation, retain its output:
nh darwin build . --out-link result-system
sudo nix-env -p /nix/var/nix/profiles/system --set "$(realpath result-system)"
sudo ./result-system/sw/bin/darwin-rebuild activateActivation uses the built output. Keep result-system until activation
succeeds, then remove the link when it is no longer needed.
Every host picks one profile in hosts/default.nix. The three are additive, so
a package is listed once at the lowest profile that needs it.
| Profile | For | Holds |
|---|---|---|
minimal |
a box you reach over ssh | a shell, a pager, an editor, git |
dev |
a box you build on | the above plus toolchains and the agent runtime |
workstation |
a box you sit in front of | the above plus the GUI |
bootstrap/bootstrap.sh clones sysinit.nvim
into ~/.local/share/sysinit.nvim and links it to ~/.config/nvim.
Neovim, Git, and a C compiler must already be on PATH. Existing configurations
are preserved; the script stops if another configuration occupies that path.
curl -fsSL https://raw.githubusercontent.com/roshbhatia/sysinit/main/bootstrap/bootstrap.sh | bashIt is re-runnable and honors SYSINIT_REMOTE, SYSINIT_BRANCH, and
SYSINIT_CHECKOUT.
sysinit.nvim and
sysinit.wezterm own their Lua,
Home Manager modules, and behavior tests. This flake selects their versions
and supplies machine settings. Set sysinit.neovim.configPath to a writable
checkout for editor development; its default uses the pinned source.
The WezTerm picker keeps its live session tree. Within the picker, ! lists
Tether hosts, @ lists Seshy sessions, and # lists zoxide directories.
Each provider owns its icon, rows, and open action. Install providers
individually, or use Seshy's and Tether's full Nix packages and -all
Homebrew formulae.
agent-notes owns the notes CLI and Neovim plugin. Its README includes vim.pack, Lazy, and Nixvim installation. Scheduled source updates advance fixed revisions and stable tags, update nested locks, and run checks before proposing changes.
To create a separate repository that consumes this flake for host-specific configurations (i.e., work machine):
nix flake init -t github:roshbhatia/sysinit#discrete