update ha components

This commit is contained in:
mjallen18
2025-12-05 17:22:51 -06:00
parent f54285bfe6
commit 0b4d63fd09
16 changed files with 91 additions and 228 deletions

10
flake.lock generated
View File

@@ -1573,16 +1573,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1764603586, "lastModified": 1764974171,
"narHash": "sha256-bJK+w6XxNRXtPevYgzlfXulgSql9HqOvKJV8ADWJNZ8=", "narHash": "sha256-Da9/3xlOzlGHXkUaPYUwwFet3uWjnNlYHNUNBrl0WD4=",
"owner": "mjallen18", "owner": "mjallen18",
"repo": "lib", "repo": "snowfall-lib",
"rev": "ddfab125d3331c792c02a98fb1b0cb1fec755e9a", "rev": "e4bb3f2fd33b26e512f1d90de4c7197d58e708ad",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "mjallen18", "owner": "mjallen18",
"repo": "lib", "repo": "snowfall-lib",
"type": "github" "type": "github"
} }
}, },

View File

@@ -6,7 +6,7 @@
# The name "snowfall-lib" is required due to how Snowfall Lib processes your # The name "snowfall-lib" is required due to how Snowfall Lib processes your
# flake's inputs. # flake's inputs.
snowfall-lib = { snowfall-lib = {
url = "github:mjallen18/lib"; url = "github:mjallen18/snowfall-lib";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };

View File

@@ -18,12 +18,14 @@
"libraspberrypi" "libraspberrypi"
"libsecret" "libsecret"
"linux" "linux"
"opencv"
"pipewire" "pipewire"
"qemu" "qemu"
"raspberrypi-utils" "raspberrypi-utils"
"sdl" "sdl"
"sdl2" "sdl2"
"uv" "uv"
"webkitgtk"
# "yubioath-flutter" # "yubioath-flutter"
]; ];
cacheDir = "/var/cache/ccache"; # default location cacheDir = "/var/cache/ccache"; # default location

View File

@@ -0,0 +1,4 @@
{ ... }:
final: _prev: {
redis = final.valkey;
}

View File

@@ -44,11 +44,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "bolt-launcher"; pname = "bolt-launcher";
version = "0.19.1"; version = "0.20.6";
src = fetchzip { src = fetchzip {
url = "https://github.com/Adamcake/Bolt/releases/download/${version}/Bolt-Linux.zip"; url = "https://codeberg.org/Adamcake/Bolt/releases/download/${version}/Bolt-Linux.zip";
sha256 = "sha256-5tGXz2PIz0HIHMGNF7NpYVsB8hnueitNYKi6LtJpuPw="; sha256 = "sha256-kQwQixUwcbyC53q5lyNdcVbMh40Ay5vmWOj4ZVEVznY=";
stripRoot = false; stripRoot = false;
}; };

View File

@@ -7,13 +7,13 @@
buildHomeAssistantComponent rec { buildHomeAssistantComponent rec {
owner = "greghesp"; owner = "greghesp";
domain = "bambu_lab"; domain = "bambu_lab";
version = "v2.2.12"; version = "v2.2.16";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = owner; owner = owner;
repo = "ha-bambulab"; repo = "ha-bambulab";
rev = version; rev = version;
hash = "sha256-WCUXzfJGfzgFL24V4NljCnml8SJ1un85t5IjkTj3lJY="; hash = "sha256-fn9Q+AILvZdOmjVTwzGwlFj/AzwPDqNTiiL11CPseD4=";
}; };
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = with python3Packages; [

View File

@@ -8,27 +8,23 @@
buildHomeAssistantComponent rec { buildHomeAssistantComponent rec {
owner = "simbaja"; owner = "simbaja";
domain = "ge_home"; domain = "ge_home";
version = "v2025.7.0"; version = "v2025.11.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = owner; owner = owner;
repo = "ha_gehome"; repo = "ha_gehome";
rev = version; rev = version;
hash = "sha256-sCOXzrbUpbRb09QDpcm1Pbr2Xxsg0q3Ecc+tAQv2pXk="; hash = "sha256-48z2fP2gKo7gM69RcQMOHeF1H/vqUb0hBDk2+uCqYc8=";
}; };
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = with python3Packages; [
gehomesdk # gehomesdk
slixmpp slixmpp
pkgs.${namespace}.gehomesdk
pkgs.${namespace}.magicattr pkgs.${namespace}.magicattr
]; ];
postPatch = ''
substituteInPlace custom_components/ge_home/manifest.json \
--replace '"slixmpp==1.8.3"' '"slixmpp>=1.8.3"'
'';
meta = { meta = {
changelog = "https://github.com/simbaja/ha_gehome/releases/tag/${version}"; changelog = "https://github.com/simbaja/ha_gehome/releases/tag/${version}";
description = "Integration for GE WiFi-enabled appliances into Home Assistant."; description = "Integration for GE WiFi-enabled appliances into Home Assistant.";

View File

@@ -7,13 +7,13 @@
buildHomeAssistantComponent rec { buildHomeAssistantComponent rec {
owner = "gcobb321"; owner = "gcobb321";
domain = "icloud3"; domain = "icloud3";
version = "3.3.1"; version = "3.3.4.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = owner; owner = owner;
repo = "icloud3"; repo = "icloud3";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-dwJXGgAramiBtKmbG0i3iJTeAAeGjmq+2CwZjbcPRlw="; hash = "sha256-5uw1guGLTpaLPjhXQ6jP7kA0iWdbEgNZ/vnBjJWeCPA=";
}; };
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = with python3Packages; [

View File

@@ -7,13 +7,13 @@
buildHomeAssistantComponent rec { buildHomeAssistantComponent rec {
owner = "acon96"; owner = "acon96";
domain = "llama_conversation"; domain = "llama_conversation";
version = "v0.4.3"; version = "v0.4.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = owner; owner = owner;
repo = "home-llm"; repo = "home-llm";
rev = version; rev = version;
hash = "sha256-VldTF7G/ZUexLAAKiyuFWmFlzfvjcCioqjogScQ3Z3g="; hash = "sha256-L5AL+f5i+LHIF0Fj+Hb5qlmYQbjDeGkAhBeL+qYXrMA=";
}; };
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = with python3Packages; [

View File

@@ -1,14 +1,14 @@
{ buildHomeAssistantComponent, fetchFromGitHub, ... }: { lib, buildHomeAssistantComponent, fetchFromGitHub, ... }:
buildHomeAssistantComponent rec { buildHomeAssistantComponent rec {
owner = "jjjonesjr33"; owner = "jjjonesjr33";
domain = "petlibro"; domain = "petlibro";
version = "v1.2.30.5"; version = "v1.2.30.7";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = owner; owner = owner;
repo = "petlibro"; repo = "petlibro";
rev = version; rev = version;
hash = "sha256-Jcl1DxYFuddcQiqdjs1P62wCwNPrWdBbhdWrmECGUxQ="; hash = "sha256-+zmeUQHRXrBYQ5pEWLAtu9TZ8ELiwCLliRPktKlpI8k=";
}; };
meta = { meta = {

View File

@@ -0,0 +1,45 @@
{
lib,
python3Packages
}:
python3Packages.buildPythonPackage rec {
pname = "gehomesdk";
version = "2025.11.5";
pyproject = true;
disabled = python3Packages.pythonOlder "3.9";
src = python3Packages.fetchPypi {
inherit pname version;
hash = "sha256-HS33yTE+3n0DKRD4+cr8zAE+xcW1ca7q8inQ7qwKJMA=";
};
build-system = with python3Packages; [ setuptools ];
dependencies = with python3Packages;[
aiohttp
beautifulsoup4
bidict
humanize
lxml
requests
slixmpp
websockets
];
# Tests are not shipped and source is not tagged
# https://github.com/simbaja/gehome/issues/32
doCheck = false;
pythonImportsCheck = [ "gehomesdk" ];
meta = with lib; {
description = "Python SDK for GE smart appliances";
homepage = "https://github.com/simbaja/gehome";
changelog = "https://github.com/simbaja/gehome/blob/master/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
mainProgram = "gehome-appliance-data";
};
}

View File

@@ -1,14 +1,14 @@
{ python3Packages, fetchFromGitHub, ... }: { python3Packages, fetchFromGitHub, ... }:
python3Packages.buildPythonPackage rec { python3Packages.buildPythonPackage rec {
pname = "nanokvm"; pname = "nanokvm";
version = "0.0.4"; version = "0.1.0";
format = "pyproject"; format = "pyproject";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "puddly"; owner = "puddly";
repo = "python-${pname}"; repo = "python-${pname}";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-L2Z4zZUbNQPrJVd0TGA5obB3tnd+Pk7HL5J+9WOAes0="; sha256 = "sha256-vIxvQtjaInnWQce7syiOWpP2kaw0IVw03HPovnB2J5M=";
}; };
buildInputs = with python3Packages; [ buildInputs = with python3Packages; [

View File

@@ -8,7 +8,7 @@
python3Packages.buildPythonPackage rec { python3Packages.buildPythonPackage rec {
pname = "python-roborock"; pname = "python-roborock";
version = "3.8.0"; version = "3.10.2";
pyproject = true; pyproject = true;
disabled = python3Packages.pythonOlder "3.11"; disabled = python3Packages.pythonOlder "3.11";
@@ -17,7 +17,7 @@ python3Packages.buildPythonPackage rec {
owner = "humbertogontijo"; owner = "humbertogontijo";
repo = "python-roborock"; repo = "python-roborock";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-Ts1X07eTv4KXv344F3fGazHlDx6XXGQfdmxb+gd/0qc="; hash = "sha256-iDypFBZe9hCoHdZjgDT56M8SgBiUomCIttMrFdhsN/k=";
}; };
pythonRelaxDeps = [ "pycryptodome" ]; pythonRelaxDeps = [ "pycryptodome" ];

View File

@@ -6,7 +6,7 @@
python3Packages.buildPythonPackage rec { python3Packages.buildPythonPackage rec {
pname = "pyvesync"; pname = "pyvesync";
version = "3.0.0b8"; version = "3.3.3";
pyproject = true; pyproject = true;
disabled = python3Packages.pythonOlder "3.11"; disabled = python3Packages.pythonOlder "3.11";
@@ -14,8 +14,8 @@ python3Packages.buildPythonPackage rec {
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "webdjoe"; owner = "webdjoe";
repo = "pyvesync"; repo = "pyvesync";
rev = "dev-2.0"; rev = "3.3.3";
hash = "sha256-hJGlcszXD8EXNPppOUuBt9obtunhymlqIGAltkAuZjA="; hash = "sha256-T8cDp1C95gubCfgvkEiqHUn4Rw7pFNCPELo3qNwt9vI=";
}; };
build-system = with python3Packages; [ setuptools ]; build-system = with python3Packages; [ setuptools ];

View File

@@ -1,195 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
nodejs,
yarn,
python3,
poetry,
makeWrapper,
fetchYarnDeps,
fixup-yarn-lock,
...
}:
stdenv.mkDerivation rec {
pname = "tabby-web";
version = "0.0.1";
src = fetchFromGitHub {
owner = "Eugeny";
repo = "tabby-web";
rev = "16847cea93f730814c1855241d8ebdea20b1ff6e";
sha256 = "sha256-FaVJdizSQq600awY9HAwMNv6vpcjLVAVqdWnn+sYAxk=";
};
# Fetch yarn dependencies separately for reproducibility
yarnDeps = fetchYarnDeps {
yarnLock = "${src}/frontend/yarn.lock";
hash = "sha256-NInsyKgp2+ppHJZLFn3qKW08rvSSIShhh2JbR91WgOk=";
};
nativeBuildInputs = [
nodejs
yarn
python3
poetry
makeWrapper
fixup-yarn-lock
];
buildInputs = [
python3
];
propagatedBuildInputs = with python3.pkgs; [
gunicorn
django
];
configurePhase = ''
runHook preConfigure
# Set up yarn
export HOME=$TMPDIR
cd frontend
# Fix up yarn.lock and set up offline cache
fixup-yarn-lock yarn.lock
yarn config --offline set yarn-offline-mirror ${yarnDeps}
yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
patchShebangs node_modules/
cd ..
# Set up poetry
export POETRY_CACHE_DIR=$TMPDIR/poetry-cache
export POETRY_VENV_IN_PROJECT=1
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
echo "Building frontend..."
cd frontend
yarn run build
cd ..
echo "Backend is ready (dependencies will be handled by Nix)"
runHook postBuild
'';
installPhase = ''
runHook preInstall
# Create output directories
mkdir -p $out/lib/tabby-web
mkdir -p $out/bin
mkdir -p $out/share/tabby-web
# Install backend
cp -r backend/* $out/lib/tabby-web/
# Install frontend build output
if [ -d frontend/dist ]; then
cp -r frontend/dist/* $out/share/tabby-web/
elif [ -d frontend/build ]; then
cp -r frontend/build/* $out/share/tabby-web/
fi
# Create main executable wrapper
makeWrapper ${
python3.withPackages (
ps: with ps; [
gunicorn
django
]
)
}/bin/python $out/bin/tabby-web \
--add-flags "-m gunicorn tabby_web.wsgi:application" \
--set PYTHONPATH "$out/lib/tabby-web" \
--set DJANGO_SETTINGS_MODULE "tabby_web.settings" \
--set STATIC_ROOT "$out/share/tabby-web" \
--run "cd $out/lib/tabby-web" \
--run 'export DATABASE_URL="''${DATABASE_URL:-sqlite:///tmp/tabby-web.db}"' \
--run 'export APP_DIST_STORAGE="''${APP_DIST_STORAGE:-file:///tmp/tabby-web-dist}"' \
--run 'export PORT="''${PORT:-9000}"' \
--add-flags '--bind "0.0.0.0:$PORT"' \
--add-flags "--workers 4" \
--add-flags "--timeout 120"
# Create Django management wrapper
makeWrapper ${
python3.withPackages (ps: with ps; [ django ])
}/bin/python $out/bin/tabby-web-manage \
--add-flags "manage.py" \
--set PYTHONPATH "$out/lib/tabby-web" \
--set DJANGO_SETTINGS_MODULE "tabby_web.settings" \
--set STATIC_ROOT "$out/share/tabby-web" \
--run "cd $out/lib/tabby-web" \
--run 'export DATABASE_URL="''${DATABASE_URL:-sqlite:///tmp/tabby-web.db}"' \
--run 'export APP_DIST_STORAGE="''${APP_DIST_STORAGE:-file:///tmp/tabby-web-dist}"'
# Create a help script
cat > $out/bin/tabby-web-help << 'HELP_EOF'
#!/bin/bash
cat << 'HELP'
Tabby Web - Terminal application server
Usage:
tabby-web Start the server
tabby-web-manage <command> Run Django management commands
tabby-web-help Show this help
Environment Variables:
DATABASE_URL Database connection URL
Examples: sqlite:///path/to/db.sqlite
postgresql://user:pass@host:5432/dbname
APP_DIST_STORAGE Storage URL for app distributions
Examples: file:///path/to/storage
s3://bucket-name/path
gcs://bucket-name/path
PORT Server port (default: 9000)
Social Authentication (optional):
SOCIAL_AUTH_GITHUB_KEY GitHub OAuth key
SOCIAL_AUTH_GITHUB_SECRET GitHub OAuth secret
SOCIAL_AUTH_GITLAB_KEY GitLab OAuth key
SOCIAL_AUTH_GITLAB_SECRET GitLab OAuth secret
SOCIAL_AUTH_MICROSOFT_GRAPH_KEY Microsoft Graph OAuth key
SOCIAL_AUTH_MICROSOFT_GRAPH_SECRET Microsoft Graph OAuth secret
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY Google OAuth2 key
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET Google OAuth2 secret
Examples:
# Development with defaults
tabby-web
# Production with PostgreSQL
DATABASE_URL="postgresql://user:pass@localhost:5432/tabby" tabby-web
# Run migrations
tabby-web-manage migrate
# Add app version
tabby-web-manage add_version 1.0.156-nightly.2
HELP
HELP_EOF
chmod +x $out/bin/tabby-web-help
runHook postInstall
'';
meta = with lib; {
description = "Web-based terminal application";
homepage = "https://github.com/Eugeny/tabby-web";
license = licenses.mit;
maintainers = [ ];
platforms = platforms.linux ++ platforms.darwin;
};
}

View File

@@ -289,6 +289,17 @@ in
tpm2-tools tpm2-tools
tpm2-tss tpm2-tss
]; ];
persistence."/media/nas/main/persist" = {
hideMounts = true;
directories = [
{
directory = "/var/cache/ccache";
user = "nobody";
group = "nobody";
mode = "u=rwx,g=rwx,o=rx";
}
];
};
}; };
# Configure programs # Configure programs