-{ 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 ];
};
};
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 = {
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 {
cp -a . $out
cp -a ${yarnModules}/node_modules $out
'';
- buildInputs = [ yarnModules gems ];
+ buildInputs = [ yarnModules ];
});
config = writeText "mastodon_environment" ''
REDIS_HOST=${env.redis.host}