Merge remote-tracking branch 'origin/master' into staging-next

This commit is contained in:
K900 2025-07-06 14:55:19 +03:00
commit 4e59c97081
21 changed files with 333 additions and 99 deletions

View File

@ -275,6 +275,62 @@ added using the parameter `extraPythonPackages`. For example, you could add
In that case, `numpy` is chosen from the generic `python3Packages`. In that case, `numpy` is chosen from the generic `python3Packages`.
## Overriding a test {#sec-override-nixos-test}
The NixOS test framework returns tests with multiple overriding methods.
`overrideTestDerivation` *function*
: Like applying `overrideAttrs` on the [test](#test-opt-test) derivation.
This is a convenience for `extend` with an override on the [`rawTestDerivationArg`](#test-opt-rawTestDerivationArg) option.
*function*
: An extension function, e.g. `finalAttrs: prevAttrs: { /* … */ }`, the result of which is passed to [`mkDerivation`](https://nixos.org/manual/nixpkgs/stable/#sec-using-stdenv).
Just as with `overrideAttrs`, an abbreviated form can be used, e.g. `prevAttrs: { /* … */ }` or even `{ /* … */ }`.
See [`lib.extends`](https://nixos.org/manual/nixpkgs/stable/#function-library-lib.fixedPoints.extends).
`extendNixOS { module = ` *module* `; specialArgs = ` *specialArgs* `; }`
: Evaluates the test with additional NixOS modules and/or arguments.
`module`
: A NixOS module to add to all the nodes in the test. Sets test option [`extraBaseModules`](#test-opt-extraBaseModules).
`specialArgs`
: An attribute set of arguments to pass to all NixOS modules. These override the existing arguments, as well as any `_module.args.<name>` that the modules may define. Sets test option [`node.specialArgs`](#test-opt-node.specialArgs).
This is a convenience function for `extend` that overrides the aforementioned test options.
:::{.example #ex-nixos-test-extendNixOS}
# Using extendNixOS in `passthru.tests` to make `(openssh.tests.overrideAttrs f).tests.nixos` coherent
```nix
mkDerivation (finalAttrs: {
# …
passthru = {
tests = {
nixos = nixosTests.openssh.extendNixOS {
module = {
services.openssh.package = finalAttrs.finalPackage;
};
};
};
};
})
```
:::
`extend { modules = ` *modules* `; specialArgs = ` *specialArgs* `; }`
: Adds new `nixosTest` modules and/or module arguments to the test, which are evaluated together with the existing modules and [built-in options](#sec-test-options-reference).
If you're only looking to extend the _NixOS_ configurations of the test, and not something else about the test, you may use the `extendNixOS` convenience function instead.
`modules`
: A list of modules to add to the test. These are added to the existing modules and then [evaluated](https://nixos.org/manual/nixpkgs/stable/index.html#module-system-lib-evalModules) together.
`specialArgs`
: An attribute of arguments to pass to the test. These override the existing arguments, as well as any `_module.args.<name>` that the modules may define. See [`evalModules`/`specialArgs`](https://nixos.org/manual/nixpkgs/stable/#module-system-lib-evalModules-param-specialArgs).
## Test Options Reference {#sec-test-options-reference} ## Test Options Reference {#sec-test-options-reference}
The following options can be used when writing tests. The following options can be used when writing tests.

View File

@ -1,4 +1,13 @@
{ {
"sec-override-nixos-test": [
"index.html#sec-override-nixos-test"
],
"test-opt-rawTestDerivationArg": [
"index.html#test-opt-rawTestDerivationArg"
],
"ex-nixos-test-extendNixOS": [
"index.html#ex-nixos-test-extendNixOS"
],
"book-nixos-manual": [ "book-nixos-manual": [
"index.html#book-nixos-manual" "index.html#book-nixos-manual"
], ],

View File

@ -1,6 +1,19 @@
{ config, lib, ... }: {
config,
extendModules,
lib,
...
}:
let let
inherit (lib) mkOption types; inherit (lib) mkOption types;
unsafeGetAttrPosStringOr =
default: name: value:
let
p = builtins.unsafeGetAttrPos name value;
in
if p == null then default else p.file + ":" + toString p.line + ":" + toString p.column;
in in
{ {
options = { options = {
@ -9,4 +22,21 @@ in
default = config; default = config;
}; };
}; };
config = {
# Docs: nixos/doc/manual/development/writing-nixos-tests.section.md
/**
See https://nixos.org/manual/nixos/unstable#sec-override-nixos-test
*/
passthru.extend =
args@{
modules,
specialArgs ? { },
}:
(extendModules {
inherit specialArgs;
modules = map (lib.setDefaultModuleLocation (
unsafeGetAttrPosStringOr "<test.extend module>" "modules" args
)) modules;
}).config.test;
};
} }

View File

@ -3,6 +3,7 @@ testModuleArgs@{
lib, lib,
hostPkgs, hostPkgs,
nodes, nodes,
options,
... ...
}: }:
@ -73,6 +74,9 @@ let
]; ];
}; };
# TODO (lib): Dedup with run.nix, add to lib/options.nix
mkOneUp = opt: f: lib.mkOverride (opt.highestPrio - 1) (f opt.value);
in in
{ {
@ -233,5 +237,23 @@ in
)) ))
]; ];
# Docs: nixos/doc/manual/development/writing-nixos-tests.section.md
/**
See https://nixos.org/manual/nixos/unstable#sec-override-nixos-test
*/
passthru.extendNixOS =
{
module,
specialArgs ? { },
}:
config.passthru.extend {
modules = [
{
extraBaseModules = module;
node.specialArgs = mkOneUp options.node.specialArgs (_: specialArgs);
}
];
};
}; };
} }

View File

@ -2,10 +2,31 @@
config, config,
hostPkgs, hostPkgs,
lib, lib,
options,
... ...
}: }:
let let
inherit (lib) types mkOption; inherit (lib) types mkOption;
# TODO (lib): Also use lib equivalent in nodes.nix
/**
Create a module system definition that overrides an existing option from a different module evaluation.
Type: Option a -> (a -> a) -> Definition a
*/
mkOneUp =
/**
Option from an existing module evaluation, e.g.
- `(lib.evalModules ...).options.x` when invoking `evalModules` again,
- or `{ options, ... }:` when invoking `extendModules`.
*/
opt:
/**
Function from the old value to the new definition, which will be wrapped with `mkOverride`.
*/
f:
lib.mkOverride (opt.highestPrio - 1) (f opt.value);
in in
{ {
options = { options = {
@ -30,6 +51,13 @@ in
internal = true; internal = true;
}; };
rawTestDerivationArg = mkOption {
type = types.functionTo types.raw;
description = ''
Argument passed to `mkDerivation` to create the `rawTestDerivation`.
'';
};
test = mkOption { test = mkOption {
type = types.package; type = types.package;
# TODO: can the interactive driver be configured to access the network? # TODO: can the interactive driver be configured to access the network?
@ -43,10 +71,12 @@ in
}; };
config = { config = {
rawTestDerivation = rawTestDerivation = hostPkgs.stdenv.mkDerivation config.rawTestDerivationArg;
rawTestDerivationArg =
finalAttrs:
assert lib.assertMsg (!config.sshBackdoor.enable) assert lib.assertMsg (!config.sshBackdoor.enable)
"The SSH backdoor is currently not supported for non-interactive testing! Please make sure to only set `interactive.sshBackdoor.enable = true;`!"; "The SSH backdoor is currently not supported for non-interactive testing! Please make sure to only set `interactive.sshBackdoor.enable = true;`!";
hostPkgs.stdenv.mkDerivation { {
name = "vm-test-run-${config.name}"; name = "vm-test-run-${config.name}";
requiredSystemFeatures = requiredSystemFeatures =
@ -75,5 +105,19 @@ in
# useful for inspection (debugging / exploration) # useful for inspection (debugging / exploration)
passthru.config = config; passthru.config = config;
# Docs: nixos/doc/manual/development/writing-nixos-tests.section.md
/**
See https://nixos.org/manual/nixos/unstable#sec-override-nixos-test
*/
passthru.overrideTestDerivation =
f:
config.passthru.extend {
modules = [
{
rawTestDerivationArg = mkOneUp options.rawTestDerivationArg (lib.extends (lib.toExtension f));
}
];
};
}; };
} }

View File

@ -161,7 +161,7 @@ in
autoMount = lib.mkOption { autoMount = lib.mkOption {
type = lib.types.bool; type = lib.types.bool;
default = false; default = false;
description = "Whether Kubo should try to mount /ipfs and /ipns at startup."; description = "Whether Kubo should try to mount /ipfs, /ipns and /mfs at startup.";
}; };
autoMigrate = lib.mkOption { autoMigrate = lib.mkOption {
@ -236,6 +236,12 @@ in
default = "/ipns"; default = "/ipns";
description = "Where to mount the IPNS namespace to"; description = "Where to mount the IPNS namespace to";
}; };
Mounts.MFS = lib.mkOption {
type = lib.types.str;
default = "/mfs";
description = "Where to mount the MFS namespace to";
};
}; };
}; };
description = '' description = ''
@ -356,6 +362,7 @@ in
${cfg.dataDir}.d = defaultConfig; ${cfg.dataDir}.d = defaultConfig;
${cfg.settings.Mounts.IPFS}.d = lib.mkIf (cfg.autoMount) defaultConfig; ${cfg.settings.Mounts.IPFS}.d = lib.mkIf (cfg.autoMount) defaultConfig;
${cfg.settings.Mounts.IPNS}.d = lib.mkIf (cfg.autoMount) defaultConfig; ${cfg.settings.Mounts.IPNS}.d = lib.mkIf (cfg.autoMount) defaultConfig;
${cfg.settings.Mounts.MFS}.d = lib.mkIf (cfg.autoMount) defaultConfig;
}; };
# The hardened systemd unit breaks the fuse-mount function according to documentation in the unit file itself # The hardened systemd unit breaks the fuse-mount function according to documentation in the unit file itself
@ -401,8 +408,8 @@ in
ipfs --offline config replace - ipfs --offline config replace -
''; '';
postStop = lib.mkIf cfg.autoMount '' postStop = lib.mkIf cfg.autoMount ''
# After an unclean shutdown the fuse mounts at cfg.settings.Mounts.IPFS and cfg.settings.Mounts.IPNS are locked # After an unclean shutdown the fuse mounts at cfg.settings.Mounts.IPFS, cfg.settings.Mounts.IPNS and cfg.settings.Mounts.MFS are locked
umount --quiet '${cfg.settings.Mounts.IPFS}' '${cfg.settings.Mounts.IPNS}' || true umount --quiet '${cfg.settings.Mounts.IPFS}' '${cfg.settings.Mounts.IPNS}' '${cfg.settings.Mounts.MFS}' || true
''; '';
serviceConfig = { serviceConfig = {
ExecStart = [ ExecStart = [

View File

@ -27,8 +27,12 @@
testScript = '' testScript = ''
start_all() start_all()
with subtest("FUSE mountpoint"): with subtest("Create a file for testing"):
machine.fail("echo a | su bob -l -c 'ipfs add --quieter'") machine.succeed("echo 'fnord3' > /tmp/test.txt")
with subtest("/ipfs/ FUSE mountpoint"):
machine.fail("su bob -l -c 'ipfs add --quieter' < /tmp/test.txt")
# The FUSE mount functionality is broken as of v0.13.0. This is still the case with v0.29.0. # The FUSE mount functionality is broken as of v0.13.0. This is still the case with v0.29.0.
# See https://github.com/ipfs/kubo/issues/9044. # See https://github.com/ipfs/kubo/issues/9044.
# Workaround: using CID Version 1 avoids that. # Workaround: using CID Version 1 avoids that.
@ -36,13 +40,42 @@
"echo fnord3 | su alice -l -c 'ipfs add --quieter --cid-version=1'" "echo fnord3 | su alice -l -c 'ipfs add --quieter --cid-version=1'"
).strip() ).strip()
machine.succeed(f"cat /ipfs/{ipfs_hash} | grep fnord3") machine.succeed(f"diff /tmp/test.txt /ipfs/{ipfs_hash}")
with subtest("Unmounting of /ipns and /ipfs"):
with subtest("/mfs/ FUSE mountpoint"):
with subtest("Write the test file in three different ways"):
machine.succeed("cp /tmp/test.txt /mfs/test-1.txt")
machine.succeed("su alice -c 'ipfs files write --create /test-2.txt < /tmp/test.txt'")
machine.succeed(f"ipfs files cp /ipfs/{ipfs_hash} /test-3.txt")
with subtest("Show the files (for debugging)"):
# Different hashes for the different ways of adding the file to the MFS probably come from different linking structures of the merkle tree. Copying the file to /mfs with `cp` is even non-deterministic.
machine.succeed("ipfs files ls --long >&2")
machine.succeed("ls -l /mfs >&2")
with subtest("Check that everyone has permission to read the file (because of Mounts.FuseAllowOther)"):
machine.succeed("su alice -c 'cat /mfs/test-1.txt' | grep fnord3")
machine.succeed("su bob -c 'cat /mfs/test-1.txt' | grep fnord3")
with subtest("Check the file contents"):
machine.succeed("diff /tmp/test.txt /mfs/test-1.txt")
machine.succeed("diff /tmp/test.txt /mfs/test-2.txt")
machine.succeed("diff /tmp/test.txt /mfs/test-3.txt")
with subtest("Check the CID extended attribute"):
output = machine.succeed(
"getfattr --only-values --name=ipfs_cid /mfs/test-3.txt"
).strip()
assert ipfs_hash == output, f"Expected {ipfs_hash} but got {output}"
with subtest("Unmounting of /ipns, /ipfs and /mfs"):
# Force Kubo to crash and wait for it to restart # Force Kubo to crash and wait for it to restart
machine.systemctl("kill --signal=SIGKILL ipfs.service") machine.systemctl("kill --signal=SIGKILL ipfs.service")
machine.wait_for_unit("ipfs.service", timeout = 30) machine.wait_for_unit("ipfs.service", timeout = 30)
machine.succeed(f"cat /ipfs/{ipfs_hash} | grep fnord3") machine.succeed(f"diff /tmp/test.txt /ipfs/{ipfs_hash}")
machine.succeed("diff /tmp/test.txt /mfs/test-3.txt")
''; '';
} }

View File

@ -30,6 +30,24 @@ let
__structuredAttrs = enable; __structuredAttrs = enable;
}); });
}); });
runNixOSTest-example = pkgs-with-overlay.testers.runNixOSTest (
{ lib, ... }:
{
name = "runNixOSTest-test";
nodes.machine =
{ pkgs, ... }:
{
system.nixos = dummyVersioning;
environment.systemPackages = [
pkgs.proof-of-overlay-hello
pkgs.figlet
];
};
testScript = ''
machine.succeed("hello | figlet >/dev/console")
'';
}
);
in in
lib.recurseIntoAttrs { lib.recurseIntoAttrs {
@ -66,24 +84,27 @@ lib.recurseIntoAttrs {
}; };
}; };
runNixOSTest-example = pkgs-with-overlay.testers.runNixOSTest ( inherit runNixOSTest-example;
{ lib, ... }:
{ runNixOSTest-extendNixOS =
name = "runNixOSTest-test"; let
nodes.machine = t = runNixOSTest-example.extendNixOS {
{ pkgs, ... }: module =
{ { hi, lib, ... }:
system.nixos = dummyVersioning; {
environment.systemPackages = [ config = {
pkgs.proof-of-overlay-hello assertions = [ { assertion = hi; } ];
pkgs.figlet };
]; options = {
}; itsProofYay = lib.mkOption { };
testScript = '' };
machine.succeed("hello | figlet >/dev/console") };
''; specialArgs.hi = true;
} };
); in
assert lib.isDerivation t;
assert t.nodes.machine ? itsProofYay;
t;
# Check that the wiring of nixosTest is correct. # Check that the wiring of nixosTest is correct.
# Correct operation of the NixOS test driver should be asserted elsewhere. # Correct operation of the NixOS test driver should be asserted elsewhere.

View File

@ -23,7 +23,6 @@
pkg-config, pkg-config,
python3Packages, python3Packages,
spaceNavSupport ? stdenv.hostPlatform.isLinux, spaceNavSupport ? stdenv.hostPlatform.isLinux,
ifcSupport ? false,
stdenv, stdenv,
swig, swig,
vtk, vtk,
@ -35,27 +34,23 @@
nix-update-script, nix-update-script,
}: }:
let let
pythonDeps = pythonDeps = with python3Packages; [
with python3Packages; boost
[ gitpython # for addon manager
boost ifcopenshell
gitpython # for addon manager matplotlib
matplotlib opencamlib
opencamlib pivy
pivy ply # for openSCAD file support
ply # for openSCAD file support py-slvs
py-slvs pybind11
pybind11 pycollada
pycollada pyside6
pyside6 python
python pyyaml # (at least for) PyrateWorkbench
pyyaml # (at least for) PyrateWorkbench scipy
scipy shiboken6
shiboken6 ];
]
++ lib.optionals ifcSupport [
ifcopenshell
];
freecad-utils = callPackage ./freecad-utils.nix { }; freecad-utils = callPackage ./freecad-utils.nix { };
in in

View File

@ -1,9 +1,7 @@
{ {
callPackage, callPackage,
freecad,
}: }:
{ {
python-path = callPackage ./python-path.nix { }; python-path = callPackage ./python-path.nix { };
modules = callPackage ./modules.nix { }; modules = callPackage ./modules.nix { };
withIfcSupport = freecad.override { ifcSupport = true; };
} }

View File

@ -8,7 +8,7 @@
buildGoModule rec { buildGoModule rec {
pname = "kubo"; pname = "kubo";
version = "0.34.1"; # When updating, also check if the repo version changed and adjust repoVersion below version = "0.35.0"; # When updating, also check if the repo version changed and adjust repoVersion below
rev = "v${version}"; rev = "v${version}";
passthru.repoVersion = "16"; # Also update kubo-migrator when changing the repo version passthru.repoVersion = "16"; # Also update kubo-migrator when changing the repo version
@ -16,7 +16,7 @@ buildGoModule rec {
# Kubo makes changes to its source tarball that don't match the git source. # Kubo makes changes to its source tarball that don't match the git source.
src = fetchurl { src = fetchurl {
url = "https://github.com/ipfs/kubo/releases/download/${rev}/kubo-source.tar.gz"; url = "https://github.com/ipfs/kubo/releases/download/${rev}/kubo-source.tar.gz";
hash = "sha256-wrAnmPfls7LFO3gQBISSmn4ucuUVmzvYEoz+eVc/A5M="; hash = "sha256-OubXaa2JWbEaakDV6pExm5PkiZ5XPd9uG+S4KwWb0xQ=";
}; };
# tarball contains multiple files/directories # tarball contains multiple files/directories

View File

@ -15,13 +15,13 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "renovate"; pname = "renovate";
version = "41.16.0"; version = "41.21.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "renovatebot"; owner = "renovatebot";
repo = "renovate"; repo = "renovate";
tag = finalAttrs.version; tag = finalAttrs.version;
hash = "sha256-hMcGK89YIqYCA201f+fxorHA3sseDL3nZTjH/90/JGQ="; hash = "sha256-np21ghEbfaM7Z4ETmrAWUjrauQOf5FW+krl156UB2Ek=";
}; };
postPatch = '' postPatch = ''
@ -39,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: {
pnpmDeps = pnpm_10.fetchDeps { pnpmDeps = pnpm_10.fetchDeps {
inherit (finalAttrs) pname version src; inherit (finalAttrs) pname version src;
hash = "sha256-VF2fq6o4O5Ua+98PJ1d+vj5W8TMYL4ks3ekf27eQmIY="; hash = "sha256-XOlFJFFyzbx8Bg92HXhVFFCI51j2GUK7+LJKfqVOQyU=";
}; };
env.COREPACK_ENABLE_STRICT = 0; env.COREPACK_ENABLE_STRICT = 0;

View File

@ -10,7 +10,7 @@
stdenvNoCC.mkDerivation (finalAttrs: { stdenvNoCC.mkDerivation (finalAttrs: {
pname = "tideways-daemon"; pname = "tideways-daemon";
version = "1.9.40"; version = "1.9.44";
src = src =
finalAttrs.passthru.sources.${stdenvNoCC.hostPlatform.system} finalAttrs.passthru.sources.${stdenvNoCC.hostPlatform.system}
@ -28,15 +28,15 @@ stdenvNoCC.mkDerivation (finalAttrs: {
sources = { sources = {
"x86_64-linux" = fetchurl { "x86_64-linux" = fetchurl {
url = "https://tideways.s3.amazonaws.com/daemon/${finalAttrs.version}/tideways-daemon_linux_amd64-${finalAttrs.version}.tar.gz"; url = "https://tideways.s3.amazonaws.com/daemon/${finalAttrs.version}/tideways-daemon_linux_amd64-${finalAttrs.version}.tar.gz";
hash = "sha256-6U6Vq908tJmR4JzZlbK/qjlfCl/iWrCIOJNvUh0Xvag="; hash = "sha256-JzsSyUqKuH4msdSqN+rFdfrnNvlkFFFmspfpYLsiRZc=";
}; };
"aarch64-linux" = fetchurl { "aarch64-linux" = fetchurl {
url = "https://tideways.s3.amazonaws.com/daemon/${finalAttrs.version}/tideways-daemon_linux_aarch64-${finalAttrs.version}.tar.gz"; url = "https://tideways.s3.amazonaws.com/daemon/${finalAttrs.version}/tideways-daemon_linux_aarch64-${finalAttrs.version}.tar.gz";
hash = "sha256-2Yq2HvQoBPPDvEyZPjwyTjjc/bb4+zOrwknqHUnZsjc="; hash = "sha256-1nE61XHqnycMgjvjKIZnbgVSak0HYOIUHgF67RjcJi8=";
}; };
"aarch64-darwin" = fetchurl { "aarch64-darwin" = fetchurl {
url = "https://tideways.s3.amazonaws.com/daemon/${finalAttrs.version}/tideways-daemon_macos_arm64-${finalAttrs.version}.tar.gz"; url = "https://tideways.s3.amazonaws.com/daemon/${finalAttrs.version}/tideways-daemon_macos_arm64-${finalAttrs.version}.tar.gz";
hash = "sha256-ab7ZAUYH4Em6KuE/VlVLItf3N0yMvIRuJnf7vOGDGsY="; hash = "sha256-4KwUsFK3G73hGiVGqF1sAOv7gEjqJXSAj99wLyHE+qM=";
}; };
}; };
updateScript = "${ updateScript = "${

View File

@ -15,7 +15,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "app-model"; pname = "app-model";
version = "0.3.1"; version = "0.4.0";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.9"; disabled = pythonOlder "3.9";
@ -24,7 +24,7 @@ buildPythonPackage rec {
owner = "pyapp-kit"; owner = "pyapp-kit";
repo = "app-model"; repo = "app-model";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-bIqcbKjAj5TMZD9mZ+7G4q+sR0aRqn6E4hf99srgRIE="; hash = "sha256-T7aUwdne1rUzhVRotlxDvEBm3mi/frUQziZdLo53Lsg=";
}; };
build-system = [ build-system = [

View File

@ -27,11 +27,9 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "limits"; pname = "limits";
version = "5.2.0"; version = "5.4.0";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "alisaifee"; owner = "alisaifee";
repo = "limits"; repo = "limits";
@ -39,10 +37,10 @@ buildPythonPackage rec {
# Upstream uses versioneer, which relies on git attributes substitution. # Upstream uses versioneer, which relies on git attributes substitution.
# This leads to non-reproducible archives on github. Remove the substituted # This leads to non-reproducible archives on github. Remove the substituted
# file here, and recreate it later based on our version info. # file here, and recreate it later based on our version info.
hash = "sha256-EHLqkd5Muazr52/oYaLklFVvF+AzJWGbFaaIG+T0ulE=";
postFetch = '' postFetch = ''
rm "$out/limits/_version.py" rm "$out/limits/_version.py"
''; '';
hash = "sha256-0D44XaSZtebMnn9mqXbaE7FB7usdu/eZ/4UE3Ye0oyA=";
}; };
patches = [ patches = [
@ -102,15 +100,19 @@ buildPythonPackage rec {
pytestFlagsArray = [ "--benchmark-disable" ]; pytestFlagsArray = [ "--benchmark-disable" ];
disabledTests = [ "test_moving_window_memcached" ]; disabledTests = [
"test_moving_window_memcached"
# Flaky: compares time to magic value
"test_sliding_window_counter_previous_window"
];
pythonImportsCheck = [ "limits" ]; pythonImportsCheck = [ "limits" ];
meta = with lib; { meta = {
description = "Rate limiting using various strategies and storage backends such as redis & memcached"; description = "Rate limiting using various strategies and storage backends such as redis & memcached";
homepage = "https://github.com/alisaifee/limits"; homepage = "https://github.com/alisaifee/limits";
changelog = "https://github.com/alisaifee/limits/releases/tag/${src.tag}"; changelog = "https://github.com/alisaifee/limits/releases/tag/${src.tag}";
license = licenses.mit; license = lib.licenses.mit;
maintainers = [ ]; maintainers = with lib.maintainers; [ sarahec ];
}; };
} }

View File

@ -45,14 +45,14 @@
mkDerivationWith buildPythonPackage rec { mkDerivationWith buildPythonPackage rec {
pname = "napari"; pname = "napari";
version = "0.6.1"; version = "0.6.2";
pyproject = true; pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "napari"; owner = "napari";
repo = "napari"; repo = "napari";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-qgyhoxXROlm+DASJV2QOA1IqpHxPhsIEv+TGU2mhiuc="; hash = "sha256-p6deNHnlvgZXV3Ym3OADC44j5bOkMDjlmM2N3yE5GxE=";
}; };
postPatch = '' postPatch = ''

View File

@ -1,5 +1,6 @@
{ {
lib, lib,
stdenv,
fetchFromGitHub, fetchFromGitHub,
buildPythonPackage, buildPythonPackage,
pythonOlder, pythonOlder,
@ -32,8 +33,6 @@ buildPythonPackage rec {
version = "6.1.0"; version = "6.1.0";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.7";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "valkey-io"; owner = "valkey-io";
repo = "valkey-py"; repo = "valkey-py";
@ -78,19 +77,32 @@ buildPythonPackage rec {
pytestFlagsArray = [ "-m 'not onlycluster and not ssl'" ]; pytestFlagsArray = [ "-m 'not onlycluster and not ssl'" ];
disabledTests = [ disabledTests =
# valkey.sentinel.MasterNotFoundError: No master found for 'valkey-py-test' [
"test_get_from_cache" # valkey.sentinel.MasterNotFoundError: No master found for 'valkey-py-test'
"test_cache_decode_response" "test_get_from_cache"
# Expects another valkey instance on port 6380 *shrug* "test_cache_decode_response"
"test_psync" # Expects another valkey instance on port 6380 *shrug*
"test_psync"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# OSError: AF_UNIX path too long
"test_uds_connect"
"test_network_connection_failure"
];
disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [
# AttributeError: Can't get local object 'TestMultiprocessing.test_valkey_client.<locals>.target'
"tests/test_multiprocessing.py"
]; ];
meta = with lib; { __darwinAllowLocalNetworking = true;
meta = {
description = "Python client for Redis key-value store"; description = "Python client for Redis key-value store";
homepage = "https://github.com/valkey-io/valkey-py"; homepage = "https://github.com/valkey-io/valkey-py";
changelog = "https://github.com/valkey-io/valkey-py/releases/tag/${src.tag}"; changelog = "https://github.com/valkey-io/valkey-py/releases/tag/${src.tag}";
license = with licenses; [ mit ]; license = lib.licenses.mit;
maintainers = with maintainers; [ hexa ]; maintainers = with lib.maintainers; [ hexa ];
}; };
} }

View File

@ -435,6 +435,13 @@ let
ATH10K_DFS_CERTIFIED = option yes; ATH10K_DFS_CERTIFIED = option yes;
B43_PHY_HT = option yes; B43_PHY_HT = option yes;
BCMA_HOST_PCI = option yes; BCMA_HOST_PCI = option yes;
# Enable "untested" hardware support for RTL8xxxU.
# There's a bunch of those still floating around,
# and given how old the hardware is, we're unlikely
# to kill any, so let's enable all known device IDs.
RTL8XXXU_UNTESTED = option yes;
RTW88 = module; RTW88 = module;
RTW88_8822BE = lib.mkMerge [ RTW88_8822BE = lib.mkMerge [
(whenOlder "5.8" yes) (whenOlder "5.8" yes)

View File

@ -1,11 +1,11 @@
{ {
"testing": { "testing": {
"version": "6.16-rc3", "version": "6.16-rc4",
"hash": "sha256:04inkd3aqpikjarxy3lxzw2v2f45mnfzlq82r8mdsm23lkn68glr" "hash": "sha256:1h66i51d8m4zwbrxh7xayvqsnkrzj5wipf7rm8szyqmf86isjkpi"
}, },
"6.1": { "6.1": {
"version": "6.1.142", "version": "6.1.143",
"hash": "sha256:1am31xw70sbxzdnvj70fx9l946nadcbrc7qk2yxxssy96nhnxlnw" "hash": "sha256:02ivq22hv42bcnssfpkkbqlhz1by9jrfrqlrz1wi0svysz2dlnz2"
}, },
"5.15": { "5.15": {
"version": "5.15.186", "version": "5.15.186",
@ -20,15 +20,15 @@
"hash": "sha256:1adn0pbk8y1zp1yrz83ch6h4wypm2qvbnx4xig3sls2nfgvmi0f4" "hash": "sha256:1adn0pbk8y1zp1yrz83ch6h4wypm2qvbnx4xig3sls2nfgvmi0f4"
}, },
"6.6": { "6.6": {
"version": "6.6.95", "version": "6.6.96",
"hash": "sha256:11gaczm68mqm72f3mfg656nkiqd9y66kf943hvwghln9lblhlr0q" "hash": "sha256:1p8v49w7z8w3wc68mbw46cz9xqrllc8cpa7nqlm2xnrssi1mir4y"
}, },
"6.12": { "6.12": {
"version": "6.12.35", "version": "6.12.36",
"hash": "sha256:0j577lqmzbzx45gxvxirx627pv6cbhq9slzb50rqqmyy3nqf1x05" "hash": "sha256:135s057ya63zw4v1jr9lzjdxk60ahr9v38hbv6nima755pnql5ja"
}, },
"6.15": { "6.15": {
"version": "6.15.4", "version": "6.15.5",
"hash": "sha256:05psir6p8x5a89d9kxkxlv5iifln67yf803xj5rqvx82nqkxdbqf" "hash": "sha256:1dc8qrwvvy34s5lgm43j295ipwaqm8wd8x4qchr14hqlkj9hg9rc"
} }
} }

View File

@ -3,7 +3,6 @@
stdenv, stdenv,
buildPackages, buildPackages,
runCommand, runCommand,
net-tools,
bc, bc,
bison, bison,
flex, flex,
@ -214,7 +213,6 @@ lib.makeOverridable (
flex flex
perl perl
bc bc
net-tools
openssl openssl
rsync rsync
gmp gmp

View File

@ -50,11 +50,11 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "tor"; pname = "tor";
version = "0.4.8.16"; version = "0.4.8.17";
src = fetchurl { src = fetchurl {
url = "https://dist.torproject.org/${pname}-${version}.tar.gz"; url = "https://dist.torproject.org/${pname}-${version}.tar.gz";
sha256 = "sha256-ZUDdN3oSD7jn0nUwqjt/9yoPpbT2cP4dZMmHwc/TkMs="; sha256 = "sha256-ebRyXh1LiHueaP0JsNIkN3fVzjzUceU4WDvPb52M21Y=";
}; };
outputs = [ outputs = [