forked from Deiru2k/miracle-tv
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdefault.nix
More file actions
executable file
·107 lines (84 loc) · 2.79 KB
/
Copy pathdefault.nix
File metadata and controls
executable file
·107 lines (84 loc) · 2.79 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
with import <nixpkgs> {};
let
version = "0.1.6";
src = ./.;
nodePkg = pkgs.nodejs-14_x;
yarnPkg = pkgs.yarn.override { nodejs = nodePkg; };
nodeBcrypt = (builtins.fetchTarball "https://github.com/kelektiv/node.bcrypt.js/releases/download/v5.0.1/bcrypt_lib-v5.0.1-napi-v3-linux-x64-glibc.tar.gz");
in mkYarnPackage rec {
name = "miracle-tv";
inherit version src nodePkg yarnPkg;
doDist = false;
packageJSON = "${src}/package.json";
yarnLock = "${src}/yarn.lock";
configurePhase = ''
runHook preConfigure
# Re-create node_modules and place native dependencies there
rm -rf ./node_modules
# bcrypt
mkdir -p ./node_modules/bcrypt/lib/binding/napi-v3
cp ${nodeBcrypt}/bcrypt_lib.node ./node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node
# Copy node modules for the buildPhase
cp -R $node_modules/* ./node_modules
cp -R $node_modules/.bin ./node_modules
# rm -rf ./node_modules/socket.io/client-dist
runHook preConfigure
'';
buildPhase = ''
runHook preBuild
# Build server and client
yarn --offline build:client
yarn --offline build:cli
runHook postBuild
'';
installPhase = ''
runHook preInstall
# Create output dirs
mkdir -p $out/bin
mkdir -p $out/dist/server/graphql
mkdir -p $out/dist/shared
mkdir -p $out/dist/server/lib/binding/napi-v3
# Copy files needed for the suite to run
cp package.json $out/package.json
cp next.config.js $out/next.config.js
cp tsconfig.json $out/tsconfig.json
cp next.config.js $out/next.config.js
# Copy server dist
cp -r ./src/server/* $out/dist/server
cp -r ./src/shared/* $out/dist/shared
# Wrap yarn to run server as `miracle-server`
makeWrapper $yarnPkg/bin/yarn $out/bin/miracle-server \
--add-flags "--cwd $out" \
--add-flags "run:server" \
--set NODE_PATH "$node_modules" \
--set PATH "$PATH:$node_modules/.bin" \
--set NODE_ENV production
# Copy client dist
mkdir -p $out/dist/client
cp -R ./dist/client/* $out/dist/client
# Wrap yarn to run client as `miracle-client`
makeWrapper $yarnPkg/bin/yarn $out/bin/miracle-client \
--add-flags "--cwd $out" \
--add-flags "run:client" \
--set NODE_PATH "$node_modules" \
--set PATH "$PATH:$node_modules/.bin" \
--set NODE_ENV production
# Copy cli dist
mkdir -p $out/dist/cli
cp -R ./dist/cli/* $out/dist/cli
# Wrap yarn to run control as `miracle-ctl`
makeWrapper $yarnPkg/bin/yarn $out/bin/miracle-ctl \
--add-flags "--cwd $out" \
--add-flags "run:ctl" \
--set NODE_ENV production
runHook preInstall
'';
distPhase = ''
true
'';
nativeBuildInputs = with pkgs; [
nodePkg yarnPkg makeWrapper
automake autoconf m4 git bash
libpng libGL gcc yarn2nix
];
}