From ba5434c984b3c0e1b350be6d2476c067fb51d023 Mon Sep 17 00:00:00 2001 From: talyz Date: Fri, 13 Aug 2021 18:53:18 +0200 Subject: [PATCH] discourse.mkDiscoursePlugin: Handle repos with `gems` directories Some plugin repos already have a `gems` directory. This lets the packager choose whether it should be kept and the nix packaged ruby gems should be copied into it or if it should be removed in favor of our ruby gems. (cherry picked from commit 04e6b03fa91603c7f1961cfcdcf5880c91fe6b05) --- pkgs/servers/web-apps/discourse/default.nix | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/pkgs/servers/web-apps/discourse/default.nix b/pkgs/servers/web-apps/discourse/default.nix index 41f0bf91503..59e3d4b18e9 100644 --- a/pkgs/servers/web-apps/discourse/default.nix +++ b/pkgs/servers/web-apps/discourse/default.nix @@ -55,6 +55,7 @@ let , version ? null , meta ? null , bundlerEnvArgs ? {} + , preserveGemsDir ? false , src , ... }@args: @@ -71,11 +72,20 @@ let runHook preInstall mkdir -p $out cp -r * $out/ - '' + lib.optionalString (bundlerEnvArgs != {}) '' - ln -sf ${rubyEnv}/lib/ruby/gems $out/gems - '' + '' + '' + lib.optionalString (bundlerEnvArgs != {}) ( + if preserveGemsDir then '' + cp -r ${rubyEnv}/lib/ruby/gems/* $out/gems/ + '' + else '' + if [[ -e $out/gems ]]; then + echo "Warning: The repo contains a 'gems' directory which will be removed!" + echo " If you need to preserve it, set 'preserveGemsDir = true'." + rm -r $out/gems + fi + ln -sf ${rubyEnv}/lib/ruby/gems $out/gems + '' + '' runHook postInstall - ''; + ''); }); rake = runCommandNoCC "discourse-rake" {