- webappDir = stdenv.mkDerivation (fetchedGitPrivate ./aten.json // rec {
- buildPhase = ''
- export GIT_SSL_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
- export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
- export APP_ENV="${environment}"
- export DATABASE_URL="${config.psql_url}"
- export APP_SECRET="${config.secret}"
-
- ${if environment == "dev" then ''
- composer install
- '' else ''
- SYMFONY_ENV=prod composer install --no-dev
- ''}
- yarn install
- yarn run encore production
- rm -rf var
- ln -sf ../../../../../${varDir} var
- '';
- installPhase = ''
- cp -a . $out
- '';
- buildInputs = [
- php git cacert phpPackages.composer yarn
- ];
- });
+ yarnModules = let
+ info = fetchedGitPrivate ./aten.json;
+ in
+ yarn2nix.mkYarnModules {
+ name = "aten-yarn-modules";
+ packageJSON = "${info.src}/package.json";
+ yarnLock = "${info.src}/yarn.lock";
+ pkgConfig = {
+ node-sass = {
+ buildInputs = [ binutils libsass python ];
+ postInstall = let
+ nodeHeaders = fetchurl {
+ url = "https://nodejs.org/download/release/v${nodejs.version}/node-v${nodejs.version}-headers.tar.gz";
+ sha256 = "12zzsf8my43b8qnlacp871ih5vqafl2vlpqp51xp6h3gckn2frwy";
+ };
+ in
+ ''
+ export AR=${binutils.bintools}/bin/ar
+ node scripts/build.js --tarball=${nodeHeaders}
+ '';
+ };
+ };
+ };
+ webappDir = composerEnv.buildPackage (
+ import ./php-packages.nix { inherit composerEnv fetchurl fetchgit; } //
+ fetchedGitPrivate ./aten.json //
+ rec {
+ noDev = (environment == "prod");
+ preInstall = ''
+ export SYMFONY_ENV="${environment}"
+ export APP_ENV="${environment}"
+ export DATABASE_URL="${config.psql_url}"
+ export APP_SECRET="${config.secret}"
+ '';
+ postInstall = ''
+ cd $out
+ ln -sf ${yarnModules}/node_modules .
+ yarn run --offline encore production
+ rm -rf var/{log,cache}
+ ln -sf ../../../../../../../${varDir}/{log,cache} var/
+ '';
+ buildInputs = [ yarn2nix.yarn ];
+ });