diff --git a/nixos/doc/manual/release-notes/rl-1909.xml b/nixos/doc/manual/release-notes/rl-1909.xml
index b820482b1ba..3bdfc5c1763 100644
--- a/nixos/doc/manual/release-notes/rl-1909.xml
+++ b/nixos/doc/manual/release-notes/rl-1909.xml
@@ -154,6 +154,21 @@
Accelerated Video Playback for better transcoding performance.
+
+
+ The following changes apply if the stateVersion is
+ changed to 19.09 or higher. For stateVersion = "19.03"
+ or lower the old behavior is preserved.
+
+
+
+
+ solr.package defaults to
+ pkgs.solr_8.
+
+
+
+
diff --git a/nixos/modules/services/search/solr.nix b/nixos/modules/services/search/solr.nix
index 7200c40e89f..6659cc8a2d1 100644
--- a/nixos/modules/services/search/solr.nix
+++ b/nixos/modules/services/search/solr.nix
@@ -13,11 +13,19 @@ in
services.solr = {
enable = mkEnableOption "Enables the solr service.";
+ # default to the 8.x series not forcing major version upgrade of those on the 7.x series
package = mkOption {
type = types.package;
- default = pkgs.solr;
+ default = if versionAtLeast config.system.stateVersion "19.09"
+ then pkgs.solr_8
+ else pkgs.solr_7
+ ;
defaultText = "pkgs.solr";
- description = "Which Solr package to use.";
+ description = ''
+ Which Solr package to use. This defaults to version 7.x if
+ system.stateVersion < 19.09 and version 8.x
+ otherwise.
+ '';
};
port = mkOption {
diff --git a/nixos/tests/solr.nix b/nixos/tests/solr.nix
index 9ba3863411e..2108e851bc5 100644
--- a/nixos/tests/solr.nix
+++ b/nixos/tests/solr.nix
@@ -1,47 +1,65 @@
-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
+ solrTest = package: makeTest {
+ machine =
+ { config, pkgs, ... }:
+ {
+ # Ensure the virtual machine has enough memory for Solr to avoid the following error:
+ #
+ # OpenJDK 64-Bit Server VM warning:
+ # INFO: os::commit_memory(0x00000000e8000000, 402653184, 0)
+ # failed; error='Cannot allocate memory' (errno=12)
+ #
+ # There is insufficient memory for the Java Runtime Environment to continue.
+ # Native memory allocation (mmap) failed to map 402653184 bytes for committing reserved memory.
+ virtualisation.memorySize = 2000;
+
+ services.solr.enable = true;
+ services.solr.package = package;
+ };
+
+ testScript = ''
+ startAll;
+
+ $machine->waitForUnit('solr.service');
+ $machine->waitForOpenPort('8983');
+ $machine->succeed('curl --fail http://localhost:8983/solr/');
+
+ # adapted from pkgs.solr/examples/films/README.txt
+ $machine->succeed('sudo -u solr solr create -c films');
+ $machine->succeed(q(curl http://localhost:8983/solr/films/schema -X POST -H 'Content-type:application/json' --data-binary '{
+ "add-field" : {
+ "name":"name",
+ "type":"text_general",
+ "multiValued":false,
+ "stored":true
+ },
+ "add-field" : {
+ "name":"initial_release_date",
+ "type":"pdate",
+ "stored":true
+ }
+ }')) =~ /"status":0/ or die;
+ $machine->succeed('sudo -u solr post -c films ${pkgs.solr}/example/films/films.json');
+ $machine->succeed('curl http://localhost:8983/solr/films/query?q=name:batman') =~ /"name":"Batman Begins"/ or die;
+ '';
+ };
+in
{
- name = "solr";
- meta.maintainers = [ lib.maintainers.aanderse ];
+ solr_7 = solrTest pkgs.solr_7 // {
+ name = "solr_7";
+ meta.maintainers = [ lib.maintainers.aanderse ];
+ };
- machine =
- { config, pkgs, ... }:
- {
- # Ensure the virtual machine has enough memory for Solr to avoid the following error:
- #
- # OpenJDK 64-Bit Server VM warning:
- # INFO: os::commit_memory(0x00000000e8000000, 402653184, 0)
- # failed; error='Cannot allocate memory' (errno=12)
- #
- # There is insufficient memory for the Java Runtime Environment to continue.
- # Native memory allocation (mmap) failed to map 402653184 bytes for committing reserved memory.
- virtualisation.memorySize = 2000;
-
- services.solr.enable = true;
- };
-
- testScript = ''
- startAll;
-
- $machine->waitForUnit('solr.service');
- $machine->waitForOpenPort('8983');
- $machine->succeed('curl --fail http://localhost:8983/solr/');
-
- # adapted from pkgs.solr/examples/films/README.txt
- $machine->succeed('sudo -u solr solr create -c films');
- $machine->succeed(q(curl http://localhost:8983/solr/films/schema -X POST -H 'Content-type:application/json' --data-binary '{
- "add-field" : {
- "name":"name",
- "type":"text_general",
- "multiValued":false,
- "stored":true
- },
- "add-field" : {
- "name":"initial_release_date",
- "type":"pdate",
- "stored":true
- }
- }')) =~ /"status":0/ or die;
- $machine->succeed('sudo -u solr post -c films ${pkgs.solr}/example/films/films.json');
- $machine->succeed('curl http://localhost:8983/solr/films/query?q=name:batman') =~ /"name":"Batman Begins"/ or die;
- '';
-})
+ solr_8 = solrTest pkgs.solr_8 // {
+ name = "solr_8";
+ meta.maintainers = [ lib.maintainers.aanderse ];
+ };
+}
diff --git a/pkgs/servers/search/solr/8.x.nix b/pkgs/servers/search/solr/8.x.nix
new file mode 100644
index 00000000000..00821e6e40a
--- /dev/null
+++ b/pkgs/servers/search/solr/8.x.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+stdenv.mkDerivation rec {
+ pname = "solr";
+ version = "8.0.0";
+
+ src = fetchurl {
+ url = "mirror://apache/lucene/solr/${version}/solr-${version}.tgz";
+ sha256 = "04hxj7nfmbh5wfqkq1p5q2ncxszwm80l218vfdy93aw0p79r4qqf";
+ };
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ installPhase = ''
+ mkdir -p $out $out/bin
+
+ cp -r bin/solr bin/post $out/bin/
+ cp -r contrib $out/
+ cp -r dist $out/
+ cp -r example $out/
+ cp -r server $out/
+
+ wrapProgram $out/bin/solr --set JAVA_HOME "${jre}"
+ wrapProgram $out/bin/post --set JAVA_HOME "${jre}"
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = https://lucene.apache.org/solr/;
+ description = "Open source enterprise search platform from the Apache Lucene project";
+ license = licenses.asl20;
+ platforms = platforms.all;
+ maintainers = [ maintainers.rickynils maintainers.domenkozar maintainers.aanderse ];
+ };
+
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 705b2336991..76867218143 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5674,7 +5674,9 @@ in
inherit (darwin.apple_sdk.frameworks) Security;
};
- solr = callPackage ../servers/search/solr { };
+ solr = solr_8;
+ solr_7 = callPackage ../servers/search/solr { };
+ solr_8 = callPackage ../servers/search/solr/8.x.nix { };
solvespace = callPackage ../applications/graphics/solvespace { };