aboutsummaryrefslogtreecommitdiff
path: root/modules/private/websites/florian
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/florian
parent514f9ec3beec470c4445be690673a0ceab9115b4 (diff)
downloadNix-d3452fc59b9839846225fd254926c64a9c71f071.tar.gz
Nix-d3452fc59b9839846225fd254926c64a9c71f071.tar.zst
Nix-d3452fc59b9839846225fd254926c64a9c71f071.zip
Refactor websites
Diffstat (limited to 'modules/private/websites/florian')
-rw-r--r--modules/private/websites/florian/app.nix30
-rw-r--r--modules/private/websites/florian/app/default.nix26
-rw-r--r--modules/private/websites/florian/app/php-packages.nix389
-rw-r--r--modules/private/websites/florian/app/tellesflorian.json14
-rw-r--r--modules/private/websites/florian/integration.nix14
-rw-r--r--modules/private/websites/florian/production.nix14
6 files changed, 460 insertions, 27 deletions
diff --git a/modules/private/websites/florian/app.nix b/modules/private/websites/florian/app.nix
index c65c26f..19a88b0 100644
--- a/modules/private/websites/florian/app.nix
+++ b/modules/private/websites/florian/app.nix
@@ -2,15 +2,19 @@
2let 2let
3 adminer = pkgs.callPackage ../commons/adminer.nix { inherit config; }; 3 adminer = pkgs.callPackage ../commons/adminer.nix { inherit config; };
4 secrets = config.myEnv.websites.tellesflorian.integration; 4 secrets = config.myEnv.websites.tellesflorian.integration;
5 app = pkgs.webapps.tellesflorian.override { environment = secrets.environment; }; 5 app = pkgs.callPackage ./app {
6 environment = secrets.environment;
7 varDir = "/var/lib/florian_app";
8 secretsPath = config.secrets.fullPaths."websites/florian/app";
9 };
6 cfg = config.myServices.websites.florian.app; 10 cfg = config.myServices.websites.florian.app;
7 pcfg = config.services.phpApplication; 11 pcfg = config.services.phpApplication;
8in { 12in {
9 options.myServices.websites.florian.app.enable = lib.mkEnableOption "enable Florian's app in integration"; 13 options.myServices.websites.florian.app.enable = lib.mkEnableOption "enable Florian's app in integration";
10 14
11 config = lib.mkIf cfg.enable { 15 config = lib.mkIf cfg.enable {
12 services.duplyBackup.profiles.tellesflorian_dev.rootDir = app.varDir; 16 services.duplyBackup.profiles.florian_app.rootDir = app.varDir;
13 services.phpApplication.apps.florian_dev = { 17 services.phpApplication.apps.florian_app = {
14 websiteEnv = "integration"; 18 websiteEnv = "integration";
15 httpdUser = config.services.httpd.Inte.user; 19 httpdUser = config.services.httpd.Inte.user;
16 httpdGroup = config.services.httpd.Inte.group; 20 httpdGroup = config.services.httpd.Inte.group;
@@ -33,16 +37,16 @@ in {
33 "pm.process_idle_timeout" = "60"; 37 "pm.process_idle_timeout" = "60";
34 }; 38 };
35 phpEnv = { 39 phpEnv = {
36 SYMFONY_DEBUG_MODE = "yes"; 40 SYMFONY_DEBUG_MODE = "\"yes\"";
37 }; 41 };
38 phpWatchFiles = [ 42 phpWatchFiles = [
39 config.secrets.fullPaths."webapps/${app.environment}-tellesflorian" 43 config.secrets.fullPaths."websites/florian/app"
40 ]; 44 ];
41 }; 45 };
42 46
43 secrets.keys = [ 47 secrets.keys = [
44 { 48 {
45 dest = "webapps/${app.environment}-tellesflorian-passwords"; 49 dest = "websites/florian/app_passwords";
46 user = config.services.httpd.Inte.user; 50 user = config.services.httpd.Inte.user;
47 group = config.services.httpd.Inte.group; 51 group = config.services.httpd.Inte.group;
48 permissions = "0400"; 52 permissions = "0400";
@@ -51,7 +55,7 @@ in {
51 ''; 55 '';
52 } 56 }
53 { 57 {
54 dest = "webapps/${app.environment}-tellesflorian"; 58 dest = "websites/florian/app";
55 user = config.services.httpd.Inte.user; 59 user = config.services.httpd.Inte.user;
56 group = config.services.httpd.Inte.group; 60 group = config.services.httpd.Inte.group;
57 permissions = "0400"; 61 permissions = "0400";
@@ -73,15 +77,15 @@ in {
73 ]; 77 ];
74 78
75 services.websites.env.integration.modules = adminer.apache.modules; 79 services.websites.env.integration.modules = adminer.apache.modules;
76 services.websites.env.integration.vhostConfs.florian_dev = { 80 services.websites.env.integration.vhostConfs.florian_app = {
77 certName = "integration"; 81 certName = "integration";
78 addToCerts = true; 82 addToCerts = true;
79 hosts = [ "app.tellesflorian.com" ]; 83 hosts = [ "app.tellesflorian.com" ];
80 root = pcfg.webappDirs.florian_dev; 84 root = pcfg.webappDirs.florian_app;
81 extraConfig = [ 85 extraConfig = [
82 '' 86 ''
83 <FilesMatch "\.php$"> 87 <FilesMatch "\.php$">
84 SetHandler "proxy:unix:${pcfg.phpListenPaths.florian_dev}|fcgi://localhost" 88 SetHandler "proxy:unix:${pcfg.phpListenPaths.florian_app}|fcgi://localhost"
85 </FilesMatch> 89 </FilesMatch>
86 90
87 <Location /> 91 <Location />
@@ -89,13 +93,13 @@ in {
89 Use LDAPConnect 93 Use LDAPConnect
90 Require ldap-group cn=app.tellesflorian.com,cn=httpd,ou=services,dc=immae,dc=eu 94 Require ldap-group cn=app.tellesflorian.com,cn=httpd,ou=services,dc=immae,dc=eu
91 95
92 AuthUserFile "${config.secrets.fullPaths."webapps/${app.environment}-tellesflorian-passwords"}" 96 AuthUserFile "${config.secrets.fullPaths."websites/florian/app_passwords"}"
93 Require user "invite" 97 Require user "invite"
94 98
95 ErrorDocument 401 "<html><meta http-equiv=\"refresh\" content=\"0;url=https://tellesflorian.com\"></html>" 99 ErrorDocument 401 "<html><meta http-equiv=\"refresh\" content=\"0;url=https://tellesflorian.com\"></html>"
96 </Location> 100 </Location>
97 101
98 <Directory ${pcfg.webappDirs.florian_dev}> 102 <Directory ${pcfg.webappDirs.florian_app}>
99 Options Indexes FollowSymLinks MultiViews Includes 103 Options Indexes FollowSymLinks MultiViews Includes
100 AllowOverride None 104 AllowOverride None
101 Require all granted 105 Require all granted
diff --git a/modules/private/websites/florian/app/default.nix b/modules/private/websites/florian/app/default.nix
new file mode 100644
index 0000000..b31e12d
--- /dev/null
+++ b/modules/private/websites/florian/app/default.nix
@@ -0,0 +1,26 @@
1{ environment ? "prod"
2, varDir ? "/var/lib/tellesflorian_${environment}"
3, secretsPath ? "/var/secrets/webapps/${environment}-tellesflorian"
4, composerEnv, fetchurl, mylibs }:
5let
6 app = composerEnv.buildPackage (
7 import ./php-packages.nix { inherit composerEnv fetchurl; } //
8 mylibs.fetchedGitPrivate ./tellesflorian.json //
9 rec {
10 noDev = (environment == "prod");
11 preInstall = ''
12 export SYMFONY_ENV="${environment}"
13 '';
14 postInstall = ''
15 cd $out
16 rm app/config/parameters.yml
17 ln -sf ${secretsPath} app/config/parameters.yml
18 rm -rf var/{logs,cache}
19 ln -sf ${varDir}/var/{logs,cache,sessions} var/
20 '';
21 passthru = {
22 inherit varDir environment;
23 webRoot = "${app}/web";
24 };
25 });
26in app
diff --git a/modules/private/websites/florian/app/php-packages.nix b/modules/private/websites/florian/app/php-packages.nix
new file mode 100644
index 0000000..0c7e00c
--- /dev/null
+++ b/modules/private/websites/florian/app/php-packages.nix
@@ -0,0 +1,389 @@
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/modules/private/websites/florian/app/tellesflorian.json b/modules/private/websites/florian/app/tellesflorian.json
new file mode 100644
index 0000000..693336d
--- /dev/null
+++ b/modules/private/websites/florian/app/tellesflorian.json
@@ -0,0 +1,14 @@
1{
2 "tag": "1793d5c-master",
3 "meta": {
4 "name": "tellesflorian",
5 "url": "ssh://gitolite@git.immae.eu/perso/florian_telles/stabilo",
6 "branch": "master"
7 },
8 "git": {
9 "url": "ssh://gitolite@git.immae.eu/perso/florian_telles/stabilo",
10 "rev": "1793d5c7912d1b20ad1df1ac59be9d7f1220e919",
11 "sha256": "1zhxcrbglbjb6xfr8sfm4m2miabbkkb0a7543va3b5akrn6yk0cb",
12 "fetchSubmodules": true
13 }
14}
diff --git a/modules/private/websites/florian/integration.nix b/modules/private/websites/florian/integration.nix
index 4ee160a..5ebe531 100644
--- a/modules/private/websites/florian/integration.nix
+++ b/modules/private/websites/florian/integration.nix
@@ -1,9 +1,9 @@
1{ lib, pkgs, config, ... }: 1{ lib, pkgs, config, ... }:
2let 2let
3 adminer = pkgs.callPackage ../commons/adminer.nix { inherit config; }; 3 adminer = pkgs.callPackage ../commons/adminer.nix { inherit config; };
4 cfg = config.myServices.websites.florian.integration; 4 cfg = config.myServices.websites.florian.integration;
5 varDir = "/var/lib/ftp/florian"; 5 varDir = "/var/lib/ftp/florian/florian.immae.eu";
6 env = config.myEnv.websites.florian; 6 env = config.myEnv.websites.florian;
7in { 7in {
8 options.myServices.websites.florian.integration.enable = lib.mkEnableOption "enable Florian's website integration"; 8 options.myServices.websites.florian.integration.enable = lib.mkEnableOption "enable Florian's website integration";
9 9
@@ -11,17 +11,17 @@ in {
11 security.acme.certs."ftp".extraDomains."florian.immae.eu" = null; 11 security.acme.certs."ftp".extraDomains."florian.immae.eu" = null;
12 12
13 services.websites.env.integration.modules = adminer.apache.modules; 13 services.websites.env.integration.modules = adminer.apache.modules;
14 services.websites.env.integration.vhostConfs.florian = { 14 services.websites.env.integration.vhostConfs.florian_integration = {
15 certName = "integration"; 15 certName = "integration";
16 addToCerts = true; 16 addToCerts = true;
17 hosts = [ "florian.immae.eu" ]; 17 hosts = [ "florian.immae.eu" ];
18 root = "${varDir}/florian.immae.eu"; 18 root = varDir;
19 extraConfig = [ 19 extraConfig = [
20 (adminer.apache.vhostConf null) 20 (adminer.apache.vhostConf null)
21 '' 21 ''
22 ServerAdmin ${env.server_admin} 22 ServerAdmin ${env.server_admin}
23 23
24 <Directory ${varDir}/florian.immae.eu> 24 <Directory ${varDir}>
25 DirectoryIndex index.php index.htm index.html 25 DirectoryIndex index.php index.htm index.html
26 Options Indexes FollowSymLinks MultiViews Includes 26 Options Indexes FollowSymLinks MultiViews Includes
27 AllowOverride None 27 AllowOverride None
diff --git a/modules/private/websites/florian/production.nix b/modules/private/websites/florian/production.nix
index 16c6022..1c5ffa6 100644
--- a/modules/private/websites/florian/production.nix
+++ b/modules/private/websites/florian/production.nix
@@ -1,9 +1,9 @@
1{ lib, pkgs, config, ... }: 1{ lib, pkgs, config, ... }:
2let 2let
3 adminer = pkgs.callPackage ../commons/adminer.nix { inherit config; }; 3 adminer = pkgs.callPackage ../commons/adminer.nix { inherit config; };
4 cfg = config.myServices.websites.florian.production; 4 cfg = config.myServices.websites.florian.production;
5 varDir = "/var/lib/ftp/florian"; 5 varDir = "/var/lib/ftp/florian/tellesflorian.com";
6 env = config.myEnv.websites.florian; 6 env = config.myEnv.websites.florian;
7in { 7in {
8 options.myServices.websites.florian.production.enable = lib.mkEnableOption "enable Florian's website production"; 8 options.myServices.websites.florian.production.enable = lib.mkEnableOption "enable Florian's website production";
9 9
@@ -11,17 +11,17 @@ in {
11 security.acme.certs."ftp".extraDomains."tellesflorian.com" = null; 11 security.acme.certs."ftp".extraDomains."tellesflorian.com" = null;
12 12
13 services.websites.env.production.modules = adminer.apache.modules; 13 services.websites.env.production.modules = adminer.apache.modules;
14 services.websites.env.production.vhostConfs.florian = { 14 services.websites.env.production.vhostConfs.florian_production = {
15 certName = "florian"; 15 certName = "florian";
16 certMainHost = "tellesflorian.com"; 16 certMainHost = "tellesflorian.com";
17 hosts = [ "tellesflorian.com" "www.tellesflorian.com" ]; 17 hosts = [ "tellesflorian.com" "www.tellesflorian.com" ];
18 root = "${varDir}/tellesflorian.com"; 18 root = varDir;
19 extraConfig = [ 19 extraConfig = [
20 (adminer.apache.vhostConf null) 20 (adminer.apache.vhostConf null)
21 '' 21 ''
22 ServerAdmin ${env.server_admin} 22 ServerAdmin ${env.server_admin}
23 23
24 <Directory ${varDir}/tellesflorian.com> 24 <Directory ${varDir}>
25 DirectoryIndex index.php index.htm index.html 25 DirectoryIndex index.php index.htm index.html
26 Options Indexes FollowSymLinks MultiViews Includes 26 Options Indexes FollowSymLinks MultiViews Includes
27 AllowOverride None 27 AllowOverride None