-
Notifications
You must be signed in to change notification settings - Fork 5
/
ride.nix
67 lines (49 loc) · 1.5 KB
/
ride.nix
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
{ src
, rev
, lib
, fetchFromGitHub
, buildNpmPackage
, makeWrapper
, python3
, electron
}:
let
pname = "ride";
packageInfo = builtins.fromJSON (builtins.readFile (src + "/package.json"));
version = lib.concatStringsSep "." (lib.take 2 (lib.splitString "." packageInfo.version));
versionJSON = builtins.toJSON {
versionInfo = {
inherit version rev;
date = "unknown (built by Nix)";
};
};
in
buildNpmPackage {
inherit pname version src;
npmInstallFlags = [ "--omit=dev" ];
# Skips the auto-downloaded electron binary
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
npmDepsHash = "sha256-mgkOTuspqoM4yZMr2u7f+0qSgzIMz033GXezuPA7rkQ=";
dontNpmBuild = true;
nativeBuildInputs = [ makeWrapper python3 ];
# This is the replacement for the `mk` script in the source repo
postInstall = ''
cd $out/lib/node_modules/${packageInfo.name}
mkdir $out/app
cp -r {src,lib,node_modules,D.png,favicon.*,*.html,main.js,package.json} $out/app
mkdir $out/app/style
cp -r style/{fonts,img,*.css} $out/app/style
cd $out/app/node_modules
rm -r {.bin,monaco-editor/{dev,esm,min-maps}}
find . -type f -name '*.map' -exec rm -rf {} +
find . -type d -name 'test' -exec rm -rf {} +
rm -r $out/lib
# Generate version-info
mkdir $out/app/_
echo 'D=${versionJSON}' > $out/app/_/version.js
echo ${version} > $out/app/_/version
# Call electron manually
makeWrapper ${electron}/bin/electron $out/bin/ride \
--add-flags $out/app
'';
}