]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - flakes/grocy/default.nix
Squash changes containing private information
[perso/Immae/Config/Nix.git] / flakes / grocy / default.nix
diff --git a/flakes/grocy/default.nix b/flakes/grocy/default.nix
new file mode 100644 (file)
index 0000000..26b6ed8
--- /dev/null
@@ -0,0 +1,47 @@
+{ varDir ? "/var/lib/grocy", stdenv, callPackage, composerEnv, fetchurl, src, runCommand, git, which, jq, yarn2nix-moretea }:
+let
+  version = "2.6.1-1";
+  patchedPackages = stdenv.mkDerivation rec {
+    name = "grocy";
+    inherit src;
+    buildInputs = [ jq ];
+    patches = [ ./yarn.patch ];
+    installPhase = ''
+      mkdir $out
+      cat package.json | jq -r '.version = "${version}"' > $out/package.json
+      cp yarn.lock $out/
+      '';
+  };
+  yarnModules = yarn2nix-moretea.mkYarnModules rec {
+    name = "grocy-yarn";
+    pname = name;
+    version = version;
+    packageJSON = "${patchedPackages}/package.json";
+    yarnLock = "${patchedPackages}/yarn.lock";
+    yarnNix = ./yarn-packages.nix;
+    pkgConfig = {
+      all = {
+        buildInputs = [ git which ];
+      };
+    };
+  };
+  app = composerEnv.buildPackage (
+    import ./php-packages.nix { inherit composerEnv fetchurl; } //
+    {
+      name = "grocy";
+      inherit src;
+      noDev = true;
+      buildInputs = [ yarnModules ];
+      postInstall = ''
+        rm -rf data
+        ln -sf ${varDir}/data data
+        ln -sf ${yarnModules}/node_modules public
+      '';
+      passthru = {
+        inherit varDir yarnModules;
+        webRoot = "${app}/public";
+      };
+    }
+  );
+in
+  app