From 53af969d621c29357788baf5642ed28ada3b5f00 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Fri, 17 May 2024 11:09:12 +0200 Subject: [PATCH] pnpm: init at 9.1.1 Signed-off-by: Sefa Eyeoglu --- pkgs/development/tools/pnpm/default.nix | 20 ++++++++++ pkgs/development/tools/pnpm/generic.nix | 50 +++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++ 3 files changed, 74 insertions(+) create mode 100644 pkgs/development/tools/pnpm/default.nix create mode 100644 pkgs/development/tools/pnpm/generic.nix diff --git a/pkgs/development/tools/pnpm/default.nix b/pkgs/development/tools/pnpm/default.nix new file mode 100644 index 0000000000000..6fe9bc5cbe4f7 --- /dev/null +++ b/pkgs/development/tools/pnpm/default.nix @@ -0,0 +1,20 @@ +{ lib, callPackage }: +let + inherit (lib) mapAttrs' nameValuePair; + + variants = { + "8" = { + version = "8.15.8"; + hash = "sha256-aR/hdu6pqKgN8g5JdvPftEoEhBzriFY4/iomF0+B5l4="; + }; + "9" = { + version = "9.1.1"; + hash = "sha256-lVHoA9y3oYOf31QWFTqEQGDHvOATIYzoI0EFMlBKwQs="; + }; + }; + + callPnpm = variant: callPackage ./generic.nix {inherit (variant) version hash;}; + + mkPnpm = versionSuffix: variant: nameValuePair "pnpm_${versionSuffix}" (callPnpm variant); +in +mapAttrs' mkPnpm variants diff --git a/pkgs/development/tools/pnpm/generic.nix b/pkgs/development/tools/pnpm/generic.nix new file mode 100644 index 0000000000000..81fd5c2967dde --- /dev/null +++ b/pkgs/development/tools/pnpm/generic.nix @@ -0,0 +1,50 @@ +{ + lib, + stdenvNoCC, + fetchurl, + nodejs, + testers, + withNode ? true, + + version, + hash, +}: + +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "pnpm"; + inherit version; + + src = fetchurl { + url = "https://registry.npmjs.org/pnpm/-/pnpm-${finalAttrs.version}.tgz"; + inherit hash; + }; + + buildInputs = lib.optionals withNode [ nodejs ]; + + installPhase = '' + runHook preInstall + + install -d $out/{bin,libexec} + cp -R . $out/libexec/pnpm + ln -s $out/libexec/pnpm/bin/pnpm.cjs $out/bin/pnpm + ln -s $out/libexec/pnpm/bin/pnpx.cjs $out/bin/pnpx + + runHook postInstall + ''; + + passthru = { + tests.version = lib.optionalAttrs withNode ( + testers.testVersion { package = finalAttrs.finalPackage; } + ); + }; + + meta = with lib; { + description = "Fast, disk space efficient package manager for JavaScript"; + homepage = "https://pnpm.io/"; + changelog = "https://github.com/pnpm/pnpm/releases/tag/v${finalAttrs.version}"; + license = licenses.mit; + maintainers = with maintainers; [ Scrumplex ]; + platforms = platforms.all; + mainProgram = "pnpm"; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9607bb6e591ab..38b3978aabc32 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11888,6 +11888,10 @@ with pkgs; pngquant = callPackage ../tools/graphics/pngquant { }; + inherit (callPackages ../development/tools/pnpm { }) + pnpm_8 pnpm_9; + pnpm = pnpm_9; + po4a = perlPackages.Po4a; poac = callPackage ../development/tools/poac {