]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - pkgs/private/webapps/aten/default.nix
Move Aten packages to pkgs
[perso/Immae/Config/Nix.git] / pkgs / private / webapps / aten / default.nix
diff --git a/pkgs/private/webapps/aten/default.nix b/pkgs/private/webapps/aten/default.nix
new file mode 100644 (file)
index 0000000..e6ca048
--- /dev/null
@@ -0,0 +1,56 @@
+{ 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