Files
nixos/modules/system/core/overlays.nix
T

41 lines
1.4 KiB
Nix
Raw Normal View History

{
self,
inputs,
...
}: {
# Escape hatch for packages that move faster than the stable channel.
#
# `pkgs.unstable.<name>` resolves against nixos-unstable while the rest of the
# system stays on nixos-26.05. Keep the number of consumers small and prefer
# stable unless there is a concrete reason; every unstable package drags a bit
# of the unstable closure (glibc, stdenv) in alongside the stable one.
#
# Bump with `nix flake update nixpkgs-unstable`.
flake.overlays.unstable = _final: prev: {
unstable = import inputs.nixpkgs-unstable {
inherit (prev.stdenv.hostPlatform) system;
# Carries allowUnfree (set in nix-settings.nix) into the unstable set.
inherit (prev) config;
};
};
# This flake has two independent `pkgs` instances, and the overlay has to be
# registered on both or `pkgs.unstable` would exist in some modules only:
#
# 1. the NixOS module system's `pkgs` - plain modules such as
# modules/features/bun, modules/system/core
# 2. flake-parts' perSystem `pkgs` - modules built with `moduleWithSystem`,
# such as modules/attrs/development, which ignore `nixpkgs.overlays`
flake.nixosModules.overlays = {...}: {
nixpkgs.overlays = [self.overlays.unstable];
};
perSystem = {system, ...}: {
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
overlays = [self.overlays.unstable];
config.allowUnfree = true;
};
};
}