diff options
author | Akshay <[email protected]> | 2020-11-23 14:12:47 +0000 |
---|---|---|
committer | Akshay <[email protected]> | 2020-11-23 14:12:47 +0000 |
commit | 7b3ce3dd180d07fed0130b0073eb2d50892565fa (patch) | |
tree | ad5893c3073d1e7842ae83c21079350373242d9b | |
parent | 9cf064178a5e7405de948599d207c1b3a6a3d5a1 (diff) |
nixify
-rw-r--r-- | default.nix | 53 | ||||
-rw-r--r-- | elm-srcs.nix | 52 | ||||
-rw-r--r-- | registry.dat | bin | 0 -> 102703 bytes | |||
l--------- | result | 1 |
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 | |||
5 | with (import nixpkgs config); | ||
6 | |||
7 | let | ||
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 | }; | ||
45 | in 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 | |||
@@ -0,0 +1 @@ | |||
/nix/store/4jx7b5jjis6cls9a817i06n9snfwx5zm-typr-v0.1.0 \ No newline at end of file | |||