aboutsummaryrefslogtreecommitdiff
path: root/nixops/modules/websites/tellesflorian
diff options
context:
space:
mode:
Diffstat (limited to 'nixops/modules/websites/tellesflorian')
-rw-r--r--nixops/modules/websites/tellesflorian/default.nix14
-rw-r--r--nixops/modules/websites/tellesflorian/php-packages.nix389
-rw-r--r--nixops/modules/websites/tellesflorian/tellesflorian.json14
-rw-r--r--nixops/modules/websites/tellesflorian/tellesflorian.nix299
4 files changed, 146 insertions, 570 deletions
diff --git a/nixops/modules/websites/tellesflorian/default.nix b/nixops/modules/websites/tellesflorian/default.nix
index f86b0c5..381476c 100644
--- a/nixops/modules/websites/tellesflorian/default.nix
+++ b/nixops/modules/websites/tellesflorian/default.nix
@@ -1,13 +1,13 @@
1{ lib, pkgs, config, myconfig, mylibs, ... }: 1{ lib, pkgs, config, myconfig, mylibs, ... }:
2let 2let
3 adminer = pkgs.callPackage ../commons/adminer.nix {}; 3 adminer = pkgs.callPackage ../commons/adminer.nix {};
4 4
5 tellesflorian = pkgs.callPackage ./tellesflorian.nix { inherit (mylibs) fetchedGitPrivate; }; 5 tellesflorian_dev = pkgs.callPackage ./tellesflorian.nix {
6 tellesflorian_dev = tellesflorian { 6 inherit (pkgs.private.webapps) tellesflorian;
7 config = myconfig.env.websites.tellesflorian.integration; 7 config = myconfig.env.websites.tellesflorian.integration;
8 }; 8 };
9 9
10 cfg = config.services.myWebsites.TellesFlorian; 10 cfg = config.services.myWebsites.TellesFlorian;
11in { 11in {
12 options.services.myWebsites.TellesFlorian = { 12 options.services.myWebsites.TellesFlorian = {
13 integration = { 13 integration = {
@@ -24,7 +24,7 @@ in {
24 system.activationScripts.tellesflorian_dev = tellesflorian_dev.activationScript; 24 system.activationScripts.tellesflorian_dev = tellesflorian_dev.activationScript;
25 system.extraSystemBuilderCmds = '' 25 system.extraSystemBuilderCmds = ''
26 mkdir -p $out/webapps 26 mkdir -p $out/webapps
27 ln -s ${tellesflorian_dev.webRoot} $out/webapps/${tellesflorian_dev.apache.webappName} 27 ln -s ${tellesflorian_dev.app.webRoot} $out/webapps/${tellesflorian_dev.apache.webappName}
28 ''; 28 '';
29 services.myWebsites.integration.modules = adminer.apache.modules ++ tellesflorian_dev.apache.modules; 29 services.myWebsites.integration.modules = adminer.apache.modules ++ tellesflorian_dev.apache.modules;
30 services.myWebsites.integration.vhostConfs.tellesflorian = { 30 services.myWebsites.integration.vhostConfs.tellesflorian = {
diff --git a/nixops/modules/websites/tellesflorian/php-packages.nix b/nixops/modules/websites/tellesflorian/php-packages.nix
deleted file mode 100644
index 0c7e00c..0000000
--- a/nixops/modules/websites/tellesflorian/php-packages.nix
+++ /dev/null
@@ -1,389 +0,0 @@
1# Generated with composer2nix and adapted to return only the list of
2# packages
3{ composerEnv, fetchurl }:
4{
5 packages = {
6 "composer/ca-bundle" = {
7 targetDir = "";
8 src = composerEnv.buildZipPackage {
9 name = "composer-ca-bundle-943b2c4fcad1ef178d16a713c2468bf7e579c288";
10 src = fetchurl {
11 url = https://api.github.com/repos/composer/ca-bundle/zipball/943b2c4fcad1ef178d16a713c2468bf7e579c288;
12 sha256 = "1gljia7akifp57w4rjzyh1km23kwymmvglz0mgafdgqzczcw0m6w";
13 };
14 };
15 };
16 "doctrine/annotations" = {
17 targetDir = "";
18 src = composerEnv.buildZipPackage {
19 name = "doctrine-annotations-f25c8aab83e0c3e976fd7d19875f198ccf2f7535";
20 src = fetchurl {
21 url = https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535;
22 sha256 = "08vm22fqq8r4bg2fk06y4inqnc8x0yfmsss28w5ra2011x2phq4z";
23 };
24 };
25 };
26 "doctrine/cache" = {
27 targetDir = "";
28 src = composerEnv.buildZipPackage {
29 name = "doctrine-cache-eb152c5100571c7a45470ff2a35095ab3f3b900b";
30 src = fetchurl {
31 url = https://api.github.com/repos/doctrine/cache/zipball/eb152c5100571c7a45470ff2a35095ab3f3b900b;
32 sha256 = "0iq0qqv1smlqz63jhj2fpjy54c5dwfwxyf5c89iky6i0yb81gwyd";
33 };
34 };
35 };
36 "doctrine/collections" = {
37 targetDir = "";
38 src = composerEnv.buildZipPackage {
39 name = "doctrine-collections-6c1e4eef75f310ea1b3e30945e9f06e652128b8a";
40 src = fetchurl {
41 url = https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a;
42 sha256 = "1dkxr2vjycykpcnnmq68rcnn1ww0kbpizd5pxxm6x9i2ilj8cbn7";
43 };
44 };
45 };
46 "doctrine/common" = {
47 targetDir = "";
48 src = composerEnv.buildZipPackage {
49 name = "doctrine-common-7bce00698899aa2c06fe7365c76e4d78ddb15fa3";
50 src = fetchurl {
51 url = https://api.github.com/repos/doctrine/common/zipball/7bce00698899aa2c06fe7365c76e4d78ddb15fa3;
52 sha256 = "12yizcsxsbhhi8hwaik4zalr12n5nxbpld05zygqhx6miyr92jyd";
53 };
54 };
55 };
56 "doctrine/dbal" = {
57 targetDir = "";
58 src = composerEnv.buildZipPackage {
59 name = "doctrine-dbal-729340d8d1eec8f01bff708e12e449a3415af873";
60 src = fetchurl {
61 url = https://api.github.com/repos/doctrine/dbal/zipball/729340d8d1eec8f01bff708e12e449a3415af873;
62 sha256 = "184p8h0n6mcm0y6vfyh0z6qcxmmf8h5z4vdvxd4ycmx0531lnhj3";
63 };
64 };
65 };
66 "doctrine/doctrine-bundle" = {
67 targetDir = "";
68 src = composerEnv.buildZipPackage {
69 name = "doctrine-doctrine-bundle-eb6e4fb904a459be28872765ab6e2d246aac7c87";
70 src = fetchurl {
71 url = https://api.github.com/repos/doctrine/DoctrineBundle/zipball/eb6e4fb904a459be28872765ab6e2d246aac7c87;
72 sha256 = "0kkisgyblc9hf9x3zpbb1wif51fa8mi6svyd44nls38k9k93dp17";
73 };
74 };
75 };
76 "doctrine/doctrine-cache-bundle" = {
77 targetDir = "";
78 src = composerEnv.buildZipPackage {
79 name = "doctrine-doctrine-cache-bundle-9baecbd6bfdd1123b0cf8c1b88fee0170a84ddd1";
80 src = fetchurl {
81 url = https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/9baecbd6bfdd1123b0cf8c1b88fee0170a84ddd1;
82 sha256 = "08bqz18vk4673pnm2r2pcph6pdchc36zajnma1p9c6dp21sv7iki";
83 };
84 };
85 };
86 "doctrine/inflector" = {
87 targetDir = "";
88 src = composerEnv.buildZipPackage {
89 name = "doctrine-inflector-90b2128806bfde671b6952ab8bea493942c1fdae";
90 src = fetchurl {
91 url = https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae;
92 sha256 = "01vmclj3k7xil51jg329fznshh8d07pvm4mr89lvfn1d7fyrq6qw";
93 };
94 };
95 };
96 "doctrine/instantiator" = {
97 targetDir = "";
98 src = composerEnv.buildZipPackage {
99 name = "doctrine-instantiator-8e884e78f9f0eb1329e445619e04456e64d8051d";
100 src = fetchurl {
101 url = https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d;
102 sha256 = "15dcja45rnwya431pcm826l68k1g8f1fabl7rih69alcdyvdlln4";
103 };
104 };
105 };
106 "doctrine/lexer" = {
107 targetDir = "";
108 src = composerEnv.buildZipPackage {
109 name = "doctrine-lexer-83893c552fd2045dd78aef794c31e694c37c0b8c";
110 src = fetchurl {
111 url = https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c;
112 sha256 = "0cyh3vwcl163cx1vrcwmhlh5jg9h47xwiqgzc6rwscxw0ppd1v74";
113 };
114 };
115 };
116 "doctrine/orm" = {
117 targetDir = "";
118 src = composerEnv.buildZipPackage {
119 name = "doctrine-orm-810a7baf81462a5ddf10e8baa8cb94b6eec02754";
120 src = fetchurl {
121 url = https://api.github.com/repos/doctrine/doctrine2/zipball/810a7baf81462a5ddf10e8baa8cb94b6eec02754;
122 sha256 = "1hmkc7917kgnav9hmlgvlp7qwm3zjj910ci71g9yqwjh6s28wrf1";
123 };
124 };
125 };
126 "fig/link-util" = {
127 targetDir = "";
128 src = composerEnv.buildZipPackage {
129 name = "fig-link-util-1a07821801a148be4add11ab0603e4af55a72fac";
130 src = fetchurl {
131 url = https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac;
132 sha256 = "0ky1pq4a17br5zvcychjghgwr6wpkgp409hdv0ljdk3ks90w5w64";
133 };
134 };
135 };
136 "incenteev/composer-parameter-handler" = {
137 targetDir = "";
138 src = composerEnv.buildZipPackage {
139 name = "incenteev-composer-parameter-handler-933c45a34814f27f2345c11c37d46b3ca7303550";
140 src = fetchurl {
141 url = https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550;
142 sha256 = "1zqdwlcl790kjyz4rkpva35xkfsp8kslds82fzznj0yigkgnbifm";
143 };
144 };
145 };
146 "jdorn/sql-formatter" = {
147 targetDir = "";
148 src = composerEnv.buildZipPackage {
149 name = "jdorn-sql-formatter-64990d96e0959dff8e059dfcdc1af130728d92bc";
150 src = fetchurl {
151 url = https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc;
152 sha256 = "1dnmkm8mxylvxjwi0bdkzrlklncqx92fa4fwqp5bh2ypj8gaagzi";
153 };
154 };
155 };
156 "monolog/monolog" = {
157 targetDir = "";
158 src = composerEnv.buildZipPackage {
159 name = "monolog-monolog-fd8c787753b3a2ad11bc60c063cff1358a32a3b4";
160 src = fetchurl {
161 url = https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4;
162 sha256 = "0avf3y8raw23krwdb7kw9qb5bsr5ls4i7qd2vh7hcds3qjixg3h9";
163 };
164 };
165 };
166 "paragonie/random_compat" = {
167 targetDir = "";
168 src = composerEnv.buildZipPackage {
169 name = "paragonie-random_compat-5da4d3c796c275c55f057af5a643ae297d96b4d8";
170 src = fetchurl {
171 url = https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8;
172 sha256 = "1hp6pin4923c300yi85m7qk04gsrbygv52wv5zm7giyyf0k0g073";
173 };
174 };
175 };
176 "psr/cache" = {
177 targetDir = "";
178 src = composerEnv.buildZipPackage {
179 name = "psr-cache-d11b50ad223250cf17b86e38383413f5a6764bf8";
180 src = fetchurl {
181 url = https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8;
182 sha256 = "06i2k3dx3b4lgn9a4v1dlgv8l9wcl4kl7vzhh63lbji0q96hv8qz";
183 };
184 };
185 };
186 "psr/container" = {
187 targetDir = "";
188 src = composerEnv.buildZipPackage {
189 name = "psr-container-b7ce3b176482dbbc1245ebf52b181af44c2cf55f";
190 src = fetchurl {
191 url = https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f;
192 sha256 = "0rkz64vgwb0gfi09klvgay4qnw993l1dc03vyip7d7m2zxi6cy4j";
193 };
194 };
195 };
196 "psr/link" = {
197 targetDir = "";
198 src = composerEnv.buildZipPackage {
199 name = "psr-link-eea8e8662d5cd3ae4517c9b864493f59fca95562";
200 src = fetchurl {
201 url = https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562;
202 sha256 = "091k4p9irkqnmq9b0p792wz1hb7dm4rafpjilw9im9xhsxgkmr13";
203 };
204 };
205 };
206 "psr/log" = {
207 targetDir = "";
208 src = composerEnv.buildZipPackage {
209 name = "psr-log-4ebe3a8bf773a19edfe0a84b6585ba3d401b724d";
210 src = fetchurl {
211 url = https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d;
212 sha256 = "1mlcv17fjw39bjpck176ah1z393b6pnbw3jqhhrblj27c70785md";
213 };
214 };
215 };
216 "psr/simple-cache" = {
217 targetDir = "";
218 src = composerEnv.buildZipPackage {
219 name = "psr-simple-cache-408d5eafb83c57f6365a3ca330ff23aa4a5fa39b";
220 src = fetchurl {
221 url = https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b;
222 sha256 = "1djgzclkamjxi9jy4m9ggfzgq1vqxaga2ip7l3cj88p7rwkzjxgw";
223 };
224 };
225 };
226 "sensio/distribution-bundle" = {
227 targetDir = "";
228 src = composerEnv.buildZipPackage {
229 name = "sensio-distribution-bundle-eb6266b3b472e4002538610b28a0a04bcf94891a";
230 src = fetchurl {
231 url = https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/eb6266b3b472e4002538610b28a0a04bcf94891a;
232 sha256 = "0wyffqj924lz9cv0vbahyngjw1g850v0p34swygzzgp3cr0ank13";
233 };
234 };
235 };
236 "sensio/framework-extra-bundle" = {
237 targetDir = "";
238 src = composerEnv.buildZipPackage {
239 name = "sensio-framework-extra-bundle-bf4940572e43af679aaa13be98f3446a1c237bd8";
240 src = fetchurl {
241 url = https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/bf4940572e43af679aaa13be98f3446a1c237bd8;
242 sha256 = "1kb1n5w3kfc0kf4pslqdx5pgp0g4hmaag0i00wvjj2n3pjfm5lhf";
243 };
244 };
245 };
246 "sensiolabs/security-checker" = {
247 targetDir = "";
248 src = composerEnv.buildZipPackage {
249 name = "sensiolabs-security-checker-dc270d5fec418cc6ac983671dba5d80ffaffb142";
250 src = fetchurl {
251 url = https://api.github.com/repos/sensiolabs/security-checker/zipball/dc270d5fec418cc6ac983671dba5d80ffaffb142;
252 sha256 = "0fnshyd6f8j91a7y604nh6sqgscjl48mfa0727g2r4hkdfz8hpd1";
253 };
254 };
255 };
256 "swiftmailer/swiftmailer" = {
257 targetDir = "";
258 src = composerEnv.buildZipPackage {
259 name = "swiftmailer-swiftmailer-7ffc1ea296ed14bf8260b6ef11b80208dbadba91";
260 src = fetchurl {
261 url = https://api.github.com/repos/swiftmailer/swiftmailer/zipball/7ffc1ea296ed14bf8260b6ef11b80208dbadba91;
262 sha256 = "1vl5pzgvr2yfrj1yfs02mi917b0gr56v76ibi40r51a3346zhp6v";
263 };
264 };
265 };
266 "symfony/monolog-bundle" = {
267 targetDir = "";
268 src = composerEnv.buildZipPackage {
269 name = "symfony-monolog-bundle-8781649349fe418d51d194f8c9d212c0b97c40dd";
270 src = fetchurl {
271 url = https://api.github.com/repos/symfony/monolog-bundle/zipball/8781649349fe418d51d194f8c9d212c0b97c40dd;
272 sha256 = "0wcqhg1vfdj3mxacr3fxpgqwy1rk9znjg9bmzx4jymk8l16i7bq8";
273 };
274 };
275 };
276 "symfony/polyfill-apcu" = {
277 targetDir = "";
278 src = composerEnv.buildZipPackage {
279 name = "symfony-polyfill-apcu-e8ae2136ddb53dea314df56fcd88e318ab936c00";
280 src = fetchurl {
281 url = https://api.github.com/repos/symfony/polyfill-apcu/zipball/e8ae2136ddb53dea314df56fcd88e318ab936c00;
282 sha256 = "07wdszb9ircnidjk3fp3cvcrggxv3sfm996jzd0a9pm6vfz9hymv";
283 };
284 };
285 };
286 "symfony/polyfill-intl-icu" = {
287 targetDir = "";
288 src = composerEnv.buildZipPackage {
289 name = "symfony-polyfill-intl-icu-254919c03761d46c29291616576ed003f10e91c1";
290 src = fetchurl {
291 url = https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/254919c03761d46c29291616576ed003f10e91c1;
292 sha256 = "01yivzv7p55fzrkkyvgd57zpyz82zn1qp0h6nzr77k01rkv3w0ds";
293 };
294 };
295 };
296 "symfony/polyfill-mbstring" = {
297 targetDir = "";
298 src = composerEnv.buildZipPackage {
299 name = "symfony-polyfill-mbstring-78be803ce01e55d3491c1397cf1c64beb9c1b63b";
300 src = fetchurl {
301 url = https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b;
302 sha256 = "0cqr8ni6wpbaxa9gyr40y5bsv54pa2g8kdarlfw3qg2rgzmk0yz1";
303 };
304 };
305 };
306 "symfony/polyfill-php56" = {
307 targetDir = "";
308 src = composerEnv.buildZipPackage {
309 name = "symfony-polyfill-php56-ebc999ce5f14204c5150b9bd15f8f04e621409d8";
310 src = fetchurl {
311 url = https://api.github.com/repos/symfony/polyfill-php56/zipball/ebc999ce5f14204c5150b9bd15f8f04e621409d8;
312 sha256 = "0b2j56l6d6rdggx7vr20d527df4pjfp4lgxpglsgbf5912rcyf83";
313 };
314 };
315 };
316 "symfony/polyfill-php70" = {
317 targetDir = "";
318 src = composerEnv.buildZipPackage {
319 name = "symfony-polyfill-php70-3532bfcd8f933a7816f3a0a59682fc404776600f";
320 src = fetchurl {
321 url = https://api.github.com/repos/symfony/polyfill-php70/zipball/3532bfcd8f933a7816f3a0a59682fc404776600f;
322 sha256 = "151m76lc9w0kxnnwk4zdcjlmj7fppibnp8jisgpvvq32ml3fizdi";
323 };
324 };
325 };
326 "symfony/polyfill-util" = {
327 targetDir = "";
328 src = composerEnv.buildZipPackage {
329 name = "symfony-polyfill-util-e17c808ec4228026d4f5a8832afa19be85979563";
330 src = fetchurl {
331 url = https://api.github.com/repos/symfony/polyfill-util/zipball/e17c808ec4228026d4f5a8832afa19be85979563;
332 sha256 = "17sdpdidc0b701f9rippjv1grfci7wrdpy2i1inlwwpr6zy782cq";
333 };
334 };
335 };
336 "symfony/swiftmailer-bundle" = {
337 targetDir = "";
338 src = composerEnv.buildZipPackage {
339 name = "symfony-swiftmailer-bundle-c4808f5169efc05567be983909d00f00521c53ec";
340 src = fetchurl {
341 url = https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec;
342 sha256 = "0jmd3slhb3gf3c3krmk2a9fi4ixdxvqlimdkfpj0sfaaq0115y01";
343 };
344 };
345 };
346 "symfony/symfony" = {
347 targetDir = "";
348 src = composerEnv.buildZipPackage {
349 name = "symfony-symfony-874d4d659774d7bab90538072c83ed532dd17dc5";
350 src = fetchurl {
351 url = https://api.github.com/repos/symfony/symfony/zipball/874d4d659774d7bab90538072c83ed532dd17dc5;
352 sha256 = "02rsn3sc34jh107n576jfbh666k06y44yr7hw61nir0d864k8api";
353 };
354 };
355 };
356 "twig/twig" = {
357 targetDir = "";
358 src = composerEnv.buildZipPackage {
359 name = "twig-twig-9c24f2cd39dc1906b76879e099970b7e53724601";
360 src = fetchurl {
361 url = https://api.github.com/repos/twigphp/Twig/zipball/9c24f2cd39dc1906b76879e099970b7e53724601;
362 sha256 = "0brfj2lahrrw1322zy6jyd380hjks1ynzzkmq3875a282gzrfkdz";
363 };
364 };
365 };
366 };
367 devPackages = {
368 "sensio/generator-bundle" = {
369 targetDir = "";
370 src = composerEnv.buildZipPackage {
371 name = "sensio-generator-bundle-28cbaa244bd0816fd8908b93f90380bcd7b67a65";
372 src = fetchurl {
373 url = https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65;
374 sha256 = "1j09y037xk843q8gcyfmwgy6dmn0h67pd5jnsvhj08h92ssbl0c3";
375 };
376 };
377 };
378 "symfony/phpunit-bridge" = {
379 targetDir = "";
380 src = composerEnv.buildZipPackage {
381 name = "symfony-phpunit-bridge-32b06d2b0babf3216e55acfce42249321a304f03";
382 src = fetchurl {
383 url = https://api.github.com/repos/symfony/phpunit-bridge/zipball/32b06d2b0babf3216e55acfce42249321a304f03;
384 sha256 = "0vw4q3lvz8gfs0r93ds8yymz8586k0czwa01c7d172rc8x02v0qq";
385 };
386 };
387 };
388 };
389}
diff --git a/nixops/modules/websites/tellesflorian/tellesflorian.json b/nixops/modules/websites/tellesflorian/tellesflorian.json
deleted file mode 100644
index 81b42af..0000000
--- a/nixops/modules/websites/tellesflorian/tellesflorian.json
+++ /dev/null
@@ -1,14 +0,0 @@
1{
2 "tag": "1793d5c-master",
3 "meta": {
4 "name": "tellesflorian",
5 "url": "gitolite@git.immae.eu:perso/florian_telles/stabilo",
6 "branch": "master"
7 },
8 "git": {
9 "url": "gitolite@git.immae.eu:perso/florian_telles/stabilo",
10 "rev": "1793d5c7912d1b20ad1df1ac59be9d7f1220e919",
11 "sha256": "1zhxcrbglbjb6xfr8sfm4m2miabbkkb0a7543va3b5akrn6yk0cb",
12 "fetchSubmodules": true
13 }
14}
diff --git a/nixops/modules/websites/tellesflorian/tellesflorian.nix b/nixops/modules/websites/tellesflorian/tellesflorian.nix
index afd723c..5955431 100644
--- a/nixops/modules/websites/tellesflorian/tellesflorian.nix
+++ b/nixops/modules/websites/tellesflorian/tellesflorian.nix
@@ -1,175 +1,154 @@
1{ lib, writeText, fetchedGitPrivate, fetchurl, stdenv, composerEnv }: 1{ tellesflorian, config }:
2let 2rec {
3 tellesflorian = { config }: rec { 3 app = tellesflorian.override { inherit (config) environment; };
4 environment = config.environment; 4 keys = [
5 varDir = "/var/lib/tellesflorian_${environment}"; 5 {
6 keys = [ 6 dest = "webapps/${app.environment}-tellesflorian-passwords";
7 { 7 user = apache.user;
8 dest = "webapps/${environment}-tellesflorian-passwords"; 8 group = apache.group;
9 user = apache.user; 9 permissions = "0400";
10 group = apache.group; 10 text = ''
11 permissions = "0400"; 11 invite:${config.invite_passwords}
12 text = '' 12 '';
13 invite:${config.invite_passwords} 13 }
14 ''; 14 {
15 } 15 dest = "webapps/${app.environment}-tellesflorian";
16 { 16 user = apache.user;
17 dest = "webapps/${environment}-tellesflorian"; 17 group = apache.group;
18 user = apache.user; 18 permissions = "0400";
19 group = apache.group; 19 text = ''
20 permissions = "0400"; 20 # This file is auto-generated during the composer install
21 text = '' 21 parameters:
22 # This file is auto-generated during the composer install 22 database_host: ${config.mysql.host}
23 parameters: 23 database_port: ${config.mysql.port}
24 database_host: ${config.mysql.host} 24 database_name: ${config.mysql.name}
25 database_port: ${config.mysql.port} 25 database_user: ${config.mysql.user}
26 database_name: ${config.mysql.name} 26 database_password: ${config.mysql.password}
27 database_user: ${config.mysql.user} 27 mailer_transport: smtp
28 database_password: ${config.mysql.password} 28 mailer_host: 127.0.0.1
29 mailer_transport: smtp 29 mailer_user: null
30 mailer_host: 127.0.0.1 30 mailer_password: null
31 mailer_user: null 31 secret: ${config.secret}
32 mailer_password: null 32 '';
33 secret: ${config.secret} 33 }
34 ''; 34 ];
35 } 35 phpFpm = rec {
36 ]; 36 preStart = ''
37 phpFpm = rec { 37 if [ ! -f "${app.varDir}/currentWebappDir" -o \
38 preStart = '' 38 ! -f "${app.varDir}/currentKey" -o \
39 if [ ! -f "${varDir}/currentWebappDir" -o \ 39 "${app}" != "$(cat ${app.varDir}/currentWebappDir 2>/dev/null)" ] \
40 ! -f "${varDir}/currentKey" -o \ 40 || ! sha512sum -c --status ${app.varDir}/currentKey; then
41 "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ] \ 41 pushd ${app} > /dev/null
42 || ! sha512sum -c --status ${varDir}/currentKey; then 42 /run/wrappers/bin/sudo -u wwwrun ./bin/console --env=${app.environment} cache:clear --no-warmup
43 pushd ${webappDir} > /dev/null 43 popd > /dev/null
44 /run/wrappers/bin/sudo -u wwwrun ./bin/console --env=${environment} cache:clear --no-warmup 44 echo -n "${app}" > ${app.varDir}/currentWebappDir
45 popd > /dev/null 45 sha512sum /var/secrets/webapps/${app.environment}-tellesflorian > ${app.varDir}/currentKey
46 echo -n "${webappDir}" > ${varDir}/currentWebappDir 46 fi
47 sha512sum /var/secrets/webapps/${environment}-tellesflorian > ${varDir}/currentKey 47 '';
48 fi 48 serviceDeps = [ "mysql.service" ];
49 ''; 49 socket = "/var/run/phpfpm/floriantelles-${app.environment}.sock";
50 serviceDeps = [ "mysql.service" ]; 50 pool = ''
51 socket = "/var/run/phpfpm/floriantelles-${environment}.sock"; 51 listen = ${socket}
52 pool = '' 52 user = ${apache.user}
53 listen = ${socket} 53 group = ${apache.group}
54 user = ${apache.user} 54 listen.owner = ${apache.user}
55 group = ${apache.group} 55 listen.group = ${apache.group}
56 listen.owner = ${apache.user} 56 php_admin_value[upload_max_filesize] = 20M
57 listen.group = ${apache.group} 57 php_admin_value[post_max_size] = 20M
58 php_admin_value[upload_max_filesize] = 20M 58 ;php_admin_flag[log_errors] = on
59 php_admin_value[post_max_size] = 20M 59 php_admin_value[open_basedir] = "/var/secrets/webapps/${app.environment}-tellesflorian:${app}:${app.varDir}:/tmp"
60 ;php_admin_flag[log_errors] = on 60 php_admin_value[session.save_path] = "${app.varDir}/phpSessions"
61 php_admin_value[open_basedir] = "/var/secrets/webapps/${environment}-tellesflorian:${webappDir}:${varDir}:/tmp" 61 ${if app.environment == "dev" then ''
62 php_admin_value[session.save_path] = "${varDir}/phpSessions" 62 pm = ondemand
63 ${if environment == "dev" then '' 63 pm.max_children = 5
64 pm = ondemand 64 pm.process_idle_timeout = 60
65 pm.max_children = 5 65 env[SYMFONY_DEBUG_MODE] = "yes"
66 pm.process_idle_timeout = 60 66 '' else ''
67 env[SYMFONY_DEBUG_MODE] = "yes" 67 pm = dynamic
68 '' else '' 68 pm.max_children = 20
69 pm = dynamic 69 pm.start_servers = 2
70 pm.max_children = 20 70 pm.min_spare_servers = 1
71 pm.start_servers = 2 71 pm.max_spare_servers = 3
72 pm.min_spare_servers = 1 72 ''}'';
73 pm.max_spare_servers = 3 73 };
74 ''}''; 74 apache = rec {
75 }; 75 user = "wwwrun";
76 apache = rec { 76 group = "wwwrun";
77 user = "wwwrun"; 77 modules = [ "proxy_fcgi" ];
78 group = "wwwrun"; 78 webappName = "florian_${app.environment}";
79 modules = [ "proxy_fcgi" ]; 79 root = "/run/current-system/webapps/${webappName}";
80 webappName = "florian_${environment}"; 80 vhostConf = ''
81 root = "/run/current-system/webapps/${webappName}"; 81 <FilesMatch "\.php$">
82 vhostConf = '' 82 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
83 <FilesMatch "\.php$"> 83 </FilesMatch>
84 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
85 </FilesMatch>
86 84
87 ${if environment == "dev" then '' 85 ${if app.environment == "dev" then ''
88 <Location /> 86 <Location />
89 AuthBasicProvider file ldap 87 AuthBasicProvider file ldap
90 Use LDAPConnect 88 Use LDAPConnect
91 Require ldap-group cn=app.tellesflorian.com,cn=httpd,ou=services,dc=immae,dc=eu 89 Require ldap-group cn=app.tellesflorian.com,cn=httpd,ou=services,dc=immae,dc=eu
92 90
93 AuthUserFile "/var/secrets/webapps/${environment}-tellesflorian-passwords" 91 AuthUserFile "/var/secrets/webapps/${app.environment}-tellesflorian-passwords"
94 Require user "invite" 92 Require user "invite"
95 93
96 ErrorDocument 401 "<html><meta http-equiv=\"refresh\" content=\"0;url=https://tellesflorian.com\"></html>" 94 ErrorDocument 401 "<html><meta http-equiv=\"refresh\" content=\"0;url=https://tellesflorian.com\"></html>"
97 </Location> 95 </Location>
98 96
99 <Directory ${root}> 97 <Directory ${root}>
100 Options Indexes FollowSymLinks MultiViews Includes 98 Options Indexes FollowSymLinks MultiViews Includes
101 AllowOverride None 99 AllowOverride None
102 Require all granted 100 Require all granted
103 101
104 DirectoryIndex app_dev.php 102 DirectoryIndex app_dev.php
105 103
106 <IfModule mod_negotiation.c> 104 <IfModule mod_negotiation.c>
107 Options -MultiViews 105 Options -MultiViews
108 </IfModule> 106 </IfModule>
109 107
110 <IfModule mod_rewrite.c> 108 <IfModule mod_rewrite.c>
111 RewriteEngine On 109 RewriteEngine On
112 110
113 RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ 111 RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
114 RewriteRule ^(.*) - [E=BASE:%1] 112 RewriteRule ^(.*) - [E=BASE:%1]
115 113
116 # Maintenance script 114 # Maintenance script
117 RewriteCond %{DOCUMENT_ROOT}/maintenance.php -f 115 RewriteCond %{DOCUMENT_ROOT}/maintenance.php -f
118 RewriteCond %{SCRIPT_FILENAME} !maintenance.php 116 RewriteCond %{SCRIPT_FILENAME} !maintenance.php
119 RewriteRule ^.*$ %{ENV:BASE}/maintenance.php [R=503,L] 117 RewriteRule ^.*$ %{ENV:BASE}/maintenance.php [R=503,L]
120 ErrorDocument 503 /maintenance.php 118 ErrorDocument 503 /maintenance.php
121 119
122 # Sets the HTTP_AUTHORIZATION header removed by Apache 120 # Sets the HTTP_AUTHORIZATION header removed by Apache
123 RewriteCond %{HTTP:Authorization} . 121 RewriteCond %{HTTP:Authorization} .
124 RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 122 RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
125 123
126 RewriteCond %{ENV:REDIRECT_STATUS} ^$ 124 RewriteCond %{ENV:REDIRECT_STATUS} ^$
127 RewriteRule ^app_dev\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L] 125 RewriteRule ^app_dev\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
128 126
129 # If the requested filename exists, simply serve it. 127 # If the requested filename exists, simply serve it.
130 # We only want to let Apache serve files and not directories. 128 # We only want to let Apache serve files and not directories.
131 RewriteCond %{REQUEST_FILENAME} -f 129 RewriteCond %{REQUEST_FILENAME} -f
132 RewriteRule ^ - [L] 130 RewriteRule ^ - [L]
133 131
134 # Rewrite all other queries to the front controller. 132 # Rewrite all other queries to the front controller.
135 RewriteRule ^ %{ENV:BASE}/app_dev.php [L] 133 RewriteRule ^ %{ENV:BASE}/app_dev.php [L]
136 </IfModule> 134 </IfModule>
137 135
138 </Directory> 136 </Directory>
139 '' else '' 137 '' else ''
140 <Directory ${root}> 138 <Directory ${root}>
141 Options Indexes FollowSymLinks MultiViews Includes 139 Options Indexes FollowSymLinks MultiViews Includes
142 AllowOverride All 140 AllowOverride All
143 Require all granted 141 Require all granted
144 </Directory> 142 </Directory>
145 ''} 143 ''}
146 ''; 144 '';
147 }; 145 };
148 activationScript = { 146 activationScript = {
149 deps = [ "wrappers" ]; 147 deps = [ "wrappers" ];
150 text = '' 148 text = ''
151 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \ 149 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${app.varDir} \
152 ${varDir}/var 150 ${app.varDir}/var
153 install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions 151 install -m 0750 -o ${apache.user} -g ${apache.group} -d ${app.varDir}/phpSessions
154 ''; 152 '';
155 };
156 webappDir = composerEnv.buildPackage (
157 import ./php-packages.nix { inherit composerEnv fetchurl; } //
158 fetchedGitPrivate ./tellesflorian.json //
159 rec {
160 noDev = (environment == "prod");
161 preInstall = ''
162 export SYMFONY_ENV="${environment}"
163 '';
164 postInstall = ''
165 cd $out
166 rm app/config/parameters.yml
167 ln -sf /var/secrets/webapps/${environment}-tellesflorian app/config/parameters.yml
168 rm -rf var/{logs,cache}
169 ln -sf ${varDir}/var/{logs,cache,sessions} var/
170 '';
171 });
172 webRoot = "${webappDir}/web";
173 }; 153 };
174in 154}
175 tellesflorian