aboutsummaryrefslogtreecommitdiff
path: root/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'default.nix')
-rw-r--r--default.nix53
1 files changed, 53 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