update ha components
This commit is contained in:
10
flake.lock
generated
10
flake.lock
generated
@@ -1573,16 +1573,16 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1764603586,
|
||||
"narHash": "sha256-bJK+w6XxNRXtPevYgzlfXulgSql9HqOvKJV8ADWJNZ8=",
|
||||
"lastModified": 1764974171,
|
||||
"narHash": "sha256-Da9/3xlOzlGHXkUaPYUwwFet3uWjnNlYHNUNBrl0WD4=",
|
||||
"owner": "mjallen18",
|
||||
"repo": "lib",
|
||||
"rev": "ddfab125d3331c792c02a98fb1b0cb1fec755e9a",
|
||||
"repo": "snowfall-lib",
|
||||
"rev": "e4bb3f2fd33b26e512f1d90de4c7197d58e708ad",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "mjallen18",
|
||||
"repo": "lib",
|
||||
"repo": "snowfall-lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# The name "snowfall-lib" is required due to how Snowfall Lib processes your
|
||||
# flake's inputs.
|
||||
snowfall-lib = {
|
||||
url = "github:mjallen18/lib";
|
||||
url = "github:mjallen18/snowfall-lib";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
|
||||
@@ -18,12 +18,14 @@
|
||||
"libraspberrypi"
|
||||
"libsecret"
|
||||
"linux"
|
||||
"opencv"
|
||||
"pipewire"
|
||||
"qemu"
|
||||
"raspberrypi-utils"
|
||||
"sdl"
|
||||
"sdl2"
|
||||
"uv"
|
||||
"webkitgtk"
|
||||
# "yubioath-flutter"
|
||||
];
|
||||
cacheDir = "/var/cache/ccache"; # default location
|
||||
|
||||
4
overlays/redis/default.nix
Normal file
4
overlays/redis/default.nix
Normal file
@@ -0,0 +1,4 @@
|
||||
{ ... }:
|
||||
final: _prev: {
|
||||
redis = final.valkey;
|
||||
}
|
||||
@@ -44,11 +44,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bolt-launcher";
|
||||
version = "0.19.1";
|
||||
version = "0.20.6";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/Adamcake/Bolt/releases/download/${version}/Bolt-Linux.zip";
|
||||
sha256 = "sha256-5tGXz2PIz0HIHMGNF7NpYVsB8hnueitNYKi6LtJpuPw=";
|
||||
url = "https://codeberg.org/Adamcake/Bolt/releases/download/${version}/Bolt-Linux.zip";
|
||||
sha256 = "sha256-kQwQixUwcbyC53q5lyNdcVbMh40Ay5vmWOj4ZVEVznY=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "greghesp";
|
||||
domain = "bambu_lab";
|
||||
version = "v2.2.12";
|
||||
version = "v2.2.16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "ha-bambulab";
|
||||
rev = version;
|
||||
hash = "sha256-WCUXzfJGfzgFL24V4NljCnml8SJ1un85t5IjkTj3lJY=";
|
||||
hash = "sha256-fn9Q+AILvZdOmjVTwzGwlFj/AzwPDqNTiiL11CPseD4=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
|
||||
@@ -8,27 +8,23 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "simbaja";
|
||||
domain = "ge_home";
|
||||
version = "v2025.7.0";
|
||||
version = "v2025.11.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "ha_gehome";
|
||||
rev = version;
|
||||
hash = "sha256-sCOXzrbUpbRb09QDpcm1Pbr2Xxsg0q3Ecc+tAQv2pXk=";
|
||||
hash = "sha256-48z2fP2gKo7gM69RcQMOHeF1H/vqUb0hBDk2+uCqYc8=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
gehomesdk
|
||||
# gehomesdk
|
||||
slixmpp
|
||||
|
||||
pkgs.${namespace}.gehomesdk
|
||||
pkgs.${namespace}.magicattr
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace custom_components/ge_home/manifest.json \
|
||||
--replace '"slixmpp==1.8.3"' '"slixmpp>=1.8.3"'
|
||||
'';
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/simbaja/ha_gehome/releases/tag/${version}";
|
||||
description = "Integration for GE WiFi-enabled appliances into Home Assistant.";
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "gcobb321";
|
||||
domain = "icloud3";
|
||||
version = "3.3.1";
|
||||
version = "3.3.4.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "icloud3";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-dwJXGgAramiBtKmbG0i3iJTeAAeGjmq+2CwZjbcPRlw=";
|
||||
hash = "sha256-5uw1guGLTpaLPjhXQ6jP7kA0iWdbEgNZ/vnBjJWeCPA=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "acon96";
|
||||
domain = "llama_conversation";
|
||||
version = "v0.4.3";
|
||||
version = "v0.4.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "home-llm";
|
||||
rev = version;
|
||||
hash = "sha256-VldTF7G/ZUexLAAKiyuFWmFlzfvjcCioqjogScQ3Z3g=";
|
||||
hash = "sha256-L5AL+f5i+LHIF0Fj+Hb5qlmYQbjDeGkAhBeL+qYXrMA=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{ buildHomeAssistantComponent, fetchFromGitHub, ... }:
|
||||
{ lib, buildHomeAssistantComponent, fetchFromGitHub, ... }:
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "jjjonesjr33";
|
||||
domain = "petlibro";
|
||||
version = "v1.2.30.5";
|
||||
version = "v1.2.30.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "petlibro";
|
||||
rev = version;
|
||||
hash = "sha256-Jcl1DxYFuddcQiqdjs1P62wCwNPrWdBbhdWrmECGUxQ=";
|
||||
hash = "sha256-+zmeUQHRXrBYQ5pEWLAtu9TZ8ELiwCLliRPktKlpI8k=";
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
45
packages/python/gehomesdk/default.nix
Normal file
45
packages/python/gehomesdk/default.nix
Normal 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";
|
||||
};
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
{ python3Packages, fetchFromGitHub, ... }:
|
||||
python3Packages.buildPythonPackage rec {
|
||||
pname = "nanokvm";
|
||||
version = "0.0.4";
|
||||
version = "0.1.0";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "puddly";
|
||||
repo = "python-${pname}";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-L2Z4zZUbNQPrJVd0TGA5obB3tnd+Pk7HL5J+9WOAes0=";
|
||||
sha256 = "sha256-vIxvQtjaInnWQce7syiOWpP2kaw0IVw03HPovnB2J5M=";
|
||||
};
|
||||
|
||||
buildInputs = with python3Packages; [
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
python3Packages.buildPythonPackage rec {
|
||||
pname = "python-roborock";
|
||||
version = "3.8.0";
|
||||
version = "3.10.2";
|
||||
pyproject = true;
|
||||
|
||||
disabled = python3Packages.pythonOlder "3.11";
|
||||
@@ -17,7 +17,7 @@ python3Packages.buildPythonPackage rec {
|
||||
owner = "humbertogontijo";
|
||||
repo = "python-roborock";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-Ts1X07eTv4KXv344F3fGazHlDx6XXGQfdmxb+gd/0qc=";
|
||||
hash = "sha256-iDypFBZe9hCoHdZjgDT56M8SgBiUomCIttMrFdhsN/k=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = [ "pycryptodome" ];
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
python3Packages.buildPythonPackage rec {
|
||||
pname = "pyvesync";
|
||||
version = "3.0.0b8";
|
||||
version = "3.3.3";
|
||||
pyproject = true;
|
||||
|
||||
disabled = python3Packages.pythonOlder "3.11";
|
||||
@@ -14,8 +14,8 @@ python3Packages.buildPythonPackage rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "webdjoe";
|
||||
repo = "pyvesync";
|
||||
rev = "dev-2.0";
|
||||
hash = "sha256-hJGlcszXD8EXNPppOUuBt9obtunhymlqIGAltkAuZjA=";
|
||||
rev = "3.3.3";
|
||||
hash = "sha256-T8cDp1C95gubCfgvkEiqHUn4Rw7pFNCPELo3qNwt9vI=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [ setuptools ];
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -289,6 +289,17 @@ in
|
||||
tpm2-tools
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user