Compare commits

..

2 commits

Author SHA1 Message Date
bf14ada5fd nixos zwave? 2024-08-20 21:51:20 -04:00
12df3009d1 module cleanup 2024-08-20 20:03:18 -04:00
8 changed files with 64 additions and 4 deletions

View file

@ -1 +1 @@
{ ... }: { boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; }
{ boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; }

View file

@ -11,6 +11,7 @@
};
nixpkgs.overlays = [
(import ../../overlays/recyclarr.nix)
(import ../../overlays/zwave-js-ui.nix)
];
system.autoUpgrade = {
enable = true;

View file

@ -1,4 +1,4 @@
{ ... }: {
{
systemd.network.enable = true;
networking.useNetworkd = true;
services.resolved = {

View file

@ -1,4 +1,4 @@
{ ... }: {
{
services.smartd = {
enable = true;
defaults.monitored = "-a -o on -s (S/../.././02|L/../../7/04)";

30
modules/zwave-js-ui.nix Normal file
View file

@ -0,0 +1,30 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkEnableOption mkOption types;
cfg = config.services.zwave-js-ui;
in
{
options.services.zwave-js-ui = {
enable = mkEnableOption "zwave-js-ui";
store = mkOption {
type = types.path;
default = "/var/lib/zwave-js-ui";
description = ''
Where zwave-js-ui information will be stored
'';
};
};
config = mkIf cfg.enable {
assertions = [{
assertion = !config.services.zwave-js.enable;
message = "zwave-js-ui conflicts with zwave-js";
}];
systemd.services.zwave-js-ui = {
environment = {
STORE_DIR = cfg.store;
ZWAVEJS_EXTERNAL_CONFIG = "${cfg.store}/.config-db";
};
script = "${pkgs.zwave-js-ui}/bin/zwave-js-ui";
};
};
}

4
overlays/zwave-js-ui.nix Normal file
View file

@ -0,0 +1,4 @@
final: prev:
{
zwave-js-ui = ( prev.callPackage ../pkgs/zwave-js-ui.nix {} );
}

21
pkgs/zwave-js-ui.nix Normal file
View file

@ -0,0 +1,21 @@
{ lib, buildNpmPackage, fetchFromGitHub }:
buildNpmPackage rec {
pname = "zwave-js-ui";
version = "9.17.0";
src = fetchFromGitHub {
owner = "zwave-js";
repo = pname;
rev = "v${version}";
hash = "sha256-GCBVRjDpiC8WhPHFwKnzyO5I09TDx3IbxpUZvwDu2u0=";
};
npmDepsHash = "sha256-YtHiBVz2eyHyJkr4K1NZXVZKdZTmdGMDFGpEC0QUCMU=";
meta = {
description = "Full featured Z-Wave Control Panel and MQTT Gateway.";
homepage = "https://zwave-js.github.io/zwave-js-ui/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [cdombroski];
};
}

View file

@ -147,7 +147,11 @@
extraOptions = [ "--pull=newer" "--network=www" ];
};
zwave-js-ui = {
image = "docker.io/zwavejs/zwave-js-ui:latest";
image = "my-zwave-js-ui";
imageFile = pkgs.dockerTools.buildImage {
name = "my-zwave-js-ui";
config.Cmd = "${pkgs.zwave-js-ui}/bin/zwave-js-ui";
};
volumes = [ "zwave-config:/usr/src/app/store" ];
environment.TZ = "America/New_York";
labels = {