summary refs log tree commit diff
path: root/pkgs/applications/version-management/redmine/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/version-management/redmine/default.nix')
-rw-r--r--pkgs/applications/version-management/redmine/default.nix108
1 files changed, 38 insertions, 70 deletions
diff --git a/pkgs/applications/version-management/redmine/default.nix b/pkgs/applications/version-management/redmine/default.nix
index 5a23c38a886..3c3fd4da33d 100644
--- a/pkgs/applications/version-management/redmine/default.nix
+++ b/pkgs/applications/version-management/redmine/default.nix
@@ -1,74 +1,42 @@
-{ stdenv, fetchurl, ruby, bundler, libiconv, libxslt, libxml2, pkgconfig, libffi, imagemagickBig, postgresql }:
+{ stdenv, fetchurl, bundlerEnv, ruby }:
 
 let
-  gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile.nix);
-in stdenv.mkDerivation rec {
-  version = "2.5.2";
-  name = "redmine-${version}";
+  version = "3.4.6";
+  rubyEnv = bundlerEnv {
+    name = "redmine-env-${version}";
 
-  src = fetchurl {
-    url = "https://www.redmine.org/releases/${name}.tar.gz";
-    sha256 = "0x0zwxyj4dwbk7l64s3lgny10mjf0ba8jwrbafsm4d72sncmacv0";
+    inherit ruby;
+    gemdir = ./.;
   };
-
-  hardeningDisable = [ "format" ];
-
-  # taken from redmine (2.5.1-2~bpo70+3) in debian wheezy-backports
-  # needed to separate run-time and build-time directories
-  patches = [
-    ./2002_FHS_through_env_vars.patch
-    ./2004_FHS_plugins_assets.patch
-    ./2003_externalize_session_config.patch
-  ];
-
-  postPatch = ''
-    substituteInPlace lib/redmine/plugin.rb --replace "File.join(Rails.root, 'plugins')" "ENV['RAILS_PLUGINS']"
-    substituteInPlace lib/redmine/plugin.rb --replace "File.join(Rails.root, 'plugins', id.to_s, 'db', 'migrate')" "File.join(ENV['RAILS_PLUGINS'], id.to_s, 'db', 'migrate')"
-    substituteInPlace config/routes.rb --replace '"plugins/*", Rails.root' 'ENV["RAILS_PLUGINS"] + "/*"'
-  '';
-
-  buildInputs = [
-    ruby bundler libiconv
-    libxslt libxml2 pkgconfig libffi
-    imagemagickBig postgresql
-  ];
-
-  installPhase = ''
-    mkdir -p $out/share/redmine/
-    cp -R . $out/share/redmine/
-    cd $out/share/redmine
-    ln -s ${./Gemfile.lock} Gemfile.lock
-    export HOME=$(pwd)
-
-    cat > config/database.yml <<EOF
-      production:
-        adapter: postgresql
-    EOF
-
-    mkdir -p vendor/cache
-    ${stdenv.lib.concatStrings (map (gem: "ln -s ${gem} vendor/cache/${gem.name};") gemspec)}
-
-    bundle config build.nokogiri --use-system-libraries --with-iconv-dir="${libiconv}" --with-xslt-dir="${libxslt.dev}" --with-xml2-dir="${libxml2.dev}"
-
-    bundle install --verbose --local --deployment
-
-    # make sure we always load pg package
-    echo "gem \"pg\"" >> Gemfile
-
-    # make rails server happy
-    mkdir -p tmp/pids
-
-    # cleanup
-    rm config/database.yml
-  '';
-
-  meta = with stdenv.lib; {
-    homepage = http://www.redmine.org/;
-    platforms = platforms.linux;
-    maintainers = [ maintainers.garbas ];
-    license = licenses.gpl2;
-    # Marked as broken due to needing an update for security issues.
-    # See: https://github.com/NixOS/nixpkgs/issues/18856
-    broken = true;
-  };
-}
+in
+  stdenv.mkDerivation rec {
+    name = "redmine-${version}";
+
+    src = fetchurl {
+      url = "https://www.redmine.org/releases/${name}.tar.gz";
+      sha256 = "15akq6pn42w7cf7dg45xmvw06fixck1qznp7s8ix7nyxlmcyvcg3";
+    };
+
+    buildInputs = [ rubyEnv rubyEnv.wrappedRuby rubyEnv.bundler ];
+
+    buildPhase = ''
+      mv config config.dist
+    '';
+
+    installPhase = ''
+      mkdir -p $out/share
+      cp -r . $out/share/redmine
+
+      for i in config files log plugins tmp; do
+        rm -rf $out/share/redmine/$i
+        ln -fs /run/redmine/$i $out/share/redmine/
+      done
+    '';
+
+    meta = with stdenv.lib; {
+      homepage = http://www.redmine.org/;
+      platforms = platforms.linux;
+      maintainers = [ maintainers.garbas ];
+      license = licenses.gpl2;
+    };
+  }