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