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