aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--default.nix53
-rw-r--r--elm-srcs.nix52
-rw-r--r--registry.datbin0 -> 102703 bytes
l---------result1
4 files changed, 106 insertions, 0 deletions
diff --git a/default.nix b/default.nix
new file mode 100644
index 0000000..a53d987
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,53 @@
1{ nixpkgs ? <nixpkgs>
2, config ? {}
3}:
4
5with (import nixpkgs config);
6
7let
8 mkDerivation =
9 { srcs ? ./elm-srcs.nix
10 , src
11 , name
12 , srcdir ? "./src"
13 , targets ? []
14 , registryDat ? ./registry.dat
15 , outputJavaScript ? false
16 }:
17 stdenv.mkDerivation {
18 inherit name src;
19
20 buildInputs = [ elmPackages.elm ]
21 ++ lib.optional outputJavaScript nodePackages.uglify-js;
22
23 buildPhase = pkgs.elmPackages.fetchElmDeps {
24 elmPackages = import srcs;
25 elmVersion = "0.19.1";
26 inherit registryDat;
27 };
28
29 installPhase = let
30 elmfile = module: "${srcdir}/${builtins.replaceStrings ["."] ["/"] module}.elm";
31 extension = if outputJavaScript then "js" else "html";
32 in ''
33 mkdir -p $out/share/doc
34 ${lib.concatStrings (map (module: ''
35 echo "compiling ${elmfile module}"
36 elm make ${elmfile module} --optimize --output $out/${module}.${extension}
37 ${lib.optionalString outputJavaScript ''
38 echo "minifying ${elmfile module}"
39 uglifyjs $out/${module}.${extension} --compress 'pure_funcs="F2,F3,F4,F5,F6,F7,F8,F9,A2,A3,A4,A5,A6,A7,A8,A9",pure_getters,keep_fargs=false,unsafe_comps,unsafe' \
40 | uglifyjs --mangle --output $out/${module}.min.${extension}
41 ''}
42 '') targets)}
43 '';
44 };
45in mkDerivation {
46 name = "typr-v0.1.0";
47 srcs = ./elm-srcs.nix;
48 src = ./.;
49 targets = ["Main"];
50 srcdir = "./src";
51 outputJavaScript = false;
52}
53
diff --git a/elm-srcs.nix b/elm-srcs.nix
new file mode 100644
index 0000000..1962dc7
--- /dev/null
+++ b/elm-srcs.nix
@@ -0,0 +1,52 @@
1{
2
3 "elm/html" = {
4 sha256 = "1n3gpzmpqqdsldys4ipgyl1zacn0kbpc3g4v3hdpiyfjlgh8bf3k";
5 version = "1.0.0";
6 };
7
8 "elm/browser" = {
9 sha256 = "0nagb9ajacxbbg985r4k9h0jadqpp0gp84nm94kcgbr5sf8i9x13";
10 version = "1.0.2";
11 };
12
13 "rtfeldman/elm-css" = {
14 sha256 = "0nxiyxyw3kw55whkpwhrcgc0dr6a8zlm2nqvsaqdw6mzkykg0ba6";
15 version = "16.1.0";
16 };
17
18 "elm/core" = {
19 sha256 = "19w0iisdd66ywjayyga4kv2p1v9rxzqjaxhckp8ni6n8i0fb2dvf";
20 version = "1.0.5";
21 };
22
23 "elm/random" = {
24 sha256 = "138n2455wdjwa657w6sjq18wx2r0k60ibpc4frhbqr50sncxrfdl";
25 version = "1.0.0";
26 };
27
28 "elm/time" = {
29 sha256 = "0vch7i86vn0x8b850w1p69vplll1bnbkp8s383z7pinyg94cm2z1";
30 version = "1.0.0";
31 };
32
33 "elm/json" = {
34 sha256 = "0kjwrz195z84kwywaxhhlnpl3p251qlbm5iz6byd6jky2crmyqyh";
35 version = "1.1.3";
36 };
37
38 "rtfeldman/elm-hex" = {
39 sha256 = "1y0aa16asvwdqmgbskh5iba6psp43lkcjjw9mgzj3gsrg33lp00d";
40 version = "1.0.0";
41 };
42
43 "elm/url" = {
44 sha256 = "0av8x5syid40sgpl5vd7pry2rq0q4pga28b4yykn9gd9v12rs3l4";
45 version = "1.0.0";
46 };
47
48 "elm/virtual-dom" = {
49 sha256 = "0q1v5gi4g336bzz1lgwpn5b1639lrn63d8y6k6pimcyismp2i1yg";
50 version = "1.0.2";
51 };
52}
diff --git a/registry.dat b/registry.dat
new file mode 100644
index 0000000..1810bbc
--- /dev/null
+++ b/registry.dat
Binary files differ
diff --git a/result b/result
new file mode 120000
index 0000000..48110b3
--- /dev/null
+++ b/result
@@ -0,0 +1 @@
/nix/store/4jx7b5jjis6cls9a817i06n9snfwx5zm-typr-v0.1.0 \ No newline at end of file