nuget-to-nix: init
Adapted from `pkgs/games/osu-lazer/update.sh`. Restore the packages to a directory with `--packages`, then run `./nuget-to-nix.sh [path to packages] > deps.nix`.
This commit is contained in:
parent
1f29c36fe8
commit
1ad800d919
5
pkgs/build-support/nuget-to-nix/default.nix
Normal file
5
pkgs/build-support/nuget-to-nix/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
{ runCommandNoCC }:
|
||||
|
||||
runCommandNoCC "nuget-to-nix" { preferLocalBuild = true; } ''
|
||||
install -D -m755 ${./nuget-to-nix.sh} $out/bin/nuget-to-nix
|
||||
''
|
23
pkgs/build-support/nuget-to-nix/nuget-to-nix.sh
Executable file
23
pkgs/build-support/nuget-to-nix/nuget-to-nix.sh
Executable file
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
>&2 echo "Usage: $0 [packages directory] > deps.nix"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
pkgs=$1
|
||||
|
||||
echo "{ fetchNuGet }: ["
|
||||
|
||||
while read pkg_spec; do
|
||||
{ read pkg_name; read pkg_version; } < <(
|
||||
# Build version part should be ignored: `3.0.0-beta2.20059.3+77df2220` -> `3.0.0-beta2.20059.3`
|
||||
sed -nE 's/.*<id>([^<]*).*/\1/p; s/.*<version>([^<+]*).*/\1/p' "$pkg_spec")
|
||||
pkg_sha256="$(nix-hash --type sha256 --flat --base32 "$(dirname "$pkg_spec")"/*.nupkg)"
|
||||
|
||||
echo " (fetchNuGet { name = \"$pkg_name\"; version = \"$pkg_version\"; sha256 = \"$pkg_sha256\"; })"
|
||||
done < <(find $1 -name '*.nuspec' | sort)
|
||||
|
||||
echo "]"
|
|
@ -581,6 +581,7 @@ with pkgs;
|
|||
|
||||
fetchNuGet = callPackage ../build-support/fetchnuget { };
|
||||
buildDotnetPackage = callPackage ../build-support/build-dotnet-package { };
|
||||
nuget-to-nix = callPackage ../build-support/nuget-to-nix { };
|
||||
|
||||
fetchgx = callPackage ../build-support/fetchgx { };
|
||||
|
||||
|
|
Loading…
Reference in a new issue