{ self, inputs, ... }: { # Escape hatch for packages that move faster than the stable channel. # # `pkgs.unstable.` 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; }; }; }