From 1ad800d91980f6d7e51824f6c96916325698b4e3 Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Wed, 11 Aug 2021 23:26:36 -0700 Subject: [PATCH] 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`. --- pkgs/build-support/nuget-to-nix/default.nix | 5 ++++ .../nuget-to-nix/nuget-to-nix.sh | 23 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 3 files changed, 29 insertions(+) create mode 100644 pkgs/build-support/nuget-to-nix/default.nix create mode 100755 pkgs/build-support/nuget-to-nix/nuget-to-nix.sh diff --git a/pkgs/build-support/nuget-to-nix/default.nix b/pkgs/build-support/nuget-to-nix/default.nix new file mode 100644 index 000000000000..9c975cf556c3 --- /dev/null +++ b/pkgs/build-support/nuget-to-nix/default.nix @@ -0,0 +1,5 @@ +{ runCommandNoCC }: + +runCommandNoCC "nuget-to-nix" { preferLocalBuild = true; } '' + install -D -m755 ${./nuget-to-nix.sh} $out/bin/nuget-to-nix +'' diff --git a/pkgs/build-support/nuget-to-nix/nuget-to-nix.sh b/pkgs/build-support/nuget-to-nix/nuget-to-nix.sh new file mode 100755 index 000000000000..c14844bec59e --- /dev/null +++ b/pkgs/build-support/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/.*([^<]*).*/\1/p; s/.*([^<+]*).*/\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 "]" diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cff389cf951b..e32476b74c04 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -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 { };