aboutsummaryrefslogtreecommitdiff
path: root/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'default.nix')
-rw-r--r--default.nix50
1 files changed, 50 insertions, 0 deletions
diff --git a/default.nix b/default.nix
new file mode 100644
index 0000000..54ebd67
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,50 @@
+{ nixpkgs ? <nixpkgs>
+, config ? {}
+}:
+
+with (import nixpkgs config);
+
+let
+ mkDerivation =
+ { srcs ? ./elm-srcs.nix
+ , src
+ , name
+ , srcdir ? "./src"
+ , targets ? []
+ , registryDat ? ./registry.dat
+ , outputJavaScript ? true
+ }:
+ stdenv.mkDerivation {
+ inherit name src;
+
+ buildInputs = [ elmPackages.elm ];
+
+ buildPhase = pkgs.elmPackages.fetchElmDeps {
+ elmPackages = import srcs;
+ elmVersion = "0.19.1";
+ inherit registryDat;
+ };
+
+ installPhase = let
+ elmfile = module: "${srcdir}/${builtins.replaceStrings ["."] ["/"] module}.elm";
+ extension = if outputJavaScript then "js" else "html";
+ in ''
+ mkdir -p $out/share/doc
+ ${lib.concatStrings (map (module: ''
+ echo "compiling ${elmfile module}"
+ elm make ${elmfile module} --output $out/${module}.${extension}
+ '') targets)}
+ cp *.html $out
+ cp *.css $out
+ '';
+ };
+in mkDerivation {
+ name = "picarones";
+
+ srcs = ./elm-srcs.nix;
+ src = ./.;
+ targets = ["Main"];
+ srcdir = "./src";
+ outputJavaScript = true;
+}
+