This contains each host's individual specialisations as separate
derivations, as well as a modified top-level config containing no
specialisations. Evaluating specialisations as separate derivations
takes significantly less memory (especially since nix-fast-build doesn't
support eval caching) and should stop CI from crashing.
It is good for if I am making a nix update script that needs network
access or some other impurity (although this is probably what
nix-prefetch-git is for but it's good to know how to do it manually,
especially for something like recreating a lockfile)
A compiler is required for the compilation of treesitter grammars. I
should probably figure out how to just add every grammar to Neovim, but
this works with my existing configuration for now. I'm choosing to keep
my config separate because I want to still be able to use it on systems
without Nix.
This allows for setting overlays at the home level while also inheriting
the global nixpkgs configuration. This should theoretically work exactly
like useGlobalPkgs while still allowing for flexibility at the home
level. See nix-community/home-manager#6172
This is enabled in home-manager becuase Git attempts to hardcode the
path when it is done through Git. Enabling Git in home-manager creates a
managed config at $XDG_CONFIG_HOME/git/config, but if ~/.gitconfig
exists, git will use that instead which still allows for mutable config.
The activation script is configured to automatically create ~/.gitconfig
if it doesn't exist, so everything should still work exactly as before.
for some reason, the toplevel derivation is different for some systems,
but nix-diff only shows one file being different, specifically the order
of some config relating to kernel modules. however, the produced system
is functionally identical. i have no idea what could be responsible for
this change.