--- /dev/null
+{ environment ? "prod"
+, varDir ? "/var/lib/aten_${environment}"
+, mylibs, composerEnv, fetchgit, runCommand, nodejs, jq, libsass, python, fetchurl }:
+let
+ packagesource = mylibs.fetchedGitPrivate ./aten.json;
+ packagejson = runCommand "package.json" { buildInputs = [ jq ]; } ''
+ cat ${packagesource.src}/package.json | jq -r '.version = "v1.0.0"|.name="aten"' > $out
+ '';
+ yarnModules = mylibs.yarn2nixPackage.mkYarnModules rec {
+ name = "aten-yarn";
+ pname = name;
+ version = "v1.0.0";
+ packageJSON = packagejson;
+ yarnLock = "${packagesource.src}/yarn.lock";
+ pkgConfig = {
+ all = {
+ buildInputs = [ mylibs.yarn2nixPackage.src ];
+ };
+ 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 = "16f20ya3ys6w5w6y6l4536f7jrgk4gz46bf71w1r1xxb26a54m32";
+ };
+ in
+ ''
+ node scripts/build.js --tarball=${nodeHeaders}
+ '';
+ };
+ };
+ };
+ app = composerEnv.buildPackage (
+ import ./php-packages.nix { inherit composerEnv fetchurl fetchgit; } //
+ packagesource //
+ rec {
+ 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 mylibs.yarn2nixPackage.yarn ];
+ passthru = {
+ inherit varDir;
+ inherit environment;
+ webRoot = "${app}/public";
+ };
+ }
+ );
+in app