core/pkgs/build-support/dotnet/build-dotnet-global-tool/default.nix

51 lines
1.3 KiB
Nix
Raw Normal View History

2024-05-02 00:46:19 +00:00
{ buildDotnetModule, emptyDirectory, mkNugetDeps, dotnet-sdk }:
2024-05-13 21:24:10 +00:00
{ pname, version
# Name of the nuget package to install, if different from pname
2024-05-02 00:46:19 +00:00
, nugetName ? pname
# Hash of the nuget package to install, will be given on first build
, nugetSha256 ? ""
# Additional nuget deps needed by the tool package
2024-05-13 21:24:10 +00:00
, nugetDeps ? (_: [ ])
# Executables to wrap into `$out/bin`, same as in `buildDotnetModule`, but with
# a default of `pname` instead of null, to avoid auto-wrapping everything
2024-05-02 00:46:19 +00:00
, executables ? pname
# The dotnet runtime to use, dotnet tools need a full SDK to function
2024-05-13 21:24:10 +00:00
, dotnet-runtime ? dotnet-sdk, ... }@args:
2024-05-02 00:46:19 +00:00
buildDotnetModule (args // {
inherit pname version dotnet-runtime executables;
src = emptyDirectory;
nugetDeps = mkNugetDeps {
name = pname;
2024-05-13 21:24:10 +00:00
nugetDeps = { fetchNuGet }:
[
(fetchNuGet {
pname = nugetName;
inherit version;
sha256 = nugetSha256;
})
] ++ (nugetDeps fetchNuGet);
2024-05-02 00:46:19 +00:00
};
projectFile = "";
useDotnetFromEnv = true;
dontBuild = true;
installPhase = ''
runHook preInstall
dotnet tool install --tool-path $out/lib/${pname} ${nugetName}
# remove files that contain nix store paths to temp nuget sources we made
find $out -name 'project.assets.json' -delete
find $out -name '.nupkg.metadata' -delete
runHook postInstall
'';
})