Nix Chad

An opinionated macOS setup focused on software development.
Features
Firefox
discoverable key mappings
After pressing ? key a window enumerating all contextual key mappings
appears.
Neovim
programming/configuration languages support

| language | actions | completion | diagnostics | formatting | highlighting |
|---|---|---|---|---|---|
| bash | ☒ | ☑ | ☑ | ☑ | ☑ |
| dhall | ☒ | ☑ | ☑ | ☑ | ☑ |
| docker | ☒ | ☒ | ☑ | ☒ | ☑ |
| GitHub Actions workflow | ☑ | ☑ | ☑ | ☑ | ☑ |
| html | ☒ | ☑ | ☑ | ☑ | ☑ |
| java | ☒ | ☑ | ☑ | ☑ | ☑ |
| json | ☒ | ☑ | ☑ | ☑ | ☑ |
| javascript | ☑ | ☑ | ☑ | ☑ | ☑ |
| lua | ☑ | ☑ | ☑ | ☑ | ☑ |
| markdown | ☑ | ☑ | ☑ | ☑ | ☑ |
| nix | ☒ | ☑ | ☑ | ☑ | ☑ |
| purescript | ☑ | ☑ | ☑ | ☑ | ☑ |
| python | ☑ | ☑ | ☑ | ☑ | ☑ |
| typescript | ☑ | ☑ | ☑ | ☑ | ☑ |
| yaml | ☑ | ☒ | ☑ | ☑ | ☑ |
discoverable key mappings
After pressing \ key a window enumerating all key mappings appears.
The same window shows when user starts but does not finish a key
sequence which has some action assigned to it.
Prerequisites
Configuration
Initializing from a template
Run from a directory of your choice:
nix flake init --template github:mstream/nix-chad/main#default
Tweaking
Update any config entries to your liking, like in this example.
Applying
After any change to configuration, run from the directory where
flake.nix file resides:
nix run .#switch
Warning
While it is easy to roll back unwanted/broken configuration by either
reverting your configuration changes or using a different nix-chad
flake revision, there are some classes of misconfigurations that are
more difficult to undo.
One of them is one that results in an error during ZSH shell
initialization. If that results in, e.g. PATH environmental variable
not being properly set, you may lose easy access to your binaries.
In this situation, to recover back to working state, you may need to:
- switch to Bash using an absolute binary path
- use GUI tools (maybe enough to edit but not enough to rebuild Nix configuration)
- set
PATHenvironmental variable manually (requires knowledge about Nix) - install needed binaries without nix (an overkill just for recovery)
- using absolute
nix storepaths (very fiddly)
None of these options are convenient and most of them require relatively broad administrative knowledge. Thus, after every switch, it is highly recommended to:
- leave current shell session open
- create a new one,
- observe if initialization scripts do not produce any errors,
- and if so, use the previous session to fix the issues
Updating
To stay up-to-date witch changes to Nix Chad, run periodically:
nix flake update