summary refs log tree commit diff
path: root/pkgs/build-support/dotnet
diff options
context:
space:
mode:
authorIvar Scholten <ivar.scholten@protonmail.com>2022-02-11 16:38:12 +0100
committerIvar Scholten <ivar.scholten@protonmail.com>2022-02-11 16:38:12 +0100
commit1878b7b1b2fd3186e48511ba3a0ea8e3574664fc (patch)
tree81afa25b6d9d324186004e820fea6c62eb9d9287 /pkgs/build-support/dotnet
parentb2b29319def269c0e542c6e4b080ff0c0a127522 (diff)
downloadnixpkgs-1878b7b1b2fd3186e48511ba3a0ea8e3574664fc.tar
nixpkgs-1878b7b1b2fd3186e48511ba3a0ea8e3574664fc.tar.gz
nixpkgs-1878b7b1b2fd3186e48511ba3a0ea8e3574664fc.tar.bz2
nixpkgs-1878b7b1b2fd3186e48511ba3a0ea8e3574664fc.tar.lz
nixpkgs-1878b7b1b2fd3186e48511ba3a0ea8e3574664fc.tar.xz
nixpkgs-1878b7b1b2fd3186e48511ba3a0ea8e3574664fc.tar.zst
nixpkgs-1878b7b1b2fd3186e48511ba3a0ea8e3574664fc.zip
nuget-to-nix: move to pkgs/build-support/dotnet
Diffstat (limited to 'pkgs/build-support/dotnet')
-rw-r--r--pkgs/build-support/dotnet/nuget-to-nix/default.nix5
-rwxr-xr-xpkgs/build-support/dotnet/nuget-to-nix/nuget-to-nix.sh23
2 files changed, 28 insertions, 0 deletions
diff --git a/pkgs/build-support/dotnet/nuget-to-nix/default.nix b/pkgs/build-support/dotnet/nuget-to-nix/default.nix
new file mode 100644
index 00000000000..a5fc4e209cd
--- /dev/null
+++ b/pkgs/build-support/dotnet/nuget-to-nix/default.nix
@@ -0,0 +1,5 @@
+{ runCommand }:
+
+runCommand "nuget-to-nix" { preferLocalBuild = true; } ''
+  install -D -m755 ${./nuget-to-nix.sh} $out/bin/nuget-to-nix
+''
diff --git a/pkgs/build-support/dotnet/nuget-to-nix/nuget-to-nix.sh b/pkgs/build-support/dotnet/nuget-to-nix/nuget-to-nix.sh
new file mode 100755
index 00000000000..55a49937018
--- /dev/null
+++ b/pkgs/build-support/dotnet/nuget-to-nix/nuget-to-nix.sh
@@ -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 { pname = \"$pkg_name\"; version = \"$pkg_version\"; sha256 = \"$pkg_sha256\"; })"
+done < <(find $1 -name '*.nuspec' | sort)
+
+echo "]"