Subject: [bug#63307] [PATCH] gnu: Add pnpm

From: Hilton Chain <[email-masked]>
Date: Sun, 20 Aug 2023 13:35:42 +0800

Hi Franz,

On Fri, 05 May 2023 22:03:22 +0800,
Franz Geffke wrote:
>
> diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm
> index 991113c05b..b32e68b415 100644
> --- a/gnu/packages/node-xyz.scm
> +++ b/gnu/packages/node-xyz.scm
> @@ -29,7 +29,9 @@ (define-module (gnu packages node-xyz)
>    #:use-module (guix gexp)
>    #:use-module (guix packages)
>    #:use-module (guix git-download)
> -  #:use-module (guix build-system node))
> +  #:use-module (guix build-system node)
> +  #:use-module (guix build-system trivial)
> +  #:use-module (ice-9 match))
>
>  (define-public node-acorn
>    (package
> @@ -1546,3 +1548,37 @@ (define-public node-yazl
>  @item Prefer to open input files one at a time than all at once.
>  @end enumerate")
>      (license license:expat)))
> +
> +(define-public pnpm
> +  (package
> +    (name "pnpm")
> +    (version "7.32.2")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append
> +             "https://github.com/pnpm/pnpm/releases/download/v"
> +             version "/pnpm-linuxstatic-"
> +             (match (or (%current-system) (%current-target-system))
> +               ("x86_64-linux" "x64")
> +               ("aarch64-linux" "arm64"))))
> +       (sha256
> +        (base32
> +         "1k3n24ink74ajs8nd0p6y6238vi41n5bvrk8clnydgwg11ax1zx0"))))
> +    (build-system trivial-build-system)
> +    (arguments
> +     `(#:modules ((guix build utils))
> +       #:builder
> +       (begin
> +         (use-modules ((guix build utils)))
> +         (let* ((source (assoc-ref %build-inputs "source"))
> +                (bin (string-append %output "/bin"))
> +                (exe (string-append bin "/pnpm")))
> +           (mkdir-p bin)
> +           (copy-file source exe)
> +           (chmod exe #o755)))))
> +    (home-page "https://pnpm.io")
> +    (synopsis "Fast, disk space efficient package manager for nodejs")
> +    (description "pnpm uses a content-addressable filesystem to
> +store all files from all module directories on a disk")
> +    (license license:expat)))
>
>

Binary packages won't be accpeted, would you like to try building pnpm
from source?  Or this issue should be closed.

And in case you don't know, the current node package is built with
corepack [1] support, pnpm is included in it:
$ guix shell node -- corepack pnpm --help

Thanks

[1]: https://github.com/nodejs/corepack