From 3b84448e67f92c1a589d33761fd2ae9bd915b481 Mon Sep 17 00:00:00 2001 From: talyz Date: Wed, 23 Jun 2021 18:15:14 +0200 Subject: [PATCH] discourse: Fix plugin support For plugins to work properly, their assets need to be precompiled along with the rest of Discourse's assets. This means we need to build new packages when the list of plugins change. (cherry picked from commit 9af3672f4faaafba0ce0129a87fc7925c14eeb61) --- nixos/modules/services/web-apps/discourse.nix | 5 +++-- pkgs/servers/web-apps/discourse/default.nix | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/nixos/modules/services/web-apps/discourse.nix b/nixos/modules/services/web-apps/discourse.nix index 49958fc6190..00a269ba871 100644 --- a/nixos/modules/services/web-apps/discourse.nix +++ b/nixos/modules/services/web-apps/discourse.nix @@ -30,6 +30,9 @@ in package = lib.mkOption { type = lib.types.package; default = pkgs.discourse; + apply = p: p.override { + plugins = lib.unique (p.enabledPlugins ++ cfg.plugins); + }; defaultText = "pkgs.discourse"; description = '' The discourse package to use. @@ -731,8 +734,6 @@ in cp -r ${cfg.package}/share/discourse/config.dist/* /run/discourse/config/ cp -r ${cfg.package}/share/discourse/public.dist/* /run/discourse/public/ - cp -r ${cfg.package}/share/discourse/plugins.dist/* /run/discourse/plugins/ - ${lib.concatMapStringsSep "\n" (p: "ln -sf ${p} /run/discourse/plugins/") cfg.plugins} ln -sf /var/lib/discourse/uploads /run/discourse/public/uploads ln -sf /var/lib/discourse/backups /run/discourse/public/backups diff --git a/pkgs/servers/web-apps/discourse/default.nix b/pkgs/servers/web-apps/discourse/default.nix index 5e7c4d5368a..8258049a403 100644 --- a/pkgs/servers/web-apps/discourse/default.nix +++ b/pkgs/servers/web-apps/discourse/default.nix @@ -3,6 +3,8 @@ , util-linux, gawk, imagemagick, optipng, pngquant, libjpeg, jpegoptim , gifsicle, libpsl, redis, postgresql, which, brotli, procps, rsync , nodePackages, v8 + +, plugins ? [] }: let @@ -148,6 +150,8 @@ let mkdir $NIX_BUILD_TOP/tmp_home export HOME=$NIX_BUILD_TOP/tmp_home + ${lib.concatMapStringsSep "\n" (p: "cp -r ${p} plugins/") plugins} + export RAILS_ENV=production bundle exec rake db:migrate >/dev/null @@ -212,7 +216,6 @@ let mv config config.dist mv public public.dist - mv plugins plugins.dist runHook postBuild ''; @@ -230,6 +233,7 @@ let ln -sf /run/discourse/public $out/share/discourse/public ln -sf /run/discourse/plugins $out/share/discourse/plugins ln -sf ${assets} $out/share/discourse/public.dist/assets + ${lib.concatMapStringsSep "\n" (p: "ln -sf ${p} $out/share/discourse/plugins/") plugins} runHook postInstall ''; @@ -244,6 +248,7 @@ let passthru = { inherit rubyEnv runtimeEnv runtimeDeps rake; + enabledPlugins = plugins; ruby = rubyEnv.wrappedRuby; tests = nixosTests.discourse; };