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.
This commit is contained in:
talyz 2021-06-23 18:15:14 +02:00
parent 7e567a3d09
commit 9af3672f4f
No known key found for this signature in database
GPG key ID: 2DED2151F4671A2B
2 changed files with 9 additions and 3 deletions

View file

@ -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

View file

@ -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;
};