]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - nixops/modules/websites/tools/mastodon/mastodon.nix
Move mastodon to pkgs
[perso/Immae/Config/Nix.git] / nixops / modules / websites / tools / mastodon / mastodon.nix
index 516cc5879ac04fba8ab901417ea120847315c54c..83e3a54d97c5d6dc472f85267a806b07f1ceea46 100644 (file)
@@ -1,66 +1,7 @@
-{ env, ruby_2_6, bundlerEnv, defaultGemConfig, yarn2nixPackage, fetchedGithub, stdenv, writeText, pkgs }:
+{ env, mastodon }:
 let
   varDir = "/var/lib/mastodon_immae";
   socketsDir = "/run/mastodon";
-  gems = bundlerEnv {
-    name = "mastodon-env";
-    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 ];
-      };
-      idn-ruby = attrs: {
-        buildInputs = with pkgs; [ libidn ];
-      };
-      rpam2 = attrs: {
-        buildInputs = with pkgs; [ pam ];
-      };
-    };
-  };
-  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
-      yarn2nixPackage.mkYarnModules rec {
-        name = "mastodon-yarn";
-        pname = name;
-        version = info.version;
-        packageJSON = packagejson;
-        yarnLock = "${info.src}/yarn.lock";
-        yarnNix = ./yarn-packages.nix;
-        pkgConfig = {
-          all = {
-            buildInputs = [ yarn2nixPackage.src ];
-          };
-          uws = {
-            postInstall = ''
-              npx node-gyp rebuild > build_log.txt 2>&1 || true
-              '';
-          };
-        };
-      };
-  mastodon = stdenv.mkDerivation (fetchedGithub ./mastodon.json // rec {
-    installPhase = ''
-      cp -a . $out
-      cp -a ${yarnModules}/node_modules $out
-    '';
-    buildInputs = [ yarnModules ];
-  });
   keys.mastodon = {
     dest = "webapps/tools-mastodon";
     user = "mastodon";
@@ -109,29 +50,11 @@ let
     '';
   };
 
-    # FIXME: build machine will contain some passwords in the nix store
-    railsRoot = stdenv.mkDerivation {
-      name = "mastodon_immae";
-      inherit mastodon;
-      builder = writeText "build_mastodon_immae" ''
-        source $stdenv/setup
-        set -a
-        ${keys.mastodon.text}
-        set +a
-        cp -a $mastodon $out
-        cd $out
-        chmod u+rwX . public
-        chmod -R u+rwX config/
-        sed -i -e 's@^end$@  config.action_mailer.sendmail_settings = { location: ENV.fetch("SENDMAIL_LOCATION", "/usr/sbin/sendmail") }\nend@' config/environments/production.rb
-        RAILS_ENV=production ${gems}/bin/rails assets:precompile
-        rm -rf tmp/cache
-        ln -sf ${varDir}/tmp/cache tmp
-        '';
-      buildInputs = [ gems gems.ruby pkgs.nodejs pkgs.yarn ];
-    };
+  railsRoot = mastodon.override { inherit varDir; };
 in
   {
-    inherit railsRoot varDir socketsDir gems;
+    inherit varDir railsRoot socketsDir;
+    inherit (railsRoot.passthru) gems;
     keys = builtins.attrValues keys;
     nodeSocket = "${socketsDir}/live_immae_node.sock";
     railsSocket = "${socketsDir}/live_immae_puma.sock";