Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2026-05-07 18:35:32 +00:00
committed by GitHub
82 changed files with 1960 additions and 1409 deletions
+43 -15
View File
@@ -2,12 +2,51 @@
config,
options,
lib,
pkgs,
...
}:
let
cfg = config.nixpkgs;
opt = options.nixpkgs;
isConfig = x: builtins.isAttrs x || lib.isFunction x;
optCall = f: x: if lib.isFunction f then f x else f;
mergeConfig =
lhs_: rhs_:
let
lhs = optCall lhs_ { inherit lib pkgs; };
rhs = optCall rhs_ { inherit lib pkgs; };
in
lib.recursiveUpdate lhs rhs
// lib.optionalAttrs (lhs ? allowUnfreePackages) {
allowUnfreePackages = lhs.allowUnfreePackages ++ (lib.attrByPath [ "allowUnfreePackages" ] [ ] rhs);
}
// lib.optionalAttrs (lhs ? packageOverrides) {
packageOverrides =
pkgs:
optCall lhs.packageOverrides pkgs // optCall (lib.attrByPath [ "packageOverrides" ] { } rhs) pkgs;
}
// lib.optionalAttrs (lhs ? perlPackageOverrides) {
perlPackageOverrides =
pkgs:
optCall lhs.perlPackageOverrides pkgs
// optCall (lib.attrByPath [ "perlPackageOverrides" ] { } rhs) pkgs;
};
configType = lib.mkOptionType {
name = "nixpkgs-config";
description = "nixpkgs config";
check =
x:
let
traceXIfNot = c: if c x then true else lib.traceSeqN 1 x false;
in
traceXIfNot isConfig;
merge = args: lib.foldr (def: mergeConfig def.value) { };
};
overlayType = lib.mkOptionType {
name = "nixpkgs-overlay";
description = "nixpkgs overlay";
@@ -34,8 +73,6 @@ let
++ lib.optional (opt.localSystem.highestPrio < (lib.mkOptionDefault { }).priority) opt.localSystem
++ lib.optional (opt.crossSystem.highestPrio < (lib.mkOptionDefault { }).priority) opt.crossSystem;
_configDefinitions = opt.config.definitionsWithLocations;
defaultPkgs =
if opt.hostPlatform.isDefined then
let
@@ -53,15 +90,14 @@ let
in
import ../../.. (
{
inherit _configDefinitions;
inherit (cfg) overlays;
inherit (cfg) config overlays;
}
// systemArgs
)
else
import ../../.. {
inherit _configDefinitions;
inherit (cfg)
config
overlays
localSystem
crossSystem
@@ -129,15 +165,7 @@ in
example = lib.literalExpression ''
{ allowBroken = true; allowUnfree = true; }
'';
type = lib.types.deferredModuleWith {
staticModules = [
{ _module.args.docPrefix = "https://nixos.org/manual/nixpkgs/unstable/"; }
../../../pkgs/top-level/config.nix
];
};
# Returns pkgs.config instead of nixpkgs.config
# This shadows the deferredModule to make it look like a submodule
apply = _: finalPkgs.config;
type = configType;
description = ''
Global configuration for Nixpkgs.
The complete list of [Nixpkgs configuration options](https://nixos.org/manual/nixpkgs/unstable/#sec-config-options-reference) is in the [Nixpkgs manual section on global configuration](https://nixos.org/manual/nixpkgs/unstable/#chap-packageconfig).
@@ -378,7 +406,7 @@ in
'';
}
{
assertion = opt.pkgs.isDefined -> opt.config.highestPrio == (lib.mkOptionDefault null).priority;
assertion = opt.pkgs.isDefined -> cfg.config == { };
message = ''
Your system configures nixpkgs with an externally created instance.
`nixpkgs.config` options should be passed when creating the instance instead.
+65 -3
View File
@@ -7,13 +7,18 @@
let
inherit (lib)
literalExpression
mkDefault
mkEnableOption
mkPackageOption
mkOption
maintainers
;
inherit (lib.types)
addCheck
bool
listOf
package
port
str
submodule
@@ -29,6 +34,37 @@ in
package = mkPackageOption pkgs "navidrome" { };
plugins = mkOption {
type = listOf (
addCheck package (p: p.isNavidromePlugin or false)
// {
name = "navidrome plugin";
description = "package that is a navidrome plugin";
}
);
default = [ ];
description = "List of Navidrome plugins";
example = literalExpression ''
with pkgs.navidromePlugins; [
listenbrainz-daily-playlist
];
'';
};
finalPackage = mkOption {
type = package;
readOnly = true;
default = cfg.package.override {
inherit (cfg) plugins;
};
defaultText = literalExpression ''
config.services.navidrome.package.override {
inherit (config.services.navidrome) plugins;
}
'';
description = "The final navidrome package including all selected plugins.";
};
settings = mkOption {
type = submodule {
freeformType = settingsFormat.type;
@@ -51,6 +87,29 @@ in
description = "Enable anonymous usage data collection, see <https://www.navidrome.org/docs/getting-started/insights/> for details.";
type = bool;
};
Plugins = {
Enabled = mkOption {
default = (builtins.length cfg.plugins) != 0;
defaultText = literalExpression "builtins.length \"\${config.services.navidrome.plugins != 0}\"";
description = ''
Enable plugin support in navidrome.
This is automatically enabled if {option}`services.navidrome.plugins` is used.
'';
};
Folder = mkOption {
default = "${cfg.finalPackage}/share/plugins";
description = ''
The folder containing navidrome plugins.
This directory is automatically created from plugins defined in {option}`services.navidrome.plugins`.
'';
readOnly = true;
type = str;
defaultText = literalExpression "\"\${config.services.navidrome.finalPackage}/share/plugins\"";
};
};
};
};
default = { };
@@ -78,7 +137,7 @@ in
description = "Whether to open the TCP port in the firewall";
};
environmentFile = lib.mkOption {
environmentFile = mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
description = "Environment file, used to set any secret ND_* environment variables.";
@@ -114,7 +173,7 @@ in
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = ''
${getExe cfg.package} --configfile ${settingsFormat.generate "navidrome.json" cfg.settings}
${getExe cfg.finalPackage} --configfile ${settingsFormat.generate "navidrome.json" cfg.settings}
'';
EnvironmentFile = lib.mkIf (cfg.environmentFile != null) [ cfg.environmentFile ];
User = cfg.user;
@@ -180,5 +239,8 @@ in
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.settings.Port ];
};
meta.maintainers = with maintainers; [ fsnkty ];
meta.maintainers = with maintainers; [
fsnkty
tebriel
];
}
+9 -1
View File
@@ -5,11 +5,19 @@
nodes.machine =
{ ... }:
{
services.navidrome.enable = true;
services.navidrome = {
enable = true;
plugins = with pkgs.navidromePlugins; [
listenbrainz-daily-playlist
];
};
};
testScript = ''
machine.wait_for_unit("navidrome")
machine.wait_for_console_text("Starting plugin manager")
# Make sure we saw at least one plugin load
machine.wait_for_console_text("plugin=listenbrainz-daily-playlist")
machine.wait_for_open_port(4533)
'';
}
@@ -3892,7 +3892,7 @@ assertNoAdditions {
};
});
run-nvim = super.run-nvim.overrideAttrs {
run-nvim = super.run-nvim.overrideAttrs (old: {
dependencies = [
self.telescope-nvim
];
@@ -3902,7 +3902,11 @@ assertNoAdditions {
# Issue: https://github.com/NixOS/nixpkgs/issues/394939
self.plenary-nvim
];
};
meta = old.meta // {
license = lib.licenses.gpl3Only;
};
});
rust-tools-nvim = super.rust-tools-nvim.overrideAttrs {
dependencies = [ self.nvim-lspconfig ];
@@ -70,7 +70,7 @@ stdenv.mkDerivation rec {
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace-fail "cmake_minimum_required (VERSION 2.6.3)" "cmake_minimum_required (VERSION 3.10)"
substituteInPlace {dcpp,dht,extra,}json/CMakeLists.txt \
substituteInPlace {dcpp,dht,extra,json}/CMakeLists.txt \
--replace-fail "cmake_minimum_required (VERSION 2.6)" "cmake_minimum_required (VERSION 3.10)"
substituteInPlace eiskaltdcpp-{cli,daemon}/CMakeLists.txt \
--replace-fail "cmake_minimum_required(VERSION 2.6)" "cmake_minimum_required (VERSION 3.10)"
+3 -3
View File
@@ -15,14 +15,14 @@
stdenv.mkDerivation (finalAttrs: {
pname = "akkoma-fe";
version = "3.18.0";
version = "3.19.0";
src = fetchFromGitea {
domain = "akkoma.dev";
owner = "AkkomaGang";
repo = "akkoma-fe";
tag = "v${finalAttrs.version}";
hash = "sha256-s9rHuZsNHQLCXqqF8VJPgiTHkHHXro97mUTvLB9WKfI=";
hash = "sha256-2uyyW/Ai0lbjj/nxjpN039iskg9UQ4QqUmjnhvsj33k=";
# upstream repository archive fetching is broken
forceFetchGit = true;
@@ -30,7 +30,7 @@ stdenv.mkDerivation (finalAttrs: {
yarnOfflineCache = fetchYarnDeps {
yarnLock = finalAttrs.src + "/yarn.lock";
hash = "sha256-QB523QZX8oBMHWBSFF7MpaWWXc+MgEUaw/2gsCPZ9a4=";
hash = "sha256-oGmO2AVa6tGYIvs3K7bJ+5db6NxTjO1ZR40aZ/yJQ2M=";
};
nativeBuildInputs = [
@@ -1,65 +0,0 @@
{
lib,
python3,
aria2,
mpv,
nodejs,
qt5,
fetchFromGitHub,
}:
python3.pkgs.buildPythonApplication rec {
pname = "anime-downloader";
version = "5.0.14";
format = "setuptools";
src = fetchFromGitHub {
owner = "anime-dl";
repo = "anime-downloader";
tag = version;
sha256 = "sha256-Uk2mtsSrb8fCD9JCFzvLBzMEB7ViVDrKPSOKy9ALJ6o=";
};
nativeBuildInputs = [ qt5.wrapQtAppsHook ];
propagatedBuildInputs = [
aria2
mpv
nodejs
]
++ (with python3.pkgs; [
beautifulsoup4
cfscrape
click
coloredlogs
fuzzywuzzy
jsbeautifier
pycryptodome
pysmartdl
pyqt5
requests
requests-cache
selenium
tabulate
]);
preFixup = ''
wrapQtApp "$out/bin/anime" --prefix PATH : ${lib.makeBinPath propagatedBuildInputs}
'';
doCheck = false;
# FIXME: checks must be disabled because they are lacking the qt env.
# They fail like this, even if built and wrapped with all Qt and runtime dependencies.
# Ref.: https://github.com/NixOS/nixpkgs/blob/634141959076a8ab69ca2cca0f266852256d79ee/pkgs/applications/misc/openlp/lib.nix#L20-L23
passthru.updateScript = ./update.sh;
meta = {
homepage = "https://github.com/anime-dl/anime-downloader";
description = "Simple but powerful anime downloader and streamer";
license = lib.licenses.unlicense;
platforms = lib.platforms.linux;
maintainers = [ ];
mainProgram = "anime";
};
}
@@ -1,8 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq common-updater-scripts
set -eu -o pipefail
version="$(curl --silent "https://api.github.com/repos/anime-dl/anime-downloader/releases" | jq '.[0].tag_name' --raw-output)"
update-source-version anime-downloader "$version"
+3 -3
View File
@@ -11,16 +11,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "biome";
version = "2.4.13";
version = "2.4.14";
src = fetchFromGitHub {
owner = "biomejs";
repo = "biome";
rev = "@biomejs/biome@${finalAttrs.version}";
hash = "sha256-Pie1oc1mc6lsdmSiOu04ci67DToDYRt36hdHsU0ZGXw=";
hash = "sha256-kiA6qgW/kWaoLMIrWd7HraK7DOERMwCSvOTk5y7fkmY=";
};
cargoHash = "sha256-ayFCjh1gBLOJoUnDKm+kwUzshGS0utqTewfe5wEdvQ0=";
cargoHash = "sha256-sSZEukcCyEdoJ1GD1bNnXJkDYtNX6phiCj2EKJhHJZw=";
nativeBuildInputs = [ pkg-config ];
+3 -3
View File
@@ -8,16 +8,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cargo-hakari";
version = "0.9.36";
version = "0.9.37";
src = fetchFromGitHub {
owner = "guppy-rs";
repo = "guppy";
tag = "cargo-hakari-${finalAttrs.version}";
hash = "sha256-qEYdJhLt4f3+RZz3/T6/vlQgrQYK6S5dNEmu8QH/wj0=";
hash = "sha256-Rf/1IhcvSp9Q8dLo/kuG0O9uIUH15Aw567ggaABANJw=";
};
cargoHash = "sha256-NrPfdVAi0QblJKFsHTL0BGQWUnqQEpIJwW3HBVHFZpE=";
cargoHash = "sha256-vL+1oJO9qTg/SX0mvt3hvKo1t3FhQJmUSLoK6LZuqZc=";
cargoBuildFlags = [
"-p"
+3 -3
View File
@@ -8,7 +8,7 @@
buildGoModule rec {
pname = "consul";
version = "1.22.6";
version = "1.22.7";
# Note: Currently only release tags are supported, because they have the Consul UI
# vendored. See
@@ -22,7 +22,7 @@ buildGoModule rec {
owner = "hashicorp";
repo = "consul";
tag = "v${version}";
hash = "sha256-UgUhTiDfbKqS0uMEfXzm9j8eNT6UKEQ6OidMQB+KlcI=";
hash = "sha256-lcb2Dbr5rpNbtstEk7kQxEYHdN3/FQEHFH+NIa6czDU=";
};
# This corresponds to paths with package main - normally unneeded but consul
@@ -32,7 +32,7 @@ buildGoModule rec {
"connect/certgen"
];
vendorHash = "sha256-sovOseYC72zUPY9WHDgemU7HcDpJzcsQsRALgHveins=";
vendorHash = "sha256-tFa8UKeaAQR4q+WpRl/u5P+TpjdBh9Gf6bVQcwzP5QQ=";
doCheck = false;
@@ -1,44 +0,0 @@
diff --git a/pom.xml b/pom.xml
index 9988e765..906917c0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -660,38 +660,13 @@
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
<executions>
- <execution>
- <id>frontend-download</id>
- <phase>prepare-package</phase>
- <configuration>
- <target>
- <get src="https://github.com/DependencyTrack/frontend/releases/download/${frontend.version}/frontend-dist.zip" dest="${project.build.directory}" verbose="true"/>
- </target>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- <execution>
- <id>frontend-extract</id>
- <phase>prepare-package</phase>
- <configuration>
- <target>
- <unzip src="${project.build.directory}/frontend-dist.zip" dest="${project.build.directory}/frontend">
- </unzip>
- </target>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
<execution>
<id>frontend-resource-deploy</id>
<phase>prepare-package</phase>
<configuration>
<target>
<copy todir="${project.build.directory}/${project.artifactId}">
- <fileset dir="${project.build.directory}/frontend/dist">
+ <fileset dir="${project.basedir}/frontend/dist">
<include name="**/*"/>
</fileset>
</copy>
@@ -1,17 +0,0 @@
diff --git a/pom.xml b/pom.xml
index 9988e765..f69576b4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -457,6 +457,12 @@
<version>${lib.testcontainers.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.kohlschutter.junixsocket</groupId>
+ <artifactId>junixsocket-core</artifactId>
+ <version>2.10.0</version>
+ <type>pom</type>
+ </dependency>
</dependencies>
<build>
+48 -15
View File
@@ -5,6 +5,7 @@
nodejs_20,
jre_headless,
protobuf_30,
xmlstarlet,
cyclonedx-cli,
makeWrapper,
maven,
@@ -12,7 +13,7 @@
nixosTests,
}:
let
version = "4.13.6";
version = "4.14.1";
frontend = buildNpmPackage {
pname = "dependency-track-frontend";
@@ -25,7 +26,7 @@ let
owner = "DependencyTrack";
repo = "frontend";
rev = version;
hash = "sha256-SSnbmAFXQwxAZQzMZeDzf/ebbWUVRICAs1msFXMMi98=";
hash = "sha256-xjIRkffmXYMAfZ8wJehnPRfTThJjTgNL8ONl9N9ZJ+M=";
};
installPhase = ''
@@ -33,7 +34,7 @@ let
cp -R ./dist $out/
'';
npmDepsHash = "sha256-2VK3LOqUxOJaR8cUuINhrhMkvHGyUr206RJR18NCvUo=";
npmDepsHash = "sha256-CW9LOur8N3obrOeHgYFH2OO/vg8XihUspuXS5Zrix8I=";
forceGitDeps = true;
makeCacheWritable = true;
@@ -50,23 +51,51 @@ maven.buildMavenPackage rec {
owner = "DependencyTrack";
repo = "dependency-track";
rev = version;
hash = "sha256-EL0Yd8pfTG8/DlY9A3F0lRuPl/wU2/LyACclzttrsjw=";
hash = "sha256-pIZM8FQ0IFqRbTQT5VIlCmS+fCCXULJJ6bdEv6xfjbc=";
};
patches = [
./0000-remove-frontend-download.patch
./0001-add-junixsocket.patch
];
postPatch = ''
substituteInPlace pom.xml \
--replace-fail '<protocArtifact>''${tool.protoc.version}</protocArtifact>' \
"<protocCommand>${protobuf_30}/bin/protoc</protocCommand>"
# update to version 5.1.3 to fix NullPointer and specify protoc path
xmlstarlet ed --inplace -N x=http://maven.apache.org/POM/4.0.0 \
--update '//x:plugin[x:artifactId="protobuf-maven-plugin"]/x:version' -v "5.1.3" \
--delete '//x:plugin[x:artifactId="protobuf-maven-plugin"]/x:configuration/x:protoc' \
--subnode '//x:plugin[x:artifactId="protobuf-maven-plugin"]/x:configuration' -t elem -n protoc -v "" \
--var protoc '$prev' \
--insert '$protoc' -t attr -n kind -v "path" \
--subnode '$protoc' -t elem -n name -v "protoc" \
pom.xml
# remove frontend related tasks
xmlstarlet ed --inplace -N x=http://maven.apache.org/POM/4.0.0 \
--delete '//x:execution[x:id="frontend-download"]' \
--delete '//x:execution[x:id="frontend-extract"]' \
--delete '//x:execution[x:id="frontend-resource-deploy"]' \
pom.xml
# add junixsocket to enable unixsocket connection to postgres
xmlstarlet ed --inplace -N x=http://maven.apache.org/POM/4.0.0 \
--subnode '/x:project/x:dependencies' -t elem -n dependency -v "" \
--var dependency '$prev' \
--subnode '$dependency' -t elem -n groupId -v "com.kohlschutter.junixsocket" \
--subnode '$dependency' -t elem -n artifactId -v "junixsocket-core" \
--subnode '$dependency' -t elem -n version -v "2.10.0" \
--subnode '$dependency' -t elem -n type -v "pom" \
pom.xml
'';
mvnJdk = jre_headless;
mvnHash = "sha256-UrLni4shNCv9aHvaGdkzFNBVe8BT4/z4cQ6Ekjr0l9s=";
manualMvnArtifacts = [ "com.coderplus.maven.plugins:copy-rename-maven-plugin:1.0.1" ];
mvnHash = "sha256-4N4KuJBF/RFZwpp3dIgXntxSEfKHyfvrShKQoUqY5bE=";
manualMvnArtifacts = [
"com.coderplus.maven.plugins:copy-rename-maven-plugin:1.0.1"
# added to saticfy protobuf compiler plugin dependency resolving
"jakarta.el:jakarta.el-api:5.0.1"
"com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations:2.19.1"
"com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.21.0"
"com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.3"
"com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.21.0"
"io.micrometer:micrometer-core:1.16.0"
"io.micrometer:micrometer-observation:1.16.0"
];
buildOffline = true;
mvnDepsParameters = lib.escapeShellArgs [
@@ -91,7 +120,11 @@ maven.buildMavenPackage rec {
doCheck = false;
nativeBuildInputs = [ makeWrapper ];
nativeBuildInputs = [
makeWrapper
xmlstarlet
protobuf_30
];
installPhase = ''
runHook preInstall
+5
View File
@@ -2,6 +2,7 @@
lib,
stdenv,
fetchFromGitLab,
fetchpatch2,
bison,
flex,
makeWrapper,
@@ -32,6 +33,10 @@ stdenv.mkDerivation (finalAttrs: {
./gs-allowpstransparency.patch
# fix curly brace escaping in eukleides.texi for newer texinfo compatiblity
./texinfo-escape.patch
(fetchpatch2 {
url = "https://salsa.debian.org/georgesk/eukleides/-/raw/debian/1.5.4-6/debian/patches/fixes-for-gcc15.patch";
hash = "sha256-MVC2bkMGkkDqF/kg8MPvOYacUOXshaG2RZ0a9UVXLSI=";
})
];
nativeBuildInputs = [
+25 -3
View File
@@ -4,18 +4,31 @@
fetchFromGitHub,
autoreconfHook,
gmp,
zstd,
mpfr,
zlib,
flint,
}:
let
zstd_src = fetchFromGitHub {
owner = "facebook";
repo = "zstd";
# latest commit on dev (only branch that has that folder) that changed zlibWrapper (https://github.com/facebook/zstd/commits/dev/zlibWrapper)
rev = "0b96e6d42a9b22eb472a050fcd2cc4be3ffb8e2b";
hash = "sha256-EPsLRjCCj0ruQ+z7eBzr/ACF0wh5LzUmdpbw/w5moWU=";
};
in
stdenv.mkDerivation (finalAttrs: {
version = "4.3.1";
pname = "form";
version = "5.0.0";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "form-dev";
repo = "form";
tag = "v${finalAttrs.version}";
hash = "sha256-ZWpfPeTekHEALqXVF/nLkcNsrkt17AKm2B/uydUBfvo=";
hash = "sha256-cYO8B5uDJQ9eUc4w5Le47su3JS/jGYwUFtHFunuQaJc=";
};
nativeBuildInputs = [
@@ -24,9 +37,18 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
gmp
mpfr
zstd
zlib
flint
];
postUnpack = ''
mkdir -p source/extern/zstd
cp -r ${zstd_src}/zlibWrapper source/extern/zstd/
chmod -R +w source
'';
meta = {
description = "Symbolic manipulation of very big expressions";
homepage = "https://www.nikhef.nl/~form/";
+8
View File
@@ -84,6 +84,14 @@ stdenv.mkDerivation (finalAttrs: {
url = "https://github.com/ValveSoftware/gamescope/commit/4ce1a91fb219f570b0871071a2ec8ac97d90c0bc.diff";
hash = "sha256-O358ScIIndfkc1S0A8g2jKvFWoCzcXB/g6lRJamqOI4=";
})
# Backport upstream patch for wlroots fixing build with libinput 1.31
(fetchpatch {
url = "https://github.com/misyltoad/wlroots/compare/54e844748029d4874e14d0c086d50092c04c8899...c08d99437ec8bb56a703f04ad1ef199502c62d10.diff";
stripLen = 1;
extraPrefix = "subprojects/wlroots/";
hash = "sha256-q2zekWNn111lX8N938y8HjREvlNMtdCLJ4RveX9z8u8=";
})
];
# We can't substitute the patch itself because substituteAll is itself a derivation,
+2 -1
View File
@@ -38,7 +38,8 @@ stdenv.mkDerivation (finalAttrs: {
# Workaround build failure on -fno-common toolchains:
# ld: libvars.a(vars-freeze-lex.o):src/libvars/vars-freeze-lex.l:23:
# multiple definition of `line_number'; ifm-main.o:src/ifm-main.c:46: first defined here
env.NIX_CFLAGS_COMPILE = "-fcommon";
# gnu17: libvars uses K&R-style () prototypes; C23 redefines them as (void).
env.NIX_CFLAGS_COMPILE = "-fcommon -std=gnu17";
enableParallelBuilding = false; # ifm-scan.l:16:10: fatal error: ifm-parse.h: No such file or directory
+3 -3
View File
@@ -7,16 +7,16 @@
buildGoModule (finalAttrs: {
pname = "lego";
version = "4.31.0";
version = "4.35.2";
src = fetchFromGitHub {
owner = "go-acme";
repo = "lego";
tag = "v${finalAttrs.version}";
hash = "sha256-YzslAEZVJDAa8Q7/YTWb2pH0MiWwgHipL11A/UD+nYg=";
hash = "sha256-NBCvVlMDEEhlfWWG7X5T1Udg+42+ibS1Ph6F+/yrXF0=";
};
vendorHash = "sha256-9ead3yA/fvNRP4uP2O6Wy6aRzVAig3iyin8UgMcA8mc=";
vendorHash = "sha256-Q85McGGSILE8BPwreCtih6my1nih9ameLKHFe1dgNWQ=";
doCheck = false;
+2 -2
View File
@@ -11,12 +11,12 @@
stdenv.mkDerivation (finalAttrs: {
pname = "libgpiod";
version = "2.2.2";
version = "2.2.4";
src = fetchgit {
url = "https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git";
tag = "v${finalAttrs.version}";
hash = "sha256-MePv6LsK+8zCxG8l4vyiiZPSVqv9F4H4KQB0gHjm0YM=";
hash = "sha256-PtkJZ9p6r6S47RjiCRv4cVmlY4BHdB6FCMJ+M/IPnw0=";
};
nativeBuildInputs = [
+4 -13
View File
@@ -2,7 +2,6 @@
lib,
stdenv,
fetchFromGitLab,
fetchpatch,
meson,
ninja,
pkg-config,
@@ -22,24 +21,16 @@
stdenv.mkDerivation (finalAttrs: {
pname = "libplacebo";
version = "7.351.0";
version = "7.360.1";
src = fetchFromGitLab {
domain = "code.videolan.org";
owner = "videolan";
repo = "libplacebo";
rev = "v${finalAttrs.version}";
hash = "sha256-ccoEFpp6tOFdrfMyE0JNKKMAdN4Q95tP7j7vzUj+lSQ=";
tag = "v${finalAttrs.version}";
hash = "sha256-h8uMWRe4SysbKNLWdGYxAwj2k7yh4sO62/Ca30mRT3g=";
};
patches = [
(fetchpatch {
name = "python-compat.patch";
url = "https://code.videolan.org/videolan/libplacebo/-/commit/12509c0f1ee8c22ae163017f0a5e7b8a9d983a17.patch";
hash = "sha256-RrlFu0xgLB05IVrzL2EViTPuATYXraM1KZMxnZCvgrk=";
})
];
nativeBuildInputs = [
meson
ninja
@@ -92,7 +83,7 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://code.videolan.org/videolan/libplacebo";
changelog = "https://code.videolan.org/videolan/libplacebo/-/tags/v${finalAttrs.version}";
license = lib.licenses.lgpl21Plus;
maintainers = [ ];
maintainers = with lib.maintainers; [ ProxyVT ];
platforms = lib.platforms.all;
};
})
+2 -1
View File
@@ -48,7 +48,8 @@ stdenv.mkDerivation (finalAttrs: {
"--without-cython"
];
doCheck = true;
# Tests segfault on aarch64-darwin: https://hydra.nixos.org/build/323410364
doCheck = !(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64);
postFixup = lib.optionalString enablePython ''
moveToOutput "lib/${python3.libPrefix}" "$py"
+3 -3
View File
@@ -6,7 +6,7 @@
}:
buildGoModule (finalAttrs: {
pname = "lstk";
version = "0.5.8";
version = "0.6.0";
__structuredAttrs = true;
@@ -14,10 +14,10 @@ buildGoModule (finalAttrs: {
owner = "localstack";
repo = "lstk";
tag = "v${finalAttrs.version}";
sha256 = "sha256-sZd3hZaS6rJoAUkCfgQh/zQj4ng8nevsQFsZaxOccHs=";
sha256 = "sha256-sK3xtmbXxoqKGpFPscKxqy/8rr+G6tpcKXtRL9FLMK0=";
};
vendorHash = "sha256-MzvWeJa9fXqek/MenT4B28XKB0srjGpqwUxAuT1zgI4=";
vendorHash = "sha256-wXSFZpZUaeBNevirGIG1qsrroK3S5ccZZ31z8pRdmKM=";
excludedPackages = "test/integration";
+2 -2
View File
@@ -6,12 +6,12 @@
}:
stdenv.mkDerivation (finalAttrs: {
version = "12.75";
version = "12.84";
pname = "monkeys-audio";
src = fetchzip {
url = "https://monkeysaudio.com/files/MAC_${builtins.concatStringsSep "" (lib.strings.splitString "." finalAttrs.version)}_SDK.zip";
hash = "sha256-IH72Sjgh4ERkufo1rEHucbpOeMuNeEhfrQBpXvvAvhg=";
hash = "sha256-WYBc59DJM5DVe7hZVXCsMJsShUQf8Ib0OLKISRjg4pY=";
stripRoot = false;
};
+2 -2
View File
@@ -97,7 +97,7 @@ let
++ lib.optionals mediaSupport [ ffmpeg_7 ]
);
version = "15.0.11";
version = "15.0.12";
sources = {
x86_64-linux = fetchurl {
@@ -109,7 +109,7 @@ let
"https://tor.eff.org/dist/mullvadbrowser/${version}/mullvad-browser-linux-x86_64-${version}.tar.xz"
"https://tor.calyxinstitute.org/dist/mullvadbrowser/${version}/mullvad-browser-linux-x86_64-${version}.tar.xz"
];
hash = "sha256-+skGid5BYrptv3aHLPogxew28DNFArV6kEDhCTxD2Ic=";
hash = "sha256-Tqfa9f2q4bv2KpotoDKvklEmHa5AF4ARp/qKxlVBomE=";
};
};
+2 -2
View File
@@ -11,7 +11,7 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "mystmd";
version = "1.8.3";
version = "1.9.0";
strictDeps = true;
__structuredAttrs = true;
@@ -20,7 +20,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "jupyter-book";
repo = "mystmd";
tag = "mystmd@${finalAttrs.version}";
hash = "sha256-OmREjNDgmq5+nidBZh4DUy9bMtDeHMrGWZEqKo5TUrQ=";
hash = "sha256-gAUfL2sTdTmslPuOnkeTwv/GmarM5nWpxjg3KPL+1fs=";
};
node_modules = stdenv.mkDerivation {
+11
View File
@@ -16,6 +16,7 @@
nix-update-script,
ffmpegSupport ? true,
versionCheckHook,
plugins ? [ ],
}:
buildGoModule (finalAttrs: {
@@ -46,6 +47,8 @@ buildGoModule (finalAttrs: {
pkg-config
];
runtimeInputs = plugins;
overrideModAttrs = oldAttrs: {
nativeBuildInputs = lib.filter (drv: drv != npmHooks.npmConfigHook) oldAttrs.nativeBuildInputs;
preBuild = null;
@@ -77,6 +80,13 @@ buildGoModule (finalAttrs: {
make buildjs
'';
postInstall = ''
mkdir -p $out/share/plugins/
${lib.concatMapStringsSep "\n" (plugin: ''
ln -s ${plugin}/share/${plugin.pname}.ndp $out/share/plugins/
'') plugins}
'';
tags = [
"netgo"
"sqlite_fts5"
@@ -91,6 +101,7 @@ buildGoModule (finalAttrs: {
'';
passthru = {
inherit plugins;
tests.navidrome = nixosTests.navidrome;
updateScript = nix-update-script { };
};
@@ -0,0 +1,8 @@
# Packaging guidelines
## Basics
Each navidrome plugin is a `.zip` file named `${pname}.ndp`. Inside this zip is
two files named exactly:
- `manifest.json` which defines permissions and configuration
- `plugin.wasm` which is the output of the plugin build
@@ -0,0 +1,26 @@
{
lib,
pkgs,
buildNavidromePlugin,
}:
buildNavidromePlugin rec {
pname = "apple-music-plugin";
version = "0.2.0";
src = pkgs.fetchFromGitHub {
owner = "navidrome";
repo = "apple-music-plugin";
tag = "v${version}";
hash = "sha256-45nUrIDXCtkh08TeZoc6j2BcGLQnpVJu23L56nIBN1s=";
};
vendorHash = "sha256-G1B6W8ZKoLuNwvOt3z5vSKcQmF2574j41A0lC+u39uI=";
meta = {
description = "Fetches artist metadata from Apple Music using free iTunes/Apple Music endpoints";
homepage = "https://github.com/navidrome/apple-music-plugin";
license = lib.licenses.gpl3Only;
sourceProvenance = with lib.sourceTypes; [ fromSource ];
};
}
@@ -0,0 +1,67 @@
{
buildGoModule,
lib,
navidrome,
zip,
}:
{
pname,
src,
version,
vendorHash,
meta,
...
}@args:
buildGoModule (
finalAttrs:
{
inherit
pname
version
src
vendorHash
;
env = {
CGO_ENABLED = "0";
}
// (args.env or { });
postBuild = ''
GOOS=wasip1 \
GOARCH=wasm \
go build \
-buildmode=c-shared \
-o $GOPATH/bin/plugin.wasm .
'';
postInstall = ''
mkdir $out/share
pushd $(mktemp -d)
cp $GOPATH/bin/plugin.wasm .
cp ${finalAttrs.src}/manifest.json .
${lib.getExe zip} \
$out/share/${finalAttrs.pname}.ndp \
plugin.wasm \
manifest.json
popd
rm -r $out/bin
'';
passthru = {
isNavidromePlugin = true;
}
// args.passthru or { };
meta = {
inherit (navidrome.meta) platforms maintainers;
}
// args.meta or { };
}
// removeAttrs args [
"meta"
"passthru"
]
)
@@ -0,0 +1,25 @@
{
lib,
pkgs,
buildNavidromePlugin,
}:
buildNavidromePlugin rec {
pname = "discord-rich-presence-plugin";
version = "1.0.0";
src = pkgs.fetchFromGitHub {
owner = "navidrome";
repo = "discord-rich-presence-plugin";
tag = "v${version}";
hash = "sha256-YH1K6uagIloQQ4gdezKMAfx9KbGL9chiTx/i8CiH4io=";
};
vendorHash = "sha256-M5dI0gNfy2x9IVN1284pdvUaCui0sgxFCC+9weq2ipM=";
meta = {
description = "Displays your currently playing track in your Discord status";
homepage = "https://github.com/navidrome/discord-rich-presence-plugin";
license = lib.licenses.gpl3Only;
sourceProvenance = with lib.sourceTypes; [ fromSource ];
};
}
@@ -0,0 +1,25 @@
{
lib,
pkgs,
buildNavidromePlugin,
}:
buildNavidromePlugin rec {
pname = "listenbrainz-daily-playlist";
version = "5.0.2";
src = pkgs.fetchFromGitHub {
owner = "kgarner7";
repo = "navidrome-listenbrainz-daily-playlist";
tag = "v${version}";
hash = "sha256-DsbnTu+Xi9pAG9fKgtlixxrd3od41TTeZ1hdjyEyGnk=";
};
vendorHash = "sha256-zCKLwS85+aC4jfRcC2SjKGK/OYjW+izIhKKKLxNroQg=";
meta = {
description = "fetch daily/weekly playlists from ListenBrainz";
homepage = "https://github.com/kgarner7/navidrome-listenbrainz-daily-playlist";
license = lib.licenses.mit;
sourceProvenance = with lib.sourceTypes; [ fromSource ];
};
}
@@ -1,7 +1,7 @@
{
callPackage,
lib,
jre_headless,
jre_minimal,
fetchFromGitHub,
fetchpatch,
maven,
@@ -10,7 +10,26 @@
}:
let
jre = jre_headless;
jre = jre_minimal.override {
modules = [
"java.base"
"java.compiler"
"java.datatransfer"
"java.desktop"
"java.instrument"
"java.logging"
"java.management"
"java.naming"
"java.net.http"
"java.prefs"
"java.scripting"
"java.security.jgss"
"java.sql"
"java.xml"
"jdk.compiler"
"jdk.unsupported"
];
};
version = "7.21.0";
mainProgram = "openapi-generator-cli";
this = maven.buildMavenPackage {
+3 -3
View File
@@ -19,13 +19,13 @@
rustPlatform.buildRustPackage {
pname = "par-lang";
version = "0-unstable-2026-05-04";
version = "0-unstable-2026-05-06";
src = fetchFromGitHub {
owner = "par-team";
repo = "par-lang";
rev = "440b54187e88bbd3dd75253db02a6c17067f33a9";
hash = "sha256-2bwy0/CktuiBUq6HPucinrsfhnDWBjAQ6TjzW2cZgv0=";
rev = "b045eda333bd7e02ae4f7ad7c6f84b3ba7d58d45";
hash = "sha256-jOADgr7d154QskEc772hLP0um9UQzVhG+DYuHDdVdDo=";
};
cargoHash = "sha256-+vhmSSzgeC26zq0P53oFKyu+RBg4qQjEvURCkAHNCp8=";
+3 -3
View File
@@ -7,12 +7,12 @@
let
pname = "plexamp";
version = "4.13.1";
version = "4.13.2";
src = fetchurl {
url = "https://plexamp.plex.tv/plexamp.plex.tv/desktop/Plexamp-${version}.AppImage";
name = "${pname}-${version}.AppImage";
hash = "sha512-HgF0+ojb0wOWO1DuiifiYMb0kSiRLvvMcteC89zZ4IYOflzOw+vNKoU+eyRo1Yl6irIL/Pg32eK4xRn5wyB46g==";
hash = "sha512-Ww/QfMgmeghthfuGfc4Plv7vUKLikLf4R+SImG6TuYg0pDJ5psuHtXQezV0BurVRm6eQ+Ori+YGK2A52tCkcfw==";
};
appimageContents = appimageTools.extractType2 {
@@ -38,7 +38,7 @@ appimageTools.wrapType2 {
meta = {
description = "Beautiful Plex music player for audiophiles, curators, and hipsters";
homepage = "https://plexamp.com/";
changelog = "https://forums.plex.tv/t/plexamp-release-notes/221280/83";
changelog = "https://forums.plex.tv/t/plexamp-release-notes/221280/84";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [
killercup
+9 -1
View File
@@ -1,6 +1,7 @@
{
stdenv,
lib,
fetchpatch,
fetchFromGitHub,
libcap,
libsodium,
@@ -28,7 +29,14 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-SNLzIwMF6XU2SAc5B9LIW2Jeh1Fa4CVumQYd2O0XxRY=";
};
patches = [ ./no-install-user.patch ];
patches = [
./no-install-user.patch
(fetchpatch {
name = "CVE-2026-44331.patch";
url = "https://github.com/proftpd/proftpd/commit/5e06acc4687046c7bf794b55bd8c44a86a05ae61.patch";
hash = "sha256-1YM9yeiZJwU2CasPhf4g9O8Jf/B01ullFeUkERFe9WY=";
})
];
strictDeps = true;
enableParallelBuilding = true;
+2 -2
View File
@@ -16,7 +16,7 @@
stdenv,
}:
let
version = "2.65.1653";
version = "2.66.1658";
urlVersion = builtins.replaceStrings [ "." ] [ "0" ] version;
in
stdenv.mkDerivation {
@@ -25,7 +25,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "https://download.roonlabs.com/updates/production/RoonServer_linuxx64_${urlVersion}.tar.bz2";
hash = "sha256-t+i2s73D+N/CStIGKNZgGGRisEACxM5ug//YBBXVfpo=";
hash = "sha256-IY0DiTiq7n7kv3AYt3JuyFUXZXAzUpO/4yJoCvA9Hdk=";
};
dontConfigure = true;
+2 -2
View File
@@ -11,13 +11,13 @@
buildGoModule (finalAttrs: {
pname = "rosa";
version = "1.2.61";
version = "1.2.62";
src = fetchFromGitHub {
owner = "openshift";
repo = "rosa";
rev = "v${finalAttrs.version}";
hash = "sha256-tcvNtFM8e2U9C5Nis3RzVJvBh+wvPlLID2MyYjHRdVs=";
hash = "sha256-vBIh4drMBd6BXkwmnBFzHuayLmgAX9DtXVENAGnJghY=";
};
vendorHash = null;
+12 -2
View File
@@ -2,6 +2,8 @@
lib,
rustPlatform,
fetchFromGitHub,
versionCheckHook,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
@@ -20,12 +22,20 @@ rustPlatform.buildRustPackage (finalAttrs: {
cargoBuildFlags = [ "-p=rsonpath" ];
cargoTestFlags = finalAttrs.cargoBuildFlags;
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
passthru.updateScript = nix-update-script { };
meta = {
description = "Experimental JSONPath engine for querying massive streamed datasets";
homepage = "https://github.com/v0ldek/rsonpath";
changelog = "https://github.com/v0ldek/rsonpath/blob/${finalAttrs.version}/CHANGELOG.md";
changelog = "https://github.com/v0ldek/rsonpath/blob/v${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ tbutter ];
maintainers = with lib.maintainers; [
tbutter
progrm_jarvis
];
mainProgram = "rq";
};
})
+4 -4
View File
@@ -12,13 +12,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "rsshub";
version = "0-unstable-2026-04-27";
version = "0-unstable-2026-05-05";
src = fetchFromGitHub {
owner = "DIYgod";
repo = "RSSHub";
rev = "add0734e0f8c88af8e81e80f0d4ab70ad9ed920e";
hash = "sha256-IVVCOSXXCSsSVM1cczX3oTpd07uaJ2LAWMJxMylkRt0=";
rev = "1410f03e6dc98f0135cad0b458381179bdddec59";
hash = "sha256-l+GPfi6u2wYEWLtTowdjG3hRLM1QSDpRaw/BL74S6I8=";
};
patches = [
@@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
pnpmDeps = fetchPnpmDeps {
inherit (finalAttrs) pname version src;
fetcherVersion = 3;
hash = "sha256-zGchfq2Slr5GzeQrp+0JG+BlI/NPObJ7SJSn1I2MHQ0=";
hash = "sha256-jRfY9w84DdGkuUXAxcdKOhNEjJU5o0t8qJqtr7FXmZw=";
pnpm = pnpm_10;
};
+60 -71
View File
@@ -29,13 +29,13 @@
"com/github/ben-manes/versions#com.github.ben-manes.versions.gradle.plugin/0.53.0": {
"pom": "sha256-yWBPdJaskfaW5HRY2KLWt91U0MqkNn88GspmphyDcvQ="
},
"com/gradleup/shadow#com.gradleup.shadow.gradle.plugin/9.3.0": {
"pom": "sha256-oJEzavXzZRVs4X+TsMeIcpVihO+eRiGs/t4swphzXWA="
"com/gradleup/shadow#com.gradleup.shadow.gradle.plugin/9.3.1": {
"pom": "sha256-yIQ/agfj0unj0+swNOFVvW/ctWE5kEyShO/95R16X6Q="
},
"com/gradleup/shadow#shadow-gradle-plugin/9.3.0": {
"jar": "sha256-uFUwX/cSRvyntFSvhyAj1eyMHyrZsbu3AAM5B9upEzs=",
"module": "sha256-jV28n6obCRQ/XZGZxPa2mDQsiFvGcsXnqLCnFP0Qy3s=",
"pom": "sha256-6Vv3tj25yBdlVfoq+DpGhRakOlYUORhM/FOCuakDObQ="
"com/gradleup/shadow#shadow-gradle-plugin/9.3.1": {
"jar": "sha256-lGB42YbsVs6P+NAWN9kPcJ8zPVg6tSCq3Y5EnTcE2Gc=",
"module": "sha256-IuNwRjPPGSGbTVGUqNKJDPfPTbctRA5g6BIlcS+na2w=",
"pom": "sha256-nLrNpEyjh3wt54LMo5iIGUYCimh4H/kOypnamAgO/JE="
},
"com/squareup/moshi#moshi-kotlin/1.12.0": {
"jar": "sha256-HENsB8FZzRrwMrt5NRpIqY5/eBrIB8/4tXEamZtWZt8=",
@@ -96,21 +96,21 @@
"module": "sha256-1sIlTINHuEzahMr3SRShh8Lzd+QoTo2Ls/kBUhgQqos=",
"pom": "sha256-qkTrUr/f5h0ns+RQ0rNI2I3qo0N6tNnUmoQJU0j59vs="
},
"org/apache/logging/log4j#log4j-api/2.25.2": {
"jar": "sha256-n9Zsn+C+oG+pZmwUeYmkbK+qkrSoh1NpfTlFzEMzjLs=",
"module": "sha256-WPeF66u6zDA/Ow5aSF91X9qzKQ9p5JsDT4lj0ngjZV4=",
"pom": "sha256-CVYJaiUCQIyVioMXTytqV9yy5bB7uRTISHMrRLirvcM="
"org/apache/logging/log4j#log4j-api/2.25.3": {
"jar": "sha256-6IZoKSD6D7nW62OV3LTeCIRD+GRsicXlhG4WjjJ/QG8=",
"module": "sha256-W+T3N0jWz53pXLci63n8rVvCQnk6l4p+cmbyNZGBHAw=",
"pom": "sha256-MoS+ZXOuuDNGz/a3RvoyXSPq3Z0JyOKG7R11kEoS3W4="
},
"org/apache/logging/log4j#log4j-bom/2.25.2": {
"pom": "sha256-Tym32cLZcP0qZpcXa/fd3EFQifYNaW0ov98xsk6S8Rw="
"org/apache/logging/log4j#log4j-bom/2.25.3": {
"pom": "sha256-ZleICHEo/mw6+dAlJEhTKvl4cRdmSB20k5a/AyWibK0="
},
"org/apache/logging/log4j#log4j-core/2.25.2": {
"jar": "sha256-5Q23cBQw/5B5gYUO9SekHVGlPdABf1Oghgr8urhXAnc=",
"module": "sha256-JRQSc3eFDwR83jJbc7efriEzKSK+tkmiUzr9CEIlihE=",
"pom": "sha256-L/9GPTmclAgtmCLCG/v0cOEFHbt9S0XyWw54G8Xg9BI="
"org/apache/logging/log4j#log4j-core/2.25.3": {
"jar": "sha256-Nit/y2W3OqRsxLxTq/TrIW9ESoO10aA3y2/f/wrp8Pk=",
"module": "sha256-ChRnoKtPxLJSc7VVHGCL15UguZ/SgRGgM9M4jwJVYwA=",
"pom": "sha256-ysGDRqDJErAmrVF/SE78POgyZ/LPambKhGmRL/GYaw0="
},
"org/apache/logging/log4j#log4j/2.25.2": {
"pom": "sha256-HYBXBY0LBcj3clyhrbpoc5y+rHWJjsoGpIymEVRsA+w="
"org/apache/logging/log4j#log4j/2.25.3": {
"pom": "sha256-pbdIJFris5b1vKlHpJbtwI29vfeWmuLMsattS0lznn8="
},
"org/apache/maven#maven-api-annotations/4.0.0-rc-3": {
"jar": "sha256-XTSQ9yrTp+gr6IsnYp83xZ/SUxuuURw7E4ZkINXYYr0=",
@@ -153,9 +153,9 @@
"org/jetbrains/kotlin#kotlin-bom/2.0.21": {
"pom": "sha256-1Ufg3iVCLZY+IsepRPO13pQ8akmClbUtv/49KJXNm+g="
},
"org/jetbrains/kotlin#kotlin-metadata-jvm/2.3.0-RC2": {
"jar": "sha256-Wk90LxSQCsjMPsDzRsOD1aSsIcFUz6CDPyem5vZkcbs=",
"pom": "sha256-o/ngkalB7A8LG/SeCS7QBofsNCqEtiGvyNIO+r9Jt64="
"org/jetbrains/kotlin#kotlin-metadata-jvm/2.3.0": {
"jar": "sha256-DGQgOZHQIy2YnNXjZtYCjSexsIckCBgXi9UMJo7qtW8=",
"pom": "sha256-N51JdplIjLxv11nTN2QrRWLD2lI4g8NMH201PgZZvJc="
},
"org/jetbrains/kotlin#kotlin-reflect/2.0.21": {
"jar": "sha256-OtL8rQwJ3cCSLeurRETWEhRLe0Zbdai7dYfiDd+v15k=",
@@ -165,9 +165,9 @@
"module": "sha256-b134r2M2AKa5z7D8x2SvPVEZ83Zndne5G2rugWsdMKs=",
"pom": "sha256-X0As+413MZW5ZwUBJMnom1+EsXJGThiUkpeJv1xMLyk="
},
"org/jetbrains/kotlin#kotlin-stdlib-common/2.3.0-RC2": {
"module": "sha256-CYoQLiaK/gAqYFj0bz8+qyTEGuvmYoZFNJfNpHf92Do=",
"pom": "sha256-6aCMqTaPm3QH80XTSBAQomDpIBs7Lio6vCzyp8UORaQ="
"org/jetbrains/kotlin#kotlin-stdlib-common/2.3.0": {
"module": "sha256-/pAljbcTNVWBoBZDfQbAKdBpwgu93uE02R5LiHBz108=",
"pom": "sha256-J+2DQuBLgcqy0aP512D06/lQmG9n7Eme1y1cw4d+6NA="
},
"org/jetbrains/kotlin#kotlin-stdlib-jdk7/2.0.21": {
"jar": "sha256-cS9IB2Dt7uSKhDaea+ifarUjdUCLsso74U72Y/cr7jE=",
@@ -181,10 +181,10 @@
"module": "sha256-gf1tGBASSH7jJG7/TiustktYxG5bWqcpcaTd8b0VQe0=",
"pom": "sha256-/LraTNLp85ZYKTVw72E3UjMdtp/R2tHKuqYFSEA+F9o="
},
"org/jetbrains/kotlin#kotlin-stdlib/2.3.0-RC2": {
"jar": "sha256-n+5T/c1vgmUkLAe0l6yoR3yagub8b8mtgB0iDH7+Shw=",
"module": "sha256-vV8M3QDbVud2noR/CLnyKiFd/4xcgaAPpiSxhVhxhjI=",
"pom": "sha256-NhftUo605tFswNHx7nLknBn3/HQl974+zCmHC1GJLKA="
"org/jetbrains/kotlin#kotlin-stdlib/2.3.0": {
"jar": "sha256-iHWHyRcTJQrVL+FK2RZtBCwzg1BJiQ6UN/NV/8WhlbE=",
"module": "sha256-CRCoo7aWD8eSxFxWqR18Oj8mKG8DKVVUtRnP83h1baI=",
"pom": "sha256-TVJW0+SETmVrDKQF9jUNbyF5XCQ3WzRSUmxUZ92ZtaI="
},
"org/junit#junit-bom/5.11.4": {
"module": "sha256-qaTye+lOmbnVcBYtJGqA9obSd9XTGutUgQR89R2vRuQ=",
@@ -201,21 +201,6 @@
"org/mockito#mockito-bom/4.11.0": {
"pom": "sha256-2FMadGyYj39o7V8YjN6pRQBq6pk+xd+eUk4NJ9YUkdo="
},
"org/ow2#ow2/1.5.1": {
"pom": "sha256-Mh3bt+5v5PU96mtM1tt0FU1r+kI5HB92OzYbn0hazwU="
},
"org/ow2/asm#asm-commons/9.9": {
"jar": "sha256-2y9vJhULvnwSZga0oRUYNrzCKh4FpCOzWFaYvs6ZX/g=",
"pom": "sha256-GKXT7xN351RLPKMhDyYTlrmH9gEO9ZHThyra5jEZ7kM="
},
"org/ow2/asm#asm-tree/9.9": {
"jar": "sha256-QhePN3XJxj+eXhRGdH0ptOyk2RvW515cQ8+jcqR9OMY=",
"pom": "sha256-0BeI7Y5ujiSsr2y0p73MJzNBYlL6oAIylZ4+Lp3xv0Q="
},
"org/ow2/asm#asm/9.9": {
"jar": "sha256-A9madK0e5ccTNO9nQ39O9P40iMqnyW2GRavHPI4gF9Q=",
"pom": "sha256-z4Ye8edF1XFUr3muFN80DtU0Hl3NAVfO/NLrfxqgXFc="
},
"org/springframework#spring-framework-bom/5.3.39": {
"module": "sha256-+ItA4qUDM7QLQvGB7uJyt17HXdhmbLFFvZCxW5fhg+M=",
"pom": "sha256-9tSBCT51dny6Gsfh2zj49pLL4+OHRGkzcada6yHGFIs="
@@ -500,40 +485,44 @@
"module": "sha256-xI2Y9e3P2cVeefrLugEB98G6CIY0ib6EqRYrmaGG0cI=",
"pom": "sha256-4xXFzLsIchbc4ErnDDK/F2K+KguKQ++B47p4MXpM1cg="
},
"org/junit/jupiter#junit-jupiter-api/6.0.1": {
"jar": "sha256-o8qMflZ0Ngk+SmcD1dSqwC2+o2EG6jL9E2e1beINTgI=",
"module": "sha256-zK14mBan6wSIQ0ad+9pkHonhhJ5juCSS8kvGCzBQu5s=",
"pom": "sha256-NjNXApnLjlv8KBYedmHSEfODqx4QndQNBWbGr6FDlxo="
"org/junit#junit-bom/6.0.2": {
"module": "sha256-CXdtx1DgfltFk690n/aPkYB/nFTDMHUcn0tPHqZScdY=",
"pom": "sha256-w1iXvlPvCDmGw/CRGt53SctCrrQAyZH7ruUeRjn3uak="
},
"org/junit/jupiter#junit-jupiter-engine/6.0.1": {
"jar": "sha256-dHalb0qqtX/C9FmEfNa/txKzvQSprAuJ7ZVz963CxVA=",
"module": "sha256-DNBLxyt1p94NOMErkbE3PcQ3OgP+Iv/3oV6MvRyfXfk=",
"pom": "sha256-w0n6QNgPtJ/b+0TyYlR2zSa4vpWQQP+or4in/bHiSPY="
"org/junit/jupiter#junit-jupiter-api/6.0.2": {
"jar": "sha256-QHsgre1AeBrVRAMJY57wxCjnNbK2+IMcXS/5BBYTGV0=",
"module": "sha256-m0IZfs4uhSb/k97ysJ48tIACdjh9RzsIC9/8iKjANjA=",
"pom": "sha256-23UFjKyPW4WpVpNirMdghakehZNGaLbdCQVGi/s//jU="
},
"org/junit/jupiter#junit-jupiter-params/6.0.1": {
"jar": "sha256-lWbiSbTUx9U6bIkI9XeIXOLUxjE8kWvfv3/7xSa4o28=",
"module": "sha256-p9p+0ICwGl76I7bWB/qxxmMhEYc0EXoaVkde/DU7HMA=",
"pom": "sha256-sfUTKYkKt1oPR+kBQNZOJf6z57dM5KEHRZg9YViQbnM="
"org/junit/jupiter#junit-jupiter-engine/6.0.2": {
"jar": "sha256-KnIBz0iQSDwbtQRekaWbcFKoGJspMKm+lRTGPh5Ys7Y=",
"module": "sha256-EE0f6yTeklH8eVpz1HenP6pXmpjYecftsZ/dGP20CJs=",
"pom": "sha256-MS3kqvSL6RZPiX8G1hFKkFK/W7ADRltOMzH5R6YFr3o="
},
"org/junit/jupiter#junit-jupiter/6.0.1": {
"jar": "sha256-vXrygd/vjcwdCKUDzpMEWXtl4YUKDbgsmattjLEDGxQ=",
"module": "sha256-iuvBy0oYWd7uRjDJq3S2/KKMAdpl0h6Z7XgEp7ibGMo=",
"pom": "sha256-VICrz2YRG4YweP/+OFMKTcrtJoK9gCtO2VBdrzVleTM="
"org/junit/jupiter#junit-jupiter-params/6.0.2": {
"jar": "sha256-TG9Yd+hSp7iRIHxujWpesZaA0lsMQB0JpknR6hcRe1k=",
"module": "sha256-fdfWnOPlTkDuM0Z1qEkNJIi5bo3xIPXgqteaXSegur8=",
"pom": "sha256-XjLbpZkb2lFqzpu8ZaFBfW4KiFIeiobTP9IQjSqJIV8="
},
"org/junit/platform#junit-platform-commons/6.0.1": {
"jar": "sha256-+IU/RcEPOA3bFXz0KrupsHNHTwXMQDNbWFBV+FU43K0=",
"module": "sha256-mS8uNl3Y24i+YC+eXFwI+B/USwxbj6HPFzTzb8fh8f0=",
"pom": "sha256-E6l3Y7CJ0P0kyrrGE/d5pyEmm+5VHz5cHbr+mhzQ6tI="
"org/junit/jupiter#junit-jupiter/6.0.2": {
"jar": "sha256-ylRmpDWgsPEAOCxad+kerm1MozD2C00kATqaPwzXQug=",
"module": "sha256-SdwJtzTvpDJHDO65Dhry0wviY/MBCXhlXDVA8qgeqtY=",
"pom": "sha256-f9YZ4a5GOpmfjblWj6h9EJltFZo1P/zNy9O/h18spjU="
},
"org/junit/platform#junit-platform-engine/6.0.1": {
"jar": "sha256-9JV3Bzp64YTHGNm0OuDY7cuKv8Wsc4c17jM51GUukr8=",
"module": "sha256-2aXeq5puUhW79Aw5/+2pCwZXdPjNAY5Xuyod7OI0VKQ=",
"pom": "sha256-oiRe8nBlLAfVls5x2NZw0KipklHNzvRU85ZRmaycTpo="
"org/junit/platform#junit-platform-commons/6.0.2": {
"jar": "sha256-HEnquO09gSgEWePz4fEZuSj5z8Uwx1AMKhWpro560w0=",
"module": "sha256-kx7oBBhnzXyu/UQCYYAs7o1Vm5uPSbOUkI4XwEpk+p4=",
"pom": "sha256-bivMHUT1ckbR03duMQ5Ybg9fTQTjrsA3eOgBCmtiDS8="
},
"org/junit/platform#junit-platform-launcher/6.0.1": {
"jar": "sha256-7nWN2wb6sf0aiQwLrkqs+NwATE82fhONv/yxE80J66w=",
"module": "sha256-QGPjXSBE9xraiSUfrtFB8KWvnOwm1uO3znI889Vz29c=",
"pom": "sha256-TNsMG5Lxon57UucN6Buik1shlBgC2MqoiOnZ4V+s/ho="
"org/junit/platform#junit-platform-engine/6.0.2": {
"jar": "sha256-MUlbdUuogrppPBn6nYh+Ya9vOFD1h0G9WMPxKd7KVRc=",
"module": "sha256-mgE8iVsXgJnmIfvNuJ3rxldDqW1i7TL4xuWfzu/BN8M=",
"pom": "sha256-6tUsFcvLoTHf7NLSrVOFjwEdfHUwCMAU/pldUolaEeI="
},
"org/junit/platform#junit-platform-launcher/6.0.2": {
"jar": "sha256-vZkQ97ykqdQFC6heHwduO4VzI51F33lnOGKqsphZV5I=",
"module": "sha256-1SKe2c1l4Uoi2Lk4Z7H7lbg/drJUUHO04LxpxOnGyi0=",
"pom": "sha256-/8xw6oNXyJK5Bbr+/g+zOZ6uktqxxNSMxbJ9EYkKUnY="
},
"org/mockito#mockito-core/5.21.0": {
"jar": "sha256-A9sj3nQsvKQqo9YSf9rOVg+sN7A22TGHCAH4TCiL0oY=",
@@ -13,13 +13,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "simple-binary-encoding";
version = "1.37.0";
version = "1.37.1";
src = fetchFromGitHub {
owner = "aeron-io";
repo = "simple-binary-encoding";
tag = finalAttrs.version;
hash = "sha256-vrXs0bZuIToBMDvWT6gp6xp8jcBUslF/6OvJWBnazu0=";
hash = "sha256-BYS1rkNPuECEs4Cjt8revUOcd/tCUUghR9JmYMfwqUw=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -102,7 +102,7 @@ let
++ lib.optionals mediaSupport [ ffmpeg_7 ]
);
version = "15.0.11";
version = "15.0.12";
sources = {
x86_64-linux = fetchurl {
@@ -112,7 +112,7 @@ let
"https://tor.eff.org/dist/torbrowser/${version}/tor-browser-linux-x86_64-${version}.tar.xz"
"https://tor.calyxinstitute.org/dist/torbrowser/${version}/tor-browser-linux-x86_64-${version}.tar.xz"
];
hash = "sha256-+1ZpJcVkqqP2WE3kyAJ7Ip3CmM2JIpUos1wgvLjND24=";
hash = "sha256-PNGPJs25t+rG2TVLiWkLd96Iuq5XkOOEextnI+V1kJY=";
};
i686-linux = fetchurl {
@@ -122,7 +122,7 @@ let
"https://tor.eff.org/dist/torbrowser/${version}/tor-browser-linux-i686-${version}.tar.xz"
"https://tor.calyxinstitute.org/dist/torbrowser/${version}/tor-browser-linux-i686-${version}.tar.xz"
];
hash = "sha256-dZeTAkmvI5+mu7u9DrUj/JTvLHE4hiNVqd5AyVbZptg=";
hash = "sha256-Kqg4UTr1IPZkB3caBKMJu2Cj0q0v8ttrhc4JNBuWDA0=";
};
};
+2 -2
View File
@@ -5,14 +5,14 @@
}:
python3Packages.buildPythonApplication (finalAttrs: {
pname = "tuxbox";
version = "3.1.1";
version = "3.1.4";
pyproject = true;
src = fetchFromGitHub {
owner = "AndyCappDev";
repo = "tuxbox";
tag = "v${finalAttrs.version}";
hash = "sha256-+fVN6z6mxgSDcmG8F3baAMfFbb5eUkt+B0tu6+ZSqKw=";
hash = "sha256-p5nQLp+O0VKA3dr4Eeq7UnMwf7Xl/7zLHce4ZeoiMNU=";
};
build-system = [ python3Packages.setuptools ];
+3 -3
View File
@@ -18,16 +18,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "uv";
version = "0.11.10";
version = "0.11.11";
src = fetchFromGitHub {
owner = "astral-sh";
repo = "uv";
tag = finalAttrs.version;
hash = "sha256-VQ67OeXM0ykJG4Wile3odGO3aeXaqAzLzfXbAKVe4oI=";
hash = "sha256-4zDknjkPdIZW42TMFW4H5B/li9Q+k/qrb/MUV+M+DbY=";
};
cargoHash = "sha256-q8qgzU/2uT+Led/njJEz0vqGUmboXhQTmG1n/MRIiNo=";
cargoHash = "sha256-zX3B1zk1V0qq2I1Sw8lb3TtRjjpKm5j/m785gJzlWqg=";
buildInputs = [
rust-jemalloc-sys
+2 -2
View File
@@ -9,14 +9,14 @@
buildGoModule (finalAttrs: {
pname = "vespa-cli";
version = "8.679.50";
version = "8.685.1";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "vespa-engine";
repo = "vespa";
tag = "v${finalAttrs.version}";
hash = "sha256-4tABoAA96HoYghIno0qbieYbE4EJZRmFIFDnoOoMIaA=";
hash = "sha256-RRuUDeHYYCbEeeaUk+lz8rv+ZG3UD/OK3HrmmuOe5HI=";
};
# case-insensitive conflicts which produce platform `vendorHash` checksumm
+4
View File
@@ -52,6 +52,7 @@
withQt ? true,
qt6,
libpcap' ? libpcap.override { withBluez = stdenv.hostPlatform.isLinux; },
withExtras ? stdenv.hostPlatform.isLinux,
}:
let
isAppBundle = withQt && stdenv.hostPlatform.isDarwin;
@@ -185,6 +186,9 @@ stdenv.mkDerivation (finalAttrs: {
postInstall = ''
cmake --install . --prefix "''${!outputDev}" --component Development
''
+ lib.optionalString withExtras ''
ln -s $out/libexec/wireshark/extcap/* -t $out/bin/
''
+ lib.optionalString isAppBundle ''
mkdir -p $out/Applications
mv $out/bin/Wireshark.app $out/Applications/Wireshark.app
+3 -3
View File
@@ -14,20 +14,20 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "zigbee2mqtt";
version = "2.10.0";
version = "2.10.1";
src = fetchFromGitHub {
owner = "Koenkk";
repo = "zigbee2mqtt";
tag = finalAttrs.version;
hash = "sha256-PwpRa6sbHyWmaIG8U0nkZqxzjKuw44Cnez8yVhuajZQ=";
hash = "sha256-UAU7yxpaCIUrjXp8uMUEPnwSRGTHNQMD9PqSIoH686Q=";
};
pnpmDeps = fetchPnpmDeps {
inherit (finalAttrs) pname version src;
pnpm = pnpm_9;
fetcherVersion = 3;
hash = "sha256-qhX7fEcxG5eFM3gM/OwMk5QSB4bnt9VS3ZxMh7VGdNw=";
hash = "sha256-QxUoTQxBscovpYWo3WdBYInHkPbvLxDSZmjNLkDllVw=";
};
nativeBuildInputs = [
@@ -1,43 +0,0 @@
{
"release_date": "2025-09-09",
"release_label": "0.6.0",
"release_product": "cublasmp",
"libcublasmp": {
"name": "NVIDIA cuBLASMp library",
"license": "cuBLASMp library",
"license_path": "libcublasmp/LICENSE.txt",
"version": "0.6.0.84",
"linux-x86_64": {
"cuda12": {
"relative_path": "libcublasmp/linux-x86_64/libcublasmp-linux-x86_64-0.6.0.84_cuda12-archive.tar.xz",
"sha256": "214a439031cc53be7d02961651e5e6ee520d80ab09b772d5a470e678477a6c57",
"md5": "2a6a91fd58b90a16a1c2b3c3e4d2bdce",
"size": "4324732"
},
"cuda13": {
"relative_path": "libcublasmp/linux-x86_64/libcublasmp-linux-x86_64-0.6.0.84_cuda13-archive.tar.xz",
"sha256": "f3892486ac72649ab5e140fd1466421e5638ce23a56a5360a42f32450fcfbf83",
"md5": "b3f96dce5e52f432a36e0a6a006f6b27",
"size": "4815848"
}
},
"cuda_variant": [
"12",
"13"
],
"linux-sbsa": {
"cuda12": {
"relative_path": "libcublasmp/linux-sbsa/libcublasmp-linux-sbsa-0.6.0.84_cuda12-archive.tar.xz",
"sha256": "6af07f02ed01eee761509ad5c733a7196520f09ce036d5d047f38a1768287080",
"md5": "f6efeba7b2e1ae8b164a69f208c5a53b",
"size": "4273376"
},
"cuda13": {
"relative_path": "libcublasmp/linux-sbsa/libcublasmp-linux-sbsa-0.6.0.84_cuda13-archive.tar.xz",
"sha256": "9c3ea75c2a2705cb415d37316a6f540dbeb021ac3dc7bf0404dac314eb098aa0",
"md5": "35bac35e00eb29a86e54bb4fb703d258",
"size": "4751836"
}
}
}
}
@@ -0,0 +1,43 @@
{
"release_date": "2026-03-24",
"release_label": "0.8.1",
"release_product": "cublasmp",
"libcublasmp": {
"name": "NVIDIA cuBLASMp library",
"license": "cuBLASMp library",
"license_path": "libcublasmp/LICENSE.txt",
"version": "0.8.1.2360",
"linux-x86_64": {
"cuda12": {
"relative_path": "libcublasmp/linux-x86_64/libcublasmp-linux-x86_64-0.8.1.2360_cuda12-archive.tar.xz",
"sha256": "25bb1de955d4fb45e25d1adc192c1f872c8a4664e10fa73129d819d0fc310889",
"md5": "5e6ef2be18d5b2688e2fcf6341e18450",
"size": "12398480"
},
"cuda13": {
"relative_path": "libcublasmp/linux-x86_64/libcublasmp-linux-x86_64-0.8.1.2360_cuda13-archive.tar.xz",
"sha256": "e13bca48bca81bd5f6e932d89f1b88e2545beb7d4284814b2b430581183df7ee",
"md5": "5b334ad87c5c0ae2a675bf4719a551ce",
"size": "6131620"
}
},
"cuda_variant": [
"12",
"13"
],
"linux-sbsa": {
"cuda12": {
"relative_path": "libcublasmp/linux-sbsa/libcublasmp-linux-sbsa-0.8.1.2360_cuda12-archive.tar.xz",
"sha256": "fe9237eaea88aa45d0eccbe0eead419d71fa6c6206dcbd3fe1e929d571bc7fb9",
"md5": "bdc0e29dff8e04c6dae79aac404df0db",
"size": "12395780"
},
"cuda13": {
"relative_path": "libcublasmp/linux-sbsa/libcublasmp-linux-sbsa-0.8.1.2360_cuda13-archive.tar.xz",
"sha256": "971b4f0e24de7171347b57204c91d204263d2d179d0048a93042aaebcea68f81",
"md5": "22a62ca1ca9d86823608f284bc307a1d",
"size": "6050756"
}
}
}
}
+2 -2
View File
@@ -1,5 +1,5 @@
import ./generic.nix rec {
version = "5.4.5";
version = "5.4.6";
tag = "v${version}";
sourceSha256 = "sha256-THGtG3gc4LnUEn8tU735dCyIKoaIxPYPzeXCvKKGRRk=";
sourceSha256 = "sha256-2riqX1H+h6710roYqa4iP/dJCY/P55OCs/Aw9K+7D7w=";
}
@@ -0,0 +1,25 @@
From 4e49b690260e40bb16ae74a951ef3562a047cfe3 Mon Sep 17 00:00:00 2001
From: azban <me@azban.net>
Date: Mon, 13 Apr 2026 18:37:00 -0600
Subject: [PATCH] fix gcc14 build
---
core/tf_psa_crypto_common.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tf-psa-crypto/core/tf_psa_crypto_common.h b/tf-psa-crypto/core/tf_psa_crypto_common.h
index 3aaf5c983..3e485d3d4 100644
--- a/tf-psa-crypto/core/tf_psa_crypto_common.h
+++ b/tf-psa-crypto/core/tf_psa_crypto_common.h
@@ -242,7 +242,7 @@ static inline void mbedtls_xor(unsigned char *r,
uint8x16_t x = veorq_u8(v1, v2);
vst1q_u8(r + i, x);
}
-#if defined(__IAR_SYSTEMS_ICC__)
+#if defined(__IAR_SYSTEMS_ICC__) || (defined(MBEDTLS_COMPILER_IS_GCC) && MBEDTLS_GCC_VERSION >= 140100)
/* This if statement helps some compilers (e.g., IAR) optimise out the byte-by-byte tail case
* where n is a constant multiple of 16.
* For other compilers (e.g. recent gcc and clang) it makes no difference if n is a compile-time
--
2.51.2
+15
View File
@@ -0,0 +1,15 @@
{ callPackage, fetchurl }:
callPackage ./generic.nix {
version = "4.1.0";
hash = "sha256-TA1uka13So8URttw+JJVdKIL+IonkhIQSc0IfraXpIM=";
patches = [
# Fixes the build with GCC 14 on aarch64.
#
# See:
# * <https://github.com/openwrt/openwrt/pull/15479>
# * <https://github.com/Mbed-TLS/mbedtls/issues/9003>
./0001-fix-gcc14-build.patch
];
}
+19 -5
View File
@@ -10,6 +10,7 @@
ninja,
perl, # Project uses Perl for scripting and testing
python3,
python3Packages,
enableThreading ? true, # Threading can be disabled to increase security https://tls.mbed.org/kb/development/thread-safety-and-multi-threading
}:
@@ -34,6 +35,10 @@ stdenv.mkDerivation rec {
ninja
perl
python3
]
++ lib.optionals (lib.versionAtLeast version "4.0") [
python3Packages.jinja2
python3Packages.jsonschema
];
strictDeps = true;
@@ -41,18 +46,27 @@ stdenv.mkDerivation rec {
# trivialautovarinit on clang causes test failures
hardeningDisable = lib.optional stdenv.cc.isClang "trivialautovarinit";
postConfigure = lib.optionalString enableThreading ''
perl scripts/config.pl set MBEDTLS_THREADING_C # Threading abstraction layer
perl scripts/config.pl set MBEDTLS_THREADING_PTHREAD # POSIX thread wrapper layer for the threading layer.
'';
postConfigure =
lib.optionalString (enableThreading && lib.versionOlder version "4.0") ''
perl scripts/config.pl set MBEDTLS_THREADING_C # Threading abstraction layer
perl scripts/config.pl set MBEDTLS_THREADING_PTHREAD # POSIX thread wrapper layer for the threading layer.
''
+ lib.optionalString (enableThreading && lib.versionAtLeast version "4.0") ''
python scripts/config.py set MBEDTLS_THREADING_C # Threading abstraction layer
python scripts/config.py set MBEDTLS_THREADING_PTHREAD # POSIX thread wrapper layer for the threading layer.
'';
cmakeFlags = [
"-DUSE_SHARED_MBEDTLS_LIBRARY=${if stdenv.hostPlatform.isStatic then "off" else "on"}"
]
++ lib.optionals (lib.versionOlder version "4.0") [
# Avoid a dependency on jsonschema and jinja2 by not generating source code
# using python. In releases, these generated files are already present in
# the repository and do not need to be regenerated. See:
# https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.3.0 below "Requirement changes".
# This does not work out of the box on 4.1.0 and creates a significant amount of complexity to reproduce.
# Possible related issue: https://github.com/Mbed-TLS/mbedtls/issues/10678
"-DGEN_FILES=off"
]
++ lib.optionals stdenv.cc.isGNU [
@@ -24,13 +24,13 @@ assert (
stdenv.mkDerivation rec {
pname = "simple-dftd3";
version = "1.2.1";
version = "1.3.2";
src = fetchFromGitHub {
owner = "dftd3";
repo = "simple-dftd3";
tag = "v${version}";
hash = "sha256-c4xctcMcPQ70ippqbwtinygmnZ5en6ZGF5/v0ZWtzys=";
hash = "sha256-h9KFqZOfH7c7hntfL/C5WG9HVof64O4U1BNCCOuQhpA=";
};
patches = [
@@ -9,10 +9,13 @@
pyscf,
ase,
pytestCheckHook,
meson-python,
meson,
setuptools,
pkg-config,
}:
buildPythonPackage {
format = "setuptools";
inherit (simple-dftd3)
pname
version
@@ -20,12 +23,21 @@ buildPythonPackage {
meta
;
# pytest is also required for installation, not only testing
nativeBuildInputs = [ pytestCheckHook ];
pyproject = true;
build-system = [
meson-python
setuptools
];
nativeBuildInputs = [
pkg-config
meson
];
buildInputs = [ simple-dftd3 ];
propagatedBuildInputs = [
dependencies = [
cffi
numpy
toml
@@ -35,6 +47,7 @@ buildPythonPackage {
ase
qcengine
pyscf
pytestCheckHook
];
preConfigure = ''
@@ -22,7 +22,6 @@ deployAndroidPackage {
[
glibc
libcxx
libGL
libpulseaudio
libtiff
libuuid
@@ -78,10 +77,12 @@ deployAndroidPackage {
lib.makeLibraryPath [
pkgs.dbus
pkgs.systemd
pkgs.libGL
]
} \
--set QT_XKB_CONFIG_ROOT ${pkgs.xkeyboard_config}/share/X11/xkb \
--set QTCOMPOSE ${pkgs.libx11.out}/share/X11/locale
--set QTCOMPOSE ${pkgs.libx11.out}/share/X11/locale \
--set-default VK_ADD_DRIVER_FILES /run/opengl-driver/share/vulkan/icd.d
'')
+ ''
mkdir -p $out/bin
@@ -1,51 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
ocaml,
findlib,
ocamlbuild,
ctypes,
libsodium,
}:
stdenv.mkDerivation rec {
pname = "ocaml${ocaml.version}-sodium";
version = "0.6.0";
src = fetchFromGitHub {
owner = "dsheets";
repo = "ocaml-sodium";
rev = version;
sha256 = "124gpi1jhac46x05gp5viykyrafnlp03v1cmkl13c6pgcs8w04pv";
};
patches = [
# ctypes.stubs no longer pulls in bigarray automatically
./lib-gen-link-bigarray.patch
];
nativeBuildInputs = [
ocaml
findlib
ocamlbuild
];
propagatedBuildInputs = [
ctypes
libsodium
];
strictDeps = true;
createFindlibDestdir = true;
hardeningDisable = lib.optional stdenv.hostPlatform.isDarwin "strictoverflow";
meta = {
homepage = "https://github.com/dsheets/ocaml-sodium";
description = "Binding to libsodium 1.0.9+";
inherit (ocaml.meta) platforms;
maintainers = [ lib.maintainers.rixed ];
broken = lib.versionAtLeast ocaml.version "5.0";
};
}
@@ -1,7 +0,0 @@
diff --git a/lib_gen/_tags b/lib_gen/_tags
index 7a7e632..7a4e0b7 100644
--- a/lib_gen/_tags
+++ b/lib_gen/_tags
@@ -1 +1 @@
-<*.{ml,byte,native}>: package(ctypes.stubs)
+<*.{ml,byte,native}>: package(ctypes.stubs), package(bigarray)
@@ -130,6 +130,11 @@ buildPythonPackage (finalAttrs: {
++ lib.optionals stdenv.hostPlatform.isDarwin [
# RuntimeError: 'accelerate-launch /nix/store/a7vhm7b74a7bmxc35j26s9iy1zfaqjs...
"test_accelerate_test"
# torch.mps does not expose a module-level set_device; keep skipped until
# the upstream fix lands: https://github.com/huggingface/accelerate/pull/4028
"test_env_var_device"
"test_init_trackers"
"test_init_trackers"
"test_log"
@@ -1,27 +1,26 @@
{
lib,
aiohttp,
async-timeout,
buildPythonPackage,
fetchFromGitHub,
setuptools,
}:
buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
pname = "airthings-cloud";
version = "0.2.0";
format = "setuptools";
version = "0.3.0";
pyproject = true;
src = fetchFromGitHub {
owner = "Danielhiversen";
repo = "pyAirthings";
tag = version;
hash = "sha256-HdH/z5xsumOXU0ZYOUc8LHpjKGkfp5e5yGER+Nm8xB4=";
tag = finalAttrs.version;
hash = "sha256-8fB8bQ7GHPnNk4lVtP5yZ6ys3J2R+olqSPCPpGquWRk=";
};
propagatedBuildInputs = [
aiohttp
async-timeout
];
build-system = [ setuptools ];
dependencies = [ aiohttp ];
# Project has no tests
doCheck = false;
@@ -31,8 +30,8 @@ buildPythonPackage rec {
meta = {
description = "Python module for Airthings";
homepage = "https://github.com/Danielhiversen/pyAirthings";
changelog = "https://github.com/Danielhiversen/pyAirthings/releases/tag/${version}";
license = with lib.licenses; [ mit ];
changelog = "https://github.com/Danielhiversen/pyAirthings/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
};
}
})
@@ -0,0 +1,187 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
torch,
# buildInputs
pybind11,
# nativeBuildInputs
writableTmpDirAsHomeHook,
# dependencies
cxxfilt,
numpy,
packaging,
pytest,
pyyaml,
tqdm,
# tests
onnxscript,
pytestCheckHook,
torchvision,
apex,
cudaPackages,
cudaSupport ? torch.cudaSupport,
}:
buildPythonPackage.override { inherit (torch) stdenv; } (finalAttrs: {
pname = "apex";
version = "25.09";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "nvidia";
repo = "apex";
tag = finalAttrs.version;
hash = "sha256-/WcFCDjNXWbCnWoprYYAUcLt9p1CqJLzPXcBkPn+ics=";
};
patches = [
# Fix incompatibility with more recent versions of cudnn to de-vendor it:
# error: throw_if is not a member of cudnn_frontend
./fix-cudnn-frontend-compat.patch
];
# Don't use git submodules for cuda dependencies
postPatch = ''
substituteInPlace setup.py \
--replace-fail \
'subprocess.run(["git", "submodule", "update", "--init", "apex/contrib/csrc/multihead_attn/cutlass"])' \
"" \
--replace-fail \
'subprocess.run(["git", "submodule", "update", "--init", "apex/contrib/csrc/cudnn-frontend/"])' \
""
'';
env = {
APEX_CPP_EXT = 1;
}
// lib.optionalAttrs cudaSupport {
CUDA_HOME = (lib.getBin cudaPackages.cuda_nvcc).outPath;
TORCH_CUDA_ARCH_LIST = "${lib.concatStringsSep ";" torch.cudaCapabilities}";
# Even if APEX_ALL_CONTRIB_EXT is enabled, APEX_CUDA_EXT must be explicitly enable
APEX_CUDA_EXT = 1;
# Enable all contrib extensions at once
# https://github.com/NVIDIA/apex/tree/25.09#custom-ccuda-extensions-and-install-options
APEX_ALL_CONTRIB_EXT = 1;
NVCC_APPEND_FLAGS = lib.toString [
# Make kernel compilation slightly more parallel
"--threads 2"
];
};
preBuild = ''
export APEX_PARALLEL_BUILD=$NIX_BUILD_CORES
'';
build-system = [
setuptools
torch
];
buildInputs = [
pybind11
]
++ lib.optionals cudaSupport (
with cudaPackages;
[
cuda_cudart # cuda_runtime.h
cuda_profiler_api # cuda_profiler_api.h
cudnn # cudnn.h
cudnn-frontend # cudnn_frontend.h
cutlass # cutlass/cutlass.h
libcublas # cublas_v2.h
libcufile # cufile.h
libcurand # curand_kernel.h
libcusolver # cusolverDn.h
libcusparse # cusparse.h
nccl # nccl.h
]
);
nativeBuildInputs = [
writableTmpDirAsHomeHook
];
dependencies = [
cxxfilt
numpy
packaging
pytest
pyyaml
tqdm
];
pythonImportsCheck = [
"apex"
"apex_C"
]
++ lib.optionals cudaSupport [
"_apex_gpu_direct_storage"
"_apex_nccl_allocator"
"amp_C"
"apex_C"
"bnp"
"fmhalib"
"fused_layer_norm_cuda"
"nccl_p2p_cuda"
"syncbn"
];
nativeCheckInputs = [
onnxscript
pytestCheckHook
torchvision
];
preCheck = ''
rm -rf apex
''
# Otherwise, test collection fails with:
# ModuleNotFoundError: No module named 'test_fused_optimizer'
+ ''
rm tests/L0/run_optimizers/__init__.py
'';
doCheck = false;
disabledTestPaths = [
# Try to read the driver version from nvidia-smi (failing in the sandbox)
# TypeError: expected string or bytes-like object, got 'NoneType'
"tests/L0/run_transformer/"
# apex.parallel was removed in https://github.com/NVIDIA/apex/pull/1896, but some tests still
# try to import it
"tests/distributed/DDP/ddp_race_condition_test.py"
"tests/distributed/synced_batchnorm/"
];
disabledTests = [
# RuntimeError: The tensor has a non-zero number of elements, but its data is not allocated yet.
# torch.onnx._internal.exporter._errors.TorchExportError: Failed to export the model with torch.export.
"test_layer_norm_export_cuda"
"test_rms_export_cuda"
];
passthru.gpuCheck = apex.overridePythonAttrs {
requiredSystemFeatures = [ "cuda" ];
doCheck = true;
};
meta = {
description = "Tools for easy mixed precision and distributed training in Pytorch";
homepage = "https://github.com/nvidia/apex";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ GaetanLepage ];
broken = !cudaSupport;
};
})
@@ -0,0 +1,201 @@
diff --git a/apex/contrib/csrc/bottleneck/bottleneck.cpp b/apex/contrib/csrc/bottleneck/bottleneck.cpp
index e80607c..b85e3fe 100644
--- a/apex/contrib/csrc/bottleneck/bottleneck.cpp
+++ b/apex/contrib/csrc/bottleneck/bottleneck.cpp
@@ -621,7 +621,7 @@ run_conv_scale_bias_add_activation(int64_t* x_dim_padded,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -749,7 +749,7 @@ run_conv_scale_bias(int64_t* x_dim_padded,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -877,7 +877,7 @@ run_dconv_drelu_dscale(int64_t* x_dim_padded,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -983,7 +983,7 @@ run_dconv(int64_t* x_dim_padded,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -1093,7 +1093,7 @@ run_dconv_add(int64_t* x_dim_padded,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -2242,7 +2242,7 @@ run_conv_add_scale_bias_activation(int64_t* x_dim_padded,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -2497,7 +2497,7 @@ run_conv_scale_bias_add_activation_mask(int64_t* x_dim_padded,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} else {
std::array<cudnn_frontend::Operation const*, 9> ops = {&conv_op, &scale_op, &bias_op, &act_op, &genIndex_op, &lessThan_op, &greaterThan_op, &logicalOr_op, &selection_op};
@@ -2532,7 +2532,7 @@ run_conv_scale_bias_add_activation_mask(int64_t* x_dim_padded,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
}
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
@@ -2679,7 +2679,7 @@ run_dconv_add_drelu_dscale(int64_t* x_dim_padded,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -2898,7 +2898,7 @@ run_dconv_drelu_dscale_mask(int64_t* x_dim_padded,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
diff --git a/apex/contrib/csrc/conv_bias_relu/conv_bias_relu.cpp b/apex/contrib/csrc/conv_bias_relu/conv_bias_relu.cpp
index 5fbe537..14be67b 100644
--- a/apex/contrib/csrc/conv_bias_relu/conv_bias_relu.cpp
+++ b/apex/contrib/csrc/conv_bias_relu/conv_bias_relu.cpp
@@ -345,7 +345,7 @@ run_conv_bias(int64_t* x_dim,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -562,7 +562,7 @@ run_conv_bias_mask_relu(int64_t* x_dim,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -781,7 +781,7 @@ run_conv_cscale_cbias_relu(int64_t* x_dim,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -961,7 +961,7 @@ run_conv_bias_relu(int64_t* x_dim,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -1107,7 +1107,7 @@ run_drelu_dscale(int64_t* dy_dim,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -1241,7 +1241,7 @@ run_drelu_dbias(int64_t* dy_dim,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -1418,7 +1418,7 @@ run_dconv_drelu_dbias(int64_t* x_dim,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -1548,7 +1548,7 @@ run_dconv(int64_t* x_dim,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
@@ -1638,7 +1638,7 @@ run_dbias(int64_t* x_dim,
DEBUG_CUDNN_MSG(log_buf, "variantPack " << variantPack.describe());
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
checkCudnnErr(status);
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
} catch (cudnn_frontend::cudnnException e) {
std::cout << log_buf.str() << "[ERROR] Exception " << e.what() << std::endl;
}
diff --git a/apex/contrib/csrc/cudnn_gbn/norm_sample.cpp b/apex/contrib/csrc/cudnn_gbn/norm_sample.cpp
index e145021..ea2eafc 100644
--- a/apex/contrib/csrc/cudnn_gbn/norm_sample.cpp
+++ b/apex/contrib/csrc/cudnn_gbn/norm_sample.cpp
@@ -273,7 +273,7 @@ void execute_batch_norm_forward(cudnn_frontend::ExecutionPlan plan,
.build();
//std::cout << "variantPack " << variantPack.describe() << std::endl;
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
// Reset local communication buffer
cudaMemsetAsync(peer_devPtrs[rank_id], 0, peer_size*4, stream);
@@ -463,7 +463,7 @@ void execute_batch_norm_backward(cudnn_frontend::ExecutionPlan plan,
.build();
cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc());
- cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error", status);
+ if (status != CUDNN_STATUS_SUCCESS) { throw cudnn_frontend::cudnnException("Plan execute error", status); }
// Reset local communication buffer
cudaMemsetAsync(peer_devPtrs[rank_id], 0, peer_size*4, stream);
@@ -12,6 +12,7 @@
more-itertools,
pydantic,
pytestCheckHook,
pythonAtLeast,
pyyaml,
typing-extensions,
}:
@@ -21,6 +22,10 @@ buildPythonPackage (finalAttrs: {
version = "0.10.5";
pyproject = true;
# This project uses pydantic.v1 which doesn't support Python 3.14 or later:
# https://pydantic.dev/articles/pydantic-v2-12-release#support-for-python-314
disabled = pythonAtLeast "3.14";
src = fetchFromGitHub {
owner = "dbt-labs";
repo = "dbt-semantic-interfaces";
@@ -14,14 +14,14 @@
buildPythonPackage (finalAttrs: {
pname = "elevenlabs";
version = "2.45.0";
version = "2.46.0";
pyproject = true;
src = fetchFromGitHub {
owner = "elevenlabs";
repo = "elevenlabs-python";
tag = "v${finalAttrs.version}";
hash = "sha256-E9+hlFfDx1pBEMPcsx1vuawkbmsgCDv3s+/JYqVUu3U=";
hash = "sha256-l5+UaTT+oyiQoBpIgFGsuzB6oUZcmX2vcz8ls2MeOnc=";
};
build-system = [ poetry-core ];
@@ -19,19 +19,20 @@
buildPythonPackage (finalAttrs: {
pname = "obstore";
version = "0.9.1";
version = "0.9.4";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "developmentseed";
repo = "obstore";
tag = "py-v${finalAttrs.version}";
hash = "sha256-1zMIcr36VrNX3GT4k7w4sIhAwQSWUuuomf73fnCwueY=";
hash = "sha256-u2o0ymusn/pWrEn8kK/kiE95VcmMln6StkDPBam+6u0=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-6kKTLU1YazLpE5V/LqCLC1m8futx8C/X3gkeg8yV3ac=";
hash = "sha256-ZOYTGklsla89I1K2sI46AWy2xGfSfBVmnBcbCdSLKkg=";
};
build-system = [
@@ -0,0 +1,45 @@
{
lib,
bleak,
bleak-retry-connector,
buildPythonPackage,
fetchFromGitHub,
pytest-asyncio,
pytestCheckHook,
setuptools,
}:
buildPythonPackage (finalAttrs: {
pname = "pycasperglow";
version = "1.2.0";
pyproject = true;
src = fetchFromGitHub {
owner = "mikeodr";
repo = "pycasperglow";
tag = "v${finalAttrs.version}";
hash = "sha256-sLjEo8GSGBtx0GDAHQZad5ePQAwzChdmBE5TU+ebuFI=";
};
build-system = [ setuptools ];
dependencies = [
bleak
bleak-retry-connector
];
nativeCheckInputs = [
pytest-asyncio
pytestCheckHook
];
pythonImportsCheck = [ "pycasperglow" ];
meta = {
description = "Async Python library for controlling Casper Glow lights via BLE";
homepage = "https://github.com/mikeodr/pycasperglow";
changelog = "https://github.com/mikeodr/pycasperglow/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.jamiemagee ];
};
})
@@ -17,14 +17,14 @@
buildPythonPackage (finalAttrs: {
pname = "pyportainer";
version = "1.0.38";
version = "1.0.39";
pyproject = true;
src = fetchFromGitHub {
owner = "erwindouna";
repo = "pyportainer";
tag = "v${finalAttrs.version}";
hash = "sha256-A0CuOBh22VonBzGYM/1tTK/w4bZMEHMOYSIRdQ8JBwg=";
hash = "sha256-vFyeCSv7dP51wdkcviGfjzbKsMNUx4n+7NZJuqg7dVA=";
};
build-system = [ hatchling ];
@@ -24,7 +24,7 @@
buildPythonPackage {
pname = "pyscf";
version = "2.12.1-unstable-2026-03-21";
version = "2.13.0";
format = "setuptools";
src = fetchFromGitHub {
@@ -12,14 +12,14 @@
buildPythonPackage (finalAttrs: {
pname = "teltasync";
version = "0.2.0";
version = "0.3.1";
pyproject = true;
src = fetchFromCodeberg {
owner = "dmho";
repo = "teltasync";
tag = "v${finalAttrs.version}";
hash = "sha256-skTJyWkDplgGJ5al6YMVnFAo1Js1yc5ViKUiPm9hhJg=";
hash = "sha256-TXVdOT0EAwza/rgLPjMnBUCuq+2PwLoRAXvYTz2CT+0=";
};
postPatch = ''
File diff suppressed because it is too large Load Diff
@@ -908,11 +908,12 @@
home-assistant-intents
ifaddr
mutagen
pycasperglow
pymicro-vad
pyspeex-noise
serialx
zeroconf
]; # missing inputs: pycasperglow
];
"cast" =
ps: with ps; [
aiohasupervisor
@@ -7565,6 +7566,7 @@
"cambridge_audio"
"camera"
"canary"
"casper_glow"
"cast"
"ccm15"
"cert_expiry"
@@ -0,0 +1,29 @@
{
lib,
buildHomeAssistantComponent,
fetchFromGitHub,
jinja2,
}:
buildHomeAssistantComponent rec {
owner = "thomasloven";
domain = "lovelace_gen";
version = "0.1.3";
src = fetchFromGitHub {
owner = "thomasloven";
repo = "hass-lovelace_gen";
tag = version;
hash = "sha256-YGqvdoOs9/Etfldoee3mgDQjtveLa/LovwX/IduYyjg=";
};
dependencies = [ jinja2 ];
meta = with lib; {
changelog = "https://github.com/thomasloven/hass-lovelace_gen/releases/tag/${version}";
description = "Improve the lovelace yaml parser for Home Assistant";
homepage = "https://github.com/thomasloven/hass-lovelace_gen";
license = licenses.mit;
maintainers = with maintainers; [ jpinz ];
};
}
-117
View File
@@ -1,117 +0,0 @@
# Tests for nixpkgs config forwarding from NixOS modules.
#
# Run with:
# nix-unit pkgs/test/config-nix-unit.nix
# or
# nix-build -A tests.config-nix-unit
#
{
nixpkgsPath ? ../..,
pkgs ? import nixpkgsPath { },
}:
let
lib = pkgs.lib;
# Test helper
evalNixos =
modules:
import (nixpkgsPath + "/nixos/lib/eval-config.nix") {
modules = [ { nixpkgs.hostPlatform = "x86_64-linux"; } ] ++ modules;
};
in
{
# Basic: a single config option is forwarded correctly.
testSingleConfigOption = {
expr = (evalNixos [ { nixpkgs.config.allowUnfree = true; } ]).config.nixpkgs.config.allowUnfree;
expected = true;
};
# Multiple config definitions from separate modules are merged.
testMultipleModulesMerge = {
expr =
let
eval = evalNixos [
{ nixpkgs.config.allowUnfree = true; }
{ nixpkgs.config.allowBroken = true; }
];
in
{
inherit (eval.config.nixpkgs.config) allowUnfree allowBroken;
};
expected = {
allowUnfree = true;
allowBroken = true;
};
};
# mkForce works. Also covers other properties
testMkForce = {
expr =
(evalNixos [
{ nixpkgs.config.allowUnfree = true; }
{ nixpkgs.config.allowUnfree = lib.mkForce false; }
]).config.nixpkgs.config.allowUnfree;
expected = false;
};
testDefaults = {
expr = (evalNixos [ ]).config.nixpkgs.config.allowUnfree;
expected = false;
};
# Standalone nixpkgs (i.e. import <nixpkgs> { ... })
testStandaloneConfig = {
expr = (import nixpkgsPath { config.allowUnfree = true; }).config.allowUnfree;
expected = true;
};
# Standalone nixpkgs with a function (i.e. import <nixpkgs> ({pkgs, lib, ...}: { ... })
testStandaloneConfigFunctionPkgs = {
expr =
(import nixpkgsPath {
config =
{ pkgs, lib, ... }:
{
allowUnfree = lib.isAttrs pkgs;
};
}).config.allowUnfree;
expected = true;
};
# NixOS module sets nixpkgs.config as a function
testNixosConfigFunction = {
expr =
(evalNixos [
{
nixpkgs.config =
{ lib, ... }:
{
allowUnfree = lib.isFunction lib.id;
};
}
]).config.nixpkgs.config.allowUnfree;
expected = true;
};
# Passing both config and _configDefinitions is not allowed
testConfigAndDefinitionsMutuallyExclusive = {
expr =
(import nixpkgsPath {
config = {
allowUnfree = true;
};
_configDefinitions = [
{
file = "test";
value = {
allowBroken = true;
};
}
];
}).config.allowUnfree;
expectedError = {
type = "ThrownError";
msg = ".*_configDefinitions.*internal.*must not be combined.*";
};
};
}
-15
View File
@@ -128,21 +128,6 @@ in
config = callPackage ./config.nix { };
# Technically nix-unit binds to a fixed nix version
# We have tests in lib to test the module system itself against different nix-versions
# Based on this assumption (transitivity of correctness) this test should therefore also cover all tested nix-versions
config-nix-unit =
pkgs.runCommand "config-nix-unit"
{
nativeBuildInputs = [ pkgs.nix-unit ];
}
''
export HOME=$TMPDIR
nix-unit --eval-store "$HOME" ${./config-nix-unit.nix} \
--arg nixpkgsPath "${../..}"
mkdir $out
'';
top-level = callPackage ./top-level { };
haskell = callPackage ./haskell { };
+1
View File
@@ -298,6 +298,7 @@ mapAliases {
androidndkPkgs_25 = throw "androidndkPkgs_25 has been removed, as it is EOL"; # Added 2025-08-09
androidndkPkgs_26 = throw "androidndkPkgs_26 has been removed, as it is EOL"; # Added 2025-08-09
anew = throw "'anew' has been removed, as it has been unmaintained upstream since March 2022"; # Added 2026-01-01
anime-downloader = throw "'anime-downloader' has been removed as it was broken and unmaintained. Consider using 'animdl' instead"; # Added 2026-05-03
anonymousPro = anonymous-pro-fonts; # Added 2026-02-08
ansible-later = throw "ansible-later has been discontinued. The author recommends switching to ansible-lint"; # Added 2025-08-24
ansible_2_16 = throw "ansible_2_16 has been removed, as it is EOL"; # Added 2025-11-10
+12
View File
@@ -2686,6 +2686,17 @@ with pkgs;
nanoemoji = with python3Packages; toPythonApplication nanoemoji;
buildNavidromePlugin = callPackage ../by-name/na/navidrome/plugins/build-plugin.nix { };
navidromePlugins = recurseIntoAttrs (
lib.makeExtensible (
self:
lib.packagesFromDirectoryRecursive {
inherit callPackage;
directory = ../by-name/na/navidrome/plugins;
}
)
);
netdata = callPackage ../tools/system/netdata {
protobuf = protobuf_21;
};
@@ -6797,6 +6808,7 @@ with pkgs;
mbedtls_2 = callPackage ../development/libraries/mbedtls/2.nix { };
mbedtls = callPackage ../development/libraries/mbedtls/3.nix { };
mbedtls_4 = callPackage ../development/libraries/mbedtls/4.nix { };
simple-dftd3 = callPackage ../development/libraries/science/chemistry/simple-dftd3 { };
+9 -31
View File
@@ -6,12 +6,7 @@
# nix-build -A tests.config
#
{
config,
lib,
docPrefix,
...
}:
{ config, lib, ... }:
let
inherit (lib)
@@ -120,13 +115,13 @@ let
gitConfig = mkOption {
type = types.attrsOf (types.attrsOf types.anything);
description = ''
The default [git configuration](https://git-scm.com/docs/git-config#_variables) for all [`pkgs.fetchgit`](${docPrefix}#fetchgit) calls.
The default [git configuration](https://git-scm.com/docs/git-config#_variables) for all [`pkgs.fetchgit`](#fetchgit) calls.
Among many other potential uses, this can be used to override URLs to point to local mirrors.
Changing this will not cause any rebuilds because `pkgs.fetchgit` produces a [fixed-output derivation](https://nix.dev/manual/nix/stable/glossary.html?highlight=fixed-output%20derivation#gloss-fixed-output-derivation).
To set the configuration file directly, use the [`gitConfigFile`](${docPrefix}#opt-gitConfigFile) option instead.
To set the configuration file directly, use the [`gitConfigFile`](#opt-gitConfigFile) option instead.
To set the configuration file for individual calls, use `fetchgit { gitConfigFile = "..."; }`.
'';
@@ -140,9 +135,9 @@ let
gitConfigFile = mkOption {
type = types.nullOr types.path;
description = ''
A path to a [git configuration](https://git-scm.com/docs/git-config#_variables) file, to be used for all [`pkgs.fetchgit`](${docPrefix}#fetchgit) calls.
A path to a [git configuration](https://git-scm.com/docs/git-config#_variables) file, to be used for all [`pkgs.fetchgit`](#fetchgit) calls.
This overrides the [`gitConfig`](${docPrefix}#opt-gitConfig) option, see its documentation for more details.
This overrides the [`gitConfig`](#opt-gitConfig) option, see its documentation for more details.
'';
default =
if config.gitConfig != { } then
@@ -160,7 +155,7 @@ let
For example, an override like `"registry.npmjs.org" = "my-mirror.local/registry.npmjs.org"` will replace a URL like `https://registry.npmjs.org/foo.tar.gz` with `https://my-mirror.local/registry.npmjs.org/foo.tar.gz`.
To set the string directly, see [`npmRegistryOverridesString`](${docPrefix}#opt-npmRegistryOverridesString).
To set the string directly, see [`npmRegistryOverridesString`](#opt-npmRegistryOverridesString).
'';
default = { };
example = {
@@ -179,7 +174,7 @@ let
description = ''
A string containing a string with a JSON representation of npm registry overrides for `fetchNpmDeps`.
This overrides the [`npmRegistryOverrides`](${docPrefix}#opt-npmRegistryOverrides) option, see its documentation for more details.
This overrides the [`npmRegistryOverrides`](#opt-npmRegistryOverrides) option, see its documentation for more details.
'';
default = builtins.toJSON config.npmRegistryOverrides;
};
@@ -417,7 +412,7 @@ let
type = types.listOf types.str;
default = [ "https://tarballs.nixos.org" ];
description = ''
The set of content-addressed/hashed mirror URLs used by [`pkgs.fetchurl`](${docPrefix}#sec-pkgs-fetchers-fetchurl).
The set of content-addressed/hashed mirror URLs used by [`pkgs.fetchurl`](#sec-pkgs-fetchers-fetchurl).
In case `pkgs.fetchurl` can't download from the given URLs,
it will try the hashed mirrors based on the expected output hash.
@@ -471,27 +466,11 @@ let
Silence the warning for the upcoming deprecation of the
`x86_64-darwin` platform in Nixpkgs 26.11.
See the [release notes](${docPrefix}#x86_64-darwin-26.05) for more
See the [release notes](#x86_64-darwin-26.05) for more
information.
'';
};
packageOverrides = mkOption {
type = types.functionTo types.attrs;
default = pkgs: { };
description = ''
A function to replace or add packages in `pkgs` expects an attrset to be returned when called.
'';
};
perlPackageOverrides = mkOption {
type = types.functionTo types.attrs;
default = pkgs: { };
description = ''
The same as `packageOverrides` but for packages in the perl package set.
'';
};
problems = (import ../stdenv/generic/problems.nix { inherit lib; }).configOptions;
};
@@ -515,7 +494,6 @@ in
inherit options;
config = {
_module.args.docPrefix = lib.mkDefault "";
warnings =
optionals config.warnUndeclaredOptions (
mapAttrsToList (k: v: "undeclared Nixpkgs option set: config.${k}") config._undeclared or { }
+6 -6
View File
@@ -23,7 +23,7 @@ let
inherit (cudaPackages_12_6.backendStdenv) hasJetsonCudaCapability hostPlatform;
in
mkCudaPackages {
cublasmp = "0.6.0";
cublasmp = "0.8.1";
cuda = "12.6.3";
cudnn = "9.13.0";
cudss = "0.6.0";
@@ -50,7 +50,7 @@ let
inherit (cudaPackages_12_8.backendStdenv) hasJetsonCudaCapability hostPlatform;
in
mkCudaPackages {
cublasmp = "0.6.0";
cublasmp = "0.8.1";
cuda = "12.8.1";
cudnn = "9.13.0";
cudss = "0.6.0";
@@ -77,7 +77,7 @@ let
inherit (cudaPackages_12_9.backendStdenv) hasJetsonCudaCapability hostPlatform;
in
mkCudaPackages {
cublasmp = "0.6.0";
cublasmp = "0.8.1";
cuda = "12.9.1";
cudnn = "9.13.0";
cudss = "0.6.0";
@@ -107,7 +107,7 @@ let
inherit (cudaPackages_13_0.backendStdenv) requestedJetsonCudaCapabilities;
in
mkCudaPackages {
cublasmp = "0.6.0";
cublasmp = "0.8.1";
cuda = "13.0.3";
cudnn = "9.13.0";
cudss = "0.6.0";
@@ -129,7 +129,7 @@ let
inherit (cudaPackages_13_1.backendStdenv) requestedJetsonCudaCapabilities;
in
mkCudaPackages {
cublasmp = "0.6.0";
cublasmp = "0.8.1";
cuda = "13.1.1";
cudnn = "9.13.0";
cudss = "0.6.0";
@@ -151,7 +151,7 @@ let
inherit (cudaPackages_13_2.backendStdenv) requestedJetsonCudaCapabilities;
in
mkCudaPackages {
cublasmp = "0.6.0";
cublasmp = "0.8.1";
cuda = "13.2.0";
cudnn = "9.13.0";
cudss = "0.6.0";
+10 -25
View File
@@ -64,11 +64,6 @@ in
# list it returns.
stdenvStages ? import ../stdenv,
# Temporary parameter to unify nixpkgs/pkgs evaluation
# Internal, do not use this manually!
# Will be removed again within the next releases
_configDefinitions ? null,
# Ignore unexpected args.
...
}@args:
@@ -114,13 +109,7 @@ let
then
x86_64DarwinDeprecationWarning
else
x:
x throwIfNot (lib.all lib.isFunction crossOverlays)
"All crossOverlays passed to nixpkgs must be functions."
)
(
throwIfNot (_configDefinitions == null || config0 == { })
"The `_configDefinitions` argument is an internal interface and must not be combined with `config`."
x: x
);
localSystem = lib.systems.elaborate args.localSystem;
@@ -145,24 +134,20 @@ let
# Allow both:
# { /* the config */ } and
# { lib, pkgs, ... } : { /* the config */ }
# { pkgs, ... } : { /* the config */ }
config1 = if lib.isFunction config0 then config0 { inherit lib pkgs; } else config0;
configEval = lib.evalModules {
modules = [
./config.nix
]
++ (
if _configDefinitions != null then
map (def: lib.modules.setDefaultModuleLocation def.file def.value) _configDefinitions
else
[
{
_file = "nixpkgs.config";
config = config1;
}
]
);
(
{ options, ... }:
{
_file = "nixpkgs.config";
config = config1;
}
)
];
class = "nixpkgsConfig";
};
-2
View File
@@ -2029,8 +2029,6 @@ let
mdx = mdx.override { inherit logs; };
};
sodium = callPackage ../development/ocaml-modules/sodium { };
sosa = callPackage ../development/ocaml-modules/sosa { };
soundtouch = callPackage ../development/ocaml-modules/soundtouch {
+4
View File
@@ -858,6 +858,8 @@ self: super: with self; {
apcaccess = callPackage ../development/python-modules/apcaccess { };
apex = callPackage ../development/python-modules/apex { };
apeye = callPackage ../development/python-modules/apeye { };
apeye-core = callPackage ../development/python-modules/apeye-core { };
@@ -13518,6 +13520,8 @@ self: super: with self; {
pycasbin = callPackage ../development/python-modules/pycasbin { };
pycasperglow = callPackage ../development/python-modules/pycasperglow { };
pycatch22 = callPackage ../development/python-modules/pycatch22 { };
pycayennelpp = callPackage ../development/python-modules/pycayennelpp { };