Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Overlays

Overlays are Nix functions which accept two arguments, conventionally called final and prev (formerly also self and super), and return a set of packages. … Overlays are similar to other methods for customizing Nixpkgs, in particular the packageOverrides … Indeed, packageOverrides acts as an overlay with only the prev (super) argument. It is therefore appropriate for basic use, but overlays are more powerful and easier to distribute.

— From the Nixpkgs manual

A sort of too long didn’t read is that with overlays you are able to change various parts of packages/modules.

Unstable builds

A practical example would be enabling the ability to remain on the stable channel, but to pull in unstable packages.

In the flake.nix you need to add a new input for the unstable channel.

inputs.nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";

After you can add the following to your configuration file.

{
  nixpkgs.overlays = [
    (final: _prev: {
      unstable = import inputs.nixpkgs-unstable {
        inherit (final) system;
        config.allowUnfree = true;
      };
    })
  ];
}

This will add the ability to pull unstable packages by the following.

{
  home.packages = [
    (pkgs.unstable.vivaldi.override {
      proprietaryCodecs = true;
      inherit vivaldi-ffmpeg-codecs;
    })
  ];
}