]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - nixops/modules/websites/tools/mastodon/mastodon.nix
Upgrade mastodon to 2.7.4
[perso/Immae/Config/Nix.git] / nixops / modules / websites / tools / mastodon / mastodon.nix
index bc4014d1bf5d432f532427862c697fadc962f344..d4e437ac67cbcda1a2a4ac264df7093d1dde6b27 100644 (file)
@@ -1,17 +1,24 @@
-{ env, ruby_2_5, bundlerEnv, defaultGemConfig, fetchedGithub, stdenv, writeText, pkgs }:
+{ env, ruby_2_6, bundlerEnv, defaultGemConfig, yarn2nixPackage, fetchedGithub, stdenv, writeText, pkgs }:
 let
   varDir = "/var/lib/mastodon_immae";
   socketsDir = "/run/mastodon";
   gems = bundlerEnv {
     name = "mastodon-env";
-    # https://git.immae.eu/mantisbt/view.php?id=131
-    ruby = ruby_2_5.overrideAttrs(old: {
-      postInstall = builtins.replaceStrings [" --destdir $GEM_HOME"] [""] old.postInstall;
-    });
+    ruby = ruby_2_6;
     gemset = ./gemset.nix;
     gemdir = (fetchedGithub ./mastodon.json).src;
     groups = [ "default" "production" "test" "development" ];
     gemConfig = defaultGemConfig // {
+      redis-rack = attrs: {
+        preBuild = ''
+          sed -i 's!s\.files.*!!' redis-rack.gemspec
+          '';
+      };
+      tzinfo = attrs: {
+        preBuild = ''
+          sed -i 's!s\.files.*!!' tzinfo.gemspec
+          '';
+      };
       cld3 = attrs: {
         buildInputs = with pkgs; [ protobuf protobufc pkgconfig ];
       };
@@ -25,10 +32,15 @@ let
   };
   yarnModules = let
       info = fetchedGithub ./mastodon.json;
+      packagejson = pkgs.runCommand "package.json" { buildInputs = [ pkgs.jq ]; } ''
+        cat ${info.src}/package.json | jq -r '.version = "${info.version}"' > $out
+        '';
     in
-      pkgs.yarn2nix.mkYarnModules {
-        name = "mastodon-yarn-modules";
-        packageJSON = "${info.src}/package.json";
+      yarn2nixPackage.mkYarnModules rec {
+        name = "mastodon-yarn";
+        pname = name;
+        version = info.version;
+        packageJSON = packagejson;
         yarnLock = "${info.src}/yarn.lock";
         yarnNix = ./yarn-packages.nix;
         pkgConfig = {
@@ -37,23 +49,6 @@ let
               npx node-gyp rebuild > build_log.txt 2>&1 || true
               '';
           };
-          node-zopfli = {
-            postInstall = ''
-              npx node-pre-gyp install --fallback-to-build
-              '';
-          };
-          node-sass = {
-            buildInputs = with pkgs; [ libsass python ];
-            postInstall = let
-              nodeHeaders = pkgs.fetchurl {
-                url = "https://nodejs.org/download/release/v${pkgs.nodejs.version}/node-v${pkgs.nodejs.version}-headers.tar.gz";
-                sha256 = "16f20ya3ys6w5w6y6l4536f7jrgk4gz46bf71w1r1xxb26a54m32";
-              };
-            in
-              ''
-                node scripts/build.js --tarball=${nodeHeaders}
-              '';
-          };
         };
       };
   mastodon = stdenv.mkDerivation (fetchedGithub ./mastodon.json // rec {
@@ -61,7 +56,7 @@ let
       cp -a . $out
       cp -a ${yarnModules}/node_modules $out
     '';
-    buildInputs = [ yarnModules gems ];
+    buildInputs = [ yarnModules ];
   });
   config = writeText "mastodon_environment" ''
     REDIS_HOST=${env.redis.host}