tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
pnpm: format
gepbird.tngl.sh
1 year ago
b6f2a8b5
c261249c
verified
This commit was signed with the committer's
known signature
.
gepbird.tngl.sh
SSH Key Fingerprint:
SHA256:MP2UpIRtJpbFFqyucP431H/FPCfn58UhEUTro4lXtRs=
+114
-89
4 changed files
expand all
collapse all
unified
split
pkgs
development
tools
pnpm
default.nix
fetch-deps
default.nix
serve.nix
generic.nix
+6
-2
pkgs/development/tools/pnpm/default.nix
···
1
-
{ lib, callPackage }:
0
0
0
0
2
let
3
inherit (lib) mapAttrs' nameValuePair;
4
···
13
};
14
};
15
16
-
callPnpm = variant: callPackage ./generic.nix {inherit (variant) version hash;};
17
18
mkPnpm = versionSuffix: variant: nameValuePair "pnpm_${versionSuffix}" (callPnpm variant);
19
in
···
1
+
{
2
+
lib,
3
+
callPackage,
4
+
}:
5
+
6
let
7
inherit (lib) mapAttrs' nameValuePair;
8
···
17
};
18
};
19
20
+
callPnpm = variant: callPackage ./generic.nix { inherit (variant) version hash; };
21
22
mkPnpm = versionSuffix: variant: nameValuePair "pnpm_${versionSuffix}" (callPnpm variant);
23
in
+61
-57
pkgs/development/tools/pnpm/fetch-deps/default.nix
···
9
pnpm,
10
yq,
11
}:
0
12
{
13
fetchDeps =
14
{
···
31
outputHash = "";
32
outputHashAlgo = "sha256";
33
};
34
-
installFlags = lib.optionalString (pnpmWorkspace != "") "--filter=${pnpmWorkspace}";
35
in
36
-
stdenvNoCC.mkDerivation (finalAttrs: (
37
-
args'
38
-
// {
39
-
name = "${pname}-pnpm-deps";
0
0
40
41
-
nativeBuildInputs = [
42
-
cacert
43
-
jq
44
-
moreutils
45
-
pnpm
46
-
yq
47
-
];
48
49
-
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
50
51
-
installPhase = ''
52
-
runHook preInstall
53
54
-
lockfileVersion="$(yq -r .lockfileVersion pnpm-lock.yaml)"
55
-
if [[ ''${lockfileVersion:0:1} -gt ${lib.versions.major pnpm.version} ]]; then
56
-
echo "ERROR: lockfileVersion $lockfileVersion in pnpm-lock.yaml is too new for the provided pnpm version ${lib.versions.major pnpm.version}!"
57
-
exit 1
58
-
fi
59
60
-
export HOME=$(mktemp -d)
61
-
pnpm config set store-dir $out
62
-
# Some packages produce platform dependent outputs. We do not want to cache those in the global store
63
-
pnpm config set side-effects-cache false
64
-
# As we pin pnpm versions, we don't really care about updates
65
-
pnpm config set update-notifier false
66
-
# Run any additional pnpm configuration commands that users provide.
67
-
${prePnpmInstall}
68
-
# pnpm is going to warn us about using --force
69
-
# --force allows us to fetch all dependencies including ones that aren't meant for our host platform
70
-
pnpm install \
71
-
--force \
72
-
--ignore-scripts \
73
-
${installFlags} \
74
-
--frozen-lockfile
75
76
-
runHook postInstall
77
-
'';
78
79
-
fixupPhase = ''
80
-
runHook preFixup
81
82
-
# Remove timestamp and sort the json files
83
-
rm -rf $out/v3/tmp
84
-
for f in $(find $out -name "*.json"); do
85
-
jq --sort-keys "del(.. | .checkedAt?)" $f | sponge $f
86
-
done
87
88
-
runHook postFixup
89
-
'';
90
91
-
passthru = {
92
-
serve = callPackage ./serve.nix {
93
-
inherit pnpm;
94
-
pnpmDeps = finalAttrs.finalPackage;
0
95
};
96
-
};
97
98
-
dontConfigure = true;
99
-
dontBuild = true;
100
-
outputHashMode = "recursive";
101
-
}
102
-
// hash'
103
-
));
0
104
105
configHook = makeSetupHook {
106
name = "pnpm-config-hook";
···
9
pnpm,
10
yq,
11
}:
12
+
13
{
14
fetchDeps =
15
{
···
32
outputHash = "";
33
outputHashAlgo = "sha256";
34
};
35
+
installFlags = lib.optionalString (pnpmWorkspace != "") "--filter=${pnpmWorkspace}";
36
in
37
+
stdenvNoCC.mkDerivation (
38
+
finalAttrs:
39
+
(
40
+
args'
41
+
// {
42
+
name = "${pname}-pnpm-deps";
43
44
+
nativeBuildInputs = [
45
+
cacert
46
+
jq
47
+
moreutils
48
+
pnpm
49
+
yq
50
+
];
51
52
+
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
53
54
+
installPhase = ''
55
+
runHook preInstall
56
57
+
lockfileVersion="$(yq -r .lockfileVersion pnpm-lock.yaml)"
58
+
if [[ ''${lockfileVersion:0:1} -gt ${lib.versions.major pnpm.version} ]]; then
59
+
echo "ERROR: lockfileVersion $lockfileVersion in pnpm-lock.yaml is too new for the provided pnpm version ${lib.versions.major pnpm.version}!"
60
+
exit 1
61
+
fi
62
63
+
export HOME=$(mktemp -d)
64
+
pnpm config set store-dir $out
65
+
# Some packages produce platform dependent outputs. We do not want to cache those in the global store
66
+
pnpm config set side-effects-cache false
67
+
# As we pin pnpm versions, we don't really care about updates
68
+
pnpm config set update-notifier false
69
+
# Run any additional pnpm configuration commands that users provide.
70
+
${prePnpmInstall}
71
+
# pnpm is going to warn us about using --force
72
+
# --force allows us to fetch all dependencies including ones that aren't meant for our host platform
73
+
pnpm install \
74
+
--force \
75
+
--ignore-scripts \
76
+
${installFlags} \
77
+
--frozen-lockfile
78
79
+
runHook postInstall
80
+
'';
81
82
+
fixupPhase = ''
83
+
runHook preFixup
84
85
+
# Remove timestamp and sort the json files
86
+
rm -rf $out/v3/tmp
87
+
for f in $(find $out -name "*.json"); do
88
+
jq --sort-keys "del(.. | .checkedAt?)" $f | sponge $f
89
+
done
90
91
+
runHook postFixup
92
+
'';
93
94
+
passthru = {
95
+
serve = callPackage ./serve.nix {
96
+
inherit pnpm;
97
+
pnpmDeps = finalAttrs.finalPackage;
98
+
};
99
};
0
100
101
+
dontConfigure = true;
102
+
dontBuild = true;
103
+
outputHashMode = "recursive";
104
+
}
105
+
// hash'
106
+
)
107
+
);
108
109
configHook = makeSetupHook {
110
name = "pnpm-config-hook";
+6
-1
pkgs/development/tools/pnpm/fetch-deps/serve.nix
···
1
-
{ writeShellApplication, pnpm, pnpmDeps }:
0
0
0
0
0
2
writeShellApplication {
3
name = "serve-pnpm-store";
4
···
1
+
{
2
+
writeShellApplication,
3
+
pnpm,
4
+
pnpmDeps,
5
+
}:
6
+
7
writeShellApplication {
8
name = "serve-pnpm-store";
9
+41
-29
pkgs/development/tools/pnpm/generic.nix
···
7
nodejs,
8
testers,
9
withNode ? true,
10
-
11
version,
12
hash,
13
-
}: stdenvNoCC.mkDerivation (finalAttrs: {
0
0
14
pname = "pnpm";
15
inherit version;
16
···
26
27
buildInputs = lib.optionals withNode [ nodejs ];
28
29
-
nativeBuildInputs = [ installShellFiles nodejs ];
0
0
0
30
31
installPhase = ''
32
runHook preInstall
···
40
'';
41
42
postInstall =
43
-
if lib.toInt (lib.versions.major version) < 9 then ''
44
-
export HOME="$PWD"
45
-
node $out/bin/pnpm install-completion bash
46
-
node $out/bin/pnpm install-completion fish
47
-
node $out/bin/pnpm install-completion zsh
48
-
sed -i '1 i#compdef pnpm' .config/tabtab/zsh/pnpm.zsh
49
-
installShellCompletion \
50
-
.config/tabtab/bash/pnpm.bash \
51
-
.config/tabtab/fish/pnpm.fish \
52
-
.config/tabtab/zsh/pnpm.zsh
53
-
'' else ''
54
-
node $out/bin/pnpm completion bash >pnpm.bash
55
-
node $out/bin/pnpm completion fish >pnpm.fish
56
-
node $out/bin/pnpm completion zsh >pnpm.zsh
57
-
sed -i '1 i#compdef pnpm' pnpm.zsh
58
-
installShellCompletion pnpm.{bash,fish,zsh}
59
-
'';
0
0
0
60
61
-
passthru = let
62
-
fetchDepsAttrs = callPackages ./fetch-deps { pnpm = finalAttrs.finalPackage; };
63
-
in {
64
-
inherit (fetchDepsAttrs) fetchDeps configHook;
0
0
65
66
-
tests.version = lib.optionalAttrs withNode (
67
-
testers.testVersion { package = finalAttrs.finalPackage; }
68
-
);
69
-
};
70
71
meta = with lib; {
72
description = "Fast, disk space efficient package manager for JavaScript";
73
homepage = "https://pnpm.io/";
74
changelog = "https://github.com/pnpm/pnpm/releases/tag/v${finalAttrs.version}";
75
license = licenses.mit;
76
-
maintainers = with maintainers; [ Scrumplex gepbird ];
0
0
0
77
platforms = platforms.all;
78
mainProgram = "pnpm";
79
};
···
7
nodejs,
8
testers,
9
withNode ? true,
0
10
version,
11
hash,
12
+
}:
13
+
14
+
stdenvNoCC.mkDerivation (finalAttrs: {
15
pname = "pnpm";
16
inherit version;
17
···
27
28
buildInputs = lib.optionals withNode [ nodejs ];
29
30
+
nativeBuildInputs = [
31
+
installShellFiles
32
+
nodejs
33
+
];
34
35
installPhase = ''
36
runHook preInstall
···
44
'';
45
46
postInstall =
47
+
if lib.toInt (lib.versions.major version) < 9 then
48
+
''
49
+
export HOME="$PWD"
50
+
node $out/bin/pnpm install-completion bash
51
+
node $out/bin/pnpm install-completion fish
52
+
node $out/bin/pnpm install-completion zsh
53
+
sed -i '1 i#compdef pnpm' .config/tabtab/zsh/pnpm.zsh
54
+
installShellCompletion \
55
+
.config/tabtab/bash/pnpm.bash \
56
+
.config/tabtab/fish/pnpm.fish \
57
+
.config/tabtab/zsh/pnpm.zsh
58
+
''
59
+
else
60
+
''
61
+
node $out/bin/pnpm completion bash >pnpm.bash
62
+
node $out/bin/pnpm completion fish >pnpm.fish
63
+
node $out/bin/pnpm completion zsh >pnpm.zsh
64
+
sed -i '1 i#compdef pnpm' pnpm.zsh
65
+
installShellCompletion pnpm.{bash,fish,zsh}
66
+
'';
67
68
+
passthru =
69
+
let
70
+
fetchDepsAttrs = callPackages ./fetch-deps { pnpm = finalAttrs.finalPackage; };
71
+
in
72
+
{
73
+
inherit (fetchDepsAttrs) fetchDeps configHook;
74
75
+
tests.version = lib.optionalAttrs withNode (
76
+
testers.testVersion { package = finalAttrs.finalPackage; }
77
+
);
78
+
};
79
80
meta = with lib; {
81
description = "Fast, disk space efficient package manager for JavaScript";
82
homepage = "https://pnpm.io/";
83
changelog = "https://github.com/pnpm/pnpm/releases/tag/v${finalAttrs.version}";
84
license = licenses.mit;
85
+
maintainers = with maintainers; [
86
+
Scrumplex
87
+
gepbird
88
+
];
89
platforms = platforms.all;
90
mainProgram = "pnpm";
91
};