diff options
Diffstat (limited to 'makefu/2configs')
54 files changed, 963 insertions, 162 deletions
diff --git a/makefu/2configs/backup/server.nix b/makefu/2configs/backup/server.nix index f157e715f..26e53b8c3 100644 --- a/makefu/2configs/backup/server.nix +++ b/makefu/2configs/backup/server.nix @@ -1,11 +1,19 @@ -{lib, ... }: +{lib,config, ... }: let hosts = lib.mapAttrsToList (f: _: lib.removeSuffix ".pub" f) (builtins.readDir ./ssh ); in { # TODO: for all enabled machines - services.borgbackup.repos = lib.genAttrs hosts (host: { - authorizedKeys = [ (builtins.readFile (./ssh + "/${host}.pub") ) ]; - path = "/var/lib/borgbackup/${host}"; - user = "borg-${host}"; - }) ; + options = { + makefu.backup.server.repo = lib.mkOption { + type = lib.types.str; + default = "/var/lib/borgbackup"; + }; + }; + config = { + services.borgbackup.repos = lib.genAttrs hosts (host: { + authorizedKeys = [ (builtins.readFile (./ssh + "/${host}.pub") ) ]; + path = "${config.makefu.backup.server.repo}/${host}"; + user = "borg-${host}"; + }) ; + }; } diff --git a/makefu/2configs/deployment/docker/etherpad.euer.krebsco.de.nix b/makefu/2configs/bgt/etherpad.euer.krebsco.de.nix index 172e69c4d..48b947c58 100644 --- a/makefu/2configs/deployment/docker/etherpad.euer.krebsco.de.nix +++ b/makefu/2configs/bgt/etherpad.euer.krebsco.de.nix @@ -6,7 +6,7 @@ in { services.nginx.virtualHosts."etherpad.euer.krebsco.de" = { # useACMEHost = "euer.krebsco.de"; extraConfig = '' - ssl_session_timeout 5m; + ssl_session_timeout 30m; ''; enableACME = true; forceSSL = true; @@ -27,7 +27,7 @@ in { # WebSocket proxying - from https://nginx.org/en/docs/http/websocket.html proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; - proxy_read_timeout 61s; + proxy_read_timeout 1799s; ''; }; docker-containers."etherpad-lite" = { diff --git a/makefu/2configs/bgt/social-to-irc.nix b/makefu/2configs/bgt/social-to-irc.nix new file mode 100644 index 000000000..ce89451c1 --- /dev/null +++ b/makefu/2configs/bgt/social-to-irc.nix @@ -0,0 +1,32 @@ +{ + # systemd.services.brockman.environment."BROCKMAN_LOG_LEVEL" = "DEBUG"; + krebs.brockman = { + enable = true; + config = { + channel = "#binaergewitter"; + irc = { + host = "irc.freenode.net"; + port = 6667; + }; + #controller = { + # nick = "brockman-systemdultras"; + # channels = []; + #}; + bots = { + bgt-mastodon-rss = { + feed = "https://jit.social/users/binaergewitter.rss"; + channels = [ "#binaergewitter" ]; + delay = 180; + notifyErrors = false; + }; + bgt-blog-rss = { + feed = "https://blog.binaergewitter.de/rss.xml"; + channels = [ "#binaergewitter" ]; + delay = 180; + notifyErrors = false; + }; + }; + }; + + }; +} diff --git a/makefu/2configs/deployment/docker/template.md b/makefu/2configs/bgt/template.md index e53bad7e8..e53bad7e8 100644 --- a/makefu/2configs/deployment/docker/template.md +++ b/makefu/2configs/bgt/template.md diff --git a/makefu/2configs/binary-cache/server.nix b/makefu/2configs/binary-cache/server.nix index 1d729b9bb..2e05fd52e 100644 --- a/makefu/2configs/binary-cache/server.nix +++ b/makefu/2configs/binary-cache/server.nix @@ -5,6 +5,7 @@ # nix-store --generate-binary-cache-key gum nix-serve.key nix-serve.pub services.nix-serve = { enable = true; + port = 5001; secretKeyFile = config.krebs.secret.files.nix-serve-key.path; }; diff --git a/makefu/2configs/bureautomation/automation/philosophische-tuer.nix b/makefu/2configs/bureautomation/automation/philosophische-tuer.nix new file mode 100644 index 000000000..8c3fed6de --- /dev/null +++ b/makefu/2configs/bureautomation/automation/philosophische-tuer.nix @@ -0,0 +1,98 @@ +{ config, pkgs, lib, ... }: + +let + short_threshold = 30; #seconds + long_threshold = 30; #minutes + sensor = "binary_sensor.buerotuer_contact"; + + # get the list of all + name = "tueraudio"; + prefix = "http://localhost:8123/local/${name}"; + audiodir = "${config.services.home-assistant.configDir}/www/${name}"; + recordrepo = pkgs.fetchFromGitHub { + owner = "makefu"; + repo = "philosophische_tuer"; + rev = "17544c6"; + sha256 = "0bm0697fyf6s05c6yw6y25cyck04rlxj1dgazkq8mfqk6756v2bq"; + }; + samples = user: lib.mapAttrsToList + (file: _: ''"${prefix}/${user}/${file}"'') + (builtins.readDir (toString ( recordrepo+ "/recordings/${user}"))); + random_tuerspruch = ''{{'' + (lib.concatStringsSep "," ((samples "Felix") ++ (samples "Sofia") ++ (samples "Markus"))) + ''| random}}''; # TODO read from derivation +in +{ + systemd.services.copy-philosophische-tuersounds = { + description = "copy philosophische tuer"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "oneshot"; + ExecStart = pkgs.writeDash "update-samples" '' + rm -rf "${audiodir}" + cp -vr "${recordrepo}/recordings" "${audiodir}" + ''; + }; + }; + services.home-assistant.config = { + media_extractor = { }; + script."philosophische_tuer" = { + alias = "Durchsage der philosophischen Tür"; + sequence = [ + { service = "media_player.play_media"; + data = { + entity_id = "media_player.mpd"; + media_content_type = "playlist"; + media_content_id = "ansage"; + }; + } + { delay.seconds = 5; } + { service = "media_extractor.play_media"; + entity_id = "media_player.mpd"; + data_template = { + media_content_id = random_tuerspruch; + media_content_type = "MUSIC"; + }; + } + ]; + }; + automation = + [ + { + alias = "Tür offen seit ${toString short_threshold} sekunden"; + trigger = + { platform = "state"; + entity_id = sensor; + to = "on"; + for.seconds = 60; + }; + action = [ + { service = "homeassistant.turn_on"; + entity_id = "script.philosophische_tuer"; + } + ]; + } + { + alias = "Tür offen seit ${toString long_threshold} minuten"; + trigger = + { platform = "state"; + entity_id = sensor; + to = "on"; + for.minutes = long_threshold; + }; + + action = [ + { service = "homeassistant.turn_on"; + entity_id = "script.philosophische_tuer" ; + } + { service = "tts.google_say"; + entity_id = "media_player.mpd"; + data_template = { + message = "BEEP BOOP - Die Tür ist schon seit ${toString long_threshold} Minuten offen! Student Nummer {{ range(1,500) | random }}, bitte schliesse die Tür"; + language = "de"; + }; + } + ]; + } + ]; + }; + +} diff --git a/makefu/2configs/bureautomation/default.nix b/makefu/2configs/bureautomation/default.nix index 7e8b6a4d3..7eb297879 100644 --- a/makefu/2configs/bureautomation/default.nix +++ b/makefu/2configs/bureautomation/default.nix @@ -1,12 +1,15 @@ { config, pkgs, lib, ... }: let kodi-host = "192.168.8.11"; + unstable = import <nixpkgs-unstable> {}; in { imports = [ ./ota.nix ./comic-updater.nix ./puppy-proxy.nix + ./zigbee2mqtt + # hass config ## complex configs ./multi/daily-standup.nix @@ -39,15 +42,26 @@ in { ./automation/bureau-shutdown.nix ./automation/nachtlicht.nix ./automation/schlechteluft.nix + ./automation/philosophische-tuer.nix ./automation/hass-restart.nix ./device_tracker/openwrt.nix ./person/team.nix ]; + networking.firewall.allowedTCPPorts = [ 8123 ]; state = [ "/var/lib/hass/known_devices.yaml" ]; services.home-assistant = { enable = true; + package = (unstable.home-assistant.overrideAttrs (old: { + doInstallCheck = false; + })).override { + extraPackages = p: [ + # TODO: put somewhere else + (p.callPackage <stockholm/makefu/2configs/home/ham/deps/dwdwfsapi.nix> {}) + (p.callPackage <stockholm/makefu/2configs/home/ham/deps/pykodi.nix> {}) + p.APScheduler ]; + }; autoExtraComponents = true; config = { config = {}; @@ -109,13 +123,13 @@ in { name = "wbob-kodi"; host = kodi-host; } - { - platform = "telegram"; - name = "telegrambot"; - chat_id = builtins.elemAt - (builtins.fromJSON (builtins.readFile - <secrets/hass/telegram-bot.json>)).allowed_chat_ids 0; - } + #{ + # platform = "telegram"; + # name = "telegrambot"; + # chat_id = builtins.elemAt + # (builtins.fromJSON (builtins.readFile + # <secrets/hass/telegram-bot.json>)).allowed_chat_ids 0; + #} ]; media_player = [ { platform = "kodi"; @@ -126,7 +140,7 @@ in { } ]; - sensor = [{ platform = "version"; }]; # pyhaversion + # sensor = [{ platform = "version"; }]; # pyhaversion @@ -148,113 +162,16 @@ in { api_key = builtins.readFile <secrets/hass/voicerss.apikey>; language = "de-de"; } - { platform = "picotts"; - language = "de-DE"; - } + #{ platform = "picotts"; + # language = "de-DE"; + #} ]; recorder = {}; sun = {}; - telegram_bot = [ - (builtins.fromJSON - (builtins.readFile <secrets/hass/telegram-bot.json>)) - ]; - group = - { default_view = - { view = "yes"; - entities = [ - "group.sensors" - "group.camera" - "group.outside" - "group.team" - "group.nachtlicht" - "group.switches" - "group.aramark" - ]; - }; - automation = []; - - switches = [ - "switch.bauarbeiterlampe" - "switch.blitzdings" - "switch.fernseher" - "switch.feuer" - "switch.frosch_blasen" - "light.status_felix" - # "light.status_daniel" - # "light.buslicht" - ]; - team = [ - "person.thorsten" - #"device_tracker.thorsten_phone" - "person.felix" - "person.ecki" - "person.daniel" - # "person.carsten" - "person.thierry" - "person.frank" - "person.emeka" - "person.tancrede" - #"device_tracker.felix_phone" - #"device_tracker.ecki_tablet" - #"device_tracker.daniel_phone" - #"device_tracker.carsten_phone" - #"device_tracker.thierry_phone" - #"device_tracker.frank_phone" - #"device_tracker.emeka_phone" - # "person.thorsten" - # "person.felix" - # "person.ecki" - # "person.daniel" - ]; - camera = [ - "camera.Baumarkt" - "camera.Autobahn_Heilbronn" - "camera.Autobahn_Singen" - "camera.puppies" - "camera.poorly_drawn_lines" - "camera.xkcd" - ]; - nachtlicht = [ - "switch.nachtlicht_a" - "switch.nachtlicht_b" - "switch.nachtlicht_c" - "switch.nachtlicht_d" - ]; - Aramark = [ - "binary_sensor.pommes" - "sensor.menu_1" - "sensor.menu_1_text" - "sensor.menu_1_preis" - "sensor.menu_2" - "sensor.menu_2_text" - "sensor.menu_2_preis" - "sensor.aktion" - "sensor.aktion_text" - "sensor.aktion_preis" - "sensor.mercato" - "sensor.mercato_text" - "sensor.mercato_preis" - ]; - sensors = [ - "media_player.kodi" - "timer.felix_10h" - "timer.frank_10h" - "sensor.easy2_dht22_humidity" - "sensor.easy2_dht22_temperature" - "sensor.air_quality" - # "binary_sensor.aramark_pommes" - # "binary_sensor.redbutton" - ]; - outside = [ - # "sensor.ditzingen_pm10" - # "sensor.ditzingen_pm25" - "sensor.dark_sky_temperature" - "sensor.dark_sky_humidity" - "sensor.dark_sky_uv_index" - # "sensor.dark_sky_pressure" - "sensor.dark_sky_hourly_summary" - ]; - }; + #telegram_bot = [ + # (builtins.fromJSON + # (builtins.readFile <secrets/hass/telegram-bot.json>)) + #]; # only for automation # feedreader.urls = [ "http://www.heise.de/security/rss/news-atom.xml" ]; # we don't use imports because the expressions do not merge in diff --git a/makefu/2configs/bureautomation/device_tracker/openwrt.nix b/makefu/2configs/bureautomation/device_tracker/openwrt.nix index 6b0144129..b597548ef 100644 --- a/makefu/2configs/bureautomation/device_tracker/openwrt.nix +++ b/makefu/2configs/bureautomation/device_tracker/openwrt.nix @@ -12,7 +12,6 @@ consider_home = 300; # 5 minutes timeout new_device_defaults = { track_new_devices = true; - hide_if_away = false; }; } ]; diff --git a/makefu/2configs/bureautomation/sensor/outside.nix b/makefu/2configs/bureautomation/sensor/outside.nix index b5d25ecd3..e7b4d9a7c 100644 --- a/makefu/2configs/bureautomation/sensor/outside.nix +++ b/makefu/2configs/bureautomation/sensor/outside.nix @@ -20,10 +20,13 @@ units = "si" ; scan_interval = "00:30:00"; } - { platform = "luftdaten"; - name = "Ditzingen"; - sensorid = "5341"; - monitored_conditions = [ "P1" "P2" ]; - } ]; + services.home-assistant.config.luftdaten = { + sensor_id = "26237"; + show_on_map = true; + sensors.monitored_conditions = [ + "P1" + "P2" + ]; + }; } diff --git a/makefu/2configs/ham/zigbee2mqtt/default.nix b/makefu/2configs/bureautomation/zigbee2mqtt/default.nix index a75075273..ba10ae74b 100644 --- a/makefu/2configs/ham/zigbee2mqtt/default.nix +++ b/makefu/2configs/bureautomation/zigbee2mqtt/default.nix @@ -12,13 +12,18 @@ in services.zigbee2mqtt = { enable = true; inherit dataDir; + config = { + permit_join = true; + serial.port = "/dev/cc2531"; + homeassistant = true; + }; }; - state = [ "${dataDir}/configuration.yaml" "${dataDir}/state.json" ]; + state = [ "${dataDir}/devices.yaml" "${dataDir}/state.json" ]; systemd.services.zigbee2mqtt = { # override automatic configuration.yaml deployment - serviceConfig.ExecStartPre = lib.mkForce "${pkgs.coreutils}/bin/true"; + environment.ZIGBEE2MQTT_DATA = dataDir; after = [ "home-assistant.service" "mosquitto.service" diff --git a/makefu/2configs/ham/zigbee2mqtt/hass.nix b/makefu/2configs/bureautomation/zigbee2mqtt/hass.nix index faf864ba6..faf864ba6 100644 --- a/makefu/2configs/ham/zigbee2mqtt/hass.nix +++ b/makefu/2configs/bureautomation/zigbee2mqtt/hass.nix diff --git a/makefu/2configs/default.nix b/makefu/2configs/default.nix index 695e8fee6..be64e402e 100644 --- a/makefu/2configs/default.nix +++ b/makefu/2configs/default.nix @@ -57,6 +57,7 @@ with import <stockholm/lib>; environment.shellAliases = { # TODO: see .aliases lsl = "ls -lAtr"; + ip = "ip -c -br"; dmesg = "dmesg -L --reltime"; psg = "ps -ef | grep"; nmap = "nmap -oN $HOME/loot/scan-`date +\%s`.nmap -oX $HOME/loot/scan-`date +%s`.xml"; diff --git a/makefu/2configs/git/cgit-retiolum.nix b/makefu/2configs/git/cgit-retiolum.nix index 3e3ef09a8..114febe8b 100644 --- a/makefu/2configs/git/cgit-retiolum.nix +++ b/makefu/2configs/git/cgit-retiolum.nix @@ -36,6 +36,7 @@ let cgit.desc = "Build new Stockholm hosts"; }; cac-api = { }; + oof = { }; euer_blog = { }; ampel = { }; europastats = { }; diff --git a/makefu/2configs/gui/wbob-kiosk.nix b/makefu/2configs/gui/wbob-kiosk.nix index 1a5e6d04f..2f6a26d82 100644 --- a/makefu/2configs/gui/wbob-kiosk.nix +++ b/makefu/2configs/gui/wbob-kiosk.nix |