Merge master into staging-next

Changed files
+440 -101
nixos
modules
services
home-automation
security
tests
pkgs
by-name
ch
chatzone-desktop
cl
clash-verge-rev
cm
cmatrix
cr
crosvm
dp
ev
op
sp
ta
desktops
xfce
core
thunar
panel-plugins
xfce4-pulseaudio-plugin
development
python-modules
aiorussound
dio-chacon-wifi-api
pyscf
pysmartthings
torcheval
servers
+1
nixos/modules/module-list.nix
···
./services/security/nginx-sso.nix
./services/security/oauth2-proxy.nix
./services/security/oauth2-proxy-nginx.nix
+
./services/security/openbao.nix
./services/security/opensnitch.nix
./services/security/paretosecurity.nix
./services/security/pass-secret-service.nix
+1
nixos/modules/services/home-automation/evcc.nix
···
"AF_INET"
"AF_INET6"
"AF_UNIX"
+
"AF_NETLINK"
];
RestrictNamespaces = true;
RestrictRealtime = true;
+160
nixos/modules/services/security/openbao.nix
···
+
{
+
config,
+
lib,
+
pkgs,
+
...
+
}:
+
let
+
cfg = config.services.openbao;
+
+
settingsFormat = pkgs.formats.json { };
+
in
+
{
+
options = {
+
services.openbao = {
+
enable = lib.mkEnableOption "OpenBao daemon";
+
+
package = lib.mkPackageOption pkgs "openbao" {
+
example = "pkgs.openbao.override { withHsm = false; withUi = false; }";
+
};
+
+
settings = lib.mkOption {
+
description = ''
+
Settings of OpenBao.
+
+
See [documentation](https://openbao.org/docs/configuration) for more details.
+
'';
+
example = lib.literalExpression ''
+
{
+
ui = true;
+
+
listener.default = {
+
type = "tcp";
+
tls_acme_email = config.security.acme.defaults.email;
+
tls_acme_domains = [ "example.com" ];
+
tls_acme_disable_http_challenge = true;
+
};
+
+
cluster_addr = "http://127.0.0.1:8201";
+
api_addr = "https://example.com";
+
+
storage.raft.path = "/var/lib/openbao";
+
}
+
'';
+
+
type = lib.types.submodule {
+
freeformType = settingsFormat.type;
+
options = {
+
ui = lib.mkEnableOption "the OpenBao web UI";
+
+
listener = lib.mkOption {
+
type = lib.types.attrsOf (
+
lib.types.submodule (
+
{ config, ... }:
+
{
+
freeformType = settingsFormat.type;
+
options = {
+
type = lib.mkOption {
+
type = lib.types.enum [
+
"tcp"
+
"unix"
+
];
+
description = ''
+
The listener type to enable.
+
'';
+
};
+
address = lib.mkOption {
+
type = lib.types.str;
+
default = if config.type == "unix" then "/run/openbao/openbao.sock" else "127.0.0.1:8200";
+
defaultText = lib.literalExpression ''if config.services.openbao.settings.listener.<name>.type == "unix" then "/run/openbao/openbao.sock" else "127.0.0.1:8200"'';
+
description = ''
+
The TCP address or UNIX socket path to listen on.
+
'';
+
};
+
};
+
}
+
)
+
);
+
description = ''
+
Configure a listener for responding to requests.
+
'';
+
};
+
};
+
};
+
};
+
+
extraArgs = lib.mkOption {
+
type = lib.types.listOf lib.types.str;
+
default = [ ];
+
description = ''
+
Additional arguments given to OpenBao.
+
'';
+
};
+
};
+
};
+
+
config = lib.mkIf cfg.enable {
+
environment.systemPackages = [ cfg.package ];
+
+
systemd.services.openbao = {
+
description = "OpenBao - A tool for managing secrets";
+
+
wantedBy = [ "multi-user.target" ];
+
after = [ "network.target" ];
+
+
restartIfChanged = false; # do not restart on "nixos-rebuild switch". It would seal the storage and disrupt the clients.
+
+
serviceConfig = {
+
Type = "notify";
+
+
ExecStart = lib.escapeShellArgs (
+
[
+
(lib.getExe cfg.package)
+
"server"
+
"-config"
+
(settingsFormat.generate "openbao.hcl.json" cfg.settings)
+
]
+
++ cfg.extraArgs
+
);
+
ExecReload = "${lib.getExe' pkgs.coreutils "kill"} -SIGHUP $MAINPID";
+
+
StateDirectory = "openbao";
+
StateDirectoryMode = "0700";
+
RuntimeDirectory = "openbao";
+
RuntimeDirectoryMode = "0700";
+
+
CapabilityBoundingSet = "";
+
DynamicUser = true;
+
LimitCORE = 0;
+
LockPersonality = true;
+
MemorySwapMax = 0;
+
MemoryZSwapMax = 0;
+
PrivateUsers = true;
+
ProcSubset = "pid";
+
ProtectClock = true;
+
ProtectControlGroups = true;
+
ProtectHome = true;
+
ProtectHostname = true;
+
ProtectKernelLogs = true;
+
ProtectKernelModules = true;
+
ProtectKernelTunables = true;
+
ProtectProc = "invisible";
+
Restart = "on-failure";
+
RestrictAddressFamilies = [
+
"AF_INET"
+
"AF_INET6"
+
"AF_UNIX"
+
];
+
RestrictNamespaces = true;
+
RestrictRealtime = true;
+
SystemCallArchitectures = "native";
+
SystemCallFilter = [
+
"@system-service"
+
"@resources"
+
"~@privileged"
+
];
+
UMask = "0077";
+
};
+
};
+
};
+
}
+1
nixos/tests/all-tests.nix
···
ollama-rocm = runTestOn [ "x86_64-linux" "aarch64-linux" ] ./ollama-rocm.nix;
ombi = handleTest ./ombi.nix { };
openarena = handleTest ./openarena.nix { };
+
openbao = runTest ./openbao.nix;
openldap = handleTest ./openldap.nix { };
opensearch = discoverTests (import ./opensearch.nix);
openresty-lua = handleTest ./openresty-lua.nix { };
+105
nixos/tests/openbao.nix
···
+
{ lib, ... }:
+
let
+
certs = import ./common/acme/server/snakeoil-certs.nix;
+
domain = certs.domain;
+
in
+
{
+
name = "openbao";
+
+
meta.maintainers = with lib.maintainers; [ kranzes ];
+
+
nodes.machine =
+
{ config, ... }:
+
{
+
security.pki.certificateFiles = [ certs.ca.cert ];
+
+
networking.extraHosts = ''
+
127.0.0.1 ${domain}
+
'';
+
+
services.openbao = {
+
enable = true;
+
+
settings = {
+
ui = true;
+
+
listener = {
+
default = {
+
type = "tcp";
+
tls_cert_file = certs.${domain}.cert;
+
tls_key_file = certs.${domain}.key;
+
};
+
+
unix = {
+
type = "unix";
+
};
+
};
+
+
cluster_addr = "https://127.0.0.1:8201";
+
api_addr = "https://${domain}:8200";
+
+
storage.raft.path = "/var/lib/openbao";
+
};
+
};
+
+
environment.variables = {
+
BAO_ADDR = config.services.openbao.settings.api_addr;
+
BAO_FORMAT = "json";
+
};
+
};
+
+
testScript =
+
{ nodes, ... }:
+
''
+
import json
+
+
start_all()
+
+
with subtest("Wait for OpenBao to start up"):
+
machine.wait_for_unit("openbao.service")
+
machine.wait_for_open_port(8200)
+
machine.wait_for_open_unix_socket("${nodes.machine.services.openbao.settings.listener.unix.address}")
+
+
with subtest("Check that the web UI is being served"):
+
machine.succeed("curl -L --fail --show-error --silent $BAO_ADDR | grep '<title>OpenBao</title>'")
+
+
with subtest("Check that OpenBao is not initialized"):
+
status_output = json.loads(machine.fail("bao status"))
+
assert not status_output["initialized"]
+
+
with subtest("Initialize OpenBao"):
+
init_output = json.loads(machine.succeed("bao operator init"))
+
+
with subtest("Check that OpenBao is initialized and sealed"):
+
status_output = json.loads(machine.fail("bao status"))
+
assert status_output["initialized"]
+
assert status_output["sealed"]
+
+
with subtest("Unseal OpenBao"):
+
for key in init_output["unseal_keys_b64"][:init_output["unseal_threshold"]]:
+
machine.succeed(f"bao operator unseal {key}")
+
+
with subtest("Check that OpenBao is not sealed"):
+
status_output = json.loads(machine.succeed("bao status"))
+
assert not status_output["sealed"]
+
+
with subtest("Login with root token"):
+
machine.succeed(f"bao login {init_output["root_token"]}")
+
+
with subtest("Enable userpass auth method"):
+
machine.succeed("bao auth enable userpass")
+
+
with subtest("Create a user in userpass"):
+
machine.succeed("bao write auth/userpass/users/testuser password=testpassword")
+
+
with subtest("Login to a user from userpass"):
+
machine.succeed("bao login -method userpass username=testuser password=testpassword")
+
+
with subtest("Write a secret to cubbyhole"):
+
machine.succeed("bao write cubbyhole/my-secret my-value=s3cr3t")
+
+
with subtest("Read a secret from cubbyhole"):
+
read_output = json.loads(machine.succeed("bao read cubbyhole/my-secret"))
+
assert read_output["data"]["my-value"] == "s3cr3t"
+
'';
+
}
+3 -3
pkgs/by-name/ch/chatzone-desktop/package.nix
···
let
pname = "chatzone-desktop";
-
version = "5.2.5";
+
version = "5.3.0";
src = fetchurl {
-
url = "https://cdn1.ozone.ru/s3/chatzone-clients/ci/v5.2.5/569/chatzone-desktop-linux-5.2.5.AppImage";
-
hash = "sha256-PIghhiy0w9cb7Ki8gPOK8OZB3TFwNd68AAwUI5JzZU8=";
+
url = "https://cdn1.ozone.ru/s3/chatzone-clients/ci/5.3.0/736/chatzone-desktop-linux-5.3.0.AppImage";
+
hash = "sha256-aCu3ZqCBLU4oqf/MnAjwzF/y2CHX0NS9C+eXg46VaY4=";
};
appimageContents = appimageTools.extract { inherit pname version src; };
in
+3
pkgs/by-name/cl/clash-verge-rev/package.nix
···
bot-wxt1221
];
platforms = lib.platforms.linux;
+
knownVulnerabilities = [
+
"https://github.com/clash-verge-rev/clash-verge-rev/issues/3428"
+
];
};
in
stdenv.mkDerivation {
+13 -7
pkgs/by-name/cm/cmatrix/package.nix
···
fetchFromGitHub,
autoreconfHook,
ncurses,
+
versionCheckHook,
}:
-
stdenv.mkDerivation rec {
+
stdenv.mkDerivation (finalAttrs: {
pname = "cmatrix";
version = "2.0";
src = fetchFromGitHub {
owner = "abishekvashok";
repo = "cmatrix";
-
rev = "v${version}";
-
sha256 = "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm";
+
tag = "v${finalAttrs.version}";
+
hash = "sha256-dWlVWSRIE1fPa6R2N3ONL9QJlDQEqxfdYIgWTSr5MsE=";
};
nativeBuildInputs = [ autoreconfHook ];
buildInputs = [ ncurses ];
-
meta = with lib; {
+
nativeInstallCheckInputs = [ versionCheckHook ];
+
versionCheckProgramArg = "-V";
+
doInstallCheck = true;
+
+
meta = {
description = "Simulates the falling characters theme from The Matrix movie";
-
license = licenses.gpl3;
longDescription = ''
CMatrix simulates the display from "The Matrix" and is based
on the screensaver from the movie's website.
'';
homepage = "https://github.com/abishekvashok/cmatrix";
+
changelog = "https://github.com/abishekvashok/cmatrix/releases/tag/v${finalAttrs.version}";
platforms = ncurses.meta.platforms;
-
maintainers = [ ];
+
license = lib.licenses.gpl3Only;
+
maintainers = with lib.maintainers; [ Tert0 ];
mainProgram = "cmatrix";
};
-
}
+
})
+4 -4
pkgs/by-name/cr/crosvm/package.nix
···
rustPlatform.buildRustPackage {
pname = "crosvm";
-
version = "0-unstable-2025-04-16";
+
version = "0-unstable-2025-04-25";
src = fetchgit {
url = "https://chromium.googlesource.com/chromiumos/platform/crosvm";
-
rev = "28a224e3fb19ce9fe1ce2a32b952af4c96e10bea";
-
hash = "sha256-LRXtGSSFAhRoSIFLfAhYyrBVx1tsxHgpQIfyKTI2Awk=";
+
rev = "6b75e831de4d5f44a362142d25b77d9c4d7988aa";
+
hash = "sha256-hqnzKFdjM32omoECKYTGkSukkpy837e44vMMnN5B05I=";
fetchSubmodules = true;
};
separateDebugInfo = true;
useFetchCargoVendor = true;
-
cargoHash = "sha256-W+oQ11sbGcA6EfFZZuvSFFYwmR1dRKCP7HvSTTODO14=";
+
cargoHash = "sha256-A5yHGG5KEsSUlDb+m+R6NnKEvReClPaGRxWjNjXlgys=";
nativeBuildInputs = [
pkg-config
+1
pkgs/by-name/dp/dprint/package.nix
···
maintainers = with maintainers; [
khushraj
kachick
+
phanirithvij
];
mainProgram = "dprint";
};
+3 -3
pkgs/by-name/dp/dprint/plugins/dprint-plugin-typescript.nix
···
{ mkDprintPlugin }:
mkDprintPlugin {
description = "TypeScript/JavaScript code formatter.";
-
hash = "sha256-/N6TH5hYsTHJcBWwpz874EDRxBv+SRhyPO8IyN5dzDU=";
+
hash = "sha256-Nvgd5d4aHJ07OXDlpelymS/f0N1cF8GQH4o4fCilb2g=";
initConfig = {
configExcludes = [ "**/node_modules" ];
configKey = "typescript";
···
};
pname = "dprint-plugin-typescript";
updateUrl = "https://plugins.dprint.dev/dprint/typescript/latest.json";
-
url = "https://plugins.dprint.dev/typescript-0.94.0.wasm";
-
version = "0.94.0";
+
url = "https://plugins.dprint.dev/typescript-0.95.0.wasm";
+
version = "0.95.0";
}
+2 -2
pkgs/by-name/ev/evcc/package.nix
···
}:
let
-
version = "0.203.2";
+
version = "0.203.3";
src = fetchFromGitHub {
owner = "evcc-io";
repo = "evcc";
tag = version;
-
hash = "sha256-OMZUJ98oiKKFsgSKLxQtdnoId4yHBNO+wKjhsgZNo6w=";
+
hash = "sha256-kbTaSmSfgXDyT3Zw0jxnUu+95lleWigs0l80Q68bAyU=";
};
vendorHash = "sha256-oC6aX8hAQfLpEEkpsPYm6ALxFqReKgDiAFse2WJGt60=";
+28 -27
pkgs/by-name/op/openbao/package.nix
···
fetchFromGitHub,
buildGoModule,
go_1_24,
-
testers,
-
openbao,
versionCheckHook,
nix-update-script,
+
nixosTests,
+
callPackage,
+
stdenvNoCC,
+
withUi ? true,
+
withHsm ? stdenvNoCC.hostPlatform.isLinux,
}:
-
buildGoModule.override { go = go_1_24; } rec {
+
buildGoModule.override { go = go_1_24; } (finalAttrs: {
pname = "openbao";
-
version = "2.2.0";
+
version = "2.2.1";
src = fetchFromGitHub {
owner = "openbao";
repo = "openbao";
-
tag = "v${version}";
-
hash = "sha256-dDMOeAceMaSrF7P4JZ2MKy6zDa10LxCQKkKwu/Q3kOU=";
+
tag = "v${finalAttrs.version}";
+
hash = "sha256-qbLaa7EUQywPRTIgUclTomDDBxzdQnyVAqCGD+iOlpg=";
};
-
vendorHash = "sha256-zcMc63B/jTUykPfRKvea27xRxjOV+zytaxKOEQAUz1Q=";
+
vendorHash = "sha256-Upvv3dxS6HIFxR6T+2/dqnFsUtemjOGUaiICgPlepJ8=";
proxyVendor = true;
subPackages = [ "." ];
-
tags = [
-
"openbao"
-
"bao"
-
];
+
tags = lib.optional withHsm "hsm" ++ lib.optional withUi "ui";
ldflags = [
"-s"
"-w"
-
"-X github.com/openbao/openbao/version.GitCommit=${src.rev}"
-
"-X github.com/openbao/openbao/version.fullVersion=${version}"
+
"-X github.com/openbao/openbao/version.GitCommit=${finalAttrs.src.rev}"
+
"-X github.com/openbao/openbao/version.fullVersion=${finalAttrs.version}"
+
"-X github.com/openbao/openbao/version.buildDate=1970-01-01T00:00:00Z"
];
+
postConfigure = lib.optionalString withUi ''
+
cp -r --no-preserve=mode ${finalAttrs.passthru.ui} http/web_ui
+
'';
+
postInstall = ''
mv $out/bin/openbao $out/bin/bao
'';
-
-
# TODO: Enable the NixOS tests after adding OpenBao as a NixOS service in an upcoming PR and
-
# adding NixOS tests
-
#
-
# passthru.tests = { inherit (nixosTests) vault vault-postgresql vault-dev vault-agent; };
-
-
passthru.tests.version = testers.testVersion {
-
package = openbao;
-
command = "HOME=$(mktemp -d) bao --version";
-
version = "v${version}";
-
};
nativeInstallCheckInputs = [
versionCheckHook
···
doInstallCheck = true;
passthru = {
-
updateScript = nix-update-script { };
+
ui = callPackage ./ui.nix { };
+
tests = { inherit (nixosTests) openbao; };
+
updateScript = nix-update-script {
+
extraArgs = [
+
"--subpackage"
+
"ui"
+
];
+
};
};
meta = {
homepage = "https://www.openbao.org/";
description = "Open source, community-driven fork of Vault managed by the Linux Foundation";
-
changelog = "https://github.com/openbao/openbao/blob/v${version}/CHANGELOG.md";
+
changelog = "https://github.com/openbao/openbao/blob/v${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.mpl20;
mainProgram = "bao";
maintainers = with lib.maintainers; [ brianmay ];
};
-
}
+
})
+34
pkgs/by-name/op/openbao/ui.nix
···
+
{
+
stdenvNoCC,
+
openbao,
+
yarn-berry_3,
+
nodejs,
+
}:
+
+
stdenvNoCC.mkDerivation (finalAttrs: {
+
pname = openbao.pname + "-ui";
+
inherit (openbao) version src;
+
sourceRoot = "${finalAttrs.src.name}/ui";
+
+
offlineCache = yarn-berry_3.fetchYarnBerryDeps {
+
inherit (finalAttrs) src sourceRoot;
+
hash = "sha256-bQ+ph7CvPtygvCoCMjTMadYLn/ds2ZOGQL29x3hFuLg=";
+
};
+
+
nativeBuildInputs = [
+
yarn-berry_3.yarnBerryConfigHook
+
nodejs
+
yarn-berry_3
+
];
+
+
env.YARN_ENABLE_SCRIPTS = 0;
+
+
postConfigure = ''
+
substituteInPlace .ember-cli \
+
--replace-fail "../http/web_ui" "$out"
+
'';
+
+
buildPhase = "yarn run ember build --environment=production";
+
+
dontInstall = true;
+
})
+3 -3
pkgs/by-name/sp/spotify/linux.nix
···
# If an update breaks things, one of those might have valuable info:
# https://aur.archlinux.org/packages/spotify/
# https://community.spotify.com/t5/Desktop-Linux
-
version = "1.2.48.405.gf2c48e6f";
+
version = "1.2.59.514.g834e17d4";
# To get the latest stable revision:
# curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
# To get general information:
# curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
# More examples of api usage:
# https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
-
rev = "80";
+
rev = "86";
deps = [
alsa-lib
···
src = fetchurl {
name = "spotify-${version}-${rev}.snap";
url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
-
hash = "sha512-Ej9SEhZhssQiH1srcgUW5lQuUNg+htudV7mcnK6o0pW5PiBYZ6qOPEIZ/1tZzD9xkUJ8hCq08fJMB8NQ12KXMg==";
+
hash = "sha512-b9VlPwZ6JJ7Kt2p0ji1qtTJQHZE9d4KBO3iqQwsYh6k+ljtV/mSdinZi+B//Yb+KXhMErd0oaVzIpCCMqft6FQ==";
};
nativeBuildInputs = [
+1 -1
pkgs/by-name/sp/spotify/update.sh
···
channel="${1:-stable}" # stable/candidate/edge
nixpkgs="$(git rev-parse --show-toplevel)"
-
spotify_nix="$nixpkgs/pkgs/applications/audio/spotify/linux.nix"
+
spotify_nix="$nixpkgs/pkgs/by-name/sp/spotify/linux.nix"
#
+2
pkgs/by-name/ta/taxi/package.nix
···
pname = "taxi";
version = "2.0.2-unstable-2024-12-26";
+
# Temporarily disable nixpkgs-update before we have a tagged release.
+
# nixpkgs-update: no auto update
src = fetchFromGitHub {
owner = "ellie-commons";
repo = "taxi";
+1 -1
pkgs/desktops/xfce/core/thunar/wrapper.nix
···
homepage
license
platforms
-
maintainers
+
teams
;
description =
+2 -2
pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix
···
stdenv.mkDerivation (finalAttrs: {
pname = "xfce4-pulseaudio-plugin";
-
version = "0.5.0";
+
version = "0.5.1";
src = fetchFromGitLab {
domain = "gitlab.xfce.org";
owner = "panel-plugins";
repo = "xfce4-pulseaudio-plugin";
tag = "xfce4-pulseaudio-plugin-${finalAttrs.version}";
-
hash = "sha256-FIEV99AV5UiGLTXi9rU4DKK//SolkrOQfpENXQcy64E=";
+
hash = "sha256-068+lp1X2W201zWN15dklsfEy4Hdy3aOEqC/ic5fMNs=";
};
strictDeps = true;
+3 -3
pkgs/development/python-modules/aiorussound/default.nix
···
buildPythonPackage rec {
pname = "aiorussound";
-
version = "4.5.0";
+
version = "4.5.2";
pyproject = true;
# requires newer f-strings introduced in 3.12
···
owner = "noahhusby";
repo = "aiorussound";
tag = version;
-
hash = "sha256-G4bJ2K9SBMoCwTCfn1oZSDoU/FHgZXQf13YEZJBKcNo=";
+
hash = "sha256-4/FuYROiyFP+13ZWkAATpRSAvkiDNMLw6MnP/lagI9I=";
};
build-system = [ poetry-core ];
···
pythonImportsCheck = [ "aiorussound" ];
meta = with lib; {
-
changelog = "https://github.com/noahhusby/aiorussound/releases/tag/${version}";
+
changelog = "https://github.com/noahhusby/aiorussound/releases/tag/${src.tag}";
description = "Async python package for interfacing with Russound RIO hardware";
homepage = "https://github.com/noahhusby/aiorussound";
license = licenses.mit;
+2 -2
pkgs/development/python-modules/dio-chacon-wifi-api/default.nix
···
buildPythonPackage rec {
pname = "dio-chacon-wifi-api";
-
version = "1.2.1";
+
version = "1.2.2";
pyproject = true;
src = fetchFromGitHub {
owner = "cnico";
repo = "dio-chacon-wifi-api";
tag = "v${version}";
-
hash = "sha256-4qE4laKQyfnAq2f/bkAqIfY/LnEmW+LTvNOCkTNFbAo=";
+
hash = "sha256-YlomB3/EBX2tFifjcF38q+sr2z1bHwUjmqyNE2wTp90=";
};
build-system = [ poetry-core ];
+2 -2
pkgs/development/python-modules/pyscf/default.nix
···
buildPythonPackage rec {
pname = "pyscf";
-
version = "2.8.0";
+
version = "2.9.0";
format = "setuptools";
src = fetchFromGitHub {
owner = "pyscf";
repo = pname;
tag = "v${version}";
-
hash = "sha256-GWytFRMDFwTeglBm90fd09HICkAwpkcpmVar1x3vsro=";
+
hash = "sha256-UTeZXlNuSWDOcBRVbUUWJ3mQnZZQr17aTw6rRA5DRNI=";
};
# setup.py calls Cmake and passes the arguments in CMAKE_CONFIGURE_ARGS to cmake.
+2 -2
pkgs/development/python-modules/pysmartthings/default.nix
···
buildPythonPackage rec {
pname = "pysmartthings";
-
version = "3.0.4";
+
version = "3.0.5";
pyproject = true;
disabled = pythonOlder "3.12";
···
owner = "andrewsayre";
repo = "pysmartthings";
tag = "v${version}";
-
hash = "sha256-FM1c6SRwTUHfbTmk7Z+hsyvpdPp+uyeqnviI6VzPGT4=";
+
hash = "sha256-JQ3RFdaUaggk4qo1aDFw/tLvPWeLKIetOHY/p0GKCrU=";
};
build-system = [ poetry-core ];
+55 -32
pkgs/development/python-modules/torcheval/default.nix
···
{
lib,
+
stdenv,
buildPythonPackage,
fetchFromGitHub,
···
torchvision
];
-
pytestFlagsArray = [
-
"-v"
-
"tests/"
+
pytestFlagsArray =
+
[
+
"-v"
+
"tests/"
-
# -- tests/metrics/audio/test_fad.py --
-
# Touch filesystem and require network access.
-
# torchaudio.utils.download_asset("models/vggish.pt") -> PermissionError: [Errno 13] Permission denied: '/homeless-shelter'
-
"--deselect=tests/metrics/audio/test_fad.py::TestFAD::test_vggish_fad"
-
"--deselect=tests/metrics/audio/test_fad.py::TestFAD::test_vggish_fad_merge"
+
# -- tests/metrics/audio/test_fad.py --
+
# Touch filesystem and require network access.
+
# torchaudio.utils.download_asset("models/vggish.pt") -> PermissionError: [Errno 13] Permission denied: '/homeless-shelter'
+
"--deselect=tests/metrics/audio/test_fad.py::TestFAD::test_vggish_fad"
+
"--deselect=tests/metrics/audio/test_fad.py::TestFAD::test_vggish_fad_merge"
-
# -- tests/metrics/image/test_fid.py --
-
# Touch filesystem and require network access.
-
# models.inception_v3(weights=weights) -> PermissionError: [Errno 13] Permission denied: '/homeless-shelter'
-
"--deselect=tests/metrics/image/test_fid.py::TestFrechetInceptionDistance::test_fid_invalid_input"
-
"--deselect=tests/metrics/image/test_fid.py::TestFrechetInceptionDistance::test_fid_random_data_custom_model"
-
"--deselect=tests/metrics/image/test_fid.py::TestFrechetInceptionDistance::test_fid_random_data_default_model"
-
"--deselect=tests/metrics/image/test_fid.py::TestFrechetInceptionDistance::test_fid_with_dissimilar_inputs"
-
"--deselect=tests/metrics/image/test_fid.py::TestFrechetInceptionDistance::test_fid_with_similar_inputs"
+
# -- tests/metrics/image/test_fid.py --
+
# Touch filesystem and require network access.
+
# models.inception_v3(weights=weights) -> PermissionError: [Errno 13] Permission denied: '/homeless-shelter'
+
"--deselect=tests/metrics/image/test_fid.py::TestFrechetInceptionDistance::test_fid_invalid_input"
+
"--deselect=tests/metrics/image/test_fid.py::TestFrechetInceptionDistance::test_fid_random_data_custom_model"
+
"--deselect=tests/metrics/image/test_fid.py::TestFrechetInceptionDistance::test_fid_random_data_default_model"
+
"--deselect=tests/metrics/image/test_fid.py::TestFrechetInceptionDistance::test_fid_with_dissimilar_inputs"
+
"--deselect=tests/metrics/image/test_fid.py::TestFrechetInceptionDistance::test_fid_with_similar_inputs"
-
# -- tests/metrics/functional/text/test_perplexity.py --
-
# AssertionError: Scalars are not close!
-
# Expected 3.537154912949 but got 3.53715443611145
-
"--deselect=tests/metrics/functional/text/test_perplexity.py::Perplexity::test_perplexity_with_ignore_index"
+
# -- tests/metrics/functional/text/test_perplexity.py --
+
# AssertionError: Scalars are not close!
+
# Expected 3.537154912949 but got 3.53715443611145
+
"--deselect=tests/metrics/functional/text/test_perplexity.py::Perplexity::test_perplexity_with_ignore_index"
-
# -- tests/metrics/image/test_psnr.py --
-
# AssertionError: Scalars are not close!
-
# Expected 7.781850814819336 but got 7.781772613525391
-
"--deselect=tests/metrics/image/test_psnr.py::TestPeakSignalNoiseRatio::test_psnr_with_random_data"
+
# -- tests/metrics/image/test_psnr.py --
+
# AssertionError: Scalars are not close!
+
# Expected 7.781850814819336 but got 7.781772613525391
+
"--deselect=tests/metrics/image/test_psnr.py::TestPeakSignalNoiseRatio::test_psnr_with_random_data"
-
# -- tests/metrics/regression/test_mean_squared_error.py --
-
# AssertionError: Scalars are not close!
-
# Expected -640.4547729492188 but got -640.4707641601562
-
"--deselect=tests/metrics/regression/test_mean_squared_error.py::TestMeanSquaredError::test_mean_squared_error_class_update_input_shape_different"
-
];
+
# -- tests/metrics/regression/test_mean_squared_error.py --
+
# AssertionError: Scalars are not close!
+
# Expected -640.4547729492188 but got -640.4707641601562
+
"--deselect=tests/metrics/regression/test_mean_squared_error.py::TestMeanSquaredError::test_mean_squared_error_class_update_input_shape_different"
+
]
+
+
# These tests error on darwin platforms.
+
# NotImplementedError: The operator 'c10d::allgather_' is not currently implemented for the mps device
+
#
+
# Applying the suggested environment variable `PYTORCH_ENABLE_MPS_FALLBACK=1;` causes the tests to fail,
+
# as using the CPU instead of the MPS causes the tensors to be on the wrong device:
+
# RuntimeError: ProcessGroupGloo::allgather: invalid tensor type at index 0;
+
# Expected TensorOptions(dtype=float, device=cpu, ...), got TensorOptions(dtype=float, device=mps:0, ...)
+
++ lib.optional stdenv.hostPlatform.isDarwin [
+
# -- tests/metrics/test_synclib.py --
+
"--deselect=tests/metrics/test_synclib.py::SynclibTest::test_complex_mixed_state_sync"
+
"--deselect=tests/metrics/test_synclib.py::SynclibTest::test_complex_mixed_state_sync"
+
"--deselect=tests/metrics/test_synclib.py::SynclibTest::test_empty_tensor_list_sync_state"
+
"--deselect=tests/metrics/test_synclib.py::SynclibTest::test_sync_dtype_and_shape"
+
"--deselect=tests/metrics/test_synclib.py::SynclibTest::test_tensor_list_sync_states"
+
"--deselect=tests/metrics/test_synclib.py::SynclibTest::test_tensor_dict_sync_states"
+
"--deselect=tests/metrics/test_synclib.py::SynclibTest::test_tensor_sync_states"
+
# -- tests/metrics/test_toolkit.py --
+
"--deselect=tests/metrics/test_toolkit.py::MetricToolkitTest::test_metric_sync"
+
"--deselect=tests/metrics/test_toolkit.py::MetricCollectionToolkitTest::test_metric_collection_sync"
+
];
meta = {
description = "Rich collection of performant PyTorch model metrics and tools for PyTorch model evaluations";
homepage = "https://pytorch.org/torcheval";
changelog = "https://github.com/pytorch/torcheval/releases/tag/${version}";
-
platforms = lib.platforms.linux;
-
license = with lib.licenses; [ bsd3 ];
-
maintainers = with lib.maintainers; [ bengsparks ];
+
platforms = lib.platforms.unix;
+
license = [ lib.licenses.bsd3 ];
+
maintainers = [ lib.maintainers.bengsparks ];
};
}
+1 -1
pkgs/servers/home-assistant/component-packages.nix
···
# Do not edit!
{
-
version = "2025.4.3";
+
version = "2025.4.4";
components = {
"3_day_blinds" =
ps: with ps; [
+5 -4
pkgs/servers/home-assistant/default.nix
···
extraBuildInputs = extraPackages python.pkgs;
# Don't forget to run update-component-packages.py after updating
-
hassVersion = "2025.4.3";
+
hassVersion = "2025.4.4";
in
python.pkgs.buildPythonApplication rec {
···
owner = "home-assistant";
repo = "core";
tag = version;
-
hash = "sha256-KyPWEGXSoB9BJolR4+Kq9K9urhXN4YcgV0SQYaAEjiA=";
+
hash = "sha256-MiBsVsgV/M8ge7XQ4e4VpdAKTVZBCDu3Jqql2YHx9rY=";
};
# Secondary source is pypi sdist for translations
sdist = fetchPypi {
inherit pname version;
-
hash = "sha256-xo1f2GDeafOaXiJ1+l+NsJkpU0FvbSnflsp2BE/JKC4=";
+
hash = "sha256-qOhOs6I2Jx/7GWVeCBJ6d77w3RCFjsvFxDUbR60Ucf0=";
};
build-system = with python.pkgs; [
···
postPatch = ''
substituteInPlace tests/test_core_config.py --replace-fail '"/usr"' "\"$NIX_BUILD_TOP/media\""
-
sed -i 's/setuptools[~=]/setuptools>/' pyproject.toml
+
substituteInPlace pyproject.toml \
+
--replace-fail "setuptools==78.1.1" setuptools
'';
dependencies = with python.pkgs; [
+2 -2
pkgs/servers/home-assistant/stubs.nix
···
buildPythonPackage rec {
pname = "homeassistant-stubs";
-
version = "2025.4.3";
+
version = "2025.4.4";
pyproject = true;
disabled = python.version != home-assistant.python.version;
···
owner = "KapJI";
repo = "homeassistant-stubs";
tag = version;
-
hash = "sha256-IvtkEZLVngSHNb0nGJri/EW1t29KcrFvxdm6gjmrtz4=";
+
hash = "sha256-dQS0bMzBe9zwoyODz3DDrpqZO0+zX3UHtgoJaj+5mhA=";
};
build-system = [