summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/hooks/index.md1
-rw-r--r--doc/hooks/zig.section.md59
-rw-r--r--nixos/tests/binary-cache.nix10
-rw-r--r--nixos/tests/buildkite-agents.nix6
-rw-r--r--nixos/tests/deepin.nix4
-rw-r--r--nixos/tests/initrd-network-ssh/default.nix18
-rw-r--r--nixos/tests/osquery.nix6
-rw-r--r--nixos/tests/sftpgo.nix10
-rw-r--r--nixos/tests/systemd-initrd-networkd-ssh.nix17
-rw-r--r--pkgs/applications/misc/organicmaps/default.nix7
-rw-r--r--pkgs/applications/networking/browsers/netsurf/browser.nix112
-rw-r--r--pkgs/applications/networking/browsers/netsurf/buildsystem.nix24
-rw-r--r--pkgs/applications/networking/browsers/netsurf/default.nix25
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libcss.nix35
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libdom.nix30
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libhubbub.nix28
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnsbmp.nix24
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnsfb.nix29
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnsgif.nix27
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnslog.nix32
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnspsl.nix24
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnsutils.nix24
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libparserutils.nix30
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix35
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libutf8proc.nix16
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix24
-rw-r--r--pkgs/applications/networking/browsers/netsurf/nsgenbind.nix32
-rw-r--r--pkgs/data/misc/dbip-country-lite/default.nix13
-rw-r--r--pkgs/data/misc/v2ray-domain-list-community/default.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix4
-rw-r--r--pkgs/development/compilers/circt/default.nix7
-rw-r--r--pkgs/development/compilers/zig/hook.nix17
-rw-r--r--pkgs/development/compilers/zig/setup-hook.sh90
-rw-r--r--pkgs/development/python-modules/async-lru/default.nix4
-rw-r--r--pkgs/development/python-modules/subarulink/default.nix4
-rw-r--r--pkgs/tools/misc/phrase-cli/default.nix6
-rw-r--r--pkgs/tools/networking/juicity/default.nix6
-rw-r--r--pkgs/top-level/all-packages.nix2
38 files changed, 549 insertions, 297 deletions
diff --git a/doc/hooks/index.md b/doc/hooks/index.md
index c1e86a30330..602febaf9d9 100644
--- a/doc/hooks/index.md
+++ b/doc/hooks/index.md
@@ -29,5 +29,6 @@ tetex-tex-live.section.md
 unzip.section.md
 validatePkgConfig.section.md
 waf.section.md
+zig.section.md
 xcbuild.section.md
 ```
diff --git a/doc/hooks/zig.section.md b/doc/hooks/zig.section.md
new file mode 100644
index 00000000000..78b8262f474
--- /dev/null
+++ b/doc/hooks/zig.section.md
@@ -0,0 +1,59 @@
+# zigHook {#zighook}
+
+[Zig](https://ziglang.org/) is a general-purpose programming language and toolchain for maintaining robust, optimal and reusable software.
+
+In Nixpkgs, `zigHook` overrides the default build, check and install phases.
+
+## Example code snippet {#example-code-snippet}
+
+```nix
+{ lib
+, stdenv
+, zigHook
+}:
+
+stdenv.mkDerivation {
+  # . . .
+
+  nativeBuildInputs = [
+    zigHook
+  ];
+
+  zigBuildFlags = [ "-Dman-pages=true" ];
+
+  dontUseZigCheck = true;
+
+  # . . .
+}
+```
+
+## Variables controlling zigHook {#variables-controlling-zighook}
+
+### `dontUseZigBuild` {#dontUseZigBuild}
+
+Disables using `zigBuildPhase`.
+
+### `zigBuildFlags` {#zigBuildFlags}
+
+Controls the flags passed to the build phase.
+
+### `dontUseZigCheck` {#dontUseZigCheck}
+
+Disables using `zigCheckPhase`.
+
+### `zigCheckFlags` {#zigCheckFlags}
+
+Controls the flags passed to the check phase.
+
+### `dontUseZigInstall` {#dontUseZigInstall}
+
+Disables using `zigInstallPhase`.
+
+### `zigInstallFlags` {#zigInstallFlags}
+
+Controls the flags passed to the install phase.
+
+### Variables honored by zigHook {#variablesHonoredByZigHook}
+
+- `prefixKey`
+- `dontAddPrefix`
diff --git a/nixos/tests/binary-cache.nix b/nixos/tests/binary-cache.nix
index 0809e59e5a1..bc1c6fb9a26 100644
--- a/nixos/tests/binary-cache.nix
+++ b/nixos/tests/binary-cache.nix
@@ -1,16 +1,14 @@
-import ./make-test-python.nix ({ lib, ... }:
-
-with lib;
+import ./make-test-python.nix ({ lib, pkgs, ... }:
 
 {
   name = "binary-cache";
-  meta.maintainers = with maintainers; [ thomasjm ];
+  meta.maintainers = with lib.maintainers; [ thomasjm ];
 
   nodes.machine =
     { pkgs, ... }: {
       imports = [ ../modules/installer/cd-dvd/channel.nix ];
-      environment.systemPackages = with pkgs; [python3];
-      system.extraDependencies = with pkgs; [hello.inputDerivation];
+      environment.systemPackages = [ pkgs.python3 ];
+      system.extraDependencies = [ pkgs.hello.inputDerivation ];
       nix.extraOptions = ''
         experimental-features = nix-command
       '';
diff --git a/nixos/tests/buildkite-agents.nix b/nixos/tests/buildkite-agents.nix
index 2c5593323e8..a5abfdb5e2e 100644
--- a/nixos/tests/buildkite-agents.nix
+++ b/nixos/tests/buildkite-agents.nix
@@ -1,10 +1,8 @@
-import ./make-test-python.nix ({ pkgs, ... }:
+import ./make-test-python.nix ({ lib, pkgs, ... }:
 
 {
   name = "buildkite-agent";
-  meta = with pkgs.lib.maintainers; {
-    maintainers = [ flokli ];
-  };
+  meta.maintainers = with lib.maintainers; [ flokli ];
 
   nodes.machine = { pkgs, ... }: {
     services.buildkite-agents = {
diff --git a/nixos/tests/deepin.nix b/nixos/tests/deepin.nix
index acec27ca1c4..7b2e2430f31 100644
--- a/nixos/tests/deepin.nix
+++ b/nixos/tests/deepin.nix
@@ -1,9 +1,7 @@
 import ./make-test-python.nix ({ pkgs, lib, ... }: {
   name = "deepin";
 
-  meta = with lib; {
-    maintainers = teams.deepin.members;
-  };
+  meta.maintainers = lib.teams.deepin.members;
 
   nodes.machine = { ... }: {
     imports = [
diff --git a/nixos/tests/initrd-network-ssh/default.nix b/nixos/tests/initrd-network-ssh/default.nix
index 017de688208..17b6c21ff1e 100644
--- a/nixos/tests/initrd-network-ssh/default.nix
+++ b/nixos/tests/initrd-network-ssh/default.nix
@@ -1,12 +1,10 @@
-import ../make-test-python.nix ({ lib, ... }:
+import ../make-test-python.nix ({ lib, pkgs, ... }:
 
 {
   name = "initrd-network-ssh";
-  meta = with lib.maintainers; {
-    maintainers = [ willibutz emily ];
-  };
+  meta.maintainers = with lib.maintainers; [ willibutz emily ];
 
-  nodes = with lib; {
+  nodes = {
     server =
       { config, ... }:
       {
@@ -17,7 +15,7 @@ import ../make-test-python.nix ({ lib, ... }:
           enable = true;
           ssh = {
             enable = true;
-            authorizedKeys = [ (readFile ./id_ed25519.pub) ];
+            authorizedKeys = [ (lib.readFile ./id_ed25519.pub) ];
             port = 22;
             hostKeys = [ ./ssh_host_ed25519_key ];
           };
@@ -37,12 +35,12 @@ import ../make-test-python.nix ({ lib, ... }:
       {
         environment.etc = {
           knownHosts = {
-            text = concatStrings [
+            text = lib.concatStrings [
               "server,"
-              "${toString (head (splitString " " (
-                toString (elemAt (splitString "\n" config.networking.extraHosts) 2)
+              "${toString (lib.head (lib.splitString " " (
+                toString (lib.elemAt (lib.splitString "\n" config.networking.extraHosts) 2)
               )))} "
-              "${readFile ./ssh_host_ed25519_key.pub}"
+              "${lib.readFile ./ssh_host_ed25519_key.pub}"
             ];
           };
           sshKey = {
diff --git a/nixos/tests/osquery.nix b/nixos/tests/osquery.nix
index dc55fa82f8d..9aa9820e50c 100644
--- a/nixos/tests/osquery.nix
+++ b/nixos/tests/osquery.nix
@@ -1,7 +1,5 @@
 import ./make-test-python.nix ({ lib, pkgs, ... }:
 
-with lib;
-
 let
   config_refresh = "10";
   nullvalue = "NULL";
@@ -9,9 +7,7 @@ let
 in
 {
   name = "osquery";
-  meta = with maintainers; {
-    maintainers = [ znewman01 lewo ];
-  };
+  meta.maintainers = with lib.maintainers; [ znewman01 lewo ];
 
   nodes.machine = { config, pkgs, ... }: {
     services.osquery = {
diff --git a/nixos/tests/sftpgo.nix b/nixos/tests/sftpgo.nix
index ca55b9c962a..8cd5675c1d4 100644
--- a/nixos/tests/sftpgo.nix
+++ b/nixos/tests/sftpgo.nix
@@ -12,8 +12,6 @@
 # would be a nice to have for the future.
 { pkgs, lib, ...  }:
 
-with lib;
-
 let
   inherit (import ./ssh-keys.nix pkgs) snakeOilPrivateKey snakeOilPublicKey;
 
@@ -54,7 +52,7 @@ let
       # inside the dataprovider they will be automatically created.
       # You have to create the folder on the filesystem yourself
       virtual_folders =
-        optional (isMemberOf config sharedFolderName user) {
+        lib.optional (lib.isMemberOf config sharedFolderName user) {
           name = sharedFolderName;
           mapped_path = "${config.services.sftpgo.dataDir}/${sharedFolderName}";
           virtual_path = "/${sharedFolderName}";
@@ -62,10 +60,10 @@ let
 
       # Defines the ACL on the virtual filesystem
       permissions =
-        recursiveUpdate {
+        lib.recursiveUpdate {
           "/" = [ "list" ];     # read-only top level directory
           "/private" = [ "*" ]; # private subdirectory, not shared with others
-        } (optionalAttrs (isMemberOf config "shared" user) {
+        } (lib.optionalAttrs (lib.isMemberOf config "shared" user) {
           "/shared" = [ "*" ];
         });
 
@@ -91,7 +89,7 @@ let
   # of users and folders to import to SFTPGo.
   loadDataJson = config: pkgs.writeText "users-and-folders.json" (builtins.toJSON {
     users =
-      mapAttrsToList (name: user: generateUserAttrSet config user) (normalUsers config);
+      lib.mapAttrsToList (name: user: lib.generateUserAttrSet config user) (normalUsers config);
 
     folders = [
       {
diff --git a/nixos/tests/systemd-initrd-networkd-ssh.nix b/nixos/tests/systemd-initrd-networkd-ssh.nix
index 30bd1950de2..6aaa6c828f7 100644
--- a/nixos/tests/systemd-initrd-networkd-ssh.nix
+++ b/nixos/tests/systemd-initrd-networkd-ssh.nix
@@ -2,15 +2,16 @@ import ./make-test-python.nix ({ lib, ... }: {
   name = "systemd-initrd-network-ssh";
   meta.maintainers = [ lib.maintainers.elvishjerricco ];
 
-  nodes = with lib; {
+  nodes = {
     server = { config, pkgs, ... }: {
-      environment.systemPackages = [pkgs.cryptsetup];
+      environment.systemPackages = [ pkgs.cryptsetup ];
       boot.loader.systemd-boot.enable = true;
       boot.loader.timeout = 0;
       virtualisation = {
         emptyDiskImages = [ 4096 ];
         useBootLoader = true;
-        # Booting off the encrypted disk requires an available init script from the Nix store
+        # Booting off the encrypted disk requires an available init script from
+        # the Nix store
         mountHostNixStore = true;
         useEFIBoot = true;
       };
@@ -26,7 +27,7 @@ import ./make-test-python.nix ({ lib, ... }: {
           enable = true;
           ssh = {
             enable = true;
-            authorizedKeys = [ (readFile ./initrd-network-ssh/id_ed25519.pub) ];
+            authorizedKeys = [ (lib.readFile ./initrd-network-ssh/id_ed25519.pub) ];
             port = 22;
             # Terrible hack so it works with useBootLoader
             hostKeys = [ { outPath = "${./initrd-network-ssh/ssh_host_ed25519_key}"; } ];
@@ -38,13 +39,13 @@ import ./make-test-python.nix ({ lib, ... }: {
     client = { config, ... }: {
       environment.etc = {
         knownHosts = {
-          text = concatStrings [
+          text = lib.concatStrings [
             "server,"
             "${
-              toString (head (splitString " " (toString
-                (elemAt (splitString "\n" config.networking.extraHosts) 2))))
+              toString (lib.head (lib.splitString " " (toString
+                (lib.elemAt (lib.splitString "\n" config.networking.extraHosts) 2))))
             } "
-            "${readFile ./initrd-network-ssh/ssh_host_ed25519_key.pub}"
+            "${lib.readFile ./initrd-network-ssh/ssh_host_ed25519_key.pub}"
           ];
         };
         sshKey = {
diff --git a/pkgs/applications/misc/organicmaps/default.nix b/pkgs/applications/misc/organicmaps/default.nix
index 4d8d3aa7811..236a3190c80 100644
--- a/pkgs/applications/misc/organicmaps/default.nix
+++ b/pkgs/applications/misc/organicmaps/default.nix
@@ -21,13 +21,13 @@
 
 mkDerivation rec {
   pname = "organicmaps";
-  version = "2023.05.08-7";
+  version = "2023.06.04-13";
 
   src = fetchFromGitHub {
     owner = "organicmaps";
     repo = "organicmaps";
     rev = "${version}-android";
-    sha256 = "sha256-V7qTi5NiZf+1voZSHfuAyfMeTeiYfs/CoOQ2zweKmaU=";
+    hash = "sha256-HoEOKN99ClR1sa8YFZcS9XomtXnTRdAXS0iQEdDrhvc=";
     fetchSubmodules = true;
   };
 
@@ -37,6 +37,9 @@ mkDerivation rec {
 
     # crude fix for https://github.com/organicmaps/organicmaps/issues/1862
     echo "echo ${lib.replaceStrings ["." "-"] ["" ""] version}" > tools/unix/version.sh
+
+    # TODO use system boost instead, see https://github.com/organicmaps/organicmaps/issues/5345
+    patchShebangs 3party/boost/tools/build/src/engine/build.sh
   '';
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/networking/browsers/netsurf/browser.nix b/pkgs/applications/networking/browsers/netsurf/browser.nix
index d529ba2f938..d9df75b00c2 100644
--- a/pkgs/applications/networking/browsers/netsurf/browser.nix
+++ b/pkgs/applications/networking/browsers/netsurf/browser.nix
@@ -1,58 +1,95 @@
-{ lib, stdenv, fetchurl, makeWrapper, wrapGAppsHook
+{ lib
+, stdenv
+, fetchurl
+, SDL
+, check
+, curl
+, expat
+, gtk2
+, gtk3
+, libXcursor
+, libXrandr
+, libidn
+, libjpeg
+, libpng
+, libwebp
+, libxml2
+, makeWrapper
+, openssl
+, perlPackages
+, pkg-config
+, wrapGAppsHook
+, xxd
 
-# Buildtime dependencies.
-, check, pkg-config, xxd
-
-# Runtime dependencies.
-, curl, expat, libXcursor, libXrandr, libidn, libjpeg, libpng, libwebp, libxml2
-, openssl, perl, perlPackages
-
-# uilib-specific dependencies
-, gtk2 # GTK 2
-, gtk3 # GTK 3
-, SDL  # Framebuffer
+# Netsurf-specific dependencies
+, buildsystem
+, libcss
+, libdom
+, libhubbub
+, libnsbmp
+, libnsfb
+, libnsgif
+, libnslog
+, libnspsl
+, libnsutils
+, libparserutils
+, libsvgtiny
+, libutf8proc
+, libwapcaplet
+, nsgenbind
 
 # Configuration
 , uilib
-
-# Netsurf-specific dependencies
-, libcss, libdom, libhubbub, libnsbmp, libnsfb, libnsgif
-, libnslog, libnspsl, libnsutils, libparserutils, libsvgtiny, libutf8proc
-, libwapcaplet, nsgenbind
 }:
 
-let
-  inherit (lib) optional optionals;
-in
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "netsurf";
   version = "3.10";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/netsurf/releases/source/${pname}-${version}-src.tar.gz";
-    sha256 = "sha256-NkhEKeGTYUaFwv8kb1W9Cm3d8xoBi+5F4NH3wohRmV4=";
+    url = "http://download.netsurf-browser.org/netsurf/releases/source/netsurf-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-NkhEKeGTYUaFwv8kb1W9Cm3d8xoBi+5F4NH3wohRmV4=";
   };
 
   nativeBuildInputs = [
     makeWrapper
-    perl
     perlPackages.HTMLParser
+    perlPackages.perl
     pkg-config
     xxd
   ]
-  ++ optional (uilib == "gtk2" || uilib == "gtk3") wrapGAppsHook
-  ;
+  ++ lib.optional (uilib == "gtk2" || uilib == "gtk3") wrapGAppsHook;
 
   buildInputs = [
-    check curl libXcursor libXrandr libidn libjpeg libpng libwebp libxml2 openssl
-    # Netsurf-specific libraries
-    nsgenbind libnsfb libwapcaplet libparserutils libnslog libcss
-    libhubbub libdom libnsbmp libnsgif libsvgtiny libnsutils libnspsl
+    check
+    curl
+    libXcursor
+    libXrandr
+    libidn
+    libjpeg
+    libpng
+    libwebp
+    libxml2
+    openssl
+
+    libcss
+    libdom
+    libhubbub
+    libnsbmp
+    libnsfb
+    libnsgif
+    libnslog
+    libnspsl
+    libnsutils
+    libparserutils
+    libsvgtiny
     libutf8proc
+    libwapcaplet
+    nsgenbind
   ]
-  ++ optionals (uilib == "framebuffer") [ expat SDL ]
-  ++ optional (uilib == "gtk2") gtk2
-  ++ optional (uilib == "gtk3") gtk3
+  ++ lib.optionals (uilib == "framebuffer") [ expat SDL ]
+  ++ lib.optional (uilib == "gtk2") gtk2
+  ++ lib.optional (uilib == "gtk3") gtk3
   ;
 
   # Since at least 2018 AD, GCC and other compilers run in `-fno-common` mode as
@@ -78,7 +115,7 @@ stdenv.mkDerivation rec {
     "TARGET=${uilib}"
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://www.netsurf-browser.org/";
     description = "A free, open source, small web browser";
     longDescription = ''
@@ -87,8 +124,7 @@ stdenv.mkDerivation rec {
       layout and rendering engine entirely written from scratch. It is small and
       capable of handling many of the web standards in use today.
     '';
-    license = licenses.gpl2Only;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.gpl2Only;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/buildsystem.nix b/pkgs/applications/networking/browsers/netsurf/buildsystem.nix
index 4956c70655a..385deef99fd 100644
--- a/pkgs/applications/networking/browsers/netsurf/buildsystem.nix
+++ b/pkgs/applications/networking/browsers/netsurf/buildsystem.nix
@@ -1,24 +1,26 @@
-{ lib, stdenv, fetchurl }:
+{ lib
+, stdenv
+, fetchurl
+}:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "buildsystem";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-buildsystem";
   version = "1.9";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}.tar.gz";
-    sha256 = "sha256-k4QeMUpoggmiC4dF8GU5PzqQ8Bvmj0Xpa8jS9KKqmio=";
+    url = "http://download.netsurf-browser.org/libs/releases/buildsystem-${finalAttrs.version}.tar.gz";
+    hash = "sha256-k4QeMUpoggmiC4dF8GU5PzqQ8Bvmj0Xpa8jS9KKqmio=";
   };
 
   makeFlags = [
     "PREFIX=$(out)"
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://www.netsurf-browser.org/";
     description = "NetSurf browser shared build system";
-    license = licenses.mit;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.unix;
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ vrthra AndersonTorres ];
+    platforms = lib.platforms.unix;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/default.nix b/pkgs/applications/networking/browsers/netsurf/default.nix
index 409ab80ce3a..36bfe10d5d2 100644
--- a/pkgs/applications/networking/browsers/netsurf/default.nix
+++ b/pkgs/applications/networking/browsers/netsurf/default.nix
@@ -1,20 +1,23 @@
 { lib, pkgs }:
 
-lib.makeScope pkgs.newScope (self: with self; {
+lib.makeScope pkgs.newScope (self:
+  let
+    inherit (self) callPackage;
+  in {
   # ui can be: gtk2, gtk3, sixel, framebuffer. Note that console display (sixel)
   # requires a terminal that supports `sixel` capabilities, such as mlterm
   # or xterm -ti 340
   ui = "gtk3";
-  uilib =
-    if ui == "gtk2" ||
-       ui == "gtk3" ||
-       ui == "framebuffer" then ui
-    else if ui == "sixel" then "framebuffer"
-    else null; # Never will happen
-  SDL =
-    if ui == "sixel" then pkgs.SDL_sixel
-    else if ui == "framebuffer" then pkgs.SDL
-    else null;
+  uilib = {
+    "framebuffer" = "framebuffer";
+    "gtk2" = "gtk2";
+    "gtk3" = "gtk3";
+    "sixel" = "framebuffer";
+  }.${self.ui} or null; # Null will never happen
+  SDL = {
+    "sixel" = pkgs.SDL_sixel;
+    "framebuffer" = pkgs.SDL;
+  }.${self.ui} or null;
 
   browser = callPackage ./browser.nix { };
 
diff --git a/pkgs/applications/networking/browsers/netsurf/libcss.nix b/pkgs/applications/networking/browsers/netsurf/libcss.nix
index db5a39f2285..66a3a4057d8 100644
--- a/pkgs/applications/networking/browsers/netsurf/libcss.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libcss.nix
@@ -1,35 +1,43 @@
-{ lib, stdenv, fetchurl, pkg-config, perl
+{ lib
+, stdenv
+, fetchurl
+, perl
+, pkg-config
 , buildsystem
 , libparserutils
 , libwapcaplet
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libcss";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libcss";
   version = "0.9.1";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-0tzhbpM5Lo1qcglCDUfC1Wo4EXAaDoGnJPxUHGPTxtw=";
+    url = "http://download.netsurf-browser.org/libs/releases/libcss-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-0tzhbpM5Lo1qcglCDUfC1Wo4EXAaDoGnJPxUHGPTxtw=";
   };
 
   nativeBuildInputs = [ pkg-config ];
+
   buildInputs = [
     perl
+    buildsystem
     libparserutils
     libwapcaplet
-    buildsystem ];
+  ];
 
   makeFlags = [
     "PREFIX=$(out)"
     "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
   ];
 
-  env.NIX_CFLAGS_COMPILE = toString [ "-Wno-error=implicit-fallthrough" "-Wno-error=maybe-uninitialized" ];
+  env.NIX_CFLAGS_COMPILE = toString [
+    "-Wno-error=implicit-fallthrough"
+    "-Wno-error=maybe-uninitialized"
+  ];
 
-  meta = with lib; {
-    homepage = "https://www.netsurf-browser.org/projects/${libname}/";
+  meta = {
+    homepage = "https://www.netsurf-browser.org/projects/libcss/";
     description = "Cascading Style Sheets library for netsurf browser";
     longDescription = ''
       LibCSS is a CSS parser and selection engine. It aims to parse the forward
@@ -37,8 +45,7 @@ stdenv.mkDerivation rec {
       and is available for use by other software, under a more permissive
       license.
     '';
-    license = licenses.mit;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/libdom.nix b/pkgs/applications/networking/browsers/netsurf/libdom.nix
index 4c7224f2263..328bed30f17 100644
--- a/pkgs/applications/networking/browsers/netsurf/libdom.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libdom.nix
@@ -1,43 +1,47 @@
-{ lib, stdenv, fetchurl, pkg-config, expat
+{ lib
+, stdenv
+, fetchurl
+, expat
+, pkg-config
 , buildsystem
 , libparserutils
 , libwapcaplet
 , libhubbub
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libdom";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libdom";
   version = "0.4.1";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-mO4HJHHlXiCMmHjlFcQQrUYso2+HtK/L7K0CPzos70o=";
+    url = "http://download.netsurf-browser.org/libs/releases/libdom-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-mO4HJHHlXiCMmHjlFcQQrUYso2+HtK/L7K0CPzos70o=";
   };
 
   nativeBuildInputs = [ pkg-config ];
+
   buildInputs = [
     expat
+    buildsystem
     libhubbub
     libparserutils
     libwapcaplet
-    buildsystem ];
+  ];
 
   makeFlags = [
     "PREFIX=$(out)"
     "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
   ];
 
-  meta = with lib; {
-    homepage = "https://www.netsurf-browser.org/projects/${libname}/";
+  meta = {
+    homepage = "https://www.netsurf-browser.org/projects/libdom/";
     description = "Document Object Model library for netsurf browser";
     longDescription = ''
       LibDOM is an implementation of the W3C DOM, written in C. It is currently
       in development for use with NetSurf and is intended to be suitable for use
       in other projects under a more permissive license.
     '';
-    license = licenses.mit;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/libhubbub.nix b/pkgs/applications/networking/browsers/netsurf/libhubbub.nix
index 9fd04904c8e..29a31292809 100644
--- a/pkgs/applications/networking/browsers/netsurf/libhubbub.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libhubbub.nix
@@ -1,30 +1,35 @@
-{ lib, stdenv, fetchurl, pkg-config, perl
+{ lib
+, stdenv
+, fetchurl
+, perl
+, pkg-config
 , buildsystem
 , libparserutils
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libhubbub";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libhubbub";
   version = "0.3.7";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-nnriU+bJBp51frmtTkhG84tNtSwMoBUURqn6Spd3NbY=";
+    url = "http://download.netsurf-browser.org/libs/releases/libhubbub-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-nnriU+bJBp51frmtTkhG84tNtSwMoBUURqn6Spd3NbY=";
   };
 
   nativeBuildInputs = [ pkg-config ];
+
   buildInputs = [
     perl
+    buildsystem
     libparserutils
-    buildsystem ];
+  ];
 
   makeFlags = [
     "PREFIX=$(out)"
     "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://www.netsurf-browser.org/projects/hubbub/";
     description = "HTML5 parser library for netsurf browser";
     longDescription = ''
@@ -37,8 +42,7 @@ stdenv.mkDerivation rec {
       parse all markup, both valid and invalid. As a result, Hubbub parses web
       content well.
     '';
-    license = licenses.mit;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix b/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
index 24790c477d4..9ae8dafa1b0 100644
--- a/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
@@ -1,18 +1,21 @@
-{ lib, stdenv, fetchurl, pkg-config
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
 , buildsystem
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libnsbmp";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libnsbmp";
   version = "0.1.6";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-ecSTZfhg7UUb/EEJ7d7I3j6bfOWjvgaVlr0qoZJ5Mk8=";
+    url = "http://download.netsurf-browser.org/libs/releases/libnsbmp-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-ecSTZfhg7UUb/EEJ7d7I3j6bfOWjvgaVlr0qoZJ5Mk8=";
   };
 
   nativeBuildInputs = [ pkg-config ];
+
   buildInputs = [ buildsystem ];
 
   makeFlags = [
@@ -20,11 +23,10 @@ stdenv.mkDerivation rec {
     "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://www.netsurf-browser.org/";
     description = "BMP Decoder for netsurf browser";
-    license = licenses.mit;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/libnsfb.nix b/pkgs/applications/networking/browsers/netsurf/libnsfb.nix
index d093df46629..079e351ab18 100644
--- a/pkgs/applications/networking/browsers/netsurf/libnsfb.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libnsfb.nix
@@ -1,19 +1,23 @@
-{ lib, stdenv, fetchurl, pkg-config
-, uilib, SDL
+{ lib
+, stdenv
+, fetchurl
+, SDL
+, pkg-config
 , buildsystem
+, uilib
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libnsfb";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libnsfb";
   version = "0.2.2";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-vkRso+tU35A/LamDEdEH11dM0R9awHE+YZFW1NGeo5o=";
+    url = "http://download.netsurf-browser.org/libs/releases/libnsfb-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-vkRso+tU35A/LamDEdEH11dM0R9awHE+YZFW1NGeo5o=";
   };
 
   nativeBuildInputs = [ pkg-config ];
+
   buildInputs = [ SDL buildsystem ];
 
   makeFlags = [
@@ -22,11 +26,10 @@ stdenv.mkDerivation rec {
     "TARGET=${uilib}"
   ];
 
-  meta = with lib; {
-    homepage = "https://www.netsurf-browser.org/projects/${libname}/";
+  meta = {
+    homepage = "https://www.netsurf-browser.org/projects/libnsfb/";
     description = "Netsurf framebuffer abstraction library";
-    license = licenses.mit;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/libnsgif.nix b/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
index 2e1cb37a646..20c990448e7 100644
--- a/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
@@ -1,20 +1,24 @@
-{ lib, stdenv, fetchurl, pkg-config, buildPackages
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, buildPackages
 , buildsystem
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libnsgif";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libnsgif";
   version = "0.2.1";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-nq6lNM1wtTxar0UxeulXcBaFprSojb407Sb0+q6Hmks=";
+    url = "http://download.netsurf-browser.org/libs/releases/libnsgif-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-nq6lNM1wtTxar0UxeulXcBaFprSojb407Sb0+q6Hmks=";
   };
 
   depsBuildBuild = [ buildPackages.stdenv.cc ];
 
   nativeBuildInputs = [ pkg-config ];
+
   buildInputs = [ buildsystem ];
 
   makeFlags = [
@@ -23,11 +27,10 @@ stdenv.mkDerivation rec {
     "BUILD_CC=$(CC_FOR_BUILD)"
   ];
 
-  meta = with lib; {
-    homepage = "https://www.netsurf-browser.org/projects/${libname}/";
+  meta = {
+    homepage = "https://www.netsurf-browser.org/projects/libnsgif/";
     description = "GIF Decoder for netsurf browser";
-    license = licenses.mit;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.unix;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/libnslog.nix b/pkgs/applications/networking/browsers/netsurf/libnslog.nix
index 7189f1c591b..f9243ec5688 100644
--- a/pkgs/applications/networking/browsers/netsurf/libnslog.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libnslog.nix
@@ -1,18 +1,27 @@
-{ lib, stdenv, fetchurl, pkg-config, bison, flex
+{ lib
+, stdenv
+, fetchurl
+, bison
+, flex
+, pkg-config
 , buildsystem
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libnslog";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libnslog";
   version = "0.1.3";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-/JjcqdfvpnCWRwpdlsAjFG4lv97AjA23RmHHtNsEU9A=";
+    url = "http://download.netsurf-browser.org/libs/releases/libnslog-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-/JjcqdfvpnCWRwpdlsAjFG4lv97AjA23RmHHtNsEU9A=";
   };
 
-  nativeBuildInputs = [ pkg-config bison flex ];
+  nativeBuildInputs = [
+    bison
+    flex
+    pkg-config
+  ];
+
   buildInputs = [ buildsystem ];
 
   makeFlags = [
@@ -20,11 +29,10 @@ stdenv.mkDerivation rec {
     "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://www.netsurf-browser.org/";
     description = "NetSurf Parametric Logging Library";
-    license = licenses.isc;
-    maintainers = [ maintainers.samueldr maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.isc;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/libnspsl.nix b/pkgs/applications/networking/browsers/netsurf/libnspsl.nix
index 01e3e401a78..30c91908d9f 100644
--- a/pkgs/applications/networking/browsers/netsurf/libnspsl.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libnspsl.nix
@@ -1,18 +1,21 @@
-{ lib, stdenv, fetchurl, pkg-config
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
 , buildsystem
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libnspsl";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libnspsl";
   version = "0.1.6";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-08WCBct40xC/gcpVNHotCYcZzsrHBGvDZ5g7E4tFAgs=";
+    url = "http://download.netsurf-browser.org/libs/releases/libnspsl-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-08WCBct40xC/gcpVNHotCYcZzsrHBGvDZ5g7E4tFAgs=";
   };
 
   nativeBuildInputs = [ pkg-config ];
+
   buildInputs = [ buildsystem ];
 
   makeFlags = [
@@ -20,11 +23,10 @@ stdenv.mkDerivation rec {
     "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://www.netsurf-browser.org/";
     description = "NetSurf Public Suffix List - Handling library";
-    license = licenses.mit;
-    maintainers =  [ maintainers.samueldr maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/libnsutils.nix b/pkgs/applications/networking/browsers/netsurf/libnsutils.nix
index bba457674c7..80e883e4b24 100644
--- a/pkgs/applications/networking/browsers/netsurf/libnsutils.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libnsutils.nix
@@ -1,18 +1,21 @@
-{ lib, stdenv, fetchurl, pkg-config
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
 , buildsystem
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libnsutils";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libnsutils";
   version = "0.1.0";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-eQxlFjRKvoL2KJ1lY5LpzOvkdbIMx+Hi2EMBE4X3rvA=";
+    url = "http://download.netsurf-browser.org/libs/releases/libnsutils-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-eQxlFjRKvoL2KJ1lY5LpzOvkdbIMx+Hi2EMBE4X3rvA=";
   };
 
   nativeBuildInputs = [ pkg-config ];
+
   buildInputs = [ buildsystem ];
 
   makeFlags = [
@@ -20,11 +23,10 @@ stdenv.mkDerivation rec {
     "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://www.netsurf-browser.org/";
     description = "Generalised utility library for netsurf browser";
-    license = licenses.mit;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/libparserutils.nix b/pkgs/applications/networking/browsers/netsurf/libparserutils.nix
index ac50237cc49..411495b8e21 100644
--- a/pkgs/applications/networking/browsers/netsurf/libparserutils.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libparserutils.nix
@@ -1,29 +1,33 @@
-{ lib, stdenv, fetchurl, perl
+{ lib
+, stdenv
+, fetchurl
+, perl
 , buildsystem
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libparserutils";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libparserutils";
   version = "0.2.4";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-MiuuYbMMzt4+MFv26uJBSSBkl3W8X/HRtogBKjxJR9g=";
+    url = "http://download.netsurf-browser.org/libs/releases/libparserutils-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-MiuuYbMMzt4+MFv26uJBSSBkl3W8X/HRtogBKjxJR9g=";
   };
 
-  buildInputs = [ perl buildsystem ];
+  buildInputs = [
+    perl
+    buildsystem
+  ];
 
   makeFlags = [
     "PREFIX=$(out)"
     "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
   ];
 
-  meta = with lib; {
-    homepage = "https://www.netsurf-browser.org/projects/${libname}/";
+  meta = {
+    homepage = "https://www.netsurf-browser.org/projects/libparserutils/";
     description = "Parser building library for netsurf browser";
-    license = licenses.mit;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix b/pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix
index 14399788433..19b523ce50f 100644
--- a/pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix
@@ -1,4 +1,8 @@
-{ lib, stdenv, fetchurl, pkg-config, gperf
+{ lib
+, stdenv
+, fetchurl
+, gperf
+, pkg-config
 , buildsystem
 , libdom
 , libhubbub
@@ -6,34 +10,37 @@
 , libwapcaplet
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libsvgtiny";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libsvgtiny";
   version = "0.1.7";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-LA3PlS8c2ILD6VQB75RZ8W27U8XT5FEjObL563add4E=";
+    url = "http://download.netsurf-browser.org/libs/releases/libsvgtiny-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-LA3PlS8c2ILD6VQB75RZ8W27U8XT5FEjObL563add4E=";
   };
 
-  nativeBuildInputs = [ pkg-config gperf ];
+  nativeBuildInputs = [
+    gperf
+    pkg-config
+  ];
+
   buildInputs = [
+    buildsystem
     libdom
     libhubbub
     libparserutils
     libwapcaplet
-    buildsystem ];
+  ];
 
   makeFlags = [
     "PREFIX=$(out)"
     "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
   ];
 
-  meta = with lib; {
-    homepage = "https://www.netsurf-browser.org/projects/${libname}/";
+  meta = {
+    homepage = "https://www.netsurf-browser.org/projects/libsvgtiny/";
     description = "NetSurf SVG decoder";
-    license = licenses.mit;
-    maintainers = [ maintainers.samueldr maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/libutf8proc.nix b/pkgs/applications/networking/browsers/netsurf/libutf8proc.nix
index 47b53b4781b..adbd138b226 100644
--- a/pkgs/applications/networking/browsers/netsurf/libutf8proc.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libutf8proc.nix
@@ -5,13 +5,12 @@
 , buildsystem
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libutf8proc";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libutf8proc";
   version = "2.4.0-1";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    url = "http://download.netsurf-browser.org/libs/releases/libutf8proc-${finalAttrs.version}-src.tar.gz";
     hash = "sha256-AasdaYnBx3VQkNskw/ZOSflcVgrknCa+xRQrrGgCxHI=";
   };
 
@@ -24,11 +23,10 @@ stdenv.mkDerivation rec {
     "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://www.netsurf-browser.org/";
     description = "UTF8 Processing library for netsurf browser";
-    license = licenses.mit;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix b/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix
index 6a2918fa7d9..01c1b6c67f3 100644
--- a/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix
@@ -1,15 +1,16 @@
-{ lib, stdenv, fetchurl
+{ lib
+, stdenv
+, fetchurl
 , buildsystem
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "libwapcaplet";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-libwapcaplet";
   version = "0.4.3";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-myqh3W1mRfjpkrNpf9vYfwwOHaVyH6VO0ptITRMWDFw=";
+    url = "http://download.netsurf-browser.org/libs/releases/libwapcaplet-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-myqh3W1mRfjpkrNpf9vYfwwOHaVyH6VO0ptITRMWDFw=";
   };
 
   buildInputs = [ buildsystem ];
@@ -21,11 +22,10 @@ stdenv.mkDerivation rec {
 
   env.NIX_CFLAGS_COMPILE = "-Wno-error=cast-function-type";
 
-  meta = with lib; {
-    homepage = "https://www.netsurf-browser.org/projects/${libname}/";
+  meta = {
+    homepage = "https://www.netsurf-browser.org/projects/libwapcaplet/";
     description = "String internment library for netsurf browser";
-    license = licenses.mit;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/applications/networking/browsers/netsurf/nsgenbind.nix b/pkgs/applications/networking/browsers/netsurf/nsgenbind.nix
index d08f4dbccf6..fc2b9928038 100644
--- a/pkgs/applications/networking/browsers/netsurf/nsgenbind.nix
+++ b/pkgs/applications/networking/browsers/netsurf/nsgenbind.nix
@@ -1,30 +1,36 @@
-{ lib, stdenv, fetchurl
-, flex, bison
+{ lib
+, stdenv
+, fetchurl
+, bison
+, flex
 , buildsystem
 }:
 
-stdenv.mkDerivation rec {
-  pname = "netsurf-${libname}";
-  libname = "nsgenbind";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "netsurf-nsgenbind";
   version = "0.8";
 
   src = fetchurl {
-    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
-    sha256 = "sha256-TY1TrQAK2nEncjZeanPrj8XOl1hK+chlrFsmohh/HLM=";
+    url = "http://download.netsurf-browser.org/libs/releases/nsgenbind-${finalAttrs.version}-src.tar.gz";
+    hash = "sha256-TY1TrQAK2nEncjZeanPrj8XOl1hK+chlrFsmohh/HLM=";
   };
 
-  buildInputs = [ flex bison buildsystem ];
+  nativeBuildInputs = [
+    bison
+    flex
+  ];
+
+  buildInputs = [ buildsystem ];
 
   makeFlags = [
     "PREFIX=$(out)"
     "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://www.netsurf-browser.org/";
     description = "Generator for JavaScript bindings for netsurf browser";
-    license = licenses.mit;
-    maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    inherit (buildsystem.meta) maintainers platforms;
   };
-}
+})
diff --git a/pkgs/data/misc/dbip-country-lite/default.nix b/pkgs/data/misc/dbip-country-lite/default.nix
index 73c8d441450..60d5e332c21 100644
--- a/pkgs/data/misc/dbip-country-lite/default.nix
+++ b/pkgs/data/misc/dbip-country-lite/default.nix
@@ -1,16 +1,15 @@
 { lib
 , stdenvNoCC
 , fetchurl
-, dbip-country-lite
 }:
 
-stdenvNoCC.mkDerivation rec {
+stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "dbip-country-lite";
-  version = "2023-07";
+  version = "2023-08";
 
   src = fetchurl {
-    url = "https://download.db-ip.com/free/dbip-country-lite-${version}.mmdb.gz";
-    hash = "sha256-WVsyhopYbBlCWDq9UoPe1rcGU3pBYsXkqNWbaQXzRFA=";
+    url = "https://download.db-ip.com/free/dbip-country-lite-${finalAttrs.version}.mmdb.gz";
+    hash = "sha256-+IQSHgfVZ2codxkOKwi23CLjm+rYDZOQq5EWJs0OLiQ=";
   };
 
   dontUnpack = true;
@@ -24,7 +23,7 @@ stdenvNoCC.mkDerivation rec {
     runHook postBuild
   '';
 
-  passthru.mmdb = "${dbip-country-lite}/share/dbip/dbip-country-lite.mmdb";
+  passthru.mmdb = "${finalAttrs.finalPackage}/share/dbip/dbip-country-lite.mmdb";
 
   meta = with lib; {
     description = "The free IP to Country Lite database by DB-IP";
@@ -33,4 +32,4 @@ stdenvNoCC.mkDerivation rec {
     maintainers = with maintainers; [ nickcao ];
     platforms = platforms.all;
   };
-}
+})
diff --git a/pkgs/data/misc/v2ray-domain-list-community/default.nix b/pkgs/data/misc/v2ray-domain-list-community/default.nix
index 79b8a10d7d0..8864f3923f9 100644
--- a/pkgs/data/misc/v2ray-domain-list-community/default.nix
+++ b/pkgs/data/misc/v2ray-domain-list-community/default.nix
@@ -3,12 +3,12 @@
 let
   generator = pkgsBuildBuild.buildGoModule rec {
     pname = "v2ray-domain-list-community";
-    version = "20230725085751";
+    version = "20230730120627";
     src = fetchFromGitHub {
       owner = "v2fly";
       repo = "domain-list-community";
       rev = version;
-      hash = "sha256-4D975ASoDoXjEi0kkwsUIIT6nwOE3ggBzNUVp0ojsbQ=";
+      hash = "sha256-lnTP8KDYdIa7iq14h0TEVfAlJDtsURfSZaEdQ8L1TRM=";
     };
     vendorHash = "sha256-dYaGR5ZBORANKAYuPAi9i+KQn2OAGDGTZxdyVjkcVi8=";
     meta = with lib; {
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix
index f86ab85f9ad..1af46fd5182 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix
@@ -3,8 +3,8 @@
 mkXfceDerivation {
   category = "panel-plugins";
   pname = "xfce4-clipman-plugin";
-  version = "1.6.3";
-  sha256 = "sha256-tnpQRYLV48NxKsWDjVSmypx6X1bVbx2U5Q8kQaP0AW8=";
+  version = "1.6.4";
+  sha256 = "sha256-N/e97C6xWyF1GUg7gMN0Wcw35awypflMmA+Pdg6alEw=";
 
   buildInputs = [ libXtst libxfce4ui xfce4-panel xfconf ];
 
diff --git a/pkgs/development/compilers/circt/default.nix b/pkgs/development/compilers/circt/default.nix
index 7e7f6823bcf..8e2a009a1db 100644
--- a/pkgs/development/compilers/circt/default.nix
+++ b/pkgs/development/compilers/circt/default.nix
@@ -13,12 +13,12 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "circt";
-  version = "1.45.0";
+  version = "1.48.0";
   src = fetchFromGitHub {
     owner = "llvm";
     repo = "circt";
     rev = "firtool-${version}";
-    sha256 = "sha256-yzXYiqRIwV3bkMfvmduow3QWJASXhOspM8CHZPN2/uE=";
+    sha256 = "sha256-8mqh3PPfB50ZkiJ+1OjclWw19t6OLv1mNiVkBnDz5jQ=";
     fetchSubmodules = true;
   };
 
@@ -54,6 +54,9 @@ stdenv.mkDerivation rec {
 
   preConfigure = ''
     find ./test -name '*.mlir' -exec sed -i 's|/usr/bin/env|${coreutils}/bin/env|g' {} \;
+    # circt uses git to check its version, but when cloned on nix it can't access git.
+    # So this hard codes the version.
+    substituteInPlace cmake/modules/GenVersionFile.cmake --replace "unknown git version" "${src.rev}"
   '';
 
   installPhase = ''
diff --git a/pkgs/development/compilers/zig/hook.nix b/pkgs/development/compilers/zig/hook.nix
new file mode 100644
index 00000000000..df6304a3437
--- /dev/null
+++ b/pkgs/development/compilers/zig/hook.nix
@@ -0,0 +1,17 @@
+{ lib
+, makeSetupHook
+, zig
+}:
+
+makeSetupHook {
+  name = "zig-hook";
+
+  propagatedBuildInputs = [ zig ];
+
+  passthru = { inherit zig; };
+
+  meta = {
+    description = "A setup hook for using the Zig compiler in Nixpkgs";
+    inherit (zig.meta) maintainers platforms broken;
+  };
+} ./setup-hook.sh
diff --git a/pkgs/development/compilers/zig/setup-hook.sh b/pkgs/development/compilers/zig/setup-hook.sh
new file mode 100644
index 00000000000..f514180692e
--- /dev/null
+++ b/pkgs/development/compilers/zig/setup-hook.sh
@@ -0,0 +1,90 @@
+# shellcheck shell=bash disable=SC2154,SC2086
+
+# This readonly zigDefaultBuildFlagsArray below is meant to avoid CPU feature
+# impurity in Nixpkgs. However, this flagset is "unstable": it is specifically
+# meant to be controlled by the upstream development team - being up to that
+# team exposing or not that flags to the outside (especially the package manager
+# teams).
+
+# Because of this hurdle, @andrewrk from Zig Software Foundation proposed some
+# solutions for this issue. Hopefully they will be implemented in future
+# releases of Zig. When this happens, this flagset should be revisited
+# accordingly.
+
+# Below are some useful links describing the discovery process of this 'bug' in
+# Nixpkgs:
+
+# https://github.com/NixOS/nixpkgs/issues/169461
+# https://github.com/NixOS/nixpkgs/issues/185644
+# https://github.com/NixOS/nixpkgs/pull/197046
+# https://github.com/NixOS/nixpkgs/pull/241741#issuecomment-1624227485
+# https://github.com/ziglang/zig/issues/14281#issuecomment-1624220653
+
+readonly zigDefaultFlagsArray=("-Drelease-safe=true" "-Dcpu=baseline")
+
+function zigSetGlobalCacheDir {
+    ZIG_GLOBAL_CACHE_DIR=$(mktemp -d)
+    export ZIG_GLOBAL_CACHE_DIR
+}
+
+function zigBuildPhase {
+    runHook preBuild
+
+    local flagsArray=(
+        "${zigDefaultFlagsArray[@]}"
+        $zigBuildFlags "${zigBuildFlagsArray[@]}"
+    )
+
+    echoCmd 'build flags' "${flagsArray[@]}"
+    zig build "${flagsArray[@]}"
+
+    runHook postBuild
+}
+
+function zigCheckPhase {
+    runHook preCheck
+
+    local flagsArray=(
+        "${zigDefaultFlagsArray[@]}"
+        $zigCheckFlags "${zigCheckFlagsArray[@]}"
+    )
+
+    echoCmd 'check flags' "${flagsArray[@]}"
+    zig build test "${flagsArray[@]}"
+
+    runHook postCheck
+}
+
+function zigInstallPhase {
+    runHook preInstall
+
+    local flagsArray=(
+        "${zigDefaultFlagsArray[@]}"
+        $zigBuildFlags "${zigBuildFlagsArray[@]}"
+        $zigInstallFlags "${zigInstallFlagsArray[@]}"
+    )
+
+    if [ -z "${dontAddPrefix-}" ]; then
+        # Zig does not recognize `--prefix=/dir/`, only `--prefix /dir/`
+        flagsArray+=("${prefixKey:---prefix}" "$prefix")
+    fi
+
+    echoCmd 'install flags' "${flagsArray[@]}"
+    zig build install "${flagsArray[@]}"
+
+    runHook postInstall
+}
+
+addEnvHooks "$targetOffset" zigSetGlobalCacheDir
+
+if [ -z "${dontUseZigBuild-}" ] && [ -z "${buildPhase-}" ]; then
+    buildPhase=zigBuildPhase
+fi
+
+if [ -z "${dontUseZigCheck-}" ] && [ -z "${checkPhase-}" ]; then
+    checkPhase=zigCheckPhase
+fi
+
+if [ -z "${dontUseZigInstall-}" ] && [ -z "${installPhase-}" ]; then
+    installPhase=zigInstallPhase
+fi
diff --git a/pkgs/development/python-modules/async-lru/default.nix b/pkgs/development/python-modules/async-lru/default.nix
index 031b8f540c9..2f4ef7262ac 100644
--- a/pkgs/development/python-modules/async-lru/default.nix
+++ b/pkgs/development/python-modules/async-lru/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "async-lru";
-  version = "2.0.3";
+  version = "2.0.4";
 
   disabled = pythonOlder "3.8";
 
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "aio-libs";
     repo = "async-lru";
     rev = "refs/tags/v${version}";
-    hash = "sha256-5NlcufnCqcB8k8nscFJGwlpEbDJG5KAEwWBat5dvI84=";
+    hash = "sha256-S2sOkgtS+YdMtVP7UHD3+oR8Fem8roLhhgVVfh33PcM=";
   };
 
   propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [
diff --git a/pkgs/development/python-modules/subarulink/default.nix b/pkgs/development/python-modules/subarulink/default.nix
index a73ad1bc1c6..d08fe36473a 100644
--- a/pkgs/development/python-modules/subarulink/default.nix
+++ b/pkgs/development/python-modules/subarulink/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "subarulink";
-  version = "0.7.6-1";
+  version = "0.7.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "G-Two";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-/VaGiOnPyTHSwkxlQtwyIZohD3QK897kapmM3S8bHtM=";
+    hash = "sha256-SrOFKXh/wG2+HKaLvyNP6/Le9R3Ri7+/xsUBAazo7js=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/tools/misc/phrase-cli/default.nix b/pkgs/tools/misc/phrase-cli/default.nix
index c90981475bd..a4eba4aaf0a 100644
--- a/pkgs/tools/misc/phrase-cli/default.nix
+++ b/pkgs/tools/misc/phrase-cli/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "phrase-cli";
-  version = "2.8.2";
+  version = "2.8.4";
 
   src = fetchFromGitHub {
     owner = "phrase";
     repo = "phrase-cli";
     rev = version;
-    sha256 = "sha256-jsN7JouIyrFd//+kDAcEEsXiGLZx8e5jQsiNVQuDiQg=";
+    sha256 = "sha256-tYpn93PSvO9g31soDOW0+gOBaypMUlx9Xfo0H3ftJQk=";
   };
 
-  vendorHash = "sha256-a0QA/1vUryAnO0Nr+m8frxtpnSHBOSOP1pq+BORTIJw=";
+  vendorHash = "sha256-SooYBVXcll8QciK8J68wUAsAH6kN+lWlmPS8h0Hw4e0=";
 
   ldflags = [ "-X=github.com/phrase/phrase-cli/cmd.PHRASE_CLIENT_VERSION=${version}" ];
 
diff --git a/pkgs/tools/networking/juicity/default.nix b/pkgs/tools/networking/juicity/default.nix
index 0f56f98589e..ce258c57157 100644
--- a/pkgs/tools/networking/juicity/default.nix
+++ b/pkgs/tools/networking/juicity/default.nix
@@ -4,16 +4,16 @@
 }:
 buildGoModule rec {
   pname = "juicity";
-  version = "0.1.0";
+  version = "0.1.1";
 
   src = fetchFromGitHub {
     owner = "juicity";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-JuV9nIFyT2AO0baayVSiKiVDH1waRsqqIp9I4KZ9Xu4=";
+    hash = "sha256-wTMWmHQPJ65FRJUNt7liLF+nM/tXdq067KT0fMWlDfM=";
   };
 
-  vendorHash = "sha256-xrSy6ZUbmUrRZ+vXBo9VPdhsbD/RV19xBHvNuhDWOPo=";
+  vendorHash = "sha256-RTf0+rf6DPJf9DKRNstZzJbQ3+pU/8siLSRgUo9Bcu8=";
 
   proxyVendor = true;
 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 2a9362c02dc..ff1cb1d7361 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -25433,6 +25433,8 @@ with pkgs;
   };
   zig = zig_0_10;
 
+  zigHook = callPackage ../development/compilers/zig/hook.nix { };
+
   zimlib = callPackage ../development/libraries/zimlib { };
 
   zita-convolver = callPackage ../development/libraries/audio/zita-convolver { };