diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index f36be459c4a06..776f5596fea8f 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -192,3 +192,11 @@ ce21e97a1f20dee15da85c084f9d1148d84f853b # percona: apply nixfmt 8d14fa2886fec877690c6d28cfcdba4503dbbcea + +# nixos/virtualisation: format image-related files +# Original formatting commit that was reverted +04fadac429ca7d6b92025188652376c230205730 +# Revert commit +4cec81a9959ce612b653860dcca53101a36f328a +# Final commit that does the formatting +88b285c01d84de82c0b2b052fd28eaf6709c2d26 diff --git a/lib/licenses.nix b/lib/licenses.nix index fb7b6c2e837f0..6ba244b88b82f 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -942,6 +942,11 @@ lib.mapAttrs mkLicense ({ url = "https://license.coscl.org.cn/MulanPSL2"; }; + naist-2003 = { + spdxId = "NAIST-2003"; + fullName = "Nara Institute of Science and Technology License (2003)"; + }; + nasa13 = { spdxId = "NASA-1.3"; fullName = "NASA Open Source Agreement 1.3"; diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 68a646e14cce4..86b6ac1a048b8 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -743,6 +743,11 @@ githubId = 37664775; name = "Yuto Oguchi"; }; + airrnot = { + name = "airRnot"; + github = "airRnot1106"; + githubId = 62370527; + }; airwoodix = { email = "airwoodix@posteo.me"; github = "airwoodix"; @@ -5871,7 +5876,10 @@ github = "jollheef"; githubId = 1749762; name = "Mikhail Klementev"; - keys = [ { fingerprint = "5DD7 C6F6 0630 F08E DAE7 4711 1525 585D 1B43 C62A"; } ]; + keys = [ + { fingerprint = "5AC8 C9A1 68C7 9451 1A91 2295 C990 5BA7 2B5E 02BB"; } + { fingerprint = "5DD7 C6F6 0630 F08E DAE7 4711 1525 585D 1B43 C62A"; } + ]; }; dunxen = { email = "git@dunxen.dev"; @@ -10507,6 +10515,13 @@ githubId = 168684553; name = "João Marques"; }; + joinemm = { + email = "joonas@rautiola.co"; + github = "joinemm"; + githubId = 26210439; + name = "Joonas Rautiola"; + keys = [ { fingerprint = "87EC DD30 6614 E510 5299 F0D4 090E B48A 4669 AA54"; } ]; + }; jojosch = { name = "Johannes Schleifenbaum"; email = "johannes@js-webcoding.de"; @@ -12396,6 +12411,13 @@ githubId = 169170; name = "Mathias Schreck"; }; + loc = { + matrix = "@loc:locrealloc.de"; + github = "LoCrealloc"; + githubId = 64095253; + name = "LoC"; + keys = [ { fingerprint = "DCCE F73B 209A 6024 CAE7 F926 5563 EB4A 8634 4F15"; } ]; + }; locallycompact = { email = "dan.firth@homotopic.tech"; github = "locallycompact"; @@ -14822,6 +14844,11 @@ githubId = 96225281; name = "Mustafa Çalışkan"; }; + musjj = { + name = "musjj"; + github = "musjj"; + githubId = 72612857; + }; mvisonneau = { name = "Maxime VISONNEAU"; email = "maxime@visonneau.fr"; @@ -23135,6 +23162,13 @@ githubId = 1215623; keys = [ { fingerprint = "DA03 D6C6 3F58 E796 AD26 E99B 366A 2940 479A 06FC"; } ]; }; + wilhelmines = { + email = "mail@aesz.org"; + matrix = "@wilhelmines:matrix.org"; + name = "Ronja Schwarz"; + github = "wilhelmines"; + githubId = 71409721; + }; willbush = { email = "git@willbush.dev"; matrix = "@willbush:matrix.org"; @@ -24248,12 +24282,6 @@ githubId = 71881325; name = "Stefan Bordei"; }; - zzamboni = { - email = "diego@zzamboni.org"; - github = "zzamboni"; - githubId = 32876; - name = "Diego Zamboni"; - }; zzzsy = { email = "me@zzzsy.top"; github = "zzzsyyy"; diff --git a/nixos/maintainers/scripts/ec2/amazon-image.nix b/nixos/maintainers/scripts/ec2/amazon-image.nix index 1b3724bfc170f..e08cf572f7f94 100644 --- a/nixos/maintainers/scripts/ec2/amazon-image.nix +++ b/nixos/maintainers/scripts/ec2/amazon-image.nix @@ -1,24 +1,47 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: let - inherit (lib) mkOption optionalString types versionAtLeast; + inherit (lib) + mkOption + optionalString + types + versionAtLeast + ; inherit (lib.options) literalExpression; cfg = config.amazonImage; amiBootMode = if config.ec2.efi then "uefi" else "legacy-bios"; - -in { - - imports = [ ../../../modules/virtualisation/amazon-image.nix ]; +in +{ + imports = [ + ../../../modules/virtualisation/amazon-image.nix + ../../../modules/virtualisation/disk-size-option.nix + (lib.mkRenamedOptionModuleWith { + sinceRelease = 2411; + from = [ + "amazonImage" + "sizeMB" + ]; + to = [ + "virtualisation" + "diskSize" + ]; + }) + ]; # Amazon recommends setting this to the highest possible value for a good EBS # experience, which prior to 4.15 was 255. # https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html#timeout-nvme-ebs-volumes config.boot.kernelParams = - let timeout = - if versionAtLeast config.boot.kernelPackages.kernel.version "4.15" - then "4294967295" - else "255"; - in [ "nvme_core.io_timeout=${timeout}" ]; + let + timeout = + if versionAtLeast config.boot.kernelPackages.kernel.version "4.15" then "4294967295" else "255"; + in + [ "nvme_core.io_timeout=${timeout}" ]; options.amazonImage = { name = mkOption { @@ -34,30 +57,32 @@ in { } ] ''; - default = []; + default = [ ]; description = '' This option lists files to be copied to fixed locations in the generated image. Glob patterns work. ''; }; - sizeMB = mkOption { - type = with types; either (enum [ "auto" ]) int; - default = 3072; - example = 8192; - description = "The size in MB of the image"; - }; - format = mkOption { - type = types.enum [ "raw" "qcow2" "vpc" ]; + type = types.enum [ + "raw" + "qcow2" + "vpc" + ]; default = "vpc"; description = "The image format to output"; }; }; - config.system.build.amazonImage = let - configFile = pkgs.writeText "configuration.nix" - '' + # Use a priority just below mkOptionDefault (1500) instead of lib.mkDefault + # to avoid breaking existing configs using that. + config.virtualisation.diskSize = lib.mkOverride 1490 (3 * 1024); + config.virtualisation.diskSizeAutoSupported = !config.ec2.zfs.enable; + + config.system.build.amazonImage = + let + configFile = pkgs.writeText "configuration.nix" '' { modulesPath, ... }: { imports = [ "''${modulesPath}/virtualisation/amazon-image.nix" ]; ${optionalString config.ec2.efi '' @@ -70,91 +95,102 @@ in { } ''; - zfsBuilder = import ../../../lib/make-multi-disk-zfs-image.nix { - inherit lib config configFile pkgs; - inherit (cfg) contents format name; - - includeChannel = true; - - bootSize = 1000; # 1G is the minimum EBS volume - - rootSize = cfg.sizeMB; - rootPoolProperties = { - ashift = 12; - autoexpand = "on"; + zfsBuilder = import ../../../lib/make-multi-disk-zfs-image.nix { + inherit + lib + config + configFile + pkgs + ; + inherit (cfg) contents format name; + + includeChannel = true; + + bootSize = 1000; # 1G is the minimum EBS volume + + rootSize = config.virtualisation.diskSize; + rootPoolProperties = { + ashift = 12; + autoexpand = "on"; + }; + + datasets = config.ec2.zfs.datasets; + + postVM = '' + extension=''${rootDiskImage##*.} + friendlyName=$out/${cfg.name} + rootDisk="$friendlyName.root.$extension" + bootDisk="$friendlyName.boot.$extension" + mv "$rootDiskImage" "$rootDisk" + mv "$bootDiskImage" "$bootDisk" + + mkdir -p $out/nix-support + echo "file ${cfg.format} $bootDisk" >> $out/nix-support/hydra-build-products + echo "file ${cfg.format} $rootDisk" >> $out/nix-support/hydra-build-products + + ${pkgs.jq}/bin/jq -n \ + --arg system_label ${lib.escapeShellArg config.system.nixos.label} \ + --arg system ${lib.escapeShellArg pkgs.stdenv.hostPlatform.system} \ + --arg root_logical_bytes "$(${pkgs.qemu_kvm}/bin/qemu-img info --output json "$rootDisk" | ${pkgs.jq}/bin/jq '."virtual-size"')" \ + --arg boot_logical_bytes "$(${pkgs.qemu_kvm}/bin/qemu-img info --output json "$bootDisk" | ${pkgs.jq}/bin/jq '."virtual-size"')" \ + --arg boot_mode "${amiBootMode}" \ + --arg root "$rootDisk" \ + --arg boot "$bootDisk" \ + '{} + | .label = $system_label + | .boot_mode = $boot_mode + | .system = $system + | .disks.boot.logical_bytes = $boot_logical_bytes + | .disks.boot.file = $boot + | .disks.root.logical_bytes = $root_logical_bytes + | .disks.root.file = $root + ' > $out/nix-support/image-info.json + ''; }; - datasets = config.ec2.zfs.datasets; - - postVM = '' - extension=''${rootDiskImage##*.} - friendlyName=$out/${cfg.name} - rootDisk="$friendlyName.root.$extension" - bootDisk="$friendlyName.boot.$extension" - mv "$rootDiskImage" "$rootDisk" - mv "$bootDiskImage" "$bootDisk" - - mkdir -p $out/nix-support - echo "file ${cfg.format} $bootDisk" >> $out/nix-support/hydra-build-products - echo "file ${cfg.format} $rootDisk" >> $out/nix-support/hydra-build-products - - ${pkgs.jq}/bin/jq -n \ - --arg system_label ${lib.escapeShellArg config.system.nixos.label} \ - --arg system ${lib.escapeShellArg pkgs.stdenv.hostPlatform.system} \ - --arg root_logical_bytes "$(${pkgs.qemu_kvm}/bin/qemu-img info --output json "$rootDisk" | ${pkgs.jq}/bin/jq '."virtual-size"')" \ - --arg boot_logical_bytes "$(${pkgs.qemu_kvm}/bin/qemu-img info --output json "$bootDisk" | ${pkgs.jq}/bin/jq '."virtual-size"')" \ - --arg boot_mode "${amiBootMode}" \ - --arg root "$rootDisk" \ - --arg boot "$bootDisk" \ - '{} - | .label = $system_label - | .boot_mode = $boot_mode - | .system = $system - | .disks.boot.logical_bytes = $boot_logical_bytes - | .disks.boot.file = $boot - | .disks.root.logical_bytes = $root_logical_bytes - | .disks.root.file = $root - ' > $out/nix-support/image-info.json - ''; - }; - - extBuilder = import ../../../lib/make-disk-image.nix { - inherit lib config configFile pkgs; - - inherit (cfg) contents format name; - - fsType = "ext4"; - partitionTableType = if config.ec2.efi then "efi" else "legacy+gpt"; - - diskSize = cfg.sizeMB; - - postVM = '' - extension=''${diskImage##*.} - friendlyName=$out/${cfg.name}.$extension - mv "$diskImage" "$friendlyName" - diskImage=$friendlyName - - mkdir -p $out/nix-support - echo "file ${cfg.format} $diskImage" >> $out/nix-support/hydra-build-products - - ${pkgs.jq}/bin/jq -n \ - --arg system_label ${lib.escapeShellArg config.system.nixos.label} \ - --arg system ${lib.escapeShellArg pkgs.stdenv.hostPlatform.system} \ - --arg logical_bytes "$(${pkgs.qemu_kvm}/bin/qemu-img info --output json "$diskImage" | ${pkgs.jq}/bin/jq '."virtual-size"')" \ - --arg boot_mode "${amiBootMode}" \ - --arg file "$diskImage" \ - '{} - | .label = $system_label - | .boot_mode = $boot_mode - | .system = $system - | .logical_bytes = $logical_bytes - | .file = $file - | .disks.root.logical_bytes = $logical_bytes - | .disks.root.file = $file - ' > $out/nix-support/image-info.json - ''; - }; - in if config.ec2.zfs.enable then zfsBuilder else extBuilder; + extBuilder = import ../../../lib/make-disk-image.nix { + inherit + lib + config + configFile + pkgs + ; + + inherit (cfg) contents format name; + + fsType = "ext4"; + partitionTableType = if config.ec2.efi then "efi" else "legacy+gpt"; + + inherit (config.virtualisation) diskSize; + + postVM = '' + extension=''${diskImage##*.} + friendlyName=$out/${cfg.name}.$extension + mv "$diskImage" "$friendlyName" + diskImage=$friendlyName + + mkdir -p $out/nix-support + echo "file ${cfg.format} $diskImage" >> $out/nix-support/hydra-build-products + + ${pkgs.jq}/bin/jq -n \ + --arg system_label ${lib.escapeShellArg config.system.nixos.label} \ + --arg system ${lib.escapeShellArg pkgs.stdenv.hostPlatform.system} \ + --arg logical_bytes "$(${pkgs.qemu_kvm}/bin/qemu-img info --output json "$diskImage" | ${pkgs.jq}/bin/jq '."virtual-size"')" \ + --arg boot_mode "${amiBootMode}" \ + --arg file "$diskImage" \ + '{} + | .label = $system_label + | .boot_mode = $boot_mode + | .system = $system + | .logical_bytes = $logical_bytes + | .file = $file + | .disks.root.logical_bytes = $logical_bytes + | .disks.root.file = $file + ' > $out/nix-support/image-info.json + ''; + }; + in + if config.ec2.zfs.enable then zfsBuilder else extBuilder; meta.maintainers = with lib.maintainers; [ arianvp ]; } diff --git a/nixos/maintainers/scripts/openstack/openstack-image-zfs.nix b/nixos/maintainers/scripts/openstack/openstack-image-zfs.nix index 9799f333aec06..57022bd2f784a 100644 --- a/nixos/maintainers/scripts/openstack/openstack-image-zfs.nix +++ b/nixos/maintainers/scripts/openstack/openstack-image-zfs.nix @@ -1,6 +1,11 @@ # nix-build '' -A config.system.build.openstackImage --arg configuration "{ imports = [ ./nixos/maintainers/scripts/openstack/openstack-image.nix ]; }" -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: let inherit (lib) mkOption types; copyChannel = true; @@ -10,9 +15,20 @@ in { imports = [ ../../../modules/virtualisation/openstack-config.nix + ../../../modules/virtualisation/disk-size-option.nix + (lib.mkRenamedOptionModuleWith { + sinceRelease = 2411; + from = [ + "openstackImage" + "sizeMB" + ]; + to = [ + "virtualisation" + "diskSize" + ]; + }) ] ++ (lib.optional copyChannel ../../../modules/installer/cd-dvd/channel.nix); - options.openstackImage = { name = mkOption { type = types.str; @@ -22,18 +38,15 @@ in ramMB = mkOption { type = types.int; - default = 1024; + default = (3 * 1024); description = "RAM allocation for build VM"; }; - sizeMB = mkOption { - type = types.int; - default = 8192; - description = "The size in MB of the image"; - }; - format = mkOption { - type = types.enum [ "raw" "qcow2" ]; + type = types.enum [ + "raw" + "qcow2" + ]; default = "qcow2"; description = "The image format to output"; }; @@ -54,24 +67,28 @@ in }; }; + # Use a priority just below mkOptionDefault (1500) instead of lib.mkDefault + # to avoid breaking existing configs using that. + virtualisation.diskSize = lib.mkOverride 1490 (8 * 1024); + virtualisation.diskSizeAutoSupported = false; + system.build.openstackImage = import ../../../lib/make-single-disk-zfs-image.nix { inherit lib config; inherit (cfg) contents format name; pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package - configFile = pkgs.writeText "configuration.nix" - '' - { modulesPath, ... }: { - imports = [ "''${modulesPath}/virtualisation/openstack-config.nix" ]; - openstack.zfs.enable = true; - } - ''; + configFile = pkgs.writeText "configuration.nix" '' + { modulesPath, ... }: { + imports = [ "''${modulesPath}/virtualisation/openstack-config.nix" ]; + openstack.zfs.enable = true; + } + ''; includeChannel = copyChannel; bootSize = 1000; memSize = cfg.ramMB; - rootSize = cfg.sizeMB; + rootSize = config.virtualisation.diskSize; rootPoolProperties = { ashift = 12; autoexpand = "on"; diff --git a/nixos/modules/security/wrappers/default.nix b/nixos/modules/security/wrappers/default.nix index b95e3e1c7ce26..3bfe921673ed0 100644 --- a/nixos/modules/security/wrappers/default.nix +++ b/nixos/modules/security/wrappers/default.nix @@ -165,6 +165,10 @@ in ###### interface options = { + security.enableWrappers = lib.mkEnableOption "SUID/SGID wrappers" // { + default = true; + }; + security.wrappers = lib.mkOption { type = lib.types.attrsOf wrapperType; default = {}; @@ -227,7 +231,7 @@ in }; ###### implementation - config = { + config = lib.mkIf config.security.enableWrappers { assertions = lib.mapAttrsToList (name: opts: diff --git a/nixos/modules/services/misc/anki-sync-server.md b/nixos/modules/services/misc/anki-sync-server.md index 4796abf25c430..1210cad6d0af4 100644 --- a/nixos/modules/services/misc/anki-sync-server.md +++ b/nixos/modules/services/misc/anki-sync-server.md @@ -42,6 +42,15 @@ Here, `passwordFile` is the path to a file containing just the password in plaintext. Make sure to set permissions to make this file unreadable to any user besides root. +By default, synced data are stored in */var/lib/anki-sync-server/*ankiuser**. +You can change the directory by using `services.anki-sync-server.baseDirectory` + +```nix +{ + services.anki-sync-server.baseDirectory = "/home/anki/data"; +} +``` + By default, the server listen address {option}`services.anki-sync-server.host` is set to localhost, listening on port {option}`services.anki-sync-server.port`, and does not open the firewall. This diff --git a/nixos/modules/services/misc/anki-sync-server.nix b/nixos/modules/services/misc/anki-sync-server.nix index a653820094176..c77afe8c38199 100644 --- a/nixos/modules/services/misc/anki-sync-server.nix +++ b/nixos/modules/services/misc/anki-sync-server.nix @@ -59,6 +59,13 @@ in { description = "Port number anki-sync-server listens to."; }; + baseDirectory = mkOption { + type = types.str; + default = "%S/%N"; + description = "Base directory where user(s) synchronized data will be stored."; + }; + + openFirewall = mkOption { default = false; type = types.bool; @@ -114,7 +121,7 @@ in { wantedBy = ["multi-user.target"]; path = [cfg.package]; environment = { - SYNC_BASE = "%S/%N"; + SYNC_BASE = cfg.baseDirectory; SYNC_HOST = specEscape cfg.address; SYNC_PORT = toString cfg.port; }; diff --git a/nixos/modules/services/misc/bazarr.nix b/nixos/modules/services/misc/bazarr.nix index 35929beac402a..30924da936b8b 100644 --- a/nixos/modules/services/misc/bazarr.nix +++ b/nixos/modules/services/misc/bazarr.nix @@ -54,6 +54,8 @@ in --no-update True ''; Restart = "on-failure"; + KillSignal = "SIGINT"; + SuccessExitStatus = "0 156"; }; }; diff --git a/nixos/modules/services/networking/xl2tpd.nix b/nixos/modules/services/networking/xl2tpd.nix index 8d192be6c2fa8..4ecd3c54e4121 100644 --- a/nixos/modules/services/networking/xl2tpd.nix +++ b/nixos/modules/services/networking/xl2tpd.nix @@ -104,31 +104,18 @@ with lib; wantedBy = [ "multi-user.target" ]; preStart = '' - mkdir -p -m 700 /etc/xl2tpd + install -m 700 -d /etc/xl2tpd/ppp - pushd /etc/xl2tpd > /dev/null - - mkdir -p -m 700 ppp - - [ -f ppp/chap-secrets ] || cat > ppp/chap-secrets << EOF + [ -f /etc/xl2tpd/ppp/chap-secrets ] || install -m 600 -o root -g root /dev/stdin /etc/xl2tpd/ppp/chap-secrets < l2tp-secrets - chown root:root l2tp-secrets - chmod 600 l2tp-secrets - - popd > /dev/null + [ -f /etc/xl2tpd/l2tp-secrets ] || install -m 600 -o root -g root <(echo -n "* * "; ${pkgs.apg}/bin/apg -n 1 -m 32 -x 32 -a 1 -M LCN) /etc/xl2tpd/l2tp-secrets - mkdir -p /run/xl2tpd - chown root:root /run/xl2tpd - chmod 700 /run/xl2tpd + install -m 701 -o root -g root -d /run/xl2tpd ''; serviceConfig = { diff --git a/nixos/modules/virtualisation/azure-image.nix b/nixos/modules/virtualisation/azure-image.nix index ecb57483cce9b..76d8a3bb365b2 100644 --- a/nixos/modules/virtualisation/azure-image.nix +++ b/nixos/modules/virtualisation/azure-image.nix @@ -1,22 +1,33 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: with lib; let cfg = config.virtualisation.azureImage; in { - imports = [ ./azure-common.nix ]; + imports = [ + ./azure-common.nix + ./disk-size-option.nix + (lib.mkRenamedOptionModuleWith { + sinceRelease = 2411; + from = [ + "virtualisation" + "azureImage" + "diskSize" + ]; + to = [ + "virtualisation" + "diskSize" + ]; + }) + ]; options.virtualisation.azureImage = { - diskSize = mkOption { - type = with types; either (enum [ "auto" ]) int; - default = "auto"; - example = 2048; - description = '' - Size of disk image. Unit is MB. - ''; - }; - bootSize = mkOption { type = types.int; default = 256; @@ -35,7 +46,12 @@ in }; vmGeneration = mkOption { - type = with types; enum [ "v1" "v2" ]; + type = + with types; + enum [ + "v1" + "v2" + ]; default = "v1"; description = '' VM Generation to use. @@ -57,7 +73,8 @@ in bootSize = "${toString cfg.bootSize}M"; partitionTableType = if cfg.vmGeneration == "v2" then "efi" else "legacy"; - inherit (cfg) diskSize contents; + inherit (cfg) contents; + inherit (config.virtualisation) diskSize; inherit config lib pkgs; }; }; diff --git a/nixos/modules/virtualisation/digital-ocean-image.nix b/nixos/modules/virtualisation/digital-ocean-image.nix index 53791e911406f..b6ef01516e343 100644 --- a/nixos/modules/virtualisation/digital-ocean-image.nix +++ b/nixos/modules/virtualisation/digital-ocean-image.nix @@ -1,4 +1,9 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: with lib; let @@ -6,18 +11,24 @@ let in { - imports = [ ./digital-ocean-config.nix ]; + imports = [ + ./digital-ocean-config.nix + ./disk-size-option.nix + (lib.mkRenamedOptionModuleWith { + sinceRelease = 2411; + from = [ + "virtualisation" + "digitalOceanImage" + "diskSize" + ]; + to = [ + "virtualisation" + "diskSize" + ]; + }) + ]; options = { - virtualisation.digitalOceanImage.diskSize = mkOption { - type = with types; either (enum [ "auto" ]) int; - default = "auto"; - example = 4096; - description = '' - Size of disk image. Unit is MB. - ''; - }; - virtualisation.digitalOceanImage.configFile = mkOption { type = with types; nullOr path; default = null; @@ -31,7 +42,10 @@ in }; virtualisation.digitalOceanImage.compressionMethod = mkOption { - type = types.enum [ "gzip" "bzip2" ]; + type = types.enum [ + "gzip" + "bzip2" + ]; default = "gzip"; example = "bzip2"; description = '' @@ -44,27 +58,35 @@ in #### implementation config = { - system.build.digitalOceanImage = import ../../lib/make-disk-image.nix { name = "digital-ocean-image"; format = "qcow2"; - postVM = let - compress = { - "gzip" = "${pkgs.gzip}/bin/gzip"; - "bzip2" = "${pkgs.bzip2}/bin/bzip2"; - }.${cfg.compressionMethod}; - in '' - ${compress} $diskImage - ''; - configFile = if cfg.configFile == null - then config.virtualisation.digitalOcean.defaultConfigFile - else cfg.configFile; - inherit (cfg) diskSize; + postVM = + let + compress = + { + "gzip" = "${pkgs.gzip}/bin/gzip"; + "bzip2" = "${pkgs.bzip2}/bin/bzip2"; + } + .${cfg.compressionMethod}; + in + '' + ${compress} $diskImage + ''; + configFile = + if cfg.configFile == null then + config.virtualisation.digitalOcean.defaultConfigFile + else + cfg.configFile; + inherit (config.virtualisation) diskSize; inherit config lib pkgs; }; }; - meta.maintainers = with maintainers; [ arianvp eamsden ]; + meta.maintainers = with maintainers; [ + arianvp + eamsden + ]; } diff --git a/nixos/modules/virtualisation/disk-size-option.nix b/nixos/modules/virtualisation/disk-size-option.nix new file mode 100644 index 0000000000000..487c3adfe2b7b --- /dev/null +++ b/nixos/modules/virtualisation/disk-size-option.nix @@ -0,0 +1,38 @@ +{ lib, config, ... }: +let + t = lib.types; +in +{ + options = { + virtualisation.diskSizeAutoSupported = lib.mkOption { + type = t.bool; + default = true; + description = '' + Whether the current image builder or vm runner supports `virtualisation.diskSize = "auto".` + ''; + internal = true; + }; + + virtualisation.diskSize = lib.mkOption { + type = t.either (t.enum [ "auto" ]) t.ints.positive; + default = if config.virtualisation.diskSizeAutoSupported then "auto" else 1024; + defaultText = "\"auto\" if diskSizeAutoSupported, else 1024"; + description = '' + The disk size in megabytes of the virtual machine. + ''; + }; + }; + + config = + let + inherit (config.virtualisation) diskSize diskSizeAutoSupported; + in + { + assertions = [ + { + assertion = diskSize != "auto" || diskSizeAutoSupported; + message = "Setting virtualisation.diskSize to `auto` is not supported by the current image build or vm runner; use an explicit size."; + } + ]; + }; +} diff --git a/nixos/modules/virtualisation/google-compute-image.nix b/nixos/modules/virtualisation/google-compute-image.nix index 8e7b31b439bfb..c2529bb3db3f7 100644 --- a/nixos/modules/virtualisation/google-compute-image.nix +++ b/nixos/modules/virtualisation/google-compute-image.nix @@ -1,4 +1,9 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: with lib; let @@ -14,18 +19,24 @@ let in { - imports = [ ./google-compute-config.nix ]; + imports = [ + ./google-compute-config.nix + ./disk-size-option.nix + (lib.mkRenamedOptionModuleWith { + sinceRelease = 2411; + from = [ + "virtualisation" + "googleComputeImage" + "diskSize" + ]; + to = [ + "virtualisation" + "diskSize" + ]; + }) + ]; options = { - virtualisation.googleComputeImage.diskSize = mkOption { - type = with types; either (enum [ "auto" ]) int; - default = "auto"; - example = 1536; - description = '' - Size of disk image. Unit is MB. - ''; - }; - virtualisation.googleComputeImage.configFile = mkOption { type = with types; nullOr str; default = null; @@ -64,7 +75,13 @@ in system.build.googleComputeImage = import ../../lib/make-disk-image.nix { name = "google-compute-image"; postVM = '' - PATH=$PATH:${with pkgs; lib.makeBinPath [ gnutar gzip ]} + PATH=$PATH:${ + with pkgs; + lib.makeBinPath [ + gnutar + gzip + ] + } pushd $out mv $diskImage disk.raw tar -Sc disk.raw | gzip -${toString cfg.compressionLevel} > \ @@ -75,7 +92,7 @@ in format = "raw"; configFile = if cfg.configFile == null then defaultConfigFile else cfg.configFile; partitionTableType = if cfg.efi then "efi" else "legacy"; - inherit (cfg) diskSize; + inherit (config.virtualisation) diskSize; inherit config lib pkgs; }; diff --git a/nixos/modules/virtualisation/hyperv-image.nix b/nixos/modules/virtualisation/hyperv-image.nix index eb1bbe9f3a580..ea0603fa6ae50 100644 --- a/nixos/modules/virtualisation/hyperv-image.nix +++ b/nixos/modules/virtualisation/hyperv-image.nix @@ -1,21 +1,34 @@ -{ config, pkgs, lib, ... }: +{ + config, + pkgs, + lib, + ... +}: with lib; let cfg = config.hyperv; +in +{ + + imports = [ + ./disk-size-option.nix + (lib.mkRenamedOptionModuleWith { + sinceRelease = 2411; + from = [ + "hyperv" + "baseImageSize" + ]; + to = [ + "virtualisation" + "diskSize" + ]; + }) + ]; -in { options = { hyperv = { - baseImageSize = mkOption { - type = with types; either (enum [ "auto" ]) int; - default = "auto"; - example = 2048; - description = '' - The size of the hyper-v base image in MiB. - ''; - }; vmDerivationName = mkOption { type = types.str; default = "nixos-hyperv-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}"; @@ -34,6 +47,10 @@ in { }; config = { + # Use a priority just below mkOptionDefault (1500) instead of lib.mkDefault + # to avoid breaking existing configs using that. + virtualisation.diskSize = lib.mkOverride 1490 (4 * 1024); + system.build.hypervImage = import ../../lib/make-disk-image.nix { name = cfg.vmDerivationName; postVM = '' @@ -41,7 +58,7 @@ in { rm $diskImage ''; format = "raw"; - diskSize = cfg.baseImageSize; + inherit (config.virtualisation) diskSize; partitionTableType = "efi"; inherit config lib pkgs; }; diff --git a/nixos/modules/virtualisation/linode-image.nix b/nixos/modules/virtualisation/linode-image.nix index 51f793ac011df..ff61c5f5d1db5 100644 --- a/nixos/modules/virtualisation/linode-image.nix +++ b/nixos/modules/virtualisation/linode-image.nix @@ -1,4 +1,9 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: with lib; let @@ -12,17 +17,24 @@ let ''; in { - imports = [ ./linode-config.nix ]; + imports = [ + ./linode-config.nix + ./disk-size-option.nix + (lib.mkRenamedOptionModuleWith { + sinceRelease = 2411; + from = [ + "virtualisation" + "linodeImage" + "diskSize" + ]; + to = [ + "virtualisation" + "diskSize" + ]; + }) + ]; options = { - virtualisation.linodeImage.diskSize = mkOption { - type = with types; either (enum (singleton "auto")) ints.positive; - default = "auto"; - example = 1536; - description = '' - Size of disk image in MB. - ''; - }; virtualisation.linodeImage.configFile = mkOption { type = with types; nullOr str; @@ -57,7 +69,7 @@ in format = "raw"; partitionTableType = "none"; configFile = if cfg.configFile == null then defaultConfigFile else cfg.configFile; - inherit (cfg) diskSize; + inherit (config.virtualisation) diskSize; inherit config lib pkgs; }; }; diff --git a/nixos/modules/virtualisation/oci-image.nix b/nixos/modules/virtualisation/oci-image.nix index 1e2b90bfd46e2..fe286853de81d 100644 --- a/nixos/modules/virtualisation/oci-image.nix +++ b/nixos/modules/virtualisation/oci-image.nix @@ -1,4 +1,9 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: let cfg = config.oci; @@ -7,9 +12,14 @@ in imports = [ ./oci-common.nix ]; config = { + # Use a priority just below mkOptionDefault (1500) instead of lib.mkDefault + # to avoid breaking existing configs using that. + virtualisation.diskSize = lib.mkOverride 1490 (8 * 1024); + virtualisation.diskSizeAutoSupported = false; + system.build.OCIImage = import ../../lib/make-disk-image.nix { inherit config lib pkgs; - inherit (cfg) diskSize; + inherit (config.virtualisation) diskSize; name = "oci-image"; configFile = ./oci-config-user.nix; format = "qcow2"; @@ -25,7 +35,10 @@ in after = [ "network-online.target" ]; wants = [ "network-online.target" ]; - path = [ pkgs.coreutils pkgs.curl ]; + path = [ + pkgs.coreutils + pkgs.curl + ]; script = '' mkdir -m 0700 -p /root/.ssh if [ -f /root/.ssh/authorized_keys ]; then diff --git a/nixos/modules/virtualisation/oci-options.nix b/nixos/modules/virtualisation/oci-options.nix index 76f3475a42817..b8d66c0290b3c 100644 --- a/nixos/modules/virtualisation/oci-options.nix +++ b/nixos/modules/virtualisation/oci-options.nix @@ -1,5 +1,23 @@ -{ config, lib, pkgs, ... }: { + lib, + ... +}: +{ + imports = [ + ./disk-size-option.nix + (lib.mkRenamedOptionModuleWith { + sinceRelease = 2411; + from = [ + "oci" + "diskSize" + ]; + to = [ + "virtualisation" + "diskSize" + ]; + }) + ]; + options = { oci = { efi = lib.mkOption { @@ -9,12 +27,6 @@ Whether the OCI instance is using EFI. ''; }; - diskSize = lib.mkOption { - type = lib.types.int; - default = 8192; - description = "Size of the disk image created in MB."; - example = "diskSize = 12 * 1024; # 12GiB"; - }; }; }; } diff --git a/nixos/modules/virtualisation/proxmox-image.nix b/nixos/modules/virtualisation/proxmox-image.nix index d390c78432ae7..9bbe7a596f07e 100644 --- a/nixos/modules/virtualisation/proxmox-image.nix +++ b/nixos/modules/virtualisation/proxmox-image.nix @@ -1,8 +1,28 @@ -{ config, pkgs, lib, ... }: +{ + config, + pkgs, + lib, + ... +}: with lib; - { + imports = [ + ./disk-size-option.nix + (lib.mkRenamedOptionModuleWith { + sinceRelease = 2411; + from = [ + "proxmox" + "qemuConf" + "diskSize" + ]; + to = [ + "virtualisation" + "diskSize" + ]; + }) + ]; + options.proxmox = { qemuConf = { # essential configs @@ -54,7 +74,10 @@ with lib; ''; }; bios = mkOption { - type = types.enum [ "seabios" "ovmf" ]; + type = types.enum [ + "seabios" + "ovmf" + ]; default = "seabios"; description = '' Select BIOS implementation (seabios = Legacy BIOS, ovmf = UEFI). @@ -87,16 +110,6 @@ with lib; either "efi" or "hybrid". ''; }; - diskSize = mkOption { - type = types.str; - default = "auto"; - example = "20480"; - description = '' - The size of the disk, in megabytes. - if "auto" size is calculated based on the contents copied to it and - additionalSpace is taken into account. - ''; - }; net0 = mkOption { type = types.commas; default = "virtio=00:00:00:00:00:00,bridge=vmbr0,firewall=1"; @@ -124,8 +137,13 @@ with lib; }; }; qemuExtraConf = mkOption { - type = with types; attrsOf (oneOf [ str int ]); - default = {}; + type = + with types; + attrsOf (oneOf [ + str + int + ]); + default = { }; example = literalExpression '' { cpu = "host"; @@ -137,7 +155,12 @@ with lib; ''; }; partitionTableType = mkOption { - type = types.enum [ "efi" "hybrid" "legacy" "legacy+gpt" ]; + type = types.enum [ + "efi" + "hybrid" + "legacy" + "legacy+gpt" + ]; description = '' Partition table type to use. See make-disk-image.nix partitionTableType for details. Defaults to 'legacy' for 'proxmox.qemuConf.bios="seabios"' (default), other bios values defaults to 'efi'. @@ -185,142 +208,163 @@ with lib; }; }; - config = let - cfg = config.proxmox; - cfgLine = name: value: '' - ${name}: ${builtins.toString value} - ''; - virtio0Storage = builtins.head (builtins.split ":" cfg.qemuConf.virtio0); - cfgFile = fileName: properties: pkgs.writeTextDir fileName '' - # generated by NixOS - ${lib.concatStrings (lib.mapAttrsToList cfgLine properties)} - #qmdump#map:virtio0:drive-virtio0:${virtio0Storage}:raw: - ''; - inherit (cfg) partitionTableType; - supportEfi = partitionTableType == "efi" || partitionTableType == "hybrid"; - supportBios = partitionTableType == "legacy" || partitionTableType == "hybrid" || partitionTableType == "legacy+gpt"; - hasBootPartition = partitionTableType == "efi" || partitionTableType == "hybrid"; - hasNoFsPartition = partitionTableType == "hybrid" || partitionTableType == "legacy+gpt"; - in { - assertions = [ - { - assertion = config.boot.loader.systemd-boot.enable -> config.proxmox.qemuConf.bios == "ovmf"; - message = "systemd-boot requires 'ovmf' bios"; - } - { - assertion = partitionTableType == "efi" -> config.proxmox.qemuConf.bios == "ovmf"; - message = "'efi' disk partitioning requires 'ovmf' bios"; - } - { - assertion = partitionTableType == "legacy" -> config.proxmox.qemuConf.bios == "seabios"; - message = "'legacy' disk partitioning requires 'seabios' bios"; - } - { - assertion = partitionTableType == "legacy+gpt" -> config.proxmox.qemuConf.bios == "seabios"; - message = "'legacy+gpt' disk partitioning requires 'seabios' bios"; - } - ]; - system.build.VMA = import ../../lib/make-disk-image.nix { - name = "proxmox-${cfg.filenameSuffix}"; + config = + let + cfg = config.proxmox; + cfgLine = name: value: '' + ${name}: ${builtins.toString value} + ''; + virtio0Storage = builtins.head (builtins.split ":" cfg.qemuConf.virtio0); + cfgFile = + fileName: properties: + pkgs.writeTextDir fileName '' + # generated by NixOS + ${lib.concatStrings (lib.mapAttrsToList cfgLine properties)} + #qmdump#map:virtio0:drive-virtio0:${virtio0Storage}:raw: + ''; inherit (cfg) partitionTableType; - postVM = let - # Build qemu with PVE's patch that adds support for the VMA format - vma = (pkgs.qemu_kvm.override { - alsaSupport = false; - pulseSupport = false; - sdlSupport = false; - jackSupport = false; - gtkSupport = false; - vncSupport = false; - smartcardSupport = false; - spiceSupport = false; - ncursesSupport = false; - libiscsiSupport = false; - tpmSupport = false; - numaSupport = false; - seccompSupport = false; - guestAgentSupport = false; - }).overrideAttrs ( super: rec { - # Check https://github.com/proxmox/pve-qemu/tree/master for the version - # of qemu and patch to use - version = "9.0.0"; - src = pkgs.fetchurl { - url = "https://download.qemu.org/qemu-${version}.tar.xz"; - hash = "sha256-MnCKxmww2MiSYz6paMdxwcdtWX1w3erSGg0izPOG2mk="; - }; - patches = [ - # Proxmox' VMA tool is published as a particular patch upon QEMU - "${pkgs.fetchFromGitHub { - owner = "proxmox"; - repo = "pve-qemu"; - rev = "14afbdd55f04d250bd679ca1ad55d3f47cd9d4c8"; - hash = "sha256-lSJQA5SHIHfxJvMLIID2drv2H43crTPMNIlIT37w9Nc="; - }}/debian/patches/pve/0027-PVE-Backup-add-vma-backup-format-code.patch" - ]; - - buildInputs = super.buildInputs ++ [ pkgs.libuuid ]; - nativeBuildInputs = super.nativeBuildInputs ++ [ pkgs.perl ]; + supportEfi = partitionTableType == "efi" || partitionTableType == "hybrid"; + supportBios = + partitionTableType == "legacy" + || partitionTableType == "hybrid" + || partitionTableType == "legacy+gpt"; + hasBootPartition = partitionTableType == "efi" || partitionTableType == "hybrid"; + hasNoFsPartition = partitionTableType == "hybrid" || partitionTableType == "legacy+gpt"; + in + { + assertions = [ + { + assertion = config.boot.loader.systemd-boot.enable -> config.proxmox.qemuConf.bios == "ovmf"; + message = "systemd-boot requires 'ovmf' bios"; + } + { + assertion = partitionTableType == "efi" -> config.proxmox.qemuConf.bios == "ovmf"; + message = "'efi' disk partitioning requires 'ovmf' bios"; + } + { + assertion = partitionTableType == "legacy" -> config.proxmox.qemuConf.bios == "seabios"; + message = "'legacy' disk partitioning requires 'seabios' bios"; + } + { + assertion = partitionTableType == "legacy+gpt" -> config.proxmox.qemuConf.bios == "seabios"; + message = "'legacy+gpt' disk partitioning requires 'seabios' bios"; + } + ]; + system.build.VMA = import ../../lib/make-disk-image.nix { + name = "proxmox-${cfg.filenameSuffix}"; + inherit (cfg) partitionTableType; + postVM = + let + # Build qemu with PVE's patch that adds support for the VMA format + vma = + (pkgs.qemu_kvm.override { + alsaSupport = false; + pulseSupport = false; + sdlSupport = false; + jackSupport = false; + gtkSupport = false; + vncSupport = false; + smartcardSupport = false; + spiceSupport = false; + ncursesSupport = false; + libiscsiSupport = false; + tpmSupport = false; + numaSupport = false; + seccompSupport = false; + guestAgentSupport = false; + }).overrideAttrs + (super: rec { + # Check https://github.com/proxmox/pve-qemu/tree/master for the version + # of qemu and patch to use + version = "9.0.0"; + src = pkgs.fetchurl { + url = "https://download.qemu.org/qemu-${version}.tar.xz"; + hash = "sha256-MnCKxmww2MiSYz6paMdxwcdtWX1w3erSGg0izPOG2mk="; + }; + patches = [ + # Proxmox' VMA tool is published as a particular patch upon QEMU + "${ + pkgs.fetchFromGitHub { + owner = "proxmox"; + repo = "pve-qemu"; + rev = "14afbdd55f04d250bd679ca1ad55d3f47cd9d4c8"; + hash = "sha256-lSJQA5SHIHfxJvMLIID2drv2H43crTPMNIlIT37w9Nc="; + } + }/debian/patches/pve/0027-PVE-Backup-add-vma-backup-format-code.patch" + ]; - }); - in - '' - ${vma}/bin/vma create "vzdump-qemu-${cfg.filenameSuffix}.vma" \ - -c ${cfgFile "qemu-server.conf" (cfg.qemuConf // cfg.qemuExtraConf)}/qemu-server.conf drive-virtio0=$diskImage - rm $diskImage - ${pkgs.zstd}/bin/zstd "vzdump-qemu-${cfg.filenameSuffix}.vma" - mv "vzdump-qemu-${cfg.filenameSuffix}.vma.zst" $out/ + buildInputs = super.buildInputs ++ [ pkgs.libuuid ]; + nativeBuildInputs = super.nativeBuildInputs ++ [ pkgs.perl ]; - mkdir -p $out/nix-support - echo "file vma $out/vzdump-qemu-${cfg.filenameSuffix}.vma.zst" > $out/nix-support/hydra-build-products - ''; - inherit (cfg.qemuConf) additionalSpace diskSize bootSize; - format = "raw"; - inherit config lib pkgs; - }; + }); + in + '' + ${vma}/bin/vma create "vzdump-qemu-${cfg.filenameSuffix}.vma" \ + -c ${ + cfgFile "qemu-server.conf" (cfg.qemuConf // cfg.qemuExtraConf) + }/qemu-server.conf drive-virtio0=$diskImage + rm $diskImage + ${pkgs.zstd}/bin/zstd "vzdump-qemu-${cfg.filenameSuffix}.vma" + mv "vzdump-qemu-${cfg.filenameSuffix}.vma.zst" $out/ - boot = { - growPartition = true; - kernelParams = [ "console=ttyS0" ]; - loader.grub = { - device = lib.mkDefault (if (hasNoFsPartition || supportBios) then - # Even if there is a separate no-fs partition ("/dev/disk/by-partlabel/no-fs" i.e. "/dev/vda2"), - # which will be used the bootloader, do not set it as loader.grub.device. - # GRUB installation fails, unless the whole disk is selected. - "/dev/vda" - else - "nodev"); - efiSupport = lib.mkDefault supportEfi; - efiInstallAsRemovable = lib.mkDefault supportEfi; + mkdir -p $out/nix-support + echo "file vma $out/vzdump-qemu-${cfg.filenameSuffix}.vma.zst" > $out/nix-support/hydra-build-products + ''; + inherit (cfg.qemuConf) additionalSpace bootSize; + inherit (config.virtualisation) diskSize; + format = "raw"; + inherit config lib pkgs; }; - loader.timeout = 0; - initrd.availableKernelModules = [ "uas" "virtio_blk" "virtio_pci" ]; - }; + boot = { + growPartition = true; + kernelParams = [ "console=ttyS0" ]; + loader.grub = { + device = lib.mkDefault ( + if (hasNoFsPartition || supportBios) then + # Even if there is a separate no-fs partition ("/dev/disk/by-partlabel/no-fs" i.e. "/dev/vda2"), + # which will be used the bootloader, do not set it as loader.grub.device. + # GRUB installation fails, unless the whole disk is selected. + "/dev/vda" + else + "nodev" + ); + efiSupport = lib.mkDefault supportEfi; + efiInstallAsRemovable = lib.mkDefault supportEfi; + }; - fileSystems."/" = { - device = "/dev/disk/by-label/nixos"; - autoResize = true; - fsType = "ext4"; - }; - fileSystems."/boot" = lib.mkIf hasBootPartition { - device = "/dev/disk/by-label/ESP"; - fsType = "vfat"; - }; + loader.timeout = 0; + initrd.availableKernelModules = [ + "uas" + "virtio_blk" + "virtio_pci" + ]; + }; - networking = mkIf cfg.cloudInit.enable { - hostName = mkForce ""; - useDHCP = false; - }; + fileSystems."/" = { + device = "/dev/disk/by-label/nixos"; + autoResize = true; + fsType = "ext4"; + }; + fileSystems."/boot" = lib.mkIf hasBootPartition { + device = "/dev/disk/by-label/ESP"; + fsType = "vfat"; + }; - services = { - cloud-init = mkIf cfg.cloudInit.enable { - enable = true; - network.enable = true; + networking = mkIf cfg.cloudInit.enable { + hostName = mkForce ""; + useDHCP = false; }; - sshd.enable = mkDefault true; - qemuGuest.enable = true; - }; - proxmox.qemuExtraConf.${cfg.cloudInit.device} = "${cfg.cloudInit.defaultStorage}:vm-9999-cloudinit,media=cdrom"; - }; + services = { + cloud-init = mkIf cfg.cloudInit.enable { + enable = true; + network.enable = true; + }; + sshd.enable = mkDefault true; + qemuGuest.enable = true; + }; + + proxmox.qemuExtraConf.${cfg.cloudInit.device} = "${cfg.cloudInit.defaultStorage}:vm-9999-cloudinit,media=cdrom"; + }; } diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix index c6084e5590969..af2f13b003a4f 100644 --- a/nixos/modules/virtualisation/qemu-vm.nix +++ b/nixos/modules/virtualisation/qemu-vm.nix @@ -4,7 +4,13 @@ # `config'. By default, the Nix store is shared read-only with the # host, which makes (re)building VMs very efficient. -{ config, lib, pkgs, options, ... }: +{ + config, + lib, + pkgs, + options, + ... +}: with lib; @@ -22,236 +28,263 @@ let consoles = lib.concatMapStringsSep " " (c: "console=${c}") cfg.qemu.consoles; - driveOpts = { ... }: { + driveOpts = + { ... }: + { - options = { + options = { - file = mkOption { - type = types.str; - description = "The file image used for this drive."; - }; + file = mkOption { + type = types.str; + description = "The file image used for this drive."; + }; - driveExtraOpts = mkOption { - type = types.attrsOf types.str; - default = {}; - description = "Extra options passed to drive flag."; - }; + driveExtraOpts = mkOption { + type = types.attrsOf types.str; + default = { }; + description = "Extra options passed to drive flag."; + }; - deviceExtraOpts = mkOption { - type = types.attrsOf types.str; - default = {}; - description = "Extra options passed to device flag."; - }; + deviceExtraOpts = mkOption { + type = types.attrsOf types.str; + default = { }; + description = "Extra options passed to device flag."; + }; + + name = mkOption { + type = types.nullOr types.str; + default = null; + description = "A name for the drive. Must be unique in the drives list. Not passed to qemu."; + }; - name = mkOption { - type = types.nullOr types.str; - default = null; - description = "A name for the drive. Must be unique in the drives list. Not passed to qemu."; }; }; - }; - - selectPartitionTableLayout = { useEFIBoot, useDefaultFilesystems }: - if useDefaultFilesystems then - if useEFIBoot then "efi" else "legacy" - else "none"; - - driveCmdline = idx: { file, driveExtraOpts, deviceExtraOpts, ... }: + selectPartitionTableLayout = + { useEFIBoot, useDefaultFilesystems }: + if useDefaultFilesystems then if useEFIBoot then "efi" else "legacy" else "none"; + + driveCmdline = + idx: + { + file, + driveExtraOpts, + deviceExtraOpts, + ... + }: let drvId = "drive${toString idx}"; - mkKeyValue = generators.mkKeyValueDefault {} "="; + mkKeyValue = generators.mkKeyValueDefault { } "="; mkOpts = opts: concatStringsSep "," (mapAttrsToList mkKeyValue opts); - driveOpts = mkOpts (driveExtraOpts // { - index = idx; - id = drvId; - "if" = "none"; - inherit file; - }); - deviceOpts = mkOpts (deviceExtraOpts // { - drive = drvId; - }); + driveOpts = mkOpts ( + driveExtraOpts + // { + index = idx; + id = drvId; + "if" = "none"; + inherit file; + } + ); + deviceOpts = mkOpts ( + deviceExtraOpts + // { + drive = drvId; + } + ); device = if cfg.qemu.diskInterface == "scsi" then "-device lsi53c895a -device scsi-hd,${deviceOpts}" else "-device virtio-blk-pci,${deviceOpts}"; in - "-drive ${driveOpts} ${device}"; + "-drive ${driveOpts} ${device}"; drivesCmdLine = drives: concatStringsSep "\\\n " (imap1 driveCmdline drives); # Shell script to start the VM. - startVM = - '' - #! ${hostPkgs.runtimeShell} - - export PATH=${makeBinPath [ hostPkgs.coreutils ]}''${PATH:+:}$PATH - - set -e - - # Create an empty ext4 filesystem image. A filesystem image does not - # contain a partition table but just a filesystem. - createEmptyFilesystemImage() { - local name=$1 - local size=$2 - local temp=$(mktemp) - ${qemu}/bin/qemu-img create -f raw "$temp" "$size" - ${hostPkgs.e2fsprogs}/bin/mkfs.ext4 -L ${rootFilesystemLabel} "$temp" - ${qemu}/bin/qemu-img convert -f raw -O qcow2 "$temp" "$name" - rm "$temp" - } + startVM = '' + #! ${hostPkgs.runtimeShell} + + export PATH=${makeBinPath [ hostPkgs.coreutils ]}''${PATH:+:}$PATH + + set -e + + # Create an empty ext4 filesystem image. A filesystem image does not + # contain a partition table but just a filesystem. + createEmptyFilesystemImage() { + local name=$1 + local size=$2 + local temp=$(mktemp) + ${qemu}/bin/qemu-img create -f raw "$temp" "$size" + ${hostPkgs.e2fsprogs}/bin/mkfs.ext4 -L ${rootFilesystemLabel} "$temp" + ${qemu}/bin/qemu-img convert -f raw -O qcow2 "$temp" "$name" + rm "$temp" + } - NIX_DISK_IMAGE=$(readlink -f "''${NIX_DISK_IMAGE:-${toString config.virtualisation.diskImage}}") || test -z "$NIX_DISK_IMAGE" - - if test -n "$NIX_DISK_IMAGE" && ! test -e "$NIX_DISK_IMAGE"; then - echo "Disk image do not exist, creating the virtualisation disk image..." - - ${if (cfg.useBootLoader && cfg.useDefaultFilesystems) then '' - # Create a writable qcow2 image using the systemImage as a backing - # image. - - # CoW prevent size to be attributed to an image. - # FIXME: raise this issue to upstream. - ${qemu}/bin/qemu-img create \ - -f qcow2 \ - -b ${systemImage}/nixos.qcow2 \ - -F qcow2 \ - "$NIX_DISK_IMAGE" - '' else if cfg.useDefaultFilesystems then '' - createEmptyFilesystemImage "$NIX_DISK_IMAGE" "${toString cfg.diskSize}M" - '' else '' - # Create an empty disk image without a filesystem. - ${qemu}/bin/qemu-img create -f qcow2 "$NIX_DISK_IMAGE" "${toString cfg.diskSize}M" - '' + NIX_DISK_IMAGE=$(readlink -f "''${NIX_DISK_IMAGE:-${toString config.virtualisation.diskImage}}") || test -z "$NIX_DISK_IMAGE" + + if test -n "$NIX_DISK_IMAGE" && ! test -e "$NIX_DISK_IMAGE"; then + echo "Disk image do not exist, creating the virtualisation disk image..." + + ${ + if (cfg.useBootLoader && cfg.useDefaultFilesystems) then + '' + # Create a writable qcow2 image using the systemImage as a backing + # image. + + # CoW prevent size to be attributed to an image. + # FIXME: raise this issue to upstream. + ${qemu}/bin/qemu-img create \ + -f qcow2 \ + -b ${systemImage}/nixos.qcow2 \ + -F qcow2 \ + "$NIX_DISK_IMAGE" + '' + else if cfg.useDefaultFilesystems then + '' + createEmptyFilesystemImage "$NIX_DISK_IMAGE" "${toString cfg.diskSize}M" + '' + else + '' + # Create an empty disk image without a filesystem. + ${qemu}/bin/qemu-img create -f qcow2 "$NIX_DISK_IMAGE" "${toString cfg.diskSize}M" + '' + } + echo "Virtualisation disk image created." + fi + + # Create a directory for storing temporary data of the running VM. + if [ -z "$TMPDIR" ] || [ -z "$USE_TMPDIR" ]; then + TMPDIR=$(mktemp -d nix-vm.XXXXXXXXXX --tmpdir) + fi + + ${lib.optionalString (cfg.useNixStoreImage) '' + echo "Creating Nix store image..." + + ${hostPkgs.gnutar}/bin/tar --create \ + --absolute-names \ + --verbatim-files-from \ + --transform 'flags=rSh;s|/nix/store/||' \ + --transform 'flags=rSh;s|~nix~case~hack~[[:digit:]]\+||g' \ + --files-from ${ + hostPkgs.closureInfo { + rootPaths = [ + config.system.build.toplevel + regInfo + ]; } - echo "Virtualisation disk image created." + }/store-paths \ + | ${hostPkgs.erofs-utils}/bin/mkfs.erofs \ + --quiet \ + --force-uid=0 \ + --force-gid=0 \ + -L ${nixStoreFilesystemLabel} \ + -U eb176051-bd15-49b7-9e6b-462e0b467019 \ + -T 0 \ + --tar=f \ + "$TMPDIR"/store.img + + echo "Created Nix store image." + ''} + + # Create a directory for exchanging data with the VM. + mkdir -p "$TMPDIR/xchg" + + ${lib.optionalString cfg.useHostCerts '' + mkdir -p "$TMPDIR/certs" + if [ -e "$NIX_SSL_CERT_FILE" ]; then + cp -L "$NIX_SSL_CERT_FILE" "$TMPDIR"/certs/ca-certificates.crt + else + echo \$NIX_SSL_CERT_FILE should point to a valid file if virtualisation.useHostCerts is enabled. fi - - # Create a directory for storing temporary data of the running VM. - if [ -z "$TMPDIR" ] || [ -z "$USE_TMPDIR" ]; then - TMPDIR=$(mktemp -d nix-vm.XXXXXXXXXX --tmpdir) + ''} + + ${lib.optionalString cfg.useEFIBoot '' + # Expose EFI variables, it's useful even when we are not using a bootloader (!). + # We might be interested in having EFI variable storage present even if we aren't booting via UEFI, hence + # no guard against `useBootLoader`. Examples: + # - testing PXE boot or other EFI applications + # - directbooting LinuxBoot, which `kexec()s` into a UEFI environment that can boot e.g. Windows + NIX_EFI_VARS=$(readlink -f "''${NIX_EFI_VARS:-${config.system.name}-efi-vars.fd}") + # VM needs writable EFI vars + if ! test -e "$NIX_EFI_VARS"; then + ${ + if cfg.efi.keepVariables then + # We still need the EFI var from the make-disk-image derivation + # because our "switch-to-configuration" process might + # write into it and we want to keep this data. + ''cp ${systemImage}/efi-vars.fd "$NIX_EFI_VARS"'' + else + ''cp ${cfg.efi.variables} "$NIX_EFI_VARS"'' + } + chmod 0644 "$NIX_EFI_VARS" fi - - ${lib.optionalString (cfg.useNixStoreImage) '' - echo "Creating Nix store image..." - - ${hostPkgs.gnutar}/bin/tar --create \ - --absolute-names \ - --verbatim-files-from \ - --transform 'flags=rSh;s|/nix/store/||' \ - --transform 'flags=rSh;s|~nix~case~hack~[[:digit:]]\+||g' \ - --files-from ${hostPkgs.closureInfo { rootPaths = [ config.system.build.toplevel regInfo ]; }}/store-paths \ - | ${hostPkgs.erofs-utils}/bin/mkfs.erofs \ - --quiet \ - --force-uid=0 \ - --force-gid=0 \ - -L ${nixStoreFilesystemLabel} \ - -U eb176051-bd15-49b7-9e6b-462e0b467019 \ - -T 0 \ - --tar=f \ - "$TMPDIR"/store.img - - echo "Created Nix store image." - '' + ''} + + ${lib.optionalString cfg.tpm.enable '' + NIX_SWTPM_DIR=$(readlink -f "''${NIX_SWTPM_DIR:-${config.system.name}-swtpm}") + mkdir -p "$NIX_SWTPM_DIR" + ${lib.getExe cfg.tpm.package} \ + socket \ + --tpmstate dir="$NIX_SWTPM_DIR" \ + --ctrl type=unixio,path="$NIX_SWTPM_DIR"/socket,terminate \ + --pid file="$NIX_SWTPM_DIR"/pid --daemon \ + --tpm2 \ + --log file="$NIX_SWTPM_DIR"/stdout,level=6 + + # Enable `fdflags` builtin in Bash + # We will need it to perform surgical modification of the file descriptor + # passed in the coprocess to remove `FD_CLOEXEC`, i.e. close the file descriptor + # on exec. + # If let alone, it will trigger the coprocess to read EOF when QEMU is `exec` + # at the end of this script. To work around that, we will just clear + # the `FD_CLOEXEC` bits as a first step. + enable -f ${hostPkgs.bash}/lib/bash/fdflags fdflags + # leave a dangling subprocess because the swtpm ctrl socket has + # "terminate" when the last connection disconnects, it stops swtpm. + # When qemu stops, or if the main shell process ends, the coproc will + # get signaled by virtue of the pipe between main and coproc ending. + # Which in turns triggers a socat connect-disconnect to swtpm which + # will stop it. + coproc waitingswtpm { + read || : + echo "" | ${lib.getExe hostPkgs.socat} STDIO UNIX-CONNECT:"$NIX_SWTPM_DIR"/socket } + # Clear `FD_CLOEXEC` on the coprocess' file descriptor stdin. + fdflags -s-cloexec ''${waitingswtpm[1]} + ''} - # Create a directory for exchanging data with the VM. - mkdir -p "$TMPDIR/xchg" - - ${lib.optionalString cfg.useHostCerts - '' - mkdir -p "$TMPDIR/certs" - if [ -e "$NIX_SSL_CERT_FILE" ]; then - cp -L "$NIX_SSL_CERT_FILE" "$TMPDIR"/certs/ca-certificates.crt - else - echo \$NIX_SSL_CERT_FILE should point to a valid file if virtualisation.useHostCerts is enabled. - fi - ''} - - ${lib.optionalString cfg.useEFIBoot - '' - # Expose EFI variables, it's useful even when we are not using a bootloader (!). - # We might be interested in having EFI variable storage present even if we aren't booting via UEFI, hence - # no guard against `useBootLoader`. Examples: - # - testing PXE boot or other EFI applications - # - directbooting LinuxBoot, which `kexec()s` into a UEFI environment that can boot e.g. Windows - NIX_EFI_VARS=$(readlink -f "''${NIX_EFI_VARS:-${config.system.name}-efi-vars.fd}") - # VM needs writable EFI vars - if ! test -e "$NIX_EFI_VARS"; then - ${if cfg.efi.keepVariables then - # We still need the EFI var from the make-disk-image derivation - # because our "switch-to-configuration" process might - # write into it and we want to keep this data. - ''cp ${systemImage}/efi-vars.fd "$NIX_EFI_VARS"'' - else - ''cp ${cfg.efi.variables} "$NIX_EFI_VARS"'' - } - chmod 0644 "$NIX_EFI_VARS" - fi - ''} - - ${lib.optionalString cfg.tpm.enable '' - NIX_SWTPM_DIR=$(readlink -f "''${NIX_SWTPM_DIR:-${config.system.name}-swtpm}") - mkdir -p "$NIX_SWTPM_DIR" - ${lib.getExe cfg.tpm.package} \ - socket \ - --tpmstate dir="$NIX_SWTPM_DIR" \ - --ctrl type=unixio,path="$NIX_SWTPM_DIR"/socket,terminate \ - --pid file="$NIX_SWTPM_DIR"/pid --daemon \ - --tpm2 \ - --log file="$NIX_SWTPM_DIR"/stdout,level=6 - - # Enable `fdflags` builtin in Bash - # We will need it to perform surgical modification of the file descriptor - # passed in the coprocess to remove `FD_CLOEXEC`, i.e. close the file descriptor - # on exec. - # If let alone, it will trigger the coprocess to read EOF when QEMU is `exec` - # at the end of this script. To work around that, we will just clear - # the `FD_CLOEXEC` bits as a first step. - enable -f ${hostPkgs.bash}/lib/bash/fdflags fdflags - # leave a dangling subprocess because the swtpm ctrl socket has - # "terminate" when the last connection disconnects, it stops swtpm. - # When qemu stops, or if the main shell process ends, the coproc will - # get signaled by virtue of the pipe between main and coproc ending. - # Which in turns triggers a socat connect-disconnect to swtpm which - # will stop it. - coproc waitingswtpm { - read || : - echo "" | ${lib.getExe hostPkgs.socat} STDIO UNIX-CONNECT:"$NIX_SWTPM_DIR"/socket - } - # Clear `FD_CLOEXEC` on the coprocess' file descriptor stdin. - fdflags -s-cloexec ''${waitingswtpm[1]} - ''} - - cd "$TMPDIR" - - ${lib.optionalString (cfg.emptyDiskImages != []) "idx=0"} - ${flip concatMapStrings cfg.emptyDiskImages (size: '' - if ! test -e "empty$idx.qcow2"; then - ${qemu}/bin/qemu-img create -f qcow2 "empty$idx.qcow2" "${toString size}M" - fi - idx=$((idx + 1)) - '')} - - # Start QEMU. - exec ${qemu-common.qemuBinary qemu} \ - -name ${config.system.name} \ - -m ${toString config.virtualisation.memorySize} \ - -smp ${toString config.virtualisation.cores} \ - -device virtio-rng-pci \ - ${concatStringsSep " " config.virtualisation.qemu.networkingOptions} \ - ${concatStringsSep " \\\n " - (mapAttrsToList - (tag: share: "-virtfs local,path=${share.source},security_model=${share.securityModel},mount_tag=${tag}") - config.virtualisation.sharedDirectories)} \ - ${drivesCmdLine config.virtualisation.qemu.drives} \ - ${concatStringsSep " \\\n " config.virtualisation.qemu.options} \ - $QEMU_OPTS \ - "$@" - ''; + cd "$TMPDIR" + ${lib.optionalString (cfg.emptyDiskImages != [ ]) "idx=0"} + ${flip concatMapStrings cfg.emptyDiskImages (size: '' + if ! test -e "empty$idx.qcow2"; then + ${qemu}/bin/qemu-img create -f qcow2 "empty$idx.qcow2" "${toString size}M" + fi + idx=$((idx + 1)) + '')} + + # Start QEMU. + exec ${qemu-common.qemuBinary qemu} \ + -name ${config.system.name} \ + -m ${toString config.virtualisation.memorySize} \ + -smp ${toString config.virtualisation.cores} \ + -device virtio-rng-pci \ + ${concatStringsSep " " config.virtualisation.qemu.networkingOptions} \ + ${ + concatStringsSep " \\\n " ( + mapAttrsToList ( + tag: share: + "-virtfs local,path=${share.source},security_model=${share.securityModel},mount_tag=${tag}" + ) config.virtualisation.sharedDirectories + ) + } \ + ${drivesCmdLine config.virtualisation.qemu.drives} \ + ${concatStringsSep " \\\n " config.virtualisation.qemu.options} \ + $QEMU_OPTS \ + "$@" + ''; regInfo = hostPkgs.closureInfo { rootPaths = config.virtualisation.additionalPaths; }; @@ -284,216 +317,239 @@ let copyChannel = false; OVMF = cfg.efi.OVMF; }; - in - { imports = [ ../profiles/qemu-guest.nix - (mkRenamedOptionModule [ "virtualisation" "pathsInNixDB" ] [ "virtualisation" "additionalPaths" ]) - (mkRemovedOptionModule [ "virtualisation" "bootDevice" ] "This option was renamed to `virtualisation.rootDevice`, as it was incorrectly named and misleading. Take the time to review what you want to do and look at the new options like `virtualisation.{bootLoaderDevice, bootPartition}`, open an issue in case of issues.") - (mkRemovedOptionModule [ "virtualisation" "efiVars" ] "This option was removed, it is possible to provide a template UEFI variable with `virtualisation.efi.variables` ; if this option is important to you, open an issue") - (mkRemovedOptionModule [ "virtualisation" "persistBootDevice" ] "Boot device is always persisted if you use a bootloader through the root disk image ; if this does not work for your usecase, please examine carefully what `virtualisation.{bootDevice, rootDevice, bootPartition}` options offer you and open an issue explaining your need.`") + ./disk-size-option.nix + (mkRenamedOptionModule + [ + "virtualisation" + "pathsInNixDB" + ] + [ + "virtualisation" + "additionalPaths" + ] + ) + (mkRemovedOptionModule + [ + "virtualisation" + "bootDevice" + ] + "This option was renamed to `virtualisation.rootDevice`, as it was incorrectly named and misleading. Take the time to review what you want to do and look at the new options like `virtualisation.{bootLoaderDevice, bootPartition}`, open an issue in case of issues." + ) + (mkRemovedOptionModule + [ + "virtualisation" + "efiVars" + ] + "This option was removed, it is possible to provide a template UEFI variable with `virtualisation.efi.variables` ; if this option is important to you, open an issue" + ) + (mkRemovedOptionModule + [ + "virtualisation" + "persistBootDevice" + ] + "Boot device is always persisted if you use a bootloader through the root disk image ; if this does not work for your usecase, please examine carefully what `virtualisation.{bootDevice, rootDevice, bootPartition}` options offer you and open an issue explaining your need.`" + ) ]; options = { virtualisation.fileSystems = options.fileSystems; - virtualisation.memorySize = - mkOption { - type = types.ints.positive; - default = 1024; - description = '' - The memory size in megabytes of the virtual machine. - ''; - }; - - virtualisation.msize = - mkOption { - type = types.ints.positive; - default = 16384; - description = '' - The msize (maximum packet size) option passed to 9p file systems, in - bytes. Increasing this should increase performance significantly, - at the cost of higher RAM usage. - ''; - }; + virtualisation.memorySize = mkOption { + type = types.ints.positive; + default = 1024; + description = '' + The memory size in megabytes of the virtual machine. + ''; + }; - virtualisation.diskSize = - mkOption { - type = types.ints.positive; - default = 1024; - description = '' - The disk size in megabytes of the virtual machine. - ''; - }; + virtualisation.msize = mkOption { + type = types.ints.positive; + default = 16384; + description = '' + The msize (maximum packet size) option passed to 9p file systems, in + bytes. Increasing this should increase performance significantly, + at the cost of higher RAM usage. + ''; + }; - virtualisation.diskImage = - mkOption { - type = types.nullOr types.str; - default = "./${config.system.name}.qcow2"; - defaultText = literalExpression ''"./''${config.system.name}.qcow2"''; - description = '' - Path to the disk image containing the root filesystem. - The image will be created on startup if it does not - exist. + virtualisation.diskImage = mkOption { + type = types.nullOr types.str; + default = "./${config.system.name}.qcow2"; + defaultText = literalExpression ''"./''${config.system.name}.qcow2"''; + description = '' + Path to the disk image containing the root filesystem. + The image will be created on startup if it does not + exist. - If null, a tmpfs will be used as the root filesystem and - the VM's state will not be persistent. - ''; - }; + If null, a tmpfs will be used as the root filesystem and + the VM's state will not be persistent. + ''; + }; - virtualisation.bootLoaderDevice = - mkOption { - type = types.path; - default = "/dev/disk/by-id/virtio-${rootDriveSerialAttr}"; - defaultText = literalExpression ''/dev/disk/by-id/virtio-${rootDriveSerialAttr}''; - example = "/dev/disk/by-id/virtio-boot-loader-device"; - description = '' - The path (inside th VM) to the device to boot from when legacy booting. - ''; - }; + virtualisation.bootLoaderDevice = mkOption { + type = types.path; + default = "/dev/disk/by-id/virtio-${rootDriveSerialAttr}"; + defaultText = literalExpression ''/dev/disk/by-id/virtio-${rootDriveSerialAttr}''; + example = "/dev/disk/by-id/virtio-boot-loader-device"; + description = '' + The path (inside th VM) to the device to boot from when legacy booting. + ''; + }; - virtualisation.bootPartition = - mkOption { - type = types.nullOr types.path; - default = if cfg.useEFIBoot then "/dev/disk/by-label/${espFilesystemLabel}" else null; - defaultText = literalExpression ''if cfg.useEFIBoot then "/dev/disk/by-label/${espFilesystemLabel}" else null''; - example = "/dev/disk/by-label/esp"; - description = '' - The path (inside the VM) to the device containing the EFI System Partition (ESP). + virtualisation.bootPartition = mkOption { + type = types.nullOr types.path; + default = if cfg.useEFIBoot then "/dev/disk/by-label/${espFilesystemLabel}" else null; + defaultText = literalExpression ''if cfg.useEFIBoot then "/dev/disk/by-label/${espFilesystemLabel}" else null''; + example = "/dev/disk/by-label/esp"; + description = '' + The path (inside the VM) to the device containing the EFI System Partition (ESP). - If you are *not* booting from a UEFI firmware, this value is, by - default, `null`. The ESP is mounted to `boot.loader.efi.efiSysMountpoint`. - ''; - }; + If you are *not* booting from a UEFI firmware, this value is, by + default, `null`. The ESP is mounted to `boot.loader.efi.efiSysMountpoint`. + ''; + }; - virtualisation.rootDevice = - mkOption { - type = types.nullOr types.path; - default = "/dev/disk/by-label/${rootFilesystemLabel}"; - defaultText = literalExpression ''/dev/disk/by-label/${rootFilesystemLabel}''; - example = "/dev/disk/by-label/nixos"; - description = '' - The path (inside the VM) to the device containing the root filesystem. - ''; - }; + virtualisation.rootDevice = mkOption { + type = types.nullOr types.path; + default = "/dev/disk/by-label/${rootFilesystemLabel}"; + defaultText = literalExpression ''/dev/disk/by-label/${rootFilesystemLabel}''; + example = "/dev/disk/by-label/nixos"; + description = '' + The path (inside the VM) to the device containing the root filesystem. + ''; + }; - virtualisation.emptyDiskImages = - mkOption { - type = types.listOf types.ints.positive; - default = []; - description = '' - Additional disk images to provide to the VM. The value is - a list of size in megabytes of each disk. These disks are - writeable by the VM. - ''; - }; + virtualisation.emptyDiskImages = mkOption { + type = types.listOf types.ints.positive; + default = [ ]; + description = '' + Additional disk images to provide to the VM. The value is + a list of size in megabytes of each disk. These disks are + writeable by the VM. + ''; + }; - virtualisation.graphics = - mkOption { - type = types.bool; - default = true; - description = '' - Whether to run QEMU with a graphics window, or in nographic mode. - Serial console will be enabled on both settings, but this will - change the preferred console. - ''; - }; + virtualisation.graphics = mkOption { + type = types.bool; + default = true; + description = '' + Whether to run QEMU with a graphics window, or in nographic mode. + Serial console will be enabled on both settings, but this will + change the preferred console. + ''; + }; - virtualisation.resolution = - mkOption { - type = options.services.xserver.resolutions.type.nestedTypes.elemType; - default = { x = 1024; y = 768; }; - description = '' - The resolution of the virtual machine display. - ''; + virtualisation.resolution = mkOption { + type = options.services.xserver.resolutions.type.nestedTypes.elemType; + default = { + x = 1024; + y = 768; }; + description = '' + The resolution of the virtual machine display. + ''; + }; - virtualisation.cores = - mkOption { - type = types.ints.positive; - default = 1; - description = '' - Specify the number of cores the guest is permitted to use. - The number can be higher than the available cores on the - host system. - ''; - }; + virtualisation.cores = mkOption { + type = types.ints.positive; + default = 1; + description = '' + Specify the number of cores the guest is permitted to use. + The number can be higher than the available cores on the + host system. + ''; + }; - virtualisation.sharedDirectories = - mkOption { - type = types.attrsOf - (types.submodule { - options.source = mkOption { - type = types.str; - description = "The path of the directory to share, can be a shell variable"; - }; - options.target = mkOption { - type = types.path; - description = "The mount point of the directory inside the virtual machine"; - }; - options.securityModel = mkOption { - type = types.enum [ "passthrough" "mapped-xattr" "mapped-file" "none" ]; - default = "mapped-xattr"; - description = '' - The security model to use for this share: + virtualisation.sharedDirectories = mkOption { + type = types.attrsOf ( + types.submodule { + options.source = mkOption { + type = types.str; + description = "The path of the directory to share, can be a shell variable"; + }; + options.target = mkOption { + type = types.path; + description = "The mount point of the directory inside the virtual machine"; + }; + options.securityModel = mkOption { + type = types.enum [ + "passthrough" + "mapped-xattr" + "mapped-file" + "none" + ]; + default = "mapped-xattr"; + description = '' + The security model to use for this share: - - `passthrough`: files are stored using the same credentials as they are created on the guest (this requires QEMU to run as root) - - `mapped-xattr`: some of the file attributes like uid, gid, mode bits and link target are stored as file attributes - - `mapped-file`: the attributes are stored in the hidden .virtfs_metadata directory. Directories exported by this security model cannot interact with other unix tools - - `none`: same as "passthrough" except the sever won't report failures if it fails to set file attributes like ownership - ''; - }; - }); - default = { }; - example = { - my-share = { source = "/path/to/be/shared"; target = "/mnt/shared"; }; + - `passthrough`: files are stored using the same credentials as they are created on the guest (this requires QEMU to run as root) + - `mapped-xattr`: some of the file attributes like uid, gid, mode bits and link target are stored as file attributes + - `mapped-file`: the attributes are stored in the hidden .virtfs_metadata directory. Directories exported by this security model cannot interact with other unix tools + - `none`: same as "passthrough" except the sever won't report failures if it fails to set file attributes like ownership + ''; + }; + } + ); + default = { }; + example = { + my-share = { + source = "/path/to/be/shared"; + target = "/mnt/shared"; }; - description = '' - An attributes set of directories that will be shared with the - virtual machine using VirtFS (9P filesystem over VirtIO). - The attribute name will be used as the 9P mount tag. - ''; }; + description = '' + An attributes set of directories that will be shared with the + virtual machine using VirtFS (9P filesystem over VirtIO). + The attribute name will be used as the 9P mount tag. + ''; + }; - virtualisation.additionalPaths = - mkOption { - type = types.listOf types.path; - default = []; - description = '' - A list of paths whose closure should be made available to - the VM. + virtualisation.additionalPaths = mkOption { + type = types.listOf types.path; + default = [ ]; + description = '' + A list of paths whose closure should be made available to + the VM. - When 9p is used, the closure is registered in the Nix - database in the VM. All other paths in the host Nix store - appear in the guest Nix store as well, but are considered - garbage (because they are not registered in the Nix - database of the guest). + When 9p is used, the closure is registered in the Nix + database in the VM. All other paths in the host Nix store + appear in the guest Nix store as well, but are considered + garbage (because they are not registered in the Nix + database of the guest). - When {option}`virtualisation.useNixStoreImage` is - set, the closure is copied to the Nix store image. - ''; - }; + When {option}`virtualisation.useNixStoreImage` is + set, the closure is copied to the Nix store image. + ''; + }; virtualisation.forwardPorts = mkOption { - type = types.listOf - (types.submodule { + type = types.listOf ( + types.submodule { options.from = mkOption { - type = types.enum [ "host" "guest" ]; + type = types.enum [ + "host" + "guest" + ]; default = "host"; description = '' - Controls the direction in which the ports are mapped: + Controls the direction in which the ports are mapped: - - `"host"` means traffic from the host ports - is forwarded to the given guest port. - - `"guest"` means traffic from the guest ports - is forwarded to the given host port. - ''; + - `"host"` means traffic from the host ports + is forwarded to the given guest port. + - `"guest"` means traffic from the guest ports + is forwarded to the given host port. + ''; }; options.proto = mkOption { - type = types.enum [ "tcp" "udp" ]; + type = types.enum [ + "tcp" + "udp" + ]; default = "tcp"; description = "The protocol to forward."; }; @@ -515,10 +571,10 @@ in type = types.port; description = "The guest port to be mapped."; }; - }); - default = []; - example = lib.literalExpression - '' + } + ); + default = [ ]; + example = lib.literalExpression '' [ # forward local port 2222 -> 22, to ssh into the VM { from = "host"; host.port = 2222; guest.port = 22; } @@ -528,122 +584,121 @@ in host.address = "127.0.0.1"; host.port = 80; } ] - ''; + ''; description = '' - When using the SLiRP user networking (default), this option allows to - forward ports to/from the host/guest. - - ::: {.warning} - If the NixOS firewall on the virtual machine is enabled, you also - have to open the guest ports to enable the traffic between host and - guest. - ::: - - ::: {.note} - Currently QEMU supports only IPv4 forwarding. - ::: - ''; + When using the SLiRP user networking (default), this option allows to + forward ports to/from the host/guest. + + ::: {.warning} + If the NixOS firewall on the virtual machine is enabled, you also + have to open the guest ports to enable the traffic between host and + guest. + ::: + + ::: {.note} + Currently QEMU supports only IPv4 forwarding. + ::: + ''; }; - virtualisation.restrictNetwork = - mkOption { - type = types.bool; - default = false; - example = true; - description = '' - If this option is enabled, the guest will be isolated, i.e. it will - not be able to contact the host and no guest IP packets will be - routed over the host to the outside. This option does not affect - any explicitly set forwarding rules. - ''; - }; + virtualisation.restrictNetwork = mkOption { + type = types.bool; + default = false; + example = true; + description = '' + If this option is enabled, the guest will be isolated, i.e. it will + not be able to contact the host and no guest IP packets will be + routed over the host to the outside. This option does not affect + any explicitly set forwarding rules. + ''; + }; - virtualisation.vlans = - mkOption { - type = types.listOf types.ints.unsigned; - default = if config.virtualisation.interfaces == {} then [ 1 ] else [ ]; - defaultText = lib.literalExpression ''if config.virtualisation.interfaces == {} then [ 1 ] else [ ]''; - example = [ 1 2 ]; - description = '' - Virtual networks to which the VM is connected. Each - number «N» in this list causes - the VM to have a virtual Ethernet interface attached to a - separate virtual network on which it will be assigned IP - address - `192.168.«N».«M»`, - where «M» is the index of this VM - in the list of VMs. - ''; - }; + virtualisation.vlans = mkOption { + type = types.listOf types.ints.unsigned; + default = if config.virtualisation.interfaces == { } then [ 1 ] else [ ]; + defaultText = lib.literalExpression ''if config.virtualisation.interfaces == {} then [ 1 ] else [ ]''; + example = [ + 1 + 2 + ]; + description = '' + Virtual networks to which the VM is connected. Each + number «N» in this list causes + the VM to have a virtual Ethernet interface attached to a + separate virtual network on which it will be assigned IP + address + `192.168.«N».«M»`, + where «M» is the index of this VM + in the list of VMs. + ''; + }; virtualisation.interfaces = mkOption { - default = {}; + default = { }; example = { enp1s0.vlan = 1; }; description = '' Network interfaces to add to the VM. ''; - type = with types; attrsOf (submodule { - options = { - vlan = mkOption { - type = types.ints.unsigned; - description = '' - VLAN to which the network interface is connected. - ''; - }; + type = + with types; + attrsOf (submodule { + options = { + vlan = mkOption { + type = types.ints.unsigned; + description = '' + VLAN to which the network interface is connected. + ''; + }; - assignIP = mkOption { - type = types.bool; - default = false; - description = '' - Automatically assign an IP address to the network interface using the same scheme as - virtualisation.vlans. - ''; + assignIP = mkOption { + type = types.bool; + default = false; + description = '' + Automatically assign an IP address to the network interface using the same scheme as + virtualisation.vlans. + ''; + }; }; - }; - }); + }); }; - virtualisation.writableStore = - mkOption { - type = types.bool; - default = cfg.mountHostNixStore; - defaultText = literalExpression "cfg.mountHostNixStore"; - description = '' - If enabled, the Nix store in the VM is made writable by - layering an overlay filesystem on top of the host's Nix - store. + virtualisation.writableStore = mkOption { + type = types.bool; + default = cfg.mountHostNixStore; + defaultText = literalExpression "cfg.mountHostNixStore"; + description = '' + If enabled, the Nix store in the VM is made writable by + layering an overlay filesystem on top of the host's Nix + store. - By default, this is enabled if you mount a host Nix store. - ''; - }; + By default, this is enabled if you mount a host Nix store. + ''; + }; - virtualisation.writableStoreUseTmpfs = - mkOption { - type = types.bool; - default = true; - description = '' - Use a tmpfs for the writable store instead of writing to the VM's - own filesystem. - ''; - }; + virtualisation.writableStoreUseTmpfs = mkOption { + type = types.bool; + default = true; + description = '' + Use a tmpfs for the writable store instead of writing to the VM's + own filesystem. + ''; + }; - networking.primaryIPAddress = - mkOption { - type = types.str; - default = ""; - internal = true; - description = "Primary IP address used in /etc/hosts."; - }; + networking.primaryIPAddress = mkOption { + type = types.str; + default = ""; + internal = true; + description = "Primary IP address used in /etc/hosts."; + }; - networking.primaryIPv6Address = - mkOption { - type = types.str; - default = ""; - internal = true; - description = "Primary IPv6 address used in /etc/hosts."; - }; + networking.primaryIPv6Address = mkOption { + type = types.str; + default = ""; + internal = true; + description = "Primary IPv6 address used in /etc/hosts."; + }; virtualisation.host.pkgs = mkOption { type = options.nixpkgs.pkgs.type; @@ -659,31 +714,38 @@ in }; virtualisation.qemu = { - package = - mkOption { - type = types.package; - default = if hostPkgs.stdenv.hostPlatform.qemuArch == pkgs.stdenv.hostPlatform.qemuArch then hostPkgs.qemu_kvm else hostPkgs.qemu; - defaultText = literalExpression "if hostPkgs.stdenv.hostPlatform.qemuArch == pkgs.stdenv.hostPlatform.qemuArch then config.virtualisation.host.pkgs.qemu_kvm else config.virtualisation.host.pkgs.qemu"; - example = literalExpression "pkgs.qemu_test"; - description = "QEMU package to use."; - }; + package = mkOption { + type = types.package; + default = + if hostPkgs.stdenv.hostPlatform.qemuArch == pkgs.stdenv.hostPlatform.qemuArch then + hostPkgs.qemu_kvm + else + hostPkgs.qemu; + defaultText = literalExpression "if hostPkgs.stdenv.hostPlatform.qemuArch == pkgs.stdenv.hostPlatform.qemuArch then config.virtualisation.host.pkgs.qemu_kvm else config.virtualisation.host.pkgs.qemu"; + example = literalExpression "pkgs.qemu_test"; + description = "QEMU package to use."; + }; - options = - mkOption { - type = types.listOf types.str; - default = []; - example = [ "-vga std" ]; - description = '' - Options passed to QEMU. - See [QEMU User Documentation](https://www.qemu.org/docs/master/system/qemu-manpage) for a complete list. - ''; - }; + options = mkOption { + type = types.listOf types.str; + default = [ ]; + example = [ "-vga std" ]; + description = '' + Options passed to QEMU. + See [QEMU User Documentation](https://www.qemu.org/docs/master/system/qemu-manpage) for a complete list. + ''; + }; consoles = mkOption { type = types.listOf types.str; - default = let - consoles = [ "${qemu-common.qemuSerialDevice},115200n8" "tty0" ]; - in if cfg.graphics then consoles else reverseList consoles; + default = + let + consoles = [ + "${qemu-common.qemuSerialDevice},115200n8" + "tty0" + ]; + in + if cfg.graphics then consoles else reverseList consoles; example = [ "console=tty1" ]; description = '' The output console devices to pass to the kernel command line via the @@ -696,176 +758,170 @@ in ''; }; - networkingOptions = - mkOption { - type = types.listOf types.str; - default = [ ]; - example = [ - "-net nic,netdev=user.0,model=virtio" - "-netdev user,id=user.0,\${QEMU_NET_OPTS:+,$QEMU_NET_OPTS}" - ]; - description = '' - Networking-related command-line options that should be passed to qemu. - The default is to use userspace networking (SLiRP). - See the [QEMU Wiki on Networking](https://wiki.qemu.org/Documentation/Networking) for details. - - If you override this option, be advised to keep - `''${QEMU_NET_OPTS:+,$QEMU_NET_OPTS}` (as seen in the example) - to keep the default runtime behaviour. - ''; - }; - - drives = - mkOption { - type = types.listOf (types.submodule driveOpts); - description = "Drives passed to qemu."; - }; + networkingOptions = mkOption { + type = types.listOf types.str; + default = [ ]; + example = [ + "-net nic,netdev=user.0,model=virtio" + "-netdev user,id=user.0,\${QEMU_NET_OPTS:+,$QEMU_NET_OPTS}" + ]; + description = '' + Networking-related command-line options that should be passed to qemu. + The default is to use userspace networking (SLiRP). + See the [QEMU Wiki on Networking](https://wiki.qemu.org/Documentation/Networking) for details. - diskInterface = - mkOption { - type = types.enum [ "virtio" "scsi" "ide" ]; - default = "virtio"; - example = "scsi"; - description = "The interface used for the virtual hard disks."; - }; + If you override this option, be advised to keep + `''${QEMU_NET_OPTS:+,$QEMU_NET_OPTS}` (as seen in the example) + to keep the default runtime behaviour. + ''; + }; - guestAgent.enable = - mkOption { - type = types.bool; - default = true; - description = '' - Enable the Qemu guest agent. - ''; - }; + drives = mkOption { + type = types.listOf (types.submodule driveOpts); + description = "Drives passed to qemu."; + }; - virtioKeyboard = - mkOption { - type = types.bool; - default = true; - description = '' - Enable the virtio-keyboard device. - ''; - }; - }; + diskInterface = mkOption { + type = types.enum [ + "virtio" + "scsi" + "ide" + ]; + default = "virtio"; + example = "scsi"; + description = "The interface used for the virtual hard disks."; + }; - virtualisation.useNixStoreImage = - mkOption { + guestAgent.enable = mkOption { type = types.bool; - default = false; + default = true; description = '' - Build and use a disk image for the Nix store, instead of - accessing the host's one through 9p. - - For applications which do a lot of reads from the store, - this can drastically improve performance, but at the cost of - disk space and image build time. - - The Nix store image is built just-in-time right before the VM is - started. Because it does not produce another derivation, the image is - not cached between invocations and never lands in the store or binary - cache. - - If you want a full disk image with a partition table and a root - filesystem instead of only a store image, enable - {option}`virtualisation.useBootLoader` instead. + Enable the Qemu guest agent. ''; }; - virtualisation.mountHostNixStore = - mkOption { + virtioKeyboard = mkOption { type = types.bool; - default = !cfg.useNixStoreImage && !cfg.useBootLoader; - defaultText = literalExpression "!cfg.useNixStoreImage && !cfg.useBootLoader"; + default = true; description = '' - Mount the host Nix store as a 9p mount. + Enable the virtio-keyboard device. ''; }; + }; - virtualisation.directBoot = { - enable = - mkOption { - type = types.bool; - default = !cfg.useBootLoader; - defaultText = "!cfg.useBootLoader"; - description = '' - If enabled, the virtual machine will boot directly into the kernel instead of through a bootloader. - Read more about this feature in the [QEMU documentation on Direct Linux Boot](https://qemu-project.gitlab.io/qemu/system/linuxboot.html) - - This is enabled by default. - If you want to test netboot, consider disabling this option. - Enable a bootloader with {option}`virtualisation.useBootLoader` if you need. - - Relevant parameters such as those set in `boot.initrd` and `boot.kernelParams` are also passed to QEMU. - Additional parameters can be supplied on invocation through the environment variable `$QEMU_KERNEL_PARAMS`. - They are added to the `-append` option, see [QEMU User Documentation](https://www.qemu.org/docs/master/system/qemu-manpage) for details - For example, to let QEMU use the parent terminal as the serial console, set `QEMU_KERNEL_PARAMS="console=ttyS0"`. - - This will not (re-)boot correctly into a system that has switched to a different configuration on disk. - ''; - }; - initrd = - mkOption { - type = types.str; - default = "${config.system.build.initialRamdisk}/${config.system.boot.loader.initrdFile}"; - defaultText = "\${config.system.build.initialRamdisk}/\${config.system.boot.loader.initrdFile}"; - description = '' - In direct boot situations, you may want to influence the initrd to load - to use your own customized payload. - - This is useful if you want to test the netboot image without - testing the firmware or the loading part. - ''; - }; + virtualisation.useNixStoreImage = mkOption { + type = types.bool; + default = false; + description = '' + Build and use a disk image for the Nix store, instead of + accessing the host's one through 9p. + + For applications which do a lot of reads from the store, + this can drastically improve performance, but at the cost of + disk space and image build time. + + The Nix store image is built just-in-time right before the VM is + started. Because it does not produce another derivation, the image is + not cached between invocations and never lands in the store or binary + cache. + + If you want a full disk image with a partition table and a root + filesystem instead of only a store image, enable + {option}`virtualisation.useBootLoader` instead. + ''; + }; + + virtualisation.mountHostNixStore = mkOption { + type = types.bool; + default = !cfg.useNixStoreImage && !cfg.useBootLoader; + defaultText = literalExpression "!cfg.useNixStoreImage && !cfg.useBootLoader"; + description = '' + Mount the host Nix store as a 9p mount. + ''; }; - virtualisation.useBootLoader = - mkOption { + virtualisation.directBoot = { + enable = mkOption { type = types.bool; - default = false; + default = !cfg.useBootLoader; + defaultText = "!cfg.useBootLoader"; description = '' - Use a boot loader to boot the system. - This allows, among other things, testing the boot loader. + If enabled, the virtual machine will boot directly into the kernel instead of through a bootloader. + Read more about this feature in the [QEMU documentation on Direct Linux Boot](https://qemu-project.gitlab.io/qemu/system/linuxboot.html) - If disabled, the kernel and initrd are directly booted, - forgoing any bootloader. + This is enabled by default. + If you want to test netboot, consider disabling this option. + Enable a bootloader with {option}`virtualisation.useBootLoader` if you need. - Check the documentation on {option}`virtualisation.directBoot.enable` for details. - ''; - }; + Relevant parameters such as those set in `boot.initrd` and `boot.kernelParams` are also passed to QEMU. + Additional parameters can be supplied on invocation through the environment variable `$QEMU_KERNEL_PARAMS`. + They are added to the `-append` option, see [QEMU User Documentation](https://www.qemu.org/docs/master/system/qemu-manpage) for details + For example, to let QEMU use the parent terminal as the serial console, set `QEMU_KERNEL_PARAMS="console=ttyS0"`. - virtualisation.installBootLoader = - mkOption { - type = types.bool; - default = cfg.useBootLoader && cfg.useDefaultFilesystems; - defaultText = "cfg.useBootLoader && cfg.useDefaultFilesystems"; + This will not (re-)boot correctly into a system that has switched to a different configuration on disk. + ''; + }; + initrd = mkOption { + type = types.str; + default = "${config.system.build.initialRamdisk}/${config.system.boot.loader.initrdFile}"; + defaultText = "\${config.system.build.initialRamdisk}/\${config.system.boot.loader.initrdFile}"; description = '' - Install boot loader to target image. + In direct boot situations, you may want to influence the initrd to load + to use your own customized payload. - This is best-effort and may break with unconventional partition setups. - Use `virtualisation.useDefaultFilesystems` for a known-working configuration. + This is useful if you want to test the netboot image without + testing the firmware or the loading part. ''; }; + }; - virtualisation.useEFIBoot = - mkOption { - type = types.bool; - default = false; - description = '' - If enabled, the virtual machine will provide a EFI boot - manager. - useEFIBoot is ignored if useBootLoader == false. - ''; - }; + virtualisation.useBootLoader = mkOption { + type = types.bool; + default = false; + description = '' + Use a boot loader to boot the system. + This allows, among other things, testing the boot loader. + + If disabled, the kernel and initrd are directly booted, + forgoing any bootloader. + + Check the documentation on {option}`virtualisation.directBoot.enable` for details. + ''; + }; + + virtualisation.installBootLoader = mkOption { + type = types.bool; + default = cfg.useBootLoader && cfg.useDefaultFilesystems; + defaultText = "cfg.useBootLoader && cfg.useDefaultFilesystems"; + description = '' + Install boot loader to target image. + + This is best-effort and may break with unconventional partition setups. + Use `virtualisation.useDefaultFilesystems` for a known-working configuration. + ''; + }; + + virtualisation.useEFIBoot = mkOption { + type = types.bool; + default = false; + description = '' + If enabled, the virtual machine will provide a EFI boot + manager. + useEFIBoot is ignored if useBootLoader == false. + ''; + }; virtualisation.efi = { OVMF = mkOption { type = types.package; - default = (pkgs.OVMF.override { - secureBoot = cfg.useSecureBoot; - }).fd; - defaultText = ''(pkgs.OVMF.override { - secureBoot = cfg.useSecureBoot; - }).fd''; + default = + (pkgs.OVMF.override { + secureBoot = cfg.useSecureBoot; + }).fd; + defaultText = '' + (pkgs.OVMF.override { + secureBoot = cfg.useSecureBoot; + }).fd''; description = "OVMF firmware package, defaults to OVMF configured with secure boot if needed."; }; @@ -874,8 +930,8 @@ in default = cfg.efi.OVMF.firmware; defaultText = literalExpression "cfg.efi.OVMF.firmware"; description = '' - Firmware binary for EFI implementation, defaults to OVMF. - ''; + Firmware binary for EFI implementation, defaults to OVMF. + ''; }; variables = mkOption { @@ -883,9 +939,9 @@ in default = cfg.efi.OVMF.variables; defaultText = literalExpression "cfg.efi.OVMF.variables"; description = '' - Platform-specific flash binary for EFI variables, implementation-dependent to the EFI firmware. - Defaults to OVMF. - ''; + Platform-specific flash binary for EFI variables, implementation-dependent to the EFI firmware. + Defaults to OVMF. + ''; }; keepVariables = mkOption { @@ -903,13 +959,16 @@ in deviceModel = mkOption { type = types.str; - default = ({ - "i686-linux" = "tpm-tis"; - "x86_64-linux" = "tpm-tis"; - "ppc64-linux" = "tpm-spapr"; - "armv7-linux" = "tpm-tis-device"; - "aarch64-linux" = "tpm-tis-device"; - }.${pkgs.stdenv.hostPlatform.system} or (throw "Unsupported system for TPM2 emulation in QEMU")); + default = ( + { + "i686-linux" = "tpm-tis"; + "x86_64-linux" = "tpm-tis"; + "ppc64-linux" = "tpm-spapr"; + "armv7-linux" = "tpm-tis-device"; + "aarch64-linux" = "tpm-tis-device"; + } + .${pkgs.stdenv.hostPlatform.system} or (throw "Unsupported system for TPM2 emulation in QEMU") + ); defaultText = '' Based on the guest platform Linux system: @@ -922,104 +981,104 @@ in }; }; - virtualisation.useDefaultFilesystems = - mkOption { - type = types.bool; - default = true; - description = '' - If enabled, the boot disk of the virtual machine will be - formatted and mounted with the default filesystems for - testing. Swap devices and LUKS will be disabled. + virtualisation.useDefaultFilesystems = mkOption { + type = types.bool; + default = true; + description = '' + If enabled, the boot disk of the virtual machine will be + formatted and mounted with the default filesystems for + testing. Swap devices and LUKS will be disabled. - If disabled, a root filesystem has to be specified and - formatted (for example in the initial ramdisk). - ''; - }; + If disabled, a root filesystem has to be specified and + formatted (for example in the initial ramdisk). + ''; + }; - virtualisation.useSecureBoot = - mkOption { - type = types.bool; - default = false; - description = '' - Enable Secure Boot support in the EFI firmware. - ''; - }; + virtualisation.useSecureBoot = mkOption { + type = types.bool; + default = false; + description = '' + Enable Secure Boot support in the EFI firmware. + ''; + }; - virtualisation.bios = - mkOption { - type = types.nullOr types.package; - default = null; - description = '' - An alternate BIOS (such as `qboot`) with which to start the VM. - Should contain a file named `bios.bin`. - If `null`, QEMU's builtin SeaBIOS will be used. - ''; - }; + virtualisation.bios = mkOption { + type = types.nullOr types.package; + default = null; + description = '' + An alternate BIOS (such as `qboot`) with which to start the VM. + Should contain a file named `bios.bin`. + If `null`, QEMU's builtin SeaBIOS will be used. + ''; + }; - virtualisation.useHostCerts = - mkOption { - type = types.bool; - default = false; - description = '' - If enabled, when `NIX_SSL_CERT_FILE` is set on the host, - pass the CA certificates from the host to the VM. - ''; - }; + virtualisation.useHostCerts = mkOption { + type = types.bool; + default = false; + description = '' + If enabled, when `NIX_SSL_CERT_FILE` is set on the host, + pass the CA certificates from the host to the VM. + ''; + }; }; config = { assertions = - lib.concatLists (lib.flip lib.imap cfg.forwardPorts (i: rule: - [ - { assertion = rule.from == "guest" -> rule.proto == "tcp"; - message = - '' + lib.concatLists ( + lib.flip lib.imap cfg.forwardPorts ( + i: rule: [ + { + assertion = rule.from == "guest" -> rule.proto == "tcp"; + message = '' Invalid virtualisation.forwardPorts..proto: Guest forwarding supports only TCP connections. ''; - } - { assertion = rule.from == "guest" -> lib.hasPrefix "10.0.2." rule.guest.address; - message = - '' + } + { + assertion = rule.from == "guest" -> lib.hasPrefix "10.0.2." rule.guest.address; + message = '' Invalid virtualisation.forwardPorts..guest.address: The address must be in the default VLAN (10.0.2.0/24). ''; - } - ])) ++ [ - { assertion = pkgs.stdenv.hostPlatform.is32bit -> cfg.memorySize < 2047; - message = '' - virtualisation.memorySize is above 2047, but qemu is only able to allocate 2047MB RAM on 32bit max. - ''; - } - { assertion = cfg.directBoot.enable || cfg.directBoot.initrd == options.virtualisation.directBoot.initrd.default; - message = - '' - You changed the default of `virtualisation.directBoot.initrd` but you are not - using QEMU direct boot. This initrd will not be used in your current - boot configuration. + } + ] + ) + ) + ++ [ + { + assertion = pkgs.stdenv.hostPlatform.is32bit -> cfg.memorySize < 2047; + message = '' + virtualisation.memorySize is above 2047, but qemu is only able to allocate 2047MB RAM on 32bit max. + ''; + } + { + assertion = + cfg.directBoot.enable || cfg.directBoot.initrd == options.virtualisation.directBoot.initrd.default; + message = '' + You changed the default of `virtualisation.directBoot.initrd` but you are not + using QEMU direct boot. This initrd will not be used in your current + boot configuration. - Either do not mutate `virtualisation.directBoot.initrd` or enable direct boot. + Either do not mutate `virtualisation.directBoot.initrd` or enable direct boot. - If you have a more advanced usecase, please open an issue or a pull request. - ''; - } - { - assertion = cfg.installBootLoader -> config.system.switch.enable; - message = '' - `system.switch.enable` must be enabled for `virtualisation.installBootLoader` to work. - Please enable it in your configuration. - ''; - } - ]; + If you have a more advanced usecase, please open an issue or a pull request. + ''; + } + { + assertion = cfg.installBootLoader -> config.system.switch.enable; + message = '' + `system.switch.enable` must be enabled for `virtualisation.installBootLoader` to work. + Please enable it in your configuration. + ''; + } + ]; - warnings = - optional (cfg.directBoot.enable && cfg.useBootLoader) - '' - You enabled direct boot and a bootloader, QEMU will not boot your bootloader, rendering - `useBootLoader` useless. You might want to disable one of those options. - ''; + warnings = optional (cfg.directBoot.enable && cfg.useBootLoader) '' + You enabled direct boot and a bootloader, QEMU will not boot your bootloader, rendering + `useBootLoader` useless. You might want to disable one of those options. + ''; # In UEFI boot, we use a EFI-only partition table layout, thus GRUB will fail when trying to install # legacy and UEFI. In order to avoid this, we have to put "nodev" to force UEFI-only installs. @@ -1037,12 +1096,11 @@ in # allow `system.build.toplevel' to be included. (If we had a direct # reference to ${regInfo} here, then we would get a cyclic # dependency.) - boot.postBootCommands = lib.mkIf config.nix.enable - '' - if [[ "$(cat /proc/cmdline)" =~ regInfo=([^ ]*) ]]; then - ${config.nix.package.out}/bin/nix-store --load-db < ''${BASH_REMATCH[1]} - fi - ''; + boot.postBootCommands = lib.mkIf config.nix.enable '' + if [[ "$(cat /proc/cmdline)" =~ regInfo=([^ ]*) ]]; then + ${config.nix.package.out}/bin/nix-store --load-db < ''${BASH_REMATCH[1]} + fi + ''; boot.initrd.availableKernelModules = optional (cfg.qemu.diskInterface == "scsi") "sym53c8xx" @@ -1079,14 +1137,20 @@ in virtualisation.qemu.networkingOptions = let - forwardingOptions = flip concatMapStrings cfg.forwardPorts - ({ proto, from, host, guest }: - if from == "host" - then "hostfwd=${proto}:${host.address}:${toString host.port}-" + - "${guest.address}:${toString guest.port}," - else "'guestfwd=${proto}:${guest.address}:${toString guest.port}-" + - "cmd:${pkgs.netcat}/bin/nc ${host.address} ${toString host.port}'," - ); + forwardingOptions = flip concatMapStrings cfg.forwardPorts ( + { + proto, + from, + host, + guest, + }: + if from == "host" then + "hostfwd=${proto}:${host.address}:${toString host.port}-" + + "${guest.address}:${toString guest.port}," + else + "'guestfwd=${proto}:${guest.address}:${toString guest.port}-" + + "cmd:${pkgs.netcat}/bin/nc ${host.address} ${toString host.port}'," + ); restrictNetworkOption = lib.optionalString cfg.restrictNetwork "restrict=on,"; in [ @@ -1099,20 +1163,29 @@ in "-device virtio-keyboard" ]) (mkIf pkgs.stdenv.hostPlatform.isx86 [ - "-usb" "-device usb-tablet,bus=usb-bus.0" + "-usb" + "-device usb-tablet,bus=usb-bus.0" ]) (mkIf pkgs.stdenv.hostPlatform.isAarch [ - "-device virtio-gpu-pci" "-device usb-ehci,id=usb0" "-device usb-kbd" "-device usb-tablet" - ]) - (let - alphaNumericChars = lowerChars ++ upperChars ++ (map toString (range 0 9)); - # Replace all non-alphanumeric characters with underscores - sanitizeShellIdent = s: concatMapStrings (c: if builtins.elem c alphaNumericChars then c else "_") (stringToCharacters s); - in mkIf cfg.directBoot.enable [ - "-kernel \${NIXPKGS_QEMU_KERNEL_${sanitizeShellIdent config.system.name}:-${config.system.build.toplevel}/kernel}" - "-initrd ${cfg.directBoot.initrd}" - ''-append "$(cat ${config.system.build.toplevel}/kernel-params) init=${config.system.build.toplevel}/init regInfo=${regInfo}/registration ${consoles} $QEMU_KERNEL_PARAMS"'' + "-device virtio-gpu-pci" + "-device usb-ehci,id=usb0" + "-device usb-kbd" + "-device usb-tablet" ]) + ( + let + alphaNumericChars = lowerChars ++ upperChars ++ (map toString (range 0 9)); + # Replace all non-alphanumeric characters with underscores + sanitizeShellIdent = + s: + concatMapStrings (c: if builtins.elem c alphaNumericChars then c else "_") (stringToCharacters s); + in + mkIf cfg.directBoot.enable [ + "-kernel \${NIXPKGS_QEMU_KERNEL_${sanitizeShellIdent config.system.name}:-${config.system.build.toplevel}/kernel}" + "-initrd ${cfg.directBoot.initrd}" + ''-append "$(cat ${config.system.build.toplevel}/kernel-params) init=${config.system.build.toplevel}/init regInfo=${regInfo}/registration ${consoles} $QEMU_KERNEL_PARAMS"'' + ] + ) (mkIf cfg.useEFIBoot [ "-drive if=pflash,format=raw,unit=0,readonly=on,file=${cfg.efi.firmware}" "-drive if=pflash,format=raw,unit=1,readonly=off,file=$NIX_EFI_VARS" @@ -1129,26 +1202,32 @@ in "-device ${cfg.tpm.deviceModel},tpmdev=tpm_dev_0" ]) (mkIf (pkgs.stdenv.hostPlatform.isx86 && cfg.efi.OVMF.systemManagementModeRequired) [ - "-machine" "q35,smm=on" - "-global" "driver=cfi.pflash01,property=secure,value=on" + "-machine" + "q35,smm=on" + "-global" + "driver=cfi.pflash01,property=secure,value=on" ]) ]; virtualisation.qemu.drives = mkMerge [ - (mkIf (cfg.diskImage != null) [{ - name = "root"; - file = ''"$NIX_DISK_IMAGE"''; - driveExtraOpts.cache = "writeback"; - driveExtraOpts.werror = "report"; - deviceExtraOpts.bootindex = "1"; - deviceExtraOpts.serial = rootDriveSerialAttr; - }]) - (mkIf cfg.useNixStoreImage [{ - name = "nix-store"; - file = ''"$TMPDIR"/store.img''; - deviceExtraOpts.bootindex = "2"; - driveExtraOpts.format = "raw"; - }]) + (mkIf (cfg.diskImage != null) [ + { + name = "root"; + file = ''"$NIX_DISK_IMAGE"''; + driveExtraOpts.cache = "writeback"; + driveExtraOpts.werror = "report"; + deviceExtraOpts.bootindex = "1"; + deviceExtraOpts.serial = rootDriveSerialAttr; + } + ]) + (mkIf cfg.useNixStoreImage [ + { + name = "nix-store"; + file = ''"$TMPDIR"/store.img''; + deviceExtraOpts.bootindex = "2"; + driveExtraOpts.format = "raw"; + } + ]) (imap0 (idx: _: { file = "$(pwd)/empty${toString idx}.qcow2"; driveExtraOpts.werror = "report"; @@ -1162,91 +1241,116 @@ in # override by setting `virtualisation.fileSystems = lib.mkForce { };`. fileSystems = lib.mkIf (cfg.fileSystems != { }) (mkVMOverride cfg.fileSystems); - virtualisation.fileSystems = let - mkSharedDir = tag: share: - { + virtualisation.diskSizeAutoSupported = false; + + virtualisation.fileSystems = + let + mkSharedDir = tag: share: { name = share.target; value.device = tag; value.fsType = "9p"; value.neededForBoot = true; - value.options = - [ "trans=virtio" "version=9p2000.L" "msize=${toString cfg.msize}" "x-systemd.requires=modprobe@9pnet_virtio.service" ] - ++ lib.optional (tag == "nix-store") "cache=loose"; + value.options = [ + "trans=virtio" + "version=9p2000.L" + "msize=${toString cfg.msize}" + "x-systemd.requires=modprobe@9pnet_virtio.service" + ] ++ lib.optional (tag == "nix-store") "cache=loose"; }; - in lib.mkMerge [ - (lib.mapAttrs' mkSharedDir cfg.sharedDirectories) - { - "/" = lib.mkIf cfg.useDefaultFilesystems (if cfg.diskImage == null then { - device = "tmpfs"; - fsType = "tmpfs"; - } else { - device = cfg.rootDevice; - fsType = "ext4"; - }); - "/tmp" = lib.mkIf config.boot.tmp.useTmpfs { - device = "tmpfs"; - fsType = "tmpfs"; - neededForBoot = true; - # Sync with systemd's tmp.mount; - options = [ "mode=1777" "strictatime" "nosuid" "nodev" "size=${toString config.boot.tmp.tmpfsSize}" ]; - }; - "/nix/store" = lib.mkIf (cfg.useNixStoreImage || cfg.mountHostNixStore) (if cfg.writableStore then { - overlay = { - lowerdir = [ "/nix/.ro-store" ]; - upperdir = "/nix/.rw-store/upper"; - workdir = "/nix/.rw-store/work"; + in + lib.mkMerge [ + (lib.mapAttrs' mkSharedDir cfg.sharedDirectories) + { + "/" = lib.mkIf cfg.useDefaultFilesystems ( + if cfg.diskImage == null then + { + device = "tmpfs"; + fsType = "tmpfs"; + } + else + { + device = cfg.rootDevice; + fsType = "ext4"; + } + ); + "/tmp" = lib.mkIf config.boot.tmp.useTmpfs { + device = "tmpfs"; + fsType = "tmpfs"; + neededForBoot = true; + # Sync with systemd's tmp.mount; + options = [ + "mode=1777" + "strictatime" + "nosuid" + "nodev" + "size=${toString config.boot.tmp.tmpfsSize}" + ]; }; - } else { - device = "/nix/.ro-store"; - options = [ "bind" ]; - }); - "/nix/.ro-store" = lib.mkIf cfg.useNixStoreImage { - device = "/dev/disk/by-label/${nixStoreFilesystemLabel}"; - fsType = "erofs"; - neededForBoot = true; - options = [ "ro" ]; - }; - "/nix/.rw-store" = lib.mkIf (cfg.writableStore && cfg.writableStoreUseTmpfs) { - fsType = "tmpfs"; - options = [ "mode=0755" ]; - neededForBoot = true; - }; - "${config.boot.loader.efi.efiSysMountPoint}" = lib.mkIf (cfg.useBootLoader && cfg.bootPartition != null) { - device = cfg.bootPartition; - fsType = "vfat"; - }; - } - ]; + "/nix/store" = lib.mkIf (cfg.useNixStoreImage || cfg.mountHostNixStore) ( + if cfg.writableStore then + { + overlay = { + lowerdir = [ "/nix/.ro-store" ]; + upperdir = "/nix/.rw-store/upper"; + workdir = "/nix/.rw-store/work"; + }; + } + else + { + device = "/nix/.ro-store"; + options = [ "bind" ]; + } + ); + "/nix/.ro-store" = lib.mkIf cfg.useNixStoreImage { + device = "/dev/disk/by-label/${nixStoreFilesystemLabel}"; + fsType = "erofs"; + neededForBoot = true; + options = [ "ro" ]; + }; + "/nix/.rw-store" = lib.mkIf (cfg.writableStore && cfg.writableStoreUseTmpfs) { + fsType = "tmpfs"; + options = [ "mode=0755" ]; + neededForBoot = true; + }; + "${config.boot.loader.efi.efiSysMountPoint}" = + lib.mkIf (cfg.useBootLoader && cfg.bootPartition != null) + { + device = cfg.bootPartition; + fsType = "vfat"; + }; + } + ]; swapDevices = (if cfg.useDefaultFilesystems then mkVMOverride else mkDefault) [ ]; - boot.initrd.luks.devices = (if cfg.useDefaultFilesystems then mkVMOverride else mkDefault) {}; + boot.initrd.luks.devices = (if cfg.useDefaultFilesystems then mkVMOverride else mkDefault) { }; # Don't run ntpd in the guest. It should get the correct time from KVM. services.timesyncd.enable = false; services.qemuGuest.enable = cfg.qemu.guestAgent.enable; - system.build.vm = hostPkgs.runCommand "nixos-vm" { - preferLocalBuild = true; - meta.mainProgram = "run-${config.system.name}-vm"; - } - '' - mkdir -p $out/bin - ln -s ${config.system.build.toplevel} $out/system - ln -s ${hostPkgs.writeScript "run-nixos-vm" startVM} $out/bin/run-${config.system.name}-vm - ''; + system.build.vm = + hostPkgs.runCommand "nixos-vm" + { + preferLocalBuild = true; + meta.mainProgram = "run-${config.system.name}-vm"; + } + '' + mkdir -p $out/bin + ln -s ${config.system.build.toplevel} $out/system + ln -s ${hostPkgs.writeScript "run-nixos-vm" startVM} $out/bin/run-${config.system.name}-vm + ''; # When building a regular system configuration, override whatever # video driver the host uses. services.xserver.videoDrivers = mkVMOverride [ "modesetting" ]; services.xserver.defaultDepth = mkVMOverride 0; services.xserver.resolutions = mkVMOverride [ cfg.resolution ]; - services.xserver.monitorSection = - '' - # Set a higher refresh rate so that resolutions > 800x600 work. - HorizSync 30-140 - VertRefresh 50-160 - ''; + services.xserver.monitorSection = '' + # Set a higher refresh rate so that resolutions > 800x600 work. + HorizSync 30-140 + VertRefresh 50-160 + ''; # Wireless won't work in the VM. networking.wireless.enable = mkVMOverride false; @@ -1257,8 +1361,10 @@ in networking.usePredictableInterfaceNames = false; - system.requiredKernelConfig = with config.lib.kernelConfig; - [ (isEnabled "VIRTIO_BLK") + system.requiredKernelConfig = + with config.lib.kernelConfig; + [ + (isEnabled "VIRTIO_BLK") (isEnabled "VIRTIO_PCI") (isEnabled "VIRTIO_NET") (isEnabled "EXT4_FS") @@ -1270,10 +1376,12 @@ in (isYes "NET_CORE") (isYes "INET") (isYes "NETWORK_FILESYSTEMS") - ] ++ optionals (!cfg.graphics) [ + ] + ++ optionals (!cfg.graphics) [ (isYes "SERIAL_8250_CONSOLE") (isYes "SERIAL_8250") - ] ++ optionals (cfg.writableStore) [ + ] + ++ optionals (cfg.writableStore) [ (isEnabled "OVERLAY_FS") ]; diff --git a/nixos/modules/virtualisation/virtualbox-image.nix b/nixos/modules/virtualisation/virtualbox-image.nix index 4ab5d17ecd495..22646011d33de 100644 --- a/nixos/modules/virtualisation/virtualbox-image.nix +++ b/nixos/modules/virtualisation/virtualbox-image.nix @@ -1,22 +1,33 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: let cfg = config.virtualbox; - -in { +in +{ + imports = [ + ./disk-size-option.nix + (lib.mkRenamedOptionModuleWith { + sinceRelease = 2411; + from = [ + "virtualbox" + "baseImageSize" + ]; + to = [ + "virtualisation" + "diskSize" + ]; + }) + ]; options = { virtualbox = { - baseImageSize = lib.mkOption { - type = with lib.types; either (enum [ "auto" ]) int; - default = "auto"; - example = 50 * 1024; - description = '' - The size of the VirtualBox base image in MiB. - ''; - }; baseImageFreeSpace = lib.mkOption { - type = with lib.types; int; + type = lib.types.int; default = 30 * 1024; description = '' Free space in the VirtualBox base image in MiB. @@ -51,7 +62,14 @@ in { ''; }; params = lib.mkOption { - type = with lib.types; attrsOf (oneOf [ str int bool (listOf str) ]); + type = + with lib.types; + attrsOf (oneOf [ + str + int + bool + (listOf str) + ]); example = { audio = "alsa"; rtcuseutc = "on"; @@ -64,11 +82,21 @@ in { ''; }; exportParams = lib.mkOption { - type = with lib.types; listOf (oneOf [ str int bool (listOf str) ]); + type = + with lib.types; + listOf (oneOf [ + str + int + bool + (listOf str) + ]); example = [ - "--vsys" "0" "--vendor" "ACME Inc." + "--vsys" + "0" + "--vendor" + "ACME Inc." ]; - default = []; + default = [ ]; description = '' Parameters passed to the Virtualbox export command. @@ -86,23 +114,25 @@ in { mountPoint = "/home/demo/storage"; size = 100 * 1024; }; - type = lib.types.nullOr (lib.types.submodule { - options = { - size = lib.mkOption { - type = lib.types.int; - description = "Size in MiB"; + type = lib.types.nullOr ( + lib.types.submodule { + options = { + size = lib.mkOption { + type = lib.types.int; + description = "Size in MiB"; + }; + label = lib.mkOption { + type = lib.types.str; + default = "vm-extra-storage"; + description = "Label for the disk partition"; + }; + mountPoint = lib.mkOption { + type = lib.types.str; + description = "Path where to mount this disk."; + }; }; - label = lib.mkOption { - type = lib.types.str; - default = "vm-extra-storage"; - description = "Label for the disk partition"; - }; - mountPoint = lib.mkOption { - type = lib.types.str; - description = "Path where to mount this disk."; - }; - }; - }); + } + ); }; postExportCommands = lib.mkOption { type = lib.types.lines; @@ -122,7 +152,14 @@ in { ''; }; storageController = lib.mkOption { - type = with lib.types; attrsOf (oneOf [ str int bool (listOf str) ]); + type = + with lib.types; + attrsOf (oneOf [ + str + int + bool + (listOf str) + ]); example = { name = "SCSI"; add = "scsi"; @@ -148,6 +185,9 @@ in { }; config = { + # Use a priority just below mkOptionDefault (1500) instead of lib.mkDefault + # to avoid breaking existing configs using that. + virtualisation.diskSize = lib.mkOverride 1490 (50 * 1024); virtualbox.params = lib.mkMerge [ (lib.mapAttrs (name: lib.mkDefault) { @@ -172,80 +212,83 @@ in { inherit pkgs lib config; partitionTableType = "legacy"; - diskSize = cfg.baseImageSize; + inherit (config.virtualisation) diskSize; additionalSpace = "${toString cfg.baseImageFreeSpace}M"; - postVM = - '' - export HOME=$PWD - export PATH=${pkgs.virtualbox}/bin:$PATH - - echo "converting image to VirtualBox format..." - VBoxManage convertfromraw $diskImage disk.vdi - - ${lib.optionalString (cfg.extraDisk != null) '' - echo "creating extra disk: data-disk.raw" - dataDiskImage=data-disk.raw - truncate -s ${toString cfg.extraDisk.size}M $dataDiskImage - - parted --script $dataDiskImage -- \ - mklabel msdos \ - mkpart primary ext4 1MiB -1 - eval $(partx $dataDiskImage -o START,SECTORS --nr 1 --pairs) - mkfs.ext4 -F -L ${cfg.extraDisk.label} $dataDiskImage -E offset=$(sectorsToBytes $START) $(sectorsToKilobytes $SECTORS)K - echo "creating extra disk: data-disk.vdi" - VBoxManage convertfromraw $dataDiskImage data-disk.vdi - ''} - - echo "creating VirtualBox VM..." - vmName="${cfg.vmName}"; - VBoxManage createvm --name "$vmName" --register \ - --ostype ${if pkgs.stdenv.hostPlatform.system == "x86_64-linux" then "Linux26_64" else "Linux26"} - VBoxManage modifyvm "$vmName" \ - --memory ${toString cfg.memorySize} \ - ${lib.cli.toGNUCommandLineShell { } cfg.params} - VBoxManage storagectl "$vmName" ${lib.cli.toGNUCommandLineShell { } cfg.storageController} - VBoxManage storageattach "$vmName" --storagectl ${cfg.storageController.name} --port 0 --device 0 --type hdd \ - --medium disk.vdi - ${lib.optionalString (cfg.extraDisk != null) '' - VBoxManage storageattach "$vmName" --storagectl ${cfg.storageController.name} --port 1 --device 0 --type hdd \ - --medium data-disk.vdi - ''} - - echo "exporting VirtualBox VM..." - mkdir -p $out - fn="$out/${cfg.vmFileName}" - VBoxManage export "$vmName" --output "$fn" --options manifest ${lib.escapeShellArgs cfg.exportParams} - ${cfg.postExportCommands} - - rm -v $diskImage - - mkdir -p $out/nix-support - echo "file ova $fn" >> $out/nix-support/hydra-build-products - ''; + postVM = '' + export HOME=$PWD + export PATH=${pkgs.virtualbox}/bin:$PATH + + echo "converting image to VirtualBox format..." + VBoxManage convertfromraw $diskImage disk.vdi + + ${lib.optionalString (cfg.extraDisk != null) '' + echo "creating extra disk: data-disk.raw" + dataDiskImage=data-disk.raw + truncate -s ${toString cfg.extraDisk.size}M $dataDiskImage + + parted --script $dataDiskImage -- \ + mklabel msdos \ + mkpart primary ext4 1MiB -1 + eval $(partx $dataDiskImage -o START,SECTORS --nr 1 --pairs) + mkfs.ext4 -F -L ${cfg.extraDisk.label} $dataDiskImage -E offset=$(sectorsToBytes $START) $(sectorsToKilobytes $SECTORS)K + echo "creating extra disk: data-disk.vdi" + VBoxManage convertfromraw $dataDiskImage data-disk.vdi + ''} + + echo "creating VirtualBox VM..." + vmName="${cfg.vmName}"; + VBoxManage createvm --name "$vmName" --register \ + --ostype ${if pkgs.stdenv.hostPlatform.system == "x86_64-linux" then "Linux26_64" else "Linux26"} + VBoxManage modifyvm "$vmName" \ + --memory ${toString cfg.memorySize} \ + ${lib.cli.toGNUCommandLineShell { } cfg.params} + VBoxManage storagectl "$vmName" ${lib.cli.toGNUCommandLineShell { } cfg.storageController} + VBoxManage storageattach "$vmName" --storagectl ${cfg.storageController.name} --port 0 --device 0 --type hdd \ + --medium disk.vdi + ${lib.optionalString (cfg.extraDisk != null) '' + VBoxManage storageattach "$vmName" --storagectl ${cfg.storageController.name} --port 1 --device 0 --type hdd \ + --medium data-disk.vdi + ''} + + echo "exporting VirtualBox VM..." + mkdir -p $out + fn="$out/${cfg.vmFileName}" + VBoxManage export "$vmName" --output "$fn" --options manifest ${lib.escapeShellArgs cfg.exportParams} + ${cfg.postExportCommands} + + rm -v $diskImage + + mkdir -p $out/nix-support + echo "file ova $fn" >> $out/nix-support/hydra-build-products + ''; }; - fileSystems = { - "/" = { - device = "/dev/disk/by-label/nixos"; - autoResize = true; - fsType = "ext4"; - }; - } // (lib.optionalAttrs (cfg.extraDisk != null) { - ${cfg.extraDisk.mountPoint} = { - device = "/dev/disk/by-label/" + cfg.extraDisk.label; - autoResize = true; - fsType = "ext4"; - }; - }); + fileSystems = + { + "/" = { + device = "/dev/disk/by-label/nixos"; + autoResize = true; + fsType = "ext4"; + }; + } + // (lib.optionalAttrs (cfg.extraDisk != null) { + ${cfg.extraDisk.mountPoint} = { + device = "/dev/disk/by-label/" + cfg.extraDisk.label; + autoResize = true; + fsType = "ext4"; + }; + }); boot.growPartition = true; boot.loader.grub.device = "/dev/sda"; - swapDevices = [{ - device = "/var/swap"; - size = 2048; - }]; + swapDevices = [ + { + device = "/var/swap"; + size = 2048; + } + ]; virtualisation.virtualbox.guest.enable = true; diff --git a/nixos/release.nix b/nixos/release.nix index 8a8c45f8f8425..797a07ec575e4 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -312,7 +312,7 @@ in rec { [ configuration versionModule ./maintainers/scripts/ec2/amazon-image.nix - ({ ... }: { amazonImage.sizeMB = "auto"; }) + ({ ... }: { virtualisation.diskSize = "auto"; }) ]; }).config.system.build.amazonImage) diff --git a/nixos/tests/mollysocket.nix b/nixos/tests/mollysocket.nix index 8cbd0c0272e09..5135d79fcba9b 100644 --- a/nixos/tests/mollysocket.nix +++ b/nixos/tests/mollysocket.nix @@ -16,12 +16,10 @@ in { }; testScript = '' - import json - mollysocket.wait_for_unit("mollysocket.service") mollysocket.wait_for_open_port(${toString port}) out = mollysocket.succeed("curl --fail http://127.0.0.1:${toString port}") - assert json.loads(out)["mollysocket"]["version"] == "${toString pkgs.mollysocket.version}" + assert "Version ${pkgs.mollysocket.version}" in out ''; }) diff --git a/pkgs/applications/display-managers/greetd/gtkgreet.nix b/pkgs/applications/display-managers/greetd/gtkgreet.nix index 10389c262742f..652459e9715e6 100644 --- a/pkgs/applications/display-managers/greetd/gtkgreet.nix +++ b/pkgs/applications/display-managers/greetd/gtkgreet.nix @@ -24,11 +24,13 @@ stdenv.mkDerivation rec { sha256 = "sha256-GKBYql0hzqB6uY87SsAqHwf3qLAr7xznMnAjRtP4HS8="; }; + depsBuildBuild = [ pkg-config ]; nativeBuildInputs = [ pkg-config meson ninja cmake + scdoc wrapGAppsHook3 ]; @@ -36,7 +38,6 @@ stdenv.mkDerivation rec { gtk3 gtk-layer-shell json_c - scdoc librsvg ]; @@ -44,6 +45,11 @@ stdenv.mkDerivation rec { "-Dlayershell=enabled" ]; + postPatch = '' + substituteInPlace meson.build \ + --replace "dependency('scdoc'," "dependency('scdoc', native:true," + ''; + # G_APPLICATION_FLAGS_NONE is deprecated in GLib 2.73.3+. env.NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations"; diff --git a/pkgs/applications/display-managers/greetd/tuigreet.nix b/pkgs/applications/display-managers/greetd/tuigreet.nix index 11ca43c61436b..39e6d482f2c0f 100644 --- a/pkgs/applications/display-managers/greetd/tuigreet.nix +++ b/pkgs/applications/display-managers/greetd/tuigreet.nix @@ -1,8 +1,11 @@ -{ lib -, rustPlatform -, fetchFromGitHub -}: +{ + lib, + rustPlatform, + fetchFromGitHub, + installShellFiles, + scdoc, +}: rustPlatform.buildRustPackage rec { pname = "tuigreet"; version = "0.9.1"; @@ -16,6 +19,16 @@ rustPlatform.buildRustPackage rec { cargoHash = "sha256-RkJjAmZ++4nc/lLh8g0LxGq2DjZGxQEjFOl8Yzx116A="; + nativeBuildInputs = [ + installShellFiles + scdoc + ]; + + postInstall = '' + scdoc < contrib/man/tuigreet-1.scd > tuigreet.1 + installManPage tuigreet.1 + ''; + meta = { description = "Graphical console greeter for greetd"; homepage = "https://github.com/apognu/tuigreet"; diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/el-easydraw/package.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/el-easydraw/package.nix index b69423e583310..7cb806b2833db 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/el-easydraw/package.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/el-easydraw/package.nix @@ -8,13 +8,13 @@ melpaBuild { pname = "edraw"; - version = "1.2.0-unstable-2024-07-24"; + version = "1.2.0-unstable-2024-10-04"; src = fetchFromGitHub { owner = "misohena"; repo = "el-easydraw"; - rev = "6f93e744d5f62de2176d3d0f0aa1f9e8d84ccefd"; - hash = "sha256-dXu4hDC4qE7W+KkWb9HIqYwesOKisMiZSTAulDpjyfA="; + rev = "ad740d87e768052b0ef5b5e7f0822c7ac1b238fb"; + hash = "sha256-xdyDikE8fUQ12Ra5j5lQUHVLKpTYtvfn1DosusQt61Q="; }; propagatedUserEnvPkgs = [ gzip ]; diff --git a/pkgs/applications/editors/vscode/extensions/visualjj.visualjj/default.nix b/pkgs/applications/editors/vscode/extensions/visualjj.visualjj/default.nix index 1cee541ab6290..d30107a1fb030 100644 --- a/pkgs/applications/editors/vscode/extensions/visualjj.visualjj/default.nix +++ b/pkgs/applications/editors/vscode/extensions/visualjj.visualjj/default.nix @@ -3,32 +3,31 @@ stdenv, vscode-utils, fetchurl, - ... }: let - version = "0.12.0"; + version = "0.12.1"; sources = { "x86_64-linux" = { arch = "linux-x64"; url = "https://download.visualjj.com/visualjj-linux-x64-${version}.vsix"; - hash = "sha256-7zIe5yTSpAhkG4S+k2SAnp4ZOrbbSsdxExpRfMG5EAo="; + hash = "sha256-Tf26s4YDyjYUrVdKu9aYMMntirZyNRgnETMzO/EfFCA="; }; "x86_64-darwin" = { arch = "darwin-x64"; url = "https://download.visualjj.com/visualjj-darwin-x64-${version}.vsix"; - hash = "sha256-0mBNcrfDUqdPfQyc38/Z8YppFP8u9tbxpOLWrQriviE="; + hash = "sha256-2u92qFaRIirCrvtuxeqVqt6zWEobS1f5SX26SGZF4xE="; }; "aarch64-linux" = { arch = "linux-arm64"; url = "https://download.visualjj.com/visualjj-linux-arm64-${version}.vsix"; - hash = "sha256-YvKTs+kA4PghQkduq3aIx20bnGv1VnCtMqLmkLADfbE="; + hash = "sha256-+NUdF/KIWhLXOGtUgmNI9JF+L+f/4o064gznpLiORVM="; }; "aarch64-darwin" = { arch = "darwin-arm64"; url = "https://download.visualjj.com/visualjj-darwin-arm64-${version}.vsix"; - hash = "sha256-gV8VKwPBsgUCDd/A02ASNozuBl/tt5FW0xKOgVKVgAM="; + hash = "sha256-GVEOTgfSKc0YXZUF4WGl/56Jd4ucaeDm9nB+267BQoM="; }; }; in diff --git a/pkgs/applications/emulators/retroarch/default.nix b/pkgs/applications/emulators/retroarch/default.nix index 581315d933b11..378f514c95eb8 100644 --- a/pkgs/applications/emulators/retroarch/default.nix +++ b/pkgs/applications/emulators/retroarch/default.nix @@ -36,6 +36,7 @@ , udev , vulkan-loader , wayland +, wayland-scanner , wrapQtAppsHook , zlib }: @@ -76,7 +77,7 @@ stdenv.mkDerivation rec { ] ++ lib.optional enableNvidiaCgToolkit nvidia_cg_toolkit ++ lib.optional withVulkan vulkan-loader ++ - lib.optional withWayland wayland ++ + lib.optionals withWayland [wayland wayland-scanner] ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-lib dbus diff --git a/pkgs/applications/graphics/minidjvu/default.nix b/pkgs/applications/graphics/minidjvu/default.nix index a8d3db4d0a943..c656eb84f75c7 100644 --- a/pkgs/applications/graphics/minidjvu/default.nix +++ b/pkgs/applications/graphics/minidjvu/default.nix @@ -26,5 +26,8 @@ stdenv.mkDerivation rec { maintainers = [ ]; platforms = lib.platforms.unix; mainProgram = "minidjvu"; + knownVulnerabilities = [ + "minidjvu is vulnerable to a number of out-of-bound read vulnerabilities, potentially causing denials of service (CVE-2017-12441, CVE-2017-12442, CVE-2017-12443, CVE-2017-12444, CVE-2017-12445)" + ]; }; } diff --git a/pkgs/applications/misc/camunda-modeler/default.nix b/pkgs/applications/misc/camunda-modeler/default.nix index 3dce538aa007f..0972247271a8c 100644 --- a/pkgs/applications/misc/camunda-modeler/default.nix +++ b/pkgs/applications/misc/camunda-modeler/default.nix @@ -9,11 +9,11 @@ stdenvNoCC.mkDerivation rec { pname = "camunda-modeler"; - version = "5.26.0"; + version = "5.28.0"; src = fetchurl { url = "https://github.com/camunda/camunda-modeler/releases/download/v${version}/camunda-modeler-${version}-linux-x64.tar.gz"; - hash = "sha256-jtTlqVsd+EGBkh05O+fRn6e6Q+Gw68uGruQqaTfsolM="; + hash = "sha256-0xOgnpHoFxBzDoDGI7bcBFRu47HDYASIu4ApQo288Bo="; }; sourceRoot = "camunda-modeler-${version}-linux-x64"; diff --git a/pkgs/applications/misc/chatblade/default.nix b/pkgs/applications/misc/chatblade/default.nix index 696cf52ba4146..3927c57950aca 100644 --- a/pkgs/applications/misc/chatblade/default.nix +++ b/pkgs/applications/misc/chatblade/default.nix @@ -2,12 +2,12 @@ python3Packages.buildPythonApplication rec { pname = "chatblade"; - version = "0.6.4"; + version = "0.7.0"; format = "setuptools"; src = fetchPypi { inherit pname version; - hash = "sha256-d8XavZBuWsuIUxraC2XaWM6tgo2JmsPZwzyl9Rj5wWM="; + hash = "sha256-v6X5aqArhp33bm8JELDCUoxE3nsvla4I3n0ZLLMMeJI="; }; doCheck = false; # there are no tests diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/pkgs/applications/networking/browsers/chromium/upstream-info.nix index 448a50432448d..202375b4867ed 100644 --- a/pkgs/applications/networking/browsers/chromium/upstream-info.nix +++ b/pkgs/applications/networking/browsers/chromium/upstream-info.nix @@ -1,11 +1,11 @@ { stable = { chromedriver = { - hash_darwin = "sha256-YndBzhUNmn5tJdCqLmpUrs2WBXXpTxiKCNczWEz6DU4="; + hash_darwin = "sha256-SZfl93TcaD9j59zGflPFmHgIP5NaS8bgDi3l3SRRFiI="; hash_darwin_aarch64 = - "sha256-taG58kMgQUD40aGqnyx9O9e9m4qGsTWX57cjD3NeHm4="; - hash_linux = "sha256-raWGzhjqWdm5bRK+Z7Qga8QM9kQYSXxdL5N+wk1hlXI="; - version = "130.0.6723.58"; + "sha256-wLX63aA8l+23ehdBHPcXtoZ2WEhrmYVKzqUDBbrhSRw="; + hash_linux = "sha256-kP6N7fM+7+S3JwT2JvqfWDRCfAQiNc/rQlHxjJ8DNuo="; + version = "130.0.6723.69"; }; deps = { gn = { @@ -15,8 +15,8 @@ version = "2024-09-09"; }; }; - hash = "sha256-w1xQr+B7ROeCqBRN+M9vmh45YTRqVfjDYSsN5saDuDo="; - version = "130.0.6723.58"; + hash = "sha256-k0epbUw9D3Vx7ELNDXIFEnsML+cYvDnHZFOW0kz4Kq8="; + version = "130.0.6723.69"; }; ungoogled-chromium = { deps = { @@ -27,11 +27,11 @@ version = "2024-09-09"; }; ungoogled-patches = { - hash = "sha256-M+aJ1hhFV88lBBPl9xBYpYRut7yHa/HJYXoclckaZVM="; - rev = "130.0.6723.58-1"; + hash = "sha256-usNlX/ol8Zn3lQTvp311DuyYbSHF/HN0r7k8qeUIJmU="; + rev = "130.0.6723.69-1"; }; }; - hash = "sha256-w1xQr+B7ROeCqBRN+M9vmh45YTRqVfjDYSsN5saDuDo="; - version = "130.0.6723.58"; + hash = "sha256-k0epbUw9D3Vx7ELNDXIFEnsML+cYvDnHZFOW0kz4Kq8="; + version = "130.0.6723.69"; }; } diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index 2508babb9881d..14efee3771380 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -27,13 +27,13 @@ "vendorHash": "sha256-jK7JuARpoxq7hvq5+vTtUwcYot0YqlOZdtDwq4IqKvk=" }, "aiven": { - "hash": "sha256-J/ZdlrYRo7Npr9zYZxvs0LWwqZN/r+IcgfOGMYaIqo4=", + "hash": "sha256-nWa9ohf3DOiMloJ5J8UcSZjJNHjRZw1sD6k5R8m6LWA=", "homepage": "https://registry.terraform.io/providers/aiven/aiven", "owner": "aiven", "repo": "terraform-provider-aiven", - "rev": "v4.27.0", + "rev": "v4.28.0", "spdx": "MIT", - "vendorHash": "sha256-vlL4RLe89MZ3z5xyC3r3kI4RqWXwbqWNQZlOxxpsGZo=" + "vendorHash": "sha256-UM4EjL1qXOn2TMOupVxSyJVLarHIGTySXNJtWPrseSE=" }, "akamai": { "hash": "sha256-KnX+PAhT7TPp9SRkGwYPvxgk/ExaJPr7vKj9hTbJGhg=", @@ -525,11 +525,11 @@ "vendorHash": "sha256-jAYaVNWMEGLDPgnyD2VJwVpDwn9lcvBNLnKPdlqdRZc=" }, "gridscale": { - "hash": "sha256-GVOjkena3zRaOxO3YRYf+gfM2/CRm8VajpuWGTU0F1Y=", + "hash": "sha256-J4ZLexpjYXxOTaqih0+Nucyf2soYXxGiB38xAeXUJKs=", "homepage": "https://registry.terraform.io/providers/gridscale/gridscale", "owner": "gridscale", "repo": "terraform-provider-gridscale", - "rev": "v1.26.0", + "rev": "v1.27.0", "spdx": "MPL-2.0", "vendorHash": null }, diff --git a/pkgs/applications/networking/nextcloud-client/default.nix b/pkgs/applications/networking/nextcloud-client/default.nix index 01ced9fc86314..8c09422a11ffc 100644 --- a/pkgs/applications/networking/nextcloud-client/default.nix +++ b/pkgs/applications/networking/nextcloud-client/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { pname = "nextcloud-client"; - version = "3.14.1"; + version = "3.14.2"; outputs = [ "out" "dev" ]; @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { owner = "nextcloud-releases"; repo = "desktop"; rev = "refs/tags/v${version}"; - hash = "sha256-bUqHegW38NQJn4TnEQt9wRJFqR6fbLpvQvmWF3akekc="; + hash = "sha256-vxCt/FNfQZ7rWME2zLGESgW/+FNoENZeCr8FFcGwoFQ="; }; patches = [ diff --git a/pkgs/applications/networking/remote/freerdp/3.nix b/pkgs/applications/networking/remote/freerdp/3.nix index 814c2e3989cef..3071928503b82 100644 --- a/pkgs/applications/networking/remote/freerdp/3.nix +++ b/pkgs/applications/networking/remote/freerdp/3.nix @@ -68,24 +68,15 @@ stdenv.mkDerivation (finalAttrs: { pname = "freerdp"; - version = "3.8.0"; + version = "3.9.0"; src = fetchFromGitHub { owner = "FreeRDP"; repo = "FreeRDP"; rev = finalAttrs.version; - hash = "sha256-zqqPfAXHjY4IV18mgbNxWDw7ZP/7SvoYn1u0FahpcNk="; + hash = "sha256-oThlqUpEmhcLpMMYExMA3GbtB2+lq6oc5TRZt0eKRLA="; }; - patches = [ - (fetchpatch { - name = "clang-fix-unwind-getlanguagespecificdata.patch"; - url = "https://github.com/FreeRDP/FreeRDP/commit/6fb7bfd043d159d3819486fb601b598102cca823.patch"; - hash = "sha256-U2Oz+IVvlIdg7kJ4rgAWhJVdzthY50YaCYKMMc2he7Y="; - }) - ]; - - postPatch = '' export HOME=$TMP diff --git a/pkgs/applications/networking/sync/rsync/rrsync.nix b/pkgs/applications/networking/sync/rsync/rrsync.nix index 67cec6eeeeafa..7bbdbf3adc1ec 100644 --- a/pkgs/applications/networking/sync/rsync/rrsync.nix +++ b/pkgs/applications/networking/sync/rsync/rrsync.nix @@ -27,5 +27,6 @@ stdenv.mkDerivation { meta = rsync.meta // { description = "Helper to run rsync-only environments from ssh-logins"; + mainProgram = "rrsync"; }; } diff --git a/pkgs/applications/science/electronics/nvc/default.nix b/pkgs/applications/science/electronics/nvc/default.nix index 0c557fbeca3e1..0ec5dcb683a55 100644 --- a/pkgs/applications/science/electronics/nvc/default.nix +++ b/pkgs/applications/science/electronics/nvc/default.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation rec { pname = "nvc"; - version = "1.14.0"; + version = "1.14.1"; src = fetchFromGitHub { owner = "nickg"; repo = "nvc"; rev = "r${version}"; - hash = "sha256-xaJt3zMAv+Op7cQAaKJOyI28oEssMw/7zvEnfReS4aw="; + hash = "sha256-EPnHm2bZCui8K/H1a6+pgec3Lrf+zAlFoKYBnLspdQQ="; }; nativeBuildInputs = [ diff --git a/pkgs/applications/science/math/eigenmath/default.nix b/pkgs/applications/science/math/eigenmath/default.nix index e1834548525b7..6e716fa77a7e9 100644 --- a/pkgs/applications/science/math/eigenmath/default.nix +++ b/pkgs/applications/science/math/eigenmath/default.nix @@ -7,13 +7,13 @@ stdenv.mkDerivation rec { pname = "eigenmath"; - version = "3.27-unstable-2024-10-02"; + version = "3.27-unstable-2024-10-18"; src = fetchFromGitHub { owner = "georgeweigt"; repo = pname; - rev = "57a7c74623cdb6ee7f3b67873f6e9af976234e9d"; - hash = "sha256-7xoSFLE4yPuWzoIS65UficBa086o1Yil0Z2ks8EARy0="; + rev = "a9d3be2c64a35e06691ba61fd1bf0d9b9cd5822d"; + hash = "sha256-3t5AsUTNXnkXUfrGeGWcMwwC8kBhpSVx1ioVfKXloZA="; }; checkPhase = let emulator = stdenv.hostPlatform.emulator buildPackages; in '' diff --git a/pkgs/applications/science/misc/root/default.nix b/pkgs/applications/science/misc/root/default.nix index 32de529c55449..b3fc3e1525114 100644 --- a/pkgs/applications/science/misc/root/default.nix +++ b/pkgs/applications/science/misc/root/default.nix @@ -4,6 +4,7 @@ , fetchgit , fetchurl , makeWrapper +, writeText , cmake , coreutils , git @@ -225,7 +226,11 @@ stdenv.mkDerivation rec { ''; # error: aligned allocation function of type 'void *(std::size_t, std::align_val_t)' is only available on macOS 10.13 or newer - CXXFLAGS = lib.optional (stdenv.hostPlatform.system == "x86_64-darwin") "-faligned-allocation"; + env.CXXFLAGS = lib.optionalString (stdenv.hostPlatform.system == "x86_64-darwin") "-faligned-allocation"; + + # workaround for + # https://github.com/root-project/root/issues/14778 + env.NIX_LDFLAGS = lib.optionalString (!stdenv.isDarwin) "--version-script,${writeText "version.map" "ROOT { global: *; };"}"; # To use the debug information on the fly (without installation) # add the outPath of root.debug into NIX_DEBUG_INFO_DIRS (in PATH-like format) diff --git a/pkgs/applications/version-management/git-repo/default.nix b/pkgs/applications/version-management/git-repo/default.nix index f9c59ad18ebff..7a95582ee0ed3 100644 --- a/pkgs/applications/version-management/git-repo/default.nix +++ b/pkgs/applications/version-management/git-repo/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation rec { pname = "git-repo"; - version = "2.47"; + version = "2.48"; src = fetchFromGitHub { owner = "android"; repo = "tools_repo"; rev = "v${version}"; - hash = "sha256-LFzUvDMNGxp5HzdjlaN0VS7HpIzN8GA5MQL61teKRvo="; + hash = "sha256-BrdB6SqQlLRvXbfIXHqaKD+F/SBzqGru6ISkUrEnUeQ="; }; # Fix 'NameError: name 'ssl' is not defined' diff --git a/pkgs/applications/version-management/git-town/default.nix b/pkgs/applications/version-management/git-town/default.nix index 00d2722bcdbe4..226afe3103238 100644 --- a/pkgs/applications/version-management/git-town/default.nix +++ b/pkgs/applications/version-management/git-town/default.nix @@ -2,13 +2,13 @@ buildGoModule rec { pname = "git-town"; - version = "16.3.0"; + version = "16.4.1"; src = fetchFromGitHub { owner = "git-town"; repo = "git-town"; rev = "v${version}"; - hash = "sha256-q4bRUz6ZI6y0AYEDMUBMN1YJxmHkIDDkUiMd4rQbDHk="; + hash = "sha256-8Xr1R6txsJBGzBtvvKOCg2lcAHksl4hNPc9zySkTfdg="; }; vendorHash = null; diff --git a/pkgs/build-support/build-graalvm-native-image/default.nix b/pkgs/build-support/build-graalvm-native-image/default.nix index 0ac84b0005751..d2f3aef8860cc 100644 --- a/pkgs/build-support/build-graalvm-native-image/default.nix +++ b/pkgs/build-support/build-graalvm-native-image/default.nix @@ -53,7 +53,7 @@ stdenv.mkDerivation ({ buildPhase = args.buildPhase or '' runHook preBuild - native-image -jar "$jar" $(export -p | sed -n 's/^declare -x \([^=]\+\)=.*$/ -E\1/p' | tr -d \\n) ''${nativeImageBuildArgs[@]} + native-image -jar "$jar" ''${nativeImageBuildArgs[@]} runHook postBuild ''; diff --git a/pkgs/by-name/ar/artalk/package.nix b/pkgs/by-name/ar/artalk/package.nix index c56c066e2acf7..96de91650e7b5 100644 --- a/pkgs/by-name/ar/artalk/package.nix +++ b/pkgs/by-name/ar/artalk/package.nix @@ -5,34 +5,31 @@ artalk, fetchurl, installShellFiles, + versionCheckHook, stdenv, testers, nixosTests, }: buildGoModule rec { pname = "artalk"; - version = "2.9.0"; + version = "2.9.1"; src = fetchFromGitHub { owner = "ArtalkJS"; repo = "artalk"; rev = "refs/tags/v${version}"; - hash = "sha256-5tUUlkGeT4kY/81EQ29M6z+JnBT4YCa8gecbV9WMuDo="; + hash = "sha256-gzagE3muNpX/dwF45p11JAN9ElsGXNFQ3fCvF1QhvdU="; }; web = fetchurl { url = "https://github.com/${src.owner}/${src.repo}/releases/download/v${version}/artalk_ui.tar.gz"; - hash = "sha256-Cx3fDpnl52kwILzH9BBLfsWe5qEbIl/ecJd1wJEB/Hc="; + hash = "sha256-ckKC4lErKVdJuJ+pGysmMR96a9LkrCYnWB4j6VPP8OY="; }; - CGO_ENABLED = 1; - - vendorHash = "sha256-edqmv/Q99pgnScJqCmLwjHd7uKMNPGfCSujNTUQtpLc="; + vendorHash = "sha256-oAqYQzOUjly97H5L5PQ9I2SO2KqiUVxdJA+eoPrHD6Q="; ldflags = [ "-s" "-w" - "-X github.com/ArtalkJS/Artalk/internal/config.Version=${version}" - "-X github.com/ArtalkJS/Artalk/internal/config.CommitHash=${version}" ]; preBuild = '' @@ -42,21 +39,22 @@ buildGoModule rec { nativeBuildInputs = [ installShellFiles ]; - postInstall = - '' - # work around case insensitive file systems - mv $out/bin/Artalk $out/bin/artalk.tmp - mv $out/bin/artalk.tmp $out/bin/artalk - '' - + lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' - installShellCompletion --cmd artalk \ - --bash <($out/bin/artalk completion bash) \ - --fish <($out/bin/artalk completion fish) \ - --zsh <($out/bin/artalk completion zsh) - ''; + postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' + installShellCompletion --cmd artalk \ + --bash <($out/bin/artalk completion bash) \ + --fish <($out/bin/artalk completion fish) \ + --zsh <($out/bin/artalk completion zsh) + ''; + + doInstallCheck = true; + + versionCheckProgramArg = "-v"; + + nativeInstallCheckInputs = [ + versionCheckHook + ]; passthru.tests = { - version = testers.testVersion { package = artalk; }; inherit (nixosTests) artalk; }; @@ -65,6 +63,10 @@ buildGoModule rec { homepage = "https://github.com/ArtalkJS/Artalk"; changelog = "https://github.com/ArtalkJS/Artalk/releases/tag/v${version}"; license = lib.licenses.mit; + sourceProvenance = with lib.sourceTypes; [ + fromSource + binaryBytecode + ]; maintainers = with lib.maintainers; [ moraxyc ]; mainProgram = "artalk"; }; diff --git a/pkgs/by-name/ca/casadi/package.nix b/pkgs/by-name/ca/casadi/package.nix index 0f1f3e3d7a00c..5cd35b0643422 100644 --- a/pkgs/by-name/ca/casadi/package.nix +++ b/pkgs/by-name/ca/casadi/package.nix @@ -10,7 +10,6 @@ cplex, fatrop, fetchFromGitHub, - fetchpatch, gurobi, highs, hpipm, @@ -37,40 +36,27 @@ stdenv.mkDerivation (finalAttrs: { pname = "casadi"; - version = "3.6.6"; + version = "3.6.7"; src = fetchFromGitHub { owner = "casadi"; repo = "casadi"; rev = finalAttrs.version; - hash = "sha256-T4aaBS918NbUEwWkSx0URi0W9uhCB8IFmzRcOR7T8Og="; + hash = "sha256-Mft0qhjdAbU82RgjYuKue5p7EqbTbt3ii5yXSsCFHrQ="; }; - patches = [ - (fetchpatch { - name = "add-FindSPRAL.cmake.patch"; - url = "https://github.com/casadi/casadi/pull/3792/commits/28bc1b03e67ae06dea0c8557057020f5651be7ad.patch"; - hash = "sha256-t0+RnXoFakmoX93MhN08RWAbCg6Nerh42LicBBgAkRQ="; - }) - ]; - postPatch = '' - # fix case of fatropConfig.cmake & hpipmConfig.cmake + # fix case of hpipmConfig.cmake substituteInPlace CMakeLists.txt --replace-fail \ "FATROP HPIPM" \ - "fatrop hpipm" + "FATROP hpipm" # nix provide lib/clang headers in libclang, not in llvm. substituteInPlace casadi/interfaces/clang/CMakeLists.txt --replace-fail \ '$'{CLANG_LLVM_LIB_DIR} \ ${llvmPackages_17.libclang.lib}/lib - # fix fatrop includes - substituteInPlace casadi/interfaces/fatrop/fatrop_conic_interface.hpp --replace-fail \ - "> fatropy/CMakeLists.txt - echo "install(DIRECTORY fatropy DESTINATION ${python3Packages.python.sitePackages})" >> fatropy/CMakeLists.txt - echo "install(TARGETS _fatropy DESTINATION ${python3Packages.python.sitePackages}/fatropy)" >> fatropy/CMakeLists.txt - ''; - nativeBuildInputs = [ cmake ]; buildInputs = [ blasfeo ] diff --git a/pkgs/by-name/fc/fcitx5-mozc-ut/package.nix b/pkgs/by-name/fc/fcitx5-mozc-ut/package.nix new file mode 100644 index 0000000000000..7580b0181e337 --- /dev/null +++ b/pkgs/by-name/fc/fcitx5-mozc-ut/package.nix @@ -0,0 +1,8 @@ +{ + fcitx5-mozc, + mozc-ut, +}: + +fcitx5-mozc.override { + mozc = mozc-ut; +} diff --git a/pkgs/by-name/fc/fcitx5-mozc/package.nix b/pkgs/by-name/fc/fcitx5-mozc/package.nix new file mode 100644 index 0000000000000..43535fd935455 --- /dev/null +++ b/pkgs/by-name/fc/fcitx5-mozc/package.nix @@ -0,0 +1,148 @@ +{ + bazel_7, + buildBazelPackage, + fcitx5, + fetchFromGitHub, + gettext, + lib, + mozc, + nixosTests, + pkg-config, + python3, + stdenv, + unzip, +}: + +buildBazelPackage { + pname = "fcitx5-mozc"; + version = "2.30.5544.102"; + + src = fetchFromGitHub { + owner = "fcitx"; + repo = "mozc"; + fetchSubmodules = true; + rev = "57e67f2a25e4c0861e0e422da0c7d4c232d89fcc"; + hash = "sha256-1EZjEbMl+LRipH5gEgFpaKP8uEKPfupHmiiTNJc/T1k="; + }; + + nativeBuildInputs = [ + gettext + pkg-config + python3 + unzip + ]; + + buildInputs = [ + mozc + fcitx5 + ]; + + postPatch = '' + sed -i -e 's|^\(LINUX_MOZC_SERVER_DIR = \).\+|\1"${mozc}/lib/mozc"|' src/config.bzl + ''; + + bazel = bazel_7; + removeRulesCC = false; + dontAddBazelOpts = true; + + bazelFlags = [ + "--config" + "oss_linux" + "--compilation_mode" + "opt" + ]; + + bazelTargets = [ + "unix/fcitx5:fcitx5-mozc.so" + "unix/icons" + ]; + + fetchAttrs = { + preInstall = '' + rm -rf $bazelOut/external/fcitx5 + ''; + + sha256 = "sha256-wz2lJckr7Pu4jtoejjFv8LdjVO2+ferrS473M4jc86I="; + }; + + preConfigure = '' + cd src + ''; + + buildAttrs = { + installPhase = '' + runHook preInstall + + install -Dm444 ../LICENSE $out/share/licenses/fcitx5-mozc/LICENSE + install -Dm444 data/installer/credits_en.html $out/share/licenses/fcitx5-mozc/Submodules + + install -Dm555 bazel-bin/unix/fcitx5/fcitx5-mozc.so $out/lib/fcitx5/fcitx5-mozc.so + install -Dm444 unix/fcitx5/mozc-addon.conf $out/share/fcitx5/addon/mozc.conf + install -Dm444 unix/fcitx5/mozc.conf $out/share/fcitx5/inputmethod/mozc.conf + + for pofile in unix/fcitx5/po/*.po; do + filename=$(basename $pofile) + lang=''${filename/.po/} + mofile=''${pofile/.po/.mo} + msgfmt $pofile -o $mofile + install -Dm444 $mofile $out/share/locale/$lang/LC_MESSAGES/fcitx5-mozc.mo + done + + msgfmt --xml -d unix/fcitx5/po/ --template unix/fcitx5/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml.in -o unix/fcitx5/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml + install -Dm444 unix/fcitx5/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml $out/share/metainfo/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml + + cd bazel-bin/unix + + unzip -o icons.zip + + # These are relative symlinks, they will always resolve to files within $out + + install -Dm444 mozc.png $out/share/icons/hicolor/128x128/apps/org.fcitx.Fcitx5.fcitx_mozc.png + ln -s org.fcitx.Fcitx5.fcitx_mozc.png $out/share/icons/hicolor/128x128/apps/fcitx_mozc.png + + for svg in \ + alpha_full.svg \ + alpha_half.svg \ + direct.svg \ + hiragana.svg \ + katakana_full.svg \ + katakana_half.svg \ + outlined/dictionary.svg \ + outlined/properties.svg \ + outlined/tool.svg + do + name=$(basename -- $svg) + path=$out/share/icons/hicolor/scalable/apps + prefix=org.fcitx.Fcitx5.fcitx_mozc + + install -Dm444 $svg $path/$prefix_$name + ln -s $prefix_$name $path/fcitx_mozc_$name + done + + runHook postInstall + ''; + }; + + passthru.tests = lib.optionalAttrs stdenv.hostPlatform.isLinux { + inherit (nixosTests) fcitx5; + }; + + meta = with lib; { + description = "Mozc - a Japanese Input Method Editor designed for multi-platform"; + homepage = "https://github.com/fcitx/mozc"; + license = with licenses; [ + asl20 # abseil-cpp + bsd3 # mozc, breakpad, gtest, gyp, japanese-usage-dictionary, protobuf + mit # wil + naist-2003 # IPAdic + publicDomain # src/data/test/stress_test, Okinawa dictionary + unicode-30 # src/data/unicode, breakpad + ]; + maintainers = with maintainers; [ + berberman + govanify + musjj + ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/by-name/ff/fflogs/package.nix b/pkgs/by-name/ff/fflogs/package.nix index 2a398506b3d8b..b4c94e54e3031 100644 --- a/pkgs/by-name/ff/fflogs/package.nix +++ b/pkgs/by-name/ff/fflogs/package.nix @@ -5,10 +5,10 @@ let pname = "fflogs"; - version = "8.14.0"; + version = "8.14.21"; src = fetchurl { url = "https://github.com/RPGLogs/Uploaders-fflogs/releases/download/v${version}/fflogs-v${version}.AppImage"; - hash = "sha256-hHgPtr25X2vZY+MKQn9FgkMLrF5vgklMQHzx4ksGrDk="; + hash = "sha256-sBC2qvtSje2uXzSZAYXBFmycKxf0B6/JZhOvWNyMp20="; }; extracted = appimageTools.extractType2 { inherit pname version src; }; in diff --git a/pkgs/by-name/fz/fzf/package.nix b/pkgs/by-name/fz/fzf/package.nix index f133ec7b61582..809e5133d8206 100644 --- a/pkgs/by-name/fz/fzf/package.nix +++ b/pkgs/by-name/fz/fzf/package.nix @@ -11,16 +11,16 @@ buildGoModule rec { pname = "fzf"; - version = "0.55.0"; + version = "0.56.0"; src = fetchFromGitHub { owner = "junegunn"; repo = "fzf"; rev = "v${version}"; - hash = "sha256-4ikNCepLF7odkaEO+tzgrHb4528LetPEeMStJVZyjWg="; + hash = "sha256-HG2GQwic1wJ0OiCinBEZ1wfjqXuq37udEpBwLt7LIA0="; }; - vendorHash = "sha256-b7hCXDJ/EJr1sEvmS2RYaxBMkdWOo2LWe76mamD3BSY="; + vendorHash = "sha256-dsQyoSJQT5PwhZ/anth5YjNXf6ZubrCza6kXWZJ3DgA="; CGO_ENABLED = 0; diff --git a/pkgs/by-name/gi/gitlab-ci-ls/package.nix b/pkgs/by-name/gi/gitlab-ci-ls/package.nix index a7a85c977fc27..ed0f4c5227566 100644 --- a/pkgs/by-name/gi/gitlab-ci-ls/package.nix +++ b/pkgs/by-name/gi/gitlab-ci-ls/package.nix @@ -10,15 +10,15 @@ rustPlatform.buildRustPackage rec { pname = "gitlab-ci-ls"; - version = "0.21.3"; + version = "0.22.0"; src = fetchFromGitHub { owner = "alesbrelih"; repo = "gitlab-ci-ls"; rev = "${version}"; - hash = "sha256-3PqGnknP5ilwPCDsD8GwIEamZC24lEnuQhipTo8RDI0="; + hash = "sha256-RXM581tW78YzH+NQhkpsbHz6m+PAF7NQ5p3TFugPo+M="; }; - cargoHash = "sha256-c31madEElZpHbzyKHqUDyPW/maVrkNKlldX24Y3iFGQ="; + cargoHash = "sha256-PuNpkDjoJr1GttETWHA9X+LYNIJSgBXdZId5q2JSo6g="; nativeBuildInputs = [ pkg-config ]; buildInputs = diff --git a/pkgs/by-name/he/hello/package.nix b/pkgs/by-name/he/hello/package.nix index d56423eea6cf5..0590131913f46 100644 --- a/pkgs/by-name/he/hello/package.nix +++ b/pkgs/by-name/he/hello/package.nix @@ -1,11 +1,12 @@ -{ callPackage -, lib -, stdenv -, fetchurl -, nixos -, testers -, versionCheckHook -, hello +{ + callPackage, + lib, + stdenv, + fetchurl, + nixos, + testers, + versionCheckHook, + hello, }: stdenv.mkDerivation (finalAttrs: { @@ -42,7 +43,7 @@ stdenv.mkDerivation (finalAttrs: { passthru.tests.run = callPackage ./test.nix { hello = finalAttrs.finalPackage; }; - meta = with lib; { + meta = { description = "Program that produces a familiar, friendly greeting"; longDescription = '' GNU Hello is a program that prints "Hello, world!" when you run it. @@ -50,9 +51,9 @@ stdenv.mkDerivation (finalAttrs: { ''; homepage = "https://www.gnu.org/software/hello/manual/"; changelog = "https://git.savannah.gnu.org/cgit/hello.git/plain/NEWS?h=v${finalAttrs.version}"; - license = licenses.gpl3Plus; - maintainers = [ ]; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ stv0g ]; mainProgram = "hello"; - platforms = platforms.all; + platforms = lib.platforms.all; }; }) diff --git a/pkgs/by-name/jo/journalist/package.nix b/pkgs/by-name/jo/journalist/package.nix index 6e43151092a06..9c5e9a9fc42c1 100644 --- a/pkgs/by-name/jo/journalist/package.nix +++ b/pkgs/by-name/jo/journalist/package.nix @@ -1,34 +1,21 @@ { lib, buildGoModule, - fetchpatch, fetchFromGitHub, }: buildGoModule rec { pname = "journalist"; - version = "1.0.0-unstable-2024-06-15"; + version = "1.0.1"; src = fetchFromGitHub { owner = "mrusme"; repo = "journalist"; - rev = "93781b1278e271995769f576b74fee794a19de14"; - hash = "sha256-RRo9AEaHJPzN9+oW5kIBUNCPVdFkY2USOIZeUts8P/M="; + rev = "refs/tags/v${version}"; + hash = "sha256-3MnkndG2c4P3oprIRbzj26oAutEmAgsUx8mjlaDLrkI="; }; - overrideModAttrs = _oldAttrs: { - patches = [ - # fix go.sum by adding missing module - # see https://github.com/mrusme/journalist/pull/18 - (fetchpatch { - name = "fix-go-sum.patch"; - url = "https://github.com/mrusme/journalist/commit/546585222993586057a12ab4e9b38000c537f6cf.patch"; - hash = "sha256-+QZhP/Har5UVi1pvqB6wWY0+xKqP0B8QukCcNlGkqxQ="; - }) - ]; - }; - - vendorHash = "sha256-fEHVc9kRbeeXICWhJshLp9JK/ICBR/RB5SVChJzSXpI="; + vendorHash = "sha256-2EJ96dhhU7FZxMkHOmQo79WCHu8U1AGgFf47FIuQdek=s"; ldflags = [ "-s" @@ -39,6 +26,7 @@ buildGoModule rec { meta = { description = "RSS aggregator"; homepage = "https://github.com/mrusme/journalist"; + changelog = "https://github.com/mrusme/journalist/releases/tag/v${version}"; license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ moraxyc ]; mainProgram = "journalist"; diff --git a/pkgs/by-name/ka/kando/package.nix b/pkgs/by-name/ka/kando/package.nix new file mode 100644 index 0000000000000..5456a4bd8b46b --- /dev/null +++ b/pkgs/by-name/ka/kando/package.nix @@ -0,0 +1,152 @@ +{ + lib, + stdenv, + buildNpmPackage, + fetchFromGitHub, + overrideSDK, + + electron, + nodejs, + + cmake, + zip, + makeWrapper, + wayland-scanner, + copyDesktopItems, + makeDesktopItem, + + libxkbcommon, + libX11, + libXtst, + libXi, + wayland, + darwin, +}: + +let + buildNpmPackage' = buildNpmPackage.override { + stdenv = if stdenv.isDarwin then overrideSDK stdenv "11.0" else stdenv; + }; +in +buildNpmPackage' rec { + pname = "kando"; + version = "1.4.0"; + + src = fetchFromGitHub { + owner = "kando-menu"; + repo = "kando"; + rev = "refs/tags/v${version}"; + hash = "sha256-JcPTplqrMgDsT0HDTh7liChUWvLqe9gwS51ANM3Wsds="; + }; + + npmDepsHash = "sha256-13NuhGq5Pv5GSLeXASWxbXZYaUb9KzMgR7y5I7mv+MA="; + + npmFlags = [ "--ignore-scripts" ]; + + makeCacheWritable = true; + + nativeBuildInputs = + [ + cmake + zip + makeWrapper + ] + ++ lib.optionals stdenv.isLinux [ + wayland-scanner + copyDesktopItems + ]; + + buildInputs = + lib.optionals stdenv.isLinux [ + libxkbcommon + libX11 + libXtst + libXi + wayland + ] + ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk_11_0.frameworks.AppKit ]; + + dontUseCmakeConfigure = true; + + env = { + ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; + # use our own node headers since we skip downloading them + NIX_CFLAGS_COMPILE = "-I${nodejs}/include/node"; + # disable code signing on Darwin + CSC_IDENTITY_AUTO_DISCOVERY = lib.optionalString stdenv.isDarwin "false"; + }; + + postConfigure = '' + # electron files need to be writable on Darwin + cp -r ${electron.dist} electron-dist + chmod -R u+w electron-dist + + pushd electron-dist + zip -0Xqr ../electron.zip . + popd + + rm -r electron-dist + + # force @electron/packager to use our electron instead of downloading it, even if it is a different version + substituteInPlace node_modules/@electron/packager/dist/packager.js \ + --replace-fail 'await this.getElectronZipPath(downloadOpts)' '"electron.zip"' + + # don't fetch node headers + substituteInPlace node_modules/cmake-js/lib/dist.js \ + --replace-fail '!this.downloaded' 'false' + ''; + + # we used --ignore-scripts to have time to patch the dependencies + # now we'll have to call npm rebuild manually + preBuild = '' + npm rebuild --verbose + ''; + + npmBuildScript = "package"; + + installPhase = '' + runHook preInstall + + ${lib.optionalString stdenv.isLinux '' + mkdir -p $out/share/kando + cp -r out/*/{locales,resources{,.pak}} $out/share/kando + + install -Dm644 assets/icons/icon.svg $out/share/icons/hicolor/scalable/apps/kando.svg + + makeWrapper ${lib.getExe electron} $out/bin/kando \ + --add-flags $out/share/kando/resources/app \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \ + --inherit-argv0 + ''} + + ${lib.optionalString stdenv.isDarwin '' + mkdir -p $out/Applications + cp -r out/*/Kando.app $out/Applications + makeWrapper $out/Applications/Kando.app/Contents/MacOS/Kando $out/bin/kando + ''} + + runHook postInstall + ''; + + desktopItems = [ + (makeDesktopItem { + name = "kando"; + exec = "kando %U"; + icon = "kando"; + desktopName = "Kando"; + genericName = "Pie Menu"; + comment = "The Cross-Platform Pie Menu"; + categories = [ "Utility" ]; + }) + ]; + + meta = { + changelog = "https://github.com/kando-menu/kando/releases/tag/v${version}"; + description = "Cross-Platform Pie Menu"; + homepage = "https://github.com/kando-menu/kando"; + license = lib.licenses.mit; + mainProgram = "kando"; + maintainers = with lib.maintainers; [ tomasajt ]; + platforms = electron.meta.platforms; + }; +} diff --git a/pkgs/by-name/kd/kdlfmt/package.nix b/pkgs/by-name/kd/kdlfmt/package.nix new file mode 100644 index 0000000000000..a5b5d371072e0 --- /dev/null +++ b/pkgs/by-name/kd/kdlfmt/package.nix @@ -0,0 +1,28 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, +}: + +rustPlatform.buildRustPackage rec { + pname = "kdlfmt"; + version = "0.0.3"; + + src = fetchFromGitHub { + owner = "hougesen"; + repo = "kdlfmt"; + rev = "v${version}"; + hash = "sha256-qD1NYLHGmVRgV6pPXbvJ9NWDg/wVLWJY4hUsOLDlKh0="; + }; + + cargoHash = "sha256-7HSDz/JI5VuTdM/Hv+nq+ddpQg31Q1v7Ct5gz2PfdmE="; + + meta = { + description = "Formatter for kdl documents"; + homepage = "https://github.com/hougesen/kdlfmt.git"; + changelog = "https://github.com/hougesen/kdlfmt/blob/v${version}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ airrnot ]; + mainProgram = "kdlfmt"; + }; +} diff --git a/pkgs/by-name/li/lib60870/package.nix b/pkgs/by-name/li/lib60870/package.nix index 4669042b7be9e..5e3c0da7c42ad 100644 --- a/pkgs/by-name/li/lib60870/package.nix +++ b/pkgs/by-name/li/lib60870/package.nix @@ -32,11 +32,11 @@ stdenv.mkDerivation (finalAttrs: { passthru.updateScript = gitUpdater { rev-prefix = "v"; }; - meta = with lib; { + meta = { description = "Implementation of the IEC 60870-5-101/104 protocol"; homepage = "https://libiec61850.com/"; - license = licenses.gpl3Only; - maintainers = with maintainers; [ stv0g ]; - platforms = platforms.unix; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ stv0g ]; + platforms = lib.platforms.unix; }; }) diff --git a/pkgs/by-name/li/libconfig/package.nix b/pkgs/by-name/li/libconfig/package.nix new file mode 100644 index 0000000000000..f0cc941715312 --- /dev/null +++ b/pkgs/by-name/li/libconfig/package.nix @@ -0,0 +1,34 @@ +{ + lib, + stdenv, + fetchurl, + # This also disables building tests. + # on static windows cross-compile they fail to build + doCheck ? with stdenv.hostPlatform; !(isWindows && isStatic), +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "libconfig"; + version = "1.7.3"; + + src = fetchurl { + url = "https://hyperrealm.github.io/${finalAttrs.pname}/dist/${finalAttrs.pname}-${finalAttrs.version}.tar.gz"; + hash = "sha256-VFFm1srAN3RDgdHpzFpUBQlOe/rRakEWmbz/QLuzHuc="; + }; + + inherit doCheck; + + configureFlags = + lib.optional (stdenv.hostPlatform.isWindows || stdenv.hostPlatform.isStatic) "--disable-examples" + ++ lib.optional (!finalAttrs.doCheck) "--disable-tests"; + + cmakeFlags = lib.optionals (!finalAttrs.doCheck) [ "-DBUILD_TESTS:BOOL=OFF" ]; + + meta = { + homepage = "https://hyperrealm.github.io/libconfig/"; + description = "C/C++ library for processing configuration files"; + license = lib.licenses.lgpl3; + maintainers = with lib.maintainers; [ stv0g ]; + platforms = lib.platforms.all; + }; +}) diff --git a/pkgs/by-name/li/libiec61850/package.nix b/pkgs/by-name/li/libiec61850/package.nix index 03c8037d6b33d..94261d06dfdbd 100644 --- a/pkgs/by-name/li/libiec61850/package.nix +++ b/pkgs/by-name/li/libiec61850/package.nix @@ -23,11 +23,11 @@ stdenv.mkDerivation (finalAttrs: { passthru.updateScript = gitUpdater { rev-prefix = "v"; }; - meta = with lib; { + meta = { description = "Open-source library for the IEC 61850 protocols"; homepage = "https://libiec61850.com/"; - license = licenses.gpl3Only; - maintainers = with maintainers; [ stv0g ]; - platforms = platforms.unix; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ stv0g ]; + platforms = lib.platforms.unix; }; }) diff --git a/pkgs/by-name/lo/lora/package.nix b/pkgs/by-name/lo/lora/package.nix new file mode 100644 index 0000000000000..a062c11e04d0d --- /dev/null +++ b/pkgs/by-name/lo/lora/package.nix @@ -0,0 +1,40 @@ +{ + lib, + stdenvNoCC, + fetchFromGitHub, + nix-update-script, +}: + +stdenvNoCC.mkDerivation rec { + pname = "lora"; + version = "v3.005"; + + src = fetchFromGitHub { + owner = "cyrealtype"; + repo = "lora"; + rev = version; + hash = "sha256-EHa8DUPFRvdYBdCY41gfjKGtTHwGIXCwD9Qc+Npmt1s="; + }; + + dontConfigure = true; + dontBuild = true; + + passthru.updateScript = nix-update-script { }; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/fonts/truetype + cp -R $src/fonts/ttf/*.ttf $out/share/fonts/truetype + + runHook postInstall + ''; + + meta = with lib; { + description = "Lora is a well-balanced contemporary serif with roots in calligraphy"; + homepage = "https://github.com/cyrealtype/lora"; + license = licenses.ofl; + platforms = platforms.all; + maintainers = with maintainers; [ ofalvai ]; + }; +} diff --git a/pkgs/by-name/mo/mollysocket/package.nix b/pkgs/by-name/mo/mollysocket/package.nix index 6c9e18cc8f153..c282bbba26303 100644 --- a/pkgs/by-name/mo/mollysocket/package.nix +++ b/pkgs/by-name/mo/mollysocket/package.nix @@ -11,16 +11,16 @@ rustPlatform.buildRustPackage rec { pname = "mollysocket"; - version = "1.4.1"; + version = "1.5.1"; src = fetchFromGitHub { owner = "mollyim"; repo = "mollysocket"; rev = version; - hash = "sha256-vE5J4BKYmVqtowfxDDTOwFKws7phYRm9xKFPiDNuNn4="; + hash = "sha256-RRnMmdyr4FZHsdLjGvTRiSw+YC+OutWqsoEId7ZlSX0="; }; - cargoHash = "sha256-s/EhX5o6XuUqcrqhXY274MyWhRukgetfIZKQ4XNlq6Y="; + cargoHash = "sha256-BXllzuw01ANrk+osUsAlMyLRAptvxGO+rl0ygsCfewU="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/mo/mozc-ut/package.nix b/pkgs/by-name/mo/mozc-ut/package.nix new file mode 100644 index 0000000000000..a758f1e8d6220 --- /dev/null +++ b/pkgs/by-name/mo/mozc-ut/package.nix @@ -0,0 +1,23 @@ +{ + mozc, + mozcdic-ut-alt-cannadic, + mozcdic-ut-edict2, + mozcdic-ut-jawiki, + mozcdic-ut-neologd, + mozcdic-ut-personal-names, + mozcdic-ut-place-names, + mozcdic-ut-skk-jisyo, + mozcdic-ut-sudachidict, +}: +mozc.override { + dictionaries = [ + mozcdic-ut-alt-cannadic + mozcdic-ut-edict2 + mozcdic-ut-jawiki + mozcdic-ut-neologd + mozcdic-ut-personal-names + mozcdic-ut-place-names + mozcdic-ut-skk-jisyo + mozcdic-ut-sudachidict + ]; +} diff --git a/pkgs/by-name/mo/mozc/package.nix b/pkgs/by-name/mo/mozc/package.nix index b374329d23ff9..a1b0e804f4525 100644 --- a/pkgs/by-name/mo/mozc/package.nix +++ b/pkgs/by-name/mo/mozc/package.nix @@ -17,7 +17,7 @@ let ut-dictionary = merge-ut-dictionaries.override { inherit dictionaries; }; in buildBazelPackage rec { - pname = "ibus-mozc"; + pname = "mozc"; version = "2.30.5544.102"; src = fetchFromGitHub { diff --git a/pkgs/by-name/nh/nhost-cli/package.nix b/pkgs/by-name/nh/nhost-cli/package.nix index 6d6dbbd295282..8e36a02cb2694 100644 --- a/pkgs/by-name/nh/nhost-cli/package.nix +++ b/pkgs/by-name/nh/nhost-cli/package.nix @@ -6,13 +6,13 @@ buildGoModule rec { pname = "nhost-cli"; - version = "1.24.0"; + version = "1.24.5"; src = fetchFromGitHub { owner = "nhost"; repo = "cli"; rev = "v${version}"; - hash = "sha256-8kul3tiwEJF6Pu1os29MteeYP+85X9hH12MojMpW9bY="; + hash = "sha256-/NkegGp+JoJWPIkO3YKp/aZ6Yp5tcjnRCONY0GHe+HI="; }; vendorHash = null; @@ -27,9 +27,12 @@ buildGoModule rec { mv $out/bin/cli $out/bin/nhost ''; + checkFlags = [ "-skip=^TestMakeJSONRequest$" ]; + meta = { - description = "A tool for setting up a local development environment for Nhost"; + description = "Tool for setting up a local development environment for Nhost"; homepage = "https://github.com/nhost/cli"; + changelog = "https://github.com/nhost/cli/releases/tag/v${version}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ moraxyc ]; mainProgram = "nhost"; diff --git a/pkgs/by-name/nw/nwg-panel/package.nix b/pkgs/by-name/nw/nwg-panel/package.nix index fba077d5c556e..11e886a482b79 100644 --- a/pkgs/by-name/nw/nwg-panel/package.nix +++ b/pkgs/by-name/nw/nwg-panel/package.nix @@ -16,13 +16,13 @@ python3Packages.buildPythonApplication rec { pname = "nwg-panel"; - version = "0.9.40"; + version = "0.9.48"; src = fetchFromGitHub { owner = "nwg-piotr"; repo = "nwg-panel"; rev = "refs/tags/v${version}"; - hash = "sha256-MymxhQxPS07qZlD+TsiMyMtOrmIuqi3LAhc0Huxwxjs="; + hash = "sha256-/PMUkD2kr8aqmohStntlTOc5XgfR+A3LaeYsk04GvOM="; }; # No tests diff --git a/pkgs/by-name/op/openpgp-card-tools/package.nix b/pkgs/by-name/op/openpgp-card-tools/package.nix index 5ed445a55eef7..8bd0e1fb5cb93 100644 --- a/pkgs/by-name/op/openpgp-card-tools/package.nix +++ b/pkgs/by-name/op/openpgp-card-tools/package.nix @@ -12,17 +12,17 @@ rustPlatform.buildRustPackage rec { pname = "openpgp-card-tools"; - version = "0.11.6"; + version = "0.11.7"; src = fetchFromGitea { domain = "codeberg.org"; owner = "openpgp-card"; repo = "openpgp-card-tools"; rev = "v${version}"; - hash = "sha256-ZnIJLNg9soRzGEjoRNbUzDUtj71y54t+qTC4QDjiCmM="; + hash = "sha256-sR+jBCSuDH4YdJz3YuvA4EE36RHV3m/xU8hIEXXsqKo="; }; - cargoHash = "sha256-t+fKCviu9UOz2GHkIBqtSp0vyqXPAR1TuWi4yOYR0Bc="; + cargoHash = "sha256-G5+lVK41hbzy/Ltc0EKoUfqF0M1OYu679jyVjYKJmn0="; nativeBuildInputs = [ pkg-config rustPlatform.bindgenHook ]; diff --git a/pkgs/servers/monitoring/prometheus/pushgateway.nix b/pkgs/by-name/pr/prometheus-pushgateway/package.nix similarity index 87% rename from pkgs/servers/monitoring/prometheus/pushgateway.nix rename to pkgs/by-name/pr/prometheus-pushgateway/package.nix index cc8e11ade6355..fde0bab369161 100644 --- a/pkgs/servers/monitoring/prometheus/pushgateway.nix +++ b/pkgs/by-name/pr/prometheus-pushgateway/package.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "pushgateway"; - version = "1.9.0"; + version = "1.10.0"; src = fetchFromGitHub { owner = "prometheus"; repo = "pushgateway"; rev = "v${version}"; - sha256 = "sha256-SpHxBxBl0APP/y7MnR/p/+VjNAvFOZVlgGMlMGTbodI="; + sha256 = "sha256-Avp5hWRdkM/vCz6B/b7uOrnYjFrN5UkE7siK0+ANO1Q="; }; - vendorHash = "sha256-GydAY73Ui6z833x0DoWa6BpK35CYdYfyHw2+RwT3miw="; + vendorHash = "sha256-cyZ/LzKB3UlyqzID9f6I4niwJ/sPIm2htVOn3Ik2HAY="; ldflags = [ "-s" diff --git a/pkgs/by-name/pr/prowler/package.nix b/pkgs/by-name/pr/prowler/package.nix index de0cfe6a26145..b24b00a53467c 100644 --- a/pkgs/by-name/pr/prowler/package.nix +++ b/pkgs/by-name/pr/prowler/package.nix @@ -45,6 +45,7 @@ python3.pkgs.buildPythonApplication rec { boto3 botocore colorama + cryptography dash dash-bootstrap-components detect-secrets @@ -52,12 +53,13 @@ python3.pkgs.buildPythonApplication rec { google-auth-httplib2 jsonschema kubernetes + microsoft-kiota-abstractions msgraph-sdk - msrestazure numpy pandas py-ocsf-models pydantic + python-dateutil pytz schema shodan diff --git a/pkgs/by-name/qq/qq/package.nix b/pkgs/by-name/qq/qq/package.nix index 6615c4133f8af..66321e3b4dc44 100644 --- a/pkgs/by-name/qq/qq/package.nix +++ b/pkgs/by-name/qq/qq/package.nix @@ -1,30 +1,31 @@ -{ alsa-lib -, libuuid -, cups -, dpkg -, fetchurl -, glib -, libssh2 -, gtk3 -, lib -, libayatana-appindicator -, libdrm -, libgcrypt -, libkrb5 -, libnotify -, mesa # for libgbm -, libpulseaudio -, libGL -, nss -, xorg -, systemd -, stdenv -, vips -, at-spi2-core -, autoPatchelfHook -, makeShellWrapper -, wrapGAppsHook3 -, commandLineArgs ? "" +{ + alsa-lib, + libuuid, + cups, + dpkg, + fetchurl, + glib, + libssh2, + gtk3, + lib, + libayatana-appindicator, + libdrm, + libgcrypt, + libkrb5, + libnotify, + mesa, # for libgbm + libpulseaudio, + libGL, + nss, + xorg, + systemd, + stdenv, + vips, + at-spi2-core, + autoPatchelfHook, + makeShellWrapper, + wrapGAppsHook3, + commandLineArgs ? "", }: let @@ -39,7 +40,8 @@ let hash = sources.arm64_hash; }; }; - src = srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + src = + srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); in stdenv.mkDerivation { pname = "qq"; @@ -87,7 +89,12 @@ stdenv.mkDerivation { makeShellWrapper $out/opt/QQ/qq $out/bin/qq \ --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \ --prefix LD_PRELOAD : "${lib.makeLibraryPath [ libssh2 ]}/libssh2.so.1" \ - --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libGL libuuid ]}" \ + --prefix LD_LIBRARY_PATH : "${ + lib.makeLibraryPath [ + libGL + libuuid + ] + }" \ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime}}" \ --add-flags ${lib.escapeShellArg commandLineArgs} \ "''${gappsWrapperArgs[@]}" @@ -110,12 +117,18 @@ stdenv.mkDerivation { passthru.updateScript = ./update.sh; - meta = with lib; { + meta = { homepage = "https://im.qq.com/linuxqq/"; description = "Messaging app"; - platforms = [ "x86_64-linux" "aarch64-linux" ]; - license = licenses.unfree; - sourceProvenance = with sourceTypes; [ binaryNativeCode ]; - maintainers = with lib.maintainers; [ fee1-dead bot-wxt1221 ]; + platforms = [ + "x86_64-linux" + "aarch64-linux" + ]; + license = lib.licenses.unfree; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + maintainers = with lib.maintainers; [ + fee1-dead + bot-wxt1221 + ]; }; } diff --git a/pkgs/by-name/qq/qq/sources.nix b/pkgs/by-name/qq/qq/sources.nix index f3783a8ba5113..3ff5e1afb0f9e 100644 --- a/pkgs/by-name/qq/qq/sources.nix +++ b/pkgs/by-name/qq/qq/sources.nix @@ -1,9 +1,9 @@ # Generated by ./update.sh - do not update manually! -# Last updated: 2024-09-28 +# Last updated: 2024-10-25 { - version = "3.2.12-2024.9.27"; - amd64_url = "https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.12_240927_amd64_01.deb"; - arm64_url = "https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.12_240927_arm64_01.deb"; - arm64_hash = "sha256-VfM+p2cTNkDZc7sTftfTuRSMKVWwE6TerW25pA1MIR0="; - amd64_hash = "sha256-xBGSSxXDu+qUwj203i3iAkfI97iLtGOuGMGfEU6kCyQ="; + version = "3.2.13-2024.10.23"; + amd64_url = "https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.13_241023_amd64_01.deb"; + arm64_url = "https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.13_241023_arm64_01.deb"; + arm64_hash = "sha256-n2ezKgLfmugUZYvGzDvaLKy+Tf8ooUC6Oc6xCDp5rYA="; + amd64_hash = "sha256-H5ACKFVV4AQ3de9UV4i9ejL1WjuuPJhTLTVqK5EcssM="; } diff --git a/pkgs/by-name/ra/rainfrog/package.nix b/pkgs/by-name/ra/rainfrog/package.nix index ffc47f38de8f7..4f9b3b56239ff 100644 --- a/pkgs/by-name/ra/rainfrog/package.nix +++ b/pkgs/by-name/ra/rainfrog/package.nix @@ -7,7 +7,7 @@ stdenv, }: let - version = "0.2.7"; + version = "0.2.9"; in rustPlatform.buildRustPackage { inherit version; @@ -17,10 +17,10 @@ rustPlatform.buildRustPackage { owner = "achristmascarl"; repo = "rainfrog"; rev = "refs/tags/v${version}"; - hash = "sha256-ey9ioPDeuNYw2+UBUgtE0C1wES3wecFDWd9CMeKBq4Q="; + hash = "sha256-PiJRVf+rpYFWRmys7Ca2lLfe5F9/ksIzkpKs6CQWu+A="; }; - cargoHash = "sha256-mc7Lgaf1seefVu+LafctJm4y8xjX3c1ApadeQMi3STE="; + cargoHash = "sha256-L0gXxV/3+5oRV/Ipm4sRqr9dh9AEChWhtILO3PaNxYY="; buildInputs = lib.optionals stdenv.isDarwin ( with darwin.apple_sdk.frameworks; diff --git a/pkgs/by-name/re/remctl/package.nix b/pkgs/by-name/re/remctl/package.nix new file mode 100644 index 0000000000000..b354440de81af --- /dev/null +++ b/pkgs/by-name/re/remctl/package.nix @@ -0,0 +1,62 @@ +{ + lib, + stdenv, + fetchFromGitHub, + autoreconfHook, + libevent, + krb5, + openssl, + perl, + pkg-config, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "remctl"; + version = "3.18"; + + src = fetchFromGitHub { + owner = "rra"; + repo = "remctl"; + rev = "release/${finalAttrs.version}"; + hash = "sha256-4KzNhFswNTwcXrDBAfRyr502zwRQ3FACV8gDfBm7M0A="; + }; + + # Fix references to /usr/bin/perl in tests and + # disable acl/localgroup test that does not work in sandbox. + postPatch = '' + patchShebangs tests + sed -i '\,server/acl/localgroup,d' tests/TESTS + ''; + + nativeBuildInputs = [ + autoreconfHook + perl + pkg-config + ]; + + buildInputs = [ + krb5 + libevent + openssl + ]; + + # Invokes pod2man to create man pages required by Makefile. + preConfigure = '' + ./bootstrap + ''; + + makeFlags = [ + "LD=$(CC)" + "REMCTL_PERL_FLAGS='--prefix=$(out)'" + "REMCTL_PYTHON_INSTALL='--prefix=$(out)'" + ]; + + checkTarget = "check-local"; + + meta = with lib; { + description = "Remote execution tool"; + homepage = "https://www.eyrie.org/~eagle/software/remctl"; + mainProgram = "remctl"; + license = licenses.mit; + maintainers = teams.deshaw.members; + }; +}) diff --git a/pkgs/by-name/se/send/package.nix b/pkgs/by-name/se/send/package.nix new file mode 100644 index 0000000000000..4c92e5642f626 --- /dev/null +++ b/pkgs/by-name/se/send/package.nix @@ -0,0 +1,58 @@ +{ + lib, + buildNpmPackage, + fetchFromGitHub, + makeBinaryWrapper, + nodejs, + nixosTests, +}: + +buildNpmPackage rec { + pname = "send"; + version = "3.4.23"; + + src = fetchFromGitHub { + owner = "timvisee"; + repo = "send"; + rev = "refs/tags/v${version}"; + hash = "sha256-bqQEXLwUvTKX+m2yNHRnrl+eeaGmcovXpXugxd+j14A="; + }; + + npmDepsHash = "sha256-r1iaurKuhpP0sevB5pFdtv9j1ikM1fKL7Jgakh4FzTI="; + + nativeBuildInputs = [ + makeBinaryWrapper + ]; + + env = { + PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = "true"; + }; + + makeCacheWritable = true; + + npmPackFlags = [ "--ignore-scripts" ]; + + NODE_OPTIONS = "--openssl-legacy-provider"; + + postInstall = '' + cp -r dist $out/lib/node_modules/send/ + ln -s $out/lib/node_modules/send/dist/version.json $out/lib/node_modules/send/version.json + + makeWrapper ${lib.getExe nodejs} $out/bin/send \ + --add-flags $out/lib/node_modules/send/server/bin/prod.js \ + --set "NODE_ENV" "production" + ''; + + passthru.tests = { + inherit (nixosTests) send; + }; + + meta = { + description = "File Sharing Experiment"; + changelog = "https://github.com/timvisee/send/releases/tag/v${version}"; + homepage = "https://github.com/timvisee/send"; + license = lib.licenses.mpl20; + maintainers = with lib.maintainers; [ moraxyc ]; + mainProgram = "send"; + }; +} diff --git a/pkgs/by-name/si/simdutf/package.nix b/pkgs/by-name/si/simdutf/package.nix index 8e841ac44636e..4aba0ae8d75b7 100644 --- a/pkgs/by-name/si/simdutf/package.nix +++ b/pkgs/by-name/si/simdutf/package.nix @@ -7,13 +7,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "simdutf"; - version = "5.5.0"; + version = "5.6.0"; src = fetchFromGitHub { owner = "simdutf"; repo = "simdutf"; rev = "v${finalAttrs.version}"; - hash = "sha256-LEXx/b0DJZ9xxQX9+4YHjQCLFp2aXCE78Z6iPlXJjAw="; + hash = "sha256-DJCr+QoCmN0wJiXH+mv4g/zJYFfgJDGw0l6pzPriBVs="; }; # Fix build on darwin diff --git a/pkgs/by-name/so/softether/package.nix b/pkgs/by-name/so/softether/package.nix index 2f7cba3428087..e1d8d575f99e0 100644 --- a/pkgs/by-name/so/softether/package.nix +++ b/pkgs/by-name/so/softether/package.nix @@ -1,7 +1,7 @@ { lib, stdenv, - fetchurl, + fetchFromGitHub, openssl, readline, ncurses, @@ -9,14 +9,15 @@ dataDir ? "/var/lib/softether", }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "softether"; - version = "4.38"; - build = "9760"; + version = "4.41-9782-beta"; - src = fetchurl { - url = "https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v${version}-${build}-rtm/softether-src-v${version}-${build}-rtm.tar.gz"; - sha256 = "0d8zahi9lkv72jh8yj66pwrsi4451vk113d3khzrzgbic6s2i0g6"; + src = fetchFromGitHub { + owner = "SoftEtherVPN"; + repo = "SoftEtherVPN_Stable"; + rev = "refs/tags/v${finalAttrs.version}"; + hash = "sha256-yvN5hlfAtE+gWm0s/TY/Lp53By5SDHyQIvvDutRnDNQ="; }; buildInputs = [ @@ -40,11 +41,14 @@ stdenv.mkDerivation rec { Makefile ''; - meta = with lib; { + meta = { description = "Open-Source Free Cross-platform Multi-protocol VPN Program"; homepage = "https://www.softether.org/"; - license = licenses.asl20; - maintainers = [ maintainers.rick68 ]; - platforms = [ "x86_64-linux" ]; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.rick68 ]; + platforms = [ + "x86_64-linux" + "aarch64-linux" + ]; }; -} +}) diff --git a/pkgs/by-name/so/sopwith/package.nix b/pkgs/by-name/so/sopwith/package.nix index fe6fb0c147d32..0c006b405f8cf 100644 --- a/pkgs/by-name/so/sopwith/package.nix +++ b/pkgs/by-name/so/sopwith/package.nix @@ -10,13 +10,13 @@ stdenv.mkDerivation rec { pname = "sopwith"; - version = "2.5.0"; + version = "2.6.0"; src = fetchFromGitHub { owner = "fragglet"; repo = "sdl-sopwith"; rev = "refs/tags/sdl-sopwith-${version}"; - hash = "sha256-e7/Cv/v5NhYG5eb9B5oVxh/Dbmm2v4Y4KUKI4JI5SFw="; + hash = "sha256-sjg61QgcQDSQ/qrR+4PEZIf8OOnGBZvUSLCKGpS1bwg="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ss/sshified/package.nix b/pkgs/by-name/ss/sshified/package.nix new file mode 100644 index 0000000000000..56498841a3d65 --- /dev/null +++ b/pkgs/by-name/ss/sshified/package.nix @@ -0,0 +1,36 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, +}: + +buildGoModule rec { + pname = "sshified"; + version = "1.2.1"; + + src = fetchFromGitHub { + owner = "hoffie"; + repo = "sshified"; + rev = "refs/tags/v${version}"; + hash = "sha256-oCeuQ4Do+Lyqsf8hBH9qvLxWbWQlqol481VrbnAW2ic="; + }; + + vendorHash = null; + + ldflags = [ + "-s" + "-w" + "-X=main.Version=${version}" + ]; + + subPackages = [ "." ]; + + meta = { + description = "Proxy HTTP requests through SSH"; + homepage = "https://github.com/hoffie/sshified"; + changelog = "https://github.com/hoffie/sshified/blob/v${version}/CHANGELOG.md"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ joinemm ]; + mainProgram = "sshified"; + }; +} diff --git a/pkgs/by-name/st/streamcontroller/package.nix b/pkgs/by-name/st/streamcontroller/package.nix index 830bc12290527..71e2a2ee65d14 100644 --- a/pkgs/by-name/st/streamcontroller/package.nix +++ b/pkgs/by-name/st/streamcontroller/package.nix @@ -16,15 +16,13 @@ stdenv.mkDerivation rec { pname = "streamcontroller"; - # Note that the latest tagged version (1.5.0-beta.6) includes a python dependency - # that doesn't exist anymore, so we package an unstable version instead. - version = "1.5.0-beta.6-unstable-2024-08-13"; + version = "1.5.0-beta.7"; src = fetchFromGitHub { repo = "StreamController"; owner = "StreamController"; - rev = "dbb6460a69137af192db09d504224ae9f1127cbd"; - hash = "sha256-+YYzHLRU5MNjF3iaKIDj9k4PVg+vnEZhbc3ZmNI7xyw="; + rev = version; + hash = "sha256-UBcsA9pAo7fONhk4vYXQU4EgSVKm1D7/7nvL9BaNIgo="; }; # The installation method documented upstream diff --git a/pkgs/by-name/tu/tuifimanager/package.nix b/pkgs/by-name/tu/tuifimanager/package.nix index 26b30a477da09..7d2a68badb691 100644 --- a/pkgs/by-name/tu/tuifimanager/package.nix +++ b/pkgs/by-name/tu/tuifimanager/package.nix @@ -19,14 +19,14 @@ lib.throwIf (enableDragAndDrop && !hasDndSupport) python3.pkgs.buildPythonApplication rec { pname = "tuifimanager"; - version = "4.1.7"; + version = "5.0.0"; format = "pyproject"; src = fetchFromGitHub { owner = "GiorgosXou"; repo = "TUIFIManager"; rev = "v.${version}"; - hash = "sha256-kljodLSSjvGcjhD7IhAVAAGd6LoiM6IYwMXuSsIJ198="; + hash = "sha256-2yYD1YFGoN0uj3HzcYxEs3zbwfUIDLLzvfTcZILx5h4="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ve/vep/package.nix b/pkgs/by-name/ve/vep/package.nix new file mode 100644 index 0000000000000..576b4c9b35fbf --- /dev/null +++ b/pkgs/by-name/ve/vep/package.nix @@ -0,0 +1,134 @@ +# Instructions:http://www.ensembl.org/info/docs/api/api_installation.html, +# Do not use https://github.com/Ensembl/ensembl-vep/archive/release/${version}.zip +# We cannot use INSTALL.pl but it’s not that bad:install the dependencies and copies the .pm files should be ok +{ + lib, + htslib, + perlPackages, + stdenv, + fetchFromGitHub, + perl, + makeWrapper, +}: + +let + version = "110"; + customInstallPhase = '' + mkdir -p $out/${perl.libPrefix}/${perl.version}/ + tests=$(find modules/ -mindepth 1 -maxdepth 1 -type d | grep -v t) + cp -r $tests $out/${perl.libPrefix}/${perl.version}/ + ''; + + ensemblGit = + name: sha256: + # Copy modules directly + stdenv.mkDerivation { + inherit name version; + src = fetchFromGitHub { + inherit sha256 version; + owner = "Ensembl"; + repo = name; + rev = "release/${version}"; + }; + installPhase = '' + runHook preInstall + + ${customInstallPhase} + + runHook postInstall''; + }; + + vepPlugins = fetchFromGitHub { + owner = "Ensembl"; + repo = "VEP_plugins"; + rev = "8f271c4848338dc7d504881ff71fdf2892c3d096"; + sha256 = "sha256-LbaXwLFDP3m1QhRHwO9uh36BEFHE2NzL4xdxTb7/S5Q="; + }; + + # Install ensembl-xs, faster run using re-implementation in C of some of the Perl subroutines + ensembl-xs = perlPackages.buildPerlPackage rec { + pname = "ensembl-xs"; + version = "2.3.2"; + src = fetchFromGitHub { + inherit version; + owner = "Ensembl"; + repo = "ensembl-xs"; + rev = version; + sha256 = "1qqnski532f4bz32wxbqd9w1sz40rjh81ipp9p02k3rlaf1gp1fa"; + }; + # PREFIX is important + configurePhase = '' + perl Makefile.PL PREFIX=$out INSTALLDIRS=site + ''; + # Test do not work -- wrong include path + doCheck = false; + }; + + # it contains compiled versions of certain key subroutines used in VEP + ensembl = ensemblGit "ensembl" "sha256-ZhI4VNxIY+53RX2uYRNlFeo/ydAmlwGx00WDXaxv6h4="; + ensembl-io = ensemblGit "ensembl-io" "sha256-r3RvN5U2kcyghoKM0XuiBRe54t1U4FaZ0QEeYIFiG0w="; + ensembl-variation = ensemblGit "ensembl-variation" "sha256-UjrLHF9EqI+Mp+SZR4sLNZUCGiA/UYhoFWtpwiKF8tM="; + ensembl-funcgen = ensemblGit "ensembl-funcgen" "sha256-a9hxLBoXJsF5JWuRdpyOac1u033M8ivEjEQecuncghs="; +in +perlPackages.buildPerlModule rec { + inherit version; + pname = "vep"; + buildInputs = + (with perlPackages; [ + ArchiveZip + BioBigFile + BioDBHTS + BioExtAlign + BioPerl + DBI + DBDmysql + LWP + JSON + ]) + ++ [ + ensembl-xs + ensembl + ensembl-funcgen + ensembl-io + ensembl-variation + ]; + propagatedBuildInputs = [ htslib ]; + src = fetchFromGitHub { + owner = "Ensembl"; + repo = "ensembl-${pname}"; + rev = "release/${version}"; + sha256 = "sha256-6lRdWV2ispl+mpBhkZez/d9PxOw1fkNUWeG8mUIqBJc="; + }; + + nativeBuildInputs = [ makeWrapper ]; + dontBuild = true; + doCheck = false; + + outputs = [ "out" ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + install -D -m755 filter_vep vep $out/bin/ + + wrapProgram $out/bin/vep \ + --prefix PERL5LIB : $out/${perl.libPrefix}/${perl.version}/ \ + --add-flags "--dir_plugins ${vepPlugins}" + + wrapProgram $out/bin/filter_vep \ + --prefix PERL5LIB : $out/${perl.libPrefix}/${perl.version}/ + ${customInstallPhase} + + runHook postInstall + ''; + + meta = { + homepage = "https://www.ensembl.org/info/docs/tools/vep/index.html"; + description = "Annotate genetics variants based on genes, transcripts, and protein sequence, as well as regulatory regions"; + license = lib.licenses.asl20; + mainProgram = "vep"; + maintainers = with lib.maintainers; [ apraga ]; + platforms = lib.platforms.unix; + }; +} diff --git a/pkgs/by-name/ve/versatiles/package.nix b/pkgs/by-name/ve/versatiles/package.nix new file mode 100644 index 0000000000000..7f960aa06ce4e --- /dev/null +++ b/pkgs/by-name/ve/versatiles/package.nix @@ -0,0 +1,51 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, +}: + +rustPlatform.buildRustPackage rec { + pname = "versatiles"; + version = "0.12.10"; # When updating: Replace with current version + + src = fetchFromGitHub { + owner = "versatiles-org"; + repo = "versatiles-rs"; + rev = "refs/tags/v${version}"; # When updating: Replace with long commit hash of new version + hash = "sha256-LKUpxsAy39dX8hESlUEVs4rkOpYsd7kbATfnU1QYd9Q="; # When updating: Use `lib.fakeHash` for recomputing the hash once. Run: 'nix-build -A versatiles'. Swap with new hash and proceed. + }; + + cargoHash = "sha256-dkFnoQY1+VNNrjS+o5Y0cvhWKoHt38KJKyNhCQ0dGaY="; # When updating: Same as above + + # Testing only necessary for the `bins` and `lib` features + cargoTestFlags = [ + "--bins" + "--lib" + ]; + + # Skip tests that require network access + checkFlags = [ + "--skip tools::convert::tests::test_remote1" + "--skip tools::convert::tests::test_remote2" + "--skip tools::probe::tests::test_remote" + "--skip tools::serve::tests::test_remote" + "--skip utils::io::data_reader_http" + "--skip utils::io::data_reader_http::tests::read_range_git" + "--skip utils::io::data_reader_http::tests::read_range_googleapis" + ]; + + meta = { + description = "Toolbox for converting, checking and serving map tiles in various formats"; + longDescription = '' + VersaTiles is a Rust-based project designed for processing and serving tile data efficiently. + It supports multiple tile formats and offers various functionalities for handling tile data. + ''; + homepage = "https://versatiles.org/"; + downloadPage = "https://github.com/versatiles-org/versatiles-rs"; + changelog = "https://github.com/versatiles-org/versatiles-rs/releases/tag/v${version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ wilhelmines ]; + mainProgram = "versatiles"; + platforms = with lib.platforms; linux ++ darwin ++ windows; + }; +} diff --git a/pkgs/by-name/vi/victoriametrics/package.nix b/pkgs/by-name/vi/victoriametrics/package.nix index 3ded9852fff5c..8f265415b300e 100644 --- a/pkgs/by-name/vi/victoriametrics/package.nix +++ b/pkgs/by-name/vi/victoriametrics/package.nix @@ -14,13 +14,13 @@ buildGoModule rec { pname = "VictoriaMetrics"; - version = "1.102.1"; + version = "1.105.0"; src = fetchFromGitHub { owner = "VictoriaMetrics"; repo = "VictoriaMetrics"; rev = "v${version}"; - hash = "sha256-FFQiHPcvB3ht6NlaUWPAuEUswXYUzeRilAw4NQ9+8/o="; + hash = "sha256-cMc2CVjVTQLsY/GJht35DCapEtROPJO3j6FCCDXJPMk="; }; vendorHash = null; diff --git a/pkgs/by-name/wa/warp-plus/package.nix b/pkgs/by-name/wa/warp-plus/package.nix new file mode 100644 index 0000000000000..ec80044aae4f4 --- /dev/null +++ b/pkgs/by-name/wa/warp-plus/package.nix @@ -0,0 +1,52 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + + nix-update-script, + testers, + warp-plus, +}: + +buildGoModule rec { + pname = "warp-plus"; + version = "1.2.4"; + + src = fetchFromGitHub { + owner = "bepass-org"; + repo = "warp-plus"; + rev = "v${version}"; + hash = "sha256-fFyYch14JqXSmnplPJ8c3epOxromZmEJAdcuSgkKbcM="; + }; + + vendorHash = "sha256-/rBZqrX9xZT8yOZwynkOOQyPl0govNmvsEqWVxsuvB4="; + + ldflags = [ + "-s" + "-w" + "-X main.version=${version}" + ]; + + checkFlags = + let + # Skip tests that require network access + skippedTests = [ + "TestConcurrencySafety" + "TestTwoDevicePing" + ]; + in + [ "-skip=^${builtins.concatStringsSep "$|^" skippedTests}$" ]; + + passthru = { + updateScript = nix-update-script { }; + tests.version = testers.testVersion { package = warp-plus; }; + }; + + meta = { + description = "Warp + Psiphon, an anti censorship utility for Iran"; + homepage = "https://github.com/bepass-org/warp-plus"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ paveloom ]; + mainProgram = "warp-plus"; + }; +} diff --git a/pkgs/by-name/wa/warp-terminal/versions.json b/pkgs/by-name/wa/warp-terminal/versions.json index bc420f89b33c5..365b4a17878a2 100644 --- a/pkgs/by-name/wa/warp-terminal/versions.json +++ b/pkgs/by-name/wa/warp-terminal/versions.json @@ -1,14 +1,14 @@ { "darwin": { - "hash": "sha256-6cPn6ukGPpEdzCcENGUT5h+UPSo8rrEZEjeLEHJTG/4=", - "version": "0.2024.10.15.08.02.stable_03" + "hash": "sha256-KaHjVEdmzOw3BnFd77vTb+067IEOPIWiJmVOHQcjN6E=", + "version": "0.2024.10.23.14.49.stable_00" }, "linux_x86_64": { - "hash": "sha256-ftTBelAaGWxrOlpDGtEeNT9GjtS4XZdvzUsWxEnrGzs=", - "version": "0.2024.10.15.08.02.stable_03" + "hash": "sha256-gRuA+drCQdOPJrSKky2WKxon84dxVVcfK+0GipzMBZU=", + "version": "0.2024.10.23.14.49.stable_00" }, "linux_aarch64": { - "hash": "sha256-y7oSCc+bsRj7BSF8MiYpNJ73M5xBBTIRhotHdRPsfqk=", - "version": "0.2024.10.15.08.02.stable_03" + "hash": "sha256-LTpcGsQscEbxAosW68yfSb9lDyecDLdci3JzPimTYrQ=", + "version": "0.2024.10.23.14.49.stable_00" } } diff --git a/pkgs/by-name/wi/wired/package.nix b/pkgs/by-name/wi/wired/package.nix new file mode 100644 index 0000000000000..c18c4462b16aa --- /dev/null +++ b/pkgs/by-name/wi/wired/package.nix @@ -0,0 +1,53 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, + pkg-config, + dbus, + pango, + cairo, + xorg, +}: + +rustPlatform.buildRustPackage rec { + pname = "wired"; + version = "0.10.6"; + + src = fetchFromGitHub { + owner = "Toqozz"; + repo = "wired-notify"; + rev = "refs/tags/${version}"; + hash = "sha256-AWIV/+vVwDZECZ4lFMSFyuyUKJc/gb72PiBJv6lbhnc="; + }; + + cargoHash = "sha256-gIDMD1jT6Wj5FCgbPURF0aayFBOq2mrZE1GZWQ3iYAA="; + + strictDeps = true; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ + dbus + pango + cairo + xorg.libXScrnSaver + xorg.libXcursor + xorg.libXrandr + xorg.libX11 + xorg.libXi + ]; + + postInstall = '' + mkdir -p $out/usr/lib/systemd/system + substitute ./wired.service $out/usr/lib/systemd/system/wired.service --replace /usr/bin/wired $out/bin/wired + install -Dm444 -t $out/etc/wired wired.ron wired_multilayout.ron + ''; + + meta = { + description = "Lightweight notification daemon written in Rust"; + homepage = "https://github.com/Toqozz/wired-notify"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ fccapria ]; + badPlatforms = lib.platforms.darwin; + mainProgram = "wired"; + }; +} diff --git a/pkgs/by-name/ya/yabai/package.nix b/pkgs/by-name/ya/yabai/package.nix index 22f21c191000d..53834f3cd7390 100644 --- a/pkgs/by-name/ya/yabai/package.nix +++ b/pkgs/by-name/ya/yabai/package.nix @@ -27,7 +27,7 @@ let in stdenv'.mkDerivation (finalAttrs: { pname = "yabai"; - version = "7.1.3"; + version = "7.1.4"; src = finalAttrs.passthru.sources.${stdenv.hostPlatform.system} @@ -96,13 +96,13 @@ stdenv'.mkDerivation (finalAttrs: { # See the comments on https://github.com/NixOS/nixpkgs/pull/188322 for more information. "aarch64-darwin" = fetchzip { url = "https://github.com/koekeishiya/yabai/releases/download/v${finalAttrs.version}/yabai-v${finalAttrs.version}.tar.gz"; - hash = "sha256-wp5B24DYX1RYHS/3+4WRRCzVE6FyCzatJDpzJWrEIpQ="; + hash = "sha256-DAHZwEhPIBIfR2V+jTKje1msB8OMKzwGYgYnDql8zb0="; }; "x86_64-darwin" = fetchFromGitHub { owner = "koekeishiya"; repo = "yabai"; rev = "v${finalAttrs.version}"; - hash = "sha256-hCwI6ziUR4yuJOv4MQXh3ufbausaDrG8XfjR+jIOeC4="; + hash = "sha256-i/UqmBNTLBYY4ORI1Y7FWr+LZK0f/qMdWLPPuTb9+2w="; }; }; diff --git a/pkgs/by-name/yt/ytdl-sub/package.nix b/pkgs/by-name/yt/ytdl-sub/package.nix new file mode 100644 index 0000000000000..71a0ee253521c --- /dev/null +++ b/pkgs/by-name/yt/ytdl-sub/package.nix @@ -0,0 +1,49 @@ +{ + python3Packages, + fetchPypi, + ffmpeg, + lib, +}: +python3Packages.buildPythonApplication rec { + pname = "ytdl-sub"; + version = "2024.10.26"; + pyproject = true; + + src = fetchPypi { + inherit version; + pname = "ytdl_sub"; + hash = "sha256-qfEPHhCB/Avl+nUIk2+ZVseg8ATP/LQmLvX/H9rhp7M="; + }; + + build-system = with python3Packages; [ + setuptools + wheel + ]; + + dependencies = with python3Packages; [ + yt-dlp + colorama + mergedeep + mediafile + pyyaml + ]; + + makeWrapperArgs = [ + "--set YTDL_SUB_FFMPEG_PATH ${lib.getExe' ffmpeg "ffmpeg"}" + "--set YTDL_SUB_FFPROBE_PATH ${lib.getExe' ffmpeg "ffprobe"}" + ]; + + meta = { + homepage = "https://github.com/jmbannon/ytdl-sub"; + description = "Lightweight tool to automate downloading and metadata generation with yt-dlp"; + longDescription = '' + ytdl-sub is a command-line tool that downloads media via yt-dlp and prepares it for your favorite media player, including Kodi, Jellyfin, Plex, Emby, and modern music players. No additional plugins or external scrapers are needed. + ''; + changelog = "https://github.com/jmbannon/ytdl-sub/releases/tag/${version}"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ + loc + ]; + mainProgram = "ytdl-sub"; + }; +} diff --git a/pkgs/by-name/yt/ytmdesktop/package.nix b/pkgs/by-name/yt/ytmdesktop/package.nix index 21d32541bcc38..f6e04c930b7b2 100644 --- a/pkgs/by-name/yt/ytmdesktop/package.nix +++ b/pkgs/by-name/yt/ytmdesktop/package.nix @@ -3,7 +3,7 @@ asar, commandLineArgs ? "", copyDesktopItems, - electron_30, + electron_33, fetchurl, makeDesktopItem, makeWrapper, @@ -12,7 +12,7 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "ytmdesktop"; - version = "2.0.5"; + version = "2.0.6"; desktopItems = [ (makeDesktopItem { @@ -40,7 +40,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "https://github.com/ytmdesktop/ytmdesktop/releases/download/v${finalAttrs.version}/youtube-music-desktop-app_${finalAttrs.version}_amd64.deb"; - hash = "sha256-0j8HVmkFyTk/Jpq9dfQXFxd2jnLwzfEiqCgRHuc5g9o="; + hash = "sha256-uLTnVA9ooGlbtmUGoYtrT9IlOhTAJpEXMr1GSs3ae/8="; }; unpackPhase = '' @@ -80,7 +80,7 @@ stdenv.mkDerivation (finalAttrs: { fixupPhase = '' runHook preFixup - makeWrapper ${lib.getExe electron_30} $out/bin/ytmdesktop \ + makeWrapper ${lib.getExe electron_33} $out/bin/ytmdesktop \ --add-flags $out/lib/resources/app.asar \ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \ --add-flags ${lib.escapeShellArg commandLineArgs} @@ -96,7 +96,7 @@ stdenv.mkDerivation (finalAttrs: { license = lib.licenses.gpl3Only; mainProgram = finalAttrs.pname; maintainers = [ lib.maintainers.cjshearer ]; - inherit (electron_30.meta) platforms; + inherit (electron_33.meta) platforms; # While the files we extract from the .deb are cross-platform (javascript), the installation # process for darwin is different, and I don't have a test device. PRs are welcome if you can # add the correct installation steps. I would suggest looking at the following: diff --git a/pkgs/by-name/ze/zenity/package.nix b/pkgs/by-name/ze/zenity/package.nix index aa23342eebc20..2e907a48eb1ff 100644 --- a/pkgs/by-name/ze/zenity/package.nix +++ b/pkgs/by-name/ze/zenity/package.nix @@ -16,11 +16,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "zenity"; - version = "4.0.2"; + version = "4.0.3"; src = fetchurl { url = "mirror://gnome/sources/zenity/${lib.versions.majorMinor finalAttrs.version}/zenity-${finalAttrs.version}.tar.xz"; - hash = "sha256-wW3K5G4p4iwvoLlegOBslrKuyThAFhNpyVyF7Z8JMVM="; + hash = "sha256-tCnZe4e9nOf7cqwLeN9TRyXYrTmBfdympMou5TgbCN4="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/zi/zip2hashcat/package.nix b/pkgs/by-name/zi/zip2hashcat/package.nix new file mode 100644 index 0000000000000..1c18f21a9914c --- /dev/null +++ b/pkgs/by-name/zi/zip2hashcat/package.nix @@ -0,0 +1,46 @@ +{ + lib, + stdenv, + fetchFromGitHub, + ... +}: + +stdenv.mkDerivation rec { + pname = "zip2hashcat"; + version = "1.0"; + + src = fetchFromGitHub { + owner = "hashstation"; + repo = "zip2hashcat"; + # Upstream 1.0 tag has no content + rev = "462bd94ea30d69a0810ca9bb3d056aa0f5393d57"; + hash = "sha256-+hbDTGSDUxA7M8gBI/TViJ2ZvheNxlonYC/aFLvgPW8="; + }; + + buildPhase = '' + runHook preBuild + + $CC zip2hashcat.c -o zip2hashcat + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + mv zip2hashcat $out/bin/zip2hashcat + + runHook postInstall + ''; + + meta = { + description = "Processes input ZIP files into a format suitable for use with hashcat"; + homepage = "https://github.com/hashstation/zip2hashcat"; + license = lib.licenses.mit; + changelog = "https://github.com/hashstation/zip2hashcat/releases/tag/${version}"; + maintainers = with lib.maintainers; [ pyrox0 ]; + mainProgram = "zip2hashcat"; + platforms = lib.platforms.all; + }; +} diff --git a/pkgs/by-name/zp/zpaqfranz/package.nix b/pkgs/by-name/zp/zpaqfranz/package.nix index 1ade403a11870..9bc55d0ffca53 100644 --- a/pkgs/by-name/zp/zpaqfranz/package.nix +++ b/pkgs/by-name/zp/zpaqfranz/package.nix @@ -6,13 +6,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "zpaqfranz"; - version = "60.6"; + version = "60.7"; src = fetchFromGitHub { owner = "fcorbelli"; repo = "zpaqfranz"; rev = finalAttrs.version; - hash = "sha256-/lUczs4YrbLH7agZDyThPwtMLiSi07XMqwk0GgR/jFw="; + hash = "sha256-tlMbCHlrGPvRSqdfItdCkxLPm1LtVWcGTQMUoZTCsIg="; }; nativeBuildInputs = [ diff --git a/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix b/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix index d360da5dfa6c3..f5b18d196ff56 100644 --- a/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix +++ b/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix @@ -120,27 +120,44 @@ let xorg.libXtst ]; - postInstall = '' - # jni.h expects jni_md.h to be in the header search path. - ln -sf $out/include/linux/*_md.h $out/include/ - - mkdir -p $out/share - # move files in $out like LICENSE.txt - find $out/ -maxdepth 1 -type f -exec mv {} $out/share \; - # symbolic link to $out/lib/svm/LICENSE_NATIVEIMAGE.txt - rm -f $out/LICENSE_NATIVEIMAGE.txt - - # copy-paste openjdk's preFixup - # Set JAVA_HOME automatically. - mkdir -p $out/nix-support - cat > $out/nix-support/setup-hook << EOF - if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi - EOF - - wrapProgram $out/bin/native-image \ - --prefix PATH : ${binPath} \ - ${toString (map (l: "--add-flags '-H:CLibraryPath=${l}/lib'") cLibs)} - ''; + postInstall = + let + cLibsAsFlags = (map (l: "--add-flags '-H:CLibraryPath=${l}/lib'") cLibs); + preservedNixVariables = [ + "-ELOCALE_ARCHIVE" + "-ENIX_BINTOOLS" + "-ENIX_BINTOOLS_WRAPPER_TARGET_HOST_${stdenv.cc.suffixSalt}" + "-ENIX_BUILD_CORES" + "-ENIX_BUILD_TOP" + "-ENIX_CC" + "-ENIX_CC_WRAPPER_TARGET_HOST_${stdenv.cc.suffixSalt}" + "-ENIX_CFLAGS_COMPILE" + "-ENIX_HARDENING_ENABLE" + "-ENIX_LDFLAGS" + ]; + preservedNixVariablesAsFlags = (map (f: "--add-flags '${f}'") preservedNixVariables); + in + '' + # jni.h expects jni_md.h to be in the header search path. + ln -sf $out/include/linux/*_md.h $out/include/ + + mkdir -p $out/share + # move files in $out like LICENSE.txt + find $out/ -maxdepth 1 -type f -exec mv {} $out/share \; + # symbolic link to $out/lib/svm/LICENSE_NATIVEIMAGE.txt + rm -f $out/LICENSE_NATIVEIMAGE.txt + + # copy-paste openjdk's preFixup + # Set JAVA_HOME automatically. + mkdir -p $out/nix-support + cat > $out/nix-support/setup-hook << EOF + if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi + EOF + + wrapProgram $out/bin/native-image \ + --prefix PATH : ${binPath} \ + ${toString (cLibsAsFlags ++ preservedNixVariablesAsFlags)} + ''; preFixup = lib.optionalString (stdenv.hostPlatform.isLinux) '' for bin in $(find "$out/bin" -executable -type f); do @@ -171,10 +188,8 @@ let echo "Testing GraalVM" $out/bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler HelloWorld | fgrep 'Hello World' - extraNativeImageArgs="$(export -p | sed -n 's/^declare -x \([^=]\+\)=.*$/ -E\1/p' | tr -d \\n)" - echo "Ahead-Of-Time compilation" - $out/bin/native-image -H:+UnlockExperimentalVMOptions -H:-CheckToolchain -H:+ReportExceptionStackTraces -march=compatibility $extraNativeImageArgs HelloWorld + $out/bin/native-image -H:+UnlockExperimentalVMOptions -H:-CheckToolchain -H:+ReportExceptionStackTraces -march=compatibility HelloWorld ./helloworld | fgrep 'Hello World' ${# -H:+StaticExecutableWithDynamicLibC is only available in Linux diff --git a/pkgs/development/interpreters/babashka/default.nix b/pkgs/development/interpreters/babashka/default.nix index f4b51b37c480f..f413c47b81696 100644 --- a/pkgs/development/interpreters/babashka/default.nix +++ b/pkgs/development/interpreters/babashka/default.nix @@ -9,11 +9,11 @@ let babashka-unwrapped = buildGraalvmNativeImage rec { pname = "babashka-unwrapped"; - version = "1.4.192"; + version = "1.12.194"; src = fetchurl { url = "https://github.com/babashka/babashka/releases/download/v${version}/babashka-${version}-standalone.jar"; - sha256 = "sha256-uVRk1/lfOXMSp3qOdeMoAFpwJaEBxF1MYtFOv364H7Y="; + sha256 = "sha256-Dx3AANMpmCPH8Zaz8/9FRNRRhcEPnZHXQje47udwwRQ="; }; graalvmDrv = graalvmCEPackages.graalvm-ce; @@ -37,6 +37,7 @@ let $out/bin/bb '(vec (dedupe *input*))' <<< '[1 1 1 1 2]' | fgrep '[1 2]' $out/bin/bb '(prn "bépo àê")' | fgrep 'bépo àê' $out/bin/bb '(:out (babashka.process/sh "echo" "ä"))' | fgrep 'ä' + $out/bin/bb '(into-array [:f])' ''; postInstall = '' diff --git a/pkgs/development/interpreters/php/8.1.nix b/pkgs/development/interpreters/php/8.1.nix index 9482ca500eb9c..adf8fbfe59816 100644 --- a/pkgs/development/interpreters/php/8.1.nix +++ b/pkgs/development/interpreters/php/8.1.nix @@ -21,10 +21,13 @@ let }) # Backport of PHP_LIBXML_IGNORE_DEPRECATIONS_START and PHP_LIBXML_IGNORE_DEPRECATIONS_END # Required for libxml2 2.13 compatibility patch. - ./php81-fix-libxml2-2.13-compatibility.patch + (fetchpatch { + url = "https://github.com/php/php-src/commit/e2d97314ab342d434e778cd00a2f34e4bdb07664.patch"; + hash = "sha256-w0hyYUgbRGpvIBfWeDTSEUGpiJdyrtNjKy+Fn1vyAO0="; + }) # Fix build with libxml2 2.13+. Has to be applied after libxml2 2.12 patch. (fetchpatch { - url = "https://github.com/php/php-src/commit/9b4f6b09d58a4e54ee60443bf9a8b166852c03e0.patch"; + url = "https://github.com/php/php-src/commit/4fe821311cafb18ca8bdf20b9d796c48a13ba552.patch"; hash = "sha256-YC3I0BQi3o3+VmRu/UqpqPpaSC+ekPqzbORTHftbPvY="; }) ]; diff --git a/pkgs/development/interpreters/php/php81-fix-libxml2-2.13-compatibility.patch b/pkgs/development/interpreters/php/php81-fix-libxml2-2.13-compatibility.patch deleted file mode 100644 index b4624676ee29d..0000000000000 --- a/pkgs/development/interpreters/php/php81-fix-libxml2-2.13-compatibility.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/ext/libxml/php_libxml.h b/ext/libxml/php_libxml.h -index a1011f0b17..7a7622c482 100644 ---- a/ext/libxml/php_libxml.h -+++ b/ext/libxml/php_libxml.h -@@ -119,6 +119,23 @@ PHP_LIBXML_API void php_libxml_shutdown(void); - ZEND_TSRMLS_CACHE_EXTERN() - #endif - -+#if defined(__clang__) -+# define PHP_LIBXML_IGNORE_DEPRECATIONS_START \ -+ _Pragma("clang diagnostic push") \ -+ _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") -+# define PHP_LIBXML_IGNORE_DEPRECATIONS_END \ -+ _Pragma("clang diagnostic pop") -+#elif defined(__GNUC__) -+# define PHP_LIBXML_IGNORE_DEPRECATIONS_START \ -+ _Pragma("GCC diagnostic push") \ -+ _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") -+# define PHP_LIBXML_IGNORE_DEPRECATIONS_END \ -+ _Pragma("GCC diagnostic pop") -+#else -+# define PHP_LIBXML_IGNORE_DEPRECATIONS_START -+# define PHP_LIBXML_IGNORE_DEPRECATIONS_END -+#endif -+ - /* Other extension may override the global state options, these global options - * are copied initially to ctxt->options. Set the options to a known good value. - * See libxml2 globals.c and parserInternals.c. diff --git a/pkgs/development/libraries/libconfig/default.nix b/pkgs/development/libraries/libconfig/default.nix deleted file mode 100644 index 049b0c8f4fb87..0000000000000 --- a/pkgs/development/libraries/libconfig/default.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ lib -, stdenv -, fetchurl -, # this also disables building tests. - # on static windows cross-compile they fail to build - doCheck ? with stdenv.hostPlatform; !(isWindows && isStatic) -}: - -stdenv.mkDerivation rec { - pname = "libconfig"; - version = "1.7.3"; - - src = fetchurl { - url = "https://hyperrealm.github.io/${pname}/dist/${pname}-${version}.tar.gz"; - sha256 = "sha256-VFFm1srAN3RDgdHpzFpUBQlOe/rRakEWmbz/QLuzHuc="; - }; - - inherit doCheck; - - configureFlags = lib.optional (stdenv.hostPlatform.isWindows || stdenv.hostPlatform.isStatic) "--disable-examples" - ++ lib.optional (!doCheck) "--disable-tests"; - - cmakeFlags = lib.optionals (!doCheck) [ "-DBUILD_TESTS:BOOL=OFF" ]; - - meta = with lib; { - homepage = "http://www.hyperrealm.com/libconfig"; - description = "Simple library for processing structured configuration files"; - license = licenses.lgpl3; - maintainers = [ ]; - platforms = platforms.all; - }; -} diff --git a/pkgs/development/libraries/libieee1284/default.nix b/pkgs/development/libraries/libieee1284/default.nix index c49e425231372..377d56957123c 100644 --- a/pkgs/development/libraries/libieee1284/default.nix +++ b/pkgs/development/libraries/libieee1284/default.nix @@ -32,6 +32,11 @@ stdenv.mkDerivation rec { configureFlags = [ "--without-python" + ] ++ lib.optionals (stdenv.hostPlatform.isMusl && !stdenv.hostPlatform.isx86) [ + # musl always provides , even though the functionality + # is x86-specific. + # https://www.openwall.com/lists/musl/2024/10/25/2 + "ac_cv_header_sys_io_h=no" ]; prePatch = '' diff --git a/pkgs/development/libraries/libpwquality/default.nix b/pkgs/development/libraries/libpwquality/default.nix index 08454fe94de0c..dd610989617b9 100644 --- a/pkgs/development/libraries/libpwquality/default.nix +++ b/pkgs/development/libraries/libpwquality/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { }) ]; - nativeBuildInputs = [ autoreconfHook perl ] ++ lib.optionals enablePython [ python ]; + nativeBuildInputs = [ autoreconfHook perl ] ++ lib.optionals enablePython [ (python.withPackages (ps: with ps; [ distutils ])) ]; buildInputs = [ cracklib ] ++ lib.optionals enablePAM [ pam ]; configureFlags = lib.optionals (!enablePython) [ "--disable-python-bindings" ]; diff --git a/pkgs/development/misc/brev-cli/default.nix b/pkgs/development/misc/brev-cli/default.nix index 74da4320deb50..5de9127f4e9fb 100644 --- a/pkgs/development/misc/brev-cli/default.nix +++ b/pkgs/development/misc/brev-cli/default.nix @@ -5,16 +5,16 @@ buildGoModule rec { pname = "brev-cli"; - version = "0.6.293"; + version = "0.6.295"; src = fetchFromGitHub { owner = "brevdev"; repo = pname; rev = "v${version}"; - sha256 = "sha256-XRzwLPUNUSf88GqwdI8/WuodFVdoHuY8k6GYBgUco20="; + sha256 = "sha256-sdf74TsDVwCpL+2XQl64Z7tIIuM60XW9nLfAjuy5yZ0="; }; - vendorHash = "sha256-oVs7CFnijmyaQAEoYuKf56n+i2q9YMjq4HatbpWympw="; + vendorHash = "sha256-ZlL4Ts+3lZhxSkg0QlCJHtl3bg3t3nQRVIDD6GaOJnE="; CGO_ENABLED = 0; subPackages = [ "." ]; diff --git a/pkgs/development/ocaml-modules/gen_js_api/default.nix b/pkgs/development/ocaml-modules/gen_js_api/default.nix index 1901bfa59bfcd..1c0cd9c5bdbfa 100644 --- a/pkgs/development/ocaml-modules/gen_js_api/default.nix +++ b/pkgs/development/ocaml-modules/gen_js_api/default.nix @@ -10,13 +10,13 @@ buildDunePackage rec { pname = "gen_js_api"; - version = "1.1.2"; + version = "1.1.3"; src = fetchFromGitHub { owner = "LexiFi"; repo = pname; rev = "v${version}"; - sha256 = "sha256-tplbnQ/1dzZq8m/ibMAkGqY8RHQRmBPHOwh0dGuZCJM="; + sha256 = "sha256-9xYSxiPKZP7U1wbnw3/FiLhF/JmTA12rlrr4jSynA3k="; }; minimalOCamlVersion = "4.11"; diff --git a/pkgs/development/ocaml-modules/mlbdd/default.nix b/pkgs/development/ocaml-modules/mlbdd/default.nix index 0392597c2f3b4..dfdd1fdc8f3f3 100644 --- a/pkgs/development/ocaml-modules/mlbdd/default.nix +++ b/pkgs/development/ocaml-modules/mlbdd/default.nix @@ -7,15 +7,15 @@ buildDunePackage { pname = "mlbdd"; - version = "0.7.2"; + version = "0.7.3"; minimalOCamlVersion = "4.04"; src = fetchFromGitHub { owner = "arlencox"; repo = "mlbdd"; - rev = "v0.7.2"; - hash = "sha256-GRkaUL8LQDdQx9mPvlJIXatgRfen/zKt+nGLiH7Mfvs="; + rev = "v0.7.3"; + hash = "sha256-TUdgx+B5341VJsnP7iTHID7hNC+5G/I2xNM5F3mdb/A="; }; checkInputs = [ ounit ]; diff --git a/pkgs/development/ocaml-modules/printbox/default.nix b/pkgs/development/ocaml-modules/printbox/default.nix index 56d9628ebfaf6..ea99dfcd81def 100644 --- a/pkgs/development/ocaml-modules/printbox/default.nix +++ b/pkgs/development/ocaml-modules/printbox/default.nix @@ -2,7 +2,7 @@ buildDunePackage rec { pname = "printbox"; - version = "0.11"; + version = "0.12"; minimalOCamlVersion = "4.04"; @@ -10,7 +10,7 @@ buildDunePackage rec { owner = "c-cube"; repo = pname; rev = "v${version}"; - sha256 = "sha256-f5iTesEakULlLdDGtX+5i3vesUIbFLjcV3kJ7ZPia0Y="; + sha256 = "sha256-PQbr2sjASoWz0OHAMV6buAJERpnUJxVpLAigIVnADIc="; }; nativeCheckInputs = [ mdx.bin ]; diff --git a/pkgs/development/perl-modules/NetRemctl/default.nix b/pkgs/development/perl-modules/NetRemctl/default.nix new file mode 100644 index 0000000000000..78ee5dfdffcb1 --- /dev/null +++ b/pkgs/development/perl-modules/NetRemctl/default.nix @@ -0,0 +1,20 @@ +{ + buildPerlModule, + remctl, + TestPod, +}: + +buildPerlModule { + pname = "NetRemctl"; + + inherit (remctl) meta src version; + + postPatch = '' + cp -R tests/tap/perl/Test perl/t/lib + cd perl + ''; + + buildInputs = [ remctl ]; + + checkInputs = [ TestPod ]; +} diff --git a/pkgs/development/perl-modules/net-snmp-add-sha-algorithms.patch b/pkgs/development/perl-modules/net-snmp-add-sha-algorithms.patch new file mode 100644 index 0000000000000..be732a1b80de7 --- /dev/null +++ b/pkgs/development/perl-modules/net-snmp-add-sha-algorithms.patch @@ -0,0 +1,913 @@ +From https://github.com/openbsd/ports/blob/master/net/p5-Net-SNMP/patches/patch-lib_Net_SNMP_Security_USM_pm +Tests for the additional algorithms have also been added. + +diff --git a/MANIFEST b/MANIFEST +index 3430564..d3dd7f0 100644 +--- a/MANIFEST ++++ b/MANIFEST +@@ -40,3 +40,7 @@ t/usm-sha1-3des.t + t/usm-sha1-aes.t + t/usm-sha1-cfb192aes.t + t/usm-sha1-des.t ++t/usm-sha224-aes.t ++t/usm-sha256-aes.t ++t/usm-sha384-aes.t ++t/usm-sha512-aes.t +diff --git a/lib/Net/SNMP/Security/USM.pm b/lib/Net/SNMP/Security/USM.pm +index a76ef56..0bcd52c 100644 +--- a/lib/Net/SNMP/Security/USM.pm ++++ b/lib/Net/SNMP/Security/USM.pm +@@ -26,8 +26,9 @@ use Net::SNMP::Message qw( + use Crypt::DES(); + use Digest::MD5(); + use Digest::SHA(); +-use Digest::HMAC_MD5(); +-use Digest::HMAC_SHA1(); ++ ++use Digest::SHA qw( hmac_sha1 hmac_sha224 hmac_sha256 hmac_sha384 hmac_sha512 ); ++use Digest::HMAC_MD5 qw ( hmac_md5 ); + + ## Version of the Net::SNMP::Security::USM module + +@@ -41,7 +42,9 @@ our @EXPORT_OK; + + our %EXPORT_TAGS = ( + authprotos => [ +- qw( AUTH_PROTOCOL_NONE AUTH_PROTOCOL_HMACMD5 AUTH_PROTOCOL_HMACSHA ) ++ qw( AUTH_PROTOCOL_NONE AUTH_PROTOCOL_HMACMD5 AUTH_PROTOCOL_HMACSHA ++ AUTH_PROTOCOL_HMACSHA224 AUTH_PROTOCOL_HMACSHA256 ++ AUTH_PROTOCOL_HMACSHA384 AUTH_PROTOCOL_HMACSHA512 ) + ], + levels => [ + qw( SECURITY_LEVEL_NOAUTHNOPRIV SECURITY_LEVEL_AUTHNOPRIV +@@ -64,9 +67,13 @@ $EXPORT_TAGS{ALL} = [ @EXPORT_OK ]; + + ## RCC 3414 - Authentication protocols + +-sub AUTH_PROTOCOL_NONE { '1.3.6.1.6.3.10.1.1.1' } # usmNoAuthProtocol +-sub AUTH_PROTOCOL_HMACMD5 { '1.3.6.1.6.3.10.1.1.2' } # usmHMACMD5AuthProtocol +-sub AUTH_PROTOCOL_HMACSHA { '1.3.6.1.6.3.10.1.1.3' } # usmHMACSHAAuthProtocol ++sub AUTH_PROTOCOL_NONE { '1.3.6.1.6.3.10.1.1.1' } # usmNoAuthProtocol ++sub AUTH_PROTOCOL_HMACMD5 { '1.3.6.1.6.3.10.1.1.2' } # usmHMACMD5AuthProtocol ++sub AUTH_PROTOCOL_HMACSHA { '1.3.6.1.6.3.10.1.1.3' } # usmHMACSHAAuthProtocol ++sub AUTH_PROTOCOL_HMACSHA224 { '1.3.6.1.6.3.10.1.1.4' } # usmHMAC128SHA224AuthProtocol ++sub AUTH_PROTOCOL_HMACSHA256 { '1.3.6.1.6.3.10.1.1.5' } # usmHMAC192SHA256AuthProtocol ++sub AUTH_PROTOCOL_HMACSHA384 { '1.3.6.1.6.3.10.1.1.6' } # usmHMAC256SHA384AuthProtocol ++sub AUTH_PROTOCOL_HMACSHA512 { '1.3.6.1.6.3.10.1.1.7' } # usmHMAC384SHA512AuthProtocol + + ## RFC 3414 - Privacy protocols + +@@ -125,6 +132,7 @@ sub new + '_time_epoc' => time(), # snmpEngineBoots epoc + '_user_name' => q{}, # securityName + '_auth_data' => undef, # Authentication data ++ '_auth_maclen' => undef, # MAC length + '_auth_key' => undef, # authKey + '_auth_password' => undef, # Authentication password + '_auth_protocol' => AUTH_PROTOCOL_HMACMD5, # authProtocol +@@ -281,10 +289,10 @@ sub generate_request_msg + if ($pdu->security_level() > SECURITY_LEVEL_NOAUTHNOPRIV) { + + # Save the location to fill in msgAuthenticationParameters later +- $auth_location = $msg->length() + 12 + length $pdu_buffer; ++ $auth_location = $msg->length() + $this->{_auth_maclen} + length $pdu_buffer; + + # Set the msgAuthenticationParameters to all zeros +- $auth_params = pack 'x12'; ++ $auth_params = pack "x$this->{_auth_maclen}"; + } + + if (!defined $msg->prepare(OCTET_STRING, $auth_params)) { +@@ -419,12 +427,12 @@ sub process_incoming_msg + # to compute the HMAC properly. + + if (my $len = length $auth_params) { +- if ($len != 12) { ++ if ($len != $this->{_auth_maclen}) { + return $this->_error( + 'The msgAuthenticationParameters length of %d is invalid', $len + ); + } +- substr ${$msg->reference}, ($msg->index() - 12), 12, pack 'x12'; ++ substr ${$msg->reference}, ($msg->index() - $this->{_auth_maclen}), $this->{_auth_maclen}, pack "x$this->{_auth_maclen}"; + } + + # msgPrivacyParameters::=OCTET STRING +@@ -748,6 +756,18 @@ sub _auth_password + quotemeta AUTH_PROTOCOL_HMACMD5, AUTH_PROTOCOL_HMACMD5, + '(?:hmac-)?sha(?:-?1|-96)?', AUTH_PROTOCOL_HMACSHA, + quotemeta AUTH_PROTOCOL_HMACSHA, AUTH_PROTOCOL_HMACSHA, ++ '(?:hmac-)?sha(?:-?224)', AUTH_PROTOCOL_HMACSHA224, ++ 'usmHMAC128SHA224AuthProtocol', AUTH_PROTOCOL_HMACSHA224, ++ quotemeta AUTH_PROTOCOL_HMACSHA224,AUTH_PROTOCOL_HMACSHA224, ++ '(?:hmac-)?sha(?:-?256)', AUTH_PROTOCOL_HMACSHA256, ++ 'usmHMAC192SHA256AuthProtocol', AUTH_PROTOCOL_HMACSHA256, ++ quotemeta AUTH_PROTOCOL_HMACSHA256,AUTH_PROTOCOL_HMACSHA256, ++ '(?:hmac-)?sha(?:-?384)', AUTH_PROTOCOL_HMACSHA384, ++ 'usmHMAC256SHA384AuthProtocol', AUTH_PROTOCOL_HMACSHA384, ++ quotemeta AUTH_PROTOCOL_HMACSHA384,AUTH_PROTOCOL_HMACSHA384, ++ '(?:hmac-)?sha(?:-?512)', AUTH_PROTOCOL_HMACSHA512, ++ 'usmHMAC384SHA512AuthProtocol', AUTH_PROTOCOL_HMACSHA512, ++ quotemeta AUTH_PROTOCOL_HMACSHA512,AUTH_PROTOCOL_HMACSHA512, + }; + + sub _auth_protocol +@@ -1100,7 +1120,7 @@ sub _authenticate_outgoing_msg + } + + # Set the msgAuthenticationParameters +- substr ${$msg->reference}, -$auth_location, 12, $this->_auth_hmac($msg); ++ substr ${$msg->reference}, -$auth_location, $this->{_auth_maclen}, $this->_auth_hmac($msg); + + return TRUE; + } +@@ -1126,7 +1146,7 @@ sub _auth_hmac + return q{} if (!defined($this->{_auth_data}) || !defined $msg); + + return substr +- $this->{_auth_data}->reset()->add(${$msg->reference()})->digest(), 0, 12; ++ $this->{_auth_data}(${$msg->reference()}, $this->{_auth_key}), 0, $this->{_auth_maclen}; + } + + sub _auth_data_init +@@ -1141,16 +1161,35 @@ sub _auth_data_init + + if ($this->{_auth_protocol} eq AUTH_PROTOCOL_HMACMD5) { + +- $this->{_auth_data} = +- Digest::HMAC_MD5->new($this->{_auth_key}); ++ $this->{_auth_data} = \&hmac_md5; ++ $this->{_auth_maclen} = 12; + + } elsif ($this->{_auth_protocol} eq AUTH_PROTOCOL_HMACSHA) { + +- $this->{_auth_data} = +- Digest::HMAC_SHA1->new($this->{_auth_key}); ++ $this->{_auth_data} = \&hmac_sha1; ++ $this->{_auth_maclen} = 12; ++ ++ } elsif ($this->{_auth_protocol} eq AUTH_PROTOCOL_HMACSHA224) { ++ ++ $this->{_auth_data} = \&hmac_sha224; ++ $this->{_auth_maclen} = 16; ++ ++ } elsif ($this->{_auth_protocol} eq AUTH_PROTOCOL_HMACSHA256) { ++ ++ $this->{_auth_data} = \&hmac_sha256; ++ $this->{_auth_maclen} = 24; ++ ++ } elsif ($this->{_auth_protocol} eq AUTH_PROTOCOL_HMACSHA384) { ++ ++ $this->{_auth_data} = \&hmac_sha384; ++ $this->{_auth_maclen} = 32; ++ ++ } elsif ($this->{_auth_protocol} eq AUTH_PROTOCOL_HMACSHA512) { ++ ++ $this->{_auth_data} = \&hmac_sha512; ++ $this->{_auth_maclen} = 48; + + } else { +- + return $this->_error( + 'The authProtocol "%s" is unknown', $this->{_auth_protocol} + ); +@@ -1628,6 +1667,10 @@ sub _auth_key_validate + { + AUTH_PROTOCOL_HMACMD5, [ 16, 'HMAC-MD5' ], + AUTH_PROTOCOL_HMACSHA, [ 20, 'HMAC-SHA1' ], ++ AUTH_PROTOCOL_HMACSHA224, [ 28, 'HMAC-SHA224' ], ++ AUTH_PROTOCOL_HMACSHA256, [ 32, 'HMAC-SHA256' ], ++ AUTH_PROTOCOL_HMACSHA384, [ 48, 'HMAC-SHA384' ], ++ AUTH_PROTOCOL_HMACSHA512, [ 64, 'HMAC-SHA512' ], + }; + + if (!exists $key_len->{$this->{_auth_protocol}}) { +@@ -1783,8 +1826,12 @@ sub _password_localize + + my $digests = + { +- AUTH_PROTOCOL_HMACMD5, 'Digest::MD5', +- AUTH_PROTOCOL_HMACSHA, 'Digest::SHA', ++ AUTH_PROTOCOL_HMACMD5, ['Digest::MD5', ], ++ AUTH_PROTOCOL_HMACSHA, ['Digest::SHA', 1], ++ AUTH_PROTOCOL_HMACSHA224, ['Digest::SHA', 224], ++ AUTH_PROTOCOL_HMACSHA256, ['Digest::SHA', 256], ++ AUTH_PROTOCOL_HMACSHA384, ['Digest::SHA', 384], ++ AUTH_PROTOCOL_HMACSHA512, ['Digest::SHA', 512], + }; + + if (!exists $digests->{$this->{_auth_protocol}}) { +@@ -1793,7 +1840,12 @@ sub _password_localize + ); + } + +- my $digest = $digests->{$this->{_auth_protocol}}->new; ++ my $digest; ++ if (!defined($digests->{$this->{_auth_protocol}}[1])) { ++ $digest = $digests->{$this->{_auth_protocol}}[0]->new; ++ } else { ++ $digest = $digests->{$this->{_auth_protocol}}[0]->new($digests->{$this->{_auth_protocol}}[1]); ++ } + + # Create the initial digest using the password + +diff --git a/t/usm-sha224-aes.t b/t/usm-sha224-aes.t +new file mode 100644 +index 0000000..e7d118e +--- /dev/null ++++ b/t/usm-sha224-aes.t +@@ -0,0 +1,169 @@ ++# -*- mode: perl -*- ++# ============================================================================ ++ ++# Test of the SNMPv3 User-based Security Model. ++ ++# Copyright (c) 2001-2009 David M. Town . ++# Copyright (c) 2024 Michal Josef Špaček . ++# All rights reserved. ++ ++# This program is free software; you may redistribute it and/or modify it ++# under the same terms as the Perl 5 programming language system itself. ++ ++# ============================================================================ ++ ++use strict; ++use Test; ++ ++BEGIN ++{ ++ $| = 1; ++ $^W = 1; ++ plan tests => 7 ++} ++ ++use Net::SNMP::Message qw(SEQUENCE OCTET_STRING FALSE); ++ ++# ++# Load the Net::SNMP::Security::USM module ++# ++ ++eval 'use Net::SNMP::Security::USM; use Crypt::Rijndael;'; ++ ++my $skip = ($@ =~ /locate (:?\S+\.pm)/) ? $@ : FALSE; ++ ++# ++# 1. Create the Net::SNMP::Security::USM object ++# ++ ++my ($u, $e); ++ ++eval ++{ ++ ($u, $e) = Net::SNMP::Security::USM->new( ++ -username => 'dtown', ++ -authpassword => 'maplesyrup', ++ -authprotocol => 'sha224', ++ -privpassword => 'maplesyrup', ++ -privprotocol => 'aes', ++ ); ++ ++ # "Perform" discovery... ++ $u->_engine_id_discovery(pack 'x11H2', '02'); ++ ++ # ...and synchronization ++ $u->_synchronize(10, time); ++}; ++ ++skip( ++ $skip, ($@ || $e), q{}, 'Failed to create Net::SNMP::Security::USM object' ++); ++ ++# ++# 2. Check the localized authKey ++# ++ ++eval ++{ ++ $e = unpack 'H*', $u->auth_key(); ++}; ++ ++skip( ++ $skip, ++ ($@ || $e), ++ '0bd8827c6e29f8065e08e09237f177e410f69b90e1782be682075674', ++ 'Invalid authKey calculated' ++); ++ ++# ++# 3. Check the localized privKey ++# ++ ++eval ++{ ++ $e = unpack 'H*', $u->priv_key(); ++}; ++ ++skip( ++ $skip, ++ ($@ || $e), ++ '0bd8827c6e29f8065e08e09237f177e4', ++ 'Invalid privKey calculated' ++); ++ ++# ++# 4. Create and initialize a Message ++# ++ ++my $m; ++ ++eval ++{ ++ ($m, $e) = Net::SNMP::Message->new(); ++ $m->prepare(SEQUENCE, pack('H*', 'deadbeef') x 8); ++ $e = $m->error(); ++}; ++ ++skip($skip, ($@ || $e), q{}, 'Failed to create Net::SNMP::Message object'); ++ ++# ++# 5. Calculate the HMAC ++# ++ ++my $h; ++ ++eval ++{ ++ $h = unpack 'H*', $u->_auth_hmac($m); ++}; ++ ++skip($skip, $@, q{}, 'Calculate the HMAC failed'); ++ ++# ++# 6. Encrypt/descrypt the Message ++# ++ ++my $henc; ++ ++eval ++{ ++ my $engine_boots = 0; ++ my $engine_time = 1710186219; ++ my $salt; ++ my $len = $m->length(); ++ my $buff = $m->clear(); ++ $u->{_engine_boots} = $engine_boots; ++ $u->{_engine_time} = $engine_time; ++ my $encrypted = $u->_encrypt_data($m, $salt, $buff); ++ $henc = unpack 'H*', $encrypted; ++ $m->append($encrypted); ++ substr $salt, 0, 0, pack 'NN', $engine_boots, $engine_time; ++ $u->_decrypt_data($m, $salt, $m->process(OCTET_STRING)); ++ $e = $u->error(); ++ # Remove padding if necessary ++ if ($len -= $m->length()) { ++ substr ${$m->reference()}, $len, -$len, q{}; ++ } ++}; ++ ++skip( ++ $skip, ++ ($@ || $e || $henc), ++ '042228c5467793ab001f4be546de4b990f90998b09d43f2baaffb52a5d36457cef3b5ab7', ++ 'Privacy failed', ++); ++ ++# ++# 7. Check the HMAC ++# ++ ++my $h2; ++ ++eval ++{ ++ $h2 = unpack 'H*', $u->_auth_hmac($m); ++}; ++ ++skip($skip, ($@ || $h2), $h, 'Authentication failed'); ++ ++# ============================================================================ +diff --git a/t/usm-sha256-aes.t b/t/usm-sha256-aes.t +new file mode 100644 +index 0000000..4521187 +--- /dev/null ++++ b/t/usm-sha256-aes.t +@@ -0,0 +1,169 @@ ++# -*- mode: perl -*- ++# ============================================================================ ++ ++# Test of the SNMPv3 User-based Security Model. ++ ++# Copyright (c) 2001-2009 David M. Town . ++# Copyright (c) 2024 Michal Josef Špaček . ++# All rights reserved. ++ ++# This program is free software; you may redistribute it and/or modify it ++# under the same terms as the Perl 5 programming language system itself. ++ ++# ============================================================================ ++ ++use strict; ++use Test; ++ ++BEGIN ++{ ++ $| = 1; ++ $^W = 1; ++ plan tests => 7 ++} ++ ++use Net::SNMP::Message qw(SEQUENCE OCTET_STRING FALSE); ++ ++# ++# Load the Net::SNMP::Security::USM module ++# ++ ++eval 'use Net::SNMP::Security::USM; use Crypt::Rijndael;'; ++ ++my $skip = ($@ =~ /locate (:?\S+\.pm)/) ? $@ : FALSE; ++ ++# ++# 1. Create the Net::SNMP::Security::USM object ++# ++ ++my ($u, $e); ++ ++eval ++{ ++ ($u, $e) = Net::SNMP::Security::USM->new( ++ -username => 'dtown', ++ -authpassword => 'maplesyrup', ++ -authprotocol => 'sha256', ++ -privpassword => 'maplesyrup', ++ -privprotocol => 'aes', ++ ); ++ ++ # "Perform" discovery... ++ $u->_engine_id_discovery(pack 'x11H2', '02'); ++ ++ # ...and synchronization ++ $u->_synchronize(10, time); ++}; ++ ++skip( ++ $skip, ($@ || $e), q{}, 'Failed to create Net::SNMP::Security::USM object' ++); ++ ++# ++# 2. Check the localized authKey ++# ++ ++eval ++{ ++ $e = unpack 'H*', $u->auth_key(); ++}; ++ ++skip( ++ $skip, ++ ($@ || $e), ++ '8982e0e549e866db361a6b625d84cccc11162d453ee8ce3a6445c2d6776f0f8b', ++ 'Invalid authKey calculated' ++); ++ ++# ++# 3. Check the localized privKey ++# ++ ++eval ++{ ++ $e = unpack 'H*', $u->priv_key(); ++}; ++ ++skip( ++ $skip, ++ ($@ || $e), ++ '8982e0e549e866db361a6b625d84cccc', ++ 'Invalid privKey calculated' ++); ++ ++# ++# 4. Create and initialize a Message ++# ++ ++my $m; ++ ++eval ++{ ++ ($m, $e) = Net::SNMP::Message->new(); ++ $m->prepare(SEQUENCE, pack('H*', 'deadbeef') x 8); ++ $e = $m->error(); ++}; ++ ++skip($skip, ($@ || $e), q{}, 'Failed to create Net::SNMP::Message object'); ++ ++# ++# 5. Calculate the HMAC ++# ++ ++my $h; ++ ++eval ++{ ++ $h = unpack 'H*', $u->_auth_hmac($m); ++}; ++ ++skip($skip, $@, q{}, 'Calculate the HMAC failed'); ++ ++# ++# 6. Encrypt/descrypt the Message ++# ++ ++my $henc; ++ ++eval ++{ ++ my $engine_boots = 0; ++ my $engine_time = 1710186219; ++ my $salt; ++ my $len = $m->length(); ++ my $buff = $m->clear(); ++ $u->{_engine_boots} = $engine_boots; ++ $u->{_engine_time} = $engine_time; ++ my $encrypted = $u->_encrypt_data($m, $salt, $buff); ++ $henc = unpack 'H*', $encrypted; ++ $m->append($encrypted); ++ substr $salt, 0, 0, pack 'NN', $engine_boots, $engine_time; ++ $u->_decrypt_data($m, $salt, $m->process(OCTET_STRING)); ++ $e = $u->error(); ++ # Remove padding if necessary ++ if ($len -= $m->length()) { ++ substr ${$m->reference()}, $len, -$len, q{}; ++ } ++}; ++ ++skip( ++ $skip, ++ ($@ || $e || $henc), ++ '0422863d06faf464369a298b66062e54374ba3b4a0f862162d25ba72130038f8befc9e21', ++ 'Privacy failed', ++); ++ ++# ++# 7. Check the HMAC ++# ++ ++my $h2; ++ ++eval ++{ ++ $h2 = unpack 'H*', $u->_auth_hmac($m); ++}; ++ ++skip($skip, ($@ || $h2), $h, 'Authentication failed'); ++ ++# ============================================================================ +diff --git a/t/usm-sha384-aes.t b/t/usm-sha384-aes.t +new file mode 100644 +index 0000000..e88ca4a +--- /dev/null ++++ b/t/usm-sha384-aes.t +@@ -0,0 +1,169 @@ ++# -*- mode: perl -*- ++# ============================================================================ ++ ++# Test of the SNMPv3 User-based Security Model. ++ ++# Copyright (c) 2001-2009 David M. Town . ++# Copyright (c) 2024 Michal Josef Špaček . ++# All rights reserved. ++ ++# This program is free software; you may redistribute it and/or modify it ++# under the same terms as the Perl 5 programming language system itself. ++ ++# ============================================================================ ++ ++use strict; ++use Test; ++ ++BEGIN ++{ ++ $| = 1; ++ $^W = 1; ++ plan tests => 7 ++} ++ ++use Net::SNMP::Message qw(SEQUENCE OCTET_STRING FALSE); ++ ++# ++# Load the Net::SNMP::Security::USM module ++# ++ ++eval 'use Net::SNMP::Security::USM; use Crypt::Rijndael;'; ++ ++my $skip = ($@ =~ /locate (:?\S+\.pm)/) ? $@ : FALSE; ++ ++# ++# 1. Create the Net::SNMP::Security::USM object ++# ++ ++my ($u, $e); ++ ++eval ++{ ++ ($u, $e) = Net::SNMP::Security::USM->new( ++ -username => 'dtown', ++ -authpassword => 'maplesyrup', ++ -authprotocol => 'sha384', ++ -privpassword => 'maplesyrup', ++ -privprotocol => 'aes', ++ ); ++ ++ # "Perform" discovery... ++ $u->_engine_id_discovery(pack 'x11H2', '02'); ++ ++ # ...and synchronization ++ $u->_synchronize(10, time); ++}; ++ ++skip( ++ $skip, ($@ || $e), q{}, 'Failed to create Net::SNMP::Security::USM object' ++); ++ ++# ++# 2. Check the localized authKey ++# ++ ++eval ++{ ++ $e = unpack 'H*', $u->auth_key(); ++}; ++ ++skip( ++ $skip, ++ ($@ || $e), ++ '3b298f16164a11184279d5432bf169e2d2a48307de02b3d3f7e2b4f36eb6f0455a53689a3937eea07319a633d2ccba78', ++ 'Invalid authKey calculated' ++); ++ ++# ++# 3. Check the localized privKey ++# ++ ++eval ++{ ++ $e = unpack 'H*', $u->priv_key(); ++}; ++ ++skip( ++ $skip, ++ ($@ || $e), ++ '3b298f16164a11184279d5432bf169e2', ++ 'Invalid privKey calculated' ++); ++ ++# ++# 4. Create and initialize a Message ++# ++ ++my $m; ++ ++eval ++{ ++ ($m, $e) = Net::SNMP::Message->new(); ++ $m->prepare(SEQUENCE, pack('H*', 'deadbeef') x 8); ++ $e = $m->error(); ++}; ++ ++skip($skip, ($@ || $e), q{}, 'Failed to create Net::SNMP::Message object'); ++ ++# ++# 5. Calculate the HMAC ++# ++ ++my $h; ++ ++eval ++{ ++ $h = unpack 'H*', $u->_auth_hmac($m); ++}; ++ ++skip($skip, $@, q{}, 'Calculate the HMAC failed'); ++ ++# ++# 6. Encrypt/descrypt the Message ++# ++ ++my $henc; ++ ++eval ++{ ++ my $engine_boots = 0; ++ my $engine_time = 1710186219; ++ my $salt; ++ my $len = $m->length(); ++ my $buff = $m->clear(); ++ $u->{_engine_boots} = $engine_boots; ++ $u->{_engine_time} = $engine_time; ++ my $encrypted = $u->_encrypt_data($m, $salt, $buff); ++ $henc = unpack 'H*', $encrypted; ++ $m->append($encrypted); ++ substr $salt, 0, 0, pack 'NN', $engine_boots, $engine_time; ++ $u->_decrypt_data($m, $salt, $m->process(OCTET_STRING)); ++ $e = $u->error(); ++ # Remove padding if necessary ++ if ($len -= $m->length()) { ++ substr ${$m->reference()}, $len, -$len, q{}; ++ } ++}; ++ ++skip( ++ $skip, ++ ($@ || $e || $henc), ++ '0422850967bbff81be49aefadf9b6ee3eedb9093609fcfc813a21bdf09b469965923bfc0', ++ 'Privacy failed', ++); ++ ++# ++# 7. Check the HMAC ++# ++ ++my $h2; ++ ++eval ++{ ++ $h2 = unpack 'H*', $u->_auth_hmac($m); ++}; ++ ++skip($skip, ($@ || $h2), $h, 'Authentication failed'); ++ ++# ============================================================================ +diff --git a/t/usm-sha512-aes.t b/t/usm-sha512-aes.t +new file mode 100644 +index 0000000..c5eadf3 +--- /dev/null ++++ b/t/usm-sha512-aes.t +@@ -0,0 +1,169 @@ ++# -*- mode: perl -*- ++# ============================================================================ ++ ++# Test of the SNMPv3 User-based Security Model. ++ ++# Copyright (c) 2001-2009 David M. Town . ++# Copyright (c) 2024 Michal Josef Špaček . ++# All rights reserved. ++ ++# This program is free software; you may redistribute it and/or modify it ++# under the same terms as the Perl 5 programming language system itself. ++ ++# ============================================================================ ++ ++use strict; ++use Test; ++ ++BEGIN ++{ ++ $| = 1; ++ $^W = 1; ++ plan tests => 7 ++} ++ ++use Net::SNMP::Message qw(SEQUENCE OCTET_STRING FALSE); ++ ++# ++# Load the Net::SNMP::Security::USM module ++# ++ ++eval 'use Net::SNMP::Security::USM; use Crypt::Rijndael;'; ++ ++my $skip = ($@ =~ /locate (:?\S+\.pm)/) ? $@ : FALSE; ++ ++# ++# 1. Create the Net::SNMP::Security::USM object ++# ++ ++my ($u, $e); ++ ++eval ++{ ++ ($u, $e) = Net::SNMP::Security::USM->new( ++ -username => 'dtown', ++ -authpassword => 'maplesyrup', ++ -authprotocol => 'sha512', ++ -privpassword => 'maplesyrup', ++ -privprotocol => 'aes', ++ ); ++ ++ # "Perform" discovery... ++ $u->_engine_id_discovery(pack 'x11H2', '02'); ++ ++ # ...and synchronization ++ $u->_synchronize(10, time); ++}; ++ ++skip( ++ $skip, ($@ || $e), q{}, 'Failed to create Net::SNMP::Security::USM object' ++); ++ ++# ++# 2. Check the localized authKey ++# ++ ++eval ++{ ++ $e = unpack 'H*', $u->auth_key(); ++}; ++ ++skip( ++ $skip, ++ ($@ || $e), ++ '22a5a36cedfcc085807a128d7bc6c2382167ad6c0dbc5fdff856740f3d84c099ad1ea87a8db096714d9788bd544047c9021e4229ce27e4c0a69250adfcffbb0b', ++ 'Invalid authKey calculated' ++); ++ ++# ++# 3. Check the localized privKey ++# ++ ++eval ++{ ++ $e = unpack 'H*', $u->priv_key(); ++}; ++ ++skip( ++ $skip, ++ ($@ || $e), ++ '22a5a36cedfcc085807a128d7bc6c238', ++ 'Invalid privKey calculated' ++); ++ ++# ++# 4. Create and initialize a Message ++# ++ ++my $m; ++ ++eval ++{ ++ ($m, $e) = Net::SNMP::Message->new(); ++ $m->prepare(SEQUENCE, pack('H*', 'deadbeef') x 8); ++ $e = $m->error(); ++}; ++ ++skip($skip, ($@ || $e), q{}, 'Failed to create Net::SNMP::Message object'); ++ ++# ++# 5. Calculate the HMAC ++# ++ ++my $h; ++ ++eval ++{ ++ $h = unpack 'H*', $u->_auth_hmac($m); ++}; ++ ++skip($skip, $@, q{}, 'Calculate the HMAC failed'); ++ ++# ++# 6. Encrypt/descrypt the Message ++# ++ ++my $henc; ++ ++eval ++{ ++ my $engine_boots = 0; ++ my $engine_time = 1710186219; ++ my $salt; ++ my $len = $m->length(); ++ my $buff = $m->clear(); ++ $u->{_engine_boots} = $engine_boots; ++ $u->{_engine_time} = $engine_time; ++ my $encrypted = $u->_encrypt_data($m, $salt, $buff); ++ $henc = unpack 'H*', $encrypted; ++ $m->append($encrypted); ++ substr $salt, 0, 0, pack 'NN', $engine_boots, $engine_time; ++ $u->_decrypt_data($m, $salt, $m->process(OCTET_STRING)); ++ $e = $u->error(); ++ # Remove padding if necessary ++ if ($len -= $m->length()) { ++ substr ${$m->reference()}, $len, -$len, q{}; ++ } ++}; ++ ++skip( ++ $skip, ++ ($@ || $e || $henc), ++ '0422bae4cdb263a0936b189051e9b1759183b16d07c9a7d8bf633d6dd2e817a2ac2fe742', ++ 'Privacy failed', ++); ++ ++# ++# 7. Check the HMAC ++# ++ ++my $h2; ++ ++eval ++{ ++ $h2 = unpack 'H*', $u->_auth_hmac($m); ++}; ++ ++skip($skip, ($@ || $h2), $h, 'Authentication failed'); ++ ++# ============================================================================ diff --git a/pkgs/development/python-modules/aiokafka/default.nix b/pkgs/development/python-modules/aiokafka/default.nix index c44bf8e444682..131f0c0413239 100644 --- a/pkgs/development/python-modules/aiokafka/default.nix +++ b/pkgs/development/python-modules/aiokafka/default.nix @@ -15,16 +15,16 @@ buildPythonPackage rec { pname = "aiokafka"; - version = "0.11.0"; + version = "0.12.0"; pyproject = true; - disabled = pythonOlder "3.8"; + disabled = pythonOlder "3.9"; src = fetchFromGitHub { owner = "aio-libs"; repo = "aiokafka"; rev = "refs/tags/v${version}"; - hash = "sha256-CeEPRCsf2SFI5J5FuQlCRRtlOPcCtRiGXJUIQOAbyCc="; + hash = "sha256-OU/Kept3TvMfGvVCjSthfZnfTX6/T0Fy3PS/ynrV3Cg="; }; build-system = [ diff --git a/pkgs/development/python-modules/albucore/default.nix b/pkgs/development/python-modules/albucore/default.nix index 07f2e3f4ce72c..285c643038d75 100644 --- a/pkgs/development/python-modules/albucore/default.nix +++ b/pkgs/development/python-modules/albucore/default.nix @@ -7,21 +7,21 @@ pytestCheckHook, numpy, opencv4, - typing-extensions, + stringzilla, }: buildPythonPackage rec { pname = "albucore"; - version = "0.0.17"; + version = "0.0.19"; pyproject = true; - disabled = pythonOlder "3.8"; + disabled = pythonOlder "3.9"; src = fetchFromGitHub { owner = "albumentations-team"; repo = "albucore"; rev = "refs/tags/${version}"; - hash = "sha256-9fv5jewfL3JKhZyD0YS1WDNZ7wWt+8iF2DcygCOl168="; + hash = "sha256-GwT7Py7pKbpHxx4avj37/hRjSJXdH5uBU11nCITysVw="; }; pythonRemoveDeps = [ "opencv-python" ]; @@ -31,7 +31,7 @@ buildPythonPackage rec { dependencies = [ numpy opencv4 - typing-extensions + stringzilla ]; pythonImportsCheck = [ "albucore" ]; diff --git a/pkgs/development/python-modules/albumentations/default.nix b/pkgs/development/python-modules/albumentations/default.nix index 1f44d339500da..a613b63407542 100644 --- a/pkgs/development/python-modules/albumentations/default.nix +++ b/pkgs/development/python-modules/albumentations/default.nix @@ -31,7 +31,7 @@ buildPythonPackage rec { pname = "albumentations"; - version = "1.4.18"; + version = "1.4.20"; pyproject = true; disabled = pythonOlder "3.8"; @@ -40,7 +40,7 @@ buildPythonPackage rec { owner = "albumentations-team"; repo = "albumentations"; rev = "refs/tags/${version}"; - hash = "sha256-uAYnbglBT1mduyRnsWWjZ8axG7DzZEVcgAVeMLF48oM="; + hash = "sha256-lyYbkO2J3kpZGk8Q3FYfRiQh+BdolCfeEcjlI3W/rIw="; }; patches = [ diff --git a/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix b/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix index 01ed99cb621b7..aa9fd60a8a4c6 100644 --- a/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix +++ b/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix @@ -21,7 +21,7 @@ buildPythonPackage rec { pname = "appthreat-vulnerability-db"; - version = "6.1.0"; + version = "6.1.1"; pyproject = true; disabled = pythonOlder "3.10"; @@ -30,7 +30,7 @@ buildPythonPackage rec { owner = "AppThreat"; repo = "vulnerability-db"; rev = "refs/tags/v${version}"; - hash = "sha256-phqlzL2t7wv1Fxi8ZdTospcpHRcS9Q+mlpKRP6VeB4o="; + hash = "sha256-FISV+wEpoRVfHNjN/fZw7aqFp5XDvB21ZhQhRQvCnHY="; }; pythonRelaxDeps = [ diff --git a/pkgs/development/python-modules/basemap-data-hires/default.nix b/pkgs/development/python-modules/basemap-data-hires/default.nix new file mode 100644 index 0000000000000..44d352a8822a3 --- /dev/null +++ b/pkgs/development/python-modules/basemap-data-hires/default.nix @@ -0,0 +1,30 @@ +{ + lib, + buildPythonPackage, + setuptools, + basemap, +}: + +buildPythonPackage rec { + pname = "basemap-data-hires"; + pyproject = true; + inherit (basemap) version src; + + sourceRoot = "${src.name}/packages/basemap_data_hires"; + + build-system = [ + setuptools + ]; + + # no tests + doCheck = false; + + pythonImportsCheck = [ "mpl_toolkits.basemap_data" ]; + + meta = { + homepage = "https://matplotlib.org/basemap/"; + description = "High-resolution data assets for matplotlib basemap"; + license = lib.licenses.lgpl3Plus; + maintainers = with lib.maintainers; [ moraxyc ]; + }; +} diff --git a/pkgs/development/python-modules/bite-parser/default.nix b/pkgs/development/python-modules/bite-parser/default.nix index 76abaebf63640..1b00a055a1f27 100644 --- a/pkgs/development/python-modules/bite-parser/default.nix +++ b/pkgs/development/python-modules/bite-parser/default.nix @@ -2,7 +2,7 @@ lib, buildPythonPackage, pythonOlder, - fetchPypi, + fetchFromGitHub, poetry-core, pytest-asyncio, pytestCheckHook, @@ -10,19 +10,19 @@ buildPythonPackage rec { pname = "bite-parser"; - version = "0.2.4"; + version = "0.2.5"; + pyproject = true; - disabled = pythonOlder "3.8"; + disabled = pythonOlder "3.9"; - format = "pyproject"; - - src = fetchPypi { - pname = "bite_parser"; - inherit version; - hash = "sha256-Uq2FDoo5gztMRqtdkKYX0RULhjFgy+DeujC6BTZ3CZI="; + src = fetchFromGitHub { + owner = "jgosmann"; + repo = "bite-parser"; + rev = "refs/tags/v${version}"; + hash = "sha256-C508csRbjCeLgkp66TwDuxUtMITTmub5/TFv8x80HLA="; }; - nativeBuildInputs = [ poetry-core ]; + build-system = [ poetry-core ]; nativeCheckInputs = [ pytest-asyncio @@ -34,7 +34,7 @@ buildPythonPackage rec { meta = { description = "Asynchronous parser taking incremental bites out of your byte input stream"; homepage = "https://github.com/jgosmann/bite-parser"; - changelog = "https://github.com/jgosmann/bite-parser/blob/v${version}/CHANGELOG.rst"; + changelog = "https://github.com/jgosmann/bite-parser/blob/${src.rev}/CHANGELOG.rst"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ dotlambda ]; }; diff --git a/pkgs/development/python-modules/bokeh-sampledata/default.nix b/pkgs/development/python-modules/bokeh-sampledata/default.nix new file mode 100644 index 0000000000000..e4bba2b69f1cf --- /dev/null +++ b/pkgs/development/python-modules/bokeh-sampledata/default.nix @@ -0,0 +1,46 @@ +{ + lib, + buildPythonPackage, + fetchPypi, + + # build-system + setuptools, + setuptools-git-versioning, + + # dependencies + icalendar, + pandas, +}: + +buildPythonPackage rec { + pname = "bokeh-sampledata"; + version = "2024.2"; + pyproject = true; + + src = fetchPypi { + pname = "bokeh_sampledata"; + inherit version; + hash = "sha256-5j2qluedVj7IuE8gZy/+lPkFshRV+rjYPuM05G2jNiQ="; + }; + + build-system = [ + setuptools + setuptools-git-versioning + ]; + + dependencies = [ + icalendar + pandas + ]; + + pythonImportsCheck = [ + "bokeh_sampledata" + ]; + + meta = { + description = "Sample datasets for Bokeh examples"; + homepage = "https://pypi.org/project/bokeh-sampledata"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ doronbehar ]; + }; +} diff --git a/pkgs/development/python-modules/cryptg/default.nix b/pkgs/development/python-modules/cryptg/default.nix index 11492f912a752..73d5258efbe36 100644 --- a/pkgs/development/python-modules/cryptg/default.nix +++ b/pkgs/development/python-modules/cryptg/default.nix @@ -14,7 +14,7 @@ buildPythonPackage rec { pname = "cryptg"; - version = "0.5"; + version = "0.5.post0"; pyproject = true; disabled = pythonOlder "3.7"; @@ -23,12 +23,12 @@ buildPythonPackage rec { owner = "cher-nov"; repo = pname; rev = "v${version}"; - hash = "sha256-uJfMetplTyRT95P/8ljz4H4ASYMXEM7jROWSpjftKjU="; + hash = "sha256-GCTVxCJQvpvHpzaU+OaFM/AKoRvxLyA0u6VIV+94UTY="; }; cargoDeps = rustPlatform.fetchCargoTarball { inherit src; - hash = "sha256-HDMztt7/ZpPlpy0IMGuWGGo4vwKhraFTmTTPr9tC+Ok="; + hash = "sha256-BqtswBTurZoKw7DR3S7woDKLqAqIjKdSS5TBwCI+Bps="; }; build-system = [ diff --git a/pkgs/development/python-modules/dask-expr/default.nix b/pkgs/development/python-modules/dask-expr/default.nix index 4e9de770a193b..4598356713e62 100644 --- a/pkgs/development/python-modules/dask-expr/default.nix +++ b/pkgs/development/python-modules/dask-expr/default.nix @@ -20,14 +20,14 @@ buildPythonPackage rec { pname = "dask-expr"; - version = "1.1.15"; + version = "1.1.16"; pyproject = true; src = fetchFromGitHub { owner = "dask"; repo = "dask-expr"; rev = "refs/tags/v${version}"; - hash = "sha256-b5nY3srMADzYZ0GYCeyUfxhJLm7E4dTbM7qrsCR9d7A="; + hash = "sha256-7c0P+UTdjyOPdj0AM38TysNdbegT6N1iKKg6Kdgu8jI="; }; postPatch = '' diff --git a/pkgs/development/python-modules/dask/default.nix b/pkgs/development/python-modules/dask/default.nix index e47ced4264ab9..014f8947d35ba 100644 --- a/pkgs/development/python-modules/dask/default.nix +++ b/pkgs/development/python-modules/dask/default.nix @@ -39,14 +39,14 @@ let self = buildPythonPackage rec { pname = "dask"; - version = "2024.9.1"; + version = "2024.10.0"; pyproject = true; src = fetchFromGitHub { owner = "dask"; repo = "dask"; rev = "refs/tags/${version}"; - hash = "sha256-lbWV6qgLQ8itJsnz7ojrgfrO12+AwNe1/DJvxBo5A+Q="; + hash = "sha256-UB/LqgDRXnjJ/RjEke9eBDyVAy+Dtak7wYJB63xmDd4="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/dbt-common/default.nix b/pkgs/development/python-modules/dbt-common/default.nix index 4aac0b18701f9..182afb3c296d6 100644 --- a/pkgs/development/python-modules/dbt-common/default.nix +++ b/pkgs/development/python-modules/dbt-common/default.nix @@ -1,43 +1,55 @@ { lib, - agate, + fetchFromGitHub, buildPythonPackage, + pythonOlder, + + # build-system + hatchling, + + # dependencies + agate, colorama, deepdiff, - fetchPypi, - hatchling, isodate, jinja2, jsonschema, mashumaro, pathspec, protobuf, - pytest-mock, - pytest-xdist, - pytestCheckHook, python-dateutil, - pythonOlder, requests, typing-extensions, + + # tests + pytestCheckHook, + pytest-mock, + pytest-xdist, + numpy, }: buildPythonPackage rec { pname = "dbt-common"; - version = "1.10.0"; + version = "1.11.0"; pyproject = true; disabled = pythonOlder "3.8"; - src = fetchPypi { - pname = "dbt_common"; - inherit version; - hash = "sha256-z9n0bp3k+cLJXscCENG+U6xB4nkDjRinkoy7/T+bZ68="; + src = fetchFromGitHub { + owner = "dbt-labs"; + repo = "dbt-common"; + # Unfortunatly, upstream doesn't tag commits on GitHub, and the pypi source + # doesn't include tests. TODO: Write an update script that will detect the + # version from `dbt_common/__about__.py`. + rev = "ed11c6ceb4f29d4a79489469309d9ce9dd1757e6"; + hash = "sha256-JA6hFQwF7h1tXyCxBVKGgyevdTxyYeN3I/Bwy9uoC0Y="; }; build-system = [ hatchling ]; pythonRelaxDeps = [ "agate" + "deepdiff" "protobuf" ]; @@ -56,15 +68,17 @@ buildPythonPackage rec { typing-extensions ] ++ mashumaro.optional-dependencies.msgpack; - # Upstream stopped to tag the source fo rnow - doCheck = false; - nativeCheckInputs = [ - pytest-mock - pytest-xdist pytestCheckHook + pytest-xdist + pytest-mock + ]; + disabledTests = [ + # Assertion errors (TODO: Notify upstream) + "test_create_print_json" + "test_events" + "test_extra_dict_on_event" ]; - pythonImportsCheck = [ "dbt_common" ]; meta = { diff --git a/pkgs/development/python-modules/deepdiff/default.nix b/pkgs/development/python-modules/deepdiff/default.nix index ff583a572018f..3b46cf4aac9cd 100644 --- a/pkgs/development/python-modules/deepdiff/default.nix +++ b/pkgs/development/python-modules/deepdiff/default.nix @@ -2,10 +2,20 @@ lib, buildPythonPackage, fetchFromGitHub, + pythonOlder, + + # build-system + setuptools, + + # dependencies click, - ordered-set, + orderly-set, orjson, + + # optional-dependencies clevercsv, + + # tests jsonpickle, numpy, pytestCheckHook, @@ -13,13 +23,14 @@ pyyaml, toml, tomli-w, - pythonOlder, + polars, + pandas, }: buildPythonPackage rec { pname = "deepdiff"; - version = "7.0.1"; - format = "setuptools"; + version = "8.0.1"; + pyproject = true; disabled = pythonOlder "3.7"; @@ -27,19 +38,24 @@ buildPythonPackage rec { owner = "seperman"; repo = "deepdiff"; rev = "refs/tags/${version}"; - hash = "sha256-HqmAE5sLwyjyUahIUeRIJW0c5eliq/qEzE2FydHwc70="; + hash = "sha256-e6eTPSGoJ8r/4vGi/iGVFW/BruBADtVMtnO001Qs0IQ="; }; - postPatch = '' - substituteInPlace tests/test_command.py \ - --replace '/tmp/' "$TMPDIR/" - ''; + build-system = [ + setuptools + ]; - propagatedBuildInputs = [ + dependencies = [ click - ordered-set + orderly-set orjson ]; + pythonRelaxDeps = [ + # Upstream develops this package as well, and from some reason pins this + # dependency to a patch version below this one. No significant changes + # happend in that relase, so we shouldn't worry, especially if tests pass. + "orderly-set" + ]; optional-dependencies = { cli = [ @@ -56,22 +72,30 @@ buildPythonPackage rec { pytestCheckHook python-dateutil tomli-w + polars + pandas ] ++ optional-dependencies.cli; disabledTests = [ # not compatible with pydantic 2.x "test_pydantic1" "test_pydantic2" + # Require pytest-benchmark + "test_cache_deeply_nested_a1" + "test_lfu" ]; pythonImportsCheck = [ "deepdiff" ]; - meta = with lib; { + meta = { description = "Deep Difference and Search of any Python object/data"; mainProgram = "deep"; homepage = "https://github.com/seperman/deepdiff"; changelog = "https://github.com/seperman/deepdiff/releases/tag/${version}"; - license = licenses.mit; - maintainers = with maintainers; [ mic92 ]; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ + mic92 + doronbehar + ]; }; } diff --git a/pkgs/development/python-modules/distributed/default.nix b/pkgs/development/python-modules/distributed/default.nix index 063d30ca405fd..e652d82760341 100644 --- a/pkgs/development/python-modules/distributed/default.nix +++ b/pkgs/development/python-modules/distributed/default.nix @@ -28,14 +28,14 @@ buildPythonPackage rec { pname = "distributed"; - version = "2024.9.1"; + version = "2024.10.0"; pyproject = true; src = fetchFromGitHub { owner = "dask"; repo = "distributed"; rev = "refs/tags/${version}"; - hash = "sha256-UDfa59o+3RVN3QppoUamScdcH8XGOB+KAxArI5w7x6M="; + hash = "sha256-pdVqPzz66CueGuha66RTykrLtEGx9i6aScR+NHIYWg0="; }; postPatch = '' diff --git a/pkgs/development/python-modules/folium/default.nix b/pkgs/development/python-modules/folium/default.nix index 8be25eafc613a..d8e2e317dbba9 100644 --- a/pkgs/development/python-modules/folium/default.nix +++ b/pkgs/development/python-modules/folium/default.nix @@ -22,7 +22,7 @@ buildPythonPackage rec { pname = "folium"; - version = "0.17.0"; + version = "0.18.0"; pyproject = true; disabled = pythonOlder "3.7"; @@ -31,7 +31,7 @@ buildPythonPackage rec { owner = "python-visualization"; repo = "folium"; rev = "refs/tags/v${version}"; - hash = "sha256-uKT6WqT3pI3rqfV/3CA+mXBk3F7h4RWW1h2FPIy0JH4="; + hash = "sha256-TNj3javEETjWpI3xs1y/AuKHqFwnTBmWORZK2fafKqI="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/google-cloud-logging/default.nix b/pkgs/development/python-modules/google-cloud-logging/default.nix index cd8eab718411a..3a2bdd3b850e8 100644 --- a/pkgs/development/python-modules/google-cloud-logging/default.nix +++ b/pkgs/development/python-modules/google-cloud-logging/default.nix @@ -24,7 +24,7 @@ buildPythonPackage rec { pname = "google-cloud-logging"; - version = "3.11.2"; + version = "3.11.3"; pyproject = true; disabled = pythonOlder "3.7"; @@ -32,7 +32,7 @@ buildPythonPackage rec { src = fetchPypi { pname = "google_cloud_logging"; inherit version; - hash = "sha256-SJdEHCt09u2pGBwjqIFyI7YUWUMxSoIdZLcp0wdmyys="; + hash = "sha256-CnPNlBGIdTh9RTU3HZ6UJoYe3vjkT7oSYehngtW41U8="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/hahomematic/default.nix b/pkgs/development/python-modules/hahomematic/default.nix index 68de99e2656a5..b9f8513459f49 100644 --- a/pkgs/development/python-modules/hahomematic/default.nix +++ b/pkgs/development/python-modules/hahomematic/default.nix @@ -16,7 +16,7 @@ buildPythonPackage rec { pname = "hahomematic"; - version = "2024.10.8"; + version = "2024.10.14"; pyproject = true; disabled = pythonOlder "3.12"; @@ -25,7 +25,7 @@ buildPythonPackage rec { owner = "danielperna84"; repo = "hahomematic"; rev = "refs/tags/${version}"; - hash = "sha256-NFDh6XA6c1IWTHYjXB19V2kEW3ZkjFU/mz5XduzXj+g="; + hash = "sha256-1AOSKFcLzJn8nlFHj0Bl/XH6nvJRvGMmJoBFJjRRkVA="; }; __darwinAllowLocalNetworking = true; diff --git a/pkgs/development/python-modules/holoviews/default.nix b/pkgs/development/python-modules/holoviews/default.nix index b1e3f2badaf15..dfadc6952ea4c 100644 --- a/pkgs/development/python-modules/holoviews/default.nix +++ b/pkgs/development/python-modules/holoviews/default.nix @@ -1,16 +1,25 @@ { lib, buildPythonPackage, - colorcet, fetchPypi, + pythonOlder, + + # build-system hatch-vcs, hatchling, + + # dependencies + colorcet, numpy, pandas, panel, param, - pythonOlder, pyviz-comms, + + # tests + pytestCheckHook, + pytest-cov, + flaky, }: buildPythonPackage rec { @@ -39,16 +48,32 @@ buildPythonPackage rec { pyviz-comms ]; - # tests not fully included with pypi release - doCheck = false; + nativeCheckInputs = [ + pytestCheckHook + pytest-cov + flaky + ]; + + disabledTests = [ + # All the below fail due to some change in flaky API + "test_periodic_param_fn_non_blocking" + "test_callback_cleanup" + "test_poly_edit_callback" + "test_launch_server_with_complex_plot" + "test_launch_server_with_stream" + "test_launch_simple_server" + "test_server_dynamicmap_with_dims" + "test_server_dynamicmap_with_stream" + "test_server_dynamicmap_with_stream_dims" + ]; pythonImportsCheck = [ "holoviews" ]; - meta = with lib; { + meta = { description = "Python data analysis and visualization seamless and simple"; mainProgram = "holoviews"; homepage = "https://www.holoviews.org/"; - license = licenses.bsd3; + license = lib.licenses.bsd3; maintainers = [ ]; }; } diff --git a/pkgs/development/python-modules/hvplot/default.nix b/pkgs/development/python-modules/hvplot/default.nix index f31b50b572a9a..4831f14335c07 100644 --- a/pkgs/development/python-modules/hvplot/default.nix +++ b/pkgs/development/python-modules/hvplot/default.nix @@ -1,28 +1,45 @@ { lib, - bokeh, buildPythonPackage, - colorcet, fetchPypi, - holoviews, - pandas, pythonOlder, + + # build-system setuptools-scm, + + # dependencies + bokeh, + colorcet, + holoviews, + pandas, + + # tests + pytestCheckHook, + dask, + xarray, + bokeh-sampledata, + parameterized, + selenium, + matplotlib, + scipy, + plotly, }: buildPythonPackage rec { pname = "hvplot"; - version = "0.11.0"; + version = "0.11.1"; pyproject = true; disabled = pythonOlder "3.9"; src = fetchPypi { inherit pname version; - hash = "sha256-8796HdWF5P2j6XhUUxxD+5IBV7LFALnmPdNkAf/igDQ="; + hash = "sha256-mJ7QOJGJrcR+3NJgHS6rGL82bnSwf14oc+AhMjxKFLs="; }; - build-system = [ setuptools-scm ]; + build-system = [ + setuptools-scm + ]; dependencies = [ bokeh @@ -31,16 +48,34 @@ buildPythonPackage rec { pandas ]; - # Many tests require a network connection - doCheck = false; + nativeCheckInputs = [ + pytestCheckHook + dask + xarray + bokeh-sampledata + parameterized + selenium + matplotlib + scipy + plotly + ]; + + disabledTestPaths = [ + # All of the following below require xarray.tutorial files that require + # downloading files from the internet (not possible in the sandbox). + "hvplot/tests/testgeo.py" + "hvplot/tests/testinteractive.py" + "hvplot/tests/testui.py" + "hvplot/tests/testutil.py" + ]; pythonImportsCheck = [ "hvplot.pandas" ]; - meta = with lib; { + meta = { description = "High-level plotting API for the PyData ecosystem built on HoloViews"; homepage = "https://hvplot.pyviz.org"; changelog = "https://github.com/holoviz/hvplot/releases/tag/v${version}"; - license = licenses.bsd3; + license = lib.licenses.bsd3; maintainers = [ ]; }; } diff --git a/pkgs/development/python-modules/intake/default.nix b/pkgs/development/python-modules/intake/default.nix index 7ee914aca70f3..1422752b32308 100644 --- a/pkgs/development/python-modules/intake/default.nix +++ b/pkgs/development/python-modules/intake/default.nix @@ -1,7 +1,7 @@ { lib, stdenv, - appdirs, + platformdirs, bokeh, buildPythonPackage, dask, @@ -19,7 +19,9 @@ pytestCheckHook, python-snappy, pythonOlder, + pythonAtLeast, pyyaml, + networkx, requests, setuptools, setuptools-scm, @@ -28,7 +30,7 @@ buildPythonPackage rec { pname = "intake"; - version = "2.0.3"; + version = "2.0.7"; pyproject = true; disabled = pythonOlder "3.8"; @@ -37,7 +39,7 @@ buildPythonPackage rec { owner = "intake"; repo = "intake"; rev = "refs/tags/${version}"; - hash = "sha256-Fyv85HkoE9OPOoSHR1sgCG0iAFuSiQMT7cyZcQyLvv0="; + hash = "sha256-F13jbAQP3G3cKeAegM1w/t32xyC0BgL9/67aIlzA4SE="; }; nativeBuildInputs = [ @@ -46,7 +48,7 @@ buildPythonPackage rec { ]; propagatedBuildInputs = [ - appdirs + platformdirs dask entrypoints fsspec @@ -54,6 +56,7 @@ buildPythonPackage rec { jinja2 pandas pyyaml + networkx ]; nativeCheckInputs = [ @@ -124,12 +127,18 @@ buildPythonPackage rec { # Timing-based, flaky on darwin and possibly others "test_idle_timer" ] - ++ lib.optionals - (stdenv.hostPlatform.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") - [ - # Flaky with older low-res mtime on darwin < 10.13 (#143987) - "test_second_load_timestamp" - ]; + ++ lib.optionals (pythonAtLeast "3.12") [ + # Require deprecated distutils + "test_which" + "test_load" + ] + ++ + lib.optionals + (stdenv.hostPlatform.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") + [ + # Flaky with older low-res mtime on darwin < 10.13 (#143987) + "test_second_load_timestamp" + ]; pythonImportsCheck = [ "intake" ]; diff --git a/pkgs/development/python-modules/nexusformat/default.nix b/pkgs/development/python-modules/nexusformat/default.nix index 7a9ea2e698bec..ae685948c3a03 100644 --- a/pkgs/development/python-modules/nexusformat/default.nix +++ b/pkgs/development/python-modules/nexusformat/default.nix @@ -2,31 +2,28 @@ lib, buildPythonPackage, fetchPypi, - - # build-system - setuptools, - setuptools-scm, - - # tests - pytestCheckHook, - - # dependencies h5py, hdf5plugin, numpy, + pytestCheckHook, + pythonOlder, scipy, + setuptools-scm, + setuptools, }: buildPythonPackage rec { pname = "nexusformat"; - version = "1.0.6"; + version = "1.0.7"; + pyproject = true; + + disabled = pythonOlder "3.10"; + src = fetchPypi { inherit pname version; - hash = "sha256-UxU3PA/2r/uamdysbfC0L2JinHgfkXhssHIo2hf3zlA="; + hash = "sha256-SSS6LTOdqLTHNGpBRO7UELF9qJb/sG8EwrE/azxk7wM="; }; - pyproject = true; - build-system = [ setuptools setuptools-scm @@ -39,14 +36,14 @@ buildPythonPackage rec { scipy ]; - pythonImportsCheck = [ "nexusformat.nexus" ]; - nativeCheckInputs = [ pytestCheckHook ]; + pythonImportsCheck = [ "nexusformat.nexus" ]; + meta = with lib; { description = "Python API to open, create, and manipulate NeXus data written in the HDF5 format"; homepage = "https://github.com/nexpy/nexusformat"; - changelog = "https://github.com/nexpy/nexusformat/releases/tag/${version}"; + changelog = "https://github.com/nexpy/nexusformat/releases/tag/v${version}"; license = licenses.bsd3; maintainers = with maintainers; [ oberth-effect ]; }; diff --git a/pkgs/development/python-modules/orderly-set/default.nix b/pkgs/development/python-modules/orderly-set/default.nix new file mode 100644 index 0000000000000..93f164a5b603c --- /dev/null +++ b/pkgs/development/python-modules/orderly-set/default.nix @@ -0,0 +1,56 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + fetchpatch, + + # build-system + setuptools, + + # tests + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "orderly-set"; + version = "5.2.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "seperman"; + repo = "orderly-set"; + rev = "refs/tags/${version}"; + hash = "sha256-ZDo5fSHD0lCn9CRQtWK10QeZoOhuXG3LR3KA/to9gpE="; + }; + patches = [ + # https://github.com/seperman/orderly-set/pull/5 + (fetchpatch { + name = "do-not-import-mypy.patch"; + url = "https://github.com/seperman/orderly-set/commit/34362084868a081b8ebaaf1f13c93a7a798ef557.patch"; + hash = "sha256-eKbnA31ykm5fH0om6cfOaMpy+ZNNWRDkHieaUIHF8OM="; + }) + ]; + + build-system = [ + setuptools + ]; + + pythonImportsCheck = [ + "orderly_set" + ]; + nativeCheckInputs = [ + pytestCheckHook + ]; + disabledTests = [ + # Statically analyzes types, can be disabled so that mypy won't be needed. + "test_typing_mypy" + ]; + + meta = { + description = "Orderly Set previously known as Ordered Set"; + homepage = "https://github.com/seperman/orderly-set"; + changelog = "https://github.com/seperman/orderly-set/blob/${src.rev}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ doronbehar ]; + }; +} diff --git a/pkgs/development/python-modules/pint/default.nix b/pkgs/development/python-modules/pint/default.nix index 51ef03ffc7dd9..1339b39505a9b 100644 --- a/pkgs/development/python-modules/pint/default.nix +++ b/pkgs/development/python-modules/pint/default.nix @@ -25,7 +25,7 @@ buildPythonPackage rec { pname = "pint"; - version = "0.24.1"; + version = "0.24.3"; pyproject = true; disabled = pythonOlder "3.9"; @@ -34,7 +34,7 @@ buildPythonPackage rec { owner = "hgrecco"; repo = "pint"; rev = "refs/tags/${version}"; - hash = "sha256-PQAQvjMi7pFgNhUbw20vc306aTyEbCQNHGef/pxxpXo="; + hash = "sha256-PJEgwshTBIqmKMEro+IT+7v4dab3qD7I45OuTOJloR0="; }; build-system = [ diff --git a/pkgs/development/python-modules/pwlf/default.nix b/pkgs/development/python-modules/pwlf/default.nix index 95dbc3ac83b89..c5341cd1cd751 100644 --- a/pkgs/development/python-modules/pwlf/default.nix +++ b/pkgs/development/python-modules/pwlf/default.nix @@ -12,14 +12,14 @@ buildPythonPackage rec { pname = "pwlf"; - version = "2.2.1"; + version = "2.3.0"; pyproject = true; src = fetchFromGitHub { owner = "cjekel"; repo = "piecewise_linear_fit_py"; - rev = "v${version}"; - hash = "sha256-gjdahulpHjBmOlKOCPF9WmrWe4jn/+0oVI4o09EX7qE="; + rev = "refs/tags/v${version}"; + hash = "sha256-FAH38mSaABdNR8lpxxA/YVo5ec2WYOMEsAQqravbM9k="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/py-madvr2/default.nix b/pkgs/development/python-modules/py-madvr2/default.nix index 05799d43226ae..32eb2a7c66670 100644 --- a/pkgs/development/python-modules/py-madvr2/default.nix +++ b/pkgs/development/python-modules/py-madvr2/default.nix @@ -9,14 +9,14 @@ buildPythonPackage rec { pname = "py-madvr2"; - version = "1.6.32"; + version = "1.6.33"; pyproject = true; src = fetchFromGitHub { owner = "iloveicedgreentea"; repo = "py-madvr"; - rev = "refs/tags/${version}"; - hash = "sha256-yD8DNhYG9oauEGKnX8Qnh0oSwG/AZa8FIRtHVq4DyTE="; + rev = "refs/tags/v${version}"; + hash = "sha256-z+PVLz9eApGJ94I/Jp0MyqNpKQwIemk8j+OyqFmIbgI="; }; build-system = [ setuptools ]; @@ -28,11 +28,8 @@ buildPythonPackage rec { pytestCheckHook ]; - # https://github.com/iloveicedgreentea/py-madvr/issues/12 - doCheck = false; - meta = { - changelog = "https://github.com/iloveicedgreentea/py-madvr/releases/tag/${version}"; + changelog = "https://github.com/iloveicedgreentea/py-madvr/releases/tag/${lib.removePrefix "refs/tags/" src.rev}"; description = "Control MadVR Envy over IP"; homepage = "https://github.com/iloveicedgreentea/py-madvr"; license = lib.licenses.mit; diff --git a/pkgs/development/python-modules/pyct/default.nix b/pkgs/development/python-modules/pyct/default.nix index 5509173bd985f..96aad663367f7 100644 --- a/pkgs/development/python-modules/pyct/default.nix +++ b/pkgs/development/python-modules/pyct/default.nix @@ -2,41 +2,57 @@ lib, buildPythonPackage, fetchPypi, - param, - pytestCheckHook, pythonAtLeast, + + # build-system + setuptools, + + # dependencies + param, pyyaml, requests, + + # tests + pytestCheckHook, }: buildPythonPackage rec { pname = "pyct"; version = "0.5.0"; - format = "setuptools"; - - disabled = pythonAtLeast "3.12"; + pyproject = true; src = fetchPypi { inherit pname version; hash = "sha256-3Z9KxcvY43w1LAQDYGLTxfZ+/sdtQEdh7xawy/JqpqA="; }; - propagatedBuildInputs = [ + build-system = [ + setuptools + ]; + + dependencies = [ param pyyaml requests ]; - nativeCheckInputs = [ pytestCheckHook ]; + nativeCheckInputs = [ + pytestCheckHook + ]; + # Only the command line doesn't work on with Python 3.12, due to usage of + # deprecated distutils module. Not disabling it totally. + disabledTestPaths = lib.optionals (pythonAtLeast "3.12") [ + "pyct/tests/test_cmd.py" + ]; pythonImportsCheck = [ "pyct" ]; - meta = with lib; { + meta = { description = "ClI for Python common tasks for users"; mainProgram = "pyct"; homepage = "https://github.com/pyviz/pyct"; changelog = "https://github.com/pyviz-dev/pyct/releases/tag/v${version}"; - license = licenses.bsd3; + license = lib.licenses.bsd3; maintainers = [ ]; }; } diff --git a/pkgs/development/python-modules/pysc2/default.nix b/pkgs/development/python-modules/pysc2/default.nix index 667ba03903230..54a79bff39099 100644 --- a/pkgs/development/python-modules/pysc2/default.nix +++ b/pkgs/development/python-modules/pysc2/default.nix @@ -3,7 +3,6 @@ lib, fetchFromGitHub, absl-py, - enum34, future, mock, mpyq, @@ -40,7 +39,6 @@ buildPythonPackage { propagatedBuildInputs = [ absl-py - enum34 future mock mpyq diff --git a/pkgs/development/python-modules/python-linkplay/default.nix b/pkgs/development/python-modules/python-linkplay/default.nix index 7a0cc917a6bc7..3efb6a31b2015 100644 --- a/pkgs/development/python-modules/python-linkplay/default.nix +++ b/pkgs/development/python-modules/python-linkplay/default.nix @@ -15,20 +15,18 @@ buildPythonPackage rec { pname = "python-linkplay"; - version = "0.0.15"; + version = "0.0.16"; pyproject = true; src = fetchFromGitHub { owner = "Velleman"; repo = "python-linkplay"; rev = "refs/tags/v${version}"; - hash = "sha256-PDkDZchAXxrmjg7G/dbbUyZUS8dNrOppH96mLLdwK1s="; + hash = "sha256-YjsRjzkYac3IDuAq5s73INELNfWO6EhU5BMM7xQO7pk="; }; build-system = [ setuptools ]; - pythonRelaxDeps = [ "aiofiles" ]; - dependencies = [ aiofiles aiohttp diff --git a/pkgs/development/python-modules/remctl/default.nix b/pkgs/development/python-modules/remctl/default.nix new file mode 100644 index 0000000000000..3e672e9e56d28 --- /dev/null +++ b/pkgs/development/python-modules/remctl/default.nix @@ -0,0 +1,21 @@ +{ + lib, + buildPythonPackage, + pythonOlder, + remctl-c, # remctl from pkgs, not from pythonPackages + typing, +}: + +buildPythonPackage { + inherit (remctl-c) + meta + pname + src + version + ; + setSourceRoot = "sourceRoot=$(echo */python)"; + + buildInputs = [ remctl-c ]; + + propagatedBuildInputs = lib.optionals (pythonOlder "3.5") [ typing ]; +} diff --git a/pkgs/development/python-modules/stringzilla/default.nix b/pkgs/development/python-modules/stringzilla/default.nix new file mode 100644 index 0000000000000..7fc432e3ea193 --- /dev/null +++ b/pkgs/development/python-modules/stringzilla/default.nix @@ -0,0 +1,59 @@ +{ + buildPythonPackage, + cargo, + fetchFromGitHub, + lib, + numpy, + pytest-repeat, + pytestCheckHook, + rustPlatform, + rustc, + setuptools, +}: + +buildPythonPackage rec { + pname = "stringzilla"; + version = "3.10.5"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ashvardanian"; + repo = "stringzilla"; + rev = "refs/tags/v${version}"; + hash = "sha256-E7w6s813OGCld/GRTHMbjVAReTGb37HlB687gP9N9FA="; + }; + + cargoDeps = rustPlatform.fetchCargoTarball { + inherit src; + name = "${pname}-${version}"; + hash = "sha256-36LN9AoAWA//pldmQZtKMrck4EoGUW9G2vzdsRw08SA="; + }; + + build-system = [ + setuptools + ]; + + nativeBuildInputs = [ + cargo + rustPlatform.cargoSetupHook + rustc + ]; + + pythonImportsCheck = [ "stringzilla" ]; + + nativeCheckInputs = [ + numpy + pytest-repeat + pytestCheckHook + ]; + + pytestFlagsArray = [ "scripts/test.py" ]; + + meta = { + changelog = "https://github.com/ashvardanian/StringZilla/releases/tag/${lib.removePrefix "refs/tags/" src.rev}"; + description = "SIMD-accelerated string search, sort, hashes, fingerprints, & edit distances"; + homepage = "https://github.com/ashvardanian/stringzilla"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ dotlambda ]; + }; +} diff --git a/pkgs/development/python-modules/toptica-lasersdk/default.nix b/pkgs/development/python-modules/toptica-lasersdk/default.nix new file mode 100644 index 0000000000000..6c7ccb9c252ea --- /dev/null +++ b/pkgs/development/python-modules/toptica-lasersdk/default.nix @@ -0,0 +1,44 @@ +{ + lib, + buildPythonPackage, + fetchPypi, + + # build-system + setuptools, + + # dependencies + ifaddr, + pyserial, +}: + +buildPythonPackage rec { + pname = "toptica-lasersdk"; + version = "3.2.0"; + pyproject = true; + + src = fetchPypi { + pname = "toptica_lasersdk"; + inherit version; + hash = "sha256-UNazng4Za3CZeG7eDq0b+l7gmESEXIU8WMLWGGysmBg="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + ifaddr + pyserial + ]; + + pythonImportsCheck = [ + "toptica.lasersdk.dlcpro.v2_2_0" + ]; + + meta = { + description = "TOPTICA Python Laser SDK"; + homepage = "https://toptica.github.io/python-lasersdk/"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ doronbehar ]; + }; +} diff --git a/pkgs/development/python-modules/ttp/default.nix b/pkgs/development/python-modules/ttp/default.nix index 700f97a68b5f2..653ba4ad7171d 100644 --- a/pkgs/development/python-modules/ttp/default.nix +++ b/pkgs/development/python-modules/ttp/default.nix @@ -64,6 +64,9 @@ buildPythonPackage rec { disabledTests = [ # data structure mismatches + "test_global_output_deepdiff_with_var_before" + "test_group_specific_output_deepdiff_with_var_before" + "test_group_specific_output_deepdiff_with_var_before_with_add_field" "test_yangson_validate" "test_yangson_validate_yang_lib_in_output_tag_data" "test_yangson_validate_multiple_inputs_mode_per_input_with_yang_lib_in_file" diff --git a/pkgs/development/python-modules/twilio/default.nix b/pkgs/development/python-modules/twilio/default.nix index 894fb118e01cd..7faf26909ea9d 100644 --- a/pkgs/development/python-modules/twilio/default.nix +++ b/pkgs/development/python-modules/twilio/default.nix @@ -20,7 +20,7 @@ buildPythonPackage rec { pname = "twilio"; - version = "9.3.4"; + version = "9.3.6"; pyproject = true; disabled = pythonOlder "3.7"; @@ -29,7 +29,7 @@ buildPythonPackage rec { owner = "twilio"; repo = "twilio-python"; rev = "refs/tags/${version}"; - hash = "sha256-74tJt3BfSKfsl0A1gz7XVzlvumQ8H++Nfp+SEknMYcY="; + hash = "sha256-H/MBRiGU2EnrhspX2ilVvnxdr7A50q+snCM2inobrcs="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/types-aiobotocore-packages/default.nix b/pkgs/development/python-modules/types-aiobotocore-packages/default.nix index 230615d276d01..e7272708faeaa 100644 --- a/pkgs/development/python-modules/types-aiobotocore-packages/default.nix +++ b/pkgs/development/python-modules/types-aiobotocore-packages/default.nix @@ -60,1392 +60,1392 @@ let in rec { types-aiobotocore-accessanalyzer = - buildTypesAiobotocorePackage "accessanalyzer" "2.15.1" - "sha256-DALSwzPriQHPReCA4DxiqDE4egt1d0kVadDLqXSEV6k="; + buildTypesAiobotocorePackage "accessanalyzer" "2.15.2" + "sha256-phl4/2H/Eca6fAEMRwF243B2tuzXYOofiWCFBmX8zAk="; types-aiobotocore-account = - buildTypesAiobotocorePackage "account" "2.15.1" - "sha256-7VNgcslaFFeprI+G9Owfj24o8CFmGxqct4QWSGgxwI8="; + buildTypesAiobotocorePackage "account" "2.15.2" + "sha256-k66NAKboMyLeFnpnsDTY6i2BP7GRRWgALmva/JRtOzo="; types-aiobotocore-acm = - buildTypesAiobotocorePackage "acm" "2.15.1" - "sha256-ItdsLbXVs92zb9JDwuHHvYVKArUAAeDUdt6tPxNikV0="; + buildTypesAiobotocorePackage "acm" "2.15.2" + "sha256-eLo4G5qHs9BxcuYxJUszMHxSFegzAiMmsFZO1DdVnQk="; types-aiobotocore-acm-pca = - buildTypesAiobotocorePackage "acm-pca" "2.15.1" - "sha256-JSvY8qqA91SUMXs7ajfVQ6wZFNHc2XisO2haiygJg8o="; + buildTypesAiobotocorePackage "acm-pca" "2.15.2" + "sha256-Q2LW9rHXP78eKyfNN9b7c7YDeM/f/GnzbeGZJ4TDWGA="; types-aiobotocore-alexaforbusiness = buildTypesAiobotocorePackage "alexaforbusiness" "2.13.0" "sha256-+w/InoQR2aZ5prieGhgEEp7auBiSSghG5zIIHY5Kyao="; types-aiobotocore-amp = - buildTypesAiobotocorePackage "amp" "2.15.1" - "sha256-RJKzIa6b/ov0xpayGBgDVW2DUjIo0xNfDDh2hAvK918="; + buildTypesAiobotocorePackage "amp" "2.15.2" + "sha256-Qit4RmUHdSIcbOEQOsSZW6ARdx/S/b9qpfJxgMCP6uM="; types-aiobotocore-amplify = - buildTypesAiobotocorePackage "amplify" "2.15.1" - "sha256-TNhrmgAjuJLBLXU2dlp+Ri8pJ+swgjXu1lJFGUnLEfQ="; + buildTypesAiobotocorePackage "amplify" "2.15.2" + "sha256-Omrz8qlW74Yv69ElHjCpab0X4PAQ9vWc/L9JIyM6uwk="; types-aiobotocore-amplifybackend = - buildTypesAiobotocorePackage "amplifybackend" "2.15.1" - "sha256-T2mqIUobrEepz6vS/VLWq8OpUZTYRMme0SgWv+UtxmQ="; + buildTypesAiobotocorePackage "amplifybackend" "2.15.2" + "sha256-amNBmVDOA6sIEWU0K/wpQWh9q1QzNLpuqf7vEzRvouE="; types-aiobotocore-amplifyuibuilder = - buildTypesAiobotocorePackage "amplifyuibuilder" "2.15.1" - "sha256-oFgte9lbXb9IM3Ezn0Jmd5djrLwgJLqeDePdBb5OZrI="; + buildTypesAiobotocorePackage "amplifyuibuilder" "2.15.2" + "sha256-uCh6W8IWBmDIYCxqdbt5PBmd/iId5u5GGUG9tjL7W2w="; types-aiobotocore-apigateway = - buildTypesAiobotocorePackage "apigateway" "2.15.1" - "sha256-3gDSD6Z28yicogEeDv2i/rcmh7X9nRWrwxRL0YFZIpc="; + buildTypesAiobotocorePackage "apigateway" "2.15.2" + "sha256-+8fuio9+dP2IqQJn+t2dshAdNyayQypdQNjefhDhRjo="; types-aiobotocore-apigatewaymanagementapi = - buildTypesAiobotocorePackage "apigatewaymanagementapi" "2.15.1" - "sha256-3NC66/pp4F8GsH40z0mBoaLqIKyPHGpgEAGgOnOOAGI="; + buildTypesAiobotocorePackage "apigatewaymanagementapi" "2.15.2" + "sha256-Z/ib8krZwZ03DoQS/zyB6jKet0+gmTBkOHUew/i0A+4="; types-aiobotocore-apigatewayv2 = - buildTypesAiobotocorePackage "apigatewayv2" "2.15.1" - "sha256-qsiFXNECUVFDrreYOi2MLa655WAECXuPqi11z8liVN4="; + buildTypesAiobotocorePackage "apigatewayv2" "2.15.2" + "sha256-6Y8A/y30axUzYREdgLWH92gIG4pWvNkWKOxoTfYRQVw="; types-aiobotocore-appconfig = - buildTypesAiobotocorePackage "appconfig" "2.15.1" - "sha256-QPhmF5urmZBb+e7KAIJihDujuDAopgQqrBspAxD6YJ4="; + buildTypesAiobotocorePackage "appconfig" "2.15.2" + "sha256-I8fTll4jIngD0UHqRx4WhM+WPXuvepHvXByYlgHSrDE="; types-aiobotocore-appconfigdata = - buildTypesAiobotocorePackage "appconfigdata" "2.15.1" - "sha256-1rQCSuTShglGMwqcxiVULSbmgzpUZmubTgqlum5EeqE="; + buildTypesAiobotocorePackage "appconfigdata" "2.15.2" + "sha256-KfmKk/d1ZXcGeYvzqlJh43uHiQvsXzbyytybvEUcVbI="; types-aiobotocore-appfabric = - buildTypesAiobotocorePackage "appfabric" "2.15.1" - "sha256-l/dJepTAEpsV3eJWzMbw43SrqgWuL1I3IVlVQQzZPSM="; + buildTypesAiobotocorePackage "appfabric" "2.15.2" + "sha256-+BNkaM4f+DRqiSmY0uHksGTTbU7pBuJt+y8S2GRUkdg="; types-aiobotocore-appflow = - buildTypesAiobotocorePackage "appflow" "2.15.1" - "sha256-v30RZvCTHOMxsypX+Id5W7VEPC4QFYvRklPu9zaJ9x4="; + buildTypesAiobotocorePackage "appflow" "2.15.2" + "sha256-aVprs4EiYNo4+VdzQAPE8/UYMebQDYDcTjEBGAN+PdQ="; types-aiobotocore-appintegrations = - buildTypesAiobotocorePackage "appintegrations" "2.15.1" - "sha256-ceiFklxI0RK06gj2ZQcvpGyW903SOxXA654MzRy3A7U="; + buildTypesAiobotocorePackage "appintegrations" "2.15.2" + "sha256-BbhuY9g4oUnBBhoo75bVpNZRWeGDYCl5kwKlW7X3Ek0="; types-aiobotocore-application-autoscaling = - buildTypesAiobotocorePackage "application-autoscaling" "2.15.1" - "sha256-P9XULdNPREbu2xksZXIIxZUEggYlU3j0Jo7RzFKMawk="; + buildTypesAiobotocorePackage "application-autoscaling" "2.15.2" + "sha256-ggg7zdytM3/Gz5mTQCFCHG8NVfj+q79Wt0B/LEgSfvA="; types-aiobotocore-application-insights = - buildTypesAiobotocorePackage "application-insights" "2.15.1" - "sha256-nvNJsUkMwJd41vlj7pKEn37f1Ab4l4WAJbYGqfxCmZw="; + buildTypesAiobotocorePackage "application-insights" "2.15.2" + "sha256-uGVDVNNBV7vzhsBStrEGq4EKvhp/pbcS00becWLM35E="; types-aiobotocore-applicationcostprofiler = - buildTypesAiobotocorePackage "applicationcostprofiler" "2.15.1" - "sha256-/rMS/1K9dGzW89Rzd6sg9o/L56kNAO0bkDUTNKsKxxI="; + buildTypesAiobotocorePackage "applicationcostprofiler" "2.15.2" + "sha256-FvfKD+vSV4jYk62NFDqHwXNaScqQL7uxv9QhnJ5zNEI="; types-aiobotocore-appmesh = - buildTypesAiobotocorePackage "appmesh" "2.15.1" - "sha256-yPEPmU3CVzddnsFd2CQp+eAji1+/bH/Vvhv6D2JbjvM="; + buildTypesAiobotocorePackage "appmesh" "2.15.2" + "sha256-t96fm5t8s6XeeyUcAF93aVdU+Zu9flGKTQBtR0wsQ1Y="; types-aiobotocore-apprunner = - buildTypesAiobotocorePackage "apprunner" "2.15.1" - "sha256-gzzXHrMC0MF9RykwGmZiUtgufuRPrmGekVicXzdlFw8="; + buildTypesAiobotocorePackage "apprunner" "2.15.2" + "sha256-irCvrU+nnmWTvP+r4kVnSTz8QEFJvPCJ9MKXECikMgs="; types-aiobotocore-appstream = - buildTypesAiobotocorePackage "appstream" "2.15.1" - "sha256-qbiOK2G95NdBTt1AmrQsDJbz885ugrdRBXMb9ZQcssE="; + buildTypesAiobotocorePackage "appstream" "2.15.2" + "sha256-iGmu1EKY9YXFIzLqoya+oTc0CjGw4zoKdnmZG5OTYX0="; types-aiobotocore-appsync = - buildTypesAiobotocorePackage "appsync" "2.15.1" - "sha256-WYgJ2GLOxy/Va+ZY7DwwX7pBFF4zv1iQ8rptFoOlFsA="; + buildTypesAiobotocorePackage "appsync" "2.15.2" + "sha256-82XUaNGcXO6P9w1ai0yg788yn3eTZ5G5+U1CiIEMvhQ="; types-aiobotocore-arc-zonal-shift = - buildTypesAiobotocorePackage "arc-zonal-shift" "2.15.1" - "sha256-9lToTikNN5kH9TCGSeQDnm6g2iM+1OGbtSpN4f6M7FM="; + buildTypesAiobotocorePackage "arc-zonal-shift" "2.15.2" + "sha256-h96kwgdTwldKgyBxy/K2nO0eRp+dsx/Zms9ZJm2jgoA="; types-aiobotocore-athena = - buildTypesAiobotocorePackage "athena" "2.15.1" - "sha256-8NEZDefM/mP11YPnOCn11QfbWAMaCB5Yh2R9zQRtPpw="; + buildTypesAiobotocorePackage "athena" "2.15.2" + "sha256-L6dfltBPK+6TBs5bfrQtYoaXEzTp4h7Z1YGpThrU2mU="; types-aiobotocore-auditmanager = - buildTypesAiobotocorePackage "auditmanager" "2.15.1" - "sha256-JU7s8pqfJQptll0Kh3KPDeFULM2cga0nYZSvhLk2ul4="; + buildTypesAiobotocorePackage "auditmanager" "2.15.2" + "sha256-zaO6TuUySzlKPc5SizuSFtK25LjCQCyDF/oUcfYSb9Q="; types-aiobotocore-autoscaling = - buildTypesAiobotocorePackage "autoscaling" "2.15.1" - "sha256-PddQSNJ9KNGL8LQDD82+IeD4cVCR7huBkSWTqbYQfUk="; + buildTypesAiobotocorePackage "autoscaling" "2.15.2" + "sha256-L/EIaJrRPfNzwOEeJaR+E4c1niLpjBcnFYsWxcyfnkM="; types-aiobotocore-autoscaling-plans = - buildTypesAiobotocorePackage "autoscaling-plans" "2.15.1" - "sha256-hUEFUNC1WdPpdu+9AQFWLvFhvBrmy3Xg7Xl4LlB4z6k="; + buildTypesAiobotocorePackage "autoscaling-plans" "2.15.2" + "sha256-X5Qi6TWVeKi5URcHkEyi1AzyFuZADgNxUFJmtbeRqrQ="; types-aiobotocore-backup = - buildTypesAiobotocorePackage "backup" "2.15.1" - "sha256-E8LmUYpLqVF0WooWUXtqv4nhst1o050tx3/sRDBhd+w="; + buildTypesAiobotocorePackage "backup" "2.15.2" + "sha256-56zIY48+BtCInvbY9qtOVgIijam4suphFS8EHQak+iE="; types-aiobotocore-backup-gateway = - buildTypesAiobotocorePackage "backup-gateway" "2.15.1" - "sha256-Yx/e2UIEzn47L4mQ61S0PkHBuDbz7uqc5yIw/6XrBkI="; + buildTypesAiobotocorePackage "backup-gateway" "2.15.2" + "sha256-1UIYMYwvmTlGqRoKSoLb7A3W4Ll/WfL7wm3G+kI1GJs="; types-aiobotocore-backupstorage = buildTypesAiobotocorePackage "backupstorage" "2.13.0" "sha256-YUKtBdBrdwL2yqDqOovvzDPbcv/sD8JLRnKz3Oh7iSU="; types-aiobotocore-batch = - buildTypesAiobotocorePackage "batch" "2.15.1" - "sha256-vZJddKOLsljDKP4WrUDZrc4hkk01FtN3wL8MXKpfuII="; + buildTypesAiobotocorePackage "batch" "2.15.2" + "sha256-iu0r4+edD0r5ZJEngGp9W+DiFYiyBXiPdQJk8bRzpU8="; types-aiobotocore-billingconductor = - buildTypesAiobotocorePackage "billingconductor" "2.15.1" - "sha256-sbgwQEs21yd+xl2AuEiYEzc0Lgx7Uo/Ctibd2SEHY0c="; + buildTypesAiobotocorePackage "billingconductor" "2.15.2" + "sha256-KGnqy6p/63nN613xm8gBGtFHrGEo21kmD1q/GngIStM="; types-aiobotocore-braket = - buildTypesAiobotocorePackage "braket" "2.15.1" - "sha256-CThsP2a03VbAIFr4x2x0L2fLgIxvqFV1MuMLp1eoo6A="; + buildTypesAiobotocorePackage "braket" "2.15.2" + "sha256-NAcGzPa4k+aAuSReMXK33wKMyaiPP4OCdyCfKmG//Ao="; types-aiobotocore-budgets = - buildTypesAiobotocorePackage "budgets" "2.15.1" - "sha256-b1M6ZdlrG/AM3h5iM/mMAW7SrwrjApF/K0kgbFpAM14="; + buildTypesAiobotocorePackage "budgets" "2.15.2" + "sha256-NA0KUMPOrSgXU3ZQ7BcM+gYzfCPbYZecEmckOaWNJKQ="; types-aiobotocore-ce = - buildTypesAiobotocorePackage "ce" "2.15.1" - "sha256-MV6dma7+hf1ITv3HJ4cJZyfpimMT5MBuspTCEjMix7I="; + buildTypesAiobotocorePackage "ce" "2.15.2" + "sha256-F8Ve+ImFP00125yzh/wQJGFlXMi7ruP+SLg8dgwFleg="; types-aiobotocore-chime = - buildTypesAiobotocorePackage "chime" "2.15.1" - "sha256-24ukZo0shYVOz0HlrIj0g/xsfKz48fZHlUqcuTFvSoE="; + buildTypesAiobotocorePackage "chime" "2.15.2" + "sha256-dtMLfqQNQNJibTPaZI/quovDdWtAKdB3SS2e7PIs7Gk="; types-aiobotocore-chime-sdk-identity = - buildTypesAiobotocorePackage "chime-sdk-identity" "2.15.1" - "sha256-/R22nTYf7XQBH9u8R10jHqHA4+s2iliX5+pFUyWdaG0="; + buildTypesAiobotocorePackage "chime-sdk-identity" "2.15.2" + "sha256-5UFetlbvMPN1VN862HV5sFvOVcrY2z71ZS31OEXb5uY="; types-aiobotocore-chime-sdk-media-pipelines = - buildTypesAiobotocorePackage "chime-sdk-media-pipelines" "2.15.1" - "sha256-UGogN6rRabJuNokJPeQUol9DOMBbc/pkPL+lRg5GYk0="; + buildTypesAiobotocorePackage "chime-sdk-media-pipelines" "2.15.2" + "sha256-KMmwUEJfNZ0iNMPPm2+s0aKDB5EmWxT9urrLDiyZEhM="; types-aiobotocore-chime-sdk-meetings = - buildTypesAiobotocorePackage "chime-sdk-meetings" "2.15.1" - "sha256-EDQ5H7R5U9AQnLy2rkRzSSAkFVzfZiWCqlLqP24wv2g="; + buildTypesAiobotocorePackage "chime-sdk-meetings" "2.15.2" + "sha256-7jXpLCcTd5qG6UI8zyZN5ml9D3DsSHWc0KqXhhsyZNI="; types-aiobotocore-chime-sdk-messaging = - buildTypesAiobotocorePackage "chime-sdk-messaging" "2.15.1" - "sha256-7iJ+npfPI64WtlKYPLQUkJsJvhjSKCDbYBWWrv5dHwo="; + buildTypesAiobotocorePackage "chime-sdk-messaging" "2.15.2" + "sha256-vkA6I/++bwJ77FBGMrrAuvAp6AEMs/t3nJBVr2/pzD8="; types-aiobotocore-chime-sdk-voice = - buildTypesAiobotocorePackage "chime-sdk-voice" "2.15.1" - "sha256-BCj6/x6lnNdUx/FjP8mLzv7zLukjwDQw2/tWrFSuU0A="; + buildTypesAiobotocorePackage "chime-sdk-voice" "2.15.2" + "sha256-fxjfPjiKcmvFJ15ukaP0HNU/PUM6mZROighcq6nuTO4="; types-aiobotocore-cleanrooms = - buildTypesAiobotocorePackage "cleanrooms" "2.15.1" - "sha256-GbRu1vn7S1bILtKKf75+bR4y7OYQ6WnlUVt0HQqr/8s="; + buildTypesAiobotocorePackage "cleanrooms" "2.15.2" + "sha256-/TD2BimSLmEFw4LfZL6Tve1pBjX4uWlcl/la1S3Gg+c="; types-aiobotocore-cloud9 = - buildTypesAiobotocorePackage "cloud9" "2.15.1" - "sha256-7r/W5Hbv4J58aqpedt3ehe3E99U74sFiMHo5YnIPvh8="; + buildTypesAiobotocorePackage "cloud9" "2.15.2" + "sha256-2ClX7W0zE2+UHZiqjaYdfixO0DxXZ9SuzSwkauvgV7A="; types-aiobotocore-cloudcontrol = - buildTypesAiobotocorePackage "cloudcontrol" "2.15.1" - "sha256-TwBEzvuYmKyL5Bx2VCZwK0przb4MWhDVqOfl1RF3uog="; + buildTypesAiobotocorePackage "cloudcontrol" "2.15.2" + "sha256-jPndHm2SNwvMB1qkSk5sjdqjbnHZK4zE8XMOEJoMjcw="; types-aiobotocore-clouddirectory = - buildTypesAiobotocorePackage "clouddirectory" "2.15.1" - "sha256-ApxmZb2xwj0Leynjqi5YC4stEt0qcWQoSq3HffbvL3k="; + buildTypesAiobotocorePackage "clouddirectory" "2.15.2" + "sha256-qq1iH1BAG4P/4hVyniMOiUdq1JUzYS1n/Oo/fmbiGXg="; types-aiobotocore-cloudformation = - buildTypesAiobotocorePackage "cloudformation" "2.15.1" - "sha256-ngI/9VlHFOpAjcXi04JX+MVEdjs1cxC2UT+9MQTblGo="; + buildTypesAiobotocorePackage "cloudformation" "2.15.2" + "sha256-nGq1j9tMJw881JOtWtuDSJk36Nl3gkJD0Zi3Pouo0Bc="; types-aiobotocore-cloudfront = - buildTypesAiobotocorePackage "cloudfront" "2.15.1" - "sha256-+y931CL0UdxZd5dnkSkNBAOmyuXqSb9XdIwQUKoXDTQ="; + buildTypesAiobotocorePackage "cloudfront" "2.15.2" + "sha256-gM3Q02aUPpwbNJbm17BayCPeSA7W1LRqNRyU1T7JYRo="; types-aiobotocore-cloudhsm = - buildTypesAiobotocorePackage "cloudhsm" "2.15.1" - "sha256-Mv6fm2JLK4QVL1dTlVCIM1TaehUSlXTBATHvXHO26uM="; + buildTypesAiobotocorePackage "cloudhsm" "2.15.2" + "sha256-MPSf4e7fvmV7HF0FUNOfaaun7EVKfR/WSz3tu0bdREI="; types-aiobotocore-cloudhsmv2 = - buildTypesAiobotocorePackage "cloudhsmv2" "2.15.1" - "sha256-9koftVpoxrFkg/WWYoLZPEf1nnWxqwEeAzeMIJB+n8A="; + buildTypesAiobotocorePackage "cloudhsmv2" "2.15.2" + "sha256-fM4YaHOSjPBL6b6mtulrmliAfi6RaWX4RT01NbE82bY="; types-aiobotocore-cloudsearch = - buildTypesAiobotocorePackage "cloudsearch" "2.15.1" - "sha256-1s+EM9O5Hfsa0qKK+HFrif2dH+C7+V51MkqvuKeYwyw="; + buildTypesAiobotocorePackage "cloudsearch" "2.15.2" + "sha256-UnjA0HGzLRSag2BK5g3a2f3Ocv5D5qQaSF/BWVv6t5U="; types-aiobotocore-cloudsearchdomain = - buildTypesAiobotocorePackage "cloudsearchdomain" "2.15.1" - "sha256-lDC8Za+QGc622FVrsNKPCuitYzU521BC20g7ZGUZMAI="; + buildTypesAiobotocorePackage "cloudsearchdomain" "2.15.2" + "sha256-Kzj6sgsKpqCbuR/Bqvlbj+2k3PSHYPNVs5Ijywir+B8="; types-aiobotocore-cloudtrail = - buildTypesAiobotocorePackage "cloudtrail" "2.15.1" - "sha256-911ynsQTCCv9kd4TgeWR5Hv8ulz/kCnYxnw9PWk41IY="; + buildTypesAiobotocorePackage "cloudtrail" "2.15.2" + "sha256-D3pSFLhphO5LJuAMpR+YMc9LEr6PreuF0jiCblgx+eg="; types-aiobotocore-cloudtrail-data = - buildTypesAiobotocorePackage "cloudtrail-data" "2.15.1" - "sha256-dh/wbIJ6VTU8++QGXa/IDUCcGpdzBB4jfaizyn9jfyo="; + buildTypesAiobotocorePackage "cloudtrail-data" "2.15.2" + "sha256-Ysfo0oRA28j4vYL2p/XSSlPDka1hWOwIFWaozAxjs4Q="; types-aiobotocore-cloudwatch = - buildTypesAiobotocorePackage "cloudwatch" "2.15.1" - "sha256-nnyLWvv9esKWKlyZs9j+hUHTCBs55qC8PX5st0OHBxg="; + buildTypesAiobotocorePackage "cloudwatch" "2.15.2" + "sha256-OyeSm/UKHTET9Lcp6pgIDknKJqmDkVwqyC3x2yO1d+E="; types-aiobotocore-codeartifact = - buildTypesAiobotocorePackage "codeartifact" "2.15.1" - "sha256-f8xrPRkEOrw1fFI/q0U//LjzDCymhPOBpqrGPas5te4="; + buildTypesAiobotocorePackage "codeartifact" "2.15.2" + "sha256-PAQ5Vck8tG2x7BK1HBSCwchxubdoTJXduXb4fqSKewQ="; types-aiobotocore-codebuild = - buildTypesAiobotocorePackage "codebuild" "2.15.1" - "sha256-9lTVbw1mtKgIiDsI7pc2Lmd7W/1OjMBZtvWTL1mNqxM="; + buildTypesAiobotocorePackage "codebuild" "2.15.2" + "sha256-gi8JQlea6kD/k7C+Vd0KwNU9bfiHFfCdkc/VMqdLsNI="; types-aiobotocore-codecatalyst = - buildTypesAiobotocorePackage "codecatalyst" "2.15.1" - "sha256-hEASqSTOFl8Pc+qBZ0Xqf36JivPVgHbZ2yZszo5Z9Uo="; + buildTypesAiobotocorePackage "codecatalyst" "2.15.2" + "sha256-A4tsBdng6gf4MdZcB86nOeW7jyBgee7L81Pz4m/rp9s="; types-aiobotocore-codecommit = - buildTypesAiobotocorePackage "codecommit" "2.15.1" - "sha256-1L7UGZNkl89ULZV5LiajDZxQmLpelTsjNSvUzUzwk+I="; + buildTypesAiobotocorePackage "codecommit" "2.15.2" + "sha256-Nmr4IFs+HgkkSHct2m//k/6QPX+uMrBZxpGCQu/ktms="; types-aiobotocore-codedeploy = - buildTypesAiobotocorePackage "codedeploy" "2.15.1" - "sha256-HaO/GSX14cKdKlwYmowzgWPfTDrUXyiyNlhz23lPyT8="; + buildTypesAiobotocorePackage "codedeploy" "2.15.2" + "sha256-Oo0U/ymzZx4pm47GnlRsMwXO5WQSKPHKCVLVZ73o+FM="; types-aiobotocore-codeguru-reviewer = - buildTypesAiobotocorePackage "codeguru-reviewer" "2.15.1" - "sha256-0vNZTr6RNUv2TjQJ9GZIwe6jTFJH1KgJW82fVERSFIw="; + buildTypesAiobotocorePackage "codeguru-reviewer" "2.15.2" + "sha256-I8W1gWK+HCR1cX+4jRN0bk8IpgACUByK9UCfqKf2H0I="; types-aiobotocore-codeguru-security = - buildTypesAiobotocorePackage "codeguru-security" "2.15.1" - "sha256-Mk5xbw1OhHcBDhohKu7emIz7c4BkxFA+LRtHrLL/LoQ="; + buildTypesAiobotocorePackage "codeguru-security" "2.15.2" + "sha256-RZkI3thRIWLZgcaupwlyzF1zd0LuLvNv/yDZphoTHT0="; types-aiobotocore-codeguruprofiler = - buildTypesAiobotocorePackage "codeguruprofiler" "2.15.1" - "sha256-i/a6O3B69uPMsJsjW2hxMdLm/q2nvRwTlcpvqg0zcnQ="; + buildTypesAiobotocorePackage "codeguruprofiler" "2.15.2" + "sha256-6cB4PY0c8fB2IbLIa3pw5/0gKs9uc+TvqR20i3eiEbw="; types-aiobotocore-codepipeline = - buildTypesAiobotocorePackage "codepipeline" "2.15.1" - "sha256-2i5cZ7cCy0zt71bTmAZHPCKR8GVutVR2TXeGJIlTQ54="; + buildTypesAiobotocorePackage "codepipeline" "2.15.2" + "sha256-NhB4WUrYN7noWIVGiZX5NVQ7jmr/KbZ/gaIGMwQyCtc="; types-aiobotocore-codestar = buildTypesAiobotocorePackage "codestar" "2.13.3" "sha256-Z1ewx2RjmxbOQZ7wXaN54PVOuRs6LP3rMpsrVTacwjo="; types-aiobotocore-codestar-connections = - buildTypesAiobotocorePackage "codestar-connections" "2.15.1" - "sha256-Qcz4JHpT34WKY0+/CRDavwiI99GCwxA/SBftb6Wi9J0="; + buildTypesAiobotocorePackage "codestar-connections" "2.15.2" + "sha256-6bP69xyRpdGzVeyH1tn7u1hLlTNNhBrNtEEXD28bXzU="; types-aiobotocore-codestar-notifications = - buildTypesAiobotocorePackage "codestar-notifications" "2.15.1" - "sha256-qdVJ+6ELs5YKqIV/26Ar2FW4KC3DGofHJ/+xo5xzT3M="; + buildTypesAiobotocorePackage "codestar-notifications" "2.15.2" + "sha256-4q4DTYuoKawQXcPfzupceFTaJfYs7eQZR4T2UBIZTJo="; types-aiobotocore-cognito-identity = - buildTypesAiobotocorePackage "cognito-identity" "2.15.1" - "sha256-wlpdAHtWZd1l8jYduPT0Dc0LIWxOiiA05uXTpL8fQWo="; + buildTypesAiobotocorePackage "cognito-identity" "2.15.2" + "sha256-7HHA+d6rI6phyN9vj8v8ySfUwRdFtHey3ORUtREDegc="; types-aiobotocore-cognito-idp = - buildTypesAiobotocorePackage "cognito-idp" "2.15.1" - "sha256-zpuLoNTgcbYQJ0DF52qoPVm7nspMiITQczoREaCtlCI="; + buildTypesAiobotocorePackage "cognito-idp" "2.15.2" + "sha256-rm/slcrINl8WpprLdkZq3TP7LVHqXLFOwa6hHoZqIuQ="; types-aiobotocore-cognito-sync = - buildTypesAiobotocorePackage "cognito-sync" "2.15.1" - "sha256-XYPt1jgk+BEjDpNH2XHNf0hoOwzewoxqxy+2qjv2dMw="; + buildTypesAiobotocorePackage "cognito-sync" "2.15.2" + "sha256-hwUY83vHarKtrDhBWUQjvEWkjzT98QgIsoWzmSCOZVw="; types-aiobotocore-comprehend = - buildTypesAiobotocorePackage "comprehend" "2.15.1" - "sha256-XbQ3BYHXGNb4aKFo+WegaZ8613FiVRdthZ0zU7borjQ="; + buildTypesAiobotocorePackage "comprehend" "2.15.2" + "sha256-MplEELAL+rKGyMxJKEPTFEESi4EP1M48pSAXjFP50rA="; types-aiobotocore-comprehendmedical = - buildTypesAiobotocorePackage "comprehendmedical" "2.15.1" - "sha256-3cifXhAhIxxZVRdE0Pt3SmaWwoj75iIpp6ThnLeL+BM="; + buildTypesAiobotocorePackage "comprehendmedical" "2.15.2" + "sha256-B+vdbBPeANdozCD3G4l2qyQi/IiGePBtV1uC/L8YDL8="; types-aiobotocore-compute-optimizer = - buildTypesAiobotocorePackage "compute-optimizer" "2.15.1" - "sha256-8awRuy2iD9mYSuLaMrbpu0bZ1HlY9kIrF4/ZY7kECbQ="; + buildTypesAiobotocorePackage "compute-optimizer" "2.15.2" + "sha256-l3wWbiLHsIg4sg8Ktv4P6uOk1qy9v/uI8iC+jyEv0GY="; types-aiobotocore-config = - buildTypesAiobotocorePackage "config" "2.15.1" - "sha256-n8RP98EO8AB0a3zqKlc7TZBttT7bHRV2EFYBy999q4g="; + buildTypesAiobotocorePackage "config" "2.15.2" + "sha256-GjC2wY6iIVssYrZi4Ql03bOgI4azJ8toRMhVmqdaF6g="; types-aiobotocore-connect = - buildTypesAiobotocorePackage "connect" "2.15.1" - "sha256-9AfqyTav6mIPiBrMGP6Rh+ytAS92LdLg/4VdTaSKB6I="; + buildTypesAiobotocorePackage "connect" "2.15.2" + "sha256-18PRUxRrcwq/Nz9eWfrWO1uv7RqfgWrdrzTGpf+Y5KA="; types-aiobotocore-connect-contact-lens = - buildTypesAiobotocorePackage "connect-contact-lens" "2.15.1" - "sha256-qTq+tsvlPDq9LDTNgZuwa1zva17PDm1zBMnDX5nLR1g="; + buildTypesAiobotocorePackage "connect-contact-lens" "2.15.2" + "sha256-FK3HnkkWA8B0PlY/DZUGXPVxpxD25JB3ZNDWMuMJvSA="; types-aiobotocore-connectcampaigns = - buildTypesAiobotocorePackage "connectcampaigns" "2.15.1" - "sha256-kIF+sS4RpsmhiuttzwFViHaOLZ5B69O//hwEYGrMfr8="; + buildTypesAiobotocorePackage "connectcampaigns" "2.15.2" + "sha256-gumozHCg1SpV7NUYJ+SJhsSVlSvb0VQsPSCYLxhV8pA="; types-aiobotocore-connectcases = - buildTypesAiobotocorePackage "connectcases" "2.15.1" - "sha256-hTUDhtsv5KWOiM9jYrT4/IW+GmnCmWnhMZpoQIClQ3k="; + buildTypesAiobotocorePackage "connectcases" "2.15.2" + "sha256-EIcgQ/i9U0nXJY3S0Cw+T3NdELyy3B1mZ640jn10BCw="; types-aiobotocore-connectparticipant = - buildTypesAiobotocorePackage "connectparticipant" "2.15.1" - "sha256-ffSs8Z/TQatJDUKmjdclI5DYMf5/EI/uEi8r4EnKFds="; + buildTypesAiobotocorePackage "connectparticipant" "2.15.2" + "sha256-6ieIdjDnzr3CZqYeXhvoEXN5giZBUfab/xLjQYxMESw="; types-aiobotocore-controltower = - buildTypesAiobotocorePackage "controltower" "2.15.1" - "sha256-5Sa+K+DTpM2YwTfhlufD9MxTk4pv+K1wE9PYKM1zAxw="; + buildTypesAiobotocorePackage "controltower" "2.15.2" + "sha256-les6NCF44cG768lwj7h3GVYGPW3pF7EozUP04DXB3vI="; types-aiobotocore-cur = - buildTypesAiobotocorePackage "cur" "2.15.1" - "sha256-NfY/cGT+ft8bWitgYHbySblXNdYj/c/4p5jr2yOs5+c="; + buildTypesAiobotocorePackage "cur" "2.15.2" + "sha256-9tc5TZx6t46Ppd8gljnFAMu1/mt0asdpMEvHUReTgJ8="; types-aiobotocore-customer-profiles = - buildTypesAiobotocorePackage "customer-profiles" "2.15.1" - "sha256-fQONh48vGKkr+ICjI3EqKW+jNXH/DSm0a96pTf4JQmk="; + buildTypesAiobotocorePackage "customer-profiles" "2.15.2" + "sha256-5FL2ySDWbh3lUspkWDjk3NNJsknW8iweQub3P/i/vik="; types-aiobotocore-databrew = - buildTypesAiobotocorePackage "databrew" "2.15.1" - "sha256-DNayl61Eorza7nIjjbxbFzs+lIN3oUwpDIImJEMHX7Y="; + buildTypesAiobotocorePackage "databrew" "2.15.2" + "sha256-2hfisDJAqw4fwtrmzil0sr77khsbFUxxCDMg+fr5Y2k="; types-aiobotocore-dataexchange = - buildTypesAiobotocorePackage "dataexchange" "2.15.1" - "sha256-v9bq7ub+8q2NrZtaqWqQh2MSKoGfDBdTVW1qKTSooug="; + buildTypesAiobotocorePackage "dataexchange" "2.15.2" + "sha256-SfQXMRIr07Ig/W9PZxvsYdwyuL7BPCTSLrgcR7KYosI="; types-aiobotocore-datapipeline = - buildTypesAiobotocorePackage "datapipeline" "2.15.1" - "sha256-9hBxeCltGrxtMGuTKTwVp/aHHccnfDKuI0QXv50uKNA="; + buildTypesAiobotocorePackage "datapipeline" "2.15.2" + "sha256-9jC8u1JuVEOXzS4glOhSUHkkHDMUT/IpvOCOlgXORXc="; types-aiobotocore-datasync = - buildTypesAiobotocorePackage "datasync" "2.15.1" - "sha256-z7t65Ioz0NtiToPkTIbYcBjWlJg1rcTIj0u/qmPkhMA="; + buildTypesAiobotocorePackage "datasync" "2.15.2" + "sha256-GpFc9Jp8lpBnVv7KiP+m4opXlbT2GZD/E+FuJIIuM2Q="; types-aiobotocore-dax = - buildTypesAiobotocorePackage "dax" "2.15.1" - "sha256-/NyvlFx8/nOWClB3ZPqTt67yGN2ssYojWukw0S3v274="; + buildTypesAiobotocorePackage "dax" "2.15.2" + "sha256-8+YMDXMzMA5cdOKtLROJMFr9f/GNoVZcq8DPmQGaGyw="; types-aiobotocore-detective = - buildTypesAiobotocorePackage "detective" "2.15.1" - "sha256-DWf6HTvFyMYRiOLQrawp5GwhXniNS9mhwPNyprCYrt0="; + buildTypesAiobotocorePackage "detective" "2.15.2" + "sha256-mhrEwfwNVvz1s//HXYy/afTHgJaM4jKdK2Juo5SDrlU="; types-aiobotocore-devicefarm = - buildTypesAiobotocorePackage "devicefarm" "2.15.1" - "sha256-05IkwZCPZvQGkRya7TdN1huFpMxuR1zxB+b8JSFI/oM="; + buildTypesAiobotocorePackage "devicefarm" "2.15.2" + "sha256-o1MUk2hR7gwZS700rIJcjjUYoBHkO1S1Q2jeXlfT01I="; types-aiobotocore-devops-guru = - buildTypesAiobotocorePackage "devops-guru" "2.15.1" - "sha256-n62US1ENdO1MFljx5zeLx+LblbiJyxefhN2+nlxu2GA="; + buildTypesAiobotocorePackage "devops-guru" "2.15.2" + "sha256-FMt/z56MiTwVuqgC1mfUeGiiv060jAwJ9zRHX3S1Pls="; types-aiobotocore-directconnect = - buildTypesAiobotocorePackage "directconnect" "2.15.1" - "sha256-knhkLyC1uPX4KjiFcgFf9ys2hCz38++q55nbnUM3n/Q="; + buildTypesAiobotocorePackage "directconnect" "2.15.2" + "sha256-tMYlYP5grEjERDEIgJf5uW2tOvKQuIZ9i82/27W/1bI="; types-aiobotocore-discovery = - buildTypesAiobotocorePackage "discovery" "2.15.1" - "sha256-JG/1ZQ9cSCMzqF6CVTIu7EIm0ORbLn3gM8gcCCSRhsQ="; + buildTypesAiobotocorePackage "discovery" "2.15.2" + "sha256-HecRhn7WhVtnhyf2p3/DfR8GZFe7E+FXOB6Tfo4FhQ0="; types-aiobotocore-dlm = - buildTypesAiobotocorePackage "dlm" "2.15.1" - "sha256-Pyi45ZWBuEsb3GoumJkX+c8QnX3J6HobLFqwkm7I0ng="; + buildTypesAiobotocorePackage "dlm" "2.15.2" + "sha256-GPDMhuEywSHsZEb5c75luMAaJ7ezveedU9lNQkLGOzc="; types-aiobotocore-dms = - buildTypesAiobotocorePackage "dms" "2.15.1" - "sha256-wius84bAUyldt84o8qUeBSzajkY8mLco85rI4NAIQcc="; + buildTypesAiobotocorePackage "dms" "2.15.2" + "sha256-ENyOPp9mO5gnHt/93OFdxAZ0j3qnTdrKHhB0wMLTb6I="; types-aiobotocore-docdb = - buildTypesAiobotocorePackage "docdb" "2.15.1" - "sha256-MF8CGeObwgB5LW1o1ynwahm9GZHTvxjlgNXDyFRjpWM="; + buildTypesAiobotocorePackage "docdb" "2.15.2" + "sha256-eR5tTx2QfrujGb2f4m29Ip31DWNqgalboYDVrGFNLmA="; types-aiobotocore-docdb-elastic = - buildTypesAiobotocorePackage "docdb-elastic" "2.15.1" - "sha256-+gyO2dno529rxF5Uj1pyQ0+fH1CJK7LJs/U4WIpRIX4="; + buildTypesAiobotocorePackage "docdb-elastic" "2.15.2" + "sha256-q+jMIMYoxDEC+WDY2pqFpyJE8tnc1imKBU0fin17NAg="; types-aiobotocore-drs = - buildTypesAiobotocorePackage "drs" "2.15.1" - "sha256-qtMwQ17MpJ0K7zbKr4dyAGWEfHqfM+wXQe22raG/i1E="; + buildTypesAiobotocorePackage "drs" "2.15.2" + "sha256-kKoZ3i8/bXkoJ5pbj0HVBsYSVwB4eAccmCaPyIPjpp4="; types-aiobotocore-ds = - buildTypesAiobotocorePackage "ds" "2.15.1" - "sha256-qU+5PMZqxbskuB/ubXeigzS5t+A5m0WW0e4NVQjFLO4="; + buildTypesAiobotocorePackage "ds" "2.15.2" + "sha256-tVONjcSBiwyW8Rok6pm+uzU1chwhrlCSVMsIw0Weh1Q="; types-aiobotocore-dynamodb = - buildTypesAiobotocorePackage "dynamodb" "2.15.1" - "sha256-hQt2Htye+VubSHw+2Iz5E8IgzHGwAwmyYEkNI0br7eU="; + buildTypesAiobotocorePackage "dynamodb" "2.15.2" + "sha256-0VYAb1ZzBc23YJ1oKwlWRE0Wb8SBltWBNODxckUEtRU="; types-aiobotocore-dynamodbstreams = - buildTypesAiobotocorePackage "dynamodbstreams" "2.15.1" - "sha256-n2NZxFSH9ymucBLagUAaWDgAN4kDsfKqB2W2ir6aEC8="; + buildTypesAiobotocorePackage "dynamodbstreams" "2.15.2" + "sha256-egDbhJ2SAaw6EQQXGI75x98CBLc+bUyfl8a82RMEmzY="; types-aiobotocore-ebs = - buildTypesAiobotocorePackage "ebs" "2.15.1" - "sha256-nzm7mnREUd6MEHan4cTc0MaorGo/X+eKbGH1/giG16w="; + buildTypesAiobotocorePackage "ebs" "2.15.2" + "sha256-GTCz/fv3NWAD57dhqeGJYYLqQlTYx9eHGCwhKF3xKTQ="; types-aiobotocore-ec2 = - buildTypesAiobotocorePackage "ec2" "2.15.1" - "sha256-QzPGQirl2zA5m2yqqXjUC8MIsUDbOg1yl252KJU+Ipc="; + buildTypesAiobotocorePackage "ec2" "2.15.2" + "sha256-13MWHHnHn17FW8NLfIxyCRwjk09xBG4rKhOn27IFB4M="; types-aiobotocore-ec2-instance-connect = - buildTypesAiobotocorePackage "ec2-instance-connect" "2.15.1" - "sha256-A5OdqOTax+3/v6GG3IzU771A4l3OXQhqlowknE0DnNU="; + buildTypesAiobotocorePackage "ec2-instance-connect" "2.15.2" + "sha256-k+nxNJHuQouSxGSG/nigyvlx7qz0KvWnApGSvLPgOjQ="; types-aiobotocore-ecr = - buildTypesAiobotocorePackage "ecr" "2.15.1" - "sha256-3b5SI5qHhvVIa8hqLp/YZu9b3DDpZm5ogRv0I0NuI0Y="; + buildTypesAiobotocorePackage "ecr" "2.15.2" + "sha256-MSh/z9Wzj6VUFz40U3QHe7ABj8d0HZqEidkG/lIDb6U="; types-aiobotocore-ecr-public = - buildTypesAiobotocorePackage "ecr-public" "2.15.1" - "sha256-enLMc0Vg+RwO3SBzvDd/nKQvNbCllMJMS4BBKGUNWuQ="; + buildTypesAiobotocorePackage "ecr-public" "2.15.2" + "sha256-9jRWoSdETNAU8a4kTGj+4Gj+8CU3Y2m3RJSQ2Tlw4fg="; types-aiobotocore-ecs = - buildTypesAiobotocorePackage "ecs" "2.15.1" - "sha256-GOUkXglekGMNDlWdz9dyGvZpgSTfnZAh3e80CMvzumA="; + buildTypesAiobotocorePackage "ecs" "2.15.2" + "sha256-ZO4pKMnUf7g4DdKGvEuEzDM3hBEDe5yOSPPXhWDSLiU="; types-aiobotocore-efs = - buildTypesAiobotocorePackage "efs" "2.15.1" - "sha256-+KZQnRFKF+0nmOqec1jHa0ewAcfLBoW9mrMVNZn6q78="; + buildTypesAiobotocorePackage "efs" "2.15.2" + "sha256-BdXAO/Q7ymBnDbFccevpxTsNs5zcY5VZQtODBmbGEcI="; types-aiobotocore-eks = - buildTypesAiobotocorePackage "eks" "2.15.1" - "sha256-4d/rL6L/W2zfZ1naceSfH/E1y2DUNMcQ2tJaaKsRjLw="; + buildTypesAiobotocorePackage "eks" "2.15.2" + "sha256-qKOpyzUhdoKIB253zg/iLeByAYJVsKMZ0hytwY0kU8o="; types-aiobotocore-elastic-inference = - buildTypesAiobotocorePackage "elastic-inference" "2.15.1" - "sha256-AOhrrWLtKq5Wr79TcFNa+A3/MhHMnAPMIPEgcum2/ZA="; + buildTypesAiobotocorePackage "elastic-inference" "2.15.2" + "sha256-gnZqnLwqGbup02Gaqo/JbAtSMlEl6Rlcm7+3MNQ7MTs="; types-aiobotocore-elasticache = - buildTypesAiobotocorePackage "elasticache" "2.15.1" - "sha256-Psxy6JILUzvwmUj9QP2wTeIgt/nbtpbG3LUozN9ltek="; + buildTypesAiobotocorePackage "elasticache" "2.15.2" + "sha256-DpTquyKW0+uGZZLDnG6+N3k/aEBWaBCd6gx2RiQZ3fk="; types-aiobotocore-elasticbeanstalk = - buildTypesAiobotocorePackage "elasticbeanstalk" "2.15.1" - "sha256-3Jt67THyNfn92g6L/GZwPi0HLb6bpLuoDAkuXKPZu1Y="; + buildTypesAiobotocorePackage "elasticbeanstalk" "2.15.2" + "sha256-DV7tOZxA63kA04q+0vUpoTP7QVJ9C3D3NodvcTJJfLg="; types-aiobotocore-elastictranscoder = - buildTypesAiobotocorePackage "elastictranscoder" "2.15.1" - "sha256-mGNHO2T129nPrODffC8Y9+R+XKjVVUnFrw1yDkJ0g/A="; + buildTypesAiobotocorePackage "elastictranscoder" "2.15.2" + "sha256-eFBKfNePfk9+765pfX7HVfusysU6shBHA+RFrAXKI4Y="; types-aiobotocore-elb = - buildTypesAiobotocorePackage "elb" "2.15.1" - "sha256-wceBAH30EypOqb4GqTP6aL6Ribm4l6b082+vB4sRDMs="; + buildTypesAiobotocorePackage "elb" "2.15.2" + "sha256-yzE/hHLfuEO/XJF7PfRxdnxYORfFiJjWeO0RKYXKH1o="; types-aiobotocore-elbv2 = - buildTypesAiobotocorePackage "elbv2" "2.15.1" - "sha256-4si+dqz/nPdXAF+eUkTICZQ8JaT+DcxEbmrxKZcF5G0="; + buildTypesAiobotocorePackage "elbv2" "2.15.2" + "sha256-sG42uIpI2QoHgo+Uuik2cQnKoINQmFXyaSZ1bVilZtA="; types-aiobotocore-emr = - buildTypesAiobotocorePackage "emr" "2.15.1" - "sha256-4Ak5F+RnUlOnMvEhVTXrHXkQQzWSo7iRIojrwYifMnA="; + buildTypesAiobotocorePackage "emr" "2.15.2" + "sha256-0dBL/3beR2OKwCpxBjS5SnFx93QnHAc6c2LsvTQXI7Y="; types-aiobotocore-emr-containers = - buildTypesAiobotocorePackage "emr-containers" "2.15.1" - "sha256-Q1ZGZfpub4fceqFyBTLxj5G27ByHYPRH8KvEMyFZWyQ="; + buildTypesAiobotocorePackage "emr-containers" "2.15.2" + "sha256-xNAW2n4skTQgHzrSgyfhYdPRFjvB/yYyo78rTKqoc6c="; types-aiobotocore-emr-serverless = - buildTypesAiobotocorePackage "emr-serverless" "2.15.1" - "sha256-lHSPS5/HAW2NFg6zCKXARznJ1UjTWIn/YDR9XlMa1ag="; + buildTypesAiobotocorePackage "emr-serverless" "2.15.2" + "sha256-rlomQa/70HGPRCG4uf4UCAv5V/TbQ22yUNh9FsFrHGA="; types-aiobotocore-entityresolution = - buildTypesAiobotocorePackage "entityresolution" "2.15.1" - "sha256-QXAAHqiq1ThUvS5Y59SXA0OKQza0IrxPUyGwpZ1Ft1U="; + buildTypesAiobotocorePackage "entityresolution" "2.15.2" + "sha256-NYKSykt5nfe5ML1b3vOBOUaHdFoEJVt+g29BRJbELhs="; types-aiobotocore-es = - buildTypesAiobotocorePackage "es" "2.15.1" - "sha256-lHKKWM984zvnbcO2ord+XkbFm91y2OAJlddm3dongo8="; + buildTypesAiobotocorePackage "es" "2.15.2" + "sha256-ACWSJlnd6IjQez53QIKmrV1dtqI13yuohsMw6LC+vzI="; types-aiobotocore-events = - buildTypesAiobotocorePackage "events" "2.15.1" - "sha256-3XQ9EjRu2qfpvHAWbM7XHodvMCR5PXOzM5ttes7ggEM="; + buildTypesAiobotocorePackage "events" "2.15.2" + "sha256-70GCA4DvVUz2e1oXNKrd+sDUO4FYRI2fA1Q9zg6Yw4Y="; types-aiobotocore-evidently = - buildTypesAiobotocorePackage "evidently" "2.15.1" - "sha256-DR+GYAUdE7Nfn0X0sp3IshbfKjcrtFVCk3KObFlQbdM="; + buildTypesAiobotocorePackage "evidently" "2.15.2" + "sha256-5/+S+GXnUQOyu4u5NsirkbakGcq8mRzl8ss578BbMfs="; types-aiobotocore-finspace = - buildTypesAiobotocorePackage "finspace" "2.15.1" - "sha256-kIg535sFaySMannjaMHmVEZqx7Lh1OnGpBc/CxMqWzY="; + buildTypesAiobotocorePackage "finspace" "2.15.2" + "sha256-TygJjwA7xBxxEFZ0vcqn3+XsOBMJLpyGnWELj0V7Ifk="; types-aiobotocore-finspace-data = - buildTypesAiobotocorePackage "finspace-data" "2.15.1" - "sha256-rGvEfMJt7mmrned4uLGaN58ZGgFJzNPwxFCRu3SghWg="; + buildTypesAiobotocorePackage "finspace-data" "2.15.2" + "sha256-rVleSTHqz08/5zBhzZQio733uy0rXRtFneqtjzQjHGs="; types-aiobotocore-firehose = - buildTypesAiobotocorePackage "firehose" "2.15.1" - "sha256-gkBhNs6Cpy7dL4o/SyOxwF7eCwlnHaGxbSjO0FvPxpM="; + buildTypesAiobotocorePackage "firehose" "2.15.2" + "sha256-+2rDM4qMi1AE4FZQ77Gir1VhONaq/H2NRfiwqhr4s38="; types-aiobotocore-fis = - buildTypesAiobotocorePackage "fis" "2.15.1" - "sha256-BKyTNVhRzYjQDXwhTpo9rblgEonzPubmJIOrCnwaEus="; + buildTypesAiobotocorePackage "fis" "2.15.2" + "sha256-C805H2eghE45jQFdabaYl9JGTjGzKdbpJOvPUT+9etE="; types-aiobotocore-fms = - buildTypesAiobotocorePackage "fms" "2.15.1" - "sha256-9v2x/BYM6tiPWPC/c7ZNJufl5EStBRq7dSW9S3jaWTc="; + buildTypesAiobotocorePackage "fms" "2.15.2" + "sha256-njmD/gMffz9BMGHaFtiLkBfQJs2qMk9fuibvbjEXdpQ="; types-aiobotocore-forecast = - buildTypesAiobotocorePackage "forecast" "2.15.1" - "sha256-7B24s2z0hwaXZzj/ryhfIqbiFPaiFuC8GOn5MaYsB0U="; + buildTypesAiobotocorePackage "forecast" "2.15.2" + "sha256-CzK4VMvhuGfSygAKpJOL4zBZuKSiFoHzFmu7DDXwWhs="; types-aiobotocore-forecastquery = - buildTypesAiobotocorePackage "forecastquery" "2.15.1" - "sha256-Z/Ul3IhUDhYjijXU9fFCOsG2r927wvl3pOWP+SxZ7rE="; + buildTypesAiobotocorePackage "forecastquery" "2.15.2" + "sha256-wW/e5dWz9NaWGQUcx5E51lsxMp8frgFO0d1dFpr69PA="; types-aiobotocore-frauddetector = - buildTypesAiobotocorePackage "frauddetector" "2.15.1" - "sha256-ZNnWPccp4nnNAUk6tsAfV6xYS0U98rh17bTXG9+NjBY="; + buildTypesAiobotocorePackage "frauddetector" "2.15.2" + "sha256-TL/Dvkfj1i+cvBuOiyGUwFLZp4AG1VpSfEPzBAkkS24="; types-aiobotocore-fsx = - buildTypesAiobotocorePackage "fsx" "2.15.1" - "sha256-72IyOCvtGPR2JNpIIy0rgiACfmDfxKlV/wo5AvzTdf4="; + buildTypesAiobotocorePackage "fsx" "2.15.2" + "sha256-smCufroBQ6UNbfOTfnr8sJbwRMLcr1d5XO3Fmsr8oF4="; types-aiobotocore-gamelift = - buildTypesAiobotocorePackage "gamelift" "2.15.1" - "sha256-jFgO3ks0u/1YMjeQXHvMYoa4O35+VrvpeXWIAeJRj2I="; + buildTypesAiobotocorePackage "gamelift" "2.15.2" + "sha256-yu7KH5q1KWa0XZpX4jwtWdYItOjyK2NU824c8RawGC0="; types-aiobotocore-gamesparks = buildTypesAiobotocorePackage "gamesparks" "2.7.0" "sha256-oVbKtuLMPpCQcZYx/cH1Dqjv/t6/uXsveflfFVqfN+8="; types-aiobotocore-glacier = - buildTypesAiobotocorePackage "glacier" "2.15.1" - "sha256-5BewcGF6cDdPnTqyKLHlJIYuiv5N4GSuIlouRCEMeAQ="; + buildTypesAiobotocorePackage "glacier" "2.15.2" + "sha256-uvVtYnhswWmCCngRxzSucyWMD8IiUMv51TYH+KvePOo="; types-aiobotocore-globalaccelerator = - buildTypesAiobotocorePackage "globalaccelerator" "2.15.1" - "sha256-fh2RP530haUdEOM7noDiBmiHf5Cv+YvF8S4Xoh84K20="; + buildTypesAiobotocorePackage "globalaccelerator" "2.15.2" + "sha256-EG+Mub4z9+e1FSOYM9TymEBLkptdBCORAzq5f+FgDb8="; types-aiobotocore-glue = - buildTypesAiobotocorePackage "glue" "2.15.1" - "sha256-z4fe7DbzI2AIkCa4qBS4kGyPcgti1d/CPJCqe82OuR4="; + buildTypesAiobotocorePackage "glue" "2.15.2" + "sha256-Yt9Bdj97pjBNjzAs4yfhPVXumdZBMR8K6fh9RMVE44U="; types-aiobotocore-grafana = - buildTypesAiobotocorePackage "grafana" "2.15.1" - "sha256-V6uqUzVntsISmOUH9Mjy5DjLxiYkPN9k6BtQFwer4wM="; + buildTypesAiobotocorePackage "grafana" "2.15.2" + "sha256-9SxJCAQTFvkyLLMUjZa8Sw8gmvA7CEmq8plCL2Im2vI="; types-aiobotocore-greengrass = - buildTypesAiobotocorePackage "greengrass" "2.15.1" - "sha256-C/W6eBJauG9QI8MMc7hFzkN4A21RRMH6kSU5Wq/qXus="; + buildTypesAiobotocorePackage "greengrass" "2.15.2" + "sha256-o2zx53sUfII3M2riAnSof/W0zjP1aDUMnRmZmFPuQZg="; types-aiobotocore-greengrassv2 = - buildTypesAiobotocorePackage "greengrassv2" "2.15.1" - "sha256-00hMhRWJ4W91I6cG5IXyyNqjyxPFrwmbHp69EWIIkMg="; + buildTypesAiobotocorePackage "greengrassv2" "2.15.2" + "sha256-gFUVkGUva3v9BgvOiSZTJlLEmR8xJPdbtraUXc3uDvE="; types-aiobotocore-groundstation = - buildTypesAiobotocorePackage "groundstation" "2.15.1" - "sha256-++YYod+5UlCzknDJ/0l3hwPNukO9o2M0CoZR0lyOTnA="; + buildTypesAiobotocorePackage "groundstation" "2.15.2" + "sha256-j8tHv3buQXMUNcu13zEqYEgh9y32qvZtGf7RwL/Ded0="; types-aiobotocore-guardduty = - buildTypesAiobotocorePackage "guardduty" "2.15.1" - "sha256-+fJrH77TQKCBoio2R3LEJLmUOtSXd9oaf+PaN0YyEdA="; + buildTypesAiobotocorePackage "guardduty" "2.15.2" + "sha256-mvlSXeVh+aqX5nCBiDmLfVY3YzT8S3JGHqTmBECxijQ="; types-aiobotocore-health = - buildTypesAiobotocorePackage "health" "2.15.1" - "sha256-KNaHkgFc1W6cK7nwt7ZibmeL3zMmO2/6O1OlRkrUERY="; + buildTypesAiobotocorePackage "health" "2.15.2" + "sha256-5aQSWo0L9uonXTWh5tZzukj5Jka2iJQF7Pn55tOR4to="; types-aiobotocore-healthlake = - buildTypesAiobotocorePackage "healthlake" "2.15.1" - "sha256-JtP47qVkcTMtafPT/YbEu/CFOh4yp1VLICTVzB2LeV4="; + buildTypesAiobotocorePackage "healthlake" "2.15.2" + "sha256-MbPcf35D3xDJsReScEoRsMEbNcxCNqP6awnZ3wzEnK4="; types-aiobotocore-honeycode = buildTypesAiobotocorePackage "honeycode" "2.13.0" "sha256-DeeheoQeFEcDH21DSNs2kSR1rjnPLtTgz0yNCFnE+Io="; types-aiobotocore-iam = - buildTypesAiobotocorePackage "iam" "2.15.1" - "sha256-CKNmGY362fvOEdm9+UvElI9U3dZhjY4sTDnuzBaPJyw="; + buildTypesAiobotocorePackage "iam" "2.15.2" + "sha256-gj0mnoKF4hCs6oWAil9XS6V/8YnmGVEu6dvh4l3Gl9o="; types-aiobotocore-identitystore = - buildTypesAiobotocorePackage "identitystore" "2.15.1" - "sha256-LIEyxMseTo/G44R9gUeWFOoR/k1aZ1a6nLA8uuoti70="; + buildTypesAiobotocorePackage "identitystore" "2.15.2" + "sha256-OFIHUrjhNBztSEhictiFeLCcIITmihIIs337DT2z6IM="; types-aiobotocore-imagebuilder = - buildTypesAiobotocorePackage "imagebuilder" "2.15.1" - "sha256-YromFw8hMXBV3v9rAfmAFg/1MWMSsBR8jCjgnN3Qjdc="; + buildTypesAiobotocorePackage "imagebuilder" "2.15.2" + "sha256-iVa8PY/Ymt8C8x0uWlLAvKcMWhxm/i0Fjy8+wq+vBAs="; types-aiobotocore-importexport = - buildTypesAiobotocorePackage "importexport" "2.15.1" - "sha256-UvwCZclRwoDaAMhY6CdhCADFs0m258Z34FVTH95CrZ8="; + buildTypesAiobotocorePackage "importexport" "2.15.2" + "sha256-XODBb05MkRhTPkK44G1dF5PCObngkR0JIenShPg/SEM="; types-aiobotocore-inspector = - buildTypesAiobotocorePackage "inspector" "2.15.1" - "sha256-5vgqzDYe/y3vHvKFuYfhArZfmLHRPDuhGaSBRHWUiis="; + buildTypesAiobotocorePackage "inspector" "2.15.2" + "sha256-W6cJuqZoOgrSHKWvYnLmNpyfswjJbB/pYfSyUYcN5Qg="; types-aiobotocore-inspector2 = - buildTypesAiobotocorePackage "inspector2" "2.15.1" - "sha256-2CPWpQt1jylh05MtxFIoig4DVoSBkHYVKEl0j/2s1v0="; + buildTypesAiobotocorePackage "inspector2" "2.15.2" + "sha256-toUQmdF8Tdakr6cIfAty6mIyHQ7lHyYheEbkrVDsD3g="; types-aiobotocore-internetmonitor = - buildTypesAiobotocorePackage "internetmonitor" "2.15.1" - "sha256-aXAhRpaoJC0BR/KqG/0FF139mLFBTaqQdr0m5B8vz/k="; + buildTypesAiobotocorePackage "internetmonitor" "2.15.2" + "sha256-w8XaOTpY69HY4Y9HXHRzs/UNYVLEJ+OY4vL7K9CYZlU="; types-aiobotocore-iot = - buildTypesAiobotocorePackage "iot" "2.15.1" - "sha256-iVdmdRpw4/gj6Lsy6gP8C6HwvIKhKmKHpvR5HoB4jE8="; + buildTypesAiobotocorePackage "iot" "2.15.2" + "sha256-KV3EkKI3KoPCwK0lGDyCRF3QzKgdt3VP0mzm0S1Urko="; types-aiobotocore-iot-data = - buildTypesAiobotocorePackage "iot-data" "2.15.1" - "sha256-WVcWtkcrV0jTqCuygnDi6CZFVt/xuReFy6ji+BAjylQ="; + buildTypesAiobotocorePackage "iot-data" "2.15.2" + "sha256-j7Kffix+aoo6N0IKNtKuD1cmIxk/yeNXgQUvTwAOFNI="; types-aiobotocore-iot-jobs-data = - buildTypesAiobotocorePackage "iot-jobs-data" "2.15.1" - "sha256-Ym5Pxg3N++/QRdLNzHAOZQmObdroyhgO6tPHLmGfCPY="; + buildTypesAiobotocorePackage "iot-jobs-data" "2.15.2" + "sha256-rbNjx7Moa6xY8aQRNF54hurpbr/jLhDfR0IXZNKaZXg="; types-aiobotocore-iot-roborunner = buildTypesAiobotocorePackage "iot-roborunner" "2.12.2" "sha256-O/nGvYfUibI4EvHgONtkYHFv/dZSpHCehXjietPiMJo="; types-aiobotocore-iot1click-devices = - buildTypesAiobotocorePackage "iot1click-devices" "2.15.1" - "sha256-OJmSfZaKAfiq7UImpgF/wKTzYaqxlhqrkOAbk7OchrM="; + buildTypesAiobotocorePackage "iot1click-devices" "2.15.2" + "sha256-OK7Yw0t1rSXQz2BJrP0zYorMjGGdac2SS9IpKNrF6y4="; types-aiobotocore-iot1click-projects = - buildTypesAiobotocorePackage "iot1click-projects" "2.15.1" - "sha256-8Q6P8K87YIs+UsR5Vyyx9IMBW0fLAMqCu/LkqkUQYEU="; + buildTypesAiobotocorePackage "iot1click-projects" "2.15.2" + "sha256-kNEVudATczB+qs0XyihgJbmH/02Ds8tGuzKWQ5IDj4M="; types-aiobotocore-iotanalytics = - buildTypesAiobotocorePackage "iotanalytics" "2.15.1" - "sha256-HkzZSHFbEWv67uQRIH6W/CsAFI1HpsFeNLvbqjQEJsQ="; + buildTypesAiobotocorePackage "iotanalytics" "2.15.2" + "sha256-scMpD4ZGJyTA97b70t80fE/mQkS5LwumJCWD2v7ul9w="; types-aiobotocore-iotdeviceadvisor = - buildTypesAiobotocorePackage "iotdeviceadvisor" "2.15.1" - "sha256-SMNXQLSk9rFAXgEKXk23cjWRRvhnUcskkQyeSetngcE="; + buildTypesAiobotocorePackage "iotdeviceadvisor" "2.15.2" + "sha256-XLS46QND2ZNbm0pB73gGrkJVS8ulEoBPAf2EucNQqNA="; types-aiobotocore-iotevents = - buildTypesAiobotocorePackage "iotevents" "2.15.1" - "sha256-vRnjkeGogwcdtRFybEuqB4FjR89N0KR8pdDWs4caa8I="; + buildTypesAiobotocorePackage "iotevents" "2.15.2" + "sha256-b21od8f3xlkyMebl6QFNKqhGCO4FcioMWX8odrKolnk="; types-aiobotocore-iotevents-data = - buildTypesAiobotocorePackage "iotevents-data" "2.15.1" - "sha256-j9yAFJUVBUtViPCO3DBCo1tC9AcLO2Uy4I2lfThBV+I="; + buildTypesAiobotocorePackage "iotevents-data" "2.15.2" + "sha256-laNqog/9QdCDOtNhmBwki2hfJur9M+M6rqdVVZZKRyk="; types-aiobotocore-iotfleethub = - buildTypesAiobotocorePackage "iotfleethub" "2.15.1" - "sha256-k7D8o7sxTlyjmlCBmt2uY/FKC6KUWmx9LL9k2zedszU="; + buildTypesAiobotocorePackage "iotfleethub" "2.15.2" + "sha256-cXdG48rRVvZtvg0nnPcl6lDmyukhQpGH2tHyMhp6KpA="; types-aiobotocore-iotfleetwise = - buildTypesAiobotocorePackage "iotfleetwise" "2.15.1" - "sha256-lozZuY4r9CkPi+SD9p/T35HyjiHVMmJ33GKNEZ/htPc="; + buildTypesAiobotocorePackage "iotfleetwise" "2.15.2" + "sha256-Qokco8UgSqsRZ03NawYHvyCx9qc+/q2mYPUEp+OhqOA="; types-aiobotocore-iotsecuretunneling = - buildTypesAiobotocorePackage "iotsecuretunneling" "2.15.1" - "sha256-3Bw3N2aIUzKNLyMGnHsxQB8bofonIcqJANariAKqXsI="; + buildTypesAiobotocorePackage "iotsecuretunneling" "2.15.2" + "sha256-Iq6WU6a7bfb8+ob0feMoVbJr0J3tQI7L0nsV7X7E3rM="; types-aiobotocore-iotsitewise = - buildTypesAiobotocorePackage "iotsitewise" "2.15.1" - "sha256-WZqYRDV21kkgBMb5z+6KKTlGxDJKXmMl1u3RlTPavl4="; + buildTypesAiobotocorePackage "iotsitewise" "2.15.2" + "sha256-9XjABgFHnbEIztv7CiS2QX/dUgawqic3XEJ5CSt0oEk="; types-aiobotocore-iotthingsgraph = - buildTypesAiobotocorePackage "iotthingsgraph" "2.15.1" - "sha256-/ArOj+prhHoDPRymOW4NN8IXNkWuE/wZJuRAXMVmzpg="; + buildTypesAiobotocorePackage "iotthingsgraph" "2.15.2" + "sha256-pbVgFQOcfnEjPRYsXz+XHEh9Xa0aAZvTD7coaYt2uR0="; types-aiobotocore-iottwinmaker = - buildTypesAiobotocorePackage "iottwinmaker" "2.15.1" - "sha256-gE3/juMs0BFJZEq291UGWAh41NCRHWHmZY+KcZ9IFJE="; + buildTypesAiobotocorePackage "iottwinmaker" "2.15.2" + "sha256-hyyW7WVaxyvus78zPDvy9g8J1/ZY3r0RbjhcgApVx0E="; types-aiobotocore-iotwireless = - buildTypesAiobotocorePackage "iotwireless" "2.15.1" - "sha256-PRORLAzdQ0QmYSPYWrQaPSwW8JaeTyzg8Z+N8/Hqjz8="; + buildTypesAiobotocorePackage "iotwireless" "2.15.2" + "sha256-+vc1U5s8yLnpBsrB1rzuwZj1z/ECe4NTUfIcuO5FRdk="; types-aiobotocore-ivs = - buildTypesAiobotocorePackage "ivs" "2.15.1" - "sha256-OIvBSFt9S+SmZIjdw/zcC/FC/3d9Huce5jQXgj5D+ik="; + buildTypesAiobotocorePackage "ivs" "2.15.2" + "sha256-lkDOjzhDWTFECa+hxb8EIVpxd+j9FSHGb9L9fRePNRo="; types-aiobotocore-ivs-realtime = - buildTypesAiobotocorePackage "ivs-realtime" "2.15.1" - "sha256-Eh5fuYJawPwAFuQl0/wLq+gTJ02C5wFZsETDsOSi3LU="; + buildTypesAiobotocorePackage "ivs-realtime" "2.15.2" + "sha256-hFFPTJHySEHbcNwgg6YnU8GJBDA8y2F1pyAY2jpw8CE="; types-aiobotocore-ivschat = - buildTypesAiobotocorePackage "ivschat" "2.15.1" - "sha256-jk6zZ3zX94kIfld9oXd6zW7ILhaa01XOt7c+/5pn8kk="; + buildTypesAiobotocorePackage "ivschat" "2.15.2" + "sha256-/nKK+JmeOr6zG8OEeNvBT1cWUTD55gK/LCFze3/P4p8="; types-aiobotocore-kafka = - buildTypesAiobotocorePackage "kafka" "2.15.1" - "sha256-NJv1QF3qBn5LJ7yhKcSmy6W3OJ8kenfzQ4RkSRx8iTo="; + buildTypesAiobotocorePackage "kafka" "2.15.2" + "sha256-H+1xCc+/5RZ684yMxhzqUTysj9QvUMMVMcd+kI9PGZQ="; types-aiobotocore-kafkaconnect = - buildTypesAiobotocorePackage "kafkaconnect" "2.15.1" - "sha256-7EDrF3TxDgLeAnbUeLQj7SpFPLB+uMjqc/sQxWaXYlU="; + buildTypesAiobotocorePackage "kafkaconnect" "2.15.2" + "sha256-JH+0rJQmzsJ/LBWMSp/UsjtFpD6FmMtkfr0+9tJKKoY="; types-aiobotocore-kendra = - buildTypesAiobotocorePackage "kendra" "2.15.1" - "sha256-8k/FEmIfl2dKDt4JrCWdrLskYuj+A2VEHm0jqHWfUp8="; + buildTypesAiobotocorePackage "kendra" "2.15.2" + "sha256-+gQGQmC8lgxAF0Pyo7mloBLN/iSfqvM67KyntXFU4wg="; types-aiobotocore-kendra-ranking = - buildTypesAiobotocorePackage "kendra-ranking" "2.15.1" - "sha256-ZaDBuYlm35DRaiKv+xV2L+e/E5x1rGN59UTL2U5bRp8="; + buildTypesAiobotocorePackage "kendra-ranking" "2.15.2" + "sha256-Qg/EN+M3YqqnYkYBFm34YoDnxfEFbmA7YUId/+YmEME="; types-aiobotocore-keyspaces = - buildTypesAiobotocorePackage "keyspaces" "2.15.1" - "sha256-UgzrxIq3vh8dfw80VCue7gf8l19TqRUmRuAS/cW/G1M="; + buildTypesAiobotocorePackage "keyspaces" "2.15.2" + "sha256-QjwiOj8YhfmCjmM+7C4WP5kPtQcpLb7TbXam/+XMH0U="; types-aiobotocore-kinesis = - buildTypesAiobotocorePackage "kinesis" "2.15.1" - "sha256-MF7n5Z70BFUAXaFuTDWIzFuiZ3u1fpYoZrBfRQR97Qw="; + buildTypesAiobotocorePackage "kinesis" "2.15.2" + "sha256-1kwvF+RK4CjpEyv/BAi7u6R4kdL2y6PiWrp4pWt38yw="; types-aiobotocore-kinesis-video-archived-media = - buildTypesAiobotocorePackage "kinesis-video-archived-media" "2.15.1" - "sha256-bEZV3TDr3l6Ogn49kFW/3IcFi/4NjQQnaC1LrDChlcI="; + buildTypesAiobotocorePackage "kinesis-video-archived-media" "2.15.2" + "sha256-vudWpiyA9u3f5v191Ajh/K5EvZJLeaKxqjo5oPjRbuk="; types-aiobotocore-kinesis-video-media = - buildTypesAiobotocorePackage "kinesis-video-media" "2.15.1" - "sha256-PPT89cO2FukHtnXQHgcNZie3vPCDBmbrfRDiZCZaJ1E="; + buildTypesAiobotocorePackage "kinesis-video-media" "2.15.2" + "sha256-t2FvtZiKBLfD/RADQ3+6ZzfUXUnq/PYMAMHj1YQmobU="; types-aiobotocore-kinesis-video-signaling = - buildTypesAiobotocorePackage "kinesis-video-signaling" "2.15.1" - "sha256-Fez2At/MFggTu7ZtfKLWCm7iELH6gumBhn3t7KdJzVA="; + buildTypesAiobotocorePackage "kinesis-video-signaling" "2.15.2" + "sha256-ImrtDqLs6k8nQBtXa0gEH34kFlBorZSrX1hCRqV130o="; types-aiobotocore-kinesis-video-webrtc-storage = - buildTypesAiobotocorePackage "kinesis-video-webrtc-storage" "2.15.1" - "sha256-5h9x9Rgb1Sb8wIQwRcjkonc2070QahwPkKXfQ/lFFI8="; + buildTypesAiobotocorePackage "kinesis-video-webrtc-storage" "2.15.2" + "sha256-Jb1oWeQgXmLP7fFSWG5ZgNLzUaZRITNGhVWWMlfQLQc="; types-aiobotocore-kinesisanalytics = - buildTypesAiobotocorePackage "kinesisanalytics" "2.15.1" - "sha256-JEye+bOxLrRJDToMs5jQZ2wcHy1K/2C5oPFUIRrtO5g="; + buildTypesAiobotocorePackage "kinesisanalytics" "2.15.2" + "sha256-LXVmEz3iHWl3Svg5F3X06CJvStcQdwOlSS8m+uQj+Hk="; types-aiobotocore-kinesisanalyticsv2 = - buildTypesAiobotocorePackage "kinesisanalyticsv2" "2.15.1" - "sha256-j2gcnHFfWTVD3NatfJXsp3hRVEsy4930OclgR5IPbDM="; + buildTypesAiobotocorePackage "kinesisanalyticsv2" "2.15.2" + "sha256-RCz0ySwc+gWzyVDKTFT2pXkqy9PEmg6uF8BOoLHzvmA="; types-aiobotocore-kinesisvideo = - buildTypesAiobotocorePackage "kinesisvideo" "2.15.1" - "sha256-mnKzF2lgYtHTNEwecoqs4qt9hQ5m2xLo79/kZHFyF5I="; + buildTypesAiobotocorePackage "kinesisvideo" "2.15.2" + "sha256-m1movOOFQVLCzKSCWSoYv03Ig9D0qJ17O73tk4XaTX0="; types-aiobotocore-kms = - buildTypesAiobotocorePackage "kms" "2.15.1" - "sha256-CCyhwWkjtI7wp5CN1MCK0M//bOu4ZGttbHJSUcidjUA="; + buildTypesAiobotocorePackage "kms" "2.15.2" + "sha256-9EXCtfSVjSuyszl3H8Llk5j/KYmU9HSUFP/k1Btrlv4="; types-aiobotocore-lakeformation = - buildTypesAiobotocorePackage "lakeformation" "2.15.1" - "sha256-+BlDjTPv+fmKmUInm6FpOQFt5H5atz7BWKhrt56A3Co="; + buildTypesAiobotocorePackage "lakeformation" "2.15.2" + "sha256-zYavyl1U94TCsmjyVhedtexjl0B+2FN3jo6Dg2adePo="; types-aiobotocore-lambda = - buildTypesAiobotocorePackage "lambda" "2.15.1" - "sha256-hCTL2KBMt5p51YwnOYNcpGvzG2wvZjt23kK3FX4Qp5U="; + buildTypesAiobotocorePackage "lambda" "2.15.2" + "sha256-vRsrDk4dzT7wsCeaNE2dnf8blwM/Unb3lAN8Dc0x7SA="; types-aiobotocore-lex-models = - buildTypesAiobotocorePackage "lex-models" "2.15.1" - "sha256-A8BAADavGEB7sa+fh9SRahoqN3mne7ABZjcnZI9YfBk="; + buildTypesAiobotocorePackage "lex-models" "2.15.2" + "sha256-jSO3wtWRgXuPCHFfFgBDw0lMsOYb1IjqzCmo1WX6Gr4="; types-aiobotocore-lex-runtime = - buildTypesAiobotocorePackage "lex-runtime" "2.15.1" - "sha256-QVYHr4fbnZPozVghHOZVsyChTuP2S0Ys+876slONaEc="; + buildTypesAiobotocorePackage "lex-runtime" "2.15.2" + "sha256-BdaqbSjKpsFeDTh7ttj1j48YDSMP651UpgmqmM82KpI="; types-aiobotocore-lexv2-models = - buildTypesAiobotocorePackage "lexv2-models" "2.15.1" - "sha256-uqZrNG/mOCnfYjNF5FQofjSUeXhnidunT1754yame7E="; + buildTypesAiobotocorePackage "lexv2-models" "2.15.2" + "sha256-sJZcOkCK9x7RsFo6mVR7FGmictWprwVUlPpzuMbQEn4="; types-aiobotocore-lexv2-runtime = - buildTypesAiobotocorePackage "lexv2-runtime" "2.15.1" - "sha256-hQGTDbhJNiJc5dORzg7XJ4p+ZatNcI0qoT70qtMHzHc="; + buildTypesAiobotocorePackage "lexv2-runtime" "2.15.2" + "sha256-dmn/Q2ljn4+AIryiIcytMGxAS92Q0vZdv2yuuA3/0vo="; types-aiobotocore-license-manager = - buildTypesAiobotocorePackage "license-manager" "2.15.1" - "sha256-4whyQ2X/R2eMdQ7DOygNQFqMgLA+w+6ydyN8s7yxgB4="; + buildTypesAiobotocorePackage "license-manager" "2.15.2" + "sha256-HfsmPqnNEoBM/Q6d5GbhV1qykXlO2KE9DURQi7cEnBo="; types-aiobotocore-license-manager-linux-subscriptions = - buildTypesAiobotocorePackage "license-manager-linux-subscriptions" "2.15.1" - "sha256-uD/N/ueijWNwibOrivY0r2HiQjYOuHQUONcW3iRCVUY="; + buildTypesAiobotocorePackage "license-manager-linux-subscriptions" "2.15.2" + "sha256-u4pZBE0deFVSfZ4B5LXXXOBDb/SkpnCTi1pHQ7ZVyb0="; types-aiobotocore-license-manager-user-subscriptions = - buildTypesAiobotocorePackage "license-manager-user-subscriptions" "2.15.1" - "sha256-wWghsiPCvWY7VX5XV0ad65nnG9bI5F+E5xEUzOGDdnY="; + buildTypesAiobotocorePackage "license-manager-user-subscriptions" "2.15.2" + "sha256-Ldd8K7DIjE0cNqvdWWVno2ehVzmtdt9IyLdUKuM1k5k="; types-aiobotocore-lightsail = - buildTypesAiobotocorePackage "lightsail" "2.15.1" - "sha256-dcGUPUxGvD/ZEyoo193VVOhSJhoFkgwSjpOV1kX/vMM="; + buildTypesAiobotocorePackage "lightsail" "2.15.2" + "sha256-Odx5WGYh8Xlv6ahMuNjj3XzXftrKQdILAoGMoDz9aBQ="; types-aiobotocore-location = - buildTypesAiobotocorePackage "location" "2.15.1" - "sha256-4rTqmcRB3HjskWJZLbQaPDyNQGHXmVVJqb5LK+EPH6Y="; + buildTypesAiobotocorePackage "location" "2.15.2" + "sha256-KjQ02j1x55qp+6RA1pWe4z53rUgd0Z59dp4vjHVSwlY="; types-aiobotocore-logs = - buildTypesAiobotocorePackage "logs" "2.15.1" - "sha256-CRluCc0/byuRlGr3uQyWg/MfCpPnoiS5inNLiYkhwCY="; + buildTypesAiobotocorePackage "logs" "2.15.2" + "sha256-4cxlv7ZSVy92Ewm5jgjqAXRKjFOczaYhl74zR+wGltU="; types-aiobotocore-lookoutequipment = - buildTypesAiobotocorePackage "lookoutequipment" "2.15.1" - "sha256-q5ExCn4HAdAGISDIRckrnlmQ+J1RDNgBa5hmYSJHtVc="; + buildTypesAiobotocorePackage "lookoutequipment" "2.15.2" + "sha256-gEmhfU9rLE2hFRumda25SSBqhgOgZFza0lPiN+z6sGs="; types-aiobotocore-lookoutmetrics = - buildTypesAiobotocorePackage "lookoutmetrics" "2.15.1" - "sha256-SvJor9naL/MzyTtHjOn2QMNnLYXnmHYH11DuWg0+y/U="; + buildTypesAiobotocorePackage "lookoutmetrics" "2.15.2" + "sha256-VN3E+UkX8wvQqY3J5SSIfCcpDM/wfuqMvX6KbMUfFkU="; types-aiobotocore-lookoutvision = - buildTypesAiobotocorePackage "lookoutvision" "2.15.1" - "sha256-68PGFV+fSjjwAq4SoiOAaJXw1jKdQegFgz2UeHV9iL8="; + buildTypesAiobotocorePackage "lookoutvision" "2.15.2" + "sha256-6Tpk8lEKtYjIiXNI1VgH65RkCc6/Cp9qhB/5NHtl0ok="; types-aiobotocore-m2 = - buildTypesAiobotocorePackage "m2" "2.15.1" - "sha256-TrP432QWYmAmnka3CiWklZh3g/xrLhGJVw8iWLR5f8E="; + buildTypesAiobotocorePackage "m2" "2.15.2" + "sha256-ZK+mMbIaY2BmeZU0P4GTMcbTcUOJ1k0ErkRTDu/LdeQ="; types-aiobotocore-machinelearning = - buildTypesAiobotocorePackage "machinelearning" "2.15.1" - "sha256-0+nIbuZeuKIhQiC2+kSaDztMLOUe9rZ+guDROGM+YI4="; + buildTypesAiobotocorePackage "machinelearning" "2.15.2" + "sha256-CkcJc43D+K24tN+MO48iIpkWINQ5v39Us6XiAerY5ug="; types-aiobotocore-macie = buildTypesAiobotocorePackage "macie" "2.7.0" "sha256-hJJtGsK2b56nKX1ZhiarC+ffyjHYWRiC8II4oyDZWWw="; types-aiobotocore-macie2 = - buildTypesAiobotocorePackage "macie2" "2.15.1" - "sha256-lJq53Sxg+RpZSeQKG+nu0EhRQEEUSPoWqiORJUcoqEI="; + buildTypesAiobotocorePackage "macie2" "2.15.2" + "sha256-XVUlAYWbCKlIHDD0KnAf1x5aIzPQOwDF/MUf2Cn0w2E="; types-aiobotocore-managedblockchain = - buildTypesAiobotocorePackage "managedblockchain" "2.15.1" - "sha256-RZUktF80I0PXhIPEZJav1i1a4FyFSyHODTeUsIcDHGE="; + buildTypesAiobotocorePackage "managedblockchain" "2.15.2" + "sha256-bS54O33UB62+P6Lz+u4zzBDMP/dGG0EQYzJwabrLEzE="; types-aiobotocore-managedblockchain-query = - buildTypesAiobotocorePackage "managedblockchain-query" "2.15.1" - "sha256-xmPCGjlO0EThkhUWy+VlHLplAx7f7+zXKzr5hb/1e6A="; + buildTypesAiobotocorePackage "managedblockchain-query" "2.15.2" + "sha256-tI0WjxdRupLqL437/Q9W7Yd6PEzU2GBsfAGU/3UssG8="; types-aiobotocore-marketplace-catalog = - buildTypesAiobotocorePackage "marketplace-catalog" "2.15.1" - "sha256-OJeNrERgHfCYfgpn+DMmo7ZgUujg5G3bQpedipAxbX4="; + buildTypesAiobotocorePackage "marketplace-catalog" "2.15.2" + "sha256-L23ZQ4bGhQtHat3xWT/IIbrTr4UnZ1wY2Cco9Z4ae4s="; types-aiobotocore-marketplace-entitlement = - buildTypesAiobotocorePackage "marketplace-entitlement" "2.15.1" - "sha256-0tSQ1wnz7R7KaRVsoNGeUcbmf4cRBrUMArCEEDJRrtc="; + buildTypesAiobotocorePackage "marketplace-entitlement" "2.15.2" + "sha256-7SXKNz2Lz2aewLAcKVvuIZShdGCRHZbwyKy2araKo3A="; types-aiobotocore-marketplacecommerceanalytics = - buildTypesAiobotocorePackage "marketplacecommerceanalytics" "2.15.1" - "sha256-gq//bvGswyJgLHypO0vC0rUruMvr5DH0TQPgxb6Xkrc="; + buildTypesAiobotocorePackage "marketplacecommerceanalytics" "2.15.2" + "sha256-qbAaQevFItdsIk7Je5ng9EMrTgVRfMmSmCeYSH7BXMY="; types-aiobotocore-mediaconnect = - buildTypesAiobotocorePackage "mediaconnect" "2.15.1" - "sha256-E0hjBGm+mIW0wG8kdLAhXc4BzMzJK4gESiyS2xVIEpU="; + buildTypesAiobotocorePackage "mediaconnect" "2.15.2" + "sha256-DwyW/Lz2TcJUpS21SZAJCZR9nySSFN7/k4Hwea51QDo="; types-aiobotocore-mediaconvert = - buildTypesAiobotocorePackage "mediaconvert" "2.15.1" - "sha256-bHWlDRHqZ6vYcsM01peSdcQ5oqvSGiG/UHWlOinT1QQ="; + buildTypesAiobotocorePackage "mediaconvert" "2.15.2" + "sha256-xEi7pQSuq7vkcGrZx7/LSHDiGc0yRy5yDLB+R1Sw9i4="; types-aiobotocore-medialive = - buildTypesAiobotocorePackage "medialive" "2.15.1" - "sha256-PrQPNUQI065kb8+ihArJOroydrAbOhFdS2yzq55nTKw="; + buildTypesAiobotocorePackage "medialive" "2.15.2" + "sha256-XejVpsX2j0u2TTB7y/ZkwCeBhKLQOpCuJm0BL88ocAg="; types-aiobotocore-mediapackage = - buildTypesAiobotocorePackage "mediapackage" "2.15.1" - "sha256-2/pUMsZsuW44TpNCdtciCJ9z+Z7aREyBMBIFdV80lgU="; + buildTypesAiobotocorePackage "mediapackage" "2.15.2" + "sha256-SxNd+WdyHA0ijqV3urXldQXeMew19EUydNArzMdHSZk="; types-aiobotocore-mediapackage-vod = - buildTypesAiobotocorePackage "mediapackage-vod" "2.15.1" - "sha256-QIaQ06qrpPa4nb7PgOyhbYH1Oz1KL1dwwy6/D60tgKk="; + buildTypesAiobotocorePackage "mediapackage-vod" "2.15.2" + "sha256-OaJv/gY2yhR6rMstJx88NQY/IBO9NxqleUY4gfq5dd0="; types-aiobotocore-mediapackagev2 = - buildTypesAiobotocorePackage "mediapackagev2" "2.15.1" - "sha256-+YxeyUt3GqsliHI/T8ZMxfweAhnAXWHLxBZSNbmPVDg="; + buildTypesAiobotocorePackage "mediapackagev2" "2.15.2" + "sha256-8mQbc9Wp8PvcyHocdcR9VS1jyJYGnwCuB4qk1iGq4DA="; types-aiobotocore-mediastore = - buildTypesAiobotocorePackage "mediastore" "2.15.1" - "sha256-09o+YQysUdNGoNT+IXaPIOCSHUxYFXezjxTvqPPWBNo="; + buildTypesAiobotocorePackage "mediastore" "2.15.2" + "sha256-HvMe5b/WoUL6osOakD4z3fGfC5dPWphZFXijpqVL4tk="; types-aiobotocore-mediastore-data = - buildTypesAiobotocorePackage "mediastore-data" "2.15.1" - "sha256-yDovPCnikCe4qHPCyZPZEu7UlIHLW59EySO3xValmgw="; + buildTypesAiobotocorePackage "mediastore-data" "2.15.2" + "sha256-FqbPAwpzikmawdrNa1/R0SGj0G4WqGRxBT6xceJHX1A="; types-aiobotocore-mediatailor = - buildTypesAiobotocorePackage "mediatailor" "2.15.1" - "sha256-BnrpdnphOkjk9D3MuhMEEBFL08NZE140o4+VR1Rp4O4="; + buildTypesAiobotocorePackage "mediatailor" "2.15.2" + "sha256-iHjBmnvn2Rzo62Ep1bjJoZKNVGArtwxdOZoT1+SneqE="; types-aiobotocore-medical-imaging = - buildTypesAiobotocorePackage "medical-imaging" "2.15.1" - "sha256-6ona+KE489SPJSlokzwpiqERuBgWjqIYofh1rUmeKwo="; + buildTypesAiobotocorePackage "medical-imaging" "2.15.2" + "sha256-UXzTpoFnuJQRwJfahcWSfYO9lWuEP9W+CZWiGdiupPQ="; types-aiobotocore-memorydb = - buildTypesAiobotocorePackage "memorydb" "2.15.1" - "sha256-lYBb737JcKQa5cKm94O1C/psjuRNFFNftn3dctUeOnQ="; + buildTypesAiobotocorePackage "memorydb" "2.15.2" + "sha256-lFetqAmP6lwKTmJEhS1wcydBgePh4/hhkq/ngHAqxHw="; types-aiobotocore-meteringmarketplace = - buildTypesAiobotocorePackage "meteringmarketplace" "2.15.1" - "sha256-9Z5s03sTVEzzXO43CTuf+YICuXisAZ/OGFyH44KOuF8="; + buildTypesAiobotocorePackage "meteringmarketplace" "2.15.2" + "sha256-wT3cz2FprMmyhag/0ZODuHFiB+qKD6LKvehs8PWP8m4="; types-aiobotocore-mgh = - buildTypesAiobotocorePackage "mgh" "2.15.1" - "sha256-Oqi4SM+L1FQLs0jfyWXILG/XHs5X5K+5jvGcIr76OeY="; + buildTypesAiobotocorePackage "mgh" "2.15.2" + "sha256-uxukwGScWYD2oCXu8vPu6o2BJiLtnMuIXIgqXFF5VGA="; types-aiobotocore-mgn = - buildTypesAiobotocorePackage "mgn" "2.15.1" - "sha256-RqvU6K50yGzVQBSzS90htrFOScpondnyceN3ISshYlI="; + buildTypesAiobotocorePackage "mgn" "2.15.2" + "sha256-lXlNAFEQbteRMGiOfSpBF1AF12UYjc64sXaOVN6KZRg="; types-aiobotocore-migration-hub-refactor-spaces = - buildTypesAiobotocorePackage "migration-hub-refactor-spaces" "2.15.1" - "sha256-j4LVmlaI8tuJxjkweiZRWgnYlR5p/M2u8JSkMg3Yufs="; + buildTypesAiobotocorePackage "migration-hub-refactor-spaces" "2.15.2" + "sha256-Ndj1DdPIam1NG5zAzKJkilE0TDHGykywc2hpxvWNyPY="; types-aiobotocore-migrationhub-config = - buildTypesAiobotocorePackage "migrationhub-config" "2.15.1" - "sha256-yQDw0I8jlsVpL8MSerOV66yRdCE5ik7R/v+rkBAzKrk="; + buildTypesAiobotocorePackage "migrationhub-config" "2.15.2" + "sha256-LXu7VQkVpgqIMD7ucMV4Kj/Zv6FoFDvLX8rYjtO2ijg="; types-aiobotocore-migrationhuborchestrator = - buildTypesAiobotocorePackage "migrationhuborchestrator" "2.15.1" - "sha256-2XxADXGruMbzM50bElDkwlKQZ/r+6HPhMOjj8InGOlM="; + buildTypesAiobotocorePackage "migrationhuborchestrator" "2.15.2" + "sha256-Te1jZDw3UjMBM6DlCj38Nn42xRt86WzHGaJnjbobDMs="; types-aiobotocore-migrationhubstrategy = - buildTypesAiobotocorePackage "migrationhubstrategy" "2.15.1" - "sha256-+VYnuMVf16mrgMJ5DMqdy6CPLGavuA0gUW1kv9Uu9rs="; + buildTypesAiobotocorePackage "migrationhubstrategy" "2.15.2" + "sha256-IkE/I9X6FXqNBsMUM2/lQ2SVIIaY8PtAyx0d4XA94BE="; types-aiobotocore-mobile = buildTypesAiobotocorePackage "mobile" "2.13.2" "sha256-OxB91BCAmYnY72JBWZaBlEkpAxN2Q5aY4i1Pt3eD9hc="; types-aiobotocore-mq = - buildTypesAiobotocorePackage "mq" "2.15.1" - "sha256-2WEJoWXSfDmFl9liWtIaviLnAHgRA5dAamQx1YfXgzE="; + buildTypesAiobotocorePackage "mq" "2.15.2" + "sha256-VY6tLjwGYbJte8xoit/gIVuMSGkygYhpGrCVwmkcD+c="; types-aiobotocore-mturk = - buildTypesAiobotocorePackage "mturk" "2.15.1" - "sha256-TK9wWp3GEHhn4jypBdQEeJZp31IvKFFTuSLKxqxZoNU="; + buildTypesAiobotocorePackage "mturk" "2.15.2" + "sha256-wmnepAFZGXOk6+/G0XToAQBxPyrtmyGIl9DYcaQIwrI="; types-aiobotocore-mwaa = - buildTypesAiobotocorePackage "mwaa" "2.15.1" - "sha256-E1sWcLfHIlFelP3vb0yfhRpcyboyIutPrF3ByCNJITQ="; + buildTypesAiobotocorePackage "mwaa" "2.15.2" + "sha256-sjXYuZf6yffeiu4A/FYXebGTFr408e7QKNmML2y2yTA="; types-aiobotocore-neptune = - buildTypesAiobotocorePackage "neptune" "2.15.1" - "sha256-EtmxI6j5SlZZcv+YYsDki6VcMdRhZWEoJVT5VDFV/0g="; + buildTypesAiobotocorePackage "neptune" "2.15.2" + "sha256-hpnEfol8cLYk8AuIaBRitNIJoEMv1jvWzNED1b4xqfA="; types-aiobotocore-network-firewall = - buildTypesAiobotocorePackage "network-firewall" "2.15.1" - "sha256-xiDYqvt2e7MiAe8nCQR51q5Ov8B94eYJhQgN+lvFDuA="; + buildTypesAiobotocorePackage "network-firewall" "2.15.2" + "sha256-rMaMUBlbxJKeRIX/eEKtYrO0mXiDdWyZ0x4GfoDw2iY="; types-aiobotocore-networkmanager = - buildTypesAiobotocorePackage "networkmanager" "2.15.1" - "sha256-0SFOWAIckxRoWupRztC50CkOKqtUuxdNnM44SnPLYwQ="; + buildTypesAiobotocorePackage "networkmanager" "2.15.2" + "sha256-JbN4suHNPpgGnkz4HnEmZXF4HMVnzMDd9DO6/xnzOgo="; types-aiobotocore-nimble = - buildTypesAiobotocorePackage "nimble" "2.15.1" - "sha256-Hz6tsIdCcx5vzwD0PDmPKSpjqYEYENAiZz7WuZC9Ago="; + buildTypesAiobotocorePackage "nimble" "2.15.2" + "sha256-PChX5Jbgr0d1YaTZU9AbX3cM7NrhkyunK6/X3l+I8Q0="; types-aiobotocore-oam = - buildTypesAiobotocorePackage "oam" "2.15.1" - "sha256-abqiY/pGLnV7UzoojcX5aaUtKC//y5UFYG8XoS9hJgM="; + buildTypesAiobotocorePackage "oam" "2.15.2" + "sha256-VYimOD1qzkRxpieACK1D5Flm1jTMLEkbiRhOczOPiCw="; types-aiobotocore-omics = - buildTypesAiobotocorePackage "omics" "2.15.1" - "sha256-5k0LPHH0qUlEEAV6ASredhR65Phs0133c37N+YB+tcY="; + buildTypesAiobotocorePackage "omics" "2.15.2" + "sha256-NjwwQvLdS4yaH+0lWiO3WdCbYkEm7Xy+WDZ0fZv0iO4="; types-aiobotocore-opensearch = - buildTypesAiobotocorePackage "opensearch" "2.15.1" - "sha256-4VqaoYwKkNckmb4BZDbWPLeEVa7tCxBD8g6pGQrr0Ng="; + buildTypesAiobotocorePackage "opensearch" "2.15.2" + "sha256-P/5KsryA4IRZ2B8Jvyb4UyhBwIrxAdR1Z1C0KfPgurQ="; types-aiobotocore-opensearchserverless = - buildTypesAiobotocorePackage "opensearchserverless" "2.15.1" - "sha256-80E81Kv3FzkgGQvpVHxmYqnNIRtureOvIDmKdnUo7z4="; + buildTypesAiobotocorePackage "opensearchserverless" "2.15.2" + "sha256-kshUKyoAIgVyIMntWuCrAD+WZ9usxXH1k78y/DqTWvc="; types-aiobotocore-opsworks = - buildTypesAiobotocorePackage "opsworks" "2.15.1" - "sha256-bAAgU0b33CNXVK0Q9ynyPGbL5KBiQq6sT/mL1pWJpD0="; + buildTypesAiobotocorePackage "opsworks" "2.15.2" + "sha256-KJfyFi4FHoqicPmLnsknrR0Bs2rXiM5fNneR2i9SG6E="; types-aiobotocore-opsworkscm = - buildTypesAiobotocorePackage "opsworkscm" "2.15.1" - "sha256-nVywDMlzkITUEW7K6FWoYz953wAqCiUemT0tu48yO6M="; + buildTypesAiobotocorePackage "opsworkscm" "2.15.2" + "sha256-T+JObJ+jB48uaS39I68YyDxggoWiMj/8Di1PzDCQChU="; types-aiobotocore-organizations = - buildTypesAiobotocorePackage "organizations" "2.15.1" - "sha256-N7VzNLh+LCFrfdgmO982cau3B/d5uGoGO43vMMpTNBs="; + buildTypesAiobotocorePackage "organizations" "2.15.2" + "sha256-6TYjbdnUOCc29kWZ3RsdscEK40uS0q5fcwhVAZ46yKQ="; types-aiobotocore-osis = - buildTypesAiobotocorePackage "osis" "2.15.1" - "sha256-NpjX3LpbF1CajlqY9ow4GqCVjlrTBVT1U/Gn3wHSQTE="; + buildTypesAiobotocorePackage "osis" "2.15.2" + "sha256-zRFrveWqmZ67/Cb8vnmgUCwVgt9oUn9qS8YegKqKwCw="; types-aiobotocore-outposts = - buildTypesAiobotocorePackage "outposts" "2.15.1" - "sha256-lFRMsg9LhjizD8NsSyK209h+xtvYgTmJf5lc3OQyqdY="; + buildTypesAiobotocorePackage "outposts" "2.15.2" + "sha256-+Pa7Gy+7aend87amJsaob24WXQWdrpA+Tj17dnrEFaQ="; types-aiobotocore-panorama = - buildTypesAiobotocorePackage "panorama" "2.15.1" - "sha256-mdhrS+4Cg2VgH5AWroB2i5Pe6LEFfn9J9rEe+UQovxQ="; + buildTypesAiobotocorePackage "panorama" "2.15.2" + "sha256-7BW09/NkN4AFwR8qhvTs8nYSflG9cozyPFIpS8/Y6FQ="; types-aiobotocore-payment-cryptography = - buildTypesAiobotocorePackage "payment-cryptography" "2.15.1" - "sha256-Lddnm936PSivXBygA44rgyd5wyPoPDns5XIYbQfQ91g="; + buildTypesAiobotocorePackage "payment-cryptography" "2.15.2" + "sha256-4tNGI26K1ejnLwfsCOU0Iy8JiQyjMmDsn6JP9RMG5MI="; types-aiobotocore-payment-cryptography-data = - buildTypesAiobotocorePackage "payment-cryptography-data" "2.15.1" - "sha256-jTgsyYOLrTYNEfyhotGbbTrlQkTKqmd/0uKOMvmm06U="; + buildTypesAiobotocorePackage "payment-cryptography-data" "2.15.2" + "sha256-ZXVhYvin2ZjjusSXkg3byqW5QHtFEyd1uufi9nWvutM="; types-aiobotocore-personalize = - buildTypesAiobotocorePackage "personalize" "2.15.1" - "sha256-RULc20Hv5VUT+MO1/hj+LlsdL88c1KuChWjzYY150Xs="; + buildTypesAiobotocorePackage "personalize" "2.15.2" + "sha256-3CPcx8rP6N59eoooZej/qcySZYIiRl7j8B96KB9CD7s="; types-aiobotocore-personalize-events = - buildTypesAiobotocorePackage "personalize-events" "2.15.1" - "sha256-3gl7NVGwfh1jy8VewE76+Pe/cPKQitdnC3JAau1S9dE="; + buildTypesAiobotocorePackage "personalize-events" "2.15.2" + "sha256-jW4ZIOw2dPuebRyaQzl/aV5X5g3d+HyR96nK15KabKA="; types-aiobotocore-personalize-runtime = - buildTypesAiobotocorePackage "personalize-runtime" "2.15.1" - "sha256-XnuLw62YOZN+EwJ6b1ZQCOwhIqzE8ntkrgmuqTY62vw="; + buildTypesAiobotocorePackage "personalize-runtime" "2.15.2" + "sha256-hQiddMrXRgWmQjIiytIIk3S3hYAyiSyM5wfGQ/PQtuo="; types-aiobotocore-pi = - buildTypesAiobotocorePackage "pi" "2.15.1" - "sha256-g8pzgnV5puJSLogXJrQn1zhYiOB7446R4xkxOQCwqSY="; + buildTypesAiobotocorePackage "pi" "2.15.2" + "sha256-S+Zf7VW+F1x4gnWVYJyTyvA/31mfBlHvVtDiSokuCEo="; types-aiobotocore-pinpoint = - buildTypesAiobotocorePackage "pinpoint" "2.15.1" - "sha256-gZJM4c3tSilImlxeKWU3szTmpnXxpS6kAvF/zKXglFQ="; + buildTypesAiobotocorePackage "pinpoint" "2.15.2" + "sha256-ajqWceNuGO3+ABzNi5rFook4tdWo7diCkfYIaNnCnqI="; types-aiobotocore-pinpoint-email = - buildTypesAiobotocorePackage "pinpoint-email" "2.15.1" - "sha256-eXcDiAQjLAObgX3gfGtlVL6BNK8fq81f70tPNNcKJJ8="; + buildTypesAiobotocorePackage "pinpoint-email" "2.15.2" + "sha256-pMgodwm9Ihz99d/C+hP5Z5ZxSA9WQ5sOJu407j6w+9s="; types-aiobotocore-pinpoint-sms-voice = - buildTypesAiobotocorePackage "pinpoint-sms-voice" "2.15.1" - "sha256-OPJiALIiUDioRjXkeLtksPBMlmsUpIRsZtuoTESnKpU="; + buildTypesAiobotocorePackage "pinpoint-sms-voice" "2.15.2" + "sha256-8E6frTBvs14nYtfhaWi+/5HTDhNGWcHMAktQ+DhARdY="; types-aiobotocore-pinpoint-sms-voice-v2 = - buildTypesAiobotocorePackage "pinpoint-sms-voice-v2" "2.15.1" - "sha256-SN3dXMpqcuJcWnpeUi4Jwtat9erU0KdSjfEbyf8pHXc="; + buildTypesAiobotocorePackage "pinpoint-sms-voice-v2" "2.15.2" + "sha256-WWwFEhAEls6dVX9WNZrWywV4egtd1bt5n3pOCEb1p00="; types-aiobotocore-pipes = - buildTypesAiobotocorePackage "pipes" "2.15.1" - "sha256-Ru3j6tm6I+wtpKzkxBSFCfAleI52WnOSqgvlCIla9fE="; + buildTypesAiobotocorePackage "pipes" "2.15.2" + "sha256-5QD0FgHLNbU9BnppJtB7RKMg9cdOz0ILkF/gkR7igs4="; types-aiobotocore-polly = - buildTypesAiobotocorePackage "polly" "2.15.1" - "sha256-U9FwTzLVdE0UbAMTjMjrIMlRVlkuQRzKiIEd7ZepOWA="; + buildTypesAiobotocorePackage "polly" "2.15.2" + "sha256-r6onIkXMgieQ9xtjuaGsQqq52OOq6k/DUz3jO5uYi6U="; types-aiobotocore-pricing = - buildTypesAiobotocorePackage "pricing" "2.15.1" - "sha256-FEzR+YjEGFKWbihsat2gaDp87fdIPDCmeRv79U08fFo="; + buildTypesAiobotocorePackage "pricing" "2.15.2" + "sha256-5IvT+CsBX3WBfz0f2CVGAtal+SprCAqO7CGKOwSLpLQ="; types-aiobotocore-privatenetworks = - buildTypesAiobotocorePackage "privatenetworks" "2.15.1" - "sha256-7OB4PIbZDsnXqLp+9cXd5ER5QIkUpjtJk+A+jT0286Y="; + buildTypesAiobotocorePackage "privatenetworks" "2.15.2" + "sha256-gfnx+RgpiZCtLmIPWuc3Lz5JM+IgxMsAKvOqxiwJmew="; types-aiobotocore-proton = - buildTypesAiobotocorePackage "proton" "2.15.1" - "sha256-MBUaIQIThP+JZHbVAU5r0yCHQs13wLAU87y1gRECFHU="; + buildTypesAiobotocorePackage "proton" "2.15.2" + "sha256-MGL3z4ULEon/EjSCLuN2sB6tAepic+ZG+vVAani6qpQ="; types-aiobotocore-qldb = - buildTypesAiobotocorePackage "qldb" "2.15.1" - "sha256-yES1WELzrI3Xz0F4S7y3NajtNTQO10S3hi+pQsZ4KVE="; + buildTypesAiobotocorePackage "qldb" "2.15.2" + "sha256-dX2wLRIg977khlZoVYd9y1UzRMLDorIBHvOhXX2r+KI="; types-aiobotocore-qldb-session = - buildTypesAiobotocorePackage "qldb-session" "2.15.1" - "sha256-ISAoyu08TEXIr2VONRLIvRDaAOazDPEtPp66/CnmHv8="; + buildTypesAiobotocorePackage "qldb-session" "2.15.2" + "sha256-omOG7aWjTBdIHElYE14X7DyQKBNGY5yfOg4IeiL0ooo="; types-aiobotocore-quicksight = - buildTypesAiobotocorePackage "quicksight" "2.15.1" - "sha256-eruqWUL7Yje7OJlV1arhKInqnXChEmI49nq75j4ZOrg="; + buildTypesAiobotocorePackage "quicksight" "2.15.2" + "sha256-U+151xlZAGz+JgIJD/mU9C1z85UCimqOubaX3x/0nhg="; types-aiobotocore-ram = - buildTypesAiobotocorePackage "ram" "2.15.1" - "sha256-/7+C/b51gkVW8QXyXg/5b1vzvTtZXS5ts9K6PWXAZU4="; + buildTypesAiobotocorePackage "ram" "2.15.2" + "sha256-lp2oA2JBXSgniu5MJR6F+HeSczlc+w4wj7zyPggA6dY="; types-aiobotocore-rbin = - buildTypesAiobotocorePackage "rbin" "2.15.1" - "sha256-/joJicKfFNQhy24zZp6vM/EmGZGBTwPTQ8w8KHv6CF0="; + buildTypesAiobotocorePackage "rbin" "2.15.2" + "sha256-sFrrTWJkFCMkF4gxH3nQvctzMag234P3gN0tKyvvZrE="; types-aiobotocore-rds = - buildTypesAiobotocorePackage "rds" "2.15.1" - "sha256-btYigxx5bnWll5u0IHDVpciY4ZV9dOxPDKReEv1i0AM="; + buildTypesAiobotocorePackage "rds" "2.15.2" + "sha256-lz03bzDbmAvjc0s5hKeuOohycOcj1wAZsePeWYGp5ts="; types-aiobotocore-rds-data = - buildTypesAiobotocorePackage "rds-data" "2.15.1" - "sha256-Kn4uM9F1UkiWGshjX62WD5qROnnTw6TgG4bPv9EWz4A="; + buildTypesAiobotocorePackage "rds-data" "2.15.2" + "sha256-WTb2V9H5MmEtDsboJmQPoRLRNWCL1Ot+myoRRBpDphw="; types-aiobotocore-redshift = - buildTypesAiobotocorePackage "redshift" "2.15.1" - "sha256-cOu5LEVvs1VdXyfgtM7PYzIUsNN1l//gHTiY0ArmFf0="; + buildTypesAiobotocorePackage "redshift" "2.15.2" + "sha256-ErKPn+GGiujvvRps8FIY+QRo0ycQQ4t8tYE64iwqrw8="; types-aiobotocore-redshift-data = - buildTypesAiobotocorePackage "redshift-data" "2.15.1" - "sha256-9A4p2lohJEhOcL868mMJcmmjYSS8Gd/5ShbkvTunDQs="; + buildTypesAiobotocorePackage "redshift-data" "2.15.2" + "sha256-bxQv1ESSEBG3elReQbKurlEv3jMrfdztBbn7kIwrlJk="; types-aiobotocore-redshift-serverless = - buildTypesAiobotocorePackage "redshift-serverless" "2.15.1" - "sha256-s+maghPzS18nSG+ozOp/hKQJRHZHwPhsASqUXaOs6Pk="; + buildTypesAiobotocorePackage "redshift-serverless" "2.15.2" + "sha256-EyciPvrLkG0maSoyVFRkV1gA30vPF+MybM0j4gtwjwA="; types-aiobotocore-rekognition = - buildTypesAiobotocorePackage "rekognition" "2.15.1" - "sha256-aLCYGd8+LIgHxsR8Qr+rrruL5JERkn1etCL3o/A8sZw="; + buildTypesAiobotocorePackage "rekognition" "2.15.2" + "sha256-dqoAVV2zwCwgfIBb72gLSXminPq4FgPYYzZlzxumkrY="; types-aiobotocore-resiliencehub = - buildTypesAiobotocorePackage "resiliencehub" "2.15.1" - "sha256-e8WN5g/vbWaYSNMZS43GOkdx6AFL15cPUvZn0Ufsvqk="; + buildTypesAiobotocorePackage "resiliencehub" "2.15.2" + "sha256-o8TBetwKqzHJj7ISkhgX9iPpt8CvZ5M3LFYmfEqmCDI="; types-aiobotocore-resource-explorer-2 = - buildTypesAiobotocorePackage "resource-explorer-2" "2.15.1" - "sha256-/WiO9zp/YK8+2p97cbY5GwQcb1XB5i86QBlXERTDxk8="; + buildTypesAiobotocorePackage "resource-explorer-2" "2.15.2" + "sha256-hQ+Jc8m4q7Q7zHSJyCL62ugAMNeFLbEA8LJ6VQ9LVHo="; types-aiobotocore-resource-groups = - buildTypesAiobotocorePackage "resource-groups" "2.15.1" - "sha256-hGUdTC5ksWqneEqIROSc3XqYANVrtL2caM+OqTVnlcw="; + buildTypesAiobotocorePackage "resource-groups" "2.15.2" + "sha256-T1gIcrRPXWbfzYReB/MBLcYUjUhiDqbcah/kGKx6g9s="; types-aiobotocore-resourcegroupstaggingapi = - buildTypesAiobotocorePackage "resourcegroupstaggingapi" "2.15.1" - "sha256-zJvPU3lXoxxw1LF0HkPTfO7d62Q0mTCuqGKQT/8LbPQ="; + buildTypesAiobotocorePackage "resourcegroupstaggingapi" "2.15.2" + "sha256-fa/EoxdXi5Vd0R2eHexVx9PSiesVyw/0okGpHIGd7I8="; types-aiobotocore-robomaker = - buildTypesAiobotocorePackage "robomaker" "2.15.1" - "sha256-X1hQ7pzhlsD9AcD2JdM/1u9W8PGRFnJaWhArHhZLPrk="; + buildTypesAiobotocorePackage "robomaker" "2.15.2" + "sha256-ShnMPJzy/isQNqwYiBBb3B7tEr/ydi6weW/J+Bu6XoU="; types-aiobotocore-rolesanywhere = - buildTypesAiobotocorePackage "rolesanywhere" "2.15.1" - "sha256-VjjHrGv8GuQ+4Fd8meBih98YxFpVChvusBZDKJ7jvAA="; + buildTypesAiobotocorePackage "rolesanywhere" "2.15.2" + "sha256-Td97qtNPStvbV/1vILYZ/TTtpngndk/7s1wAORakKeQ="; types-aiobotocore-route53 = - buildTypesAiobotocorePackage "route53" "2.15.1" - "sha256-p1N0+9s+QDRoSkgiRtsmyGrxmse405CDwuPW10r2TFY="; + buildTypesAiobotocorePackage "route53" "2.15.2" + "sha256-olwrQiY0EOvIJMFX/wQKT1dKzIGDlOEMrqvx2cVxOCA="; types-aiobotocore-route53-recovery-cluster = - buildTypesAiobotocorePackage "route53-recovery-cluster" "2.15.1" - "sha256-L27J6hqxLMwxm8r2DK3xc7LrtNOgt5HSBE/YsjqH9c8="; + buildTypesAiobotocorePackage "route53-recovery-cluster" "2.15.2" + "sha256-T1kYpmeMmvQOZkxqeCDbab2HNFBcX7I7wc28gB66UHU="; types-aiobotocore-route53-recovery-control-config = - buildTypesAiobotocorePackage "route53-recovery-control-config" "2.15.1" - "sha256-njXhqJ+7xnxabYnNqknXA67I2J88jxHk9oErziic1FU="; + buildTypesAiobotocorePackage "route53-recovery-control-config" "2.15.2" + "sha256-/yWRQIwfwZjkDooNl3GmbGrlxD1vSTk/2NrrQpG3IJc="; types-aiobotocore-route53-recovery-readiness = - buildTypesAiobotocorePackage "route53-recovery-readiness" "2.15.1" - "sha256-U0jzrXqfz/X/Dg1S03/is/xkQwIO9ICwg5s/YYImBf4="; + buildTypesAiobotocorePackage "route53-recovery-readiness" "2.15.2" + "sha256-1+TJUQ5LPWnHDcR41at5C5lKf92euYVer6BXLfs8r3A="; types-aiobotocore-route53domains = - buildTypesAiobotocorePackage "route53domains" "2.15.1" - "sha256-PL1oQYboRsEDlCACZ/f+WORfaj/3pv05XyyZf118cl0="; + buildTypesAiobotocorePackage "route53domains" "2.15.2" + "sha256-xsAKhJBxAWzhCP2lUwcQ9jp4M/Av0nOae+ToMG4p1hQ="; types-aiobotocore-route53resolver = - buildTypesAiobotocorePackage "route53resolver" "2.15.1" - "sha256-P4Iq5h9zo7y0UIcwLml8cCjjP5wKgtxP2EX3KTVPobw="; + buildTypesAiobotocorePackage "route53resolver" "2.15.2" + "sha256-JNzO/R8OfmPhpPBCt2YIS420mXAuKadpB+/h8r1VccY="; types-aiobotocore-rum = - buildTypesAiobotocorePackage "rum" "2.15.1" - "sha256-3WO3zTqIDqRR+bkAdsEg8KxruV43uUKGV86c+7jAKgw="; + buildTypesAiobotocorePackage "rum" "2.15.2" + "sha256-KEjeiHaU2MjBHxDJzFgIZtsfnj/7vEzlixeAu8+KRm4="; types-aiobotocore-s3 = - buildTypesAiobotocorePackage "s3" "2.15.1" - "sha256-nm1iUImUWba9BNV0JUKC1uYWxiFTKLCw3vUBsuqd188="; + buildTypesAiobotocorePackage "s3" "2.15.2" + "sha256-Hr7IrJ3+a7+7OT6zTSkEdnBfq3aNKVjG0h2dv7dScs4="; types-aiobotocore-s3control = - buildTypesAiobotocorePackage "s3control" "2.15.1" - "sha256-VDIAA8d4/zv5pI1frk6tFZJ9qWtC29b9rZdIYN0YYLA="; + buildTypesAiobotocorePackage "s3control" "2.15.2" + "sha256-4kWotne4SnLV1rEvWJLw/jP+ZiL1BmHQ4uxj/QW2Hb4="; types-aiobotocore-s3outposts = - buildTypesAiobotocorePackage "s3outposts" "2.15.1" - "sha256-3IyAJHmya+ycc0do6H4NZnhn3Duhj/ITiW+b90x7d8o="; + buildTypesAiobotocorePackage "s3outposts" "2.15.2" + "sha256-Dfp04DBqhQBWEokBwtw/ALimFq6ZgzrrV5bZfgG9aQw="; types-aiobotocore-sagemaker = - buildTypesAiobotocorePackage "sagemaker" "2.15.1" - "sha256-kwB5VOix83ehKTJ6cXvR5aHO5ogYQvg3+CAnWEFll1k="; + buildTypesAiobotocorePackage "sagemaker" "2.15.2" + "sha256-jEAVncpRneLhQ7MN5sdwvRexiTXHBRLD1gfRng2LtXk="; types-aiobotocore-sagemaker-a2i-runtime = - buildTypesAiobotocorePackage "sagemaker-a2i-runtime" "2.15.1" - "sha256-qGMnLC7fZA+OEwZNbfCQMJFiwO0mf/1chvMFi0CpIco="; + buildTypesAiobotocorePackage "sagemaker-a2i-runtime" "2.15.2" + "sha256-4pAalrOg0umvRj/3xRDsziWl/wHPf+37NhOurtvLJd8="; types-aiobotocore-sagemaker-edge = - buildTypesAiobotocorePackage "sagemaker-edge" "2.15.1" - "sha256-oDvjSp0rQFBDclkyLifawL/hobIcT3RuNXS3IuJmG+4="; + buildTypesAiobotocorePackage "sagemaker-edge" "2.15.2" + "sha256-rCEEed2WVtd506aeYG+KX+ADuqwc3TuYIBO9aGzBjGM="; types-aiobotocore-sagemaker-featurestore-runtime = - buildTypesAiobotocorePackage "sagemaker-featurestore-runtime" "2.15.1" - "sha256-ynKSN7dB42JJw6DQOpLjwZXSrNvIgqfYrlEaXKE+agw="; + buildTypesAiobotocorePackage "sagemaker-featurestore-runtime" "2.15.2" + "sha256-y/5KuNWy3832PAvvPxcTFYrGeTS0SOA3cFM6oaQFGD8="; types-aiobotocore-sagemaker-geospatial = - buildTypesAiobotocorePackage "sagemaker-geospatial" "2.15.1" - "sha256-GW0b2GWrahRsWM9p/sS896CLotC4NlHC+Tyya4AbANs="; + buildTypesAiobotocorePackage "sagemaker-geospatial" "2.15.2" + "sha256-joXbxcuxaBX4Nl18oFhhSz5AXme0zVcpmw/vWoziNu4="; types-aiobotocore-sagemaker-metrics = - buildTypesAiobotocorePackage "sagemaker-metrics" "2.15.1" - "sha256-xT0K4NB2r9ajVEDgTr8tAPtUQLVwZj4/q/9lFxNoRy4="; + buildTypesAiobotocorePackage "sagemaker-metrics" "2.15.2" + "sha256-LgQn2sOOv7dV2XP87XcD5dz8ZulGK5Ny3wl/YLAAguU="; types-aiobotocore-sagemaker-runtime = - buildTypesAiobotocorePackage "sagemaker-runtime" "2.15.1" - "sha256-EKfd1G+A7T5A/7h+ZfWm+feD7VCEUU+RohAM8804Th8="; + buildTypesAiobotocorePackage "sagemaker-runtime" "2.15.2" + "sha256-YMgZ7YH3iTjE26HrcOCLLqs3FF+0f8Dil8t5bTA+gRo="; types-aiobotocore-savingsplans = - buildTypesAiobotocorePackage "savingsplans" "2.15.1" - "sha256-fpMpgVdydbNYhse3LemZWeu6pvLuXWYy7Nt3+CSedl0="; + buildTypesAiobotocorePackage "savingsplans" "2.15.2" + "sha256-FQaInT6mcJ+f0YooDo4vVJA7ZKrJv2w3Jg29L1GUe7U="; types-aiobotocore-scheduler = - buildTypesAiobotocorePackage "scheduler" "2.15.1" - "sha256-786gr8xrz39LVOuU0EYtyBhUxDbo3YEH5UXzmY4+xSo="; + buildTypesAiobotocorePackage "scheduler" "2.15.2" + "sha256-9HbcEJfpfXXSQvTtYXCN5cQSwisIk57OsF+MYecLFh0="; types-aiobotocore-schemas = - buildTypesAiobotocorePackage "schemas" "2.15.1" - "sha256-JUC3Sa94XRotK9rTelvMVG4TUQyrnVQ9Mdd+byd4A3w="; + buildTypesAiobotocorePackage "schemas" "2.15.2" + "sha256-SvenxkkMais2m/zfzdAehy6Dl5uOZpuBEWq8SWg1z6Q="; types-aiobotocore-sdb = - buildTypesAiobotocorePackage "sdb" "2.15.1" - "sha256-EV0eNjxdjT/JNuTip75SuCVDZfvQz71UbIgUHWfbakc="; + buildTypesAiobotocorePackage "sdb" "2.15.2" + "sha256-/RPhNimi1jEbPiHvJmtkvL/t1dlnYguQsQ2C3uvM9pA="; types-aiobotocore-secretsmanager = - buildTypesAiobotocorePackage "secretsmanager" "2.15.1" - "sha256-GW4y+JyGelERL39KPMOcF/7+pwGBuPwKhNwecBi5BBg="; + buildTypesAiobotocorePackage "secretsmanager" "2.15.2" + "sha256-js9F7mkNtanyv2AVZPFGs88b21Ng99yQ7Yrc/UP4LKA="; types-aiobotocore-securityhub = - buildTypesAiobotocorePackage "securityhub" "2.15.1" - "sha256-ONJsSG+d2fSaoPyrchl+oosIeVSjwoN5d0BPolDhhbk="; + buildTypesAiobotocorePackage "securityhub" "2.15.2" + "sha256-yrI7hTvxsInp64WWMfMvqBx0qkpoYF8fryV2WC7HrCU="; types-aiobotocore-securitylake = - buildTypesAiobotocorePackage "securitylake" "2.15.1" - "sha256-ggAfufDDaW+LdNindZoAR1xeWr+hQKr1ImTl+nGE0B8="; + buildTypesAiobotocorePackage "securitylake" "2.15.2" + "sha256-DwJsoRR3NZEVQ3uvploTO3eRqGvMpET96CJm5Gx2kDc="; types-aiobotocore-serverlessrepo = - buildTypesAiobotocorePackage "serverlessrepo" "2.15.1" - "sha256-zUBoLdhvpvI/tTza9abj//Hkc59gMe70kqEF1SEW+FE="; + buildTypesAiobotocorePackage "serverlessrepo" "2.15.2" + "sha256-X0o4l4pcJmVnLkA1huf520RqMEFbkMqqs09ZqlFvl8w="; types-aiobotocore-service-quotas = - buildTypesAiobotocorePackage "service-quotas" "2.15.1" - "sha256-M1elV0BE1RyFOo2XlKVIt5gH1M4bIU7rld77+cGCptg="; + buildTypesAiobotocorePackage "service-quotas" "2.15.2" + "sha256-Pbj9G+3rPMNyJ5Z3wQT4Zvqeb7N2H3ui+9CxcpU1oHU="; types-aiobotocore-servicecatalog = - buildTypesAiobotocorePackage "servicecatalog" "2.15.1" - "sha256-fgFgmDsx68FgZHOXTrJEB6OqVOlaVWgSer29dKwiBJo="; + buildTypesAiobotocorePackage "servicecatalog" "2.15.2" + "sha256-uSkuoDBkYXzGDBLtIX/4tmfFhRFfiWJGHmz5OpJhLek="; types-aiobotocore-servicecatalog-appregistry = - buildTypesAiobotocorePackage "servicecatalog-appregistry" "2.15.1" - "sha256-NG2E4XxicGVtpLqi8n/j2C+BsxdMyWb554XX/HlnExI="; + buildTypesAiobotocorePackage "servicecatalog-appregistry" "2.15.2" + "sha256-qxjPzRVuya2L2yedaMejt8S0iNQkec0mRteahClNFDQ="; types-aiobotocore-servicediscovery = - buildTypesAiobotocorePackage "servicediscovery" "2.15.1" - "sha256-/6OTsZUTgwYXFzTf1G8hkngaN32L8dPJzgdNMSXisfo="; + buildTypesAiobotocorePackage "servicediscovery" "2.15.2" + "sha256-CHvjmH7uPYJ1o97k+/u2GRK7/R0BaDfA6nhyJl3I0+U="; types-aiobotocore-ses = - buildTypesAiobotocorePackage "ses" "2.15.1" - "sha256-H3mZA65etYo+frlSNEMs/lT8G86oWbNjlkPefoIc6AA="; + buildTypesAiobotocorePackage "ses" "2.15.2" + "sha256-3jDEReH8mLWDRDaEBGhXnESbvw5l8OANgl6VnYcbN6I="; types-aiobotocore-sesv2 = - buildTypesAiobotocorePackage "sesv2" "2.15.1" - "sha256-diE7lw1LMxiy4gRam1zymw98VJGKaEWwQ5FudCma9ZU="; + buildTypesAiobotocorePackage "sesv2" "2.15.2" + "sha256-6NbQYkz04lWokHuhFpq3yY60HkXKKQkdXztNjW3XGcc="; types-aiobotocore-shield = - buildTypesAiobotocorePackage "shield" "2.15.1" - "sha256-jeklWyR6ArvO9/i/2Iji+YbAsv2rnNLqKoSTBL5VDSQ="; + buildTypesAiobotocorePackage "shield" "2.15.2" + "sha256-lxGndPfh8XDcj8e8oKydEPcFfzNiSVXHAgv3rxSg11U="; types-aiobotocore-signer = - buildTypesAiobotocorePackage "signer" "2.15.1" - "sha256-I+Cfmn14B9W1O/LBNWZZ9384H0DexJav2bkc4+2zV58="; + buildTypesAiobotocorePackage "signer" "2.15.2" + "sha256-vVkz6+GhJf8J2d/ZTfbTxIVdnWXA/ye/eq4nCtd/Krw="; types-aiobotocore-simspaceweaver = - buildTypesAiobotocorePackage "simspaceweaver" "2.15.1" - "sha256-1B4R4cjzz3fnevwRsT4o3mzlzw4tXbO1kENgWOWbU7w="; + buildTypesAiobotocorePackage "simspaceweaver" "2.15.2" + "sha256-JesS1NX79j37T3K2lAaSAoQ3M0SYHgHWW6w5EGkwgoU="; types-aiobotocore-sms = - buildTypesAiobotocorePackage "sms" "2.15.1" - "sha256-w2iD7ZpVIIDRuTWikJAp3j7j7jBfcpPnKXfTm6KWq10="; + buildTypesAiobotocorePackage "sms" "2.15.2" + "sha256-BD4R+N71BtyFQDzCR7e84vovWKkNRagloe5Se/oZJPU="; types-aiobotocore-sms-voice = - buildTypesAiobotocorePackage "sms-voice" "2.15.1" - "sha256-+SZAFFyf+UTytFecjCv/MH9VykOCxFxXJEen1DZdljs="; + buildTypesAiobotocorePackage "sms-voice" "2.15.2" + "sha256-6UwSaemdRzaFk7fI+W1K7HUQTo93CTuoiQfOtvlroog="; types-aiobotocore-snow-device-management = - buildTypesAiobotocorePackage "snow-device-management" "2.15.1" - "sha256-kaiXmu24wDGIzDtXJ2pT87Wdr3zzRioLVU5TjaNVsRo="; + buildTypesAiobotocorePackage "snow-device-management" "2.15.2" + "sha256-8Qt9oOvwGYiDnCNNRzXKGpSF+cxKbQFErROsWS5NQ6o="; types-aiobotocore-snowball = - buildTypesAiobotocorePackage "snowball" "2.15.1" - "sha256-YvZxBJGNtRVSsJAtv46Nq9xliVvXShiI2exeir+bp8U="; + buildTypesAiobotocorePackage "snowball" "2.15.2" + "sha256-/NDdsd9AcLcpXAs0tqZ+nHHNJudfxVuYatqJHr9a8oo="; types-aiobotocore-sns = - buildTypesAiobotocorePackage "sns" "2.15.1" - "sha256-U/VvZwz7qMrnPjgQUL0NMnNS6e5X4PgW/rjwBi65iAU="; + buildTypesAiobotocorePackage "sns" "2.15.2" + "sha256-7YRa4LucT1Jl8oujdVYsMw/wnRYSSMaZXMaY9qz4mRQ="; types-aiobotocore-sqs = - buildTypesAiobotocorePackage "sqs" "2.15.1" - "sha256-CI9nNt+zfztYT6DwgjAe9RNtebegPAAsSl692FBF7hA="; + buildTypesAiobotocorePackage "sqs" "2.15.2" + "sha256-6R+AHdVU27iziZvPWMzB3iPNaFYvdQkzfHQAOK+PMtI="; types-aiobotocore-ssm = - buildTypesAiobotocorePackage "ssm" "2.15.1" - "sha256-x/b1hpCTHqZcTJTzwQc+pYjdOYCiyQdsLw1vBpuPQyc="; + buildTypesAiobotocorePackage "ssm" "2.15.2" + "sha256-6b8jBjW+dhoaoM/xx08mZAh4EndISChOQL+mZZp14Q4="; types-aiobotocore-ssm-contacts = - buildTypesAiobotocorePackage "ssm-contacts" "2.15.1" - "sha256-3N8kaI67M6xKuTsESi/x4FVXy2Lsdoc9RRGIo7bKAok="; + buildTypesAiobotocorePackage "ssm-contacts" "2.15.2" + "sha256-JsJoes3hiMJsOK9fMaO/xSSgyNR8W0KqxsW49sQ/qFo="; types-aiobotocore-ssm-incidents = - buildTypesAiobotocorePackage "ssm-incidents" "2.15.1" - "sha256-Fkl8ZgS3DD3hRYWQHl1cM2RCNHi8tWk9a1fyCQa+/KM="; + buildTypesAiobotocorePackage "ssm-incidents" "2.15.2" + "sha256-TZ2mFVwjA3UGCnyVIOFNG6GSF1tWD+SP03g8CZZdr6c="; types-aiobotocore-ssm-sap = - buildTypesAiobotocorePackage "ssm-sap" "2.15.1" - "sha256-23gDeTpYf9sNK2ARSPwZTkNSlGIze8ybLymQ+X0cf74="; + buildTypesAiobotocorePackage "ssm-sap" "2.15.2" + "sha256-nJHnIk+XzFLKeNJ3UdM9NslUeJdFhru6cmvvoZUJmTU="; types-aiobotocore-sso = - buildTypesAiobotocorePackage "sso" "2.15.1" - "sha256-7uJXGduh2yrj0nLWgTyELxdB6ZaU7TX35GywXTECU64="; + buildTypesAiobotocorePackage "sso" "2.15.2" + "sha256-PhoZgQqeNQc3B75O1jIWVNU7lR9uBrJG9GpTfHB1pnI="; types-aiobotocore-sso-admin = - buildTypesAiobotocorePackage "sso-admin" "2.15.1" - "sha256-qTAoxjZnze1ffC/QdVnCRy37H4Tzc1AkAERvvtVxkik="; + buildTypesAiobotocorePackage "sso-admin" "2.15.2" + "sha256-+Ofbw3lAiX3RtygG9zfxX3i87NVdYmIHKKxq+7NTHHE="; types-aiobotocore-sso-oidc = - buildTypesAiobotocorePackage "sso-oidc" "2.15.1" - "sha256-+MsbvjZLLdY/JOr/yWBvrfHQ3SEWvUtzvaImsYNX0YI="; + buildTypesAiobotocorePackage "sso-oidc" "2.15.2" + "sha256-ZhEJ9TSH5zbH0a1ukgxX/XwIKrwxFvh/CF9SOAmAd4o="; types-aiobotocore-stepfunctions = - buildTypesAiobotocorePackage "stepfunctions" "2.15.1" - "sha256-4YKcuhem2grrKP2I0y+fayyQ4beVhKQJ7KAC70TgN14="; + buildTypesAiobotocorePackage "stepfunctions" "2.15.2" + "sha256-DN3vboRwssrSolCuKts/35RiQR6jV61+QN7Z8cp2f4Y="; types-aiobotocore-storagegateway = - buildTypesAiobotocorePackage "storagegateway" "2.15.1" - "sha256-DDxzE4KcnC4sjVgBMt2cldFgm2JIeA7pRR7lqocvXN8="; + buildTypesAiobotocorePackage "storagegateway" "2.15.2" + "sha256-6ahEEQrrvRI90jGON71iTLRatrEoF7ZyG7qJmG3oCsU="; types-aiobotocore-sts = - buildTypesAiobotocorePackage "sts" "2.15.1" - "sha256-LMs2iAbogup0JrXFBIJhpgn8oFuhH3jGnb/Xh60xsMg="; + buildTypesAiobotocorePackage "sts" "2.15.2" + "sha256-5Ua7GxbzeeX0/8vTxsYgB8jruGv5u16FQ8plGKLMBVw="; types-aiobotocore-support = - buildTypesAiobotocorePackage "support" "2.15.1" - "sha256-fpQ5fan2CkWJrnir65tBHyXAqSa1CVQXt/Q1h7NiyjU="; + buildTypesAiobotocorePackage "support" "2.15.2" + "sha256-nM+vzI5wv8VRyRUok6GaI77VEBcaxeGikldAAvAIAXw="; types-aiobotocore-support-app = - buildTypesAiobotocorePackage "support-app" "2.15.1" - "sha256-W/uBm0i+eNsPdSpZ+WvxSRJpZTzRdnt4snregNIeghQ="; + buildTypesAiobotocorePackage "support-app" "2.15.2" + "sha256-EhVR5a5O7/XwiRDcIsUS6aZqILArMyxd85XmiNN+M+Y="; types-aiobotocore-swf = - buildTypesAiobotocorePackage "swf" "2.15.1" - "sha256-ijmqVcESbAfQLCgWhIEqq1+V8fChp1Pq0IfeBjmPtPM="; + buildTypesAiobotocorePackage "swf" "2.15.2" + "sha256-/dz5ZVqz6ovntu/O5ON7Gf1o78Nn1FxJOUzcHvwuOwg="; types-aiobotocore-synthetics = - buildTypesAiobotocorePackage "synthetics" "2.15.1" - "sha256-mDvgYxDjVc2Z+IGCiaNR3xOYuht1LHJPW1lViQsfsfQ="; + buildTypesAiobotocorePackage "synthetics" "2.15.2" + "sha256-akHP8h2XxNvHVku5uCTQ3K8HgwWRg9QL1BAQRzQ3eEc="; types-aiobotocore-textract = - buildTypesAiobotocorePackage "textract" "2.15.1" - "sha256-HLjYbm4OK2gvKMKBkNZytKlChMW43y8g2k0CMVVvcGY="; + buildTypesAiobotocorePackage "textract" "2.15.2" + "sha256-Wt8E53/j9mi0yJWp/+omVnIBoI5sVMJPgR4BofB+6nM="; types-aiobotocore-timestream-query = - buildTypesAiobotocorePackage "timestream-query" "2.15.1" - "sha256-Jx3U+EzIZzTntyq5YxlSJkHQaGX3JkKqCOlHtGqO7vY="; + buildTypesAiobotocorePackage "timestream-query" "2.15.2" + "sha256-7oi/qslTdLXQGVzsucF09PT+A1gyncYXdNoY0aZZwnA="; types-aiobotocore-timestream-write = - buildTypesAiobotocorePackage "timestream-write" "2.15.1" - "sha256-h1eonOUwVXsybJ25UfQwZtZWuhDh1v8M10ZT9JM1NVo="; + buildTypesAiobotocorePackage "timestream-write" "2.15.2" + "sha256-oOPC3wV2Wutveglu9vd6bNl9MGWxsJhyxn1h3R5h3DU="; types-aiobotocore-tnb = - buildTypesAiobotocorePackage "tnb" "2.15.1" - "sha256-6b9c2UdaNHM3/GAiGWFnZVR7sUP+cUy9Z5W3Ig+7fSM="; + buildTypesAiobotocorePackage "tnb" "2.15.2" + "sha256-rxiCacHIc1+JX5Ba+Ft3kaZfxPOuQzDbsK/wxPJi4VA="; types-aiobotocore-transcribe = - buildTypesAiobotocorePackage "transcribe" "2.15.1" - "sha256-bLQrTDUhbYOTYY+KvUxMwiHgPFHrAJxB8Yjy3TUAMCc="; + buildTypesAiobotocorePackage "transcribe" "2.15.2" + "sha256-IMJBlNAWIlk0FWLQQ/2Gcyk6ePqicSqOkDvIxuc+yjg="; types-aiobotocore-transfer = - buildTypesAiobotocorePackage "transfer" "2.15.1" - "sha256-+cSgukEugB7RSrkWsEgbiMS6tvjAJDPwVP+rVEsAMJE="; + buildTypesAiobotocorePackage "transfer" "2.15.2" + "sha256-M0bTj75PMhNE4Z1Cw8Mb5qlqN3NFkqyWPMi2T5IHnH0="; types-aiobotocore-translate = - buildTypesAiobotocorePackage "translate" "2.15.1" - "sha256-Hf46I5GHQyLAN6IXL0X0VN6Mr3CsMhhPFKqx/fDrHv8="; + buildTypesAiobotocorePackage "translate" "2.15.2" + "sha256-OJYflZHEP6xshavrMsdALZ1W7OFGlXTcZ2y7lSZFiiM="; types-aiobotocore-verifiedpermissions = - buildTypesAiobotocorePackage "verifiedpermissions" "2.15.1" - "sha256-yxamVPkF/RexBvdBpjUi8rYzEy5jOf15otKqi64gnOc="; + buildTypesAiobotocorePackage "verifiedpermissions" "2.15.2" + "sha256-jzG0vdPOF7gtAVdT4zUbQ9on9hGZ0r7Ip3BPJYVFk6I="; types-aiobotocore-voice-id = - buildTypesAiobotocorePackage "voice-id" "2.15.1" - "sha256-B7Q0TAT7rMWVZf4wSE6qGxMalHwvV7hPrcnCw3vcQkw="; + buildTypesAiobotocorePackage "voice-id" "2.15.2" + "sha256-AG6/UuYdeYOjECyemoqB7BrjIDg6OuIbIfdCaSsgc7Y="; types-aiobotocore-vpc-lattice = - buildTypesAiobotocorePackage "vpc-lattice" "2.15.1" - "sha256-ybBzzhKX3NClXHnYR7GBpQZGsF+xPprHrbHgOjeR+9U="; + buildTypesAiobotocorePackage "vpc-lattice" "2.15.2" + "sha256-pSrj/6I5X4EAiBGtP/usG8AnDFrExtV7wpCMIYjdmLI="; types-aiobotocore-waf = - buildTypesAiobotocorePackage "waf" "2.15.1" - "sha256-YPYrL6RRL0UhABcDZXpJQ8RQWDvPkD+y/qDQ1PbLCuU="; + buildTypesAiobotocorePackage "waf" "2.15.2" + "sha256-rdMMNnCkv1+sCL+4lB5ubSWAyPvBrNDuLZcqFAky6kI="; types-aiobotocore-waf-regional = - buildTypesAiobotocorePackage "waf-regional" "2.15.1" - "sha256-fkKB2Cmg0i/OOJKkHmLzU0UWkUDXVAjXYmBWpal6pg4="; + buildTypesAiobotocorePackage "waf-regional" "2.15.2" + "sha256-FqUfQlM41v6q5SdlSgzBt/MnK3SiDYdGKpqNnlcKMXQ="; types-aiobotocore-wafv2 = - buildTypesAiobotocorePackage "wafv2" "2.15.1" - "sha256-f5xAh/57zMcvjJHeqDDSrlSx3u/J3e78oQmGVSyD4Vc="; + buildTypesAiobotocorePackage "wafv2" "2.15.2" + "sha256-wOVJrIL5F7qapff49bWw2NfX3p+fr2KiLyDU0UIKMDg="; types-aiobotocore-wellarchitected = - buildTypesAiobotocorePackage "wellarchitected" "2.15.1" - "sha256-j1yGNqM32RKzz5xmL52+cwS9JIj1DUIJQatHz7ZjZrg="; + buildTypesAiobotocorePackage "wellarchitected" "2.15.2" + "sha256-srXL51+IeqOadPa8TFSA3BZEPQbw51zgsuRTbDJlACw="; types-aiobotocore-wisdom = - buildTypesAiobotocorePackage "wisdom" "2.15.1" - "sha256-0rngVEUa9yBIeoMC2dKVVDty4DAiesQZJRm73C4PAhg="; + buildTypesAiobotocorePackage "wisdom" "2.15.2" + "sha256-p0KPHHmqy9Jd4tWypg+5AcnEHb0dESwNVC6bPr1VDBc="; types-aiobotocore-workdocs = - buildTypesAiobotocorePackage "workdocs" "2.15.1" - "sha256-Jypse/lhsvGWfu8551dngM+Jp8BdIp2T1WRfqdV02ug="; + buildTypesAiobotocorePackage "workdocs" "2.15.2" + "sha256-csR9+vedxQbUu16e3fCwSTW4opv2FW7VnNXsfawJGSk="; types-aiobotocore-worklink = buildTypesAiobotocorePackage "worklink" "2.15.1" @@ -1456,18 +1456,18 @@ rec { "sha256-o2n4u7wgJPSS02LLZe+PLsxdwm5r+0j3VzDFVnR7bGc="; types-aiobotocore-workmailmessageflow = - buildTypesAiobotocorePackage "workmailmessageflow" "2.15.1" - "sha256-PQQLKPZYaCqIVTXS8PWAjrYjp4ZTMl1XDuvz27s10sY="; + buildTypesAiobotocorePackage "workmailmessageflow" "2.15.2" + "sha256-2Rb15SCI1o6OfMuJzWcosZqWZQOs0ZrPGLDy7bdZPPk="; types-aiobotocore-workspaces = - buildTypesAiobotocorePackage "workspaces" "2.15.1" - "sha256-eU+8eBZ52BEAqpvHWJ4aVr2kuz6/6fMu7yu4bA9f/TQ="; + buildTypesAiobotocorePackage "workspaces" "2.15.2" + "sha256-wQSb23Y6nySclLl9c2MCfiZ81N+GKbYhHcro6zBVtNo="; types-aiobotocore-workspaces-web = - buildTypesAiobotocorePackage "workspaces-web" "2.15.1" - "sha256-+lUuiVz/wqkuH59QzB8ZIv+bvNGeNZvBDzUctYd6LAg="; + buildTypesAiobotocorePackage "workspaces-web" "2.15.2" + "sha256-oFljA4OPlPF4q9xMMxhtv2/t5FQcwUeGdBC3ueGCnKA="; types-aiobotocore-xray = - buildTypesAiobotocorePackage "xray" "2.15.1" - "sha256-+MKFgYPnSmSLjE9YP8fDjAo91o+mYkN2T4FbOMVSmnw="; + buildTypesAiobotocorePackage "xray" "2.15.2" + "sha256-coVjEy0/Kt0gkLS/MI/r1WpXvbJJeCMfGUfCYH7SNPY="; } diff --git a/pkgs/development/python-modules/types-aiobotocore/default.nix b/pkgs/development/python-modules/types-aiobotocore/default.nix index 29fffba265bc5..75215f8a8ee3d 100644 --- a/pkgs/development/python-modules/types-aiobotocore/default.nix +++ b/pkgs/development/python-modules/types-aiobotocore/default.nix @@ -364,13 +364,13 @@ buildPythonPackage rec { pname = "types-aiobotocore"; - version = "2.15.1"; + version = "2.15.2"; pyproject = true; src = fetchPypi { pname = "types_aiobotocore"; inherit version; - hash = "sha256-DW7QyEVvvlnew0WqFCgA2wg3uYvKHtX2jPbvbVITd0U="; + hash = "sha256-Y+akVszDPiyjUKrliM/bu5S97PNTPmqFePc2xbK4Vgc="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/types-aiobotocore/update.sh b/pkgs/development/python-modules/types-aiobotocore/update.sh index ea5b05fdaacd3..a3449d2b43471 100755 --- a/pkgs/development/python-modules/types-aiobotocore/update.sh +++ b/pkgs/development/python-modules/types-aiobotocore/update.sh @@ -371,7 +371,7 @@ for package in "${packages[@]}"; do url="https://pypi.io/packages/source/t/${package}/${package//-/_}-${version}.tar.gz" hash=$(nix-prefetch-url --type sha256 $url) - sri_hash="$(nix hash to-sri --type sha256 $hash)" + sri_hash="$(nix hash convert --hash-algo sha256 --to sri $hash)" package_short="${package#types-aiobotocore-}" awk -i inplace -v pkg="$package" -v pkg_short="$package_short" -v ver="$version" -v hash="$sri_hash" ' diff --git a/pkgs/development/python-modules/willow/default.nix b/pkgs/development/python-modules/willow/default.nix index 83b446947683f..367a615f9c27a 100644 --- a/pkgs/development/python-modules/willow/default.nix +++ b/pkgs/development/python-modules/willow/default.nix @@ -1,43 +1,38 @@ { lib, buildPythonPackage, + defusedxml, fetchFromGitHub, - - # build-system - flit-core, - - # dependencies filetype, - defusedxml, - - # optional-dependencies - pillow-heif, - - # tests + flit-core, numpy, opencv4, + pillow-heif, pillow, pytestCheckHook, + pythonOlder, wand, }: buildPythonPackage rec { pname = "willow"; - version = "1.8.0"; - format = "pyproject"; + version = "1.9.0"; + pyproject = true; + + disabled = pythonOlder "3.9"; src = fetchFromGitHub { owner = "wagtail"; repo = "Willow"; rev = "refs/tags/v${version}"; - hash = "sha256-g9/v56mdo0sJe5Pl/to/R/kXayaKK3qaYbnnPXpFjXE="; + hash = "sha256-H/UXE6gA6x849aqBcUgl3JYZ87OMNpuFyWGSsgqW1Rk="; }; - nativeBuildInputs = [ flit-core ]; + build-system = [ flit-core ]; pythonRelaxDeps = [ "defusedxml" ]; - propagatedBuildInputs = [ + dependencies = [ filetype defusedxml ]; @@ -57,6 +52,7 @@ buildPythonPackage rec { meta = with lib; { description = "Python image library that sits on top of Pillow, Wand and OpenCV"; homepage = "https://github.com/torchbox/Willow/"; + changelog = "https://github.com/wagtail/Willow/releases/tag/v${version}"; license = licenses.bsd2; maintainers = with maintainers; [ desiderius ]; }; diff --git a/pkgs/development/python-modules/yaramod/default.nix b/pkgs/development/python-modules/yaramod/default.nix index 78589108f7e0a..3bf6ba1b75469 100644 --- a/pkgs/development/python-modules/yaramod/default.nix +++ b/pkgs/development/python-modules/yaramod/default.nix @@ -21,7 +21,7 @@ let in buildPythonPackage rec { pname = "yaramod"; - version = "3.23.0"; + version = "4.0.0"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -30,7 +30,7 @@ buildPythonPackage rec { owner = "avast"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-TB0dnWA+5beyHAoYUjqocmw5uGFgo/h9eKDbuKbmfsw="; + hash = "sha256-YbsNFtDk5u5UyTsS1aGKUv/HWYxEwERinZ3G84/mC9o="; }; postPatch = '' diff --git a/pkgs/development/python-modules/yfinance/default.nix b/pkgs/development/python-modules/yfinance/default.nix index b49e0e4cbd824..36a381551864b 100644 --- a/pkgs/development/python-modules/yfinance/default.nix +++ b/pkgs/development/python-modules/yfinance/default.nix @@ -23,7 +23,7 @@ buildPythonPackage rec { pname = "yfinance"; - version = "0.2.44"; + version = "0.2.48"; pyproject = true; disabled = pythonOlder "3.7"; @@ -32,7 +32,7 @@ buildPythonPackage rec { owner = "ranaroussi"; repo = "yfinance"; rev = "refs/tags/${version}"; - hash = "sha256-XaenqZMvbimuptfCpvyhXxvbJTPA94+nN938HI5gDQo="; + hash = "sha256-7m5N2l80Cg6+NDiW0x49WtHkc6fu07s0BqKlHFCc1v0="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/tools/gauge/plugins/dotnet/data.json b/pkgs/development/tools/gauge/plugins/dotnet/data.json index 19d228a955cc2..3e3aac11ed19a 100644 --- a/pkgs/development/tools/gauge/plugins/dotnet/data.json +++ b/pkgs/development/tools/gauge/plugins/dotnet/data.json @@ -1,5 +1,5 @@ { - "version": "0.7.1", - "url": "https://github.com/getgauge/gauge-dotnet/releases/download/v0.7.1/gauge-dotnet-0.7.1.zip", - "hash": "sha256-0sJctSdQfkm70Z1JDFMc2qwo0PbDWYlHbqfVsnlHyDg=" + "version": "0.7.2", + "url": "https://github.com/getgauge/gauge-dotnet/releases/download/v0.7.2/gauge-dotnet-0.7.2.zip", + "hash": "sha256-ac2pf0st1p/DPAXgQC689nbD+DO7DYkxFqrVItq+UWw=" } diff --git a/pkgs/development/tools/headache/default.nix b/pkgs/development/tools/headache/default.nix index b5f5e55f3f794..93077f31104db 100644 --- a/pkgs/development/tools/headache/default.nix +++ b/pkgs/development/tools/headache/default.nix @@ -1,4 +1,4 @@ -{ lib, fetchFromGitHub, nix-update-script, ocamlPackages }: +{ lib, stdenv, fetchFromGitHub, nix-update-script, ocamlPackages, darwin }: let inherit (ocamlPackages) buildDunePackage camomile; @@ -15,6 +15,8 @@ buildDunePackage rec { sha256 = "sha256-UXQIIsCyJZN4qos7Si7LLm9vQueOduUmLeYHuyT2GZo="; }; + nativeBuildInputs = lib.optional stdenv.hostPlatform.isDarwin darwin.sigtool; + propagatedBuildInputs = [ camomile ]; diff --git a/pkgs/development/tools/language-servers/crystalline/default.nix b/pkgs/development/tools/language-servers/crystalline/default.nix index 6ffb002ca7a7a..3f59e57bdb01c 100644 --- a/pkgs/development/tools/language-servers/crystalline/default.nix +++ b/pkgs/development/tools/language-servers/crystalline/default.nix @@ -7,7 +7,7 @@ }: let - version = "0.14.1"; + version = "0.15.0"; in crystal.buildCrystalPackage { pname = "crystalline"; @@ -17,7 +17,7 @@ crystal.buildCrystalPackage { owner = "elbywan"; repo = "crystalline"; rev = "v${version}"; - hash = "sha256-Z5gEuyK3MeFaIuzr+SdZ6dphSGEqL4fQ+cOwDW1Y3go="; + hash = "sha256-6ZAogEuOJH1QQ6NSJ+8KZUSFSgQAcvd4U9vWNAGix/M="; }; format = "crystal"; diff --git a/pkgs/development/tools/misc/go-md2man/default.nix b/pkgs/development/tools/misc/go-md2man/default.nix index ee8b8d38b5651..b66584b90a931 100644 --- a/pkgs/development/tools/misc/go-md2man/default.nix +++ b/pkgs/development/tools/misc/go-md2man/default.nix @@ -2,7 +2,7 @@ buildGoModule rec { pname = "go-md2man"; - version = "2.0.4"; + version = "2.0.5"; vendorHash = "sha256-aMLL/tmRLyGze3RSB9dKnoTv5ZK1eRtgV8fkajWEbU0="; @@ -10,7 +10,7 @@ buildGoModule rec { rev = "v${version}"; owner = "cpuguy83"; repo = "go-md2man"; - sha256 = "sha256-pQ+H8Psh92KWTang8hK0cHFLomH+4X0rMMilIJUQ4Qc="; + sha256 = "sha256-UX9FajFqZApVFED3MYcq167iPwztnIck25ehfcOeFD8="; }; meta = with lib; { diff --git a/pkgs/development/tools/rust/cargo-hack/default.nix b/pkgs/development/tools/rust/cargo-hack/default.nix index f85d1459c8ae8..923867851b5dc 100644 --- a/pkgs/development/tools/rust/cargo-hack/default.nix +++ b/pkgs/development/tools/rust/cargo-hack/default.nix @@ -2,14 +2,14 @@ rustPlatform.buildRustPackage rec { pname = "cargo-hack"; - version = "0.6.31"; + version = "0.6.32"; src = fetchCrate { inherit pname version; - hash = "sha256-PMqGDwiQYTtPna4buO6pxUjF+RXT9phjPUNcpQQSn6Q="; + hash = "sha256-XjubvjK+FySm0nqlzFsRhDQOI9M0enonwwPhZ/KFFlk="; }; - cargoHash = "sha256-/bkGWQZAHkMtH6Y9ntFJEKV6gmUZEAbYf5A5xoUOMM8="; + cargoHash = "sha256-sWXeGohH9iLMkmBgNjSfg25eDzZHSzWrOGgccuWPBLM="; # some necessary files are absent in the crate version doCheck = false; diff --git a/pkgs/development/tools/snazy/default.nix b/pkgs/development/tools/snazy/default.nix index a5fee4c38c241..0eb2b588f25db 100644 --- a/pkgs/development/tools/snazy/default.nix +++ b/pkgs/development/tools/snazy/default.nix @@ -7,16 +7,16 @@ rustPlatform.buildRustPackage rec { pname = "snazy"; - version = "0.53.0"; + version = "0.54.0"; src = fetchFromGitHub { owner = "chmouel"; repo = pname; rev = version; - hash = "sha256-iRoNmqZadwUxowcC/emqdGhOWMl5c1OJr/VVyxYg2h0="; + hash = "sha256-1+UbUwvv5HWiQ+u9gPtJ3JwP6cMi4IZOCSMedXzWEoQ="; }; - cargoHash = "sha256-e39lmGEPRU/vATcJKB89+B/STi1viP6r43X4Y2u/fe4="; + cargoHash = "sha256-NmnKWVyD+NrP7ReERQB1/K8hyrSFj6qgjQjYwxZc+OY="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/development/tools/ytt/default.nix b/pkgs/development/tools/ytt/default.nix index 4a3e61fb9059d..a2de21fd7a2b7 100644 --- a/pkgs/development/tools/ytt/default.nix +++ b/pkgs/development/tools/ytt/default.nix @@ -1,12 +1,18 @@ -{ lib, buildGoModule, fetchFromGitHub, installShellFiles }: - +{ + lib, + buildGoModule, + fetchFromGitHub, + installShellFiles, + testers, + ytt, +}: buildGoModule rec { pname = "ytt"; version = "0.50.0"; src = fetchFromGitHub { - owner = "vmware-tanzu"; - repo = "carvel-ytt"; + owner = "carvel-dev"; + repo = "ytt"; rev = "v${version}"; sha256 = "sha256-57SCBlA2IoBy0iygqunFPBS/nyLtl7e7GlA3vB+ED/4="; }; @@ -16,11 +22,11 @@ buildGoModule rec { nativeBuildInputs = [ installShellFiles ]; ldflags = [ - "-X github.com/vmware-tanzu/carvel-ytt/pkg/version.Version=${version}" + "-s" + "-w" + "-X carvel.dev/ytt/pkg/version.Version=${version}" ]; - subPackages = [ "cmd/ytt" ]; - postInstall = '' installShellCompletion --cmd ytt \ --bash <($out/bin/ytt completion bash) \ @@ -28,11 +34,27 @@ buildGoModule rec { --zsh <($out/bin/ytt completion zsh) ''; + # Once `__structuredArgs` is introduced, integrate checks and + # set some regexes `checkFlags = [ "-skip=TestDataValues.*" ]` + # etc. So far we dont test because passing '*' chars through the Go builder + # is flawed. + doCheck = false; + + passthru.tests.version = testers.testVersion { + package = ytt; + command = "ytt --version"; + inherit version; + }; + meta = with lib; { description = "YAML templating tool that allows configuration of complex software via reusable templates with user-provided values"; mainProgram = "ytt"; homepage = "https://get-ytt.io"; license = licenses.asl20; - maintainers = with maintainers; [ brodes techknowlogick ]; + maintainers = with maintainers; [ + brodes + techknowlogick + gabyx + ]; }; } diff --git a/pkgs/games/minecraft-servers/versions.json b/pkgs/games/minecraft-servers/versions.json index 38a92caeba239..39d57e02cae5b 100644 --- a/pkgs/games/minecraft-servers/versions.json +++ b/pkgs/games/minecraft-servers/versions.json @@ -1,8 +1,8 @@ { "1.21": { - "sha1": "59353fb40c36d304f2035d51e7d6e6baa98dc05c", - "url": "https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar", - "version": "1.21.1", + "sha1": "45810d238246d90e811d896f87b14695b7fb6839", + "url": "https://piston-data.mojang.com/v1/objects/45810d238246d90e811d896f87b14695b7fb6839/server.jar", + "version": "1.21.3", "javaVersion": 21 }, "1.20": { diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index 1983157df1f60..24d37b78c5fc6 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -17,6 +17,7 @@ , swig , which , python3 +, perl , armTrustedFirmwareAllwinner , armTrustedFirmwareAllwinnerH6 , armTrustedFirmwareAllwinnerH616 @@ -88,6 +89,7 @@ let ])) swig which # for scripts/dtc-version.sh + perl # for oid build (secureboot) ] ++ lib.optionals (!crossTools) toolsDeps; depsBuildBuild = [ buildPackages.stdenv.cc ]; buildInputs = lib.optionals crossTools toolsDeps; diff --git a/pkgs/os-specific/darwin/xcode/default.nix b/pkgs/os-specific/darwin/xcode/default.nix index 1aa1a56936557..dc097bfc9536e 100644 --- a/pkgs/os-specific/darwin/xcode/default.nix +++ b/pkgs/os-specific/darwin/xcode/default.nix @@ -83,9 +83,11 @@ in lib.makeExtensible (self: { xcode_14 = requireXcode "14" "sha256-E+wjPgQx/lbYAsauksdmGsygL5VPBA8R9pHB93eA7T0="; xcode_14_1 = requireXcode "14.1" "sha256-QJGAUVIhuDYyzDNttBPv5lIGOfvkYqdOFSUAr5tlkfs="; xcode_15 = requireXcode "15" "sha256-ffqISt2Ayccln5BArKIjSdzbEgoSoNwq8TPLGysAE0c="; + xcode_15_0_1 = requireXcode "15.0.1" "sha256-ZJFCA2HUNmw8NxW3wyIyIsMr8k6z50BHqu9IE2VjuOg="; xcode_15_1 = requireXcode "15.1" "sha256-0djqoSamU87rCpjo50Un3cFg9wKf+pSczRko6uumGM0="; xcode_15_2 = requireXcode "15.2" "sha256-9B/4Tdyb3QGAzm579QGn5Iq/hA2hscD8OcoSJ5BFFXs="; xcode_15_3 = requireXcode "15.3" "sha256-FyVA8EEPCI12Z4sJ4RQRZlMMpFmi7S8VYLcyvad3swM="; xcode_15_4 = requireXcode "15.4" "sha256-yeo+sf6bBIJy9/1sQiMuPEMPniwGXMB6/FXXL0UrI5U="; + xcode_16 = requireXcode "16" "sha256-i/MMcEi5wCpe5+nGo6gUTsFFCoorORydAn7D/GClEdo="; xcode = self."xcode_${lib.replaceStrings ["."] ["_"] (if (stdenv.targetPlatform ? xcodeVer) then stdenv.targetPlatform.xcodeVer else "12.3")}"; }) diff --git a/pkgs/os-specific/linux/cpuid/default.nix b/pkgs/os-specific/linux/cpuid/default.nix index d74d25398f645..e656212991f95 100644 --- a/pkgs/os-specific/linux/cpuid/default.nix +++ b/pkgs/os-specific/linux/cpuid/default.nix @@ -7,11 +7,11 @@ stdenv.mkDerivation rec { pname = "cpuid"; - version = "20240324"; + version = "20241023"; src = fetchurl { url = "http://etallen.com/cpuid/${pname}-${version}.src.tar.gz"; - sha256 = "sha256-3fvFudgBUbsEl16d7BMFEDQZeY0i7/LiRJCD3AhiGEw="; + sha256 = "sha256-/HdDWo1dKzVRcTMB6M24PmKjz+3IQTKw7JsbteUkT9w="; }; # For pod2man during the build process. diff --git a/pkgs/servers/home-assistant/custom-components/homematicip_local/package.nix b/pkgs/servers/home-assistant/custom-components/homematicip_local/package.nix index 73924b838e393..fc4479ed7053f 100644 --- a/pkgs/servers/home-assistant/custom-components/homematicip_local/package.nix +++ b/pkgs/servers/home-assistant/custom-components/homematicip_local/package.nix @@ -7,13 +7,13 @@ buildHomeAssistantComponent rec { owner = "danielperna84"; domain = "homematicip_local"; - version = "1.67.0"; + version = "1.68.1"; src = fetchFromGitHub { owner = "danielperna84"; repo = "custom_homematic"; rev = "refs/tags/${version}"; - hash = "sha256-lKjBt5oMSdGHXUddaGM+BQOhFnsobvgf2k6qMu2uofY="; + hash = "sha256-LRsLSMtPxc/v+zu//I+huGeFaa9i+NGtOLWmEiSwg9g="; }; dependencies = [ diff --git a/pkgs/servers/home-automation/evcc/default.nix b/pkgs/servers/home-automation/evcc/default.nix index ebce97dcc4640..11825118ce0b2 100644 --- a/pkgs/servers/home-automation/evcc/default.nix +++ b/pkgs/servers/home-automation/evcc/default.nix @@ -16,20 +16,20 @@ buildGoModule rec { pname = "evcc"; - version = "0.131.1"; + version = "0.131.2"; src = fetchFromGitHub { owner = "evcc-io"; repo = "evcc"; rev = version; - hash = "sha256-GEIiAjurbLLY+HMOxP40E3plZe2EsS82mxKSj9wheQI="; + hash = "sha256-Ag+FIsItAY+C250qfMmCbQF46I0QFB07vUsqHqRsHDw="; }; - vendorHash = "sha256-T3SmFnGOw6AJaji4tR1uK+lQj8JNcUMJErUuhwdg3gA="; + vendorHash = "sha256-hPCTAK4u79r9EoHkv6g1QvkRDZ95hXzyiiQpRD+0aLQ="; npmDeps = fetchNpmDeps { inherit src; - hash = "sha256-RoCEvbn3sM1lLtrk+Kxi4vqYsqxJt79b0VZZgA8MQBA="; + hash = "sha256-4PBlN2pbr7dzZNQzh/P0kBlsg6ut2XPwsfFB132hWO0="; }; nativeBuildInputs = [ diff --git a/pkgs/servers/monitoring/nagios-plugins/check_ssl_cert/default.nix b/pkgs/servers/monitoring/nagios-plugins/check_ssl_cert/default.nix index c31f28dbfdc90..9ad31b8efaa0f 100644 --- a/pkgs/servers/monitoring/nagios-plugins/check_ssl_cert/default.nix +++ b/pkgs/servers/monitoring/nagios-plugins/check_ssl_cert/default.nix @@ -18,13 +18,13 @@ stdenv.mkDerivation rec { pname = "check_ssl_cert"; - version = "2.84.4"; + version = "2.84.5"; src = fetchFromGitHub { owner = "matteocorti"; repo = "check_ssl_cert"; rev = "refs/tags/v${version}"; - hash = "sha256-HVif2pjVumrf2YFSHbNiL9pfXy8XNeXHRgaIlx/Tzds="; + hash = "sha256-4/vrJ3G45kEg77IbLlWqQYpYYnqMxW3lr9tPGbv5Qno="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/servers/spicedb/default.nix b/pkgs/servers/spicedb/default.nix index 530ada2bb527a..78b73b158555f 100644 --- a/pkgs/servers/spicedb/default.nix +++ b/pkgs/servers/spicedb/default.nix @@ -6,13 +6,13 @@ buildGoModule rec { pname = "spicedb"; - version = "1.37.0"; + version = "1.37.1"; src = fetchFromGitHub { owner = "authzed"; repo = "spicedb"; rev = "v${version}"; - hash = "sha256-ClBT0S5pb/XRQftvbnwqGJE6SBuGQCvb/A8oY/tv0/c="; + hash = "sha256-15X9Q6akidXTYO5U3MYi14u8shTicQQ9wGSVOcefxhg="; }; vendorHash = "sha256-aTfjSGen9rJ/GTCUFuuEykNqQNsnuNyRGm7CtMSZoJ0="; diff --git a/pkgs/servers/sql/postgresql/17.nix b/pkgs/servers/sql/postgresql/17.nix new file mode 100644 index 0000000000000..5d8d8cd693c29 --- /dev/null +++ b/pkgs/servers/sql/postgresql/17.nix @@ -0,0 +1,6 @@ +import ./generic.nix { + version = "17.0"; + hash = "sha256-fidhMcD91rYliNutmzuyS4w0mNUAkyjbpZrxboGRCd4="; + # TODO: Add dont-use-locale-a-on-musl.patch once Alpine Linux has PostgreSQL 17. + # MR in: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/72853 +} diff --git a/pkgs/servers/sql/postgresql/default.nix b/pkgs/servers/sql/postgresql/default.nix index 3040e8074b32c..8eb20188651f7 100644 --- a/pkgs/servers/sql/postgresql/default.nix +++ b/pkgs/servers/sql/postgresql/default.nix @@ -14,6 +14,7 @@ let postgresql_14 = ./14.nix; postgresql_15 = ./15.nix; postgresql_16 = ./16.nix; + postgresql_17 = ./17.nix; }; mkAttributes = jitSupport: diff --git a/pkgs/servers/sql/postgresql/ext/age.nix b/pkgs/servers/sql/postgresql/ext/age.nix index b80d1c203b2c6..695a0093c2254 100644 --- a/pkgs/servers/sql/postgresql/ext/age.nix +++ b/pkgs/servers/sql/postgresql/ext/age.nix @@ -2,6 +2,8 @@ let hashes = { + # Issue tracking PostgreSQL 17 support: https://github.com/apache/age/issues/2111 + # "17" = ""; "16" = "sha256-sXh/vmGyYj00ALfFVdeql2DZ6nCJQDNKyNgzlOZnPAw="; "15" = "sha256-webZWgWZGnSoXwTpk816tjbtHV1UIlXkogpBDAEL4gM="; "14" = "sha256-jZXhcYBubpjIJ8M5JHXKV5f6VK/2BkypH3P7nLxZz3E="; diff --git a/pkgs/servers/sql/postgresql/ext/citus.nix b/pkgs/servers/sql/postgresql/ext/citus.nix index 28d6139f0a50d..b4c08b4ceab1c 100644 --- a/pkgs/servers/sql/postgresql/ext/citus.nix +++ b/pkgs/servers/sql/postgresql/ext/citus.nix @@ -41,7 +41,10 @@ stdenv.mkDerivation rec { # "Our soft policy for Postgres version compatibility is to support Citus' # latest release with Postgres' 3 latest releases." # https://www.citusdata.com/updates/v12-0/#deprecated_features - broken = versionOlder postgresql.version "14"; + broken = versionOlder postgresql.version "14" || + # PostgreSQL 17 support issue upstream: https://github.com/citusdata/citus/issues/7708 + # Check after next package update. + (versionAtLeast postgresql.version "17" && version == "12.1.2"); description = "Distributed PostgreSQL as an extension"; homepage = "https://www.citusdata.com/"; changelog = "https://github.com/citusdata/citus/blob/${src.rev}/CHANGELOG.md"; diff --git a/pkgs/servers/sql/postgresql/ext/lantern.nix b/pkgs/servers/sql/postgresql/ext/lantern.nix index 80263fc2b4a91..0138594cd1056 100644 --- a/pkgs/servers/sql/postgresql/ext/lantern.nix +++ b/pkgs/servers/sql/postgresql/ext/lantern.nix @@ -2,27 +2,33 @@ , stdenv , cmake , fetchFromGitHub +, openssl , postgresql , postgresqlTestExtension }: stdenv.mkDerivation (finalAttrs: { pname = "postgresql-lantern"; - version = "0.2.4"; + version = "0.4.1"; src = fetchFromGitHub { owner = "lanterndata"; repo = "lantern"; rev = "v${finalAttrs.version}"; - hash = "sha256-d5CdS11Z0u8+oPvjH6gVx6k8y05SS6wU3PnafcEgQeY="; + hash = "sha256-V8W61hELXeaVvNZgRUcckFlCMWis7NENlRKySxsK/L8="; fetchSubmodules = true; }; + postPatch = '' + patchShebangs --build lantern_hnsw/scripts/link_llvm_objects.sh + ''; + nativeBuildInputs = [ cmake ]; buildInputs = [ + openssl postgresql ]; @@ -38,6 +44,7 @@ stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ "-DBUILD_FOR_DISTRIBUTING=ON" + "-S ../lantern_hnsw" ]; passthru.tests.extension = postgresqlTestExtension { diff --git a/pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix b/pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix index 42d055a029aeb..74bf0b8eda643 100644 --- a/pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix +++ b/pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix @@ -28,5 +28,8 @@ stdenv.mkDerivation rec { maintainers = [ ]; platforms = postgresql.meta.platforms; license = licenses.postgresql; + # PostgreSQL 17 support issue upstream: https://github.com/hapostgres/pg_auto_failover/issues/1048 + # Check after next package update. + broken = versionAtLeast postgresql.version "17" && version == "2.1"; }; } diff --git a/pkgs/servers/sql/postgresql/ext/pg_cron.nix b/pkgs/servers/sql/postgresql/ext/pg_cron.nix index 02c6e6435ae75..3dea36f7e7404 100644 --- a/pkgs/servers/sql/postgresql/ext/pg_cron.nix +++ b/pkgs/servers/sql/postgresql/ext/pg_cron.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation rec { pname = "pg_cron"; - version = "1.6.2"; + version = "1.6.4"; buildInputs = [ postgresql ]; @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { owner = "citusdata"; repo = pname; rev = "v${version}"; - hash = "sha256-/dD1gX0+RRsBFIjSV9TVk+ppPw0Jrzssl+rRZ2qAp4w="; + hash = "sha256-t1DpFkPiSfdoGG2NgNT7g1lkvSooZoRoUrix6cBID40="; }; installPhase = '' @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "Run Cron jobs through PostgreSQL"; homepage = "https://github.com/citusdata/pg_cron"; - changelog = "https://github.com/citusdata/pg_cron/raw/v${version}/CHANGELOG.md"; + changelog = "https://github.com/citusdata/pg_cron/releases/tag/v${version}"; maintainers = with maintainers; [ thoughtpolice ]; platforms = postgresql.meta.platforms; license = licenses.postgresql; diff --git a/pkgs/servers/sql/postgresql/ext/pg_ed25519.nix b/pkgs/servers/sql/postgresql/ext/pg_ed25519.nix index 010f8f819da94..57bf1b62e15f8 100644 --- a/pkgs/servers/sql/postgresql/ext/pg_ed25519.nix +++ b/pkgs/servers/sql/postgresql/ext/pg_ed25519.nix @@ -27,6 +27,8 @@ stdenv.mkDerivation rec { maintainers = [ maintainers.renzo ]; platforms = postgresql.meta.platforms; license = licenses.mit; + # Broken on darwin and linux (JIT) with no upstream fix available. + broken = lib.versionAtLeast postgresql.version "16" && stdenv.cc.isClang; }; } diff --git a/pkgs/servers/sql/postgresql/ext/pg_hint_plan.nix b/pkgs/servers/sql/postgresql/ext/pg_hint_plan.nix index afc5b9fe65065..8983acb3152a3 100644 --- a/pkgs/servers/sql/postgresql/ext/pg_hint_plan.nix +++ b/pkgs/servers/sql/postgresql/ext/pg_hint_plan.nix @@ -2,6 +2,10 @@ let source = { + "17" = { + version = "1.7.0"; + hash = "sha256-MNQMePDmGxC8OFIJuVJrhfgU566vkng00+tjeGpGKvs="; + }; "16" = { version = "1.6.0"; hash = "sha256-lg7N0QblluTgtNo1tGZjirNJSyQXtcAEs9Jqd3zx0Sg="; diff --git a/pkgs/servers/sql/postgresql/ext/pg_ivm.nix b/pkgs/servers/sql/postgresql/ext/pg_ivm.nix index 46c01251d503e..fcae540d1356d 100644 --- a/pkgs/servers/sql/postgresql/ext/pg_ivm.nix +++ b/pkgs/servers/sql/postgresql/ext/pg_ivm.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "pg_ivm"; - version = "1.8"; + version = "1.9"; src = fetchFromGitHub { owner = "sraoss"; repo = pname; rev = "v${version}"; - hash = "sha256-HncWX3jx9sEvxGGMMZ9QT4tDQ4JYbkNrFw2aZHgCVE8="; + hash = "sha256-Qcie7sbXcMbQkMoFIYBfttmvlYooESdSk2DyebHKPlk="; }; buildInputs = [ postgresql ]; diff --git a/pkgs/servers/sql/postgresql/ext/pg_safeupdate.nix b/pkgs/servers/sql/postgresql/ext/pg_safeupdate.nix index 6637c98c95654..4aeec3e31f090 100644 --- a/pkgs/servers/sql/postgresql/ext/pg_safeupdate.nix +++ b/pkgs/servers/sql/postgresql/ext/pg_safeupdate.nix @@ -21,6 +21,10 @@ with { version = "1.5"; sha256 = "sha256-RRSpkWLFuif+6RCncnsb1NnjKnIIRY9KgebKkjCN5cs="; }; + "17" = { + version = "1.5"; + sha256 = "sha256-RRSpkWLFuif+6RCncnsb1NnjKnIIRY9KgebKkjCN5cs="; + }; }."${lib.versions.major postgresql.version}" or (throw "pg_safeupdate: version specification for pg ${postgresql.version} missing."); stdenv.mkDerivation rec { diff --git a/pkgs/servers/sql/postgresql/ext/pg_similarity.nix b/pkgs/servers/sql/postgresql/ext/pg_similarity.nix index a0669331055b0..8bcb8777c57bc 100644 --- a/pkgs/servers/sql/postgresql/ext/pg_similarity.nix +++ b/pkgs/servers/sql/postgresql/ext/pg_similarity.nix @@ -1,17 +1,27 @@ -{ stdenv, lib, fetchFromGitHub, gcc, postgresql }: +{ stdenv, lib, fetchFromGitHub, fetchpatch, postgresql, unstableGitUpdater }: stdenv.mkDerivation { - pname = "pg_similarity"; - version = "1.0"; + version = "1.0-unstable-2021-01-12"; + src = fetchFromGitHub { owner = "eulerto"; repo = "pg_similarity"; - rev = "be1a8b08c8716e59b89982557da9ea68cdf868c5"; - sha256 = "1z4v4r2yccdr8kz3935fnk1bc5vj0qj0apscldyap4wxlyi89xim"; + rev = "b9cb0a2d501b91e33cd1ef550b05483ca3563f71"; + sha256 = "sha256-L04ANvyfzHgW7fINeJEY6T77Vojq3SI8P1TWiCRSPs0="; }; - buildInputs = [ postgresql gcc ]; + patches = [ + (fetchpatch { + # https://github.com/eulerto/pg_similarity/pull/43 + # Also applied in debian as https://sources.debian.org/data/main/p/pg-similarity/1.0-8/debian/patches/pg16 + name = "pg16.patch"; + url = "https://github.com/eulerto/pg_similarity/commit/f7781ea5ace80f697a8249e03e3ce47d4b0f6b2f.patch"; + hash = "sha256-MPDvWfNzSg28lXL5u5/Un9pOCJjqJ4Fz9b8XCfalgts="; + }) + ]; + + buildInputs = [ postgresql ]; makeFlags = [ "USE_PGXS=1" ]; @@ -20,6 +30,8 @@ stdenv.mkDerivation { install -D ./{pg_similarity--unpackaged--1.0.sql,pg_similarity--1.0.sql,pg_similarity.control} -t $out/share/postgresql/extension ''; + passthru.updateScript = unstableGitUpdater {}; + meta = { description = "Extension to support similarity queries on PostgreSQL"; longDescription = '' diff --git a/pkgs/servers/sql/postgresql/ext/pg_squeeze.nix b/pkgs/servers/sql/postgresql/ext/pg_squeeze.nix index 6e09fe9a73188..7d03b21d989d7 100644 --- a/pkgs/servers/sql/postgresql/ext/pg_squeeze.nix +++ b/pkgs/servers/sql/postgresql/ext/pg_squeeze.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "pg_squeeze"; - version = "1.6.2"; + version = "1.7.0"; src = fetchFromGitHub { owner = "cybertec-postgresql"; repo = "pg_squeeze"; rev = "REL${builtins.replaceStrings ["."] ["_"] finalAttrs.version}"; - hash = "sha256-YS13iIpQ4NJe0N6bRVa2RDxEMwEzBc2mjNYM5/Vqjn8="; + hash = "sha256-Kh1wSOvV5Rd1CG/na3yzbWzvaR8SJ6wmTZOnM+lbgik="; }; buildInputs = [ diff --git a/pkgs/servers/sql/postgresql/ext/pg_topn.nix b/pkgs/servers/sql/postgresql/ext/pg_topn.nix index 2a11417c90831..b210db9104112 100644 --- a/pkgs/servers/sql/postgresql/ext/pg_topn.nix +++ b/pkgs/servers/sql/postgresql/ext/pg_topn.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation rec { pname = "pg_topn"; - version = "2.6.0"; + version = "2.7.0"; buildInputs = [ postgresql ]; @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { owner = "citusdata"; repo = "postgresql-topn"; rev = "refs/tags/v${version}"; - sha256 = "sha256-kq3P+a9NWLKN/CsISGHfInbeL4ex4KIeDhTKyyN7FVE="; + sha256 = "sha256-lP6Iil/BUv4ga+co+oBpKv1FBqFuBGfNjueEolM6png="; }; installPhase = '' diff --git a/pkgs/servers/sql/postgresql/ext/pgaudit.nix b/pkgs/servers/sql/postgresql/ext/pgaudit.nix index f4c03d611f503..1079a13b2dfc0 100644 --- a/pkgs/servers/sql/postgresql/ext/pgaudit.nix +++ b/pkgs/servers/sql/postgresql/ext/pgaudit.nix @@ -2,6 +2,10 @@ let source = { + "17" = { + version = "17.0"; + hash = "sha256-3ksq09wiudQPuBQI3dhEQi8IkXKLVIsPFgBnwLiicro="; + }; "16" = { version = "16.0"; hash = "sha256-8+tGOl1U5y9Zgu+9O5UDDE4bec4B0JC/BQ6GLhHzQzc="; diff --git a/pkgs/servers/sql/postgresql/ext/pgroonga.nix b/pkgs/servers/sql/postgresql/ext/pgroonga.nix index 0ba7fa093820c..3a7c9e237f98f 100644 --- a/pkgs/servers/sql/postgresql/ext/pgroonga.nix +++ b/pkgs/servers/sql/postgresql/ext/pgroonga.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "pgroonga"; - version = "3.1.8"; + version = "3.2.3"; src = fetchurl { url = "https://packages.groonga.org/source/${pname}/${pname}-${version}.tar.gz"; - hash = "sha256-Wjh0NJK6IfcI30R7HKCsB87/lxXZYEqiMD9t2nldCW4="; + hash = "sha256-k9+DgiLzU2cA3jvw3pMF7/FmDGxsCYtAOaUtf2LMTnw="; }; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/servers/sql/postgresql/ext/pgvecto-rs/default.nix b/pkgs/servers/sql/postgresql/ext/pgvecto-rs/default.nix index e8b3af416ca7d..117319e606f0f 100644 --- a/pkgs/servers/sql/postgresql/ext/pgvecto-rs/default.nix +++ b/pkgs/servers/sql/postgresql/ext/pgvecto-rs/default.nix @@ -93,7 +93,10 @@ in meta = with lib; { # Upstream removed support for PostgreSQL 12 and 13 on 0.3.0: https://github.com/tensorchord/pgvecto.rs/issues/343 - broken = stdenv.hostPlatform.isDarwin || (versionOlder postgresql.version "14"); + broken = stdenv.hostPlatform.isDarwin || (versionOlder postgresql.version "14") || + # PostgreSQL 17 support issue upstream: https://github.com/tensorchord/pgvecto.rs/issues/607 + # Check after next package update. + versionAtLeast postgresql.version "17" && version == "0.3.0"; description = "Scalable, Low-latency and Hybrid-enabled Vector Search in Postgres"; homepage = "https://github.com/tensorchord/pgvecto.rs"; license = licenses.asl20; diff --git a/pkgs/servers/sql/postgresql/ext/plr.nix b/pkgs/servers/sql/postgresql/ext/plr.nix index 05d22c19a8b0c..b30b59b86d2a1 100644 --- a/pkgs/servers/sql/postgresql/ext/plr.nix +++ b/pkgs/servers/sql/postgresql/ext/plr.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "plr"; - version = "8.4.6"; + version = "8.4.7"; src = fetchFromGitHub { owner = "postgres-plr"; repo = "plr"; rev = "REL${builtins.replaceStrings ["."] ["_"] version}"; - sha256 = "sha256-c+wKWL66pulihVQnhdbzivrZOMD1/FfOpb+vFoHgqVg="; + sha256 = "sha256-PdvFEmtKfLT/xfaf6obomPR5hKC9F+wqpfi1heBphRk="; }; nativeBuildInputs = [ pkg-config ]; @@ -24,6 +24,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "PL/R - R Procedural Language for PostgreSQL"; homepage = "https://github.com/postgres-plr/plr"; + changelog = "https://github.com/postgres-plr/plr/blob/${src.rev}/changelog.md"; maintainers = with maintainers; [ qoelet ]; platforms = postgresql.meta.platforms; license = licenses.gpl2Only; diff --git a/pkgs/servers/sql/postgresql/ext/plv8/default.nix b/pkgs/servers/sql/postgresql/ext/plv8/default.nix index e0dbc19e353fa..2c375babd4647 100644 --- a/pkgs/servers/sql/postgresql/ext/plv8/default.nix +++ b/pkgs/servers/sql/postgresql/ext/plv8/default.nix @@ -15,13 +15,13 @@ let libv8 = nodejs_20.libv8; in stdenv.mkDerivation (finalAttrs: { pname = "plv8"; - version = "3.2.2"; + version = "3.2.3"; src = fetchFromGitHub { owner = "plv8"; repo = "plv8"; rev = "v${finalAttrs.version}"; - hash = "sha256-azO33v22EF+/sTNmwswxyDR0PhrvWfTENuLu6JgSGJ0="; + hash = "sha256-ivQZJSNn5giWF351fqZ7mBZoJkGtby5T7beK45g3Zqs="; }; patches = [ @@ -135,6 +135,7 @@ in stdenv.mkDerivation (finalAttrs: { meta = with lib; { description = "V8 Engine Javascript Procedural Language add-on for PostgreSQL"; homepage = "https://plv8.github.io/"; + changelog = "https://github.com/plv8/plv8/blob/r${finalAttrs.version}/Changes"; maintainers = [ ]; platforms = [ "x86_64-linux" "aarch64-linux" ]; license = licenses.postgresql; diff --git a/pkgs/servers/sql/postgresql/ext/repmgr.nix b/pkgs/servers/sql/postgresql/ext/repmgr.nix index 565f3fdaf60dc..728f3b348c697 100644 --- a/pkgs/servers/sql/postgresql/ext/repmgr.nix +++ b/pkgs/servers/sql/postgresql/ext/repmgr.nix @@ -37,6 +37,9 @@ stdenv.mkDerivation rec { license = licenses.postgresql; platforms = postgresql.meta.platforms; maintainers = with maintainers; [ zimbatm ]; + # PostgreSQL 17 support issue upstream: https://github.com/EnterpriseDB/repmgr/issues/856 + # Check after next package update. + broken = versionAtLeast postgresql.version "17" && version == "5.4.1"; }; } diff --git a/pkgs/servers/sql/postgresql/ext/smlar.nix b/pkgs/servers/sql/postgresql/ext/smlar.nix index 12fdd79cc8f42..4188c3b9c99a1 100644 --- a/pkgs/servers/sql/postgresql/ext/smlar.nix +++ b/pkgs/servers/sql/postgresql/ext/smlar.nix @@ -26,5 +26,7 @@ stdenv.mkDerivation rec { platforms = postgresql.meta.platforms; license = licenses.bsd2; maintainers = [ ]; + # Broken on darwin and linux (JIT) with no upstream fix available. + broken = lib.versionAtLeast postgresql.version "16" && stdenv.cc.isClang; }; } diff --git a/pkgs/servers/sql/postgresql/ext/tds_fdw.nix b/pkgs/servers/sql/postgresql/ext/tds_fdw.nix index 4a192cda9aa33..2dbf344fc6249 100644 --- a/pkgs/servers/sql/postgresql/ext/tds_fdw.nix +++ b/pkgs/servers/sql/postgresql/ext/tds_fdw.nix @@ -2,16 +2,15 @@ stdenv.mkDerivation rec { pname = "tds_fdw"; - # Move to stable version when it's released. - version = "2.0.3-unstable-2024-02-10"; + version = "2.0.4"; buildInputs = [ postgresql freetds ]; src = fetchFromGitHub { owner = "tds-fdw"; repo = "tds_fdw"; - rev = "f78bd38955d01d3ca357b90717588ec2f90b4991"; - hash = "sha256-3J8wzk0YIxRPhALd5PgVW000hzQw3r4rTrnqg9uB/Bo="; + rev = "v${version}"; + hash = "sha256-ruelOHueaHx1royLPvDM8Abd1rQD62R4KXgtHY9qqTw="; }; installPhase = '' @@ -21,13 +20,10 @@ stdenv.mkDerivation rec { install -D tds_fdw.control -t $out/share/postgresql/extension ''; - passthru.updateScript = unstableGitUpdater { - tagPrefix = "v"; - }; - meta = with lib; { description = "PostgreSQL foreign data wrapper to connect to TDS databases (Sybase and Microsoft SQL Server)"; homepage = "https://github.com/tds-fdw/tds_fdw"; + changelog = "https://github.com/tds-fdw/tds_fdw/releases/tag/v${version}"; maintainers = [ maintainers.steve-chavez ]; platforms = postgresql.meta.platforms; license = licenses.postgresql; diff --git a/pkgs/servers/sql/postgresql/ext/timescaledb.nix b/pkgs/servers/sql/postgresql/ext/timescaledb.nix index bd2d2d3b74be6..60e14e922835b 100644 --- a/pkgs/servers/sql/postgresql/ext/timescaledb.nix +++ b/pkgs/servers/sql/postgresql/ext/timescaledb.nix @@ -41,6 +41,11 @@ stdenv.mkDerivation rec { maintainers = [ ]; platforms = postgresql.meta.platforms; license = with licenses; if enableUnfree then tsl else asl20; - broken = versionOlder postgresql.version "13"; + broken = versionOlder postgresql.version "13" || + # timescaledb supports PostgreSQL 17 from 2.17.0 on: + # https://github.com/timescale/timescaledb/releases/tag/2.17.0 + # We can't upgrade to it, yet, because this would imply dropping support for + # PostgreSQL 13, which is a breaking change. + (versionAtLeast postgresql.version "17" && version == "2.14.2"); }; } diff --git a/pkgs/servers/sql/postgresql/ext/timescaledb_toolkit.nix b/pkgs/servers/sql/postgresql/ext/timescaledb_toolkit.nix index 0776fcb4468a4..ab414a400d294 100644 --- a/pkgs/servers/sql/postgresql/ext/timescaledb_toolkit.nix +++ b/pkgs/servers/sql/postgresql/ext/timescaledb_toolkit.nix @@ -39,5 +39,8 @@ maintainers = with maintainers; [ typetetris ]; platforms = postgresql.meta.platforms; license = licenses.tsl; + # PostgreSQL 17 support issue upstream: https://github.com/timescale/timescaledb-toolkit/issues/813 + # Check after next package update. + broken = versionAtLeast postgresql.version "17" && version == "1.18.0"; }; } diff --git a/pkgs/servers/sql/postgresql/generic.nix b/pkgs/servers/sql/postgresql/generic.nix index 539a4d05019d8..57aa6a8144a0e 100644 --- a/pkgs/servers/sql/postgresql/generic.nix +++ b/pkgs/servers/sql/postgresql/generic.nix @@ -5,7 +5,7 @@ let { stdenv, lib, fetchurl, fetchpatch, makeWrapper , glibc, zlib, readline, openssl, icu, lz4, zstd, systemdLibs, libuuid , pkg-config, libxml2, tzdata, libkrb5, substituteAll, darwin - , linux-pam + , linux-pam, bison, flex, perl, docbook_xml_dtd_45, docbook-xsl-nons, libxslt , removeReferencesTo, writeShellApplication @@ -114,7 +114,8 @@ let pkg-config removeReferencesTo ] - ++ lib.optionals jitSupport [ llvmPackages.llvm.dev nukeReferences ]; + ++ lib.optionals jitSupport [ llvmPackages.llvm.dev nukeReferences ] + ++ lib.optionals (atLeast "17") [ bison flex perl docbook_xml_dtd_45 docbook-xsl-nons libxslt ]; enableParallelBuilding = true; @@ -150,7 +151,8 @@ let ++ lib.optionals stdenv'.hostPlatform.isLinux [ "--with-pam" ] # This could be removed once the upstream issue is resolved: # https://postgr.es/m/flat/427c7c25-e8e1-4fc5-a1fb-01ceff185e5b%40technowledgy.de - ++ lib.optionals (stdenv'.hostPlatform.isDarwin && atLeast "16") [ "LDFLAGS_EX_BE=-Wl,-export_dynamic" ]; + ++ lib.optionals (stdenv'.hostPlatform.isDarwin && atLeast "16") [ "LDFLAGS_EX_BE=-Wl,-export_dynamic" ] + ++ lib.optionals (atLeast "17") [ "--without-perl" ]; patches = [ (if atLeast "16" then ./patches/relative-to-symlinks-16+.patch else ./patches/relative-to-symlinks.patch) @@ -163,7 +165,7 @@ let src = ./patches/locale-binary-path.patch; locale = "${if stdenv.hostPlatform.isDarwin then darwin.adv_cmds else lib.getBin stdenv.cc.libc}/bin/locale"; }) - + ] ++ lib.optionals (olderThan "17") [ # TODO: Remove this with the next set of minor releases (fetchpatch ( if atLeast "14" then { @@ -179,7 +181,7 @@ let hash = "sha256-L8/ns/fxTh2ayfDQXtBIKaArFhMd+v86UxVFWQdmzUw="; excludes = [ "doc/*" ]; }) - ) + ) ] ++ lib.optionals stdenv'.hostPlatform.isMusl ( # Using fetchurl instead of fetchpatch on purpose: https://github.com/NixOS/nixpkgs/issues/240141 map fetchurl (lib.attrValues muslPatches) diff --git a/pkgs/shells/powershell/default.nix b/pkgs/shells/powershell/default.nix index a29bb9c990103..d9b74cf564dc1 100644 --- a/pkgs/shells/powershell/default.nix +++ b/pkgs/shells/powershell/default.nix @@ -29,7 +29,7 @@ let in stdenv.mkDerivation rec { pname = "powershell"; - version = "7.4.5"; + version = "7.4.6"; src = passthru.sources.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); @@ -84,19 +84,19 @@ stdenv.mkDerivation rec { sources = { aarch64-darwin = fetchurl { url = "https://github.com/PowerShell/PowerShell/releases/download/v${version}/powershell-${version}-osx-arm64.tar.gz"; - hash = "sha256-pN0wv/jV1luaLO1NF4QRwXI8FzcBev8VCkiMcSs3r1I="; + hash = "sha256-pILWaHh++Yw38KWnaWEH3/2z3DQMW+PRwVPsnSOQcqg="; }; aarch64-linux = fetchurl { url = "https://github.com/PowerShell/PowerShell/releases/download/v${version}/powershell-${version}-linux-arm64.tar.gz"; - hash = "sha256-8JaGSezUfVUAzLdmxP9No04NeCVMzpCYx/QtDlSEtRM="; + hash = "sha256-wBWbA+hfRK4edpeBigEVWNpsgT0KroSL9awTv0NdhiQ="; }; x86_64-darwin = fetchurl { url = "https://github.com/PowerShell/PowerShell/releases/download/v${version}/powershell-${version}-osx-x64.tar.gz"; - hash = "sha256-1DE6D4AZBwKz9UIPpLy3a9hlgsF4QoGf2+eYO5SANYA="; + hash = "sha256-ehja7RBbfPyAv4zAB2L+eZAQXdI/lRzDLOt0RlFlDj0="; }; x86_64-linux = fetchurl { url = "https://github.com/PowerShell/PowerShell/releases/download/v${version}/powershell-${version}-linux-x64.tar.gz"; - hash = "sha256-wjUJzE0Ixiuf9uom9XnuTFD5eKo0JpM0qF7aL+w29Fs="; + hash = "sha256-b2AVIDxHgGxcxETBnY7QGWleYQ+9lIFUJkv5yo4VdWE="; }; }; tests.version = testers.testVersion { diff --git a/pkgs/tools/inputmethods/fcitx5/fcitx5-mozc.nix b/pkgs/tools/inputmethods/fcitx5/fcitx5-mozc.nix deleted file mode 100644 index e58db09f706c3..0000000000000 --- a/pkgs/tools/inputmethods/fcitx5/fcitx5-mozc.nix +++ /dev/null @@ -1,129 +0,0 @@ -{ lib, clangStdenv, fetchFromGitHub, fetchurl, fetchpatch -, python3Packages, ninja, pkg-config, protobuf, zinnia, qt5, fcitx5 -, jsoncpp, gtest, which, gtk2, unzip, abseil-cpp, breakpad, nixosTests }: -let - inherit (python3Packages) python gyp six; - utdic = fetchurl { - url = "https://osdn.net/downloads/users/39/39056/mozcdic-ut-20220904.tar.bz2"; - sha256 = "sha256-pmLBCcw2Zsirzl1PjYkviRIZoyfUz5rpESeABDxuhtU="; - }; - japanese_usage_dictionary = fetchFromGitHub { - owner = "hiroyuki-komatsu"; - repo = "japanese-usage-dictionary"; - rev = "e5b3425575734c323e1d947009dd74709437b684"; - sha256 = "0pyrpz9c8nxccwpgyr36w314mi8h132cis8ijvlqmmhqxwsi30hm"; - }; - zipcode_rel = "202011"; - jigyosyo = fetchurl { - url = "https://osdn.net/projects/ponsfoot-aur/storage/mozc/jigyosyo-${zipcode_rel}.zip"; - sha256 = "j7MkNtd4+QTi91EreVig4/OV0o5y1+KIjEJBEmLK/mY="; - }; - x-ken-all = fetchurl { - url = - "https://osdn.net/projects/ponsfoot-aur/storage/mozc/x-ken-all-${zipcode_rel}.zip"; - sha256 = "ExS0Cg3rs0I9IOVbZHLt8UEfk8/LmY9oAHPVVlYuTPw="; - }; - -in clangStdenv.mkDerivation { - pname = "fcitx5-mozc"; - version = "2.26.4220.102"; - - src = fetchFromGitHub { - owner = "fcitx"; - repo = "mozc"; - rev = "1882e33b61673b66d63277f82b4c80ae4e506c10"; - sha256 = "R+w0slVFpqtt7PIr1pyupJjRoQsABVZiMdZ9fKGKAqw="; - }; - - nativeBuildInputs = [ gyp ninja python pkg-config qt5.wrapQtAppsHook six which unzip ]; - - buildInputs = [ protobuf zinnia qt5.qtbase fcitx5 abseil-cpp jsoncpp gtest gtk2 ]; - - patches = [ - # Support linking system abseil-cpp - (fetchpatch { - url = "https://salsa.debian.org/debian/mozc/-/raw/debian/sid/debian/patches/0007-Update-src-base-absl.gyp.patch"; - sha256 = "UiS0UScDKyAusXOhc7Bg8dF8ARQQiVTylEhAOxqaZt8="; - }) - - ]; - - postUnpack = '' - unzip ${x-ken-all} -d $sourceRoot/src/ - unzip ${jigyosyo} -d $sourceRoot/src/ - mkdir $TMPDIR/unpack - tar xf ${utdic} -C $TMPDIR/unpack - cat $TMPDIR/unpack/mozcdic-ut-20220904/mozcdic-ut-20220904.txt >> $sourceRoot/src/data/dictionary_oss/dictionary00.txt - - rmdir $sourceRoot/src/third_party/breakpad/ - ln -s ${breakpad} $sourceRoot/src/third_party/breakpad - rmdir $sourceRoot/src/third_party/gtest/ - ln -s ${gtest} $sourceRoot/src/third_party/gtest - rmdir $sourceRoot/src/third_party/gyp/ - ln -s ${gyp} $sourceRoot/src/third_party/gyp - rmdir $sourceRoot/src/third_party/japanese_usage_dictionary/ - ln -s ${japanese_usage_dictionary} $sourceRoot/src/third_party/japanese_usage_dictionary - ''; - - # Copied from https://github.com/archlinux/svntogit-community/blob/packages/fcitx5-mozc/trunk/PKGBUILD - configurePhase = '' - cd src - export GYP_DEFINES="document_dir=$out/share/doc/mozc use_libzinnia=1 use_libprotobuf=1 use_libabseil=1" - - # disable fcitx4 - rm unix/fcitx/fcitx.gyp - - # gen zip code seed - PYTHONPATH="$PWD:$PYTHONPATH" python dictionary/gen_zip_code_seed.py --zip_code="x-ken-all.csv" --jigyosyo="JIGYOSYO.CSV" >> data/dictionary_oss/dictionary09.txt - - # use libstdc++ instead of libc++ - sed "/stdlib=libc++/d;/-lc++/d" -i gyp/common.gypi - - # run gyp - python build_mozc.py gyp --gypdir=${gyp}/bin --server_dir=$out/lib/mozc - ''; - - buildPhase = '' - runHook preBuild - - python build_mozc.py build -c Release \ - server/server.gyp:mozc_server \ - gui/gui.gyp:mozc_tool \ - unix/fcitx5/fcitx5.gyp:fcitx5-mozc - - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - - export PREFIX=$out - export _bldtype=Release - ../scripts/install_server - install -d $out/share/licenses/fcitx5-mozc - head -n 29 server/mozc_server.cc > $out/share/licenses/fcitx5-mozc/LICENSE - install -m644 data/installer/*.html $out/share/licenses/fcitx5-mozc/ - install -d $out/share/fcitx5/addon - install -d $out/share/fcitx5/inputmethod - install -d $out/lib/fcitx5 - ../scripts/install_fcitx5 - - runHook postInstall - ''; - - preFixup = '' - wrapQtApp $out/lib/mozc/mozc_tool - ''; - - passthru.tests = { - inherit (nixosTests) fcitx5; - }; - - meta = with lib; { - description = "Fcitx5 Module of A Japanese Input Method for Chromium OS, Windows, Mac and Linux (the Open Source Edition of Google Japanese Input)"; - homepage = "https://github.com/fcitx/mozc"; - license = licenses.bsd3; - maintainers = with maintainers; [ berberman govanify ]; - platforms = platforms.linux; - }; -} diff --git a/pkgs/tools/misc/diffoscope/default.nix b/pkgs/tools/misc/diffoscope/default.nix index 1dc01c72faaef..fc85e55b6630c 100644 --- a/pkgs/tools/misc/diffoscope/default.nix +++ b/pkgs/tools/misc/diffoscope/default.nix @@ -102,11 +102,11 @@ in # Note: when upgrading this package, please run the list-missing-tools.sh script as described below! python.pkgs.buildPythonApplication rec { pname = "diffoscope"; - version = "279"; + version = "282"; src = fetchurl { url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2"; - hash = "sha256-mP/l1/lFklFDBhXvnBjbcS8LZYqtfuCcG5SlD75RC/o="; + hash = "sha256-hp1SW9vHBZnlSNKCKW7AUPheyMntxvrPo0McDHZw96c="; }; outputs = [ diff --git a/pkgs/tools/misc/vtm/default.nix b/pkgs/tools/misc/vtm/default.nix index cddabd79db23f..33f866dd56d74 100644 --- a/pkgs/tools/misc/vtm/default.nix +++ b/pkgs/tools/misc/vtm/default.nix @@ -6,13 +6,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "vtm"; - version = "0.9.99.13"; + version = "0.9.99.35"; src = fetchFromGitHub { owner = "netxs-group"; repo = "vtm"; rev = "v${finalAttrs.version}"; - hash = "sha256-IXxbEwwwqqy5zepdJULlIsrz2csnpGXQhBzbc5AW7II="; + hash = "sha256-XPBInofzFNBMuJ0oP7ZooDuRukuXBWkEzdEq09MHykA="; }; nativeBuildInputs = [ diff --git a/pkgs/tools/networking/assh/default.nix b/pkgs/tools/networking/assh/default.nix index 43ed2dc16c8af..96672515e4d33 100644 --- a/pkgs/tools/networking/assh/default.nix +++ b/pkgs/tools/networking/assh/default.nix @@ -43,7 +43,7 @@ buildGoModule rec { homepage = "https://github.com/moul/assh"; changelog = "https://github.com/moul/assh/releases/tag/v${version}"; license = licenses.mit; - maintainers = with maintainers; [ zzamboni ]; + maintainers = with maintainers; [ ]; platforms = with platforms; linux ++ darwin; }; } diff --git a/pkgs/tools/networking/dnsmonster/default.nix b/pkgs/tools/networking/dnsmonster/default.nix index 0b32a8c90869c..782bd8518596f 100644 --- a/pkgs/tools/networking/dnsmonster/default.nix +++ b/pkgs/tools/networking/dnsmonster/default.nix @@ -1,31 +1,30 @@ -{ lib -, stdenv -, buildGoModule -, fetchFromGitHub -, libpcap +{ + lib, + stdenv, + buildGoModule, + fetchFromGitHub, + libpcap, }: buildGoModule rec { pname = "dnsmonster"; - version = "0.9.9"; + version = "1.0.0"; src = fetchFromGitHub { owner = "mosajjal"; - repo = pname; - rev = "v${version}"; - hash = "sha256-2k/WyAM8h2P2gCLt2J9m/ZekrzCyf/LULGOQYy5bsZs="; + repo = "dnsmonster"; + rev = "refs/tags/v${version}"; + hash = "sha256-0WHTrqnc3vYQro+nSsQipAPVymR8L4uOwtd9GJHxhVM="; }; - vendorHash = "sha256-gAjR1MoudBAx1dxGObIVPqJdfehWkKckKtwM7sTP0w4="; + vendorHash = "sha256-QCG/rhs4Y3lLDVU15cBNUZqbKc4faNAqKMhMOFwK2SY="; - buildInputs = [ - libpcap - ]; + buildInputs = [ libpcap ]; ldflags = [ "-s" "-w" - "-X github.com/mosajjal/dnsmonster/util.releaseVersion=${version}" + "-X=github.com/mosajjal/dnsmonster/util.releaseVersion=${version}" ]; meta = with lib; { diff --git a/pkgs/tools/security/metasploit/Gemfile b/pkgs/tools/security/metasploit/Gemfile index b4c9001f3d115..f14aae04e7e86 100644 --- a/pkgs/tools/security/metasploit/Gemfile +++ b/pkgs/tools/security/metasploit/Gemfile @@ -1,4 +1,4 @@ # frozen_string_literal: true source "https://rubygems.org" -gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.4.32" +gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.4.33" diff --git a/pkgs/tools/security/metasploit/Gemfile.lock b/pkgs/tools/security/metasploit/Gemfile.lock index 2d705c9f86344..0cab46fc0f1b8 100644 --- a/pkgs/tools/security/metasploit/Gemfile.lock +++ b/pkgs/tools/security/metasploit/Gemfile.lock @@ -1,9 +1,9 @@ GIT remote: https://github.com/rapid7/metasploit-framework - revision: a13f85c09fbf85c2f5f713b5b9a32b6200cc910d - ref: refs/tags/6.4.32 + revision: 1939065b94ee3c2033e720b753c5a6bd70e09c07 + ref: refs/tags/6.4.33 specs: - metasploit-framework (6.4.32) + metasploit-framework (6.4.33) aarch64 abbrev actionpack (~> 7.0.0) @@ -25,6 +25,7 @@ GIT dnsruby drb ed25519 + elftools em-http-request eventmachine faker @@ -45,7 +46,7 @@ GIT metasploit-model metasploit-payloads (= 2.0.183) metasploit_data_models - metasploit_payloads-mettle (= 1.0.32) + metasploit_payloads-mettle (= 1.0.35) mqtt msgpack (~> 1.6.0) mutex_m @@ -196,6 +197,8 @@ GEM domain_name (0.6.20240107) drb (2.2.1) ed25519 (1.3.0) + elftools (1.3.1) + bindata (~> 2) em-http-request (1.1.7) addressable (>= 2.3.4) cookiejar (!= 0.3.1) @@ -282,7 +285,7 @@ GEM railties (~> 7.0) recog webrick - metasploit_payloads-mettle (1.0.32) + metasploit_payloads-mettle (1.0.35) method_source (1.1.0) mini_portile2 (2.8.6) minitest (5.23.1) diff --git a/pkgs/tools/security/metasploit/default.nix b/pkgs/tools/security/metasploit/default.nix index 71b6556b100c6..074b6b8ceffe3 100644 --- a/pkgs/tools/security/metasploit/default.nix +++ b/pkgs/tools/security/metasploit/default.nix @@ -15,13 +15,13 @@ let }; in stdenv.mkDerivation rec { pname = "metasploit-framework"; - version = "6.4.32"; + version = "6.4.33"; src = fetchFromGitHub { owner = "rapid7"; repo = "metasploit-framework"; rev = "refs/tags/${version}"; - hash = "sha256-vNJxWj7B7LOWw1hE3bK6dX5kumfspWIaheGHpDit4kM="; + hash = "sha256-RMQEFRIArj2RuYk6GFDsGXpWRPANxD8OUJUQMtQUBW4="; }; nativeBuildInputs = [ diff --git a/pkgs/tools/security/metasploit/gemset.nix b/pkgs/tools/security/metasploit/gemset.nix index a2367cc4b787a..7f748cbe47693 100644 --- a/pkgs/tools/security/metasploit/gemset.nix +++ b/pkgs/tools/security/metasploit/gemset.nix @@ -399,6 +399,16 @@ }; version = "1.3.0"; }; + elftools = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1y5ahqk24ngjiyfbj5xapxwfb34yslcpn4l0khdq4pkxkajgqilx"; + type = "gem"; + }; + version = "1.3.1"; + }; em-http-request = { groups = ["default"]; platforms = []; @@ -724,12 +734,12 @@ platforms = []; source = { fetchSubmodules = false; - rev = "a13f85c09fbf85c2f5f713b5b9a32b6200cc910d"; - sha256 = "0hz2mlwa91z1hld659gccyx68zkmpardsi2qqfbb7v617rd73lmw"; + rev = "1939065b94ee3c2033e720b753c5a6bd70e09c07"; + sha256 = "0vh52ka3444ma073zi0dy125cyhrxi81hfl9p68kvbh028ah9i24"; type = "git"; url = "https://github.com/rapid7/metasploit-framework"; }; - version = "6.4.32"; + version = "6.4.33"; }; metasploit-model = { groups = ["default"]; @@ -766,10 +776,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0dbdcbqmi7l1y3nw6nv1sabjwy5qpkzl7pg8wqhq33mgnswi4afp"; + sha256 = "0fsnr4i0660nhlkq9iyy5x214l2ds3akf6jnngf2hlp8j01w1x4w"; type = "gem"; }; - version = "1.0.32"; + version = "1.0.35"; }; method_source = { groups = ["default"]; diff --git a/pkgs/tools/security/trufflehog/default.nix b/pkgs/tools/security/trufflehog/default.nix index d1f7465c02f36..3d4824d77135c 100644 --- a/pkgs/tools/security/trufflehog/default.nix +++ b/pkgs/tools/security/trufflehog/default.nix @@ -8,16 +8,16 @@ buildGoModule rec { pname = "trufflehog"; - version = "3.82.12"; + version = "3.82.13"; src = fetchFromGitHub { owner = "trufflesecurity"; repo = "trufflehog"; rev = "refs/tags/v${version}"; - hash = "sha256-eTZ+Bee9t0cf9uaG+Cwvq+sWalQt2IhrM6eGhs90GIk="; + hash = "sha256-QAo6BvkqG0EklyKLRMExNv+AZZeuTELYY0FdP8LDbZs="; }; - vendorHash = "sha256-MexqvYRGBHEVED3y0hWGGTwxRFI/LfyYE2IFLqChgWE="; + vendorHash = "sha256-P/Kt/ZLdjiULcRIXRVfUT9nkDGpl46VHRkeqt0mwaWc="; proxyVendor = true; diff --git a/pkgs/tools/system/htop/default.nix b/pkgs/tools/system/htop/default.nix index c0a689c4c6212..e9e1b2db6754a 100644 --- a/pkgs/tools/system/htop/default.nix +++ b/pkgs/tools/system/htop/default.nix @@ -1,4 +1,4 @@ -{ lib, fetchFromGitHub, stdenv, autoreconfHook, pkg-config +{ lib, fetchFromGitHub, fetchpatch2, stdenv, autoreconfHook, pkg-config , ncurses , IOKit , libcap @@ -20,6 +20,16 @@ stdenv.mkDerivation rec { hash = "sha256-qDhQkzY2zj2yxbgFUXwE0MGEgAFOsAhnapUuetO9WTw="; }; + patches = [ + # See https://github.com/htop-dev/htop/pull/1412 + # Remove when updating to 3.4.0 + (fetchpatch2 { + name = "htop-resolve-configuration-path.patch"; + url = "https://github.com/htop-dev/htop/commit/0dac8e7d38ec3aeae901a987717b5177986197e4.patch"; + hash = "sha256-Er1d/yV1fioYfEmXNlLO5ayAyXkyy+IaGSx1KWXvlv0="; + }) + ]; + nativeBuildInputs = [ autoreconfHook ] ++ lib.optional stdenv.hostPlatform.isLinux pkg-config ; diff --git a/pkgs/tools/text/asciigraph/default.nix b/pkgs/tools/text/asciigraph/default.nix index 46166d8c6370a..1b88b5041f14a 100644 --- a/pkgs/tools/text/asciigraph/default.nix +++ b/pkgs/tools/text/asciigraph/default.nix @@ -2,13 +2,13 @@ buildGoModule rec { pname = "asciigraph"; - version = "0.7.2"; + version = "0.7.3"; src = fetchFromGitHub { owner = "guptarohit"; repo = pname; rev = "v${version}"; - sha256 = "sha256-Y+RRFFCeuDjzTznpfC7Wn3j96ZCFSOzvb8ND/ATW+JI="; + sha256 = "sha256-+4aGkumO42cloHWV8qEEJ5bj8TTdtfXTWGFCgCRE4Mg="; }; vendorHash = null; diff --git a/pkgs/tools/text/ugrep/default.nix b/pkgs/tools/text/ugrep/default.nix index 1384d0219466d..1f78e322d95a1 100644 --- a/pkgs/tools/text/ugrep/default.nix +++ b/pkgs/tools/text/ugrep/default.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "ugrep"; - version = "6.5.0"; + version = "7.0.0"; src = fetchFromGitHub { owner = "Genivia"; repo = "ugrep"; rev = "v${finalAttrs.version}"; - hash = "sha256-IG1HH/mducD6VyQHAvO2xHT+rMFAT1cqAO06TGeIFik="; + hash = "sha256-bq/j+9FVKs8c7YHo1wHiQ3eFgD1dpe1buwfgrH2SZKI="; }; buildInputs = [ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b4ab680c4c0cb..22fc0a8625047 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6457,18 +6457,7 @@ with pkgs; m17n = callPackage ../tools/inputmethods/ibus-engines/ibus-m17n { }; - inherit mozc; - - mozc-ut = mozc.override { dictionaries = [ - mozcdic-ut-alt-cannadic - mozcdic-ut-edict2 - mozcdic-ut-jawiki - mozcdic-ut-neologd - mozcdic-ut-personal-names - mozcdic-ut-place-names - mozcdic-ut-skk-jisyo - mozcdic-ut-sudachidict - ]; }; + inherit mozc mozc-ut; openbangla-keyboard = libsForQt5.callPackage ../applications/misc/openbangla-keyboard { withIbusSupport = true; }; @@ -7407,12 +7396,6 @@ with pkgs; fcitx5-bamboo = callPackage ../tools/inputmethods/fcitx5/fcitx5-bamboo.nix { }; - fcitx5-mozc = libsForQt5.callPackage ../tools/inputmethods/fcitx5/fcitx5-mozc.nix { - abseil-cpp = abseil-cpp.override { - cxxStandard = "17"; - }; - }; - fcitx5-skk = qt6Packages.callPackage ../tools/inputmethods/fcitx5/fcitx5-skk.nix { }; fcitx5-anthy = callPackage ../tools/inputmethods/fcitx5/fcitx5-anthy.nix { }; @@ -9576,8 +9559,6 @@ with pkgs; libcork = callPackage ../development/libraries/libcork { }; - libconfig = callPackage ../development/libraries/libconfig { }; - libcmis = callPackage ../development/libraries/libcmis { }; libee = callPackage ../development/libraries/libee { }; @@ -24869,12 +24850,14 @@ with pkgs; postgresql_14 postgresql_15 postgresql_16 + postgresql_17 postgresql_12_jit postgresql_13_jit postgresql_14_jit postgresql_15_jit postgresql_16_jit + postgresql_17_jit ; postgresql = postgresql_16; postgresql_jit = postgresql_16_jit; @@ -24884,12 +24867,14 @@ with pkgs; postgresql13Packages = recurseIntoAttrs postgresql_13.pkgs; postgresql14Packages = recurseIntoAttrs postgresql_14.pkgs; postgresql15Packages = recurseIntoAttrs postgresql_15.pkgs; + postgresql16Packages = recurseIntoAttrs postgresql_16.pkgs; + postgresql17Packages = recurseIntoAttrs postgresql_17.pkgs; postgresql12JitPackages = recurseIntoAttrs postgresql_12_jit.pkgs; postgresql13JitPackages = recurseIntoAttrs postgresql_13_jit.pkgs; postgresql14JitPackages = recurseIntoAttrs postgresql_14_jit.pkgs; postgresql15JitPackages = recurseIntoAttrs postgresql_15_jit.pkgs; postgresql16JitPackages = recurseIntoAttrs postgresql_16_jit.pkgs; - postgresql16Packages = postgresqlPackages; + postgresql17JitPackages = recurseIntoAttrs postgresql_17_jit.pkgs; postgresql_jdbc = callPackage ../development/java-modules/postgresql_jdbc { }; @@ -24952,7 +24937,6 @@ with pkgs; prometheus-postfix-exporter = callPackage ../servers/monitoring/prometheus/postfix-exporter.nix { }; prometheus-postgres-exporter = callPackage ../servers/monitoring/prometheus/postgres-exporter.nix { }; prometheus-process-exporter = callPackage ../servers/monitoring/prometheus/process-exporter.nix { }; - prometheus-pushgateway = callPackage ../servers/monitoring/prometheus/pushgateway.nix { }; prometheus-pve-exporter = callPackage ../servers/monitoring/prometheus/pve-exporter.nix { }; prometheus-redis-exporter = callPackage ../servers/monitoring/prometheus/redis-exporter.nix { }; prometheus-rabbitmq-exporter = callPackage ../servers/monitoring/prometheus/rabbitmq-exporter.nix { }; @@ -33278,6 +33262,10 @@ with pkgs; inherit (darwin.apple_sdk.frameworks) Security Foundation; }; + warp-plus = callPackage ../by-name/wa/warp-plus/package.nix { + buildGoModule = buildGo122Module; + }; + warpd = callPackage ../applications/misc/warpd { }; watershot = callPackage ../applications/misc/watershot { }; @@ -33341,7 +33329,7 @@ with pkgs; webcord = callPackage ../by-name/we/webcord/package.nix { electron = electron_32; }; - webcord-vencord = callPackage ../by-name/we/webcord-vencord/package.nix { electron = electron_30; }; + webcord-vencord = callPackage ../by-name/we/webcord-vencord/package.nix { electron = electron_31; }; webex = callPackage ../applications/networking/instant-messengers/webex { }; diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix index 52559c01d36bd..e1b9ca9de1916 100644 --- a/pkgs/top-level/darwin-packages.nix +++ b/pkgs/top-level/darwin-packages.nix @@ -222,7 +222,8 @@ impure-cmds // apple-source-packages // apple-source-headers // stubs // { xcode_12 xcode_12_0_1 xcode_12_1 xcode_12_2 xcode_12_3 xcode_12_4 xcode_12_5 xcode_12_5_1 xcode_13 xcode_13_1 xcode_13_2 xcode_13_3 xcode_13_3_1 xcode_13_4 xcode_13_4_1 xcode_14 xcode_14_1 - xcode_15 xcode_15_1 xcode_15_2 xcode_15_3 xcode_15_4 + xcode_15 xcode_15_0_1 xcode_15_1 xcode_15_2 xcode_15_3 xcode_15_4 + xcode_16 xcode; xcodeProjectCheckHook = pkgs.makeSetupHook { diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index b981f3b9b4979..0d703f43124ee 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -7,7 +7,7 @@ { config , stdenv, lib, buildPackages, pkgs, darwin -, fetchurl, fetchpatch, fetchFromGitHub, fetchFromGitLab +, fetchurl, fetchpatch, fetchpatch2, fetchFromGitHub, fetchFromGitLab , perl, shortenPerlShebang , nixosTests }: @@ -959,10 +959,10 @@ with self; { Appperlbrew = buildPerlModule { pname = "App-perlbrew"; - version = "0.98"; + version = "1.00"; src = fetchurl { - url = "mirror://cpan/authors/id/G/GU/GUGOD/App-perlbrew-0.98.tar.gz"; - hash = "sha256-oWD3ESJYjdU12pTbsLgwHkjlONJaRCobE/cZCWKIWTI="; + url = "mirror://cpan/authors/id/G/GU/GUGOD/App-perlbrew-1.00.tar.gz"; + hash = "sha256-PKNFnK6f/VHef2i95CEtBx1hOLZEUo9izJDHikhSyss="; }; buildInputs = [ pkgs.curl FileWhich IOAll ModuleBuildTiny PathClass TestException TestNoWarnings TestOutput TestSpec TestTempDirTiny ]; propagatedBuildInputs = [ CPANPerlReleases CaptureTiny DevelPatchPerl PodParser locallib ]; @@ -992,15 +992,14 @@ with self; { }; AppSqitch = buildPerlModule { - version = "1.4.0"; + version = "1.4.1"; pname = "App-Sqitch"; src = fetchurl { - url = "mirror://cpan/authors/id/D/DW/DWHEELER/App-Sqitch-v1.4.0.tar.gz"; - hash = "sha256-sNs4cDH3dWJmLgA7xV16EComOAtK1/25qKO61XaeUBw="; + url = "mirror://cpan/authors/id/D/DW/DWHEELER/App-Sqitch-v1.4.1.tar.gz"; + hash = "sha256-yvMcyPdy46TJ1LP/Oo9oSm61sbPCYfTdwPkKiMNgB8Y="; }; - buildInputs = [ CaptureTiny TestDeep TestDir TestException TestFile TestFileContents TestMockModule TestMockObject TestNoWarnings TestWarn ]; - propagatedBuildInputs = [ Clone ConfigGitLike DBI DateTime EncodeLocale HashMerge IOPager IPCRun3 IPCSystemSimple ListMoreUtils PathClass PerlIOutf8_strict PodParser StringFormatter StringShellQuote TemplateTiny Throwable TypeTiny URIdb libintl-perl ]; - doCheck = false; # Can't find home directory. + buildInputs = [ CaptureTiny TestExit TestDeep TestDir TestException TestFile TestFileContents TestMockModule TestMockObject TestNoWarnings TestWarn ]; + propagatedBuildInputs = [ Clone ConfigGitLike DBI DateTime EncodeLocale HashMerge IOPager IPCRun3 IPCSystemSimple ListMoreUtils PathClass PerlIOutf8_strict PodParser StringFormatter StringShellQuote TemplateTiny Throwable TypeTiny URIdb libintl-perl AlgorithmBackoff ]; meta = { description = "Sensible database change management"; homepage = "https://sqitch.org"; @@ -15719,6 +15718,21 @@ with self; { }; }; + meta = buildPerlModule { + pname = "meta"; + version = "0.012"; + src = fetchurl { + url = "mirror://cpan/authors/id/P/PE/PEVANS/meta-0.012.tar.gz"; + hash = "sha256-Fx0J0wn4APVTTQE4tXMDmpYfEDtDaKhBC3dogzFuuFk="; + }; + buildInputs = [ Test2Suite ]; + meta = { + description = "Meta-programming API"; + license = with lib.licenses; [ artistic1 gpl1Plus ]; + maintainers = [ maintainers.zakame ]; + }; + }; + MetaBuilder = buildPerlModule { pname = "Meta-Builder"; version = "0.004"; @@ -19108,6 +19122,8 @@ with self; { }; }; + NetRemctl = callPackage ../development/perl-modules/NetRemctl { }; + NetServer = buildPerlPackage { pname = "Net-Server"; version = "2.014"; @@ -19221,7 +19237,39 @@ with self; { url = "mirror://cpan/authors/id/D/DT/DTOWN/Net-SNMP-v6.0.1.tar.gz"; hash = "sha256-FMN7wcuz883H1sE+DyeoWfFM3P1epUoEZ6iLwlmwt0E="; }; - doCheck = false; # The test suite fails, see https://rt.cpan.org/Public/Bug/Display.html?id=85799 + patches = [ + (fetchpatch2 { + url = "https://src.fedoraproject.org/rpms/perl-Net-SNMP/raw/6e1d3e8ff2b9bd38dab48301a9d8b5d81ef3b7fe/f/Net-SNMP-v6.0.1-Switch_from_Socket6_to_Socket.patch"; + hash = "sha256-IpVhqI+dXqzauTkLF0Doulg5U33FxHUhqFTp0jeMtMY="; + }) + (fetchpatch2 { + url = "https://src.fedoraproject.org/rpms/perl-Net-SNMP/raw/6e1d3e8ff2b9bd38dab48301a9d8b5d81ef3b7fe/f/Net-SNMP-v6.0.1-Simple_rewrite_to_Digest-HMAC-helpers.patch"; + hash = "sha256-ZXo9w2YLtPmM1SJLvIiLWefw7SwrTFyTo4eX6DG1yfA="; + }) + (fetchpatch2 { + url = "https://src.fedoraproject.org/rpms/perl-Net-SNMP/raw/6e1d3e8ff2b9bd38dab48301a9d8b5d81ef3b7fe/f/Net-SNMP-v6.0.1-Split_usm.t_to_two_parts.patch"; + hash = "sha256-A2gsD6DIX1aFSVLbSL/1zKSM1xiM6hWBadJJH7f5E8o="; + }) + (fetchpatch2 { + url = "https://src.fedoraproject.org/rpms/perl-Net-SNMP/raw/6e1d3e8ff2b9bd38dab48301a9d8b5d81ef3b7fe/f/Net-SNMP-v6.0.1-Add_tests_for_another_usm_scenarios.patch"; + hash = "sha256-U7nNuL35l/zdSzx1jgjp1PmLQn3xzzDw9DGnyeydi2E="; + }) + (fetchpatch2 { + url = "https://src.fedoraproject.org/rpms/perl-Net-SNMP/raw/6e1d3e8ff2b9bd38dab48301a9d8b5d81ef3b7fe/f/Net-SNMP-v6.0.1-Rewrite_from_Digest-SHA1-to-Digest-SHA.patch"; + hash = "sha256-dznhj1Fcy0iBBl92p825InjkNZixR2MURVQ/b9bVjtc="; + }) + ../development/perl-modules/net-snmp-add-sha-algorithms.patch + ]; + preCheck = + (lib.optionalString stdenv.hostPlatform.isLinux '' + export NIX_REDIRECTS=/etc/protocols=${pkgs.iana-etc}/etc/protocols + export LD_PRELOAD=${pkgs.libredirect}/lib/libredirect.so + ''); + propagatedBuildInputs = [ + CryptDES + CryptRijndael + DigestHMAC + ]; meta = { description = "Object oriented interface to SNMP"; license = with lib.licenses; [ artistic1 gpl1Plus ]; @@ -22113,6 +22161,21 @@ with self; { }; }; + ReturnMultiLevel = buildPerlPackage { + pname = "Return-MultiLevel"; + version = "0.08"; + src = fetchurl { + url = "mirror://cpan/authors/id/P/PL/PLICEASE/Return-MultiLevel-0.08.tar.gz"; + hash = "sha256-UbGu8wxcQAn2QCZ6CFiSEuh9zRAYAPDSD5xjXJ/+iKE="; + }; + buildInputs = [ TestFatal ]; + meta = { + homepage = "https://metacpan.org/pod/Return::MultiLevel"; + description = "Return across multiple call levels"; + license = with lib.licenses; [ artistic1 gpl1Plus ]; + }; + }; + ReturnValue = buildPerlPackage { pname = "Return-Value"; version = "1.666005"; @@ -25047,6 +25110,20 @@ with self; { }; }; + TestExit = buildPerlPackage { + pname = "Test-Exit"; + version = "0.11"; + src = fetchurl { + url = "mirror://cpan/authors/id/A/AR/ARODLAND/Test-Exit-0.11.tar.gz"; + hash = "sha256-+9qS034EgdGO68geSNAlIotXGExZstWm9r34cELox7I="; + }; + propagatedBuildInputs = [ ReturnMultiLevel ]; + meta = { + description = "Test whether code exits without terminating testing"; + license = with lib.licenses; [ artistic1 gpl1Plus ]; + }; + }; + TestExpect = buildPerlPackage { pname = "Test-Expect"; version = "0.34"; diff --git a/pkgs/top-level/php-packages.nix b/pkgs/top-level/php-packages.nix index cad0960de7a09..7665c2ff4b586 100644 --- a/pkgs/top-level/php-packages.nix +++ b/pkgs/top-level/php-packages.nix @@ -406,10 +406,13 @@ in { }) ] ++ lib.optionals (lib.versions.majorMinor php.version == "8.1") [ # Backport of PHP_LIBXML_IGNORE_DEPRECATIONS_START and PHP_LIBXML_IGNORE_DEPRECATIONS_END - ../development/interpreters/php/php81-fix-libxml2-2.13-compatibility.patch + (fetchpatch { + url = "https://github.com/php/php-src/commit/e2d97314ab342d434e778cd00a2f34e4bdb07664.patch"; + hash = "sha256-w0hyYUgbRGpvIBfWeDTSEUGpiJdyrtNjKy+Fn1vyAO0="; + }) # Fix build with libxml2 2.13+. Has to be applied after libxml2 2.12 patch. (fetchpatch { - url = "https://github.com/php/php-src/commit/9b4f6b09d58a4e54ee60443bf9a8b166852c03e0.patch"; + url = "https://github.com/php/php-src/commit/4fe821311cafb18ca8bdf20b9d796c48a13ba552.patch"; hash = "sha256-YC3I0BQi3o3+VmRu/UqpqPpaSC+ekPqzbORTHftbPvY="; }) ]; @@ -639,10 +642,13 @@ in { }) # Backport of PHP_LIBXML_IGNORE_DEPRECATIONS_START and PHP_LIBXML_IGNORE_DEPRECATIONS_END # Required for libxml2 2.13 compatibility patch. - ../development/interpreters/php/php81-fix-libxml2-2.13-compatibility.patch + (fetchpatch { + url = "https://github.com/php/php-src/commit/e2d97314ab342d434e778cd00a2f34e4bdb07664.patch"; + hash = "sha256-w0hyYUgbRGpvIBfWeDTSEUGpiJdyrtNjKy+Fn1vyAO0="; + }) # Fix build with libxml2 2.13+. Has to be applied after libxml2 2.12 patch. (fetchpatch { - url = "https://github.com/php/php-src/commit/9b4f6b09d58a4e54ee60443bf9a8b166852c03e0.patch"; + url = "https://github.com/php/php-src/commit/4fe821311cafb18ca8bdf20b9d796c48a13ba552.patch"; hash = "sha256-YC3I0BQi3o3+VmRu/UqpqPpaSC+ekPqzbORTHftbPvY="; }) ]; @@ -677,10 +683,13 @@ in { }) # Backport of PHP_LIBXML_IGNORE_DEPRECATIONS_START and PHP_LIBXML_IGNORE_DEPRECATIONS_END # Required for libxml2 2.13 compatibility patch. - ../development/interpreters/php/php81-fix-libxml2-2.13-compatibility.patch + (fetchpatch { + url = "https://github.com/php/php-src/commit/e2d97314ab342d434e778cd00a2f34e4bdb07664.patch"; + hash = "sha256-w0hyYUgbRGpvIBfWeDTSEUGpiJdyrtNjKy+Fn1vyAO0="; + }) # Fix build with libxml2 2.13+. Has to be applied after libxml2 2.12 patch. (fetchpatch { - url = "https://github.com/php/php-src/commit/9b4f6b09d58a4e54ee60443bf9a8b166852c03e0.patch"; + url = "https://github.com/php/php-src/commit/4fe821311cafb18ca8bdf20b9d796c48a13ba552.patch"; hash = "sha256-YC3I0BQi3o3+VmRu/UqpqPpaSC+ekPqzbORTHftbPvY="; }) ]; @@ -727,10 +736,13 @@ in { }) # Backport of PHP_LIBXML_IGNORE_DEPRECATIONS_START and PHP_LIBXML_IGNORE_DEPRECATIONS_END # Required for libxml2 2.13 compatibility patch. - ../development/interpreters/php/php81-fix-libxml2-2.13-compatibility.patch + (fetchpatch { + url = "https://github.com/php/php-src/commit/e2d97314ab342d434e778cd00a2f34e4bdb07664.patch"; + hash = "sha256-w0hyYUgbRGpvIBfWeDTSEUGpiJdyrtNjKy+Fn1vyAO0="; + }) # Fix build with libxml2 2.13+. Has to be applied after libxml2 2.12 patch. (fetchpatch { - url = "https://github.com/php/php-src/commit/9b4f6b09d58a4e54ee60443bf9a8b166852c03e0.patch"; + url = "https://github.com/php/php-src/commit/4fe821311cafb18ca8bdf20b9d796c48a13ba552.patch"; hash = "sha256-YC3I0BQi3o3+VmRu/UqpqPpaSC+ekPqzbORTHftbPvY="; }) ]; @@ -762,10 +774,13 @@ in { }) # Backport of PHP_LIBXML_IGNORE_DEPRECATIONS_START and PHP_LIBXML_IGNORE_DEPRECATIONS_END # Required for libxml2 2.13 compatibility patch. - ../development/interpreters/php/php81-fix-libxml2-2.13-compatibility.patch + (fetchpatch { + url = "https://github.com/php/php-src/commit/e2d97314ab342d434e778cd00a2f34e4bdb07664.patch"; + hash = "sha256-w0hyYUgbRGpvIBfWeDTSEUGpiJdyrtNjKy+Fn1vyAO0="; + }) # Fix build with libxml2 2.13+. Has to be applied after libxml2 2.12 patch. (fetchpatch { - url = "https://github.com/php/php-src/commit/9b4f6b09d58a4e54ee60443bf9a8b166852c03e0.patch"; + url = "https://github.com/php/php-src/commit/4fe821311cafb18ca8bdf20b9d796c48a13ba552.patch"; hash = "sha256-YC3I0BQi3o3+VmRu/UqpqPpaSC+ekPqzbORTHftbPvY="; }) ]; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 2f111436d65dd..c1c10169c0d73 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1478,6 +1478,8 @@ self: super: with self; { basemap-data = callPackage ../development/python-modules/basemap-data { }; + basemap-data-hires = callPackage ../development/python-modules/basemap-data-hires { }; + bases = callPackage ../development/python-modules/bases { }; bash-kernel = callPackage ../development/python-modules/bash-kernel { }; @@ -1755,6 +1757,8 @@ self: super: with self; { bokeh = callPackage ../development/python-modules/bokeh { }; + bokeh-sampledata = callPackage ../development/python-modules/bokeh-sampledata { }; + boltons = callPackage ../development/python-modules/boltons { }; boltztrap2 = callPackage ../development/python-modules/boltztrap2 { }; @@ -9526,6 +9530,8 @@ self: super: with self; { ordered-set = callPackage ../development/python-modules/ordered-set { }; + orderly-set = callPackage ../development/python-modules/orderly-set { }; + orderedset = callPackage ../development/python-modules/orderedset { }; orgparse = callPackage ../development/python-modules/orgparse { }; @@ -13555,6 +13561,10 @@ self: super: with self; { remarshal = callPackage ../development/python-modules/remarshal { }; + remctl = callPackage ../development/python-modules/remctl { + remctl-c = pkgs.remctl; + }; + remi = callPackage ../development/python-modules/remi { }; remote-pdb = callPackage ../development/python-modules/remote-pdb { }; @@ -15141,6 +15151,8 @@ self: super: with self; { stringparser = callPackage ../development/python-modules/stringparser { }; + stringzilla = callPackage ../development/python-modules/stringzilla { }; + stripe = callPackage ../development/python-modules/stripe { }; striprtf = callPackage ../development/python-modules/striprtf { }; @@ -15786,6 +15798,8 @@ self: super: with self; { toposort = callPackage ../development/python-modules/toposort { }; + toptica-lasersdk = callPackage ../development/python-modules/toptica-lasersdk { }; + torch = callPackage ../development/python-modules/torch { }; # Required to test triton