diff --git a/nixos/doc/manual/release-notes/rl-1903.xml b/nixos/doc/manual/release-notes/rl-1903.xml
index eca280afdf1..943b9d2a608 100644
--- a/nixos/doc/manual/release-notes/rl-1903.xml
+++ b/nixos/doc/manual/release-notes/rl-1903.xml
@@ -484,6 +484,13 @@
the systemd unit configuration from upstream anymore, the unit is completely configured by the NixOS module now.
+
+
+ New installs of NixOS will default to the Redmine 4.x series unless otherwise specified in
+ services.redmine.package while existing installs of NixOS will default to
+ the Redmine 3.x series.
+
+
diff --git a/nixos/modules/services/misc/redmine.nix b/nixos/modules/services/misc/redmine.nix
index d7250c5f35a..98e9c8953c8 100644
--- a/nixos/modules/services/misc/redmine.nix
+++ b/nixos/modules/services/misc/redmine.nix
@@ -61,12 +61,20 @@ in
description = "Enable the Redmine service.";
};
+ # default to the 4.x series not forcing major version upgrade of those on the 3.x series
package = mkOption {
type = types.package;
- default = pkgs.redmine;
+ default = if versionAtLeast config.system.stateVersion "19.03"
+ then pkgs.redmine_4
+ else pkgs.redmine
+ ;
defaultText = "pkgs.redmine";
- description = "Which Redmine package to use.";
- example = "pkgs.redmine.override { ruby = pkgs.ruby_2_3; }";
+ description = ''
+ Which Redmine package to use. This defaults to version 3.x if
+ system.stateVersion < 19.03 and version 4.x
+ otherwise.
+ '';
+ example = "pkgs.redmine_4.override { ruby = pkgs.ruby_2_4; }";
};
user = mkOption {
diff --git a/nixos/tests/redmine.nix b/nixos/tests/redmine.nix
index 330f72854ca..ea72a0121d1 100644
--- a/nixos/tests/redmine.nix
+++ b/nixos/tests/redmine.nix
@@ -1,40 +1,58 @@
-import ./make-test.nix ({ pkgs, lib, ... }:
+{ system ? builtins.currentSystem,
+ config ? {},
+ pkgs ? import ../.. { inherit system config; }
+}:
+
+with import ../lib/testing.nix { inherit system pkgs; };
+with pkgs.lib;
+
+let
+ redmineTest = package: makeTest {
+ machine =
+ { config, pkgs, ... }:
+ { services.mysql.enable = true;
+ services.mysql.package = pkgs.mariadb;
+ services.mysql.ensureDatabases = [ "redmine" ];
+ services.mysql.ensureUsers = [
+ { name = "redmine";
+ ensurePermissions = { "redmine.*" = "ALL PRIVILEGES"; };
+ }
+ ];
+
+ services.redmine.enable = true;
+ services.redmine.package = package;
+ services.redmine.database.socket = "/run/mysqld/mysqld.sock";
+ services.redmine.plugins = {
+ redmine_env_auth = pkgs.fetchurl {
+ url = https://github.com/Intera/redmine_env_auth/archive/0.7.zip;
+ sha256 = "1xb8lyarc7mpi86yflnlgyllh9hfwb9z304f19dx409gqpia99sc";
+ };
+ };
+ services.redmine.themes = {
+ dkuk-redmine_alex_skin = pkgs.fetchurl {
+ url = https://bitbucket.org/dkuk/redmine_alex_skin/get/1842ef675ef3.zip;
+ sha256 = "0hrin9lzyi50k4w2bd2b30vrf1i4fi1c0gyas5801wn8i7kpm9yl";
+ };
+ };
+ };
+
+ testScript = ''
+ startAll;
+
+ $machine->waitForUnit('redmine.service');
+ $machine->waitForOpenPort('3000');
+ $machine->succeed("curl --fail http://localhost:3000/");
+ '';
+ };
+in
{
- name = "redmine";
- meta.maintainers = [ lib.maintainers.aanderse ];
+ redmine_3 = redmineTest pkgs.redmine // {
+ name = "redmine_3";
+ meta.maintainers = [ maintainers.aanderse ];
+ };
- machine =
- { config, pkgs, ... }:
- { services.mysql.enable = true;
- services.mysql.package = pkgs.mariadb;
- services.mysql.ensureDatabases = [ "redmine" ];
- services.mysql.ensureUsers = [
- { name = "redmine";
- ensurePermissions = { "redmine.*" = "ALL PRIVILEGES"; };
- }
- ];
-
- services.redmine.enable = true;
- services.redmine.database.socket = "/run/mysqld/mysqld.sock";
- services.redmine.plugins = {
- redmine_env_auth = pkgs.fetchurl {
- url = https://github.com/Intera/redmine_env_auth/archive/0.6.zip;
- sha256 = "0yyr1yjd8gvvh832wdc8m3xfnhhxzk2pk3gm2psg5w9jdvd6skak";
- };
- };
- services.redmine.themes = {
- dkuk-redmine_alex_skin = pkgs.fetchurl {
- url = https://bitbucket.org/dkuk/redmine_alex_skin/get/1842ef675ef3.zip;
- sha256 = "0hrin9lzyi50k4w2bd2b30vrf1i4fi1c0gyas5801wn8i7kpm9yl";
- };
- };
- };
-
- testScript = ''
- startAll;
-
- $machine->waitForUnit('redmine.service');
- $machine->waitForOpenPort('3000');
- $machine->succeed("curl --fail http://localhost:3000/");
- '';
-})
+ redmine_4 = redmineTest pkgs.redmine_4 // {
+ name = "redmine_4";
+ meta.maintainers = [ maintainers.aanderse ];
+ };
+}
diff --git a/pkgs/applications/version-management/redmine/4.x/Gemfile b/pkgs/applications/version-management/redmine/4.x/Gemfile
new file mode 100644
index 00000000000..3fd176007ab
--- /dev/null
+++ b/pkgs/applications/version-management/redmine/4.x/Gemfile
@@ -0,0 +1,71 @@
+source 'https://rubygems.org'
+
+gem "bundler", ">= 1.5.0"
+
+gem "rails", "5.2.2"
+gem "rouge", "~> 3.3.0"
+gem "request_store", "1.0.5"
+gem "mini_mime", "~> 1.0.1"
+gem "actionpack-xml_parser"
+gem "roadie-rails", "~> 1.3.0"
+gem "mimemagic"
+gem "mail", "~> 2.7.1"
+gem "csv", "~> 3.0.1" if RUBY_VERSION >= "2.3" && RUBY_VERSION < "2.6"
+
+gem "nokogiri", (RUBY_VERSION >= "2.3" ? "~> 1.10.0" : "~> 1.9.1")
+gem "i18n", "~> 0.7.0"
+
+# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
+gem 'tzinfo-data', platforms: [:mingw, :x64_mingw, :mswin]
+gem "rbpdf", "~> 1.19.6"
+
+# Optional gem for LDAP authentication
+group :ldap do
+ gem "net-ldap", "~> 0.16.0"
+end
+
+# Optional gem for OpenID authentication
+group :openid do
+ gem "ruby-openid", "~> 2.3.0", :require => "openid"
+ gem "rack-openid"
+end
+
+platforms :mri, :mingw, :x64_mingw do
+ # Optional gem for exporting the gantt to a PNG file, not supported with jruby
+ group :rmagick do
+ gem "rmagick", ">= 2.14.0"
+ end
+
+ # Optional Markdown support, not for JRuby
+ group :markdown do
+ gem "redcarpet", "~> 3.4.0"
+ end
+end
+
+# Include database gems for the database adapters NixOS supports
+gem "mysql2", "~> 0.5.0", :platforms => [:mri, :mingw, :x64_mingw]
+gem "pg", "~> 1.1.4", :platforms => [:mri, :mingw, :x64_mingw]
+
+group :development do
+ gem "yard"
+end
+
+group :test do
+ gem "rails-dom-testing"
+ gem "mocha"
+ gem "simplecov", "~> 0.14.1", :require => false
+ # For running system tests
+ gem 'puma', '~> 3.7'
+ gem "capybara", '~> 2.13'
+ gem "selenium-webdriver"
+end
+
+local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
+if File.exists?(local_gemfile)
+ eval_gemfile local_gemfile
+end
+
+# Load plugins' Gemfiles
+Dir.glob File.expand_path("../plugins/*/{Gemfile,PluginGemfile}", __FILE__) do |file|
+ eval_gemfile file
+end
diff --git a/pkgs/applications/version-management/redmine/4.x/Gemfile.lock b/pkgs/applications/version-management/redmine/4.x/Gemfile.lock
new file mode 100644
index 00000000000..8c569ddb322
--- /dev/null
+++ b/pkgs/applications/version-management/redmine/4.x/Gemfile.lock
@@ -0,0 +1,204 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ actioncable (5.2.2)
+ actionpack (= 5.2.2)
+ nio4r (~> 2.0)
+ websocket-driver (>= 0.6.1)
+ actionmailer (5.2.2)
+ actionpack (= 5.2.2)
+ actionview (= 5.2.2)
+ activejob (= 5.2.2)
+ mail (~> 2.5, >= 2.5.4)
+ rails-dom-testing (~> 2.0)
+ actionpack (5.2.2)
+ actionview (= 5.2.2)
+ activesupport (= 5.2.2)
+ rack (~> 2.0)
+ rack-test (>= 0.6.3)
+ rails-dom-testing (~> 2.0)
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
+ actionpack-xml_parser (2.0.1)
+ actionpack (>= 5.0)
+ railties (>= 5.0)
+ actionview (5.2.2)
+ activesupport (= 5.2.2)
+ builder (~> 3.1)
+ erubi (~> 1.4)
+ rails-dom-testing (~> 2.0)
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
+ activejob (5.2.2)
+ activesupport (= 5.2.2)
+ globalid (>= 0.3.6)
+ activemodel (5.2.2)
+ activesupport (= 5.2.2)
+ activerecord (5.2.2)
+ activemodel (= 5.2.2)
+ activesupport (= 5.2.2)
+ arel (>= 9.0)
+ activestorage (5.2.2)
+ actionpack (= 5.2.2)
+ activerecord (= 5.2.2)
+ marcel (~> 0.3.1)
+ activesupport (5.2.2)
+ concurrent-ruby (~> 1.0, >= 1.0.2)
+ i18n (>= 0.7, < 2)
+ minitest (~> 5.1)
+ tzinfo (~> 1.1)
+ addressable (2.6.0)
+ public_suffix (>= 2.0.2, < 4.0)
+ arel (9.0.0)
+ builder (3.2.3)
+ capybara (2.18.0)
+ addressable
+ mini_mime (>= 0.1.3)
+ nokogiri (>= 1.3.3)
+ rack (>= 1.0.0)
+ rack-test (>= 0.5.4)
+ xpath (>= 2.0, < 4.0)
+ childprocess (0.9.0)
+ ffi (~> 1.0, >= 1.0.11)
+ concurrent-ruby (1.1.4)
+ crass (1.0.4)
+ css_parser (1.6.0)
+ addressable
+ csv (3.0.4)
+ docile (1.1.5)
+ erubi (1.8.0)
+ ffi (1.10.0)
+ globalid (0.4.2)
+ activesupport (>= 4.2.0)
+ htmlentities (4.3.4)
+ i18n (0.7.0)
+ json (2.1.0)
+ loofah (2.2.3)
+ crass (~> 1.0.2)
+ nokogiri (>= 1.5.9)
+ mail (2.7.1)
+ mini_mime (>= 0.1.1)
+ marcel (0.3.3)
+ mimemagic (~> 0.3.2)
+ metaclass (0.0.4)
+ method_source (0.9.2)
+ mimemagic (0.3.3)
+ mini_mime (1.0.1)
+ mini_portile2 (2.4.0)
+ minitest (5.11.3)
+ mocha (1.8.0)
+ metaclass (~> 0.0.1)
+ mysql2 (0.5.2)
+ net-ldap (0.16.1)
+ nio4r (2.3.1)
+ nokogiri (1.10.1)
+ mini_portile2 (~> 2.4.0)
+ pg (1.1.4)
+ public_suffix (3.0.3)
+ puma (3.12.0)
+ rack (2.0.6)
+ rack-openid (1.4.2)
+ rack (>= 1.1.0)
+ ruby-openid (>= 2.1.8)
+ rack-test (1.1.0)
+ rack (>= 1.0, < 3)
+ rails (5.2.2)
+ actioncable (= 5.2.2)
+ actionmailer (= 5.2.2)
+ actionpack (= 5.2.2)
+ actionview (= 5.2.2)
+ activejob (= 5.2.2)
+ activemodel (= 5.2.2)
+ activerecord (= 5.2.2)
+ activestorage (= 5.2.2)
+ activesupport (= 5.2.2)
+ bundler (>= 1.3.0)
+ railties (= 5.2.2)
+ sprockets-rails (>= 2.0.0)
+ rails-dom-testing (2.0.3)
+ activesupport (>= 4.2.0)
+ nokogiri (>= 1.6)
+ rails-html-sanitizer (1.0.4)
+ loofah (~> 2.2, >= 2.2.2)
+ railties (5.2.2)
+ actionpack (= 5.2.2)
+ activesupport (= 5.2.2)
+ method_source
+ rake (>= 0.8.7)
+ thor (>= 0.19.0, < 2.0)
+ rake (12.3.2)
+ rbpdf (1.19.8)
+ htmlentities
+ rbpdf-font (~> 1.19.0)
+ rbpdf-font (1.19.1)
+ redcarpet (3.4.0)
+ request_store (1.0.5)
+ rmagick (2.16.0)
+ roadie (3.4.0)
+ css_parser (~> 1.4)
+ nokogiri (~> 1.5)
+ roadie-rails (1.3.0)
+ railties (>= 3.0, < 5.3)
+ roadie (~> 3.1)
+ rouge (3.3.0)
+ ruby-openid (2.3.0)
+ rubyzip (1.2.2)
+ selenium-webdriver (3.141.0)
+ childprocess (~> 0.5)
+ rubyzip (~> 1.2, >= 1.2.2)
+ simplecov (0.14.1)
+ docile (~> 1.1.0)
+ json (>= 1.8, < 3)
+ simplecov-html (~> 0.10.0)
+ simplecov-html (0.10.2)
+ sprockets (3.7.2)
+ concurrent-ruby (~> 1.0)
+ rack (> 1, < 3)
+ sprockets-rails (3.2.1)
+ actionpack (>= 4.0)
+ activesupport (>= 4.0)
+ sprockets (>= 3.0.0)
+ thor (0.20.3)
+ thread_safe (0.3.6)
+ tzinfo (1.2.5)
+ thread_safe (~> 0.1)
+ websocket-driver (0.7.0)
+ websocket-extensions (>= 0.1.0)
+ websocket-extensions (0.1.3)
+ xpath (3.2.0)
+ nokogiri (~> 1.8)
+ yard (0.9.18)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ actionpack-xml_parser
+ bundler (>= 1.5.0)
+ capybara (~> 2.13)
+ csv (~> 3.0.1)
+ i18n (~> 0.7.0)
+ mail (~> 2.7.1)
+ mimemagic
+ mini_mime (~> 1.0.1)
+ mocha
+ mysql2 (~> 0.5.0)
+ net-ldap (~> 0.16.0)
+ nokogiri (~> 1.10.0)
+ pg (~> 1.1.4)
+ puma (~> 3.7)
+ rack-openid
+ rails (= 5.2.2)
+ rails-dom-testing
+ rbpdf (~> 1.19.6)
+ redcarpet (~> 3.4.0)
+ request_store (= 1.0.5)
+ rmagick (>= 2.14.0)
+ roadie-rails (~> 1.3.0)
+ rouge (~> 3.3.0)
+ ruby-openid (~> 2.3.0)
+ selenium-webdriver
+ simplecov (~> 0.14.1)
+ tzinfo-data
+ yard
+
+BUNDLED WITH
+ 1.16.3
diff --git a/pkgs/applications/version-management/redmine/4.x/default.nix b/pkgs/applications/version-management/redmine/4.x/default.nix
new file mode 100644
index 00000000000..ba9f96f5a30
--- /dev/null
+++ b/pkgs/applications/version-management/redmine/4.x/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, bundlerEnv, ruby }:
+
+let
+ version = "4.0.1";
+ rubyEnv = bundlerEnv {
+ name = "redmine-env-${version}";
+
+ inherit ruby;
+ gemdir = ./.;
+ groups = [ "ldap" "openid" ];
+ };
+in
+ stdenv.mkDerivation rec {
+ name = "redmine-${version}";
+
+ src = fetchurl {
+ url = "https://www.redmine.org/releases/${name}.tar.gz";
+ sha256 = "1zzn9rkh7x1h9f2shcc8qhb693hp0hpah0z53i6gfgg5p8k5hns1";
+ };
+
+ buildInputs = [ rubyEnv rubyEnv.wrappedRuby rubyEnv.bundler ];
+
+ buildPhase = ''
+ mv config config.dist
+ mv public/themes public/themes.dist
+ '';
+
+ installPhase = ''
+ mkdir -p $out/share
+ cp -r . $out/share/redmine
+ for i in config files log plugins public/plugin_assets public/themes tmp; do
+ rm -rf $out/share/redmine/$i
+ ln -fs /run/redmine/$i $out/share/redmine/$i
+ done
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://www.redmine.org/;
+ platforms = platforms.linux;
+ maintainers = [ maintainers.garbas maintainers.aanderse ];
+ license = licenses.gpl2;
+ };
+ }
diff --git a/pkgs/applications/version-management/redmine/4.x/gemset.nix b/pkgs/applications/version-management/redmine/4.x/gemset.nix
new file mode 100644
index 00000000000..ce21a58b556
--- /dev/null
+++ b/pkgs/applications/version-management/redmine/4.x/gemset.nix
@@ -0,0 +1,622 @@
+{
+ actioncable = {
+ dependencies = ["actionpack" "nio4r" "websocket-driver"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0826k5ch0l03f9yrkxy69aiv039z4qi00lnahw2rzywd2iz6r68x";
+ type = "gem";
+ };
+ version = "5.2.2";
+ };
+ actionmailer = {
+ dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0sfpb8s95cmkpp9ybyp2c88r55r5llscmmnkfwcwgasz9ncjiq5n";
+ type = "gem";
+ };
+ version = "5.2.2";
+ };
+ actionpack = {
+ dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0iwhbqqn0cm39dq040iwq8cfyclqk3kyzwlp5k3j5cz8k2668wws";
+ type = "gem";
+ };
+ version = "5.2.2";
+ };
+ actionpack-xml_parser = {
+ dependencies = ["actionpack" "railties"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1rnm6jrw3mzcf2g3q498igmhsn0kfkxq79w0nm532iclx4g4djs0";
+ type = "gem";
+ };
+ version = "2.0.1";
+ };
+ actionview = {
+ dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1lz04drbi1z0xhvb8jnr14pbf505lilr02arahxq7y3mxiz0rs8z";
+ type = "gem";
+ };
+ version = "5.2.2";
+ };
+ activejob = {
+ dependencies = ["activesupport" "globalid"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1jjkl62x2aprg55x9rpm0h2c82vr2qr989hg3l9r21l01q4822ir";
+ type = "gem";
+ };
+ version = "5.2.2";
+ };
+ activemodel = {
+ dependencies = ["activesupport"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1xmwi3mw8g4shbjvkhk72ra3r5jccbdsd4piphqka2y1h8s7sxvi";
+ type = "gem";
+ };
+ version = "5.2.2";
+ };
+ activerecord = {
+ dependencies = ["activemodel" "activesupport" "arel"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19a0sns6a5wz2wym25lb1dv4lbrrl5sd1n15s5ky2636znmhz30y";
+ type = "gem";
+ };
+ version = "5.2.2";
+ };
+ activestorage = {
+ dependencies = ["actionpack" "activerecord" "marcel"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0c72837098sw384vk6dmrb2p7q3wx4swnibk6sw9dp4hn1vc4p31";
+ type = "gem";
+ };
+ version = "5.2.2";
+ };
+ activesupport = {
+ dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1iya7vxqwxysr74s7b4z1x19gmnx5advimzip3cbmsd5bd43wfgz";
+ type = "gem";
+ };
+ version = "5.2.2";
+ };
+ addressable = {
+ dependencies = ["public_suffix"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bcm2hchn897xjhqj9zzsxf3n9xhddymj4lsclz508f4vw3av46l";
+ type = "gem";
+ };
+ version = "2.6.0";
+ };
+ arel = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0";
+ type = "gem";
+ };
+ version = "9.0.0";
+ };
+ builder = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
+ type = "gem";
+ };
+ version = "3.2.3";
+ };
+ capybara = {
+ dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "xpath"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0yv77rnsjlvs8qpfn9n5vf1h6b9agxwhxw09gssbiw9zn9j20jh8";
+ type = "gem";
+ };
+ version = "2.18.0";
+ };
+ childprocess = {
+ dependencies = ["ffi"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p";
+ type = "gem";
+ };
+ version = "0.9.0";
+ };
+ concurrent-ruby = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ixcx9pfissxrga53jbdpza85qd5f6b5nq1sfqa9rnfq82qnlbp1";
+ type = "gem";
+ };
+ version = "1.1.4";
+ };
+ crass = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ css_parser = {
+ dependencies = ["addressable"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0gwvf8mc8gnz4aizfijplv3594998h2j44ydakpzsdmkivs07v61";
+ type = "gem";
+ };
+ version = "1.6.0";
+ };
+ csv = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "19m22vlxddva301z2izvg06hldlc37nyzhin3kjjfcnlbb8imj33";
+ type = "gem";
+ };
+ version = "3.0.4";
+ };
+ docile = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx";
+ type = "gem";
+ };
+ version = "1.1.5";
+ };
+ erubi = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1";
+ type = "gem";
+ };
+ version = "1.8.0";
+ };
+ ffi = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0j8pzj8raxbir5w5k6s7a042sb5k02pg0f8s4na1r5lan901j00p";
+ type = "gem";
+ };
+ version = "1.10.0";
+ };
+ globalid = {
+ dependencies = ["activesupport"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1";
+ type = "gem";
+ };
+ version = "0.4.2";
+ };
+ htmlentities = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj";
+ type = "gem";
+ };
+ version = "4.3.4";
+ };
+ i18n = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758";
+ type = "gem";
+ };
+ version = "0.7.0";
+ };
+ json = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
+ type = "gem";
+ };
+ version = "2.1.0";
+ };
+ loofah = {
+ dependencies = ["crass" "nokogiri"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg";
+ type = "gem";
+ };
+ version = "2.2.3";
+ };
+ mail = {
+ dependencies = ["mini_mime"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
+ type = "gem";
+ };
+ version = "2.7.1";
+ };
+ marcel = {
+ dependencies = ["mimemagic"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx";
+ type = "gem";
+ };
+ version = "0.3.3";
+ };
+ metaclass = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5";
+ type = "gem";
+ };
+ version = "0.0.4";
+ };
+ method_source = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
+ type = "gem";
+ };
+ version = "0.9.2";
+ };
+ mimemagic = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw";
+ type = "gem";
+ };
+ version = "0.3.3";
+ };
+ mini_mime = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
+ type = "gem";
+ };
+ version = "1.0.1";
+ };
+ mini_portile2 = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
+ type = "gem";
+ };
+ version = "2.4.0";
+ };
+ minitest = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
+ type = "gem";
+ };
+ version = "5.11.3";
+ };
+ mocha = {
+ dependencies = ["metaclass"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "12aglpiq1h18j5a4rlwvnsvnsi2f3407v5xm59lgcg3ymlyak4al";
+ type = "gem";
+ };
+ version = "1.8.0";
+ };
+ mysql2 = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1a2kdjgzwh1p2rkcmxaawy6ibi32b04wbdd5d4wr8i342pq76di4";
+ type = "gem";
+ };
+ version = "0.5.2";
+ };
+ net-ldap = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "016igqz81a8zcwqzp5bbhryqmb2skmyf57ij3nb5z8sxwhw22jgh";
+ type = "gem";
+ };
+ version = "0.16.1";
+ };
+ nio4r = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr";
+ type = "gem";
+ };
+ version = "2.3.1";
+ };
+ nokogiri = {
+ dependencies = ["mini_portile2"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "09zll7c6j7xr6wyvh5mm5ncj6pkryp70ybcsxdbw1nyphx5dh184";
+ type = "gem";
+ };
+ version = "1.10.1";
+ };
+ pg = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy";
+ type = "gem";
+ };
+ version = "1.1.4";
+ };
+ public_suffix = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
+ type = "gem";
+ };
+ version = "3.0.3";
+ };
+ puma = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1k7dqxnq0dnf5rxkgs9rknclkn3ah7lsdrk6nrqxla8qzy31wliq";
+ type = "gem";
+ };
+ version = "3.12.0";
+ };
+ rack = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm";
+ type = "gem";
+ };
+ version = "2.0.6";
+ };
+ rack-openid = {
+ dependencies = ["rack" "ruby-openid"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0sg85yn981j3a0iri3ch4znzdwscvz29l7vrk3dafqw4fdg31llc";
+ type = "gem";
+ };
+ version = "1.4.2";
+ };
+ rack-test = {
+ dependencies = ["rack"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
+ type = "gem";
+ };
+ version = "1.1.0";
+ };
+ rails = {
+ dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties" "sprockets-rails"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1m9cszds68dsiycciiayd3c9g90s2yzn1izkr3gpgqkfw6dmvzyr";
+ type = "gem";
+ };
+ version = "5.2.2";
+ };
+ rails-dom-testing = {
+ dependencies = ["activesupport" "nokogiri"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
+ type = "gem";
+ };
+ version = "2.0.3";
+ };
+ rails-html-sanitizer = {
+ dependencies = ["loofah"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr";
+ type = "gem";
+ };
+ version = "1.0.4";
+ };
+ railties = {
+ dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "00pnylmbz4c46mxw5lhxi8h39lndfg6fs1hpd0qd6swnjhkqsr1l";
+ type = "gem";
+ };
+ version = "5.2.2";
+ };
+ rake = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1sy5a7nh6xjdc9yhcw31jji7ssrf9v5806hn95gbrzr998a2ydjn";
+ type = "gem";
+ };
+ version = "12.3.2";
+ };
+ rbpdf = {
+ dependencies = ["htmlentities" "rbpdf-font"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0fnhcn4z2zz6ic1yvl5hmhwmkdnybh8f8fnk1ni7bvl2s4ig5195";
+ type = "gem";
+ };
+ version = "1.19.8";
+ };
+ rbpdf-font = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0pxlr0l4vf785qpy55m439dyii63a26l0sd0yyhbwwcy9zm9hd1v";
+ type = "gem";
+ };
+ version = "1.19.1";
+ };
+ redcarpet = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7";
+ type = "gem";
+ };
+ version = "3.4.0";
+ };
+ request_store = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1ky19wb6mpq6dxb81a0h4hnzx7a4ka99n9ay2syi68djbr4bkbbh";
+ type = "gem";
+ };
+ version = "1.0.5";
+ };
+ rmagick = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0m9x15cdlkcb9826s3s2jd97hxf50hln22p94x8hcccxi1lwklq6";
+ type = "gem";
+ };
+ version = "2.16.0";
+ };
+ roadie = {
+ dependencies = ["css_parser" "nokogiri"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0l3s80394yijvz0fsvfkw0azsi9yxsdkxd8lpas0bd7wlndjvmxx";
+ type = "gem";
+ };
+ version = "3.4.0";
+ };
+ roadie-rails = {
+ dependencies = ["railties" "roadie"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "02km0ama85mkw7kkn6qif86b781pglfdmqrwx5s6hwjlzk16qih3";
+ type = "gem";
+ };
+ version = "1.3.0";
+ };
+ rouge = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1digsi2s8wyzx8vsqcxasw205lg6s7izx8jypl8rrpjwshmv83ql";
+ type = "gem";
+ };
+ version = "3.3.0";
+ };
+ ruby-openid = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0yzaf2c1i88757554wk38rxqmj0xzgmwk2zx7gi98w2zx42d17pn";
+ type = "gem";
+ };
+ version = "2.3.0";
+ };
+ rubyzip = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1n1lb2sdwh9h27y244hxzg1lrxxg2m53pk1vq7p33bna003qkyrj";
+ type = "gem";
+ };
+ version = "1.2.2";
+ };
+ selenium-webdriver = {
+ dependencies = ["childprocess" "rubyzip"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "114hv2ajmh6d186v2w887yqakqcxyxq367l0iakrrpvwviknrhfs";
+ type = "gem";
+ };
+ version = "3.141.0";
+ };
+ simplecov = {
+ dependencies = ["docile" "json" "simplecov-html"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1r9fnsnsqj432cmrpafryn8nif3x0qg9mdnvrcf0wr01prkdlnww";
+ type = "gem";
+ };
+ version = "0.14.1";
+ };
+ simplecov-html = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
+ type = "gem";
+ };
+ version = "0.10.2";
+ };
+ sprockets = {
+ dependencies = ["concurrent-ruby" "rack"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
+ type = "gem";
+ };
+ version = "3.7.2";
+ };
+ sprockets-rails = {
+ dependencies = ["actionpack" "activesupport" "sprockets"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
+ type = "gem";
+ };
+ version = "3.2.1";
+ };
+ thor = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1yhrnp9x8qcy5vc7g438amd5j9sw83ih7c30dr6g6slgw9zj3g29";
+ type = "gem";
+ };
+ version = "0.20.3";
+ };
+ thread_safe = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+ type = "gem";
+ };
+ version = "0.3.6";
+ };
+ tzinfo = {
+ dependencies = ["thread_safe"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
+ type = "gem";
+ };
+ version = "1.2.5";
+ };
+ websocket-driver = {
+ dependencies = ["websocket-extensions"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1551k3fs3kkb3ghqfj3n5lps0ikb9pyrdnzmvgfdxy8574n4g1dn";
+ type = "gem";
+ };
+ version = "0.7.0";
+ };
+ websocket-extensions = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270";
+ type = "gem";
+ };
+ version = "0.1.3";
+ };
+ xpath = {
+ dependencies = ["nokogiri"];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
+ type = "gem";
+ };
+ version = "3.2.0";
+ };
+ yard = {
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "07fykkfyrwqkfnxx9i5w6adyiadz00h497c516n96rgvs7alc74f";
+ type = "gem";
+ };
+ version = "0.9.18";
+ };
+}
\ No newline at end of file
diff --git a/pkgs/applications/version-management/redmine/default.nix b/pkgs/applications/version-management/redmine/default.nix
index 6e5a2dbbdf7..02ae5da0f3f 100644
--- a/pkgs/applications/version-management/redmine/default.nix
+++ b/pkgs/applications/version-management/redmine/default.nix
@@ -37,7 +37,7 @@ in
meta = with stdenv.lib; {
homepage = http://www.redmine.org/;
platforms = platforms.linux;
- maintainers = [ maintainers.garbas ];
+ maintainers = [ maintainers.garbas maintainers.aanderse ];
license = licenses.gpl2;
};
}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 5578106651f..5c2ed177d32 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5086,6 +5086,8 @@ in
redir = callPackage ../tools/networking/redir { };
redmine = callPackage ../applications/version-management/redmine { ruby = pkgs.ruby_2_4; };
+ # failed to build websocket-driver gem with ruby 2.6, so sticking to 2.5 for now
+ redmine_4 = callPackage ../applications/version-management/redmine/4.x { ruby = pkgs.ruby_2_5; };
redsocks = callPackage ../tools/networking/redsocks { };