aboutsummaryrefslogtreecommitdiff
path: root/modules/private/websites/ludivine
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2020-04-18 16:10:56 +0200
committerIsmaël Bouya <ismael.bouya@normalesup.org>2020-04-20 01:51:48 +0200
commitd3452fc59b9839846225fd254926c64a9c71f071 (patch)
treea98a0958b826ac4b2ab137720edf0195c65dd958 /modules/private/websites/ludivine
parent514f9ec3beec470c4445be690673a0ceab9115b4 (diff)
downloadNix-d3452fc59b9839846225fd254926c64a9c71f071.tar.gz
Nix-d3452fc59b9839846225fd254926c64a9c71f071.tar.zst
Nix-d3452fc59b9839846225fd254926c64a9c71f071.zip
Refactor websites
Diffstat (limited to 'modules/private/websites/ludivine')
-rw-r--r--modules/private/websites/ludivine/app/default.nix36
-rw-r--r--modules/private/websites/ludivine/app/ludivinecassal.json14
-rw-r--r--modules/private/websites/ludivine/app/php-packages.nix868
-rw-r--r--modules/private/websites/ludivine/integration.nix151
-rw-r--r--modules/private/websites/ludivine/production.nix118
5 files changed, 1187 insertions, 0 deletions
diff --git a/modules/private/websites/ludivine/app/default.nix b/modules/private/websites/ludivine/app/default.nix
new file mode 100644
index 0000000..05be0b1
--- /dev/null
+++ b/modules/private/websites/ludivine/app/default.nix
@@ -0,0 +1,36 @@
1{ environment ? "prod"
2, varDir ? "/var/lib/ludivinecassal_${environment}"
3, secretsPath ? "/var/secrets/webapps/${environment}-ludivinecassal"
4, composerEnv, fetchurl, fetchgit, imagemagick, sass, ruby, mylibs }:
5let
6 app = composerEnv.buildPackage (
7 import ./php-packages.nix { inherit composerEnv fetchurl fetchgit; } //
8 mylibs.fetchedGitPrivate ./ludivinecassal.json //
9 rec {
10 noDev = (environment == "prod");
11 preInstall = ''
12 export SYMFONY_ENV="${environment}"
13 cp app/config/parameters.yml.dist app/config/parameters.yml
14 cat >> app/config/parameters.yml <<EOF
15 leapt_im:
16 binary_path: ${imagemagick}/bin
17 assetic:
18 sass: ${sass}/bin/sass
19 ruby: ${ruby}/bin/ruby
20 EOF
21 sed -i -e "/Incenteev..ParameterHandler..ScriptHandler::buildParameters/d" composer.json
22 '';
23 # /!\ miniatures and data need to be in the same physical dir due to a
24 # bug in leapt.im (searches for data/../miniatures)
25 postInstall = ''
26 rm -rf var/{logs,cache,data,miniatures,tmp}
27 ln -sf ${varDir}/{logs,cache,data,miniatures,tmp} var/
28 ln -sf ${secretsPath} app/config/parameters.yml
29 '';
30 buildInputs = [ sass ];
31 passthru = {
32 inherit varDir environment;
33 webRoot = "${app}/web";
34 };
35 });
36in app
diff --git a/modules/private/websites/ludivine/app/ludivinecassal.json b/modules/private/websites/ludivine/app/ludivinecassal.json
new file mode 100644
index 0000000..f0d23c3
--- /dev/null
+++ b/modules/private/websites/ludivine/app/ludivinecassal.json
@@ -0,0 +1,14 @@
1{
2 "tag": "0dacc32-master",
3 "meta": {
4 "name": "ludivinecassal",
5 "url": "ssh://gitolite@git.immae.eu/perso/Immae/Sites/Ludivine",
6 "branch": "master"
7 },
8 "git": {
9 "url": "ssh://gitolite@git.immae.eu/perso/Immae/Sites/Ludivine",
10 "rev": "0dacc320ea052b69f79861c84bceaa89be53de60",
11 "sha256": "10khg1fq9ixly3xak591n3v0rv3f2hn91rd46d75yv3wjxaj1c2d",
12 "fetchSubmodules": true
13 }
14}
diff --git a/modules/private/websites/ludivine/app/php-packages.nix b/modules/private/websites/ludivine/app/php-packages.nix
new file mode 100644
index 0000000..3495c32
--- /dev/null
+++ b/modules/private/websites/ludivine/app/php-packages.nix
@@ -0,0 +1,868 @@
1# Generated with composer2nix and adapted to return only the list of
2# packages
3{ composerEnv, fetchurl, fetchgit ? null }:
4{
5 packages = {
6 "behat/transliterator" = {
7 targetDir = "";
8 src = composerEnv.buildZipPackage {
9 name = "behat-transliterator-826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c";
10 src = fetchurl {
11 url = https://api.github.com/repos/Behat/Transliterator/zipball/826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c;
12 sha256 = "1mgc9azx79fkrxahji3xwbgqhlcnvh3xk6llqdvhjb7vgzj4bqq0";
13 };
14 };
15 };
16 "components/bootstrap" = {
17 targetDir = "";
18 src = composerEnv.buildZipPackage {
19 name = "components-bootstrap-5d60b2efd3159e1a9e203901849b3493c5aac61f";
20 src = fetchurl {
21 url = https://api.github.com/repos/components/bootstrap/zipball/5d60b2efd3159e1a9e203901849b3493c5aac61f;
22 sha256 = "0jdyxl86dr2lf8az1vby84i7kdn1qcqkp8fy60rs18gav0aqp4fg";
23 };
24 };
25 };
26 "components/jquery" = {
27 targetDir = "";
28 src = composerEnv.buildZipPackage {
29 name = "components-jquery-459648cda77875519c5da3ae1dd0ed5d170aa649";
30 src = fetchurl {
31 url = https://api.github.com/repos/components/jquery/zipball/459648cda77875519c5da3ae1dd0ed5d170aa649;
32 sha256 = "04jv8yifhwx0cpkw3y3ng0bs2dv77pzrdd640p59rjxwba6r1lbb";
33 };
34 };
35 };
36 "components/jqueryui" = {
37 targetDir = "";
38 src = composerEnv.buildZipPackage {
39 name = "components-jqueryui-c34f8dbf3ba57b3784b93f26119f436c0e8288e1";
40 src = fetchurl {
41 url = https://api.github.com/repos/components/jqueryui/zipball/c34f8dbf3ba57b3784b93f26119f436c0e8288e1;
42 sha256 = "00nkg6z8g6l3jysyzsfmfxhxqcdsd3jfqib28j8kn2frzx508xv9";
43 };
44 };
45 };
46 "composer/ca-bundle" = {
47 targetDir = "";
48 src = composerEnv.buildZipPackage {
49 name = "composer-ca-bundle-8afa52cd417f4ec417b4bfe86b68106538a87660";
50 src = fetchurl {
51 url = https://api.github.com/repos/composer/ca-bundle/zipball/8afa52cd417f4ec417b4bfe86b68106538a87660;
52 sha256 = "18b0gq29frjf4yhl4sl3i3zbz6zr3qjgsjb8cjdhz65vpb50581p";
53 };
54 };
55 };
56 "doctrine/annotations" = {
57 targetDir = "";
58 src = composerEnv.buildZipPackage {
59 name = "doctrine-annotations-c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5";
60 src = fetchurl {
61 url = https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5;
62 sha256 = "0b80xpqd3j99xgm0c41kbgy0k6knrfnd29223c93295sb12112g7";
63 };
64 };
65 };
66 "doctrine/cache" = {
67 targetDir = "";
68 src = composerEnv.buildZipPackage {
69 name = "doctrine-cache-d768d58baee9a4862ca783840eca1b9add7a7f57";
70 src = fetchurl {
71 url = https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57;
72 sha256 = "1kljhw4gqp12iz88h6ymsrlfir2fis7icn6dffyizfc1csyb4s2i";
73 };
74 };
75 };
76 "doctrine/collections" = {
77 targetDir = "";
78 src = composerEnv.buildZipPackage {
79 name = "doctrine-collections-a01ee38fcd999f34d9bfbcee59dbda5105449cbf";
80 src = fetchurl {
81 url = https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf;
82 sha256 = "0d36zc21ka0pdac9xpkxsgf5zzw9gp0m9lk3r3xs5y70j0lkkkis";
83 };
84 };
85 };
86 "doctrine/common" = {
87 targetDir = "";
88 src = composerEnv.buildZipPackage {
89 name = "doctrine-common-30e33f60f64deec87df728c02b107f82cdafad9d";
90 src = fetchurl {
91 url = https://api.github.com/repos/doctrine/common/zipball/30e33f60f64deec87df728c02b107f82cdafad9d;
92 sha256 = "0s4vv14ibyx62a9aj3wn5cs2bbxd72fajmfmi8qb5l11gx0375na";
93 };
94 };
95 };
96 "doctrine/dbal" = {
97 targetDir = "";
98 src = composerEnv.buildZipPackage {
99 name = "doctrine-dbal-22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9";
100 src = fetchurl {
101 url = https://api.github.com/repos/doctrine/dbal/zipball/22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9;
102 sha256 = "0kbahs699jd8pxf512dgg7arv49dc7qzi3mx8snxqm4h15n5brnj";
103 };
104 };
105 };
106 "doctrine/doctrine-bundle" = {
107 targetDir = "";
108 src = composerEnv.buildZipPackage {
109 name = "doctrine-doctrine-bundle-82d2c63cd09acbde2332f55d9aa7b28aefe4983d";
110 src = fetchurl {
111 url = https://api.github.com/repos/doctrine/DoctrineBundle/zipball/82d2c63cd09acbde2332f55d9aa7b28aefe4983d;
112 sha256 = "0gzrigv360rp50yxpwidbkf8vlagym0w1if010yz5xcfrz37cpn3";
113 };
114 };
115 };
116 "doctrine/doctrine-cache-bundle" = {
117 targetDir = "";
118 src = composerEnv.buildZipPackage {
119 name = "doctrine-doctrine-cache-bundle-5514c90d9fb595e1095e6d66ebb98ce9ef049927";
120 src = fetchurl {
121 url = https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/5514c90d9fb595e1095e6d66ebb98ce9ef049927;
122 sha256 = "04njrfhw4fc2ifacd9h0wd9i14l7ycv3hanbqrw5ilsai02j6asa";
123 };
124 };
125 };
126 "doctrine/doctrine-migrations-bundle" = {
127 targetDir = "";
128 src = composerEnv.buildZipPackage {
129 name = "doctrine-doctrine-migrations-bundle-49fa399181db4bf4f9f725126bd1cb65c4398dce";
130 src = fetchurl {
131 url = https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49fa399181db4bf4f9f725126bd1cb65c4398dce;
132 sha256 = "1a73xjhjrjlvkh8d253kfc2rbxd2h4hwafhv5078dy7rg6x9blyn";
133 };
134 };
135 };
136 "doctrine/event-manager" = {
137 targetDir = "";
138 src = composerEnv.buildZipPackage {
139 name = "doctrine-event-manager-a520bc093a0170feeb6b14e9d83f3a14452e64b3";
140 src = fetchurl {
141 url = https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3;
142 sha256 = "165cxvw4idqj01l63nya2whpdb3fz6ld54rx198b71bzwfrydl88";
143 };
144 };
145 };
146 "doctrine/inflector" = {
147 targetDir = "";
148 src = composerEnv.buildZipPackage {
149 name = "doctrine-inflector-5527a48b7313d15261292c149e55e26eae771b0a";
150 src = fetchurl {
151 url = https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a;
152 sha256 = "0ng6vlwjr8h6hqwa32ynykz1mhlfsff5hirjidlk086ab6njppa5";
153 };
154 };
155 };
156 "doctrine/instantiator" = {
157 targetDir = "";
158 src = composerEnv.buildZipPackage {
159 name = "doctrine-instantiator-185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda";
160 src = fetchurl {
161 url = https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda;
162 sha256 = "1mah9a6mb30qad1zryzjain2dxw29d8h4bjkbcs3srpm3p891msy";
163 };
164 };
165 };
166 "doctrine/lexer" = {
167 targetDir = "";
168 src = composerEnv.buildZipPackage {
169 name = "doctrine-lexer-83893c552fd2045dd78aef794c31e694c37c0b8c";
170 src = fetchurl {
171 url = https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c;
172 sha256 = "0cyh3vwcl163cx1vrcwmhlh5jg9h47xwiqgzc6rwscxw0ppd1v74";
173 };
174 };
175 };
176 "doctrine/migrations" = {
177 targetDir = "";
178 src = composerEnv.buildZipPackage {
179 name = "doctrine-migrations-215438c0eef3e5f9b7da7d09c6b90756071b43e6";
180 src = fetchurl {
181 url = https://api.github.com/repos/doctrine/migrations/zipball/215438c0eef3e5f9b7da7d09c6b90756071b43e6;
182 sha256 = "0k6sgw65vji9rgib10mq2m634m41a67inspkrcw4qixig2lnb3ld";
183 };
184 };
185 };
186 "doctrine/orm" = {
187 targetDir = "";
188 src = composerEnv.buildZipPackage {
189 name = "doctrine-orm-434820973cadf2da2d66e7184be370084cc32ca8";
190 src = fetchurl {
191 url = https://api.github.com/repos/doctrine/orm/zipball/434820973cadf2da2d66e7184be370084cc32ca8;
192 sha256 = "114fyq8kaf5qzfkp8sdygqflf3z94va1cs5c3scycfpg9cmi4gls";
193 };
194 };
195 };
196 "doctrine/persistence" = {
197 targetDir = "";
198 src = composerEnv.buildZipPackage {
199 name = "doctrine-persistence-c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38";
200 src = fetchurl {
201 url = https://api.github.com/repos/doctrine/persistence/zipball/c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38;
202 sha256 = "0xdm5n38rjas1mlyxc15sg1as5h7y012mdb0j9lr6cvphgnaxxv7";
203 };
204 };
205 };
206 "doctrine/reflection" = {
207 targetDir = "";
208 src = composerEnv.buildZipPackage {
209 name = "doctrine-reflection-02538d3f95e88eb397a5f86274deb2c6175c2ab6";
210 src = fetchurl {
211 url = https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6;
212 sha256 = "12n9zik4lxb9lx1jf0nbvg9vl9nv958a7z1yjx48scfxd1d1sxjy";
213 };
214 };
215 };
216 "fig/link-util" = {
217 targetDir = "";
218 src = composerEnv.buildZipPackage {
219 name = "fig-link-util-1a07821801a148be4add11ab0603e4af55a72fac";
220 src = fetchurl {
221 url = https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac;
222 sha256 = "0ky1pq4a17br5zvcychjghgwr6wpkgp409hdv0ljdk3ks90w5w64";
223 };
224 };
225 };
226 "gedmo/doctrine-extensions" = {
227 targetDir = "";
228 src = composerEnv.buildZipPackage {
229 name = "gedmo-doctrine-extensions-87c78ff9fd4b90460386f753d95622f6fbbfcb27";
230 src = fetchurl {
231 url = https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/87c78ff9fd4b90460386f753d95622f6fbbfcb27;
232 sha256 = "0jfg0a19lhdv5b3c032ghknxhvc1f0x2n7fcwp47bm1rbz222q0z";
233 };
234 };
235 };
236 "immae/ludivine-ckeditor-component" = {
237 targetDir = "";
238 src = fetchgit {
239 name = "immae-ludivine-ckeditor-component-1794320dcfdfcd19572fb1676294f9853a6bbc20";
240 url = "https://git.immae.eu/perso/Immae/Projets/packagist/ludivine-ckeditor-component.git";
241 rev = "1794320dcfdfcd19572fb1676294f9853a6bbc20";
242 sha256 = "080f3znvp0aj5jdpc3ywis0kfzvkwz5mw2jcj12gwq3r5g5i8zdq";
243 };
244 };
245 "immae/ludivine-slick-component" = {
246 targetDir = "";
247 src = fetchgit {
248 name = "immae-ludivine-slick-component-604734c4a960aac3d99f1008337181ed2b0f04db";
249 url = "https://git.immae.eu/perso/Immae/Projets/packagist/ludivine-slick-component.git";
250 rev = "604734c4a960aac3d99f1008337181ed2b0f04db";
251 sha256 = "041wqv9pa9nvqcgqykx6cnbj539qnr9h1iym7l54igw12yj57w06";
252 };
253 };
254 "incenteev/composer-parameter-handler" = {
255 targetDir = "";
256 src = composerEnv.buildZipPackage {
257 name = "incenteev-composer-parameter-handler-933c45a34814f27f2345c11c37d46b3ca7303550";
258 src = fetchurl {
259 url = https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550;
260 sha256 = "1zqdwlcl790kjyz4rkpva35xkfsp8kslds82fzznj0yigkgnbifm";
261 };
262 };
263 };
264 "jdorn/sql-formatter" = {
265 targetDir = "";
266 src = composerEnv.buildZipPackage {
267 name = "jdorn-sql-formatter-64990d96e0959dff8e059dfcdc1af130728d92bc";
268 src = fetchurl {
269 url = https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc;
270 sha256 = "1dnmkm8mxylvxjwi0bdkzrlklncqx92fa4fwqp5bh2ypj8gaagzi";
271 };
272 };
273 };
274 "kriswallsmith/assetic" = {
275 targetDir = "";
276 src = composerEnv.buildZipPackage {
277 name = "kriswallsmith-assetic-e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1";
278 src = fetchurl {
279 url = https://api.github.com/repos/kriswallsmith/assetic/zipball/e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1;
280 sha256 = "1dqk4zvx8fgqf8rb81sj9bipl5431jib2b9kcvxyig5fw99irpf8";
281 };
282 };
283 };
284 "leapt/im-bundle" = {
285 targetDir = "";
286 src = composerEnv.buildZipPackage {
287 name = "leapt-im-bundle-83442778d118f6edb537b93f9746c3a97e56c3d1";
288 src = fetchurl {
289 url = https://api.github.com/repos/leapt/im-bundle/zipball/83442778d118f6edb537b93f9746c3a97e56c3d1;
290 sha256 = "1gm4ih3v1j0xjm7mrpspd3yacdwvbqgag22cyqmix0hc9hw3pc6a";
291 };
292 };
293 };
294 "luxifer/doctrine-functions" = {
295 targetDir = "";
296 src = composerEnv.buildZipPackage {
297 name = "luxifer-doctrine-functions-e1c0bb1a5cb002d9fc82d8b32a5da28c02d34c6c";
298 src = fetchurl {
299 url = https://api.github.com/repos/luxifer/doctrine-functions/zipball/e1c0bb1a5cb002d9fc82d8b32a5da28c02d34c6c;
300 sha256 = "1sw4826nvs5q0y2na9m26rbxfiaw0kfqwhky7x7apicgx5adqfa9";
301 };
302 };
303 };
304 "monolog/monolog" = {
305 targetDir = "";
306 src = composerEnv.buildZipPackage {
307 name = "monolog-monolog-bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266";
308 src = fetchurl {
309 url = https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266;
310 sha256 = "0h3nnxjf2bdh7nmpqnpij99lqv6bw13r2bx83d8vn5zvblwg5png";
311 };
312 };
313 };
314 "ocramius/package-versions" = {
315 targetDir = "";
316 needsModifyRights = true;
317 src = composerEnv.buildZipPackage {
318 name = "ocramius-package-versions-4489d5002c49d55576fa0ba786f42dbb009be46f";
319 src = fetchurl {
320 url = https://api.github.com/repos/Ocramius/PackageVersions/zipball/4489d5002c49d55576fa0ba786f42dbb009be46f;
321 sha256 = "039c404g9597x45xh04bnn8kmcyknkbnr57yb9s7vf29vfrg4881";
322 };
323 };
324 };
325 "ocramius/proxy-manager" = {
326 targetDir = "";
327 src = composerEnv.buildZipPackage {
328 name = "ocramius-proxy-manager-14b137b06b0f911944132df9d51e445a35920ab1";
329 src = fetchurl {
330 url = https://api.github.com/repos/Ocramius/ProxyManager/zipball/14b137b06b0f911944132df9d51e445a35920ab1;
331 sha256 = "10y5msgh2jdlw4w075fasv40yq01szjy15m3f0wgc89hlfmqz0sn";
332 };
333 };
334 };
335 "paragonie/random_compat" = {
336 targetDir = "";
337 src = composerEnv.buildZipPackage {
338 name = "paragonie-random_compat-84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95";
339 src = fetchurl {
340 url = https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95;
341 sha256 = "03nsccdvcb79l64b7lsmx0n8ldf5z3v8niqr7bpp6wg401qp9p09";
342 };
343 };
344 };
345 "psr/cache" = {
346 targetDir = "";
347 src = composerEnv.buildZipPackage {
348 name = "psr-cache-d11b50ad223250cf17b86e38383413f5a6764bf8";
349 src = fetchurl {
350 url = https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8;
351 sha256 = "06i2k3dx3b4lgn9a4v1dlgv8l9wcl4kl7vzhh63lbji0q96hv8qz";
352 };
353 };
354 };
355 "psr/container" = {
356 targetDir = "";
357 src = composerEnv.buildZipPackage {
358 name = "psr-container-b7ce3b176482dbbc1245ebf52b181af44c2cf55f";
359 src = fetchurl {
360 url = https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f;
361 sha256 = "0rkz64vgwb0gfi09klvgay4qnw993l1dc03vyip7d7m2zxi6cy4j";
362 };
363 };
364 };
365 "psr/link" = {
366 targetDir = "";
367 src = composerEnv.buildZipPackage {
368 name = "psr-link-eea8e8662d5cd3ae4517c9b864493f59fca95562";
369 src = fetchurl {
370 url = https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562;
371 sha256 = "091k4p9irkqnmq9b0p792wz1hb7dm4rafpjilw9im9xhsxgkmr13";
372 };
373 };
374 };
375 "psr/log" = {
376 targetDir = "";
377 src = composerEnv.buildZipPackage {
378 name = "psr-log-6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd";
379 src = fetchurl {
380 url = https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd;
381 sha256 = "1i351p3gd1pgjcjxv7mwwkiw79f1xiqr38irq22156h05zlcx80d";
382 };
383 };
384 };
385 "psr/simple-cache" = {
386 targetDir = "";
387 src = composerEnv.buildZipPackage {
388 name = "psr-simple-cache-408d5eafb83c57f6365a3ca330ff23aa4a5fa39b";
389 src = fetchurl {
390 url = https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b;
391 sha256 = "1djgzclkamjxi9jy4m9ggfzgq1vqxaga2ip7l3cj88p7rwkzjxgw";
392 };
393 };
394 };
395 "robloach/component-installer" = {
396 targetDir = "";
397 src = composerEnv.buildZipPackage {
398 name = "robloach-component-installer-908a859aa7c4949ba9ad67091e67bac10b66d3d7";
399 src = fetchurl {
400 url = https://api.github.com/repos/RobLoach/component-installer/zipball/908a859aa7c4949ba9ad67091e67bac10b66d3d7;
401 sha256 = "19y5sv4k338bihzmm8iac6q43r18vxhmbpvrdhz8jn39r51ampq9";
402 };
403 };
404 };
405 "sensio/distribution-bundle" = {
406 targetDir = "";
407 src = composerEnv.buildZipPackage {
408 name = "sensio-distribution-bundle-59eac70f15f97ee945924948a6f5e2f6f86b7a4b";
409 src = fetchurl {
410 url = https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/59eac70f15f97ee945924948a6f5e2f6f86b7a4b;
411 sha256 = "05mj4c0ahwg6l2wipyqfyyjjp1m2vvl7ymp61nvwv7zhvqacvljs";
412 };
413 };
414 };
415 "sensio/framework-extra-bundle" = {
416 targetDir = "";
417 src = composerEnv.buildZipPackage {
418 name = "sensio-framework-extra-bundle-bb907234df776b68922eb4b25bfa061683597b6a";
419 src = fetchurl {
420 url = https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/bb907234df776b68922eb4b25bfa061683597b6a;
421 sha256 = "011hcljjcfq5qy4a7mlf0hwqxyb58yci40ini0n5rqandcyk2nck";
422 };
423 };
424 };
425 "sensiolabs/security-checker" = {
426 targetDir = "";
427 src = composerEnv.buildZipPackage {
428 name = "sensiolabs-security-checker-46be3f58adac13084497961e10eed9a7fb4d44d1";
429 src = fetchurl {
430 url = https://api.github.com/repos/sensiolabs/security-checker/zipball/46be3f58adac13084497961e10eed9a7fb4d44d1;
431 sha256 = "1caqf3hdfsajj9nb8fpinvs6apv90g1srwxcyxdnr6a8d6g0p6qi";
432 };
433 };
434 };
435 "swiftmailer/swiftmailer" = {
436 targetDir = "";
437 src = composerEnv.buildZipPackage {
438 name = "swiftmailer-swiftmailer-181b89f18a90f8925ef805f950d47a7190e9b950";
439 src = fetchurl {
440 url = https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950;
441 sha256 = "0hkmawv3bhbqdavy4wxqhzajg5zqd7chsi8w27y2zdi5r35az75d";
442 };
443 };
444 };
445 "symfony/assetic-bundle" = {
446 targetDir = "";
447 src = composerEnv.buildZipPackage {
448 name = "symfony-assetic-bundle-2e0a23a4874838e26de6f025e02fc63328921a4c";
449 src = fetchurl {
450 url = https://api.github.com/repos/symfony/assetic-bundle/zipball/2e0a23a4874838e26de6f025e02fc63328921a4c;
451 sha256 = "17rxrkyzxa6x5nn7qhhhdgx4z0nlznnq5fifza4wv9znca8bbwyc";
452 };
453 };
454 };
455 "symfony/monolog-bundle" = {
456 targetDir = "";
457 src = composerEnv.buildZipPackage {
458 name = "symfony-monolog-bundle-572e143afc03419a75ab002c80a2fd99299195ff";
459 src = fetchurl {
460 url = https://api.github.com/repos/symfony/monolog-bundle/zipball/572e143afc03419a75ab002c80a2fd99299195ff;
461 sha256 = "0g8icydnwfbqcbc56pqyc8bv1vp31331w0r75r3hqh225p2j1nd7";
462 };
463 };
464 };
465 "symfony/polyfill-apcu" = {
466 targetDir = "";
467 src = composerEnv.buildZipPackage {
468 name = "symfony-polyfill-apcu-19e1b73bf255265ad0b568f81766ae2a3266d8d2";
469 src = fetchurl {
470 url = https://api.github.com/repos/symfony/polyfill-apcu/zipball/19e1b73bf255265ad0b568f81766ae2a3266d8d2;
471 sha256 = "0jg33c81kwkpxk0b18jkslz9jkbkxl5k48h6m5b33dm63p1fj05r";
472 };
473 };
474 };
475 "symfony/polyfill-ctype" = {
476 targetDir = "";
477 src = composerEnv.buildZipPackage {
478 name = "symfony-polyfill-ctype-e3d826245268269cd66f8326bd8bc066687b4a19";
479 src = fetchurl {
480 url = https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19;
481 sha256 = "16md0qmy5jvvl7lc6n6r5hxjdr5i30vl6n9rpkm4b11rh2nqh7mh";
482 };
483 };
484 };
485 "symfony/polyfill-intl-icu" = {
486 targetDir = "";
487 src = composerEnv.buildZipPackage {
488 name = "symfony-polyfill-intl-icu-f22a90256d577c7ef7efad8df1f0201663d57644";
489 src = fetchurl {
490 url = https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/f22a90256d577c7ef7efad8df1f0201663d57644;
491 sha256 = "0x7h8l248l1gc07xmvfixq6p80ifdaa29qympfq3jzfb79k69slq";
492 };
493 };
494 };
495 "symfony/polyfill-mbstring" = {
496 targetDir = "";
497 src = composerEnv.buildZipPackage {
498 name = "symfony-polyfill-mbstring-c79c051f5b3a46be09205c73b80b346e4153e494";
499 src = fetchurl {
500 url = https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494;
501 sha256 = "18v2777cky55ah6xi4dh383mp4iddwzmnvx81qd86y1kgfykwhpi";
502 };
503 };
504 };
505 "symfony/polyfill-php56" = {
506 targetDir = "";
507 src = composerEnv.buildZipPackage {
508 name = "symfony-polyfill-php56-ff208829fe1aa48ab9af356992bb7199fed551af";
509 src = fetchurl {
510 url = https://api.github.com/repos/symfony/polyfill-php56/zipball/ff208829fe1aa48ab9af356992bb7199fed551af;
511 sha256 = "0vmpiwakc7hpbr6jwpk7cqcy41ybgwl6jkn3q8c4ryxynknn5hfk";
512 };
513 };
514 };
515 "symfony/polyfill-php70" = {
516 targetDir = "";
517 src = composerEnv.buildZipPackage {
518 name = "symfony-polyfill-php70-6b88000cdd431cd2e940caa2cb569201f3f84224";
519 src = fetchurl {
520 url = https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224;
521 sha256 = "08h77r1i2q4pwdd0yk3pfhqqgk0z7gwmkzmvykx9bfv1z7a0h8ik";
522 };
523 };
524 };
525 "symfony/polyfill-util" = {
526 targetDir = "";
527 src = composerEnv.buildZipPackage {
528 name = "symfony-polyfill-util-3b58903eae668d348a7126f999b0da0f2f93611c";
529 src = fetchurl {
530 url = https://api.github.com/repos/symfony/polyfill-util/zipball/3b58903eae668d348a7126f999b0da0f2f93611c;
531 sha256 = "00bb5mgljk6d54nyvd4gmc7mbzfr4b4q7h3rxmv8rzq613wcjp3i";
532 };
533 };
534 };
535 "symfony/swiftmailer-bundle" = {
536 targetDir = "";
537 src = composerEnv.buildZipPackage {
538 name = "symfony-swiftmailer-bundle-c4808f5169efc05567be983909d00f00521c53ec";
539 src = fetchurl {
540 url = https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec;
541 sha256 = "0jmd3slhb3gf3c3krmk2a9fi4ixdxvqlimdkfpj0sfaaq0115y01";
542 };
543 };
544 };
545 "symfony/symfony" = {
546 targetDir = "";
547 src = composerEnv.buildZipPackage {
548 name = "symfony-symfony-f6b8ddc362b1cf3fb06548693c3adbb736092412";
549 src = fetchurl {
550 url = https://api.github.com/repos/symfony/symfony/zipball/f6b8ddc362b1cf3fb06548693c3adbb736092412;
551 sha256 = "0ip7k5xf34w4p1zvv2nkv4nyik3asidk3zlgzyc1v57429z0f28q";
552 };
553 };
554 };
555 "twig/extensions" = {
556 targetDir = "";
557 src = composerEnv.buildZipPackage {
558 name = "twig-extensions-57873c8b0c1be51caa47df2cdb824490beb16202";
559 src = fetchurl {
560 url = https://api.github.com/repos/twigphp/Twig-extensions/zipball/57873c8b0c1be51caa47df2cdb824490beb16202;
561 sha256 = "1sjajjd6vnczvdrl9b8zhzr06l5dflzqiwg9d33d92q8gli4j7jn";
562 };
563 };
564 };
565 "twig/twig" = {
566 targetDir = "";
567 src = composerEnv.buildZipPackage {
568 name = "twig-twig-a11dd39f5b6589e14f0ff3b36675d06047c589b1";
569 src = fetchurl {
570 url = https://api.github.com/repos/twigphp/Twig/zipball/a11dd39f5b6589e14f0ff3b36675d06047c589b1;
571 sha256 = "0rnwam9379gj5m4ik0fh6c81dbr7kwj2b3x1gnmpf6awa5fm261n";
572 };
573 };
574 };
575 "zendframework/zend-code" = {
576 targetDir = "";
577 src = composerEnv.buildZipPackage {
578 name = "zendframework-zend-code-c21db169075c6ec4b342149f446e7b7b724f95eb";
579 src = fetchurl {
580 url = https://api.github.com/repos/zendframework/zend-code/zipball/c21db169075c6ec4b342149f446e7b7b724f95eb;
581 sha256 = "031mfsahjkl63348020wq05273kvszx0dv2766zmzncnd6fcggw1";
582 };
583 };
584 };
585 "zendframework/zend-eventmanager" = {
586 targetDir = "";
587 src = composerEnv.buildZipPackage {
588 name = "zendframework-zend-eventmanager-a5e2583a211f73604691586b8406ff7296a946dd";
589 src = fetchurl {
590 url = https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd;
591 sha256 = "08a05gn40hfdy2zhz4gcd3r6q7m7zcaks5kpvb9dx1awgx0pzr8n";
592 };
593 };
594 };
595 };
596 devPackages = {
597 "doctrine/data-fixtures" = {
598 targetDir = "";
599 src = composerEnv.buildZipPackage {
600 name = "doctrine-data-fixtures-3a1e2c3c600e615a2dffe56d4ca0875cc5233e0a";
601 src = fetchurl {
602 url = https://api.github.com/repos/doctrine/data-fixtures/zipball/3a1e2c3c600e615a2dffe56d4ca0875cc5233e0a;
603 sha256 = "0wbxhy7hq17laqgnq9x9ygysv0n1kn7s4x3v89pk7iy622pil3sm";
604 };
605 };
606 };
607 "doctrine/doctrine-fixtures-bundle" = {
608 targetDir = "";
609 src = composerEnv.buildZipPackage {
610 name = "doctrine-doctrine-fixtures-bundle-74b8cc70a4a25b774628ee59f4cdf3623a146273";
611 src = fetchurl {
612 url = https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/74b8cc70a4a25b774628ee59f4cdf3623a146273;
613 sha256 = "1bbflq8k6izwqgp9ka2gyb5y96a80b4lnlc5wrgc5gnih7hqidlf";
614 };
615 };
616 };
617 "fzaninotto/faker" = {
618 targetDir = "";
619 src = composerEnv.buildZipPackage {
620 name = "fzaninotto-faker-d0190b156bcca848d401fb80f31f504f37141c8d";
621 src = fetchurl {
622 url = https://api.github.com/repos/fzaninotto/Faker/zipball/d0190b156bcca848d401fb80f31f504f37141c8d;
623 sha256 = "1x7xrxw14x7b0iq7sxi9ynswk8ljga62i77ch7xip4dwgq1dypvi";
624 };
625 };
626 };
627 "league/factory-muffin" = {
628 targetDir = "";
629 src = composerEnv.buildZipPackage {
630 name = "league-factory-muffin-316ed2bac70178567f995d877b831804c9c58d5a";
631 src = fetchurl {
632 url = https://api.github.com/repos/thephpleague/factory-muffin/zipball/316ed2bac70178567f995d877b831804c9c58d5a;
633 sha256 = "1fxh0hsqifmnhgkwyd460x3w9wn74369lmak3f1m24mn2asiynxq";
634 };
635 };
636 };
637 "league/factory-muffin-faker" = {
638 targetDir = "";
639 src = composerEnv.buildZipPackage {
640 name = "league-factory-muffin-faker-30dbd11bb6be03b47e52bd60006ae198d20ab426";
641 src = fetchurl {
642 url = https://api.github.com/repos/thephpleague/factory-muffin-faker/zipball/30dbd11bb6be03b47e52bd60006ae198d20ab426;
643 sha256 = "0dsimjdnsmzdd4vwjzw1gz1bb4zlhmv66g3fc9k4nj5bqch6mny1";
644 };
645 };
646 };
647 "mikey179/vfsStream" = {
648 targetDir = "";
649 src = composerEnv.buildZipPackage {
650 name = "mikey179-vfsStream-d5fec95f541d4d71c4823bb5e30cf9b9e5b96145";
651 src = fetchurl {
652 url = https://github.com/bovigo/vfsStream/archive/v1.6.5.zip;
653 sha256 = "16vi7ci8nxq5hxnzzjmmia73gdm55qcwn006c6hgdwa3i58dnr4l";
654 };
655 };
656 };
657 "phpdocumentor/reflection-common" = {
658 targetDir = "";
659 src = composerEnv.buildZipPackage {
660 name = "phpdocumentor-reflection-common-21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6";
661 src = fetchurl {
662 url = https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6;
663 sha256 = "1yaf1zg9lnkfnq2ndpviv0hg5bza9vjvv5l4wgcn25lx1p8a94w2";
664 };
665 };
666 };
667 "phpdocumentor/reflection-docblock" = {
668 targetDir = "";
669 src = composerEnv.buildZipPackage {
670 name = "phpdocumentor-reflection-docblock-94fd0001232e47129dd3504189fa1c7225010d08";
671 src = fetchurl {
672 url = https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08;
673 sha256 = "03zvxqb5n9ddvysj8mjdwf59h7sagj5x5z15nhs7mqpcky1w388x";
674 };
675 };
676 };
677 "phpdocumentor/type-resolver" = {
678 targetDir = "";
679 src = composerEnv.buildZipPackage {
680 name = "phpdocumentor-type-resolver-9c977708995954784726e25d0cd1dddf4e65b0f7";
681 src = fetchurl {
682 url = https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7;
683 sha256 = "0h888r2iy2290yp9i3fij8wd5b7960yi7yn1rwh26x1xxd83n2mb";
684 };
685 };
686 };
687 "phpspec/prophecy" = {
688 targetDir = "";
689 src = composerEnv.buildZipPackage {
690 name = "phpspec-prophecy-4ba436b55987b4bf311cb7c6ba82aa528aac0a06";
691 src = fetchurl {
692 url = https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06;
693 sha256 = "0sz9fg8r4yvpgrhsh6qaic3p89pafdj8bdf4izbcccq6mdhclxn6";
694 };
695 };
696 };
697 "phpunit/php-code-coverage" = {
698 targetDir = "";
699 src = composerEnv.buildZipPackage {
700 name = "phpunit-php-code-coverage-eabf68b476ac7d0f73793aada060f1c1a9bf8979";
701 src = fetchurl {
702 url = https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979;
703 sha256 = "0xfkf2kaqrid0ajr8qfh3qnpiqqddl0cmmdy6hd7l9y7ziy6qz8d";
704 };
705 };
706 };
707 "phpunit/php-file-iterator" = {
708 targetDir = "";
709 src = composerEnv.buildZipPackage {
710 name = "phpunit-php-file-iterator-730b01bc3e867237eaac355e06a36b85dd93a8b4";
711 src = fetchurl {
712 url = https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4;
713 sha256 = "0kbg907g9hrx7pv8v0wnf4ifqywdgvigq6y6z00lyhgd0b8is060";
714 };
715 };
716 };
717 "phpunit/php-text-template" = {
718 targetDir = "";
719 src = composerEnv.buildZipPackage {
720 name = "phpunit-php-text-template-31f8b717e51d9a2afca6c9f046f5d69fc27c8686";
721 src = fetchurl {
722 url = https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686;
723 sha256 = "1y03m38qqvsbvyakd72v4dram81dw3swyn5jpss153i5nmqr4p76";
724 };
725 };
726 };
727 "phpunit/php-timer" = {
728 targetDir = "";
729 src = composerEnv.buildZipPackage {
730 name = "phpunit-php-timer-3dcf38ca72b158baf0bc245e9184d3fdffa9c46f";
731 src = fetchurl {
732 url = https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f;
733 sha256 = "1j04r0hqzrv6m1jk5nb92k2nnana72nscqpfk3rgv3fzrrv69ljr";
734 };
735 };
736 };
737 "phpunit/php-token-stream" = {
738 targetDir = "";
739 src = composerEnv.buildZipPackage {
740 name = "phpunit-php-token-stream-1ce90ba27c42e4e44e6d8458241466380b51fa16";
741 src = fetchurl {
742 url = https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16;
743 sha256 = "0j1v83m268cddhyzi8qvqfzhpz12hrm3dyw6skyqvljdp7l9x6lk";
744 };
745 };
746 };
747 "phpunit/phpunit" = {
748 targetDir = "";
749 src = composerEnv.buildZipPackage {
750 name = "phpunit-phpunit-46023de9a91eec7dfb06cc56cb4e260017298517";
751 src = fetchurl {
752 url = https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517;
753 sha256 = "0mxhgcmc575hw3n7czindgqiha8jhdi4p19h883vf15fg6xf5iv6";
754 };
755 };
756 };
757 "phpunit/phpunit-mock-objects" = {
758 targetDir = "";
759 src = composerEnv.buildZipPackage {
760 name = "phpunit-phpunit-mock-objects-ac8e7a3db35738d56ee9a76e78a4e03d97628983";
761 src = fetchurl {
762 url = https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983;
763 sha256 = "0s7nyyafdqw2hp7wsd2mxnjxpk26630vv3wii6hcdb0q8xy8r78i";
764 };
765 };
766 };
767 "sebastian/comparator" = {
768 targetDir = "";
769 src = composerEnv.buildZipPackage {
770 name = "sebastian-comparator-2b7424b55f5047b47ac6e5ccb20b2aea4011d9be";
771 src = fetchurl {
772 url = https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be;
773 sha256 = "0ymarxgnr8b3iy0w18h5z13iiv0ja17vjryryzfcwlqqhlc6w7iq";
774 };
775 };
776 };
777 "sebastian/diff" = {
778 targetDir = "";
779 src = composerEnv.buildZipPackage {
780 name = "sebastian-diff-7f066a26a962dbe58ddea9f72a4e82874a3975a4";
781 src = fetchurl {
782 url = https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4;
783 sha256 = "1ppx21vjj79z6d584ryq451k7kvdc511awmqjkj9g4vxj1s1h3j6";
784 };
785 };
786 };
787 "sebastian/environment" = {
788 targetDir = "";
789 src = composerEnv.buildZipPackage {
790 name = "sebastian-environment-be2c607e43ce4c89ecd60e75c6a85c126e754aea";
791 src = fetchurl {
792 url = https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea;
793 sha256 = "0gzgnk847kf18krq4ybbi2knzj7i0kdghsdlj6qynzzrlf7idij0";
794 };
795 };
796 };
797 "sebastian/exporter" = {
798 targetDir = "";
799 src = composerEnv.buildZipPackage {
800 name = "sebastian-exporter-42c4c2eec485ee3e159ec9884f95b431287edde4";
801 src = fetchurl {
802 url = https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4;
803 sha256 = "1p5mc4lqwxn79v06jjlgqxynblywcxw2mkhbf6r4jlz0bsrqafxn";
804 };
805 };
806 };
807 "sebastian/global-state" = {
808 targetDir = "";
809 src = composerEnv.buildZipPackage {
810 name = "sebastian-global-state-bc37d50fea7d017d3d340f230811c9f1d7280af4";
811 src = fetchurl {
812 url = https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4;
813 sha256 = "0y1x16mf9q38s7rlc7k2s6sxn2ccxmyk1q5zgh24hr4yp035f0pb";
814 };
815 };
816 };
817 "sebastian/recursion-context" = {
818 targetDir = "";
819 src = composerEnv.buildZipPackage {
820 name = "sebastian-recursion-context-b19cc3298482a335a95f3016d2f8a6950f0fbcd7";
821 src = fetchurl {
822 url = https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7;
823 sha256 = "1i9xdv55nkg1yy5q4lmpq1jsjif69hjrwmr1zha6b5qjf6ivlvjm";
824 };
825 };
826 };
827 "sebastian/version" = {
828 targetDir = "";
829 src = composerEnv.buildZipPackage {
830 name = "sebastian-version-58b3a85e7999757d6ad81c787a1fbf5ff6c628c6";
831 src = fetchurl {
832 url = https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6;
833 sha256 = "1s71b6ss29pcsm0120myriwnzla1kpj13f3f739c7k1wfm69h4wz";
834 };
835 };
836 };
837 "sensio/generator-bundle" = {
838 targetDir = "";
839 src = composerEnv.buildZipPackage {
840 name = "sensio-generator-bundle-28cbaa244bd0816fd8908b93f90380bcd7b67a65";
841 src = fetchurl {
842 url = https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65;
843 sha256 = "1j09y037xk843q8gcyfmwgy6dmn0h67pd5jnsvhj08h92ssbl0c3";
844 };
845 };
846 };
847 "symfony/phpunit-bridge" = {
848 targetDir = "";
849 src = composerEnv.buildZipPackage {
850 name = "symfony-phpunit-bridge-2155067dfc73e0e77dbc26f236af17e4df552de5";
851 src = fetchurl {
852 url = https://api.github.com/repos/symfony/phpunit-bridge/zipball/2155067dfc73e0e77dbc26f236af17e4df552de5;
853 sha256 = "1fhqyhvns69pkv086d1sp918bakqq9pk9d16nzck2s4pfdf097pj";
854 };
855 };
856 };
857 "webmozart/assert" = {
858 targetDir = "";
859 src = composerEnv.buildZipPackage {
860 name = "webmozart-assert-83e253c8e0be5b0257b881e1827274667c5c17a9";
861 src = fetchurl {
862 url = https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9;
863 sha256 = "0d84b0ms9mjpqx368gs7c3qs06mpbx5565j3vs43b1ygnyhhhaqk";
864 };
865 };
866 };
867 };
868}
diff --git a/modules/private/websites/ludivine/integration.nix b/modules/private/websites/ludivine/integration.nix
new file mode 100644
index 0000000..4e37c0c
--- /dev/null
+++ b/modules/private/websites/ludivine/integration.nix
@@ -0,0 +1,151 @@
1{ lib, pkgs, config, ... }:
2let
3 secrets = config.myEnv.websites.ludivine.integration;
4 app = pkgs.callPackage ./app {
5 environment = secrets.environment;
6 varDir = "/var/lib/ludivine_integration";
7 secretsPath = config.secrets.fullPaths."websites/ludivine/integration";
8 };
9 cfg = config.myServices.websites.ludivine.integration;
10 pcfg = config.services.phpApplication;
11in {
12 options.myServices.websites.ludivine.integration.enable = lib.mkEnableOption "enable Ludivine's website in integration";
13
14 config = lib.mkIf cfg.enable {
15 services.duplyBackup.profiles.ludivine_integration.rootDir = app.varDir;
16 services.phpApplication.apps.ludivine_integration = {
17 websiteEnv = "integration";
18 httpdUser = config.services.httpd.Inte.user;
19 httpdGroup = config.services.httpd.Inte.group;
20 inherit (app) webRoot varDir;
21 varDirPaths = {
22 "tmp" = "0700";
23 };
24 inherit app;
25 serviceDeps = [ "mysql.service" ];
26 preStartActions = [
27 "./bin/console --env=${app.environment} cache:clear --no-warmup"
28 ];
29 phpOpenbasedir = [ "/tmp" ];
30 phpPool = {
31 "php_admin_value[upload_max_filesize]" = "20M";
32 "php_admin_value[post_max_size]" = "20M";
33 #"php_admin_flag[log_errors]" = "on";
34 "pm" = "ondemand";
35 "pm.max_children" = "5";
36 "pm.process_idle_timeout" = "60";
37 };
38 phpEnv = {
39 PATH = lib.makeBinPath [
40 # below ones don't need to be in the PATH but they’re used in
41 # secrets
42 pkgs.imagemagick pkgs.sass pkgs.ruby
43 ];
44 SYMFONY_DEBUG_MODE = "\"yes\"";
45 };
46 phpWatchFiles = [
47 config.secrets.fullPaths."websites/ludivine/integration"
48 ];
49 };
50
51 secrets.keys = [
52 {
53 dest = "websites/ludivine/integration";
54 user = config.services.httpd.Inte.user;
55 group = config.services.httpd.Inte.group;
56 permissions = "0400";
57 text = ''
58 # This file is auto-generated during the composer install
59 parameters:
60 database_host: ${secrets.mysql.host}
61 database_port: ${secrets.mysql.port}
62 database_name: ${secrets.mysql.database}
63 database_user: ${secrets.mysql.user}
64 database_password: ${secrets.mysql.password}
65 database_server_version: ${pkgs.mariadb.mysqlVersion}
66 mailer_transport: smtp
67 mailer_host: 127.0.0.1
68 mailer_user: null
69 mailer_password: null
70 secret: ${secrets.secret}
71 ldap_host: ldap.immae.eu
72 ldap_port: 636
73 ldap_version: 3
74 ldap_ssl: true
75 ldap_tls: false
76 ldap_user_bind: 'uid={username},ou=users,dc=immae,dc=eu'
77 ldap_base_dn: 'dc=immae,dc=eu'
78 ldap_search_dn: '${secrets.ldap.dn}'
79 ldap_search_password: '${secrets.ldap.password}'
80 ldap_search_filter: '${secrets.ldap.filter}'
81 leapt_im:
82 binary_path: ${pkgs.imagemagick}/bin
83 assetic:
84 sass: ${pkgs.sass}/bin/sass
85 ruby: ${pkgs.ruby}/bin/ruby
86 '';
87 }
88 ];
89
90 services.websites.env.integration.vhostConfs.ludivine_integration = {
91 certName = "integration";
92 addToCerts = true;
93 hosts = [ "ludivine.immae.eu" ];
94 root = pcfg.webappDirs.ludivine_integration;
95 extraConfig = [
96 ''
97 <FilesMatch "\.php$">
98 SetHandler "proxy:unix:${pcfg.phpListenPaths.ludivine_integration}|fcgi://localhost"
99 </FilesMatch>
100
101 <Location />
102 Use LDAPConnect
103 Require ldap-group cn=ludivine.immae.eu,cn=httpd,ou=services,dc=immae,dc=eu
104 ErrorDocument 401 "<html><meta http-equiv=\"refresh\" content=\"0;url=https://ludivinecassal.com\"></html>"
105 </Location>
106
107 <Directory ${pcfg.webappDirs.ludivine_integration}>
108 Options Indexes FollowSymLinks MultiViews Includes
109 AllowOverride None
110 Require all granted
111
112 DirectoryIndex app_dev.php
113
114 <IfModule mod_negotiation.c>
115 Options -MultiViews
116 </IfModule>
117
118 <IfModule mod_rewrite.c>
119 RewriteEngine On
120
121 RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
122 RewriteRule ^(.*) - [E=BASE:%1]
123
124 # Maintenance script
125 RewriteCond %{DOCUMENT_ROOT}/maintenance.php -f
126 RewriteCond %{SCRIPT_FILENAME} !maintenance.php
127 RewriteRule ^.*$ %{ENV:BASE}/maintenance.php [R=503,L]
128 ErrorDocument 503 /maintenance.php
129
130 # Sets the HTTP_AUTHORIZATION header removed by Apache
131 RewriteCond %{HTTP:Authorization} .
132 RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
133
134 RewriteCond %{ENV:REDIRECT_STATUS} ^$
135 RewriteRule ^app_dev\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
136
137 # If the requested filename exists, simply serve it.
138 # We only want to let Apache serve files and not directories.
139 RewriteCond %{REQUEST_FILENAME} -f
140 RewriteRule ^ - [L]
141
142 # Rewrite all other queries to the front controller.
143 RewriteRule ^ %{ENV:BASE}/app_dev.php [L]
144 </IfModule>
145
146 </Directory>
147 ''
148 ];
149 };
150 };
151}
diff --git a/modules/private/websites/ludivine/production.nix b/modules/private/websites/ludivine/production.nix
new file mode 100644
index 0000000..47450c5
--- /dev/null
+++ b/modules/private/websites/ludivine/production.nix
@@ -0,0 +1,118 @@
1{ lib, pkgs, config, ... }:
2let
3 secrets = config.myEnv.websites.ludivine.production;
4 app = pkgs.callPackage ./app {
5 environment = secrets.environment;
6 varDir = "/var/lib/ludivine_production";
7 secretsPath = config.secrets.fullPaths."websites/ludivine/production";
8 };
9 pcfg = config.services.phpApplication;
10 cfg = config.myServices.websites.ludivine.production;
11in {
12 options.myServices.websites.ludivine.production.enable = lib.mkEnableOption "enable Ludivine's website in production";
13
14 config = lib.mkIf cfg.enable {
15 services.duplyBackup.profiles.ludivine_production.rootDir = app.varDir;
16 services.webstats.sites = [ { name = "ludivinecassal.com"; } ];
17 services.phpApplication.apps.ludivine_production = {
18 websiteEnv = "production";
19 httpdUser = config.services.httpd.Prod.user;
20 httpdGroup = config.services.httpd.Prod.group;
21 inherit (app) webRoot varDir;
22 varDirPaths = {
23 "tmp" = "0700";
24 };
25 inherit app;
26 serviceDeps = [ "mysql.service" ];
27 preStartActions = [
28 "./bin/console --env=${app.environment} cache:clear --no-warmup"
29 ];
30 phpOpenbasedir = [ "/tmp" ];
31 phpPool = {
32 "php_admin_value[upload_max_filesize]" = "20M";
33 "php_admin_value[post_max_size]" = "20M";
34 #"php_admin_flag[log_errors]" = "on";
35 "pm" = "dynamic";
36 "pm.max_children" = "20";
37 "pm.start_servers" = "2";
38 "pm.min_spare_servers" = "1";
39 "pm.max_spare_servers" = "3";
40 };
41 phpWatchFiles = [
42 config.secrets.fullPaths."websites/ludivine/production"
43 ];
44 phpEnv = {
45 PATH = lib.makeBinPath [
46 # below ones don't need to be in the PATH but they’re used in
47 # secrets
48 pkgs.imagemagick pkgs.sass pkgs.ruby
49 ];
50 };
51 };
52
53 secrets.keys = [
54 {
55 dest = "websites/ludivine/production";
56 user = config.services.httpd.Prod.user;
57 group = config.services.httpd.Prod.group;
58 permissions = "0400";
59 text = ''
60 # This file is auto-generated during the composer install
61 parameters:
62 database_host: ${secrets.mysql.host}
63 database_port: ${secrets.mysql.port}
64 database_name: ${secrets.mysql.database}
65 database_user: ${secrets.mysql.user}
66 database_password: ${secrets.mysql.password}
67 database_server_version: ${pkgs.mariadb.mysqlVersion}
68 mailer_transport: smtp
69 mailer_host: 127.0.0.1
70 mailer_user: null
71 mailer_password: null
72 secret: ${secrets.secret}
73 ldap_host: ldap.immae.eu
74 ldap_port: 636
75 ldap_version: 3
76 ldap_ssl: true
77 ldap_tls: false
78 ldap_user_bind: 'uid={username},ou=users,dc=immae,dc=eu'
79 ldap_base_dn: 'dc=immae,dc=eu'
80 ldap_search_dn: '${secrets.ldap.dn}'
81 ldap_search_password: '${secrets.ldap.password}'
82 ldap_search_filter: '${secrets.ldap.filter}'
83 leapt_im:
84 binary_path: ${pkgs.imagemagick}/bin
85 assetic:
86 sass: ${pkgs.sass}/bin/sass
87 ruby: ${pkgs.ruby}/bin/ruby
88 '';
89 }
90 ];
91
92 services.websites.env.production.vhostConfs.ludivine_production = {
93 certName = "ludivine";
94 certMainHost = "ludivinecassal.com";
95 hosts = ["ludivinecassal.com" "www.ludivinecassal.com" ];
96 root = pcfg.webappDirs.ludivine_production;
97 extraConfig = [
98 ''
99 RewriteEngine on
100 RewriteCond "%{HTTP_HOST}" "!^ludivinecassal\.com$" [NC]
101 RewriteRule ^(.+)$ https://ludivinecassal.com$1 [R=302,L]
102
103 <FilesMatch "\.php$">
104 SetHandler "proxy:unix:${pcfg.phpListenPaths.ludivine_production}|fcgi://localhost"
105 </FilesMatch>
106
107 Use Stats ludivinecassal.com
108
109 <Directory ${pcfg.webappDirs.ludivine_production}>
110 Options Indexes FollowSymLinks MultiViews Includes
111 AllowOverride All
112 Require all granted
113 </Directory>
114 ''
115 ];
116 };
117 };
118}