summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorash <ash@sorrel.sh>2024-11-11 19:59:34 +0000
committerash <ash@sorrel.sh>2024-12-02 19:09:07 +0000
commitcf9805af62a0b2cd5317b8c1e188e05220af81da (patch)
treed1a986cf96bc65d4ee60038c3ccc23864310d969 /lib
parentvacuum-go: 0.14.1 -> 0.14.3 (#360802) (diff)
downloadnixpkgs-cf9805af62a0b2cd5317b8c1e188e05220af81da.tar.gz
lib.derivations: add warnOnInstantiate
Diffstat (limited to 'lib')
-rw-r--r--lib/default.nix2
-rw-r--r--lib/derivations.nix36
2 files changed, 37 insertions, 1 deletions
diff --git a/lib/default.nix b/lib/default.nix
index 3fda156b75a9..5b742b195d34 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -121,7 +121,7 @@ let
inherit (self.customisation) overrideDerivation makeOverridable
callPackageWith callPackagesWith extendDerivation hydraJob
makeScope makeScopeWithSplicing makeScopeWithSplicing';
- inherit (self.derivations) lazyDerivation optionalDrvAttr;
+ inherit (self.derivations) lazyDerivation optionalDrvAttr warnOnInstantiate;
inherit (self.meta) addMetaAttrs dontDistribute setName updateName
appendToName mapDerivationAttrset setPrio lowPrio lowPrioSet hiPrio
hiPrioSet licensesSpdx getLicenseFromSpdxId getLicenseFromSpdxIdOr
diff --git a/lib/derivations.nix b/lib/derivations.nix
index 9c3c4639a268..450bd1a0042b 100644
--- a/lib/derivations.nix
+++ b/lib/derivations.nix
@@ -4,6 +4,8 @@ let
inherit (lib)
genAttrs
isString
+ mapAttrs
+ removeAttrs
throwIfNot
;
@@ -206,4 +208,38 @@ in
optionalDrvAttr =
cond:
value: if cond then value else null;
+
+ /**
+ Wrap a derivation such that instantiating it produces a warning.
+
+ All attributes apart from `meta`, `name`, and `type` (which are used by
+ `nix search`) will be wrapped in `lib.warn`.
+
+ # Inputs
+
+ `msg`
+ : The warning message to emit (via `lib.warn`).
+
+ `drv`
+ : The derivation to wrap.
+
+ # Examples
+ :::{.example}
+ ## `lib.derivations.warnOnInstantiate` usage example
+
+ ```nix
+ {
+ myPackage = warnOnInstantiate "myPackage has been renamed to my-package" my-package;
+ }
+ ```
+
+ :::
+ */
+ warnOnInstantiate =
+ msg: drv:
+ let
+ drvToWrap = removeAttrs drv [ "meta" "name" "type" ];
+ in
+ drv
+ // mapAttrs (_: lib.warn msg) drvToWrap;
}