Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2025-03-06 06:05:40 +00:00
committed by GitHub
38 changed files with 474 additions and 122 deletions
+6
View File
@@ -192,6 +192,12 @@
github = "2gn";
githubId = 101851090;
};
_2hexed = {
name = "n";
email = "2hexed@protonmail.com";
github = "2hexed";
githubId = 54501296;
};
_360ied = {
name = "Brian Zhu";
email = "therealbarryplayer@gmail.com";
@@ -46,6 +46,7 @@
libxml2,
llvmPackages_14,
m17n_lib,
mailcap,
mailutils,
makeWrapper,
motif,
@@ -244,6 +245,14 @@ mkDerivation (finalAttrs: {
done
''
''
substituteInPlace lisp/net/mailcap.el \
--replace-fail '"/etc/mime.types"' \
'"/etc/mime.types" "${mailcap}/etc/mime.types"' \
--replace-fail '("/etc/mailcap" system)' \
'("/etc/mailcap" system) ("${mailcap}/etc/mailcap" system)'
''
""
];
@@ -2500,6 +2500,23 @@ let
};
};
illixion.vscode-vibrancy-continued = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vscode-vibrancy-continued";
publisher = "illixion";
version = "1.1.44";
hash = "sha256-1oEfnS7BBKPJ9cSu05S6GQsN76nk5JW7aBq/2O8raSY=";
};
meta = {
downloadPage = "https://marketplace.visualstudio.com/items?itemName=illixion.vscode-vibrancy-continued";
changelog = "https://marketplace.visualstudio.com/items/illixion.vscode-vibrancy-continued/changelog";
homepage = "https://github.com/illixion/vscode-vibrancy-continued#readme";
description = "Vibrancy Effect for Visual Studio Code";
maintainers = with lib.maintainers; [ _2hexed ];
license = lib.licenses.mit;
};
};
influxdata.flux = buildVscodeMarketplaceExtension {
mktplcRef = {
publisher = "influxdata";
@@ -21,8 +21,8 @@ vscode-utils.buildVscodeMarketplaceExtension rec {
mktplcRef = {
name = "python";
publisher = "ms-python";
version = "2025.1.2025022501";
hash = "sha256-hPVT86Uvok4BAKbbB6FhjWxQoEY/TWVKCliEn/+QNWY=";
version = "2025.2.0";
hash = "sha256-bq6xcNTzGsnoAcwjn4yyCVN7n4kXOPULHu0V2Vgzu68=";
};
buildInputs = [ icu ];
+8 -8
View File
@@ -36,22 +36,22 @@ let
sha256 =
{
x86_64-linux = "11a0y0zdz3mmc2xvpnlq06a7q06y6529xpp4hlhpjylj0bk06xn1";
x86_64-darwin = "12fxhwqcz36f5pv4kvs7bblmymxyixg7pvi0gb5k0j73pkvqrr6g";
aarch64-linux = "0g5qz7gq7k65p2f8iwz1jiy03nwsmy3v3gb18qwg9mbhm0dk59la";
aarch64-darwin = "1g4fz8nw5m7krjlsjs43937kz1sr7lkflbphpyh8cmalwpxa8ysn";
armv7l-linux = "09r12y9xbpqnnw9mab3k4kx0ngpfng1l6rk09n9l2q36ji20ijmy";
x86_64-linux = "1yywjdpdv2y71mdja7pzfj15vdrv1wj6r8k7a8n8sldk1blv0d1s";
x86_64-darwin = "1nai04fvl1v18v6vbgrf7rbzx72q2pn2n5hxccm5jf99ismynp0a";
aarch64-linux = "0hsm6iczad5pa8dvxgwn34n1bpcfbl1732a199zscng94zybm02w";
aarch64-darwin = "0bg7jmjb0y754h6xampwfisklk9gql0ppik93prsd5kvgq537567";
armv7l-linux = "0pmv3n99353vwwi9d0y7qgcwip4srw7mc1c3fl8zn1p2i7w4pw78";
}
.${system} or throwSystem;
in
callPackage ./generic.nix rec {
# Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem.
version = "1.97.2";
version = "1.98.0";
pname = "vscode" + lib.optionalString isInsiders "-insiders";
# This is used for VS Code - Remote SSH test
rev = "e54c774e0add60467559eb0d1e229c6452cf8447";
rev = "6609ac3d66f4eade5cf376d1cb76f13985724bcb";
executableName = "code" + lib.optionalString isInsiders "-insiders";
longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders";
@@ -75,7 +75,7 @@ callPackage ./generic.nix rec {
src = fetchurl {
name = "vscode-server-${rev}.tar.gz";
url = "https://update.code.visualstudio.com/commit:${rev}/server-linux-x64/stable";
sha256 = "15fd401sqmlkpw48pysqpyi5rlsqx4cm55bbwakhkal4qa1qnq4m";
sha256 = "0v4qbmv7m4880vpawdnrl123fgg82gvnyvvq0imwi6mhb5z73ibs";
};
stdenv = stdenvNoCC;
};
@@ -10,7 +10,7 @@
let
pname = "1password";
version = if channel == "stable" then "8.10.60" else "8.10.60-4.BETA";
version = if channel == "stable" then "8.10.60" else "8.10.68-12.BETA";
sources = {
stable = {
@@ -34,19 +34,19 @@ let
beta = {
x86_64-linux = {
url = "https://downloads.1password.com/linux/tar/beta/x86_64/1password-${version}.x64.tar.gz";
hash = "sha256-c9r/t7VpClf2RQfLLyKdpU90RYlPEPA4N2PjrL2QXAo=";
hash = "sha256-/0Y1qnCI/gXGKTHk9EIaUVbHTwRkOvwOOiMif6sRkqw=";
};
aarch64-linux = {
url = "https://downloads.1password.com/linux/tar/beta/aarch64/1password-${version}.arm64.tar.gz";
hash = "sha256-Tf19dRmf7wufUJQf9m/M2Nwrs4yGW/idzs8FsgkM96o=";
hash = "sha256-4J6a10r5n8ffqC5Y2pjO/GJLXY5AQDkQWmFNLYeK/Xw=";
};
x86_64-darwin = {
url = "https://downloads.1password.com/mac/1Password-${version}-x86_64.zip";
hash = "sha256-lOQjuXLCCBF1lmEwkLrfX8Pjlwwx5wAa5WBDdf60VnQ=";
hash = "sha256-XvflRqqUI59ekuSiQXyACzS94VIrl8wJjemi0xAznZU=";
};
aarch64-darwin = {
url = "https://downloads.1password.com/mac/1Password-${version}-aarch64.zip";
hash = "sha256-2wYmLIxvUDlqKrCsSmI/yCoNOrMEgPdfrHJHMwFYkyo=";
hash = "sha256-UErp3pcSXz/C5s3JraLoBN89tL8ghgJ3XLpg7KtU8Sc=";
};
};
};
+4 -4
View File
@@ -41,17 +41,17 @@ in
stdenv.mkDerivation (finalAttrs: {
pname = binName;
version = "0.20.2";
version = "0.20.3";
src = fetchFromGitHub {
owner = "toeverything";
repo = "AFFiNE";
tag = "v${finalAttrs.version}";
hash = "sha256-MbDc0p0Mvjd5Hhysy4iYuDJpjRc9tj2dUuj4ta6Ux3k=";
hash = "sha256-L6+ZJ4U/mz1Z/Ql7v5pukZ1DLjhaSnvFvvQYDAdR2Zk=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-r7oKeW43nib1AAdb22+PEP8PLcRcuAM1vjLlcZEeMP0=";
hash = "sha256-Ob+A7NMTFuJ2wmRkHmemHnqkEAiY7G8NyxXXrT7NTR8=";
};
yarnOfflineCache = stdenvNoCC.mkDerivation {
name = "yarn-offline-cache";
@@ -96,7 +96,7 @@ stdenv.mkDerivation (finalAttrs: {
'';
dontInstall = true;
outputHashMode = "recursive";
outputHash = "sha256-BMyDIoW9pNvS5BRMN+Wxu+3EFKCiuSdTGsljel7/wUM=";
outputHash = "sha256-e5GNWgeYw4CcpOGDd/LNk+syBupqAuws0hz+wUbaFL4=";
};
nativeBuildInputs =
[
+2 -2
View File
@@ -7,13 +7,13 @@
python3.pkgs.buildPythonApplication rec {
pname = "htgettoken";
version = "2.0-2";
version = "2.1";
src = fetchFromGitHub {
owner = "fermitools";
repo = pname;
tag = "v${version}";
hash = "sha256-1rF72zo/Jj4ZeEG2Nk6Wla+AfaDo5iPZhZP1j9WAK5I=";
hash = "sha256-cp/Y4l59MscQIrHjVdMUQEqgFZTPTEfVdRoH/pOG5uQ=";
};
nativeBuildInputs = with python3.pkgs; [
@@ -1,8 +1,8 @@
diff --git a/music_assistant/helpers/util.py b/music_assistant/helpers/util.py
index b6e5f2b4..0edead16 100644
index 8daf159d..af5a6f38 100644
--- a/music_assistant/helpers/util.py
+++ b/music_assistant/helpers/util.py
@@ -424,29 +424,11 @@ async def load_provider_module(domain: str, requirements: list[str]) -> Provider
@@ -429,30 +429,11 @@ async def load_provider_module(domain: str, requirements: list[str]) -> Provider
def _get_provider_module(domain: str) -> ProviderModuleType:
return importlib.import_module(f".{domain}", "music_assistant.providers")
@@ -29,7 +29,8 @@ index b6e5f2b4..0edead16 100644
- # try loading the provider again to be safe
- # this will fail if something else is wrong (as it should)
- return await asyncio.to_thread(_get_provider_module, domain)
+ raise RuntimeError(f"Missing dependencies for provider {domain}")
-
+ raise RuntimeError(f"Missing dependencies for provider {domain}.")
def create_tempfile():
"""Return a (named) temporary file."""
+19 -19
View File
@@ -1,8 +1,8 @@
diff --git a/music_assistant/helpers/audio.py b/music_assistant/helpers/audio.py
index dad3c5db..d1398d66 100644
index 482ab8e8..a02fc435 100644
--- a/music_assistant/helpers/audio.py
+++ b/music_assistant/helpers/audio.py
@@ -74,7 +74,7 @@ async def crossfade_pcm_parts(
@@ -80,7 +80,7 @@ async def crossfade_pcm_parts(
await outfile.write(fade_out_part)
args = [
# generic args
@@ -11,7 +11,7 @@ index dad3c5db..d1398d66 100644
"-hide_banner",
"-loglevel",
"quiet",
@@ -135,7 +135,7 @@ async def strip_silence(
@@ -141,7 +141,7 @@ async def strip_silence(
reverse: bool = False,
) -> bytes:
"""Strip silence from begin or end of pcm audio using ffmpeg."""
@@ -20,16 +20,7 @@ index dad3c5db..d1398d66 100644
args += [
"-acodec",
pcm_format.content_type.name.lower(),
@@ -734,7 +734,7 @@ async def get_file_stream(
async def check_audio_support() -> tuple[bool, bool, str]:
"""Check if ffmpeg is present (with/without libsoxr support)."""
# check for FFmpeg presence
- returncode, output = await check_output("ffmpeg", "-version")
+ returncode, output = await check_output("@ffmpeg@", "-version")
ffmpeg_present = returncode == 0 and "FFmpeg" in output.decode()
# use globals as in-memory cache
@@ -789,7 +789,7 @@ async def get_silence(
@@ -912,7 +912,7 @@ async def get_silence(
return
# use ffmpeg for all other encodings
args = [
@@ -39,11 +30,11 @@ index dad3c5db..d1398d66 100644
"-loglevel",
"quiet",
diff --git a/music_assistant/helpers/ffmpeg.py b/music_assistant/helpers/ffmpeg.py
index 0405fc27..570f9157 100644
index 7c1c8d83..501a7370 100644
--- a/music_assistant/helpers/ffmpeg.py
+++ b/music_assistant/helpers/ffmpeg.py
@@ -213,7 +213,7 @@ def get_ffmpeg_args( # noqa: PLR0915
@@ -218,7 +218,7 @@ def get_ffmpeg_args(
extra_args = []
# generic args
generic_args = [
- "ffmpeg",
@@ -51,11 +42,20 @@ index 0405fc27..570f9157 100644
"-hide_banner",
"-loglevel",
loglevel,
@@ -370,7 +370,7 @@ async def check_ffmpeg_version() -> None:
"""Check if ffmpeg is present (with libsoxr support)."""
# check for FFmpeg presence
try:
- returncode, output = await check_output("ffmpeg", "-version")
+ returncode, output = await check_output("@ffmpeg@", "-version")
except FileNotFoundError:
raise AudioError(
"FFmpeg binary is missing from system. "
diff --git a/music_assistant/helpers/tags.py b/music_assistant/helpers/tags.py
index 55def74b..7c26e13d 100644
index 06c8bcb5..a703aacd 100644
--- a/music_assistant/helpers/tags.py
+++ b/music_assistant/helpers/tags.py
@@ -387,7 +387,7 @@ async def parse_tags(input_file: str, file_size: int | None = None) -> AudioTags
@@ -438,7 +438,7 @@ def parse_tags(input_file: str, file_size: int | None = None) -> AudioTags:
Input_file may be a (local) filename or URL accessible by ffmpeg.
"""
args = (
@@ -64,7 +64,7 @@ index 55def74b..7c26e13d 100644
"-hide_banner",
"-loglevel",
"fatal",
@@ -448,7 +448,7 @@ async def get_embedded_image(input_file: str) -> bytes | None:
@@ -553,7 +553,7 @@ async def get_embedded_image(input_file: str) -> bytes | None:
Input_file may be a (local) filename or URL accessible by ffmpeg.
"""
args = (
+2 -2
View File
@@ -7,12 +7,12 @@
buildPythonPackage rec {
pname = "music-assistant-frontend";
version = "2.9.16";
version = "2.11.11";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-bUtclj8GMq1JdC4tYNETl+l+TNF91y4yTANSpuOOm70=";
hash = "sha256-fPFszZfJjdc2KTQipeb2KVbIwWwL56bqFGba1LSJXuQ=";
};
postPatch = ''
@@ -0,0 +1,29 @@
diff --git a/music_assistant/providers/spotify/helpers.py b/music_assistant/providers/spotify/helpers.py
index 8b6c4e78..20c2a269 100644
--- a/music_assistant/providers/spotify/helpers.py
+++ b/music_assistant/providers/spotify/helpers.py
@@ -11,23 +11,4 @@ from music_assistant.helpers.process import check_output
async def get_librespot_binary() -> str:
"""Find the correct librespot binary belonging to the platform."""
- # ruff: noqa: SIM102
- async def check_librespot(librespot_path: str) -> str | None:
- try:
- returncode, output = await check_output(librespot_path, "--version")
- if returncode == 0 and b"librespot" in output:
- return librespot_path
- except OSError:
- return None
-
- base_path = os.path.join(os.path.dirname(__file__), "bin")
- system = platform.system().lower().replace("darwin", "macos")
- architecture = platform.machine().lower()
-
- if bridge_binary := await check_librespot(
- os.path.join(base_path, f"librespot-{system}-{architecture}")
- ):
- return bridge_binary
-
- msg = f"Unable to locate Librespot for {system}/{architecture}"
- raise RuntimeError(msg)
+ return "@librespot@"
+16 -17
View File
@@ -3,6 +3,7 @@
python3,
fetchFromGitHub,
ffmpeg-headless,
librespot,
nixosTests,
replaceVars,
providers ? [ ],
@@ -12,27 +13,16 @@ let
python = python3.override {
self = python;
packageOverrides = self: super: {
aiojellyfin = super.aiojellyfin.overridePythonAttrs (oldAttrs: rec {
version = "0.10.1";
src = fetchFromGitHub {
owner = "Jc2k";
repo = "aiojellyfin";
tag = "v${version}";
hash = "sha256-A+uvM1/7HntRMIdknfHr0TMGIjHk7BCwsZopXdVoEO8=";
};
});
music-assistant-frontend = self.callPackage ./frontend.nix { };
music-assistant-models = super.music-assistant-models.overridePythonAttrs (oldAttrs: rec {
version = "1.1.4";
version = "1.1.30";
src = fetchFromGitHub {
owner = "music-assistant";
repo = "models";
tag = version;
hash = "sha256-keig18o32X53q/QcoaPO0o9AT4XTEZ+dQ3L6u6BVkLU=";
hash = "sha256-ZLTRHarjVFAk+tYPkgLm192rE+C82vNzqs8PmJhGSeg=";
};
postPatch = ''
@@ -54,14 +44,14 @@ in
python.pkgs.buildPythonApplication rec {
pname = "music-assistant";
version = "2.3.6";
version = "2.4.2";
pyproject = true;
src = fetchFromGitHub {
owner = "music-assistant";
repo = "server";
tag = version;
hash = "sha256-CSGpG1E4ou1TGz/S1mXFHyk49p7dStEwxUTB+xxfNEc=";
hash = "sha256-5FIIXIn4tEz6w/uAh6PGkU4tU+mz7Jpb3+bq1mRNr2Y=";
};
patches = [
@@ -69,6 +59,9 @@ python.pkgs.buildPythonApplication rec {
ffmpeg = "${lib.getBin ffmpeg-headless}/bin/ffmpeg";
ffprobe = "${lib.getBin ffmpeg-headless}/bin/ffprobe";
})
(replaceVars ./librespot.patch {
librespot = lib.getExe librespot;
})
# Disable interactive dependency resolution, which clashes with the immutable Python environment
./dont-install-deps.patch
@@ -77,6 +70,8 @@ python.pkgs.buildPythonApplication rec {
postPatch = ''
substituteInPlace pyproject.toml \
--replace-fail "0.0.0" "${version}"
rm -rv music_assistant/providers/spotify/bin
'';
build-system = with python.pkgs; [
@@ -85,6 +80,7 @@ python.pkgs.buildPythonApplication rec {
pythonRelaxDeps = [
"aiohttp"
"aiosqlite"
"certifi"
"colorlog"
"cryptography"
@@ -123,8 +119,10 @@ python.pkgs.buildPythonApplication rec {
memory-tempfile
music-assistant-frontend
music-assistant-models
mutagen
orjson
pillow
podcastparser
python-slugify
shortuuid
unidecode
@@ -136,7 +134,6 @@ python.pkgs.buildPythonApplication rec {
nativeCheckInputs =
with python.pkgs;
[
aiojellyfin
pytest-aiohttp
pytest-cov-stub
pytest-timeout
@@ -144,7 +141,9 @@ python.pkgs.buildPythonApplication rec {
syrupy
pytest-timeout
]
++ lib.flatten (lib.attrValues optional-dependencies);
++ lib.flatten (lib.attrValues optional-dependencies)
++ (providerPackages.jellyfin python.pkgs)
++ (providerPackages.opensubsonic python.pkgs);
pytestFlagsArray = [
# blocks in poll()
+20 -2
View File
@@ -1,12 +1,20 @@
# Do not edit manually, run ./update-providers.py
{
version = "2.3.6";
version = "2.4.2";
providers = {
airplay = ps: [
];
apple_music = ps: [
]; # missing pywidevine
audible =
ps: with ps; [
audible
];
audiobookshelf =
ps: with ps; [
aioaudiobookshelf
];
bluesound =
ps: with ps; [
pyblu
@@ -19,8 +27,9 @@
];
deezer =
ps: with ps; [
deezer-python-async
pycryptodome
]; # missing deezer-python-async
];
dlna =
ps: with ps; [
async-upnp-client
@@ -41,6 +50,8 @@
];
hass_players = ps: [
];
ibroadcast = ps: [
]; # missing ibroadcastaio
jellyfin =
ps: with ps; [
aiojellyfin
@@ -57,6 +68,10 @@
ps: with ps; [
plexapi
];
podcastfeed =
ps: with ps; [
podcastparser
];
qobuz = ps: [
];
radiobrowser =
@@ -87,6 +102,8 @@
ps: with ps; [
pkce
];
spotify_connect = ps: [
];
template_player_provider = ps: [
];
test = ps: [
@@ -101,6 +118,7 @@
];
ytmusic =
ps: with ps; [
duration-parser
yt-dlp
ytmusicapi
];
+10
View File
@@ -3,6 +3,7 @@
lib,
binutils,
fetchFromGitHub,
fetchpatch,
cmake,
pkg-config,
wrapGAppsHook3,
@@ -126,7 +127,15 @@ stdenv.mkDerivation rec {
patches = [
# Fix for webkitgtk linking
./patches/0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
# Link opencv_core and opencv_imgproc instead of opencv_world
./patches/dont-link-opencv-world-orca.patch
# The changeset from https://github.com/SoftFever/OrcaSlicer/pull/7650, can be removed when that PR gets merged
# Allows disabling the update nag screen
(fetchpatch {
name = "pr-7650-configurable-update-check.patch";
url = "https://github.com/SoftFever/OrcaSlicer/commit/d10a06ae11089cd1f63705e87f558e9392f7a167.patch";
hash = "sha256-t4own5AwPsLYBsGA15id5IH1ngM0NSuWdFsrxMRXmTk=";
})
];
doCheck = true;
@@ -186,6 +195,7 @@ stdenv.mkDerivation rec {
"-DCMAKE_CXX_FLAGS=-DGL_SILENCE_DEPRECATION"
"-DCMAKE_EXE_LINKER_FLAGS=-Wl,--no-as-needed"
"-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath,${mesa.drivers}/lib -Wl,-rpath,${mesa.osmesa}/lib"
"-DORCA_VERSION_CHECK_DEFAULT=OFF"
];
preFixup = ''
+4 -4
View File
@@ -62,13 +62,13 @@ in
rustPlatform.buildRustPackage {
pname = "servo";
version = "0-unstable-2025-03-01";
version = "0-unstable-2025-03-05";
src = fetchFromGitHub {
owner = "servo";
repo = "servo";
rev = "ce977636f63c2cded3c2d26cce548efbb91312b2";
hash = "sha256-m+VWSuxXRdY2Pqs7akmtpzrGmFLCY/5WSD/5cQU8RU4=";
rev = "69e749947910480e97ffaf22031316ebe7f67b9c";
hash = "sha256-p06547WijlfAUgMzbCyQUFx7Xq+eUI+iB6inQguzJ1c=";
# Breaks reproducibility depending on whether the picked commit
# has other ref-names or not, which may change over time, i.e. with
# "ref-names: HEAD -> main" as long this commit is the branch HEAD
@@ -79,7 +79,7 @@ rustPlatform.buildRustPackage {
};
useFetchCargoVendor = true;
cargoHash = "sha256-O7M1NJRaUPyh1+i8Ab2vvCwHMLBSMfwgEkfFCuIA9TA=";
cargoHash = "sha256-znHKck88XXjl+v3iJFCjq0Cxyxh1HrtLbK9o3y8Kelw=";
postPatch = ''
# Remap absolute path between modules to include SEMVER
+3 -3
View File
@@ -10,14 +10,14 @@
python3Packages.buildPythonApplication rec {
pname = "snakemake";
version = "8.29.0";
version = "8.29.2";
pyproject = true;
src = fetchFromGitHub {
owner = "snakemake";
repo = "snakemake";
tag = "v${version}";
hash = "sha256-vGa0N5jbm+b4FH1rkvZI5yI005K0D5AP29JGK2wscps=";
hash = "sha256-69NsbfHF29l92gwO8If9vp8Cdjac3BnO+hbY3b2bZ8E=";
};
postPatch = ''
@@ -152,7 +152,7 @@ python3Packages.buildPythonApplication rec {
homepage = "https://snakemake.github.io";
license = lib.licenses.mit;
description = "Python-based execution environment for make-like workflows";
changelog = "https://github.com/snakemake/snakemake/blob/v${version}/CHANGELOG.md";
changelog = "https://github.com/snakemake/snakemake/blob/${src.tag}/CHANGELOG.md";
mainProgram = "snakemake";
longDescription = ''
Snakemake is a workflow management system that aims to reduce the complexity of
+3 -3
View File
@@ -4,7 +4,7 @@
fetchFromGitHub,
}:
let
version = "1.1.7.1";
version = "1.2.0.0";
tag = "v${version}";
in
buildGoModule {
@@ -15,10 +15,10 @@ buildGoModule {
owner = "yorukot";
repo = "superfile";
inherit tag;
hash = "sha256-v7EfMgOsc6FSGIjYkF+44t0wl34WFmokOtzNOAOneBc=";
hash = "sha256-ByCKpNUWwVzO6A8Ad9V0P0lsquYgVqDS3eCta5iOfXI=";
};
vendorHash = "sha256-MdOdQQZhiuOJtnj5n1uVbJV6KIs0aa1HLZpFmvxxsWY=";
vendorHash = "sha256-5mjy6Mu/p7UJCxn2XRbgtfGmrS+9bEt4+EVheYZcDpY=";
ldflags = [
"-s"
@@ -0,0 +1,43 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
aiohttp,
mashumaro,
python-socketio,
}:
buildPythonPackage rec {
pname = "aioaudiobookshelf";
version = "0.1.4";
pyproject = true;
src = fetchFromGitHub {
owner = "music-assistant";
repo = "aioaudiobookshelf";
tag = version;
hash = "sha256-rUd8TwmQDeMxXu7/UBnN426N+BMas2u6RNpTBXa3/5g=";
};
build-system = [
setuptools
];
dependencies = [
aiohttp
mashumaro
python-socketio
];
pythonImportsCheck = [
"aioaudiobookshelf"
];
meta = {
description = "Async python library to interact with Audiobookshelf";
homepage = "https://github.com/music-assistant/aioaudiobookshelf";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ hexa ];
};
}
@@ -11,7 +11,7 @@
buildPythonPackage rec {
pname = "aiorun";
version = "2024.8.1";
version = "2025.1.1";
pyproject = true;
disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
owner = "cjrh";
repo = "aiorun";
tag = "v${version}";
hash = "sha256-D+4IceCdPg1Akq1YgPuSGF7yAOhDe8PmioNBE5X7yuQ=";
hash = "sha256-YqUlWf79EbC47BETBDjo8hzg5jhL4LiWLKGr1Qy4AbM=";
};
build-system = [ flit-core ];
@@ -0,0 +1,48 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
poetry-core,
# dependencies
aiohttp,
asyncio-throttle,
}:
buildPythonPackage rec {
pname = "deezer-python-async";
version = "0.3.0";
pyproject = true;
src = fetchFromGitHub {
owner = "music-assistant";
repo = "deezer-python-async";
tag = "v${version}";
hash = "sha256-uuAB+SC/ECG50ox/6Bi+94bAt+YZokeQChpDQUAK+zc=";
};
build-system = [
poetry-core
];
dependencies = [
aiohttp
asyncio-throttle
];
doCheck = false; # requires access to the deezer api
pythonImportsCheck = [
"deezer"
];
meta = {
description = "Deezer client for python *but async";
homepage = "https://github.com/music-assistant/deezer-python-async";
changelog = "https://github.com/music-assistant/deezer-python-async/blob/${src.tag}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ hexa ];
};
}
@@ -0,0 +1,39 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "duration-parser";
version = "1.0.1";
pyproject = true;
src = fetchFromGitHub {
owner = "adriansahlman";
repo = "duration-parser";
tag = "v${version}";
hash = "sha256-Vn3H2JEMrJ6b/7eNG+h9tG5QzslGvaV3sunM7UO9Bok=";
};
build-system = [
setuptools
];
nativeCheckInputs = [
pytestCheckHook
];
pythonImportsCheck = [
"duration_parser"
];
meta = {
description = "A minimal duration parser written in python";
homepage = "https://github.com/adriansahlman/duration-parser";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ hexa ];
};
}
@@ -15,14 +15,14 @@
buildPythonPackage rec {
pname = "scikit-hep-testdata";
version = "0.5.2";
version = "0.5.3";
pyproject = true;
src = fetchFromGitHub {
owner = "scikit-hep";
repo = "scikit-hep-testdata";
tag = "v${version}";
hash = "sha256-yG9ZeBKB0NcTZ8zU0iJTSwDvaafD+2FzkDk2dVYSJO8=";
hash = "sha256-T325BqQquuTwSKaei4O+UBzzB+OIXhubdPNaBmVkrCk=";
};
build-system = [ setuptools-scm ];
@@ -41,7 +41,7 @@ buildPythonPackage rec {
meta = {
homepage = "https://github.com/scikit-hep/scikit-hep-testdata";
description = "Common package to provide example files (e.g., ROOT) for testing and developing packages against";
changelog = "https://github.com/scikit-hep/scikit-hep-testdata/releases/tag/v${version}";
changelog = "https://github.com/scikit-hep/scikit-hep-testdata/releases/tag/${src.tag}";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ veprbl ];
};
@@ -7,13 +7,13 @@
buildHomeAssistantComponent rec {
owner = "jwillemsen";
domain = "daikin_onecta";
version = "4.2.2";
version = "4.2.3";
src = fetchFromGitHub {
owner = "jwillemsen";
repo = "daikin_onecta";
tag = "v${version}";
hash = "sha256-kjFBy+Nq9aQSsmvzWT2Wy/BwMpyd8GdgSXIrp44cMnA=";
hash = "sha256-ylVHgmE6zDLE73KpuIag0iUx77w6ujp3cF/+x2bJiA8=";
};
meta = {
@@ -2,25 +2,55 @@
lib,
fetchFromGitHub,
buildHomeAssistantComponent,
pytz,
# dependencies
hass-web-proxy-lib,
# tests
homeassistant,
pytest-aiohttp,
pytest-cov-stub,
pytest-homeassistant-custom-component,
pytest-timeout,
pytestCheckHook,
}:
buildHomeAssistantComponent rec {
owner = "blakeblackshear";
domain = "frigate";
version = "5.4.0";
version = "5.8.0";
src = fetchFromGitHub {
owner = "blakeblackshear";
repo = "frigate-hass-integration";
rev = "v${version}";
hash = "sha256-V2Y+xUAA/Lu7u82WUlUI5CFi9SGWe6ocVQtlXeVg2ZA=";
tag = "v${version}";
hash = "sha256-sQgi3F44eT/iL3cE9YuKyjJmE4nZM+OcwirUyl3maGo=";
};
dependencies = [ pytz ];
dependencies = [ hass-web-proxy-lib ];
dontBuild = true;
nativeCheckInputs =
[
homeassistant
pytest-aiohttp
pytest-cov-stub
pytest-homeassistant-custom-component
pytest-timeout
pytestCheckHook
]
++ (homeassistant.getPackages "mqtt" homeassistant.python.pkgs)
++ (homeassistant.getPackages "stream" homeassistant.python.pkgs);
disabledTests = [
# uses deprecated and removed constants
# https://github.com/blakeblackshear/frigate-hass-integration/issues/860
"test_duplicate"
"test_options_advanced"
"test_options"
];
meta = with lib; {
description = "Provides Home Assistant integration to interface with a separately running Frigate service";
homepage = "https://github.com/blakeblackshear/frigate-hass-integration";
@@ -7,13 +7,13 @@
buildHomeAssistantComponent rec {
owner = "xZetsubou";
domain = "localtuya";
version = "2025.3.0";
version = "2025.3.1";
src = fetchFromGitHub {
owner = "xZetsubou";
repo = "hass-localtuya";
rev = version;
hash = "sha256-ZtUK73aj2NKlcanlFZLeL35X1M9CrMLYLW0P0cILdr8=";
hash = "sha256-DZ0TS6vdMDBCYP661GeRm+pAmm387/+/DayIBkeuPQA=";
};
meta = with lib; {
@@ -2,36 +2,26 @@
lib,
buildHomeAssistantComponent,
fetchFromGitHub,
fetchpatch,
aiofiles,
broadlink,
distutils,
nix-update-script,
}:
buildHomeAssistantComponent rec {
owner = "smartHomeHub";
domain = "smartir";
version = "1.17.9";
version = "1.18.0";
src = fetchFromGitHub {
owner = "smartHomeHub";
repo = "SmartIR";
rev = version;
hash = "sha256-E6TM761cuaeQzlbjA+oZ+wt5HTJAfkF2J3i4P1Wbuic=";
tag = version;
hash = "sha256-Sy1wxVUApKWm9TlDia2Gwd+mIi7WbDkzJrAtyb0tTbM=";
};
patches = [
# Replace distutils.version.StrictVersion with packaging.version.Version
# https://github.com/smartHomeHub/SmartIR/pull/1250
(fetchpatch {
url = "https://github.com/smartHomeHub/SmartIR/commit/1ed8ef23a8f7b9dcae75721eeab8d5f79013b851.patch";
hash = "sha256-IhdnTDtUa7mS+Vw/+BqfqWIKK4hbshbVgJNjfKjgAvI=";
})
];
dependencies = [
aiofiles
broadlink
distutils
];
dontBuild = true;
@@ -11,13 +11,13 @@
buildHomeAssistantComponent rec {
owner = "al-one";
domain = "xiaomi_miot";
version = "1.0.12";
version = "1.0.13";
src = fetchFromGitHub {
owner = "al-one";
repo = "hass-xiaomi-miot";
rev = "v${version}";
hash = "sha256-WU512UnKRHVoflerXK4vs/wJXxaerC1XVhfLN1YPh84=";
hash = "sha256-RjEhmdoImfWcvrQ09wX3WaWS8qKuzL2+2Rrz1BfEFFA=";
};
dependencies = [
@@ -8,13 +8,13 @@
buildHomeAssistantComponent rec {
owner = "cdnninja";
domain = "yoto";
version = "1.23.0";
version = "1.23.2";
src = fetchFromGitHub {
owner = "cdnninja";
repo = "yoto_ha";
tag = "v${version}";
hash = "sha256-FB711ofk5BV/U0ZWfa6Q2aheZkzbwxDUfqNDu9wj2aQ=";
hash = "sha256-RErsZGSoBhBGg852znZq6W8oDZmDDoPTZihUBhWCO5w=";
};
dependencies = [
@@ -0,0 +1,35 @@
{
lib,
stdenv,
fetchzip,
}:
stdenv.mkDerivation rec {
pname = "advanced-camera-card";
version = "7.3.2";
src = fetchzip {
url = "https://github.com/dermotduffy/advanced-camera-card/releases/download/v${version}/advanced-camera-card.zip";
hash = "sha256-N9G96yGas1hrB2zpUPrB+md7Nz2vg7/2NhyqNjFBlxM=";
};
# TODO: build from source once yarn berry support lands in nixpkgs
dontBuild = true;
installPhase = ''
runHook preInstall
install -d $out
install -m0644 *.js $out/
runHook postInstall
'';
meta = {
changelog = "https://github.com/dermotduffy/advanced-camera-card/releases/tag/v${version}";
description = "A comprehensive camera card for Home Assistant";
homepage = "https://github.com/dermotduffy/advanced-camera-card";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ hexa ];
};
}
@@ -9,18 +9,18 @@
}:
stdenvNoCC.mkDerivation rec {
pname = "clock-weather-card";
version = "2.8.9";
version = "2.8.10";
src = fetchFromGitHub {
owner = "pkissling";
repo = "clock-weather-card";
tag = "v${version}";
hash = "sha256-7b0U6HelWLoCvkJrqzRbRyDnl0odi6OYYEp0sUOYnoU=";
hash = "sha256-ZmqtvA6kRkqkoRCBerLZXqRB1wwTF0jrc+KfigaE7Pw=";
};
offlineCache = fetchYarnDeps {
yarnLock = src + "/yarn.lock";
hash = "sha256-9MFEJQ9JYUjded6sdDcF/kB+ZdGE6z4MZOzFk1Qb3vo=";
hash = "sha256-Z9UZHsmaRjaf7fIDYhNmlLU2T1l1hlFKvyEahPK3Y3E=";
};
nativeBuildInputs = [
+1
View File
@@ -354,6 +354,7 @@ let
});
# internal python packages only consumed by home-assistant itself
hass-web-proxy-lib = self.callPackage ./python-modules/hass-web-proxy-lib { };
home-assistant-frontend = self.callPackage ./frontend.nix { };
home-assistant-intents = self.callPackage ./intents.nix { };
homeassistant = self.toPythonModule home-assistant;
@@ -18,7 +18,7 @@
buildPythonPackage rec {
pname = "pytest-homeassistant-custom-component";
version = "0.13.214";
version = "0.13.220";
pyproject = true;
disabled = pythonOlder "3.12";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
owner = "MatthewFlamm";
repo = "pytest-homeassistant-custom-component";
rev = "refs/tags/${version}";
hash = "sha256-AbqDLFC/U+zJJF4pc1ovuzwmXLv37ojCpQQIzWUc/70=";
hash = "sha256-p/pC0dgKRVPlu3kOiSmeGhbfRW7cPm5W0Lr38XWlcnQ=";
};
build-system = [ setuptools ];
@@ -0,0 +1,72 @@
{
lib,
buildPythonPackage,
fetchPypi,
fetchpatch2,
# build-system
poetry-core,
# dependencies
aiohttp,
# tests
home-assistant,
pytest-aiohttp,
pytest-cov-stub,
pytest-homeassistant-custom-component,
pytest-timeout,
pytestCheckHook,
# reverse dependencies
home-assistant-custom-components,
}:
buildPythonPackage rec {
pname = "hass-web-proxy-lib";
version = "0.0.7";
pyproject = true;
# no tags on git
src = fetchPypi {
pname = "hass_web_proxy_lib";
inherit version;
hash = "sha256-bhz71tNOpZ+4tSlndS+UbC3w2WW5+dAMtpk7TnnFpuQ=";
};
patches = [
(fetchpatch2 {
name = "add-missing-build-system.patch";
url = "https://github.com/dermotduffy/hass-web-proxy-lib/commit/0eed7a57f503fc552948a45e7f490ddaff711896.patch";
hash = "sha256-ccOdhA0NhlTmdA51sNdB357Xh13E4PsLlvUTU4GQ9jk=";
})
];
build-system = [ poetry-core ];
dependencies = [ aiohttp ];
nativeCheckInputs = [
home-assistant
pytest-aiohttp
pytest-cov-stub
pytest-homeassistant-custom-component
pytest-timeout
pytestCheckHook
];
pythonImportsCheck = [
"hass_web_proxy_lib"
];
passthru.tests = {
inherit (home-assistant-custom-components) frigate;
};
meta = {
description = "A library to proxy web traffic through Home Assistant integrations";
homepage = "https://github.com/dermotduffy/hass-web-proxy-lib";
license = lib.licenses.mit;
maintainers = home-assistant-custom-components.frigate.meta.maintainers;
};
}
+2 -2
View File
@@ -10,7 +10,7 @@
buildPythonPackage rec {
pname = "homeassistant-stubs";
version = "2025.2.5";
version = "2025.3.0";
pyproject = true;
disabled = python.version != home-assistant.python.version;
@@ -19,7 +19,7 @@ buildPythonPackage rec {
owner = "KapJI";
repo = "homeassistant-stubs";
rev = "refs/tags/${version}";
hash = "sha256-tqg7NHvtKrXJ8+czcWqoaPMLYfskjuoFmSOkhjmnr3g=";
hash = "sha256-4Chn8PRvTERiTQqhp3ScoV6woISvEWHFoohCKzLJCP8=";
};
build-system = [
+5 -6
View File
@@ -7,7 +7,6 @@
pkg-config,
protobuf,
cacert,
garage,
nixosTests,
}:
let
@@ -133,10 +132,10 @@ rec {
broken = stdenv.hostPlatform.isDarwin;
};
garage_1_0_1 = generic {
version = "1.0.1";
hash = "sha256-f6N2asycN04I6U5XQ5LEAqYu/v5jYZiFCxZ8YQ32XyM=";
cargoHash = "sha256-DX20Uv4g8JO3PlRsTbvr8nF4g9aw1/hW0bfQm6zGBd4=";
garage_1_1_0 = generic {
version = "1.1.0";
hash = "sha256-ysf/GYR39trXTPRdw8uB6E4YDp4nAR8dbU9k9rQTxz0=";
cargoHash = "sha256-SkDr/e9YZ3raTGucaiv/RV2zF9tEDIeqZeri6Xk3xEU=";
broken = stdenv.hostPlatform.isDarwin;
};
@@ -144,7 +143,7 @@ rec {
garage_0_9 = garage_0_9_4;
garage_1_x = garage_1_0_1;
garage_1_x = garage_1_1_0;
garage = garage_1_x;
}
+1 -1
View File
@@ -3347,7 +3347,7 @@ with pkgs;
garage
garage_0_8 garage_0_9
garage_0_8_7 garage_0_9_4
garage_1_0_1 garage_1_x;
garage_1_1_0 garage_1_x;
gauge-unwrapped = callPackage ../development/tools/gauge { };
gauge = callPackage ../development/tools/gauge/wrapper.nix { };
+6
View File
@@ -185,6 +185,8 @@ self: super: with self; {
aioasuswrt = callPackage ../development/python-modules/aioasuswrt { };
aioaudiobookshelf = callPackage ../development/python-modules/aioaudiobookshelf { };
aioautomower = callPackage ../development/python-modules/aioautomower { };
aioazuredevops = callPackage ../development/python-modules/aioazuredevops { };
@@ -3194,6 +3196,8 @@ self: super: with self; {
deezer-python = callPackage ../development/python-modules/deezer-python { };
deezer-python-async = callPackage ../development/python-modules/deezer-python-async { };
defang = callPackage ../development/python-modules/defang { };
defcon = callPackage ../development/python-modules/defcon { };
@@ -4036,6 +4040,8 @@ self: super: with self; {
duo-client = callPackage ../development/python-modules/duo-client { };
duration-parser = callPackage ../development/python-modules/duration-parser { };
durationpy = callPackage ../development/python-modules/durationpy { };
durus = callPackage ../development/python-modules/durus { };