X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=nixops%2Fmodules%2Fwebsites%2Ftools%2Fmastodon%2Fmastodon.nix;h=d4e437ac67cbcda1a2a4ac264df7093d1dde6b27;hb=7f6bd78f988381187bc1a75397dd332ef54263e9;hp=ae2a3f609c179f587b3d57c8e942d4b2d9e461f3;hpb=24a7da33965001415edb022245b289bb5fc49a07;p=perso%2FImmae%2FConfig%2FNix.git diff --git a/nixops/modules/websites/tools/mastodon/mastodon.nix b/nixops/modules/websites/tools/mastodon/mastodon.nix index ae2a3f6..d4e437a 100644 --- a/nixops/modules/websites/tools/mastodon/mastodon.nix +++ b/nixops/modules/websites/tools/mastodon/mastodon.nix @@ -1,14 +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"; - ruby = ruby_2_5; + 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 ]; }; @@ -22,35 +32,21 @@ 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 = { uws = { postInstall = '' - node-gyp rebuild > build_log.txt 2>&1 || true - ''; - buildInputs = with pkgs; [ nodePackages.node-gyp ]; - }; - node-zopfli = { - postInstall = '' - node-pre-gyp install --fallback-to-build - ''; - buildInputs = with pkgs; [ nodePackages.node-pre-gyp ]; - }; - 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 = "12zzsf8my43b8qnlacp871ih5vqafl2vlpqp51xp6h3gckn2frwy"; - }; - in - '' - node scripts/build.js --tarball=${nodeHeaders} + npx node-gyp rebuild > build_log.txt 2>&1 || true ''; }; }; @@ -60,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} @@ -90,6 +86,8 @@ let STREAMING_CLUSTER_NUM=1 + RAILS_LOG_LEVEL=warn + # LDAP authentication (optional) LDAP_ENABLED=true LDAP_HOST=ldap.immae.eu @@ -117,7 +115,7 @@ let 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 + ln -sf ${varDir}/tmp/cache tmp ''; buildInputs = [ gems gems.ruby pkgs.nodejs pkgs.yarn ]; };