Merge master into staging-nixos

This commit is contained in:
nixpkgs-ci[bot]
2025-11-22 06:06:59 +00:00
committed by GitHub
42 changed files with 414 additions and 380 deletions
@@ -26,11 +26,11 @@ let
hash =
{
x86_64-linux = "sha256-+aMcRAM1mOu2rLCVGtkygGgM/8VNeteM66BOlmQCIpA=";
x86_64-darwin = "sha256-A/5l3LZn7SYNLkixNAfcb0HJlXY9dN9tjDT/KJ4Ycqk=";
aarch64-linux = "sha256-LxVKn5ld2mhsV9ya2V9zXEjtEZRAUWupMgkWXSgrL+8=";
aarch64-darwin = "sha256-jF18swYLWCtT0GerSLkT01M1sGZmkAb6bRZlRL5Bna4=";
armv7l-linux = "sha256-MlN22vWh0FiqgYQqZ1YjhAEtPRGaGv4Rz3J3LF6udts=";
x86_64-linux = "sha256-lteOBRRmAQbY1zlPaBU8wKdmtpCP4vkk5+YuQ0B5RXg=";
x86_64-darwin = "sha256-1AVMMMEVadg5NpV+xr9kyoX6bNB2uJjBbtXDJ878DvM=";
aarch64-linux = "sha256-XrY+WyRaEvczbtZWRdRhtOOzIOubM+2zvNQ8XMF8bQk=";
aarch64-darwin = "sha256-qgZTf8tWtpf1lRZL9hz3y1AAOn7zElAaCJRo4wUNYeQ=";
armv7l-linux = "sha256-mZof3m9FQrByZoUy7VtS56ePTzbSXmu2Uo1QC0Ay+nM=";
}
.${system} or throwSystem;
@@ -41,7 +41,7 @@ callPackage ./generic.nix rec {
# Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem.
version = "1.105.17075";
version = "1.106.27818";
pname = "vscodium";
executableName = "codium";
@@ -10,13 +10,13 @@
buildKodiAddon rec {
pname = "youtube";
namespace = "plugin.video.youtube";
version = "7.2.0.3";
version = "7.3.0";
src = fetchFromGitHub {
owner = "anxdpanic";
repo = "plugin.video.youtube";
rev = "v${version}";
hash = "sha256-Igw4F/6+Ewrxsz1RI4csYsHmB12bkbW+764fQvqCx+0=";
hash = "sha256-JVlIe63oyA8Re8nqLte4y5kyRENzyNg8ZJKdn9wJFwg=";
};
propagatedBuildInputs = [
@@ -23,7 +23,7 @@ lib.makeOverridable (
extendedBy (if lib.isFunction args then args else (_: args)) (
{
pname,
extraScripts ? [ ],
extraScriptsToCopy ? [ ],
runtime-dependencies ? [ ],
...
}@args:
@@ -59,8 +59,8 @@ lib.makeOverridable (
echo "Script directory '${scriptPath}' does not contain 'main.lua'" >&2
exit 1
}
[ ${with builtins; toString (length extraScripts)} -eq 0 ] || {
echo "mpvScripts.buildLua does not support 'extraScripts'" \
[ ${with builtins; toString (length extraScriptsToCopy)} -eq 0 ] || {
echo "mpvScripts.buildLua does not support 'extraScriptsToCopy'" \
"when 'scriptPath' is a directory" >&2
exit 1
}
@@ -69,8 +69,8 @@ lib.makeOverridable (
else
install -m644 -Dt "${scriptsDir}" ${escaped scriptPath}
${lib.optionalString (
extraScripts != [ ]
) ''cp -at "${scriptsDir}/" ${escapedList extraScripts}''}
extraScriptsToCopy != [ ]
) ''cp -at "${scriptsDir}/" ${escapedList extraScriptsToCopy}''}
fi
runHook postInstall
@@ -32,7 +32,7 @@ buildLua {
'';
passthru.scriptName = "cutter.lua";
extraScripts = [ "c_concat.sh" ];
extraScriptsToCopy = [ "c_concat.sh" ];
postInstall = ''
wrapProgram $out/share/mpv/scripts/c_concat.sh \
@@ -8,7 +8,8 @@ buildLua (finalAttrs: {
version = "0-unstable-2024-08-19";
scriptPath = "osc_tethys.lua";
extraScripts = [ "mpv_thumbnail_script_server.lua" ];
extraScriptsToCopy = [ "mpv_thumbnail_script_server.lua" ];
extraScriptsToLoad = [ "mpv_thumbnail_script_server.lua" ];
src = fetchFromGitHub {
owner = "Zren";
@@ -18,7 +18,8 @@ buildLua rec {
};
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
extraScripts = lib.optional oscSupport "quality-menu-osc.lua";
extraScriptsToCopy = lib.optional oscSupport "quality-menu-osc.lua";
extraScriptsToLoad = lib.optional oscSupport "quality-menu-osc.lua";
meta = with lib; {
description = "Userscript for MPV that allows you to change youtube video quality (ytdl-format) on the fly";
@@ -39,7 +39,7 @@ buildLua {
--replace-fail 'mp.find_config_file("scripts")' "\"$out/share/mpv/scripts\""
'';
extraScripts = [ "sponsorblock_shared" ];
extraScriptsToCopy = [ "sponsorblock_shared" ];
passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
@@ -23,8 +23,8 @@ buildLua rec {
dontBuild = false;
scriptPath = "mpv_thumbnail_script_client_osc.lua";
extraScripts = [ "mpv_thumbnail_script_server.lua" ];
passthru.scriptName = "mpv_thumbnail_script_{client_osc,server}.lua";
extraScriptsToCopy = [ "mpv_thumbnail_script_server.lua" ];
extraScriptsToLoad = [ "mpv_thumbnail_script_server.lua" ];
meta = {
description = "Lua script to show preview thumbnails in mpv's OSC seekbar";
+11 -6
View File
@@ -82,12 +82,17 @@ let
# For every script in the `scripts` argument, add the necessary flags to the wrapper
(
script:
[
"--add-flags"
# Here we rely on the existence of the `scriptName` passthru
# attribute of the script derivation from the `scripts`
"--script=${script}/share/mpv/scripts/${script.scriptName}"
]
let
mkScriptArgs = script: scriptName: [
"--add-flags"
"--script=${script}/share/mpv/scripts/${scriptName}"
];
in
# Here we rely on the existence of the `scriptName` passthru
# attribute of the script derivation from the `scripts`
(mkScriptArgs script script.scriptName)
# scripts might need others to be explicitly loaded
++ (map (extraScriptName: mkScriptArgs script extraScriptName) (script.extraScriptsToLoad or [ ]))
# scripts can also set the `extraWrapperArgs` passthru
++ (script.extraWrapperArgs or [ ])
)
@@ -1,49 +0,0 @@
From 3f86afc3a14474bff39573b1806046c888203096 Mon Sep 17 00:00:00 2001
From: wxt <3264117476@qq.com>
Date: Thu, 19 Jun 2025 15:37:16 +0800
Subject: [PATCH 1/2] core: validate bin_path to prevent RCE in start_clash
Add a security check in CoreManager::start_clash to ensure that the provided
binary path (`bin_path`) must be located under the current executable's
directory. This prevents potential remote code execution (RCE) attacks
caused by arbitrary binary path injection.
---
src/service/core.rs | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/src/service/core.rs b/src/service/core.rs
index 28e1d42..21efb26 100644
--- a/src/service/core.rs
+++ b/src/service/core.rs
@@ -7,6 +7,7 @@ use once_cell::sync::Lazy;
use std::{
sync::{atomic::Ordering, Arc, Mutex},
fs::File,
+ env,
};
use log::{info, error};
@@ -223,6 +224,20 @@ impl CoreManager {
}
pub fn start_clash(&self, body: StartBody) -> Result<(), String> {
+ {
+ let bin_path = std::path::Path::new(body.bin_path.as_str());
+ let current_exe = std::env::current_exe()
+ .map_err(|e| format!("Failed to get current exe path: {}", e))?;
+ let current_dir = current_exe.parent()
+ .ok_or("Failed to get current directory")?;
+
+ if !bin_path.starts_with(current_dir) {
+ return Err(format!(
+ "Invalid binary path for clash kernel. It must be under: {}",
+ current_dir.display()
+ ));
+ }
+ }
// 设置配置并测试
{
info!("设置Clash运行时配置: {:?}", body);
--
2.49.0
@@ -1,33 +0,0 @@
From f7b094a19a47ba515d734f65754d4e57b87239c1 Mon Sep 17 00:00:00 2001
From: wxt <3264117476@qq.com>
Date: Thu, 19 Jun 2025 15:45:44 +0800
Subject: [PATCH 2/2] core: prevent overwriting existing file by validating its
existence
Add a check to verify whether the specified `log_file` already exists before proceeding.
If the file exists, return an error to prevent accidental or malicious overwriting of files.
This enhances the security of log file handling by mitigating arbitrary file overwrite risks.
---
src/service/core.rs | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/service/core.rs b/src/service/core.rs
index 21efb26..004d0f0 100644
--- a/src/service/core.rs
+++ b/src/service/core.rs
@@ -123,6 +123,12 @@ impl CoreManager {
let config_file = config.config_file.as_str();
let log_file = config.log_file.as_str();
let args = vec!["-d", config_dir, "-f", config_file];
+ {
+ let log_file_2 = std::path::Path::new(log_file);
+ if log_file_2.exists() {
+ return Err(anyhow!(format!("Log file already exists: {}", log_file_2.display())));
+ }
+ }
info!("正在启动mihomo: {} -d {} -f {}", bin_path, config_dir, config_file);
--
2.49.0
@@ -1,32 +0,0 @@
From 75296a3059419b91f638ee45215e56781bfda256 Mon Sep 17 00:00:00 2001
From: wxt <3264117476@qq.com>
Date: Sat, 28 Jun 2025 14:30:23 +0800
Subject: [PATCH] IPC: move path to /run/clash-verge-rev/service.sock
---
src/service/ipc.rs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/service/ipc.rs b/src/service/ipc.rs
index df39787..f441cd2 100644
--- a/src/service/ipc.rs
+++ b/src/service/ipc.rs
@@ -20,7 +20,7 @@ use std::ffi::OsStr;
const IPC_SOCKET_NAME: &str = if cfg!(windows) {
r"\\.\pipe\clash-verge-service"
} else {
- "/tmp/clash-verge-service.sock"
+ "/run/clash-verge-rev/service.sock"
};
/// 消息时间有效期(秒)
@@ -660,4 +660,4 @@ fn handle_unix_connection_sync(mut stream: std::os::unix::net::UnixStream) -> Re
.context("写入响应内容失败")?;
Ok(())
-}
\ No newline at end of file
+}
--
2.49.0
+4 -16
View File
@@ -12,32 +12,20 @@
}:
let
pname = "clash-verge-rev";
version = "2.4.2";
version = "2.4.3";
src = fetchFromGitHub {
owner = "clash-verge-rev";
repo = "clash-verge-rev";
tag = "v${version}";
hash = "sha256-HBWvk6bX0GjU/yvUejYgTQM8/IP5dYVrf30wNzgWv0s=";
hash = "sha256-GmoeOLKxdW1x6PHtslwNPVq8wDWA413NHA/VeDRb4mA=";
};
src-service = fetchFromGitHub {
owner = "clash-verge-rev";
repo = "clash-verge-service";
rev = "396150683e01e79740563561ae2fe2db28fb8904"; # no meaningful tags in this repo. The only way is updating manully every time.
hash = "sha256-D6U22+tJ6vxn8/BTj/PV+4SF5fvGv6KAWtu5+PNJ1SQ=";
};
service-cargo-hash = "sha256-54nmhQjtPLMPoRML/3rG1jipT1VC5EDgRXnKDYuLVmM=";
pnpm-hash = "sha256-neRjVL29xxbQu/XxsQjdAka71oJww40LeDusjsgsY00=";
vendor-hash = "sha256-XszXDajAdYKEUoyrHZDxxp8ICReMnSdEeKVx7JHiaU4=";
pnpm-hash = "sha256-qDwXPTfh1yOlugZe1UPUMKRyZOSagG4lX2eiFACgHRw=";
vendor-hash = "sha256-z5xVbqh+CiaTDtAx2VPQ4UjliYnV44tdp3pS8vzb1K4=";
service = callPackage ./service.nix {
inherit
version
src-service
service-cargo-hash
pname
meta
;
};
+39 -39
View File
@@ -1,47 +1,47 @@
{
version,
rustPlatform,
src-service,
pkg-config,
openssl,
pname,
service-cargo-hash,
fetchFromGitHub,
meta,
procps,
}:
rustPlatform.buildRustPackage {
pname = "${pname}-service";
inherit version meta;
src = src-service;
sourceRoot = "${src-service.name}";
rustPlatform.buildRustPackage (finalAttrs: {
pname = "clash-verge-service-ipc";
version = "2.0.21";
patches = [
# I want to keep these patches because it's not harmful.
# Patch: Restrict bin_path in spawn_process to be under the clash-verge-service directory.
# This prevents arbitrary code execution by ensuring only trusted binaries from the Nix store are allowed to run.
./0001-core-validate-bin_path-to-prevent-RCE-in-start_clash.patch
# Patch: Add validation to prevent overwriting existing files.
# This mitigates arbitrary file overwrite risks by ensuring a file does not already exist before writing.
./0002-core-prevent-overwriting-existing-file-by-validating.patch
# Patch: move IPC directory from /tmp to /run/clash-verge-rev/service.lock
# This allows we enable ProtectSystem="strict" and PrivateTmp
./0003-IPC-move-path-to-run-clash-verge-rev-service.sock.patch
];
nativeBuildInputs = [
pkg-config
];
buildInputs = [
openssl
];
env = {
OPENSSL_NO_VENDOR = 1;
src = fetchFromGitHub {
owner = "clash-verge-rev";
repo = "clash-verge-service-ipc";
rev = "v${finalAttrs.version}";
hash = "sha256-9c9fM1l31NbY//Ri50Ql60BWWgISjMWj72ABixRaXvM=";
};
cargoHash = service-cargo-hash;
}
postPatch = ''
# set socket path for service and test respectively
substituteInPlace src/lib.rs \
--replace-fail "/tmp/verge/clash-verge-service.sock" "/run/clash-verge-rev/service.sock" \
--replace-fail "/tmp/verge/clash-verge-service-test.sock" "$sourceRoot/clash-verge-service-test.sock"
substituteInPlace tests/test_start_permissions.rs \
--replace-fail "owner_perm | group_perm | other_perm" "0o0755"
'';
cargoHash = "sha256-UbNN3uFu5anQV+3KMFPNnGrCDQTGb4uC9K83YghfQgY=";
buildFeatures = [
"standalone"
];
nativeCheckInputs = [
procps
];
# build mock_binary for tests
preCheck = ''
cargo build --features=test
'';
checkFeatures = [
"standalone"
"test"
"client"
];
inherit meta;
})
+13 -13
View File
@@ -8,6 +8,7 @@
vendor-hash,
rustPlatform,
fetchpatch,
cargo-tauri,
jq,
@@ -44,20 +45,25 @@ rustPlatform.buildRustPackage {
OPENSSL_NO_VENDOR = 1;
};
patches = [
(fetchpatch {
url = "https://github.com/clash-verge-rev/clash-verge-rev/commit/645b92bc2815fe55bbc827907bff0edbfee48674.patch";
hash = "sha256-BH0SvVofW6YJ3e/LOHojisenMwcxYfm3gG/dbxvYBMs=";
})
];
postPatch = ''
# We disable the option to try to use the bleeding-edge version of mihomo
# If you need a newer version, you can override the mihomo input of the wrapped package
sed -i -e '/Mihomo Alpha/d' ./src/components/setting/mods/clash-core-viewer.tsx
# See service.nix for reasons
substituteInPlace src-tauri/src/core/service_ipc.rs \
--replace-fail "/tmp/clash-verge-service.sock" "/run/clash-verge-rev/service.sock"
# Set service.sock path
substituteInPlace $cargoDepsCopy/clash_verge_service_ipc-*/src/lib.rs \
--replace-fail "/tmp/verge/clash-verge-service.sock" "/run/clash-verge-rev/service.sock"
# Set verge-mihomo.sock path
# In service mode, use /run/clash-verge-rev
# In sidecar mode, use $XDG_RUNTIME_DIR or /run/user/$UID or /tmp
substituteInPlace src-tauri/src/utils/dirs.rs \
--replace-fail '"/var/tmp", "/tmp"' '"/run/clash-verge-rev", &std::env::var("XDG_RUNTIME_DIR").unwrap_or_else(|_| std::env::var("UID").map(|uid| format!("/run/user/{}", uid)).unwrap_or_else(|_| "/tmp".to_string()))' \
--replace-fail 'base_dir.join("verge")' 'base_dir'
--replace-fail 'once("/tmp")' 'once(&std::env::var("XDG_RUNTIME_DIR").unwrap_or_else(|_| std::env::var("UID").map(|uid| format!("/run/user/{}", uid)).unwrap_or_else(|_| "/tmp".to_string())))' \
--replace-fail 'join("verge")' 'join("clash-verge-rev")'
substituteInPlace $cargoDepsCopy/libappindicator-sys-*/src/lib.rs \
--replace-fail "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1"
@@ -80,12 +86,6 @@ rustPlatform.buildRustPackage {
' src-tauri/tauri.conf.json | sponge src-tauri/tauri.conf.json
jq 'del(.bundle.externalBin)' src-tauri/tauri.linux.conf.json | sponge src-tauri/tauri.linux.conf.json
# As a side effect of patching the service to fix the arbitrary file overwrite issue,
# we also need to update the timestamp format in the filename to the second level.
# This ensures that the Clash kernel can still be restarted within one minute without problems.
substituteInPlace src-tauri/src/utils/dirs.rs \
--replace-fail '%Y-%m-%d-%H%M' '%Y-%m-%d-%H%M%S'
'';
nativeBuildInputs = [
-13
View File
@@ -1,13 +0,0 @@
--- a/libdeja/duplicity/DuplicityInstance.vala
+++ b/libdeja/duplicity/DuplicityInstance.vala
@@ -114,8 +114,8 @@ internal class DuplicityInstance : Object
// We already are pretty sure we don't have other duplicities in our
// archive directories, because we use our own and we ensure we only have
// one deja-dup running at a time via DBus.
var lockfile_glob = Shell.quote(cache_dir) + "/*/lockfile.lock";
- if (Posix.system("/bin/rm -f " + lockfile_glob) != 0)
+ if (Posix.system("@coreutils@/bin/rm -f " + lockfile_glob) != 0)
warning("Could not delete '%s'", lockfile_glob);
Process.spawn_async_with_pipes(null, real_argv, real_envp,
SpawnFlags.SEARCH_PATH |
+21 -22
View File
@@ -2,25 +2,26 @@
lib,
stdenv,
fetchFromGitLab,
replaceVars,
meson,
ninja,
pkg-config,
vala,
gettext,
itstool,
blueprint-compiler,
desktop-file-utils,
glib,
glib-networking,
gtk4,
coreutils,
libsoup_3,
libsecret,
libadwaita,
wrapGAppsHook4,
libgpg-error,
json-glib,
borgbackup,
duplicity,
fuse,
rclone,
restic,
nix-update-script,
@@ -28,22 +29,16 @@
stdenv.mkDerivation (finalAttrs: {
pname = "deja-dup";
version = "48.4";
version = "49.2";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "deja-dup";
rev = finalAttrs.version;
hash = "sha256-hFmuJqUHBMSsQW+a9GjI82wNOQjHt5f3rEkGUxYA6Y0=";
tag = finalAttrs.version;
hash = "sha256-yH4XX1MwPxTmKh6p27pYQBQDyeGIT+Ed9E0Y508EF7s=";
};
patches = [
(replaceVars ./fix-paths.patch {
inherit coreutils;
})
];
nativeBuildInputs = [
meson
ninja
@@ -51,6 +46,7 @@ stdenv.mkDerivation (finalAttrs: {
vala
gettext
itstool
blueprint-compiler
desktop-file-utils
wrapGAppsHook4
];
@@ -67,10 +63,13 @@ stdenv.mkDerivation (finalAttrs: {
];
mesonFlags = [
"-Dduplicity_command=${lib.getExe duplicity}"
"-Drclone_command=${lib.getExe rclone}"
"-Denable_restic=true"
"-Drestic_command=${lib.getExe restic}"
# Check https://gitlab.gnome.org/World/deja-dup/-/blob/main/meson.options
(lib.mesonOption "borg_command" (lib.getExe borgbackup))
(lib.mesonOption "duplicity_command" (lib.getExe duplicity))
(lib.mesonOption "fusermount_command" (lib.getExe' fuse "fusermount"))
(lib.mesonOption "rclone_command" (lib.getExe rclone))
(lib.mesonOption "restic_command" (lib.getExe restic))
(lib.mesonEnable "packagekit" false) # packagekit-glib not packaged
];
preFixup = ''
@@ -84,19 +83,19 @@ stdenv.mkDerivation (finalAttrs: {
updateScript = nix-update-script { };
};
meta = with lib; {
meta = {
description = "Simple backup tool";
longDescription = ''
Déjà Dup is a simple backup tool. It hides the complexity \
of backing up the Right Way (encrypted, off-site, and regular) \
Déjà Dup is a simple backup tool. It hides the complexity
of backing up the Right Way (encrypted, off-site, and regular)
and uses duplicity as the backend.
'';
homepage = "https://apps.gnome.org/DejaDup/";
changelog = "https://gitlab.gnome.org/World/deja-dup/-/releases/${finalAttrs.version}";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ jtojnar ];
teams = [ teams.gnome-circle ];
platforms = platforms.linux;
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ jtojnar ];
teams = [ lib.teams.gnome-circle ];
platforms = lib.platforms.linux;
mainProgram = "deja-dup";
};
})
+3 -3
View File
@@ -24,18 +24,18 @@
stdenv.mkDerivation rec {
pname = "diebahn";
version = "2.9.2";
version = "2.9.3";
src = fetchFromGitLab {
owner = "schmiddi-on-mobile";
repo = "railway";
tag = version;
hash = "sha256-e39FA0QKn91ZgN+SCY9kYQ6lGc8BgYgLxGj2dSUgi2Q=";
hash = "sha256-Bs+qn6QZnY37Kk7Xl4QE9k41T2W8gIvtcP4I5qLERNI=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit pname version src;
hash = "sha256-UQc5Q2Wsr3YRSTjT+VWIWjOvDnS2ggvvcVPde+gjqlw=";
hash = "sha256-ijbVyVC0Vq5Olo3odzRv078CosAiIZ6KJNx0Gv5YunI=";
};
nativeBuildInputs = [
+2 -1
View File
@@ -74,7 +74,8 @@ stdenv.mkDerivation (finalAttrs: {
cp -r usr/share $out/share
makeWrapper $out/share/eusoft-eudic/eudic $out/bin/eudic \
--inherit-argv0 \
--set GST_PLUGIN_PATH $out/share/eusoft-eudic/gstreamer-1.0
--set GST_PLUGIN_PATH $out/share/eusoft-eudic/gstreamer-1.0 \
--set QT_PLUGIN_PATH $out/share/eusoft-eudic/plugins
runHook postInstall
'';
+2 -2
View File
@@ -7,13 +7,13 @@
buildDotnetModule rec {
pname = "gh-gei";
version = "1.20.0";
version = "1.21.0";
src = fetchFromGitHub {
owner = "github";
repo = "gh-gei";
rev = "v${version}";
hash = "sha256-00+yHDvDTJux2XKhJ3u1W1SrYArFGJtYusT/adC2XDE=";
hash = "sha256-hlhryJno8XpSITBv1ShhqP7jPoRtoscD/YGXIU6ubt0=";
};
dotnet-sdk = dotnetCorePackages.sdk_8_0_4xx;
+4 -4
View File
@@ -56,24 +56,24 @@
let
pname = "gitkraken";
version = "11.5.1";
version = "11.6.0";
throwSystem = throw "Unsupported system: ${stdenv.hostPlatform.system}";
srcs = {
x86_64-linux = fetchzip {
url = "https://api.gitkraken.dev/releases/production/linux/x64/${version}/gitkraken-amd64.tar.gz";
hash = "sha256-ctwkU8AWCuOKFetgCIPp6npk1ZO8ozfELrRp4PR3Xjs=";
hash = "sha256-MU/WB4RsNViEulvE6fB7S4QTjjMI/50enlyCIX+xar4=";
};
x86_64-darwin = fetchzip {
url = "https://api.gitkraken.dev/releases/production/darwin/x64/${version}/GitKraken-v${version}.zip";
hash = "sha256-7wXpMwFGQeLgT7ObrZ5nUd84jzVArAIQ8vgp+fYDgsw=";
hash = "sha256-Ty+eRZJ6bnBsrs1VtGem1+m9WDZZf/PgiOvFIazQF6I=";
};
aarch64-darwin = fetchzip {
url = "https://api.gitkraken.dev/releases/production/darwin/arm64/${version}/GitKraken-v${version}.zip";
hash = "sha256-YkY6izRicIapNF9yMCL+YHJoxrWDdVwrcpj8N99tQCs=";
hash = "sha256-mpJNhvKIBYt3Yd+RjxSgzRP6AfnfHPRbQ0dzd5kQQIQ=";
};
};
+52
View File
@@ -0,0 +1,52 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
openssl,
libgit2,
libssh2,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "gitlogue";
version = "0.3.0";
src = fetchFromGitHub {
owner = "unhappychoice";
repo = "gitlogue";
tag = "v${finalAttrs.version}";
hash = "sha256-IKCjv33I6bM5PSp1IBXEArHgNF1hV9J+Zko0uV2OPZA=";
};
cargoHash = "sha256-j8h+EI+vOf8nN69ROFiwuUBRi84T/QdhbdMpAMupkoM=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [
openssl
libgit2
libssh2
];
env = {
OPENSSL_NO_VENDOR = 1;
LIBGIT2_NO_VENDOR = 1;
LIBSSH2_SYS_USE_PKG_CONFIG = 1;
};
passthru.updateScript = nix-update-script { };
meta = {
description = "Cinematic Git commit replay tool for the terminal";
longDescription = ''
A cinematic Git commit replay tool for the terminal, turning your Git history into a living, animated story.
'';
homepage = "https://github.com/unhappychoice/gitlogue";
changelog = "https://github.com/unhappychoice/gitlogue/releases/tag/v${finalAttrs.version}";
license = lib.licenses.isc;
maintainers = with lib.maintainers; [ chillcicada ];
mainProgram = "gitlogue";
};
})
+5 -6
View File
@@ -20,14 +20,15 @@ stdenv.mkDerivation (finalAttrs: {
};
cmakeFlags = [
"-DHMAT_GIT_VERSION=OFF"
(lib.cmakeBool "HMAT_GIT_VERSION" false)
# Find BLAS/LAPACK via pkg-config to avoid linking against Accelerate on Darwin.
(lib.cmakeBool "BLA_PREFER_PKGCONFIG" true)
(lib.cmakeFeature "CBLAS_INCLUDE_DIR" "${lib.getDev blas}/include")
];
nativeBuildInputs = [
cmake
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
pkg-config # used to find the LAPACK
pkg-config
];
buildInputs = [
@@ -35,8 +36,6 @@ stdenv.mkDerivation (finalAttrs: {
lapack
];
enableParallelBuilding = true;
meta = {
description = "Hierarchical matrix C/C++ library";
homepage = "https://github.com/jeromerobert/hmat-oss";
@@ -18,17 +18,18 @@
linkFarm,
lightdm-slick-greeter,
numlockx,
xapp-symbolic-icons,
}:
stdenv.mkDerivation rec {
pname = "lightdm-slick-greeter";
version = "2.2.2";
version = "2.2.3";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "slick-greeter";
rev = version;
hash = "sha256-32H2Q/JdT5v0xrdsZfSJobJ4Dxx63LPgbiB9OKIyc1U=";
hash = "sha256-htyFH1Q8RFyvkW75NMpjajNJDzv/87k/Dr8+R5beT2w=";
};
nativeBuildInputs = [
@@ -85,6 +86,7 @@ stdenv.mkDerivation rec {
buildPythonPath "$out $pythonPath"
gappsWrapperArgs+=(
--prefix PYTHONPATH : "$program_PYTHONPATH"
--prefix XDG_DATA_DIRS : "${lib.makeSearchPath "share" [ xapp-symbolic-icons ]}"
)
'';
+3 -3
View File
@@ -6,17 +6,17 @@
rustPlatform.buildRustPackage rec {
pname = "mitra";
version = "4.13.0";
version = "4.13.1";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "silverpill";
repo = "mitra";
rev = "v${version}";
hash = "sha256-GPePSGQ40PaLo6twejaIkksJ2CDfzQ/TYcT+4qojmBY=";
hash = "sha256-cfE+4rbM5B9+ojevkoxc1ZY3r0TY5aRV8/qhZ3h4/0A=";
};
cargoHash = "sha256-KSwfDuyh6Qy2TpjylwrKTMlQI/u3kAJuyX1IVDkuICM=";
cargoHash = "sha256-45vFKMPc73XBHCJISdab59HIkY3a0va8BGQMWsrhaZg=";
# require running database
doCheck = false;
+3 -3
View File
@@ -8,16 +8,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "paq";
version = "1.2.0";
version = "1.3.0";
src = fetchFromGitHub {
owner = "gregl83";
repo = "paq";
tag = "v${finalAttrs.version}";
hash = "sha256-vqJxFmPKQQil0iZOSfmy09/GkI3i1PorztIQPzg0UfE=";
hash = "sha256-rx9HkPLCRiaTbTLPPKOIhFU+WoJSr0dRtkvCUFZPn58=";
};
cargoHash = "sha256-PpwYqwetylyYh6DKn2WiZrMOJmbnkv/cY5u51AVNVno=";
cargoHash = "sha256-XaP5rGEPL9Zlth0QYs736eaBPiw46u38GqmSXwnttX0=";
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "--version";
+9 -4
View File
@@ -30,17 +30,18 @@
desktop-file-utils,
itstool,
xapp,
xapp-symbolic-icons,
}:
stdenv.mkDerivation rec {
pname = "pix";
version = "3.4.7";
version = "3.4.8";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "pix";
rev = version;
hash = "sha256-Z8JGss5DA4Lsj7fhjRztF6Y+zYjZuIbmYRo7wvwxB8k=";
hash = "sha256-zK02qhTGuYgZWHkJ6c3EVinUcojNEWwecvPjblECLkw=";
};
nativeBuildInputs = [
@@ -85,7 +86,6 @@ stdenv.mkDerivation rec {
patchShebangs data/gschemas/make-enums.py \
pix/make-pix-h.py \
po/make-potfiles-in.py \
postinstall.py \
pix/make-authors-tab.py
'';
@@ -95,7 +95,12 @@ stdenv.mkDerivation rec {
mesonFlags = [ "-Dwebservices=false" ];
preFixup = ''
gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share")
gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${
lib.makeSearchPath "share" [
shared-mime-info
xapp-symbolic-icons
]
}")
'';
meta = with lib; {
+5 -1
View File
@@ -24,7 +24,11 @@ stdenv.mkDerivation (finalAttrs: {
texinfo
];
makeFlags = [ "PREFIX=$(out)" ];
makeFlags = [
"CC=${stdenv.cc.targetPrefix}cc"
"AR=${stdenv.cc.targetPrefix}ar"
"PREFIX=$(out)"
];
doInstallCheck = true;
+14 -11
View File
@@ -17,23 +17,24 @@
libadwaita,
dmidecode,
util-linux,
systemd,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "resources";
version = "1.8.0";
version = "1.9.0";
src = fetchFromGitHub {
owner = "nokyan";
repo = "resources";
tag = "v${finalAttrs.version}";
hash = "sha256-z4ZVj/nS4n3oqENSK87YJ8sQRnqK7c4tWzKHUD0Qw2s=";
hash = "sha256-ayptMBniaqVQwLThxTbMn5498kURjwRkC9lVPs7pryo=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-jHdEiK3nu9mN2A6biHq9Iu4bSniD74hGnKFBTt5xVDM=";
hash = "sha256-b6zWjSTkqdLaWRtMIHTLT0rEHlIxEKejYuoJkr4C3nY=";
};
nativeBuildInputs = [
@@ -55,19 +56,21 @@ stdenv.mkDerivation (finalAttrs: {
libadwaita
];
postPatch = ''
substituteInPlace src/utils/memory.rs \
--replace '"dmidecode"' '"${dmidecode}/bin/dmidecode"'
substituteInPlace src/utils/cpu.rs \
--replace '"lscpu"' '"${util-linux}/bin/lscpu"'
substituteInPlace src/utils/memory.rs \
--replace '"pkexec"' '"/run/wrappers/bin/pkexec"'
'';
# Check all Command::new
runtimeDeps = [
dmidecode
util-linux # lscpu
systemd # udevadm
];
mesonFlags = [
(lib.mesonOption "profile" "default")
];
preFixup = ''
gappsWrapperArgs+=(--prefix PATH : ${lib.makeBinPath finalAttrs.runtimeDeps})
'';
passthru = {
updateScript = nix-update-script { };
};
+7 -7
View File
@@ -11,18 +11,19 @@
glib,
gspell,
gtk3,
xapp-symbolic-icons,
gitUpdater,
}:
stdenv.mkDerivation rec {
pname = "sticky";
version = "1.27";
version = "1.28";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "sticky";
rev = version;
hash = "sha256-IuYRcvoUyY03aEclkiOmamjb/c/JaYYIoqKdcwDSY8Q=";
hash = "sha256-6CRkeJ2xuUs3viyYxnrgGFUIakK7ANyVpPZuwU486NM=";
};
postPatch = ''
@@ -51,14 +52,13 @@ stdenv.mkDerivation rec {
python-xapp
];
dontWrapGApps = true;
preFixup = ''
buildPythonPath "$out $pythonPath"
wrapProgram $out/bin/sticky \
--prefix PYTHONPATH : "$program_PYTHONPATH" \
''${gappsWrapperArgs[@]}
gappsWrapperArgs+=(
--prefix PYTHONPATH : "$program_PYTHONPATH"
--prefix XDG_DATA_DIRS : "${lib.makeSearchPath "share" [ xapp-symbolic-icons ]}"
)
'';
passthru = {
+4 -4
View File
@@ -10,8 +10,8 @@
wayland,
wayland-protocols,
runtimeShell,
systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd,
systemd,
systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemdLibs,
systemdLibs,
}:
stdenv.mkDerivation rec {
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
src = fetchFromGitHub {
owner = "swaywm";
repo = "swayidle";
rev = "v${version}";
tag = "v${version}";
hash = "sha256-fxDwRfAXb9D6epLlyWnXpy9g8V3ovJRpQ/f3M4jxY/s=";
};
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
wayland
wayland-protocols
]
++ lib.optionals systemdSupport [ systemd ];
++ lib.optionals systemdSupport [ systemdLibs ];
mesonFlags = [
"-Dman-pages=enabled"
+8 -5
View File
@@ -3,6 +3,7 @@
stdenv,
fetchFromGitHub,
desktop-file-utils,
glycin-loaders,
gobject-introspection,
meson,
ninja,
@@ -10,13 +11,13 @@
wrapGAppsHook4,
vala,
evolution-data-server-gtk4,
gdk-pixbuf,
glib,
glib-networking,
gnutls,
gst_all_1,
json-glib,
libadwaita,
libglycin,
libpeas2,
libphonenumber,
libportal-gtk4,
@@ -52,7 +53,6 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
evolution-data-server-gtk4
gdk-pixbuf
glib
glib-networking
gnutls
@@ -60,6 +60,7 @@ stdenv.mkDerivation (finalAttrs: {
gst_all_1.gst-plugins-base
json-glib
libadwaita
libglycin
libpeas2
libphonenumber
libportal-gtk4
@@ -68,9 +69,11 @@ stdenv.mkDerivation (finalAttrs: {
tinysparql
];
mesonFlags = [
(lib.mesonBool "plugin_bluez" true)
];
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
passthru.updateScript = nix-update-script { };
+12 -14
View File
@@ -1,11 +1,10 @@
{
lib,
fetchFromGitHub,
python3,
python3Packages,
meson,
ninja,
pkg-config,
pkgsCross,
appstream-glib,
desktop-file-utils,
gobject-introspection,
@@ -19,16 +18,16 @@
nix-update-script,
}:
python3.pkgs.buildPythonApplication rec {
python3Packages.buildPythonApplication rec {
pname = "wike";
version = "3.1.1";
format = "other";
version = "3.1.3";
pyproject = false; # built with meson
src = fetchFromGitHub {
owner = "hugolabe";
repo = "Wike";
rev = version;
hash = "sha256-Unw+r8NlfaSn/UCtdnkCCsC6xM33Qy6hQdUg/4bIG+I=";
tag = version;
hash = "sha256-+N9yhzIErFc0z/2JqEtit02GZKqo11viGCLoyQxtxBU=";
};
nativeBuildInputs = [
@@ -50,7 +49,7 @@ python3.pkgs.buildPythonApplication rec {
webkitgtk_6_0
];
propagatedBuildInputs = with python3.pkgs; [
dependencies = with python3Packages; [
requests
pygobject3
];
@@ -64,17 +63,16 @@ python3.pkgs.buildPythonApplication rec {
'';
passthru = {
tests.cross = pkgsCross.aarch64-multiplatform.wike;
updateScript = nix-update-script { };
};
meta = with lib; {
meta = {
description = "Wikipedia Reader for the GNOME Desktop";
homepage = "https://github.com/hugolabe/Wike";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ samalws ];
teams = [ teams.gnome-circle ];
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ samalws ];
teams = [ lib.teams.gnome-circle ];
mainProgram = "wike";
};
}
+14 -11
View File
@@ -5,11 +5,12 @@
wayland-scanner,
wlr-protocols,
wayland,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "wl-clicker";
version = "0.3.1";
version = "0.4";
nativeBuildInputs = [ wayland-scanner ];
buildInputs = [
@@ -18,29 +19,31 @@ stdenv.mkDerivation (finalAttrs: {
];
src = fetchFromGitHub {
owner = "phonetic112";
owner = "phoneticalb";
repo = "wl-clicker";
rev = "v${finalAttrs.version}";
hash = "sha256-HuUK1kkqIdB5SdcewJ1J8elzqrFaFWC3BRV3GgcasTU=";
tag = "v${finalAttrs.version}";
hash = "sha256-+k3iZOv12WbqpeYbYjIXBIB4mO2DrY1pl+MJn2B+cZA=";
};
postPatch = ''
sed -i 's|/usr|${wlr-protocols}|g' Makefile
'';
makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
install build/wl-clicker $out/bin/wl-clicker
install -D build/wl-clicker --target-directory="$out"/bin
runHook postInstall
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Wayland autoclicker";
longDescription = "Script for auto clicking at incredibly high speeds - user must be a part of `input` group to run.";
homepage = "https://github.com/phonetic112/wl-clicker";
longDescription = ''
Script for auto clicking at incredibly high speeds - user must
be a part of `input` group to run.
'';
homepage = "https://github.com/phoneticalb/wl-clicker";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.Flameopathic ];
mainProgram = "wl-clicker";
@@ -9,13 +9,13 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "xapp-symbolic-icons";
version = "1.0.1";
version = "1.0.2";
src = fetchFromGitHub {
owner = "xapp-project";
repo = "xapp-symbolic-icons";
tag = finalAttrs.version;
hash = "sha256-TOSbEcxYXuUtc0RC1Seva8uqF5qveVRq2dpG0BZmCK0=";
hash = "sha256-Z5edMCjw1/LO0+Ms5KCfFJ/iAANO2MihVZmLcJd5d3A=";
};
nativeBuildInputs = [
@@ -674,10 +674,6 @@ package-set { inherit pkgs lib callPackage; } self
inherit src;
nativeBuildInputs = [
buildHaskellPackages.cabal-install
# TODO after https://github.com/haskell/cabal/issues/8352
# remove ghc
self.ghc
];
dontUnpack = false;
}
@@ -15,14 +15,14 @@
buildPythonPackage rec {
pname = "coverage";
version = "7.11.3";
version = "7.12.0";
pyproject = true;
src = fetchFromGitHub {
owner = "coveragepy";
repo = "coveragepy";
tag = version;
hash = "sha256-NE5lvAy7TjsQwvduYS3+qo96YOymCIyepdPYTyIe3IA=";
hash = "sha256-Geoj48/MIrI8YDdyvAz7AaSa9wY41KhW5Ret4pzpLjc=";
};
build-system = [ setuptools ];
@@ -3,21 +3,20 @@
buildPythonPackage,
fetchFromGitHub,
setuptools,
mock,
pytest,
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "pytest-unordered";
version = "0.6.1";
version = "0.7.0";
pyproject = true;
src = fetchFromGitHub {
owner = "utapyngo";
repo = "pytest-unordered";
tag = "v${version}";
hash = "sha256-nANsX28+G8jcSe8X0dB6Tu3HYHd9ebGkh1AUx8Xq8HM=";
hash = "sha256-JmP2zStxIt+u7sgfRKlnBwM5q5R0GfXtiE7ZgHKtg94=";
};
build-system = [ setuptools ];
@@ -25,7 +24,6 @@ buildPythonPackage rec {
buildInputs = [ pytest ];
nativeCheckInputs = [
mock
pytestCheckHook
];
@@ -7,6 +7,7 @@
# optional-dependencies
numpy,
packaging,
torch,
tensorflow,
flax,
@@ -27,14 +28,14 @@
buildPythonPackage rec {
pname = "safetensors";
version = "0.6.2";
version = "0.7.0";
pyproject = true;
src = fetchFromGitHub {
owner = "huggingface";
repo = "safetensors";
tag = "v${version}";
hash = "sha256-IyKk29jMAbYW+16mrpqQWjnsmNFEvUwkB048AAx/Cvw=";
hash = "sha256-qLRPMJJGs3C/PNqHSszNWRoX/DdvXt68TWW0b7aI664=";
};
sourceRoot = "${src.name}/bindings/python";
@@ -46,7 +47,7 @@ buildPythonPackage rec {
src
sourceRoot
;
hash = "sha256-+92fCILZwk/TknGXgR9lRN55WnmkgUJfCszFthstzXs=";
hash = "sha256-zNmL1Uoq/BLh6UBzMgUs/EEbzIvy7z2ylOR//Q959l4=";
};
nativeBuildInputs = [
@@ -57,6 +58,7 @@ buildPythonPackage rec {
optional-dependencies = lib.fix (self: {
numpy = [ numpy ];
torch = self.numpy ++ [
packaging
torch
];
tensorflow = self.numpy ++ [
@@ -2,6 +2,7 @@
lib,
buildHomeAssistantComponent,
fetchFromGitHub,
home-assistant,
pytestCheckHook,
pytest-cov-stub,
pytest-homeassistant-custom-component,
@@ -30,7 +31,8 @@ buildHomeAssistantComponent rec {
pytest-homeassistant-custom-component
pytest-cov-stub
pytestCheckHook
];
]
++ home-assistant.getPackages "camera" home-assistant.python.pkgs;
#skip phases with nothing to do
dontConfigure = true;
+22 -26
View File
@@ -376,7 +376,6 @@ python.pkgs.buildPythonApplication rec {
dependencies = with python.pkgs; [
# Only packages required in pyproject.toml
aiodns
aiofiles
aiohasupervisor
aiohttp
aiohttp-asyncmdnsresolver
@@ -396,28 +395,20 @@ python.pkgs.buildPythonApplication rec {
cronsim
cryptography
fnv-hash-fast
ha-ffmpeg
hass-nabucasa
hassil
home-assistant-bluetooth
home-assistant-intents
httpx
ifaddr
jinja2
lru-dict
mutagen
numpy
orjson
packaging
pillow
propcache
psutil-home-assistant
pyjwt
pymicro-vad
pyopenssl
pyspeex-noise
python-slugify
pyturbojpeg
pyyaml
requests
securetar
@@ -444,31 +435,36 @@ python.pkgs.buildPythonApplication rec {
# upstream only tests on Linux, so do we.
doCheck = stdenv.hostPlatform.isLinux;
requirementsTest = with python.pkgs; [
# test infrastructure (selectively from requirement_test.txt)
freezegun
pytest-asyncio
pytest-aiohttp
pytest-freezer
pytest-socket
pytest-timeout
pytest-unordered
pytest-xdist
pytestCheckHook
requests-mock
respx
syrupy
];
nativeCheckInputs =
with python.pkgs;
[
# test infrastructure (selectively from requirement_test.txt)
freezegun
pytest-asyncio
pytest-aiohttp
pytest-freezer
pytest-socket
pytest-timeout
pytest-unordered
pytest-xdist
pytestCheckHook
requests-mock
respx
syrupy
requirementsTest
++ (with python.pkgs; [
# Used in tests/non_packaged_scripts/test_alexa_locales.py
beautifulsoup4
# Used in tests/scripts/test_check_config.py
colorlog
]
])
++ lib.concatMap (component: getPackages component python.pkgs) [
# some components are needed even if tests in tests/components are disabled
"default_config"
"assist_pipeline"
"frontend"
"hue"
"mobile_app"
];
pytestFlags = [
+118 -15
View File
@@ -8,46 +8,149 @@ let
# some components' tests have additional dependencies
extraCheckInputs = with home-assistant.python.pkgs; {
axis = getComponentDeps "deconz";
homeassistant_connect_zbt2 = getComponentDeps "zha";
abode = getComponentDeps "camera";
agent_dvr = getComponentDeps "camera";
air_quality = getComponentDeps "camera" ++ getComponentDeps "conversation";
alexa = getComponentDeps "cloud" ++ getComponentDeps "frontend" ++ getComponentDeps "stream";
android_ip_webcam = getComponentDeps "camera";
assist_pipeline = getComponentDeps "frontend";
automation = getComponentDeps "frontend" ++ getComponentDeps "mobile_app";
axis = getComponentDeps "camera" ++ getComponentDeps "deconz";
blink = getComponentDeps "camera";
bthome = getComponentDeps "frontend";
buienradar = getComponentDeps "camera";
camera = getComponentDeps "conversation" ++ getComponentDeps "stream";
canary = getComponentDeps "camera";
climate = getComponentDeps "conversation";
color_extractor = getComponentDeps "camera" ++ getComponentDeps "conversation";
deconz = getComponentDeps "frontend";
demo = getComponentDeps "camera";
device_tracker = getComponentDeps "conversation";
dialogflow = getComponentDeps "assist_pipeline" ++ getComponentDeps "camera";
dlib_face_detect = getComponentDeps "image_processing";
dlib_face_identify = getComponentDeps "image_processing";
doorbird = getComponentDeps "camera";
dremel_3d_printer = getComponentDeps "camera";
elevenlabs = getComponentDeps "tts";
elkm1 = getComponentDeps "frontend";
emulated_hue = getComponentDeps "conversation" ++ [
defusedxml
];
emulated_kasa = getComponentDeps "camera" ++ getComponentDeps "conversation";
environment_canada = getComponentDeps "camera";
esphome = getComponentDeps "camera";
fan = getComponentDeps "conversation";
foscam = getComponentDeps "camera";
freebox = getComponentDeps "camera";
fully_kiosk = getComponentDeps "camera";
gardena_bluetooth = getComponentDeps "husqvarna_automower_ble";
geofency = getComponentDeps "assist_pipeline" ++ getComponentDeps "camera";
google_assistant = getComponentDeps "conversation";
google_assistant_sdk = getComponentDeps "conversation" ++ getComponentDeps "frontend";
google_cloud = getComponentDeps "tts";
google_drive = getComponentDeps "frontend";
google_generative_ai_conversation = getComponentDeps "ai_task";
google_translate = getComponentDeps "tts";
govee_ble = [
ibeacon-ble
];
hassio = getComponentDeps "homeassistant_yellow";
gpslogger = getComponentDeps "assist_pipeline" ++ getComponentDeps "camera";
group = getComponentDeps "camera" ++ getComponentDeps "conversation";
hassio = getComponentDeps "frontend" ++ getComponentDeps "homeassistant_yellow";
homeassistant = getComponentDeps "camera" ++ getComponentDeps "conversation";
homeassistant_connect_zbt2 = getComponentDeps "zha";
homeassistant_hardware = getComponentDeps "otbr" ++ getComponentDeps "zha";
homeassistant_sky_connect = getComponentDeps "zha";
homeassistant_yellow = getComponentDeps "zha";
homekit = getComponentDeps "conversation" ++ getComponentDeps "frontend";
homekit_controller = getComponentDeps "camera";
http = getComponentDeps "cloud" ++ getComponentDeps "frontend";
humidifier = getComponentDeps "conversation";
hyperion = getComponentDeps "camera";
ifttt = getComponentDeps "assist_pipeline" ++ getComponentDeps "camera";
image_processing = getComponentDeps "conversation";
intent = getComponentDeps "conversation";
light = getComponentDeps "conversation";
local_file = getComponentDeps "camera";
locative = getComponentDeps "assist_pipeline" ++ getComponentDeps "camera";
logbook = getComponentDeps "alexa";
lovelace = [
pychromecast
];
onboarding = [
lutron_caseta = getComponentDeps "frontend";
mailgun = getComponentDeps "assist_pipeline" ++ getComponentDeps "camera";
marytts = getComponentDeps "tts";
media_player = getComponentDeps "camera" ++ getComponentDeps "conversation";
microsoft = getComponentDeps "tts";
microsoft_face_detect = getComponentDeps "conversation";
microsoft_face_identify = getComponentDeps "conversation";
mjpeg = getComponentDeps "camera";
mobile_app = getComponentDeps "frontend";
motioneye = getComponentDeps "camera";
mqtt = getComponentDeps "camera";
nest = getComponentDeps "camera" ++ [
av
];
number = getComponentDeps "conversation";
octoprint = getComponentDeps "camera";
ollama = getComponentDeps "ai_task";
onboarding = getComponentDeps "tts" ++ [
pymetno
radios
rpi-bad-power
];
onvif = getComponentDeps "camera";
open_router = getComponentDeps "ai_task";
openai_conversation = getComponentDeps "camera";
openalpr_cloud = getComponentDeps "camera" ++ getComponentDeps "conversation";
prosegur = getComponentDeps "camera";
prusalink = getComponentDeps "camera";
push = getComponentDeps "camera";
raspberry_pi = [
rpi-bad-power
];
shelly = [
pyswitchbot
reolink = getComponentDeps "stream";
ring = getComponentDeps "camera";
roku = getComponentDeps "camera";
rss_feed_template = [
defusedxml
];
script = getComponentDeps "frontend" ++ getComponentDeps "mobile_app";
sensor = getComponentDeps "camera" ++ getComponentDeps "conversation";
shelly = getComponentDeps "frontend" ++ getComponentDeps "switchbot";
sighthound = getComponentDeps "conversation" ++ getComponentDeps "image_processing";
skybell = getComponentDeps "camera";
sleep_as_android = getComponentDeps "assist_pipeline" ++ getComponentDeps "camera";
songpal = [
isal
];
swiss_public_transport = getComponentDeps "cookidoo";
switch = getComponentDeps "camera" ++ getComponentDeps "conversation";
switch_as_x = getComponentDeps "camera" ++ getComponentDeps "conversation";
synology_dsm = getComponentDeps "camera";
system_log = [
isal
];
tasmota = getComponentDeps "camera";
todo = getComponentDeps "conversation";
traccar = getComponentDeps "assist_pipeline" ++ getComponentDeps "camera";
trafikverket_camera = getComponentDeps "camera";
tts = getComponentDeps "conversation";
tuya = getComponentDeps "camera";
twilio = getComponentDeps "assist_pipeline" ++ getComponentDeps "camera";
unifiprotect = getComponentDeps "camera";
universal = getComponentDeps "camera" ++ getComponentDeps "conversation";
uvc = getComponentDeps "camera";
voicerss = getComponentDeps "tts";
weather = getComponentDeps "conversation";
websocket_api = getComponentDeps "camera" ++ getComponentDeps "conversation";
xiaomi_miio = [
arrow
];
zeroconf = [
aioshelly
];
zha = [
pydeconz
];
yandextts = getComponentDeps "tts";
zeroconf = getComponentDeps "shelly";
zha = getComponentDeps "deconz" ++ getComponentDeps "frontend";
zwave_js = getComponentDeps "frontend";
};
extraDisabledTestPaths = {
@@ -129,12 +232,12 @@ lib.listToAttrs (
dontInstall = true;
nativeCheckInputs =
old.nativeCheckInputs
old.requirementsTest
++ home-assistant.getPackages component home-assistant.python.pkgs
++ extraCheckInputs.${component} or [ ];
disabledTests = old.disabledTests or [ ] ++ extraDisabledTests.${component} or [ ];
disabledTestPaths = old.disabledTestPaths or [ ] ++ extraDisabledTestPaths.${component} or [ ];
disabledTests = extraDisabledTests.${component} or [ ];
disabledTestPaths = extraDisabledTestPaths.${component} or [ ];
# components are more often racy than the core
dontUsePytestXdist = true;