From 48c3746cf09aedf888692856e33f9a803ae37829 Mon Sep 17 00:00:00 2001 From: makefu Date: Wed, 22 Mar 2023 23:18:23 +0100 Subject: ma wiregrill: also masquerade ipv6 --- makefu/2configs/wireguard/wiregrill.nix | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'makefu/2configs') diff --git a/makefu/2configs/wireguard/wiregrill.nix b/makefu/2configs/wireguard/wiregrill.nix index 082090755..dbe3a91c1 100644 --- a/makefu/2configs/wireguard/wiregrill.nix +++ b/makefu/2configs/wireguard/wiregrill.nix @@ -13,16 +13,32 @@ in mkIf (hasAttr "wiregrill" config.krebs.build.host.nets) { boot.kernel.sysctl = mkIf isRouter { "net.ipv6.conf.all.forwarding" = 1; + "net.ipv4.conf.all.forwarding" = 1; + }; + networking.nat = { + enable = true; + externalInterface = ext-if; + internalInterfaces = [ "wiregrill" ]; }; networking.firewall = { allowedUDPPorts = [ self.wireguard.port ]; extraCommands = '' - iptables -A FORWARD -i wiregrill -o wiregrill -j ACCEPT + ${pkgs.iptables}/bin/iptables -A FORWARD -i wiregrill -o wiregrill -j ACCEPT ''; }; networking.wireguard.interfaces.wiregrill = { + postSetup = '' + ${pkgs.iptables}/bin/iptables -t nat -A POSTROUTING -s 10.220.245.0/24 -o ${ext-if} -j MASQUERADE + ${pkgs.iptables}/bin/ip6tables -t nat -A POSTROUTING -s 42::/16 -o ${ext-if} -j MASQUERADE + ''; + + # This undoes the above command + postShutdown = '' + ${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -s 10.244.245.0/24 -o ${ext-if} -j MASQUERADE + ${pkgs.iptables}/bin/ip6tables -t nat -D POSTROUTING -s 42::/16 -o ${ext-if} -j MASQUERADE + ''; ips = (optional (!isNull self.ip4) self.ip4.addr) ++ (optional (!isNull self.ip6) self.ip6.addr); -- cgit v1.2.3 From 55b00f7139d07469d6be3037d2443850b6d7496c Mon Sep 17 00:00:00 2001 From: makefu Date: Thu, 23 Mar 2023 01:10:21 +0100 Subject: ma wiregrill: allow masquerading between wiregrill/retiolum --- makefu/2configs/wireguard/wiregrill.nix | 43 ++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 9 deletions(-) (limited to 'makefu/2configs') diff --git a/makefu/2configs/wireguard/wiregrill.nix b/makefu/2configs/wireguard/wiregrill.nix index dbe3a91c1..070f01e10 100644 --- a/makefu/2configs/wireguard/wiregrill.nix +++ b/makefu/2configs/wireguard/wiregrill.nix @@ -15,30 +15,55 @@ in mkIf (hasAttr "wiregrill" config.krebs.build.host.nets) { "net.ipv6.conf.all.forwarding" = 1; "net.ipv4.conf.all.forwarding" = 1; }; - networking.nat = { + networking.nat = mkIf isRouter { enable = true; + enableIPv6 = true; externalInterface = ext-if; internalInterfaces = [ "wiregrill" ]; }; networking.firewall = { allowedUDPPorts = [ self.wireguard.port ]; - extraCommands = '' - ${pkgs.iptables}/bin/iptables -A FORWARD -i wiregrill -o wiregrill -j ACCEPT + interfaces.wiregrill = mkIf isRouter { + allowedUDPPorts = [ 53 ]; + allowedTCPPorts = [ 53 ]; + }; + }; + + services.dnsmasq = mkIf isRouter { + enable = true; + resolveLocalQueries = false; + extraConfig = /* dnsmasq */ '' + bind-interfaces + interface=retiolum,wiregrill ''; + servers = [ "1.1.1.1" ]; }; networking.wireguard.interfaces.wiregrill = { - postSetup = '' - ${pkgs.iptables}/bin/iptables -t nat -A POSTROUTING -s 10.220.245.0/24 -o ${ext-if} -j MASQUERADE - ${pkgs.iptables}/bin/ip6tables -t nat -A POSTROUTING -s 42::/16 -o ${ext-if} -j MASQUERADE + postSetup = optionalString isRouter '' + ${pkgs.iptables}/bin/iptables -t nat -A PREROUTING -s 10.244.245.0/24 -j ACCEPT + ${pkgs.iptables}/bin/iptables -t nat -A POSTROUTING -s 10.244.245.0/24 ! -d 10.244.245.0/24 -j MASQUERADE + ${pkgs.iptables}/bin/iptables -A FORWARD -i wiregrill -o retiolum -j ACCEPT + ${pkgs.iptables}/bin/iptables -A FORWARD -i retiolum -o wiregrill -j ACCEPT + + ${pkgs.iptables}/bin/ip6tables -t nat -A PREROUTING -s 42:1::/32 -j ACCEPT + ${pkgs.iptables}/bin/ip6tables -t nat -A POSTROUTING -s 42:1::/32 ! -d 42:1::/48 -j MASQUERADE + ${pkgs.iptables}/bin/ip6tables -A FORWARD -i wiregrill -o retiolum -j ACCEPT + ${pkgs.iptables}/bin/ip6tables -A FORWARD -i retiolum -o wiregrill -j ACCEPT ''; # This undoes the above command - postShutdown = '' + postShutdown = optionalString isRouter '' ${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -s 10.244.245.0/24 -o ${ext-if} -j MASQUERADE - ${pkgs.iptables}/bin/ip6tables -t nat -D POSTROUTING -s 42::/16 -o ${ext-if} -j MASQUERADE - ''; + ${pkgs.iptables}/bin/iptables -D FORWARD -i wiregrill -o retiolum -j ACCEPT + ${pkgs.iptables}/bin/iptables -D FORWARD -i retiolum -o wiregrill -j ACCEPT + + ${pkgs.iptables}/bin/ip6tables -t nat -D PREROUTING -s 42:1::/32 -j ACCEPT + ${pkgs.iptables}/bin/ip6tables -t nat -D POSTROUTING -s 42:1::/32 ! -d 42:1::/48 -j MASQUERADE + ${pkgs.iptables}/bin/ip6tables -D FORWARD -i wiregrill -o retiolum -j ACCEPT + ${pkgs.iptables}/bin/ip6tables -D FORWARD -i retiolum -o wiregrill -j ACCEPT + '' ; ips = (optional (!isNull self.ip4) self.ip4.addr) ++ (optional (!isNull self.ip6) self.ip6.addr); -- cgit v1.2.3 From d335011fce054bebc0e429ea10bccabaf898d2b2 Mon Sep 17 00:00:00 2001 From: makefu Date: Wed, 29 Mar 2023 22:39:53 +0200 Subject: ma zsh: speedup, fix autocompletion for brain --- makefu/2configs/home-manager/zsh.nix | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'makefu/2configs') diff --git a/makefu/2configs/home-manager/zsh.nix b/makefu/2configs/home-manager/zsh.nix index 13755de27..c875d52c8 100644 --- a/makefu/2configs/home-manager/zsh.nix +++ b/makefu/2configs/home-manager/zsh.nix @@ -61,6 +61,8 @@ direnv allow size = 900001; save = 900001; ignoreDups = true; + ignoreSpace = true; + extended = true; share = true; }; @@ -77,31 +79,32 @@ direnv allow xo = "mimeopen"; nmap = "nmap -oN $HOME/loot/scan-`date +\%s`.nmap -oX $HOME/loot/scan-`date +%s`.xml"; }; - # navi package does not come with the navi.plugin.zsh anymore so we use .src + #zplug = { + # enable = true; + # plugins = [ + # { name = "denisidoro/navi" ; } + # { name = "zsh-users/zsh-autosuggestions" ; } + # ]; + #}; initExtra = '' bindkey -e + zle -N edit-command-line + # ctrl-x ctrl-e + bindkey '^xe' edit-command-line + bindkey '^x^e' edit-command-line # shift-tab bindkey '^[[Z' reverse-menu-complete bindkey "\e[3~" delete-char zstyle ':completion:*' menu select setopt HIST_IGNORE_ALL_DUPS - setopt HIST_IGNORE_SPACE setopt HIST_FIND_NO_DUPS compdef _pass brain zstyle ':completion::complete:brain::' prefix "$HOME/brain" + compdef _pass secrets zstyle ':completion::complete:secrets::' prefix "$HOME/.secrets-pass/" - - # navi - . ${pkgs.navi.src}/shell/navi.plugin.zsh - # ctrl-x ctrl-e - autoload -U compinit && compinit - autoload -U edit-command-line - zle -N edit-command-line - bindkey '^xe' edit-command-line - bindkey '^x^e' edit-command-line ''; }; }; -- cgit v1.2.3 From d030aae27223659504eee9775f22755eda0fe5d1 Mon Sep 17 00:00:00 2001 From: makefu Date: Wed, 26 Apr 2023 18:41:02 +0200 Subject: ma wbob: add brother ql-800 --- makefu/2configs/bureautomation/printer.nix | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 makefu/2configs/bureautomation/printer.nix (limited to 'makefu/2configs') diff --git a/makefu/2configs/bureautomation/printer.nix b/makefu/2configs/bureautomation/printer.nix new file mode 100644 index 000000000..f0cf495ef --- /dev/null +++ b/makefu/2configs/bureautomation/printer.nix @@ -0,0 +1,25 @@ +{ pkgs, config, ... }: +let + mainUser = config.krebs.build.user.name; +in { + services.printing = { + enable = true; + drivers = with pkgs;[ + brlaser + cups-ptouch + ]; + }; + users.users.kiosk.extraGroups = [ "scanner" "lp" ]; + state = [ "/var/lib/cups"]; + users.users.kiosk.packages = with pkgs;[ + python3Packages.brother-ql + libreoffice + qrencode + imagemagick + ]; + + services.udev.extraRules = '' + SUBSYSTEMS=="usb", ATTRS{idVendor}=="04f9", ATTRS{idProduct}=="209b", ATTRS{serial}=="000F1Z401759", MODE="0664", GROUP="lp", SYMLINK+="usb/lp0" + ''; + +} -- cgit v1.2.3 From 447b4931439670b566b9cd26e36b8b11de6f7209 Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 29 Apr 2023 21:11:06 +0200 Subject: ma wbob.r: add Brother QL-800 + ui --- makefu/2configs/bureautomation/brother-ql-web.nix | 23 +++++++++++++++++++++++ makefu/2configs/bureautomation/printer.nix | 3 +++ makefu/2configs/gui/pipewire.nix | 3 +-- makefu/2configs/gui/wbob-kiosk.nix | 13 ++++++++++--- 4 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 makefu/2configs/bureautomation/brother-ql-web.nix (limited to 'makefu/2configs') diff --git a/makefu/2configs/bureautomation/brother-ql-web.nix b/makefu/2configs/bureautomation/brother-ql-web.nix new file mode 100644 index 000000000..26887db03 --- /dev/null +++ b/makefu/2configs/bureautomation/brother-ql-web.nix @@ -0,0 +1,23 @@ + {pkgs, ... }: + let + pkg = pkgs.brother_ql_web; + in { + systemd.services.brother-ql-web = { + after = [ "network.target" ]; + description = "Brother QL Web Interface"; + wantedBy = [ "multi-user.target" ]; + environment = { + FLASK_PRINTER = "usb://0x04f9:0x209b/000F1Z401759"; + FLASK_MODEL = "QL-800"; + #FLASK_SERVER_PORT = "8013"; + #FLASK_LABEL_DEFAULT_SIZE = "d24"; + #FLASK_LABEL_DEFAULT_QR_SIZE = "7"; + }; + serviceConfig = { + ExecStart = "${pkg}/bin/brother_ql_web"; + DynamicUser = true; + SupplementaryGroups = "lp"; + Restart = "always"; + }; + }; +} diff --git a/makefu/2configs/bureautomation/printer.nix b/makefu/2configs/bureautomation/printer.nix index f0cf495ef..86d5a4069 100644 --- a/makefu/2configs/bureautomation/printer.nix +++ b/makefu/2configs/bureautomation/printer.nix @@ -2,6 +2,9 @@ let mainUser = config.krebs.build.user.name; in { + imports = [ + ./brother-ql-web.nix + ]; services.printing = { enable = true; drivers = with pkgs;[ diff --git a/makefu/2configs/gui/pipewire.nix b/makefu/2configs/gui/pipewire.nix index eb94f75b7..d52681551 100644 --- a/makefu/2configs/gui/pipewire.nix +++ b/makefu/2configs/gui/pipewire.nix @@ -12,10 +12,9 @@ services.pipewire = { enable = true; - systemWide = true; + # systemWide = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; - jack.enable = true; }; } diff --git a/makefu/2configs/gui/wbob-kiosk.nix b/makefu/2configs/gui/wbob-kiosk.nix index c67aa7cfb..3a21bf213 100644 --- a/makefu/2configs/gui/wbob-kiosk.nix +++ b/makefu/2configs/gui/wbob-kiosk.nix @@ -5,11 +5,11 @@ ./base.nix ]; users.users.kiosk = { - packages = [ pkgs.chromium pkgs.vscode ]; + packages = with pkgs;[ chromium vscode spotify tartube-yt-dlp ]; group = "kiosk"; isNormalUser = true; uid = 1003; - extraGroups = [ "wheel" "audio" "pulse" ]; + extraGroups = [ "wheel" "audio" "pulse" "pipewire" ]; }; users.groups.kiosk.gid = 989 ; services.xserver = { @@ -31,7 +31,10 @@ }; - environment.systemPackages = [ pkgs.gnomeExtensions.appindicator ]; + environment.systemPackages = [ + pkgs.gnomeExtensions.appindicator pkgs.pavucontrol pkgs.jellyfin-media-player pkgs.chromium pkgs.firefox pkgs.kodi + pkgs.pavucontrol +]; services.dbus.packages = with pkgs; [ gnome2.GConf gnome3.gnome-settings-daemon ]; systemd.services.xset-off = { @@ -45,5 +48,9 @@ Restart = "on-failure"; }; }; + services.pipewire.systemWide = lib.mkForce false; + services.pipewire.config.pipewire-pulse = { + "pulse.properties"."server.address" = [ "unix:native" "tcp:4713" ]; + }; } -- cgit v1.2.3 From c99460e5f739032d7011af5d533072e5189fd0c3 Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 13 May 2023 20:57:16 +0200 Subject: ma tools/games: add steam-run --- makefu/2configs/tools/games.nix | 1 + 1 file changed, 1 insertion(+) (limited to 'makefu/2configs') diff --git a/makefu/2configs/tools/games.nix b/makefu/2configs/tools/games.nix index 507887cff..57a1dba1e 100644 --- a/makefu/2configs/tools/games.nix +++ b/makefu/2configs/tools/games.nix @@ -9,5 +9,6 @@ wine pkg2zip steam + steam-run ]; } -- cgit v1.2.3 From dd0a6294c8699640f47127f237104aac9d96c896 Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:27:17 +0200 Subject: ma x.r: migrate to gnome --- makefu/2configs/gui/base.nix | 22 +++++++++---------- makefu/2configs/gui/gnome.nix | 22 +++++++++++++++++++ makefu/2configs/gui/snake-kiosk.nix | 44 +++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 12 deletions(-) create mode 100644 makefu/2configs/gui/gnome.nix create mode 100644 makefu/2configs/gui/snake-kiosk.nix (limited to 'makefu/2configs') diff --git a/makefu/2configs/gui/base.nix b/makefu/2configs/gui/base.nix index b2192c7f9..b1b7c9913 100644 --- a/makefu/2configs/gui/base.nix +++ b/makefu/2configs/gui/base.nix @@ -18,30 +18,28 @@ in imports = [ ./urxvtd.nix ./pipewire.nix + ./gnome.nix ]; + # services.redshift.enable = true; services.xserver = { enable = true; layout = "us"; xkbVariant = "altgr-intl"; xkbOptions = "ctrl:nocaps, eurosign:e"; - windowManager = { - awesome.enable = true; - awesome.noArgb = true; - awesome.luaModules = [ pkgs.luaPackages.vicious ]; - }; - displayManager.defaultSession = lib.mkDefault "none+awesome"; - displayManager.autoLogin = { - enable = true; - user = mainUser; - }; +# windowManager = { +# awesome.enable = true; +# awesome.noArgb = true; +# awesome.luaModules = [ pkgs.luaPackages.vicious ]; +# }; +# displayManager.defaultSession = lib.mkDefault "none+awesome"; }; environment.systemPackages = [ pkgs.gnome.adwaita-icon-theme ]; # lid switch is handled via button presses - services.logind.lidSwitch = lib.mkDefault "ignore"; - makefu.awesome.enable = true; + # services.logind.lidSwitch = lib.mkDefault "ignore"; + #makefu.awesome.enable = true; console.font = "Lat2-Terminus16"; fonts = { diff --git a/makefu/2configs/gui/gnome.nix b/makefu/2configs/gui/gnome.nix new file mode 100644 index 000000000..e6eff29f4 --- /dev/null +++ b/makefu/2configs/gui/gnome.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, ... }: + +let + mainUser = config.krebs.build.user.name; +in +{ + programs.gnome-terminal.enable = true; + services.xserver = { + desktopManager.gnome.enable = true; + displayManager.gdm.enable = true; + #displayManager.autoLogin = { + # enable = true; + # user = mainUser; + #}; + }; + home-manager.users.${mainUser}.services.gammastep = { + enable = true; + provider = "manual"; + latitude = config.location.latitude; + longitude = config.location.longitude; + }; +} diff --git a/makefu/2configs/gui/snake-kiosk.nix b/makefu/2configs/gui/snake-kiosk.nix new file mode 100644 index 000000000..838ac3a5c --- /dev/null +++ b/makefu/2configs/gui/snake-kiosk.nix @@ -0,0 +1,44 @@ +{ pkgs, lib, ... }: +{ + + imports = [ + ./base.nix + ]; + users.users.kiosk = { + # packages = [ pkgs.chromium pkgs.vscode ]; + group = "kiosk"; + isNormalUser = true; + uid = 1003; + extraGroups = [ "wheel" "audio" "pulse" "pipewire" ]; + }; + users.groups.kiosk.gid = 989 ; + services.xserver = { + enable = true; + + windowManager = lib.mkForce { awesome.enable = false; }; + displayManager.gdm.enable = true; + displayManager.gdm.autoSuspend = false; + displayManager.autoLogin = { + enable = true; + user = lib.mkForce "kiosk"; + }; + displayManager.defaultSession = "gnome"; + desktopManager.gnome.enable = true; + }; + + systemd.targets.sleep.enable = false; + systemd.targets.suspend.enable = false; + systemd.targets.hibernate.enable = false; + systemd.targets.hybrid-sleep.enable = false; + + + + environment.systemPackages = [ pkgs.gnomeExtensions.appindicator ]; + services.dbus.packages = with pkgs; [ gnome2.GConf gnome3.gnome-settings-daemon ]; + + services.pipewire.systemWide = lib.mkForce false; + services.pipewire.config.pipewire-pulse = { + "pulse.properties"."server.address" = [ "unix:native" "tcp:4713" ]; + }; + +} -- cgit v1.2.3 From be3284417942c0164c1b32c9cf34ba44bcfb86c3 Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:27:46 +0200 Subject: ma home: deploy home-assistant via docker --- makefu/2configs/home/3dprint.nix | 6 +- .../2configs/home/ham/automation/light_buttons.nix | 28 +++- makefu/2configs/home/ham/automation/urlaub.nix | 6 +- makefu/2configs/home/ham/automation/welcome.txt.j2 | 2 +- makefu/2configs/home/ham/default.nix | 2 + makefu/2configs/home/ham/docker.nix | 30 ++++ makefu/2configs/home/ham/intents/default.nix | 35 +++++ .../2configs/home/ham/intents/music_chooser.txt.j2 | 13 ++ .../2configs/home/ham/intents/statusbericht.txt.j2 | 37 +++++ makefu/2configs/home/ham/lib/default.nix | 5 +- makefu/2configs/home/ham/light/wohnzimmer.nix | 27 +++- makefu/2configs/home/ham/media/firetv.nix | 22 +-- makefu/2configs/home/ham/mqtt.nix | 2 +- makefu/2configs/home/ham/multi/kurzzeitwecker.nix | 172 ++++++++------------- makefu/2configs/home/ham/sensor/outside.nix | 11 ++ makefu/2configs/home/jellyfin.nix | 72 +++------ makefu/2configs/home/music.nix | 3 +- makefu/2configs/home/photoprism.nix | 7 +- makefu/2configs/home/rhasspy/default.nix | 40 +++++ makefu/2configs/home/rhasspy/led-control.nix | 23 +++ makefu/2configs/home/zigbee2mqtt/default.nix | 4 + 21 files changed, 354 insertions(+), 193 deletions(-) create mode 100644 makefu/2configs/home/ham/docker.nix create mode 100644 makefu/2configs/home/ham/intents/default.nix create mode 100644 makefu/2configs/home/ham/intents/music_chooser.txt.j2 create mode 100644 makefu/2configs/home/ham/intents/statusbericht.txt.j2 create mode 100644 makefu/2configs/home/rhasspy/default.nix create mode 100644 makefu/2configs/home/rhasspy/led-control.nix (limited to 'makefu/2configs') diff --git a/makefu/2configs/home/3dprint.nix b/makefu/2configs/home/3dprint.nix index 09f2ce6fd..aac962787 100644 --- a/makefu/2configs/home/3dprint.nix +++ b/makefu/2configs/home/3dprint.nix @@ -1,8 +1,12 @@ { pkgs, ... }: +let + #dev = "/dev/web_cam"; + dev = "/dev/video0"; +in { services.mjpg-streamer = { enable = true; - inputPlugin = "input_uvc.so -d /dev/web_cam -r 1280x960"; + inputPlugin = "input_uvc.so -d ${dev} -r 1280x960"; }; users.users.octoprint.extraGroups = [ "video" ]; # allow octoprint to access /dev/vchiq diff --git a/makefu/2configs/home/ham/automation/light_buttons.nix b/makefu/2configs/home/ham/automation/light_buttons.nix index 1892917c4..460d48bc4 100644 --- a/makefu/2configs/home/ham/automation/light_buttons.nix +++ b/makefu/2configs/home/ham/automation/light_buttons.nix @@ -1,10 +1,12 @@ let inherit (import ../lib) btn_cycle_light; + schlafzimmer_komode = "light.schlafzimmer_komode_osram"; + schlafzimmer_button = "sensor.schlafzimmer_btn2_click"; in { services.home-assistant.config.automation = [ # (btn_cycle_light "light.arbeitszimmerbeleuchtung" "arbeitszimmer_btn1") - (btn_cycle_light "light.schlafzimmer_komode_osram" "schlafzimmer_btn2" 128) + { alias = "toggle keller"; trigger = { @@ -32,21 +34,35 @@ in { service = "light.toggle"; data = { entity_id = "light.keller_osram"; - brightness = 50; + brightness = 25; }; }; } # (btn_cycle_light "light.wohnzimmerbeleuchtung" "wohnzimmer_btn3") { - alias = "Turn of all lights via schlafzimmer_btn2 double click"; + alias = "Dim Toggle schlafzimmer komode"; trigger = { platform = "state"; - entity_id = "sensor.schlafzimmer_btn2_click"; + entity_id = schlafzimmer_button; + to = "single"; + }; + action = { + service = "light.toggle"; + entity_id = schlafzimmer_komode; + brightness = 1; + }; + } + { + alias = "Bright Toggle schlafzimmer komode"; + trigger = { + platform = "state"; + entity_id = schlafzimmer_button; to = "double"; }; action = { - service = "light.turn_off"; - entity_id = "all"; + service = "light.toggle"; + entity_id = schlafzimmer_komode; + brightness = 255; }; } ]; diff --git a/makefu/2configs/home/ham/automation/urlaub.nix b/makefu/2configs/home/ham/automation/urlaub.nix index 019e65d25..abfe5031d 100644 --- a/makefu/2configs/home/ham/automation/urlaub.nix +++ b/makefu/2configs/home/ham/automation/urlaub.nix @@ -6,7 +6,7 @@ let schranklicht = [ "light.wohnzimmer_schrank_osram" - "light.wohnzimmer_komode_osram" + # "light.wohnzimmer_komode_osram" ]; weihnachtslicht = "light.wohnzimmer_fenster_lichterkette_licht"; fernsehlicht = "light.wled"; @@ -31,8 +31,8 @@ in automation = [ (turn_on schranklicht "-00:30:00") - #(turn_on weihnachtslicht "-00:30:00") - (turn_on fernsehlicht "-00:00:00") + (turn_on weihnachtslicht "-00:00:00") + #(turn_on fernsehlicht "-00:00:00") { alias = "Always turn off the urlaub lights at ${final_off}"; trigger = [ diff --git a/makefu/2configs/home/ham/automation/welcome.txt.j2 b/makefu/2configs/home/ham/automation/welcome.txt.j2 index 76091b868..d2a2b573b 100644 --- a/makefu/2configs/home/ham/automation/welcome.txt.j2 +++ b/makefu/2configs/home/ham/automation/welcome.txt.j2 @@ -7,7 +7,7 @@ Heute ist {{ weekday }}, du solltest gar nicht arbeiten! {% else %} Willkommen auf Arbeit Felix. {% endif -%} -Das aktuell gewählte Projekt ist {{ states("sensor.felix_project") }}. +Dein Projekt ist {{ states("sensor.felix_project") }}. {% set inside = states("sensor.wohnzimmer_temp_temperature") | float | round(2) -%} {% set outside = states("sensor.dark_sky_temperature") | float | round(2) -%} diff --git a/makefu/2configs/home/ham/default.nix b/makefu/2configs/home/ham/default.nix index ca5fcd17c..98269959d 100644 --- a/makefu/2configs/home/ham/default.nix +++ b/makefu/2configs/home/ham/default.nix @@ -17,6 +17,7 @@ in { ./zigbee2mqtt.nix # ./multi/flurlicht.nix ./multi/kurzzeitwecker.nix + ./intents ./multi/the_playlist.nix ./multi/heizung.nix # ./multi/fliegen-couter.nix @@ -92,6 +93,7 @@ in { { type = "homeassistant"; } ]; }; + tasmota = {}; binary_sensor = [ { platform = "workday"; name = "Arbeitstag"; diff --git a/makefu/2configs/home/ham/docker.nix b/makefu/2configs/home/ham/docker.nix new file mode 100644 index 000000000..e8a47dbbb --- /dev/null +++ b/makefu/2configs/home/ham/docker.nix @@ -0,0 +1,30 @@ +{ config, pkgs, lib, ... }: +let + confdir = "/var/lib/homeassistant-docker"; +in { + imports = [ + ./nginx.nix + ./mqtt.nix + ./signal-rest + ./signal-rest/service.nix + ]; + + networking.firewall.allowedTCPPorts = [ 8123 ]; + state = [ "/var/lib/hass/known_devices.yaml" ]; + virtualisation.oci-containers.containers.hass = { + image = "homeassistant/home-assistant:latest"; + environment = { + TZ = "Europe/Berlin"; + UMASK = "007"; + }; + extraOptions = ["--net=host" ]; + volumes = [ + "${confdir}:/config" + #"/data/music:/config/media" + ]; + }; + systemd.tmpfiles.rules = [ + #"f ${confdir}/docker-run 0770 kiosk kiosk - -" + "d ${confdir} 0770 kiosk kiosk - -" + ]; +} diff --git a/makefu/2configs/home/ham/intents/default.nix b/makefu/2configs/home/ham/intents/default.nix new file mode 100644 index 000000000..24594b4a2 --- /dev/null +++ b/makefu/2configs/home/ham/intents/default.nix @@ -0,0 +1,35 @@ +{ + services.home-assistant.config = { + intent_script = { + GetTime.speech.text = '' + Es ist {{ now().hour }} Uhr {{ now().minute }} + ''; + GutenMorgen.speech.text = '' + Einen wunderschönen Guten Morgen wünsche ich dir + ''; + WieGehtEsDir.speech.text = '' + Mir geht es sehr gut, und dir? + ''; + Statusreport.speech.text = builtins.readFile ./statusbericht.txt.j2; + StartMusic = { + speech.text = "Spiele {{ music }} musik"; + action_async = [ + { + service = "media_player.play_media"; + data_template = { + entity_id = "media_player.{{ _intent.siteId }}"; + media_content_id = builtins.readFile ./music_chooser.txt.j2; + media_content_type = "music"; + }; + } + ]; + }; + GetWeather = { + #speech.text = '' + # {{ states('sensor.openweathermap_weather') }} bei {{ states('sensor.openweathermap_temperature') }} Grad + #''; + speech.text = "{{ states('sensor.swr_prognose') }}"; + }; + }; + }; +} diff --git a/makefu/2configs/home/ham/intents/music_chooser.txt.j2 b/makefu/2configs/home/ham/intents/music_chooser.txt.j2 new file mode 100644 index 000000000..b66ed2721 --- /dev/null +++ b/makefu/2configs/home/ham/intents/music_chooser.txt.j2 @@ -0,0 +1,13 @@ +{% if music == "lounge" -%} +https://cast1.asurahosting.com/proxy/julien/stream.mp3 +{% elif music == "lassulus" -%} +http://radio.lassul.us:8000/radio.mp3 +{% elif music == "groove" -%} +http://ice2.somafm.com/groovesalad-128.mp3 +{% elif music == "swr3" -%} +https://liveradio.swr.de/sw282p3/swr3/play.mp3 +{% elif music == "swr1" -%} +https://liveradio.swr.de/sw282p3/swr1bw/play.mp3 +{% elif music == "radio" -%} +https://liveradio.swr.de/sw282p3/swr1bw/play.mp3 +{% endif %} diff --git a/makefu/2configs/home/ham/intents/statusbericht.txt.j2 b/makefu/2configs/home/ham/intents/statusbericht.txt.j2 new file mode 100644 index 000000000..c17ad455c --- /dev/null +++ b/makefu/2configs/home/ham/intents/statusbericht.txt.j2 @@ -0,0 +1,37 @@ +{% set arbeit_heute = is_state("binary_sensor.arbeitstag","on") -%} +{% set weekday = ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][now().weekday()] -%} +{% set is_friday = now().weekday() == 4 %} + +Dies ist deine Persönliche Zusammenfassung +{% set inside = states("sensor.wohnzimmer_temp_temperature") | float | round(2) -%} +{% set outside = states("sensor.dark_sky_temperature") | float | round(2) -%} +{% set arbeit_morgen = is_state("binary_sensor.arbeitstag_morgen","on") -%} + +Die Wetteraussichten: {{ states("sensor.dark_sky_hourly_summary") | replace(".","")}} bei {{ states("sensor.dark_sky_temperature") }} Grad mit {{ states("sensor.dark_sky_humidity") | round(0) }}% Luftfeuchtigkeit. +{% if states("calendar.abfall_papiermuell") == "on" %} +Heute ist Papiermuell, bring noch schnell dein Papier raus +{% endif %} +{% if states("calendar.abfall_restmuell") == "on" %} +Ausserdem ist heute Restmuell. +{% endif -%} + +{% if ( outside < inside ) and ( outside > 18 ) %} +Draussen ist es gerade {{ ((inside - outside) | round(1) )}} gerade kühler +{% endif -%} + +{% set current_count = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_count") %} +{% for i in range(current_count) %} +{% set idx = i + 1 %} + {% set headline = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_headline") %} + {% set description = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_description") %} + {% set level = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_level") %} + {% set time_start = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_start") %} + {% set time_end = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_end") %} +Wetterwarnung {{idx}}: {{ headline }} Stufe {{level}} von {{ time_start.strftime("%H:%M") ~ " bis " ~ time_end.strftime("%H:%M") }} Uhr + +{{ description }} +{% endfor %} + +{% if is_friday %} +Endlich ist Freitag! +{% endif -%} diff --git a/makefu/2configs/home/ham/lib/default.nix b/makefu/2configs/home/ham/lib/default.nix index cf1c32abd..0d89d1e9e 100644 --- a/makefu/2configs/home/ham/lib/default.nix +++ b/makefu/2configs/home/ham/lib/default.nix @@ -27,12 +27,11 @@ in #} { delay.seconds = 1; } { delay = '' - {% set duration = state_attr("${entity}","media_duration") %} - {% set seconds = duration % 60 %} + {% set duration = state_attr("${entity}","media_duration") or 0 %} + {% set seconds = (duration % 60 ) %} {% set minutes = (duration / 60)|int % 60 %} {% set hours = (duration / 3600)|int %} {{ "%02i:%02i:%02i"|format(hours, minutes, seconds)}} - ''; } { diff --git a/makefu/2configs/home/ham/light/wohnzimmer.nix b/makefu/2configs/home/ham/light/wohnzimmer.nix index 554d1f8ce..7fc7af038 100644 --- a/makefu/2configs/home/ham/light/wohnzimmer.nix +++ b/makefu/2configs/home/ham/light/wohnzimmer.nix @@ -6,10 +6,30 @@ let wohnzimmer_deko = [ "light.wohnzimmer_fernseher_led_strip" # led um fernseher "light.wohnzimmer_lichterkette_led_strip" # led um fernsehwand - "light.kinderzimmer_lichterkette_licht" # led um fenster + "light.wohnzimmer_fenster_lichterkette_licht" # led um fenster ]; in { imports = [ ./tint_wohnzimmer.nix ]; + services.home-assistant.config.scene = [ + { name = "Wohnzimmer Abendlicht"; + id = "living_room_evening"; + entities = { + "light.wohnzimmer_komode_osram_light" = { + state = "on"; + brightness = 128; + }; + "light.wohnzimmer_schrank_osram_light" = { + state = "on"; + brightness = 128; + }; + "light.wohnzimmer_fenster_lichterkette_licht" = "on"; + "light.wohnzimmer_fernseher_led_strip" = { + state = "on"; + }; + }; + + } + ]; services.home-assistant.config.wled = {}; services.home-assistant.config.light = [ { @@ -22,6 +42,11 @@ in { name = "Wohnzimmer Deko"; entities = wohnzimmer_deko; } + { + platform = "group"; + name = "living_room_lights"; + entities = wohnzimmerbeleuchtung ++ wohnzimmer_deko; + } ]; } diff --git a/makefu/2configs/home/ham/media/firetv.nix b/makefu/2configs/home/ham/media/firetv.nix index fc33346cd..e2ac1ef76 100644 --- a/makefu/2configs/home/ham/media/firetv.nix +++ b/makefu/2configs/home/ham/media/firetv.nix @@ -3,11 +3,11 @@ let in { services.home-assistant.config = { notify = [ - { - platform = "nfandroidtv"; - name = "FireTV Wohnzimmer Notification"; - host = firetv_stick; - } + #{ + #platform = "nfandroidtv"; + #name = "FireTV Wohnzimmer Notification"; + #host = firetv_stick; + #} ]; media_player = [ #{ @@ -16,12 +16,12 @@ in { # host = firetv_stick; #} # Configuration needs to be done by hand via web interface "integration" - { platform = "androidtv"; - name = "FireTV Stick Android"; - device_class = "firetv"; - host = firetv_stick; - port = 5555; - } + #{ platform = "androidtv"; + # name = "FireTV Stick Android"; + # device_class = "firetv"; + # host = firetv_stick; + # port = 5555; + #} ]; }; } diff --git a/makefu/2configs/home/ham/mqtt.nix b/makefu/2configs/home/ham/mqtt.nix index 5e668e7a0..9c4b4147e 100644 --- a/makefu/2configs/home/ham/mqtt.nix +++ b/makefu/2configs/home/ham/mqtt.nix @@ -5,7 +5,7 @@ services.mosquitto = { enable = true; persistence = false; - settings.max_keepalive = 60; + settings.max_keepalive = 1060; listeners = [ { port = 1883; diff --git a/makefu/2configs/home/ham/multi/kurzzeitwecker.nix b/makefu/2configs/home/ham/multi/kurzzeitwecker.nix index a0748e205..1e6fae90c 100644 --- a/makefu/2configs/home/ham/multi/kurzzeitwecker.nix +++ b/makefu/2configs/home/ham/multi/kurzzeitwecker.nix @@ -9,128 +9,80 @@ let button = "sensor.zigbee_btn2_click"; notify = "notify.signal_home"; + # für {{ _intent.siteId }} - name of the rhasspy instance: arbeitszimmer in { services.home-assistant.config = { - timer.kurzzeitwecker = - { - name = "Zigbee Kurzzeitwecker"; - duration = 300; + automation = []; + timer.kurzzeitwecker = { + name = "Wecker Wohnung"; }; - script.add_5_minutes_to_kurzzeitwecker = - { - alias = "Add 5 minutes to kurzzeitwecker"; - sequence = [ - { service = "timer.pause"; - entity_id = "timer.kurzzeitwecker"; - } - { service = "timer.start"; - data_template = { - entity_id = "timer.kurzzeitwecker"; - duration = '' - {% set r = state_attr('timer.kurzzeitwecker', 'remaining') ~ '-0000' %} - {% set t = strptime(r, '%H:%M:%S.%f%z') %} - {{ (as_timestamp(t) + 300) | timestamp_custom('%H:%M:%S', false) }} - ''; - }; - } - ]; + timer.wecker_arbeitszimmer = { + name = "Wecker Arbeitszimmer"; }; - automation = - [ - { - alias = "Start Timer 5min"; - trigger = { - platform = "state"; - entity_id = button; - to = "single"; - }; - condition = - { condition = "state"; - entity_id = "timer.kurzzeitwecker"; - state = "idle"; - }; - + timer.wecker_wohnzimmer = { + name = "Wecker Wohnzimmer"; + }; + intent = {}; + intent_script = { + TimerjobStart = { + speech.text = '' + {% set h = hours|default('0')|string %} + {% set m = minutes|default('0')|string %} + {% if h == "0" %} + Wecker gestellt {{ m }} Minuten + {% elif m == "0" %} + Wecker gestellt {{ h }} Stunden + {% else %} + Wecker gestellt {{ h }} Stunden und {{ m }} Minuten + {% endif %} + ''; action = [ - { service = "timer.start"; - entity_id = "timer.kurzzeitwecker"; - data.duration = "00:05:00"; - } { - service = notify; - data.message = "Timer gestartet {{state_attr('timer.kurzzeitwecker', 'remaining') }}, verbleibend "; - } - ]; - } - { - alias = "Add Timer 5min"; - trigger = { - platform = "state"; - entity_id = button; - to = "single"; - }; - condition = - { condition = "state"; - entity_id = "timer.kurzzeitwecker"; - state = "active"; - }; + service = "timer.start"; + + data.entity_id = "timer.kurzzeitwecker"; + data.duration = '' + {% set h = hours|default("0")|int %} + {% set m = minutes|default("0")|int %} + {{ "%02d" | format(h) }}:{{ "%02d" | format(m) }}:00 + ''; - action = [ - { service = "homeassistant.turn_on"; - entity_id = "script.add_5_minutes_to_kurzzeitwecker"; - } - { - service = notify; - data.message = ''Timer um 5 minuten verlängert, {{ state_attr('timer.kurzzeitwecker', 'remaining') | truncate(9,True," ") }} verbleibend ''; } ]; - } - { - alias = "Stop timer on double click"; - trigger = [ - { - platform = "state"; - entity_id = button; - to = "double"; - } - { - platform = "state"; - entity_id = button; - to = "triple"; - } - ]; - condition = - { - condition = "state"; - entity_id = "timer.kurzzeitwecker"; - state = "active"; - }; - + }; + TimerjobRemaining = { + speech.text = '' + {% set timer = states('timer.kurzzeitwecker') %} + {% if timer == 'idle' %} + Wecker läuft nicht + {% elif timer == 'active' %} + {% set remaining = as_timestamp( state_attr('timer.kurzzeitwecker','finishes_at') )-( as_timestamp(now())) %} + {% set s = ((remaining % 60)) | int %} + {% set m = ((remaining % 3600) / 60) | int %} + {% set h = ((remaining % 86400) / 3600) | int %} + {% if h == 0 %} + Es verbleiben {{ m }} Minuten und {{ s }} Sekunden + {% elif m == 0 %} + Es verbleiben {{ h }} Stunden + {% elif m == 0 and h == 0 %} + Es verbleiben {{ s }} Sekunden + {% else %} + Es verbleiben {{ h }} Stunden {{ m }} Minuten + {% endif %} + {% endif %} + ''; + }; + TimerjobStop = { + speech.text = '' + Wecker gestoppt + ''; action = [ - { - service = "timer.cancel"; - entity_id = "timer.kurzzeitwecker"; - } - { - service = notify; - data.message = "Timer gestoppt, abgebrochen"; + { service = "timer.cancel"; + data.entity_id = "timer.kurzzeitwecker"; } ]; - } - { - alias = "Timer Finished"; - trigger = { - platform = "event"; - event_type = "timer.finished"; - event_data.entity_id = "timer.kurzzeitwecker"; - }; - action = [ - { - service = notify; - data.message = "Timer beendet"; - } - ]; - } - ]; + }; + }; }; } diff --git a/makefu/2configs/home/ham/sensor/outside.nix b/makefu/2configs/home/ham/sensor/outside.nix index e7467617b..061c4e981 100644 --- a/makefu/2configs/home/ham/sensor/outside.nix +++ b/makefu/2configs/home/ham/sensor/outside.nix @@ -40,5 +40,16 @@ { platform = "accuweather"; api_key = "!secret accuweather"; } + { platform = "scrape"; + resource = "https://www.swr.de/wetter/wetter-liste-swr-100.html"; + name = "SWR Prognose"; + select = "p[data-refresh=\"weather-headline\"]"; + } + { platform = "scrape"; + resource = "https://www.swr.de/wetter/wetter-liste-swr-100.html"; + name = "SWR Prognose Langtext"; + select = "p[data-refresh=\"weather-text\"]"; + } + ]; } diff --git a/makefu/2configs/home/jellyfin.nix b/makefu/2configs/home/jellyfin.nix index acfdb2599..e613a05fc 100644 --- a/makefu/2configs/home/jellyfin.nix +++ b/makefu/2configs/home/jellyfin.nix @@ -1,66 +1,34 @@ { lib, config, ... }: +let + port = 8096; +in { services.jellyfin.enable = true; - services.jellyfin.openFirewall = true; + # services.jellyfin.openFirewall = true; + networking.firewall.interfaces.wiregrill = { + allowedTCPPorts = [ 80 port 8920 ]; + allowedUDPPorts = [ 1900 7359 ]; + }; state = [ "/var/lib/jellyfin" ]; users.users.${config.services.jellyfin.user}.extraGroups = [ "download" "video" "render" ]; systemd.services.jellyfin = { - after = [ "media-cloud.mount" ]; serviceConfig = rec { + RequiresMountFor = [ "/media/cloud" ]; SupplementaryGroups = lib.mkForce [ "video" "render" "download" ]; UMask = lib.mkForce "0077"; - - - Type = lib.mkForce "simple"; - StateDirectory = lib.mkForce "jellyfin"; - StateDirectoryMode = lib.mkForce "0700"; - CacheDirectory = lib.mkForce "jellyfin"; - CacheDirectoryMode = lib.mkForce "0700"; - WorkingDirectory = lib.mkForce "/var/lib/jellyfin"; - Restart = lib.mkForce "on-failure"; - TimeoutSec = lib.mkForce 15; - SuccessExitStatus = lib.mkForce ["0" "143"]; - - # Security options: - NoNewPrivileges = lib.mkForce true; - SystemCallArchitectures = lib.mkForce "native"; - # AF_NETLINK needed because Jellyfin monitors the network connection - RestrictAddressFamilies = lib.mkForce [ "AF_UNIX" "AF_INET" "AF_INET6" "AF_NETLINK" ]; - RestrictNamespaces = lib.mkForce false; - RestrictRealtime = lib.mkForce true; - RestrictSUIDSGID = lib.mkForce true; - ProtectControlGroups = lib.mkForce false; - ProtectHostname = lib.mkForce true; - ProtectKernelLogs = lib.mkForce false; - ProtectKernelModules = lib.mkForce false; - ProtectKernelTunables = lib.mkForce false; - LockPersonality = lib.mkForce true; - PrivateTmp = lib.mkForce false; - # needed for hardware accelaration - PrivateDevices = lib.mkForce false; - PrivateUsers = lib.mkForce true; - RemoveIPC = lib.mkForce true; - - SystemCallFilter = lib.mkForce [ - "~@clock" - "~@aio" - "~@chown" - "~@cpu-emulation" - "~@debug" - "~@keyring" - "~@memlock" - "~@module" - "~@mount" - "~@obsolete" - "~@privileged" - "~@raw-io" - "~@reboot" - "~@setuid" - "~@swap" - ]; - SystemCallErrorNumber = lib.mkForce "EPERM"; }; }; + services.nginx.virtualHosts."jelly" = { + serverAliases = [ + "jelly.lan" "movies.lan" + "jelly.makefu.w" "makefu.omo.w" + ]; + + locations."/" = { + proxyPass = "http://localhost:${toString port}"; + proxyWebsockets = true; + }; + }; } diff --git a/makefu/2configs/home/music.nix b/makefu/2configs/home/music.nix index f3b9f50f1..b32af6207 100644 --- a/makefu/2configs/home/music.nix +++ b/makefu/2configs/home/music.nix @@ -9,8 +9,7 @@ in MusicFolder = "/media/cryptX/music/kinder"; Address = "0.0.0.0"; }; - systemd.services.navidrome.after = [ "media-cryptX.mount" "cryptsetup.target" -"local-fs.target" "remote-fs.target" ]; + systemd.services.navidrome.serviceConfig.RequiresMountFor = [ "/media/cryptX" ]; state = [ "/var/lib/navidrome" ]; # networking.firewall.allowedTCPPorts = [ 4040 ]; diff --git a/makefu/2configs/home/photoprism.nix b/makefu/2configs/home/photoprism.nix index 1cd04fd9a..2f8a86430 100644 --- a/makefu/2configs/home/photoprism.nix +++ b/makefu/2configs/home/photoprism.nix @@ -70,15 +70,18 @@ in PHOTOPRISM_HTTP_PORT = port; # Built-in Web server port PHOTOPRISM_HTTP_COMPRESSION = "gzip"; # Improves transfer speed and bandwidth utilization (none or gzip) PHOTOPRISM_DEBUG = "false"; # Run in debug mode (shows additional log messages) - PHOTOPRISM_PUBLIC = "true"; # No authentication required (disables password protection) + # PHOTOPRISM_PUBLIC = "true"; # No authentication required (disables password protection) PHOTOPRISM_READONLY = "false"; # Don't modify originals directory (reduced functionality) PHOTOPRISM_EXPERIMENTAL = "true"; # Enables experimental features - PHOTOPRISM_DISABLE_WEBDAV = "false"; # Disables built-in WebDAV server + # PHOTOPRISM_DISABLE_WEBDAV = "false"; # Disables built-in WebDAV server PHOTOPRISM_DISABLE_SETTINGS = "false"; # Disables Settings in Web UI PHOTOPRISM_DISABLE_TENSORFLOW = "false"; # Disables using TensorFlow for image classification PHOTOPRISM_DARKTABLE_PRESETS = "false"; # Enables Darktable presets and disables concurrent RAW conversion PHOTOPRISM_DETECT_NSFW = "false"; # Flag photos as private that MAY be offensive (requires TensorFlow) PHOTOPRISM_UPLOAD_NSFW = "true"; # Allow uploads that MAY be offensive + PHOTOPRISM_AUTH_MODE = "password"; + PHOTOPRISM_ADMIN_USER = "admin"; + PHOTOPRISM_ADMIN_PASSWORD = "admin"; #PHOTOPRISM_DATABASE_DRIVER = "postgres"; #PHOTOPRISM_DATABASE_SERVER = "postgres-prism:5432"; 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; + }; + }; +} diff --git a/makefu/2configs/home/zigbee2mqtt/default.nix b/makefu/2configs/home/zigbee2mqtt/default.nix index 1c4582ed5..8bb8a929b 100644 --- a/makefu/2configs/home/zigbee2mqtt/default.nix +++ b/makefu/2configs/home/zigbee2mqtt/default.nix @@ -32,6 +32,10 @@ in include_device_information = true; client_id = "zigbee2mqtt"; }; + availability = { + active.timeout = 10; + passive.timeout = 1500; + }; frontend = { port = webport; }; -- cgit v1.2.3 From 715cae5a3a5d4d08e647e006cabb3086eef3c91a Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:29:51 +0200 Subject: ma bgt: update template for pad --- makefu/2configs/audio/jack-on-pulse.nix | 52 --------------------------------- makefu/2configs/bgt/template.md | 2 +- 2 files changed, 1 insertion(+), 53 deletions(-) delete mode 100644 makefu/2configs/audio/jack-on-pulse.nix (limited to 'makefu/2configs') diff --git a/makefu/2configs/audio/jack-on-pulse.nix b/makefu/2configs/audio/jack-on-pulse.nix deleted file mode 100644 index e18b2192a..000000000 --- a/makefu/2configs/audio/jack-on-pulse.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ config, pkgs, ... }: -let - pulse = pkgs.pulseaudioFull; - user = config.makefu.gui.user; - wait_time = 30; -in -{ - sound.enable = true; - hardware.pulseaudio = { - enable = true; - package = pulse; - }; - - environment.systemPackages = with pkgs; [ - jack2Full - jack_capture - ]; - # from http://anderspapitto.com/posts/2015-11-26-overtone-on-nixos-with-jack-and-pulseaudio.html - - systemd.user.services = { - jackdbus = { - description = "Runs jack, and points pulseaudio at it"; - serviceConfig = { - Type = "oneshot"; - ExecStart = pkgs.writeScript "start_jack.sh" '' - #! ${pkgs.bash}/bin/bash - . ${config.system.build.setEnvironment} - - # TODO: correctly wait for pulseaudio, cannot use pulseaudio.service - sleep ${toString wait_time} # wait for the gui to load - - ${pkgs.jack2Full}/bin/jack_control start - sleep 3 # give some time for sources/sinks to be created - - ${pulse}/bin/pacmd set-default-sink jack_out - ${pulse}/bin/pacmd set-default-source jack_in - ''; - ExecStop = pkgs.writeScript "stop_jack.sh" '' - #! ${pkgs.bash}/bin/bash - . ${config.system.build.setEnvironment} - - ${pkgs.jack2Full}/bin/jack_control stop - ''; - RemainAfterExit = true; - Restart = "always"; - RestartSec = "5"; - }; - after = [ "display-manager.service" "sound.target" ]; - wantedBy = [ "default.target" ]; - }; - }; -} diff --git a/makefu/2configs/bgt/template.md b/makefu/2configs/bgt/template.md index 1dfb0b42f..be21d7c0c 100644 --- a/makefu/2configs/bgt/template.md +++ b/makefu/2configs/bgt/template.md @@ -2,7 +2,7 @@ 0. Sendung twittern und mastodieren (eine Woche + eine Stunde vorher) von Ingo/l33tname (wichtig) 1. `eine` Person anrufen (den Host): - - markus 162dcbf89f@studio.link + - markus madmas@studio.link - Felix1 makefu@studio.link - L33tFelix l33tname@studio.link - Ingo ingo@studio.link -- cgit v1.2.3 From de4d660830de2d43f5989ad1095e100a79913714 Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:30:09 +0200 Subject: ma bitlbee: add mastodon plugin --- makefu/2configs/bitlbee.nix | 1 + 1 file changed, 1 insertion(+) (limited to 'makefu/2configs') diff --git a/makefu/2configs/bitlbee.nix b/makefu/2configs/bitlbee.nix index 21626d406..ede6225ea 100644 --- a/makefu/2configs/bitlbee.nix +++ b/makefu/2configs/bitlbee.nix @@ -3,6 +3,7 @@ services.bitlbee = { enable = true; # libpurple_plugins = [ pkgs.telegram-purple pkgs.pidgin-skypeweb]; + plugins = [ pkgs.bitlbee-mastodon ]; }; users.users.makefu.packages = with pkgs; [ weechat tmux ]; state = [ "/var/lib/bitlbee" ]; -- cgit v1.2.3 From 5c2db89879af2b43a44c4e9b276cd6895ce7e182 Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:30:37 +0200 Subject: ma default: add flakes and nix-command flags --- makefu/2configs/default.nix | 1 + 1 file changed, 1 insertion(+) (limited to 'makefu/2configs') diff --git a/makefu/2configs/default.nix b/makefu/2configs/default.nix index 2bfb42732..b54e32a82 100644 --- a/makefu/2configs/default.nix +++ b/makefu/2configs/default.nix @@ -31,6 +31,7 @@ with import ; }; }; nix.settings.trusted-users = [ config.krebs.build.user.name ]; + nix.settings.experimental-features = [ "flakes" "nix-command" ]; boot.kernelPackages = lib.mkDefault pkgs.linuxPackages; -- cgit v1.2.3 From f991e39660ea548fdb4f58a8b7a3fe472f2b5a7e Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:31:21 +0200 Subject: ma rss: update feeds --- makefu/2configs/deployment/feed.euer.krebsco.de/filter.yml | 12 ------------ makefu/2configs/deployment/rss/rss.euer.krebsco.de.nix | 4 ++++ 2 files changed, 4 insertions(+), 12 deletions(-) (limited to 'makefu/2configs') diff --git a/makefu/2configs/deployment/feed.euer.krebsco.de/filter.yml b/makefu/2configs/deployment/feed.euer.krebsco.de/filter.yml index 50058f32b..29e5e714a 100644 --- a/makefu/2configs/deployment/feed.euer.krebsco.de/filter.yml +++ b/makefu/2configs/deployment/feed.euer.krebsco.de/filter.yml @@ -26,18 +26,6 @@ zipcode: 70378 q: Werkbank distance: 5 -- name: Stirnthermometer - zipcode: 70378 - q: Stirnthermometer - distance: 5 -- name: Ohrthermometer - zipcode: 70378 - q: Ohrthermometer - distance: 5 -- name: Fieberthermometer - zipcode: 70378 - q: Fieberthermometer - distance: 5 - name: Einhell zipcode: 70378 q: Einhell diff --git a/makefu/2configs/deployment/rss/rss.euer.krebsco.de.nix b/makefu/2configs/deployment/rss/rss.euer.krebsco.de.nix index 7e077d7e4..e204050b4 100644 --- a/makefu/2configs/deployment/rss/rss.euer.krebsco.de.nix +++ b/makefu/2configs/deployment/rss/rss.euer.krebsco.de.nix @@ -16,6 +16,10 @@ in { enable = true; databases = [ config.services.tt-rss.database.name ]; }; + systemd.services.tt-rss.serviceConfig = { + Restart = lib.mkForce "always"; + }; + systemd.services.postgresqlBackup-tt_rss.serviceConfig.SupplementaryGroups = [ "download" ]; services.nginx.virtualHosts."${fqdn}" = { -- cgit v1.2.3 From 6eef01862db8ec43fc34baa6c7a5fcf902d02816 Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:32:00 +0200 Subject: ma nextcloud: try harder to start nextcloud after cloud mount i will probably never get this right... --- makefu/2configs/deployment/owncloud.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'makefu/2configs') diff --git a/makefu/2configs/deployment/owncloud.nix b/makefu/2configs/deployment/owncloud.nix index 36c67c7f0..8e5e71f11 100644 --- a/makefu/2configs/deployment/owncloud.nix +++ b/makefu/2configs/deployment/owncloud.nix @@ -59,7 +59,7 @@ systemd.services.postgresqlBackup-nextcloud.serviceConfig.SupplementaryGroups = users.users.nextcloud.extraGroups = [ "download" ]; services.nextcloud = { enable = true; - package = pkgs.nextcloud24; + package = pkgs.nextcloud25; hostName = "o.euer.krebsco.de"; # Use HTTPS for links https = true; @@ -97,5 +97,11 @@ systemd.services.postgresqlBackup-nextcloud.serviceConfig.SupplementaryGroups = systemd.services."nextcloud-setup" = { requires = ["postgresql.service"]; after = ["postgresql.service"]; + serviceConfig.RequiresMountFor = [ "/media/cloud" ]; }; + systemd.services."phpfpm-nextcloud".serviceConfig.RequiresMountFor = [ + "/media/cloud" + "/var/lib/nextcloud/data" + ]; + systemd.services."phpfpm".serviceConfig.RequiresMountFor = [ "/media/cloud" ]; } -- cgit v1.2.3 From e4a2554dcf837c0963f136ce0eb2f9a544da6d29 Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:32:23 +0200 Subject: ma rss: add more urils --- makefu/2configs/deployment/rss/urls | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'makefu/2configs') diff --git a/makefu/2configs/deployment/rss/urls b/makefu/2configs/deployment/rss/urls index 3ab2538a1..cbc68ccc7 100644 --- a/makefu/2configs/deployment/rss/urls +++ b/makefu/2configs/deployment/rss/urls @@ -3,5 +3,7 @@ https://www.ebay-kleinanzeigen.de/s-stuttgart/zigbee/k0l9280 https://www.ebay-kleinanzeigen.de/s-70378/d%C3%B6rrautomat/k0l9334r5 https://www.ebay-kleinanzeigen.de/s-zu-verschenken/muehlhausen/c192l9313 https://www.ebay-kleinanzeigen.de/s-spielzeug/muehlhausen/brettspiel/k0c23l9313 -https://www.ebay-kleinanzeigen.de/s-muehlhausen/labeldrucker/k0l9313r5 https://www.ebay-kleinanzeigen.de/s-muehlhausen/dymo/k0l9313r5 +https://www.ebay-kleinanzeigen.de/s-zu-verschenken/muehlhausen/lautsprecher/k0c192l9313r5 +https://www.ebay-kleinanzeigen.de/s-muehlhausen/preis::40/winkelschleifer/k0l9313r5 +https://www.ebay-kleinanzeigen.de/s-muehlhausen/preis::40/kontaktgrill/k0l9313r5 -- cgit v1.2.3 From 1c1f9de6281c98401661d51420a7f2664ca2e787 Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:32:47 +0200 Subject: ma editor: re-add vim-addon-nix --- makefu/2configs/editor/vim.nix | 2 +- makefu/2configs/editor/vimrc | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'makefu/2configs') diff --git a/makefu/2configs/editor/vim.nix b/makefu/2configs/editor/vim.nix index f53be58ff..305f26a04 100644 --- a/makefu/2configs/editor/vim.nix +++ b/makefu/2configs/editor/vim.nix @@ -12,7 +12,7 @@ #"UltiSnips" # vim-nix handles indentation better but does not perform sanity "vim-nix" - # "vim-addon-nix" + "vim-addon-nix" "vim-better-whitespace" ]; }; diff --git a/makefu/2configs/editor/vimrc b/makefu/2configs/editor/vimrc index e24d29974..d270effa2 100644 --- a/makefu/2configs/editor/vimrc +++ b/makefu/2configs/editor/vimrc @@ -49,7 +49,6 @@ set matchtime=3 set hlsearch autocmd ColorScheme * highlight ExtraWhitespace ctermbg=red guibg=red -hi MatchParen cterm=none ctermbg=green ctermfg=blue let g:better_whitespace_enabled=1 let g:strip_whitespace_on_save=1 @@ -114,3 +113,5 @@ let g:UltiSnipsExpandTrigger = "" let g:UltiSnipsJumpForwardTrigger = "" let g:UltiSnipsJumpBackwardTrigger = "" let g:UltiSnipsListSnippets = "" "List possible snippets based on current file + +hi MatchParen cterm=none ctermbg=green ctermfg=blue -- cgit v1.2.3 From 20746ea5f4e6b31171a65aa7026d13356ce6ce68 Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:33:42 +0200 Subject: ma hw: add pseyecam,cd rip setup --- makefu/2configs/hw/cdrip.nix | 7 +++++++ makefu/2configs/hw/pseyecam.nix | 6 ++++++ 2 files changed, 13 insertions(+) create mode 100644 makefu/2configs/hw/cdrip.nix create mode 100644 makefu/2configs/hw/pseyecam.nix (limited to 'makefu/2configs') diff --git a/makefu/2configs/hw/cdrip.nix b/makefu/2configs/hw/cdrip.nix new file mode 100644 index 000000000..1c0bf9c17 --- /dev/null +++ b/makefu/2configs/hw/cdrip.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: +{ + users.users.makefu = { + extraGroups = [ "cdrom" ]; + packages = [ pkgs.glyr pkgs.abcde ]; + }; +} diff --git a/makefu/2configs/hw/pseyecam.nix b/makefu/2configs/hw/pseyecam.nix new file mode 100644 index 000000000..029ee7c9c --- /dev/null +++ b/makefu/2configs/hw/pseyecam.nix @@ -0,0 +1,6 @@ +# https://bugzilla.kernel.org/show_bug.cgi?id=198129 +{ + boot.extraModprobeConfig = '' + options snd_usb_audio ignore_ctl_error=1 + ''; +} -- cgit v1.2.3 From e55cc0644eda087ce49a854536b69cd3fd74f9af Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:34:18 +0200 Subject: ma kdeconnect: reformat --- makefu/2configs/kdeconnect.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'makefu/2configs') diff --git a/makefu/2configs/kdeconnect.nix b/makefu/2configs/kdeconnect.nix index ca025ee43..b9110dee8 100644 --- a/makefu/2configs/kdeconnect.nix +++ b/makefu/2configs/kdeconnect.nix @@ -1,6 +1,6 @@ {pkgs, ... }: { - environment.systemPackages = with pkgs; [ kdeconnect ]; - networking.firewall.allowedUDPPortRanges = [ { from = 1714; to = 1764; } ]; - networking.firewall.allowedTCPPortRanges = [ { from = 1714; to = 1764; } ]; + environment.systemPackages = with pkgs; [ kdeconnect ]; + networking.firewall.allowedUDPPortRanges = [ { from = 1714; to = 1764; } ]; + networking.firewall.allowedTCPPortRanges = [ { from = 1714; to = 1764; } ]; } -- cgit v1.2.3 From cd0e8501325fc782fc349cae65488d4843e3927b Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:34:41 +0200 Subject: ma main-laptop: remove look-up --- makefu/2configs/main-laptop.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'makefu/2configs') diff --git a/makefu/2configs/main-laptop.nix b/makefu/2configs/main-laptop.nix index a7181cfe9..0f2604b1e 100644 --- a/makefu/2configs/main-laptop.nix +++ b/makefu/2configs/main-laptop.nix @@ -12,7 +12,7 @@ let in { imports = [ ./gui/base.nix - ./gui/look-up.nix + # ./gui/look-up.nix ./fetchWallpaper.nix ./zsh-user.nix ./tools/core.nix @@ -69,7 +69,6 @@ in { }; security.sudo.extraConfig = "${config.krebs.power-action.user} ALL= (root) NOPASSWD: ${pkgs.systemd}/bin/systemctl suspend"; - services.redshift.enable = true; location.latitude = 48.7; location.longitude = 9.1; -- cgit v1.2.3 From 5ae3892b6c4d27e545bf70609e263562731d91a8 Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:35:54 +0200 Subject: ma share: try harder to start everything after cloud mount --- makefu/2configs/nginx/euer.wiki.nix | 2 ++ makefu/2configs/share/gum-client.nix | 2 +- makefu/2configs/share/hetzner-client.nix | 2 +- makefu/2configs/share/omo.nix | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) (limited to 'makefu/2configs') diff --git a/makefu/2configs/nginx/euer.wiki.nix b/makefu/2configs/nginx/euer.wiki.nix index 2f44d8cc1..a925b9f78 100644 --- a/makefu/2configs/nginx/euer.wiki.nix +++ b/makefu/2configs/nginx/euer.wiki.nix @@ -22,6 +22,8 @@ let in { state = [ base-dir ]; + # hotfix for broken wiki after reboot + systemd.services."phpfpm-euer-wiki".serviceConfig.RequiresMountFor = [ "/media/cloud" ]; services.phpfpm = { pools.euer-wiki = { inherit user group; diff --git a/makefu/2configs/share/gum-client.nix b/makefu/2configs/share/gum-client.nix index 5192ef515..09a3dd733 100644 --- a/makefu/2configs/share/gum-client.nix +++ b/makefu/2configs/share/gum-client.nix @@ -6,7 +6,7 @@ let "x-systemd.idle-timeout=300" "x-systemd.mount-timeout=60s" ]; - host = "gum"; #TODO + host = "gum.w"; #TODO in { boot.extraModprobeConfig = '' options cifs CIFSMaxBufSize=130048 diff --git a/makefu/2configs/share/hetzner-client.nix b/makefu/2configs/share/hetzner-client.nix index f7afc6d57..9713b776a 100644 --- a/makefu/2configs/share/hetzner-client.nix +++ b/makefu/2configs/share/hetzner-client.nix @@ -3,7 +3,7 @@ with ; let automount_opts = - ["nofail" "noempty" + ["nofail" ]; host = "u288834.your-storagebox.de"; in { diff --git a/makefu/2configs/share/omo.nix b/makefu/2configs/share/omo.nix index 4756ccf81..16959bc90 100644 --- a/makefu/2configs/share/omo.nix +++ b/makefu/2configs/share/omo.nix @@ -9,6 +9,7 @@ let in { # samba share /media/crypt1/share + systemd.services.samba-smbd.serviceConfig.RequiresMountFor = [ "/media/cryptX" ]; users.users.smbguest = { name = "smbguest"; uid = config.ids.uids.smbguest; -- cgit v1.2.3 From 4b2c26265d7bf37f03949b08ade932f7e174534f Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:36:09 +0200 Subject: ma shiori: use new service --- makefu/2configs/shiori.nix | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) (limited to 'makefu/2configs') diff --git a/makefu/2configs/shiori.nix b/makefu/2configs/shiori.nix index cbccdc1f5..94a5e9dc8 100644 --- a/makefu/2configs/shiori.nix +++ b/makefu/2configs/shiori.nix @@ -4,19 +4,10 @@ let statedir = "/var/lib/shiori"; in { state = [ "/var/lib/private/shiori" ]; # when using dynamicUser - systemd.services.shiori = { - description = "Shiori Server"; - after = [ "network-online.target" ]; - environment = { - SHIORI_DIR = statedir; - }; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - DynamicUser = true; - StateDirectory = "shiori"; - ExecStart = "${pkgs.shiori}/bin/shiori serve -a 127.0.0.1 -p ${toString web_port}"; - PrivateTmp = true; - }; + services.shiori = { + enable = true; + port = web_port; + address = "127.0.0.1"; }; services.nginx.virtualHosts."bookmark.euer.krebsco.de" = { forceSSL = true; -- cgit v1.2.3 From c629c87df110d034c675c5287dffb83c2cb572df Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 3 Jun 2023 15:36:36 +0200 Subject: ma systemdultras: use mastodon instead of twitter for lennart --- makefu/2configs/systemdultras/ircbot.nix | 4 ++-- 1 file changed, 2 insertions(+