nixos zwave?
This commit is contained in:
parent
12df3009d1
commit
83f82c2aa8
5 changed files with 68 additions and 3 deletions
|
@ -11,6 +11,7 @@
|
||||||
};
|
};
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
(import ../../overlays/recyclarr.nix)
|
(import ../../overlays/recyclarr.nix)
|
||||||
|
(import ../../overlays/zwave-js-ui.nix)
|
||||||
];
|
];
|
||||||
system.autoUpgrade = {
|
system.autoUpgrade = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
30
modules/zwave-js-ui.nix
Normal file
30
modules/zwave-js-ui.nix
Normal 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
4
overlays/zwave-js-ui.nix
Normal 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
21
pkgs/zwave-js-ui.nix
Normal 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];
|
||||||
|
};
|
||||||
|
}
|
|
@ -147,15 +147,24 @@
|
||||||
extraOptions = [ "--pull=newer" "--network=www" ];
|
extraOptions = [ "--pull=newer" "--network=www" ];
|
||||||
};
|
};
|
||||||
zwave-js-ui = {
|
zwave-js-ui = {
|
||||||
image = "docker.io/zwavejs/zwave-js-ui:latest";
|
image = "my-zwave-js-ui:latest";
|
||||||
|
imageFile = pkgs.dockerTools.buildImage {
|
||||||
|
name = "my-zwave-js-ui";
|
||||||
|
tag = "latest";
|
||||||
|
config.Cmd = [ "${pkgs.zwave-js-ui}/bin/zwave-js-ui" ];
|
||||||
|
};
|
||||||
volumes = [ "zwave-config:/usr/src/app/store" ];
|
volumes = [ "zwave-config:/usr/src/app/store" ];
|
||||||
environment.TZ = "America/New_York";
|
environment = {
|
||||||
|
TZ = "America/New_York";
|
||||||
|
STORE_DIR = "/usr/src/app/store";
|
||||||
|
ZWAVEJS_EXTERNAL_CONFIG = "/usr/src/app/store/.config-db";
|
||||||
|
};
|
||||||
labels = {
|
labels = {
|
||||||
swag = "enable";
|
swag = "enable";
|
||||||
swag_url = "zwave.icanttype.org";
|
swag_url = "zwave.icanttype.org";
|
||||||
};
|
};
|
||||||
extraOptions =
|
extraOptions =
|
||||||
[ "--pull=newer" "--network=www" "--device=/dev/ttyACM0:/dev/zwave" ];
|
[ "--network=www" "--device=/dev/ttyACM0:/dev/zwave" ];
|
||||||
};
|
};
|
||||||
homeassistant = {
|
homeassistant = {
|
||||||
image = "lscr.io/linuxserver/homeassistant:latest";
|
image = "lscr.io/linuxserver/homeassistant:latest";
|
||||||
|
|
Loading…
Reference in a new issue