Unverified Commit 73b3a145 authored by Lin Jian's avatar Lin Jian Committed by GitHub
Browse files

Merge pull request #274110 from networkException/sysctl-net.core.wmem_max

nixos/{sysctl,caddy}: improvements for net.core.wmem_max 
parents 9c33df09 968905ab
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -71,6 +71,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
  `globalRedirect` can now have redirect codes other than 301 through
  `redirectCode`.

- [](#opt-boot.kernel.sysctl._net.core.wmem_max_) changed from a string to an integer because of the addition of a custom merge option (taking the highest value defined to avoid conflicts between 2 services trying to set that value), just as [](#opt-boot.kernel.sysctl._net.core.rmem_max_) since 22.11.

- Gitea 1.21 upgrade has several breaking changes, including:
  - Custom themes and other assets that were previously stored in `custom/public/*` now belong in `custom/public/assets/*`
  - New instances of Gitea using MySQL now ignore the `[database].CHARSET` config option and always use the `utf8mb4` charset, existing instances should migrate via the `gitea doctor convert` CLI command.
+16 −8
Original line number Diff line number Diff line
@@ -21,19 +21,27 @@ in
  options = {

    boot.kernel.sysctl = mkOption {
      type = types.submodule {
        freeformType = types.attrsOf sysctlOption;
        options."net.core.rmem_max" = mkOption {
          type = types.nullOr types.ints.unsigned // {
      type = let
        highestValueType = types.ints.unsigned // {
          merge = loc: defs:
            foldl
              (a: b: if b.value == null then null else lib.max a b.value)
              0
              (filterOverrides defs);
        };
      in types.submodule {
        freeformType = types.attrsOf sysctlOption;
        options."net.core.rmem_max" = mkOption {
          type = types.nullOr highestValueType;
          default = null;
          description = lib.mdDoc "The maximum socket receive buffer size. In case of conflicting values, the highest will be used.";
        };

        options."net.core.wmem_max" = mkOption {
          type = types.nullOr highestValueType;
          default = null;
          description = lib.mdDoc "The maximum socket send buffer size. In case of conflicting values, the highest will be used.";
        };
      };
      default = {};
      example = literalExpression ''
+1 −1
Original line number Diff line number Diff line
@@ -434,7 +434,7 @@ in
      # at least up to the values hardcoded here:
      (mkIf cfg.settings.utp-enabled {
        "net.core.rmem_max" = mkDefault 4194304; # 4MB
        "net.core.wmem_max" = mkDefault "1048576"; # 1MB
        "net.core.wmem_max" = mkDefault 1048576; # 1MB
      })
      (mkIf cfg.performanceNetParameters {
        # Increase the number of available source (local) TCP and UDP ports to 49151.
+2 −1
Original line number Diff line number Diff line
@@ -342,8 +342,9 @@ in
      }
    '';

    # https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size
    # https://github.com/quic-go/quic-go/wiki/UDP-Buffer-Sizes
    boot.kernel.sysctl."net.core.rmem_max" = mkDefault 2500000;
    boot.kernel.sysctl."net.core.wmem_max" = mkDefault 2500000;

    systemd.packages = [ cfg.package ];
    systemd.services.caddy = {