diff options
Diffstat (limited to 'makefu/2configs')
28 files changed, 211 insertions, 88 deletions
diff --git a/makefu/2configs/dcpp/hub.nix b/makefu/2configs/dcpp/hub.nix index 92977b4c8..4566a1f4f 100644 --- a/makefu/2configs/dcpp/hub.nix +++ b/makefu/2configs/dcpp/hub.nix @@ -33,8 +33,7 @@ let uhubDir = "/var/lib/uhub"; in { - users.extraUsers = singleton { - name = ddclientUser; + users.extraUsers."${ddclientUser}" = { uid = genid "ddclient"; description = "ddclient daemon user"; home = stateDir; diff --git a/makefu/2configs/default.nix b/makefu/2configs/default.nix index 0219e9bb7..beba0ac8c 100644 --- a/makefu/2configs/default.nix +++ b/makefu/2configs/default.nix @@ -89,4 +89,5 @@ with import <stockholm/lib>; email = "letsencrypt@syntax-fehler.de"; acceptTerms = true; }; + system.stateVersion = lib.mkDefault "20.03"; } diff --git a/makefu/2configs/deployment/docker/etherpad.euer.krebsco.de.nix b/makefu/2configs/deployment/docker/etherpad.euer.krebsco.de.nix index a01f924e7..32f1a2f8e 100644 --- a/makefu/2configs/deployment/docker/etherpad.euer.krebsco.de.nix +++ b/makefu/2configs/deployment/docker/etherpad.euer.krebsco.de.nix @@ -10,7 +10,7 @@ in { locations."/".proxyPass = "http://localhost:${toString port}"; }; docker-containers."etherpad-lite" = { - image = "makefoo/bgt-etherpad:2020-05-02.5"; + image = "makefoo/bgt-etherpad:2020-05-02.6"; ports = [ "127.0.0.1:${toString port}:9001" ]; volumes = [ "/var/src/secrets/etherpad/apikey:/opt/etherpad-lite/APIKEY.txt" diff --git a/makefu/2configs/deployment/rss.euer.krebsco.de.nix b/makefu/2configs/deployment/rss.euer.krebsco.de.nix index c827c5a53..86efb5662 100644 --- a/makefu/2configs/deployment/rss.euer.krebsco.de.nix +++ b/makefu/2configs/deployment/rss.euer.krebsco.de.nix @@ -1,3 +1,4 @@ +{ pkgs, config, ... }: let fqdn = "rss.euer.krebsco.de"; in { @@ -6,6 +7,8 @@ in { virtualHost = fqdn; selfUrlPath = "https://${fqdn}"; }; + services.postgresql.package = pkgs.postgresql_9_6; + state = [ config.services.postgresql.dataDir ]; services.nginx.virtualHosts."${fqdn}" = { enableACME = true; forceSSL = true; diff --git a/makefu/2configs/exim-retiolum.nix b/makefu/2configs/exim-retiolum.nix index f15a0cf74..1f433ab44 100644 --- a/makefu/2configs/exim-retiolum.nix +++ b/makefu/2configs/exim-retiolum.nix @@ -5,6 +5,7 @@ with import <stockholm/lib>; networking.firewall.allowedTCPPorts = [ 25 ]; krebs.exim-retiolum.enable = true; + krebs.exim-retiolum.rspamd.enable = true; environment.systemPackages = with pkgs; [ msmtp ]; diff --git a/makefu/2configs/ham/androidtv/adbshell.nix b/makefu/2configs/ham/androidtv/adbshell.nix index 0fadeeb05..c2844eb4e 100644 --- a/makefu/2configs/ham/androidtv/adbshell.nix +++ b/makefu/2configs/ham/androidtv/adbshell.nix @@ -9,11 +9,11 @@ buildPythonPackage rec { pname = "adb_shell"; - version = "0.1.1"; + version = "0.1.3"; src = fetchPypi { inherit pname version; - sha256 = "0a4mjrnw2lrhsakb1vjb5l6m3cr1ii7fibs7020nwv08cyx6pq6q"; + sha256 = "16wb8n4fsh465fjlbsxi83xpi7xklaf28s9568bsb3nkyvfvl58h"; }; propagatedBuildInputs = [ diff --git a/makefu/2configs/ham/androidtv/default.nix b/makefu/2configs/ham/androidtv/default.nix index 9899b2dd3..2a0bec484 100644 --- a/makefu/2configs/ham/androidtv/default.nix +++ b/makefu/2configs/ham/androidtv/default.nix @@ -6,11 +6,11 @@ buildPythonPackage rec { pname = "androidtv"; - version = "0.0.39"; + version = "0.0.41"; src = fetchPypi { inherit pname version; - sha256 = "06lrjj74g2f3pkhsn3c8h13mkykgqqf4g9q6x5yv23z6ghjnk2dz"; + sha256 = "1nch08g47qjgdacl03w7kczx2gajx6nkazgxdzbgn1vghrg6x2zw"; }; propagatedBuildInputs = [ diff --git a/makefu/2configs/ham/calendar/nextcloud.nix b/makefu/2configs/ham/calendar/nextcloud.nix new file mode 100644 index 000000000..0be23ad7b --- /dev/null +++ b/makefu/2configs/ham/calendar/nextcloud.nix @@ -0,0 +1,8 @@ +let + cred = import <secrets/ham/nextcloud-calendar>; +in +{ + platform = "caldav"; + inherit (cred) username password; + url = "https://o.euer.krebsco.de/remote.php/dav"; +} diff --git a/makefu/2configs/ham/default.nix b/makefu/2configs/ham/default.nix index 2db4ad4de..c7e8733b7 100644 --- a/makefu/2configs/ham/default.nix +++ b/makefu/2configs/ham/default.nix @@ -15,6 +15,7 @@ let kurzzeitwecker = import ./multi/kurzzeitwecker.nix; firetv_restart = import ./multi/firetv_restart.nix; the_playlist = import ./multi/the_playlist.nix; + fliegen-counter = import ./multi/fliegen-couter.nix; # switch # automation # binary_sensor @@ -28,10 +29,13 @@ in { services.home-assistant = { package = (upkgs.home-assistant.overrideAttrs (old: { + doCheck = false; + checkPhase = ":"; + installCheckPhase = ":"; })).override { extraPackages = ps: with ps; [ python-forecastio jsonrpc-async jsonrpc-websocket mpd2 pkgs.picotts - (ps.callPackage ./androidtv {}) + (callPackage ./androidtv {}) ]; }; config = { @@ -48,6 +52,7 @@ in { conversation = {}; history = {}; logbook = {}; + counter = fliegen-counter.counter; logger = { default = "info"; }; @@ -138,6 +143,7 @@ in { ++ the_playlist.sensor ++ zigbee.sensor ; frontend = { }; + calendar = [ (import ./calendar/nextcloud.nix) ]; # light = flurlicht.light; http = { }; switch = []; @@ -146,6 +152,7 @@ in { ++ kurzzeitwecker.automation #++ flurlicht.automation ++ the_playlist.automation + ++ fliegen-counter.automation ++ zigbee.automation; script = { } diff --git a/makefu/2configs/ham/google-muell.nix b/makefu/2configs/ham/google-muell.nix deleted file mode 100644 index c81eae201..000000000 --- a/makefu/2configs/ham/google-muell.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ config, lib, pkgs, buildPythonPackage, ... }: -with import <stockholm/lib>; -let - pkg = pkgs.ampel; - home = "/var/lib/ampel"; - sec = "${toString <secrets>}/ampel/google-muell.json"; - ampelsec = "${home}/google-muell.json"; - cred = "${toString <secrets>}/ampel/google-muell-creds.json"; - # TODO: generate this credential file locally - ampelcred = "${home}/google-muell-creds.json"; - sleepval = "1800"; - # default-color = "18,63,40"; - default-color = "255,127,0"; - config_json = toFile "config.json" (toJSON { - mq_hostname = "localhost"; - mq_port = 1883; - mq_username = "sensor"; - mq_topic = "/ham/flurlicht/cmnd/MEM1"; - mq_password = replaceChars ["\n"] [""] (readFile "${toString <secrets>}/mqtt/sensor"); - }); -in { - users.users.ampel = { - uid = genid "ampel"; - createHome = true; - isSystemUser = true; - inherit home; - }; - systemd.services.google-muell-ampel = { - description = "Send led change to rgb cubes"; - after = [ "network-online.target" ]; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - User = "ampel"; - ExecStartPre = pkgs.writeDash "copy-ampel-secrets" '' - install -m600 -o ampel ${sec} ${ampelsec} - install -m600 -o ampel ${cred} ${ampelcred} - ''; - ExecStart = "${pkg}/bin/google-muell --config ${config_json} --default-color=${default-color} --client-secrets=${ampelsec} --credential-path=${ampelcred} --sleepval=${sleepval}"; - PermissionsStartOnly = true; - Restart = "always"; - RestartSec = 10; - PrivateTmp = true; - }; - }; -} diff --git a/makefu/2configs/ham/multi/fliegen-couter.nix b/makefu/2configs/ham/multi/fliegen-couter.nix new file mode 100644 index 000000000..d5c180e03 --- /dev/null +++ b/makefu/2configs/ham/multi/fliegen-couter.nix @@ -0,0 +1,67 @@ +# uses: +# sensor.btn1_click +# sensor.btn2_click +let + hlib = import ../lib; + fly_swat = for: btn: method: incr: { + alias = "Increment ${method} for ${for}"; + trigger = { + platform = "state"; + entity_id = "sensor.${btn}_click"; + to = method; + }; + action = builtins.genList (cnt: { + service = "counter.increment"; + data.entity_id = "counter.${for}_fliegen"; + }) incr; + }; +in { + counter = { + felix_fliegen = {}; + misa_fliegen = {}; + }; + automation = [ + (fly_swat "misa" "btn1" "single" 1) + (fly_swat "misa" "btn1" "double" 2) + (fly_swat "misa" "btn1" "triple" 3) + (fly_swat "felix" "btn2" "single" 1) + (fly_swat "felix" "btn2" "double" 2) + (fly_swat "felix" "btn2" "triple" 3) + { + alias = "Send Fly Counter Update"; + trigger = [ + { + platform = "state"; + entity_id = "counter.felix_fliegen"; + } + { + platform = "state"; + entity_id = "counter.misa_fliegen"; + #above = -1; + } + ]; + action = { + service = "mqtt.publish"; + data_template = { # gauge-style + payload = "{{ trigger.to_state.state }}"; + topic = "${hlib.prefix}/flycounter/{{ trigger.to_state.object_id }}"; + }; + }; + } + { + alias = "Reset Fly counters on midnight"; + trigger = { + platform = "time"; + at = "01:00:00"; + }; + action = [ + { service = "counter.reset"; + data.entity_id = "counter.misa_fliegen"; + } + { service = "counter.reset"; + data.entity_id = "counter.felix_fliegen"; + } + ]; + } + ]; +} diff --git a/makefu/2configs/home-manager/default.nix b/makefu/2configs/home-manager/default.nix index f68b1092f..be8861100 100644 --- a/makefu/2configs/home-manager/default.nix +++ b/makefu/2configs/home-manager/default.nix @@ -3,6 +3,7 @@ <home-manager/nixos> ]; home-manager.useUserPackages = true; + home-manager.useGlobalPkgs = true; home-manager.users.makefu = { home.stateVersion = "19.03"; }; diff --git a/makefu/2configs/home-manager/desktop.nix b/makefu/2configs/home-manager/desktop.nix index cf20af1b1..bd1e34804 100644 --- a/makefu/2configs/home-manager/desktop.nix +++ b/makefu/2configs/home-manager/desktop.nix @@ -1,8 +1,14 @@ -{ pkgs, lib, ... }: +{ pkgs, lib, config, ... }: { + users.users.makefu.packages = with pkgs;[ bat direnv clipit ]; home-manager.users.makefu = { + systemd.user.services.flameshot.Service.Environment = lib.mkForce [ + "IMGUR_CREATE_URL=https://p.krebsco.de/image" + "IMGUR_DELETE_URL=https://p.krebsco.de/image/delete/%%1" + "PATH=${config.home-manager.users.makefu.home.profileDirectory}/bin" + ]; systemd.user.services.network-manager-applet.Service.Environment = ''XDG_DATA_DIRS=/run/current-system/sw/share:${pkgs.networkmanagerapplet}/share GDK_PIXBUF_MODULE_FILE=${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache''; programs.browserpass = { browsers = [ "firefox" ] ; enable = true; }; programs.firefox = { diff --git a/makefu/2configs/home-manager/mail.nix b/makefu/2configs/home-manager/mail.nix index ba29e86a4..3aa1814ca 100644 --- a/makefu/2configs/home-manager/mail.nix +++ b/makefu/2configs/home-manager/mail.nix @@ -1,5 +1,13 @@ +{ pkgs, ... }: { home-manager.users.makefu = { + home.packages= with pkgs;[ (pkgs.writers.writeDashBin "mailsync"'' + ${imapfilter}/bin/imapfilter -t /etc/ssl/certs/ca-bundle.crt \ + && ${isync}/bin/mbsync -a \ + && ${libnotify}/bin/notify-send -t 1000000 -u critical 'Mail sync finished' + + '' + )]; programs.mbsync.enable = true; accounts.email.maildirBasePath = "/home/makefu/Mail"; accounts.email.certificatesFile = "/etc/ssl/certs/ca-certificates.crt"; diff --git a/makefu/2configs/home-manager/zsh.nix b/makefu/2configs/home-manager/zsh.nix index f972e98b4..862ee5df3 100644 --- a/makefu/2configs/home-manager/zsh.nix +++ b/makefu/2configs/home-manager/zsh.nix @@ -9,11 +9,13 @@ }; imports = [ { #direnv - home-manager.users.makefu.home.packages = [ pkgs.direnv pkgs.nur.repos.kalbasit.nixify ]; - # home-manager.users.makefu.home.file.".direnvrc".text = ''''; + home-manager.users.makefu.home.packages = [ + (pkgs.writers.writeDashBin "privatefox" "exec firefox -P Privatefox") + pkgs.direnv pkgs.nur.repos.kalbasit.nixify ]; + # home-manager.users.makefu.home.file.".direnvrc".text = ''''; } { # bat - home-manager.users.makefu.home.packages = [ pkgs.bat ]; + home-manager.users.makefu.home.packages = [ pkgs.bat ]; home-manager.users.makefu.programs.zsh.shellAliases = { cat = "bat --style=header,snip"; mirage = "sxiv"; # only available when tools/extra-gui is in use @@ -65,8 +67,11 @@ zstyle ':completion::complete:brain::' prefix "$HOME/brain" compdef _pass secrets zstyle ':completion::complete:secrets::' prefix "$HOME/.secrets-pass/" - + + # navi + source ${pkgs.navi}/share/navi/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 diff --git a/makefu/2configs/hw/network-manager.nix b/makefu/2configs/hw/network-manager.nix index 1004ea06e..f44d4afd4 100644 --- a/makefu/2configs/hw/network-manager.nix +++ b/makefu/2configs/hw/network-manager.nix @@ -11,8 +11,8 @@ systemd.services.modemmanager = { description = "ModemManager"; - bindsTo = [ "network-manager.service" ]; - wantedBy = [ "network-manager.service" "multi-user.target" ]; + bindsTo = [ "NetworkManager.service" ]; + wantedBy = [ "NetworkManager.service" "multi-user.target" ]; serviceConfig = { ExecStart = "${pkgs.modemmanager}/bin/ModemManager"; PrivateTmp = true; diff --git a/makefu/2configs/kdeconnect.nix b/makefu/2configs/kdeconnect.nix new file mode 100644 index 000000000..ca025ee43 --- /dev/null +++ b/makefu/2configs/kdeconnect.nix @@ -0,0 +1,6 @@ +{pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ kdeconnect ]; + networking.firewall.allowedUDPPortRanges = [ { from = 1714; to = 1764; } ]; + networking.firewall.allowedTCPPortRanges = [ { from = 1714; to = 1764; } ]; +} diff --git a/makefu/2configs/nur.nix b/makefu/2configs/nur.nix index 65cf836c4..6132168ad 100644 --- a/makefu/2configs/nur.nix +++ b/makefu/2configs/nur.nix @@ -1,8 +1,8 @@ { pkgs, ... }:{ nixpkgs.config.packageOverrides = pkgs: { nur = import (builtins.fetchTarball { - url = "https://github.com/nix-community/NUR/archive/b7f7e072b3fa56aa0d86dfe3689cb13f0615bbbe.tar.gz"; - sha256 = "0slxxg3r460aa1rc83j0rklmr0i1hyzfbjy0kn30fyh1l3lqb22m"; + url = "https://github.com/nix-community/NUR/archive/28e5326ecbaef8b961bec7d18dbfe35f522fb2b1.tar.gz"; + sha256 = "1yni27g71r8n9bgsck7lz5dzx2fciljnba249yqhr9k3mzlkr7yb"; } ){ inherit pkgs; diff --git a/makefu/2configs/share/omo.nix b/makefu/2configs/share/omo.nix index 929e5c601..732dc2036 100644 --- a/makefu/2configs/share/omo.nix +++ b/makefu/2configs/share/omo.nix @@ -54,6 +54,12 @@ in { browseable = "yes"; "guest ok" = "yes"; }; + youtube = { + path = "/media/cryptX/youtube"; + "read only" = "yes"; + browseable = "yes"; + "guest ok" = "yes"; + }; crypX-games = { path = "/media/cryptX/games"; "read only" = "yes"; diff --git a/makefu/2configs/stats/telegraf/default.nix b/makefu/2configs/stats/telegraf/default.nix index c60539c71..5a81e2749 100644 --- a/makefu/2configs/stats/telegraf/default.nix +++ b/makefu/2configs/stats/telegraf/default.nix @@ -12,13 +12,18 @@ in { urls = [ url ]; database = "telegraf"; }]; - mqtt = [{ - servers = [ mqtt_server ]; - topic_prefix = "/telegraf"; - data_format = "json"; - qos = 0; - batch = false; - }]; + #file = [{ # debugging + # files = [ "stdout" ]; + # data_format = "influx"; + #}]; + + #mqtt = [{ + # servers = [ mqtt_server ]; + # topic_prefix = "/telegraf"; + # data_format = "json"; + # qos = 0; + # batch = false; + #}]; }; }; }; diff --git a/makefu/2configs/stats/telegraf/hamstats.nix b/makefu/2configs/stats/telegraf/hamstats.nix index 88c1b6d5d..99cb0cd04 100644 --- a/makefu/2configs/stats/telegraf/hamstats.nix +++ b/makefu/2configs/stats/telegraf/hamstats.nix @@ -1,28 +1,69 @@ -{ pkgs, ...}: +{ pkgs, lib, ...}: let - genTopic = name: topic: tags: { + genTopic_zigbee = name: tags: { servers = [ "tcp://localhost:1883" ]; username = "stats"; - password = builtins.readFile <secrets/mqtt/stats>; + password = lib.removeSuffix "\n" (builtins.readFile <secrets/mqtt/stats>); qos = 0; connection_timeout = "30s"; - topics = [ topic ]; - tags = tags; + topics = [ "/ham/zigbee/${name}" ]; + inherit tags; persistent_session = false; - name_override = name; + name_override = "zigbee ${tags.room} ${name}"; data_format = "json"; + json_string_fields = [ "linkquality" "temperature" "humidity" "pressure" "battery" "contact" ]; + # json_name_key = <filed which defines the name> + + }; + genTopic_plain = name: topic: tags: { + servers = [ "tcp://localhost:1883" ]; + username = "stats"; + password = lib.removeSuffix "\n" (builtins.readFile <secrets/mqtt/stats>); + qos = 0; + connection_timeout = "30s"; + topics = [ topic ]; + inherit tags; + persistent_session = false; + name_override = tags.sensor; + data_type = "float"; + data_format = "value"; # json_query = tags.sensor; #TODO? }; - hamStat = host: - sensor: - (genTopic sensor - "/ham/${host}/${sensor}/tele/SENSOR" - {"host" = host; + flycounter = name: + (genTopic_plain name ''/ham/flycounter/${name}'' + { inherit name; + "sensor" = name; + "type" = "gauge"; + "scope" = "ham"; + } ); + esensor = room: name: sensor: + (genTopic_plain sensor ''/ham/${room}/${name}/sensor/${sensor}/state'' + { inherit room sensor name; + "scope" = "ham"; + } ); + zsensor = room: name: + (genTopic_zigbee name + { inherit room name; "scope" = "ham"; - "sensor" = sensor; } ); - bme = host: [(hamStat host "BME280")]; + zigbee_temphum = room: name: [ + (zsensor room name) + ]; + esphome_temphum = room: name: [ + (esensor room name ''${room}_${name}_temperature'') + (esensor room name ''${room}_${name}_humidity'') + (esensor room name ''${room}_${name}_pressure'') + ]; in { - services.telegraf.extraConfig.inputs.mqtt_consumer = (bme "schlafzimmer"); + services.telegraf.extraConfig.inputs.mqtt_consumer = + (zigbee_temphum "Wohnzimmer" "temp1") + ++ (zigbee_temphum "Badezimmer" "temp2") + ++ (zigbee_temphum "Kinderzimmer" "temp3") + ++ (esphome_temphum "arbeitszimmer" "box") + ++ (esphome_temphum "schlafzimmer" "plug") + ++ (esphome_temphum "wohnzimmer" "plug") + ++ (esphome_temphum "terrasse" "plug") + ++ [ (flycounter "misa_fliegen") (flycounter "felix_fliegen") ] + ; } diff --git a/makefu/2configs/tools/android-pentest.nix b/makefu/2configs/tools/android-pentest.nix index 036f6e6fe..766aacb9e 100644 --- a/makefu/2configs/tools/android-pentest.nix +++ b/makefu/2configs/tools/android-pentest.nix @@ -7,7 +7,7 @@ nmap msf drozer - dex2jar + #dex2jar apktool jd-gui # android-studio diff --git a/makefu/2configs/tools/core-gui.nix b/makefu/2configs/tools/core-gui.nix index ee4f05980..95b6b0f5d 100644 --- a/makefu/2configs/tools/core-gui.nix +++ b/makefu/2configs/tools/core-gui.nix @@ -17,5 +17,6 @@ xdotool xorg.xbacklight scrot + libnotify ]; } diff --git a/makefu/2configs/tools/core.nix b/makefu/2configs/tools/core.nix index b4c3a431e..8339c9328 100644 --- a/makefu/2configs/tools/core.nix +++ b/makefu/2configs/tools/core.nix @@ -49,7 +49,7 @@ ${gnused}/bin/sed -i "''${1}d" ~/.ssh/known_hosts populate rxvt_unicode.terminfo - krebspaste + kpaste ]; } diff --git a/makefu/2configs/tools/dev.nix b/makefu/2configs/tools/dev.nix index f184b5be5..276ed6cdc 100644 --- a/makefu/2configs/tools/dev.nix +++ b/makefu/2configs/tools/dev.nix @@ -39,5 +39,6 @@ # network related sshuttle pciutils + navi ]; } diff --git a/makefu/2configs/tools/extra-gui.nix b/makefu/2configs/tools/extra-gui.nix index 49b36a5d7..aae00b97d 100644 --- a/makefu/2configs/tools/extra-gui.nix +++ b/makefu/2configs/tools/extra-gui.nix @@ -8,6 +8,7 @@ inkscape libreoffice # skype + teams synergy tdesktop virtmanager diff --git a/makefu/2configs/tools/media.nix b/makefu/2configs/tools/media.nix index 3f2cf3096..004222ba2 100644 --- a/makefu/2configs/tools/media.nix +++ b/makefu/2configs/tools/media.nix @@ -8,11 +8,13 @@ mumble mplayer # quodlibet # exfalso + tinymediamanager plowshare streamripper youtube-dl pulseeffects + ]; } diff --git a/makefu/2configs/urlwatch/default.nix b/makefu/2configs/urlwatch/default.nix index b07a1e807..8664d75ee 100644 --- a/makefu/2configs/urlwatch/default.nix +++ b/makefu/2configs/urlwatch/default.nix @@ -3,11 +3,11 @@ let grss = name: { #github rss feed url = "https://github.com/${name}/releases.atom"; - filter = "grepi:(<updated|<media.thumbnail)"; + filter = "grepi:(<updated|<media.thumbnail|Travis CI build log:)"; }; lidl = url: { inherit url; - filter = "grepi:<!-- sf"; + filter = "element-by-id:articledetail,html2text"; }; in { krebs.urlwatch = { @@ -45,7 +45,6 @@ in { } # shopping - ( lidl https://www.lidl.de/de/parkside-nass-trockensauger-pnts-1500-d5/p303117 ) # TODO: dymo cups ] ++ map grss [ |