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