!bxVOQwsVoHhZcmNDGw:nixos.org

Nix + dotnet

113 Members
23 Servers

Load older messages


SenderMessageTime
23 Oct 2025
@manuelbaerenz:matrix.orgManuel BärenzThanks, I'll try that!17:48:48
24 Oct 2025
@manuelbaerenz:matrix.orgManuel Bärenz

I can't quite figure out how to pass dependencies properly to the dll. Right now I have this:

...
  nupkg = dotnetCorePackages.fetchNupkg {
    inherit url version pname;
    sha256 = "sha256-Cq2t0TkGtmGpMcFrz9m0FJ14F4knfDoGaUFda9dijik=";
  };
in
stdenvNoCC.mkDerivation {
  inherit version pname;
  nativeBuildInputs = [
    makeWrapper
    # dotnetCorePackages.runtime_8_0
    dotnetCorePackages.sdk_8_0
  ];

  buildInputs = [
    dotnetCorePackages.runtime_8_0
    # dotnetCorePackages.sdk_8_0
  ];
  src = nupkg;

  installPhase = ''
    runHook preInstall

    mkdir -p $out/bin

    makeWrapper ${lib.getExe dotnetCorePackages.runtime_8_0-bin} $out/bin/${pname} \
          --add-flags "exec ${nupkg}/share/nuget/packages/${lib.toLower pname}/${version}/lib/net8.0/${pname}.dll"

    runHook postInstall
  '';

But it says:

A fatal error was encountered. The library 'libhostpolicy.so' required to execute the application was not found in '/nix/store/yjszifiind26c7vpvyg4c3m49lgksv0z-somepkg-1.0.98/share/nuget/packages/somepkg/1.0.98/lib/net8.0/'
09:02:33
@manuelbaerenz:matrix.orgManuel Bärenz

I tried to shuffle sdk and runtime around, sometimes getting this error:

       > Running phase: configureNuget
       > The command could not be loaded, possibly because:
       >   * You intended to execute a .NET application:
       >       The application 'new' does not exist.
       >   * You intended to execute a .NET SDK command:
       >       No .NET SDKs were found.

But I'm assuming that's because nuget is getting confused depending on what's on the path

09:03:38
@manuelbaerenz:matrix.orgManuel Bärenz Maybe I shouldn't use fetchNupkg at all, and just use fetchUrl? 09:04:08
@manuelbaerenz:matrix.orgManuel Bärenz Anyways I would have assumed that libhostpolicy.so is in either the standard runtime or sdk, but I'm not passing dependencies in the right way 09:06:09
@corngood:corngood.comCorngoodAre you able to share the whole thing somewhere?11:58:16
@manuelbaerenz:matrix.orgManuel BärenzUnfortunately not, it's closed source :/ I'll try and work out a completely parametrized thing and share that12:55:08
@corngood:corngood.comCorngood I think the problem is that makeWrapper is moving the dotnet executable? 13:17:10
@corngood:corngood.comCorngoodcan you share the contents of the wrapper script?13:17:41
@manuelbaerenz:matrix.orgManuel BärenzI guess I'm a step further. Instead of trying to package the dlls directly, I'm now trying to package a simple web service for which I have the source code (including .csproj, NuGet.config and .sln) which depends on the dll13:17:43
@manuelbaerenz:matrix.orgManuel Bärenz* I guess I'm a step further. Instead of trying to package the dlls directly, I'm now trying to package a simple web service for which I have the source code (including .csproj, NuGet.config and .sln) which depends on the dlls13:17:46
@manuelbaerenz:matrix.orgManuel Bärenz(I needed to do this anyways at some point, but I thought it was smarter to leave out that part for later. Probably wasn't.)13:18:14
@manuelbaerenz:matrix.orgManuel Bärenz

Either way this is what I have right now:

{
  lib,
  dotnetCorePackages,
  makeWrapper,
  stdenvNoCC,
}:

let
  url = "${customNugetServer}(Id='${pname}',Version='${version}')/Download";
  dlls = dotnetCorePackages.fetchNupkg {
    inherit url version pname;
    sha256 = "sha256-xEPmYA0wkQrDBl82HDa6khIMltNUV5gdzayt6J1Lwpw=";
  };
in

with dotnetCorePackages;

buildDotnetModule {
  inherit pname version;
  src = webapi-src;

  buildInputs = [
    aspnetcore_9_0
    dlls
  ];

  dotnet-sdk = sdk_9_0;
  dotnet-runtime = runtime_9_0;
}

13:19:08
@manuelbaerenz:matrix.orgManuel Bärenz

And it gets me this far:

       > Running phase: configureNuget
       > The template "NuGet Config" was created successfully.
       >
       > Processing post-creation actions...
       >
       >
       > Running phase: updateAutotoolsGnuConfigScriptsPhase
       > Running phase: configurePhase
       > Executing dotnetConfigureHook
       >   Determining projects to restore...
       > /build/myAPI/myApi.csproj : error NU1101: Unable to find package Swashbuckle.AspNetCore. No packages exist with this id in source(s): _nix
13:20:12
@manuelbaerenz:matrix.orgManuel BärenzI would have thought that the package is part of aspnet, but either it isn't or I'm adding dependencies incorrectly13:20:42
@corngood:corngood.comCorngood You probably need to add nuget deps: nugetDeps = ./deps.json, and then run $(nix-build -A [pkg].fetch-deps) 13:23:59
@corngood:corngood.comCorngood Also putting aspnetcore_9_0 in buildInputs is unusual. You might just want to use it for dotnet-runtime. 13:26:10
@manuelbaerenz:matrix.orgManuel BärenzThat seems like some great piece of tooling. Right now it fails because of some proprietary dependency from our partner, but it did download a bunch of packages that seemed sensible13:32:39
@manuelbaerenz:matrix.orgManuel Bärenz

That seems like some great piece of tooling.

Sorry, that sounded sarcastic, I meant it seriously 😅 and thanks for your help so far

13:41:53
@manuelbaerenz:matrix.orgManuel BärenzCan I point the fetch-deps to a custom nuget server for some packages? Or at least pass it a NuGet.config that has the custom server configured?13:46:14
@manuelbaerenz:matrix.orgManuel Bärenz Ohh. I think if I name it properly (nuget.config instead of NuGet.config) it detects it automatically. 13:53:13
@corngood:corngood.comCorngoodDid you get a complete deps.json then?14:09:51
27 Oct 2025
@manuelbaerenz:matrix.orgManuel Bärenz No, the fetcher failed and didn't create a deps.json. I'll try again soon when I get the complete closed source dependencies from our partner 08:32:51
2 Nov 2025
@emma:rory.gayEmma [it/its]question, how do i use the fetchdeps thing with the nix cli?19:31:00
@emma:rory.gayEmma [it/its]

doing a nix build .\#thing.passthru.fetch-deps && ./result fails with this:

/nix/store/q38z0zig1346h47vyianirr25fi9g42m-fetch-deps.sh: line 10: /nix/store/rxf86xrfxhij48hjqgysi8blj2c9hg88-source/ArcaneLibs.Blazor.Components/deps.nix: Read-only file system
19:31:45
@corngood:corngood.comCorngood
In reply to @emma:rory.gay

doing a nix build .\#thing.passthru.fetch-deps && ./result fails with this:

/nix/store/q38z0zig1346h47vyianirr25fi9g42m-fetch-deps.sh: line 10: /nix/store/rxf86xrfxhij48hjqgysi8blj2c9hg88-source/ArcaneLibs.Blazor.Components/deps.nix: Read-only file system
You can't use .# because that'll be a read-only copy. Try -f . instead
19:33:03
@emma:rory.gayEmma [it/its]oh apparently you can just pass a path... lol19:33:05
@emma:rory.gayEmma [it/its]that fails because i dont have a default.nix... lol19:33:38
@corngood:corngood.comCorngoodYou can pass a .nix file path instead of .19:34:14
@emma:rory.gayEmma [it/its]i have a flake.nix19:34:26

Show newer messages


Back to Room ListRoom Version: 9