diff --git a/pkgs/default.nix b/pkgs/default.nix index 704888f..1cedab5 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -6,4 +6,6 @@ final: prev: { olympus = final.callPackage ./olympus.nix { }; frei = final.callPackage ./frei.nix { source = final.sources.frei; }; + + nix-modrinth-prefetch = final.callPackage ./nix-modrinth-prefetch.nix { }; } diff --git a/pkgs/nix-modrinth-prefetch.nix b/pkgs/nix-modrinth-prefetch.nix new file mode 100644 index 0000000..36311bf --- /dev/null +++ b/pkgs/nix-modrinth-prefetch.nix @@ -0,0 +1,13 @@ +{ runtimeShell, writeShellScriptBin, curl, jq, gnused }: +writeShellScriptBin "nix-modrinth-prefetch" '' + input=$(${curl}/bin/curl --no-progress-meter https://api.modrinth.com/v2/version/$1) + + if [[ $input == "" ]]; then + echo "Invalid version" + exit 1 + fi + + echo $input \ + | ${jq}/bin/jq -c '.files | (.[] | select(.primary == true)) // .[0] | {url: .url, sha512: .hashes.sha512}' \ + | ${gnused}/bin/sed 's/{"url":"\(.\+\)","sha512":"\(.\+\)"}/fetchurl { url = "\1"; sha512 = "\2"; }/' +''