Skip to content

Latest commit

 

History

10,852 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sysinit

          ▗▄▄▄       ▗▄▄▄▄    ▄▄▄▖
          ▜███▙       ▜███▙  ▟███▛
           ▜███▙       ▜███▙▟███▛
            ▜███▙       ▜██████▛
     ▟█████████████████▙ ▜████▛     ▟▙
    ▟███████████████████▙ ▜███▙    ▟██▙
           ▄▄▄▄▖           ▜███▙  ▟███▛
          ▟███▛             ▜██▛ ▟███▛
         ▟███▛               ▜▛ ▟███▛
▟███████████▛                  ▟██████████▙
▜██████████▛                  ▟███████████▛
      ▟███▛ ▟▙               ▟███▛
     ▟███▛ ▟██▙             ▟███▛
    ▟███▛  ▜███▙           ▝▀▀▀▀
    ▜██▛    ▜███▙ ▜██████████████████▛
     ▜▛     ▟████▙ ▜████████████████▛
           ▟██████▙       ▜███▙
          ▟███▛▜███▙       ▜███▙
         ▟███▛  ▜███▙       ▜███▙
         ▝▀▀▀    ▀▀▀▀▘       ▀▀▀▘

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.

Quick Start

Build and Apply Configuration

# 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 activate

Activation uses the built output. Keep result-system until activation succeeds, then remove the link when it is no longer needed.

Profiles

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

Installing the Editor on a Box With No Nix

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 | bash

It is re-runnable and honors SYSINIT_REMOTE, SYSINIT_BRANCH, and SYSINIT_CHECKOUT.

Editor and terminal configuration

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.

Creating a Discrete Host Repository

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

About

Nix flake for macOS, NixOS, and standalone home configurations

Topics

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages