41 lines
1.4 KiB
Nix
41 lines
1.4 KiB
Nix
{
|
|
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;
|
|
};
|
|
};
|
|
}
|