about summary refs log tree commit diff
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2023-12-10 06:00:56 +0000
committerGitHub <noreply@github.com>2023-12-10 06:00:56 +0000
commit39d4e1cb18bdb43229e53d4fd950c3ce77210a02 (patch)
treef0496c617a774c94297f66b53780f7a2934ac484
parentb5ff56aec743b9c83609fc0e26a6c439ee27f0df (diff)
parent584463c7449a116f095eb456116f728c2b31497b (diff)
downloadnixlib-39d4e1cb18bdb43229e53d4fd950c3ce77210a02.tar
nixlib-39d4e1cb18bdb43229e53d4fd950c3ce77210a02.tar.gz
nixlib-39d4e1cb18bdb43229e53d4fd950c3ce77210a02.tar.bz2
nixlib-39d4e1cb18bdb43229e53d4fd950c3ce77210a02.tar.lz
nixlib-39d4e1cb18bdb43229e53d4fd950c3ce77210a02.tar.xz
nixlib-39d4e1cb18bdb43229e53d4fd950c3ce77210a02.tar.zst
nixlib-39d4e1cb18bdb43229e53d4fd950c3ce77210a02.zip
Merge master into staging-next
-rwxr-xr-xlib/tests/modules.sh6
-rw-r--r--lib/tests/modules/boolByOr.nix14
-rw-r--r--lib/types.nix16
-rw-r--r--nixos/doc/manual/development/option-types.section.md7
-rw-r--r--pkgs/applications/editors/lapce/default.nix3
-rw-r--r--pkgs/applications/graphics/grafx2/default.nix48
-rw-r--r--pkgs/applications/science/logic/eprover/default.nix4
-rw-r--r--pkgs/applications/science/logic/z3/default.nix2
-rw-r--r--pkgs/applications/science/misc/root/default.nix4
-rw-r--r--pkgs/by-name/ff/ff2mpv-go/package.nix34
-rw-r--r--pkgs/by-name/go/gosmore/package.nix (renamed from pkgs/applications/misc/gosmore/default.nix)22
-rw-r--r--pkgs/by-name/go/gosmore/pointer_int_comparison.patch (renamed from pkgs/applications/misc/gosmore/pointer_int_comparison.patch)0
-rw-r--r--pkgs/by-name/re/regina/package.nix (renamed from pkgs/development/interpreters/regina/default.nix)14
-rw-r--r--pkgs/desktops/mate/mate-system-monitor/default.nix4
-rw-r--r--pkgs/development/compilers/solc/default.nix2
-rw-r--r--pkgs/development/interpreters/acl2/default.nix2
-rw-r--r--pkgs/development/python-modules/claripy/default.nix10
-rw-r--r--pkgs/development/python-modules/deal-solver/default.nix8
-rw-r--r--pkgs/development/python-modules/qiskit-terra/default.nix4
-rw-r--r--pkgs/development/tools/sass/Gemfile.lock6
-rw-r--r--pkgs/development/tools/sass/gemset.nix12
-rw-r--r--pkgs/servers/search/groonga/default.nix6
-rw-r--r--pkgs/tools/networking/octodns/default.nix63
-rw-r--r--pkgs/tools/networking/octodns/providers/bind/default.nix51
-rw-r--r--pkgs/tools/networking/octodns/providers/hetzner/default.nix52
-rw-r--r--pkgs/tools/networking/octodns/providers/powerdns/default.nix53
-rw-r--r--pkgs/tools/networking/sing-box/default.nix6
-rw-r--r--pkgs/tools/networking/snowflake/default.nix6
-rw-r--r--pkgs/tools/security/amoco/default.nix2
-rw-r--r--pkgs/top-level/all-packages.nix12
-rw-r--r--pkgs/top-level/python-aliases.nix1
-rw-r--r--pkgs/top-level/python-packages.nix6
32 files changed, 406 insertions, 74 deletions
diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh
index 21d4978a1160..0eb976c1f497 100755
--- a/lib/tests/modules.sh
+++ b/lib/tests/modules.sh
@@ -111,6 +111,12 @@ checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*'
 checkConfigError 'while evaluating a definition from `.*/define-enable-abort.nix' config.enable ./define-enable-abort.nix
 checkConfigError 'while evaluating the error message for definitions for .enable., which is an option that does not exist' config.enable ./define-enable-abort.nix
 
+# Check boolByOr type.
+checkConfigOutput '^false$' config.value.falseFalse ./boolByOr.nix
+checkConfigOutput '^true$' config.value.trueFalse ./boolByOr.nix
+checkConfigOutput '^true$' config.value.falseTrue ./boolByOr.nix
+checkConfigOutput '^true$' config.value.trueTrue ./boolByOr.nix
+
 checkConfigOutput '^1$' config.bare-submodule.nested ./declare-bare-submodule.nix ./declare-bare-submodule-nested-option.nix
 checkConfigOutput '^2$' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-deep-option.nix
 checkConfigOutput '^42$' config.bare-submodule.nested ./declare-bare-submodule.nix ./declare-bare-submodule-nested-option.nix ./declare-bare-submodule-deep-option.nix ./define-bare-submodule-values.nix
diff --git a/lib/tests/modules/boolByOr.nix b/lib/tests/modules/boolByOr.nix
new file mode 100644
index 000000000000..ff86e2dfc859
--- /dev/null
+++ b/lib/tests/modules/boolByOr.nix
@@ -0,0 +1,14 @@
+{ lib, ... }: {
+
+  options.value = lib.mkOption {
+    type = lib.types.lazyAttrsOf lib.types.boolByOr;
+  };
+
+  config.value = {
+    falseFalse = lib.mkMerge [ false false ];
+    trueFalse = lib.mkMerge [ true false ];
+    falseTrue = lib.mkMerge [ false true ];
+    trueTrue = lib.mkMerge [ true true ];
+  };
+}
+
diff --git a/lib/types.nix b/lib/types.nix
index 5ffbecda5db3..51e58eaa8ab5 100644
--- a/lib/types.nix
+++ b/lib/types.nix
@@ -275,6 +275,22 @@ rec {
       merge = mergeEqualOption;
     };
 
+    boolByOr = mkOptionType {
+      name = "boolByOr";
+      description = "boolean (merged using or)";
+      descriptionClass = "noun";
+      check = isBool;
+      merge = loc: defs:
+        foldl'
+          (result: def:
+            # Under the assumption that .check always runs before merge, we can assume that all defs.*.value
+            # have been forced, and therefore we assume we don't introduce order-dependent strictness here
+            result || def.value
+          )
+          false
+          defs;
+    };
+
     int = mkOptionType {
       name = "int";
       description = "signed integer";
diff --git a/nixos/doc/manual/development/option-types.section.md b/nixos/doc/manual/development/option-types.section.md
index 2ad3d6c4f949..f9c7ac80018e 100644
--- a/nixos/doc/manual/development/option-types.section.md
+++ b/nixos/doc/manual/development/option-types.section.md
@@ -13,6 +13,13 @@ merging is handled.
 `types.bool`
 
 :   A boolean, its values can be `true` or `false`.
+    All definitions must have the same value, after priorities. An error is thrown in case of a conflict.
+
+`types.boolByOr`
+
+:   A boolean, its values can be `true` or `false`.
+    The result is `true` if _any_ of multiple definitions is `true`.
+    In other words, definitions are merged with the logical _OR_ operator.
 
 `types.path`
 
diff --git a/pkgs/applications/editors/lapce/default.nix b/pkgs/applications/editors/lapce/default.nix
index 6b955bdb180b..e65d557fac83 100644
--- a/pkgs/applications/editors/lapce/default.nix
+++ b/pkgs/applications/editors/lapce/default.nix
@@ -97,6 +97,9 @@ rustPlatform.buildRustPackage rec {
   # Get openssl-sys to use pkg-config
   OPENSSL_NO_VENDOR = 1;
 
+  # This variable is read by build script, so that Lapce editor knows its version
+  env.RELEASE_TAG_NAME = "v${version}";
+
   buildInputs = [
     glib
     gtk3
diff --git a/pkgs/applications/graphics/grafx2/default.nix b/pkgs/applications/graphics/grafx2/default.nix
index 26454897ddab..cd2d89d0e99c 100644
--- a/pkgs/applications/graphics/grafx2/default.nix
+++ b/pkgs/applications/graphics/grafx2/default.nix
@@ -4,6 +4,7 @@
 , SDL
 , SDL_image
 , SDL_ttf
+, installShellFiles
 , fontconfig
 , libpng
 , libtiff
@@ -12,17 +13,28 @@
 , zlib
 }:
 
-stdenv.mkDerivation rec {
-  version = "2.8.3091";
+stdenv.mkDerivation (finalAttrs: {
   pname = "grafx2";
+  version = "2.8.3091";
+
+  outputs = [ "out" "man" ];
 
   src = fetchurl {
+    name = "grafx2-${finalAttrs.version}.tar.gz";
     url = "https://pulkomandy.tk/projects/GrafX2/downloads/65";
-    name = "${pname}-${version}.tar.gz";
     hash = "sha256-KdY7GUhQp/Q7t/ktLPGxI66ZHy2gDAffn2yB5pmcJCM=";
   };
 
-  nativeBuildInputs = [ pkg-config ];
+  postPatch = ''
+    substituteInPlace misc/unix/grafx2.desktop \
+      --replace "Exec=grafx2" "Exec=grafx2-sdl"
+  '';
+
+  nativeBuildInputs = [
+    installShellFiles
+    pkg-config
+  ];
+
   buildInputs = [
     SDL
     SDL_image
@@ -34,15 +46,31 @@ stdenv.mkDerivation rec {
     zlib
   ];
 
+  strictDeps = false; # Why??
+
   makeFlags = [ "-C src" ];
   installFlags = [ "-C src" "PREFIX=$(out)" ];
 
+  postInstall = ''
+    installManPage misc/unix/grafx2.1
+  '';
+
   meta = {
-    description = "Bitmap paint program inspired by the Amiga programs Deluxe Paint and Brilliance";
-    homepage = "http://pulkomandy.tk/projects/GrafX2";
-    license = lib.licenses.gpl2;
-    platforms = [ "x86_64-linux" "i686-linux" ];
-    maintainers = [];
+    homepage = "http://grafx2.eu/";
+    description = "The ultimate 256-color painting program";
+    longDescription = ''
+      GrafX2 is a bitmap paint program inspired by the Amiga programs ​Deluxe
+      Paint and Brilliance. Specialized in 256-color drawing, it includes a very
+      large number of tools and effects that make it particularly suitable for
+      pixel art, game graphics, and generally any detailed graphics painted with
+      a mouse.
+
+      The program is mostly developed on Haiku, Linux and Windows, but is also
+      portable on many other platforms.
+    '';
+    license = with lib.licenses; [ gpl2Plus ];
     mainProgram = "grafx2-sdl";
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+    platforms = lib.platforms.unix;
   };
-}
+})
diff --git a/pkgs/applications/science/logic/eprover/default.nix b/pkgs/applications/science/logic/eprover/default.nix
index ec1fc6b11d25..d4a8b7a6b2e8 100644
--- a/pkgs/applications/science/logic/eprover/default.nix
+++ b/pkgs/applications/science/logic/eprover/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "eprover";
-  version = "3.0";
+  version = "3.0.03";
 
   src = fetchurl {
     url = "https://wwwlehre.dhbw-stuttgart.de/~sschulz/WORK/E_DOWNLOAD/V_${version}/E.tgz";
-    hash = "sha256-gBgDC+GH948JMsjzo/SOpWDzJXu0g58YX1VW28PeorI=";
+    hash = "sha256-cS5zUe2N9Kd9uzbNpeBtvLbgUN0c3N3tGcYczK3KsdQ=";
   };
 
   buildInputs = [ which ];
diff --git a/pkgs/applications/science/logic/z3/default.nix b/pkgs/applications/science/logic/z3/default.nix
index 6165cfe8bd22..26848e1397aa 100644
--- a/pkgs/applications/science/logic/z3/default.nix
+++ b/pkgs/applications/science/logic/z3/default.nix
@@ -24,7 +24,7 @@ let common = { version, sha256, patches ? [ ], tag ? "z3" }:
     inherit version sha256 patches;
     src = fetchFromGitHub {
       owner = "Z3Prover";
-      repo = pname;
+      repo = "z3";
       rev = "${tag}-${version}";
       sha256 = sha256;
     };
diff --git a/pkgs/applications/science/misc/root/default.nix b/pkgs/applications/science/misc/root/default.nix
index 3f3b64069bb1..24844eb621ec 100644
--- a/pkgs/applications/science/misc/root/default.nix
+++ b/pkgs/applications/science/misc/root/default.nix
@@ -58,7 +58,7 @@
 
 stdenv.mkDerivation rec {
   pname = "root";
-  version = "6.28.08";
+  version = "6.28.10";
 
   passthru = {
     tests = import ./tests { inherit callPackage; };
@@ -66,7 +66,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://root.cern.ch/download/root_v${version}.source.tar.gz";
-    hash = "sha256-o+ZLTAH4fNm75X5h75a0FibkmwRGCVBw1B2b+6NSaGI=";
+    hash = "sha256-adb962B+ayC9AsdX+mIXAkwLYTLB6bHf9Nhdmiu35R4=";
   };
 
   nativeBuildInputs = [ makeWrapper cmake pkg-config git ];
diff --git a/pkgs/by-name/ff/ff2mpv-go/package.nix b/pkgs/by-name/ff/ff2mpv-go/package.nix
new file mode 100644
index 000000000000..71e0f98a478d
--- /dev/null
+++ b/pkgs/by-name/ff/ff2mpv-go/package.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildGoModule
+, fetchgit
+, mpv
+}:
+buildGoModule rec {
+  pname = "ff2mpv-go";
+  version = "1.0.1";
+
+  src = fetchgit {
+    url = "https://git.clsr.net/util/ff2mpv-go/";
+    rev = "v${version}";
+    hash = "sha256-e/AuOA3isFTyBf97Zwtr16yo49UdYzvktV5PKB/eH/s=";
+  };
+
+  vendorHash = null;
+
+  postPatch = ''
+    substituteInPlace ff2mpv.go --replace '"mpv"' '"${lib.getExe mpv}"'
+  '';
+
+  postInstall = ''
+    mkdir -p "$out/lib/mozilla/native-messaging-hosts"
+    $out/bin/ff2mpv-go --manifest > "$out/lib/mozilla/native-messaging-hosts/ff2mpv.json"
+  '';
+
+  meta = with lib; {
+    description = "Native messaging host for ff2mpv written in Go";
+    homepage = "https://git.clsr.net/util/ff2mpv-go/";
+    license = licenses.publicDomain;
+    maintainers = with maintainers; [ ambroisie ];
+    mainProgram = "ff2mpv-go";
+  };
+}
diff --git a/pkgs/applications/misc/gosmore/default.nix b/pkgs/by-name/go/gosmore/package.nix
index bd87e7b4aeb6..2bc778ff9cb2 100644
--- a/pkgs/applications/misc/gosmore/default.nix
+++ b/pkgs/by-name/go/gosmore/package.nix
@@ -1,24 +1,26 @@
-{ lib, stdenv, fetchsvn, libxml2, gtk2, curl, pkg-config } :
+{ lib, stdenv, fetchFromGitHub, libxml2, gtk2, curl, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "gosmore";
-  version = "31801";
-  # the gosmore svn repository does not lock revision numbers of its externals
-  # so we explicitly disable them to avoid breaking the hash
-  # especially as the externals appear to be unused
-  src = fetchsvn {
-    url = "http://svn.openstreetmap.org/applications/rendering/gosmore";
-    sha256 = "0qsckpqx7i7f8gkqhkzdamr65250afk1rpnh3nbman35kdv3dsxi";
-    rev = version;
-    ignoreExternals = true;
+  version = "unstable-2014-03-17";
+
+  src = fetchFromGitHub {
+    owner = "openstreetmap";
+    repo = "svn-archive";
+    rev = "89b1fbfbc9e9a8b5e78795fd40bdfa60550322fc";
+    sparseCheckout = [ "applications/rendering/gosmore" ];
+    hash = "sha256-MfuJVsyGWspGNAFD6Ktbbyawb4bPwUITe7WkyFs6JxI=";
   };
 
+  sourceRoot = "${src.name}/applications/rendering/gosmore";
+
   buildInputs = [ libxml2 gtk2 curl ];
 
   nativeBuildInputs = [ pkg-config ];
 
   prePatch = ''
     sed -e '/curl.types.h/d' -i *.{c,h,hpp,cpp}
+    sed -e "24i #include <ctime>" -e "s/data/dat/g" -i jni/libgosm.cpp
   '';
 
   patches = [ ./pointer_int_comparison.patch ];
diff --git a/pkgs/applications/misc/gosmore/pointer_int_comparison.patch b/pkgs/by-name/go/gosmore/pointer_int_comparison.patch
index 4a715b6d8591..4a715b6d8591 100644
--- a/pkgs/applications/misc/gosmore/pointer_int_comparison.patch
+++ b/pkgs/by-name/go/gosmore/pointer_int_comparison.patch
diff --git a/pkgs/development/interpreters/regina/default.nix b/pkgs/by-name/re/regina/package.nix
index 79258d2cc0fa..7480ade5413c 100644
--- a/pkgs/development/interpreters/regina/default.nix
+++ b/pkgs/by-name/re/regina/package.nix
@@ -1,12 +1,16 @@
-{ lib, stdenv, fetchurl, ncurses }:
+{ lib
+, stdenv
+, fetchurl
+, ncurses
+}:
 
 stdenv.mkDerivation rec {
-  pname = "Regina-REXX";
-  version = "3.9.1";
+  pname = "regina-rexx";
+  version = "3.9.5";
 
   src = fetchurl {
     url = "mirror://sourceforge/regina-rexx/regina-rexx/${version}/${pname}-${version}.tar.gz";
-    sha256 = "1vpksnjmg6y5zag9li6sxqxj2xapgalfz8krfxgg49vyk0kdy4sx";
+    hash = "sha256-COmpBhvuADjPtFRG3iB2b/2uUO6jf2ZCRG7E5zoqvFE=";
   };
 
   buildInputs = [ ncurses ];
@@ -18,7 +22,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "REXX interpreter";
     maintainers = [ maintainers.raskin ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     license = licenses.lgpl2;
   };
 }
diff --git a/pkgs/desktops/mate/mate-system-monitor/default.nix b/pkgs/desktops/mate/mate-system-monitor/default.nix
index 6c39e69f0c0e..a4f79e122122 100644
--- a/pkgs/desktops/mate/mate-system-monitor/default.nix
+++ b/pkgs/desktops/mate/mate-system-monitor/default.nix
@@ -17,11 +17,11 @@
 
 stdenv.mkDerivation rec {
   pname = "mate-system-monitor";
-  version = "1.26.1";
+  version = "1.26.2";
 
   src = fetchurl {
     url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "HrX7m2y0qK2DCyboR6m70B1WiqvTg8Yo7p8IQJuJKOc=";
+    sha256 = "vm2X3saPXza94S+KyvGsVkLSOaXSQWGoL/9QZPRQJUQ=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/compilers/solc/default.nix b/pkgs/development/compilers/solc/default.nix
index 986f6f169e8b..0603706164ae 100644
--- a/pkgs/development/compilers/solc/default.nix
+++ b/pkgs/development/compilers/solc/default.nix
@@ -86,7 +86,7 @@ let
     buildInputs = [ boost ]
       ++ lib.optionals z3Support [ z3 ]
       ++ lib.optionals cvc4Support [ cvc4 cln gmp ];
-    nativeCheckInputs = [ jq ncurses (python3.withPackages (ps: with ps; [ colorama deepdiff devtools docopt docutils requests sphinx tabulate z3 ])) ]; # contextlib2 glob2 textwrap3 traceback2 urllib3
+    nativeCheckInputs = [ jq ncurses (python3.withPackages (ps: with ps; [ colorama deepdiff devtools docopt docutils requests sphinx tabulate z3-solver ])) ]; # contextlib2 glob2 textwrap3 traceback2 urllib3
 
     # tests take 60+ minutes to complete, only run as part of passthru tests
     doCheck = false;
diff --git a/pkgs/development/interpreters/acl2/default.nix b/pkgs/development/interpreters/acl2/default.nix
index 9953eaa3144c..bf37d19cd8c4 100644
--- a/pkgs/development/interpreters/acl2/default.nix
+++ b/pkgs/development/interpreters/acl2/default.nix
@@ -50,7 +50,7 @@ in stdenv.mkDerivation rec {
     which perl hostname
     # Some of the books require one or more of these external tools:
     glucose minisat abc-verifier libipasir
-    z3 (python3.withPackages (ps: [ ps.z3 ]))
+    z3 (python3.withPackages (ps: [ ps.z3-solver ]))
   ];
 
   # NOTE: Parallel building can be memory-intensive depending on the number of
diff --git a/pkgs/development/python-modules/claripy/default.nix b/pkgs/development/python-modules/claripy/default.nix
index c343f7f3e872..fb0c8dbdf297 100644
--- a/pkgs/development/python-modules/claripy/default.nix
+++ b/pkgs/development/python-modules/claripy/default.nix
@@ -8,7 +8,7 @@
 , pysmt
 , pythonOlder
 , pytestCheckHook
-, z3
+, z3-solver
 }:
 
 buildPythonPackage rec {
@@ -34,19 +34,13 @@ buildPythonPackage rec {
     decorator
     future
     pysmt
-    z3
+    z3-solver
   ];
 
   nativeCheckInputs = [
     pytestCheckHook
   ];
 
-  postPatch = ''
-    # Use upstream z3 implementation
-    substituteInPlace setup.cfg \
-      --replace "z3-solver==4.10.2.0" ""
-  '';
-
   pythonImportsCheck = [
     "claripy"
   ];
diff --git a/pkgs/development/python-modules/deal-solver/default.nix b/pkgs/development/python-modules/deal-solver/default.nix
index 5c91d6d92559..28eee72a99d2 100644
--- a/pkgs/development/python-modules/deal-solver/default.nix
+++ b/pkgs/development/python-modules/deal-solver/default.nix
@@ -3,7 +3,7 @@
 , fetchFromGitHub
 , pythonOlder
 , flit-core
-, z3
+, z3-solver
 , astroid
 , pytestCheckHook
 , hypothesis
@@ -28,9 +28,7 @@ buildPythonPackage rec {
   ];
 
   postPatch = ''
-    # Use upstream z3 implementation
     substituteInPlace pyproject.toml \
-      --replace "\"z3-solver\"," "" \
       --replace "\"--cov=deal_solver\"," "" \
       --replace "\"--cov-report=html\"," "" \
       --replace "\"--cov-report=xml\"," "" \
@@ -39,9 +37,9 @@ buildPythonPackage rec {
   '';
 
   propagatedBuildInputs = [
-    z3
+    z3-solver
     astroid
-  ] ++ z3.requiredPythonModules;
+  ] ++ z3-solver.requiredPythonModules;
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/qiskit-terra/default.nix b/pkgs/development/python-modules/qiskit-terra/default.nix
index 596f9d619d2e..38c01d252ae1 100644
--- a/pkgs/development/python-modules/qiskit-terra/default.nix
+++ b/pkgs/development/python-modules/qiskit-terra/default.nix
@@ -35,7 +35,7 @@
 , seaborn
   # Crosstalk-adaptive layout pass
 , withCrosstalkPass ? false
-, z3
+, z3-solver
   # test requirements
 , ddt
 , hypothesis
@@ -55,7 +55,7 @@ let
     pylatexenc
     seaborn
   ];
-  crosstalkPackages = [ z3 ];
+  crosstalkPackages = [ z3-solver ];
 in
 
 buildPythonPackage rec {
diff --git a/pkgs/development/tools/sass/Gemfile.lock b/pkgs/development/tools/sass/Gemfile.lock
index 9882e1efcc4f..1904c01ecf26 100644
--- a/pkgs/development/tools/sass/Gemfile.lock
+++ b/pkgs/development/tools/sass/Gemfile.lock
@@ -1,9 +1,9 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    ffi (1.10.0)
-    rb-fsevent (0.10.3)
-    rb-inotify (0.10.0)
+    ffi (1.16.3)
+    rb-fsevent (0.11.2)
+    rb-inotify (0.10.1)
       ffi (~> 1.0)
     sass (3.7.4)
       sass-listen (~> 4.0.0)
diff --git a/pkgs/development/tools/sass/gemset.nix b/pkgs/development/tools/sass/gemset.nix
index c0c5937b15a4..5cadd7870b86 100644
--- a/pkgs/development/tools/sass/gemset.nix
+++ b/pkgs/development/tools/sass/gemset.nix
@@ -4,20 +4,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0j8pzj8raxbir5w5k6s7a042sb5k02pg0f8s4na1r5lan901j00p";
+      sha256 = "1yvii03hcgqj30maavddqamqy50h7y6xcn2wcyq72wn823zl4ckd";
       type = "gem";
     };
-    version = "1.10.0";
+    version = "1.16.3";
   };
   rb-fsevent = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
+      sha256 = "1zmf31rnpm8553lqwibvv3kkx0v7majm1f341xbxc0bk5sbhp423";
       type = "gem";
     };
-    version = "0.10.3";
+    version = "0.11.2";
   };
   rb-inotify = {
     dependencies = ["ffi"];
@@ -25,10 +25,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1fs7hxm9g6ywv2yih83b879klhc4fs8i0p9166z795qmd77dk0a4";
+      sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005";
       type = "gem";
     };
-    version = "0.10.0";
+    version = "0.10.1";
   };
   sass = {
     dependencies = ["sass-listen"];
diff --git a/pkgs/servers/search/groonga/default.nix b/pkgs/servers/search/groonga/default.nix
index 49cc74bafc2a..0acb6e1cb564 100644
--- a/pkgs/servers/search/groonga/default.nix
+++ b/pkgs/servers/search/groonga/default.nix
@@ -1,5 +1,5 @@
-{ lib, stdenv, cmake, fetchurl, kytea, mecab, pkg-config, rapidjson, testers, xxHash, zstd, postgresqlPackages
-, suggestSupport ? false, zeromq, libevent, msgpack, openssl
+{ lib, stdenv, cmake, fetchurl, kytea, msgpack-c, mecab, pkg-config, rapidjson, testers, xxHash, zstd, postgresqlPackages
+, suggestSupport ? false, zeromq, libevent, openssl
 , lz4Support  ? false, lz4
 , zlibSupport ? true, zlib
 }:
@@ -29,6 +29,7 @@ stdenv.mkDerivation (finalAttrs: {
     zstd
     mecab
     kytea
+    msgpack-c
   ] ++ lib.optionals lz4Support [
     lz4
   ] ++ lib.optional zlibSupport [
@@ -36,7 +37,6 @@ stdenv.mkDerivation (finalAttrs: {
   ] ++ lib.optionals suggestSupport [
     zeromq
     libevent
-    msgpack
   ];
 
   env.NIX_CFLAGS_COMPILE = lib.optionalString zlibSupport "-I${zlib.dev}/include";
diff --git a/pkgs/tools/networking/octodns/default.nix b/pkgs/tools/networking/octodns/default.nix
new file mode 100644
index 000000000000..56226c29d0e9
--- /dev/null
+++ b/pkgs/tools/networking/octodns/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, setuptools
+, wheel
+, pytestCheckHook
+, dnspython
+, fqdn
+, idna
+, natsort
+, python-dateutil
+, pyyaml
+, python
+, runCommand
+}:
+
+buildPythonPackage rec {
+  pname = "octodns";
+  version = "1.4.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "octodns";
+    repo = "octodns";
+    rev = "v${version}";
+    hash = "sha256-l4JGodbUmFxHFeEaxgClEozHcbyYP0F2yj5gDqV88IA=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    wheel
+    pytestCheckHook
+  ];
+
+  propagatedBuildInputs = [
+    dnspython
+    fqdn
+    idna
+    natsort
+    python-dateutil
+    pyyaml
+  ];
+
+  pythonImportsCheck = [ "octodns" ];
+
+  passthru.withProviders = ps: let
+    pyEnv = python.withPackages ps;
+  in runCommand "octodns-with-providers" { } ''
+    mkdir -p $out/bin
+    ln -st $out/bin ${pyEnv}/bin/octodns-*
+  '';
+
+  meta = with lib; {
+    description = "Tools for managing DNS across multiple providers";
+    homepage = "https://github.com/octodns/octodns";
+    changelog = "https://github.com/octodns/octodns/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ janik ];
+  };
+}
diff --git a/pkgs/tools/networking/octodns/providers/bind/default.nix b/pkgs/tools/networking/octodns/providers/bind/default.nix
new file mode 100644
index 000000000000..46631ebd8e15
--- /dev/null
+++ b/pkgs/tools/networking/octodns/providers/bind/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, octodns
+, pytestCheckHook
+, pythonOlder
+, dnspython
+, setuptools
+, wheel
+}:
+
+buildPythonPackage rec {
+  pname = "octodns-bind";
+  version = "0.0.5";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "octodns";
+    repo = "octodns-bind";
+    rev = "v${version}";
+    hash = "sha256-0ia/xYarrOiLZa8KU0s5wtCGtXIyxSl6OcwNkSJb/rA=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    wheel
+  ];
+
+  propagatedBuildInputs = [
+    octodns
+    dnspython
+  ];
+
+  env.OCTODNS_RELEASE = 1;
+
+  pythonImportsCheck = [ "octodns_bind" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = " RFC compliant (Bind9) provider for octoDNS";
+    homepage = "https://github.com/octodns/octodns-bind";
+    changelog = "https://github.com/octodns/octodns-bind/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ janik ];
+  };
+}
diff --git a/pkgs/tools/networking/octodns/providers/hetzner/default.nix b/pkgs/tools/networking/octodns/providers/hetzner/default.nix
new file mode 100644
index 000000000000..eb0903964b71
--- /dev/null
+++ b/pkgs/tools/networking/octodns/providers/hetzner/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, octodns
+, pytestCheckHook
+, pythonOlder
+, requests
+, requests-mock
+, setuptools
+, wheel
+}:
+
+buildPythonPackage rec {
+  pname = "octodns-hetzner";
+  # the latest release tag is over a year behind.
+  version = "0.0.2-unstable-2023-09-29";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "octodns";
+    repo = "octodns-hetzner";
+    rev = "620840593a520dac9e365240b3ab361ded309c8e";
+    hash = "sha256-WdYy8tc0+PYsKuyp3uqOzbxwhLSZ+06L3JVaTSATEKM=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    wheel
+  ];
+
+  propagatedBuildInputs = [
+    octodns
+    requests
+  ];
+
+  pythonImportsCheck = [ "octodns_hetzner" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    requests-mock
+  ];
+
+  meta = with lib; {
+    description = "Hetzner DNS provider for octoDNS";
+    homepage = "https://github.com/octodns/octodns-hetzner/";
+    changelog = "https://github.com/octodns/octodns-hetzner/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ janik ];
+  };
+}
diff --git a/pkgs/tools/networking/octodns/providers/powerdns/default.nix b/pkgs/tools/networking/octodns/providers/powerdns/default.nix
new file mode 100644
index 000000000000..68ddc56112b2
--- /dev/null
+++ b/pkgs/tools/networking/octodns/providers/powerdns/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, octodns
+, pytestCheckHook
+, pythonOlder
+, requests
+, requests-mock
+, setuptools
+, wheel
+}:
+
+buildPythonPackage rec {
+  pname = "octodns-powerdns";
+  version = "0.0.5";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "octodns";
+    repo = "octodns-powerdns";
+    rev = "v${version}";
+    hash = "sha256-jt0+JnpCgvsoqMcC9mANX7uq2WPTiI2JQjwQi7LGWj0=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    wheel
+  ];
+
+  propagatedBuildInputs = [
+    octodns
+    requests
+  ];
+
+  env.OCTODNS_RELEASE = 1;
+
+  pythonImportsCheck = [ "octodns_powerdns" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    requests-mock
+  ];
+
+  meta = with lib; {
+    description = "PowerDNS API provider for octoDNS";
+    homepage = "https://github.com/octodns/octodns-powerdns/";
+    changelog = "https://github.com/octodns/octodns-powerdns/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ janik ];
+  };
+}
diff --git a/pkgs/tools/networking/sing-box/default.nix b/pkgs/tools/networking/sing-box/default.nix
index 361eacae4d0e..a158f221894a 100644
--- a/pkgs/tools/networking/sing-box/default.nix
+++ b/pkgs/tools/networking/sing-box/default.nix
@@ -11,16 +11,16 @@
 
 buildGoModule rec {
   pname = "sing-box";
-  version = "1.7.2";
+  version = "1.7.4";
 
   src = fetchFromGitHub {
     owner = "SagerNet";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-SaWSmc498eLkWddnsHFpR6BPSbX/VHAlq+X4B7JG3Rk=";
+    hash = "sha256-I1c6zc/vnAoE97wESy3ZGITto4d5dfjpGNbw4vTeElc=";
   };
 
-  vendorHash = "sha256-Frbv2KD5hJ5HHUdY9mm0aZ9NA5TN1D0am+FhpJZTvr4=";
+  vendorHash = "sha256-wK5gwj7UnQCHtRLim3S81n0T2N8jMP74K4TWxJYVuRA=";
 
   tags = [
     "with_quic"
diff --git a/pkgs/tools/networking/snowflake/default.nix b/pkgs/tools/networking/snowflake/default.nix
index c4d26ae53d96..071305f951cf 100644
--- a/pkgs/tools/networking/snowflake/default.nix
+++ b/pkgs/tools/networking/snowflake/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "snowflake";
-  version = "2.7.0";
+  version = "2.8.0";
 
   src = fetchFromGitLab {
     domain = "gitlab.torproject.org";
@@ -10,10 +10,10 @@ buildGoModule rec {
     owner = "anti-censorship/pluggable-transports";
     repo = "snowflake";
     rev = "v${version}";
-    sha256 = "sha256-vurNOJuu9bKmyLM3Agr8wHwMybLrtrJFSrlrc+lWiWQ=";
+    sha256 = "sha256-/bip6hjYDTcSdtqeHxWcH7Yn4VepGVy3ki/kZWEQaPE=";
   };
 
-  vendorHash = "sha256-Bjd3HIVEQgrcBffcZPQhQygN/ZOPWTbN9oimmX4B1oQ=";
+  vendorHash = "sha256-dpOJE6FHaumL6vapigLTobS1r42DIFV8LHfVNvyZnsU=";
 
   meta = with lib; {
     description = "System to defeat internet censorship";
diff --git a/pkgs/tools/security/amoco/default.nix b/pkgs/tools/security/amoco/default.nix
index a9c182ca4cbc..fe16ad9596dd 100644
--- a/pkgs/tools/security/amoco/default.nix
+++ b/pkgs/tools/security/amoco/default.nix
@@ -36,7 +36,7 @@ python3.pkgs.buildPythonApplication rec {
       prompt-toolkit
       pygments
       # pyside6
-      z3
+      z3-solver
     ];
   };
 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 88297c32de19..3bcb16311887 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -846,6 +846,14 @@ with pkgs;
 
   oauth2c = callPackage ../tools/security/oauth2c { };
 
+  octodns = python3Packages.callPackage ../tools/networking/octodns { };
+
+  octodns-providers = recurseIntoAttrs {
+    bind = python3Packages.callPackage ../tools/networking/octodns/providers/bind { };
+    hetzner = python3Packages.callPackage ../tools/networking/octodns/providers/hetzner { };
+    powerdns = python3Packages.callPackage ../tools/networking/octodns/providers/powerdns { };
+  };
+
   octosuite = callPackage ../tools/security/octosuite { };
 
   octosql = callPackage ../tools/misc/octosql { };
@@ -17990,8 +17998,6 @@ with pkgs;
 
   regextester = callPackage ../applications/misc/regextester { };
 
-  regina = callPackage ../development/interpreters/regina { };
-
   inherit (ocamlPackages) reason;
 
   buildRubyGem = callPackage ../development/ruby-modules/gem {
@@ -32305,8 +32311,6 @@ with pkgs;
 
   gostatic = callPackage ../applications/misc/gostatic { };
 
-  gosmore = callPackage ../applications/misc/gosmore { stdenv = gcc10StdenvCompat; };
-
   gossa = callPackage ../applications/networking/gossa { };
 
   gpsbabel = libsForQt5.callPackage ../applications/misc/gpsbabel { };
diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix
index c2bd5f390409..4cced0da0d14 100644
--- a/pkgs/top-level/python-aliases.nix
+++ b/pkgs/top-level/python-aliases.nix
@@ -464,6 +464,7 @@ mapAliases ({
   xenomapper = throw "xenomapper was moved to pkgs.xenomapper"; # added 2021-12-31
   XlsxWriter = xlsxwriter; # added 2023-02-19
   Yapsy = yapsy; # added 2023-02-19
+  z3 = z3-solver; # added 2023-12-03
   zake = throw "zake has been removed because it is abandoned"; # added 2023-06-20
   zc-buildout221 = zc-buildout; # added 2021-07-21
   zc_buildout_nix = throw "zc_buildout_nix was pinned to a version no longer compatible with other modules";
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 075586b9db5c..6929933a5089 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -16239,9 +16239,11 @@ self: super: with self; {
 
   z3c-checkversions = callPackage ../development/python-modules/z3c-checkversions { };
 
-  z3 = (toPythonModule (pkgs.z3.override {
+  z3-solver = (toPythonModule ((pkgs.z3.override {
     inherit python;
-  })).python;
+  }).overrideAttrs (_: {
+    pname = "z3-solver";
+  }))).python;
 
   zadnegoale = callPackage ../development/python-modules/zadnegoale { };