X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FConfig%2FNix.git;a=blobdiff_plain;f=nixops%2Fmodules%2Fwebsites%2Ftools%2Fmastodon%2Fmastodon.nix;h=83e3a54d97c5d6dc472f85267a806b07f1ceea46;hp=3ee355227770a017c8d86a5f7be29aed7a9e6f22;hb=20e1428fae47a5a59376b624336597eed1b605f5;hpb=32c84ff89c2b8931f58cea63961a178a9b1d0efe diff --git a/nixops/modules/websites/tools/mastodon/mastodon.nix b/nixops/modules/websites/tools/mastodon/mastodon.nix index 3ee3552..83e3a54 100644 --- a/nixops/modules/websites/tools/mastodon/mastodon.nix +++ b/nixops/modules/websites/tools/mastodon/mastodon.nix @@ -1,63 +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 = { - 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"; @@ -106,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";