cells/overlays

cells/overlays/default.nix is the bridge between custom package definitions, upstream overlays, and system package sets.

Up: cells

Down: pkgs | root overlays

What it configures

It composes the local package overlay with an upstream Neovim overlay, exports the result as flake.overlays.default, and injects overlays into the base branch.

let
  defaultOverlay = inputs.nixpkgs.lib.composeManyExtensions [
    (import ../../pkgs).overlay
    inputs.neovim-nightly.overlays.default
  ];
in {
  config.flake.overlays.default = defaultOverlay;
}

Why it is in cells

The flake needs to expose overlays for external consumers and also use those overlays internally. A cell can do both: set config.flake.overlays.default and contribute a NixOS module that applies overlays to branch-selected systems.

Base branch injection

config.my.branches.base.nixosModules = [
  {
    nixpkgs.overlays = (import ../../overlays) ++ [
      inputs.self.overlays.default
    ];
  }
];

This makes custom packages available to every system that selects base.