git.fiddlerwoaroof.com
Browse code

chore: rearrange nix files

Ed L authored on 14/06/2020 07:10:09
Showing 9 changed files
... ...
@@ -1,17 +1,11 @@
1
-# This file has been generated by node2nix 1.8.0. Do not edit!
2
-
3 1
 {pkgs ? import <nixpkgs> {
4
-    inherit system;
5
-  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
2
+  inherit system;
3
+}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
6 4
 
7 5
 let
8
-  nodeEnv = import ./node-env.nix {
9
-    inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
10
-    inherit nodejs;
11
-    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
6
+  buildInputs = [pkgs.dhall pkgs.dhall-json];
7
+  it = import ./project.nix {
8
+    inherit pkgs system nodejs;
9
+    globalBuildInputs = buildInputs;
12 10
   };
13
-in
14
-import ./node-packages.nix {
15
-  inherit (pkgs) fetchurl fetchgit;
16
-  inherit nodeEnv;
17
-}
18 11
\ No newline at end of file
12
+in it.dev
19 13
new file mode 100644
... ...
@@ -0,0 +1,17 @@
1
+# This file has been generated by node2nix 1.8.0. Do not edit!
2
+
3
+{pkgs ? import <nixpkgs> {
4
+    inherit system;
5
+  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
6
+
7
+let
8
+  nodeEnv = import ./node-env.nix {
9
+    inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
10
+    inherit nodejs;
11
+    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
12
+  };
13
+in
14
+import ./registry.nix {
15
+  inherit (pkgs) fetchurl fetchgit;
16
+  inherit nodeEnv;
17
+}
0 18
\ No newline at end of file
1 19
similarity index 100%
2 20
rename from node-env.nix
3 21
rename to dev/node-env.nix
4 22
similarity index 81%
5 23
rename from node-packages.nix
6 24
rename to dev/registry.nix
... ...
@@ -40,6 +40,15 @@ let
40 40
         sha512 = "6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==";
41 41
       };
42 42
     };
43
+    "@babel/runtime-corejs3-7.10.2" = {
44
+      name = "_at_babel_slash_runtime-corejs3";
45
+      packageName = "@babel/runtime-corejs3";
46
+      version = "7.10.2";
47
+      src = fetchurl {
48
+        url = "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.2.tgz";
49
+        sha512 = "+a2M/u7r15o3dV1NEizr9bRi+KUVnrs/qYxF0Z06DAPx/4VCWaz1WA7EcbE+uqGgt39lp5akWGmHsTseIkHkHg==";
50
+      };
51
+    };
43 52
     "@types/color-name-1.1.1" = {
44 53
       name = "_at_types_slash_color-name";
45 54
       packageName = "@types/color-name";
... ...
@@ -130,6 +139,15 @@ let
130 139
         sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==";
131 140
       };
132 141
     };
142
+    "array-includes-3.1.1" = {
143
+      name = "array-includes";
144
+      packageName = "array-includes";
145
+      version = "3.1.1";
146
+      src = fetchurl {
147
+        url = "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz";
148
+        sha512 = "c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==";
149
+      };
150
+    };
133 151
     "astral-regex-1.0.0" = {
134 152
       name = "astral-regex";
135 153
       packageName = "astral-regex";
... ...
@@ -265,6 +283,15 @@ let
265 283
         sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
266 284
       };
267 285
     };
286
+    "core-js-pure-3.6.5" = {
287
+      name = "core-js-pure";
288
+      packageName = "core-js-pure";
289
+      version = "3.6.5";
290
+      src = fetchurl {
291
+        url = "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz";
292
+        sha512 = "lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==";
293
+      };
294
+    };
268 295
     "cross-spawn-7.0.3" = {
269 296
       name = "cross-spawn";
270 297
       packageName = "cross-spawn";
... ...
@@ -292,6 +319,24 @@ let
292 319
         sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
293 320
       };
294 321
     };
322
+    "define-properties-1.1.3" = {
323
+      name = "define-properties";
324
+      packageName = "define-properties";
325
+      version = "1.1.3";
326
+      src = fetchurl {
327
+        url = "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz";
328
+        sha512 = "3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==";
329
+      };
330
+    };
331
+    "doctrine-2.1.0" = {
332
+      name = "doctrine";
333
+      packageName = "doctrine";
334
+      version = "2.1.0";
335
+      src = fetchurl {
336
+        url = "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz";
337
+        sha512 = "35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==";
338
+      };
339
+    };
295 340
     "doctrine-3.0.0" = {
296 341
       name = "doctrine";
297 342
       packageName = "doctrine";
... ...
@@ -319,6 +364,24 @@ let
319 364
         sha512 = "MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==";
320 365
       };
321 366
     };
367
+    "es-abstract-1.17.6" = {
368
+      name = "es-abstract";
369
+      packageName = "es-abstract";
370
+      version = "1.17.6";
371
+      src = fetchurl {
372
+        url = "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz";
373
+        sha512 = "Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==";
374
+      };
375
+    };
376
+    "es-to-primitive-1.2.1" = {
377
+      name = "es-to-primitive";
378
+      packageName = "es-to-primitive";
379
+      version = "1.2.1";
380
+      src = fetchurl {
381
+        url = "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz";
382
+        sha512 = "QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==";
383
+      };
384
+    };
322 385
     "escape-string-regexp-1.0.5" = {
323 386
       name = "escape-string-regexp";
324 387
       packageName = "escape-string-regexp";
... ...
@@ -337,6 +400,15 @@ let
337 400
         sha512 = "B3BtEyaDKC5MlfDa2Ha8/D6DsS4fju95zs0hjS3HdGazw+LNayai38A25qMppK37wWGWNYSPOR6oYzlz5MHsRQ==";
338 401
       };
339 402
     };
403
+    "eslint-plugin-react-7.20.0" = {
404
+      name = "eslint-plugin-react";
405
+      packageName = "eslint-plugin-react";
406
+      version = "7.20.0";
407
+      src = fetchurl {
408
+        url = "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz";
409
+        sha512 = "rqe1abd0vxMjmbPngo4NaYxTcR3Y4Hrmc/jg4T+sYz63yqlmJRknpEQfmWY+eDWPuMmix6iUIK+mv0zExjeLgA==";
410
+      };
411
+    };
340 412
     "eslint-scope-5.1.0" = {
341 413
       name = "eslint-scope";
342 414
       packageName = "eslint-scope";
... ...
@@ -508,6 +580,15 @@ let
508 580
         sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
509 581
       };
510 582
     };
583
+    "function-bind-1.1.1" = {
584
+      name = "function-bind";
585
+      packageName = "function-bind";
586
+      version = "1.1.1";
587
+      src = fetchurl {
588
+        url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz";
589
+        sha512 = "yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==";
590
+      };
591
+    };
511 592
     "functional-red-black-tree-1.0.1" = {
512 593
       name = "functional-red-black-tree";
513 594
       packageName = "functional-red-black-tree";
... ...
@@ -544,6 +625,15 @@ let
544 625
         sha512 = "BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==";
545 626
       };
546 627
     };
628
+    "has-1.0.3" = {
629
+      name = "has";
630
+      packageName = "has";
631
+      version = "1.0.3";
632
+      src = fetchurl {
633
+        url = "https://registry.npmjs.org/has/-/has-1.0.3.tgz";
634
+        sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==";
635
+      };
636
+    };
547 637
     "has-flag-3.0.0" = {
548 638
       name = "has-flag";
549 639
       packageName = "has-flag";
... ...
@@ -562,6 +652,15 @@ let
562 652
         sha512 = "EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==";
563 653
       };
564 654
     };
655
+    "has-symbols-1.0.1" = {
656
+      name = "has-symbols";
657
+      packageName = "has-symbols";
658
+      version = "1.0.1";
659
+      src = fetchurl {
660
+        url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz";
661
+        sha512 = "PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==";
662
+      };
663
+    };
565 664
     "hoist-non-react-statics-3.3.2" = {
566 665
       name = "hoist-non-react-statics";
567 666
       packageName = "hoist-non-react-statics";
... ...
@@ -634,6 +733,33 @@ let
634 733
         sha512 = "5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==";
635 734
       };
636 735
     };
736
+    "internal-slot-1.0.2" = {
737
+      name = "internal-slot";
738
+      packageName = "internal-slot";
739
+      version = "1.0.2";
740
+      src = fetchurl {
741
+        url = "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz";
742
+        sha512 = "2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==";
743
+      };
744
+    };
745
+    "is-callable-1.2.0" = {
746
+      name = "is-callable";
747
+      packageName = "is-callable";
748
+      version = "1.2.0";
749
+      src = fetchurl {
750
+        url = "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz";
751
+        sha512 = "pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==";
752
+      };
753
+    };
754
+    "is-date-object-1.0.2" = {
755
+      name = "is-date-object";
756
+      packageName = "is-date-object";
757
+      version = "1.0.2";
758
+      src = fetchurl {
759
+        url = "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz";
760
+        sha512 = "USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==";
761
+      };
762
+    };
637 763
     "is-extglob-2.1.1" = {
638 764
       name = "is-extglob";
639 765
       packageName = "is-extglob";
... ...
@@ -670,6 +796,33 @@ let
670 796
         sha512 = "5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==";
671 797
       };
672 798
     };
799
+    "is-regex-1.1.0" = {
800
+      name = "is-regex";
801
+      packageName = "is-regex";
802
+      version = "1.1.0";
803
+      src = fetchurl {
804
+        url = "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz";
805
+        sha512 = "iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==";
806
+      };
807
+    };
808
+    "is-string-1.0.5" = {
809
+      name = "is-string";
810
+      packageName = "is-string";
811
+      version = "1.0.5";
812
+      src = fetchurl {
813
+        url = "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz";
814
+        sha512 = "buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==";
815
+      };
816
+    };
817
+    "is-symbol-1.0.3" = {
818
+      name = "is-symbol";
819
+      packageName = "is-symbol";
820
+      version = "1.0.3";
821
+      src = fetchurl {
822
+        url = "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz";
823
+        sha512 = "OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==";
824
+      };
825
+    };
673 826
     "isexe-2.0.0" = {
674 827
       name = "isexe";
675 828
       packageName = "isexe";
... ...
@@ -715,6 +868,15 @@ let
715 868
         sha1 = "9db7b59496ad3f3cfef30a75142d2d930ad72651";
716 869
       };
717 870
     };
871
+    "jsx-ast-utils-2.4.1" = {
872
+      name = "jsx-ast-utils";
873
+      packageName = "jsx-ast-utils";
874
+      version = "2.4.1";
875
+      src = fetchurl {
876
+        url = "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz";
877
+        sha512 = "z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==";
878
+      };
879
+    };
718 880
     "levn-0.4.1" = {
719 881
       name = "levn";
720 882
       packageName = "levn";
... ...
@@ -823,6 +985,60 @@ let
823 985
         sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
824 986
       };
825 987
     };
988
+    "object-inspect-1.7.0" = {
989
+      name = "object-inspect";
990
+      packageName = "object-inspect";
991
+      version = "1.7.0";
992
+      src = fetchurl {
993
+        url = "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz";
994
+        sha512 = "a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==";
995
+      };
996
+    };
997
+    "object-keys-1.1.1" = {
998
+      name = "object-keys";
999
+      packageName = "object-keys";
1000
+      version = "1.1.1";
1001
+      src = fetchurl {
1002
+        url = "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz";
1003
+        sha512 = "NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==";
1004
+      };
1005
+    };
1006
+    "object.assign-4.1.0" = {
1007
+      name = "object.assign";
1008
+      packageName = "object.assign";
1009
+      version = "4.1.0";
1010
+      src = fetchurl {
1011
+        url = "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz";
1012
+        sha512 = "exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==";
1013
+      };
1014
+    };
1015
+    "object.entries-1.1.2" = {
1016
+      name = "object.entries";
1017
+      packageName = "object.entries";
1018
+      version = "1.1.2";
1019
+      src = fetchurl {
1020
+        url = "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz";
1021
+        sha512 = "BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==";
1022
+      };
1023
+    };
1024
+    "object.fromentries-2.0.2" = {
1025
+      name = "object.fromentries";
1026
+      packageName = "object.fromentries";
1027
+      version = "2.0.2";
1028
+      src = fetchurl {
1029
+        url = "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz";
1030
+        sha512 = "r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==";
1031
+      };
1032
+    };
1033
+    "object.values-1.1.1" = {
1034
+      name = "object.values";
1035
+      packageName = "object.values";
1036
+      version = "1.1.1";
1037
+      src = fetchurl {
1038
+        url = "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz";
1039
+        sha512 = "WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==";
1040
+      };
1041
+    };
826 1042
     "once-1.4.0" = {
827 1043
       name = "once";
828 1044
       packageName = "once";
... ...
@@ -886,6 +1102,15 @@ let
886 1102
         sha512 = "ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==";
887 1103
       };
888 1104
     };
1105
+    "path-parse-1.0.6" = {
1106
+      name = "path-parse";
1107
+      packageName = "path-parse";
1108
+      version = "1.0.6";
1109
+      src = fetchurl {
1110
+        url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz";
1111
+        sha512 = "GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==";
1112
+      };
1113
+    };
889 1114
     "prelude-ls-1.2.1" = {
890 1115
       name = "prelude-ls";
891 1116
       packageName = "prelude-ls";
... ...
@@ -976,6 +1201,15 @@ let
976 1201
         sha512 = "ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==";
977 1202
       };
978 1203
     };
1204
+    "regexp.prototype.flags-1.3.0" = {
1205
+      name = "regexp.prototype.flags";
1206
+      packageName = "regexp.prototype.flags";
1207
+      version = "1.3.0";
1208
+      src = fetchurl {
1209
+        url = "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz";
1210
+        sha512 = "2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==";
1211
+      };
1212
+    };
979 1213
     "regexpp-3.1.0" = {
980 1214
       name = "regexpp";
981 1215
       packageName = "regexpp";
... ...
@@ -985,6 +1219,15 @@ let
985 1219
         sha512 = "ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==";
986 1220
       };
987 1221
     };
1222
+    "resolve-1.17.0" = {
1223
+      name = "resolve";
1224
+      packageName = "resolve";
1225
+      version = "1.17.0";
1226
+      src = fetchurl {
1227
+        url = "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz";
1228
+        sha512 = "ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==";
1229
+      };
1230
+    };
988 1231
     "resolve-from-4.0.0" = {
989 1232
       name = "resolve-from";
990 1233
       packageName = "resolve-from";
... ...
@@ -1075,6 +1318,15 @@ let
1075 1318
         sha512 = "7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==";
1076 1319
       };
1077 1320
     };
1321
+    "side-channel-1.0.2" = {
1322
+      name = "side-channel";
1323
+      packageName = "side-channel";
1324
+      version = "1.0.2";
1325
+      src = fetchurl {
1326
+        url = "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz";
1327
+        sha512 = "7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==";
1328
+      };
1329
+    };
1078 1330
     "signal-exit-3.0.3" = {
1079 1331
       name = "signal-exit";
1080 1332
       packageName = "signal-exit";
... ...
@@ -1120,6 +1372,33 @@ let
1120 1372
         sha512 = "zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==";
1121 1373
       };
1122 1374
     };
1375
+    "string.prototype.matchall-4.0.2" = {
1376
+      name = "string.prototype.matchall";
1377
+      packageName = "string.prototype.matchall";
1378
+      version = "4.0.2";
1379
+      src = fetchurl {
1380
+        url = "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz";
1381
+        sha512 = "N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==";
1382
+      };
1383
+    };
1384
+    "string.prototype.trimend-1.0.1" = {
1385
+      name = "string.prototype.trimend";
1386
+      packageName = "string.prototype.trimend";
1387
+      version = "1.0.1";
1388
+      src = fetchurl {
1389
+        url = "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz";
1390
+        sha512 = "LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==";
1391
+      };
1392
+    };
1393
+    "string.prototype.trimstart-1.0.1" = {
1394
+      name = "string.prototype.trimstart";
1395
+      packageName = "string.prototype.trimstart";
1396
+      version = "1.0.1";
1397
+      src = fetchurl {
1398
+        url = "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz";
1399
+        sha512 = "XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==";
1400
+      };
1401
+    };
1123 1402
     "strip-ansi-5.2.0" = {
1124 1403
       name = "strip-ansi";
1125 1404
       packageName = "strip-ansi";
... ...
@@ -1300,12 +1579,21 @@ let
1300 1579
         sha512 = "/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==";
1301 1580
       };
1302 1581
     };
1582
+    "xregexp-4.3.0" = {
1583
+      name = "xregexp";
1584
+      packageName = "xregexp";
1585
+      version = "4.3.0";
1586
+      src = fetchurl {
1587
+        url = "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz";
1588
+        sha512 = "7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==";
1589
+      };
1590
+    };
1303 1591
   };
1304 1592
   args = {
1305 1593
     name = "transcribe-server";
1306 1594
     packageName = "transcribe-server";
1307 1595
     version = "1.0.0";
1308
-    src = ./.;
1596
+    src = ./..;
1309 1597
     dependencies = [
1310 1598
       sources."@babel/code-frame-7.10.1"
1311 1599
       sources."@babel/helper-validator-identifier-7.10.1"
... ...
@@ -1315,6 +1603,7 @@ let
1315 1603
         ];
1316 1604
       })
1317 1605
       sources."@babel/runtime-7.10.2"
1606
+      sources."@babel/runtime-corejs3-7.10.2"
1318 1607
       sources."@types/color-name-1.1.1"
1319 1608
       sources."acorn-7.3.1"
1320 1609
       sources."acorn-jsx-5.2.0"
... ...
@@ -1327,6 +1616,7 @@ let
1327 1616
       sources."ansi-regex-5.0.0"
1328 1617
       sources."ansi-styles-3.2.1"
1329 1618
       sources."argparse-1.0.10"
1619
+      sources."array-includes-3.1.1"
1330 1620
       sources."astral-regex-1.0.0"
1331 1621
       sources."balanced-match-1.0.0"
1332 1622
       sources."brace-expansion-1.1.11"
... ...
@@ -1346,13 +1636,22 @@ let
1346 1636
       sources."color-convert-1.9.3"
1347 1637
       sources."color-name-1.1.3"
1348 1638
       sources."concat-map-0.0.1"
1639
+      sources."core-js-pure-3.6.5"
1349 1640
       sources."cross-spawn-7.0.3"
1350 1641
       sources."debug-4.2.0"
1351 1642
       sources."deep-is-0.1.3"
1643
+      sources."define-properties-1.1.3"
1352 1644
       sources."doctrine-3.0.0"
1353 1645
       sources."emoji-regex-8.0.0"
1646
+      sources."es-abstract-1.17.6"
1647
+      sources."es-to-primitive-1.2.1"
1354 1648
       sources."escape-string-regexp-1.0.5"
1355 1649
       sources."eslint-7.2.0"
1650
+      (sources."eslint-plugin-react-7.20.0" // {
1651
+        dependencies = [
1652
+          sources."doctrine-2.1.0"
1653
+        ];
1654
+      })
1356 1655
       sources."eslint-scope-5.1.0"
1357 1656
       sources."eslint-utils-2.0.0"
1358 1657
       sources."eslint-visitor-keys-1.2.0"
... ...
@@ -1375,11 +1674,14 @@ let
1375 1674
       sources."flat-cache-2.0.1"
1376 1675
       sources."flatted-2.0.2"
1377 1676
       sources."fs.realpath-1.0.0"
1677
+      sources."function-bind-1.1.1"
1378 1678
       sources."functional-red-black-tree-1.0.1"
1379 1679
       sources."glob-7.1.6"
1380 1680
       sources."glob-parent-5.1.1"
1381 1681
       sources."globals-12.4.0"
1682
+      sources."has-1.0.3"
1382 1683
       sources."has-flag-3.0.0"
1684
+      sources."has-symbols-1.0.1"
1383 1685
       sources."hoist-non-react-statics-3.3.2"
1384 1686
       sources."iconv-lite-0.4.24"
1385 1687
       sources."ignore-4.0.6"
... ...
@@ -1397,14 +1699,21 @@ let
1397 1699
           sources."supports-color-7.1.0"
1398 1700
         ];
1399 1701
       })
1702
+      sources."internal-slot-1.0.2"
1703
+      sources."is-callable-1.2.0"
1704
+      sources."is-date-object-1.0.2"
1400 1705
       sources."is-extglob-2.1.1"
1401 1706
       sources."is-fullwidth-code-point-3.0.0"
1402 1707
       sources."is-glob-4.0.1"
1708
+      sources."is-regex-1.1.0"
1709
+      sources."is-string-1.0.5"
1710
+      sources."is-symbol-1.0.3"
1403 1711
       sources."isexe-2.0.0"
1404 1712
       sources."js-tokens-4.0.0"
1405 1713
       sources."js-yaml-3.14.0"
1406 1714
       sources."json-schema-traverse-0.4.1"
1407 1715
       sources."json-stable-stringify-without-jsonify-1.0.1"
1716
+      sources."jsx-ast-utils-2.4.1"
1408 1717
       sources."levn-0.4.1"
1409 1718
       sources."lit-jsx-1.0.7"
1410 1719
       sources."lodash-4.17.15"
... ...
@@ -1417,6 +1726,12 @@ let
1417 1726
       sources."mute-stream-0.0.8"
1418 1727
       sources."natural-compare-1.4.0"
1419 1728
       sources."object-assign-4.1.1"
1729
+      sources."object-inspect-1.7.0"
1730
+      sources."object-keys-1.1.1"
1731
+      sources."object.assign-4.1.0"
1732
+      sources."object.entries-1.1.2"
1733
+      sources."object.fromentries-2.0.2"
1734
+      sources."object.values-1.1.1"
1420 1735
       sources."once-1.4.0"
1421 1736
       sources."onetime-5.1.0"
1422 1737
       sources."optionator-0.9.1"
... ...
@@ -1424,6 +1739,7 @@ let
1424 1739
       sources."parent-module-1.0.1"
1425 1740
       sources."path-is-absolute-1.0.1"
1426 1741
       sources."path-key-3.1.1"
1742
+      sources."path-parse-1.0.6"
1427 1743
       sources."prelude-ls-1.2.1"
1428 1744
       sources."progress-2.0.3"
1429 1745
       sources."prop-types-15.7.2"
... ...
@@ -1434,7 +1750,9 @@ let
1434 1750
       sources."react-redux-7.2.0"
1435 1751
       sources."redux-4.0.5"
1436 1752
       sources."regenerator-runtime-0.13.5"
1753
+      sources."regexp.prototype.flags-1.3.0"
1437 1754
       sources."regexpp-3.1.0"
1755
+      sources."resolve-1.17.0"
1438 1756
       sources."resolve-from-4.0.0"
1439 1757
       sources."restore-cursor-3.1.0"
1440 1758
       sources."rimraf-2.6.3"
... ...
@@ -1445,6 +1763,7 @@ let
1445 1763
       sources."semver-7.3.2"
1446 1764
       sources."shebang-command-2.0.0"
1447 1765
       sources."shebang-regex-3.0.0"
1766
+      sources."side-channel-1.0.2"
1448 1767
       sources."signal-exit-3.0.3"
1449 1768
       (sources."slice-ansi-2.1.0" // {
1450 1769
         dependencies = [
... ...
@@ -1453,6 +1772,9 @@ let
1453 1772
       })
1454 1773
       sources."sprintf-js-1.0.3"
1455 1774
       sources."string-width-4.2.0"
1775
+      sources."string.prototype.matchall-4.0.2"
1776
+      sources."string.prototype.trimend-1.0.1"
1777
+      sources."string.prototype.trimstart-1.0.1"
1456 1778
       sources."strip-ansi-6.0.0"
1457 1779
       sources."strip-json-comments-3.1.0"
1458 1780
       sources."supports-color-5.5.0"
... ...
@@ -1478,6 +1800,7 @@ let
1478 1800
       sources."word-wrap-1.2.3"
1479 1801
       sources."wrappy-1.0.2"
1480 1802
       sources."write-1.0.3"
1803
+      sources."xregexp-4.3.0"
1481 1804
     ];
1482 1805
     buildInputs = globalBuildInputs;
1483 1806
     meta = {
1484 1807
new file mode 100644
... ...
@@ -0,0 +1,2 @@
1
+let pkgs = import <nixpkgs> {};
2
+in pkgs.nixBufferBuilders.withPackages [ pkgs.dhall pkgs.dhall-json pkgs.nixfmt ]
0 3
new file mode 100644
... ...
@@ -0,0 +1,17 @@
1
+# This file has been generated by node2nix 1.8.0. Do not edit!
2
+
3
+{pkgs ? import <nixpkgs> {
4
+    inherit system;
5
+  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
6
+
7
+let
8
+  nodeEnv = import ./node-env.nix {
9
+    inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
10
+    inherit nodejs;
11
+    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
12
+  };
13
+in
14
+import ./registry.nix {
15
+  inherit (pkgs) fetchurl fetchgit;
16
+  inherit nodeEnv;
17
+}
0 18
\ No newline at end of file
1 19
new file mode 100644
... ...
@@ -0,0 +1,542 @@
1
+# This file originates from node2nix
2
+
3
+{stdenv, nodejs, python2, utillinux, libtool, runCommand, writeTextFile}:
4
+
5
+let
6
+  python = if nodejs ? python then nodejs.python else python2;
7
+
8
+  # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
9
+  tarWrapper = runCommand "tarWrapper" {} ''
10
+    mkdir -p $out/bin
11
+
12
+    cat > $out/bin/tar <<EOF
13
+    #! ${stdenv.shell} -e
14
+    $(type -p tar) "\$@" --warning=no-unknown-keyword --delay-directory-restore
15
+    EOF
16
+
17
+    chmod +x $out/bin/tar
18
+  '';
19
+
20
+  # Function that generates a TGZ file from a NPM project
21
+  buildNodeSourceDist =
22
+    { name, version, src, ... }:
23
+
24
+    stdenv.mkDerivation {
25
+      name = "node-tarball-${name}-${version}";
26
+      inherit src;
27
+      buildInputs = [ nodejs ];
28
+      buildPhase = ''
29
+        export HOME=$TMPDIR
30
+        tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
31
+      '';
32
+      installPhase = ''
33
+        mkdir -p $out/tarballs
34
+        mv $tgzFile $out/tarballs
35
+        mkdir -p $out/nix-support
36
+        echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
37
+      '';
38
+    };
39
+
40
+  includeDependencies = {dependencies}:
41
+    stdenv.lib.optionalString (dependencies != [])
42
+      (stdenv.lib.concatMapStrings (dependency:
43
+        ''
44
+          # Bundle the dependencies of the package
45
+          mkdir -p node_modules
46
+          cd node_modules
47
+
48
+          # Only include dependencies if they don't exist. They may also be bundled in the package.
49
+          if [ ! -e "${dependency.name}" ]
50
+          then
51
+              ${composePackage dependency}
52
+          fi
53
+
54
+          cd ..
55
+        ''
56
+      ) dependencies);
57
+
58
+  # Recursively composes the dependencies of a package
59
+  composePackage = { name, packageName, src, dependencies ? [], ... }@args:
60
+    builtins.addErrorContext "while evaluating node package '${packageName}'" ''
61
+      DIR=$(pwd)
62
+      cd $TMPDIR
63
+
64
+      unpackFile ${src}
65
+
66
+      # Make the base dir in which the target dependency resides first
67
+      mkdir -p "$(dirname "$DIR/${packageName}")"
68
+
69
+      if [ -f "${src}" ]
70
+      then
71
+          # Figure out what directory has been unpacked
72
+          packageDir="$(find . -maxdepth 1 -type d | tail -1)"
73
+
74
+          # Restore write permissions to make building work
75
+          find "$packageDir" -type d -exec chmod u+x {} \;
76
+          chmod -R u+w "$packageDir"
77
+
78
+          # Move the extracted tarball into the output folder
79
+          mv "$packageDir" "$DIR/${packageName}"
80
+      elif [ -d "${src}" ]
81
+      then
82
+          # Get a stripped name (without hash) of the source directory.
83
+          # On old nixpkgs it's already set internally.
84
+          if [ -z "$strippedName" ]
85
+          then
86
+              strippedName="$(stripHash ${src})"
87
+          fi
88
+
89
+          # Restore write permissions to make building work
90
+          chmod -R u+w "$strippedName"
91
+
92
+          # Move the extracted directory into the output folder
93
+          mv "$strippedName" "$DIR/${packageName}"
94
+      fi
95
+
96
+      # Unset the stripped name to not confuse the next unpack step
97
+      unset strippedName
98
+
99
+      # Include the dependencies of the package
100
+      cd "$DIR/${packageName}"
101
+      ${includeDependencies { inherit dependencies; }}
102
+      cd ..
103
+      ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
104
+    '';
105
+
106
+  pinpointDependencies = {dependencies, production}:
107
+    let
108
+      pinpointDependenciesFromPackageJSON = writeTextFile {
109
+        name = "pinpointDependencies.js";
110
+        text = ''
111
+          var fs = require('fs');
112
+          var path = require('path');
113
+
114
+          function resolveDependencyVersion(location, name) {
115
+              if(location == process.env['NIX_STORE']) {
116
+                  return null;
117
+              } else {
118
+                  var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
119
+
120
+                  if(fs.existsSync(dependencyPackageJSON)) {
121
+                      var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
122
+
123
+                      if(dependencyPackageObj.name == name) {
124
+                          return dependencyPackageObj.version;
125
+                      }
126
+                  } else {
127
+                      return resolveDependencyVersion(path.resolve(location, ".."), name);
128
+                  }
129
+              }
130
+          }
131
+
132
+          function replaceDependencies(dependencies) {
133
+              if(typeof dependencies == "object" && dependencies !== null) {
134
+                  for(var dependency in dependencies) {
135
+                      var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
136
+
137
+                      if(resolvedVersion === null) {
138
+                          process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
139
+                      } else {
140
+                          dependencies[dependency] = resolvedVersion;
141
+                      }
142
+                  }
143
+              }
144
+          }
145
+
146
+          /* Read the package.json configuration */
147
+          var packageObj = JSON.parse(fs.readFileSync('./package.json'));
148
+
149
+          /* Pinpoint all dependencies */
150
+          replaceDependencies(packageObj.dependencies);
151
+          if(process.argv[2] == "development") {
152
+              replaceDependencies(packageObj.devDependencies);
153
+          }
154
+          replaceDependencies(packageObj.optionalDependencies);
155
+
156
+          /* Write the fixed package.json file */
157
+          fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
158
+        '';
159
+      };
160
+    in
161
+    ''
162
+      node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
163
+
164
+      ${stdenv.lib.optionalString (dependencies != [])
165
+        ''
166
+          if [ -d node_modules ]
167
+          then
168
+              cd node_modules
169
+              ${stdenv.lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
170
+              cd ..
171
+          fi
172
+        ''}
173
+    '';
174
+
175
+  # Recursively traverses all dependencies of a package and pinpoints all
176
+  # dependencies in the package.json file to the versions that are actually
177
+  # being used.
178
+
179
+  pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
180
+    ''
181
+      if [ -d "${packageName}" ]
182
+      then
183
+          cd "${packageName}"
184
+          ${pinpointDependencies { inherit dependencies production; }}
185
+          cd ..
186
+          ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
187
+      fi
188
+    '';
189
+
190
+  # Extract the Node.js source code which is used to compile packages with
191
+  # native bindings
192
+  nodeSources = runCommand "node-sources" {} ''
193
+    tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
194
+    mv node-* $out
195
+  '';
196
+
197
+  # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
198
+  addIntegrityFieldsScript = writeTextFile {
199
+    name = "addintegrityfields.js";
200
+    text = ''
201
+      var fs = require('fs');
202
+      var path = require('path');
203
+
204
+      function augmentDependencies(baseDir, dependencies) {
205
+          for(var dependencyName in dependencies) {
206
+              var dependency = dependencies[dependencyName];
207
+
208
+              // Open package.json and augment metadata fields
209
+              var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
210
+              var packageJSONPath = path.join(packageJSONDir, "package.json");
211
+
212
+              if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
213
+                  console.log("Adding metadata fields to: "+packageJSONPath);
214
+                  var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
215
+
216
+                  if(dependency.integrity) {
217
+                      packageObj["_integrity"] = dependency.integrity;
218
+                  } else {
219
+                      packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
220
+                  }
221
+
222
+                  if(dependency.resolved) {
223
+                      packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided
224
+                  } else {
225
+                      packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
226
+                  }
227
+
228
+                  if(dependency.from !== undefined) { // Adopt from property if one has been provided
229
+                      packageObj["_from"] = dependency.from;
230
+                  }
231
+
232
+                  fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
233
+              }
234
+
235
+              // Augment transitive dependencies
236
+              if(dependency.dependencies !== undefined) {
237
+                  augmentDependencies(packageJSONDir, dependency.dependencies);
238
+              }
239
+          }
240
+      }
241
+
242
+      if(fs.existsSync("./package-lock.json")) {
243
+          var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
244
+
245
+          if(packageLock.lockfileVersion !== 1) {
246
+             process.stderr.write("Sorry, I only understand lock file version 1!\n");
247
+             process.exit(1);
248
+          }
249
+
250
+          if(packageLock.dependencies !== undefined) {
251
+              augmentDependencies(".", packageLock.dependencies);
252
+          }
253
+      }
254
+    '';
255
+  };
256
+
257
+  # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
258
+  reconstructPackageLock = writeTextFile {
259
+    name = "addintegrityfields.js";
260
+    text = ''
261
+      var fs = require('fs');
262
+      var path = require('path');
263
+
264
+      var packageObj = JSON.parse(fs.readFileSync("package.json"));
265
+
266
+      var lockObj = {
267
+          name: packageObj.name,
268
+          version: packageObj.version,
269
+          lockfileVersion: 1,
270
+          requires: true,
271
+          dependencies: {}
272
+      };
273
+
274
+      function augmentPackageJSON(filePath, dependencies) {
275
+          var packageJSON = path.join(filePath, "package.json");
276
+          if(fs.existsSync(packageJSON)) {
277
+              var packageObj = JSON.parse(fs.readFileSync(packageJSON));
278
+              dependencies[packageObj.name] = {
279
+                  version: packageObj.version,
280
+                  integrity: "sha1-000000000000000000000000000=",
281
+                  dependencies: {}
282
+              };
283
+              processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
284
+          }
285
+      }
286
+
287
+      function processDependencies(dir, dependencies) {
288
+          if(fs.existsSync(dir)) {
289
+              var files = fs.readdirSync(dir);
290
+
291
+              files.forEach(function(entry) {
292
+                  var filePath = path.join(dir, entry);
293
+                  var stats = fs.statSync(filePath);
294
+
295
+                  if(stats.isDirectory()) {
296
+                      if(entry.substr(0, 1) == "@") {
297
+                          // When we encounter a namespace folder, augment all packages belonging to the scope
298
+                          var pkgFiles = fs.readdirSync(filePath);
299
+
300
+                          pkgFiles.forEach(function(entry) {
301
+                              if(stats.isDirectory()) {
302
+                                  var pkgFilePath = path.join(filePath, entry);
303
+                                  augmentPackageJSON(pkgFilePath, dependencies);
304
+                              }
305
+                          });
306
+                      } else {
307
+                          augmentPackageJSON(filePath, dependencies);
308
+                      }
309
+                  }
310
+              });
311
+          }
312
+      }
313
+
314
+      processDependencies("node_modules", lockObj.dependencies);
315
+
316
+      fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
317
+    '';
318
+  };
319
+
320
+  prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
321
+    let
322
+      forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
323
+    in
324
+    ''
325
+        # Pinpoint the versions of all dependencies to the ones that are actually being used
326
+        echo "pinpointing versions of dependencies..."
327
+        source $pinpointDependenciesScriptPath
328
+
329
+        # Patch the shebangs of the bundled modules to prevent them from
330
+        # calling executables outside the Nix store as much as possible
331
+        patchShebangs .
332
+
333
+        # Deploy the Node.js package by running npm install. Since the
334
+        # dependencies have been provided already by ourselves, it should not
335
+        # attempt to install them again, which is good, because we want to make
336
+        # it Nix's responsibility. If it needs to install any dependencies
337
+        # anyway (e.g. because the dependency parameters are
338
+        # incomplete/incorrect), it fails.
339
+        #
340
+        # The other responsibilities of NPM are kept -- version checks, build
341
+        # steps, postprocessing etc.
342
+
343
+        export HOME=$TMPDIR
344
+        cd "${packageName}"
345
+        runHook preRebuild
346
+
347
+        ${stdenv.lib.optionalString bypassCache ''
348
+          ${stdenv.lib.optionalString reconstructLock ''
349
+            if [ -f package-lock.json ]
350
+            then
351
+                echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
352
+                echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
353
+                rm package-lock.json
354
+            else
355
+                echo "No package-lock.json file found, reconstructing..."
356
+            fi
357
+
358
+            node ${reconstructPackageLock}
359
+          ''}
360
+
361
+          node ${addIntegrityFieldsScript}
362
+        ''}
363
+
364
+        npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
365
+
366
+        if [ "''${dontNpmInstall-}" != "1" ]
367
+        then
368
+            # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
369
+            rm -f npm-shrinkwrap.json
370
+
371
+            npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
372
+        fi
373
+    '';
374
+
375
+  # Builds and composes an NPM package including all its dependencies
376
+  buildNodePackage =
377
+    { name
378
+    , packageName
379
+    , version
380
+    , dependencies ? []
381
+    , buildInputs ? []
382
+    , production ? true
383
+    , npmFlags ? ""
384
+    , dontNpmInstall ? false
385
+    , bypassCache ? false
386
+    , reconstructLock ? false
387
+    , preRebuild ? ""
388
+    , dontStrip ? true
389
+    , unpackPhase ? "true"
390
+    , buildPhase ? "true"
391
+    , ... }@args:
392
+
393
+    let
394
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
395
+    in
396
+    stdenv.mkDerivation ({
397
+      name = "node_${name}-${version}";
398
+      buildInputs = [ tarWrapper python nodejs ]
399
+        ++ stdenv.lib.optional (stdenv.isLinux) utillinux
400
+        ++ stdenv.lib.optional (stdenv.isDarwin) libtool
401
+        ++ buildInputs;
402
+
403
+      inherit nodejs;
404
+
405
+      inherit dontStrip; # Stripping may fail a build for some package deployments
406
+      inherit dontNpmInstall preRebuild unpackPhase buildPhase;
407
+
408
+      compositionScript = composePackage args;
409
+      pinpointDependenciesScript = pinpointDependenciesOfPackage args;
410
+
411
+      passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
412
+
413
+      installPhase = ''
414
+        # Create and enter a root node_modules/ folder
415
+        mkdir -p $out/lib/node_modules
416
+        cd $out/lib/node_modules
417
+
418
+        # Compose the package and all its dependencies
419
+        source $compositionScriptPath
420
+
421
+        ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
422
+
423
+        # Create symlink to the deployed executable folder, if applicable
424
+        if [ -d "$out/lib/node_modules/.bin" ]
425
+        then
426
+            ln -s $out/lib/node_modules/.bin $out/bin
427
+        fi
428
+
429
+        # Create symlinks to the deployed manual page folders, if applicable
430
+        if [ -d "$out/lib/node_modules/${packageName}/man" ]
431
+        then
432
+            mkdir -p $out/share
433
+            for dir in "$out/lib/node_modules/${packageName}/man/"*
434
+            do
435
+                mkdir -p $out/share/man/$(basename "$dir")
436
+                for page in "$dir"/*
437
+                do
438
+                    ln -s $page $out/share/man/$(basename "$dir")
439
+                done
440
+            done
441
+        fi
442
+
443
+        # Run post install hook, if provided
444
+        runHook postInstall
445
+      '';
446
+    } // extraArgs);
447
+
448
+  # Builds a development shell
449
+  buildNodeShell =
450
+    { name
451
+    , packageName
452
+    , version
453
+    , src
454
+    , dependencies ? []
455
+    , buildInputs ? []
456
+    , production ? true
457
+    , npmFlags ? ""
458
+    , dontNpmInstall ? false
459
+    , bypassCache ? false
460
+    , reconstructLock ? false
461
+    , dontStrip ? true
462
+    , unpackPhase ? "true"
463
+    , buildPhase ? "true"
464
+    , ... }@args:
465
+
466
+    let
467
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
468
+
469
+      nodeDependencies = stdenv.mkDerivation ({
470
+        name = "node-dependencies-${name}-${version}";
471
+
472
+        buildInputs = [ tarWrapper python nodejs ]
473
+          ++ stdenv.lib.optional (stdenv.isLinux) utillinux
474
+          ++ stdenv.lib.optional (stdenv.isDarwin) libtool
475
+          ++ buildInputs;
476
+
477
+        inherit dontStrip; # Stripping may fail a build for some package deployments
478
+        inherit dontNpmInstall unpackPhase buildPhase;
479
+
480
+        includeScript = includeDependencies { inherit dependencies; };
481
+        pinpointDependenciesScript = pinpointDependenciesOfPackage args;
482
+
483
+        passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
484
+
485
+        installPhase = ''
486
+          mkdir -p $out/${packageName}
487
+          cd $out/${packageName}
488
+
489
+          source $includeScriptPath
490
+
491
+          # Create fake package.json to make the npm commands work properly
492
+          cp ${src}/package.json .
493
+          chmod 644 package.json
494
+          ${stdenv.lib.optionalString bypassCache ''
495
+            if [ -f ${src}/package-lock.json ]
496
+            then
497
+                cp ${src}/package-lock.json .
498
+            fi
499
+          ''}
500
+
501
+          # Go to the parent folder to make sure that all packages are pinpointed
502
+          cd ..
503
+          ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
504
+
505
+          ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
506
+
507
+          # Expose the executables that were installed
508
+          cd ..
509
+          ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
510
+
511
+          mv ${packageName} lib
512
+          ln -s $out/lib/node_modules/.bin $out/bin
513
+        '';
514
+      } // extraArgs);
515
+    in
516
+    stdenv.mkDerivation {
517
+      name = "node-shell-${name}-${version}";
518
+
519
+      buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
520
+      buildCommand = ''
521
+        mkdir -p $out/bin
522
+        cat > $out/bin/shell <<EOF
523
+        #! ${stdenv.shell} -e
524
+        $shellHook
525
+        exec ${stdenv.shell}
526
+        EOF
527
+        chmod +x $out/bin/shell
528
+      '';
529
+
530
+      # Provide the dependencies in a development shell through the NODE_PATH environment variable
531
+      inherit nodeDependencies;
532
+      shellHook = stdenv.lib.optionalString (dependencies != []) ''
533
+        export NODE_PATH=${nodeDependencies}/lib/node_modules
534
+        export PATH="${nodeDependencies}/bin:$PATH"
535
+      '';
536
+    };
537
+in
538
+{
539
+  buildNodeSourceDist = stdenv.lib.makeOverridable buildNodeSourceDist;
540
+  buildNodePackage = stdenv.lib.makeOverridable buildNodePackage;
541
+  buildNodeShell = stdenv.lib.makeOverridable buildNodeShell;
542
+}
0 543
new file mode 100644
... ...
@@ -0,0 +1,181 @@
1
+# This file has been generated by node2nix 1.8.0. Do not edit!
2
+
3
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
+
5
+let
6
+  sources = {
7
+    "@babel/runtime-7.10.2" = {
8
+      name = "_at_babel_slash_runtime";
9
+      packageName = "@babel/runtime";
10
+      version = "7.10.2";
11
+      src = fetchurl {
12
+        url = "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz";
13
+        sha512 = "6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==";
14
+      };
15
+    };
16
+    "hoist-non-react-statics-3.3.2" = {
17
+      name = "hoist-non-react-statics";
18
+      packageName = "hoist-non-react-statics";
19
+      version = "3.3.2";
20
+      src = fetchurl {
21
+        url = "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz";
22
+        sha512 = "/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==";
23
+      };
24
+    };
25
+    "js-tokens-4.0.0" = {
26
+      name = "js-tokens";
27
+      packageName = "js-tokens";
28
+      version = "4.0.0";
29
+      src = fetchurl {
30
+        url = "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz";
31
+        sha512 = "RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==";
32
+      };
33
+    };
34
+    "lit-jsx-1.0.7" = {
35
+      name = "lit-jsx";
36
+      packageName = "lit-jsx";
37
+      version = "1.0.7";
38
+      src = fetchurl {
39
+        url = "https://registry.npmjs.org/lit-jsx/-/lit-jsx-1.0.7.tgz";
40
+        sha512 = "Zea8EYE2Ps2yk87i5E8LeHmZPcA0HdOsaA5SsUPZPkenaPWhvDchOvlTV5+/OO6ZhrVjUCEhYSDMNz6TDxAkcQ==";
41
+      };
42
+    };
43
+    "loose-envify-1.4.0" = {
44
+      name = "loose-envify";
45
+      packageName = "loose-envify";
46
+      version = "1.4.0";
47
+      src = fetchurl {
48
+        url = "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz";
49
+        sha512 = "lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==";
50
+      };
51
+    };
52
+    "object-assign-4.1.1" = {
53
+      name = "object-assign";
54
+      packageName = "object-assign";
55
+      version = "4.1.1";
56
+      src = fetchurl {
57
+        url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
58
+        sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
59
+      };
60
+    };
61
+    "prop-types-15.7.2" = {
62
+      name = "prop-types";
63
+      packageName = "prop-types";
64
+      version = "15.7.2";
65
+      src = fetchurl {
66
+        url = "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz";
67
+        sha512 = "8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==";
68
+      };
69
+    };
70
+    "ramda-0.26.1" = {
71
+      name = "ramda";
72
+      packageName = "ramda";
73
+      version = "0.26.1";
74
+      src = fetchurl {
75
+        url = "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz";
76
+        sha512 = "hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==";
77
+      };
78
+    };
79
+    "react-16.13.1" = {
80
+      name = "react";
81
+      packageName = "react";
82
+      version = "16.13.1";
83
+      src = fetchurl {
84
+        url = "https://registry.npmjs.org/react/-/react-16.13.1.tgz";
85
+        sha512 = "YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==";
86
+      };
87
+    };
88
+    "react-is-16.13.1" = {
89
+      name = "react-is";
90
+      packageName = "react-is";
91
+      version = "16.13.1";
92
+      src = fetchurl {
93
+        url = "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz";
94
+        sha512 = "24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==";
95
+      };
96
+    };
97
+    "react-redux-7.2.0" = {
98
+      name = "react-redux";
99
+      packageName = "react-redux";
100
+      version = "7.2.0";
101
+      src = fetchurl {
102
+        url = "https://registry.npmjs.org/react-redux/-/react-redux-7.2.0.tgz";
103
+        sha512 = "EvCAZYGfOLqwV7gh849xy9/pt55rJXPwmYvI4lilPM5rUT/1NxuuN59ipdBksRVSvz0KInbPnp4IfoXJXCqiDA==";
104
+      };
105
+    };
106
+    "redux-4.0.5" = {
107
+      name = "redux";
108
+      packageName = "redux";
109
+      version = "4.0.5";
110
+      src = fetchurl {
111
+        url = "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz";
112
+        sha512 = "VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==";
113
+      };
114
+    };
115
+    "regenerator-runtime-0.13.5" = {
116
+      name = "regenerator-runtime";
117
+      packageName = "regenerator-runtime";
118
+      version = "0.13.5";
119
+      src = fetchurl {
120
+        url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz";
121
+        sha512 = "ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==";
122
+      };
123
+    };
124
+    "routedux-1.0.4" = {
125
+      name = "routedux";
126
+      packageName = "routedux";
127
+      version = "1.0.4";
128
+      src = fetchurl {
129
+        url = "https://registry.npmjs.org/routedux/-/routedux-1.0.4.tgz";
130
+        sha512 = "th5tf5oE+qVs7Fa451Kbf1I5lEltniq3zMg+ntcfxW56x2XNPMg4BR8F7khx1o3tc/iq9hhAJHldae2Xte1AaA==";
131
+      };
132
+    };
133
+    "symbol-observable-1.2.0" = {
134
+      name = "symbol-observable";
135
+      packageName = "symbol-observable";
136
+      version = "1.2.0";
137
+      src = fetchurl {
138
+        url = "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz";
139
+        sha512 = "e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==";
140
+      };
141
+    };
142
+  };
143
+  args = {
144
+    name = "transcribe-server";
145
+    packageName = "transcribe-server";
146
+    version = "1.0.0";
147
+    src = ./..;
148
+    dependencies = [
149
+      sources."@babel/runtime-7.10.2"
150
+      sources."hoist-non-react-statics-3.3.2"
151
+      sources."js-tokens-4.0.0"
152
+      sources."lit-jsx-1.0.7"
153
+      sources."loose-envify-1.4.0"
154
+      sources."object-assign-4.1.1"
155
+      sources."prop-types-15.7.2"
156
+      sources."ramda-0.26.1"
157
+      sources."react-16.13.1"
158
+      sources."react-is-16.13.1"
159
+      sources."react-redux-7.2.0"
160
+      sources."redux-4.0.5"
161
+      sources."regenerator-runtime-0.13.5"
162
+      sources."routedux-1.0.4"
163
+      sources."symbol-observable-1.2.0"
164
+    ];
165
+    buildInputs = globalBuildInputs;
166
+    meta = {
167
+      description = "";
168
+      license = "ISC";
169
+    };
170
+    production = true;
171
+    bypassCache = true;
172
+    reconstructLock = true;
173
+  };
174
+in
175
+{
176
+  args = args;
177
+  sources = sources;
178
+  tarball = nodeEnv.buildNodeSourceDist args;
179
+  package = nodeEnv.buildNodePackage args;
180
+  shell = nodeEnv.buildNodeShell args;
181
+}
0 182
\ No newline at end of file
1 183
new file mode 100644
... ...
@@ -0,0 +1,23 @@
1
+{pkgs ? import <nixpkgs> { inherit system; },
2
+system ? builtins.currentSystem,
3
+nodejs ? pkgs."nodejs-12_x",
4
+globalBuildInputs ? []}:
5
+
6
+let
7
+  nodeEnv = {env} : import (env + "/node-env.nix") {
8
+    inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
9
+    inherit nodejs;
10
+    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
11
+  };
12
+  nodeRegistry = {env} : import (env + "/registry.nix") {
13
+    inherit (pkgs) fetchurl fetchgit;
14
+    nodeEnv = nodeEnv {env = env;};
15
+    globalBuildInputs = globalBuildInputs;
16
+  };
17
+  dev = nodeRegistry {env = ./dev;};
18
+in
19
+{
20
+  dev = dev;
21
+  shell = dev.shell;
22
+  prod = nodeRegistry {env = ./prod;};
23
+}