diff --git a/flake.lock b/flake.lock index 6338aa9..cb1fe95 100644 --- a/flake.lock +++ b/flake.lock @@ -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" } }, diff --git a/flake.nix b/flake.nix index 1f2a15e..4e87fbf 100644 --- a/flake.nix +++ b/flake.nix @@ -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"; }; diff --git a/modules/nixos/nix/default.nix b/modules/nixos/nix/default.nix index 336fabe..60d629e 100644 --- a/modules/nixos/nix/default.nix +++ b/modules/nixos/nix/default.nix @@ -18,12 +18,14 @@ "libraspberrypi" "libsecret" "linux" + "opencv" "pipewire" "qemu" "raspberrypi-utils" "sdl" "sdl2" "uv" + "webkitgtk" # "yubioath-flutter" ]; cacheDir = "/var/cache/ccache"; # default location diff --git a/overlays/redis/default.nix b/overlays/redis/default.nix new file mode 100644 index 0000000..891a3aa --- /dev/null +++ b/overlays/redis/default.nix @@ -0,0 +1,4 @@ +{ ... }: +final: _prev: { + redis = final.valkey; +} diff --git a/packages/bolt-launcher/default.nix b/packages/bolt-launcher/default.nix index 44374a8..7b4739c 100644 --- a/packages/bolt-launcher/default.nix +++ b/packages/bolt-launcher/default.nix @@ -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; }; diff --git a/packages/homeassistant/ha-bambulab/default.nix b/packages/homeassistant/ha-bambulab/default.nix index e36d1af..22bce8e 100644 --- a/packages/homeassistant/ha-bambulab/default.nix +++ b/packages/homeassistant/ha-bambulab/default.nix @@ -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; [ diff --git a/packages/homeassistant/ha-gehome/default.nix b/packages/homeassistant/ha-gehome/default.nix index bb4ed02..be6a5da 100644 --- a/packages/homeassistant/ha-gehome/default.nix +++ b/packages/homeassistant/ha-gehome/default.nix @@ -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."; diff --git a/packages/homeassistant/ha-icloud3/default.nix b/packages/homeassistant/ha-icloud3/default.nix index 2d806eb..83897ab 100644 --- a/packages/homeassistant/ha-icloud3/default.nix +++ b/packages/homeassistant/ha-icloud3/default.nix @@ -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; [ diff --git a/packages/homeassistant/ha-local-llm/default.nix b/packages/homeassistant/ha-local-llm/default.nix index 9326c89..dde3963 100644 --- a/packages/homeassistant/ha-local-llm/default.nix +++ b/packages/homeassistant/ha-local-llm/default.nix @@ -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; [ diff --git a/packages/homeassistant/ha-petlibro/default.nix b/packages/homeassistant/ha-petlibro/default.nix index f40ade0..2974e84 100644 --- a/packages/homeassistant/ha-petlibro/default.nix +++ b/packages/homeassistant/ha-petlibro/default.nix @@ -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 = { diff --git a/packages/python/gehomesdk/default.nix b/packages/python/gehomesdk/default.nix new file mode 100644 index 0000000..07b0345 --- /dev/null +++ b/packages/python/gehomesdk/default.nix @@ -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"; + }; +} \ No newline at end of file diff --git a/packages/python/python-nanokvm/default.nix b/packages/python/python-nanokvm/default.nix index 0924b61..e48ed52 100644 --- a/packages/python/python-nanokvm/default.nix +++ b/packages/python/python-nanokvm/default.nix @@ -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; [ diff --git a/packages/python/python-roborock/default.nix b/packages/python/python-roborock/default.nix index fdfc345..9561f29 100644 --- a/packages/python/python-roborock/default.nix +++ b/packages/python/python-roborock/default.nix @@ -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" ]; diff --git a/packages/python/pyvesync/default.nix b/packages/python/pyvesync/default.nix index e640ea5..18566e9 100644 --- a/packages/python/pyvesync/default.nix +++ b/packages/python/pyvesync/default.nix @@ -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 ]; diff --git a/packages/tabby-web/default.nix b/packages/tabby-web/default.nix deleted file mode 100644 index 5f7ff1e..0000000 --- a/packages/tabby-web/default.nix +++ /dev/null @@ -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 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; - }; -} diff --git a/systems/x86_64-linux/jallen-nas/default.nix b/systems/x86_64-linux/jallen-nas/default.nix index 98db24a..703f47e 100755 --- a/systems/x86_64-linux/jallen-nas/default.nix +++ b/systems/x86_64-linux/jallen-nas/default.nix @@ -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