]> git.immae.eu Git - perso/Immae/Config/Nix.git/blob - modules/private/websites/isabelle/aten_app/default.nix
Upgrade nixos-unstable
[perso/Immae/Config/Nix.git] / modules / private / websites / isabelle / aten_app / default.nix
1 { environment ? "prod"
2 , varDir ? "/var/lib/aten_${environment}"
3 , composerEnv, fetchgit, runCommand, nodejs-10_x, jq, libsass, python, fetchurl, yarn2nix-moretea, yarn, sources }:
4 let
5 yarn2nix-moretea' = yarn2nix-moretea.override({
6 yarn = yarn.override({ nodejs = nodejs-10_x; });
7 nodejs = nodejs-10_x;
8 });
9 packagesource = sources.websites-isabelle-aten;
10 packagejson = runCommand "package.json" { buildInputs = [ jq ]; } ''
11 cat ${packagesource}/package.json | jq -r '.version = "v1.0.0"|.name="aten"' > $out
12 '';
13 yarnModules = yarn2nix-moretea'.mkYarnModules rec {
14 name = "aten-yarn";
15 pname = name;
16 version = "v1.0.0";
17 packageJSON = packagejson;
18 yarnLock = "${packagesource}/yarn.lock";
19 yarnNix = ./yarn-packages.nix;
20 pkgConfig = {
21 node-sass = {
22 buildInputs = [ libsass python ];
23 postInstall = let
24 nodeHeaders = fetchurl {
25 url = "https://nodejs.org/download/release/v${nodejs-10_x.version}/node-v${nodejs-10_x.version}-headers.tar.gz";
26 sha256 = "15hkcbs328d3rc1s14rmky8lh8d3rr86l8k0bia0ggxzwl23lj9c";
27 };
28 in
29 ''
30 node scripts/build.js --tarball=${nodeHeaders}
31 '';
32 };
33 };
34 };
35 app = composerEnv.buildPackage (
36 import ./php-packages.nix { inherit composerEnv fetchurl fetchgit; } //
37 rec {
38 version = packagesource.version;
39 pname = "aten";
40 name = "${pname}-${version}";
41 src = packagesource;
42 noDev = (environment == "prod");
43 preInstall = ''
44 export SYMFONY_ENV="${environment}"
45 export APP_ENV="${environment}"
46 '';
47 postInstall = ''
48 ln -sf ${yarnModules}/node_modules .
49 yarn run --offline encore production
50 rm -rf var/{log,cache}
51 ln -sf ${varDir}/{log,cache} var/
52 '';
53 buildInputs = [ yarnModules yarn2nix-moretea'.yarn ];
54 passthru = {
55 inherit varDir;
56 inherit environment;
57 webRoot = "${app}/public";
58 };
59 }
60 );
61 in app