lib: Deprecate mkDeferredModuleType, mkDeferredModuleOption

Rename to mkPerSystemType and mkPerSystemOption respectively, since
the flake-parts deferredModule implementation has different semantics
than Nixpkgs' types.deferredModuleWith (list merge vs single module).

The old names are kept as deprecated aliases. Add mkLegacyDeferredModuleType
as internal helper preserving the list-merge behavior.
This commit is contained in:
Robert Hensing 2026-01-05 11:20:29 +01:00
parent e8afcc669c
commit 1da4b5a42f

33
lib.nix
View file

@ -70,6 +70,13 @@ let
}; };
}; };
# Internal: preserves legacy list-merge behavior for perSystem type-merging.
mkLegacyDeferredModuleType =
module:
deferredModuleWith {
staticModules = [ module ];
};
errorExample = '' errorExample = ''
For example: For example:
@ -182,18 +189,32 @@ let
}; };
}; };
mkDeferredModuleType = /**
module: Deprecated. Use mkPerSystemType/mkPerSystemOption for `perSystem` type-merging, or
deferredModuleWith { use Nixpkgs `types.deferredModule` directly, noting the lack of list wrapping;
staticModules = [ module ]; see `deferredModuleWith` docs.
}; */
mkPerSystemType = mkDeferredModuleType; mkDeferredModuleType = mkLegacyDeferredModuleType;
/**
Given a module, construct an option type suitable for type-merging into `perSystem`'s type.
*/
mkPerSystemType = mkLegacyDeferredModuleType;
/**
Deprecated. Use mkPerSystemOption for `perSystem` type-merging, or
use `mkOption` and Nixpkgs `types.deferredModule` directly, noting the
lack of list wrapping; see `deferredModuleWith` docs.
*/
mkDeferredModuleOption = mkDeferredModuleOption =
module: module:
mkOption { mkOption {
type = flake-parts-lib.mkPerSystemType module; type = flake-parts-lib.mkPerSystemType module;
}; };
/**
Given a module, construct an option declaration suitable for merging into the core `perSystem` module.
*/
mkPerSystemOption = mkDeferredModuleOption; mkPerSystemOption = mkDeferredModuleOption;
# Polyfill https://github.com/NixOS/nixpkgs/pull/344216 # Polyfill https://github.com/NixOS/nixpkgs/pull/344216