diff options
author | Sophie Tauchert <sophie@999eagle.moe> | 2023-12-06 09:44:17 +0100 |
---|---|---|
committer | Emery Hemingway <ehmry@posteo.net> | 2023-12-10 09:10:02 +0000 |
commit | 3b40e1bd33b442bb705f88a2bada2f6ace51e607 (patch) | |
tree | 844e393fa95a7f5a09c299e9c9b7ce4d932504c7 /pkgs/development/compilers/nim/build-nim-package.nix | |
parent | db3bd72ed27a5b2b96c3e6cca463117d27bb052b (diff) | |
download | nixlib-3b40e1bd33b442bb705f88a2bada2f6ace51e607.tar nixlib-3b40e1bd33b442bb705f88a2bada2f6ace51e607.tar.gz nixlib-3b40e1bd33b442bb705f88a2bada2f6ace51e607.tar.bz2 nixlib-3b40e1bd33b442bb705f88a2bada2f6ace51e607.tar.lz nixlib-3b40e1bd33b442bb705f88a2bada2f6ace51e607.tar.xz nixlib-3b40e1bd33b442bb705f88a2bada2f6ace51e607.tar.zst nixlib-3b40e1bd33b442bb705f88a2bada2f6ace51e607.zip |
buildNimPackage: allow overriding nim package args
Without this, it's impossible to override the lockFile as the default overrideAttrs is applied after the composition in buildNimPackage has read the lock file and generated the nim flags from it.
Diffstat (limited to 'pkgs/development/compilers/nim/build-nim-package.nix')
-rw-r--r-- | pkgs/development/compilers/nim/build-nim-package.nix | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/pkgs/development/compilers/nim/build-nim-package.nix b/pkgs/development/compilers/nim/build-nim-package.nix index 5085edf90a76..a22fb45b507b 100644 --- a/pkgs/development/compilers/nim/build-nim-package.nix +++ b/pkgs/development/compilers/nim/build-nim-package.nix @@ -7,6 +7,7 @@ , nim_builder , defaultNimVersion ? 2 , nimOverrides +, buildNimPackage }: let @@ -90,6 +91,7 @@ let , nativeBuildInputs ? [ ] , nimFlags ? [ ] , requiredNimVersion ? defaultNimVersion + , passthru ? { } , ... }: (if requiredNimVersion == 1 then { @@ -102,6 +104,25 @@ let throw "requiredNimVersion ${toString requiredNimVersion} is not valid") // { nimFlags = lockFileNimFlags ++ nimFlags; + passthru = passthru // { + # allow overriding the result of buildNimPackageArgs before this composition is applied + # this allows overriding the lockFile for packages built using buildNimPackage + # this is adapted from mkDerivationExtensible in stdenv.mkDerivation + overrideNimAttrs = f0: + let + f = self: super: + let x = f0 super; + in + if builtins.isFunction x + then f0 self super + else x; + in + buildNimPackage + (self: + let super = (asFunc ((asFunc buildNimPackageArgs) self)) baseAttrs; + in + super // (if builtins.isFunction f0 || f0?__functor then f self super else f0)); + }; }; attrs = postLock // finalOverride postLock; |