diff --git a/src/nix-dotnet.nix b/src/nix-dotnet.nix index 2622ef3..563a698 100644 --- a/src/nix-dotnet.nix +++ b/src/nix-dotnet.nix @@ -17,10 +17,15 @@ defaultInstallScriptSha256 = "0hp4gjss641gabh24wf1xsxp9y1vb48fna5vc9ag24rp614nhahh"; dotnetLibraryPath = pkgs.lib.makeLibraryPath [pkgs.stdenv.cc.cc pkgs.zlib pkgs.icu pkgs.openssl]; + buildDotnetModulePassthru = finalSdk: { + packages = [finalSdk]; + icu = pkgs.icu; + }; + finalizeRawSdk = rawSdk: if pkgs.stdenv.isLinux - then - pkgs.stdenv.mkDerivation { + then let + finalSdk = pkgs.stdenv.mkDerivation { pname = rawSdk.pname; inherit (rawSdk) version; @@ -80,9 +85,11 @@ runHook postInstall ''; - passthru = rawSdk.passthru // {inherit rawSdk;}; + passthru = rawSdk.passthru // {inherit rawSdk;} // buildDotnetModulePassthru finalSdk; meta = rawSdk.meta; - } + }; + in + finalSdk else rawSdk; mkDotnetSdk = { @@ -251,10 +258,12 @@ dontFixup = true; - passthru = { - inherit sdkVersion workloads; - additionalSdkVersions = validatedAdditionalSdkVersions; - }; + passthru = + { + inherit sdkVersion workloads; + additionalSdkVersions = validatedAdditionalSdkVersions; + } + // buildDotnetModulePassthru rawSdk; meta = with pkgs.lib; { description = diff --git a/tests/unit.nix b/tests/unit.nix index 8ff753a..79b89c5 100644 --- a/tests/unit.nix +++ b/tests/unit.nix @@ -353,6 +353,30 @@ in { ]; }; + testMkDotnetBuildDotnetModulePackages = { + expr = let + sdk = mkDotnetFrom validGlobalJson [] validOutputHash; + in + builtins.length sdk.packages == 1 && builtins.elemAt sdk.packages 0 == sdk; + expected = true; + }; + + testMkDotnetBuildDotnetModuleIcu = { + expr = let + sdk = mkDotnetFrom validGlobalJson [] validOutputHash; + in + sdk ? icu && sdk.icu ? outPath; + expected = true; + }; + + testMkDotnetPassthruBuildDotnetModulePackages = { + expr = let + sdk = mkDotnetFrom validGlobalJson [] validOutputHash; + in + builtins.length sdk.passthru.packages == 1 && builtins.elemAt sdk.passthru.packages 0 == sdk; + expected = true; + }; + testMkDotnetRequiresVersionSource = { expr = builtins.tryEval (dotnet.mkDotnet { workloads = [];