git.iko.soy/reflex-route-simple
on tmp help sign in
reflex-route-simple/default.nix
88 lines 2.3 kB history raw
1{ sources ? import ./nix/sources.nix
2, haskellNix ? import sources.haskellNix { inherit system; }
3, pkgsSrc ? import haskellNix.sources.nixpkgs-2105
4, pkgs ? pkgsSrc (haskellNix.nixpkgsArgs // { inherit system; })
5, nix-filter ? import sources.nix-filter
6, system ? builtins.currentSystem
7, prod ? false
8, ghcjs-optimizer ? import sources.ghcjs-optimizer {
9 inherit pkgs;
10 fileExtentionsToZopfli = [ ];
11 jsToOptimize = { "all.js" = "bin/*/all.js"; };
12 filesToCopy = {
13 "index.html" = sources.ghcjs-optimizer + "/index.html";
14 };
15 copyInsteadOfOptimizeJs = !prod;
16 }
17}:
18let
19 insaneOptimizationFlags = [
20 "-O2"
21 "-fexpose-all-unfoldings"
22 "-fspecialise-aggressively"
23 ];
24 addLocalOptions = x:
25 if prod then x // {
26 ghcOptions = [ "-Werror" ] ++ insaneOptimizationFlags;
27 }
28 else x // {
29 ghcOptions = [ "-O0" ];
30 };
32 hsPkgs = pkgs.haskell-nix.cabalProject {
33 src = nix-filter {
34 root = ./.;
35 name = "reflex-route-simple";
36 include = [
37 ./reflex-route-simple.cabal
38 ./cabal.project
39 ];
40 };
42 modules = [
43 {
44 ghcOptions = insaneOptimizationFlags;
45 dontStrip = false;
46 dontPatchELF = false;
47 enableDeadCodeElimination = true;
48 packages.reflex-route-simple = addLocalOptions {
49 src = nix-filter {
50 root = ./.;
51 name = "reflex-route-simple";
52 include = [
53 (nix-filter.inDirectory ./src)
54 (nix-filter.inDirectory ./app)
55 ./reflex-route-simple.cabal
56 ./cabal.project
57 ];
58 };
59 flags.example = true;
60 };
61 }
62 ];
64 index-state = "2021-10-08T23:58:38Z";
65 compiler-nix-name = "ghc8107";
66 };
67 example = ghcjs-optimizer
68 hsPkgs.projectCross.ghcjs.hsPkgs.reflex-route-simple.components.exes.reflex-route-simple-example;
69 caddyfile = pkgs.writeText "Caddyfile" ''
70 {
71 admin off
72 }
73 http://:8000 {
74 route {
75 header Cache-Control no-cache
76 file_server {
77 root ${example}
78 }
79 }
80 '';
81in
82hsPkgs // {
83 run-example = pkgs.writeScript "run-caddy.sh" ''
84 #!${pkgs.bash}/bin/bash
85 ${pkgs.caddy}/bin/caddy run --config ${caddyfile} --adapter caddyfile
86 '';
87 inherit example;