nix-darwin config. shared with natalie
Find a file
chloe caruso 0a5d9bfc17 fix: autofmt doesn't work in deno
tried to reduce but it's not worth it and related issues being open for
years gives me no confidence they will fix this. it also does not work
in bun, but i've opened https://github.com/oven-sh/bun/issues/22018
2025-08-21 00:37:56 -07:00
files/ghostty chore: move autofmt into packages/autofmt 2025-08-19 01:33:36 -07:00
lib feat: "autofmt" code formatter 2025-08-17 20:43:47 -07:00
modules feat: more neovim things 2025-08-19 01:01:36 -07:00
packages/autofmt fix: autofmt doesn't work in deno 2025-08-21 00:37:56 -07:00
users Merge branch 'main' of paperclover.dev:nix/config 2025-08-19 21:36:21 -07:00
.gitignore i am a meower and i forgot what i did 2025-07-05 17:08:16 -07:00
.mailmap chore: rename chloe -> clover, julia -> fish 2025-08-18 00:44:21 -07:00
flake.lock add expo dev deps 2025-08-11 22:29:50 -07:00
flake.nix chore: move autofmt into packages/autofmt 2025-08-19 01:33:36 -07:00
nvim feat: more neovim things 2025-08-19 01:01:36 -07:00
readme.md chore: rename chloe -> clover, julia -> fish 2025-08-18 00:44:21 -07:00
switch fixing things 2025-07-05 20:33:02 -07:00

nix config

this setup allows natalie, clover, and more to share common configuration between their machines, but also share useful modules between each other.

lib/ # reusable functions
modules/ # reusable modules
    +-- home/    # home program configurations
    +-- macos/   # nix-darwin configurations
    +-- neovim/  # nvf configurations
    +-- nixos/   # linux configurations
    +-- shared/  # shared between nixos-rebuild & darwin-rebuild
users/
    +-- clover/
    |   +-- user.nix               # info about her
    |   +-- configuration.nix      # for all hosts (system)
    |   +-- home.nix               # for all hosts (userspace)
    |   +-- vim.nix                # for neovim
    |   +-- sandwich/
    |   |   +-- configuration.nix  # per host
    |   |   +-- home.nix
    |   +-- paperback/
    |       ...
    +-- natalie/
        +-- user.nix               # info about her
        ...

A new machine can be added by adding a new definition in flake.nix. Note that the user and host configuration.nix and home.nix files are

macOS installation instructions

Install Nix using the upstream Nix (Pick "no" then "yes):

curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | \
  sh -s -- install

While this installs, now is a good time to perform manual setup steps:

  • Setup your SSH keys in ~/.ssh
  • Configure the device hostname in System Settings in
    • About -> Name
    • General -> Sharing -> Local Hostname
  • Make sure you're logged into iCloud / Mac App Store
  • xcode-select --install to make sure Git and other utilities are available.
  • Optional: Disable app verification with sudo spctl --master-disable, then, go to System Settings -> Privacy to allow unsigned apps.

Once Nix is installed, open a new shell and clone the repository:

# Clone via HTTPs
git clone https://git.paperclover.net/clo/config.git
# With SSH Authentication
git clone git@git.paperclover.net:clo/config

The location of the cloned repository must match what is in your user.nix file.

Setup nix-darwin using the switch helper:

./switch

Neovim configuration

By default, neovim is configured to all machines in $PATH. Neovim can be run directly via nix run, which skips needing to build the whole system configuration.

nix run .#nvim-natalie  # run by user
./nvim                  # run based on your username