git.iko.soy/typeable/octopod
on master help sign in
typeable/octopod/dev/default.nix
220 lines 5.3 kB history raw
1{ pkgs ? hsPkgs.pkgs
2, sources ? import ../nix/sources.nix
3, nix-filter ? import sources.nix-filter
4, hsPkgs ? import ./.. { inherit prod system; }
5, migrations ? ../migrations
6, octopod-css ? import ../octopod-css { inherit pkgsSrc; }
7, pkgsSrc ? hsPkgs.pkgsSrc
8, prod ? false
9, system ? builtins.currentSystem
10}:
11let frontendConfig = pkgs.writeTextDir "config.json" ''
12 {
13 "app_url": "http://localhost:8000",
14 "ws_url": "ws://localhost:4020",
15 "app_auth": "",
16 "kubernetes_dashboard_url_template": "https://echo-url.github.io/#"
17 }
18'';
19in
21 frontend =
22 let
23 frontend = hsPkgs.octopod-frontend-pretty;
25 caddyConfig = pkgs.writeText "caddy-config" ''
26 http://localhost:8000
28 header Cache-Control no-cache
30 reverse_proxy /api/* localhost:3002
32 file_server /config.json {
33 root ${frontendConfig}
34 }
36 file_server {
37 root ${frontend}
38 }
40 log {
41 output stdout
42 format single_field common_log
43 }
44 '';
46 caddyRun = pkgs.writeScript "run-caddy.sh" ''
47 #!${pkgs.bash}/bin/bash
49 ${pkgs.caddy}/bin/caddy run --config ${caddyConfig} --adapter caddyfile
50 '';
51 in
52 caddyRun;
54 caddyForGhcid =
55 let
56 caddyConfig = pkgs.writeText "caddy-config" ''
57 http://localhost:8000
59 header Cache-Control no-cache
61 reverse_proxy /api/* localhost:3002
63 @notStatic {
64 not file {
65 root ${octopod-css}
66 }
67 not path /config.json
68 }
70 reverse_proxy @notStatic localhost:3003
72 file_server /config.json {
73 root ${frontendConfig}
74 }
76 file_server {
77 root ${octopod-css}
78 }
80 log {
81 output stdout
82 format single_field common_log
83 }
84 '';
86 caddyRun = pkgs.writeScript "run-caddy.sh" ''
87 #!${pkgs.bash}/bin/bash
89 ${pkgs.caddy}/bin/caddy run --config ${caddyConfig} --adapter caddyfile
90 '';
91 in
92 caddyRun;
94 backend =
95 let
96 echoScript = pkgs.writeScript "echo.sh" ''
97 #!${pkgs.bash}/bin/bash
99 echo $0 $@
100 exit 0
101 '';
103 failScript = pkgs.writeScript "fail.sh" ''
104 #!${pkgs.bash}/bin/bash
106 echo "You did something wrong :("
107 echo "You did something wrong twice :("
109 1>&2 echo "You did something wrong, but you shouldn't see this."
111 exit 1
112 '';
114 infoScript = pkgs.writeScript "info.sh" ''
115 #!${pkgs.bash}/bin/bash
117 sleep 4
119 echo "foo.vat1.fjij.key1,"
121 for i in {1..10}
122 do
123 for j in {1..10}
124 do
125 echo "foo.vat$i.fjij.key$j,value"
126 done
127 done
129 for i in {1..10}
130 do
131 echo "fjij.key$i,value"
132 done
134 exit 0
135 '';
136 smallInfoScript = pkgs.writeScript "info.sh" ''
137 #!${pkgs.bash}/bin/bash
139 sleep 4
141 for i in {1..10}
142 do
143 echo "fjij.key$i,value"
144 done
146 exit 0
147 '';
149 keysScript = pkgs.writeScript "keys.sh" ''
150 #!${pkgs.bash}/bin/bash
152 sleep 4
154 for i in {1..10}
155 do
156 echo "foo.vat.fkijf.fjij.key$i"
157 done
158 for i in {1..10}
159 do
160 echo "foo.vat.fjij.key$i"
161 done
163 for i in {1..10}
164 do
165 echo "fjij.key$i"
166 done
168 exit 0
169 '';
171 writeScript = pkgs.writeScript "write.sh" ''
172 #!${pkgs.bash}/bin/bash
174 #!/bin/bash
176 echo $0 $@ >> ./tmp/calls.txt
177 exit 0
178 '';
180 runBackend = pkgs.writeScript "run-backend.sh" ''
181 #!${pkgs.bash}/bin/bash
183 ${pkgs.sqitchPg}/bin/sqitch deploy --chdir ${migrations} -t postgresql://octopod:octopod@localhost:5432/octopod
185 export PROJECT_NAME="Example Project"
186 export BASE_DOMAIN=octopod.example.com
187 export NAMESPACE=deployment
188 export ARCHIVE_RETENTION=60
189 export STATUS_UPDATE_TIMEOUT=600
190 export CREATION_COMMAND=${echoScript}
191 export UPDATE_COMMAND=${echoScript}
192 export UPDATE_ENVS_COMMAND=${echoScript}
193 export ARCHIVE_COMMAND=${echoScript}
194 export CHECKING_COMMAND=${echoScript}
195 export CLEANUP_COMMAND=${echoScript}
196 export ARCHIVE_CHECKING_COMMAND=${echoScript}
197 export CONFIG_CHECKING_COMMAND=${failScript}
198 export INFO_COMMAND=${smallInfoScript}
199 export NOTIFICATION_COMMAND=${writeScript}
200 export DEPLOYMENT_CONFIG_COMMAND=${infoScript}
201 export DEPLOYMENT_KEYS_COMMAND=${keysScript}
202 export APPLICATION_CONFIG_COMMAND=${infoScript}
203 export APPLICATION_KEYS_COMMAND=${keysScript}
204 export UNARCHIVE_COMMAND=${writeScript}
205 export POWER_AUTHORIZATION_HEADER="123"
206 export CACHE_INVALIDATION_TIME="60"
207 export CACHE_UPDATE_TIME="20"
208 export CONTROL_SCRIPT_TIMEOUT="10"
209 export DEBUG=true
210 export PROD_LOGS=false
211 ${hsPkgs.octopod-backend.components.exes.octopod-exe}/bin/octopod-exe \
212 --port 4443 \
213 --ui-port 3002 \
214 --ws-port 4020 \
215 --db "host='127.0.0.1' port=5432 user='octopod' password='octopod'" \
216 --db-pool-size 10
217 '';
218 in
219 runBackend;