-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathflake.nix
More file actions
127 lines (113 loc) · 3.78 KB
/
Copy pathflake.nix
File metadata and controls
127 lines (113 loc) · 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
{
description = "A nix flake for https://github.com/gitmachtl/cardano-signer";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = {
self,
nixpkgs,
flake-utils,
}: let
srcRepo = pkgs:
pkgs.fetchFromGitHub {
owner = "gitmachtl";
repo = "cardano-signer";
rev = "v1.34.0";
sha256 = "sha256-9dJpZnEm4adZerDvbtglVHIQIi9P1byAtrKFnh0RBB0=";
};
shortRevOrRelTag = rev:
if nixpkgs.lib.hasPrefix "v" rev
then rev
else builtins.substring 0 7 rev;
in
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
};
in
with pkgs; {
packages = rec {
default = cardano-signer;
cardano-signer = let
cardano-signer' = mkYarnPackage rec {
name = "cardano-signer";
version = "${shortRevOrRelTag src.rev}";
src = srcRepo pkgs;
nativeBuildInputs = [makeWrapper];
packageJSON = "${src.outPath}/src/package.json";
yarnLock = ./yarn-${shortRevOrRelTag src.rev}.lock;
yarnFlags = ["--frozen-lockfile" "--production"];
installPhase = ''
# Expected module output path
mkdir -p $out/libexec/cardano-signer
# Reshape the deps dir
mv deps/cardano-signer/src/* deps/cardano-signer/
rmdir deps/cardano-signer/src
rm -rf deps/cardano-signer/node_modules
rm deps/cardano-signer/cardano-signer
# Assemble under the libexec target
cp -r deps node_modules $out/libexec/cardano-signer/
# Create a bin wrapper
makeWrapper ${nodejs}/bin/node $out/bin/cardano-signer \
--add-flags "$out/libexec/cardano-signer/deps/cardano-signer/cardano-signer.js" \
--set NODE_PATH "$out/libexec/cardano-signer/node_modules"
'';
};
in
runCommand "cardano-signer-${shortRevOrRelTag (srcRepo pkgs).rev}" {} ''
# Clean up unneeded tarball
mkdir $out
cp -r ${cardano-signer'}/* $out
chmod -R +w $out/tarballs
rm -rf $out/tarballs
'';
};
devShells.default = let
update-yarn-lock = writeShellApplication {
name = "update-yarn-lock";
text = ''
PKG_JSON="${(srcRepo pkgs).outPath}/src/package.json"
cp "$PKG_JSON" .
chmod +w package.json
yarn install
cp -f yarn.lock yarn-${shortRevOrRelTag (srcRepo pkgs).rev}.lock
rm -rf yarn.lock package.json node_modules
'';
};
in
mkShell {
packages = [
coreutils
figlet
gnutar
gzip
jq
lolcat
nodejs
update-yarn-lock
yarn
];
shellHook = ''
figlet <<< "Cardano-signer devShell." | lolcat
echo
echo "Build:"
echo
echo " nix build -L .#cardano-signer"
echo
echo "Run Locally:"
echo
echo " result/bin/cardano-signer \"\''${ARGS[@]}\""
echo
echo "Run from repo remotely:"
echo
echo " nix run github:johnalotoski/cardano-signer -- \"\''${ARGS[@]}\""
echo
echo "Update (see README.md for more details):"
echo
echo " update-yarn-lock"
echo
'';
};
});
}