]> git.immae.eu Git - perso/Immae/Config/Nix/NUR.git/blobdiff - pkgs/webapps/grocy/default.nix
Add grocy
[perso/Immae/Config/Nix/NUR.git] / pkgs / webapps / grocy / default.nix
diff --git a/pkgs/webapps/grocy/default.nix b/pkgs/webapps/grocy/default.nix
new file mode 100644 (file)
index 0000000..3a8e55a
--- /dev/null
@@ -0,0 +1,45 @@
+{ varDir ? "/var/lib/grocy", stdenv, callPackage, composerEnv, fetchurl, mylibs, runCommand, git, which, jq }:
+let
+  version = "2.6.1-1";
+  packagesource = mylibs.fetchedGithub ./grocy.json;
+  patchedPackages = stdenv.mkDerivation (packagesource // rec {
+    buildInputs = [ jq ];
+    patches = [ ./yarn.patch ];
+    installPhase = ''
+      mkdir $out
+      cat package.json | jq -r '.version = "${version}"' > $out/package.json
+      cp yarn.lock $out/
+      '';
+  });
+  yarnModules = mylibs.yarn2nixPackage.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 mylibs.yarn2nixPackage.src ];
+      };
+    };
+  };
+  app = composerEnv.buildPackage (
+    import ./php-packages.nix { inherit composerEnv fetchurl; } //
+    packagesource //
+    {
+      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