diff --git a/doc/languages-frameworks/index.md b/doc/languages-frameworks/index.md index 57c6d11ae6e0..bf2e46db0de7 100644 --- a/doc/languages-frameworks/index.md +++ b/doc/languages-frameworks/index.md @@ -79,6 +79,7 @@ ios.section.md java.section.md javascript.section.md julia.section.md +lean4.section.md lisp.section.md lua.section.md maven.section.md diff --git a/doc/languages-frameworks/lean4.section.md b/doc/languages-frameworks/lean4.section.md new file mode 100644 index 000000000000..62f88bd0371f --- /dev/null +++ b/doc/languages-frameworks/lean4.section.md @@ -0,0 +1,51 @@ +# Lean 4 {#sec-language-lean4} + +Lean 4 is a strict functional language with dependent types. `leanPackages` provides the toolchain and a curated set of libraries — including the full mathlib dependency tree — with its own Lean toolchain. A standalone compiler is also available as `pkgs.lean4` for use outside the package set. + +## Building Lean 4 projects with `buildLakePackage` {#lean4-buildLakePackage} + +```nix +leanPackages.buildLakePackage { + pname = "my-project"; + version = "0.1.0"; + src = ./.; + leanDeps = with leanPackages; [ mathlib ]; + lakeHash = null; # all deps nix-managed; set to lib.fakeHash for Lake-managed deps +} +``` + +Dependencies are declared in the lakefile for Lake and in the Nix expression for Nix. `leanDeps` provides Nix-managed libraries whose `.olean` files — the default build artifact of the Lake library facet — are reused without recompilation. `buildLakePackage` injects them via `lake --packages`, which takes precedence over Lake's own dependency resolution, producing a hermetic build. + +Sui generis among nixpkgs builders, `buildLakePackage` supports heterogeneous dependency resolution, in that Nix transparently substitutes for upstream-managed dependencies at per-package granularity: Nix-managed dependencies via `leanDeps` and Lake-managed dependencies via `lakeHash` compose in the same derivation. Setting `lakeHash = lib.fakeHash` and building will report the expected hash for a fixed-output derivation that pins what Lake would normally fetch, less Nix-managed dependencies. Nix-managed dependencies take precedence by name — so moving a dependency from `lakeHash` to `leanDeps` will change the expected hash — providing an on-ramp for projects to incrementally adopt nix-managed libraries. Setting `lakeHash = null` (the default) declares that all dependencies are Nix-managed and no fixed-output fetch is performed during the build. + +A `lake-manifest.json` is required at the project root. If all dependencies are Nix-managed, an empty manifest suffices: + +```json +{"version":"1.1.0","packagesDir":".lake/packages","packages":[]} +``` + +## Development shells {#lean4-dev-shells} + +In `nix develop`, the scoped `lean4` and `buildLakePackage` provide the same toolchain used for hermetic builds. Note that Lake's normal dependency resolution is available in the shell — Lake may fetch dependencies not covered by `leanDeps` from the network, as is standard for Nix development shells. + +## The `leanPackages` scope {#lean4-leanPackages} + +`leanPackages` is a `lib.makeScope` with its own `lean4`. Overriding it propagates to all packages and to `buildLakePackage`: + +```nix +leanPackages.overrideScope ( + self: super: { + lean4 = myCustomLean4; + } +) +``` + +The `lean4` supplied by `leanPackages` is binary-patched to ensure that the Lean language server discovers the wrapped `lake` rather than an unwrapped one. This is necessary because Lake's `serve` subcommand has a vexing invocation pattern: it derives `LAKE` from `IO.appPath` and unconditionally sets it in the spawned environment, bypassing any wrapper. The binary patch rewrites store path references so that this discovery mechanism finds the correct binary, enabling LSP integration — including the InfoView, which requires Lean-specific protocol extensions — without improper mutation of the user's project directory. + +Note that `leanPackages.lean4` supplants Lake's built-in cache invalidation for dependencies in `/nix/store/`, deferring entirely to Nix's bespoke dependency model. Lake's trace validation — which checks compiler "hash," platform, and package identity — is gracefully subsumed by guarantees Nix already provides. Cache coherence responsibilities are delegated to the orchestrator of streamlined Nix integration. + +For Emacs, `emacsPackages.nael` and `emacsPackages.nael-lsp` (eglot-based and lsp-mode-based respectively, available via MELPA) provide Lean 4 support including proof state display via eldoc. For VSCode (unfree) / VSCodium, `vscode-extensions.leanprover.lean4` is available. Editor packages discover the toolchain from `PATH`. + +## Relationship to earlier Lean 4 Nix support {#lean4-history} + +Users familiar with the per-module derivation approach (2020–2025) should note that `buildLakePackage` follows a different architecture. The earlier integration discovered dependencies at evaluation time via import-from-derivation — an ambitious attempt to reconcile declarative package management with fine-grained build semantics, ultimately undermined by Nix's own evaluation model. It was [removed upstream](https://github.com/leanprover/lean4/commit/535435955b482176e8d62a54deebcacdec0827db). `buildLakePackage` treats Lake as a build driver and uses Nix for package-level boundaries, while `nix develop` and `nix-shell` achieve feature parity with the vanilla Lake development experience. diff --git a/doc/redirects.json b/doc/redirects.json index 7788bfee3528..732efd15fd07 100644 --- a/doc/redirects.json +++ b/doc/redirects.json @@ -3597,6 +3597,9 @@ "sec-language-java": [ "index.html#sec-language-java" ], + "sec-language-lean4": [ + "index.html#sec-language-lean4" + ], "language-javascript": [ "index.html#language-javascript" ], @@ -3756,6 +3759,18 @@ "julia-withpackage-arguments": [ "index.html#julia-withpackage-arguments" ], + "lean4-buildLakePackage": [ + "index.html#lean4-buildLakePackage" + ], + "lean4-dev-shells": [ + "index.html#lean4-dev-shells" + ], + "lean4-history": [ + "index.html#lean4-history" + ], + "lean4-leanPackages": [ + "index.html#lean4-leanPackages" + ], "lisp": [ "index.html#lisp" ], diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 7401acb68b2b..e403dc30ee45 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -18737,7 +18737,7 @@ name = "nadir-ishiguro"; }; nadja-y = { - email = "git@njy.dev"; + email = "nadja@njy.dev"; github = "nadja-y"; githubId = 255079535; name = "Nadja Yang"; diff --git a/nixos/doc/manual/configuration/ad-hoc-network-config.section.md b/nixos/doc/manual/configuration/ad-hoc-network-config.section.md index 7ef24825526d..611f3e3956ee 100644 --- a/nixos/doc/manual/configuration/ad-hoc-network-config.section.md +++ b/nixos/doc/manual/configuration/ad-hoc-network-config.section.md @@ -1,14 +1,24 @@ # Ad-Hoc Configuration {#ad-hoc-network-config} -You can use [](#opt-networking.localCommands) to -specify shell commands to be run at the end of `network-setup.service`. This -is useful for doing network configuration not covered by the existing NixOS -modules. For instance, to statically configure an IPv6 address: +You can use [](#opt-networking.localCommands) to specify shell commands to be +run after the network interfaces have been created, but not necessarily fully +configured. +This is useful for doing network configuration not covered by the existing +NixOS modules. For example, you can create a network namespace and a pair +of virtual ethernet devices like this: ```nix { networking.localCommands = '' - ip -6 addr add 2001:610:685:1::1/64 dev eth0 + ip netns add mynet + ip link add name veth-in type veth peer name veth-out + ip link set dev veth-out netns mynet ''; } ``` + +::: {.note} +The commands should ideally be idempotent, so it's recommended to perform +cleanups of the state you create (e.g. virtual interfaces), or at least make +sure possible failures are handled. +::: diff --git a/nixos/doc/manual/configuration/ipv4-config.section.md b/nixos/doc/manual/configuration/ipv4-config.section.md index ed0db9da8c3e..ceb9a350b680 100644 --- a/nixos/doc/manual/configuration/ipv4-config.section.md +++ b/nixos/doc/manual/configuration/ipv4-config.section.md @@ -26,9 +26,16 @@ servers: ``` ::: {.note} -Statically configured interfaces are set up by the systemd service -`interface-name-cfg.service`. The default gateway and name server -configuration is performed by `network-setup.service`. +Addresses and routes for statically configured interfaces and the default +gateway are set up by systemd services named +`network-addresses-.service`. The name servers configuration, +instead, is performed by `network-local-commands.service` using resolvconf. +::: + +::: {.note} +If needed, for example if addresses/routes were added/removed, +you can reset the network configuration by running +`systemctl restart networking-scripted.target` ::: The host name is set using [](#opt-networking.hostName): diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index 482d690ed62f..0b93852ee432 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -223,6 +223,13 @@ See . Note for NetworkManager users: before these changes NetworkManager used to spawn its own wpa_supplicant daemon, but now it relies on `networking.wireless`. So, if you had `networking.wireless.enable = false` in your configuration, you should remove that line. +- Some implementation details of the NixOS network-interfaces module have been changed: + + - In the "scripted" backend, `network-setup.service` has been removed and the network configuration services are now part of `network.target`, which is now directly pulled into `multi-user.target`. + - Interface addresses, routes and default gateways are now configured asynchronously as soon as the underlying network devices become available (fixes issue [#154737](https://github.com/NixOS/nixpkgs/issues/154737)). + - In both "networkd" and "scripted" backends, the configuration of name servers is now part of `network-local-commands.service` (fixes issue [#445496](https://github.com/NixOS/nixpkgs/issues/445496)). + - The issue that resulted in a completely unconfigured network if both `resolvconf` was disabled and no default gateway configured, has also been fixed. + - `kratos` has been updated from 1.3.1 to [25.4.0](https://github.com/ory/kratos/releases/tag/v25.4.0). Upstream switched to a new versioning scheme (year.major.minor). Notable breaking changes: - The `migrate sql` CLI command is now `migrate sql up` diff --git a/nixos/lib/test-driver/src/test_driver/driver.py b/nixos/lib/test-driver/src/test_driver/driver.py index 8cbcb052be49..9188e195cb35 100644 --- a/nixos/lib/test-driver/src/test_driver/driver.py +++ b/nixos/lib/test-driver/src/test_driver/driver.py @@ -228,6 +228,7 @@ class Driver: general_symbols = dict( start_all=self.start_all, test_script=self.test_script, + machines=self.machines, machines_qemu=self.machines_qemu, machines_nspawn=self.machines_nspawn, vlans=self.vlans, @@ -243,6 +244,8 @@ class Driver: serial_stdout_on=self.serial_stdout_on, polling_condition=self.polling_condition, BaseMachine=BaseMachine, # for typing + QemuMachine=QemuMachine, # for typing + NspawnMachine=NspawnMachine, # for typing t=AssertionTester(), debug=self.debug, ) @@ -369,7 +372,7 @@ class Driver: *, name: str | None = None, keep_machine_state: bool = False, - ) -> BaseMachine: + ) -> QemuMachine: """ Create a `QemuMachine`. This currently only supports qemu "nodes", not containers. """ diff --git a/nixos/lib/test-script-prepend.py b/nixos/lib/test-script-prepend.py index b9a12d5f2f54..e836e779300c 100644 --- a/nixos/lib/test-script-prepend.py +++ b/nixos/lib/test-script-prepend.py @@ -36,7 +36,7 @@ class CreateMachineProtocol(Protocol): name: Optional[str] = None, keep_machine_state: bool = False, **kwargs: Any, # to allow usage of deprecated keep_vm_state - ) -> BaseMachine: + ) -> QemuMachine: raise Exception("This is just type information for the Nix test driver") @@ -45,6 +45,8 @@ subtest: Callable[[str], ContextManager[None]] retry: RetryProtocol test_script: Callable[[], None] machines: List[BaseMachine] +machines_qemu: List[QemuMachine] +machines_nspawn: List[NspawnMachine] vlans: List[VLan] driver: Driver log: AbstractLogger diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index ecc3b3c355dc..346fe03471eb 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -84,7 +84,7 @@ in tor = 35; cups = 36; foldingathome = 37; - #sabnzbd = 38; # dropped in 25.11 + #sabnzbd = 38; # dropped in 26.05 #kdm = 39; # dropped in 17.03 #ghostone = 40; # dropped in 18.03 git = 41; @@ -570,7 +570,7 @@ in lambdabot = 191; asterisk = 192; plex = 193; - #sabnzbd = 194; # dropped in 25.11 + #sabnzbd = 194; # dropped in 26.05 #grafana = 196; #unused #skydns = 197; #unused # ripple-rest = 198; # unused, removed 2017-08-12 diff --git a/nixos/modules/security/pam.nix b/nixos/modules/security/pam.nix index 9f5ad83e0746..d568b32a45a3 100644 --- a/nixos/modules/security/pam.nix +++ b/nixos/modules/security/pam.nix @@ -666,6 +666,137 @@ let }; }; + slurm = { + enable = lib.mkOption { + default = false; + type = lib.types.bool; + description = '' + If set, ONLY prevents users from logging into nodes if they have no + jobs in the node. This module is a legacy implementation with + functionality limited to login restrictions. + ''; + }; + + adopt = { + enable = lib.mkOption { + default = false; + type = lib.types.bool; + description = '' + If set, it prevents users from logging into nodes if they have no jobs + in the node. It also tracks any other spawned processes for accounting + and ensures complete job cleanup when a job is completed for any + successful connection. Spawned processes get "adopted" as external + steps into the current job. As such, those steps get integrated with + Slurm accounting and control group facilities. + ''; + }; + + settings = lib.mkOption { + type = lib.types.submodule { + freeformType = moduleSettingsType; + options = { + + action_no_jobs = lib.mkOption { + type = lib.types.enum [ + "ignore" + "deny" + ]; + default = "deny"; + description = '' + What to do if no jobs from the user are found, deny or ignore + (pass along to next PAM module). + ''; + }; + + action_unknown = lib.mkOption { + type = lib.types.enum [ + "newest" + "allow" + "deny" + ]; + default = "newest"; + description = '' + If the user has jobs, attach them to the newest job. Allow + the connection through without adoption. + ''; + }; + + action_adopt_failure = lib.mkOption { + type = lib.types.enum [ + "allow" + "deny" + ]; + default = "deny"; + description = '' + What to do if the process is unable to be adopted into a job. + `allow` matches the upstream default which is only really + suitable for testing; production systems will want `deny` + as a default. + ''; + }; + + action_generic_failure = lib.mkOption { + type = lib.types.enum [ + "ignore" + "allow" + "deny" + ]; + default = "ignore"; + description = '' + Catch all for failures related to kernel issues or slurmd + access. Ignore falls through to the next PAM module, allowing + the connection to go through without adoption. + ''; + }; + + disable_x11 = lib.mkOption { + type = lib.types.enum [ + "0" + "1" + ]; + default = "0"; + description = '' + Disable or enable x11 sessions. '0' means the adopted connection + has Slurm X11 forwarding with DISPLAY overwritten using X11 + tunnel endpoint details. + ''; + }; + + nodename = lib.mkOption { + type = with lib.types; nullOr nonEmptyStr; + default = null; + example = "compute-a-01"; + description = '' + Set this only when the Slurm `NodeName` for this machine + differs from `hostname -s`. If unset, `pam_slurm_adopt` + uses the host short name. + ''; + }; + + join_container = lib.mkOption { + type = lib.types.enum [ + "true" + "false" + ]; + default = "true"; + description = '' + Attach to a container created by job_container/tmpfs + ''; + }; + }; + }; + + default = { + service = name; + }; + description = '' + Slurm Adopt Settings. More information is available at: + - https://slurm.schedmd.com/pam_slurm_adopt.html + ''; + }; + }; + }; + zfs = lib.mkOption { default = config.security.pam.zfs.enable; defaultText = lib.literalExpression "config.security.pam.zfs.enable"; @@ -810,6 +941,12 @@ let control = "sufficient"; modulePath = "${config.systemd.package}/lib/security/pam_systemd_home.so"; } + { + name = "slurm"; + enable = cfg.slurm.enable; + control = "required"; + modulePath = "${pkgs.slurm}/lib/security/pam_slurm.so"; + } # The required pam_unix.so module has to come after all the sufficient modules # because otherwise, the account lookup will fail if the user does not exist # locally, for example with MySQL- or LDAP-auth. @@ -818,6 +955,15 @@ let control = "required"; modulePath = "${package}/lib/security/pam_unix.so"; } + # pam_slurm_adopt must be the last module in the account stack. + { + name = "slurm_adopt"; + enable = cfg.slurm.adopt.enable; + control = "required"; + modulePath = "${pkgs.slurm}/lib/security/pam_slurm_adopt.so"; + settings = cfg.slurm.adopt.settings; + } + ]; auth = autoOrderRules ( diff --git a/nixos/modules/services/home-automation/matter-server.nix b/nixos/modules/services/home-automation/matter-server.nix index 8231d108d135..ac9058aeae7a 100644 --- a/nixos/modules/services/home-automation/matter-server.nix +++ b/nixos/modules/services/home-automation/matter-server.nix @@ -14,7 +14,7 @@ in { meta.maintainers = with lib.maintainers; [ leonm1 ]; - options.services.matter-server = with lib.types; { + options.services.matter-server = { enable = lib.mkEnableOption "Matter-server"; package = lib.mkPackageOption pkgs "python-matter-server" { }; @@ -44,10 +44,10 @@ in }; extraArgs = lib.mkOption { - type = listOf str; - default = [ ]; + type = lib.types.attrs; + default = { }; description = '' - Extra arguments to pass to the matter-server executable. + Attribute set of extra arguments to pass to the matter-server executable. See for options. ''; }; @@ -62,41 +62,52 @@ in wants = [ "network-online.target" ]; wantedBy = [ "multi-user.target" ]; description = "Matter Server"; - environment.HOME = storagePath; + environment = { + HOME = storagePath; + SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; + }; + script = '' + # `python-matter-server` writes to /data even when a storage-path is + # specified. This symlinks /data at the systemd-managed + # /var/lib/matter-server, so all files get dropped into the state + # directory. + ln -s $STATE_DIRECTORY $RUNTIME_DIRECTORY/data + + # Create directories to hold certificates and OTA updates. + CERT_DIR="$CACHE_DIRECTORY/certs" + mkdir -p "$CERT_DIR" + OTA_UPDATE_DIR="$CACHE_DIRECTORY/updates" + mkdir -p "$OTA_UPDATE_DIR" + + "${lib.getExe cfg.package}" ${ + lib.concatStringsSep " " ( + lib.cli.toCommandLineGNU { } ( + { + port = cfg.port; + vendorid = vendorId; + storage-path = storagePath; + log-level = cfg.logLevel; + paa-root-cert-dir = "$CERT_DIR"; + ota-provider-dir = "$OTA_UPDATE_DIR"; + } + // cfg.extraArgs + ) + ) + } + ''; serviceConfig = { - ExecStart = ( - lib.concatStringsSep " " [ - # `python-matter-server` writes to /data even when a storage-path - # is specified. This symlinks /data at the systemd-managed - # /var/lib/matter-server, so all files get dropped into the state - # directory. - "${pkgs.bash}/bin/sh" - "-c" - "'" - "${pkgs.coreutils}/bin/ln -s %S/matter-server/ %t/matter-server/root/data" - "&&" - "${cfg.package}/bin/matter-server" - "--port" - (toString cfg.port) - "--vendorid" - vendorId - "--storage-path" - storagePath - "--log-level" - "${cfg.logLevel}" - "${lib.escapeShellArgs cfg.extraArgs}" - "'" - ] - ); # Start with a clean root filesystem, and allowlist what the container # is permitted to access. # See https://discourse.nixos.org/t/hardening-systemd-services/17147/14. RuntimeDirectory = [ "matter-server/root" ]; RootDirectory = "%t/matter-server/root"; + CacheDirectory = [ "matter-server" ]; - # Allowlist /nix/store (to allow the binary to find its dependencies) - # and dbus. - BindReadOnlyPaths = "/nix/store /run/dbus"; + BindReadOnlyPaths = [ + "/nix/store" # To allow the binary to find its dependencies. + "/run/dbus" + "/etc/resolv.conf" # For DNS resolution. + ]; # Let systemd manage `/var/lib/matter-server` for us inside the # ephemeral TemporaryFileSystem. StateDirectory = storageDir; diff --git a/nixos/modules/services/networking/sabnzbd/default.nix b/nixos/modules/services/networking/sabnzbd/default.nix index 4d16ddfd9a22..d4a894faf96f 100644 --- a/nixos/modules/services/networking/sabnzbd/default.nix +++ b/nixos/modules/services/networking/sabnzbd/default.nix @@ -33,7 +33,7 @@ let "__version__" = 19; "__encoding__" = "utf-8"; }; - allSettings = cfg.settings // mandatoryGlobalSettings; + allSettings = mandatoryGlobalSettings // cfg.settings; # sabnzbd uses configobj type inis, which support # nested sections specified by increasing numbers @@ -514,10 +514,7 @@ in systemd.services.sabnzbd = let files = - if cfg.configFile != null then - [ sabnzbdIniPath ] - else - (lib.optional cfg.allowConfigWrite sabnzbdIniPath) ++ [ publicSettingsIni ] ++ cfg.secretFiles; + (lib.optional cfg.allowConfigWrite sabnzbdIniPath) ++ [ publicSettingsIni ] ++ cfg.secretFiles; iniPathQuoted = lib.escapeShellArg sabnzbdIniPath; in { @@ -532,11 +529,18 @@ in StateDirectory = cfg.stateDir; ExecStart = "${lib.getExe cfg.package} -d -f ${iniPathQuoted}"; }; + } + // lib.optionalAttrs (cfg.configFile == null) { preStart = '' set -euo pipefail ${lib.toShellVar "files" files} + # We overwrite this immediately, but the merge script requires that + # all files exist + # See also: nixpkgs #504224 + (touch ${iniPathQuoted} 2>/dev/null || true) + tmpfile=$(mktemp) ${lib.getExe (pkgs.python3.withPackages (py: [ py.configobj ]))} \ diff --git a/nixos/modules/services/video/wivrn.nix b/nixos/modules/services/video/wivrn.nix index 522a2dc174ea..0515d93d71cb 100644 --- a/nixos/modules/services/video/wivrn.nix +++ b/nixos/modules/services/video/wivrn.nix @@ -72,6 +72,11 @@ let ); in { + imports = [ + (lib.mkRemovedOptionModule [ "services" "wivrn" "defaultRuntime" ] '' + WiVRn now manages the active runtime itself, so this option has been removed. + '') + ]; options = { services.wivrn = { enable = mkEnableOption "WiVRn, an OpenXR streaming application"; diff --git a/nixos/modules/services/web-apps/grocy.nix b/nixos/modules/services/web-apps/grocy.nix index d6095b50fa8a..8106cc06fd2b 100644 --- a/nixos/modules/services/web-apps/grocy.nix +++ b/nixos/modules/services/web-apps/grocy.nix @@ -216,6 +216,7 @@ in systemd.services.grocy-setup = { wantedBy = [ "multi-user.target" ]; before = [ "phpfpm-grocy.service" ]; + unitConfig.RequiresMountsFor = [ cfg.dataDir ]; script = '' rm -rf ${cfg.dataDir}/viewcache/* ''; diff --git a/nixos/modules/system/boot/loader/grub/install-grub.pl b/nixos/modules/system/boot/loader/grub/install-grub.pl index f5ae844da21f..f61c91f02db8 100644 --- a/nixos/modules/system/boot/loader/grub/install-grub.pl +++ b/nixos/modules/system/boot/loader/grub/install-grub.pl @@ -685,12 +685,14 @@ struct(GrubState => { efi => '$', devices => '$', efiMountPoint => '$', + grub => '$', + grubEfi => '$', extraGrubInstallArgs => '@', }); # If you add something to the state file, only add it to the end # because it is read line-by-line. sub readGrubState { - my $defaultGrubState = GrubState->new(name => "", version => "", efi => "", devices => "", efiMountPoint => "", extraGrubInstallArgs => () ); + my $defaultGrubState = GrubState->new(name => "", version => "", efi => "", devices => "", efiMountPoint => "", grub => "", grubEfi => "", extraGrubInstallArgs => () ); open my $fh, "<", "$bootPath/grub/state" or return $defaultGrubState; local $/ = "\n"; my $name = <$fh>; @@ -721,8 +723,10 @@ sub readGrubState { } my %jsonState = %{decode_json($jsonStateLine)}; my @extraGrubInstallArgs = exists($jsonState{'extraGrubInstallArgs'}) ? @{$jsonState{'extraGrubInstallArgs'}} : (); + my $grubValue = exists($jsonState{'grub'}) ? $jsonState{'grub'} : ""; + my $grubEfiValue = exists($jsonState{'grubEfi'}) ? $jsonState{'grubEfi'} : ""; close $fh; - my $grubState = GrubState->new(name => $name, version => $version, efi => $efi, devices => $devices, efiMountPoint => $efiMountPoint, extraGrubInstallArgs => \@extraGrubInstallArgs ); + my $grubState = GrubState->new(name => $name, version => $version, efi => $efi, devices => $devices, efiMountPoint => $efiMountPoint, extraGrubInstallArgs => \@extraGrubInstallArgs, grub => $grubValue, grubEfi => $grubEfiValue ); return $grubState } @@ -734,15 +738,16 @@ my @prevExtraGrubInstallArgs = @{$prevGrubState->extraGrubInstallArgs}; my $devicesDiffer = scalar (List::Compare->new( '-u', '-a', \@deviceTargets, \@prevDeviceTargets)->get_symmetric_difference()); my $extraGrubInstallArgsDiffer = scalar (List::Compare->new( '-u', '-a', \@extraGrubInstallArgs, \@prevExtraGrubInstallArgs)->get_symmetric_difference()); -my $nameDiffer = get("fullName") ne $prevGrubState->name; -my $versionDiffer = get("fullVersion") ne $prevGrubState->version; my $efiDiffer = $efiTarget ne $prevGrubState->efi; my $efiMountPointDiffer = $efiSysMountPoint ne $prevGrubState->efiMountPoint; +# re-installing grub once the package store path changes is necessary, because +# introducing patches or adjusting builds does not always bump the version number +my $grubStorePathsDiffer = ($grub ne $prevGrubState->grub) || ($grubEfi ne $prevGrubState->grubEfi); if (($ENV{'NIXOS_INSTALL_GRUB'} // "") eq "1") { warn "NIXOS_INSTALL_GRUB env var deprecated, use NIXOS_INSTALL_BOOTLOADER"; $ENV{'NIXOS_INSTALL_BOOTLOADER'} = "1"; } -my $requireNewInstall = $devicesDiffer || $extraGrubInstallArgsDiffer || $nameDiffer || $versionDiffer || $efiDiffer || $efiMountPointDiffer || (($ENV{'NIXOS_INSTALL_BOOTLOADER'} // "") eq "1"); +my $requireNewInstall = $devicesDiffer || $extraGrubInstallArgsDiffer || $efiDiffer || $efiMountPointDiffer || $grubStorePathsDiffer || (($ENV{'NIXOS_INSTALL_BOOTLOADER'} // "") eq "1"); # install a symlink so that grub can detect the boot drive my $tmpDir = File::Temp::tempdir(CLEANUP => 1) or die "Failed to create temporary space: $!"; @@ -795,7 +800,9 @@ if ($requireNewInstall != 0) { print $fh join( ",", @deviceTargets ), "\n" or die; print $fh $efiSysMountPoint, "\n" or die; my %jsonState = ( - extraGrubInstallArgs => \@extraGrubInstallArgs + extraGrubInstallArgs => \@extraGrubInstallArgs, + grub => $grub, + grubEfi => $grubEfi ); my $jsonStateLine = encode_json(\%jsonState); print $fh $jsonStateLine, "\n" or die; diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix index 4b457e078e77..4bf274d4157f 100644 --- a/nixos/modules/tasks/network-interfaces-scripted.nix +++ b/nixos/modules/tasks/network-interfaces-scripted.nix @@ -51,6 +51,71 @@ let (lib.concatStringsSep " ") ]; + # Converts an IPv4 address literal to a list of bits + parseAddr.ipv4 = + addr: + let + pad = b: lib.replicate (8 - builtins.length b) 0 ++ b; + toBin = n: pad (lib.toBaseDigits 2 (lib.toInt n)); + in + lib.concatMap toBin (builtins.splitVersion addr); + + # Converts an IPv6 address literal to a list of bits + parseAddr.ipv6 = + addr: + let + pad = b: lib.replicate (16 - builtins.length b) 0 ++ b; + fromHex = n: (builtins.fromTOML "n = 0x${n}").n; + toBin = n: pad (lib.toBaseDigits 2 (fromHex n)); + normal = (lib.network.ipv6.fromString addr).address; + in + lib.concatMap toBin (lib.splitString ":" normal); + + # Checks if `addr` is part of the `net` subnet + inSubnet = + v: net: addr: + let + prefix = lib.take net.prefixLength (parseAddr.${v} net.address); + match = lib.zipListsWith (a: b: a == b) prefix (parseAddr.${v} addr); + in + lib.all lib.id match; + + # Checks if the netmask of all addresses on interface `iface` includes + # the IP address of `gateway` + # + # Note: this is used to check whether networking.defaultGateway relies on + # the given interface, either explicitly, via the `interface` (optional), + # or explicitly, by using an address in a subnet of this interface. + # + # Configuration of the default gateway is then performed as part of that + # interface setup in `configureAddrs`, below. + isGateway = + v: gateway: iface: + lib.any lib.id ( + [ (iface.name == gateway.interface) ] + ++ map (net: inSubnet v net gateway.address) iface.${v}.addresses + ); + + # Checks if `gateway` uses an address from `iface` as default source + # + # Note: this is needed to delay the configuration of the gateway and default + # source until the right interfaces and address have been set up, otherwise + # the commands will fail. + hasSource = + v: gateway: iface: + builtins.elem gateway.source (map (i: i.address) iface.${v}.addresses); + + # Interfaces corresponding to the default gateways + gateway4Iface = builtins.filter (isGateway "ipv4" cfg.defaultGateway) interfaces; + gateway6Iface = builtins.filter (isGateway "ipv6" cfg.defaultGateway6) interfaces; + + # Interfaces corresponding to the default source addresses + # + # Note: the use of `head` here is safe because these expressions + # are evaluated only when `needsSourceIface`, see `configureAddrs` below. + source4Iface = builtins.head (builtins.filter (hasSource "ipv4" cfg.defaultGateway) interfaces); + source6Iface = builtins.head (builtins.filter (hasSource "ipv6" cfg.defaultGateway6) interfaces); + # warn that these attributes are deprecated (2017-2-2) # Should be removed in the release after next bondDeprecation = rec { @@ -118,121 +183,71 @@ let else optional (!config.boot.isContainer) (subsystemDevice dev); - hasDefaultGatewaySet = - (cfg.defaultGateway != null && cfg.defaultGateway.address != "") - || (cfg.enableIPv6 && cfg.defaultGateway6 != null && cfg.defaultGateway6.address != ""); - - needNetworkSetup = - cfg.resolvconf.enable || cfg.defaultGateway != null || cfg.defaultGateway6 != null; - - networkLocalCommands = lib.mkIf needNetworkSetup { - after = [ "network-setup.service" ]; - bindsTo = [ "network-setup.service" ]; - }; - - networkSetup = lib.mkIf needNetworkSetup { - description = "Networking Setup"; - - after = [ "network-pre.target" ]; - before = [ - "network.target" - "shutdown.target" - ]; - wants = [ "network.target" ]; - # exclude bridges from the partOf relationship to fix container networking bug #47210 - partOf = map (i: "network-addresses-${i.name}.service") ( - filter (i: !(hasAttr i.name cfg.bridges)) interfaces - ); - conflicts = [ "shutdown.target" ]; - wantedBy = [ "multi-user.target" ] ++ optional hasDefaultGatewaySet "network-online.target"; - - unitConfig.ConditionCapability = "CAP_NET_ADMIN"; - - path = [ pkgs.iproute2 ]; - - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; - }; - - unitConfig.DefaultDependencies = false; - - script = '' - ${optionalString config.networking.resolvconf.enable '' - # Set the static DNS configuration, if given. - ${pkgs.openresolv}/sbin/resolvconf -m 1 -a static <, create a job ‘network-addresses-.service" - # that performs static address configuration. It has a "wants" - # dependency on ‘.service’, which is supposed to create - # the interface and need not exist (i.e. for hardware - # interfaces). It has a binds-to dependency on the actual - # network device, so it only gets started after the interface - # has appeared, and it's stopped when the interface - # disappears. + # For each interface , creates a network-addresses-.service + # job that performs static address configuration. + # + # It has a Wants dependency on -netdev.service, which creates + # create the interface, or on a device unit (for hardware interfaces). + # It also has a BindsTo dependency on the device unit: so, it only gets + # started after the interface has appeared and it's stopped when the + # interface disappears. + # + # Unless in a container, the job is not made part of network.target, so + # if an interface is not found (e.g. a USB interface not plugged in) it + # will not hang the boot sequence. + # + # If the interface is the default gateway, the job will also set the + # default gateway and delay network-online.target. configureAddrs = i: let ips = interfaceIps i; + isDefaultGateway4 = cfg.defaultGateway != null && builtins.elem i gateway4Iface; + isDefaultGateway6 = cfg.defaultGateway6 != null && builtins.elem i gateway6Iface; + needsSourceIface4 = + isDefaultGateway4 && cfg.defaultGateway.source != null && i.name != source4Iface.name; + needsSourceIface6 = + isDefaultGateway6 && cfg.defaultGateway6.source != null && i.name != source6Iface.name; + + configureGateway = + version: gateway: + optionalString (gateway.address != "") '' + echo -n "setting ${i.name} as default IPv${version} gateway... " + ${optionalString (gateway.interface != null) '' + ip -${version} route replace ${gateway.address} proto static ${ + formatIpArgs { + metric = gateway.metric; + dev = gateway.interface; + } + } + ''} + ip -${version} route replace default proto static ${ + formatIpArgs { + metric = gateway.metric; + via = gateway.address; + window = cfg.defaultGatewayWindowSize; + dev = gateway.interface; + src = gateway.source; + } + } + echo "done" + ''; in nameValuePair "network-addresses-${i.name}" { description = "Address configuration of ${i.name}"; - wantedBy = [ - "network-setup.service" - "network.target" - ]; - # order before network-setup because the routes that are configured - # there may need ip addresses configured - before = [ "network-setup.service" ]; + + wantedBy = + deviceDependency i.name + ++ optional config.boot.isContainer "network.target" + ++ optional (isDefaultGateway4 || isDefaultGateway6) "network-online.target"; bindsTo = deviceDependency i.name; - after = [ "network-pre.target" ] ++ (deviceDependency i.name); + partOf = [ "networking-scripted.target" ]; + after = [ + "network-pre.target" + ] + ++ optional needsSourceIface4 "network-addresses-${source4Iface.name}.service" + ++ optional needsSourceIface6 "network-addresses-${source6Iface.name}.service" + ++ deviceDependency i.name; serviceConfig.Type = "oneshot"; serviceConfig.RemainAfterExit = true; # Restart rather than stop+start this unit to prevent the @@ -284,6 +299,10 @@ let fi '' )} + + # Set the default gateway + ${optionalString isDefaultGateway4 (configureGateway "4" cfg.defaultGateway)} + ${optionalString isDefaultGateway6 (configureGateway "6" cfg.defaultGateway6)} ''; preStop = '' state="/run/nixos/network/routes/${i.name}" @@ -311,13 +330,13 @@ let nameValuePair "${i.name}-netdev" { description = "Virtual Network Interface ${i.name}"; bindsTo = optional (!config.boot.isContainer) "dev-net-tun.device"; + partOf = [ "networking-scripted.target" ]; after = optional (!config.boot.isContainer) "dev-net-tun.device" ++ [ "network-pre.target" ]; wantedBy = [ "network.target" - "network-setup.service" (subsystemDevice i.name) ]; - before = [ "network-setup.service" ]; + before = [ "network.target" ]; path = [ pkgs.iproute2 ]; serviceConfig = { Type = "oneshot"; @@ -343,18 +362,21 @@ let description = "Bridge Interface ${n}"; wantedBy = [ "network.target" - "network-setup.service" (subsystemDevice n) ]; bindsTo = deps ++ optional v.rstp "mstpd.service"; - partOf = [ "network-setup.service" ] ++ optional v.rstp "mstpd.service"; + partOf = [ + "network.target" + "networking-scripted.target" + ] + ++ optional v.rstp "mstpd.service"; after = [ "network-pre.target" ] ++ deps ++ optional v.rstp "mstpd.service" ++ map (i: "network-addresses-${i}.service") v.interfaces; - before = [ "network-setup.service" ]; + before = [ "network.target" ]; serviceConfig.Type = "oneshot"; serviceConfig.RemainAfterExit = true; path = [ pkgs.iproute2 ]; @@ -448,15 +470,14 @@ let description = "Open vSwitch Interface ${n}"; wantedBy = [ "network.target" - "network-setup.service" (subsystemDevice n) ] ++ internalConfigs; - # before = [ "network-setup.service" ]; - # should work without internalConfigs dependencies because address/link configuration depends - # on the device, which is created by ovs-vswitchd with type=internal, but it does not... - before = [ "network-setup.service" ] ++ internalConfigs; - partOf = [ "network-setup.service" ]; # shutdown the bridge when network is shutdown + before = [ "network.target" ] ++ internalConfigs; + partOf = [ + "network.target" + "networking-scripted.target" + ]; # shutdown the bridge when network is shutdown bindsTo = [ "ovs-vswitchd.service" ]; # requires ovs-vswitchd to be alive at all times after = [ "network-pre.target" @@ -521,12 +542,12 @@ let description = "Bond Interface ${n}"; wantedBy = [ "network.target" - "network-setup.service" (subsystemDevice n) ]; bindsTo = deps; + partOf = [ "networking-scripted.target" ]; after = [ "network-pre.target" ] ++ deps ++ map (i: "network-addresses-${i}.service") v.interfaces; - before = [ "network-setup.service" ]; + before = [ "network.target" ]; serviceConfig.Type = "oneshot"; serviceConfig.RemainAfterExit = true; path = [ @@ -570,12 +591,12 @@ let description = "MACVLAN Interface ${n}"; wantedBy = [ "network.target" - "network-setup.service" (subsystemDevice n) ]; bindsTo = deps; + partOf = [ "networking-scripted.target" ]; after = [ "network-pre.target" ] ++ deps; - before = [ "network-setup.service" ]; + before = [ "network.target" ]; serviceConfig.Type = "oneshot"; serviceConfig.RemainAfterExit = true; path = [ pkgs.iproute2 ]; @@ -602,12 +623,12 @@ let description = "IPVLAN Interface ${n}"; wantedBy = [ "network.target" - "network-setup.service" (subsystemDevice n) ]; bindsTo = deps; + partOf = [ "networking-scripted.target" ]; after = [ "network-pre.target" ] ++ deps; - before = [ "network-setup.service" ]; + before = [ "network.target" ]; serviceConfig.Type = "oneshot"; serviceConfig.RemainAfterExit = true; path = [ pkgs.iproute2 ]; @@ -647,12 +668,12 @@ let description = "FOU endpoint ${n}"; wantedBy = [ "network.target" - "network-setup.service" (subsystemDevice n) ]; bindsTo = deps; + partOf = [ "networking-scripted.target" ]; after = [ "network-pre.target" ] ++ deps; - before = [ "network-setup.service" ]; + before = [ "network.target" ]; serviceConfig.Type = "oneshot"; serviceConfig.RemainAfterExit = true; path = [ pkgs.iproute2 ]; @@ -677,12 +698,11 @@ let description = "IPv6 in IPv4 Tunnel Interface ${n}"; wantedBy = [ "network.target" - "network-setup.service" (subsystemDevice n) ]; bindsTo = deps; after = [ "network-pre.target" ] ++ deps; - before = [ "network-setup.service" ]; + before = [ "network.target" ]; serviceConfig.Type = "oneshot"; serviceConfig.RemainAfterExit = true; path = [ pkgs.iproute2 ]; @@ -720,12 +740,12 @@ let description = "IP in IP Tunnel Interface ${n}"; wantedBy = [ "network.target" - "network-setup.service" (subsystemDevice n) ]; bindsTo = deps; + partOf = [ "networking-scripted.target" ]; after = [ "network-pre.target" ] ++ deps; - before = [ "network-setup.service" ]; + before = [ "network.target" ]; serviceConfig.Type = "oneshot"; serviceConfig.RemainAfterExit = true; path = [ pkgs.iproute2 ]; @@ -768,12 +788,12 @@ let description = "GRE Tunnel Interface ${n}"; wantedBy = [ "network.target" - "network-setup.service" (subsystemDevice n) ]; bindsTo = deps; + partOf = [ "networking-scripted.target" ]; after = [ "network-pre.target" ] ++ deps; - before = [ "network-setup.service" ]; + before = [ "network.target" ]; serviceConfig.Type = "oneshot"; serviceConfig.RemainAfterExit = true; path = [ pkgs.iproute2 ]; @@ -803,13 +823,15 @@ let description = "VLAN Interface ${n}"; wantedBy = [ "network.target" - "network-setup.service" (subsystemDevice n) ]; bindsTo = deps; - partOf = [ "network-setup.service" ]; + partOf = [ + "network.target" + "networking-scripted.target" + ]; after = [ "network-pre.target" ] ++ deps; - before = [ "network-setup.service" ]; + before = [ "network.target" ]; serviceConfig.Type = "oneshot"; serviceConfig.RemainAfterExit = true; path = [ pkgs.iproute2 ]; @@ -845,10 +867,27 @@ let // mapAttrs' createGreDevice cfg.greTunnels // mapAttrs' createVlanDevice cfg.vlans // { - network-setup = networkSetup; - network-local-commands = networkLocalCommands; + network-local-commands = { + after = [ "network-pre.target" ]; + wantedBy = [ "network.target" ]; + }; }; + # Note: the scripted networking backend consistent of many + # independent services that are linked to the network.target. + # Since there is no daemon (e.g systemd-networkd) that is + # started as part of the system and pulls in network.target. + # Thus, to start these services we link network.target directly + # to multi-user.target, this has the same result. + systemd.targets.network.wantedBy = [ "multi-user.target" ]; + + # This target serves no purpose during the boot, but can be + # used to quickly reset the network configuration by running + # systemctl restart networking-scripted.target + systemd.targets.networking-scripted = { + description = "NixOS scripted networking setup"; + }; + services.udev.extraRules = '' KERNEL=="tun", TAG+="systemd" ''; diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix index 83d60ba80e40..d0fe0ed8443f 100644 --- a/nixos/modules/tasks/network-interfaces.nix +++ b/nixos/modules/tasks/network-interfaces.nix @@ -747,10 +747,9 @@ in default = ""; example = "text=anything; echo You can put $text here."; description = '' - Shell commands to be executed at the end of the - `network-setup` systemd service. Note that if - you are using DHCP to obtain the network configuration, - interfaces may not be fully configured yet. + Shell commands to be executed after all the network + interfaces have been created, but not necessarily + fully configured. ''; }; @@ -1851,6 +1850,20 @@ in ''; }; }; + + networking.localCommands = lib.mkIf config.networking.resolvconf.enable '' + # Set the static DNS configuration, if given. + ${pkgs.openresolv}/sbin/resolvconf -m 1 -a static < GarageNode: + def get_node_fqn(machine: BaseMachine) -> GarageNode: node_id, host = machine.succeed("garage node id").split('@') return GarageNode(node_id=node_id, host=host) - def get_node_id(machine: Machine) -> str: + def get_node_id(machine: BaseMachine) -> str: return get_node_fqn(machine).node_id - def get_layout_version(machine: Machine) -> int: + def get_layout_version(machine: BaseMachine) -> int: version_data = machine.succeed("garage layout show") m = cur_version_regex.search(version_data) if m and m.group('ver') is not None: @@ -36,17 +36,17 @@ else: raise ValueError('Cannot find current layout version') - def apply_garage_layout(machine: Machine, layouts: List[str]): + def apply_garage_layout(machine: BaseMachine, layouts: List[str]): for layout in layouts: machine.succeed(f"garage layout assign {layout}") version = get_layout_version(machine) machine.succeed(f"garage layout apply --version {version}") - def create_api_key(machine: Machine, key_name: str) -> S3Key: + def create_api_key(machine: BaseMachine, key_name: str) -> S3Key: output = machine.succeed(f"garage key create {key_name}") return parse_api_key_data(output) - def get_api_key(machine: Machine, key_pattern: str) -> S3Key: + def get_api_key(machine: BaseMachine, key_pattern: str) -> S3Key: output = machine.succeed(f"garage key info {key_pattern}") return parse_api_key_data(output) diff --git a/nixos/tests/incus/incus_machine.py b/nixos/tests/incus/incus_machine.py index c25a7804b871..eeeb0bdecf4c 100644 --- a/nixos/tests/incus/incus_machine.py +++ b/nixos/tests/incus/incus_machine.py @@ -1,7 +1,7 @@ import json -class IncusHost(Machine): +class IncusHost(QemuMachine): def __init__(self, base): with subtest("Wait for startup"): base.wait_for_unit("incus.service") diff --git a/nixos/tests/matter-server.nix b/nixos/tests/matter-server.nix index 6d919850f3ce..5aeffaa97b42 100644 --- a/nixos/tests/matter-server.nix +++ b/nixos/tests/matter-server.nix @@ -30,7 +30,7 @@ in start_all() machine.wait_for_unit("matter-server.service", timeout=20) - machine.wait_for_open_port(1234, timeout=20) + machine.wait_for_open_port(1234, timeout=100) with matter_server_running: # type: ignore[union-attr] with subtest("Check websocket server initialized"): diff --git a/nixos/tests/networking-proxy.nix b/nixos/tests/networking-proxy.nix index 2f8a64b5affa..ec784f2bd657 100644 --- a/nixos/tests/networking-proxy.nix +++ b/nixos/tests/networking-proxy.nix @@ -72,7 +72,7 @@ in from typing import Dict, Optional - def get_machine_env(machine: Machine, user: Optional[str] = None) -> Dict[str, str]: + def get_machine_env(machine: BaseMachine, user: Optional[str] = None) -> Dict[str, str]: """ Gets the environment from a given machine, and returns it as a dictionary in the form: diff --git a/nixos/tests/networking/networkd-and-scripted.nix b/nixos/tests/networking/networkd-and-scripted.nix index 99e67649ceb3..d620e9b230fb 100644 --- a/nixos/tests/networking/networkd-and-scripted.nix +++ b/nixos/tests/networking/networkd-and-scripted.nix @@ -44,17 +44,13 @@ let defaultGateway6 = { address = "fd00:1234:5678:1::1"; interface = "enp1s0"; - source = "fd00:1234:5678:1::3"; + source = "fd00:1234:5678:1::3"; # implicit dependency on enp2s0 }; interfaces.enp1s0.ipv6.addresses = [ { address = "fd00:1234:5678:1::2"; prefixLength = 64; } - { - address = "fd00:1234:5678:1::3"; - prefixLength = 128; - } ]; interfaces.enp1s0.ipv4.addresses = [ { @@ -76,6 +72,12 @@ let prefixLength = 24; } ]; + interfaces.enp2s0.ipv6.addresses = [ + { + address = "fd00:1234:5678:1::3"; + prefixLength = 128; + } + ]; }; }; testScript = '' @@ -108,6 +110,41 @@ let client.succeed("ip -6 route show default | grep -q 'src fd00:1234:5678:1::3'") ''; }; + dynamicInterface = { + name = "dynamicInterface"; + nodes.machine = clientConfig { + networking.interfaces.usb0 = { + ipv6.addresses = lib.singleton { + address = "fd::1"; + prefixLength = 127; + }; + }; + networking.defaultGateway6 = { + address = "fd::"; + interface = "usb0"; + source = "fd::1"; + }; + }; + testScript = '' + with subtest("Network comes up without usb0"): + machine.wait_for_unit("network.target") + + with subtest("multi-user.target does not hang"): + machine.require_unit_state("multi-user.target", "active") + + with subtest("usb0 is configured when plugged in"): + machine.succeed("ip link add usb0 type sit local 1.2.3.4") + machine.wait_until_succeeds("ip addr show dev usb0 | grep -q fd::1") + + with subtest("Network is now online"): + machine.systemctl("start network-online.target") + machine.require_unit_state("network-online.target", "active") + + with subtest("Default gateway is now set"): + machine.succeed("ip -6 route show default | grep -q 'via fd::'") + machine.succeed("ip -6 route show default | grep -q 'src fd::1'") + ''; + }; routeType = { name = "RouteType"; nodes.client = clientConfig { diff --git a/nixos/tests/pacemaker.nix b/nixos/tests/pacemaker.nix index 826c4be7df14..8023d6f14bc8 100644 --- a/nixos/tests/pacemaker.nix +++ b/nixos/tests/pacemaker.nix @@ -86,7 +86,7 @@ rec { output = node1.succeed("crm_resource -r cat --locate") match = re.search("is running on: (.+)", output) if match: - for machine in machines: + for machine in machines_qemu: if machine.name == match.group(1): current_node = machine break @@ -96,7 +96,7 @@ rec { current_node.crash() # pick another node that's still up - for machine in machines: + for machine in machines_qemu: if machine.booted: check_node = machine # find where the service has been started next @@ -105,7 +105,7 @@ rec { match = re.search("is running on: (.+)", output) # output will remain the old current_node until the crash is detected by pacemaker if match and match.group(1) != current_node.name: - for machine in machines: + for machine in machines_qemu: if machine.name == match.group(1): next_node = machine break diff --git a/nixos/tests/password-option-override-ordering.nix b/nixos/tests/password-option-override-ordering.nix index caa0246735ca..71c449064a0b 100644 --- a/nixos/tests/password-option-override-ordering.nix +++ b/nixos/tests/password-option-override-ordering.nix @@ -112,22 +112,22 @@ in assert stored_hash == pass_hash, f"{username} user password does not match" with subtest("alice user has correct password"): - for machine in machines: + for machine in machines_qemu: assert_password_sha512crypt_match(machine, "alice", "${password1}") assert "${hashed_sha512crypt}" not in machine.succeed("getent shadow alice"), f"{machine}: alice user password is not correct" with subtest("bob user has correct password"): - for machine in machines: + for machine in machines_qemu: print(machine.succeed("getent shadow bob")) assert "${hashed_bcrypt}" in machine.succeed("getent shadow bob"), f"{machine}: bob user password is not correct" with subtest("cat user has correct password"): - for machine in machines: + for machine in machines_qemu: print(machine.succeed("getent shadow cat")) assert "${hashed_bcrypt}" in machine.succeed("getent shadow cat"), f"{machine}: cat user password is not correct" with subtest("dan user has correct password"): - for machine in machines: + for machine in machines_qemu: print(machine.succeed("getent shadow dan")) assert "${hashed_bcrypt}" in machine.succeed("getent shadow dan"), f"{machine}: dan user password is not correct" @@ -138,11 +138,11 @@ in assert_password_sha512crypt_match(immutable, "greg", "${password1}") assert "${hashed_sha512crypt}" not in immutable.succeed("getent shadow greg"), "greg user password is not correct" - for machine in machines: + for machine in machines_qemu: machine.wait_for_unit("multi-user.target") machine.wait_until_succeeds("pgrep -f 'agetty.*tty1'") - def check_login(machine: Machine, tty_number: str, username: str, password: str): + def check_login(machine: QemuMachine, tty_number: str, username: str, password: str): machine.send_key(f"alt-f{tty_number}") machine.wait_until_succeeds(f"[ $(fgconsole) = {tty_number} ]") machine.wait_for_unit(f"getty@tty{tty_number}.service") @@ -158,11 +158,11 @@ in assert username in machine.succeed(f"cat /tmp/{tty_number}"), f"{machine}: {username} password is not correct" with subtest("Test initialPassword override"): - for machine in machines: + for machine in machines_qemu: check_login(machine, "2", "egon", "${password1}") with subtest("Test initialHashedPassword override"): - for machine in machines: + for machine in machines_qemu: check_login(machine, "3", "fran", "meow") ''; } diff --git a/nixos/tests/rtkit.nix b/nixos/tests/rtkit.nix index d884a588a16e..74bf69e02a83 100644 --- a/nixos/tests/rtkit.nix +++ b/nixos/tests/rtkit.nix @@ -103,7 +103,7 @@ Result = namedtuple("Result", ["command", "machine", "status", "out", "value"]) Value = namedtuple("Value", ["type", "data"]) - def busctl(node: Machine, *args: Any, user: Optional[str] = None) -> Result: + def busctl(node: BaseMachine, *args: Any, user: Optional[str] = None) -> Result: command = f"busctl --json=short {shlex.join(map(str, args))}" if user is not None: command = f"su - {user} -c {shlex.quote(command)}" @@ -121,7 +121,7 @@ if result.status == 0: raise Exception(f"command `{result.command}` unexpectedly succeeded") - def rtkit_make_process_realtime(node: Machine, pid: int, priority: int, user: Optional[str] = None) -> Result: + def rtkit_make_process_realtime(node: BaseMachine, pid: int, priority: int, user: Optional[str] = None) -> Result: return busctl(node, "call", "org.freedesktop.RealtimeKit1", "/org/freedesktop/RealtimeKit1", "org.freedesktop.RealtimeKit1", "MakeThreadRealtimeWithPID", "ttu", pid, 0, priority, user=user) def get_max_realtime_priority() -> int: @@ -133,7 +133,7 @@ def parse_chrt(out: str, field: str) -> str: return next(map(lambda l: l.split(": ")[1], filter(lambda l: field in l, out.splitlines()))) - def get_pid(node: Machine, unit: str, user: Optional[str] = None) -> int: + def get_pid(node: BaseMachine, unit: str, user: Optional[str] = None) -> int: node.wait_for_unit(unit, user=user) (status, out) = node.systemctl(f"show -P MainPID {unit}", user=user) if status == 0: @@ -142,7 +142,7 @@ node.log(out) raise Exception(f"unable to determine MainPID of {unit} (systemctl exit code {status})") - def assert_sched(node: Machine, pid: int, policy: Optional[str] = None, priority: Optional[int] = None): + def assert_sched(node: BaseMachine, pid: int, policy: Optional[str] = None, priority: Optional[int] = None): out = node.succeed(f"chrt -p {pid}") node.log(out) if policy is not None: diff --git a/nixos/tests/sabnzbd-module.nix b/nixos/tests/sabnzbd-module.nix index fd9f48ae35d0..3eb9bd21e2ff 100644 --- a/nixos/tests/sabnzbd-module.nix +++ b/nixos/tests/sabnzbd-module.nix @@ -1,12 +1,7 @@ { lib, ... }: -{ - name = "sabnzbd"; - meta.maintainers = with lib.maintainers; [ jojosch ]; - - node.pkgsReadOnly = false; - - nodes.machine = - { pkgs, lib, ... }: +let + common-config = + { pkgs, ... }: { services.sabnzbd = { enable = true; @@ -62,14 +57,65 @@ # unrar is unfree nixpkgs.config.allowUnfreePackages = [ "unrar" ]; }; +in +{ + name = "sabnzbd"; + meta.maintainers = with lib.maintainers; [ jojosch ]; + + node.pkgsReadOnly = false; + + nodes.machine = + { ... }: + { + imports = [ common-config ]; + }; + nodes.with_writeable_config = + { ... }: + { + imports = [ common-config ]; + config.services.sabnzbd.allowConfigWrite = true; + }; + nodes.with_raw_config_file = + { pkgs, ... }: + { + imports = [ common-config ]; + config = { + services.sabnzbd = { + configFile = builtins.toFile "config.ini" '' + [misc] + inet_exposure = 2 + html_login = 0 + api_key = abcdef + log_dir = /var/lib/sabnzbd + admin_dir = /var/lib/sabnzbd + ''; + }; + + environment.systemPackages = [ + pkgs.jq + (pkgs.writeScriptBin "do_test_2" '' + set -euxo pipefail + + misc_url="http://127.0.0.1:8080/api?mode=get_config§ion=misc&output=json&apikey=abcdef" + + [[ $(curl $misc_url | jq .config.misc.inet_exposure) == 2 ]] + [[ $(curl $misc_url | jq .config.misc.html_login) == "false" ]] + '') + ]; + }; + }; testScript = '' + def wait_for_up(m): + m.wait_for_unit("sabnzbd.service") + m.wait_until_succeeds("curl --fail -L http://localhost:8080") - machine.wait_for_unit("sabnzbd.service") - machine.wait_until_succeeds( - "curl --fail -L http://localhost:8080/" - ) + wait_for_up(machine) + wait_for_up(with_writeable_config) + wait_for_up(with_raw_config_file) machine.succeed("do_test") + with_writeable_config.succeed("do_test") + with_raw_config_file.succeed("do_test_2") ''; } diff --git a/nixos/tests/slurm-pam.nix b/nixos/tests/slurm-pam.nix new file mode 100644 index 000000000000..1bb613af38a0 --- /dev/null +++ b/nixos/tests/slurm-pam.nix @@ -0,0 +1,411 @@ +{ lib, pkgs, ... }: + +let + + slurmConf = "/etc/slurm.conf"; + inherit (import ./ssh-keys.nix pkgs) + snakeOilPrivateKey + snakeOilPublicKey + ; + sshConf = '' + UserKnownHostsFile /dev/null + StrictHostKeyChecking no + ''; + sshConfigPubkey = pkgs.writeText "ssh_config_pubkey" ( + sshConf + + '' + + BatchMode yes + PreferredAuthentications publickey + KbdInteractiveAuthentication no + PasswordAuthentication no + IdentityFile /root/privkey.snakeoil + '' + ); + sshConfigPassword = pkgs.writeText "ssh_config_password" ( + sshConf + + '' + BatchMode no + PreferredAuthentications password + PubkeyAuthentication no + KbdInteractiveAuthentication no + PasswordAuthentication yes + '' + ); + sshOpts = "-F " + sshConfigPubkey; + sshPassOpts = "-F " + sshConfigPassword; + adoptRemoteScript = pkgs.writeShellScript "slurm-pam-adopt-remote" '' + echo $$ > /home/submitter/ssh.pid + trap : TERM INT + while true; do + sleep 1 + done + ''; + mkWaitJob = + node: name: + pkgs.writeText "${name}.sbatch" '' + #!${pkgs.runtimeShell} + #SBATCH --job-name=${name} + #SBATCH --nodes=1 + #SBATCH --nodelist=${node} + while true; do sleep 60; done + ''; + + slurmconfig = + { config, ... }: + { + services.slurm = { + controlMachine = "control"; + nodeName = map (n: n + " CPUs=1 State=UNKNOWN") [ + "regular" + "pamslurm" + "pamslurmadopt" + ]; + partitionName = [ "debug Nodes=ALL Default=YES MaxTime=INFINITE State=UP" ]; + extraConfig = '' + PrologFlags=contain + ProctrackType=proctrack/cgroup + TaskPlugin=task/cgroup,task/affinity + SlurmdDebug=debug + ''; + }; + + services.openssh = { + enable = true; + settings = { + AllowUsers = [ "submitter" ]; + PubkeyAuthentication = true; + # leave password auth available on the regular node for + # regression testing plain pam_unix behavior + KbdInteractiveAuthentication = false; + PasswordAuthentication = true; + }; + }; + + environment.systemPackages = [ + pkgs.pamtester + pkgs.sshpass + ]; + + networking.firewall.enable = false; + systemd.tmpfiles.rules = [ + "f /etc/munge/munge.key 0400 munge munge - mungeverryweakkeybuteasytointegratoinatest" + ]; + environment.etc."slurm.conf".source = "${config.services.slurm.etcSlurm}/slurm.conf"; + systemd.services.sshd.environment.SLURM_CONF = slurmConf; + users.groups.submitter = { }; + users.users.submitter = { + isNormalUser = true; + createHome = true; + initialPassword = "submitter"; + group = "submitter"; + openssh.authorizedKeys.keys = [ snakeOilPublicKey ]; + }; + }; + +in +{ + name = "slurm-pam"; + + meta.maintainers = [ lib.maintainers.edwtjo ]; + + nodes = + let + computeNode = + { ... }: + { + imports = [ slurmconfig ]; + services.slurm = { + client.enable = true; + }; + }; + computePAMNode = + { ... }: + { + imports = [ computeNode ]; + security.pam.services.sshd.slurm.enable = true; + services.openssh.settings = { + KbdInteractiveAuthentication = false; + PasswordAuthentication = lib.mkForce false; + PubkeyAuthentication = true; + }; + }; + computePAMAdoptNode = + { ... }: + { + imports = [ computeNode ]; + # NOTE: Prolog, Epilog needed for more advanced tests. + # This is an upstream recommended workaround for removing pam_systemd + services.slurm.extraConfig = '' + LaunchParameters=ulimit_pam_adopt + SrunProlog=${pkgs.writers.writeBash "slurm-prolog" '' + loginctl enable-linger $SLURM_JOB_USER + exit 0 + ''} + TaskProlog=${pkgs.writers.writeBash "slurm-taskprolog" '' + echo "export XDG_RUNTIME_DIR=/run/user/$SLURM_JOB_UID" + echo "export XDG_SESSION_ID=$(/tmp/wait-pamslurm.out 2>/tmp/wait-pamslurm.err &\"" + ) + submit.wait_until_succeeds( + "squeue -h -u submitter -o '%N %u %T %j' | " + "grep -Fx 'pamslurm submitter RUNNING wait-pamslurm'" + ) + submit.fail( + "ssh ${sshOpts} submitter@pamslurmadopt true", + timeout=30 + ) + submit.succeed("runuser -u submitter -- scancel -n wait-pamslurm") + submit.wait_until_succeeds( + "! squeue -h -u submitter -o '%j' | grep -Fx wait-pamslurm" + ) + + # Positive integration tests for `pam_slurm_adopt`. + # + # This subtest checks the following: + # + # 1. a job can be created specifically on `pamslurmadopt`; + # 2. Slurm reports that the job is running on that node; + # 3. the node has local Slurm state for that job (`scontrol listpids`); + # 4. SSH login is allowed while the job is active; + # 5. a long-lived SSH session is adopted into Slurm's job tracking; + # 6. cancelling the job tears down the adopted process; + # 7. SSH access is denied again once the job is gone. + # + # Validates both policy enforcement and process adoption/cleanup. + with subtest("pam_slurm_adopt_adopts_connection"): + pamslurmadopt_job = submit.succeed( + "runuser -u submitter -- sbatch --parsable ${mkWaitJob "pamslurmadopt" "wait-pamslurmadopt"}" + ).strip() + + submit.wait_until_succeeds( + f"test \"$(squeue -h -j {pamslurmadopt_job} -o %T)\" = RUNNING" + ) + submit.wait_until_succeeds( + f"squeue -h -j {pamslurmadopt_job} -o %N | grep -Fx pamslurmadopt" + ) + pamslurmadopt.wait_until_succeeds( + f"scontrol listpids | awk -v jid='{pamslurmadopt_job}' 'NR > 1 && $2 == jid {{ found = 1 }} END {{ exit !found }}'" + ) + + # Short SSH probe: verifies that login is allowed at all while the job + # is active, before we move on to the stronger adoption assertions. + submit.succeed( + "ssh ${sshOpts} submitter@pamslurmadopt true", + timeout=30 + ) + + # Start a persistent SSH session whose remote process records its PID. + # We later use that PID to prove the session was adopted into Slurm's + # accounting/control path and then cleaned up when the job is cancelled. + submit.succeed( + "sh -lc '" + "ssh ${sshOpts} submitter@pamslurmadopt ${adoptRemoteScript}" + ">/tmp/adopt-ssh.log 2>&1 & " + "echo -n \\$! > /tmp/adopt-ssh.clientpid'" + ) + + # Wait until the remote helper has started and published its PID. + pamslurmadopt.wait_until_succeeds("test -s /home/submitter/ssh.pid") + + # Prove that the SSH-spawned remote process is visible through Slurm's + # local process listing, i.e. that the session was adopted into the job. + pamslurmadopt.wait_until_succeeds( + "pid=$(cat /home/submitter/ssh.pid); " + "scontrol listpids | awk 'NR > 1 { print $1 }' | grep -Fx \"$pid\"" + ) + remote_pid = pamslurmadopt.succeed("cat /home/submitter/ssh.pid").strip() + + # Cancel the allocation and verify the entire chain is torn down: + # the Slurm job disappears, the adopted remote process exits, and the + # local SSH client exits as well. + submit.succeed(f"runuser -u submitter -- scancel {pamslurmadopt_job}") + submit.wait_until_succeeds( + f"test -z \"$(squeue -h -j {pamslurmadopt_job})\"", + timeout=60, + ) + pamslurmadopt.wait_until_succeeds( + f"! test -e /proc/{remote_pid}", + timeout=60, + ) + submit.wait_until_succeeds( + "! kill -0 $(cat /tmp/adopt-ssh.clientpid)", + timeout=60, + ) + + # Once the job is gone, SSH must be denied + # again on the adopt-protected node. + submit.fail( + "ssh ${sshOpts} submitter@pamslurmadopt true", + timeout=30 + ) + ''; +} diff --git a/nixos/tests/slurm.nix b/nixos/tests/slurm.nix index b468e32e45e0..06b622739852 100644 --- a/nixos/tests/slurm.nix +++ b/nixos/tests/slurm.nix @@ -148,6 +148,8 @@ in }; testScript = '' + start_all() + with subtest("can_start_slurmdbd"): dbd.wait_for_unit("slurmdbd.service") dbd.wait_for_open_port(6819) @@ -155,36 +157,82 @@ in with subtest("cluster_is_initialized"): control.wait_for_unit("multi-user.target") control.wait_for_unit("slurmctld.service") - control.wait_until_succeeds("sacctmgr list cluster | awk '{ print $1 }' | grep default") + control.wait_for_open_port(6817) - start_all() - - with subtest("can_start_slurmd"): for node in [node1, node2, node3]: - node.wait_for_unit("slurmd") + node.wait_for_unit("slurmd.service") + node.wait_for_open_port(6818) - # Test that the cluster works and can distribute jobs; - submit.wait_for_unit("multi-user.target") + submit.wait_for_unit("multi-user.target") + + control.wait_until_succeeds( + "sacctmgr -nP list cluster format=cluster | grep -qx default" + ) + + # Test that the cluster works and can distribute jobs; + control.wait_until_succeeds( + "sinfo -Nh -o '%N %T' | grep -Fx 'node1 idle' && " + "sinfo -Nh -o '%N %T' | grep -Fx 'node2 idle' && " + "sinfo -Nh -o '%N %T' | grep -Fx 'node3 idle'" + ) with subtest("run_distributed_command"): # Run `hostname` on 3 nodes of the partition (so on all the 3 nodes). # The output must contain the 3 different names - submit.succeed("srun -N 3 hostname | sort | uniq | wc -l | xargs test 3 -eq") + submit.succeed( + "test \"$(srun -J distributed-hostname-check -N 3 hostname | sort -u | tr '\n' ' ')\" = 'node1 node2 node3 '" + ) - with subtest("check_slurm_dbd_job"): - # find the srun job from above in the database - control.wait_until_succeeds("sacct | grep hostname") + with subtest("check_slurm_dbd_job_for_srun"): + # find the srun job from above in the database + submit.wait_until_succeeds( + "sacct -X -P -n --name=distributed-hostname-check -o JobName,State | " + "grep -Eq '^distributed-hostname-check\\|COMPLETED(\\+.*)?$'" + ) with subtest("run_PMIx_mpitest"): - submit.succeed("srun -N 3 --mpi=pmix mpitest | grep size=3") + submit.succeed( + "out=$(srun -N 3 --mpi=pmix mpitest); " + "echo \"$out\"; " + "echo \"$out\" | grep -Fx 'size=3'; " + "test \"$(echo \"$out\" | grep -c 'hello world from process')\" -eq 3" + ) with subtest("run_sbatch"): - submit.succeed("sbatch --wait ${sbatchScript}") - submit.succeed("grep 'sbatch success' ${sbatchOutput}") + submit.succeed( + "jobid=$(sbatch --parsable --wait ${sbatchScript}); " + "echo \"$jobid\" > /tmp/sbatch.jobid" + ) + submit.succeed("grep -Fx 'sbatch success' ${sbatchOutput}") + submit.wait_until_succeeds( + "sacct -X -j $(cat /tmp/sbatch.jobid) -n -o State | grep -Eq 'COMPLETED|COMPLETED\\+'" + ) + submit.succeed("test -z \"$(squeue -h)\"") + + with subtest("cluster_returns_to_idle"): + control.wait_until_succeeds( + "sinfo -Nh -o '%N %T' | grep -Fx 'node1 idle' && " + "sinfo -Nh -o '%N %T' | grep -Fx 'node2 idle' && " + "sinfo -Nh -o '%N %T' | grep -Fx 'node3 idle'" + ) with subtest("rest"): rest.wait_for_unit("slurmrestd.service") - token = control.succeed("scontrol token").split('=')[1].rstrip() - rest.succeed("${pkgs.curl}/bin/curl -sk -H X-SLURM-USER-TOKEN:%s -X GET 'http://localhost:6820/slurm/v0.0.43/diag'" % token) + rest.wait_for_open_port(6820) + + token = control.succeed("scontrol token").split('=', 1)[1].strip() + + rest.succeed( + "${pkgs.curl}/bin/curl -fsS " + "-H X-SLURM-USER-TOKEN:%s " + "http://localhost:6820/slurm/v0.0.43/diag | grep -q 'meta'" % token + ) + + with subtest("rest_rejects_invalid_token"): + rest.fail( + "${pkgs.curl}/bin/curl -fsS " + "-H X-SLURM-USER-TOKEN:not-a-real-token " + "http://localhost:6820/slurm/v0.0.43/diag" + ) ''; } diff --git a/nixos/tests/systemd-journal-upload.nix b/nixos/tests/systemd-journal-upload.nix index 00dbba82b88b..af7817bd97d8 100644 --- a/nixos/tests/systemd-journal-upload.nix +++ b/nixos/tests/systemd-journal-upload.nix @@ -72,7 +72,7 @@ server.wait_for_unit("multi-user.target") client.wait_for_unit("multi-user.target") - def copy_pems(machine: Machine, domain: str): + def copy_pems(machine: BaseMachine, domain: str): machine.succeed("mkdir /run/secrets") machine.copy_from_host( source=f"{tmpdir}/{domain}/cert.pem", diff --git a/pkgs/applications/system/glances/default.nix b/pkgs/applications/system/glances/default.nix index bb99cc419eb7..3feb79caab1a 100644 --- a/pkgs/applications/system/glances/default.nix +++ b/pkgs/applications/system/glances/default.nix @@ -4,6 +4,7 @@ fetchFromGitHub, isPyPy, lib, + chevron, defusedxml, packaging, psutil, @@ -26,9 +27,9 @@ shtab, }: -buildPythonApplication rec { +buildPythonApplication (finalAttrs: { pname = "glances"; - version = "4.5.0.5"; + version = "4.5.2"; pyproject = true; disabled = isPyPy; @@ -36,8 +37,8 @@ buildPythonApplication rec { src = fetchFromGitHub { owner = "nicolargo"; repo = "glances"; - tag = "v${version}"; - hash = "sha256-IHgMZw+X7C/72w4vXaP37GgnhLVg7EF5/sd9QlmE0NM="; + tag = "v${finalAttrs.version}"; + hash = "sha256-o/q/zW7lRKQg+u4XblwNIswCVIroMdeUaPTNkN8QKwo="; }; build-system = [ setuptools ]; @@ -77,6 +78,7 @@ buildPythonApplication rec { }; nativeCheckInputs = [ + chevron which pytestCheckHook selenium @@ -100,16 +102,19 @@ buildPythonApplication rec { # Test always returns 3 plugin updates, but needs >=5 to not fail # May be an upstream bug, see: https://github.com/nicolargo/glances/issues/3430 "test_perf_update" + # Upstream pipe handling currently fails under the new 4.5.2 sanitization coverage + "test_pipe" ]; meta = { homepage = "https://nicolargo.github.io/glances/"; description = "Cross-platform curses-based monitoring tool"; mainProgram = "glances"; - changelog = "https://github.com/nicolargo/glances/blob/${src.tag}/NEWS.rst"; + changelog = "https://github.com/nicolargo/glances/blob/${finalAttrs.src.tag}/NEWS.rst"; license = lib.licenses.lgpl3Only; maintainers = with lib.maintainers; [ koral + miniharinn ]; }; -} +}) diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/default.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/default.nix index 5d4663fcc3ae..dda8a3b3a80e 100644 --- a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/default.nix +++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/default.nix @@ -44,6 +44,7 @@ let { hyprspace = import ./hyprspace.nix; } { hyprsplit = import ./hyprsplit.nix; } (import ./hyprland-plugins.nix) + { imgborders = import ./imgborders.nix; } (lib.optionalAttrs config.allowAliases { hycov = throw "hyprlandPlugins.hycov has been removed because it has been marked as broken since September 2024."; # Added 2025-10-12 hyprscroller = throw "hyprlandPlugins.hyprscroller has been removed as the upstream project is deprecated. Consider using `hyprlandPlugins.hyprscrolling`."; # Added 2025-05-09 diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/imgborders.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/imgborders.nix new file mode 100644 index 000000000000..f7e387354ced --- /dev/null +++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/imgborders.nix @@ -0,0 +1,42 @@ +{ + lib, + fetchFromCodeberg, + mkHyprlandPlugin, + cmake, + nix-update-script, +}: +mkHyprlandPlugin (finalAttrs: { + pluginName = "imgborders"; + version = "1.0.1"; + + src = fetchFromCodeberg { + owner = "zacoons"; + repo = "imgborders"; + tag = finalAttrs.version; + hash = "sha256-fCzz4gh8pd7J6KQJB/avYcS0Z7NYpxjznPMtOwypPSQ="; + }; + + nativeBuildInputs = [ + cmake + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib + mv imgborders.so $out/lib/libimgborders.so + + runHook postInstall + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + homepage = "https://codeberg.org/zacoons/imgborders"; + description = "Add tiling image borders to windows!"; + license = lib.licenses.unlicense; + maintainers = with lib.maintainers; [ + mrdev023 + ]; + }; +}) diff --git a/pkgs/build-support/lake/default.nix b/pkgs/build-support/lake/default.nix index 42344a7797ff..114a8354fa89 100644 --- a/pkgs/build-support/lake/default.nix +++ b/pkgs/build-support/lake/default.nix @@ -1,20 +1,11 @@ # buildLakePackage: build Lean 4 projects that use the Lake build system. # # Dependencies can be provided in two ways: -# - `leanDeps`: already-packaged Lean libraries from leanPackages. -# These are injected into LEAN_PATH via setup hooks and propagated -# transitively, similar to Haskell's libraryHaskellDepends. +# - `leanDeps`: nix-packaged Lean libraries, injected via +# `lake --packages` and propagated transitively via LEAN_PATH. # - `lakeHash`: SRI hash for a fetchLakeDeps FOD that clones git # dependencies listed in lake-manifest.json (like buildGoModule's # vendorHash). Not needed when all deps are in `leanDeps`. -# -# Library output layout: -# $out/ Package root (source + build artifacts) -# $out/lakefile.{lean,toml} Lake package configuration -# $out/lean-toolchain Lean version pin -# $out/.lake/build/lib/lean/ Compiled .olean/.ilean files -# $out/.lake/build/ir/ Compiled C/object files -# $out/nix-support/setup-hook LEAN_PATH propagation hook { lib, stdenv, @@ -22,7 +13,7 @@ gitMinimal, cacert, jq, - lndir, + writeText, stdenvNoCC, }: @@ -55,32 +46,19 @@ lib.extendMkDerivation { nativeBuildInputs ? [ ], passthru ? { }, - # SRI hash for the Lake dependencies FOD. - # Set to null if the project has no external dependencies - # (or all deps are provided via leanDeps). + # SRI hash for the Lake dependencies FOD (null = all deps nix-managed). lakeHash ? null, - # Pre-built Lake dependencies derivation (overrides lakeHash). lakeDeps ? null, - - # Already-packaged Lean libraries from nixpkgs. - # These are added to LEAN_PATH (via setup hook) and propagated - # transitively. Each must be a buildLakePackage output with - # .olean files under $out/.lake/build/lib/lean/. + # Nix-packaged Lean libraries, injected via lake --packages. leanDeps ? [ ], - - # Lean package name as declared in lakefile.lean/toml. - # Defaults to pname. + # Lake package name as declared in lakefile (defaults to pname). leanPackageName ? finalAttrs.pname, - - # Lake build targets. Empty list means the default target. + # Lake build targets (empty = default targets). buildTargets ? [ ], - - # Whether this is a library (install full package tree with - # .olean/.ilean files) or an executable (install binaries only). + # Library (install .olean tree) or executable (install binaries only). isLibrary ? true, - - # Override attributes of the lakeDeps derivation. + # Override the FOD derivation attrs. overrideLakeDepsAttrs ? (finalAttrs: previousAttrs: { }), meta ? { }, @@ -96,6 +74,10 @@ lib.extendMkDerivation { isLibrary = args.isLibrary or true; leanPackageName = args.leanPackageName or finalAttrs.pname; + allLeanDeps = lib.unique ( + builtins.concatMap (dep: [ dep ] ++ (dep.passthru.allLeanDeps or [ ])) leanDeps + ); + computedLakeDeps = if lakeDeps' != null then lakeDeps' @@ -114,11 +96,18 @@ lib.extendMkDerivation { }).overrideAttrs (lib.toExtension overrideLakeDepsAttrs); - # Transitively collect all Lean dependencies. Each buildLakePackage - # library stores its own transitive closure in passthru.allLeanDeps, - # so this flattens the entire dependency DAG. - allLeanDeps = lib.unique ( - builtins.concatMap (dep: [ dep ] ++ (dep.passthru.allLeanDeps or [ ])) leanDeps + # Nix-managed dep overrides, generated at eval time. + # --packages takes precedence over .lake/package-overrides.json. + overridesFile = writeText "lake-overrides.json" ( + builtins.toJSON { + schemaVersion = "1.2.0"; + packages = map (dep: { + type = "path"; + name = dep.passthru.lakePackageName or dep.pname; + inherited = false; + dir = "${dep}"; + }) allLeanDeps; + } ); in { @@ -128,14 +117,9 @@ lib.extendMkDerivation { lean4 gitMinimal jq - lndir ]; - # Propagate so downstream packages get transitive LEAN_PATH entries - # via each dependency's nix-support/setup-hook. propagatedBuildInputs = lib.optionals isLibrary leanDeps; - - # Executables only need deps at build time. buildInputs = lib.optionals (!isLibrary) leanDeps; configurePhase = @@ -144,106 +128,34 @@ lib.extendMkDerivation { export HOME="$TMPDIR" - # Disable Lake cloud caching and Reservoir lookups + # Disable cloud caching and Reservoir lookups. export LAKE_NO_CACHE=1 export RESERVOIR_API_URL="" - - # Point leanc at the nix-provided C compiler export LEAN_CC="${stdenv.cc}/bin/cc" - # Validate that the lean-toolchain file (if present) matches the - # Lean toolchain we are building against. Mismatches between the - # toolchain version and the compiler produce confusing errors, so - # fail early with a clear message. - leanVersion="${lean4.version}" - if [ -f lean-toolchain ]; then - toolchainVersion=$(sed -n 's/^.*:v\([0-9][0-9.]*\).*/\1/p' lean-toolchain) - if [ -n "$toolchainVersion" ] && [ "$toolchainVersion" != "$leanVersion" ]; then - echo "buildLakePackage: lean-toolchain requests v$toolchainVersion but lean4 is v$leanVersion" >&2 - echo "buildLakePackage: update the package or use a matching lean4 version" >&2 - exit 1 - fi - fi - - ${lib.concatStringsSep "\n" ( - builtins.map ( - dep: - let - name = dep.passthru.lakePackageName or dep.pname; - in - '' - # Fail fast if nix-packaged dep "${name}" was built against a - # different Lean version. This avoids wasting build time when - # the package set is mid-update (e.g. lean4 bumped but a dep - # has not been updated yet). - if [ -f "${dep}/lean-toolchain" ]; then - depToolchain=$(sed -n 's/^.*:v\([0-9][0-9.]*\).*/\1/p' "${dep}/lean-toolchain") - if [ -n "$depToolchain" ] && [ "$depToolchain" != "$leanVersion" ]; then - echo "buildLakePackage: dependency ${name} was built with Lean v$depToolchain but lean4 is v$leanVersion" >&2 - echo "buildLakePackage: update ${name} first, or override lean4 in leanPackages" >&2 - exit 1 - fi - fi - '' - ) allLeanDeps - )} - if [ -n "''${LEAN_PATH:-}" ]; then echo "buildLakePackage: LEAN_PATH=$LEAN_PATH" fi - mkdir -p .lake/packages - - # Create a minimal empty manifest if none exists. Lake requires - # this file, but when all deps come from leanDeps (nix-managed), - # the actual dependency entries come from package-overrides.json. - if [ ! -f lake-manifest.json ]; then - echo '{"version":"1.1.0","packagesDir":".lake/packages","packages":[]}' \ - > lake-manifest.json - fi - ${lib.optionalString (computedLakeDeps != null) '' - # Copy fetched (not yet nix-packaged) deps into .lake/packages/ + mkdir -p .lake/packages for dep in ${computedLakeDeps}/*; do depName="$(basename "$dep")" cp -r "$dep" ".lake/packages/$depName" chmod -R u+w ".lake/packages/$depName" done - ''} - ${lib.concatStringsSep "\n" ( - builtins.map ( - dep: - let - name = dep.passthru.lakePackageName or dep.pname; - in - '' - # Install nix-packaged dep "${name}" into .lake/packages/. - # lndir creates a symlink tree so artifacts remain as - # zero-copy references to the store; writable dirs let Lake - # create metadata during workspace initialization. - rm -rf ".lake/packages/${name}" - mkdir -p ".lake/packages/${name}" - lndir -silent "${dep}" ".lake/packages/${name}" - '' - ) allLeanDeps - )} - - # Generate package-overrides.json redirecting deps to local - # paths. Scans .lake/packages/ so that nix-managed deps work - # even without a lake-manifest.json (like Haskell's package DB - # approach — nix is the sole dependency provider, Lake just - # validates against lakefile.lean at build time). - if [ -d .lake/packages ] && [ -n "$(ls -A .lake/packages/ 2>/dev/null)" ]; then + # FOD deps use package-overrides.json (the on-disk mechanism). + # Nix-managed deps use --packages (the CLI mechanism, takes precedence). jq -n --argjson pkgs "$( for dep in .lake/packages/*/; do [ -d "$dep" ] || continue depName="$(basename "$dep")" - printf '{"type":"path","name":"%s","inherited":false,"configFile":"lakefile","dir":".lake/packages/%s"}\n' \ - "$depName" "$depName" + jq -n --arg name "$depName" --arg dir ".lake/packages/$depName" \ + '{type: "path", name: $name, inherited: false, dir: $dir}' done | jq -s '.' - )" '{schemaVersion: "1.1.0", packages: $pkgs}' > .lake/package-overrides.json - fi + )" '{schemaVersion: "1.2.0", packages: $pkgs}' > .lake/package-overrides.json + ''} runHook postConfigure ''; @@ -255,7 +167,7 @@ lib.extendMkDerivation { local targets="${lib.concatStringsSep " " buildTargets}" echo "buildLakePackage: building ''${targets:-default targets}" - lake build --no-ansi $targets + lake build --no-ansi --packages=${overridesFile} $targets runHook postBuild ''; @@ -266,25 +178,22 @@ lib.extendMkDerivation { '' runHook preInstall - # Install the complete Lake package tree. $out/ IS the - # package directory — source, lakefile, and pre-built - # artifacts under .lake/build/. + # Install the complete Lake package tree. cp -rT . "$out" - # Remove build-environment artifacts that reference the - # build sandbox or dependency store paths. + # Remove build-time artifacts. rm -rf "$out/.lake/packages" rm -f "$out/.lake/package-overrides.json" - # Install the setup hook so that downstream derivations - # (and `nix develop` shells) automatically get this - # package's oleans in LEAN_PATH. + # Reconcile config trace directory naming. + if [ -d "$out/.lake/config/[anonymous]" ]; then + mv "$out/.lake/config/[anonymous]" "$out/.lake/config/${leanPackageName}" + fi + + # Setup hook propagates LEAN_PATH to downstream packages. mkdir -p "$out/nix-support" cp ${./setup-hook.sh} "$out/nix-support/setup-hook" - # Symlink any built executables into $out/bin/ for - # discoverability (e.g. packages that are both libraries - # and executables). if [ -d "$out/.lake/build/bin" ]; then mkdir -p "$out/bin" for exe in "$out/.lake/build/bin"/*; do @@ -300,7 +209,6 @@ lib.extendMkDerivation { '' runHook preInstall - # Install executables only. if [ -d .lake/build/bin ]; then mkdir -p "$out/bin" find .lake/build/bin -type f -executable \ @@ -314,8 +222,6 @@ lib.extendMkDerivation { passthru = passthru // { inherit computedLakeDeps lean4 allLeanDeps; lakePackageName = leanPackageName; - # Canonicalize overrideLakeDepsAttrs as an attribute overlay, - # following the same pattern as buildGoModule's overrideModAttrs. overrideLakeDepsAttrs = lib.toExtension overrideLakeDepsAttrs; }; diff --git a/pkgs/build-support/lake/test/weak-minimax/Main.lean b/pkgs/build-support/lake/test/weak-minimax/Main.lean deleted file mode 100644 index 490b95b07e82..000000000000 --- a/pkgs/build-support/lake/test/weak-minimax/Main.lean +++ /dev/null @@ -1,4 +0,0 @@ -import WeakMinimax - -def main : IO Unit := do - IO.println "weak_minimax: verified (maximin <= minimax)" diff --git a/pkgs/build-support/lake/test/weak-minimax/lake-manifest.json b/pkgs/build-support/lake/test/weak-minimax/lake-manifest.json new file mode 100644 index 000000000000..ef86e4de986a --- /dev/null +++ b/pkgs/build-support/lake/test/weak-minimax/lake-manifest.json @@ -0,0 +1 @@ +{"version":"1.1.0","packagesDir":".lake/packages","packages":[]} diff --git a/pkgs/build-support/lake/test/weak-minimax/lakefile.lean b/pkgs/build-support/lake/test/weak-minimax/lakefile.lean index 9937799396d1..670adcbf345c 100644 --- a/pkgs/build-support/lake/test/weak-minimax/lakefile.lean +++ b/pkgs/build-support/lake/test/weak-minimax/lakefile.lean @@ -6,7 +6,3 @@ package weakMinimax require "leanprover-community" / "mathlib" @ git "main" @[default_target] lean_lib WeakMinimax - -@[default_target] -lean_exe weakMinimax.run where - root := `Main diff --git a/pkgs/build-support/lake/test/weak-minimax/package.nix b/pkgs/build-support/lake/test/weak-minimax/package.nix index 5e6114486792..19cecab89878 100644 --- a/pkgs/build-support/lake/test/weak-minimax/package.nix +++ b/pkgs/build-support/lake/test/weak-minimax/package.nix @@ -1,12 +1,5 @@ # Test that buildLakePackage works with nix-only deps (no lake-manifest.json). # Builds a Lean proof of the weak minimax inequality using mathlib. -# -# Note: building the executable recompiles .c → .c.o for all transitive -# dependency modules because library packages only ship .olean/.ilean/.c -# artifacts (the default Lake library facet). Lake's trace system would -# reuse pre-built object files if present, but since Lean 4 is rarely -# used for application code, we defer shipping .o files in library -# packages to keep store footprint minimal. { leanPackages, runCommand, @@ -24,17 +17,10 @@ let }; in -runCommand "buildLakePackage-weak-minimax" - { - nativeBuildInputs = [ testPackage ]; - } - '' - mkdir -p $out +runCommand "buildLakePackage-weak-minimax" { } '' + mkdir -p $out - # Verify the executable runs (proof was verified at build time). - weakMinimax-run | tee $out/result - grep -q "weak_minimax" $out/result - - # Verify library output has compiled oleans. - test -d "${testPackage}/.lake/build/lib/lean" - '' + # Verify library output has compiled oleans. + test -d "${testPackage}/.lake/build/lib/lean" + touch $out/success +'' diff --git a/pkgs/by-name/al/aleo-fonts/package.nix b/pkgs/by-name/al/aleo-fonts/package.nix index 0bcb4294fab2..d5bfadced1fa 100644 --- a/pkgs/by-name/al/aleo-fonts/package.nix +++ b/pkgs/by-name/al/aleo-fonts/package.nix @@ -2,6 +2,7 @@ lib, stdenvNoCC, fetchFromGitHub, + installFonts, }: stdenvNoCC.mkDerivation { @@ -15,13 +16,7 @@ stdenvNoCC.mkDerivation { hash = "sha256-HSxP5/sLHQTujBVt1u93625EXEc42lxpt8W1//6ngWM="; }; - installPhase = '' - runHook preInstall - - install -Dm644 fonts/variable/*.ttf -t $out/share/fonts/truetype - - runHook postInstall - ''; + nativeBuildInputs = [ installFonts ]; meta = { description = "Slab serif typeface designed by Alessio Laiso"; diff --git a/pkgs/by-name/as/asusctl/package.nix b/pkgs/by-name/as/asusctl/package.nix index 2424512c0cb7..bb313a8b44f8 100644 --- a/pkgs/by-name/as/asusctl/package.nix +++ b/pkgs/by-name/as/asusctl/package.nix @@ -18,16 +18,16 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "asusctl"; - version = "6.3.5"; + version = "6.3.6"; src = fetchFromGitLab { owner = "asus-linux"; repo = "asusctl"; tag = finalAttrs.version; - hash = "sha256-99SLaDJm+stakrUmlyWznAeYKeD5SXeLAqakrmpalbc="; + hash = "sha256-HkqVNhxbz/JBVmGBeYvdWRttvAcvP05iSfp2VZPR+x8="; }; - cargoHash = "sha256-f6Zut4oknNCKmd5Igt08se2EpCLLmmIQjD02wj2lMQg="; + cargoHash = "sha256-PTktA8e5pR+vl0trH0MhBXhcsxU+d/WtBMSKeSztgSY="; postPatch = '' files=" diff --git a/pkgs/by-name/bi/bind/package.nix b/pkgs/by-name/bi/bind/package.nix index c49ae029d7fa..0c4a7dd86461 100644 --- a/pkgs/by-name/bi/bind/package.nix +++ b/pkgs/by-name/bi/bind/package.nix @@ -29,11 +29,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "bind"; - version = "9.20.18"; + version = "9.20.21"; src = fetchurl { url = "https://downloads.isc.org/isc/bind9/${finalAttrs.version}/bind-${finalAttrs.version}.tar.xz"; - hash = "sha256-38VGyZCsRRVSnNRcTdmVhisYrootDLKSCOiJal0yUzE="; + hash = "sha256-FeG1oifSiQ98ToI6bqAY3nDuLzoOhZy/89gqrYWQ3gM="; }; outputs = [ diff --git a/pkgs/by-name/bo/boringssl/package.nix b/pkgs/by-name/bo/boringssl/package.nix index 3f367f4e549a..0e53ebf6ffa8 100644 --- a/pkgs/by-name/bo/boringssl/package.nix +++ b/pkgs/by-name/bo/boringssl/package.nix @@ -11,12 +11,12 @@ # reference: https://boringssl.googlesource.com/boringssl/+/refs/tags/0.20250818.0/BUILDING.md stdenv.mkDerivation (finalAttrs: { pname = "boringssl"; - version = "0.20260211.0"; + version = "0.20260327.0"; src = fetchgit { url = "https://boringssl.googlesource.com/boringssl"; tag = finalAttrs.version; - hash = "sha256-sN0tqnS19ltXeAd3xUiLMc6kLtTYPh2xT1F1U1mPi/M="; + hash = "sha256-OMRJ4K9ETCitdEGmCYlBH8R7RjMkYno1hAX11bF8KH4="; }; patches = [ diff --git a/pkgs/by-name/di/discordo/package.nix b/pkgs/by-name/di/discordo/package.nix index 0a82eb3af3ef..5f3cc1d70dac 100644 --- a/pkgs/by-name/di/discordo/package.nix +++ b/pkgs/by-name/di/discordo/package.nix @@ -11,16 +11,16 @@ buildGoModule (finalAttrs: { pname = "discordo"; - version = "0-unstable-2026-02-26"; + version = "0-unstable-2026-03-30"; src = fetchFromGitHub { owner = "ayn2op"; repo = "discordo"; - rev = "27dd6e09c8cde848261248a505a4efbabdcc9e09"; - hash = "sha256-3rr7mbbPw5jrON7J80TaCZ7lBALKdtZ6vI2+uGJJaoI="; + rev = "48f3b5316c6a340da845c5d050b9de44d680184a"; + hash = "sha256-1SOpy8XCdfsY/Fbp4NjDS9KFA/zcSIIjZHMjIEYB+8M="; }; - vendorHash = "sha256-yzGKRrPPBjg/e9zkimCb99emLHBWM10FJvlL23HbTRU="; + vendorHash = "sha256-yQlx61R1Lx5fkctSkm64uYLqHeZZydVubpIaP00XA+U="; env.CGO_ENABLED = 1; diff --git a/pkgs/by-name/et/etcd_3_5/package.nix b/pkgs/by-name/et/etcd_3_5/package.nix index 6378c409d76d..d9a04b1fa372 100644 --- a/pkgs/by-name/et/etcd_3_5/package.nix +++ b/pkgs/by-name/et/etcd_3_5/package.nix @@ -8,11 +8,11 @@ }: let - version = "3.5.28"; - etcdSrcHash = "sha256-D4c+YfNQATW8/9m/5edPKtG9qQa8MxpbpDTCZY6cvA4="; - etcdServerVendorHash = "sha256-IiGoG/5HJBZXhWhluK1uQVOXRk2I4VDokT7EcjhEnWU="; - etcdUtlVendorHash = "sha256-mUzwpxAsUhXdK70BwtjWJqjzLpDnNFNXW6tHP81c72w="; - etcdCtlVendorHash = "sha256-Bn3mirDqs9enpNTlp65YWiQRKpc+B6wD33b0xkaqSKE="; + version = "3.5.29"; + etcdSrcHash = "sha256-riihCSd7QsH+G+//XcV+DYn7kBbXAbTjEBEXcP/mh1w="; + etcdServerVendorHash = "sha256-eJKgZ2kFNrWI+uKKv1xD7tGLkWaGqa/ODjA09SwDAzg="; + etcdUtlVendorHash = "sha256-+1/E/VGpszXEIID7tgSbiCpe4KQkUcSKJJRAUdTUklQ="; + etcdCtlVendorHash = "sha256-Xznj9HPx4BTUpipBmucbKjIcQpj+diyw0FtsdQVV61Y="; src = fetchFromGitHub { owner = "etcd-io"; diff --git a/pkgs/by-name/ff/fflas-ffpack/package.nix b/pkgs/by-name/ff/fflas-ffpack/package.nix index 44a6371b9c0e..6bd573e884b0 100644 --- a/pkgs/by-name/ff/fflas-ffpack/package.nix +++ b/pkgs/by-name/ff/fflas-ffpack/package.nix @@ -8,6 +8,7 @@ blas, lapack, gmpxx, + fetchpatch2, }: assert (!blas.isILP64) && (!lapack.isILP64); @@ -23,6 +24,20 @@ stdenv.mkDerivation rec { sha256 = "sha256-Eztc2jUyKRVUiZkYEh+IFHkDuPIy+Gx3ZW/MsuOVaMc="; }; + patches = [ + (fetchpatch2 { + name = "detect-openmp.patch"; + url = "https://github.com/linbox-team/fflas-ffpack/commit/833bb2fa4e87e51e3f7fa1d97f3b4372c1ee4200.patch?full_index=1"; + hash = "sha256-COJxb1Y47rLBogJuXzznKHOSs9gAX1BtN+j8pEqOhLY="; + excludes = [ "benchmarks/*" ]; + }) + (fetchpatch2 { + name = "do-not-use-_mm_permute_ps-for-simd128_float.patch"; + url = "https://github.com/linbox-team/fflas-ffpack/commit/be33b602ecdef543a30ea494899b08610c7e0a74.patch?full_index=1"; + hash = "sha256-YWUFnPViXwyyHLXuewX6KQsgUiwgl6vfYnZX2JzgkE4="; + }) + ]; + nativeCheckInputs = [ gmpxx ]; @@ -45,21 +60,6 @@ stdenv.mkDerivation rec { "--with-blas-libs=-lcblas" "--with-lapack-libs=-llapacke" "--without-archnative" - ] - ++ lib.optionals stdenv.hostPlatform.isx86_64 [ - # disable SIMD instructions (which are enabled *when available* by default) - # for now we need to be careful to disable *all* relevant versions of an instruction set explicitly (https://github.com/linbox-team/fflas-ffpack/issues/284) - "--${if stdenv.hostPlatform.sse3Support then "enable" else "disable"}-sse3" - "--${if stdenv.hostPlatform.ssse3Support then "enable" else "disable"}-ssse3" - "--${if stdenv.hostPlatform.sse4_1Support then "enable" else "disable"}-sse41" - "--${if stdenv.hostPlatform.sse4_2Support then "enable" else "disable"}-sse42" - "--${if stdenv.hostPlatform.avxSupport then "enable" else "disable"}-avx" - "--${if stdenv.hostPlatform.avx2Support then "enable" else "disable"}-avx2" - "--${if stdenv.hostPlatform.avx512Support then "enable" else "disable"}-avx512f" - "--${if stdenv.hostPlatform.avx512Support then "enable" else "disable"}-avx512dq" - "--${if stdenv.hostPlatform.avx512Support then "enable" else "disable"}-avx512vl" - "--${if stdenv.hostPlatform.fmaSupport then "enable" else "disable"}-fma" - "--${if stdenv.hostPlatform.fma4Support then "enable" else "disable"}-fma4" ]; doCheck = true; diff --git a/pkgs/by-name/ge/gedit/package.nix b/pkgs/by-name/ge/gedit/package.nix index df81fb5b2d06..e9902f20413a 100644 --- a/pkgs/by-name/ge/gedit/package.nix +++ b/pkgs/by-name/ge/gedit/package.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "gedit"; - version = "49.0"; + version = "50.0"; outputs = [ "out" @@ -42,7 +42,7 @@ stdenv.mkDerivation (finalAttrs: { repo = "gedit"; tag = finalAttrs.version; fetchSubmodules = true; - hash = "sha256-IW3zBQOq/eeIjJbgJooHlOd+6/ZHOG6DUspHUlopG8A="; + hash = "sha256-UkKd1H7twf9r9Jf5Cx6br/8lVT2F2O9U5jR2Ihom0ZA="; }; patches = [ diff --git a/pkgs/by-name/ku/kubernix/Cargo.lock b/pkgs/by-name/ku/kubernix/Cargo.lock deleted file mode 100644 index ad0889c807e7..000000000000 --- a/pkgs/by-name/ku/kubernix/Cargo.lock +++ /dev/null @@ -1,1131 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "anyhow" -version = "1.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" - -[[package]] -name = "cc" -version = "1.2.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" -dependencies = [ - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" - -[[package]] -name = "clap" -version = "3.0.0-beta.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd1061998a501ee7d4b6d449020df3266ca3124b941ec56cf2005c3779ca142" -dependencies = [ - "atty", - "bitflags 1.3.2", - "clap_derive", - "indexmap", - "lazy_static", - "os_str_bytes", - "strsim", - "termcolor", - "terminal_size", - "textwrap", - "unicode-width 0.1.14", - "vec_map", -] - -[[package]] -name = "clap_derive" -version = "3.0.0-beta.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370f715b81112975b1b69db93e0b56ea4cd4e5002ac43b2da8474106a54096a1" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "console" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3993e6445baa160675931ec041a5e03ca84b9c6e32a056150d3aa2bdda0a1f45" -dependencies = [ - "encode_unicode 0.3.6", - "lazy_static", - "libc", - "regex", - "terminal_size", - "unicode-width 0.1.14", - "winapi", -] - -[[package]] -name = "console" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d" -dependencies = [ - "encode_unicode 1.0.0", - "libc", - "once_cell", - "unicode-width 0.2.1", - "windows-sys 0.60.2", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - -[[package]] -name = "encode_unicode" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" - -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - -[[package]] -name = "err-derive" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "rustversion", - "syn 1.0.109", - "synstructure", -] - -[[package]] -name = "errno" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "getrandom" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasi 0.14.2+wasi-0.2.4", -] - -[[package]] -name = "getset" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf0fc11e47561d47397154977bc219f4cf809b2974facc3ccb3b89e2436f912" -dependencies = [ - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.104", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hostname" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" -dependencies = [ - "libc", - "match_cfg", - "winapi", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown", -] - -[[package]] -name = "indicatif" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7baab56125e25686df467fe470785512329883aab42696d661247aca2a2896e4" -dependencies = [ - "console 0.16.0", - "lazy_static", - "number_prefix", - "regex", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "ipnetwork" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4088d739b183546b239688ddbc79891831df421773df95e236daf7867866d355" -dependencies = [ - "serde", -] - -[[package]] -name = "itoa" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" - -[[package]] -name = "kubernix" -version = "0.2.0" -dependencies = [ - "anyhow", - "base64", - "clap", - "clap_derive", - "console 0.14.1", - "crossbeam-channel", - "getset", - "hostname", - "indicatif", - "ipnetwork", - "lazy_static", - "log", - "nix", - "parking_lot", - "proc-mounts", - "rand", - "rayon", - "serde", - "serde_json", - "serde_yaml", - "signal-hook", - "tempfile", - "toml", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libc" -version = "0.2.174" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" - -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - -[[package]] -name = "linux-raw-sys" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" - -[[package]] -name = "lock_api" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" -dependencies = [ - "serde", -] - -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - -[[package]] -name = "memchr" -version = "2.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" - -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - -[[package]] -name = "nix" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" -dependencies = [ - "bitflags 1.3.2", - "cc", - "cfg-if", - "libc", - "memoffset", -] - -[[package]] -name = "number_prefix" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b02fc0ff9a9e4b35b3342880f48e896ebf69f2967921fe8646bf5b7125956a" - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "os_str_bytes" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb2e1c3ee07430c2cf76151675e583e0f19985fa6efae47d6848a3e2c824f85" - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi", -] - -[[package]] -name = "partition-identity" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec13ba9a0eec5c10a89f6ec1b6e9e2ef7d29b810d771355abbd1c43cae003ed6" -dependencies = [ - "err-derive", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.104", -] - -[[package]] -name = "proc-macro2" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proc-mounts" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad7e9c8d1b8c20f16a84d61d7c4c0325a5837c1307a2491b509cd92fb4e4442" -dependencies = [ - "lazy_static", - "partition-identity", -] - -[[package]] -name = "quote" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.16", -] - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "regex" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "rustix" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" -dependencies = [ - "bitflags 2.9.1", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustversion" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" - -[[package]] -name = "ryu" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "serde" -version = "1.0.219" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.219" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", -] - -[[package]] -name = "serde_json" -version = "1.0.140" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_yaml" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" -dependencies = [ - "indexmap", - "ryu", - "serde", - "yaml-rust", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" -dependencies = [ - "libc", -] - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "unicode-xid", -] - -[[package]] -name = "tempfile" -version = "3.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" -dependencies = [ - "fastrand", - "getrandom 0.3.3", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "terminal_size" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "textwrap" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "203008d98caf094106cfaba70acfed15e18ed3ddb7d94e49baec153a2b462789" -dependencies = [ - "terminal_size", - "unicode-width 0.1.14", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "unicode-ident" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "unicode-width" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" -dependencies = [ - "wit-bindgen-rt", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.2", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" -dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" - -[[package]] -name = "wit-bindgen-rt" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "yaml-rust" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] - -[[package]] -name = "zerocopy" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", -] diff --git a/pkgs/by-name/ku/kubernix/Cargo.toml.patch b/pkgs/by-name/ku/kubernix/Cargo.toml.patch deleted file mode 100644 index b4c21e3e7292..000000000000 --- a/pkgs/by-name/ku/kubernix/Cargo.toml.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/Cargo.toml b/Cargo.toml -index 681e634..48cbc8e 100644 ---- a/Cargo.toml -+++ b/Cargo.toml -@@ -19,7 +19,8 @@ path = "src/main.rs" - [dependencies] - anyhow = "1.0.43" - base64 = "0.13.0" --clap = { git = "https://github.com/clap-rs/clap", features = ["wrap_help"] } -+clap = { version = "= 3.0.0-beta.2", features = ["wrap_help"] } -+clap_derive = "= 3.0.0-beta.2" - console = "0.14.1" - crossbeam-channel = "0.5.1" - getset = "0.1.1" diff --git a/pkgs/by-name/ku/kubernix/fix-compile-error.patch b/pkgs/by-name/ku/kubernix/fix-compile-error.patch deleted file mode 100644 index 9e550e46da7f..000000000000 --- a/pkgs/by-name/ku/kubernix/fix-compile-error.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/crio.rs b/src/crio.rs -index 36bf40b..97d5e57 100644 ---- a/src/crio.rs -+++ b/src/crio.rs -@@ -34,7 +34,7 @@ impl Display for CriSocket { - impl CriSocket { - pub fn new(path: PathBuf) -> Result { - if path.display().to_string().len() > 100 { -- bail!("Socket path '{}' is too long") -+ bail!("Socket path '{}' is too long", path.display().to_string()) - } - Ok(CriSocket(path)) - } diff --git a/pkgs/by-name/ku/kubernix/package.nix b/pkgs/by-name/ku/kubernix/package.nix index bfcd0442eb94..60a39ac41858 100644 --- a/pkgs/by-name/ku/kubernix/package.nix +++ b/pkgs/by-name/ku/kubernix/package.nix @@ -4,38 +4,28 @@ rustPlatform, }: -rustPlatform.buildRustPackage { +rustPlatform.buildRustPackage (finalAttrs: { pname = "kubernix"; - version = "0.2.0-unstable-2021-11-16"; + version = "0.3.1"; src = fetchFromGitHub { owner = "saschagrunert"; repo = "kubernix"; - rev = "630087e023e403d461c4bb8b1c9368b26a2c0744"; - sha256 = "sha256-IkfVpNxWOqQt/aXsN4iD9dkKKyOui3maKowVibuKbvM="; + tag = "v${finalAttrs.version}"; + sha256 = "sha256-1cnh4h8rX6Uv/JlUy2uSpwgcjo2yTyTi+bHvWREZ7e0="; }; - cargoLock.lockFile = ./Cargo.lock; - - patches = [ - # Need a specific version of clap and clap_derive: fails with anything greater. - ./Cargo.toml.patch - # error: 1 positional argument in format string, but no arguments were given - ./fix-compile-error.patch - ]; - - postPatch = '' - cp ${./Cargo.lock} Cargo.lock - ''; + cargoHash = "sha256-7Pyj+sLvkEOIYt7UYcpsS65gjNHxXZQS1RRQDagCW8Y="; + # Tests require network access doCheck = false; meta = { description = "Single dependency Kubernetes clusters for local testing, experimenting and development"; mainProgram = "kubernix"; homepage = "https://github.com/saschagrunert/kubernix"; - license = with lib.licenses; [ mit ]; + license = with lib.licenses; [ asl20 ]; maintainers = with lib.maintainers; [ saschagrunert ]; platforms = lib.platforms.linux; }; -} +}) diff --git a/pkgs/by-name/la/lasuite-meet-frontend/package.nix b/pkgs/by-name/la/lasuite-meet-frontend/package.nix index f48816866ab8..e490d6167a82 100644 --- a/pkgs/by-name/la/lasuite-meet-frontend/package.nix +++ b/pkgs/by-name/la/lasuite-meet-frontend/package.nix @@ -7,13 +7,13 @@ buildNpmPackage rec { pname = "lasuite-meet-frontend"; - version = "1.12.0"; + version = "1.13.0"; src = fetchFromGitHub { owner = "suitenumerique"; repo = "meet"; tag = "v${version}"; - hash = "sha256-xm9NhsoM4ggLdtULfiUqJkB41n8q6eS8g4Q/zBaKRbs="; + hash = "sha256-OCW/8JIysegeB0XKfOe6tbYi/TV0NHFvwybalg96maM="; }; sourceRoot = "source/src/frontend"; @@ -21,7 +21,7 @@ buildNpmPackage rec { npmDeps = fetchNpmDeps { inherit version src; sourceRoot = "source/src/frontend"; - hash = "sha256-HobRnbl7fJJ2F0YuA3eyI0R0eW9FveGyqosj0F+Q73I="; + hash = "sha256-QL4D55uw80TUJbS+qD2RDgsLVU0kmxxvc+SUXryqno0="; }; buildPhase = '' diff --git a/pkgs/by-name/la/lasuite-meet/package.nix b/pkgs/by-name/la/lasuite-meet/package.nix index 6c66b61c6540..d81e3955403f 100644 --- a/pkgs/by-name/la/lasuite-meet/package.nix +++ b/pkgs/by-name/la/lasuite-meet/package.nix @@ -13,14 +13,14 @@ in python.pkgs.buildPythonApplication rec { pname = "lasuite-meet"; - version = "1.12.0"; + version = "1.13.0"; pyproject = true; src = fetchFromGitHub { owner = "suitenumerique"; repo = "meet"; tag = "v${version}"; - hash = "sha256-xm9NhsoM4ggLdtULfiUqJkB41n8q6eS8g4Q/zBaKRbs="; + hash = "sha256-OCW/8JIysegeB0XKfOe6tbYi/TV0NHFvwybalg96maM="; }; sourceRoot = "source/src/backend"; diff --git a/pkgs/by-name/li/libgedit-amtk/package.nix b/pkgs/by-name/li/libgedit-amtk/package.nix index 4301fb3f186d..48239b0ef25b 100644 --- a/pkgs/by-name/li/libgedit-amtk/package.nix +++ b/pkgs/by-name/li/libgedit-amtk/package.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "libgedit-amtk"; - version = "5.9.2"; + version = "5.10.0"; outputs = [ "out" @@ -31,8 +31,9 @@ stdenv.mkDerivation (finalAttrs: { group = "World"; owner = "gedit"; repo = "libgedit-amtk"; - rev = finalAttrs.version; - hash = "sha256-TpPiVIsHIBrRzDG2oBwtrIYB3CYEW6SRRVow9pe2XFs="; + tag = finalAttrs.version; + forceFetchGit = true; # To avoid occasional 501 failures. + hash = "sha256-wA5KRA1qWJzw5JRXQL/kP2BgCQiNhf6aIe6RppBEH90="; }; strictDeps = true; diff --git a/pkgs/by-name/li/libgedit-gfls/package.nix b/pkgs/by-name/li/libgedit-gfls/package.nix index 2cc1093e87ac..f5962dc28250 100644 --- a/pkgs/by-name/li/libgedit-gfls/package.nix +++ b/pkgs/by-name/li/libgedit-gfls/package.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "libgedit-gfls"; - version = "0.3.1"; + version = "0.4.0"; outputs = [ "out" @@ -30,7 +30,8 @@ stdenv.mkDerivation (finalAttrs: { owner = "gedit"; repo = "libgedit-gfls"; tag = finalAttrs.version; - hash = "sha256-HBXOphDvFwXea0mlfPqPtaXgNpAZyHYwuHBn5f7hPso="; + forceFetchGit = true; # To avoid occasional 501 failures. + hash = "sha256-VzQ58XD5Yfy+gv77yTVoYHhooz2pfAV0huJI023s8ew="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/li/libgedit-gtksourceview/package.nix b/pkgs/by-name/li/libgedit-gtksourceview/package.nix index c1b7dfed6832..21cc59c282a7 100644 --- a/pkgs/by-name/li/libgedit-gtksourceview/package.nix +++ b/pkgs/by-name/li/libgedit-gtksourceview/package.nix @@ -8,6 +8,8 @@ meson, ninja, pkg-config, + libgedit-amtk, + libgedit-gfls, libxml2, glib, gtk3, @@ -17,7 +19,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "libgedit-gtksourceview"; - version = "299.6.0"; + version = "299.7.0"; outputs = [ "out" @@ -30,8 +32,9 @@ stdenv.mkDerivation (finalAttrs: { group = "World"; owner = "gedit"; repo = "libgedit-gtksourceview"; - rev = finalAttrs.version; - hash = "sha256-PBayAXttEFB1nHXOFTHvc4/vSL8+VZjuuwyeMKHKd9I="; + tag = finalAttrs.version; + forceFetchGit = true; # To avoid occasional 501 failures. + hash = "sha256-CU9EO0oHfkdWPyicmIG6eaN+wUvvkUhrb6wgNosnm2Q="; }; patches = [ @@ -51,6 +54,8 @@ stdenv.mkDerivation (finalAttrs: { ]; buildInputs = [ + libgedit-amtk + libgedit-gfls libxml2 ]; diff --git a/pkgs/by-name/li/libiscsi/package.nix b/pkgs/by-name/li/libiscsi/package.nix index 7b8f5d74aea0..b6d93ee53bb2 100644 --- a/pkgs/by-name/li/libiscsi/package.nix +++ b/pkgs/by-name/li/libiscsi/package.nix @@ -7,13 +7,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "libiscsi"; - version = "1.20.0"; + version = "1.20.3"; src = fetchFromGitHub { owner = "sahlberg"; repo = "libiscsi"; rev = finalAttrs.version; - sha256 = "sha256-idiK9JowKhGAk5F5qJ57X14Q2Y0TbIKRI02onzLPkas="; + sha256 = "sha256-ARajWZ5/LIfFNCdp3HvQiyhR455+sJNzUPbBrz/pZ7E="; }; postPatch = '' @@ -24,8 +24,14 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ autoreconfHook ]; env = lib.optionalAttrs (stdenv.hostPlatform.is32bit || stdenv.hostPlatform.isDarwin) { - # iscsi-discard.c:223:57: error: format specifies type 'unsigned long' but the argument has type 'uint64_t' (aka 'unsigned long long') [-Werror,-Wformat] - NIX_CFLAGS_COMPILE = "-Wno-error=format"; + NIX_CFLAGS_COMPILE = toString [ + # iscsi-discard.c:223:57: error: format specifies type 'unsigned long' but the argument has type 'uint64_t' (aka 'unsigned long long') [-Werror,-Wformat] + "-Wno-error=format" + # multithreading.c:257:16: error: 'sem_init' is deprecated [-Werror,-Wdeprecated-declarations] + "-Wno-error=deprecated-declarations" + # scsi-lowlevel.c:1244:11: error: cast from 'uint8_t *' (aka 'unsigned char *') to 'uint16_t *' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Werror,-Wcast-align] + "-Wno-error=cast-align" + ]; }; meta = { diff --git a/pkgs/by-name/li/libosmium/package.nix b/pkgs/by-name/li/libosmium/package.nix index f1d66a8fb58e..29f9d612616f 100644 --- a/pkgs/by-name/li/libosmium/package.nix +++ b/pkgs/by-name/li/libosmium/package.nix @@ -13,13 +13,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "libosmium"; - version = "2.23.0"; + version = "2.23.1"; src = fetchFromGitHub { owner = "osmcode"; repo = "libosmium"; tag = "v${finalAttrs.version}"; - hash = "sha256-VYNNp7czQgIvPhYxXlPaY/qlVxoZZ6CiJXWrHW+zAD8="; + hash = "sha256-ZGLA5E/Gpwi433faUB9xLS/AhFHtWaFj/9dTh3zBTAE="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/by-name/li/libtorrent-rasterbar-2_0_x/distutils.patch b/pkgs/by-name/li/libtorrent-rasterbar-2_0_x/distutils.patch deleted file mode 100644 index 57c90b69808c..000000000000 --- a/pkgs/by-name/li/libtorrent-rasterbar-2_0_x/distutils.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt -index 2f4de4854..a68d547e6 100644 ---- a/bindings/python/CMakeLists.txt -+++ b/bindings/python/CMakeLists.txt -@@ -95,8 +95,13 @@ if (python-install-system-dir) - else() - execute_process( - COMMAND "${Python3_EXECUTABLE}" -c [=[ --import distutils.sysconfig --print(distutils.sysconfig.get_python_lib(prefix='', plat_specific=True)) -+try: -+ import distutils.sysconfig -+ print(distutils.sysconfig.get_python_lib(prefix='', plat_specific=True)) -+except ModuleNotFoundError: -+ import os, sys -+ version = f"{sys.version_info.major}.{sys.version_info.minor}" -+ print(os.sep.join(["lib", f"python{version}", "site-packages"])) - ]=] - OUTPUT_VARIABLE _PYTHON3_SITE_ARCH - OUTPUT_STRIP_TRAILING_WHITESPACE diff --git a/pkgs/by-name/li/libtorrent-rasterbar-2_0_x/package.nix b/pkgs/by-name/li/libtorrent-rasterbar-2_0_x/package.nix index f9c578dca6f9..82626adf9740 100644 --- a/pkgs/by-name/li/libtorrent-rasterbar-2_0_x/package.nix +++ b/pkgs/by-name/li/libtorrent-rasterbar-2_0_x/package.nix @@ -17,14 +17,14 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "libtorrent-rasterbar"; - version = "2.0.11"; + version = "2.0.12"; src = fetchFromGitHub { owner = "arvidn"; repo = "libtorrent"; tag = "v${finalAttrs.version}"; fetchSubmodules = true; - hash = "sha256-iph42iFEwP+lCWNPiOJJOejISFF6iwkGLY9Qg8J4tyo="; + hash = "sha256-JbNOKzB830VQkZjC8ZAmzbu/7nkAgyD8cOr22uYbIGQ="; }; nativeBuildInputs = [ @@ -40,8 +40,7 @@ stdenv.mkDerivation (finalAttrs: { strictDeps = true; patches = [ - # provide distutils alternative for python 3.12 - ./distutils.patch + ./python-destdir.patch ]; # https://github.com/arvidn/libtorrent/issues/6865 diff --git a/pkgs/by-name/li/libtorrent-rasterbar-2_0_x/python-destdir.patch b/pkgs/by-name/li/libtorrent-rasterbar-2_0_x/python-destdir.patch new file mode 100644 index 000000000000..d1965bd1fa7a --- /dev/null +++ b/pkgs/by-name/li/libtorrent-rasterbar-2_0_x/python-destdir.patch @@ -0,0 +1,13 @@ +diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt +index 4e8ee816b..ff1981d84 100644 +--- a/bindings/python/CMakeLists.txt ++++ b/bindings/python/CMakeLists.txt +@@ -106,7 +106,7 @@ endif() + message(STATUS "Python 3 site packages: ${_PYTHON3_SITE_ARCH}") + message(STATUS "Python 3 extension suffix: ${Python3_SOABI}") + +-install(TARGETS python-libtorrent DESTINATION "${_PYTHON3_SITE_ARCH}") ++install(TARGETS python-libtorrent DESTINATION "\$ENV{DESTDIR}${_PYTHON3_SITE_ARCH}") + + if (python-egg-info) + set(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.cmake.in") diff --git a/pkgs/by-name/lo/lowdown/package.nix b/pkgs/by-name/lo/lowdown/package.nix index d74416a0cba6..ad56e0e6991d 100644 --- a/pkgs/by-name/lo/lowdown/package.nix +++ b/pkgs/by-name/lo/lowdown/package.nix @@ -11,6 +11,7 @@ enableDarwinSandbox ? true, # for passthru.tests nix, + lix, lowdown-unsandboxed, }: @@ -18,7 +19,7 @@ stdenv.mkDerivation rec { pname = "lowdown${ lib.optionalString (stdenv.hostPlatform.isDarwin && !enableDarwinSandbox) "-unsandboxed" }"; - version = "2.0.4"; + version = "3.0.1"; outputs = [ "out" @@ -29,7 +30,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "https://kristaps.bsd.lv/lowdown/snapshots/lowdown-${version}.tar.gz"; - sha512 = "649a508b7727df6e7e1203abb3853e05f167b64832fd5e1271f142ccf782e600b1de73c72dc02673d7b175effdc54f2c0f60318208a968af9f9763d09cf4f9ef"; + sha512 = "fe68e1b7ff23f3992398356d7aa9a330dfd7b72e22bea9a91eeef74182b209ecea0c9f3e2b2216e1a07b2358da2b746238ec9cbbdeebdd3551cef14dd2d79f46"; }; # https://github.com/kristapsdz/lowdown/pull/171 @@ -42,12 +43,6 @@ stdenv.mkDerivation rec { ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ fixDarwinDylibNames ]; - postPatch = '' - # fails test, some column width mismatch - rm regress/table-footnotes.md - rm regress/table-styles.md - ''; - # The Darwin sandbox calls fail inside Nix builds, presumably due to # being nested inside another sandbox. preConfigure = lib.optionalString (stdenv.hostPlatform.isDarwin && !enableDarwinSandbox) '' @@ -103,7 +98,7 @@ stdenv.mkDerivation rec { runHook preInstallCheck echo '# TEST' > test.md - $out/bin/lowdown test.md + $out/bin/lowdown test.md | grep '[hH]1' runHook postInstallCheck ''; @@ -113,7 +108,7 @@ stdenv.mkDerivation rec { passthru.tests = { # most important consumers in nixpkgs - inherit nix lowdown-unsandboxed; + inherit nix lix lowdown-unsandboxed; }; meta = { diff --git a/pkgs/by-name/mc/mcp-grafana/package.nix b/pkgs/by-name/mc/mcp-grafana/package.nix index b46bfb5e18ae..4d5892e30507 100644 --- a/pkgs/by-name/mc/mcp-grafana/package.nix +++ b/pkgs/by-name/mc/mcp-grafana/package.nix @@ -6,16 +6,16 @@ buildGoModule (finalAttrs: { pname = "mcp-grafana"; - version = "0.11.3"; + version = "0.11.4"; src = fetchFromGitHub { owner = "grafana"; repo = "mcp-grafana"; tag = "v${finalAttrs.version}"; - hash = "sha256-rHUoHtJoZXDwXU7/fTAymmQGLwAFDRHwqMSbnZvsoUc="; + hash = "sha256-sOT4rS9lEKJmQM9roLJbbs/8Y7thEr3KvwChXrsRKr4="; }; - vendorHash = "sha256-w4v1/RqnNfGFzapmWd96UTT4Sc18lSVX5HvsXWWmhSY="; + vendorHash = "sha256-EXjZjXwyeH7zTgYvtMbtWh1j6xk2ybbeqvbxLz5yA+I="; ldflags = [ "-s" diff --git a/pkgs/by-name/ne/neovide/package.nix b/pkgs/by-name/ne/neovide/package.nix index d08a34c08484..ff1927bf1be0 100644 --- a/pkgs/by-name/ne/neovide/package.nix +++ b/pkgs/by-name/ne/neovide/package.nix @@ -30,16 +30,16 @@ rustPlatform.buildRustPackage.override { stdenv = clangStdenv; } (finalAttrs: { pname = "neovide"; - version = "0.15.2"; + version = "0.16.0"; src = fetchFromGitHub { owner = "neovide"; repo = "neovide"; tag = finalAttrs.version; - hash = "sha256-NJ4BuJLABIuB7We11QGoKZ3fgjDBdZDyZuBKq6LIWA8="; + hash = "sha256-i3HEdYZ1fTK8kHRMhGVY80kE6Sp/HhNV4vG2cVroDWo="; }; - cargoHash = "sha256-DD2c63JHMdzwD1OmC7c9dMB59qjvdAYZ9drQf3f8xCs="; + cargoHash = "sha256-ybPKRgUZ2MRbzSFyevxSDtsNyU4iQwL4b7JIqBpbwk4="; env = { SKIA_SOURCE_DIR = @@ -48,8 +48,8 @@ rustPlatform.buildRustPackage.override { stdenv = clangStdenv; } (finalAttrs: { owner = "rust-skia"; repo = "skia"; # see rust-skia:skia-bindings/Cargo.toml#package.metadata skia - tag = "m140-0.87.4"; - hash = "sha256-pHxqTrqguZcPmuZgv0ASbJ3dgn8JAyHI7+PdBX5gAZQ="; + tag = "m145-0.92.0"; + hash = "sha256-9N780AwheKBJRcZC4l/uWFNq+oOyoNp4M6dJAVVAFeo="; }; # The externals for skia are taken from skia/DEPS externals = linkFarm "skia-externals" ( diff --git a/pkgs/by-name/ne/neovide/skia-externals.json b/pkgs/by-name/ne/neovide/skia-externals.json index 191578bbb554..226e3f103ed4 100644 --- a/pkgs/by-name/ne/neovide/skia-externals.json +++ b/pkgs/by-name/ne/neovide/skia-externals.json @@ -21,8 +21,8 @@ }, "harfbuzz": { "url": "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git", - "rev": "08b52ae2e44931eef163dbad71697f911fadc323", - "sha256": "sha256-sP9FQLUEgTZFlvfYqSZnzZqBMxVotzD0FKKsu3/OdUw=" + "rev": "31695252eb6ed25096893aec7f848889dad874bc", + "sha256": "sha256-Csyz08JTNXfY2fo27x1Eg1CqO/tt8Rt9udr3KflojSg=" }, "wuffs": { "url": "https://skia.googlesource.com/external/github.com/google/wuffs-mirror-release-c.git", @@ -31,7 +31,7 @@ }, "libpng": { "url": "https://skia.googlesource.com/third_party/libpng.git", - "rev": "ed217e3e601d8e462f7fd1e04bed43ac42212429", - "sha256": "sha256-Mo1M8TuVaoSIb7Hy2u6zgjZ1DKgpmgNmGRP6dGg/aTs=" + "rev": "4e3f57d50f552841550a36eabbb3fbcecacb7750", + "sha256": "sha256-tNRrA9RUp6Mi7dbIB/70a/4tn/JxAsTUb9EI9nlXLjM=" } } diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py index 95ebb3c9c0c2..0e89656ec7aa 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py @@ -717,6 +717,12 @@ def switch_to_configuration( }, remote=target_host, sudo=sudo, + # switch-to-configuration is not expected to produce meaningful + # stdout, but if it (or any of its children) does, it would leak + # into our stdout and break the "only the store path on stdout" + # contract documented in services.py (see print_result). Redirect + # its stdout to our stderr defensively. + stdout=sys.stderr, ) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py index 456a41f46eac..3ebba4edc5b6 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py @@ -249,6 +249,7 @@ def test_execute_nix_boot(mock_run: Mock, tmp_path: Path) -> None: "boot", ], check=True, + stdout=ANY, **( DEFAULT_RUN_KWARGS | { @@ -547,6 +548,7 @@ def test_execute_nix_switch_flake(mock_run: Mock, tmp_path: Path) -> None: "switch", ], check=True, + stdout=ANY, **DEFAULT_RUN_KWARGS, ), ] @@ -795,6 +797,7 @@ def test_execute_nix_switch_build_target_host( "switch", ], check=True, + stdout=ANY, **DEFAULT_RUN_KWARGS, ), ] @@ -920,6 +923,7 @@ def test_execute_nix_switch_flake_target_host( "switch", ], check=True, + stdout=ANY, **DEFAULT_RUN_KWARGS, ), ] @@ -1047,6 +1051,7 @@ def test_execute_nix_switch_flake_build_host( "switch", ], check=True, + stdout=ANY, **DEFAULT_RUN_KWARGS, ), ] @@ -1132,6 +1137,7 @@ def test_execute_switch_rollback(mock_run: Mock, tmp_path: Path) -> None: "switch", ], check=True, + stdout=ANY, **DEFAULT_RUN_KWARGS, ), ] @@ -1307,6 +1313,7 @@ def test_execute_test_flake(mock_run: Mock, tmp_path: Path) -> None: call( [config_path / "bin/switch-to-configuration", "test"], check=True, + stdout=ANY, **DEFAULT_RUN_KWARGS, ), ] @@ -1372,6 +1379,7 @@ def test_execute_test_rollback( "test", ], check=True, + stdout=ANY, **DEFAULT_RUN_KWARGS, ), ] @@ -1433,6 +1441,7 @@ def test_execute_switch_store_path(mock_run: Mock, tmp_path: Path) -> None: "switch", ], check=True, + stdout=ANY, **( DEFAULT_RUN_KWARGS | { @@ -1551,6 +1560,7 @@ def test_execute_switch_store_path_target_host( "switch", ], check=True, + stdout=ANY, **DEFAULT_RUN_KWARGS, ), ] diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py index 28948d1eaaff..f8c6d75c5290 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py @@ -770,6 +770,7 @@ def test_switch_to_configuration_without_systemd_run( }, sudo=False, remote=None, + stdout=sys.stderr, ) with pytest.raises(m.NixOSRebuildError) as e: @@ -811,6 +812,7 @@ def test_switch_to_configuration_without_systemd_run( }, sudo=True, remote=target_host, + stdout=sys.stderr, ) @@ -846,6 +848,7 @@ def test_switch_to_configuration_with_systemd_run( }, sudo=False, remote=None, + stdout=sys.stderr, ) target_host = m.Remote("user@localhost", [], None, "ssh") @@ -875,6 +878,7 @@ def test_switch_to_configuration_with_systemd_run( }, sudo=True, remote=target_host, + stdout=sys.stderr, ) diff --git a/pkgs/by-name/op/openfreebuds/package.nix b/pkgs/by-name/op/openfreebuds/package.nix index 54ef895ed4dc..f8c259042295 100644 --- a/pkgs/by-name/op/openfreebuds/package.nix +++ b/pkgs/by-name/op/openfreebuds/package.nix @@ -19,7 +19,7 @@ python3Packages.buildPythonApplication (finalAttrs: { pyproject = true; - pythonRelaxDeps = [ "psutil" ]; + pythonRelaxDeps = true; build-system = with python3Packages; [ pdm-backend @@ -33,6 +33,16 @@ python3Packages.buildPythonApplication (finalAttrs: { buildInputs = [ qt6.qtbase ]; + nativeCheckInputs = with python3Packages; [ + pytest-asyncio + pytestCheckHook + ]; + + pytestFlagsArray = [ + "openfreebuds/driver/huawei/test/" + "openfreebuds/test/test_event_bus.py" + ]; + dependencies = with python3Packages; [ aiocmd aiohttp diff --git a/pkgs/by-name/os/osmium-tool/package.nix b/pkgs/by-name/os/osmium-tool/package.nix index 2d812e1b956c..754c0ca07e3c 100644 --- a/pkgs/by-name/os/osmium-tool/package.nix +++ b/pkgs/by-name/os/osmium-tool/package.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchFromGitHub, + fetchpatch, cmake, installShellFiles, pandoc, @@ -26,6 +27,14 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-x5qEW4DqOw/vA+IuZA7VC5WRn+uDOZ6dJhyJoi7UKOA="; }; + patches = [ + # Fix apply-changes-version-on-version-timestamp test + (fetchpatch { + url = "https://github.com/osmcode/osmium-tool/commit/e58501ed1570f19340173c668568790369214d46.patch"; + hash = "sha256-VhdwY1DpfTQAx24Qck0a96GGnEGfg4T27wSeGO1zdng="; + }) + ]; + nativeBuildInputs = [ cmake installShellFiles diff --git a/pkgs/by-name/re/renode-unstable/deps.json b/pkgs/by-name/re/renode-unstable/deps.json new file mode 100644 index 000000000000..7dd406f27405 --- /dev/null +++ b/pkgs/by-name/re/renode-unstable/deps.json @@ -0,0 +1,1322 @@ +[ + { + "pname": "AsyncIO", + "version": "0.1.69", + "hash": "sha256-JQKq/U71NQTfPuUqj7z5bALe+d7G1o3GcI8kvVDxy6o=" + }, + { + "pname": "AtkSharp", + "version": "3.24.24.95", + "hash": "sha256-NgdWbXToBHhEVbvPrFcwXeit5iaqbBmNPQiC0jPKlnQ=" + }, + { + "pname": "CairoSharp", + "version": "3.24.24.95", + "hash": "sha256-ycdgmQyQ1uSshI/9uMaqn5OBxRF8RADf4Tn/TptE2BU=" + }, + { + "pname": "Castle.Core", + "version": "5.0.0", + "hash": "sha256-o0dLsy0RfVOIggymFbUJMhfR3XDp6uFI3G1o4j9o2Lg=" + }, + { + "pname": "DynamicLanguageRuntime", + "version": "1.3.5", + "hash": "sha256-8spaocJ0jH4suK7EQKjMOH0+pdhapV44ZxBFUBKl3h0=" + }, + { + "pname": "Dynamitey", + "version": "2.0.10.189", + "hash": "sha256-Gk2sqTdAzX6JqIGm+qoVnQX0tuI1eV3Cn+eJMkcmnD0=" + }, + { + "pname": "GdkSharp", + "version": "3.24.24.95", + "hash": "sha256-NYjADgZG9TUQDIZiSSXDAxj5PyX/B7oKRo9f8Oyb4vI=" + }, + { + "pname": "GioSharp", + "version": "3.24.24.95", + "hash": "sha256-5THx4af5PghPnQxXdnsC+wtVcoslh+0636WkB1FaPYg=" + }, + { + "pname": "GirCore.GLib-2.0", + "version": "0.7.0", + "hash": "sha256-u3jwn7fQONG4M4i4gX6glR1zKn2JNI05QieFf1Gsays=" + }, + { + "pname": "GirCore.GObject-2.0", + "version": "0.7.0", + "hash": "sha256-bmCHh0NyjG8YumCCI2zR8lrb6lhD6uF3MsA9tE1aWIA=" + }, + { + "pname": "GirCore.Gst-1.0", + "version": "0.7.0", + "hash": "sha256-XxUcFgzhtD1YKjP9vF1w/oloZOZRlBPH1AO0cAkoWvk=" + }, + { + "pname": "GirCore.GstApp-1.0", + "version": "0.7.0", + "hash": "sha256-uKSgmjZ4WwGxptKZKofcXMPa99UO1VHRX7OZdgqEs04=" + }, + { + "pname": "GirCore.GstBase-1.0", + "version": "0.7.0", + "hash": "sha256-WZC/W/zsRFixjoYb19PttEnKw422n7qZC+dnWLcgCb8=" + }, + { + "pname": "GLibSharp", + "version": "3.24.24.95", + "hash": "sha256-1pDRkKoUI9fLJBcTA2DBlpVccJl2GyAdL+VKjsFbttA=" + }, + { + "pname": "GtkSharp", + "version": "3.24.24.95", + "hash": "sha256-sBvk5Ecf2i6c2fYVjMBVoXz0I6IlucOWeE2czZH9QHg=" + }, + { + "pname": "Humanizer.Core", + "version": "2.2.0", + "hash": "sha256-5Q6oRaV8wHPONHreKvB74VjV2FW36mwC3n+05It5vyI=" + }, + { + "pname": "IronPython", + "version": "2.7.8", + "hash": "sha256-91NgTy3Q4MmD4GlhT+WjdVKQGRlIENdIJuyP9hE/iCs=" + }, + { + "pname": "IronPython.StdLib", + "version": "2.7.12", + "hash": "sha256-LfGg7EMJCVl2MiQjVD2dr8nOZKSqS/I42lO364YtzcA=" + }, + { + "pname": "K4os.Compression.LZ4", + "version": "1.3.8", + "hash": "sha256-OmT3JwO4qpkZDL7XqiFqZCyxySj64s9t+mXcN1T+IyA=" + }, + { + "pname": "Microsoft.Bcl.AsyncInterfaces", + "version": "5.0.0", + "hash": "sha256-bpJjcJSUSZH0GeOXoZI12xUQOf2SRtxG7sZV0dWS5TI=" + }, + { + "pname": "Microsoft.CodeAnalysis.Analyzers", + "version": "3.0.0", + "hash": "sha256-KDbCfsBWSJ5ohEXUKp1s1LX9xA2NPvXE/xVzj68EdC0=" + }, + { + "pname": "Microsoft.CodeAnalysis.Analyzers", + "version": "3.3.4", + "hash": "sha256-qDzTfZBSCvAUu9gzq2k+LOvh6/eRvJ9++VCNck/ZpnE=" + }, + { + "pname": "Microsoft.CodeAnalysis.Common", + "version": "3.9.0", + "hash": "sha256-M2LpVHr+UDFCVD7PtDSRD635+RO620JKmK/siOw01PQ=" + }, + { + "pname": "Microsoft.CodeAnalysis.Compilers", + "version": "3.9.0", + "hash": "sha256-l9P26Rz6pV1DZkz8L8HHE63+2qTK+IOGVEtEd7A//us=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp", + "version": "3.9.0", + "hash": "sha256-f3591/1mz/P3Asi9NTYU38bNukrKR7COR0pGmEtPKzM=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp.Workspaces", + "version": "3.9.0", + "hash": "sha256-/3J5wdymZZdsDOaKtkvda8o97T69EaTKk5aR4Rc1bzM=" + }, + { + "pname": "Microsoft.CodeAnalysis.VisualBasic", + "version": "3.9.0", + "hash": "sha256-5p4UrCoOMdFZ65vkHlak1VDpvU6msBCM2dK3Kyn4k2c=" + }, + { + "pname": "Microsoft.CodeAnalysis.Workspaces.Common", + "version": "3.9.0", + "hash": "sha256-Zzi/rXQA8BDJbUn9kKR7GB8dB7iwA1qlPnEkh8NMecU=" + }, + { + "pname": "Microsoft.CodeCoverage", + "version": "16.9.1", + "hash": "sha256-Tnlv9n5qKipmc17lld4HHfL/KInIq4KhmdTySTjqOqI=" + }, + { + "pname": "Microsoft.CSharp", + "version": "4.0.1", + "hash": "sha256-0huoqR2CJ3Z9Q2peaKD09TV3E6saYSqDGZ290K8CrH8=" + }, + { + "pname": "Microsoft.CSharp", + "version": "4.5.0", + "hash": "sha256-dAhj/CgXG5VIy2dop1xplUsLje7uBPFjxasz9rdFIgY=" + }, + { + "pname": "Microsoft.CSharp", + "version": "4.6.0", + "hash": "sha256-16OdEKbPLxh+jLYS4cOiGRX/oU6nv3KMF4h5WnZAsHs=" + }, + { + "pname": "Microsoft.CSharp", + "version": "4.7.0", + "hash": "sha256-Enknv2RsFF68lEPdrf5M+BpV1kHoLTVRApKUwuk/pj0=" + }, + { + "pname": "Microsoft.DotNet.InternalAbstractions", + "version": "1.0.0", + "hash": "sha256-HX3iOXH75I1L7eNihCbMNDDpcotfZpfQUdqdRTGM6FY=" + }, + { + "pname": "Microsoft.Extensions.ObjectPool", + "version": "6.0.16", + "hash": "sha256-+b3/mTZkFXTAC+dLeCfN6B3XuTDT8e+/N6xkzwgZRi4=" + }, + { + "pname": "Microsoft.IdentityModel.Logging", + "version": "6.8.0", + "hash": "sha256-w3jP0TAD3D2HLWlY0meGDmbV7N5kc2Er2nfYmuq0TJo=" + }, + { + "pname": "Microsoft.IdentityModel.Protocols.WsTrust", + "version": "6.8.0", + "hash": "sha256-yBnJQC+1pYpScnb8w/EYrVB5VrD7S0FytiGNNnCXggk=" + }, + { + "pname": "Microsoft.IdentityModel.Tokens", + "version": "6.8.0", + "hash": "sha256-NJsIvWJwrVrQndhHDpXf7eS1Gr/+2ua9nkW5ivWQyFY=" + }, + { + "pname": "Microsoft.IdentityModel.Tokens.Saml", + "version": "6.8.0", + "hash": "sha256-K3EUlCtNP+w6woHkwGaWhMJmIhlfOD5x4gl4qwo3rHU=" + }, + { + "pname": "Microsoft.IdentityModel.Xml", + "version": "6.8.0", + "hash": "sha256-Fd7vRbOmJb0VwdO4RzF94GWBVNncDD5vC8FNPunayWw=" + }, + { + "pname": "Microsoft.NET.Test.Sdk", + "version": "16.9.1", + "hash": "sha256-hefOxUAdu2CRsz+9Avq+fS9PIGxfbQdK4JDXcueuwZw=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "1.0.1", + "hash": "sha256-mZotlGZqtrqDSoBrZhsxFe6fuOv5/BIo0w2Z2x0zVAU=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "1.1.0", + "hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "2.0.0", + "hash": "sha256-IEvBk6wUXSdyCnkj6tHahOJv290tVVT8tyemYcR0Yro=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "2.1.2", + "hash": "sha256-gYQQO7zsqG+OtN4ywYQyfsiggS2zmxw4+cPXlK+FB5Q=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "3.1.0", + "hash": "sha256-cnygditsEaU86bnYtIthNMymAHqaT/sf9Gjykhzqgb0=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "5.0.0", + "hash": "sha256-LIcg1StDcQLPOABp4JRXIs837d7z0ia6+++3SF3jl1c=" + }, + { + "pname": "Microsoft.NETCore.Targets", + "version": "1.0.1", + "hash": "sha256-lxxw/Gy32xHi0fLgFWNj4YTFBSBkjx5l6ucmbTyf7V4=" + }, + { + "pname": "Microsoft.NETCore.Targets", + "version": "1.1.0", + "hash": "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ=" + }, + { + "pname": "Microsoft.TestPlatform.ObjectModel", + "version": "16.9.1", + "hash": "sha256-LZJLTWU2DOnuBiN/g+S+rwG2/BJtKrjydKnj3ujp98U=" + }, + { + "pname": "Microsoft.TestPlatform.TestHost", + "version": "16.9.1", + "hash": "sha256-92/trlM66kPR7ASpg6x7kk43glZYaOKrkaNJQE8uPbs=" + }, + { + "pname": "Microsoft.Win32.Primitives", + "version": "4.3.0", + "hash": "sha256-mBNDmPXNTW54XLnPAUwBRvkIORFM7/j0D0I2SyQPDEg=" + }, + { + "pname": "Microsoft.Win32.Registry", + "version": "4.3.0", + "hash": "sha256-50XwFbyRfZkTD/bBn76WV/NIpOy/mzXD3MMEVFX/vr8=" + }, + { + "pname": "Microsoft.Win32.Registry", + "version": "4.4.0", + "hash": "sha256-ZumsykAAIYKmVtP4QI5kZ0J10n2zcOZZ69PmAK0SEiE=" + }, + { + "pname": "Microsoft.Win32.SystemEvents", + "version": "5.0.0", + "hash": "sha256-mGUKg+bmB5sE/DCwsTwCsbe00MCwpgxsVW3nCtQiSmo=" + }, + { + "pname": "Mono.Cecil", + "version": "0.11.3", + "hash": "sha256-QxJcRt3eYy7R0mc25F/hM5n4qVqBAlZChsEKn+Y9nXU=" + }, + { + "pname": "Mono.Posix", + "version": "7.1.0-final.1.21458.1", + "hash": "sha256-kbpbruyWKfWfRg9IX0wR8UirykgJdLZl2d5PqUgFxz4=" + }, + { + "pname": "Mono.Unix", + "version": "7.1.0-final.1.21458.1", + "hash": "sha256-tm3niOm4OFCe/kL5M5zwCZgfHEaPtmDqsOLN6GExYHs=" + }, + { + "pname": "Moq", + "version": "4.18.1", + "hash": "sha256-Qe3wOHdnTAKRUiqj9BeqOUOiFC6L9lCTCSkvkXrEnEM=" + }, + { + "pname": "NaCl.Net", + "version": "0.1.13", + "hash": "sha256-Zy9ckPxrBcKy31g2pKc5uxF22jayw3ZmbrvDBW3MIlk=" + }, + { + "pname": "NetMQ", + "version": "4.0.1.12", + "hash": "sha256-O38SQuMRpTCz3YScEu0T9jw9DrVeQW5pAeHexYyooH8=" + }, + { + "pname": "NETStandard.Library", + "version": "1.6.1", + "hash": "sha256-iNan1ix7RtncGWC9AjAZ2sk70DoxOsmEOgQ10fXm4Pw=" + }, + { + "pname": "NETStandard.Library", + "version": "2.0.0", + "hash": "sha256-Pp7fRylai8JrE1O+9TGfIEJrAOmnWTJRLWE+qJBahK0=" + }, + { + "pname": "Newtonsoft.Json", + "version": "9.0.1", + "hash": "sha256-mYCBrgUhIJFzRuLLV9SIiIFHovzfR8Uuqfg6e08EnlU=" + }, + { + "pname": "NuGet.Frameworks", + "version": "5.0.0", + "hash": "sha256-WWLh+v9Y9as+WURW8tUPowQB8HWIiVJzbpKzEWTdMqI=" + }, + { + "pname": "NUnit", + "version": "3.13.1", + "hash": "sha256-qdbPWgCXueQdHpGdNQtdz16Zfg+XESI9xDlRD/IzJRw=" + }, + { + "pname": "NUnit3TestAdapter", + "version": "3.17.0", + "hash": "sha256-ZlpEM9IQlqsRPmYPMN6yCbICfakSoY89y40xtMY3rE8=" + }, + { + "pname": "PangoSharp", + "version": "3.24.24.95", + "hash": "sha256-YhltIz1jisJqR2ZxvbYy0ybi4oGw6qR2SkjF/2aWiBQ=" + }, + { + "pname": "runtime.any.System.Collections", + "version": "4.3.0", + "hash": "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8=" + }, + { + "pname": "runtime.any.System.Diagnostics.Tools", + "version": "4.3.0", + "hash": "sha256-8yLKFt2wQxkEf7fNfzB+cPUCjYn2qbqNgQ1+EeY2h/I=" + }, + { + "pname": "runtime.any.System.Diagnostics.Tracing", + "version": "4.3.0", + "hash": "sha256-dsmTLGvt8HqRkDWP8iKVXJCS+akAzENGXKPV18W2RgI=" + }, + { + "pname": "runtime.any.System.Globalization", + "version": "4.3.0", + "hash": "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU=" + }, + { + "pname": "runtime.any.System.Globalization.Calendars", + "version": "4.3.0", + "hash": "sha256-AYh39tgXJVFu8aLi9Y/4rK8yWMaza4S4eaxjfcuEEL4=" + }, + { + "pname": "runtime.any.System.IO", + "version": "4.3.0", + "hash": "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE=" + }, + { + "pname": "runtime.any.System.Reflection", + "version": "4.3.0", + "hash": "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk=" + }, + { + "pname": "runtime.any.System.Reflection.Extensions", + "version": "4.3.0", + "hash": "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8=" + }, + { + "pname": "runtime.any.System.Reflection.Primitives", + "version": "4.3.0", + "hash": "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ=" + }, + { + "pname": "runtime.any.System.Resources.ResourceManager", + "version": "4.3.0", + "hash": "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4=" + }, + { + "pname": "runtime.any.System.Runtime", + "version": "4.3.0", + "hash": "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM=" + }, + { + "pname": "runtime.any.System.Runtime.Handles", + "version": "4.3.0", + "hash": "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4=" + }, + { + "pname": "runtime.any.System.Runtime.InteropServices", + "version": "4.3.0", + "hash": "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA=" + }, + { + "pname": "runtime.any.System.Text.Encoding", + "version": "4.3.0", + "hash": "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs=" + }, + { + "pname": "runtime.any.System.Text.Encoding.Extensions", + "version": "4.3.0", + "hash": "sha256-6MYj0RmLh4EVqMtO/MRqBi0HOn5iG4x9JimgCCJ+EFM=" + }, + { + "pname": "runtime.any.System.Threading.Tasks", + "version": "4.3.0", + "hash": "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4=" + }, + { + "pname": "runtime.any.System.Threading.Timer", + "version": "4.3.0", + "hash": "sha256-BgHxXCIbicVZtpgMimSXixhFC3V+p5ODqeljDjO8hCs=" + }, + { + "pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps=" + }, + { + "pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I=" + }, + { + "pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA=" + }, + { + "pname": "runtime.native.System", + "version": "4.3.0", + "hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y=" + }, + { + "pname": "runtime.native.System.IO.Compression", + "version": "4.3.0", + "hash": "sha256-DWnXs4vlKoU6WxxvCArTJupV6sX3iBbZh8SbqfHace8=" + }, + { + "pname": "runtime.native.System.Net.Http", + "version": "4.3.0", + "hash": "sha256-c556PyheRwpYhweBjSfIwEyZHnAUB8jWioyKEcp/2dg=" + }, + { + "pname": "runtime.native.System.Security.Cryptography.Apple", + "version": "4.3.0", + "hash": "sha256-2IhBv0i6pTcOyr8FFIyfPEaaCHUmJZ8DYwLUwJ+5waw=" + }, + { + "pname": "runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I=" + }, + { + "pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM=" + }, + { + "pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4=" + }, + { + "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple", + "version": "4.3.0", + "hash": "sha256-serkd4A7F6eciPiPJtUyJyxzdAtupEcWIZQ9nptEzIM=" + }, + { + "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0=" + }, + { + "pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4=" + }, + { + "pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g=" + }, + { + "pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc=" + }, + { + "pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw=" + }, + { + "pname": "runtime.unix.Microsoft.Win32.Primitives", + "version": "4.3.0", + "hash": "sha256-LZb23lRXzr26tRS5aA0xyB08JxiblPDoA7HBvn6awXg=" + }, + { + "pname": "runtime.unix.System.Console", + "version": "4.3.0", + "hash": "sha256-AHkdKShTRHttqfMjmi+lPpTuCrM5vd/WRy6Kbtie190=" + }, + { + "pname": "runtime.unix.System.Diagnostics.Debug", + "version": "4.3.0", + "hash": "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI=" + }, + { + "pname": "runtime.unix.System.IO.FileSystem", + "version": "4.3.0", + "hash": "sha256-Pf4mRl6YDK2x2KMh0WdyNgv0VUNdSKVDLlHqozecy5I=" + }, + { + "pname": "runtime.unix.System.Net.Primitives", + "version": "4.3.0", + "hash": "sha256-pHJ+I6i16MV6m77uhTC6GPY6jWGReE3SSP3fVB59ti0=" + }, + { + "pname": "runtime.unix.System.Net.Sockets", + "version": "4.3.0", + "hash": "sha256-IvgOeA2JuBjKl5yAVGjPYMPDzs9phb3KANs95H9v1w4=" + }, + { + "pname": "runtime.unix.System.Private.Uri", + "version": "4.3.0", + "hash": "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs=" + }, + { + "pname": "runtime.unix.System.Runtime.Extensions", + "version": "4.3.0", + "hash": "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4=" + }, + { + "pname": "StyleCop.Analyzers", + "version": "1.1.118", + "hash": "sha256-CjC1f5z0sP15F6FeXqIDOtZLHqgjmQTzpsIrRkxXREI=" + }, + { + "pname": "System.AppContext", + "version": "4.1.0", + "hash": "sha256-v6YfyfrKmhww+EYHUq6cwYUMj00MQ6SOfJtcGVRlYzs=" + }, + { + "pname": "System.AppContext", + "version": "4.3.0", + "hash": "sha256-yg95LNQOwFlA1tWxXdQkVyJqT4AnoDc+ACmrNvzGiZg=" + }, + { + "pname": "System.Buffers", + "version": "4.3.0", + "hash": "sha256-XqZWb4Kd04960h4U9seivjKseGA/YEIpdplfHYHQ9jk=" + }, + { + "pname": "System.CodeDom", + "version": "8.0.0", + "hash": "sha256-uwVhi3xcvX7eiOGQi7dRETk3Qx1EfHsUfchZsEto338=" + }, + { + "pname": "System.Collections", + "version": "4.0.11", + "hash": "sha256-puoFMkx4Z55C1XPxNw3np8nzNGjH+G24j43yTIsDRL0=" + }, + { + "pname": "System.Collections", + "version": "4.3.0", + "hash": "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc=" + }, + { + "pname": "System.Collections.Concurrent", + "version": "4.3.0", + "hash": "sha256-KMY5DfJnDeIsa13DpqvyN8NkReZEMAFnlmNglVoFIXI=" + }, + { + "pname": "System.Collections.Immutable", + "version": "5.0.0", + "hash": "sha256-GdwSIjLMM0uVfE56VUSLVNgpW0B//oCeSFj8/hSlbM8=" + }, + { + "pname": "System.Collections.NonGeneric", + "version": "4.3.0", + "hash": "sha256-8/yZmD4jjvq7m68SPkJZLBQ79jOTOyT5lyzX4SCYAx8=" + }, + { + "pname": "System.Collections.Specialized", + "version": "4.3.0", + "hash": "sha256-QNg0JJNx+zXMQ26MJRPzH7THdtqjrNtGLUgaR1SdvOk=" + }, + { + "pname": "System.ComponentModel", + "version": "4.3.0", + "hash": "sha256-i00uujMO4JEDIEPKLmdLY3QJ6vdSpw6Gh9oOzkFYBiU=" + }, + { + "pname": "System.ComponentModel.EventBasedAsync", + "version": "4.3.0", + "hash": "sha256-h7o4X3XojdRyJWQdUfZetLdqtrQlddMzxhh6j9Zcaec=" + }, + { + "pname": "System.ComponentModel.Primitives", + "version": "4.3.0", + "hash": "sha256-IOMJleuIBppmP4ECB3uftbdcgL7CCd56+oAD/Sqrbus=" + }, + { + "pname": "System.ComponentModel.TypeConverter", + "version": "4.3.0", + "hash": "sha256-PSDiPYt8PgTdTUBz+GH6lHCaM1YgfObneHnZsc8Fz54=" + }, + { + "pname": "System.Composition", + "version": "1.0.31", + "hash": "sha256-wcQEG6MCRa1S03s3Yb3E3tfsIBZid99M7WDhcb48Qik=" + }, + { + "pname": "System.Composition.AttributedModel", + "version": "1.0.31", + "hash": "sha256-u+XnXfj6LQ3OXwrb9KqHRW4a/a9yHzLrJOXwDQ1a/sY=" + }, + { + "pname": "System.Composition.Convention", + "version": "1.0.31", + "hash": "sha256-GQWo1YDyQ3r2OMcKW+GbR3BbZNIAdwK79XAfinNj+AE=" + }, + { + "pname": "System.Composition.Hosting", + "version": "1.0.31", + "hash": "sha256-fg9BIY+zWtiEBIJefYP2lKHDYa4r/vtPTr3ZI8e0K7g=" + }, + { + "pname": "System.Composition.Runtime", + "version": "1.0.31", + "hash": "sha256-mqfxjAnVyE1YCgXMOcV34IWhYFnvXVKjMo9Y/d3yDuo=" + }, + { + "pname": "System.Composition.TypedParts", + "version": "1.0.31", + "hash": "sha256-w9ApcUJr7jYP4Vf5+efIIqoWmr5v9R56W4uC0n8KktQ=" + }, + { + "pname": "System.Console", + "version": "4.3.0", + "hash": "sha256-Xh3PPBZr0pDbDaK8AEHbdGz7ePK6Yi1ZyRWI1JM6mbo=" + }, + { + "pname": "System.Diagnostics.Debug", + "version": "4.0.11", + "hash": "sha256-P+rSQJVoN6M56jQbs76kZ9G3mAWFdtF27P/RijN8sj4=" + }, + { + "pname": "System.Diagnostics.Debug", + "version": "4.3.0", + "hash": "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM=" + }, + { + "pname": "System.Diagnostics.DiagnosticSource", + "version": "4.3.0", + "hash": "sha256-OFJRb0ygep0Z3yDBLwAgM/Tkfs4JCDtsNhwDH9cd1Xw=" + }, + { + "pname": "System.Diagnostics.EventLog", + "version": "6.0.0", + "hash": "sha256-zUXIQtAFKbiUMKCrXzO4mOTD5EUphZzghBYKXprowSM=" + }, + { + "pname": "System.Diagnostics.Process", + "version": "4.3.0", + "hash": "sha256-Rzo24qXhuJDDgrGNHr2eQRHhwLmsYmWDqAg/P5fOlzw=" + }, + { + "pname": "System.Diagnostics.Tools", + "version": "4.0.1", + "hash": "sha256-vSBqTbmWXylvRa37aWyktym+gOpsvH43mwr6A962k6U=" + }, + { + "pname": "System.Diagnostics.Tools", + "version": "4.3.0", + "hash": "sha256-gVOv1SK6Ape0FQhCVlNOd9cvQKBvMxRX9K0JPVi8w0Y=" + }, + { + "pname": "System.Diagnostics.Tracing", + "version": "4.3.0", + "hash": "sha256-hCETZpHHGVhPYvb4C0fh4zs+8zv4GPoixagkLZjpa9Q=" + }, + { + "pname": "System.Drawing.Common", + "version": "4.7.0", + "hash": "sha256-D3qG+xAe78lZHvlco9gHK2TEAM370k09c6+SQi873Hk=" + }, + { + "pname": "System.Drawing.Common", + "version": "5.0.3", + "hash": "sha256-nr1bSJoGA97IfrQQTyakVIx3r0bpoZfs6xtrDgvE2+Y=" + }, + { + "pname": "System.Dynamic.Runtime", + "version": "4.0.11", + "hash": "sha256-qWqFVxuXioesVftv2RVJZOnmojUvRjb7cS3Oh3oTit4=" + }, + { + "pname": "System.Formats.Asn1", + "version": "6.0.0", + "hash": "sha256-KaMHgIRBF7Nf3VwOo+gJS1DcD+41cJDPWFh+TDQ8ee8=" + }, + { + "pname": "System.Globalization", + "version": "4.0.11", + "hash": "sha256-rbSgc2PIEc2c2rN6LK3qCREAX3DqA2Nq1WcLrZYsDBw=" + }, + { + "pname": "System.Globalization", + "version": "4.3.0", + "hash": "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI=" + }, + { + "pname": "System.Globalization.Calendars", + "version": "4.3.0", + "hash": "sha256-uNOD0EOVFgnS2fMKvMiEtI9aOw00+Pfy/H+qucAQlPc=" + }, + { + "pname": "System.Globalization.Extensions", + "version": "4.3.0", + "hash": "sha256-mmJWA27T0GRVuFP9/sj+4TrR4GJWrzNIk2PDrbr7RQk=" + }, + { + "pname": "System.IO", + "version": "4.1.0", + "hash": "sha256-V6oyQFwWb8NvGxAwvzWnhPxy9dKOfj/XBM3tEC5aHrw=" + }, + { + "pname": "System.IO", + "version": "4.3.0", + "hash": "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY=" + }, + { + "pname": "System.IO.Compression", + "version": "4.3.0", + "hash": "sha256-f5PrQlQgj5Xj2ZnHxXW8XiOivaBvfqDao9Sb6AVinyA=" + }, + { + "pname": "System.IO.Compression.ZipFile", + "version": "4.3.0", + "hash": "sha256-WQl+JgWs+GaRMeiahTFUbrhlXIHapzcpTFXbRvAtvvs=" + }, + { + "pname": "System.IO.FileSystem", + "version": "4.0.1", + "hash": "sha256-4VKXFgcGYCTWVXjAlniAVq0dO3o5s8KHylg2wg2/7k0=" + }, + { + "pname": "System.IO.FileSystem", + "version": "4.3.0", + "hash": "sha256-vNIYnvlayuVj0WfRfYKpDrhDptlhp1pN8CYmlVd2TXw=" + }, + { + "pname": "System.IO.FileSystem.Primitives", + "version": "4.0.1", + "hash": "sha256-IpigKMomqb6pmYWkrlf0ZdpILtRluX2cX5sOKVW0Feg=" + }, + { + "pname": "System.IO.FileSystem.Primitives", + "version": "4.3.0", + "hash": "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg=" + }, + { + "pname": "System.IO.Pipelines", + "version": "5.0.0", + "hash": "sha256-o5ATaT13t/Q+ejEO70N9qOzb2dLrjYxCba1plPJfu80=" + }, + { + "pname": "System.Linq", + "version": "4.1.0", + "hash": "sha256-ZQpFtYw5N1F1aX0jUK3Tw+XvM5tnlnshkTCNtfVA794=" + }, + { + "pname": "System.Linq", + "version": "4.3.0", + "hash": "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A=" + }, + { + "pname": "System.Linq.Expressions", + "version": "4.1.0", + "hash": "sha256-7zqB+FXgkvhtlBzpcZyd81xczWP0D3uWssyAGw3t7b4=" + }, + { + "pname": "System.Linq.Expressions", + "version": "4.3.0", + "hash": "sha256-+3pvhZY7rip8HCbfdULzjlC9FPZFpYoQxhkcuFm2wk8=" + }, + { + "pname": "System.Memory", + "version": "4.5.4", + "hash": "sha256-3sCEfzO4gj5CYGctl9ZXQRRhwAraMQfse7yzKoRe65E=" + }, + { + "pname": "System.Net.Http", + "version": "4.3.0", + "hash": "sha256-UoBB7WPDp2Bne/fwxKF0nE8grJ6FzTMXdT/jfsphj8Q=" + }, + { + "pname": "System.Net.NameResolution", + "version": "4.3.0", + "hash": "sha256-eGZwCBExWsnirWBHyp2sSSSXp6g7I6v53qNmwPgtJ5c=" + }, + { + "pname": "System.Net.Primitives", + "version": "4.3.0", + "hash": "sha256-MY7Z6vOtFMbEKaLW9nOSZeAjcWpwCtdO7/W1mkGZBzE=" + }, + { + "pname": "System.Net.Sockets", + "version": "4.3.0", + "hash": "sha256-il7dr5VT/QWDg/0cuh+4Es2u8LY//+qqiY9BZmYxSus=" + }, + { + "pname": "System.Numerics.Vectors", + "version": "4.5.0", + "hash": "sha256-qdSTIFgf2htPS+YhLGjAGiLN8igCYJnCCo6r78+Q+c8=" + }, + { + "pname": "System.ObjectModel", + "version": "4.0.12", + "hash": "sha256-MudZ/KYcvYsn2cST3EE049mLikrNkmE7QoUoYKKby+s=" + }, + { + "pname": "System.ObjectModel", + "version": "4.3.0", + "hash": "sha256-gtmRkWP2Kwr3nHtDh0yYtce38z1wrGzb6fjm4v8wN6Q=" + }, + { + "pname": "System.Private.ServiceModel", + "version": "4.8.1", + "hash": "sha256-d/Mw1lVN0Gb2+pHltqM4qjBOO67vFGfI5zRK5MHa2rg=" + }, + { + "pname": "System.Private.ServiceModel", + "version": "4.9.0", + "hash": "sha256-AbJKAZzZDxKVXm5761XE+nhlkiDqX9eb6+Y9d4Hq+4Q=" + }, + { + "pname": "System.Private.Uri", + "version": "4.3.0", + "hash": "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM=" + }, + { + "pname": "System.Reflection", + "version": "4.1.0", + "hash": "sha256-idZHGH2Yl/hha1CM4VzLhsaR8Ljo/rV7TYe7mwRJSMs=" + }, + { + "pname": "System.Reflection", + "version": "4.3.0", + "hash": "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY=" + }, + { + "pname": "System.Reflection.DispatchProxy", + "version": "4.7.1", + "hash": "sha256-Oi+l32p73ZxwcB6GrSS2m25BccfpuwbY4eyFEwUe0IM=" + }, + { + "pname": "System.Reflection.Emit", + "version": "4.0.1", + "hash": "sha256-F1MvYoQWHCY89/O4JBwswogitqVvKuVfILFqA7dmuHk=" + }, + { + "pname": "System.Reflection.Emit", + "version": "4.3.0", + "hash": "sha256-5LhkDmhy2FkSxulXR+bsTtMzdU3VyyuZzsxp7/DwyIU=" + }, + { + "pname": "System.Reflection.Emit.ILGeneration", + "version": "4.0.1", + "hash": "sha256-YG+eJBG5P+5adsHiw/lhJwvREnvdHw6CJyS8ZV4Ujd0=" + }, + { + "pname": "System.Reflection.Emit.ILGeneration", + "version": "4.3.0", + "hash": "sha256-mKRknEHNls4gkRwrEgi39B+vSaAz/Gt3IALtS98xNnA=" + }, + { + "pname": "System.Reflection.Emit.ILGeneration", + "version": "4.7.0", + "hash": "sha256-GUnQeGo/DtvZVQpFnESGq7lJcjB30/KnDY7Kd2G/ElE=" + }, + { + "pname": "System.Reflection.Emit.Lightweight", + "version": "4.0.1", + "hash": "sha256-uVvNOnL64CPqsgZP2OLqNmxdkZl6Q0fTmKmv9gcBi+g=" + }, + { + "pname": "System.Reflection.Emit.Lightweight", + "version": "4.3.0", + "hash": "sha256-rKx4a9yZKcajloSZHr4CKTVJ6Vjh95ni+zszPxWjh2I=" + }, + { + "pname": "System.Reflection.Emit.Lightweight", + "version": "4.7.0", + "hash": "sha256-V0Wz/UUoNIHdTGS9e1TR89u58zJjo/wPUWw6VaVyclU=" + }, + { + "pname": "System.Reflection.Extensions", + "version": "4.0.1", + "hash": "sha256-NsfmzM9G/sN3H8X2cdnheTGRsh7zbRzvegnjDzDH/FQ=" + }, + { + "pname": "System.Reflection.Extensions", + "version": "4.3.0", + "hash": "sha256-mMOCYzUenjd4rWIfq7zIX9PFYk/daUyF0A8l1hbydAk=" + }, + { + "pname": "System.Reflection.Metadata", + "version": "1.6.0", + "hash": "sha256-JJfgaPav7UfEh4yRAQdGhLZF1brr0tUWPl6qmfNWq/E=" + }, + { + "pname": "System.Reflection.Metadata", + "version": "5.0.0", + "hash": "sha256-Wo+MiqhcP9dQ6NuFGrQTw6hpbJORFwp+TBNTq2yhGp8=" + }, + { + "pname": "System.Reflection.Primitives", + "version": "4.0.1", + "hash": "sha256-SFSfpWEyCBMAOerrMCOiKnpT+UAWTvRcmoRquJR6Vq0=" + }, + { + "pname": "System.Reflection.Primitives", + "version": "4.3.0", + "hash": "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM=" + }, + { + "pname": "System.Reflection.TypeExtensions", + "version": "4.1.0", + "hash": "sha256-R0YZowmFda+xzKNR4kKg7neFoE30KfZwp/IwfRSKVK4=" + }, + { + "pname": "System.Reflection.TypeExtensions", + "version": "4.3.0", + "hash": "sha256-4U4/XNQAnddgQIHIJq3P2T80hN0oPdU2uCeghsDTWng=" + }, + { + "pname": "System.Resources.ResourceManager", + "version": "4.0.1", + "hash": "sha256-cZ2/3/fczLjEpn6j3xkgQV9ouOVjy4Kisgw5xWw9kSw=" + }, + { + "pname": "System.Resources.ResourceManager", + "version": "4.3.0", + "hash": "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo=" + }, + { + "pname": "System.Runtime", + "version": "4.1.0", + "hash": "sha256-FViNGM/4oWtlP6w0JC0vJU+k9efLKZ+yaXrnEeabDQo=" + }, + { + "pname": "System.Runtime", + "version": "4.3.0", + "hash": "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg=" + }, + { + "pname": "System.Runtime.CompilerServices.Unsafe", + "version": "4.5.2", + "hash": "sha256-8eUXXGWO2LL7uATMZye2iCpQOETn2jCcjUhG6coR5O8=" + }, + { + "pname": "System.Runtime.CompilerServices.Unsafe", + "version": "5.0.0", + "hash": "sha256-neARSpLPUzPxEKhJRwoBzhPxK+cKIitLx7WBYncsYgo=" + }, + { + "pname": "System.Runtime.Extensions", + "version": "4.1.0", + "hash": "sha256-X7DZ5CbPY7jHs20YZ7bmcXs9B5Mxptu/HnBUvUnNhGc=" + }, + { + "pname": "System.Runtime.Extensions", + "version": "4.3.0", + "hash": "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o=" + }, + { + "pname": "System.Runtime.Handles", + "version": "4.0.1", + "hash": "sha256-j2QgVO9ZOjv7D1het98CoFpjoYgxjupuIhuBUmLLH7w=" + }, + { + "pname": "System.Runtime.Handles", + "version": "4.3.0", + "hash": "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms=" + }, + { + "pname": "System.Runtime.InteropServices", + "version": "4.1.0", + "hash": "sha256-QceAYlJvkPRJc/+5jR+wQpNNI3aqGySWWSO30e/FfQY=" + }, + { + "pname": "System.Runtime.InteropServices", + "version": "4.3.0", + "hash": "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI=" + }, + { + "pname": "System.Runtime.InteropServices.RuntimeInformation", + "version": "4.0.0", + "hash": "sha256-5j53amb76A3SPiE3B0llT2XPx058+CgE7OXL4bLalT4=" + }, + { + "pname": "System.Runtime.InteropServices.RuntimeInformation", + "version": "4.3.0", + "hash": "sha256-MYpl6/ZyC6hjmzWRIe+iDoldOMW1mfbwXsduAnXIKGA=" + }, + { + "pname": "System.Runtime.Numerics", + "version": "4.3.0", + "hash": "sha256-P5jHCgMbgFMYiONvzmaKFeOqcAIDPu/U8bOVrNPYKqc=" + }, + { + "pname": "System.Runtime.Serialization.Primitives", + "version": "4.1.1", + "hash": "sha256-80B05oxJbPLGq2pGOSl6NlZvintX9A1CNpna2aN0WRA=" + }, + { + "pname": "System.Security.AccessControl", + "version": "4.4.0", + "hash": "sha256-J3T2ECVdL0JiBA999CUz77az545CVOYB11/NPA/huEc=" + }, + { + "pname": "System.Security.AccessControl", + "version": "4.7.0", + "hash": "sha256-/9ZCPIHLdhzq7OW4UKqTsR0O93jjHd6BRG1SRwgHE1g=" + }, + { + "pname": "System.Security.AccessControl", + "version": "6.0.0", + "hash": "sha256-qOyWEBbNr3EjyS+etFG8/zMbuPjA+O+di717JP9Cxyg=" + }, + { + "pname": "System.Security.Claims", + "version": "4.3.0", + "hash": "sha256-Fua/rDwAqq4UByRVomAxMPmDBGd5eImRqHVQIeSxbks=" + }, + { + "pname": "System.Security.Cryptography.Algorithms", + "version": "4.3.0", + "hash": "sha256-tAJvNSlczYBJ3Ed24Ae27a55tq/n4D3fubNQdwcKWA8=" + }, + { + "pname": "System.Security.Cryptography.Cng", + "version": "4.3.0", + "hash": "sha256-u17vy6wNhqok91SrVLno2M1EzLHZm6VMca85xbVChsw=" + }, + { + "pname": "System.Security.Cryptography.Cng", + "version": "4.5.0", + "hash": "sha256-9llRbEcY1fHYuTn3vGZaCxsFxSAqXl4bDA6Rz9b0pN4=" + }, + { + "pname": "System.Security.Cryptography.Cng", + "version": "4.7.0", + "hash": "sha256-MvVSJhAojDIvrpuyFmcSVRSZPl3dRYOI9hSptbA+6QA=" + }, + { + "pname": "System.Security.Cryptography.Csp", + "version": "4.3.0", + "hash": "sha256-oefdTU/Z2PWU9nlat8uiRDGq/PGZoSPRgkML11pmvPQ=" + }, + { + "pname": "System.Security.Cryptography.Encoding", + "version": "4.3.0", + "hash": "sha256-Yuge89N6M+NcblcvXMeyHZ6kZDfwBv3LPMDiF8HhJss=" + }, + { + "pname": "System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-DL+D2sc2JrQiB4oAcUggTFyD8w3aLEjJfod5JPe+Oz4=" + }, + { + "pname": "System.Security.Cryptography.Pkcs", + "version": "4.7.0", + "hash": "sha256-lZMmOxtg5d7Oyoof8p6awVALUsYQstc2mBNNrQr9m9c=" + }, + { + "pname": "System.Security.Cryptography.Pkcs", + "version": "6.0.1", + "hash": "sha256-OJ4NJ8E/8l86aR+Hsw+k/7II63Y/zPS+MgC+UfeCXHM=" + }, + { + "pname": "System.Security.Cryptography.Primitives", + "version": "4.3.0", + "hash": "sha256-fnFi7B3SnVj5a+BbgXnbjnGNvWrCEU6Hp/wjsjWz318=" + }, + { + "pname": "System.Security.Cryptography.X509Certificates", + "version": "4.3.0", + "hash": "sha256-MG3V/owDh273GCUPsGGraNwaVpcydupl3EtPXj6TVG0=" + }, + { + "pname": "System.Security.Cryptography.Xml", + "version": "4.7.0", + "hash": "sha256-67k24CjNisMJUtnyWb08V/t7mBns+pxLyNhBG5YXiCE=" + }, + { + "pname": "System.Security.Cryptography.Xml", + "version": "6.0.1", + "hash": "sha256-spXV8cWZu0V3liek1936REtdpvS4fQwc98JvacO1oJU=" + }, + { + "pname": "System.Security.Permissions", + "version": "4.4.0", + "hash": "sha256-P3U50uTv0HF5uOZVoVEARyBDTyG3+Ilm9t2Ko6KVf7w=" + }, + { + "pname": "System.Security.Permissions", + "version": "4.7.0", + "hash": "sha256-BGgXMLUi5rxVmmChjIhcXUxisJjvlNToXlyaIbUxw40=" + }, + { + "pname": "System.Security.Principal", + "version": "4.3.0", + "hash": "sha256-rjudVUHdo8pNJg2EVEn0XxxwNo5h2EaYo+QboPkXlYk=" + }, + { + "pname": "System.Security.Principal.Windows", + "version": "4.3.0", + "hash": "sha256-mbdLVUcEwe78p3ZnB6jYsizNEqxMaCAWI3tEQNhRQAE=" + }, + { + "pname": "System.Security.Principal.Windows", + "version": "4.4.0", + "hash": "sha256-lwNBM33EW45j6o8bM4hKWirEUZCvep0VYFchc50JOYc=" + }, + { + "pname": "System.Security.Principal.Windows", + "version": "4.7.0", + "hash": "sha256-rWBM2U8Kq3rEdaa1MPZSYOOkbtMGgWyB8iPrpIqmpqg=" + }, + { + "pname": "System.ServiceModel.Duplex", + "version": "4.8.1", + "hash": "sha256-WDwB7gEfvvbIF18NYPvSdI7GJhYn7vINWndgrh8wpsg=" + }, + { + "pname": "System.ServiceModel.Federation", + "version": "4.8.1", + "hash": "sha256-5PmzrNH8q+kHaVS1T1bcBcH4Kgh9eL350P0qm6frWVo=" + }, + { + "pname": "System.ServiceModel.Http", + "version": "4.8.1", + "hash": "sha256-pgLvBQk2FnJbTETUKZag2LeGSXDBK6WnPYsfDbcPhLk=" + }, + { + "pname": "System.ServiceModel.Http", + "version": "6.0.0", + "hash": "sha256-jy3bGKjvrQF5l3zn8/MiYwBqlkes6kWnNHUUJxPho/s=" + }, + { + "pname": "System.ServiceModel.NetTcp", + "version": "4.8.1", + "hash": "sha256-MQGtgKRV4XuIVPV4iABY+ABIx+C4I+J74p5ohclSj7Y=" + }, + { + "pname": "System.ServiceModel.Primitives", + "version": "4.8.1", + "hash": "sha256-sZEzX9vgwtckMrTPwNg8s+bZErDv5/Yakeg5c6nUWis=" + }, + { + "pname": "System.ServiceModel.Primitives", + "version": "4.9.0", + "hash": "sha256-DguxLLRrYNn99rYxCGIljZTdZqrVC+VxJNahkFUy9NM=" + }, + { + "pname": "System.ServiceModel.Primitives", + "version": "6.0.0", + "hash": "sha256-XKKDaDp32Igr+cSPviNjUVlSjgzuGBQNCiTZUBinawY=" + }, + { + "pname": "System.ServiceModel.Security", + "version": "4.8.1", + "hash": "sha256-4aEWyw9HudwzO0oRuKKrEQrQpnUvNvkRc0aLtCQ8NZI=" + }, + { + "pname": "System.Text.Encoding", + "version": "4.0.11", + "hash": "sha256-PEailOvG05CVgPTyKLtpAgRydlSHmtd5K0Y8GSHY2Lc=" + }, + { + "pname": "System.Text.Encoding", + "version": "4.3.0", + "hash": "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg=" + }, + { + "pname": "System.Text.Encoding.CodePages", + "version": "4.4.0", + "hash": "sha256-zD24blG8xhAcL9gC4UTGKetd8c3LO0nv22nKTp2Vfx0=" + }, + { + "pname": "System.Text.Encoding.CodePages", + "version": "4.5.1", + "hash": "sha256-PIhkv59IXjyiuefdhKxS9hQfEwO9YWRuNudpo53HQfw=" + }, + { + "pname": "System.Text.Encoding.Extensions", + "version": "4.0.11", + "hash": "sha256-+kf7J3dEhgCbnCM5vHYlsTm5/R/Ud0Jr6elpHm922iI=" + }, + { + "pname": "System.Text.Encoding.Extensions", + "version": "4.3.0", + "hash": "sha256-vufHXg8QAKxHlujPHHcrtGwAqFmsCD6HKjfDAiHyAYc=" + }, + { + "pname": "System.Text.RegularExpressions", + "version": "4.1.0", + "hash": "sha256-x6OQN6MCN7S0fJ6EFTfv4rczdUWjwuWE9QQ0P6fbh9c=" + }, + { + "pname": "System.Text.RegularExpressions", + "version": "4.3.0", + "hash": "sha256-VLCk1D1kcN2wbAe3d0YQM/PqCsPHOuqlBY1yd2Yo+K0=" + }, + { + "pname": "System.Threading", + "version": "4.0.11", + "hash": "sha256-mob1Zv3qLQhQ1/xOLXZmYqpniNUMCfn02n8ZkaAhqac=" + }, + { + "pname": "System.Threading", + "version": "4.3.0", + "hash": "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc=" + }, + { + "pname": "System.Threading.Tasks", + "version": "4.0.11", + "hash": "sha256-5SLxzFg1df6bTm2t09xeI01wa5qQglqUwwJNlQPJIVs=" + }, + { + "pname": "System.Threading.Tasks", + "version": "4.3.0", + "hash": "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w=" + }, + { + "pname": "System.Threading.Tasks.Extensions", + "version": "4.3.0", + "hash": "sha256-X2hQ5j+fxcmnm88Le/kSavjiGOmkcumBGTZKBLvorPc=" + }, + { + "pname": "System.Threading.Tasks.Extensions", + "version": "4.5.4", + "hash": "sha256-owSpY8wHlsUXn5xrfYAiu847L6fAKethlvYx97Ri1ng=" + }, + { + "pname": "System.Threading.Thread", + "version": "4.3.0", + "hash": "sha256-pMs6RNFC3nQOGz9EqIcyWmO8YLaqay+q/Qde5hqPXXg=" + }, + { + "pname": "System.Threading.ThreadPool", + "version": "4.3.0", + "hash": "sha256-wW0QdvssRoaOfQLazTGSnwYTurE4R8FxDx70pYkL+gg=" + }, + { + "pname": "System.Threading.Timer", + "version": "4.3.0", + "hash": "sha256-pmhslmhQhP32TWbBzoITLZ4BoORBqYk25OWbru04p9s=" + }, + { + "pname": "System.ValueTuple", + "version": "4.5.0", + "hash": "sha256-niH6l2fU52vAzuBlwdQMw0OEoRS/7E1w5smBFoqSaAI=" + }, + { + "pname": "System.Windows.Extensions", + "version": "4.7.0", + "hash": "sha256-yW+GvQranReaqPw5ZFv+mSjByQ5y1pRLl05JIEf3tYU=" + }, + { + "pname": "System.Xml.ReaderWriter", + "version": "4.0.11", + "hash": "sha256-haZAFFQ9Sl2DhfvEbdx2YRqKEoxNMU5STaqpMmXw0zA=" + }, + { + "pname": "System.Xml.ReaderWriter", + "version": "4.3.0", + "hash": "sha256-QQ8KgU0lu4F5Unh+TbechO//zaAGZ4MfgvW72Cn1hzA=" + }, + { + "pname": "System.Xml.XDocument", + "version": "4.0.11", + "hash": "sha256-KPz1kxe0RUBM+aoktJ/f9p51GudMERU8Pmwm//HdlFg=" + }, + { + "pname": "System.Xml.XDocument", + "version": "4.3.0", + "hash": "sha256-rWtdcmcuElNOSzCehflyKwHkDRpiOhJJs8CeQ0l1CCI=" + }, + { + "pname": "System.Xml.XmlDocument", + "version": "4.3.0", + "hash": "sha256-kbuV4Y7rVJkfMp2Kgoi8Zvdatm9CZNmlKB3GZgANvy4=" + }, + { + "pname": "System.Xml.XPath", + "version": "4.3.0", + "hash": "sha256-kd1JMqj6obhxzEPRJeYvcUyJqkOs/9A0UOQccC6oYrM=" + }, + { + "pname": "System.Xml.XPath.XmlDocument", + "version": "4.3.0", + "hash": "sha256-NWPne5KQuqUt7WvaRT1KX3kkpWv6EPTHcI6CO/GBNME=" + } +] diff --git a/pkgs/by-name/re/renode-unstable/package.nix b/pkgs/by-name/re/renode-unstable/package.nix index a773f819cdb1..b59fa4432d8f 100644 --- a/pkgs/by-name/re/renode-unstable/package.nix +++ b/pkgs/by-name/re/renode-unstable/package.nix @@ -1,6 +1,5 @@ { fetchFromGitHub, - nix-update-script, renode, lib, }: @@ -15,16 +14,18 @@ let in renode.overrideAttrs (old: rec { pname = "renode-unstable"; - version = "1.16.0-unstable-2025-12-11"; + version = "1.16.1-unstable-2026-03-31"; src = fetchFromGitHub { owner = "renode"; repo = "renode"; - rev = "e61a4063ec362b099704e6d8f9734cdf792aeeb0"; - hash = "sha256-ucQguZZSNKa0nEOTCdcLyDlaBnRgi/7Yb6VunNG/iSg="; + rev = "9a65fb18c4ebdf32795150b44daa949977c6c124"; + hash = "sha256-Acx3kyk0vzB1df+8yvpj0fKgePtaolJ1c4nCicAD0Gs="; fetchSubmodules = true; }; + nugetDeps = ./deps.json; + prePatch = '' sed -i 's/AssemblyVersion("%VERSION%.*")/AssemblyVersion("${normalizedVersion version}.0")/g' src/Renode/Properties/AssemblyInfo.template sed -i 's/AssemblyInformationalVersion("%INFORMATIONAL_VERSION%")/AssemblyInformationalVersion("${src.rev}")/g' src/Renode/Properties/AssemblyInfo.template @@ -32,10 +33,6 @@ renode.overrideAttrs (old: rec { ''; passthru = old.passthru // { - updateScript = nix-update-script { - extraArgs = [ - "--version=branch" - ]; - }; + updateScript = ./update.sh; }; }) diff --git a/pkgs/by-name/re/renode-unstable/update.sh b/pkgs/by-name/re/renode-unstable/update.sh new file mode 100755 index 000000000000..60b7782618e4 --- /dev/null +++ b/pkgs/by-name/re/renode-unstable/update.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl jq git nix nix-prefetch-github + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PKG_FILE="$SCRIPT_DIR/package.nix" + +latest_rev=$(git ls-remote https://github.com/renode/renode refs/heads/master | awk '{print $1}') +commit_date=$(curl -s "https://api.github.com/repos/renode/renode/commits/${latest_rev}" | jq -r '.commit.committer.date' | cut -dT -f1) + +latest_tag=$(curl -s https://api.github.com/repos/renode/renode/releases/latest | jq -r '.tag_name | ltrimstr("v")') + +new_version="${latest_tag}-unstable-${commit_date}" + +new_hash=$(nix-prefetch-github renode renode --rev "$latest_rev" --fetch-submodules | jq -r '.hash') + +sed -i "s|version = \".*\"|version = \"${new_version}\"|" "$PKG_FILE" +sed -i "s|rev = \".*\"|rev = \"${latest_rev}\"|" "$PKG_FILE" +sed -i "s|hash = \".*\"|hash = \"${new_hash}\"|" "$PKG_FILE" + +# Regenerate nuget deps in the correct location +$(nix-build -A renode-unstable.passthru.fetch-deps --no-out-link) "$SCRIPT_DIR/deps.json" diff --git a/pkgs/by-name/re/renode/deps.json b/pkgs/by-name/re/renode/deps.json index 3ec3cdaf13f6..7dd406f27405 100644 --- a/pkgs/by-name/re/renode/deps.json +++ b/pkgs/by-name/re/renode/deps.json @@ -39,6 +39,31 @@ "version": "3.24.24.95", "hash": "sha256-5THx4af5PghPnQxXdnsC+wtVcoslh+0636WkB1FaPYg=" }, + { + "pname": "GirCore.GLib-2.0", + "version": "0.7.0", + "hash": "sha256-u3jwn7fQONG4M4i4gX6glR1zKn2JNI05QieFf1Gsays=" + }, + { + "pname": "GirCore.GObject-2.0", + "version": "0.7.0", + "hash": "sha256-bmCHh0NyjG8YumCCI2zR8lrb6lhD6uF3MsA9tE1aWIA=" + }, + { + "pname": "GirCore.Gst-1.0", + "version": "0.7.0", + "hash": "sha256-XxUcFgzhtD1YKjP9vF1w/oloZOZRlBPH1AO0cAkoWvk=" + }, + { + "pname": "GirCore.GstApp-1.0", + "version": "0.7.0", + "hash": "sha256-uKSgmjZ4WwGxptKZKofcXMPa99UO1VHRX7OZdgqEs04=" + }, + { + "pname": "GirCore.GstBase-1.0", + "version": "0.7.0", + "hash": "sha256-WZC/W/zsRFixjoYb19PttEnKw422n7qZC+dnWLcgCb8=" + }, { "pname": "GLibSharp", "version": "3.24.24.95", diff --git a/pkgs/by-name/re/renode/package.nix b/pkgs/by-name/re/renode/package.nix index fe30644afbe9..746ec655cfbc 100644 --- a/pkgs/by-name/re/renode/package.nix +++ b/pkgs/by-name/re/renode/package.nix @@ -11,7 +11,6 @@ gtk3, lib, mono, - nix-update-script, python3Packages, }: @@ -59,13 +58,13 @@ let in buildDotnetModule rec { pname = "renode"; - version = "1.16.0"; + version = "1.16.1"; src = fetchFromGitHub { owner = "renode"; repo = "renode"; - rev = "20ad06d9379997829df309c5724be94ba4effedd"; - hash = "sha256-I/W3OAzHCN8rEIlDyBwI1ZDvKfHYYBDiqE9XkWHxo7o="; + rev = "d66b0c2aa3d420408eccecfd1d3bab0fd702a6db"; + hash = "sha256-HQaMo3qsZvD4uBIsGzyKpTO7gaxjVvurI91pm1UXvjc="; fetchSubmodules = true; }; @@ -180,7 +179,7 @@ buildDotnetModule rec { executables = [ "Renode" ]; - passthru.updateScript = nix-update-script { }; + passthru.updateScript = ./update.sh; meta = { changelog = "https://github.com/renode/renode/blob/${version}/CHANGELOG.rst"; diff --git a/pkgs/by-name/re/renode/update.sh b/pkgs/by-name/re/renode/update.sh new file mode 100755 index 000000000000..8d7bd81babdf --- /dev/null +++ b/pkgs/by-name/re/renode/update.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl jq common-updater-scripts git nix + +set -euo pipefail + +latest_tag=$(curl -s https://api.github.com/repos/renode/renode/releases/latest | jq -r '.tag_name') +latest_version="${latest_tag#v}" + +# Resolve tag to commit hash +# Try dereferenced ref first (annotated tags), then direct ref (lightweight tags) +commit=$(git ls-remote https://github.com/renode/renode "refs/tags/${latest_tag}^{}" | awk '{print $1}') +if [[ -z "$commit" ]]; then + commit=$(git ls-remote https://github.com/renode/renode "refs/tags/${latest_tag}" | awk '{print $1}') +fi + +update-source-version renode "$latest_version" --rev="$commit" + +# Regenerate nuget deps +$(nix-build -A renode.passthru.fetch-deps --no-out-link) diff --git a/pkgs/by-name/ru/ruff/package.nix b/pkgs/by-name/ru/ruff/package.nix index 4eb1a03897a4..fbb2d76bb659 100644 --- a/pkgs/by-name/ru/ruff/package.nix +++ b/pkgs/by-name/ru/ruff/package.nix @@ -16,18 +16,18 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "ruff"; - version = "0.15.7"; + version = "0.15.8"; src = fetchFromGitHub { owner = "astral-sh"; repo = "ruff"; tag = finalAttrs.version; - hash = "sha256-aDRFNJKvxuHPYaZtoM+93DxJGsTPMLKGBH5QhIiTh0Y="; + hash = "sha256-hjllQ7lw2hecrwhPQlcq97LLxFYR28vCY14Ty6eBox4="; }; cargoBuildFlags = [ "--package=ruff" ]; - cargoHash = "sha256-m3VkHXhjemXVOFFVSUOVz0xD2Rc2pMsP+dnMYQD29uI="; + cargoHash = "sha256-iQKX+TqfP9r5P+UJKLqNysHYJm8N6qCCDfs8KYSb1vY="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/ru/runme/package.nix b/pkgs/by-name/ru/runme/package.nix index e84df6db70fc..bb8a7a76669f 100644 --- a/pkgs/by-name/ru/runme/package.nix +++ b/pkgs/by-name/ru/runme/package.nix @@ -13,13 +13,13 @@ buildGoModule (finalAttrs: { pname = "runme"; - version = "3.16.6"; + version = "3.16.10"; src = fetchFromGitHub { owner = "runmedev"; repo = "runme"; rev = "v${finalAttrs.version}"; - hash = "sha256-bW4MlzBRC+Mf6Y1CmtTdMFaZbTBDqaPh3puFQpOl+hQ="; + hash = "sha256-ExgzuX3g8JHWKGmUbaIOR7H1eSI97GRtSREtyqU0riU="; }; vendorHash = "sha256-yS87r9zYQpJ7G/opqBNJ6EgqO7/R1jL+mxPVX71rQhc="; diff --git a/pkgs/by-name/se/session-desktop/package.nix b/pkgs/by-name/se/session-desktop/package.nix index 527d088f4975..9c0012015c7d 100644 --- a/pkgs/by-name/se/session-desktop/package.nix +++ b/pkgs/by-name/se/session-desktop/package.nix @@ -31,14 +31,14 @@ let libsession-util-nodejs = stdenv.mkDerivation (finalAttrs: { pname = "libsession-util-nodejs"; - version = "0.6.16"; # find version in pnpm-lock.yaml + version = "0.6.17"; # find version in pnpm-lock.yaml src = fetchFromGitHub { owner = "session-foundation"; repo = "libsession-util-nodejs"; tag = "v${finalAttrs.version}"; fetchSubmodules = true; deepClone = true; # need git rev for all submodules - hash = "sha256-xTaXPz5p+NBCdjCTErQVrG2gBA4oxHCvSqJTN8g9uE4="; + hash = "sha256-j7smb0Rgjdqs4l3ahUV2bFXyvieV6Mcoti6wjSRovLo="; # fetchgit is not reproducible with deepClone + fetchSubmodules: # https://github.com/NixOS/nixpkgs/issues/100498 postFetch = '' @@ -109,7 +109,7 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "session-desktop"; - version = "1.17.15"; + version = "1.17.17"; src = (fetchFromGitHub { owner = "session-foundation"; @@ -123,7 +123,7 @@ stdenv.mkDerivation (finalAttrs: { rm -rf .git popd ''; - hash = "sha256-snQYyXwybXqDkCBHtIeSMTkQLIXrc8zET7kRiWjPwpI="; + hash = "sha256-YqDkL91PbgNlaDnfCpZn6oL2r4z0zClRb4OGys4o2Yw="; }).overrideAttrs (oldAttrs: { # https://github.com/NixOS/nixpkgs/issues/195117#issuecomment-1410398050 @@ -169,7 +169,7 @@ stdenv.mkDerivation (finalAttrs: { inherit (finalAttrs) pname version src; inherit pnpm; fetcherVersion = 3; - hash = "sha256-cinhhPTFSzrr/hc/+Tyv1IKRn84MYpycOQ1qxCMQuy8="; + hash = "sha256-8z4EDHpsvM0AFbJy2JXoE4vjiLaDshTihMQsrQzXdEs="; }; buildPhase = '' diff --git a/pkgs/by-name/sl/slurm/package.nix b/pkgs/by-name/sl/slurm/package.nix index 974657f170e0..ea06a5f93d88 100644 --- a/pkgs/by-name/sl/slurm/package.nix +++ b/pkgs/by-name/sl/slurm/package.nix @@ -34,6 +34,7 @@ http-parser, # enable internal X11 support via libssh2 enableX11 ? true, + enablePAM ? true, enableNVML ? config.cudaSupport, cudaPackages, symlinkJoin, @@ -144,17 +145,36 @@ stdenv.mkDerivation (finalAttrs: { "--without-rpath" # Required for configure to pick up the right dlopen path ] ++ (lib.optional (!enableX11) "--disable-x11") - ++ (lib.optional enableNVML "--with-nvml"); + ++ (lib.optional enableNVML "--with-nvml") + ++ (lib.optional enablePAM "--enable-pam --with-pam_dir=${placeholder "out"}/lib/security"); preConfigure = '' patchShebangs ./doc/html/shtml2html.py patchShebangs ./doc/man/man2html.py + '' + + (lib.optionalString enablePAM '' + mkdir -p $out/lib/security + ''); + postConfigure = lib.optionalString enablePAM '' + rm -rf $out ''; - postInstall = '' - rm -f $out/lib/*.la $out/lib/slurm/*.la + postBuild = lib.optionalString enablePAM '' + make -C contribs/pam + make -C contribs/pam_slurm_adopt ''; + postInstall = + (lib.optionalString enablePAM '' + export LIBRARY_PATH="$PWD/src/api/.libs:''${LIBRARY_PATH:+:$LIBRARY_PATH}" + mkdir -p $out/lib/security + make -C contribs/pam install + make -C contribs/pam_slurm_adopt install + '') + + '' + rm -f $out/lib/*.la $out/lib/slurm/*.la $out/lib/security/*.la + ''; + enableParallelBuilding = true; passthru.tests.slurm = nixosTests.slurm; @@ -166,6 +186,7 @@ stdenv.mkDerivation (finalAttrs: { license = lib.licenses.gpl2Only; maintainers = with lib.maintainers; [ markuskowa + edwtjo ]; }; }) diff --git a/pkgs/by-name/sp/sprite/package.nix b/pkgs/by-name/sp/sprite/package.nix index 36b1370f6526..c5550d7a4dfd 100644 --- a/pkgs/by-name/sp/sprite/package.nix +++ b/pkgs/by-name/sp/sprite/package.nix @@ -8,7 +8,7 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "sprite"; - version = "0.0.1-rc41"; + version = "0.0.1-rc42"; src = fetchurl { url = "https://sprites-binaries.t3.storage.dev/client/v${finalAttrs.version}/sprite-${ @@ -16,10 +16,10 @@ stdenv.mkDerivation (finalAttrs: { }-${if stdenv.hostPlatform.isx86_64 then "amd64" else "arm64"}.tar.gz"; hash = { - aarch64-darwin = "sha256-WVEa0NjpoeHZtn8p8k5AJLifIZWgPchpyrj5ikRupoI="; - x86_64-darwin = "sha256-zwCgZSFeFFk49blOjzH5PEv5fuFUlnP/Bre0uJpz78c="; - aarch64-linux = "sha256-PjL4usgcx3ybLB7ZLPfKHaqygWVfiuCNrERbYrDRZYk="; - x86_64-linux = "sha256-PAnnP5M9lLwC3Qhydz3Bo0uLtX6uE5cJF4lDOGfsiDk="; + aarch64-darwin = "sha256-ih0RonsNu7ZHUWbQcMqHmm7RXg0VvekDvq6WpnKvSjY="; + x86_64-darwin = "sha256-p3Tpf2Mg0rfOaw/y7cKI2Q7SvEpm+a1ykYVrr/dzVLc="; + aarch64-linux = "sha256-vMhkzX9noNL8Aw6MWhEAYmufCRpLsY/FbveBP3PYrQQ="; + x86_64-linux = "sha256-Jmym6yg0Wl83KTn840jWF3md5+r4NBh8czQudY5Iomk="; } .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); }; diff --git a/pkgs/by-name/sr/src-cli/package.nix b/pkgs/by-name/sr/src-cli/package.nix index a08dc83e805c..30eb9c0f52c5 100644 --- a/pkgs/by-name/sr/src-cli/package.nix +++ b/pkgs/by-name/sr/src-cli/package.nix @@ -9,13 +9,13 @@ buildGoModule rec { pname = "src-cli"; - version = "7.0.1"; + version = "7.0.2"; src = fetchFromGitHub { owner = "sourcegraph"; repo = "src-cli"; rev = version; - hash = "sha256-nGWSTIkhO8Wcf1oXecUiE/i3bdEi5I/DXYdvBFfF2zU="; + hash = "sha256-RX3Fxa+AyzZQn68M5ZqeCqKjkNkp80ih0ECVvud1SSg="; }; vendorHash = "sha256-lChxbgIa4w24uUG0SYBbzouKt+a0eVLLSn/BG6Q5P6o="; diff --git a/pkgs/by-name/te/temporal_capi/package.nix b/pkgs/by-name/te/temporal_capi/package.nix index 8add501dd8e2..a19ee4efe21f 100644 --- a/pkgs/by-name/te/temporal_capi/package.nix +++ b/pkgs/by-name/te/temporal_capi/package.nix @@ -5,6 +5,7 @@ fetchFromGitHub, nix-update-script, testers, + pkg-config, validatePkgConfig, }: @@ -53,15 +54,15 @@ rustPlatform.buildRustPackage (finalAttrs: { mkdir $out/lib/pkgconfig cat -> $out/lib/pkgconfig/temporal_capi.pc < -Date: Mon, 1 Sep 2025 13:22:26 +0200 -Subject: [PATCH] {CMakeLists.txt,cmake/GtkDocScanGObjWrapper.cmake}: Bump - cmake_minimum_required() to version 3.10. - ---- - CMakeLists.txt | 2 +- - cmake/GtkDocScanGObjWrapper.cmake | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 5fbff8a..e7b863e 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1,4 +1,4 @@ --cmake_minimum_required(VERSION 3.0) -+cmake_minimum_required(VERSION 3.10) - project(geonames VERSION 0.3.1 LANGUAGES C) - - include(GNUInstallDirs) -diff --git a/cmake/GtkDocScanGObjWrapper.cmake b/cmake/GtkDocScanGObjWrapper.cmake -index b187ebb..b026ed0 100644 ---- a/cmake/GtkDocScanGObjWrapper.cmake -+++ b/cmake/GtkDocScanGObjWrapper.cmake -@@ -20,7 +20,7 @@ - - # This is needed for find_package(PkgConfig) to work correctly -- - # CMAKE_MINIMUM_REQUIRED_VERSION needs to be defined. --cmake_minimum_required(VERSION 3.2) -+cmake_minimum_required(VERSION 3.10) - - if(NOT APPLE) - # We use pkg-config to find glib et al --- -GitLab - diff --git a/pkgs/desktops/lomiri/development/geonames/default.nix b/pkgs/desktops/lomiri/development/geonames/default.nix index 879cfdcd5230..fee15718c8a8 100644 --- a/pkgs/desktops/lomiri/development/geonames/default.nix +++ b/pkgs/desktops/lomiri/development/geonames/default.nix @@ -22,13 +22,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "geonames"; - version = "0.3.1"; + version = "0.3.2"; src = fetchFromGitLab { owner = "ubports"; repo = "development/core/geonames"; - rev = finalAttrs.version; - hash = "sha256-AhRnUoku17kVY0UciHQXFDa6eCH6HQ4ZGIOobCaGTKQ="; + tag = finalAttrs.version; + hash = "sha256-jXjhhCrY0tURd4N4D5weCJEckS5cctUfBgpGLTkC2cI="; }; outputs = [ @@ -42,12 +42,6 @@ stdenv.mkDerivation (finalAttrs: { "devdoc" ]; - patches = [ - # Fix compat with CMake 4 - # Remove when https://gitlab.com/ubports/development/core/geonames/-/merge_requests/4 merged & in release - ./1001-geonames-cmake4-compat.patch - ]; - postPatch = '' patchShebangs src/generate-locales.sh tests/setup-test-env.sh ''; @@ -105,7 +99,10 @@ stdenv.mkDerivation (finalAttrs: { doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; passthru = { - tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + tests.pkg-config = testers.hasPkgConfigModules { + package = finalAttrs.finalPackage; + versionCheck = true; + }; updateScript = gitUpdater { }; }; @@ -120,7 +117,8 @@ stdenv.mkDerivation (finalAttrs: { # Cross requires hostPlatform emulation during build # https://gitlab.com/ubports/development/core/geonames/-/issues/1 broken = - stdenv.buildPlatform != stdenv.hostPlatform && !stdenv.hostPlatform.emulatorAvailable buildPackages; + !lib.systems.equals stdenv.buildPlatform stdenv.hostPlatform + && !stdenv.hostPlatform.emulatorAvailable buildPackages; pkgConfigModules = [ "geonames" ]; diff --git a/pkgs/development/beam-modules/rebar3-release.nix b/pkgs/development/beam-modules/rebar3-release.nix index e1af791cfa5a..27ce041c8797 100644 --- a/pkgs/development/beam-modules/rebar3-release.nix +++ b/pkgs/development/beam-modules/rebar3-release.nix @@ -57,7 +57,6 @@ let attrs // { - name = "${pname}-${version}"; inherit version pname; buildInputs = diff --git a/pkgs/development/coq-modules/aac-tactics/default.nix b/pkgs/development/coq-modules/aac-tactics/default.nix index 46e8948abab1..3eef4aefd59c 100644 --- a/pkgs/development/coq-modules/aac-tactics/default.nix +++ b/pkgs/development/coq-modules/aac-tactics/default.nix @@ -36,7 +36,7 @@ mkCoqDerivation { lib.switch coq.coq-version [ { - case = "9.0"; + case = lib.versions.isGe "9.0"; out = "9.0.0"; } { diff --git a/pkgs/development/coq-modules/mtac2/default.nix b/pkgs/development/coq-modules/mtac2/default.nix index ef06e17f2d7f..75ad9aec33a7 100644 --- a/pkgs/development/coq-modules/mtac2/default.nix +++ b/pkgs/development/coq-modules/mtac2/default.nix @@ -14,11 +14,16 @@ mkCoqDerivation { defaultVersion = with lib.versions; lib.switch coq.version [ + { + case = isEq "9.1"; + out = "1.4-rocq${coq.coq-version}"; + } { case = range "8.19" "9.0"; out = "1.4-coq${coq.coq-version}"; } ] null; + release."1.4-rocq9.1".hash = "sha256-A+ac84ZfDMW2NhS/NrGIfdairXmzXxZIYGNmJIz0ReM="; release."1.4-coq9.0".sha256 = "sha256-pAPBRCW7M46UZPJ+v/0xAT8mpQURN8czMmlrfYz/MVU="; release."1.4-coq8.20".sha256 = "sha256-3nu/8zDvdnl6WzGtw46mVcdqgkRgc6Xy8/I+lUOrSIY="; release."1.4-coq8.19".sha256 = "sha256-G9eK0eLyECdT20/yf8yyz7M8Xq2WnHHaHpxVGP0yTtU="; diff --git a/pkgs/development/coq-modules/rewriter/default.nix b/pkgs/development/coq-modules/rewriter/default.nix index 42cc8f777125..3e3e05cd516e 100644 --- a/pkgs/development/coq-modules/rewriter/default.nix +++ b/pkgs/development/coq-modules/rewriter/default.nix @@ -16,7 +16,7 @@ mkCoqDerivation { in lib.switch coq.coq-version [ { - case = range "8.17" "9.0"; + case = range "8.17" "9.2"; out = "0.0.15"; } ] null; diff --git a/pkgs/development/coq-modules/unicoq/default.nix b/pkgs/development/coq-modules/unicoq/default.nix index 401015b89dec..744a6d24bb4a 100644 --- a/pkgs/development/coq-modules/unicoq/default.nix +++ b/pkgs/development/coq-modules/unicoq/default.nix @@ -12,6 +12,10 @@ mkCoqDerivation { defaultVersion = with lib.versions; lib.switch coq.version [ + { + case = isGe "9.1"; + out = "1.6-9.1"; + } { case = range "8.20" "9.0"; out = "1.6-8.20"; @@ -21,6 +25,8 @@ mkCoqDerivation { out = "1.6-8.19"; } ] null; + release."1.6-9.1".rev = "0cf37ef7e638bfaad6e804e17bd80e7bb0e1b717"; + release."1.6-9.1".hash = "sha256-1EKDkj33pg3AsEpckZYqWppPUZV2OkxM2xLq2zvZGMQ="; release."1.6-8.20".sha256 = "sha256-zne9LB0lGdqUfrBe8cDK8fwuxfBDFU4PqNlt9nl7rNI="; release."1.6-8.19".sha256 = "sha256-fDk60B8AzJwiemxHGgWjNu6PTu6NcJoI9uK7Ww2AT14="; releaseRev = v: "v${v}"; diff --git a/pkgs/development/idris-modules/build-builtin-package.nix b/pkgs/development/idris-modules/build-builtin-package.nix index a5fd167e6a52..e8b49854443b 100644 --- a/pkgs/development/idris-modules/build-builtin-package.nix +++ b/pkgs/development/idris-modules/build-builtin-package.nix @@ -3,12 +3,10 @@ # deps: The dependencies of the package { idris, build-idris-package }: pname: deps: -let - inherit (builtins.parseDrvName idris.name) version; -in build-idris-package { - inherit pname version; + inherit pname; + inherit (idris) version; inherit (idris) src; noPrelude = true; diff --git a/pkgs/development/lean-modules/Cli/default.nix b/pkgs/development/lean-modules/Cli/default.nix index 0177c09973db..d3bc495ee9cf 100644 --- a/pkgs/development/lean-modules/Cli/default.nix +++ b/pkgs/development/lean-modules/Cli/default.nix @@ -6,17 +6,27 @@ buildLakePackage { pname = "lean4-cli"; - version = "4.28.0"; + version = "4.29.0"; src = fetchFromGitHub { owner = "leanprover"; repo = "lean4-cli"; - tag = "v4.28.0"; - hash = "sha256-9nX+dozmDAaVb5uKWL14zbILr7aqbVerTyPcN12Niw4="; + tag = "v4.29.0"; + hash = "sha256-jCUl4sXVmwtYPuQecEUFH6mwFzPaQY7au4624EOiWjk="; }; leanPackageName = "Cli"; + # Pre-build static library for downstream executables. + # TODO: upstream this to lean4-cli + postPatch = '' + substituteInPlace lakefile.toml \ + --replace-fail '[[lean_lib]] + name = "Cli"' '[[lean_lib]] + name = "Cli" + defaultFacets = ["static"]' + ''; + meta = { description = "Command-line argument parser for Lean 4"; homepage = "https://github.com/leanprover/lean4-cli"; diff --git a/pkgs/development/lean-modules/LeanSearchClient/default.nix b/pkgs/development/lean-modules/LeanSearchClient/default.nix index bce5fe166814..b7e25b5ecbd0 100644 --- a/pkgs/development/lean-modules/LeanSearchClient/default.nix +++ b/pkgs/development/lean-modules/LeanSearchClient/default.nix @@ -18,12 +18,6 @@ buildLakePackage { leanPackageName = "LeanSearchClient"; - # Upstream lean-toolchain lags behind; remove it so the - # buildLakePackage toolchain check does not reject this package. - postPatch = '' - rm -f lean-toolchain - ''; - meta = { description = "Lean 4 client for LeanSearch and Moogle proof search"; homepage = "https://github.com/leanprover-community/LeanSearchClient"; diff --git a/pkgs/development/lean-modules/Qq/default.nix b/pkgs/development/lean-modules/Qq/default.nix index 6939b121939c..6feb6fa51916 100644 --- a/pkgs/development/lean-modules/Qq/default.nix +++ b/pkgs/development/lean-modules/Qq/default.nix @@ -6,13 +6,13 @@ buildLakePackage { pname = "lean4-Qq"; - version = "4.28.0"; + version = "4.29.0"; src = fetchFromGitHub { owner = "leanprover-community"; repo = "quote4"; - tag = "v4.28.0"; - hash = "sha256-BRrSdDJQAsgM/NeSL2FODCez/8zEffjDRWUToGlKDNQ="; + tag = "v4.29.0"; + hash = "sha256-pNY5hv1nJbreCfU4EewIHCpiryIBv1ghWibrUW8vnQ0="; }; leanPackageName = "Qq"; diff --git a/pkgs/development/lean-modules/aesop/default.nix b/pkgs/development/lean-modules/aesop/default.nix index e60651dbe2a0..7d8ad308741a 100644 --- a/pkgs/development/lean-modules/aesop/default.nix +++ b/pkgs/development/lean-modules/aesop/default.nix @@ -7,13 +7,13 @@ buildLakePackage { pname = "lean4-aesop"; - version = "4.28.0"; + version = "4.29.0"; src = fetchFromGitHub { owner = "leanprover-community"; repo = "aesop"; - tag = "v4.28.0"; - hash = "sha256-KeP46qtEf4/lgi4iCVuYIQbazufTR4luTbsuia9JkK4="; + tag = "v4.29.0"; + hash = "sha256-CNwxNig8OWjtfQRYyRnM/HGBn2oaNX5qP9CVT2eWNlg="; }; leanPackageName = "aesop"; diff --git a/pkgs/development/lean-modules/batteries/default.nix b/pkgs/development/lean-modules/batteries/default.nix index af0b8623e1c6..9fdb1efd8686 100644 --- a/pkgs/development/lean-modules/batteries/default.nix +++ b/pkgs/development/lean-modules/batteries/default.nix @@ -6,13 +6,13 @@ buildLakePackage { pname = "lean4-batteries"; - version = "4.28.0"; + version = "4.29.0"; src = fetchFromGitHub { owner = "leanprover-community"; repo = "batteries"; - tag = "v4.28.0"; - hash = "sha256-3N1MCFsg5UiwBCMAhDK7WwIowMNnhjlFgAsm0UPtGKc="; + tag = "v4.29.0"; + hash = "sha256-sEIDi2i2FaLTgKYWt/kzqPrjMdf+bFURfhw6ZZWBawQ="; }; leanPackageName = "batteries"; diff --git a/pkgs/development/lean-modules/importGraph/default.nix b/pkgs/development/lean-modules/importGraph/default.nix index 50a91b3c819f..4da481fd5a16 100644 --- a/pkgs/development/lean-modules/importGraph/default.nix +++ b/pkgs/development/lean-modules/importGraph/default.nix @@ -7,13 +7,13 @@ buildLakePackage { pname = "lean4-importGraph"; - version = "4.28.0"; + version = "4.29.0"; src = fetchFromGitHub { owner = "leanprover-community"; repo = "import-graph"; - tag = "v4.28.0"; - hash = "sha256-fZS8bFQjV7eLZCJwD+SVRzmCcCthrl+PO8vL8U8AOYs="; + tag = "v4.29.0"; + hash = "sha256-tqdO2qyWiJzEbK0yuu4+tiOXTEg9XJfGnI7z6Jh/abg="; }; leanPackageName = "importGraph"; diff --git a/pkgs/development/lean-modules/lean4/default.nix b/pkgs/development/lean-modules/lean4/default.nix new file mode 100644 index 000000000000..e53d298db06f --- /dev/null +++ b/pkgs/development/lean-modules/lean4/default.nix @@ -0,0 +1,138 @@ +# Lean 4 toolchain for the leanPackages set (independent of pkgs.lean4). +{ + lib, + stdenv, + symlinkJoin, + cmake, + fetchFromGitHub, + git, + gmp, + cadical, + pkg-config, + libuv, + perl, + testers, +}: + +let + lean4 = stdenv.mkDerivation (finalAttrs: { + pname = "lean4"; + version = "4.29.0"; + + mimalloc-src = fetchFromGitHub { + owner = "microsoft"; + repo = "mimalloc"; + tag = "v2.2.3"; + hash = "sha256-B0gngv16WFLBtrtG5NqA2m5e95bYVcQraeITcOX9A74="; + }; + + src = fetchFromGitHub { + owner = "leanprover"; + repo = "lean4"; + tag = "v${finalAttrs.version}"; + hash = "sha256-0v4OTrCLdHBbWJUq7hIjJonqget9SvsG3izGlOwhwyU="; + }; + + # Vendor mimalloc. Upstream has since partially adopted FetchContent: + # https://github.com/leanprover/lean4/commit/a145b9c11a0fe38fd4c921024a7376c99cc34bd2 + # + # Dynamically adjust the source tree to maintain a healthy boundary + # with Nix and avoid overstepping on its jurisdiction over cache coherence. + postPatch = + let + pattern = "\${LEAN_BINARY_DIR}/../mimalloc/src/mimalloc"; + in + '' + substituteInPlace src/CMakeLists.txt \ + --replace-fail 'set(GIT_SHA1 "")' 'set(GIT_SHA1 "${finalAttrs.src.tag}")' + + rm -rf src/lake/examples/git/ + + substituteInPlace CMakeLists.txt \ + --replace-fail 'GIT_REPOSITORY https://github.com/microsoft/mimalloc' \ + 'SOURCE_DIR "${finalAttrs.mimalloc-src}"' \ + --replace-fail 'GIT_TAG ${finalAttrs.mimalloc-src.tag}' "" + for file in stage0/src/CMakeLists.txt stage0/src/runtime/CMakeLists.txt src/CMakeLists.txt src/runtime/CMakeLists.txt; do + substituteInPlace "$file" \ + --replace-fail '${pattern}' '${finalAttrs.mimalloc-src}' + done + + substituteInPlace src/lake/Lake/Load/Lean/Elab.lean \ + --replace-fail \ + 'let upToDate := (← olean.pathExists) ∧' \ + 'let upToDate := cfg.pkgDir.toString.startsWith "/nix/store/" ∨ (← olean.pathExists) ∧' + ''; + + preConfigure = '' + patchShebangs stage0/src/bin/ src/bin/ + ''; + + nativeBuildInputs = [ + cmake + pkg-config + ]; + + buildInputs = [ + gmp + libuv + cadical + ]; + + nativeCheckInputs = [ + git + perl + ]; + + cmakeFlags = [ + "-DUSE_GITHASH=OFF" + "-DINSTALL_LICENSE=OFF" + "-DUSE_MIMALLOC=ON" + ]; + + passthru.tests = { + version = testers.testVersion { + package = finalAttrs.finalPackage; + version = "v${finalAttrs.version}"; + }; + }; + + meta = { + description = "Automatic and interactive theorem prover"; + homepage = "https://leanprover.github.io/"; + changelog = "https://github.com/leanprover/lean4/blob/${finalAttrs.src.tag}/RELEASES.md"; + license = lib.licenses.asl20; + platforms = lib.platforms.all; + maintainers = with lib.maintainers; [ nadja-y ]; + mainProgram = "lean"; + }; + }); + + oldStorePath = builtins.substring 0 43 (toString lean4); +in +# Binary-patched for correct runtime discovery in wrapped environments. +symlinkJoin { + inherit (lean4) name pname; + paths = [ lean4 ]; + nativeBuildInputs = [ perl ]; + postBuild = '' + newStorePath=$(echo "$out" | head -c 43) + + # Copy (not symlink) — IO.appPath resolves through symlinks. + rm $out/bin/lean $out/bin/lake + cp ${lean4}/bin/lean $out/bin/lean + cp ${lean4}/bin/lake $out/bin/lake + + for bin in $out/bin/lean $out/bin/lake; do + cat "$bin" \ + | perl -pe "s|\Q${oldStorePath}\E|$newStorePath|g" \ + > "$bin.tmp" + chmod +x "$bin.tmp" + mv "$bin.tmp" "$bin" + done + ''; + + inherit (lean4) version src meta; + passthru = { + inherit (lean4) version src; + }; +} diff --git a/pkgs/development/lean-modules/mathlib/default.nix b/pkgs/development/lean-modules/mathlib/default.nix index 77d935a79a44..70a34dd9f333 100644 --- a/pkgs/development/lean-modules/mathlib/default.nix +++ b/pkgs/development/lean-modules/mathlib/default.nix @@ -14,13 +14,13 @@ buildLakePackage { pname = "lean4-mathlib"; - version = "4.28.0"; + version = "4.29.0"; src = fetchFromGitHub { owner = "leanprover-community"; repo = "mathlib4"; - tag = "v4.28.0"; - hash = "sha256-7kR0WvEDey5kEdqKKVEO/JgQd1VyB6a+zwPvIV5E5Pg="; + tag = "v4.29.0"; + hash = "sha256-fe+qS7gNxdLnACX3/jqToa9m7r1gbskY6kDJbm1ZefE="; }; leanPackageName = "mathlib"; @@ -34,6 +34,8 @@ buildLakePackage { importGraph ]; + requiredSystemFeatures = [ "big-parallel" ]; + passthru.tests = { inherit (tests.lake) weak-minimax; }; diff --git a/pkgs/development/lean-modules/plausible/default.nix b/pkgs/development/lean-modules/plausible/default.nix index dc61bca2c751..07b22b3ebe87 100644 --- a/pkgs/development/lean-modules/plausible/default.nix +++ b/pkgs/development/lean-modules/plausible/default.nix @@ -6,13 +6,13 @@ buildLakePackage { pname = "lean4-plausible"; - version = "4.28.0"; + version = "4.29.0"; src = fetchFromGitHub { owner = "leanprover-community"; repo = "plausible"; - tag = "v4.28.0"; - hash = "sha256-xuOfeoRPt5L0Rk4fEJPIi1A0aoNIkC1fsh5yeIx5bFI="; + tag = "v4.29.0"; + hash = "sha256-08fNB2GK5AqDJ15n5Ol+HYqaSbsznyp4cerDo32bG50="; }; leanPackageName = "plausible"; diff --git a/pkgs/development/lean-modules/proofwidgets/default.nix b/pkgs/development/lean-modules/proofwidgets/default.nix index c026f0c62bcc..54998125b500 100644 --- a/pkgs/development/lean-modules/proofwidgets/default.nix +++ b/pkgs/development/lean-modules/proofwidgets/default.nix @@ -8,19 +8,18 @@ }: let + version = "0.0.95"; src = fetchFromGitHub { owner = "leanprover-community"; repo = "ProofWidgets4"; - tag = "v0.0.87"; - hash = "sha256-qXEqNfwUBPnxAtLRkBZTBFhrM4JYl43gLo/PM6HOG7o="; + tag = "v${version}"; + hash = "sha256-LETljr+QEU6CxprR3pB4hUzhgCD8PrIuiPOgTIdhHVM="; }; in buildLakePackage { pname = "lean4-proofwidgets"; - version = "0.0.87"; - - inherit src; + inherit version src; leanPackageName = "proofwidgets"; @@ -38,7 +37,7 @@ buildLakePackage { name = "lean4-proofwidgets-npm-deps"; inherit src; sourceRoot = "source/widget"; - hash = "sha256-CzBRrreOSytquZ/xFHPlY8r+lz5Bg9Zk9ienRhc8SiY="; + hash = "sha256-ShH6MDr76wzWQrJvhMWCnklaox/uRsfoe+aYVSo/eNA="; }; npmRoot = "widget"; diff --git a/pkgs/development/lean-modules/update.sh b/pkgs/development/lean-modules/update.sh index a02e52d6775f..fc05fe41b5c5 100755 --- a/pkgs/development/lean-modules/update.sh +++ b/pkgs/development/lean-modules/update.sh @@ -1,33 +1,33 @@ #!/usr/bin/env nix-shell #!nix-shell -i bash -p nix-update common-updater-scripts curl jq -# Update all leanPackages to match the lean4 version in nixpkgs. -# -# All mathlib-ecosystem packages (batteries, aesop, Qq, plausible, -# importGraph, Cli, mathlib) release with the same version tag as -# lean4 (lockstep versioning). ProofWidgets and LeanSearchClient -# have their own versioning; the correct versions are read from -# mathlib's lake-manifest.json at the matching lean4 tag. -# -# This script only prefetches source hashes — it does not build -# anything. Output is a summary suitable for commit messages. +# Update the leanPackages set. # # Usage: -# ./pkgs/development/lean-modules/update.sh +# ./pkgs/development/lean-modules/update.sh [version] set -euo pipefail -lean4_version=$(nix eval --raw .#lean4.version) +lean4_version="${1:-$(curl -sL https://api.github.com/repos/leanprover/lean4/releases/latest | jq -r '.tag_name' | sed 's/^v//')}" -# Snapshot current versions for diffing. +# Snapshot before any updates. old_lockstep=$(nix eval --raw .#leanPackages.mathlib.version 2>/dev/null || echo "") old_pw=$(nix eval --raw .#leanPackages.proofwidgets.version 2>/dev/null || echo "") old_lsc=$(nix eval --raw .#leanPackages.LeanSearchClient.version 2>/dev/null || echo "") +run() { echo " $*"; "$@"; } + +# --- lean4 toolchain --- + +run nix-update leanPackages.lean4 --version="$lean4_version" + +# --- mathlib dependency tree --- +# Versions are derived from mathlib's lake-manifest.json at the +# matching lean4 tag. Most packages release in lockstep with lean4; +# ProofWidgets and LeanSearchClient have their own versioning. + manifest=$(curl -sL "https://raw.githubusercontent.com/leanprover-community/mathlib4/v${lean4_version}/lake-manifest.json") -# Verify that mathlib's dependency set matches what we package. -# If mathlib adds or removes a dep, this script needs manual updating. known_deps="Cli LeanSearchClient Qq aesop batteries importGraph plausible proofwidgets" manifest_deps=$(echo "$manifest" | jq -r '[.packages[].name] | sort | join(" ")') if [ "$manifest_deps" != "$known_deps" ]; then @@ -43,41 +43,41 @@ lsc_rev=$(echo "$manifest" | jq -r '.packages[] | select(.name == "LeanSearchCli lsc_date=$(curl -sL "https://api.github.com/repos/leanprover-community/LeanSearchClient/commits/$lsc_rev" | jq -r '.commit.committer.date[:10]') lsc_version="0-unstable-$lsc_date" -# Leaf packages (no leanDeps). -nix-update leanPackages.batteries --version="$lean4_version" -nix-update leanPackages.Qq --version="$lean4_version" -nix-update leanPackages.plausible --version="$lean4_version" -nix-update leanPackages.Cli --version="$lean4_version" -nix-update leanPackages.proofwidgets --version="$pw_version" +echo "--- mathlib tree ---" -# LeanSearchClient has no lockstep tags; pin to the exact rev mathlib uses. -update-source-version leanPackages.LeanSearchClient "$lsc_version" \ - --rev="$lsc_rev" +# Lockstep version synchronization. +dir=pkgs/development/lean-modules +for pkg in batteries aesop Qq plausible Cli importGraph mathlib; do + sed -i "s|tag = \"v${old_lockstep}\"|tag = \"v${lean4_version}\"|" "$dir/$pkg/default.nix" +done -# Packages with leanDeps. -nix-update leanPackages.aesop --version="$lean4_version" -nix-update leanPackages.importGraph --version="$lean4_version" +run nix-update leanPackages.batteries --version="$lean4_version" +run nix-update leanPackages.Qq --version="$lean4_version" +run nix-update leanPackages.plausible --version="$lean4_version" +run nix-update leanPackages.Cli --version="$lean4_version" +run nix-update leanPackages.proofwidgets --version="$pw_version" +run update-source-version leanPackages.LeanSearchClient "$lsc_version" --rev="$lsc_rev" +run nix-update leanPackages.aesop --version="$lean4_version" +run nix-update leanPackages.importGraph --version="$lean4_version" +run nix-update leanPackages.mathlib --version="$lean4_version" -# mathlib (all deps are nix-packaged, no lakeHash needed). -nix-update leanPackages.mathlib --version="$lean4_version" +# --- summary --- -# Summary. changes=() -if [ "$old_lockstep" != "$lean4_version" ]; then - changes+=("lockstep packages: $old_lockstep -> $lean4_version") -fi -if [ "$old_pw" != "$pw_version" ]; then - changes+=("proofwidgets: $old_pw -> $pw_version") -fi -if [ "$old_lsc" != "$lsc_version" ]; then - changes+=("LeanSearchClient: $old_lsc -> $lsc_version") -fi +[ "$old_lockstep" != "$lean4_version" ] && changes+=("mathlib tree: $old_lockstep -> $lean4_version") +[ "$old_pw" != "$pw_version" ] && changes+=("proofwidgets: $old_pw -> $pw_version") +[ "$old_lsc" != "$lsc_version" ] && changes+=("LeanSearchClient: $old_lsc -> $lsc_version") if [ ${#changes[@]} -eq 0 ]; then - echo "leanPackages: already up to date at lean4 $lean4_version" -else - echo "leanPackages: update to lean4 $lean4_version" - for c in "${changes[@]}"; do - echo " - $c" - done + echo "status: up-to-date" + exit 0 fi + +echo "commit-title: leanPackages: lean4 $old_lockstep -> $lean4_version" +echo "---" +for c in "${changes[@]}"; do + echo " - $c" +done +echo "---" +echo "manifest-source: https://github.com/leanprover-community/mathlib4/blob/v${lean4_version}/lake-manifest.json" +echo "lean4-release: https://github.com/leanprover/lean4/releases/tag/v${lean4_version}" diff --git a/pkgs/development/libraries/openexr/2.nix b/pkgs/development/libraries/openexr/2.nix index aca401ee32c9..145cac6d717e 100644 --- a/pkgs/development/libraries/openexr/2.nix +++ b/pkgs/development/libraries/openexr/2.nix @@ -6,6 +6,7 @@ ilmbase, fetchpatch, cmake, + ctestCheckHook, }: stdenv.mkDerivation rec { @@ -61,6 +62,9 @@ stdenv.mkDerivation rec { ++ lib.optional stdenv.hostPlatform.isStatic "-DCMAKE_SKIP_RPATH=ON"; nativeBuildInputs = [ cmake ]; + nativeCheckInputs = [ + ctestCheckHook + ]; propagatedBuildInputs = [ ilmbase zlib @@ -70,6 +74,11 @@ stdenv.mkDerivation rec { # https://github.com/AcademySoftwareFoundation/openexr/issues/1281 doCheck = !stdenv.hostPlatform.isAarch32 && !stdenv.hostPlatform.isi686; + disabledTests = lib.optionals (stdenv.hostPlatform.isPower64 && stdenv.hostPlatform.isBigEndian) [ + # https://github.com/AcademySoftwareFoundation/openexr/issues/222 + "OpenEXR.IlmImf" + ]; + meta = { description = "High dynamic-range (HDR) image file format"; homepage = "https://www.openexr.com/"; diff --git a/pkgs/development/python-modules/beetcamp/default.nix b/pkgs/development/python-modules/beetcamp/default.nix index 723a081fe014..b279660c821c 100644 --- a/pkgs/development/python-modules/beetcamp/default.nix +++ b/pkgs/development/python-modules/beetcamp/default.nix @@ -13,22 +13,18 @@ filelock, writableTmpDirAsHomeHook, nix-update-script, - beetcamp ? null, # For `passthru.tests`. }: -let - version = "0.23.0"; -in -buildPythonPackage { +buildPythonPackage (finalAttrs: { pname = "beetcamp"; - inherit version; + version = "0.24.1"; pyproject = true; src = fetchFromGitHub { owner = "snejus"; repo = "beetcamp"; - tag = version; - hash = "sha256-8FEDpobEGZ0Lw1+JRoFIEe3AuiuX7dwsRab+P3hC3W0="; + tag = finalAttrs.version; + hash = "sha256-Oe5pZ4gYgqBHuzt9LBe4G14+RYXrNL+L5GIGMMflyMI="; }; patches = [ @@ -69,7 +65,7 @@ buildPythonPackage { pluginOverrides = { beetcamp = { enable = true; - propagatedBuildInputs = [ beetcamp ]; + propagatedBuildInputs = [ finalAttrs.finalPackage ]; }; }; }; @@ -85,4 +81,4 @@ buildPythonPackage { ]; mainProgram = "beetcamp"; }; -} +}) diff --git a/pkgs/development/python-modules/beets/default.nix b/pkgs/development/python-modules/beets/default.nix index fa41be45ee56..0206b6e48488 100644 --- a/pkgs/development/python-modules/beets/default.nix +++ b/pkgs/development/python-modules/beets/default.nix @@ -113,12 +113,12 @@ buildPythonPackage (finalAttrs: { pname = "beets"; - version = "2.6.2"; + version = "2.8.0"; src = fetchFromGitHub { owner = "beetbox"; repo = "beets"; tag = "v${finalAttrs.version}"; - hash = "sha256-1euYkoM66gnElCbgCgIpj1waq1QvHApUgioJTbSQJ0U="; + hash = "sha256-8sYoy11eocn7UDeTuaPqOxXZLdUqkabU4DMNLBD5Xp4="; }; pyproject = true; # Waiting for https://github.com/beetbox/beets/pull/6267 diff --git a/pkgs/development/python-modules/jupyter-docprovider/default.nix b/pkgs/development/python-modules/jupyter-docprovider/default.nix index 55eeef745a50..a3e63c27819b 100644 --- a/pkgs/development/python-modules/jupyter-docprovider/default.nix +++ b/pkgs/development/python-modules/jupyter-docprovider/default.nix @@ -9,13 +9,13 @@ buildPythonPackage (finalAttrs: { pname = "jupyter-docprovider"; - version = "2.2.1"; + version = "2.3.0"; pyproject = true; src = fetchPypi { pname = "jupyter_docprovider"; inherit (finalAttrs) version; - hash = "sha256-2Ko7XbO5tAHeBRWd+No24th0hebc31l6IOWMkh9wXdo="; + hash = "sha256-wJgI4V6T8upP8ZShjHqMj4PYEEn6kbCd4ksJrerJ1XI="; }; postPatch = '' diff --git a/pkgs/development/python-modules/jupyter-server-ydoc/default.nix b/pkgs/development/python-modules/jupyter-server-ydoc/default.nix index 6ed33d65441f..ceefafab68ef 100644 --- a/pkgs/development/python-modules/jupyter-server-ydoc/default.nix +++ b/pkgs/development/python-modules/jupyter-server-ydoc/default.nix @@ -19,13 +19,13 @@ buildPythonPackage (finalAttrs: { pname = "jupyter-server-ydoc"; - version = "2.2.1"; + version = "2.3.0"; pyproject = true; src = fetchPypi { pname = "jupyter_server_ydoc"; inherit (finalAttrs) version; - hash = "sha256-aVf2pmqHlMQmVJS7onBnpLCbKTavmRZ5LCDRN6cDvkY="; + hash = "sha256-NvMRSR6fKJ9GH83yavubcs3w6sPO7QwMvI7EOvyO/rw="; }; build-system = [ hatchling ]; diff --git a/pkgs/development/python-modules/podcats/default.nix b/pkgs/development/python-modules/podcats/default.nix index 6f2ed525f0e5..279723394fb8 100644 --- a/pkgs/development/python-modules/podcats/default.nix +++ b/pkgs/development/python-modules/podcats/default.nix @@ -1,40 +1,41 @@ { - lib, buildPythonPackage, fetchFromGitHub, - setuptools, flask, + humanize, + lib, mutagen, + setuptools, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "podcats"; version = "0.6.3"; pyproject = true; src = fetchFromGitHub { - owner = "jakubroztocil"; + owner = "jkbrzt"; repo = "podcats"; - tag = version; - sha256 = "sha256-1Jg9bR/3qMim3q5qVwUVbxeLNaXaCU6SplBUaRXeLpo="; + tag = finalAttrs.version; + hash = "sha256-1Jg9bR/3qMim3q5qVwUVbxeLNaXaCU6SplBUaRXeLpo="; }; - postPatch = '' - substituteInPlace podcats.py \ - --replace-fail 'debug=True' 'debug=True, use_reloader=False' - ''; - build-system = [ setuptools ]; dependencies = [ flask + humanize mutagen ]; + pythonImportsCheck = [ "podcats" ]; + doCheck = false; + meta = { - description = "Application that generates RSS feeds for podcast episodes from local audio files"; + description = "Generates RSS feeds for podcast episodes from local audio files"; mainProgram = "podcats"; - homepage = "https://github.com/jakubroztocil/podcats"; + homepage = "https://github.com/jkbrzt/podcats"; license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ drawbu ]; }; -} +}) diff --git a/pkgs/development/python-modules/pyjvcprojector/default.nix b/pkgs/development/python-modules/pyjvcprojector/default.nix index 3af5ddde1e5e..9d93d540b90e 100644 --- a/pkgs/development/python-modules/pyjvcprojector/default.nix +++ b/pkgs/development/python-modules/pyjvcprojector/default.nix @@ -9,14 +9,14 @@ buildPythonPackage rec { pname = "pyjvcprojector"; - version = "2.0.3"; + version = "2.0.4"; pyproject = true; src = fetchFromGitHub { owner = "SteveEasley"; repo = "pyjvcprojector"; tag = "v${version}"; - hash = "sha256-AXBayuGR8FxamyNMXzMO0sLaQNEmxkSbn/dcZxmLNG4="; + hash = "sha256-nmoPOZv5/nIypfFqjgkcQYYffUcjsCMgL6TXqGyBxcQ="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/python-matter-server/default.nix b/pkgs/development/python-modules/python-matter-server/default.nix index e7115136791b..b28b9ee66901 100644 --- a/pkgs/development/python-modules/python-matter-server/default.nix +++ b/pkgs/development/python-modules/python-matter-server/default.nix @@ -4,7 +4,6 @@ fetchFromGitHub, pythonOlder, stdenvNoCC, - replaceVars, buildNpmPackage, python, home-assistant-chip-wheels, @@ -46,23 +45,6 @@ let hash = "sha256-vnI57h/aesnaDYorq1PzcMCLmV0z0ZBJvMg4Nzh1Dtc="; }; - paaCerts = stdenvNoCC.mkDerivation { - pname = "matter-server-paa-certificates"; - inherit (home-assistant-chip-wheels) version src; - - dontConfigure = true; - dontBuild = true; - - installPhase = '' - runHook preInstall - - mkdir -p $out - cp connectedhomeip/credentials/development/paa-root-certs/* $out/ - - runHook postInstall - ''; - }; - # Maintainer note: building the dashboard requires a python environment with a # built version of python-matter-server. To support bundling the dashboard # with the python-matter-server, the build is parameterized to build without @@ -119,12 +101,6 @@ buildPythonPackage rec { disabled = pythonOlder "3.12"; - patches = [ - (replaceVars ./link-paa-root-certs.patch { - paacerts = paaCerts; - }) - ]; - postPatch = '' substituteInPlace pyproject.toml \ --replace-fail 'version = "0.0.0"' 'version = "${version}"' diff --git a/pkgs/development/python-modules/python-matter-server/link-paa-root-certs.patch b/pkgs/development/python-modules/python-matter-server/link-paa-root-certs.patch deleted file mode 100644 index f7b09bb0aff6..000000000000 --- a/pkgs/development/python-modules/python-matter-server/link-paa-root-certs.patch +++ /dev/null @@ -1,57 +0,0 @@ -From f45cf9898f2e5a3a4c2b73a9ed84c4a037a85a1e Mon Sep 17 00:00:00 2001 -From: Matt Leon -Date: Sat, 1 Jun 2024 23:28:41 -0400 -Subject: [PATCH] Symlink PAA root certificates to nix store - ---- - matter_server/server/const.py | 2 ++ - matter_server/server/helpers/paa_certificates.py | 6 ++++++ - 2 files changed, 8 insertions(+) - -diff --git a/matter_server/server/const.py b/matter_server/server/const.py -index 8cca3cf..43f02f5 100644 ---- a/matter_server/server/const.py -+++ b/matter_server/server/const.py -@@ -14,6 +14,8 @@ DATA_MODEL_SCHEMA_VERSION = 6 - # Keep default location inherited from early version of the Python - # bindings. - DEFAULT_PAA_ROOT_CERTS_DIR: Final[pathlib.Path] = ( -+ pathlib.Path("@paacerts@")) -+( - pathlib.Path(__file__) - .parent.resolve() - .parent.resolve() -diff --git a/matter_server/server/helpers/paa_certificates.py b/matter_server/server/helpers/paa_certificates.py -index de60c78..185e54c 100644 ---- a/matter_server/server/helpers/paa_certificates.py -+++ b/matter_server/server/helpers/paa_certificates.py -@@ -105,6 +105,8 @@ async def fetch_dcl_certificates( - base_url: str, - ) -> int: - """Fetch DCL PAA Certificates.""" -+ return 0 -+ - fetch_count: int = 0 - - try: -@@ -151,6 +153,8 @@ async def fetch_dcl_certificates( - - async def fetch_git_certificates(paa_root_cert_dir: Path) -> int: - """Fetch Git PAA Certificates.""" -+ return 0 -+ - fetch_count = 0 - LOGGER.info("Fetching the latest PAA root certificates from Git.") - -@@ -185,6 +189,8 @@ async def fetch_certificates( - fetch_production_certificates: bool = True, - ) -> int: - """Fetch PAA Certificates.""" -+ return 0 -+ - loop = asyncio.get_running_loop() - paa_root_cert_dir_version = paa_root_cert_dir / ".version" - --- -2.44.1 - diff --git a/pkgs/development/ruby-modules/gem/default.nix b/pkgs/development/ruby-modules/gem/default.nix index bf792f83cd13..a759f10138f3 100644 --- a/pkgs/development/ruby-modules/gem/default.nix +++ b/pkgs/development/ruby-modules/gem/default.nix @@ -39,12 +39,7 @@ lib.makeOverridable ( platform ? "ruby", ruby ? defs.ruby, stdenv ? ruby.stdenv, - namePrefix ? ( - let - rubyName = builtins.parseDrvName ruby.name; - in - "${rubyName.name}${lib.versions.majorMinor rubyName.version}-" - ), + namePrefix ? "${ruby.pname}${lib.versions.majorMinor (toString ruby.version)}-", nativeBuildInputs ? [ ], buildInputs ? [ ], meta ? { }, diff --git a/pkgs/development/tools/parsing/tree-sitter/grammars/grammar-sources.nix b/pkgs/development/tools/parsing/tree-sitter/grammars/grammar-sources.nix index 7098d00718d2..a97fd0381f7c 100644 --- a/pkgs/development/tools/parsing/tree-sitter/grammars/grammar-sources.nix +++ b/pkgs/development/tools/parsing/tree-sitter/grammars/grammar-sources.nix @@ -585,9 +585,9 @@ }; elixir = { - version = "0.3.4"; + version = "0.3.5"; url = "github:elixir-lang/tree-sitter-elixir"; - hash = "sha256-9M/DpqpGivDtgGt3ojU/kHR51sla59+KtZ/95hT6IIo="; + hash = "sha256-C5/+t49pcFh45GqLZRjRs/sH8Ej+dklR/brad+snsyQ="; meta = { license = lib.licenses.asl20; }; @@ -693,9 +693,9 @@ }; fish = rec { - version = "3.6.0"; + version = "3.7.0"; url = "github:ram02z/tree-sitter-fish?ref=${version}"; - hash = "sha256-ZQj6XR7pHGoCOBS6GOHiRW9LWNoNPlwVcZe5F2mtGNE="; + hash = "sha256-n6eGMdbW1Rsn5XbszLSSSG3F8jh+loYnPEiabNY+jfk="; meta = { license = lib.licenses.unlicense; }; @@ -736,6 +736,19 @@ }; }; + fstar = { + version = "0-unstable-2026-03-14"; + url = "github:sei40kr/tree-sitter-fstar"; + rev = "cdb06d462e0ee727c313f3e07c71bc2d288e0f89"; + hash = "sha256-kGFP+MbZ10qS13n8pcI6YhIS6xWjDtuqZSeIiPSO7pM="; + meta = { + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ + sei40kr + ]; + }; + }; + gas = { version = "0.0.1-unstable-2023-09-15"; url = "github:sirius94/tree-sitter-gas"; @@ -833,9 +846,9 @@ }; gitcommit = { - version = "0.4.0"; + version = "0.5.0"; url = "github:gbprod/tree-sitter-gitcommit"; - hash = "sha256-KYfcs99p03b0RiPYnZeKJf677fmVf658FLZcFk2v2Ws="; + hash = "sha256-ttULjFU9slnPcT4bCjOozGkaKAOxMW5Oa2/caVNeEsA="; meta = { license = lib.licenses.wtfpl; maintainers = with lib.maintainers; [ @@ -1052,9 +1065,9 @@ }; heex = { - version = "0.8.0"; + version = "0.9.0"; url = "github:phoenixframework/tree-sitter-heex"; - hash = "sha256-rifYGyIpB14VfcEZrmRwYSz+ZcajQcB4mCjXnXuVFDQ="; + hash = "sha256-1p2drpkA+5o+WSH5cv+zPVx30lNhQ9bqX5JHA0YSS2Y="; meta = { license = lib.licenses.mit; }; @@ -1329,10 +1342,10 @@ }; just = { - version = "0-unstable-2026-03-15"; + version = "0.2.0"; url = "github:casey/tree-sitter-just"; - rev = "d9da862c156020c1a83d3c6ccdda32be6d8a5d4a"; - hash = "sha256-YV+vab/QqGHVPV1e3wjd0w1nFskJEIU4ukq/yIlojk0="; + rev = "5685543a6e64f66335e25518c9ae8ffa1dae3d01"; + hash = "sha256-lrW5E+HIqrDSWZ4+KOjIc80/wYm/WV9ZOfdLXxPIbX4="; meta = { license = lib.licenses.asl20; maintainers = with lib.maintainers; [ @@ -1550,9 +1563,9 @@ }; markdown = { - version = "0.5.2"; + version = "0.5.3"; url = "github:tree-sitter-grammars/tree-sitter-markdown"; - hash = "sha256-JJCFksPDwaiOmU+nZ3PHeLHlPKWTZBTnqcD/tQorWdU="; + hash = "sha256-WUVN7+lzDI+VC5PuJjhHiS4JpVr1x0Ic30i2tVrI6W8="; location = "tree-sitter-markdown"; meta = { license = lib.licenses.mit; @@ -1561,9 +1574,9 @@ markdown-inline = { language = "markdown_inline"; - version = "0.5.2"; + version = "0.5.3"; url = "github:tree-sitter-grammars/tree-sitter-markdown"; - hash = "sha256-JJCFksPDwaiOmU+nZ3PHeLHlPKWTZBTnqcD/tQorWdU="; + hash = "sha256-WUVN7+lzDI+VC5PuJjhHiS4JpVr1x0Ic30i2tVrI6W8="; location = "tree-sitter-markdown-inline"; meta = { license = lib.licenses.mit; @@ -1962,10 +1975,10 @@ }; pod = { - version = "0-unstable-2024-08-23"; + version = "1.0.0-unstable-2026-03-23"; url = "github:tree-sitter-perl/tree-sitter-pod/release"; - rev = "0bf8387987c21bf2f8ed41d2575a8f22b139687f"; - hash = "sha256-yV2kVAxWxdyIJ3g2oivDc01SAQF0lc7UMT2sfv9lKzI="; + rev = "3f15a3f11b422753fbf985190dceacb4bbf80ecf"; + hash = "sha256-Yu6sK+tGtFVgAZUE3pfoMLzMNwxQQuQu/ZtrM45tNHs="; meta = { license = lib.licenses.artistic2; @@ -1988,9 +2001,9 @@ }; powershell = { - version = "0.25.10"; + version = "0.26.3"; url = "github:airbus-cert/tree-sitter-powershell"; - hash = "sha256-xzDM1CdBY95XgLsEjqKWrwuIf/s6/2Q0XbxJRvOuL2o="; + hash = "sha256-ETuZcVSvHF5ILN6+xjWlQM5IiT/+dtxdSckrHJSJSWk="; meta = { license = lib.licenses.mit; maintainers = with lib.maintainers; [ @@ -2214,9 +2227,9 @@ }; robot = { - version = "1.1.2"; + version = "1.3.0"; url = "github:Hubro/tree-sitter-robot"; - hash = "sha256-M0Um0JYvxQDYC3kqIENCiEIdEPOPNa05/2idih/fWas="; + hash = "sha256-GJTZMIOrEXsfVzVigF2XKKDxchkOGv0zEya5o9k5ZnY="; meta = { license = lib.licenses.isc; maintainers = with lib.maintainers; [ @@ -2257,9 +2270,9 @@ }; rust = { - version = "0.24.0"; + version = "0.24.2"; url = "github:tree-sitter/tree-sitter-rust"; - hash = "sha256-y3sJURlSTM7LRRN5WGIAeslsdRZU522Tfcu6dnXH/XQ="; + hash = "sha256-Ls6tB6IxXDQDWwx0BJ7RgbheelC4MH8z97E7wwhkDcY="; meta = { license = lib.licenses.mit; }; @@ -2279,9 +2292,9 @@ }; scala = { - version = "0.24.0"; + version = "0.25.0"; url = "github:tree-sitter/tree-sitter-scala"; - hash = "sha256-ZE+zjpb52hvehJjNchJYK81XZbGAudeTRxlczuoix5g="; + hash = "sha256-xDp1+i0QLnY18EtiwurW1B4bbeS1qZKNJRxS6Qeb3pw="; meta = { license = lib.licenses.mit; }; @@ -2785,10 +2798,10 @@ }; unison = { - version = "0-unstable-2025-03-06"; + version = "2.1.3-unstable-2026-02-27"; url = "github:kylegoetz/tree-sitter-unison"; - rev = "169e7f748a540ec360c0cb086b448faad012caa4"; - hash = "sha256-0HOLtLh1zRdaGQqchT5zFegWKJHkQe9r7DGKL6sSkPo="; + rev = "10365cc70ab2b2de85ea7ab35cf6b7636c36ce8b"; + hash = "sha256-l6X2x5lGlUhyf6Pr6lWd4aWacz7vmvtHVyM4qqPO8zg="; meta = { license = lib.licenses.mit; maintainers = with lib.maintainers; [ diff --git a/pkgs/games/xonotic/default.nix b/pkgs/games/xonotic/default.nix index a0de27407762..8c5f4a7f3975 100644 --- a/pkgs/games/xonotic/default.nix +++ b/pkgs/games/xonotic/default.nix @@ -38,7 +38,6 @@ let pname = "xonotic"; version = "0.8.6"; - name = "${pname}-${version}"; variant = if withSDL && withGLX then "" diff --git a/pkgs/os-specific/linux/busybox/build-system-buffer-overflow.patch b/pkgs/os-specific/linux/busybox/build-system-buffer-overflow.patch new file mode 100644 index 000000000000..7fdb83a1596d --- /dev/null +++ b/pkgs/os-specific/linux/busybox/build-system-buffer-overflow.patch @@ -0,0 +1,27 @@ +From 3cf1ca7491bd5b6680e80355d76442ae14db681e Mon Sep 17 00:00:00 2001 +From: Alyssa Ross +Date: Sun, 29 Mar 2026 13:18:09 +0200 +Subject: [PATCH] build system: fix potential buffer overflow + +This could potentially write one byte past the end of line. +Identified by fortify-headers. +--- + scripts/basic/split-include.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/basic/split-include.c b/scripts/basic/split-include.c +index 6ef29195e..93011d511 100644 +--- a/scripts/basic/split-include.c ++++ b/scripts/basic/split-include.c +@@ -195,7 +195,7 @@ int main(int argc, const char * argv []) + ERROR_EXIT( "find" ); + + line[0] = '\n'; +- while (fgets(line+1, buffer_size, fp_find)) ++ while (fgets(line+1, buffer_size-1, fp_find)) + { + if (strstr(list_target, line) == NULL) + { +-- +2.53.0 + diff --git a/pkgs/os-specific/linux/busybox/default.nix b/pkgs/os-specific/linux/busybox/default.nix index 8402337be16d..677b884d1c6d 100644 --- a/pkgs/os-specific/linux/busybox/default.nix +++ b/pkgs/os-specific/linux/busybox/default.nix @@ -90,6 +90,8 @@ stdenv.mkDerivation rec { excludes = [ "networking/httpd_ratelimit_cgi.c" ]; # New since release. hash = "sha256-Msm9sDZrVx7ofunnvnTS73SPKUUpR3Tv5xZ/wBd+rts="; }) + # https://lists.busybox.net/pipermail/busybox/2026-March/092010.html + ./build-system-buffer-overflow.patch ] ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) ./clang-cross.patch; diff --git a/pkgs/os-specific/linux/kernel/kernels-org.json b/pkgs/os-specific/linux/kernel/kernels-org.json index 8eaa7261baa0..adf23aea9dbc 100644 --- a/pkgs/os-specific/linux/kernel/kernels-org.json +++ b/pkgs/os-specific/linux/kernel/kernels-org.json @@ -1,7 +1,7 @@ { "testing": { - "version": "7.0-rc5", - "hash": "sha256:00q4scz3kyrbd8v23pjdzgmaz9scmxg10cqlfwrrd7xj0hxp3pah", + "version": "7.0-rc6", + "hash": "sha256:085bc06mbav64rmsm6a34j2y75nrqpqp4qd8ld8mb9acf1i4iw45", "lts": false }, "6.1": { @@ -20,23 +20,23 @@ "lts": true }, "6.6": { - "version": "6.6.130", - "hash": "sha256:139480lyi3if8pd2j3yld5a01lk7113kbcn2kxpzyk29p5kslq14", + "version": "6.6.132", + "hash": "sha256:1d1fdd5wpphlm68yb16csaaijv0lf38ynl3gpvvdspsg22xjpdn5", "lts": true }, "6.12": { - "version": "6.12.78", - "hash": "sha256:0gdgykr4nqk1dzb5ms2m07saxx58zvacpfv8ynhfrv7snjs835vi", + "version": "6.12.80", + "hash": "sha256:0lrylj87bb8ky29pbplpncrfhmgqqbq3d49iqgdwv7p7jvc929f9", "lts": true }, "6.18": { - "version": "6.18.20", - "hash": "sha256:0lrm76rdlr92kjq3g410qdff9v49mpdf400lmsh7hq74k2ymlyl3", + "version": "6.18.21", + "hash": "sha256:0ks735y6jq4yy3jaicjsj4dn4n3kk2skf9dqh9dyifipn57j2f0w", "lts": true }, "6.19": { - "version": "6.19.10", - "hash": "sha256:072s76238rnf87yhdy15nbxfyq7x3ch7p2v14dq4pq551qd48va6", + "version": "6.19.11", + "hash": "sha256:16ymkc5r3hw05z7l7ih3qw406qlszz1l7b4g5yz0hv15ddxrs0r0", "lts": false } } diff --git a/pkgs/servers/klipper/default.nix b/pkgs/servers/klipper/default.nix index a8bdd12a4cc8..a0af8d52230e 100644 --- a/pkgs/servers/klipper/default.nix +++ b/pkgs/servers/klipper/default.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation rec { pname = "klipper"; - version = "0.13.0-unstable-2026-03-09"; + version = "0.13.0-unstable-2026-03-21"; src = fetchFromGitHub { owner = "KevinOConnor"; repo = "klipper"; - rev = "644cda5ecaa39d0dcf797624c19d5425cb8121ec"; - sha256 = "sha256-ono0+6pyjJDexaDOH/vYNFNyh636iNfjBMxmWNbgVik="; + rev = "594ec7e1205450ff0753d19f0724bbe8b380465d"; + sha256 = "sha256-a496Ayas2IsP3K320EXc/7VDAtrqUzF8OaKNKBWf8lQ="; }; sourceRoot = "${src.name}/klippy"; diff --git a/pkgs/tools/package-management/lix/default.nix b/pkgs/tools/package-management/lix/default.nix index 1d95ef9a66ee..8ebcd187f4a3 100644 --- a/pkgs/tools/package-management/lix/default.nix +++ b/pkgs/tools/package-management/lix/default.nix @@ -41,6 +41,13 @@ let hash = "sha256-uu/SIG8fgVVWhsGxmszTPHwe4SQtLgbxdShOMKbeg2w="; }; + lixLowdown30Patch = fetchpatch { + name = "lix-lowdown-3.0-support.patch"; + url = "https://git.lix.systems/lix-project/lix/commit/af0390c27bdc401ece8f8192cb3024f0ff08e977.patch"; + excludes = [ "flake.nix" ]; + hash = "sha256-ZBkbgeZ/D7H2teX8bPy5NEG1aXbQVksTDV3aVBZdRPM="; + }; + makeLixScope = { attrName, @@ -229,6 +236,8 @@ lib.makeExtensible ( }) lixMdbookPatch + + lixLowdown30Patch ]; }; }; @@ -253,7 +262,10 @@ lib.makeExtensible ( hash = "sha256-APm8m6SVEAO17BBCka13u85/87Bj+LePP7Y3zHA3Mpg="; }; - patches = [ lixMdbookPatch ]; + patches = [ + lixMdbookPatch + lixLowdown30Patch + ]; }; }; @@ -283,14 +295,14 @@ lib.makeExtensible ( attrName = "git"; lix-args = rec { - version = "2.96.0-pre-20260317_${builtins.substring 0 12 src.rev}"; + version = "2.96.0-pre-20260318_${builtins.substring 0 12 src.rev}"; src = fetchFromGitea { domain = "git.lix.systems"; owner = "lix-project"; repo = "lix"; - rev = "96db7c79cf2a9a06725360b0d12e5de583bef07d"; - hash = "sha256-Ixwk38HArs7MZXxdWRkSZFzUhUdlCro+8+M/sO+fE/Y="; + rev = "8294cd534b2f01ee967b28aa73fcab1535d62b3d"; + hash = "sha256-BFijbNDCrfzpDdW+gNauP25QsTvEZ39dygWEI/RYeyY="; }; cargoDeps = rustPlatform.fetchCargoVendor { diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 5783c99771b6..bbb45c9d419d 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -134,6 +134,21 @@ let patches_common = lib.optional ( stdenv.system == "aarch64-darwin" ) ./patches/skip-flaky-darwin-tests.patch; + + # Lowdown 3.0 compatibility patch for nix 2.31–2.33; fetched from the + # upstream backport (same diff on every maintenance branch after + # fetchpatch strips metadata). Nix 2.34.4+ and the git snapshot + # already include the fix in their tagged source. + lowdown30Patch = pkgs.fetchpatch { + name = "nix-lowdown-3.0-support.patch"; + url = "https://github.com/NixOS/nix/commit/472c35c561bd9e8db1465e0677f1efe2cb88c568.patch"; + hash = "sha256-ZCQgI/euBN8t9rgdCsGRgrcEWG3T5MUc+bQc4tIcHuI="; + }; + + # Lowdown 3.0 compatibility patch for nix 2.28 and 2.30, which have a + # different markdown.cc layout (no LOWDOWN_TERM_NORELLINK branch) and + # never received an upstream backport. + lowdown30PatchOld = ./patches/lowdown-3.0-compat-2.28-2.30.patch; in lib.makeExtensible ( self: @@ -149,6 +164,7 @@ lib.makeExtensible ( url = "https://github.com/NixOS/nix/commit/5a64138e862fe364e751c5c286e8db8c466aaee7.patch?full_index=1"; hash = "sha256-vFv/D08x9urtoIE9wiC7Lln4Eq3sgNBwU7TBE1iyrfI="; }) + lowdown30PatchOld ]; }; @@ -172,22 +188,27 @@ lib.makeExtensible ( url = "https://github.com/NixOS/nix/commit/5cbd7856de0a9c13351f98e32a1e26d0854d87fd.patch?full_index=1"; hash = "sha256-r2ZF1zBZDKMvyX6X4VsaTMrg0zdjn59Jf6Hqg56r29E="; }) + lowdown30PatchOld ] ); nix_2_30 = addTests "nix_2_30" self.nixComponents_2_30.nix-everything; - nixComponents_2_31 = nixDependencies.callPackage ./modular/packages.nix rec { - version = "2.31.3"; - inherit teams; - otherSplices = generateSplicesForNixComponents "nixComponents_2_31"; - src = fetchFromGitHub { - owner = "NixOS"; - repo = "nix"; - tag = version; - hash = "sha256-oe0YWe8f+pwQH4aYD2XXLW5iEHyXNUddurqJ5CUVCIk="; - }; - }; + nixComponents_2_31 = + (nixDependencies.callPackage ./modular/packages.nix rec { + version = "2.31.3"; + inherit teams; + otherSplices = generateSplicesForNixComponents "nixComponents_2_31"; + src = fetchFromGitHub { + owner = "NixOS"; + repo = "nix"; + tag = version; + hash = "sha256-oe0YWe8f+pwQH4aYD2XXLW5iEHyXNUddurqJ5CUVCIk="; + }; + }).appendPatches + [ + lowdown30Patch + ]; nix_2_31 = addTests "nix_2_31" self.nixComponents_2_31.nix-everything; diff --git a/pkgs/tools/package-management/nix/patches/lowdown-3.0-compat-2.28-2.30.patch b/pkgs/tools/package-management/nix/patches/lowdown-3.0-compat-2.28-2.30.patch new file mode 100644 index 000000000000..dd527f7f1cd6 --- /dev/null +++ b/pkgs/tools/package-management/nix/patches/lowdown-3.0-compat-2.28-2.30.patch @@ -0,0 +1,27 @@ +--- a/src/libcmd/markdown.cc ++++ b/src/libcmd/markdown.cc +@@ -37,7 +37,13 @@ + .vmargin = 0, + # endif + .feat = LOWDOWN_COMMONMARK | LOWDOWN_FENCED | LOWDOWN_DEFLIST | LOWDOWN_TABLES, +- .oflags = LOWDOWN_TERM_NOLINK, ++ .oflags = ++# if HAVE_LOWDOWN_3 ++ LOWDOWN_NOLINK ++# else ++ LOWDOWN_TERM_NOLINK ++# endif ++ , + }; + + auto doc = lowdown_doc_new(&opts); +--- a/src/libcmd/meson.build ++++ b/src/libcmd/meson.build +@@ -36,6 +36,7 @@ + configdata.set('HAVE_LOWDOWN', lowdown.found().to_int()) + # The API changed slightly around terminal initialization. + configdata.set('HAVE_LOWDOWN_1_4', lowdown.version().version_compare('>= 1.4.0').to_int()) ++configdata.set('HAVE_LOWDOWN_3', lowdown.version().version_compare('>= 3.0.0').to_int()) + + readline_flavor = get_option('readline-flavor') + if readline_flavor == 'editline' diff --git a/pkgs/tools/security/bundler-audit/default.nix b/pkgs/tools/security/bundler-audit/default.nix index 8db9959c2ad3..b56b9046849c 100644 --- a/pkgs/tools/security/bundler-audit/default.nix +++ b/pkgs/tools/security/bundler-audit/default.nix @@ -6,7 +6,6 @@ }: bundlerEnv rec { - name = "${pname}-${version}"; pname = "bundler-audit"; version = (import ./gemset.nix).bundler-audit.version; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 50a2d4c065a6..682fb4987457 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2887,7 +2887,7 @@ with pkgs; leanblueprint = with python3Packages; toPythonApplication leanblueprint; - leanPackages = callPackage ../top-level/lean-packages.nix { }; + leanPackages = recurseIntoAttrs (callPackage ../top-level/lean-packages.nix { }); inherit (callPackage ../development/tools/lerna { }) lerna_6 diff --git a/pkgs/top-level/lean-packages.nix b/pkgs/top-level/lean-packages.nix index 64314343a910..7bdc715217cb 100644 --- a/pkgs/top-level/lean-packages.nix +++ b/pkgs/top-level/lean-packages.nix @@ -1,45 +1,24 @@ -# Lean 4 package set. +# Lean 4 package set with its own toolchain (independent of pkgs.lean4). # -# All packages are built against a single Lean toolchain version. -# Dependencies between packages use `leanDeps` which propagates -# .olean files via LEAN_PATH (through setup hooks), similar to how -# Haskell propagates package.conf.d entries. -# -# Overriding lean4 propagates to all packages in the set: +# Override the toolchain for the entire set: # leanPackages.overrideScope (self: super: { lean4 = lean4-custom; }) -# -# Usage: -# leanPackages.batteries -# leanPackages.mathlib -# leanPackages.callPackage ./my-package.nix { } { lib, newScope, - lean4, }: lib.makeScope newScope (self: { - inherit lean4; + lean4 = self.callPackage ../development/lean-modules/lean4 { }; - # Resolve via self.callPackage so overriding lean4 in the scope - # propagates to the builder (same pattern as coqPackages). buildLakePackage = self.callPackage ../build-support/lake { }; batteries = self.callPackage ../development/lean-modules/batteries { }; - aesop = self.callPackage ../development/lean-modules/aesop { }; - Qq = self.callPackage ../development/lean-modules/Qq { }; - proofwidgets = self.callPackage ../development/lean-modules/proofwidgets { }; - plausible = self.callPackage ../development/lean-modules/plausible { }; - LeanSearchClient = self.callPackage ../development/lean-modules/LeanSearchClient { }; - Cli = self.callPackage ../development/lean-modules/Cli { }; - importGraph = self.callPackage ../development/lean-modules/importGraph { }; - mathlib = self.callPackage ../development/lean-modules/mathlib { }; }) diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 68824bbc5eb8..a254981f65bd 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -92,38 +92,6 @@ in # New vendor kernels should go to nixos-hardware instead. # e.g. https://github.com/NixOS/nixos-hardware/tree/master/microsoft/surface/kernel - linux_rpi1 = callPackage ../os-specific/linux/kernel/linux-rpi.nix { - kernelPatches = with kernelPatches; [ - bridge_stp_helper - request_key_helper - ]; - rpiVersion = 1; - }; - - linux_rpi2 = callPackage ../os-specific/linux/kernel/linux-rpi.nix { - kernelPatches = with kernelPatches; [ - bridge_stp_helper - request_key_helper - ]; - rpiVersion = 2; - }; - - linux_rpi3 = callPackage ../os-specific/linux/kernel/linux-rpi.nix { - kernelPatches = with kernelPatches; [ - bridge_stp_helper - request_key_helper - ]; - rpiVersion = 3; - }; - - linux_rpi4 = callPackage ../os-specific/linux/kernel/linux-rpi.nix { - kernelPatches = with kernelPatches; [ - bridge_stp_helper - request_key_helper - ]; - rpiVersion = 4; - }; - linux_5_10 = callPackage ../os-specific/linux/kernel/mainline.nix { branch = "5.10"; kernelPatches = [ @@ -300,6 +268,56 @@ in linux_rt_5_4 = throw "linux_rt 5.4 has been removed because it will reach its end of life within 25.11"; linux_ham = throw "linux_ham has been removed in favour of the standard kernel packages"; + + # Remove warning added on 2026-04-01 + linux_rpi1 = + lib.warnOnInstantiate + "linux-rpi series will be removed in a future release. Please change to use nixos-hardware." + ( + callPackage ../os-specific/linux/kernel/linux-rpi.nix { + kernelPatches = with kernelPatches; [ + bridge_stp_helper + request_key_helper + ]; + rpiVersion = 1; + } + ); + linux_rpi2 = + lib.warnOnInstantiate + "linux-rpi series will be removed in a future release. Please change to use nixos-hardware." + ( + callPackage ../os-specific/linux/kernel/linux-rpi.nix { + kernelPatches = with kernelPatches; [ + bridge_stp_helper + request_key_helper + ]; + rpiVersion = 2; + } + ); + linux_rpi3 = + lib.warnOnInstantiate + "linux-rpi series will be removed in a future release. Please change to use nixos-hardware." + ( + callPackage ../os-specific/linux/kernel/linux-rpi.nix { + kernelPatches = with kernelPatches; [ + bridge_stp_helper + request_key_helper + ]; + rpiVersion = 3; + } + ); + linux_rpi4 = + lib.warnOnInstantiate + "linux-rpi series will be removed in a future release. Please change to use nixos-hardware." + ( + callPackage ../os-specific/linux/kernel/linux-rpi.nix { + kernelPatches = with kernelPatches; [ + bridge_stp_helper + request_key_helper + ]; + rpiVersion = 4; + } + ); } ) );