summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/builders/fetchers.chapter.md2
-rw-r--r--nixos/modules/services/backup/syncoid.nix79
-rw-r--r--nixos/modules/services/misc/snapper.nix39
-rw-r--r--nixos/modules/services/monitoring/prometheus/exporters.nix1
-rw-r--r--nixos/modules/services/monitoring/prometheus/exporters/fastly.nix41
-rw-r--r--pkgs/applications/editors/leo-editor/default.nix1
-rw-r--r--pkgs/applications/kde/akregator.nix2
-rw-r--r--pkgs/applications/kde/ark/default.nix1
-rw-r--r--pkgs/applications/kde/dolphin.nix2
-rw-r--r--pkgs/applications/kde/dragon.nix1
-rw-r--r--pkgs/applications/kde/elisa.nix1
-rw-r--r--pkgs/applications/kde/filelight.nix2
-rw-r--r--pkgs/applications/kde/gwenview.nix2
-rw-r--r--pkgs/applications/kde/k3b.nix2
-rw-r--r--pkgs/applications/kde/kaddressbook.nix2
-rw-r--r--pkgs/applications/kde/kalarm.nix2
-rw-r--r--pkgs/applications/kde/kamoso.nix6
-rw-r--r--pkgs/applications/kde/kate.nix2
-rw-r--r--pkgs/applications/kde/kbreakout.nix6
-rw-r--r--pkgs/applications/kde/kcachegrind.nix2
-rw-r--r--pkgs/applications/kde/kcalc.nix2
-rw-r--r--pkgs/applications/kde/kcharselect.nix1
-rw-r--r--pkgs/applications/kde/kcolorchooser.nix2
-rw-r--r--pkgs/applications/kde/kdebugsettings.nix2
-rw-r--r--pkgs/applications/kde/kdenlive/default.nix2
-rw-r--r--pkgs/applications/kde/kdialog.nix2
-rw-r--r--pkgs/applications/kde/kfind.nix2
-rw-r--r--pkgs/applications/kde/kgeography.nix2
-rw-r--r--pkgs/applications/kde/kget.nix2
-rw-r--r--pkgs/applications/kde/kgpg.nix2
-rw-r--r--pkgs/applications/kde/khelpcenter.nix14
-rw-r--r--pkgs/applications/kde/kig.nix3
-rw-r--r--pkgs/applications/kde/kleopatra.nix2
-rw-r--r--pkgs/applications/kde/kmahjongg.nix2
-rw-r--r--pkgs/applications/kde/kmail.nix2
-rw-r--r--pkgs/applications/kde/kmix.nix2
-rw-r--r--pkgs/applications/kde/kmplot.nix2
-rw-r--r--pkgs/applications/kde/knotes.nix26
-rw-r--r--pkgs/applications/kde/kolf.nix2
-rw-r--r--pkgs/applications/kde/kolourpaint.nix2
-rw-r--r--pkgs/applications/kde/kompare.nix6
-rw-r--r--pkgs/applications/kde/konqueror.nix2
-rw-r--r--pkgs/applications/kde/konquest.nix2
-rw-r--r--pkgs/applications/kde/konsole.nix2
-rw-r--r--pkgs/applications/kde/kontact.nix2
-rw-r--r--pkgs/applications/kde/korganizer.nix2
-rw-r--r--pkgs/applications/kde/krdc.nix1
-rw-r--r--pkgs/applications/kde/krfb.nix2
-rw-r--r--pkgs/applications/kde/kruler.nix2
-rw-r--r--pkgs/applications/kde/kspaceduel.nix6
-rw-r--r--pkgs/applications/kde/ksudoku.nix2
-rw-r--r--pkgs/applications/kde/ksystemlog.nix2
-rw-r--r--pkgs/applications/kde/ktouch.nix34
-rw-r--r--pkgs/applications/kde/kwalletmanager.nix3
-rw-r--r--pkgs/applications/kde/marble.nix6
-rw-r--r--pkgs/applications/kde/minuet.nix2
-rw-r--r--pkgs/applications/kde/okular.nix1
-rw-r--r--pkgs/applications/kde/picmi.nix1
-rw-r--r--pkgs/applications/kde/pim-data-exporter.nix2
-rw-r--r--pkgs/applications/kde/spectacle.nix2
-rw-r--r--pkgs/applications/networking/irc/weechat/scripts/default.nix2
-rw-r--r--pkgs/applications/networking/irc/weechat/scripts/zncplayback/default.nix28
-rw-r--r--pkgs/applications/radio/sdrangel/default.nix4
-rw-r--r--pkgs/build-support/skaware/build-skaware-package.nix7
-rw-r--r--pkgs/data/fonts/ocr-a/default.nix24
-rw-r--r--pkgs/desktops/xfce/applications/xfdashboard/default.nix4
-rw-r--r--pkgs/desktops/xfce/core/thunar/default.nix4
-rw-r--r--pkgs/development/libraries/capnproto/default.nix7
-rw-r--r--pkgs/development/libraries/libgpg-error/default.nix2
-rw-r--r--pkgs/development/libraries/nsss/default.nix4
-rw-r--r--pkgs/development/libraries/skalibs/2_10.nix31
-rw-r--r--pkgs/development/libraries/skalibs/default.nix12
-rw-r--r--pkgs/development/libraries/utmps/default.nix4
-rw-r--r--pkgs/misc/vim-plugins/vim-utils.nix1
-rw-r--r--pkgs/misc/vscode-extensions/default.nix18
-rw-r--r--pkgs/os-specific/linux/mdevd/default.nix4
-rw-r--r--pkgs/os-specific/linux/s6-linux-init/default.nix4
-rw-r--r--pkgs/os-specific/linux/s6-linux-utils/default.nix4
-rw-r--r--pkgs/os-specific/linux/sdnotify-wrapper/sdnotify-wrapper.c10
-rw-r--r--pkgs/servers/monitoring/prometheus/fastly-exporter.nix22
-rw-r--r--pkgs/servers/monitoring/zabbix/server.nix7
-rw-r--r--pkgs/servers/web-apps/discourse/default.nix13
-rw-r--r--pkgs/servers/web-apps/discourse/disable_jhead.patch12
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock2
-rw-r--r--pkgs/tools/misc/execline/default.nix4
-rw-r--r--pkgs/tools/misc/fdtools/default.nix9
-rw-r--r--pkgs/tools/misc/s6-portable-utils/default.nix4
-rw-r--r--pkgs/tools/networking/s6-dns/default.nix4
-rw-r--r--pkgs/tools/networking/s6-networking/default.nix5
-rw-r--r--pkgs/tools/system/s6-rc/default.nix4
-rw-r--r--pkgs/tools/system/s6/default.nix5
-rw-r--r--pkgs/top-level/all-packages.nix5
104 files changed, 521 insertions, 151 deletions
diff --git a/doc/builders/fetchers.chapter.md b/doc/builders/fetchers.chapter.md
index b1b00106b6c..e36724f295f 100644
--- a/doc/builders/fetchers.chapter.md
+++ b/doc/builders/fetchers.chapter.md
@@ -6,7 +6,7 @@ When using Nix, you will frequently need to download source code and other files
 
 Because fixed output derivations are _identified_ by their hash, a common mistake is to update a fetcher's URL or a version parameter, without updating the hash. **This will cause the old contents to be used.** So remember to always invalidate the hash argument.
 
-For those who develop and maintain fetcheres, a similar problem arises with changes to the implementation of a fetcher. These may cause a fixed output derivation to fail, but won't normally be caught by tests because the supposed output is already in the store or cache. For the purpose of testing, you can use a trick that is embodied by the [`invalidateFetcherByDrvHash`](#sec-pkgs-invalidateFetcherByDrvHash) function. It uses the derivation `name` to create a unique output path per fetcher implementation, defeating the caching precisely where it would be harmful.
+For those who develop and maintain fetchers, a similar problem arises with changes to the implementation of a fetcher. These may cause a fixed output derivation to fail, but won't normally be caught by tests because the supposed output is already in the store or cache. For the purpose of testing, you can use a trick that is embodied by the [`invalidateFetcherByDrvHash`](#sec-pkgs-invalidateFetcherByDrvHash) function. It uses the derivation `name` to create a unique output path per fetcher implementation, defeating the caching precisely where it would be harmful.
 
 ## `fetchurl` and `fetchzip` {#fetchurl}
 
diff --git a/nixos/modules/services/backup/syncoid.nix b/nixos/modules/services/backup/syncoid.nix
index 3ad8d279a36..6e44a99aaee 100644
--- a/nixos/modules/services/backup/syncoid.nix
+++ b/nixos/modules/services/backup/syncoid.nix
@@ -16,16 +16,67 @@ let
     lib.concatMapStrings (s: if lib.isList s then "-" else s)
       (builtins.split "[^a-zA-Z0-9_.\\-]+" name);
 
-  # Function to build "zfs allow" and "zfs unallow" commands for the
-  # filesystems we've delegated permissions to.
-  buildAllowCommand = zfsAction: permissions: dataset: lib.escapeShellArgs [
-    # Here we explicitly use the booted system to guarantee the stable API needed by ZFS
-    "-+/run/booted-system/sw/bin/zfs"
-    zfsAction
-    cfg.user
-    (concatStringsSep "," permissions)
-    dataset
-  ];
+  # Function to build "zfs allow" commands for the filesystems we've
+  # delegated permissions to. It also checks if the target dataset
+  # exists before delegating permissions, if it doesn't exist we
+  # delegate it to the parent dataset. This should solve the case of
+  # provisoning new datasets.
+  buildAllowCommand = permissions: dataset: (
+    "-+${pkgs.writeShellScript "zfs-allow-${dataset}" ''
+      # Here we explicitly use the booted system to guarantee the stable API needed by ZFS
+
+      # Run a ZFS list on the dataset to check if it exists
+      if ${lib.escapeShellArgs [
+        "/run/booted-system/sw/bin/zfs"
+        "list"
+        dataset
+      ]} 2> /dev/null; then
+        ${lib.escapeShellArgs [
+          "/run/booted-system/sw/bin/zfs"
+          "allow"
+          cfg.user
+          (concatStringsSep "," permissions)
+          dataset
+        ]}
+      else
+        ${lib.escapeShellArgs [
+          "/run/booted-system/sw/bin/zfs"
+          "allow"
+          cfg.user
+          (concatStringsSep "," permissions)
+          # Remove the last part of the path
+          (builtins.dirOf dataset)
+        ]}
+      fi
+    ''}"
+  );
+
+  # Function to build "zfs unallow" commands for the filesystems we've
+  # delegated permissions to. Here we unallow both the target but also
+  # on the parent dataset because at this stage we have no way of
+  # knowing if the allow command did execute on the parent dataset or
+  # not in the pre-hook. We can't run the same if in the post hook
+  # since the dataset should have been created at this point.
+  buildUnallowCommand = permissions: dataset: (
+    "-+${pkgs.writeShellScript "zfs-unallow-${dataset}" ''
+      # Here we explicitly use the booted system to guarantee the stable API needed by ZFS
+      ${lib.escapeShellArgs [
+        "/run/booted-system/sw/bin/zfs"
+        "unallow"
+        cfg.user
+        (concatStringsSep "," permissions)
+        dataset
+      ]}
+      ${lib.escapeShellArgs [
+        "/run/booted-system/sw/bin/zfs"
+        "unallow"
+        cfg.user
+        (concatStringsSep "," permissions)
+        # Remove the last part of the path
+        (builtins.dirOf dataset)
+      ]}
+    ''}"
+  );
 in
 {
 
@@ -274,11 +325,11 @@ in
             path = [ "/run/booted-system/sw/bin/" ];
             serviceConfig = {
               ExecStartPre =
-                (map (buildAllowCommand "allow" c.localSourceAllow) (localDatasetName c.source)) ++
-                (map (buildAllowCommand "allow" c.localTargetAllow) (localDatasetName c.target));
+                (map (buildAllowCommand c.localSourceAllow) (localDatasetName c.source)) ++
+                (map (buildAllowCommand c.localTargetAllow) (localDatasetName c.target));
               ExecStopPost =
-                (map (buildAllowCommand "unallow" c.localSourceAllow) (localDatasetName c.source)) ++
-                (map (buildAllowCommand "unallow" c.localTargetAllow) (localDatasetName c.target));
+                (map (buildUnallowCommand c.localSourceAllow) (localDatasetName c.source)) ++
+                (map (buildUnallowCommand c.localTargetAllow) (localDatasetName c.target));
               ExecStart = lib.escapeShellArgs ([ "${pkgs.sanoid}/bin/syncoid" ]
                 ++ optionals c.useCommonArgs cfg.commonArgs
                 ++ optional c.recursive "-r"
diff --git a/nixos/modules/services/misc/snapper.nix b/nixos/modules/services/misc/snapper.nix
index a821b9b6bf6..7ab5e147335 100644
--- a/nixos/modules/services/misc/snapper.nix
+++ b/nixos/modules/services/misc/snapper.nix
@@ -9,6 +9,14 @@ in
 {
   options.services.snapper = {
 
+    snapshotRootOnBoot = mkOption {
+      type = types.bool;
+      default = false;
+      description = ''
+        Whether to snapshot root on boot
+      '';
+    };
+
     snapshotInterval = mkOption {
       type = types.str;
       default = "hourly";
@@ -130,20 +138,22 @@ in
         Type = "dbus";
         BusName = "org.opensuse.Snapper";
         ExecStart = "${pkgs.snapper}/bin/snapperd";
+        CapabilityBoundingSet = "CAP_DAC_OVERRIDE CAP_FOWNER CAP_CHOWN CAP_FSETID CAP_SETFCAP CAP_SYS_ADMIN CAP_SYS_MODULE CAP_IPC_LOCK CAP_SYS_NICE";
+        LockPersonality = true;
+        NoNewPrivileges = false;
+        PrivateNetwork = true;
+        ProtectHostname = true;
+        RestrictAddressFamilies = "AF_UNIX";
+        RestrictRealtime = true;
       };
     };
 
     systemd.services.snapper-timeline = {
       description = "Timeline of Snapper Snapshots";
       inherit documentation;
+      requires = [ "local-fs.target" ];
       serviceConfig.ExecStart = "${pkgs.snapper}/lib/snapper/systemd-helper --timeline";
-    };
-
-    systemd.timers.snapper-timeline = {
-      description = "Timeline of Snapper Snapshots";
-      inherit documentation;
-      wantedBy = [ "basic.target" ];
-      timerConfig.OnCalendar = cfg.snapshotInterval;
+      startAt = cfg.snapshotInterval;
     };
 
     systemd.services.snapper-cleanup = {
@@ -155,10 +165,21 @@ in
     systemd.timers.snapper-cleanup = {
       description = "Cleanup of Snapper Snapshots";
       inherit documentation;
-      wantedBy = [ "basic.target" ];
+      wantedBy = [ "timers.target" ];
+      requires = [ "local-fs.target" ];
       timerConfig.OnBootSec = "10m";
       timerConfig.OnUnitActiveSec = cfg.cleanupInterval;
     };
+
+    systemd.services.snapper-boot = lib.optionalAttrs cfg.snapshotRootOnBoot {
+      description = "Take snapper snapshot of root on boot";
+      inherit documentation;
+      serviceConfig.ExecStart = "${pkgs.snapper}/bin/snapper --config root create --cleanup-algorithm number --description boot";
+      serviceConfig.type = "oneshot";
+      requires = [ "local-fs.target" ];
+      wantedBy = [ "multi-user.target" ];
+      unitConfig.ConditionPathExists = "/etc/snapper/configs/root";
+    };
+
   });
 }
-
diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix
index 9182c2f2ed8..83de9a3f5eb 100644
--- a/nixos/modules/services/monitoring/prometheus/exporters.nix
+++ b/nixos/modules/services/monitoring/prometheus/exporters.nix
@@ -32,6 +32,7 @@ let
     "dnsmasq"
     "domain"
     "dovecot"
+    "fastly"
     "fritzbox"
     "influxdb"
     "json"
diff --git a/nixos/modules/services/monitoring/prometheus/exporters/fastly.nix b/nixos/modules/services/monitoring/prometheus/exporters/fastly.nix
new file mode 100644
index 00000000000..5b35bb29a30
--- /dev/null
+++ b/nixos/modules/services/monitoring/prometheus/exporters/fastly.nix
@@ -0,0 +1,41 @@
+{ config, lib, pkgs, options }:
+
+with lib;
+
+let cfg = config.services.prometheus.exporters.fastly;
+in
+{
+  port = 9118;
+  extraOpts = {
+    debug = mkEnableOption "Debug logging mode for fastly-exporter";
+
+    configFile = mkOption {
+      type = types.nullOr types.path;
+      default = null;
+      description = ''
+        Path to a fastly-exporter configuration file.
+        Example one can be generated with <literal>fastly-exporter --config-file-example</literal>.
+      '';
+      example = "./fastly-exporter-config.txt";
+    };
+
+    tokenPath = mkOption {
+      type = types.nullOr types.path;
+      apply = final: if final == null then null else toString final;
+      description = ''
+        A run-time path to the token file, which is supposed to be provisioned
+        outside of Nix store.
+      '';
+    };
+  };
+  serviceOpts = {
+    script = ''
+      ${optionalString (cfg.tokenPath != null)
+      "export FASTLY_API_TOKEN=$(cat ${toString cfg.tokenPath})"}
+      ${pkgs.fastly-exporter}/bin/fastly-exporter \
+        -endpoint http://${cfg.listenAddress}:${cfg.port}/metrics
+        ${optionalString cfg.debug "-debug true"} \
+        ${optionalString cfg.configFile "-config-file ${cfg.configFile}"}
+    '';
+  };
+}
diff --git a/pkgs/applications/editors/leo-editor/default.nix b/pkgs/applications/editors/leo-editor/default.nix
index e583671bcb4..cf4a752b1bd 100644
--- a/pkgs/applications/editors/leo-editor/default.nix
+++ b/pkgs/applications/editors/leo-editor/default.nix
@@ -63,5 +63,6 @@ mkDerivation rec {
     longDescription = "Leo is a PIM, IDE and outliner that accelerates the work flow of programmers, authors and web designers.";
     license = licenses.mit;
     maintainers = with maintainers; [ leonardoce ];
+    mainProgram = "leo";
   };
 }
diff --git a/pkgs/applications/kde/akregator.nix b/pkgs/applications/kde/akregator.nix
index 5cacfe0c04f..9cb23ad35ac 100644
--- a/pkgs/applications/kde/akregator.nix
+++ b/pkgs/applications/kde/akregator.nix
@@ -12,6 +12,8 @@
 mkDerivation {
   pname = "akregator";
   meta = {
+    homepage = "https://apps.kde.org/akregator/";
+    description = "KDE feed reader";
     license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
     maintainers = kdepimTeam;
   };
diff --git a/pkgs/applications/kde/ark/default.nix b/pkgs/applications/kde/ark/default.nix
index ef27380a330..508f7e79f55 100644
--- a/pkgs/applications/kde/ark/default.nix
+++ b/pkgs/applications/kde/ark/default.nix
@@ -30,6 +30,7 @@ mkDerivation {
   qtWrapperArgs = [ "--prefix" "PATH" ":" (lib.makeBinPath extraTools) ];
 
   meta = with lib; {
+    homepage = "https://apps.kde.org/ark/";
     description = "Graphical file compression/decompression utility";
     license = with licenses; [ gpl2 lgpl3 ] ++ optional unfreeEnableUnrar unfree;
     maintainers = [ maintainers.ttuegel ];
diff --git a/pkgs/applications/kde/dolphin.nix b/pkgs/applications/kde/dolphin.nix
index 83f698b8977..92d256f4770 100644
--- a/pkgs/applications/kde/dolphin.nix
+++ b/pkgs/applications/kde/dolphin.nix
@@ -11,6 +11,8 @@
 mkDerivation {
   pname = "dolphin";
   meta = {
+    homepage = "https://apps.kde.org/dolphin/";
+    description = "KDE file manager";
     license = with lib.licenses; [ gpl2 fdl12 ];
     maintainers = [ lib.maintainers.ttuegel ];
     broken = lib.versionOlder qtbase.version "5.14";
diff --git a/pkgs/applications/kde/dragon.nix b/pkgs/applications/kde/dragon.nix
index 0483d535c9a..4fb5583a8ff 100644
--- a/pkgs/applications/kde/dragon.nix
+++ b/pkgs/applications/kde/dragon.nix
@@ -10,6 +10,7 @@
 mkDerivation {
   pname = "dragon";
   meta = {
+    homepage = "https://apps.kde.org/dragonplayer/";
     license = with lib.licenses; [ gpl2 fdl12 ];
     description = "A simple media player for KDE";
     maintainers = [ lib.maintainers.jonathanreeve ];
diff --git a/pkgs/applications/kde/elisa.nix b/pkgs/applications/kde/elisa.nix
index 6252e53078f..cdcca2cc9bb 100644
--- a/pkgs/applications/kde/elisa.nix
+++ b/pkgs/applications/kde/elisa.nix
@@ -40,6 +40,7 @@ mkDerivation rec {
   ];
 
   meta = with lib; {
+    homepage = "https://apps.kde.org/elisa/";
     description = "A simple media player for KDE";
     license = licenses.gpl3;
     maintainers = with maintainers; [ peterhoeg ];
diff --git a/pkgs/applications/kde/filelight.nix b/pkgs/applications/kde/filelight.nix
index 95a89b01b8c..64592ab9944 100644
--- a/pkgs/applications/kde/filelight.nix
+++ b/pkgs/applications/kde/filelight.nix
@@ -7,6 +7,8 @@
 mkDerivation {
   pname = "filelight";
   meta = {
+    description = "Disk usage statistics";
+    homepage = "https://apps.kde.org/filelight/";
     license = with lib.licenses; [ gpl2 ];
     maintainers = with lib.maintainers; [ fridh vcunat ];
     broken = lib.versionOlder qtbase.version "5.13";
diff --git a/pkgs/applications/kde/gwenview.nix b/pkgs/applications/kde/gwenview.nix
index 5fe126c04e6..27d676303f9 100644
--- a/pkgs/applications/kde/gwenview.nix
+++ b/pkgs/applications/kde/gwenview.nix
@@ -9,6 +9,8 @@
 mkDerivation {
   pname = "gwenview";
   meta = {
+    homepage = "https://apps.kde.org/gwenview/";
+    description = "KDE image viewer";
     license = with lib.licenses; [ gpl2 fdl12 ];
     maintainers = [ lib.maintainers.ttuegel ];
   };
diff --git a/pkgs/applications/kde/k3b.nix b/pkgs/applications/kde/k3b.nix
index eed3a4fac12..728260120a5 100644
--- a/pkgs/applications/kde/k3b.nix
+++ b/pkgs/applications/kde/k3b.nix
@@ -10,6 +10,8 @@
 mkDerivation {
   pname = "k3b";
   meta = with lib; {
+    homepage = "https://apps.kde.org/k3b/";
+    description = "Disk burning application";
     license = with licenses; [ gpl2Plus ];
     maintainers = with maintainers; [ sander phreedom ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/kde/kaddressbook.nix b/pkgs/applications/kde/kaddressbook.nix
index 2672d815fb0..7a2a319c655 100644
--- a/pkgs/applications/kde/kaddressbook.nix
+++ b/pkgs/applications/kde/kaddressbook.nix
@@ -10,6 +10,8 @@
 mkDerivation {
   pname = "kaddressbook";
   meta = {
+    homepage = "https://apps.kde.org/kaddressbook/";
+    description = "KDE contact manager";
     license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
     maintainers = kdepimTeam;
   };
diff --git a/pkgs/applications/kde/kalarm.nix b/pkgs/applications/kde/kalarm.nix
index 8239cdf0864..869a0f6ac67 100644
--- a/pkgs/applications/kde/kalarm.nix
+++ b/pkgs/applications/kde/kalarm.nix
@@ -19,6 +19,8 @@
 mkDerivation {
   pname = "kalarm";
   meta = {
+    homepage = "https://apps.kde.org/kalarm/";
+    description = "Personal alarm scheduler";
     license = with lib.licenses; [ gpl2 ];
     maintainers = [ lib.maintainers.rittelle ];
   };
diff --git a/pkgs/applications/kde/kamoso.nix b/pkgs/applications/kde/kamoso.nix
index 3e5eb53858f..9baa06275a7 100644
--- a/pkgs/applications/kde/kamoso.nix
+++ b/pkgs/applications/kde/kamoso.nix
@@ -37,5 +37,9 @@ mkDerivation {
     "--prefix GST_PLUGIN_PATH : ${lib.makeSearchPath "lib/gstreamer-1.0" gst}"
   ];
 
-  meta.license = with lib.licenses; [ lgpl21Only gpl3Only ];
+  meta = {
+    homepage = "https://apps.kde.org/kamoso/";
+    description = "A simple and friendly program to use your camera";
+    license = with lib.licenses; [ lgpl21Only gpl3Only ];
+  };
 }
diff --git a/pkgs/applications/kde/kate.nix b/pkgs/applications/kde/kate.nix
index 1cc16496d12..713d7dbe830 100644
--- a/pkgs/applications/kde/kate.nix
+++ b/pkgs/applications/kde/kate.nix
@@ -10,6 +10,8 @@
 mkDerivation {
   pname = "kate";
   meta = {
+    homepage = "https://apps.kde.org/kate/";
+    description = "Advanced text editor";
     license = with lib.licenses; [ gpl3 lgpl3 lgpl2 ];
     maintainers = [ lib.maintainers.ttuegel ];
   };
diff --git a/pkgs/applications/kde/kbreakout.nix b/pkgs/applications/kde/kbreakout.nix
index cf60ada3c00..b29c83914c6 100644
--- a/pkgs/applications/kde/kbreakout.nix
+++ b/pkgs/applications/kde/kbreakout.nix
@@ -11,7 +11,11 @@
 
 mkDerivation {
   pname = "kbreakout";
-  meta.license = with lib.licenses; [ lgpl21 gpl3 ];
+  meta = {
+    homepage = "KBreakOut";
+    description = "Breakout-like game";
+    license = with lib.licenses; [ lgpl21 gpl3 ];
+  };
   outputs = [ "out" "dev" ];
   nativeBuildInputs = [
     cmake extra-cmake-modules
diff --git a/pkgs/applications/kde/kcachegrind.nix b/pkgs/applications/kde/kcachegrind.nix
index 5988885c471..61ff38f3168 100644
--- a/pkgs/applications/kde/kcachegrind.nix
+++ b/pkgs/applications/kde/kcachegrind.nix
@@ -8,6 +8,8 @@
 mkDerivation {
   pname = "kcachegrind";
   meta = {
+    homepage = "https://apps.kde.org/kcachegrind/";
+    description = "Profiler frontend";
     license = with lib.licenses; [ gpl2 ];
     maintainers = with lib.maintainers; [ orivej ];
   };
diff --git a/pkgs/applications/kde/kcalc.nix b/pkgs/applications/kde/kcalc.nix
index b24046df5f5..20ae678dc01 100644
--- a/pkgs/applications/kde/kcalc.nix
+++ b/pkgs/applications/kde/kcalc.nix
@@ -8,6 +8,8 @@
 mkDerivation {
   pname = "kcalc";
   meta = {
+    homepage = "https://apps.kde.org/kcalc/";
+    description = "Scientific calculator";
     license = with lib.licenses; [ gpl2 ];
     maintainers = [ lib.maintainers.fridh ];
   };
diff --git a/pkgs/applications/kde/kcharselect.nix b/pkgs/applications/kde/kcharselect.nix
index d35ee5ee670..0bc76b42087 100644
--- a/pkgs/applications/kde/kcharselect.nix
+++ b/pkgs/applications/kde/kcharselect.nix
@@ -7,6 +7,7 @@
 mkDerivation {
   pname = "kcharselect";
   meta = {
+    homepage = "https://apps.kde.org/kcharselect/";
     license = lib.licenses.gpl2Plus;
     maintainers = [ lib.maintainers.schmittlauch ];
     description = "A tool to select special characters from all installed fonts and copy them into the clipboard";
diff --git a/pkgs/applications/kde/kcolorchooser.nix b/pkgs/applications/kde/kcolorchooser.nix
index 87ab2271561..26601bb37e3 100644
--- a/pkgs/applications/kde/kcolorchooser.nix
+++ b/pkgs/applications/kde/kcolorchooser.nix
@@ -7,6 +7,8 @@
 mkDerivation {
   pname = "kcolorchooser";
   meta = {
+    homepage = "https://apps.kde.org/kcolorchooser/";
+    description = "Color chooser";
     license = with lib.licenses; [ mit ];
     maintainers = [ lib.maintainers.ttuegel ];
   };
diff --git a/pkgs/applications/kde/kdebugsettings.nix b/pkgs/applications/kde/kdebugsettings.nix
index 7f24ec8e2fc..e73f6f13ce9 100644
--- a/pkgs/applications/kde/kdebugsettings.nix
+++ b/pkgs/applications/kde/kdebugsettings.nix
@@ -9,6 +9,8 @@
 mkDerivation {
   pname = "kdebugsettings";
   meta = {
+    homepage = "https://apps.kde.org/kdebugsettings/";
+    description = "KDE debug settings";
     license = with lib.licenses; [ gpl2 ];
     maintainers = [ lib.maintainers.rittelle ];
     broken = lib.versionOlder qtbase.version "5.13";
diff --git a/pkgs/applications/kde/kdenlive/default.nix b/pkgs/applications/kde/kdenlive/default.nix
index 8ec2d2a81b0..885b1c1d8cc 100644
--- a/pkgs/applications/kde/kdenlive/default.nix
+++ b/pkgs/applications/kde/kdenlive/default.nix
@@ -101,6 +101,8 @@ mkDerivation {
   '';
 
   meta = {
+    homepage = "https://apps.kde.org/kdenlive/";
+    description = "Video editor";
     license = with lib.licenses; [ gpl2Plus ];
     maintainers = with lib.maintainers; [ turion ];
   };
diff --git a/pkgs/applications/kde/kdialog.nix b/pkgs/applications/kde/kdialog.nix
index 192bfda4c27..015c86bc7d1 100644
--- a/pkgs/applications/kde/kdialog.nix
+++ b/pkgs/applications/kde/kdialog.nix
@@ -8,6 +8,8 @@ mkDerivation {
   pname = "kdialog";
 
   meta = {
+    homepage = "https://apps.kde.org/kdialog/";
+    description = "Display dialog boxes from shell scripts";
     license = with lib.licenses; [ gpl2 fdl12 ];
     maintainers = with lib.maintainers; [ peterhoeg ];
   };
diff --git a/pkgs/applications/kde/kfind.nix b/pkgs/applications/kde/kfind.nix
index fa0ef1c9220..2c96b17dea1 100644
--- a/pkgs/applications/kde/kfind.nix
+++ b/pkgs/applications/kde/kfind.nix
@@ -7,6 +7,8 @@
 mkDerivation {
   pname = "kfind";
   meta = {
+    homepage = "https://apps.kde.org/kfind/";
+    description = "Find files/folders";
     license = with lib.licenses; [ gpl2 ];
     maintainers = [ lib.maintainers.iblech ];
   };
diff --git a/pkgs/applications/kde/kgeography.nix b/pkgs/applications/kde/kgeography.nix
index 7a5d5516b5e..b832ffcfa2c 100644
--- a/pkgs/applications/kde/kgeography.nix
+++ b/pkgs/applications/kde/kgeography.nix
@@ -7,6 +7,8 @@
 mkDerivation {
   pname = "kgeography";
   meta = {
+    homepage = "https://apps.kde.org/kgeography/";
+    description = "Geography trainer";
     license = with lib.licenses; [ gpl2 ];
     maintainers = [ lib.maintainers.globin ];
   };
diff --git a/pkgs/applications/kde/kget.nix b/pkgs/applications/kde/kget.nix
index b03246eacd5..2f59e3aaf96 100644
--- a/pkgs/applications/kde/kget.nix
+++ b/pkgs/applications/kde/kget.nix
@@ -16,6 +16,8 @@ mkDerivation {
   ];
 
   meta = with lib; {
+    homepage = "https://apps.kde.org/kget/";
+    description = "Download manager";
     license = with licenses; [ gpl2 ];
     maintainers = with maintainers; [ peterhoeg ];
   };
diff --git a/pkgs/applications/kde/kgpg.nix b/pkgs/applications/kde/kgpg.nix
index 32ba95231cd..1590887575b 100644
--- a/pkgs/applications/kde/kgpg.nix
+++ b/pkgs/applications/kde/kgpg.nix
@@ -18,6 +18,8 @@ mkDerivation {
     wrapProgram "$out/bin/kgpg" --prefix PATH : "${lib.makeBinPath [ gnupg ]}"
   '';
   meta = {
+    homepage = "https://apps.kde.org/kgpg/";
+    description = "Encryption tool";
     license = [ lib.licenses.gpl2 ];
     maintainers = [ lib.maintainers.ttuegel ];
   };
diff --git a/pkgs/applications/kde/khelpcenter.nix b/pkgs/applications/kde/khelpcenter.nix
index 0270118fc55..6f331dcf77c 100644
--- a/pkgs/applications/kde/khelpcenter.nix
+++ b/pkgs/applications/kde/khelpcenter.nix
@@ -1,8 +1,7 @@
-{
-  mkDerivation,
-  extra-cmake-modules, kdoctools,
-  grantlee, kcmutils, kconfig, kcoreaddons, kdbusaddons, ki18n,
-  kinit, khtml, kservice, xapian
+{ lib, mkDerivation
+, extra-cmake-modules, kdoctools
+, grantlee, kcmutils, kconfig, kcoreaddons, kdbusaddons, ki18n
+, kinit, khtml, kservice, xapian
 }:
 
 mkDerivation {
@@ -12,4 +11,9 @@ mkDerivation {
     grantlee kcmutils kconfig kcoreaddons kdbusaddons khtml
     ki18n kinit kservice xapian
   ];
+  meta = with lib; {
+    homepage = "https://apps.kde.org/help/";
+    description = "Help center";
+    license = licenses.gpl2Plus;
+  };
 }
diff --git a/pkgs/applications/kde/kig.nix b/pkgs/applications/kde/kig.nix
index 1ca57d91c19..d04cc76fc22 100644
--- a/pkgs/applications/kde/kig.nix
+++ b/pkgs/applications/kde/kig.nix
@@ -8,6 +8,8 @@
 mkDerivation {
   pname = "kig";
   meta = {
+    homepage = "https://apps.kde.org/kig/";
+    description = "Interactive geometry";
     license = with lib.licenses; [ gpl2 ];
     maintainers = with lib.maintainers; [ raskin ];
   };
@@ -16,4 +18,3 @@ mkDerivation {
     boost karchive kcrash kiconthemes kparts ktexteditor qtsvg qtxmlpatterns
   ];
 }
-
diff --git a/pkgs/applications/kde/kleopatra.nix b/pkgs/applications/kde/kleopatra.nix
index f1f8ae9b375..a640802fed3 100644
--- a/pkgs/applications/kde/kleopatra.nix
+++ b/pkgs/applications/kde/kleopatra.nix
@@ -8,6 +8,8 @@
 mkDerivation {
   pname = "kleopatra";
   meta = {
+    homepage = "https://apps.kde.org/kleopatra/";
+    description = "Certificate manager and unified crypto GUI";
     license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
     maintainers = kdepimTeam;
   };
diff --git a/pkgs/applications/kde/kmahjongg.nix b/pkgs/applications/kde/kmahjongg.nix
index 285cf8adff5..a0c277ec091 100644
--- a/pkgs/applications/kde/kmahjongg.nix
+++ b/pkgs/applications/kde/kmahjongg.nix
@@ -13,6 +13,8 @@ mkDerivation {
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   buildInputs = [ kdeclarative libkmahjongg knewstuff libkdegames ];
   meta = {
+    description = "Mahjongg solitaire";
+    homepage = "https://apps.kde.org/kmahjongg/";
     license = with lib.licenses; [ gpl2 ];
     maintainers = with lib.maintainers; [ ];
   };
diff --git a/pkgs/applications/kde/kmail.nix b/pkgs/applications/kde/kmail.nix
index 1a33eb2fe20..341d54a6388 100644
--- a/pkgs/applications/kde/kmail.nix
+++ b/pkgs/applications/kde/kmail.nix
@@ -53,6 +53,8 @@
 mkDerivation {
   pname = "kmail";
   meta = {
+    homepage = "https://apps.kde.org/kmail2/";
+    description = "Mail client";
     license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
     maintainers = kdepimTeam;
   };
diff --git a/pkgs/applications/kde/kmix.nix b/pkgs/applications/kde/kmix.nix
index a34f5a22d06..2f85454eb67 100644
--- a/pkgs/applications/kde/kmix.nix
+++ b/pkgs/applications/kde/kmix.nix
@@ -8,6 +8,8 @@
 mkDerivation {
   pname = "kmix";
   meta = {
+    homepage = "https://apps.kde.org/kmix/";
+    description = "Sound mixer";
     license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
     maintainers = [ lib.maintainers.rongcuid ];
   };
diff --git a/pkgs/applications/kde/kmplot.nix b/pkgs/applications/kde/kmplot.nix
index 04ccb809c79..a6784982580 100644
--- a/pkgs/applications/kde/kmplot.nix
+++ b/pkgs/applications/kde/kmplot.nix
@@ -5,6 +5,8 @@
 mkDerivation {
   pname = "kmplot";
   meta = {
+    homepage = "https://apps.kde.org/kmplot/";
+    description = "Mathematical function plotter";
     license = with lib.licenses; [ gpl2Plus fdl12 ];
     maintainers = [ lib.maintainers.orivej ];
   };
diff --git a/pkgs/applications/kde/knotes.nix b/pkgs/applications/kde/knotes.nix
index 1907a8fe910..a465b82041a 100644
--- a/pkgs/applications/kde/knotes.nix
+++ b/pkgs/applications/kde/knotes.nix
@@ -1,14 +1,13 @@
-{
-  mkDerivation,
-  extra-cmake-modules, kdoctools,
-  kcompletion, kconfig, kconfigwidgets, kcoreaddons, kcrash,
-  kdbusaddons, kdnssd, kglobalaccel, kiconthemes, kitemmodels,
-  kitemviews, kcmutils, knewstuff, knotifications, knotifyconfig,
-  kparts, ktextwidgets, kwidgetsaddons, kwindowsystem,
-  grantlee, grantleetheme, qtx11extras,
-  akonadi, akonadi-notes, akonadi-search, kcalutils,
-  kontactinterface, libkdepim, kmime, pimcommon, kpimtextedit,
-  kcalendarcore
+{ lib, mkDerivation
+, extra-cmake-modules, kdoctools
+, kcompletion, kconfig, kconfigwidgets, kcoreaddons, kcrash
+, kdbusaddons, kdnssd, kglobalaccel, kiconthemes, kitemmodels
+, kitemviews, kcmutils, knewstuff, knotifications, knotifyconfig
+, kparts, ktextwidgets, kwidgetsaddons, kwindowsystem
+, grantlee, grantleetheme, qtx11extras
+, akonadi, akonadi-notes, akonadi-search, kcalutils
+, kontactinterface, libkdepim, kmime, pimcommon, kpimtextedit
+, kcalendarcore
 }:
 
 mkDerivation {
@@ -25,4 +24,9 @@ mkDerivation {
     akonadi-search
     kcalendarcore
   ];
+  meta = with lib; {
+    homepage = "https://apps.kde.org/knotes/";
+    description = "Popup notes";
+    license = licenses.gpl2Plus;
+  };
 }
diff --git a/pkgs/applications/kde/kolf.nix b/pkgs/applications/kde/kolf.nix
index 2f1189855be..5bcb9fb1100 100644
--- a/pkgs/applications/kde/kolf.nix
+++ b/pkgs/applications/kde/kolf.nix
@@ -10,6 +10,8 @@ mkDerivation {
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   buildInputs = [ libkdegames kio ktextwidgets ];
   meta = {
+    homepage = "https://apps.kde.org/kolf/";
+    description = "Miniature golf";
     license = with lib.licenses; [ gpl2 ];
     maintainers = with lib.maintainers; [ peterhoeg ];
   };
diff --git a/pkgs/applications/kde/kolourpaint.nix b/pkgs/applications/kde/kolourpaint.nix
index cd703c49eee..b02c91e8641 100644
--- a/pkgs/applications/kde/kolourpaint.nix
+++ b/pkgs/applications/kde/kolourpaint.nix
@@ -17,6 +17,8 @@ mkDerivation {
     kguiaddons kio ktextwidgets kwidgetsaddons kxmlgui libkexiv2
   ];
   meta = {
+    homepage = "https://apps.kde.org/kolourpaint/";
+    description = "Paint program";
     maintainers = [ lib.maintainers.fridh ];
     license = with lib.licenses; [ gpl2 ];
   };
diff --git a/pkgs/applications/kde/kompare.nix b/pkgs/applications/kde/kompare.nix
index d4d49c6a942..eace8660c2e 100644
--- a/pkgs/applications/kde/kompare.nix
+++ b/pkgs/applications/kde/kompare.nix
@@ -7,7 +7,11 @@
 
 mkDerivation {
   pname = "kompare";
-  meta = { license = with lib.licenses; [ gpl2 ]; };
+  meta = {
+    homepage = "https://apps.kde.org/kompare/";
+    description = "Diff/patch frontend";
+    license = with lib.licenses; [ gpl2 ];
+  };
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   buildInputs = [
     kiconthemes kparts ktexteditor kwidgetsaddons libkomparediff2
diff --git a/pkgs/applications/kde/konqueror.nix b/pkgs/applications/kde/konqueror.nix
index 781368a108f..cf4002a8f67 100644
--- a/pkgs/applications/kde/konqueror.nix
+++ b/pkgs/applications/kde/konqueror.nix
@@ -22,6 +22,8 @@ mkDerivation {
   '';
 
   meta = {
+    homepage = "https://apps.kde.org/konqueror/";
+    description = "Web browser, file manager and viewer";
     license = with lib.licenses; [ gpl2 ];
     maintainers = with lib.maintainers; [ ];
     broken = lib.versionOlder qtbase.version "5.13";
diff --git a/pkgs/applications/kde/konquest.nix b/pkgs/applications/kde/konquest.nix
index 5957df47956..7c4ac20f4a5 100644
--- a/pkgs/applications/kde/konquest.nix
+++ b/pkgs/applications/kde/konquest.nix
@@ -22,6 +22,8 @@ mkDerivation {
     qtquickcontrols
   ];
   meta = {
+    homepage = "https://apps.kde.org/konquest/";
+    description = "Galactic strategy game";
     license = with lib.licenses; [ gpl2 ];
     maintainers = with lib.maintainers; [ lheckemann ];
   };
diff --git a/pkgs/applications/kde/konsole.nix b/pkgs/applications/kde/konsole.nix
index 18750d1f160..098001ef4c2 100644
--- a/pkgs/applications/kde/konsole.nix
+++ b/pkgs/applications/kde/konsole.nix
@@ -10,6 +10,8 @@
 mkDerivation {
   pname = "konsole";
   meta = {
+    homepage = "https://apps.kde.org/konsole/";
+    description = "KDE terminal emulator";
     license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
     maintainers = with lib.maintainers; [ ttuegel turion ];
   };
diff --git a/pkgs/applications/kde/kontact.nix b/pkgs/applications/kde/kontact.nix
index 801c6845e40..dbdc5ba474b 100644
--- a/pkgs/applications/kde/kontact.nix
+++ b/pkgs/applications/kde/kontact.nix
@@ -10,6 +10,8 @@
 mkDerivation {
   pname = "kontact";
   meta = {
+    homepage = "https://apps.kde.org/kontact/";
+    description = "Personal information manager";
     license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
     maintainers = kdepimTeam;
   };
diff --git a/pkgs/applications/kde/korganizer.nix b/pkgs/applications/kde/korganizer.nix
index 0f6689bb758..3eafd80cacf 100644
--- a/pkgs/applications/kde/korganizer.nix
+++ b/pkgs/applications/kde/korganizer.nix
@@ -13,6 +13,8 @@
 mkDerivation {
   pname = "korganizer";
   meta = {
+    homepage = "https://apps.kde.org/korganizer/";
+    description = "Personal organizer";
     license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
     maintainers = kdepimTeam;
   };
diff --git a/pkgs/applications/kde/krdc.nix b/pkgs/applications/kde/krdc.nix
index b0e79b0ff89..8049c6d11b4 100644
--- a/pkgs/applications/kde/krdc.nix
+++ b/pkgs/applications/kde/krdc.nix
@@ -18,6 +18,7 @@ mkDerivation {
   '';
   meta = with lib; {
     homepage = "http://www.kde.org";
+    description = "Remote desktop client";
     license = with licenses; [ gpl2 lgpl21 fdl12 bsd3 ];
     maintainers = with maintainers; [ peterhoeg ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/kde/krfb.nix b/pkgs/applications/kde/krfb.nix
index 905c72b3675..15835bc6107 100644
--- a/pkgs/applications/kde/krfb.nix
+++ b/pkgs/applications/kde/krfb.nix
@@ -10,6 +10,8 @@
 mkDerivation {
   pname = "krfb";
   meta = {
+    homepage = "https://apps.kde.org/krfb/";
+    description = "Desktop sharing (VNC)";
     license = with lib.licenses; [ gpl2 fdl12 ];
     maintainers = with lib.maintainers; [ jerith666 ];
   };
diff --git a/pkgs/applications/kde/kruler.nix b/pkgs/applications/kde/kruler.nix
index 460675e8cb1..918c0c55b62 100644
--- a/pkgs/applications/kde/kruler.nix
+++ b/pkgs/applications/kde/kruler.nix
@@ -7,6 +7,8 @@
 mkDerivation {
   pname = "kruler";
   meta = {
+    homepage = "https://apps.kde.org/kruler/";
+    description = "Screen ruler";
     license = with lib.licenses; [ gpl2 ];
     maintainers = [ lib.maintainers.vandenoever ];
   };
diff --git a/pkgs/applications/kde/kspaceduel.nix b/pkgs/applications/kde/kspaceduel.nix
index 49ef76151ea..bf174546f2f 100644
--- a/pkgs/applications/kde/kspaceduel.nix
+++ b/pkgs/applications/kde/kspaceduel.nix
@@ -11,7 +11,11 @@
 
 mkDerivation {
   pname = "kspaceduel";
-  meta.license = with lib.licenses; [ lgpl21 gpl3 ];
+  meta = {
+    homepage = "https://apps.kde.org/kspaceduel/";
+    description = "Space arcade game";
+    license = with lib.licenses; [ lgpl21 gpl3 ];
+  };
   outputs = [ "out" "dev" ];
   nativeBuildInputs = [
     cmake extra-cmake-modules
diff --git a/pkgs/applications/kde/ksudoku.nix b/pkgs/applications/kde/ksudoku.nix
index bf59c6e94c3..1cfb3884ff5 100644
--- a/pkgs/applications/kde/ksudoku.nix
+++ b/pkgs/applications/kde/ksudoku.nix
@@ -12,6 +12,8 @@ mkDerivation {
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   buildInputs = [ libGLU kdeclarative libkdegames ];
   meta = {
+    homepage = "https://apps.kde.org/ksudoku/";
+    description = "Suduko game";
     license = with lib.licenses; [ gpl2 ];
     maintainers = with lib.maintainers; [ ];
   };
diff --git a/pkgs/applications/kde/ksystemlog.nix b/pkgs/applications/kde/ksystemlog.nix
index 08f7ffb7e05..1b78c16b49d 100644
--- a/pkgs/applications/kde/ksystemlog.nix
+++ b/pkgs/applications/kde/ksystemlog.nix
@@ -11,6 +11,8 @@ mkDerivation {
   propagatedBuildInputs = [ karchive kconfig kio ];
 
   meta = with lib; {
+    homepage = "https://apps.kde.org/ksystemlog/";
+    description = "System log viewer";
     license = with licenses; [ gpl2 ];
     maintainers = with maintainers; [ peterhoeg ];
   };
diff --git a/pkgs/applications/kde/ktouch.nix b/pkgs/applications/kde/ktouch.nix
index 9d31d4ec62b..df727c43a16 100644
--- a/pkgs/applications/kde/ktouch.nix
+++ b/pkgs/applications/kde/ktouch.nix
@@ -7,22 +7,22 @@
 , xorg
 }:
 
+mkDerivation {
+  pname = "ktouch";
+  meta = {
+    homepage = "https://apps.kde.org/ktouch/";
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.schmittlauch ];
+    description = "A touch typing tutor from the KDE software collection";
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools qtdeclarative ];
+  buildInputs = [
+    kconfig kconfigwidgets kcoreaddons kdeclarative ki18n
+    kitemviews kcmutils kio knewstuff ktexteditor kwidgetsaddons
+    kwindowsystem kxmlgui qtscript qtdeclarative kqtquickcharts
+    qtx11extras qtgraphicaleffects qtxmlpatterns qtquickcontrols2
+    xorg.libxkbfile xorg.libxcb
+  ];
 
-  mkDerivation {
-    pname = "ktouch";
-    meta = {
-      license = lib.licenses.gpl2;
-      maintainers = [ lib.maintainers.schmittlauch ];
-      description = "A touch typing tutor from the KDE software collection";
-    };
-    nativeBuildInputs = [ extra-cmake-modules kdoctools qtdeclarative ];
-    buildInputs = [
-      kconfig kconfigwidgets kcoreaddons kdeclarative ki18n
-      kitemviews kcmutils kio knewstuff ktexteditor kwidgetsaddons
-      kwindowsystem kxmlgui qtscript qtdeclarative kqtquickcharts
-      qtx11extras qtgraphicaleffects qtxmlpatterns qtquickcontrols2
-      xorg.libxkbfile xorg.libxcb
-    ];
-
-    enableParallelBuilding = true;
+  enableParallelBuilding = true;
 }
diff --git a/pkgs/applications/kde/kwalletmanager.nix b/pkgs/applications/kde/kwalletmanager.nix
index 7f227f6d9e6..8d56adc4132 100644
--- a/pkgs/applications/kde/kwalletmanager.nix
+++ b/pkgs/applications/kde/kwalletmanager.nix
@@ -14,6 +14,9 @@
 mkDerivation {
   pname = "kwalletmanager";
   meta = {
+    homepage = "https://apps.kde.org/kwalletmanager5/";
+
+    description = "KDE wallet management tool";
     license = with lib.licenses; [ gpl2 ];
     maintainers = with lib.maintainers; [ fridh ];
   };
diff --git a/pkgs/applications/kde/marble.nix b/pkgs/applications/kde/marble.nix
index 525289bdc3b..7fe3aa529fa 100644
--- a/pkgs/applications/kde/marble.nix
+++ b/pkgs/applications/kde/marble.nix
@@ -7,7 +7,11 @@
 
 mkDerivation {
   pname = "marble";
-  meta.license = with lib.licenses; [ lgpl21 gpl3 ];
+  meta = {
+    homepage = "https://apps.kde.org/marble/";
+    description = "Virtual globe";
+    license = with lib.licenses; [ lgpl21 gpl3 ];
+  };
   outputs = [ "out" "dev" ];
   nativeBuildInputs = [ extra-cmake-modules kdoctools perl ];
   propagatedBuildInputs = [
diff --git a/pkgs/applications/kde/minuet.nix b/pkgs/applications/kde/minuet.nix
index cc7be0bf79a..50a6a6f282e 100644
--- a/pkgs/applications/kde/minuet.nix
+++ b/pkgs/applications/kde/minuet.nix
@@ -8,6 +8,8 @@
 mkDerivation {
   pname = "minuet";
   meta = with lib; {
+    homepage = "https://apps.kde.org/minuet/";
+    description = "Music Education Software";
     license = with licenses; [ lgpl21 gpl3 ];
     maintainers = with maintainers; [ peterhoeg HaoZeke ];
     broken = lib.versionOlder qtbase.version "5.14";
diff --git a/pkgs/applications/kde/okular.nix b/pkgs/applications/kde/okular.nix
index 12537eba270..9962500d907 100644
--- a/pkgs/applications/kde/okular.nix
+++ b/pkgs/applications/kde/okular.nix
@@ -29,6 +29,7 @@ mkDerivation {
 
   meta = with lib; {
     homepage = "http://www.kde.org";
+    description = "KDE document viewer";
     license = with licenses; [ gpl2 lgpl21 fdl12 bsd3 ];
     maintainers = with maintainers; [ ttuegel turion ];
     platforms = lib.platforms.linux;
diff --git a/pkgs/applications/kde/picmi.nix b/pkgs/applications/kde/picmi.nix
index 25734e318ab..4358eb5ffac 100644
--- a/pkgs/applications/kde/picmi.nix
+++ b/pkgs/applications/kde/picmi.nix
@@ -6,6 +6,7 @@
 mkDerivation {
   pname = "picmi";
   meta = with lib; {
+    homepage = "https://apps.kde.org/picmi/";
     description = "Nonogram game";
     longDescription = ''The goal is to reveal the hidden pattern in the board by coloring or
       leaving blank the cells in a grid according to numbers given at the side of the grid.
diff --git a/pkgs/applications/kde/pim-data-exporter.nix b/pkgs/applications/kde/pim-data-exporter.nix
index 746bb2aec2a..f13e1f66795 100644
--- a/pkgs/applications/kde/pim-data-exporter.nix
+++ b/pkgs/applications/kde/pim-data-exporter.nix
@@ -10,6 +10,8 @@
 mkDerivation {
   pname = "pim-data-exporter";
   meta = {
+    homepage = "https://apps.kde.org/pimdataexporter/";
+    description = "Saves and restores all data from PIM apps";
     license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
     maintainers = kdepimTeam;
   };
diff --git a/pkgs/applications/kde/spectacle.nix b/pkgs/applications/kde/spectacle.nix
index 587877ad7a7..39e9f344c3e 100644
--- a/pkgs/applications/kde/spectacle.nix
+++ b/pkgs/applications/kde/spectacle.nix
@@ -20,6 +20,8 @@ mkDerivation {
   '';
   propagatedUserEnvPkgs = [ kipi-plugins libkipi ];
   meta = with lib; {
+    homepage = "https://apps.kde.org/spectacle/";
+    description = "Screenshot capture utility";
     maintainers = with maintainers; [ ttuegel ];
     broken = versionOlder qtbase.version "5.15";
   };
diff --git a/pkgs/applications/networking/irc/weechat/scripts/default.nix b/pkgs/applications/networking/irc/weechat/scripts/default.nix
index f83b6705348..a3cf55d6a03 100644
--- a/pkgs/applications/networking/irc/weechat/scripts/default.nix
+++ b/pkgs/applications/networking/irc/weechat/scripts/default.nix
@@ -30,4 +30,6 @@
   buffer_autoset = callPackage ./buffer_autoset { };
 
   highmon = callPackage ./highmon { };
+
+  zncplayback = callPackage ./zncplayback { };
 }
diff --git a/pkgs/applications/networking/irc/weechat/scripts/zncplayback/default.nix b/pkgs/applications/networking/irc/weechat/scripts/zncplayback/default.nix
new file mode 100644
index 00000000000..d15b130cae2
--- /dev/null
+++ b/pkgs/applications/networking/irc/weechat/scripts/zncplayback/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+  pname = "weechat-zncplayback";
+  version = "0.2.1";
+
+  src = fetchurl {
+    url = "https://github.com/weechat/scripts/raw/bcc9643136addd2cd68ac957dd64e336e4f88aa1/python/zncplayback.py";
+    sha256 = "1k32p6naxg40g664ip48zvm61xza7l9az3v3rawmjw97i0mwz7y3";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp $src $out/share/zncplayback.py
+  '';
+
+  passthru = {
+    scripts = [ "zncplayback.py" ];
+  };
+
+  meta = with lib; {
+    description = "Add support for the ZNC Playback module";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ qyliss ];
+  };
+}
diff --git a/pkgs/applications/radio/sdrangel/default.nix b/pkgs/applications/radio/sdrangel/default.nix
index e9a15aaed19..fd742474ec1 100644
--- a/pkgs/applications/radio/sdrangel/default.nix
+++ b/pkgs/applications/radio/sdrangel/default.nix
@@ -33,13 +33,13 @@
 
 mkDerivation rec {
   pname = "sdrangel";
-  version = "6.16.2";
+  version = "6.16.3";
 
   src = fetchFromGitHub {
     owner = "f4exb";
     repo = "sdrangel";
     rev = "v${version}";
-    sha256 = "sha256-wWGKJWd3JDaT0dDMUrxv9ShMVe+q4zvH8SjyKw7UIbo=";
+    sha256 = "sha256-qgFnl9IliKRI4TptpXyK9JHzpLEUQ7NZLIfc0AROCvA=";
     fetchSubmodules = false;
   };
 
diff --git a/pkgs/build-support/skaware/build-skaware-package.nix b/pkgs/build-support/skaware/build-skaware-package.nix
index d6f26fe908a..50d83f2ffff 100644
--- a/pkgs/build-support/skaware/build-skaware-package.nix
+++ b/pkgs/build-support/skaware/build-skaware-package.nix
@@ -22,7 +22,8 @@
 , postInstall
   # : list Maintainer
 , maintainers ? []
-
+  # : passtrhu arguments (e.g. tests)
+, passthru ? {}
 
 }:
 
@@ -49,6 +50,8 @@ let
     "CHANGELOG"
     "README"
     "README.*"
+    "DCO"
+    "CONTRIBUTING"
   ];
 
 in stdenv.mkDerivation {
@@ -106,4 +109,6 @@ in stdenv.mkDerivation {
       [ pmahoney Profpatsch qyliss ] ++ maintainers;
   };
 
+  inherit passthru;
+
 }
diff --git a/pkgs/data/fonts/ocr-a/default.nix b/pkgs/data/fonts/ocr-a/default.nix
new file mode 100644
index 00000000000..216b960994d
--- /dev/null
+++ b/pkgs/data/fonts/ocr-a/default.nix
@@ -0,0 +1,24 @@
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "OCR-A";
+  version = "1.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/ocr-a-font/OCR-A/${version}/OCRA.ttf";
+    sha256 = "0kpmjjxwzm84z8maz6lq9sk1b0xv1zkvl28lwj7i0m2xf04qixd0";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    install -D -m 0644 $src $out/share/fonts/truetype/OCRA.ttf
+  '';
+
+  meta = with lib; {
+    description = "ANSI OCR font from the '60s. CYBER";
+    homepage = "https://sourceforge.net/projects/ocr-a-font/";
+    license = licenses.publicDomain;
+    maintainers = with maintainers; [ V ];
+  };
+}
diff --git a/pkgs/desktops/xfce/applications/xfdashboard/default.nix b/pkgs/desktops/xfce/applications/xfdashboard/default.nix
index 527696c995e..bee7f513608 100644
--- a/pkgs/desktops/xfce/applications/xfdashboard/default.nix
+++ b/pkgs/desktops/xfce/applications/xfdashboard/default.nix
@@ -17,11 +17,11 @@
 mkXfceDerivation {
   category = "apps";
   pname = "xfdashboard";
-  version = "0.9.3";
+  version = "0.9.4";
   rev-prefix = "";
   odd-unstable = false;
 
-  sha256 = "sha256-xoeqVsfvBH2zzQqDUJGiA47hgVvEkvVf9bNYQmyiytk=";
+  sha256 = "sha256-ZDrBLSfRBw5/nIs/x1jJQCVgNJer85b8Hm1kkX1Dk3s=";
 
   buildInputs = [
     clutter
diff --git a/pkgs/desktops/xfce/core/thunar/default.nix b/pkgs/desktops/xfce/core/thunar/default.nix
index 42c0f1ef674..2672da6ad37 100644
--- a/pkgs/desktops/xfce/core/thunar/default.nix
+++ b/pkgs/desktops/xfce/core/thunar/default.nix
@@ -21,9 +21,9 @@
 let unwrapped = mkXfceDerivation {
   category = "xfce";
   pname = "thunar";
-  version = "4.16.9";
+  version = "4.16.10";
 
-  sha256 = "sha256-TpazNC4TwNhcEGQ4AQICxbmfZ1i4RE9vXkM9Zln80vE=";
+  sha256 = "sha256-BeEy8+zEsJ5fJAbvP37tfekqF5LTHil0RDcE5RY0f64=";
 
   nativeBuildInputs = [
     docbook_xsl
diff --git a/pkgs/development/libraries/capnproto/default.nix b/pkgs/development/libraries/capnproto/default.nix
index 3e5a22bf4c8..713a49dbaa6 100644
--- a/pkgs/development/libraries/capnproto/default.nix
+++ b/pkgs/development/libraries/capnproto/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl }:
+{ lib, stdenv, fetchurl, capnproto, cmake }:
 
 stdenv.mkDerivation rec {
   pname = "capnproto";
@@ -9,6 +9,11 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-soBUp6K/6kK/w5LI0AljDZTXLozoaiOtbxi15yV0Bk8=";
   };
 
+  nativeBuildInputs = [ cmake ]
+    ++ lib.optional (!(stdenv.hostPlatform.isCompatible stdenv.buildPlatform)) capnproto;
+
+  cmakeFlags = lib.optional (!(stdenv.hostPlatform.isCompatible stdenv.buildPlatform)) "-DEXTERNAL_CAPNP";
+
   meta = with lib; {
     homepage    = "https://capnproto.org/";
     description = "Cap'n Proto cerealization protocol";
diff --git a/pkgs/development/libraries/libgpg-error/default.nix b/pkgs/development/libraries/libgpg-error/default.nix
index e46e2559336..72d28761323 100644
--- a/pkgs/development/libraries/libgpg-error/default.nix
+++ b/pkgs/development/libraries/libgpg-error/default.nix
@@ -35,6 +35,8 @@ in stdenv.mkDerivation (rec {
     ln -s lock-obj-pub.arm-unknown-linux-gnueabi.h src/syscfg/lock-obj-pub.linux-gnueabi.h
   '' + lib.optionalString (stdenv.hostPlatform.isx86_64 && stdenv.hostPlatform.isMusl) ''
     ln -s lock-obj-pub.x86_64-pc-linux-musl.h src/syscfg/lock-obj-pub.linux-musl.h
+  '' + lib.optionalString (stdenv.hostPlatform.isi686 && stdenv.hostPlatform.isMusl) ''
+    ln -s lock-obj-pub.i686-unknown-linux-gnu.h src/syscfg/lock-obj-pub.linux-musl.h
   '' + lib.optionalString (stdenv.hostPlatform.isAarch32 && stdenv.hostPlatform.isMusl) ''
     ln -s src/syscfg/lock-obj-pub.arm-unknown-linux-gnueabi.h src/syscfg/lock-obj-pub.arm-unknown-linux-musleabihf.h
     ln -s src/syscfg/lock-obj-pub.arm-unknown-linux-gnueabi.h src/syscfg/lock-obj-pub.linux-musleabihf.h
diff --git a/pkgs/development/libraries/nsss/default.nix b/pkgs/development/libraries/nsss/default.nix
index 527e7d4898e..9fee8333fb3 100644
--- a/pkgs/development/libraries/nsss/default.nix
+++ b/pkgs/development/libraries/nsss/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "nsss";
-  version = "0.1.0.1";
-  sha256 = "1nair10m7fddp50mpqnwj0qiggnh5qmnffmyzxis5l1ixcav1ir0";
+  version = "0.2.0.0";
+  sha256 = "0zg0lwkvx9ch4a6h9ryc73nqfz733v2pv4gbf65qzpz7ccniwagi";
 
   description = "An implementation of a subset of the pwd.h, group.h and shadow.h family of functions.";
 
diff --git a/pkgs/development/libraries/skalibs/2_10.nix b/pkgs/development/libraries/skalibs/2_10.nix
new file mode 100644
index 00000000000..af4c04dab1e
--- /dev/null
+++ b/pkgs/development/libraries/skalibs/2_10.nix
@@ -0,0 +1,31 @@
+{ skawarePackages }:
+
+skawarePackages.buildPackage {
+  pname = "skalibs";
+  version = "2.10.0.3";
+  sha256 = "0ka6n5rnxd5sn5lycarf596d5wlak5s535zqqlz0rnhdcnpb105p";
+
+  description = "A set of general-purpose C programming libraries";
+
+  outputs = [ "lib" "dev" "doc" "out" ];
+
+  configureFlags = [
+    # assume /dev/random works
+    "--enable-force-devr"
+    "--libdir=\${lib}/lib"
+    "--dynlibdir=\${lib}/lib"
+    "--includedir=\${dev}/include"
+    "--sysdepdir=\${lib}/lib/skalibs/sysdeps"
+    # Empty the default path, which would be "/usr/bin:bin".
+    # It would be set when PATH is empty. This hurts hermeticity.
+    "--with-default-path="
+  ];
+
+  postInstall = ''
+    rm -rf sysdeps.cfg
+    rm libskarnet.*
+
+    mv doc $doc/share/doc/skalibs/html
+  '';
+
+}
diff --git a/pkgs/development/libraries/skalibs/default.nix b/pkgs/development/libraries/skalibs/default.nix
index 09530db0532..7e3e457d503 100644
--- a/pkgs/development/libraries/skalibs/default.nix
+++ b/pkgs/development/libraries/skalibs/default.nix
@@ -1,11 +1,11 @@
-{ skawarePackages }:
+{ skawarePackages, pkgs }:
 
 with skawarePackages;
 
 buildPackage {
   pname = "skalibs";
-  version = "2.10.0.3";
-  sha256 = "0ka6n5rnxd5sn5lycarf596d5wlak5s535zqqlz0rnhdcnpb105p";
+  version = "2.11.0.0";
+  sha256 = "1n9l7mb54dlb0iijjaf446jba6nmq1ql9n39s095ngrk5ahcipwq";
 
   description = "A set of general-purpose C programming libraries";
 
@@ -30,4 +30,10 @@ buildPackage {
     mv doc $doc/share/doc/skalibs/html
   '';
 
+  passthru.tests = {
+    # fdtools is one of the few non-skalib packages that depends on skalibs
+    # and might break if skalibs gets an breaking update.
+    fdtools = pkgs.fdtools;
+  };
+
 }
diff --git a/pkgs/development/libraries/utmps/default.nix b/pkgs/development/libraries/utmps/default.nix
index be74748cb36..fcf032b2650 100644
--- a/pkgs/development/libraries/utmps/default.nix
+++ b/pkgs/development/libraries/utmps/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "utmps";
-  version = "0.1.0.2";
-  sha256 = "1vjza7m65ziq54q0sv46kb3lss9cmxkkv0n9h3i8505x0h2hlvlb";
+  version = "0.1.0.3";
+  sha256 = "0npgg90lzxmhld6hp296gbnrsixip28s7axirc2g6yjpjz2bvcan";
 
   description = "A secure utmpx and wtmp implementation";
 
diff --git a/pkgs/misc/vim-plugins/vim-utils.nix b/pkgs/misc/vim-plugins/vim-utils.nix
index 10295ab6b2b..60b9b60806d 100644
--- a/pkgs/misc/vim-plugins/vim-utils.nix
+++ b/pkgs/misc/vim-plugins/vim-utils.nix
@@ -399,6 +399,7 @@ in
 rec {
   inherit vimrcFile;
   inherit vimrcContent;
+  inherit packDir;
 
   # shell script with custom name passing [-u vimrc] [-U gvimrc] to vim
   vimWithRC = {
diff --git a/pkgs/misc/vscode-extensions/default.nix b/pkgs/misc/vscode-extensions/default.nix
index 0c47dea5633..aca5641a2ae 100644
--- a/pkgs/misc/vscode-extensions/default.nix
+++ b/pkgs/misc/vscode-extensions/default.nix
@@ -8,6 +8,7 @@
 , jdk
 , llvmPackages_8
 , nixpkgs-fmt
+, protobuf
 , jq
 , shellcheck
 , moreutils
@@ -1679,6 +1680,23 @@ let
           license = lib.licenses.mit;
         };
       };
+
+      zxh404.vscode-proto3 = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "vscode-proto3";
+          publisher = "zxh404";
+          version = "0.5.4";
+          sha256 = "08dfl5h1k6s542qw5qx2czm1wb37ck9w2vpjz44kp2az352nmksb";
+        };
+        nativeBuildInputs = [ jq moreutils ];
+        postInstall = ''
+          cd "$out/$installPrefix"
+          jq '.contributes.configuration.properties.protoc.properties.path.default = "${protobuf}/bin/protoc"' package.json | sponge package.json
+        '';
+        meta = {
+          license = lib.licenses.mit;
+        };
+      };
     };
 
   aliases = self: super: {
diff --git a/pkgs/os-specific/linux/mdevd/default.nix b/pkgs/os-specific/linux/mdevd/default.nix
index 58299ba5e87..fe549e880a4 100644
--- a/pkgs/os-specific/linux/mdevd/default.nix
+++ b/pkgs/os-specific/linux/mdevd/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "mdevd";
-  version = "0.1.4.0";
-  sha256 = "1lnwk7qa6x7iia0v12i2jckg42ypi35hk3sa7cjm23ngnhiv5lzz";
+  version = "0.1.5.0";
+  sha256 = "01ykxgnbm53wijdrbld10664xy2wkvyzbbs98mfnqnf4h1y064n0";
 
   description = "mdev-compatible Linux hotplug manager daemon";
   platforms = lib.platforms.linux;
diff --git a/pkgs/os-specific/linux/s6-linux-init/default.nix b/pkgs/os-specific/linux/s6-linux-init/default.nix
index f618fa7d8da..5d579c3ab2a 100644
--- a/pkgs/os-specific/linux/s6-linux-init/default.nix
+++ b/pkgs/os-specific/linux/s6-linux-init/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "s6-linux-init";
-  version = "1.0.6.3";
-  sha256 = "1idqjcxhl5wgff8yrsvx2812wahjri2hcs7qs6k62g0sdd8niqr9";
+  version = "1.0.6.4";
+  sha256 = "0grqk111d6aqym1c4l9j26fdqcgra1hvwb9vdgylrfbvn1c3hlpb";
 
   description = "A set of minimalistic tools used to create a s6-based init system, including a /sbin/init binary, on a Linux kernel";
   platforms = lib.platforms.linux;
diff --git a/pkgs/os-specific/linux/s6-linux-utils/default.nix b/pkgs/os-specific/linux/s6-linux-utils/default.nix
index 3596ab23e72..06a177f1cc6 100644
--- a/pkgs/os-specific/linux/s6-linux-utils/default.nix
+++ b/pkgs/os-specific/linux/s6-linux-utils/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "s6-linux-utils";
-  version = "2.5.1.5";
-  sha256 = "1fj5ldlrc6bx40pphg29rp3byd6fal6869v85kw86c2kdgrxn063";
+  version = "2.5.1.6";
+  sha256 = "0hr49nl0d7a6i5w8cfg43xzvzayb8kpqij9xg7bmw2fyvc2z338z";
 
   description = "A set of minimalistic Linux-specific system utilities";
   platforms = lib.platforms.linux;
diff --git a/pkgs/os-specific/linux/sdnotify-wrapper/sdnotify-wrapper.c b/pkgs/os-specific/linux/sdnotify-wrapper/sdnotify-wrapper.c
index bb71a732bf9..3ad3cbc6906 100644
--- a/pkgs/os-specific/linux/sdnotify-wrapper/sdnotify-wrapper.c
+++ b/pkgs/os-specific/linux/sdnotify-wrapper/sdnotify-wrapper.c
@@ -2,9 +2,9 @@
    Copyright: (C)2015-2020 Laurent Bercot.  http://skarnet.org/
    ISC license. See http://opensource.org/licenses/ISC
 
-   Build-time requirements: skalibs.  http://skarnet.org/software/skalibs/
+   Build-time requirements: skalibs.  https://skarnet.org/software/skalibs/
    Run-time requirements: none, if you link skalibs statically.
- 
+
    Compilation:
      gcc -o sdnotify-wrapper -L/usr/lib/skalibs sdnotify-wrapper.c -lskarnet
    Use /usr/lib/skalibs/libskarnet.a instead of -lskarnet to link statically.
@@ -67,8 +67,6 @@
 #include <skalibs/tai.h>
 #include <skalibs/iopause.h>
 #include <skalibs/djbunix.h>
-//#include <skalibs/webipc.h>
-// svanderburg: This header no longer exists, but socket.h provides the functions this module needs
 #include <skalibs/socket.h>
 #include <skalibs/exec.h>
 
@@ -106,7 +104,7 @@ static inline int run_child (int fd, unsigned int timeout, pid_t pid, char const
 {
   char dummy[4096] ;
   iopause_fd x = { .fd = fd, .events = IOPAUSE_READ } ;
-  tain_t deadline ;
+  tain deadline ;
   tain_now_g() ;
   if (timeout) tain_from_millisecs(&deadline, timeout) ;
   else deadline = tain_infinite_relative ;
@@ -135,7 +133,7 @@ int main (int argc, char const *const *argv)
   int df = 1, keep = 0 ;
   PROG = "sdnotify-wrapper" ;
   {
-    subgetopt_t l = SUBGETOPT_ZERO ;
+    subgetopt l = SUBGETOPT_ZERO ;
     for (;;)
     {
       int opt = subgetopt_r(argc, argv, "d:ft:k", &l) ;
diff --git a/pkgs/servers/monitoring/prometheus/fastly-exporter.nix b/pkgs/servers/monitoring/prometheus/fastly-exporter.nix
new file mode 100644
index 00000000000..cffdca4083c
--- /dev/null
+++ b/pkgs/servers/monitoring/prometheus/fastly-exporter.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "fastly-exporter";
+  version = "6.1.0";
+
+  src = fetchFromGitHub {
+    owner = "peterbourgon";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0my0pcxix5rk73m5ciz513nwmjcm7vjs6r8wg3vddm0xixv7zq94";
+  };
+
+  vendorSha256 = "1w9asky8h8l5gc0c6cv89m38qw50hyhma8qbsw3zirplhk9mb3r2";
+
+  meta = with lib; {
+    description = "Prometheus exporter for the Fastly Real-time Analytics API";
+    homepage = "https://github.com/peterbourgon/fastly-exporter";
+    license = licenses.asl20;
+    maintainers = teams.deshaw.members;
+  };
+}
diff --git a/pkgs/servers/monitoring/zabbix/server.nix b/pkgs/servers/monitoring/zabbix/server.nix
index 03e9c1a867b..474cf82f7c1 100644
--- a/pkgs/servers/monitoring/zabbix/server.nix
+++ b/pkgs/servers/monitoring/zabbix/server.nix
@@ -6,6 +6,7 @@
 , sshSupport ? true, libssh2
 , mysqlSupport ? false, libmysqlclient
 , postgresqlSupport ? false, postgresql
+, ipmiSupport ? false, openipmi
 }:
 
 # ensure exactly one primary database type is selected
@@ -41,7 +42,8 @@ in
       ++ optional snmpSupport net-snmp
       ++ optional sshSupport libssh2
       ++ optional mysqlSupport libmysqlclient
-      ++ optional postgresqlSupport postgresql;
+      ++ optional postgresqlSupport postgresql
+      ++ optional ipmiSupport openipmi;
 
       configureFlags = [
         "--enable-server"
@@ -59,7 +61,8 @@ in
       ++ optional snmpSupport "--with-net-snmp"
       ++ optional sshSupport "--with-ssh2=${libssh2.dev}"
       ++ optional mysqlSupport "--with-mysql"
-      ++ optional postgresqlSupport "--with-postgresql";
+      ++ optional postgresqlSupport "--with-postgresql"
+      ++ optional ipmiSupport "--with-openipmi=${openipmi.dev}";
 
       prePatch = ''
         find database -name data.sql -exec sed -i 's|/usr/bin/||g' {} +
diff --git a/pkgs/servers/web-apps/discourse/default.nix b/pkgs/servers/web-apps/discourse/default.nix
index c699c9fb1ed..0b806e83f94 100644
--- a/pkgs/servers/web-apps/discourse/default.nix
+++ b/pkgs/servers/web-apps/discourse/default.nix
@@ -2,20 +2,21 @@
 , fetchFromGitHub, bundlerEnv, callPackage
 
 , ruby, replace, gzip, gnutar, git, cacert, util-linux, gawk
-, imagemagick, optipng, pngquant, libjpeg, jpegoptim, gifsicle, libpsl
-, redis, postgresql, which, brotli, procps, rsync, nodePackages, v8
+, imagemagick, optipng, pngquant, libjpeg, jpegoptim, gifsicle, jhead
+, libpsl, redis, postgresql, which, brotli, procps, rsync
+, nodePackages, v8
 
 , plugins ? []
 }@args:
 
 let
-  version = "2.7.7";
+  version = "2.7.8";
 
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse";
     rev = "v${version}";
-    sha256 = "sha256-rhcTQyirgPX0ITjgotJAYLLSU957GanxAYYhy9j123U=";
+    sha256 = "sha256-p4eViEvzIU6W89FZRtMBXsT7bvf2H12bTPZ/h3iD8rA=";
   };
 
   runtimeDeps = [
@@ -41,6 +42,7 @@ let
     jpegoptim
     gifsicle
     nodePackages.svgo
+    jhead
   ];
 
   runtimeEnv = {
@@ -242,9 +244,6 @@ let
       # Add a noninteractive admin creation task
       ./admin_create.patch
 
-      # Disable jhead, which is currently marked as vulnerable
-      ./disable_jhead.patch
-
       # Add the path to the CA cert bundle to make TLS work
       ./action_mailer_ca_cert.patch
 
diff --git a/pkgs/servers/web-apps/discourse/disable_jhead.patch b/pkgs/servers/web-apps/discourse/disable_jhead.patch
deleted file mode 100644
index a7ee56ff185..00000000000
--- a/pkgs/servers/web-apps/discourse/disable_jhead.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/lib/file_helper.rb b/lib/file_helper.rb
-index d87da5a85e..f5323292d7 100644
---- a/lib/file_helper.rb
-+++ b/lib/file_helper.rb
-@@ -127,6 +127,7 @@ class FileHelper
-         jpegrecompress: false,
-         # Skip looking for gifsicle, svgo binaries
-         gifsicle: false,
-+        jhead: false,
-         svgo: false
-       )
-     end
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock
index d5622c0ac37..d31b4afe519 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock
@@ -1,7 +1,7 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    activesupport (6.1.4)
+    activesupport (6.1.4.1)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 1.6, < 2)
       minitest (>= 5.1)
@@ -24,4 +24,4 @@ DEPENDENCIES
   rrule (= 0.4.2)
 
 BUNDLED WITH
-   2.2.20
+   2.2.24
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix
index b610a5c21a1..a437f293fa6 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix
@@ -6,8 +6,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-calendar";
-    rev = "519cf403ae3003291de20145aca243e2ffbcb4a2";
-    sha256 = "0398cf7k03i7j7v5w1mysjzk2npbkvr7icj5sjwa8i8xzg34gck4";
+    rev = "2f76cdd3064735d484be1df77f43100aca21aea6";
+    sha256 = "1skpc8p5br1jkii1rksha1q95ias6xxyvi5bnli3q41w7fz1h5j2";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-calendar";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix
index 26db0e6fd10..4f1e4c100c0 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix
@@ -5,10 +5,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0kqgywy4cj3h5142dh7pl0xx5nybp25jn0ykk0znziivzks68xdk";
+      sha256 = "19gx1jcq46x9d1pi1w8xq0bgvvfw239y4lalr8asm291gj3q3ds4";
       type = "gem";
     };
-    version = "6.1.4";
+    version = "6.1.4.1";
   };
   concurrent-ruby = {
     groups = ["default"];
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix
index f90fabc0574..7ec87636d1c 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-canned-replies";
-    rev = "672a96a8160d3767cf5fd6647309c7b5dcf8a55d";
-    sha256 = "105zgpc7j3xmlkaz3cgxw1rfgy5d3dzln58ix569jmzifbsijml7";
+    rev = "1bb77ebbe0577f257bc16783dc8b7bbf2d915092";
+    sha256 = "0qvx8k9jsxjllqsqpf4k0j4niv1k2sggy6ak067wigs8ha3dkcr0";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-canned-replies";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix
index 89edb3f71d7..2bcf88da150 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-checklist";
-    rev = "6e7b9c5040c55795c7fd4db9569b3e93dad092c2";
-    sha256 = "sha256-2KAVBrfAvhLZC9idi+ijbVqOCq9rSXbDVEOZS+mWJ10=";
+    rev = "48855d81b7c3a3274f7f78a64312125c344d92d1";
+    sha256 = "0139v5wpyglfzvd07ka6gic1ssfysisgfiq09dsbjy519gnc9kjw";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-checklist";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock
index b6ebd834a53..3404b8a22a1 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock
@@ -3,7 +3,7 @@ GEM
   specs:
     addressable (2.8.0)
       public_suffix (>= 2.0.2, < 5.0)
-    faraday (1.7.0)
+    faraday (1.8.0)
       faraday-em_http (~> 1.0)
       faraday-em_synchrony (~> 1.0)
       faraday-excon (~> 1.1)
@@ -40,4 +40,4 @@ DEPENDENCIES
   sawyer (= 0.8.2)
 
 BUNDLED WITH
-   2.2.20
+   2.2.24
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix
index 63488de18ff..0ea57071ebe 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix
@@ -6,8 +6,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-github";
-    rev = "b6ad8e39a13e2ad5c6943ea697ca23f2c5f9fec1";
-    sha256 = "0vxwp4kbf44clcqilb8ni0ykk4jrgiv4rbd05pgfvndcp3izm2i6";
+    rev = "9aaf4350968fb758f9bff3588f78e3ad24ddb4b0";
+    sha256 = "0nmpkh1rr0jv68a655f5610v2mn09xriiqv049a0gklap2lgv7p8";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-github";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix
index 90009a3beb8..5b9b4e09853 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix
@@ -16,10 +16,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0r6ik2yvsbx6jj30vck32da2bbvj4m0gf4jhp09vr75i1d6jzfvb";
+      sha256 = "0afhlqgby2cizcwgh7h2sq5f77q01axjbdl25bsvfwsry9n7gyyi";
       type = "gem";
     };
-    version = "1.7.0";
+    version = "1.8.0";
   };
   faraday-em_http = {
     groups = ["default"];
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix
index 0e751c1dc54..812ea88d040 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-math";
-    rev = "aed0c83cee568d5239143bcf1df59c5fbe86b276";
-    sha256 = "1k6kpnhf8s2l0w9zr5pn3wvn8w0n3gwkv7qkv0mkhkzy246ag20z";
+    rev = "d7d0180352dd5a7dcb76c0817bfbb08c2a0f08c7";
+    sha256 = "0y72impvnq965ibbfc9877hr78fxkrwav1xmgyy3r9w87952vcwa";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-math";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix
index c92c5a1016a..b66aa1a7fab 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-solved";
-    rev = "8bf54370200fe9d94541f69339430a7dc1019d62";
-    sha256 = "1sk91h4dilkxm1wpv8zw59wgw860ywwlcgiw2kd23ybdk9n7b3lh";
+    rev = "55cb184f7ef2954326561cc44fc8134798b8a9e0";
+    sha256 = "0pv5i216zn0v8xfwlndvhvr06vkmxaynj8xjfnc5amy1sp6k76w7";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-solved";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix
index da47dbf182c..5b745cbd603 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-spoiler-alert";
-    rev = "ec14a2316da0a4fc055cfc21c68a60040188a2b4";
-    sha256 = "11n977gp8va7jkqa6i3ja279k4nmkhk5l4hg9xhs229450m1rnfp";
+    rev = "0b93227ea8e2c72afe72029382081ebff89c3638";
+    sha256 = "0x0dxb41ss15sv5ph7z7q55ayf8a7r22bgkmr17924mny5440b5a";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-spoiler-alert";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix
index b20e16118c7..ea48d9997bb 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-yearly-review";
-    rev = "95149df2282d62eebeb265b4895df15a2b259d03";
-    sha256 = "02n27al8n8cxz3dx4awlnd4qhv8a0fmjac57yyblmpviapja1wj7";
+    rev = "cb040562f6af3163d70e8932867b530c6640ab9a";
+    sha256 = "07h6nq4bafs27ly2f5chkn5vb1wdy909qffwkgp5k1fanhbqvhvs";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-yearly-review";
diff --git a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock
index 1f7a3641caa..f7fca7dae77 100644
--- a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock
+++ b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock
@@ -590,4 +590,4 @@ DEPENDENCIES
   yaml-lint
 
 BUNDLED WITH
-   2.2.20
+   2.2.24
diff --git a/pkgs/tools/misc/execline/default.nix b/pkgs/tools/misc/execline/default.nix
index 095e43b9d3e..2e1e1b8f7e0 100644
--- a/pkgs/tools/misc/execline/default.nix
+++ b/pkgs/tools/misc/execline/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "execline";
-  version = "2.8.0.1";
-  sha256 = "1v9swmhw2rcrr9fmkmd7qh8qq0kslhmvxwz2a3bhan9ksabz8wx3";
+  version = "2.8.1.0";
+  sha256 = "0msmzf5zwjcsgjlvvq28rd2i0fkdb2skmv8ii0ix8dhyckwwjmav";
 
   description = "A small scripting language, to be used in place of a shell in non-interactive scripts";
 
diff --git a/pkgs/tools/misc/fdtools/default.nix b/pkgs/tools/misc/fdtools/default.nix
index e9efd66b2f1..f55c7f6d3b3 100644
--- a/pkgs/tools/misc/fdtools/default.nix
+++ b/pkgs/tools/misc/fdtools/default.nix
@@ -2,8 +2,10 @@
 
 let
   pname = "fdtools";
+  # When you update, check whether we can drop the skalibs pin.
   version = "2020.05.04";
   sha256 = "0lnafcp4yipi0dl8gh33zjs8wlpz0mim8mwmiz9s49id0b0fmlla";
+  skalibs = skawarePackages.skalibs_2_10;
 
 in stdenv.mkDerivation {
   inherit pname version;
@@ -16,7 +18,10 @@ in stdenv.mkDerivation {
   patches = [ ./new-skalibs.patch ];
   outputs = [ "bin" "lib" "dev" "doc" "out" ];
 
-  buildInputs = [ skawarePackages.skalibs ];
+  buildInputs = [
+    # temporary, until fdtools catches up to skalibs
+    skalibs
+  ];
 
   configurePhase = ''
     cd ${pname}-${version}
@@ -27,7 +32,7 @@ in stdenv.mkDerivation {
       conf-compile/defaults/host_compile.sh \
       > conf-compile/host_compile.sh
 
-    echo "${skawarePackages.skalibs.lib}/lib/skalibs/sysdeps" \
+    echo "${skalibs.lib}/lib/skalibs/sysdeps" \
       > conf-compile/depend_skalibs_sysdeps
   '';
 
diff --git a/pkgs/tools/misc/s6-portable-utils/default.nix b/pkgs/tools/misc/s6-portable-utils/default.nix
index d6f475a408e..045a8b9ab03 100644
--- a/pkgs/tools/misc/s6-portable-utils/default.nix
+++ b/pkgs/tools/misc/s6-portable-utils/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "s6-portable-utils";
-  version = "2.2.3.2";
-  sha256 = "173nmygkp7ky3093dg4rx3ahvyl7ll86z8qj6pl3jd96xb9s49v6";
+  version = "2.2.3.3";
+  sha256 = "132jj5qk8x40kw6lrrn7jiqhvqj9d2h6g6mhl8zma1sp37bg0i84";
 
   description = "A set of tiny general Unix utilities optimized for simplicity and small size";
 
diff --git a/pkgs/tools/networking/s6-dns/default.nix b/pkgs/tools/networking/s6-dns/default.nix
index a4ebf5beef9..0a7307b6293 100644
--- a/pkgs/tools/networking/s6-dns/default.nix
+++ b/pkgs/tools/networking/s6-dns/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "s6-dns";
-  version = "2.3.5.1";
-  sha256 = "0qsgqwdr5ms337fc9f2b4aa5cr7myvbzndvgkgswnrdwszjm078c";
+  version = "2.3.5.2";
+  sha256 = "0nczzjprvp6wirzycgf5h32dlgx4r8grzkqhif27n3ii6f5g78yw";
 
   description = "A suite of DNS client programs and libraries for Unix systems";
 
diff --git a/pkgs/tools/networking/s6-networking/default.nix b/pkgs/tools/networking/s6-networking/default.nix
index e0c8eda9c74..42f7187fabe 100644
--- a/pkgs/tools/networking/s6-networking/default.nix
+++ b/pkgs/tools/networking/s6-networking/default.nix
@@ -19,8 +19,8 @@ assert sslSupportEnabled -> sslLibs ? ${sslSupport};
 
 buildPackage {
   pname = "s6-networking";
-  version = "2.4.1.1";
-  sha256 = "0m55ibx7k2wgrqbpci1n667ij0h925ajzggxalq2pj65kmwcmyx3";
+  version = "2.5.0.0";
+  sha256 = "1fn3g9gkwgmnxallhk82f5rly81pnkilj7n49g5fbfmaalsq96mh";
 
   description = "A suite of small networking utilities for Unix systems";
 
@@ -57,7 +57,6 @@ buildPackage {
   postInstall = ''
     # remove all s6 executables from build directory
     rm $(find -name "s6-*" -type f -mindepth 1 -maxdepth 1 -executable)
-    rm minidentd
     rm libs6net.* libstls.* libs6tls.* libsbearssl.*
 
     mv doc $doc/share/doc/s6-networking/html
diff --git a/pkgs/tools/system/s6-rc/default.nix b/pkgs/tools/system/s6-rc/default.nix
index 31b9c14257a..9404dd26a97 100644
--- a/pkgs/tools/system/s6-rc/default.nix
+++ b/pkgs/tools/system/s6-rc/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "s6-rc";
-  version = "0.5.2.2";
-  sha256 = "12bzc483jpd16xmhfsfrib84daj1k3kwy5s5nc18ap60apa1r39a";
+  version = "0.5.2.3";
+  sha256 = "1f92dxw1n8r8avamixi9k0gqbnkpm0r3fmwzz7jd82g6bb2vsg5z";
 
   description = "A service manager for s6-based systems";
   platforms = lib.platforms.unix;
diff --git a/pkgs/tools/system/s6/default.nix b/pkgs/tools/system/s6/default.nix
index e9d096a7ab0..dc64afa6246 100644
--- a/pkgs/tools/system/s6/default.nix
+++ b/pkgs/tools/system/s6/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "s6";
-  version = "2.10.0.3";
-  sha256 = "0mw7blp8dwr09z58m9mrxwmmvvpnjzq9klcf1vgm0hbha4qkf88x";
+  version = "2.11.0.0";
+  sha256 = "1a3lj0xfhn1w3a4ygqsxy8q4dr3n48hnwml4xzdpz3nrikhy8if5";
 
   description = "skarnet.org's small & secure supervision software suite";
 
@@ -34,6 +34,7 @@ buildPackage {
     # remove all s6 executables from build directory
     rm $(find -type f -mindepth 1 -maxdepth 1 -executable)
     rm libs6.*
+    rm ./libs6lockd.a.xyzzy
 
     mv doc $doc/share/doc/s6/html
     mv examples $doc/share/doc/s6/examples
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 9cb8e612c15..64fb6fd03f5 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -18951,6 +18951,7 @@ with pkgs;
   skaffold = callPackage ../development/tools/skaffold { };
 
   skalibs = skawarePackages.skalibs;
+  skalibs_2_10 = skawarePackages.skalibs_2_10;
 
   skawarePackages = recurseIntoAttrs rec {
     cleanPackaging = callPackage ../build-support/skaware/clean-packaging.nix { };
@@ -18960,6 +18961,7 @@ with pkgs;
     buildManPages = callPackage ../build-support/skaware/build-skaware-man-pages.nix { };
 
     skalibs = callPackage ../development/libraries/skalibs { };
+    skalibs_2_10 = callPackage ../development/libraries/skalibs/2_10.nix { };
     execline = callPackage ../tools/misc/execline { };
 
     execline-man-pages = callPackage ../data/documentation/execline-man-pages {
@@ -20736,6 +20738,7 @@ with pkgs;
   prometheus-dnsmasq-exporter = callPackage ../servers/monitoring/prometheus/dnsmasq-exporter.nix { };
   prometheus-dovecot-exporter = callPackage ../servers/monitoring/prometheus/dovecot-exporter.nix { };
   prometheus-domain-exporter = callPackage ../servers/monitoring/prometheus/domain-exporter.nix { };
+  prometheus-fastly-exporter = callPackage ../servers/monitoring/prometheus/fastly-exporter.nix { };
   prometheus-flow-exporter = callPackage ../servers/monitoring/prometheus/flow-exporter.nix { };
   prometheus-fritzbox-exporter = callPackage ../servers/monitoring/prometheus/fritzbox-exporter.nix { };
   prometheus-gitlab-ci-pipelines-exporter = callPackage ../servers/monitoring/prometheus/gitlab-ci-pipelines-exporter.nix { };
@@ -26548,6 +26551,8 @@ with pkgs;
 
   octoprint = callPackage ../applications/misc/octoprint { };
 
+  ocr-a = callPackage ../data/fonts/ocr-a {};
+
   ocrad = callPackage ../applications/graphics/ocrad { };
 
   offrss = callPackage ../applications/networking/offrss { };