Dendritic Nix - Community-driven Nix distribution based on the Dendritic pattern.
at main 72 lines 2.2 kB view raw
1let 2 path_ = "dev/book/theme/elm.js"; 3 main = "src/Search.elm src/Results.elm"; 4in 5{ 6 gitignore = "elm-stuff"; 7 perSystem = 8 { pkgs, ... }: 9 let 10 elm_js = pkgs.stdenvNoCC.mkDerivation { 11 name = "elm-builds"; 12 src = ./../elm; 13 buildInputs = [ 14 pkgs.uglify-js 15 pkgs.elmPackages.elm 16 pkgs.elmPackages.elm-test 17 ]; 18 postUnpack = ( 19 pkgs.elmPackages.fetchElmDeps { 20 elmVersion = (builtins.fromJSON (builtins.readFile ./../elm/elm.json)).elm-version; 21 elmPackages = import ./../elm/elm-srcs.nix; 22 registryDat = ./../elm/registry.dat; 23 } 24 ); 25 buildPhase = '' 26 mkdir -p $out 27 elm make --optimize --output $out/elm.js ${main} 28 uglifyjs $out/elm.js --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' | uglifyjs --mangle --output $out/elm.min.js 29 ''; 30 doCheck = true; 31 checkPhase = '' 32 elm-test 33 ''; 34 }; 35 in 36 { 37 treefmt.programs.elm-format.enable = true; 38 treefmt.settings.global.excludes = [ 39 path_ 40 "dev/elm/elm-stuff/*" 41 "dev/elm/registry.dat" 42 ]; 43 checks.elm_tests = elm_js; 44 files.files = [ 45 { 46 inherit path_; 47 drv = pkgs.writers.writeText "elm.js" (builtins.readFile "${elm_js}/elm.min.js"); 48 } 49 ]; 50 devshells.default.packages = [ 51 pkgs.elmPackages.elm 52 pkgs.elmPackages.elm-test 53 ]; 54 devshells.default.commands = [ 55 { 56 name = "elm-build"; 57 help = "compile elm debug mode"; 58 command = "cd dev/elm; elm make --debug --output ../../${path_} ${main} \"$@\" "; 59 } 60 { 61 name = "elm-check"; 62 help = "run elm tests"; 63 command = "cd dev/elm; ${pkgs.elmPackages.elm-test}/bin/elm-test \"$@\""; 64 } 65 { 66 name = "elm-registry"; 67 help = "use elm2nix to regen dependencies registry for nix"; 68 command = "cd dev/elm; ${pkgs.elm2nix}/bin/elm2nix convert > elm-srcs.nix && ${pkgs.elm2nix}/bin/elm2nix snapshot"; 69 } 70 ]; 71 }; 72}