summaryrefslogtreecommitdiffstats
path: root/makefu
diff options
context:
space:
mode:
Diffstat (limited to 'makefu')
-rw-r--r--makefu/0tests/data/secrets/id_nixBuild0
-rw-r--r--makefu/1systems/cake/config.nix13
-rw-r--r--makefu/1systems/crapi/config.nix33
-rw-r--r--makefu/1systems/crapi/hardware-config.nix39
-rw-r--r--makefu/1systems/gum/config.nix1
-rw-r--r--makefu/1systems/gum/hardware-config.nix18
-rw-r--r--makefu/1systems/wbob/config.nix3
-rw-r--r--makefu/1systems/x/config.nix26
-rw-r--r--makefu/2configs/bureautomation/automation/10h_timer.nix147
-rw-r--r--makefu/2configs/bureautomation/automation/bureau-shutdown.nix55
-rw-r--r--makefu/2configs/bureautomation/automation/nachtlicht.nix43
-rw-r--r--makefu/2configs/bureautomation/binary_sensor/buttons.nix17
-rw-r--r--makefu/2configs/bureautomation/binary_sensor/motion.nix12
-rw-r--r--makefu/2configs/bureautomation/camera/verkehrskamera.nix14
-rw-r--r--makefu/2configs/bureautomation/hass.nix315
-rw-r--r--makefu/2configs/bureautomation/led-fader.nix (renamed from makefu/2configs/deployment/led-fader.nix)2
-rw-r--r--makefu/2configs/bureautomation/light/buzzer.nix28
-rw-r--r--makefu/2configs/bureautomation/light/statuslight.nix56
-rw-r--r--makefu/2configs/bureautomation/script/multi_blink.nix37
-rw-r--r--makefu/2configs/bureautomation/sensor/espeasy.nix31
-rw-r--r--makefu/2configs/bureautomation/sensor/influxdb.nix18
-rw-r--r--makefu/2configs/bureautomation/sensor/outside.nix25
-rw-r--r--makefu/2configs/bureautomation/switch/tasmota_switch.nix19
-rw-r--r--makefu/2configs/dict.nix1
-rw-r--r--makefu/2configs/git/cgit-retiolum.nix9
-rw-r--r--makefu/2configs/home-manager/desktop.nix9
-rw-r--r--makefu/2configs/home-manager/zsh.nix3
-rw-r--r--makefu/2configs/homeautomation/default.nix69
-rw-r--r--makefu/2configs/homeautomation/google-muell.nix16
-rw-r--r--makefu/2configs/remote-build/gum.nix15
-rw-r--r--makefu/2configs/remote-build/slave.nix1
-rw-r--r--makefu/2configs/save-diskspace.nix4
-rw-r--r--makefu/2configs/tools/core-gui.nix1
-rw-r--r--makefu/2configs/tools/core.nix2
-rw-r--r--makefu/2configs/tools/dev.nix1
-rw-r--r--makefu/2configs/tools/games.nix2
-rw-r--r--makefu/5pkgs/Fluffy/default.nix42
-rw-r--r--makefu/5pkgs/ampel/default.nix6
-rw-r--r--makefu/5pkgs/awesomecfg/default.nix3
-rw-r--r--makefu/5pkgs/awesomecfg/full.cfg1
-rw-r--r--makefu/5pkgs/init-host/default.nix47
-rw-r--r--makefu/krops.nix1
-rw-r--r--makefu/nixpkgs.json6
43 files changed, 848 insertions, 343 deletions
diff --git a/makefu/0tests/data/secrets/id_nixBuild b/makefu/0tests/data/secrets/id_nixBuild
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/makefu/0tests/data/secrets/id_nixBuild
diff --git a/makefu/1systems/cake/config.nix b/makefu/1systems/cake/config.nix
index e40042b2d..8617578f0 100644
--- a/makefu/1systems/cake/config.nix
+++ b/makefu/1systems/cake/config.nix
@@ -1,9 +1,16 @@
{ config, lib, pkgs, ... }:
-{
+let
+ primaryInterface = "eth0";
+in {
imports = [
<stockholm/makefu>
./hardware-config.nix
- <stockholm/makefu/2configs/tools/core.nix>
+ # <stockholm/makefu/2configs/tools/core.nix>
+ { environment.systemPackages = with pkgs;[ rsync screen curl git ];}
+ <stockholm/makefu/2configs/binary-cache/nixos.nix>
+ #<stockholm/makefu/2configs/support-nixos.nix>
+ <stockholm/makefu/2configs/homeautomation/default.nix>
+ <stockholm/makefu/2configs/homeautomation/google-muell.nix>
# configure your hw:
# <stockholm/makefu/2configs/save-diskspace.nix>
];
@@ -12,7 +19,7 @@
tinc.retiolum.enable = true;
build.host = config.krebs.hosts.cake;
};
-
+ networking.firewall.trustedInterfaces = [ primaryInterface ];
documentation.info.enable = false;
documentation.man.enable = false;
services.nixosManual.enable = false;
diff --git a/makefu/1systems/crapi/config.nix b/makefu/1systems/crapi/config.nix
index d96b872d5..e7c6c3666 100644
--- a/makefu/1systems/crapi/config.nix
+++ b/makefu/1systems/crapi/config.nix
@@ -1,46 +1,15 @@
{ config, pkgs, lib, ... }:
{
- # :l <nixpkgs>
- # builtins.readDir (pkgs.fetchFromGitHub { owner = "nixos"; repo = "nixpkgs-channels"; rev = "6c064e6b"; sha256 = "1rqzh475xn43phagrr30lb0fd292c1s8as53irihsnd5wcksnbyd"; })
imports = [
<stockholm/makefu>
+ ./hardware-config.nix
<stockholm/makefu/2configs>
<stockholm/makefu/2configs/tinc/retiolum.nix>
<stockholm/makefu/2configs/save-diskspace.nix>
];
krebs.build.host = config.krebs.hosts.crapi;
- # NixOS wants to enable GRUB by default
- boot.loader.grub.enable = false;
- # Enables the generation of /boot/extlinux/extlinux.conf
- boot.loader.generic-extlinux-compatible.enable = true;
-
- boot.kernelPackages = pkgs.linuxPackages_rpi;
-
- nix.binaryCaches = [ "http://nixos-arm.dezgeg.me/channel" ];
- nix.binaryCachePublicKeys = [ "nixos-arm.dezgeg.me-1:xBaUKS3n17BZPKeyxL4JfbTqECsT+ysbDJz29kLFRW0=%" ];
-
- fileSystems = {
- "/boot" = {
- device = "/dev/disk/by-label/NIXOS_BOOT";
- fsType = "vfat";
- };
- "/" = {
- device = "/dev/disk/by-label/NIXOS_SD";
- fsType = "ext4";
- };
- };
-
- system.activationScripts.create-swap = ''
- if [ ! -e /swapfile ]; then
- fallocate -l 2G /swapfile
- mkswap /swapfile
- fi
- '';
- swapDevices = [ { device = "/swapfile"; size = 2048; } ];
-
- nix.package = lib.mkForce pkgs.nixStable;
services.openssh.enable = true;
}
diff --git a/makefu/1systems/crapi/hardware-config.nix b/makefu/1systems/crapi/hardware-config.nix
new file mode 100644
index 000000000..bba31dabd
--- /dev/null
+++ b/makefu/1systems/crapi/hardware-config.nix
@@ -0,0 +1,39 @@
+{ pkgs, lib, ... }:
+{
+ #raspi1
+ boot.kernelParams = ["cma=32M" "console=ttyS0,115200n8" "console=tty0" "console=ttyS1,115200n8" ];
+
+ boot.loader.grub.enable = false;
+ boot.loader.raspberryPi.enable = true;
+ boot.loader.raspberryPi.version = 1;
+ boot.loader.raspberryPi.uboot.enable = true;
+ boot.loader.raspberryPi.uboot.configurationLimit = 1;
+ boot.loader.generationsDir.enable = lib.mkDefault false;
+ hardware.enableRedistributableFirmware = true;
+ boot.cleanTmpDir = true;
+ environment.systemPackages = [ pkgs.raspberrypi-tools ];
+ boot.kernelPackages = pkgs.linuxPackages_rpi;
+
+ nix.binaryCaches = [ "http://nixos-arm.dezgeg.me/channel" ];
+ nix.binaryCachePublicKeys = [ "nixos-arm.dezgeg.me-1:xBaUKS3n17BZPKeyxL4JfbTqECsT+ysbDJz29kLFRW0=%" ];
+
+ fileSystems = {
+ "/boot" = {
+ device = "/dev/disk/by-label/NIXOS_BOOT";
+ fsType = "vfat";
+ };
+ "/" = {
+ device = "/dev/disk/by-label/NIXOS_SD";
+ fsType = "ext4";
+ };
+ };
+
+ system.activationScripts.create-swap = ''
+ if [ ! -e /swapfile ]; then
+ fallocate -l 2G /swapfile
+ mkswap /swapfile
+ chmod 600 /swapfile
+ fi
+ '';
+ swapDevices = [ { device = "/swapfile"; size = 4096; } ];
+}
diff --git a/makefu/1systems/gum/config.nix b/makefu/1systems/gum/config.nix
index e274b4bf8..7bc06f833 100644
--- a/makefu/1systems/gum/config.nix
+++ b/makefu/1systems/gum/config.nix
@@ -84,6 +84,7 @@ in {
<stockholm/makefu/2configs/shack/events-publisher>
<stockholm/makefu/2configs/shack/gitlab-runner>
<stockholm/makefu/2configs/remote-build/slave.nix>
+ <stockholm/makefu/2configs/remote-build/aarch64-community.nix>
<stockholm/makefu/2configs/taskd.nix>
# services
diff --git a/makefu/1systems/gum/hardware-config.nix b/makefu/1systems/gum/hardware-config.nix
index 542b79fe7..857fad7aa 100644
--- a/makefu/1systems/gum/hardware-config.nix
+++ b/makefu/1systems/gum/hardware-config.nix
@@ -41,36 +41,36 @@ in {
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.devices = [ main-disk ];
- boot.initrd.kernelModules = [ "dm-raid" ];
+ boot.initrd.kernelModules = [ "dm-raid" "dm_cache" ];
boot.initrd.availableKernelModules = [
"ata_piix" "vmw_pvscsi" "virtio_pci" "sd_mod" "ahci"
"xhci_pci" "ehci_pci" "ahci" "sd_mod"
];
- boot.kernelModules = [ "dm-thin-pool" "kvm-intel" ];
+ boot.kernelModules = [ "dm-raid" "dm_cache" "dm-thin-pool" "kvm-intel" ];
hardware.enableRedistributableFirmware = true;
fileSystems."/" = {
- device = "/dev/mapper/nixos-root";
+ device = "/dev/nixos/root";
fsType = "ext4";
};
fileSystems."/var/lib" = {
- device = "/dev/mapper/nixos-lib";
+ device = "/dev/nixos/lib";
fsType = "ext4";
};
fileSystems."/var/log" = {
- device = "/dev/mapper/nixos-log";
+ device = "/dev/nixos/log";
fsType = "ext4";
};
fileSystems."/var/download" = {
- device = "/dev/mapper/nixos-download";
+ device = "/dev/nixos/download";
fsType = "ext4";
};
fileSystems."/var/www/binaergewitter" = {
- device = "/dev/mapper/nixos-binaergewitter";
+ device = "/dev/nixos/binaergewitter";
fsType = "ext4";
- options = [ "nofail" ];
+ options = [ "nofail" "x-systemd.automount" "x-systemd.device-timeout=5s" "x-systemd.mount-timeout=5s" ];
};
fileSystems."/var/lib/borgbackup" = {
- device = "/dev/mapper/nixos-backup";
+ device = "/dev/nixos/backup";
fsType = "ext4";
};
fileSystems."/boot" = {
diff --git a/makefu/1systems/wbob/config.nix b/makefu/1systems/wbob/config.nix
index 3930406b1..ab77f16dd 100644
--- a/makefu/1systems/wbob/config.nix
+++ b/makefu/1systems/wbob/config.nix
@@ -9,6 +9,7 @@ in {
imports =
[ # Include the results of the hardware scan.
<stockholm/makefu>
+ <stockholm/makefu/2configs/support-nixos.nix>
<stockholm/makefu/2configs/zsh-user.nix>
<stockholm/makefu/2configs/tools/core.nix>
# <stockholm/makefu/2configs/disable_v6.nix>
@@ -39,7 +40,6 @@ in {
<stockholm/makefu/2configs/stats/telegraf/europastats.nix>
<stockholm/makefu/2configs/stats/external/aralast.nix>
<stockholm/makefu/2configs/stats/arafetch.nix>
- <stockholm/makefu/2configs/deployment/led-fader.nix>
<stockholm/makefu/2configs/hw/mceusb.nix>
# <stockholm/makefu/2configs/stats/telegraf/bamstats.nix>
{ environment.systemPackages = [ pkgs.vlc ]; }
@@ -51,6 +51,7 @@ in {
];
}
<stockholm/makefu/2configs/bureautomation>
+ <stockholm/makefu/2configs/bureautomation/led-fader.nix>
<stockholm/makefu/2configs/bureautomation/mpd.nix>
<stockholm/makefu/2configs/bureautomation/hass.nix>
(let
diff --git a/makefu/1systems/x/config.nix b/makefu/1systems/x/config.nix
index 138735d91..de55e9e89 100644
--- a/makefu/1systems/x/config.nix
+++ b/makefu/1systems/x/config.nix
@@ -15,6 +15,13 @@
<stockholm/makefu/2configs/extra-fonts.nix>
<stockholm/makefu/2configs/tools/all.nix>
<stockholm/makefu/2configs/dict.nix>
+ #<stockholm/makefu/3modules/netboot_server.nix>
+ #{
+ # netboot_server = {
+ # network.wan = "wlp3s0";
+ # network.lan = "enp0s25";
+ # };
+ #}
<stockholm/makefu/2configs/backup/state.nix>
# <stockholm/makefu/2configs/dnscrypt/client.nix>
@@ -53,20 +60,22 @@
<stockholm/makefu/2configs/virtualisation/libvirt.nix>
<stockholm/makefu/2configs/virtualisation/docker.nix>
<stockholm/makefu/2configs/virtualisation/virtualbox.nix>
- {
- networking.firewall.allowedTCPPorts = [ 8080 ];
- networking.nat = {
- enable = true;
- externalInterface = "wlp3s0";
- internalInterfaces = [ "vboxnet0" ];
- };
- }
+ #{
+ # networking.firewall.allowedTCPPorts = [ 8080 ];
+ # networking.nat = {
+ # enable = true;
+ # externalInterface = "wlp3s0";
+ # internalInterfaces = [ "vboxnet0" ];
+ # };
+ #}
# Services
<stockholm/makefu/2configs/git/brain-retiolum.nix>
<stockholm/makefu/2configs/tor.nix>
<stockholm/makefu/2configs/vpn/vpngate.nix>
# <stockholm/makefu/2configs/buildbot-standalone.nix>
<stockholm/makefu/2configs/remote-build/aarch64-community.nix>
+ <stockholm/makefu/2configs/remote-build/gum.nix>
+ { nixpkgs.overlays = [ (self: super: super.prefer-remote-fetch self super) ]; }
# Hardware
<stockholm/makefu/2configs/hw/tp-x230.nix>
@@ -162,7 +171,6 @@
"/home/makefu/docs"
"/home/makefu/.password-store"
"/home/makefu/.secrets-pass"
- "/home/makefu/autosync/Database.kdb"
];
services.syncthing.user = lib.mkForce "makefu";
diff --git a/makefu/2configs/bureautomation/automation/10h_timer.nix b/makefu/2configs/bureautomation/automation/10h_timer.nix
new file mode 100644
index 000000000..a311d468c
--- /dev/null
+++ b/makefu/2configs/bureautomation/automation/10h_timer.nix
@@ -0,0 +1,147 @@
+[
+ { alias = "start Felix 10h";
+ trigger = {
+ platform = "state";
+ entity_id = "binary_sensor.redbutton";
+ to = "on";
+ };
+ condition = {
+ condition = "and";
+ conditions = [
+ {
+ condition = "state";
+ entity_id = "timer.felix_10h";
+ state = "idle";
+ }
+ {
+ condition = "time";
+ after = "06:00:00";
+ before = "12:00:00";
+ }
+ ];
+ };
+ action = [
+ { service = "timer.start";
+ entity_id = [ "timer.felix_10h" "timer.felix_8_30h" "timer.felix_7h" ] ;
+ }
+ { service = "homeassistant.turn_on";
+ entity_id = [
+ "script.buzz_red_led_fast"
+ "script.blitz_10s"
+ ];
+ }
+ { service = "light.turn_on";
+ data = {
+ effect = "2";
+ entity_id = [ "light.status_felix" ];
+ };
+ }
+ ];
+ }
+
+ { alias = "Disable Felix timer at button press";
+ trigger = {
+ platform = "state";
+ entity_id = "binary_sensor.redbutton";
+ to = "on";
+ };
+ condition = {
+ condition = "and";
+ conditions = [
+ {
+ condition = "state";
+ entity_id = "timer.felix_10h";
+ state = "active";
+ }
+ {
+ condition = "time";
+ after = "12:00:00";
+ before = "22:00:00";
+ }
+ ];
+ };
+ action =
+ [
+ {
+ service = "timer.cancel";
+ entity_id = [ "timer.felix_10h" "timer.felix_8_30h" "timer.felix_7h" ];
+ }
+ {
+ service = "homeassistant.turn_on";
+ entity_id = [ "script.buzz_red_led_fast" ];
+ }
+ {
+ service = "homeassistant.turn_off";
+ entity_id = [ "light.status_felix" ];
+ }
+ ];
+ }
+
+ {
+ alias = "Genug gearbeitet Felix";
+ trigger =
+ {
+ platform = "event";
+ event_type = "timer.finished";
+ event_data.entity_id = "timer.felix_7h";
+ };
+ action =
+ [
+ { service = "light.turn_on";
+ data = {
+ rgb_color= [0 255 0];
+ # effect = "0";
+ entity_id = [ "light.status_felix" ];
+ };
+ }
+ ];
+ }
+
+ {
+ alias = "nun aber nach hause";
+ trigger =
+ {
+ platform = "event";
+ event_type = "timer.finished";
+ event_data.entity_id = "timer.felix_8_30h";
+ };
+ action =
+ [
+ { service = "light.turn_on";
+ data = {
+ rgb_color= [255 255 0];
+ # effect = "0";
+ entity_id = [ "light.status_felix" ];
+ };
+ }
+ ];
+ }
+
+ {
+ alias = "Zu lange Felix!";
+ trigger =
+ {
+ platform = "event";
+ event_type = "timer.finished";
+ event_data.entity_id = "timer.felix_10h";
+ };
+ action =
+ [
+ # TODO: Pushbullet
+ {
+ service = "homeassistant.turn_on";
+ entity_id = [
+ "script.buzz_red_led"
+ "script.blitz_10s"
+ ];
+ }
+ { service = "light.turn_on";
+ data = {
+ rgb_color= [255 0 0];
+ effect = "0";
+ entity_id = [ "light.status_felix" ];
+ };
+ }
+ ];
+ }
+]
diff --git a/makefu/2configs/bureautomation/automation/bureau-shutdown.nix b/makefu/2configs/bureautomation/automation/bureau-shutdown.nix
new file mode 100644
index 000000000..9e6574300
--- /dev/null
+++ b/makefu/2configs/bureautomation/automation/bureau-shutdown.nix
@@ -0,0 +1,55 @@
+[
+ { alias = "Turn on Fernseher on movement";
+ trigger = {
+ platform = "state";
+ entity_id = "binary_sensor.motion";
+ to = "on";
+ };
+ action = {
+ service = "homeassistant.turn_on";
+ entity_id = [
+ "switch.fernseher"
+ "switch.feuer"
+ ];
+ };
+ }
+ { alias = "Turn off Fernseher 10 minutes after last movement";
+ trigger = [
+ { # trigger when movement was detected at the time
+ platform = "state";
+ entity_id = "binary_sensor.motion";
+ to = "off";
+ for.minutes = 10;
+ }
+ { # trigger at 20:00 no matter what
+ # to avoid 'everybody left before 18:00:00'
+ platform = "time";
+ at = "18:00:00";
+ }
+ ];
+ action = {
+ service = "homeassistant.turn_off";
+ entity_id = [
+ "switch.fernseher"
+ "switch.feuer"
+ "light.status_felix"
+ ];
+ };
+ condition =
+ { condition = "and";
+ conditions = [
+ {
+ condition = "time";
+ before = "06:30:00"; #only turn off between 6:30 and 18:00
+ after = "18:00:00";
+ # weekday = [ "mon" "tue" "wed" "thu" "fri" ];
+ }
+ {
+ condition = "state";
+ entity_id = "binary_sensor.motion";
+ state = "off";
+ }
+ ];
+ };
+ }
+]
diff --git a/makefu/2configs/bureautomation/automation/nachtlicht.nix b/makefu/2configs/bureautomation/automation/nachtlicht.nix
new file mode 100644
index 000000000..066e9b06c
--- /dev/null
+++ b/makefu/2configs/bureautomation/automation/nachtlicht.nix
@@ -0,0 +1,43 @@
+[
+ {
+ alias = "Turn off Nachtlicht on sunrise";
+ trigger =
+ {
+ platform = "sun";
+ event = "sunrise";
+ };
+ action =
+ {
+ service = "homeassistant.turn_off";
+ entity_id = [ "switch.nachtlicht" ];
+ };
+ }
+
+ {
+ alias = "Turn on Nachtlicht on motion and dusk";
+ trigger =
+ {
+ platform = "state";
+ entity_id = "binary_sensor.motion";
+ to = "on";
+ };
+ condition = # 'when dark'
+ {
+ condition = "or";
+ conditions = [
+ { condition = "sun";
+ after = "sunset";
+ after_offset = "-00:45:00"; # on dusk
+ }
+ { condition = "sun";
+ before = "sunrise";
+ }
+ ];
+ };
+ action =
+ {
+ service = "homeassistant.turn_on";
+ entity_id = [ "switch.nachtlicht" ];
+ };
+ }
+]
diff --git a/makefu/2configs/bureautomation/binary_sensor/buttons.nix b/makefu/2configs/bureautomation/binary_sensor/buttons.nix
new file mode 100644
index 000000000..e23c4a362
--- /dev/null
+++ b/makefu/2configs/bureautomation/binary_sensor/buttons.nix
@@ -0,0 +1,17 @@
+let
+ tasmota_button = name: topic:
+ # detects a pushbutton press from tasmota
+ { platform = "mqtt";
+ inherit name;
+ state_topic = "/bam/${topic}/cmnd/POWER";
+ availability_topic = "/bam/${topic}/tele/LWT";
+ payload_on = "ON";
+ payload_off = "OFF";
+ payload_available= "Online";
+ payload_not_available= "Offline";
+ # expire_after = "5"; #expire after 5 seconds
+ qos = 1;
+ };
+in [
+ (tasmota_button "RedButton" "redbutton")
+]
diff --git a/makefu/2configs/bureautomation/binary_sensor/motion.nix b/makefu/2configs/bureautomation/binary_sensor/motion.nix
new file mode 100644
index 000000000..ad8fab038
--- /dev/null
+++ b/makefu/2configs/bureautomation/binary_sensor/motion.nix
@@ -0,0 +1,12 @@
+[
+ { platform = "mqtt";
+ device_class = "motion";
+ name = "Motion";
+ state_topic = "/bam/easy2/movement/Switch";
+ payload_on = "1";
+ payload_off = "0";
+ availability_topic = "/bam/easy2/tele/LWT";
+ payload_available = "Online";
+ payload_not_available = "Offline";
+ }
+]
diff --git a/makefu/2configs/bureautomation/camera/verkehrskamera.nix b/makefu/2configs/bureautomation/camera/verkehrskamera.nix
new file mode 100644
index 000000000..f2dfdcd91
--- /dev/null
+++ b/makefu/2configs/bureautomation/camera/verkehrskamera.nix
@@ -0,0 +1,14 @@
+[
+ { name = "Baumarkt";
+ platform = "generic";
+ still_image_url = http://t4915209254324-p80-c0-h6jv2afnujcoftrcstsafb45kdrqv4buy.webdirect.mdex.de/oneshotimage ;# baumarkt
+ }
+ { name = "Autobahn Heilbronn";
+ platform = "generic";
+ still_image_url = https://api.svz-bw.de/v2/verkehrskameras/kameras/K10 ;
+ }
+ { name = "Autobahn Singen";
+ platform = "generic";
+ still_image_url = https://api.svz-bw.de/v2/verkehrskameras/kameras/K11 ;
+ }
+]
diff --git a/makefu/2configs/bureautomation/hass.nix b/makefu/2configs/bureautomation/hass.nix
index b70c9b030..007d00b09 100644
--- a/makefu/2configs/bureautomation/hass.nix
+++ b/makefu/2configs/bureautomation/hass.nix
@@ -1,76 +1,5 @@
{ pkgs, lib, ... }:
let
- tasmota_rgb = name: topic:
-# LED WS2812b
-# effect_state_topic: "stat/led/Scheme"
-# effect_command_topic: "cmnd/led/Scheme"
-# effect_value_template: "{{ value_json.Scheme }}"
- { platform = "mqtt";
- inherit name;
- retain = false;
- qos = 1;
- optimistic = false;
- # state
- # TODO: currently broken, will not use the custom state topic
- state_topic = "/bam/${topic}/stat/POWER";
- command_topic = "/bam/${topic}/cmnd/POWER";
- availability_topic = "/bam/${topic}/tele/LWT";
- payload_on= "ON";
- payload_off= "OFF";
- payload_available= "Online";
- payload_not_available= "Offline";
- # brightness
- brightness_state_topic = "/bam/${topic}/stat/Dimmer";
- brightness_command_topic = "/bam/${topic}/cmnd/Dimmer";
- brightness_value_template = "{{ value_json.Dimmer }}";
- brightness_scale = 100;
- # color
- rgb_state_topic = "/bam/${topic}/stat/Color";
- rgb_command_topic = "/bam/${topic}/cmnd/Color2";
- rgb_command_mode = "hex";
- rgb_command_template = "{{ '%02x%02x%02x' | format(red, green, blue)}}";
- # effects
- effect_state_topic = "/bam/${topic}/stat/Scheme";
- effect_command_topic = "/bam/${topic}/cmnd/Scheme";
- effect_value_template = "{{ value_json.Scheme }}";
- effect_list = [ 0 1 2 3 4 5 6 7 8 9 10 11 12 ];
-};
- tasmota_plug = name: topic:
- { platform = "mqtt";
- inherit name;
- state_topic = "/bam/${topic}/stat/POWER";
- command_topic = "/bam/${topic}/cmnd/POWER";
- availability_topic = "/bam/${topic}/tele/LWT";
- payload_on= "ON";
- payload_off= "OFF";
- payload_available= "Online";
- payload_not_available= "Offline";
- };
- espeasy_dht22 = name: [
- { platform = "mqtt";
- name = "${name} DHT22 Temperature";
- device_class = "temperature";
- state_topic = "/bam/${name}/dht22/Temperature";
- availability_topic = "/bam/${name}/tele/LWT";
- payload_available = "Online";
- payload_not_available = "Offline";
- }
- { platform = "mqtt";
- device_class = "humidity";
- name = "${name} DHT22 Humidity";
- state_topic = "/bam/${name}/dht22/Humidity";
- availability_topic = "/bam/${name}/tele/LWT";
- payload_available = "Online";
- payload_not_available = "Offline";
- }];
- espeasy_ds18 = name:
- { platform = "mqtt";
- name = "${name} DS18 Temperature";
- state_topic = "/bam/${name}/ds18/Temperature";
- availability_topic = "/bam/${name}/tele/LWT";
- payload_available = "Online";
- payload_not_available = "Offline";
- };
in {
networking.firewall.allowedTCPPorts = [ 8123 ];
@@ -104,90 +33,43 @@ in {
retain = true;
};
};
- switch = [
- (tasmota_plug "Bauarbeiterlampe" "plug")
- (tasmota_plug "Blitzdings" "plug2")
- (tasmota_plug "Fernseher" "plug3")
- (tasmota_plug "Feuer" "plug4")
- (tasmota_plug "Nachtlicht" "plug5")
- ];
- light = [
- (tasmota_rgb "Status Felix" "status1")
- ];
- binary_sensor = [
- { platform = "mqtt";
- device_class = "motion";
- name = "Motion";
- state_topic = "/bam/easy2/movement/Switch";
- payload_on = "1";
- payload_off = "0";
- availability_topic = "/bam/easy2/tele/LWT";
- payload_available = "Online";
- payload_not_available = "Offline";
+ switch = (import ./switch/tasmota_switch.nix);
+ light = (import ./light/statuslight.nix) ++
+ (import ./light/buzzer