summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/home/rhasspy
diff options
context:
space:
mode:
authorlassulus <git@lassul.us>2023-06-19 03:25:39 +0200
committerlassulus <git@lassul.us>2023-06-19 03:25:39 +0200
commit139799c53cdaf55c362109e01be9dd96cc8700ed (patch)
treeb1ce719ec8f62458bce2d9fe2191b8d004630f2a /makefu/2configs/home/rhasspy
parentcb8fbb09127392a17d698d91f78ede7ae46accb8 (diff)
parenta766e88e7c8d87aa6bdbde796d3a454f7b5e546e (diff)
Merge remote-tracking branch 'gum/master'
Diffstat (limited to 'makefu/2configs/home/rhasspy')
-rw-r--r--makefu/2configs/home/rhasspy/default.nix40
-rw-r--r--makefu/2configs/home/rhasspy/led-control.nix23
2 files changed, 63 insertions, 0 deletions
diff --git a/makefu/2configs/home/rhasspy/default.nix b/makefu/2configs/home/rhasspy/default.nix
new file mode 100644
index 000000000..e3a0bcd28
--- /dev/null
+++ b/makefu/2configs/home/rhasspy/default.nix
@@ -0,0 +1,40 @@
+{ lib,config, ... }:
+# uses alsa instead of pulseaduio server
+let
+ profiles = "/var/lib/rhasspy";
+in
+{
+ systemd.services.docker-rhasspy.after = [ "network-online.target" ];
+
+ virtualisation.oci-containers.containers.rhasspy = {
+ image = "rhasspy/rhasspy:latest";
+
+ environment = {
+ TZ = "Europe/Berlin";
+ PULSE_SERVER = "tcp:${ config.krebs.build.host.name }:4713";
+ };
+
+ ports = [
+ "12101:12101"
+ ];
+
+ volumes = [
+ "/etc/localtime:/etc/localtime:ro"
+ "${profiles}:/profiles"
+ ];
+
+ cmd = [ "--user-profiles" "/profiles" "--profile" "de" ];
+ extraOptions = [
+ "--device=/dev/snd:/dev/snd"
+ "--group-add=audio"
+ ];
+ };
+ systemd.tmpfiles.rules = [
+ "d ${profiles} 0770 root root - -"
+ ];
+
+ # required to allow rhasspy to connect to pulse server
+ # hardware.pulseaudio.enable = lib.mkForce false;
+ networking.firewall.allowedTCPPorts = [ 4713 ];
+
+}
diff --git a/makefu/2configs/home/rhasspy/led-control.nix b/makefu/2configs/home/rhasspy/led-control.nix
new file mode 100644
index 000000000..b4efe028a
--- /dev/null
+++ b/makefu/2configs/home/rhasspy/led-control.nix
@@ -0,0 +1,23 @@
+{ pkgs, ... }:
+let
+ cfg = pkgs.writeText "hcl-config.json" (builtins.toJSON {
+ engine = "rhasspy";
+ pathToConfig = "/var/lib/rhasspy/de/profile.json";
+ hardware = "respeaker4MicArray";
+ pattern = "fake-name";
+ enableDoA = false;
+ });
+in {
+ systemd.services.HermesLedControl = {
+ description = "Led Server for ReSpeaker 4-array";
+ after = [ "network-online.target" "docker-rhasspy.service" ] ;
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ # User = "nobody"; # need a user with permissions to run nix-shell
+ ExecStart = "${pkgs.HermesLedControl}/bin/HermesLedControl --hermesLedControlConfig=${toString cfg}";
+ Restart = "always";
+ RestartSec = 10;
+ PrivateTmp = true;
+ };
+ };
+}