diff options
Diffstat (limited to 'nixops/modules/websites/tools/mastodon/mastodon.nix')
-rw-r--r-- | nixops/modules/websites/tools/mastodon/mastodon.nix | 47 |
1 files changed, 21 insertions, 26 deletions
diff --git a/nixops/modules/websites/tools/mastodon/mastodon.nix b/nixops/modules/websites/tools/mastodon/mastodon.nix index bc4014d..d4e437a 100644 --- a/nixops/modules/websites/tools/mastodon/mastodon.nix +++ b/nixops/modules/websites/tools/mastodon/mastodon.nix | |||
@@ -1,17 +1,24 @@ | |||
1 | { env, ruby_2_5, bundlerEnv, defaultGemConfig, fetchedGithub, stdenv, writeText, pkgs }: | 1 | { env, ruby_2_6, bundlerEnv, defaultGemConfig, yarn2nixPackage, fetchedGithub, stdenv, writeText, pkgs }: |
2 | let | 2 | let |
3 | varDir = "/var/lib/mastodon_immae"; | 3 | varDir = "/var/lib/mastodon_immae"; |
4 | socketsDir = "/run/mastodon"; | 4 | socketsDir = "/run/mastodon"; |
5 | gems = bundlerEnv { | 5 | gems = bundlerEnv { |
6 | name = "mastodon-env"; | 6 | name = "mastodon-env"; |
7 | # https://git.immae.eu/mantisbt/view.php?id=131 | 7 | ruby = ruby_2_6; |
8 | ruby = ruby_2_5.overrideAttrs(old: { | ||
9 | postInstall = builtins.replaceStrings [" --destdir $GEM_HOME"] [""] old.postInstall; | ||
10 | }); | ||
11 | gemset = ./gemset.nix; | 8 | gemset = ./gemset.nix; |
12 | gemdir = (fetchedGithub ./mastodon.json).src; | 9 | gemdir = (fetchedGithub ./mastodon.json).src; |
13 | groups = [ "default" "production" "test" "development" ]; | 10 | groups = [ "default" "production" "test" "development" ]; |
14 | gemConfig = defaultGemConfig // { | 11 | gemConfig = defaultGemConfig // { |
12 | redis-rack = attrs: { | ||
13 | preBuild = '' | ||
14 | sed -i 's!s\.files.*!!' redis-rack.gemspec | ||
15 | ''; | ||
16 | }; | ||
17 | tzinfo = attrs: { | ||
18 | preBuild = '' | ||
19 | sed -i 's!s\.files.*!!' tzinfo.gemspec | ||
20 | ''; | ||
21 | }; | ||
15 | cld3 = attrs: { | 22 | cld3 = attrs: { |
16 | buildInputs = with pkgs; [ protobuf protobufc pkgconfig ]; | 23 | buildInputs = with pkgs; [ protobuf protobufc pkgconfig ]; |
17 | }; | 24 | }; |
@@ -25,10 +32,15 @@ let | |||
25 | }; | 32 | }; |
26 | yarnModules = let | 33 | yarnModules = let |
27 | info = fetchedGithub ./mastodon.json; | 34 | info = fetchedGithub ./mastodon.json; |
35 | packagejson = pkgs.runCommand "package.json" { buildInputs = [ pkgs.jq ]; } '' | ||
36 | cat ${info.src}/package.json | jq -r '.version = "${info.version}"' > $out | ||
37 | ''; | ||
28 | in | 38 | in |
29 | pkgs.yarn2nix.mkYarnModules { | 39 | yarn2nixPackage.mkYarnModules rec { |
30 | name = "mastodon-yarn-modules"; | 40 | name = "mastodon-yarn"; |
31 | packageJSON = "${info.src}/package.json"; | 41 | pname = name; |
42 | version = info.version; | ||
43 | packageJSON = packagejson; | ||
32 | yarnLock = "${info.src}/yarn.lock"; | 44 | yarnLock = "${info.src}/yarn.lock"; |
33 | yarnNix = ./yarn-packages.nix; | 45 | yarnNix = ./yarn-packages.nix; |
34 | pkgConfig = { | 46 | pkgConfig = { |
@@ -37,23 +49,6 @@ let | |||
37 | npx node-gyp rebuild > build_log.txt 2>&1 || true | 49 | npx node-gyp rebuild > build_log.txt 2>&1 || true |
38 | ''; | 50 | ''; |
39 | }; | 51 | }; |
40 | node-zopfli = { | ||
41 | postInstall = '' | ||
42 | npx node-pre-gyp install --fallback-to-build | ||
43 | ''; | ||
44 | }; | ||
45 | node-sass = { | ||
46 | buildInputs = with pkgs; [ libsass python ]; | ||
47 | postInstall = let | ||
48 | nodeHeaders = pkgs.fetchurl { | ||
49 | url = "https://nodejs.org/download/release/v${pkgs.nodejs.version}/node-v${pkgs.nodejs.version}-headers.tar.gz"; | ||
50 | sha256 = "16f20ya3ys6w5w6y6l4536f7jrgk4gz46bf71w1r1xxb26a54m32"; | ||
51 | }; | ||
52 | in | ||
53 | '' | ||
54 | node scripts/build.js --tarball=${nodeHeaders} | ||
55 | ''; | ||
56 | }; | ||
57 | }; | 52 | }; |
58 | }; | 53 | }; |
59 | mastodon = stdenv.mkDerivation (fetchedGithub ./mastodon.json // rec { | 54 | mastodon = stdenv.mkDerivation (fetchedGithub ./mastodon.json // rec { |
@@ -61,7 +56,7 @@ let | |||
61 | cp -a . $out | 56 | cp -a . $out |
62 | cp -a ${yarnModules}/node_modules $out | 57 | cp -a ${yarnModules}/node_modules $out |
63 | ''; | 58 | ''; |
64 | buildInputs = [ yarnModules gems ]; | 59 | buildInputs = [ yarnModules ]; |
65 | }); | 60 | }); |
66 | config = writeText "mastodon_environment" '' | 61 | config = writeText "mastodon_environment" '' |
67 | REDIS_HOST=${env.redis.host} | 62 | REDIS_HOST=${env.redis.host} |