From 49c320e4e2cd3d2c00a43ddab2832b26b162acca Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 13 Jan 2024 17:38:30 +0000 Subject: [PATCH 001/562] Add kitchen light --- hosts/iron/secrets.yaml | 6 +-- .../esphome/devices/kueche-leiste.yaml | 54 +++++++++++++++++++ hosts/iron/services/home-assistant.nix | 1 + 3 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 hosts/iron/services/esphome/devices/kueche-leiste.yaml diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 5c12373..a8cddef 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -9,7 +9,7 @@ dkim-keys: radicale-htpasswd: ENC[AES256_GCM,data:Q0WnleP9I4xozsL/H+5oV3Ag7khfalV40A6ub+DA07U8UKna3/ju533RmjWOnETzSNa6XK140nfCcfGZCiqGyF9tfuuXcKFu+j4=,iv:87PSvHyKF7QUQZmEuxM+IT0VKSGnS0MjoUmCqJ+6tzI=,tag:yrP3TgxE8aSZf0MrCF9dsQ==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] -esphome: ENC[AES256_GCM,data:8mXqZnGaiWTO3pNozXCG/NmPEb9fTWBIs/2gX4xLPQwoUg8rw18pVfm0GbEQG1e/crV8ykeYcbKvvZdvVIrc4M/khoO7iuqJHURTcoQh/q/9pH1K2Tg+f7w6V24BozP3GnHXGo+zfo4gX8TgQzx7kktMIiWWnP5gyc1KOw5mQlGmOwfe/Ny6ziCWuGOCPIzd4qtMGOn2lie9HztJ5h0HR9NMJar007grRUS/DXtgw4Z6/PQ80bQJPJF3qsCuJuW9YiI1ImqherYiGaS+ptdZI/nkj9RZFrDBf1NOt1ZizROoeKKO0uJ134Rh+YeuAtWeT+NcQMnj20YdJ75aBHGd+Kx/fICOmO/yXKyuwk1ZyvIvnlauG0bgi2nMrAQJdgO7FRBflmZd6IIFv6a2kOHkS8sigBi2Movq/mZTEF13XBsFxgEZugEqh5MvEd10iaLusYNCa5pc3z5DoeAcbsOGfmcgy4RdHurtVImfLSvPyelRAsWXceOPzU+zLVyAGZ4MeqP5cO2oK1qC9sntMz3s5sjl7BsT9SieiaScK4Tdadh0ZjlzVYzh+XIDTvbgUu6EFmU3t4UeAanPywJIdnnJVMCvgN6FLHk098h9PL2DgKWfS8aiywKXctXUA78WYpYInqS531liF8Jc5HM91Azp1q+ImpzmZjfm0kgD7wLiGzZaPeKsQaB7ykMpvWpTSq+QHW4=,iv:qLn56QxmWFaYtz3MwZyCP7NEfypmWRW4HxQiZmn27fE=,tag:9bHVx5NDf3nZG0alxb4p1w==,type:str] +esphome: ENC[AES256_GCM,data:u8fNhi3J2wEJ6uxYT5LfYzktnmhTuHX4Tundu8iPxstFHkk7eF4HjlZi7KWmSZSFNqZqCRQ/Kksmtylc5LxGvVUAgwr4fUu9qBns3UbwwdrOrenefrcDZDq2Z2VjNtIHK2CbmqmDoodZy7JWgezY8ZzEjqcpv+btZ/91+ApM/5Q81gxcbFWMmurOp/yl0LSaCVu4sE7L60IstZisJMtmJ/YTY6KYop6TMuwUUDwVa5kgqzxLJWc0MEDt7rSutqVd7ryGzacvcaC4HcOcbVHVNc5tCqELBxExV4zd56rK2RLfBtDJVX7S3h+deWmNg6IMnPkAtgaer0QT8x4BIhbj8r7S2lcWDF1r1V2aZQ33mXbiuMlDVdmHliMnKpY+QIVLLtC0xNofRKixD+S1zmsjqQTJaMZO76dk8dRrZ+mnDPjDdLjT6687YPOeRuIAzLYhJrgyvQdE+SBgx0B71L/Q0Jp2joO4esx0iWwa8A6h8WZMulO1CGQpRfhI5GABz/sJtSm1pkZbxHJnhKXxAV3KiAP3RH673xkdo3Wmn1Q7RsOVsogXodYd4klmSgAszvF0eBl/pazCgfErI6ReNIr7cUGYd82Ub0gveSvPzqCPGJMkxwZ51QOUKI/pvw4pywolpH1JN5edPfoepVvbrrk/TD8X0Dd6YKOWuzjZ8LsuM1znqywwGh5BGvWzSpK1JZcYJG4Na5LFHgniyOuL6y6aANXSW6TBuehNwNEHkbm2GOjpxy3Ml5nWwQLkkD2wEdSU0/MW23rr6cOVUOrYiZvxip8l5Nf5Cl/JTLGaepRJaMBkTZj4G5x+r4zqOTBsbcEG8eiPAZG5uIxxVYo=,iv:U1srWrPW11lz/UYFW7Z9apla+ShH7W/QzDiw+evfcXg=,tag:1dxPp+m2O6xSyAZEsSf0dw==,type:str] sops: kms: [] gcp_kms: [] @@ -25,8 +25,8 @@ sops: TjdZRldhSzVtMkVoTzY1NjdGbCswRVUK0pi+8UuLqRmytcR2ikxOAM02iccl8P1y ixv0PKPLd+vQ23QeeQy/TfoGx16XttaDUnUrPLZR3TUKtAcld8+m6w== -----END AGE ENCRYPTED FILE----- - lastmodified: "2023-12-18T16:45:32Z" - mac: ENC[AES256_GCM,data:ZsC4C+VpUnHuMyqHa3/TIursyWDPV1+we/cBrUhyeqeNdeDveJ4a26jmIzNxWWHbJU7uMPy6BF6iHpS91YK4m+KKSqoXZiTjB8b9p3y9ietT9XQOLXdt8pxVFBEOSH7g9DeVbrJUHTOhzYpugMqC/QXcDLE1GQwa0eGUq3JIDh8=,iv:vbDpVJAXvYw1qQ5Or6CxOs8OO4yhtlVF4zh07bkkFJw=,tag:IqVAItuv23AbbGQsPh5dsg==,type:str] + lastmodified: "2024-01-12T02:04:19Z" + mac: ENC[AES256_GCM,data:pXHs+ucPNr+v/x3R2Jb+1zxnHdAeSneT+6lt20eLhjvcMQIFckYXFxc0eOMnV00jTWb+vyz6g5zHsg9+kv+xm/xBHozw9sRJi01Ni+AR/ZLSbVDa6NiMyu536MrA1TeD3iZrxgmpDTuxsChdETz0mmPyEPOMT29seWYlhzI/++o=,iv:2guaerRyQj6qz9Dyo2HbC/dXUA6cuAA+yuDwbUDCcK8=,tag:HcVT4KdLCyjwtWP24JVfhg==,type:str] pgp: - created_at: "2023-05-02T19:30:42Z" enc: | diff --git a/hosts/iron/services/esphome/devices/kueche-leiste.yaml b/hosts/iron/services/esphome/devices/kueche-leiste.yaml new file mode 100644 index 0000000..deaf92d --- /dev/null +++ b/hosts/iron/services/esphome/devices/kueche-leiste.yaml @@ -0,0 +1,54 @@ +esphome: + name: "kueche-leiste" + friendly_name: "Küche Leiste" + platformio_options: + board_build.flash_mode: dio + on_boot: + then: + - light.turn_on: + id: led_light + brightness: 50% + color_temperature: 2700 K + +esp32: + board: esp32-c3-devkitm-1 + variant: ESP32C3 + framework: + type: esp-idf + +logger: + +api: + encryption: + key: !secret apikey_kueche_leiste + +ota: + password: !secret otapass_kueche_leiste + +wifi: + ssid: !secret wifi_ssid_bw + password: !secret wifi_password_bw + domain: .iot.bw.jalr.de + power_save_mode: none + enable_on_boot: True + fast_connect: On + output_power: 8.5 + +output: + - platform: ledc + pin: GPIO0 + id: output_warm + - platform: ledc + pin: GPIO1 + id: output_cold + +light: + - platform: cwww + name: "LED light" + id: led_light + cold_white: output_cold + warm_white: output_warm + cold_white_color_temperature: 6500 K + warm_white_color_temperature: 2700 K + constant_brightness: true + gamma_correct: 0 diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index a3d1633..6be4d5f 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -82,6 +82,7 @@ in "light.yeelight_meteorite_ceiling_light" "light.eingang_deckenleuchte_deckenleuchte" "light.led_panel_schreibtisch_panel" + "light.kueche_leiste_led_light" ]; min_brightness = 20; } From 8bb919f781f538d0161acca6e0b74d8a6b827503 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 13 Jan 2024 17:40:56 +0000 Subject: [PATCH 002/562] Add washing machine notification --- hosts/iron/services/home-assistant.nix | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index 6be4d5f..27d40ac 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -87,6 +87,25 @@ in min_brightness = 20; } ]; + automation = [ + { + alias = "Waschmaschine fertig Benachrichtigung"; + trigger = { + platform = "state"; + entity_id = "sensor.waschmaschine_aktueller_vorgang"; + to = "Knitterschutz/Ende"; + }; + action = [ + { + service = "notify.mobile_app_shift6mq"; + data = { + message = "Die Waschmaschine hat das Programm beendet."; + title = "Wäsche fertig"; + }; + } + ]; + } + ]; }; }; From 8c70960c2872cbd02dde6dffe03cc4417ede9887 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 14 Jan 2024 19:45:18 +0000 Subject: [PATCH 003/562] Add snapserver --- hosts/iron/configuration.nix | 2 ++ hosts/iron/ports.nix | 1 + hosts/iron/services/default.nix | 3 ++- hosts/iron/services/snapserver.nix | 26 ++++++++++++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 hosts/iron/services/snapserver.nix diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index 75bba3f..329758c 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -197,6 +197,8 @@ with lib; { hardware.enableRedistributableFirmware = true; + sound.enable = true; + virtualisation.containers.storage.settings = { storage = { driver = "zfs"; diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 80a74ea..9ec9ba2 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -16,6 +16,7 @@ custom-utils.validatePortAttrset { qbittorrent-webui.tcp = 8099; radicale.tcp = 5232; rmfakecloud.tcp = 3000; + snapserver.tcp = 1705; unifi.tcp = 8443; wireguard-public-ip-tunnel.udp = 51000; } diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index d2507e6..f5cddc8 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -2,8 +2,8 @@ imports = [ ./dnsmasq.nix ./dyndns.nix - ./home-assistant.nix ./esphome + ./home-assistant.nix ./jellyfin.nix ./mail.nix ./matrix.nix @@ -13,6 +13,7 @@ ./public-ip-tunnel.nix ./radicale.nix ./remarkable.nix + ./snapserver.nix ./sturzbach.nix ./unifi-controller.nix ]; diff --git a/hosts/iron/services/snapserver.nix b/hosts/iron/services/snapserver.nix new file mode 100644 index 0000000..9a2c13d --- /dev/null +++ b/hosts/iron/services/snapserver.nix @@ -0,0 +1,26 @@ +args@{ lib, pkgs, config, custom-utils, ... }: +let + ports = import ../ports.nix args; +in +{ + services.snapserver = { + enable = true; + tcp = { + enable = true; + port = ports.snapserver.tcp; + }; + port = 1704; + http = { + enable = true; + port = 1780; + listenAddress = "127.0.0.1"; + }; + streams.default.location = "/run/snapserver/default"; + #streams.default = { + # type = "alsa"; + # sampleFormat = "48000:16:2"; + # location = ""; + # codec = "flac"; + #}; + }; +} From c7ef9fb1e81faf05f9c069784593c5af22b6751b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 30 Jan 2024 20:02:36 +0000 Subject: [PATCH 004/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'flake-utils': 'github:numtide/flake-utils/4022d587cbbfd70fe950c1e2083a02621806a725' (2023-12-04) → 'github:numtide/flake-utils/1ef2e671c3b0c19053962c07dbda38332dcebf26' (2024-01-15) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/001bbfa22e2adeb87c34c6015e5694e88721cabe' (2023-12-04) → 'github:nix-community/gomod2nix/30e3c3a9ec4ac8453282ca7f67fca9e1da12c3e6' (2024-01-15) • Updated input 'home-manager': 'github:nix-community/home-manager/d5824a76bc6bb93d1dce9ebbbcb09a9b6abcc224' (2023-12-23) → 'github:nix-community/home-manager/10cd9c53115061aa6a0a90aad0b0dde6a999cdb9' (2024-01-19) • Updated input 'nix-pre-commit-hooks': 'github:cachix/pre-commit-hooks.nix/9d3d7e18c6bc4473d7520200d4ddab12f8402d38' (2023-12-30) → 'github:cachix/pre-commit-hooks.nix/7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf' (2024-01-28) • Updated input 'nix-pre-commit-hooks/flake-compat': 'github:edolstra/flake-compat/35bb57c0c8d8b62bbfd284272c928ceb64ddbde9' (2023-01-17) → 'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33' (2023-10-04) • Updated input 'nix-pre-commit-hooks/gitignore': 'github:hercules-ci/gitignore.nix/a20de23b925fd8264fd7fad6454652e142fd7f73' (2022-08-14) → 'github:hercules-ci/gitignore.nix/43e1aa1308018f37118e34d3a9cb4f5e75dc11d5' (2023-12-29) • Updated input 'nix-pre-commit-hooks/nixpkgs': 'github:NixOS/nixpkgs/df1eee2aa65052a18121ed4971081576b25d6b5c' (2023-07-13) → 'github:NixOS/nixpkgs/eabe8d3eface69f5bb16c18f8662a702f50c20d5' (2024-01-09) • Updated input 'nix-pre-commit-hooks/nixpkgs-stable': 'github:NixOS/nixpkgs/c37ca420157f4abc31e26f436c1145f8951ff373' (2023-06-03) → 'github:NixOS/nixpkgs/3dc440faeee9e889fe2d1b4d25ad0f430d449356' (2024-01-10) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/9dd7699928e26c3c00d5d46811f1358524081062' (2023-12-30) → 'github:nixos/nixpkgs/f4a8d6d5324c327dcc2d863eb7f3cc06ad630df4' (2024-01-29) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/bab500a21ac81b122bc9b573429b724eb74225e1' (2023-12-31) → 'github:NixOS/nixpkgs/996d064488f4bf9e61f9980790d35d5a79f64b40' (2024-01-30) • Updated input 'nur': 'github:nix-community/NUR/c1a78c7eeacb194aef527a7f41910f3866e2f14b' (2023-12-31) → 'github:nix-community/NUR/68b210c7240de86b3639cf9542df9dcb9c504914' (2024-01-30) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/528d500ea826383cc126a9be1e633fc92b19ce5d' (2023-12-25) → 'github:nix-community/poetry2nix/e0b44e9e2d3aa855d1dd77b06f067cd0e0c3860d' (2024-01-12) • Updated input 'sops-nix': 'github:Mic92/sops-nix/cfdbaf68d00bc2f9e071f17ae77be4b27ff72fa6' (2023-12-31) → 'github:Mic92/sops-nix/73bf36912e31a6b21af6e0f39218e067283c67ef' (2024-01-28) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/0aad9113182747452dbfc68b93c86e168811fa6c' (2023-12-30) → 'github:NixOS/nixpkgs/9a333eaa80901efe01df07eade2c16d183761fa3' (2024-01-22) --- flake.lock | 86 +++++++++++++++++++++++++++--------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/flake.lock b/flake.lock index b208caa..7a06b9a 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -21,11 +21,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", "type": "github" }, "original": { @@ -42,11 +42,11 @@ ] }, "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "lastModified": 1703887061, + "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", "owner": "hercules-ci", "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", "type": "github" }, "original": { @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1701687253, - "narHash": "sha256-qJCMxIKWXonJODPF2oV7mCd0xu7VYVenTucrY0bizto=", + "lastModified": 1705314449, + "narHash": "sha256-yfQQ67dLejP0FLK76LKHbkzcQqNIrux6MFe32MMFGNQ=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "001bbfa22e2adeb87c34c6015e5694e88721cabe", + "rev": "30e3c3a9ec4ac8453282ca7f67fca9e1da12c3e6", "type": "github" }, "original": { @@ -85,11 +85,11 @@ ] }, "locked": { - "lastModified": 1703367386, - "narHash": "sha256-FMbm48UGrBfOWGt8+opuS+uLBLQlRfhiYXhHNcYMS5k=", + "lastModified": 1705659542, + "narHash": "sha256-WA3xVfAk1AYmFdwghT7mt/erYpsU6JPu9mdTEP/e9HQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "d5824a76bc6bb93d1dce9ebbbcb09a9b6abcc224", + "rev": "10cd9c53115061aa6a0a90aad0b0dde6a999cdb9", "type": "github" }, "original": { @@ -154,11 +154,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1703939133, - "narHash": "sha256-Gxe+mfOT6bL7wLC/tuT2F+V+Sb44jNr8YsJ3cyIl4Mo=", + "lastModified": 1706424699, + "narHash": "sha256-Q3RBuOpZNH2eFA1e+IHgZLAOqDD9SKhJ/sszrL8bQD4=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "9d3d7e18c6bc4473d7520200d4ddab12f8402d38", + "rev": "7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf", "type": "github" }, "original": { @@ -170,11 +170,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1704842529, + "narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5", "type": "github" }, "original": { @@ -186,27 +186,27 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "lastModified": 1704874635, + "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.05", + "ref": "nixos-23.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1703950681, - "narHash": "sha256-veU5bE4eLOmi7aOzhE7LfZXcSOONRMay0BKv01WHojo=", + "lastModified": 1705957679, + "narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0aad9113182747452dbfc68b93c86e168811fa6c", + "rev": "9a333eaa80901efe01df07eade2c16d183761fa3", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1704028587, - "narHash": "sha256-gvnPImYfQkcb1ZQXKHUfec7f+XRxRMCg++TWhAYp/XQ=", + "lastModified": 1706644812, + "narHash": "sha256-OFP4nLyzvikvdbsAxQurqdhSK79lEjlyg3VtnSsmzbw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bab500a21ac81b122bc9b573429b724eb74225e1", + "rev": "996d064488f4bf9e61f9980790d35d5a79f64b40", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1703900474, - "narHash": "sha256-Zu+chYVYG2cQ4FCbhyo6rc5Lu0ktZCjRbSPE0fDgukI=", + "lastModified": 1706515015, + "narHash": "sha256-eFfY5A7wlYy3jD/75lx6IJRueg4noE+jowl0a8lIlVo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9dd7699928e26c3c00d5d46811f1358524081062", + "rev": "f4a8d6d5324c327dcc2d863eb7f3cc06ad630df4", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1704028639, - "narHash": "sha256-fDN/0YA5EUCu1ic6NyWoie5W+VzrX0aHVvFkrY0np18=", + "lastModified": 1706643926, + "narHash": "sha256-GOBRsUCZ3a9GgaLvbm2wpmsnZGY41IvEp9C3rQLXaTI=", "owner": "nix-community", "repo": "NUR", - "rev": "c1a78c7eeacb194aef527a7f41910f3866e2f14b", + "rev": "68b210c7240de86b3639cf9542df9dcb9c504914", "type": "github" }, "original": { @@ -276,11 +276,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1703546497, - "narHash": "sha256-CN/7HaEmHz+akXKejkRVhsxAm6HPGOmYBWMtgMkuROA=", + "lastModified": 1705060653, + "narHash": "sha256-puYyylgrBS4AFAHeyVRTjTUVD8DZdecJfymWJe7H438=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "528d500ea826383cc126a9be1e633fc92b19ce5d", + "rev": "e0b44e9e2d3aa855d1dd77b06f067cd0e0c3860d", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1703991717, - "narHash": "sha256-XfBg2dmDJXPQEB8EdNBnzybvnhswaiAkUeeDj7fa/hQ=", + "lastModified": 1706410821, + "narHash": "sha256-iCfXspqUOPLwRobqQNAQeKzprEyVowLMn17QaRPQc+M=", "owner": "Mic92", "repo": "sops-nix", - "rev": "cfdbaf68d00bc2f9e071f17ae77be4b27ff72fa6", + "rev": "73bf36912e31a6b21af6e0f39218e067283c67ef", "type": "github" }, "original": { From 920fdb5955cc8180cd42faf337d3ec31eceb54f9 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 30 Jan 2024 20:10:51 +0000 Subject: [PATCH 005/562] Add request timeout --- pkgs/myintercom-doorbell/myintercom_doorbell/service.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/myintercom-doorbell/myintercom_doorbell/service.py b/pkgs/myintercom-doorbell/myintercom_doorbell/service.py index 641c3f6..e19625c 100644 --- a/pkgs/myintercom-doorbell/myintercom_doorbell/service.py +++ b/pkgs/myintercom-doorbell/myintercom_doorbell/service.py @@ -8,7 +8,12 @@ import time def send_open_door_request(host, username, password): - urllib3.PoolManager().request( + urllib3.PoolManager( + timeout=urllib3.Timeout( + connect=3.0, + read=300, + ) + ).request( "GET", f"http://{host}/local/Doorcom/door.cgi?r=1", headers=urllib3.make_headers(basic_auth=f"{username}:{password}"), From 91b720e26bfb30ca452ee021c19c0dde91f60732 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 30 Jan 2024 20:11:08 +0000 Subject: [PATCH 006/562] Add some logging --- pkgs/myintercom-doorbell/myintercom_doorbell/service.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/myintercom-doorbell/myintercom_doorbell/service.py b/pkgs/myintercom-doorbell/myintercom_doorbell/service.py index e19625c..3def826 100644 --- a/pkgs/myintercom-doorbell/myintercom_doorbell/service.py +++ b/pkgs/myintercom-doorbell/myintercom_doorbell/service.py @@ -21,10 +21,12 @@ def send_open_door_request(host, username, password): def get_ring_status(host, username, password): + url = f"http://{host}/local/Doorcom/monitor.cgi?ring=1" + print(f"sending request to {url}", flush=True) try: response = urllib3.PoolManager().request( "GET", - f"http://{host}/local/Doorcom/monitor.cgi?ring=1", + url, headers=urllib3.make_headers(basic_auth=f"{username}:{password}"), preload_content=False, decode_content=True, @@ -48,6 +50,7 @@ def get_ring_status(host, username, password): data.append(line.decode().rstrip()) else: if data: + print(f"received: {data}", flush=True) yield data break From af3b469f54b1364e9d0f45a4ba681cb1bec068ff Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 13 Jan 2024 17:38:30 +0000 Subject: [PATCH 007/562] Add kitchen light --- hosts/iron/secrets.yaml | 6 +-- .../esphome/devices/kueche-leiste.yaml | 54 +++++++++++++++++++ hosts/iron/services/home-assistant.nix | 1 + 3 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 hosts/iron/services/esphome/devices/kueche-leiste.yaml diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 5c12373..a8cddef 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -9,7 +9,7 @@ dkim-keys: radicale-htpasswd: ENC[AES256_GCM,data:Q0WnleP9I4xozsL/H+5oV3Ag7khfalV40A6ub+DA07U8UKna3/ju533RmjWOnETzSNa6XK140nfCcfGZCiqGyF9tfuuXcKFu+j4=,iv:87PSvHyKF7QUQZmEuxM+IT0VKSGnS0MjoUmCqJ+6tzI=,tag:yrP3TgxE8aSZf0MrCF9dsQ==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] -esphome: ENC[AES256_GCM,data:8mXqZnGaiWTO3pNozXCG/NmPEb9fTWBIs/2gX4xLPQwoUg8rw18pVfm0GbEQG1e/crV8ykeYcbKvvZdvVIrc4M/khoO7iuqJHURTcoQh/q/9pH1K2Tg+f7w6V24BozP3GnHXGo+zfo4gX8TgQzx7kktMIiWWnP5gyc1KOw5mQlGmOwfe/Ny6ziCWuGOCPIzd4qtMGOn2lie9HztJ5h0HR9NMJar007grRUS/DXtgw4Z6/PQ80bQJPJF3qsCuJuW9YiI1ImqherYiGaS+ptdZI/nkj9RZFrDBf1NOt1ZizROoeKKO0uJ134Rh+YeuAtWeT+NcQMnj20YdJ75aBHGd+Kx/fICOmO/yXKyuwk1ZyvIvnlauG0bgi2nMrAQJdgO7FRBflmZd6IIFv6a2kOHkS8sigBi2Movq/mZTEF13XBsFxgEZugEqh5MvEd10iaLusYNCa5pc3z5DoeAcbsOGfmcgy4RdHurtVImfLSvPyelRAsWXceOPzU+zLVyAGZ4MeqP5cO2oK1qC9sntMz3s5sjl7BsT9SieiaScK4Tdadh0ZjlzVYzh+XIDTvbgUu6EFmU3t4UeAanPywJIdnnJVMCvgN6FLHk098h9PL2DgKWfS8aiywKXctXUA78WYpYInqS531liF8Jc5HM91Azp1q+ImpzmZjfm0kgD7wLiGzZaPeKsQaB7ykMpvWpTSq+QHW4=,iv:qLn56QxmWFaYtz3MwZyCP7NEfypmWRW4HxQiZmn27fE=,tag:9bHVx5NDf3nZG0alxb4p1w==,type:str] +esphome: ENC[AES256_GCM,data:u8fNhi3J2wEJ6uxYT5LfYzktnmhTuHX4Tundu8iPxstFHkk7eF4HjlZi7KWmSZSFNqZqCRQ/Kksmtylc5LxGvVUAgwr4fUu9qBns3UbwwdrOrenefrcDZDq2Z2VjNtIHK2CbmqmDoodZy7JWgezY8ZzEjqcpv+btZ/91+ApM/5Q81gxcbFWMmurOp/yl0LSaCVu4sE7L60IstZisJMtmJ/YTY6KYop6TMuwUUDwVa5kgqzxLJWc0MEDt7rSutqVd7ryGzacvcaC4HcOcbVHVNc5tCqELBxExV4zd56rK2RLfBtDJVX7S3h+deWmNg6IMnPkAtgaer0QT8x4BIhbj8r7S2lcWDF1r1V2aZQ33mXbiuMlDVdmHliMnKpY+QIVLLtC0xNofRKixD+S1zmsjqQTJaMZO76dk8dRrZ+mnDPjDdLjT6687YPOeRuIAzLYhJrgyvQdE+SBgx0B71L/Q0Jp2joO4esx0iWwa8A6h8WZMulO1CGQpRfhI5GABz/sJtSm1pkZbxHJnhKXxAV3KiAP3RH673xkdo3Wmn1Q7RsOVsogXodYd4klmSgAszvF0eBl/pazCgfErI6ReNIr7cUGYd82Ub0gveSvPzqCPGJMkxwZ51QOUKI/pvw4pywolpH1JN5edPfoepVvbrrk/TD8X0Dd6YKOWuzjZ8LsuM1znqywwGh5BGvWzSpK1JZcYJG4Na5LFHgniyOuL6y6aANXSW6TBuehNwNEHkbm2GOjpxy3Ml5nWwQLkkD2wEdSU0/MW23rr6cOVUOrYiZvxip8l5Nf5Cl/JTLGaepRJaMBkTZj4G5x+r4zqOTBsbcEG8eiPAZG5uIxxVYo=,iv:U1srWrPW11lz/UYFW7Z9apla+ShH7W/QzDiw+evfcXg=,tag:1dxPp+m2O6xSyAZEsSf0dw==,type:str] sops: kms: [] gcp_kms: [] @@ -25,8 +25,8 @@ sops: TjdZRldhSzVtMkVoTzY1NjdGbCswRVUK0pi+8UuLqRmytcR2ikxOAM02iccl8P1y ixv0PKPLd+vQ23QeeQy/TfoGx16XttaDUnUrPLZR3TUKtAcld8+m6w== -----END AGE ENCRYPTED FILE----- - lastmodified: "2023-12-18T16:45:32Z" - mac: ENC[AES256_GCM,data:ZsC4C+VpUnHuMyqHa3/TIursyWDPV1+we/cBrUhyeqeNdeDveJ4a26jmIzNxWWHbJU7uMPy6BF6iHpS91YK4m+KKSqoXZiTjB8b9p3y9ietT9XQOLXdt8pxVFBEOSH7g9DeVbrJUHTOhzYpugMqC/QXcDLE1GQwa0eGUq3JIDh8=,iv:vbDpVJAXvYw1qQ5Or6CxOs8OO4yhtlVF4zh07bkkFJw=,tag:IqVAItuv23AbbGQsPh5dsg==,type:str] + lastmodified: "2024-01-12T02:04:19Z" + mac: ENC[AES256_GCM,data:pXHs+ucPNr+v/x3R2Jb+1zxnHdAeSneT+6lt20eLhjvcMQIFckYXFxc0eOMnV00jTWb+vyz6g5zHsg9+kv+xm/xBHozw9sRJi01Ni+AR/ZLSbVDa6NiMyu536MrA1TeD3iZrxgmpDTuxsChdETz0mmPyEPOMT29seWYlhzI/++o=,iv:2guaerRyQj6qz9Dyo2HbC/dXUA6cuAA+yuDwbUDCcK8=,tag:HcVT4KdLCyjwtWP24JVfhg==,type:str] pgp: - created_at: "2023-05-02T19:30:42Z" enc: | diff --git a/hosts/iron/services/esphome/devices/kueche-leiste.yaml b/hosts/iron/services/esphome/devices/kueche-leiste.yaml new file mode 100644 index 0000000..deaf92d --- /dev/null +++ b/hosts/iron/services/esphome/devices/kueche-leiste.yaml @@ -0,0 +1,54 @@ +esphome: + name: "kueche-leiste" + friendly_name: "Küche Leiste" + platformio_options: + board_build.flash_mode: dio + on_boot: + then: + - light.turn_on: + id: led_light + brightness: 50% + color_temperature: 2700 K + +esp32: + board: esp32-c3-devkitm-1 + variant: ESP32C3 + framework: + type: esp-idf + +logger: + +api: + encryption: + key: !secret apikey_kueche_leiste + +ota: + password: !secret otapass_kueche_leiste + +wifi: + ssid: !secret wifi_ssid_bw + password: !secret wifi_password_bw + domain: .iot.bw.jalr.de + power_save_mode: none + enable_on_boot: True + fast_connect: On + output_power: 8.5 + +output: + - platform: ledc + pin: GPIO0 + id: output_warm + - platform: ledc + pin: GPIO1 + id: output_cold + +light: + - platform: cwww + name: "LED light" + id: led_light + cold_white: output_cold + warm_white: output_warm + cold_white_color_temperature: 6500 K + warm_white_color_temperature: 2700 K + constant_brightness: true + gamma_correct: 0 diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index a3d1633..6be4d5f 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -82,6 +82,7 @@ in "light.yeelight_meteorite_ceiling_light" "light.eingang_deckenleuchte_deckenleuchte" "light.led_panel_schreibtisch_panel" + "light.kueche_leiste_led_light" ]; min_brightness = 20; } From 0b2e5071ab9335586104eebf07f440d9772341bb Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 13 Jan 2024 17:40:56 +0000 Subject: [PATCH 008/562] Add washing machine notification --- hosts/iron/services/home-assistant.nix | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index 6be4d5f..27d40ac 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -87,6 +87,25 @@ in min_brightness = 20; } ]; + automation = [ + { + alias = "Waschmaschine fertig Benachrichtigung"; + trigger = { + platform = "state"; + entity_id = "sensor.waschmaschine_aktueller_vorgang"; + to = "Knitterschutz/Ende"; + }; + action = [ + { + service = "notify.mobile_app_shift6mq"; + data = { + message = "Die Waschmaschine hat das Programm beendet."; + title = "Wäsche fertig"; + }; + } + ]; + } + ]; }; }; From 355efbc9f41329e1a1e492bd57d3d47fd1506855 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 21 Jan 2024 23:06:33 +0000 Subject: [PATCH 009/562] Add temperature/humidity sensor --- hosts/iron/services/esphome/devices/kueche-leiste.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hosts/iron/services/esphome/devices/kueche-leiste.yaml b/hosts/iron/services/esphome/devices/kueche-leiste.yaml index deaf92d..cffa6b8 100644 --- a/hosts/iron/services/esphome/devices/kueche-leiste.yaml +++ b/hosts/iron/services/esphome/devices/kueche-leiste.yaml @@ -52,3 +52,12 @@ light: warm_white_color_temperature: 2700 K constant_brightness: true gamma_correct: 0 + +sensor: + - platform: dht + pin: GPIO5 + temperature: + name: "Living Room Temperature" + humidity: + name: "Living Room Humidity" + update_interval: 60s From 2070072d0d81586d003275129401e5615e13093f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 31 Jan 2024 01:30:05 +0000 Subject: [PATCH 010/562] Rotate git-crypt key --- .../3044E71E3DEFF49B586CF5809BF4FCCB90854DA9.gpg | Bin 0 -> 294 bytes .../66FB54F6081375106EEBF651A222365EB448F934.gpg | Bin 294 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .git-crypt/keys/default/0/3044E71E3DEFF49B586CF5809BF4FCCB90854DA9.gpg delete mode 100644 .git-crypt/keys/default/0/66FB54F6081375106EEBF651A222365EB448F934.gpg diff --git a/.git-crypt/keys/default/0/3044E71E3DEFF49B586CF5809BF4FCCB90854DA9.gpg b/.git-crypt/keys/default/0/3044E71E3DEFF49B586CF5809BF4FCCB90854DA9.gpg new file mode 100644 index 0000000000000000000000000000000000000000..469ad364c1220f1f737889fec48f2e0ca3af59aa GIT binary patch literal 294 zcmZpPV^02)Y1$XoA}hqm?r>t(`gN=ipIj7Txh!nH$^948U2${qZ6#B08m5aX*PatG znD*e7wTD=-qe1|?b@j6vugJLc%mZ@QOn1#sEIW|2@=r&ll(px!?)=n#ozP4rrlXe* zFf)E@bq2jHf)~v>f8;jv{OfwZWO+lRnu;E_rR63&EH=B&kqgvSn`?OSZr@YiMPsY zZfo_E|KG-TvZ{Q(5g5@BUE`%g%-YFTXPKn DPGgOe literal 0 HcmV?d00001 diff --git a/.git-crypt/keys/default/0/66FB54F6081375106EEBF651A222365EB448F934.gpg b/.git-crypt/keys/default/0/66FB54F6081375106EEBF651A222365EB448F934.gpg deleted file mode 100644 index 8dcb496bb0095edc68b7cd7f124169a6d87dfb71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmZpPW4^EHop5=L^;;oEc89*yk19KFhXlGey=7`$v-7v~#BOHQ;H1_il1(?lCn@9@ zNTkF#-?(db%!8+W;W4YgV1>&Q7H8hJ@b|2eoYPXGx!K?+%eQ|TCWnO1bYIKZW1N5K z05jwLrYo`L3`(yIi~LV4`{jS}eb3CoCA(Fw-ntukoP8&M$RQKY+cP)KS#9L~*8TIX zkdq&47S^hE=(O(Va_n;IjdcuO6P5H!R#IIwL%Jt)X5gw{->z3C^j}{2@>81RM;pzb zth-9BLw<_bD@=^u@9#I|bH;J~KN=y7(>^i%{4?W3k4Hk(uPrueKRm2o7kIGz|8%?a z3ghYfA(;~mL@wUtYvlXS8LGabsR~q2O`H7LnvTjRMPJXX|tT E0HPs}SpWb4 From bdba2e358685f838dd216717ff4b46c3812824ad Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 31 Jan 2024 01:42:56 +0000 Subject: [PATCH 011/562] Rotate sops gpg key --- .sops.yaml | 2 +- hosts/aluminium/secrets.yaml | 24 +++++++++++------------ hosts/iron/secrets.yaml | 26 ++++++++++++------------- hosts/magnesium/secrets.yaml | 26 ++++++++++++------------- hosts/weinturm-pretix-prod/secrets.yaml | 26 ++++++++++++------------- 5 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.sops.yaml b/.sops.yaml index c264349..8284cc4 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -1,5 +1,5 @@ keys: - - &admin_jalr 66FB54F6081375106EEBF651A222365EB448F934 + - &admin_jalr 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 - &admin_jalr_tb FE170812543DF81393EA56BA5042B8317A10617E - &host_aluminium age1ne08hny30vrkejqhh7dcx4ql6dmkx6jw9dqkf3cz7mzvt53njy0qh59w44 - &host_hafnium age1ahnfjspcpwxxk7getcxkj3fypwt37rr6p3xsmp8n2tqqqz8jtg7q2am0et diff --git a/hosts/aluminium/secrets.yaml b/hosts/aluminium/secrets.yaml index a920ae9..01b9197 100644 --- a/hosts/aluminium/secrets.yaml +++ b/hosts/aluminium/secrets.yaml @@ -13,25 +13,25 @@ sops: - recipient: age1ne08hny30vrkejqhh7dcx4ql6dmkx6jw9dqkf3cz7mzvt53njy0qh59w44 enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBodUx5V25ETmJLTi9EZlRU - ZnYweXliTDl4ZUlvcmliTjhQRkpzU0pkNXlZCjFtYU5ySWFxOGlNL29SR2RJZHNu - UHJ4YWE4UWJVeEJBUXJwaHJBd292REkKLS0tIDV2WlppeUxIOWFPTHlRYTBaMzA0 - MU41eU8zeTRRUlZyUXV0U1N6U0NRNnMKZK3vfyRRr7Iu6HfpdpmDTKzUbEnCnW9l - rGjFmY9VX2q9w3j/4E5uUToQfeGMqqBTOFUB3hNgU8K5ZT7wMbOXAg== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBEZmNOcVlKNmZCdWN5NVBy + U3VRbXl3OUljWCtITXZCQTdrVkIxOEtDZHg4CktBNjVKRmVucjRpYXo3WXFWd1VV + MFpGdWIvTmNHRlJ4akxUQkZzWUtXVUkKLS0tIGs3NlNXREVkT1Nta2prSXk4QkV0 + NEtzRXY1Q1Njelc1YXNWVE9Jd2NnOFEKjOWHaxO5fF5l+c1Hv6QLBQajrvu1VimZ + Hqk0GYrFpfpFtbhBRyrYgmNuX/qIRMHemdXcNKDYcj0WXgsdVqH7Qw== -----END AGE ENCRYPTED FILE----- lastmodified: "2023-11-06T23:32:51Z" mac: ENC[AES256_GCM,data:7lW6i4ULus4348NwnV/ovcWebspBcEBzYqLtl+8xFOfe3erIFnC3iRo0ibZJ8yishZpIUxoVu08yxQoa1qEriC57WETMaR+iGUPaY75tHraBJGY26Etk7Hy2QhQ7D+srBY+CogHhHAD8HUwT4/ZiPqKe1eQAvNg/6HWnjbQkG/Q=,iv:r43odkYgQsyK5uJJ5V98kTx7enP7TRuFoTnYfHmD/8o=,tag:hR+1zCniHs1l3qSkhQhtFw==,type:str] pgp: - - created_at: "2022-11-02T22:14:19Z" + - created_at: "2024-01-31T01:19:14Z" enc: |- -----BEGIN PGP MESSAGE----- - wV4D3ylLYNOsO+0SAQdASri/Ozm8ibaE1PN8ItRanuAGU4jRQL1g4U8GbsiXWzcw - u7trrk6foY98pfVAP4Z78X4Dp79UagorlDCT6F6yWtfFODFdTVJdbzJsD5QtZ1vK - 0lEBMmTyLDw4lzTpedDhvgkWpNd33TC3WgAfRb/2LCSPmoVp83O7ja6BfuBQDkWY - gP7g815fKYigaihDH8HlNzvRoOOcGC9+6lyQkHTJyRjKsrg= - =WfhH + hF4DY/xpNY5WhB0SAQdAkeQx8NatnRtZUJa/G0zaw+NL5twonTayNH8mmNBXOWgw + EWaC9Yq6yWntxxfkVaJHN5BEzxVVumrKmpKSIkvCkJqFZ5SuYH/DyE9oZZSr7iC/ + 0l4BTKZ8SdxQL8usQPSQVbs9skr7KsYfhtjTeTi823RwZLD1+wZKwqe43AJTE0Hl + b2jIihfXa7wKTfi9jXI/mpxLRpGH8kZnPoQuldkz1zWIU14YKoTKq55My8qwR4uW + =RazZ -----END PGP MESSAGE----- - fp: 66FB54F6081375106EEBF651A222365EB448F934 + fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted version: 3.7.3 diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index a8cddef..f5dfd67 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -19,25 +19,25 @@ sops: - recipient: age1hx7fdu4mcha7kkxe7yevtvs6xgzgaafgenm3drhvr609wlj94sgqm497je enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsdnRlZktJNHQwSWdlb2l6 - aFNRS3U0UHM5UFVkTUtqMHU1Y093ZjdNMUhrCmZVMlBNSTlwYjlQaklzZENnR013 - UXFNaWp3WXhQOC81dGFFQXNwVHVYajAKLS0tIGh5ek95NnNRbWFsVkRncFJ3VUdE - TjdZRldhSzVtMkVoTzY1NjdGbCswRVUK0pi+8UuLqRmytcR2ikxOAM02iccl8P1y - ixv0PKPLd+vQ23QeeQy/TfoGx16XttaDUnUrPLZR3TUKtAcld8+m6w== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZSnhmN0RTMDcxR3hWMWFq + TjZNNHEzM214Tm9hK2RENm9hSlRFUy9aNW5FCm1paEx2TEEzcEd6cVIzaDk1Sk92 + NXNORGlONHQ1Uk9ocGlScXFIWmlwUDAKLS0tIDhTeDQ1KzhreEpMVFVvbFdiRjVR + SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV + GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- lastmodified: "2024-01-12T02:04:19Z" mac: ENC[AES256_GCM,data:pXHs+ucPNr+v/x3R2Jb+1zxnHdAeSneT+6lt20eLhjvcMQIFckYXFxc0eOMnV00jTWb+vyz6g5zHsg9+kv+xm/xBHozw9sRJi01Ni+AR/ZLSbVDa6NiMyu536MrA1TeD3iZrxgmpDTuxsChdETz0mmPyEPOMT29seWYlhzI/++o=,iv:2guaerRyQj6qz9Dyo2HbC/dXUA6cuAA+yuDwbUDCcK8=,tag:HcVT4KdLCyjwtWP24JVfhg==,type:str] pgp: - - created_at: "2023-05-02T19:30:42Z" - enc: | + - created_at: "2024-01-31T01:20:30Z" + enc: |- -----BEGIN PGP MESSAGE----- - hF4D3ylLYNOsO+0SAQdA16evFPF5J4wB4iw3y6rQbjpyVKiU/M7qZmdsKOBpLQgw - CccmnhDpRDvQ2pTlHh674o0flfXTvFQ2H2a7KuVDLerdUuw+aBGD1RB+Ob0Vvfoi - 0l4BKpYchtdJQpQuL2Gy5LToty9EZUVVRvhyIfSasWCdDH9ajNWHFcKn6MX9wj46 - ly6CeFgZKAyyeQ6qWQnft7inEQk7krl53NBrbzDN3Rfz71zmpO97h/av7y7ilffa - =DpnU + hF4DY/xpNY5WhB0SAQdAVIYE8wlQqo3HcaT37fSDHQ5i0CxUv9kyPT9BiDgwxA4w + hJlT2XPeSK6Ob1P++oGUrVhkZCuFEnV+6ZtNjwIu9EfU6azyPZEcmffmi3PdlSvW + 0l4BHCRW14iBbixIlZxloBUEEMCg5n5HNQ5vB4jRyq4af0uYxOgE3doZbb5gaVe2 + sODYeeb0u1DdJRlvfyPgqPvit4tkovzLKsO/RUpHqTuh8cXHA8ibLIXlIUbS7FoN + =aGjt -----END PGP MESSAGE----- - fp: 66FB54F6081375106EEBF651A222365EB448F934 + fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted version: 3.8.1 diff --git a/hosts/magnesium/secrets.yaml b/hosts/magnesium/secrets.yaml index 32a9318..cd7f526 100644 --- a/hosts/magnesium/secrets.yaml +++ b/hosts/magnesium/secrets.yaml @@ -10,25 +10,25 @@ sops: - recipient: age1swv42gad884z2v75kateem6k2za6ltkq6wu90ewqp6dp7gxprawslwz0w0 enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwa0ZIdE9lc2lNZlN0UFBU - RWdxQm1oR01GemJOSE9ZU1RYc3crRGg5REF3ClUzaEhyelZNTVUxeEwvc1V3eDBt - SUx0UXU0aTdnTGlTaWJvd2R6ajZmNVkKLS0tICszejE3WVNOTHR6Rms2bjQrbzEz - Vlk3Y1luTTg3bkpqNTNPUGlNYmNtMW8K9dEUwAuzvDZZoVi8FPZQ7/h75EV0L+VM - MlTGfEt38Hi7EOw+yfXvXYHse/OKypwcrPiJDT6IT/E+O9BJCjPKCA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNS0svemgzNTVsOEo3cDI5 + QVJ1dDVpK0Zyb3UwTUhWR29RalNPTENiQm1rCjdPbkZBd0hwQ3VvUmRTT2hlZEhp + Snk3cC9OTWZFSFhzMFBoSENMTHB4Qk0KLS0tIEltSEpUWkVmclRKdTA5b09RcGpT + QTBqZDZLeDFLK0k2MHF4Uk1mQTIxRHcKeLHz+lSnHLyTgw2Aq+IVGpIi9X8SQx+Q + bCSPPMPIZsL4VLInuZmcd2n/kEr80fQM2P3/ktW8RnViQjTU+kKbMg== -----END AGE ENCRYPTED FILE----- lastmodified: "2023-10-13T18:27:53Z" mac: ENC[AES256_GCM,data:8DPq0aGtoiMOdFyD+0NKGZ9OrDi1VXXS/6y3tH4DwlkLDpDqb2QsxunTDwoHlILQBu300nB2lUeGuGlp4/0FimFdiddlu2Ljq8vLh3wt+sz660RgfeaIcgWLSHtulyNIIQJ91wzzgbRADafFRCavVFvJALnIgeE+QDQa4ybLus0=,iv:T3xwELbHbqDszIkGs8BeJn9WV0LjagF1T+HLxCR/Aeo=,tag:NAIBPTRcnRtkGKhpWpe5Pw==,type:str] pgp: - - created_at: "2023-06-22T12:44:23Z" - enc: | + - created_at: "2024-01-31T01:20:03Z" + enc: |- -----BEGIN PGP MESSAGE----- - hF4D3ylLYNOsO+0SAQdAD/wwGspjkzL/xlqVxl8pixtRQGAlyuEJdTwja6e4bkAw - I+xwPhJH9FpkwArRKErtW9u6e9lM8zJOvgteseTRmQFkQ9fyTtXAx2lLg5JOFdYn - 0l4BkaozbVKjx1XEJBoBUF1YMfREKyrORk/kU2UTluQKkEp7xaojZkuhWEqEMC7N - tKVpPhef7M5escwcpQCpoI5+DCepJQDfoxyiAWx8P0a6tbV2F+X9y6kgb6iuWpf2 - =WNKv + hF4DY/xpNY5WhB0SAQdAKi5BqRHyG+CaeCKH8KuQWVWS8TbO/Kj38hTzbkBuyF8w + lxCni2VsyI4GDdBwy1jzJpqaqkqCwlzUXh7quHKNjZksHSsb8UTy6aZhDt+sz8Xk + 0l4BM0Dv37SESplctQ4hj8Go48nu3KaYfiE7pyP+HfsZksGn7KTeOWoqC+ET3HX0 + k/w1905xtcxInOalYgCpl2NzowAvKKy1mhzN8+bHW9xJq3ca5nYv0qfT0eFDJE1O + =pqvJ -----END PGP MESSAGE----- - fp: 66FB54F6081375106EEBF651A222365EB448F934 + fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted version: 3.7.3 diff --git a/hosts/weinturm-pretix-prod/secrets.yaml b/hosts/weinturm-pretix-prod/secrets.yaml index bfd0f7e..27523d8 100644 --- a/hosts/weinturm-pretix-prod/secrets.yaml +++ b/hosts/weinturm-pretix-prod/secrets.yaml @@ -9,25 +9,25 @@ sops: - recipient: age1djjxl3lcvzs85nj0met6w8ujsz8pvr6ngmmdwlxfh0k9d5lkrpdqlzzehf enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0RXR4RnVQNjFvZ2NSZVhj - QVZva0lKS1RxM09sYmJjZE12NTBMd3NrUlNjCkV0aklndEZDM1BaWFhxYUJ5TDBG - T24zODBSdFVWV2VCNVZoM2s3RHJ4WHMKLS0tIC9LdDFMRW13YTBHNlVOdUY0b1NX - U3pyTDB4c1FWdHBPVjVjV3VpTjFWamsKDtc9C3xy/3Zu83+jQYCnHk8vatWANt4M - +Zo5kZ5yfYVSnvMvgpWoAHk/quXSLNg2YhKUDrYP5y57Q/jZTX3YbA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3MjRZRzI5WDNSYXNNOXBE + enNUdi9aWjRzMlU3THVMcGd2eC9zb0wwMFFZCnRQbUh6L3lxS1FKS2pqdUQ0aHg1 + K3dlNDhSK2VvYjdjRGppNTV5SE8zbUUKLS0tIHN0QldlNXJtRmRLL2c3SEU3eWkr + MGh3UVh2R05WWDU3SDVFKzdvODRGQVUKo1u58Ra1dhAfBmv3xwLk/6+6/mFPJn0Z + FyL7yjU6JMWzR/8FUv5lJAubudiZ8MnuH+10deGvQnT5AxG9fNzi5w== -----END AGE ENCRYPTED FILE----- lastmodified: "2023-09-25T15:21:49Z" mac: ENC[AES256_GCM,data:R3uP3tH4faLEtga0E2Gh4WrLrpV7dYvxWDEJkD5ycUc2vglY3MeswMEhNEhkD7cpYiWKB8TaBeBe/mP3hOmgs3WY1sDURZSqKKFT1FfTTL86e1BAOq7S4rG2lRQyNxxDjeJCqFQbEV3feggqPFnV8x8kBObAd29akAK5jQn1TK8=,iv:4F83RXiyLDlzlDVgMWKAOc7BTGSi4F0so9Ub/uzl+VM=,tag:2Q2BRBRR9yC6Uli5TcZhEg==,type:str] pgp: - - created_at: "2023-07-08T09:50:21Z" - enc: | + - created_at: "2024-01-31T01:20:41Z" + enc: |- -----BEGIN PGP MESSAGE----- - hF4D3ylLYNOsO+0SAQdAMH1wIM+ENgeWlLsj7qUEorj8O1L5NlW9ABKB/Whmz3Ew - xm1SbZeFPPBPcT1dfVCF+W1CYDjrFau4DXhkcz5Z6x3ENg9rZujtRAZY9c+53aqD - 0l4B4zxls8vy0K/kipHn010WKhHEPMmABJf+d0rAkT6tbVzcxU3TKlZ2BWxwifM+ - BYDGZ2A6opgV8G4Q68n6CInyhMROIIzJJpWkP0YZCIzzVQ+9yelq9jZvuuxR7v9+ - =Lkul + hF4DY/xpNY5WhB0SAQdAj+5TReNbi6wBP+ftlrJK9jfrHor2FveQMlmHsfHGkjMw + lGlhoHuDnRbVCWC4ruHGFtOclvw2Kjja7ZWbc+7CX34KREAETN89Jic2tGmQKY9q + 0l4B2gqyXsnrpD/n+gOJlnpZcxlUX0iriO5POEf9czTsFKRFnTdZcAX+7Dgv7Iqn + TkJJLYo64mpV3TPvcj2UlejcANcNV82gDWwIbLdKs2UPdFVJqfpP2z6V5bQCML/y + =4iJS -----END PGP MESSAGE----- - fp: 66FB54F6081375106EEBF651A222365EB448F934 + fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted version: 3.7.3 From c0e59799307c5e51f87982d473320bb0358b78dc Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 31 Jan 2024 02:02:22 +0000 Subject: [PATCH 012/562] Add new gpg key to user's ssh authorized keys --- home-manager/users/jalr.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home-manager/users/jalr.nix b/home-manager/users/jalr.nix index 51bd39b..a749b61 100644 --- a/home-manager/users/jalr.nix +++ b/home-manager/users/jalr.nix @@ -32,6 +32,9 @@ "wireshark" ]; # Enable ‘sudo’ for the user. shell = pkgs.fish; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH3l+Yixrsjhze20CSjvUK4Qj/BNqbTNitgk20vuzPej cardno:25_750_479" + ]; }; home-manager = { From 1436e4091c4eeee5651685f5de11fab37ea6c43b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 31 Jan 2024 02:02:08 +0000 Subject: [PATCH 013/562] Update default GPG key --- home-manager/users/jalr.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home-manager/users/jalr.nix b/home-manager/users/jalr.nix index a749b61..dca1e9a 100644 --- a/home-manager/users/jalr.nix +++ b/home-manager/users/jalr.nix @@ -13,7 +13,7 @@ }; signByDefault = true; }; - gpg.defaultKey = "66FB54F6081375106EEBF651A222365EB448F934"; + gpg.defaultKey = "3044E71E3DEFF49B586CF5809BF4FCCB90854DA9"; }; users.users.jalr = { From d783abcfbc67f159e15619f763173b4138289ce2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 31 Jan 2024 02:12:18 +0000 Subject: [PATCH 014/562] Update pretix version Bump pretix version from 2023.10.0 to 2024.1.0 --- pkgs/pretix/poetry.lock | 1231 +++++++++++++++++---------------- pkgs/pretix/pretix-static.nix | 2 +- pkgs/pretix/pyproject.toml | 2 +- 3 files changed, 627 insertions(+), 608 deletions(-) diff --git a/pkgs/pretix/poetry.lock b/pkgs/pretix/poetry.lock index 22cd9d9..e94e1b7 100644 --- a/pkgs/pretix/poetry.lock +++ b/pkgs/pretix/poetry.lock @@ -2,87 +2,87 @@ [[package]] name = "aiohttp" -version = "3.9.1" +version = "3.9.3" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.9.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1f80197f8b0b846a8d5cf7b7ec6084493950d0882cc5537fb7b96a69e3c8590"}, - {file = "aiohttp-3.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72444d17777865734aa1a4d167794c34b63e5883abb90356a0364a28904e6c0"}, - {file = "aiohttp-3.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9b05d5cbe9dafcdc733262c3a99ccf63d2f7ce02543620d2bd8db4d4f7a22f83"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c4fa235d534b3547184831c624c0b7c1e262cd1de847d95085ec94c16fddcd5"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:289ba9ae8e88d0ba16062ecf02dd730b34186ea3b1e7489046fc338bdc3361c4"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bff7e2811814fa2271be95ab6e84c9436d027a0e59665de60edf44e529a42c1f"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81b77f868814346662c96ab36b875d7814ebf82340d3284a31681085c051320f"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b9c7426923bb7bd66d409da46c41e3fb40f5caf679da624439b9eba92043fa6"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8d44e7bf06b0c0a70a20f9100af9fcfd7f6d9d3913e37754c12d424179b4e48f"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22698f01ff5653fe66d16ffb7658f582a0ac084d7da1323e39fd9eab326a1f26"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ca7ca5abfbfe8d39e653870fbe8d7710be7a857f8a8386fc9de1aae2e02ce7e4"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8d7f98fde213f74561be1d6d3fa353656197f75d4edfbb3d94c9eb9b0fc47f5d"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5216b6082c624b55cfe79af5d538e499cd5f5b976820eac31951fb4325974501"}, - {file = "aiohttp-3.9.1-cp310-cp310-win32.whl", hash = "sha256:0e7ba7ff228c0d9a2cd66194e90f2bca6e0abca810b786901a569c0de082f489"}, - {file = "aiohttp-3.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:c7e939f1ae428a86e4abbb9a7c4732bf4706048818dfd979e5e2839ce0159f23"}, - {file = "aiohttp-3.9.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:df9cf74b9bc03d586fc53ba470828d7b77ce51b0582d1d0b5b2fb673c0baa32d"}, - {file = "aiohttp-3.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ecca113f19d5e74048c001934045a2b9368d77b0b17691d905af18bd1c21275e"}, - {file = "aiohttp-3.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8cef8710fb849d97c533f259103f09bac167a008d7131d7b2b0e3a33269185c0"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bea94403a21eb94c93386d559bce297381609153e418a3ffc7d6bf772f59cc35"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91c742ca59045dce7ba76cab6e223e41d2c70d79e82c284a96411f8645e2afff"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c93b7c2e52061f0925c3382d5cb8980e40f91c989563d3d32ca280069fd6a87"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee2527134f95e106cc1653e9ac78846f3a2ec1004cf20ef4e02038035a74544d"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11ff168d752cb41e8492817e10fb4f85828f6a0142b9726a30c27c35a1835f01"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b8c3a67eb87394386847d188996920f33b01b32155f0a94f36ca0e0c635bf3e3"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c7b5d5d64e2a14e35a9240b33b89389e0035e6de8dbb7ffa50d10d8b65c57449"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:69985d50a2b6f709412d944ffb2e97d0be154ea90600b7a921f95a87d6f108a2"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:c9110c06eaaac7e1f5562caf481f18ccf8f6fdf4c3323feab28a93d34cc646bd"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d737e69d193dac7296365a6dcb73bbbf53bb760ab25a3727716bbd42022e8d7a"}, - {file = "aiohttp-3.9.1-cp311-cp311-win32.whl", hash = "sha256:4ee8caa925aebc1e64e98432d78ea8de67b2272252b0a931d2ac3bd876ad5544"}, - {file = "aiohttp-3.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:a34086c5cc285be878622e0a6ab897a986a6e8bf5b67ecb377015f06ed316587"}, - {file = "aiohttp-3.9.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f800164276eec54e0af5c99feb9494c295118fc10a11b997bbb1348ba1a52065"}, - {file = "aiohttp-3.9.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:500f1c59906cd142d452074f3811614be04819a38ae2b3239a48b82649c08821"}, - {file = "aiohttp-3.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0b0a6a36ed7e164c6df1e18ee47afbd1990ce47cb428739d6c99aaabfaf1b3af"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69da0f3ed3496808e8cbc5123a866c41c12c15baaaead96d256477edf168eb57"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:176df045597e674fa950bf5ae536be85699e04cea68fa3a616cf75e413737eb5"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b796b44111f0cab6bbf66214186e44734b5baab949cb5fb56154142a92989aeb"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f27fdaadce22f2ef950fc10dcdf8048407c3b42b73779e48a4e76b3c35bca26c"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcb6532b9814ea7c5a6a3299747c49de30e84472fa72821b07f5a9818bce0f66"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:54631fb69a6e44b2ba522f7c22a6fb2667a02fd97d636048478db2fd8c4e98fe"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4b4c452d0190c5a820d3f5c0f3cd8a28ace48c54053e24da9d6041bf81113183"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:cae4c0c2ca800c793cae07ef3d40794625471040a87e1ba392039639ad61ab5b"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:565760d6812b8d78d416c3c7cfdf5362fbe0d0d25b82fed75d0d29e18d7fc30f"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54311eb54f3a0c45efb9ed0d0a8f43d1bc6060d773f6973efd90037a51cd0a3f"}, - {file = "aiohttp-3.9.1-cp312-cp312-win32.whl", hash = "sha256:85c3e3c9cb1d480e0b9a64c658cd66b3cfb8e721636ab8b0e746e2d79a7a9eed"}, - {file = "aiohttp-3.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:11cb254e397a82efb1805d12561e80124928e04e9c4483587ce7390b3866d213"}, - {file = "aiohttp-3.9.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8a22a34bc594d9d24621091d1b91511001a7eea91d6652ea495ce06e27381f70"}, - {file = "aiohttp-3.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:598db66eaf2e04aa0c8900a63b0101fdc5e6b8a7ddd805c56d86efb54eb66672"}, - {file = "aiohttp-3.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c9376e2b09895c8ca8b95362283365eb5c03bdc8428ade80a864160605715f1"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41473de252e1797c2d2293804e389a6d6986ef37cbb4a25208de537ae32141dd"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c5857612c9813796960c00767645cb5da815af16dafb32d70c72a8390bbf690"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffcd828e37dc219a72c9012ec44ad2e7e3066bec6ff3aaa19e7d435dbf4032ca"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:219a16763dc0294842188ac8a12262b5671817042b35d45e44fd0a697d8c8361"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f694dc8a6a3112059258a725a4ebe9acac5fe62f11c77ac4dcf896edfa78ca28"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bcc0ea8d5b74a41b621ad4a13d96c36079c81628ccc0b30cfb1603e3dfa3a014"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:90ec72d231169b4b8d6085be13023ece8fa9b1bb495e4398d847e25218e0f431"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:cf2a0ac0615842b849f40c4d7f304986a242f1e68286dbf3bd7a835e4f83acfd"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:0e49b08eafa4f5707ecfb321ab9592717a319e37938e301d462f79b4e860c32a"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2c59e0076ea31c08553e868cec02d22191c086f00b44610f8ab7363a11a5d9d8"}, - {file = "aiohttp-3.9.1-cp38-cp38-win32.whl", hash = "sha256:4831df72b053b1eed31eb00a2e1aff6896fb4485301d4ccb208cac264b648db4"}, - {file = "aiohttp-3.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:3135713c5562731ee18f58d3ad1bf41e1d8883eb68b363f2ffde5b2ea4b84cc7"}, - {file = "aiohttp-3.9.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cfeadf42840c1e870dc2042a232a8748e75a36b52d78968cda6736de55582766"}, - {file = "aiohttp-3.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:70907533db712f7aa791effb38efa96f044ce3d4e850e2d7691abd759f4f0ae0"}, - {file = "aiohttp-3.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cdefe289681507187e375a5064c7599f52c40343a8701761c802c1853a504558"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7481f581251bb5558ba9f635db70908819caa221fc79ee52a7f58392778c636"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:49f0c1b3c2842556e5de35f122fc0f0b721334ceb6e78c3719693364d4af8499"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d406b01a9f5a7e232d1b0d161b40c05275ffbcbd772dc18c1d5a570961a1ca4"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d8e4450e7fe24d86e86b23cc209e0023177b6d59502e33807b732d2deb6975f"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c0266cd6f005e99f3f51e583012de2778e65af6b73860038b968a0a8888487a"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab221850108a4a063c5b8a70f00dd7a1975e5a1713f87f4ab26a46e5feac5a0e"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c88a15f272a0ad3d7773cf3a37cc7b7d077cbfc8e331675cf1346e849d97a4e5"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:237533179d9747080bcaad4d02083ce295c0d2eab3e9e8ce103411a4312991a0"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:02ab6006ec3c3463b528374c4cdce86434e7b89ad355e7bf29e2f16b46c7dd6f"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04fa38875e53eb7e354ece1607b1d2fdee2d175ea4e4d745f6ec9f751fe20c7c"}, - {file = "aiohttp-3.9.1-cp39-cp39-win32.whl", hash = "sha256:82eefaf1a996060602f3cc1112d93ba8b201dbf5d8fd9611227de2003dddb3b7"}, - {file = "aiohttp-3.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:9b05d33ff8e6b269e30a7957bd3244ffbce2a7a35a81b81c382629b80af1a8bf"}, - {file = "aiohttp-3.9.1.tar.gz", hash = "sha256:8fc49a87ac269d4529da45871e2ffb6874e87779c3d0e2ccd813c0899221239d"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52"}, + {file = "aiohttp-3.9.3-cp310-cp310-win32.whl", hash = "sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b"}, + {file = "aiohttp-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4"}, + {file = "aiohttp-3.9.3-cp311-cp311-win32.whl", hash = "sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5"}, + {file = "aiohttp-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f"}, + {file = "aiohttp-3.9.3-cp312-cp312-win32.whl", hash = "sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38"}, + {file = "aiohttp-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2"}, + {file = "aiohttp-3.9.3-cp38-cp38-win32.whl", hash = "sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63"}, + {file = "aiohttp-3.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d"}, + {file = "aiohttp-3.9.3-cp39-cp39-win32.whl", hash = "sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051"}, + {file = "aiohttp-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc"}, + {file = "aiohttp-3.9.3.tar.gz", hash = "sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7"}, ] [package.dependencies] @@ -168,54 +168,55 @@ files = [ [[package]] name = "attrs" -version = "23.1.0" +version = "23.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]", "pre-commit"] +dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] [[package]] name = "babel" -version = "2.13.1" +version = "2.14.0" description = "Internationalization utilities" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, - {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, + {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, + {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] -[package.dependencies] -setuptools = {version = "*", markers = "python_version >= \"3.12\""} - [package.extras] dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "beautifulsoup4" -version = "4.12.2" +version = "4.12.3" description = "Screen-scraping library" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, - {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, ] [package.dependencies] soupsieve = ">1.2" [package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] @@ -251,48 +252,48 @@ dev = ["Sphinx (==4.3.2)", "black (==22.3.0)", "build (==0.8.0)", "flake8 (==4.0 [[package]] name = "cbor2" -version = "5.5.1" +version = "5.6.0" description = "CBOR (de)serializer with extensive tag support" optional = false python-versions = ">=3.8" files = [ - {file = "cbor2-5.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:37ba4f719384bd4ea317e92a8763ea343e205f3112c8241778fd9dbc64ae1498"}, - {file = "cbor2-5.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:425ae919120b9d05b4794b3e5faf6584fc47a9d61db059d4f00ce16ae93a3f63"}, - {file = "cbor2-5.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c511ff6356d6f4292ced856d5048a24ee61a85634816f29dadf1f089e8cb4f9"}, - {file = "cbor2-5.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6ab54a9282dd99a3a70d0f64706d3b3592e7920564a93101caa74dec322346c"}, - {file = "cbor2-5.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:39d94852dd61bda5b3d2bfe74e7b194a7199937d270f90099beec3e7584f0c9b"}, - {file = "cbor2-5.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:65532ba929beebe1c63317ad00c79d4936b60a5c29a3c329d2aa7df4e72ad907"}, - {file = "cbor2-5.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:1206180f66a9ad23e692cf457610c877f186ad303a1264b6c5335015b7bee83e"}, - {file = "cbor2-5.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:42155a20be46312fad2ceb85a408e2d90da059c2d36a65e0b99abca57c5357fd"}, - {file = "cbor2-5.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6f3827ae14c009df9b37790f1da5cd1f9d64f7ffec472a49ebf865c0af6b77e9"}, - {file = "cbor2-5.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bfa417dbb8b4581ad3c2312469899518596551cfb0fe5bdaf8a6921cff69d7e"}, - {file = "cbor2-5.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3317e7dfb4f3180be90bcd853204558d89f119b624c2168153b53dea305e79d"}, - {file = "cbor2-5.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a5770bdf4340de55679efe6c38fc6d64529fda547e7a85eb0217a82717a8235"}, - {file = "cbor2-5.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b5d53826ad0c92fcb004b2a475896610b51e0ca010f6c37d762aae44ab0807b2"}, - {file = "cbor2-5.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc77cac985f7f7a20f2d8b1957d1e79393d7df823f61c7c6173d3a0011c1d770"}, - {file = "cbor2-5.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9e45d5aa8e484b4bf57240d8e7949389f1c9d4073758abb30954386321b55c9d"}, - {file = "cbor2-5.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:93b949a66bec40dd0ca87a6d026136fea2cf1660120f921199a47ac8027af253"}, - {file = "cbor2-5.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93d601ca92d917f769370a5e6c3ead62dca6451b2b603915e4fcf300083b9fcd"}, - {file = "cbor2-5.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a11876abd50b9f70d114fcdbb0b5a3249ccd7d321465f0350028fd6d2317e114"}, - {file = "cbor2-5.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fd77c558decdba2a2a7a463e6346d53781d2163bacf205f77b999f561ba4ac73"}, - {file = "cbor2-5.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efb81920d80410b8e80a4a6a8b06ec9b766be0ae7f3029af8ae4b30914edcfa3"}, - {file = "cbor2-5.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:4bb35f3b1ebd4b7b37628f0cd5c839f3008dec669194a2a4a33d91bab7f8663b"}, - {file = "cbor2-5.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f41e4a439f642954ed728dc18915098b5f2ebec7029eaebe52c06c52b6a9a63a"}, - {file = "cbor2-5.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4eae4d56314f22920a28bf7affefdfc918646877ce3b16220dc6cf38a584aa41"}, - {file = "cbor2-5.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:559a0c1ec8dcedd6142b81727403e0f5a2e8f4c18e8bb3c548107ec39af4e9cb"}, - {file = "cbor2-5.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:537da7bfee97ee44a11b300c034c18e674af6a5dc4718a6fba141037f099c7ec"}, - {file = "cbor2-5.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5c99fd8bbc6bbf3bf4d6b2996594ae633b778b27b0531559487950762c4e1e3f"}, - {file = "cbor2-5.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4ee46e6dbc8e2cf302a022fec513d57dba65e9d5ec495bcd1ad97a5dbdbab249"}, - {file = "cbor2-5.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:67e2be461320197495fff55f250b111d4125a0a2d02e6256e41f8598adc3ad3f"}, - {file = "cbor2-5.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4384a56afef0b908b61c8ea3cca3e257a316427ace3411308f51ee301b23adf9"}, - {file = "cbor2-5.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8cc64acc606b7f2a4b673a1d6cde5a9cb1860a6ce27b353e269c9535efbd62c"}, - {file = "cbor2-5.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50019fea3cb07fa9b2b53772a52b4243e87de232591570c4c272b3ebdb419493"}, - {file = "cbor2-5.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a18be0af9241883bc67a036c1f33e3f9956d31337ccd412194bf759bc1095e03"}, - {file = "cbor2-5.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:60e7e0073291096605de27de3ce006148cf9a095199160439555f14f93d044d5"}, - {file = "cbor2-5.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:41f7501338228b27dac88c1197928cf8985f6fc775f59be89c6fdaddb4e69658"}, - {file = "cbor2-5.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:c85ab7697252af2240e939707c935ea18081ccb580d4b5b9a94b04148ab2c32b"}, - {file = "cbor2-5.5.1-py3-none-any.whl", hash = "sha256:dca639c8ff81b9f0c92faf97324adfdbfb5c2a5bb97f249606c6f5b94c77cc0d"}, - {file = "cbor2-5.5.1.tar.gz", hash = "sha256:f9e192f461a9f8f6082df28c035b006d153904213dc8640bed8a72d72bbc9475"}, + {file = "cbor2-5.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7569627514699b10d903795e344e5520cd758f7db968e46e667b6875c409610b"}, + {file = "cbor2-5.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e6d5c5b5cb25450561c92c9ac7d72912027cfa8807aab77ea6f5549e2157335"}, + {file = "cbor2-5.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19403d65c32709c4940ae729470dd77ed88ebbd4972355d0ec23ff4dbe34faa3"}, + {file = "cbor2-5.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329196be76fbba0ad63926913eb225dddcfc4891ff6760484fdcf071cebc7188"}, + {file = "cbor2-5.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ac835523af0e37086b5f6aac9283e45cffdf6fa0f1be5eecf967014e7184d948"}, + {file = "cbor2-5.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:63ab6734098c494687b26531ed4d44c06f287a44061ae1bc16b3fa65563d80b0"}, + {file = "cbor2-5.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:777897d46e31bc2683ed9e015a9c97fc97929bf78d620fc3361fe39a86912eba"}, + {file = "cbor2-5.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5d3932c3f0637439f121a54b9e6020e62e9f2620751b2e850a6f09f1c1ee299e"}, + {file = "cbor2-5.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f017d451b9b7e45759e9ffbfae8a2b1bda3f6a547d6451f7761655a8438f956"}, + {file = "cbor2-5.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c66cf65766195c310b2134ceeb20927fce85373d13483e97d2211dd499739f9b"}, + {file = "cbor2-5.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2411ad0fc8817ff38076523bfc43d193188eedcb0d3a1c52428672636f3760d4"}, + {file = "cbor2-5.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b5ce2c7c9172c401db047202029f96a5799c68ff0c936874c596e3718cd383e4"}, + {file = "cbor2-5.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1a4e1bb41ac5dc27bd4737c92934e9daf38440ce849eaf3e25da24f9d1fd2195"}, + {file = "cbor2-5.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:83736e076e878f3679ef2dd6cfce5ebcb71f65f9eeada1d14b16b5b87dbc2250"}, + {file = "cbor2-5.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8724f172b581414444801bd7e4974a1512822231e30162c7d5a6374a3c89ddbf"}, + {file = "cbor2-5.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ae83ca762a60b43c83c23edf487e41dc90ba7cc98e25134cde2bf09e99ec1fa3"}, + {file = "cbor2-5.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0da8f4aed346ff0ce667254331d341ad27d8d62c8813536f019d8a68aef40eba"}, + {file = "cbor2-5.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99780a5fe8e23a467eb1084feb74b9bdc6598f0eb6c09821b00bb65ddd834d67"}, + {file = "cbor2-5.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f0167b4fd537db4925ee8c2890fb950493280628d9c18034625fa5c8a96db689"}, + {file = "cbor2-5.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8a073761d9148e4ffbfb0e4125643c059a4d5d5c5c5448cd56759765e1113487"}, + {file = "cbor2-5.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:62ced11efb37729e1a2a5f04fb8c2661d46ae6adbdddc23cb31ffad2ec75ff7a"}, + {file = "cbor2-5.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0130d50aa1cd0ba8ce65eda5bbbb57bda3f2c9cd86bba7d8be5e3c9b19f88f93"}, + {file = "cbor2-5.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:29ba57a33fcffd5d70fd6ac1182520e887918f9d2b6225a06eaae029f070e18f"}, + {file = "cbor2-5.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe7a459aae6ca4abdc490fdf89463cbeea3449569eca853af7c2672286edcea0"}, + {file = "cbor2-5.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0c098a2802ec1df0a6e96c415203c8a52c42158e1e07d8074c9acf19bcc146f"}, + {file = "cbor2-5.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d3184d91a855aedb6f0e76e5ac548a1e43a7fcd3d5ba2deb0894b81c77c2c461"}, + {file = "cbor2-5.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:622b4fe945ecdd93df8c21169c8f1a85dcf21d78ecb1e8b7f9f2795520480010"}, + {file = "cbor2-5.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:aaf6a424742f55e2991c7013df02a629d24c64e5730c3fd3aebcbbebc580bfab"}, + {file = "cbor2-5.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e1ff25fb1b6bafbdb192037860471962f59ce9c1f584611572360e15725abbb1"}, + {file = "cbor2-5.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4143152579ff9e0668688d6d41e2f6a20161f8dc5af97b1b92f400d3112888af"}, + {file = "cbor2-5.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df7b7cf96e9027138129edbfa0e2024d6f4beb7db42c2a992ab867eff3c04d46"}, + {file = "cbor2-5.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:789496ece76712c298f1fd4681d074f6828ed0d788076c5949c4474c11291f68"}, + {file = "cbor2-5.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3d8525d4f525add7971b75b7ff947eed085405d9db7ad6fad456909cbffd18c1"}, + {file = "cbor2-5.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c9423aaf110ce7c3e856f2d5dc6ece7358de48bad7a88d2633f5943d5cd20676"}, + {file = "cbor2-5.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:52fa913133b82578244e6b86b8dff9d88c9d13acf84955b6942650689f302c01"}, + {file = "cbor2-5.6.0-py3-none-any.whl", hash = "sha256:7ba2d0abbb199dd08b7ea59038dbf6524277f124d836b66744cfdd49d31fd012"}, + {file = "cbor2-5.6.0.tar.gz", hash = "sha256:9d94e2226f8f5792fdba5ab20e07b9bfe02e76c10c3ca126418cd4310439d002"}, ] [package.extras] @@ -616,47 +617,56 @@ files = [ [[package]] name = "cryptography" -version = "41.0.7" +version = "42.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf"}, - {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1"}, - {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157"}, - {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406"}, - {file = "cryptography-41.0.7-cp37-abi3-win32.whl", hash = "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d"}, - {file = "cryptography-41.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309"}, - {file = "cryptography-41.0.7.tar.gz", hash = "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc"}, + {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be"}, + {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d"}, + {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4"}, + {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2"}, + {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529"}, + {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1"}, + {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1"}, + {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929"}, + {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9"}, + {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2"}, + {file = "cryptography-42.0.2-cp37-abi3-win32.whl", hash = "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee"}, + {file = "cryptography-42.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee"}, + {file = "cryptography-42.0.2-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242"}, + {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a"}, + {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446"}, + {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90"}, + {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3"}, + {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589"}, + {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a"}, + {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea"}, + {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33"}, + {file = "cryptography-42.0.2-cp39-abi3-win32.whl", hash = "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635"}, + {file = "cryptography-42.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6"}, + {file = "cryptography-42.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380"}, + {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6"}, + {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2"}, + {file = "cryptography-42.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f"}, + {file = "cryptography-42.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008"}, + {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12"}, + {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a"}, + {file = "cryptography-42.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65"}, + {file = "cryptography-42.0.2.tar.gz", hash = "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888"}, ] [package.dependencies] -cffi = ">=1.12" +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] @@ -732,13 +742,13 @@ static3 = "*" [[package]] name = "django" -version = "4.2.8" +version = "4.2.9" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." optional = false python-versions = ">=3.8" files = [ - {file = "Django-4.2.8-py3-none-any.whl", hash = "sha256:6cb5dcea9e3d12c47834d32156b8841f533a4493c688e2718cafd51aa430ba6d"}, - {file = "Django-4.2.8.tar.gz", hash = "sha256:d69d5e36cc5d9f4eb4872be36c622878afcdce94062716cf3e25bcedcb168b62"}, + {file = "Django-4.2.9-py3-none-any.whl", hash = "sha256:2cc2fc7d1708ada170ddd6c99f35cc25db664f165d3794bc7723f46b2f8c8984"}, + {file = "Django-4.2.9.tar.gz", hash = "sha256:12498cc3cb8bc8038539fef9e90e95f507502436c1f0c3a673411324fa675d14"}, ] [package.dependencies] @@ -1153,72 +1163,88 @@ files = [ [[package]] name = "frozenlist" -version = "1.4.0" +version = "1.4.1" description = "A list-like structure which implements collections.abc.MutableSequence" optional = false python-versions = ">=3.8" files = [ - {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab"}, - {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559"}, - {file = "frozenlist-1.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62"}, - {file = "frozenlist-1.4.0-cp310-cp310-win32.whl", hash = "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0"}, - {file = "frozenlist-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956"}, - {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95"}, - {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3"}, - {file = "frozenlist-1.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb"}, - {file = "frozenlist-1.4.0-cp311-cp311-win32.whl", hash = "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431"}, - {file = "frozenlist-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1"}, - {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3"}, - {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503"}, - {file = "frozenlist-1.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8"}, - {file = "frozenlist-1.4.0-cp38-cp38-win32.whl", hash = "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc"}, - {file = "frozenlist-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7"}, - {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf"}, - {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963"}, - {file = "frozenlist-1.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3"}, - {file = "frozenlist-1.4.0-cp39-cp39-win32.whl", hash = "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f"}, - {file = "frozenlist-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167"}, - {file = "frozenlist-1.4.0.tar.gz", hash = "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, + {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, + {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, + {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, + {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, + {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, + {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, + {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, + {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, + {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, + {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, + {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, + {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, ] [[package]] @@ -1264,13 +1290,13 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.11.0" +version = "7.0.1" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, - {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, + {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, + {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, ] [package.dependencies] @@ -1308,13 +1334,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.20.0" +version = "4.21.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.20.0-py3-none-any.whl", hash = "sha256:ed6231f0429ecf966f5bc8dfef245998220549cbbcf140f913b7464c52c3b6b3"}, - {file = "jsonschema-4.20.0.tar.gz", hash = "sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa"}, + {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, + {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, ] [package.dependencies] @@ -1329,13 +1355,13 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-specifications" -version = "2023.11.2" +version = "2023.12.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema_specifications-2023.11.2-py3-none-any.whl", hash = "sha256:e74ba7c0a65e8cb49dc26837d6cfe576557084a8b423ed16a420984228104f93"}, - {file = "jsonschema_specifications-2023.11.2.tar.gz", hash = "sha256:9472fc4fea474cd74bea4a2b190daeccb5a9e4db2ea80efcf7a1b582fc9a81b8"}, + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, ] [package.dependencies] @@ -1343,12 +1369,12 @@ referencing = ">=0.31.0" [[package]] name = "jwcrypto" -version = "1.5.0" +version = "1.5.1" description = "Implementation of JOSE Web standards" optional = false python-versions = ">= 3.6" files = [ - {file = "jwcrypto-1.5.0.tar.gz", hash = "sha256:2c1dc51cf8e38ddf324795dfe9426dee9dd46caf47f535ccbc18781fba810b8d"}, + {file = "jwcrypto-1.5.1.tar.gz", hash = "sha256:48bb9bf433777136253579e52b75ffe0f9a4a721d133d01f45a0b91ed5f4f1ae"}, ] [package.dependencies] @@ -1357,13 +1383,13 @@ deprecated = "*" [[package]] name = "kombu" -version = "5.3.4" +version = "5.3.5" description = "Messaging library for Python." optional = false python-versions = ">=3.8" files = [ - {file = "kombu-5.3.4-py3-none-any.whl", hash = "sha256:63bb093fc9bb80cfb3a0972336a5cec1fa7ac5f9ef7e8237c6bf8dda9469313e"}, - {file = "kombu-5.3.4.tar.gz", hash = "sha256:0bb2e278644d11dea6272c17974a3dbb9688a949f3bb60aeb5b791329c44fadc"}, + {file = "kombu-5.3.5-py3-none-any.whl", hash = "sha256:0eac1bbb464afe6fb0924b21bf79460416d25d8abc52546d4f16cad94f789488"}, + {file = "kombu-5.3.5.tar.gz", hash = "sha256:30e470f1a6b49c70dc6f6d13c3e4cc4e178aa6c469ceb6bcd55645385fc84b93"}, ] [package.dependencies] @@ -1403,108 +1429,96 @@ files = [ [[package]] name = "lxml" -version = "4.9.3" +version = "5.1.0" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" +python-versions = ">=3.6" files = [ - {file = "lxml-4.9.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c"}, - {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d"}, - {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef"}, - {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb"}, - {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e"}, - {file = "lxml-4.9.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76"}, - {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23"}, - {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f"}, - {file = "lxml-4.9.3-cp310-cp310-win32.whl", hash = "sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85"}, - {file = "lxml-4.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d"}, - {file = "lxml-4.9.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b"}, - {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120"}, - {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6"}, - {file = "lxml-4.9.3-cp311-cp311-win32.whl", hash = "sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305"}, - {file = "lxml-4.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc"}, - {file = "lxml-4.9.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4"}, - {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be"}, - {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13"}, - {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9"}, - {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5"}, - {file = "lxml-4.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8"}, - {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7"}, - {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2"}, - {file = "lxml-4.9.3-cp35-cp35m-win32.whl", hash = "sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d"}, - {file = "lxml-4.9.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833"}, - {file = "lxml-4.9.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584"}, - {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287"}, - {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458"}, - {file = "lxml-4.9.3-cp36-cp36m-win32.whl", hash = "sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477"}, - {file = "lxml-4.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4"}, - {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a"}, - {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02"}, - {file = "lxml-4.9.3-cp37-cp37m-win32.whl", hash = "sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f"}, - {file = "lxml-4.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa"}, - {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40"}, - {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7"}, - {file = "lxml-4.9.3-cp38-cp38-win32.whl", hash = "sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574"}, - {file = "lxml-4.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96"}, - {file = "lxml-4.9.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432"}, - {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69"}, - {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50"}, - {file = "lxml-4.9.3-cp39-cp39-win32.whl", hash = "sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2"}, - {file = "lxml-4.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2"}, - {file = "lxml-4.9.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9"}, - {file = "lxml-4.9.3.tar.gz", hash = "sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c"}, + {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:704f5572ff473a5f897745abebc6df40f22d4133c1e0a1f124e4f2bd3330ff7e"}, + {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d3c0f8567ffe7502d969c2c1b809892dc793b5d0665f602aad19895f8d508da"}, + {file = "lxml-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5fcfbebdb0c5d8d18b84118842f31965d59ee3e66996ac842e21f957eb76138c"}, + {file = "lxml-5.1.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f37c6d7106a9d6f0708d4e164b707037b7380fcd0b04c5bd9cae1fb46a856fb"}, + {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2befa20a13f1a75c751f47e00929fb3433d67eb9923c2c0b364de449121f447c"}, + {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22b7ee4c35f374e2c20337a95502057964d7e35b996b1c667b5c65c567d2252a"}, + {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bf8443781533b8d37b295016a4b53c1494fa9a03573c09ca5104550c138d5c05"}, + {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:82bddf0e72cb2af3cbba7cec1d2fd11fda0de6be8f4492223d4a268713ef2147"}, + {file = "lxml-5.1.0-cp310-cp310-win32.whl", hash = "sha256:b66aa6357b265670bb574f050ffceefb98549c721cf28351b748be1ef9577d93"}, + {file = "lxml-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:4946e7f59b7b6a9e27bef34422f645e9a368cb2be11bf1ef3cafc39a1f6ba68d"}, + {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f"}, + {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4"}, + {file = "lxml-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:436a943c2900bb98123b06437cdd30580a61340fbdb7b28aaf345a459c19046a"}, + {file = "lxml-5.1.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:acb6b2f96f60f70e7f34efe0c3ea34ca63f19ca63ce90019c6cbca6b676e81fa"}, + {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af8920ce4a55ff41167ddbc20077f5698c2e710ad3353d32a07d3264f3a2021e"}, + {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cfced4a069003d8913408e10ca8ed092c49a7f6cefee9bb74b6b3e860683b45"}, + {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9e5ac3437746189a9b4121db2a7b86056ac8786b12e88838696899328fc44bb2"}, + {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204"}, + {file = "lxml-5.1.0-cp311-cp311-win32.whl", hash = "sha256:bc64d1b1dab08f679fb89c368f4c05693f58a9faf744c4d390d7ed1d8223869b"}, + {file = "lxml-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5ab722ae5a873d8dcee1f5f45ddd93c34210aed44ff2dc643b5025981908cda"}, + {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9aa543980ab1fbf1720969af1d99095a548ea42e00361e727c58a40832439114"}, + {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6f11b77ec0979f7e4dc5ae081325a2946f1fe424148d3945f943ceaede98adb8"}, + {file = "lxml-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a36c506e5f8aeb40680491d39ed94670487ce6614b9d27cabe45d94cd5d63e1e"}, + {file = "lxml-5.1.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a"}, + {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16dd953fb719f0ffc5bc067428fc9e88f599e15723a85618c45847c96f11f431"}, + {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16018f7099245157564d7148165132c70adb272fb5a17c048ba70d9cc542a1a1"}, + {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:82cd34f1081ae4ea2ede3d52f71b7be313756e99b4b5f829f89b12da552d3aa3"}, + {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:19a1bc898ae9f06bccb7c3e1dfd73897ecbbd2c96afe9095a6026016e5ca97b8"}, + {file = "lxml-5.1.0-cp312-cp312-win32.whl", hash = "sha256:13521a321a25c641b9ea127ef478b580b5ec82aa2e9fc076c86169d161798b01"}, + {file = "lxml-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:1ad17c20e3666c035db502c78b86e58ff6b5991906e55bdbef94977700c72623"}, + {file = "lxml-5.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:24ef5a4631c0b6cceaf2dbca21687e29725b7c4e171f33a8f8ce23c12558ded1"}, + {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d2900b7f5318bc7ad8631d3d40190b95ef2aa8cc59473b73b294e4a55e9f30f"}, + {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:601f4a75797d7a770daed8b42b97cd1bb1ba18bd51a9382077a6a247a12aa38d"}, + {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4b68c961b5cc402cbd99cca5eb2547e46ce77260eb705f4d117fd9c3f932b95"}, + {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:afd825e30f8d1f521713a5669b63657bcfe5980a916c95855060048b88e1adb7"}, + {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:262bc5f512a66b527d026518507e78c2f9c2bd9eb5c8aeeb9f0eb43fcb69dc67"}, + {file = "lxml-5.1.0-cp36-cp36m-win32.whl", hash = "sha256:e856c1c7255c739434489ec9c8aa9cdf5179785d10ff20add308b5d673bed5cd"}, + {file = "lxml-5.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c7257171bb8d4432fe9d6fdde4d55fdbe663a63636a17f7f9aaba9bcb3153ad7"}, + {file = "lxml-5.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b9e240ae0ba96477682aa87899d94ddec1cc7926f9df29b1dd57b39e797d5ab5"}, + {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a96f02ba1bcd330807fc060ed91d1f7a20853da6dd449e5da4b09bfcc08fdcf5"}, + {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3898ae2b58eeafedfe99e542a17859017d72d7f6a63de0f04f99c2cb125936"}, + {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61c5a7edbd7c695e54fca029ceb351fc45cd8860119a0f83e48be44e1c464862"}, + {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3aeca824b38ca78d9ee2ab82bd9883083d0492d9d17df065ba3b94e88e4d7ee6"}, + {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8f52fe6859b9db71ee609b0c0a70fea5f1e71c3462ecf144ca800d3f434f0764"}, + {file = "lxml-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:d42e3a3fc18acc88b838efded0e6ec3edf3e328a58c68fbd36a7263a874906c8"}, + {file = "lxml-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:eac68f96539b32fce2c9b47eb7c25bb2582bdaf1bbb360d25f564ee9e04c542b"}, + {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ae15347a88cf8af0949a9872b57a320d2605ae069bcdf047677318bc0bba45b1"}, + {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c26aab6ea9c54d3bed716b8851c8bfc40cb249b8e9880e250d1eddde9f709bf5"}, + {file = "lxml-5.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:342e95bddec3a698ac24378d61996b3ee5ba9acfeb253986002ac53c9a5f6f84"}, + {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:725e171e0b99a66ec8605ac77fa12239dbe061482ac854d25720e2294652eeaa"}, + {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d184e0d5c918cff04cdde9dbdf9600e960161d773666958c9d7b565ccc60c45"}, + {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:98f3f020a2b736566c707c8e034945c02aa94e124c24f77ca097c446f81b01f1"}, + {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d48fc57e7c1e3df57be5ae8614bab6d4e7b60f65c5457915c26892c41afc59e"}, + {file = "lxml-5.1.0-cp38-cp38-win32.whl", hash = "sha256:7ec465e6549ed97e9f1e5ed51c657c9ede767bc1c11552f7f4d022c4df4a977a"}, + {file = "lxml-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:b21b4031b53d25b0858d4e124f2f9131ffc1530431c6d1321805c90da78388d1"}, + {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:52427a7eadc98f9e62cb1368a5079ae826f94f05755d2d567d93ee1bc3ceb354"}, + {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6a2a2c724d97c1eb8cf966b16ca2915566a4904b9aad2ed9a09c748ffe14f969"}, + {file = "lxml-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:843b9c835580d52828d8f69ea4302537337a21e6b4f1ec711a52241ba4a824f3"}, + {file = "lxml-5.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b99f564659cfa704a2dd82d0684207b1aadf7d02d33e54845f9fc78e06b7581"}, + {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f8b0c78e7aac24979ef09b7f50da871c2de2def043d468c4b41f512d831e912"}, + {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bcf86dfc8ff3e992fed847c077bd875d9e0ba2fa25d859c3a0f0f76f07f0c8d"}, + {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:49a9b4af45e8b925e1cd6f3b15bbba2c81e7dba6dce170c677c9cda547411e14"}, + {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:280f3edf15c2a967d923bcfb1f8f15337ad36f93525828b40a0f9d6c2ad24890"}, + {file = "lxml-5.1.0-cp39-cp39-win32.whl", hash = "sha256:ed7326563024b6e91fef6b6c7a1a2ff0a71b97793ac33dbbcf38f6005e51ff6e"}, + {file = "lxml-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:8d7b4beebb178e9183138f552238f7e6613162a42164233e2bda00cb3afac58f"}, + {file = "lxml-5.1.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9bd0ae7cc2b85320abd5e0abad5ccee5564ed5f0cc90245d2f9a8ef330a8deae"}, + {file = "lxml-5.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c1d679df4361408b628f42b26a5d62bd3e9ba7f0c0e7969f925021554755aa"}, + {file = "lxml-5.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2ad3a8ce9e8a767131061a22cd28fdffa3cd2dc193f399ff7b81777f3520e372"}, + {file = "lxml-5.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:304128394c9c22b6569eba2a6d98392b56fbdfbad58f83ea702530be80d0f9df"}, + {file = "lxml-5.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d74fcaf87132ffc0447b3c685a9f862ffb5b43e70ea6beec2fb8057d5d2a1fea"}, + {file = "lxml-5.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:8cf5877f7ed384dabfdcc37922c3191bf27e55b498fecece9fd5c2c7aaa34c33"}, + {file = "lxml-5.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:877efb968c3d7eb2dad540b6cabf2f1d3c0fbf4b2d309a3c141f79c7e0061324"}, + {file = "lxml-5.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f14a4fb1c1c402a22e6a341a24c1341b4a3def81b41cd354386dcb795f83897"}, + {file = "lxml-5.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:25663d6e99659544ee8fe1b89b1a8c0aaa5e34b103fab124b17fa958c4a324a6"}, + {file = "lxml-5.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b9f19df998761babaa7f09e6bc169294eefafd6149aaa272081cbddc7ba4ca3"}, + {file = "lxml-5.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e53d7e6a98b64fe54775d23a7c669763451340c3d44ad5e3a3b48a1efbdc96f"}, + {file = "lxml-5.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c3cd1fc1dc7c376c54440aeaaa0dcc803d2126732ff5c6b68ccd619f2e64be4f"}, + {file = "lxml-5.1.0.tar.gz", hash = "sha256:3eea6ed6e6c918e468e693c41ef07f3c3acc310b70ddd9cc72d9ef84bc9564ca"}, ] [package.extras] cssselect = ["cssselect (>=0.7)"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=0.29.35)"] +source = ["Cython (>=3.0.7)"] [[package]] name = "markdown" @@ -1522,59 +1536,59 @@ testing = ["coverage", "pyyaml"] [[package]] name = "maxminddb" -version = "2.5.1" +version = "2.5.2" description = "Reader for the MaxMind DB format" optional = false python-versions = ">=3.8" files = [ - {file = "maxminddb-2.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:62e93a8e99937bf4307eeece3ca37e1161325ebf9363c4ce195410fb5daf64a0"}, - {file = "maxminddb-2.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea2e27a507b53dfbf2ba2ba85c98682a1ad2dac3f9941a7bffa5cb86150d0c47"}, - {file = "maxminddb-2.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01b0341bd6bee431bb8c07c7ac0ed221250c7390b125c025b7d57578e78e8a3"}, - {file = "maxminddb-2.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:607344b1079ea647629bf962dcea7580ec864faaad3f5aae650e2e8652121d89"}, - {file = "maxminddb-2.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2c2901daebd7c8a702302315e7a58cdc38e626406ad4a05b4d48634897d5f5a3"}, - {file = "maxminddb-2.5.1-cp310-cp310-win32.whl", hash = "sha256:7805ae8c9de433c38939ada2e376706a9f6740239f61fd445927b88f5b42c267"}, - {file = "maxminddb-2.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:f1e5bd58b71f322dc6c16a95a129433b1bc229d4b714f870a61c2367425396ee"}, - {file = "maxminddb-2.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0bbbd58b300aaddf985f763720bdebba9f7a73168ff9f57168117f630ad1c06"}, - {file = "maxminddb-2.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a6751e2e89d62d53217870bcc2a8c887dc56ae370ba1b74e52e880761916e54"}, - {file = "maxminddb-2.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ecb1be961f1969be047d07743093f0dcf2f6d4ec3a06a4555587f380a96f6e7"}, - {file = "maxminddb-2.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1e091c2b44673c218ee2df23adbc0b6d04fd5c646cfcb6c6fe26fb849434812a"}, - {file = "maxminddb-2.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09b295c401c104ae0e30f66c1a3f3c2aa4ba2cbe12a787576499356a5a4d6c1"}, - {file = "maxminddb-2.5.1-cp311-cp311-win32.whl", hash = "sha256:3d52c693baf07bba897d109b0ecb067f21fd0cc0fb266d67db456e85b80d699e"}, - {file = "maxminddb-2.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:4c67621e842c415ce336ab019a9f087305dfcf24c095b68b8e9d27848f6f6d91"}, - {file = "maxminddb-2.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17ea454f61631b9815d420d48d00663f8718fc7de30be53ffcec0f73989475eb"}, - {file = "maxminddb-2.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef4d508c899ce0f37de731340759c68bfd1102a39a873675c71fae2c8d71ad97"}, - {file = "maxminddb-2.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e5ca423b1e310f0327536f5ed1a2c6e08d83289a7f909e021590b0b477cae2"}, - {file = "maxminddb-2.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0a21abd85e10e5e0f60244b49c3db17e7e48befd4972e62a62833d91e2acbb49"}, - {file = "maxminddb-2.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:85a302d79577efe5bc308647394ffdc535dd5f062644c41103604ccf24931a05"}, - {file = "maxminddb-2.5.1-cp312-cp312-win32.whl", hash = "sha256:dd28c434fb44f825dde6a75df2c338d44645791b03480af66a4d993f93801e10"}, - {file = "maxminddb-2.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:b477852cf1741d9187b021e23723e64b063794bbf946a9b5b84cc222f3caf58a"}, - {file = "maxminddb-2.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a1e1a19f9740f586362f47862d0095b54d50b9d465babcaa8a563746132fe5be"}, - {file = "maxminddb-2.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d654895b546a47e85f2e071b98e377a60bb03cd643b9423017fa66fcd5adedce"}, - {file = "maxminddb-2.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0702da59b9670a72761b65cb1a52bc3032d8f6799bdab641cb8350ad5740580b"}, - {file = "maxminddb-2.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2e20a70c1545d6626dcd4ce2d7ecf3d566d978ea64cb37e7952f93baff66b812"}, - {file = "maxminddb-2.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0cbd272db3202e948c9088e48dec62add071a47971d84ceb11d2cb2880f83e5a"}, - {file = "maxminddb-2.5.1-cp38-cp38-win32.whl", hash = "sha256:fbd01fc7d7b5b2befe914e8cdb5ed3a1c5476e57b765197cceff8d897f33d012"}, - {file = "maxminddb-2.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:fe0af3ba9e1a78ed5f2ad32fc18d18b78ef233e7d0c627e1a77a525a7eb0c241"}, - {file = "maxminddb-2.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5d772be68cce812f7c4b15ae8c68e624c8b88ff83071e3903ca5b5f55e343c25"}, - {file = "maxminddb-2.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e7b3ad87d5352ed3f496bd42bffbf9f896245278b0d8e76afa1382e42a7ae"}, - {file = "maxminddb-2.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:892c11a8694394e97d3ac0f8d5974ea588c732d14e721f22095c58b4f584c144"}, - {file = "maxminddb-2.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3ce1f42bdfce7b86cb5a56cba730fed611fb879d867e6024f0d520257bef6891"}, - {file = "maxminddb-2.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6667948e7501a513caef90edda2d367865097239d4c2381eb3998e9905af7209"}, - {file = "maxminddb-2.5.1-cp39-cp39-win32.whl", hash = "sha256:500d321bdefe4dcd351e4390a79b7786aab49b0536bedfa0788e5ffb0e91e421"}, - {file = "maxminddb-2.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:93f7055779caf7753810f1e2c6444af6d727393fd116ffa0767fbd54fb8c9bbf"}, - {file = "maxminddb-2.5.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8cee4315da7cdd3f2a18f1ab1418953a7a9eda65e63095b01f03c7d3645d633e"}, - {file = "maxminddb-2.5.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c97eac5af102cede4b5f57cecb25e8f949fa4e4a8d812bed575539951c60ecaf"}, - {file = "maxminddb-2.5.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:526744b12075051fa20979090c111cc3a42a3b55e2714818270c7b84a41a8cfe"}, - {file = "maxminddb-2.5.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fad45cd2f2e3c5fbebacb8d172a60fb22443222e549bf740a0bc7eeb849e5ce7"}, - {file = "maxminddb-2.5.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b98ed5c34955c48e72d35daed713ba4a6833a8a6d1204e79d2c85e644049792"}, - {file = "maxminddb-2.5.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:639aee8abd63a95baa12b94b6f3a842d51877d631879c7d08c98c68dc44a84c3"}, - {file = "maxminddb-2.5.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a7a73ab4bbc16b81983531c99fa102a0c7dae459db958c17fea48c981f5e764"}, - {file = "maxminddb-2.5.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:aae262da1940a67c3ba765c49e2308947ce68ff647f87630002c306433a98ca1"}, - {file = "maxminddb-2.5.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b223c53077a736c304b63cf5afceb928975fbd12ddae5afd6b71370bab7b4700"}, - {file = "maxminddb-2.5.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:969d0057ea5472e0b574c5293c4f3ecf49585362351c543e8ea55dc48b60f1eb"}, - {file = "maxminddb-2.5.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4d36cf3d390f02d2bdf53d9efefb92be7bd70e07a5a86cdb79020c48c2d81b7"}, - {file = "maxminddb-2.5.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:188173c07dce0692fd5660a6eb7ea8c126d7b3a4b61496c8a8ee9e8b10186ff5"}, - {file = "maxminddb-2.5.1.tar.gz", hash = "sha256:4807d374e645bd68334e4f487ba85a27189dbc1267a98e644aa686a7927e0559"}, + {file = "maxminddb-2.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f5682963a5817066db50f219c33aaa7eb969888211a289a444c42b5dfa0c0f78"}, + {file = "maxminddb-2.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fe6bb1b5ea132fcd9fd7b16c80247f0ba667018d5f9f98cd645b297e3b02fbf"}, + {file = "maxminddb-2.5.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:955a3ec4b161e872cc615b7a09ae9770049e9794e7b3832e3d78905a65c5049d"}, + {file = "maxminddb-2.5.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:29d63e7711e5f95c7c190010e57dca9e262aee8ac300aaf75c3f7ede0b5a5863"}, + {file = "maxminddb-2.5.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:08a540ec3661f6ca40499c86028e96dca5780e9d471b485dc797859b0b22dd22"}, + {file = "maxminddb-2.5.2-cp310-cp310-win32.whl", hash = "sha256:17fdb691c389a0e956410d5baef9ad082a0aa67dd6aa231d193499e71a104c19"}, + {file = "maxminddb-2.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:d71b48d3dff9150a44e949b28fa5e7251a7a6895a3a77e200ce08410f096f12f"}, + {file = "maxminddb-2.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1409a045eb04cebb297221eab1020c4f05434d02c0961410f6996ef474482998"}, + {file = "maxminddb-2.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d839c480e4b93bb37bb1cc2777d77e6b2127c006e60b56f748f10571d8b0e471"}, + {file = "maxminddb-2.5.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bca70905515fe50684974a9afaa7db4a4e9fbfdebcb0c2cde9db8e048e0d8145"}, + {file = "maxminddb-2.5.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:67f97cd0c6aac39a51294b04a1e922532125285c24b18a58e2a9c92c7691fa9f"}, + {file = "maxminddb-2.5.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1a3fab6bea6cc59444e6bad2a4fbf91228f6f51dcb29d09ed091930a475bd8cb"}, + {file = "maxminddb-2.5.2-cp311-cp311-win32.whl", hash = "sha256:a99e3125528ea31e807f80e8c5b65118dc5cc122d0a435f1691a3cc1df55840c"}, + {file = "maxminddb-2.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:b6adf63695fa5e3d2549f7c2c9d82c6d252edd5c6ba67074637d2cb944143673"}, + {file = "maxminddb-2.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ed504ca9f3c42e8e71bdbe21f5b818139a1448ac15d7bb6ce12cf41e3b7e2067"}, + {file = "maxminddb-2.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a5053231228d7cbf57d98a741b3cbee9efa9e689348dbb56c414e5a4c7f6f1c"}, + {file = "maxminddb-2.5.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7e8688342bab592647313cd2054779bcd35ad85933424ceae9f07e3a9779986"}, + {file = "maxminddb-2.5.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:335ee3140b41d4e751c14f8fae297aa064c7d3f184c9fbb2790336123187c440"}, + {file = "maxminddb-2.5.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b0203fa2731da45e5461f6e8a0768e85bba8e02137a1598b3fcadf7cbfe8e6f2"}, + {file = "maxminddb-2.5.2-cp312-cp312-win32.whl", hash = "sha256:8b89129de70e1629f200df9dfda4e4f477c26b05c29e0836604a00209c9466d5"}, + {file = "maxminddb-2.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:099f4e27feec4bb9658034a3eb853e746721fc15709030bee4f2f889f4a34185"}, + {file = "maxminddb-2.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:19d8d1e9bbc5281fb4c8112d541d2bd350fd8b5ddfbb43a6951e46df7cd27b9d"}, + {file = "maxminddb-2.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94183a78628cad257183a88ce12a3bb9ffbfe0544bd0c1aafc1f9dc55629dd1b"}, + {file = "maxminddb-2.5.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:17de49660372dcccaa23958eccdd1c2464f92f594d027045ad76788db14a5da4"}, + {file = "maxminddb-2.5.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ae05c4f87b1dd9a21d430c52451eef5f3bd5af609d093408db91fe0dc4d8d7d1"}, + {file = "maxminddb-2.5.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cb718908b9dffa10e02361094158ae68ded5a82c750de89737437999a81bafe"}, + {file = "maxminddb-2.5.2-cp38-cp38-win32.whl", hash = "sha256:e0faa0c4c458eb0eb2f267daa7b106baef72c3c7ebcbece00b9e974fc8321412"}, + {file = "maxminddb-2.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:bac5a29fdc5df9222f7baecbcc4a88b309a66a7d147b34160940c0850ee4b9c5"}, + {file = "maxminddb-2.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c204f53ef7c1d77e9fb0dba415dbb56419f2b08ccaca66cd772e29b3a793c3e7"}, + {file = "maxminddb-2.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae98508a200db6f7ae5985a53039aba8eef7ed71d34b0a0e9c9145c3e6139fc3"}, + {file = "maxminddb-2.5.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e9198d25e252b27d4e9526d5fcd4b78341c23153363a94f1246de5afcd39f6d"}, + {file = "maxminddb-2.5.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b85b008f8e2cf3abfabdc24041549c51c97ea9a8bc46eeeadac8cec7acf9fbf0"}, + {file = "maxminddb-2.5.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6f50210506e9818162ef6706d3127efb0575dfe2cc98a7236ca2011f1cc3effe"}, + {file = "maxminddb-2.5.2-cp39-cp39-win32.whl", hash = "sha256:2bba43d370a57785f5ef61c10d0b4bf8de58d431da3c4c2ed78bb2ff3d07edbf"}, + {file = "maxminddb-2.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:2e01b09480b97d2ebe6765618fb12a0f52caa17368d6cf1f42481d6740428de7"}, + {file = "maxminddb-2.5.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:dd47d13376eaee2e8d1a1fb55d3d6ccdcc995bc931699967f7d5670ec6a454a3"}, + {file = "maxminddb-2.5.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abd626efaba4f0bc867462337f846796da0bb97b82125dbdbc63067947e353b0"}, + {file = "maxminddb-2.5.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ddbe547d83a2e28e81d9f59fd9708d3044ffb2398ee0f8df2e2a2e9cdea6646"}, + {file = "maxminddb-2.5.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:22184fa2514c15f5b39e4e2522f4f73d00afcf5eb7102c473f9376f3c3a03b81"}, + {file = "maxminddb-2.5.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5cb6702fbcc5b209ac3cffacd9cf0a5155feabbeb6fdcf497038be7cb6e52da6"}, + {file = "maxminddb-2.5.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0c3ebfc0af00445089629faffa4c5a1fcc42a1ca5d7dffc42bba314fde20c6d"}, + {file = "maxminddb-2.5.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:461dcf0a4f67aa1c9faea6d52c4060d39559bf68e99a514cf8c1e01af383f90b"}, + {file = "maxminddb-2.5.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e012e889639aab411f5483990188da51c968377f665dcb90584971dbf314d50a"}, + {file = "maxminddb-2.5.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:20596e452d03071db37a72c8ef9236126c04ed342864f68db0adf0d1bc9f642e"}, + {file = "maxminddb-2.5.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ec51b66774b102824c9a3dd4916356283f6a61db1868d4ebcb98bf26486718e"}, + {file = "maxminddb-2.5.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fda0dd512f345cc92492f96c61a0df47efc2e2064c15e8053ab2114b362d64d"}, + {file = "maxminddb-2.5.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:862fcfe226ebda29a537cdce678dc8dc71ca6540ad2483099f80c6a1ee4cdbdd"}, + {file = "maxminddb-2.5.2.tar.gz", hash = "sha256:b3c33e4fc7821ee6c9f40837116e16ab6175863d4a64eee024c5bec686690a87"}, ] [package.dependencies] @@ -1767,13 +1781,13 @@ six = ">=1.0.0" [[package]] name = "phonenumberslite" -version = "8.13.26" +version = "8.13.29" description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." optional = false python-versions = "*" files = [ - {file = "phonenumberslite-8.13.26-py2.py3-none-any.whl", hash = "sha256:305736b1b489e2bc6831710a2f34a9324f2bf96a1e77c8e0b3136dfaf9ca7753"}, - {file = "phonenumberslite-8.13.26.tar.gz", hash = "sha256:6356f2728fa1d2c2bc9e79c3bfcfedc91a36537df7a134f150731a821a469a96"}, + {file = "phonenumberslite-8.13.29-py2.py3-none-any.whl", hash = "sha256:74e3ee63dfa2bb562ce2e6ce74ce76ae74a2f81472005b80343235fb43426db4"}, + {file = "phonenumberslite-8.13.29.tar.gz", hash = "sha256:2b04a53401d01ab42564c1abc762fc9808ad398e71dacfa3b38d4321e112ecb3"}, ] [[package]] @@ -1857,18 +1871,18 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa [[package]] name = "platformdirs" -version = "4.1.0" +version = "4.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, - {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] [[package]] name = "ply" @@ -1883,13 +1897,13 @@ files = [ [[package]] name = "pretix" -version = "2023.10.0" +version = "2024.1.0" description = "Reinventing presales, one ticket at a time" optional = false python-versions = ">=3.9" files = [ - {file = "pretix-2023.10.0-py3-none-any.whl", hash = "sha256:74dd9742b102db8d71262590d4a75e9fce69861fd25f874cec0c2b8c106478c6"}, - {file = "pretix-2023.10.0.tar.gz", hash = "sha256:d0fe505e2e82841db2b69ebdb80d4d7e165260e232eb8e27c787e499edbd6a9f"}, + {file = "pretix-2024.1.0-py3-none-any.whl", hash = "sha256:8c4f4e9a8a3011831aae4574049bcd185e5e2df1a04fe8dd6b63a5d4fde18741"}, + {file = "pretix-2024.1.0.tar.gz", hash = "sha256:94982a415acc76367dc88c0a73b74a1b24c423eadf321de50584d0c5ff363ce6"}, ] [package.dependencies] @@ -1926,7 +1940,7 @@ djangorestframework = "==3.14.*" dnspython = "==2.3.*" drf-ujson2 = "==1.7.*" geoip2 = "==4.*" -importlib-metadata = "==6.*" +importlib-metadata = "==7.*" isoweek = "*" jsonschema = "*" kombu = "==5.3.*" @@ -1963,7 +1977,7 @@ sentry-sdk = "==1.15.*" sepaxml = "==2.6.*" slimit = "*" static3 = "==0.7.*" -stripe = "==5.4.*" +stripe = "==7.9.*" text-unidecode = "==1.*" tlds = ">=2020041600" tqdm = "==4.*" @@ -1992,13 +2006,13 @@ django = "*" [[package]] name = "prompt-toolkit" -version = "3.0.41" +version = "3.0.43" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.41-py3-none-any.whl", hash = "sha256:f36fe301fafb7470e86aaf90f036eef600a3210be4decf461a5b1ca8403d3cb2"}, - {file = "prompt_toolkit-3.0.41.tar.gz", hash = "sha256:941367d97fc815548822aa26c2a269fdc4eb21e9ec05fc5d447cf09bad5d75f0"}, + {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, + {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, ] [package.dependencies] @@ -2059,6 +2073,7 @@ files = [ {file = "psycopg2_binary-2.9.9-cp311-cp311-win32.whl", hash = "sha256:dc4926288b2a3e9fd7b50dc6a1909a13bbdadfc67d93f3374d984e56f885579d"}, {file = "psycopg2_binary-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:b76bedd166805480ab069612119ea636f5ab8f8771e640ae103e05a4aae3e417"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8532fd6e6e2dc57bcb3bc90b079c60de896d2128c5d9d6f24a63875a95a088cf"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0605eaed3eb239e87df0d5e3c6489daae3f7388d455d0c0b4df899519c6a38d"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f8544b092a29a6ddd72f3556a9fcf249ec412e10ad28be6a0c0d948924f2212"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d423c8d8a3c82d08fe8af900ad5b613ce3632a1249fd6a223941d0735fce493"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e5afae772c00980525f6d6ecf7cbca55676296b580c0e6abb407f15f3706996"}, @@ -2108,17 +2123,15 @@ files = [ [[package]] name = "pycountry" -version = "22.3.5" +version = "23.12.11" description = "ISO country, subdivision, language, currency and script definitions and their translations" optional = false -python-versions = ">=3.6, <4" +python-versions = ">=3.8" files = [ - {file = "pycountry-22.3.5.tar.gz", hash = "sha256:b2163a246c585894d808f18783e19137cb70a0c18fb36748dc01fc6f109c1646"}, + {file = "pycountry-23.12.11-py3-none-any.whl", hash = "sha256:2ff91cff4f40ff61086e773d61e72005fe95de4a57bfc765509db05695dc50ab"}, + {file = "pycountry-23.12.11.tar.gz", hash = "sha256:00569d82eaefbc6a490a311bfa84a9c571cff9ddbf8b0a4f4e7b4f868b4ad925"}, ] -[package.dependencies] -setuptools = "*" - [[package]] name = "pycparser" version = "2.21" @@ -2190,17 +2203,17 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pyopenssl" -version = "23.3.0" +version = "24.0.0" description = "Python wrapper module around the OpenSSL library" optional = false python-versions = ">=3.7" files = [ - {file = "pyOpenSSL-23.3.0-py3-none-any.whl", hash = "sha256:6756834481d9ed5470f4a9393455154bc92fe7a64b7bc6ee2c804e78c52099b2"}, - {file = "pyOpenSSL-23.3.0.tar.gz", hash = "sha256:6b2cba5cc46e822750ec3e5a81ee12819850b11303630d575e98108a079c2b12"}, + {file = "pyOpenSSL-24.0.0-py3-none-any.whl", hash = "sha256:ba07553fb6fd6a7a2259adb9b84e12302a9a8a75c44046e8bb5d3e5ee887e3c3"}, + {file = "pyOpenSSL-24.0.0.tar.gz", hash = "sha256:6aa33039a93fffa4563e655b61d11364d01264be8ccb49906101e02a334530bf"}, ] [package.dependencies] -cryptography = ">=41.0.5,<42" +cryptography = ">=41.0.5,<43" [package.extras] docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] @@ -2299,13 +2312,13 @@ yubiauth-server = ["WebOb", "yubiauth"] [[package]] name = "pytz" -version = "2023.3.post1" +version = "2023.4" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, - {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, + {file = "pytz-2023.4-py2.py3-none-any.whl", hash = "sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a"}, + {file = "pytz-2023.4.tar.gz", hash = "sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40"}, ] [[package]] @@ -2408,13 +2421,13 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" [[package]] name = "referencing" -version = "0.32.0" +version = "0.33.0" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.32.0-py3-none-any.whl", hash = "sha256:bdcd3efb936f82ff86f993093f6da7435c7de69a3b3a5a06678a6050184bee99"}, - {file = "referencing-0.32.0.tar.gz", hash = "sha256:689e64fe121843dcfd57b71933318ef1f91188ffb45367332700a86ac8fd6161"}, + {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"}, + {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"}, ] [package.dependencies] @@ -2423,16 +2436,17 @@ rpds-py = ">=0.7.0" [[package]] name = "reportlab" -version = "4.0.7" +version = "4.0.9" description = "The Reportlab Toolkit" optional = false python-versions = ">=3.7,<4" files = [ - {file = "reportlab-4.0.7-py3-none-any.whl", hash = "sha256:956d5874ee56e88753cf4c49452d6a7fa54a64e049a0382bd0c0b2013a26ef9a"}, - {file = "reportlab-4.0.7.tar.gz", hash = "sha256:967c77f00efd918cc231cf8b6d8f4e477dc973b5c16557e3bd18dfaeb5a70234"}, + {file = "reportlab-4.0.9-py3-none-any.whl", hash = "sha256:c9656216321897486e323be138f7aea67851cedc116b8cc35f8ec7f8cc763538"}, + {file = "reportlab-4.0.9.tar.gz", hash = "sha256:f32bff66a0fda234202e1e33eaf77f25008871a61cb01cd91584a521a04c0047"}, ] [package.dependencies] +chardet = "*" pillow = ">=9.0.0" [package.extras] @@ -2463,18 +2477,17 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-file" -version = "1.5.1" +version = "2.0.0" description = "File transport adapter for Requests" optional = false python-versions = "*" files = [ - {file = "requests-file-1.5.1.tar.gz", hash = "sha256:07d74208d3389d01c38ab89ef403af0cfec63957d53a0081d8eca738d0247d8e"}, - {file = "requests_file-1.5.1-py2.py3-none-any.whl", hash = "sha256:dfe5dae75c12481f68ba353183c53a65e6044c923e64c24b2209f6c7570ca953"}, + {file = "requests-file-2.0.0.tar.gz", hash = "sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972"}, + {file = "requests_file-2.0.0-py2.py3-none-any.whl", hash = "sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf"}, ] [package.dependencies] requests = ">=1.0.0" -six = "*" [[package]] name = "requests-toolbelt" @@ -2524,110 +2537,110 @@ files = [ [[package]] name = "rpds-py" -version = "0.13.2" +version = "0.17.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.13.2-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:1ceebd0ae4f3e9b2b6b553b51971921853ae4eebf3f54086be0565d59291e53d"}, - {file = "rpds_py-0.13.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:46e1ed994a0920f350a4547a38471217eb86f57377e9314fbaaa329b71b7dfe3"}, - {file = "rpds_py-0.13.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee353bb51f648924926ed05e0122b6a0b1ae709396a80eb583449d5d477fcdf7"}, - {file = "rpds_py-0.13.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:530190eb0cd778363bbb7596612ded0bb9fef662daa98e9d92a0419ab27ae914"}, - {file = "rpds_py-0.13.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d311e44dd16d2434d5506d57ef4d7036544fc3c25c14b6992ef41f541b10fb"}, - {file = "rpds_py-0.13.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e72f750048b32d39e87fc85c225c50b2a6715034848dbb196bf3348aa761fa1"}, - {file = "rpds_py-0.13.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db09b98c7540df69d4b47218da3fbd7cb466db0fb932e971c321f1c76f155266"}, - {file = "rpds_py-0.13.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2ac26f50736324beb0282c819668328d53fc38543fa61eeea2c32ea8ea6eab8d"}, - {file = "rpds_py-0.13.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:12ecf89bd54734c3c2c79898ae2021dca42750c7bcfb67f8fb3315453738ac8f"}, - {file = "rpds_py-0.13.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a44c8440183b43167fd1a0819e8356692bf5db1ad14ce140dbd40a1485f2dea"}, - {file = "rpds_py-0.13.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcef4f2d3dc603150421de85c916da19471f24d838c3c62a4f04c1eb511642c1"}, - {file = "rpds_py-0.13.2-cp310-none-win32.whl", hash = "sha256:ee6faebb265e28920a6f23a7d4c362414b3f4bb30607141d718b991669e49ddc"}, - {file = "rpds_py-0.13.2-cp310-none-win_amd64.whl", hash = "sha256:ac96d67b37f28e4b6ecf507c3405f52a40658c0a806dffde624a8fcb0314d5fd"}, - {file = "rpds_py-0.13.2-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:b5f6328e8e2ae8238fc767703ab7b95785521c42bb2b8790984e3477d7fa71ad"}, - {file = "rpds_py-0.13.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:729408136ef8d45a28ee9a7411917c9e3459cf266c7e23c2f7d4bb8ef9e0da42"}, - {file = "rpds_py-0.13.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65cfed9c807c27dee76407e8bb29e6f4e391e436774bcc769a037ff25ad8646e"}, - {file = "rpds_py-0.13.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aefbdc934115d2f9278f153952003ac52cd2650e7313750390b334518c589568"}, - {file = "rpds_py-0.13.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d48db29bd47814671afdd76c7652aefacc25cf96aad6daefa82d738ee87461e2"}, - {file = "rpds_py-0.13.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c55d7f2d817183d43220738270efd3ce4e7a7b7cbdaefa6d551ed3d6ed89190"}, - {file = "rpds_py-0.13.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6aadae3042f8e6db3376d9e91f194c606c9a45273c170621d46128f35aef7cd0"}, - {file = "rpds_py-0.13.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5feae2f9aa7270e2c071f488fab256d768e88e01b958f123a690f1cc3061a09c"}, - {file = "rpds_py-0.13.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:51967a67ea0d7b9b5cd86036878e2d82c0b6183616961c26d825b8c994d4f2c8"}, - {file = "rpds_py-0.13.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d0c10d803549427f427085ed7aebc39832f6e818a011dcd8785e9c6a1ba9b3e"}, - {file = "rpds_py-0.13.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:603d5868f7419081d616dab7ac3cfa285296735e7350f7b1e4f548f6f953ee7d"}, - {file = "rpds_py-0.13.2-cp311-none-win32.whl", hash = "sha256:b8996ffb60c69f677245f5abdbcc623e9442bcc91ed81b6cd6187129ad1fa3e7"}, - {file = "rpds_py-0.13.2-cp311-none-win_amd64.whl", hash = "sha256:5379e49d7e80dca9811b36894493d1c1ecb4c57de05c36f5d0dd09982af20211"}, - {file = "rpds_py-0.13.2-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:8a776a29b77fe0cc28fedfd87277b0d0f7aa930174b7e504d764e0b43a05f381"}, - {file = "rpds_py-0.13.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a1472956c5bcc49fb0252b965239bffe801acc9394f8b7c1014ae9258e4572b"}, - {file = "rpds_py-0.13.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f252dfb4852a527987a9156cbcae3022a30f86c9d26f4f17b8c967d7580d65d2"}, - {file = "rpds_py-0.13.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f0d320e70b6b2300ff6029e234e79fe44e9dbbfc7b98597ba28e054bd6606a57"}, - {file = "rpds_py-0.13.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ade2ccb937060c299ab0dfb2dea3d2ddf7e098ed63ee3d651ebfc2c8d1e8632a"}, - {file = "rpds_py-0.13.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9d121be0217787a7d59a5c6195b0842d3f701007333426e5154bf72346aa658"}, - {file = "rpds_py-0.13.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fa6bd071ec6d90f6e7baa66ae25820d57a8ab1b0a3c6d3edf1834d4b26fafa2"}, - {file = "rpds_py-0.13.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c918621ee0a3d1fe61c313f2489464f2ae3d13633e60f520a8002a5e910982ee"}, - {file = "rpds_py-0.13.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:25b28b3d33ec0a78e944aaaed7e5e2a94ac811bcd68b557ca48a0c30f87497d2"}, - {file = "rpds_py-0.13.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:31e220a040b89a01505128c2f8a59ee74732f666439a03e65ccbf3824cdddae7"}, - {file = "rpds_py-0.13.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:15253fff410873ebf3cfba1cc686a37711efcd9b8cb30ea21bb14a973e393f60"}, - {file = "rpds_py-0.13.2-cp312-none-win32.whl", hash = "sha256:b981a370f8f41c4024c170b42fbe9e691ae2dbc19d1d99151a69e2c84a0d194d"}, - {file = "rpds_py-0.13.2-cp312-none-win_amd64.whl", hash = "sha256:4c4e314d36d4f31236a545696a480aa04ea170a0b021e9a59ab1ed94d4c3ef27"}, - {file = "rpds_py-0.13.2-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:80e5acb81cb49fd9f2d5c08f8b74ffff14ee73b10ca88297ab4619e946bcb1e1"}, - {file = "rpds_py-0.13.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:efe093acc43e869348f6f2224df7f452eab63a2c60a6c6cd6b50fd35c4e075ba"}, - {file = "rpds_py-0.13.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c2a61c0e4811012b0ba9f6cdcb4437865df5d29eab5d6018ba13cee1c3064a0"}, - {file = "rpds_py-0.13.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:751758d9dd04d548ec679224cc00e3591f5ebf1ff159ed0d4aba6a0746352452"}, - {file = "rpds_py-0.13.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ba8858933f0c1a979781272a5f65646fca8c18c93c99c6ddb5513ad96fa54b1"}, - {file = "rpds_py-0.13.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bfdfbe6a36bc3059fff845d64c42f2644cf875c65f5005db54f90cdfdf1df815"}, - {file = "rpds_py-0.13.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa0379c1935c44053c98826bc99ac95f3a5355675a297ac9ce0dfad0ce2d50ca"}, - {file = "rpds_py-0.13.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5593855b5b2b73dd8413c3fdfa5d95b99d657658f947ba2c4318591e745d083"}, - {file = "rpds_py-0.13.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2a7bef6977043673750a88da064fd513f89505111014b4e00fbdd13329cd4e9a"}, - {file = "rpds_py-0.13.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:3ab96754d23372009638a402a1ed12a27711598dd49d8316a22597141962fe66"}, - {file = "rpds_py-0.13.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e06cfea0ece444571d24c18ed465bc93afb8c8d8d74422eb7026662f3d3f779b"}, - {file = "rpds_py-0.13.2-cp38-none-win32.whl", hash = "sha256:5493569f861fb7b05af6d048d00d773c6162415ae521b7010197c98810a14cab"}, - {file = "rpds_py-0.13.2-cp38-none-win_amd64.whl", hash = "sha256:b07501b720cf060c5856f7b5626e75b8e353b5f98b9b354a21eb4bfa47e421b1"}, - {file = "rpds_py-0.13.2-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:881df98f0a8404d32b6de0fd33e91c1b90ed1516a80d4d6dc69d414b8850474c"}, - {file = "rpds_py-0.13.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d79c159adea0f1f4617f54aa156568ac69968f9ef4d1e5fefffc0a180830308e"}, - {file = "rpds_py-0.13.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38d4f822ee2f338febcc85aaa2547eb5ba31ba6ff68d10b8ec988929d23bb6b4"}, - {file = "rpds_py-0.13.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5d75d6d220d55cdced2f32cc22f599475dbe881229aeddba6c79c2e9df35a2b3"}, - {file = "rpds_py-0.13.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d97e9ae94fb96df1ee3cb09ca376c34e8a122f36927230f4c8a97f469994bff"}, - {file = "rpds_py-0.13.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67a429520e97621a763cf9b3ba27574779c4e96e49a27ff8a1aa99ee70beb28a"}, - {file = "rpds_py-0.13.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:188435794405c7f0573311747c85a96b63c954a5f2111b1df8018979eca0f2f0"}, - {file = "rpds_py-0.13.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:38f9bf2ad754b4a45b8210a6c732fe876b8a14e14d5992a8c4b7c1ef78740f53"}, - {file = "rpds_py-0.13.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a6ba2cb7d676e9415b9e9ac7e2aae401dc1b1e666943d1f7bc66223d3d73467b"}, - {file = "rpds_py-0.13.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:eaffbd8814bb1b5dc3ea156a4c5928081ba50419f9175f4fc95269e040eff8f0"}, - {file = "rpds_py-0.13.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a4c1058cdae6237d97af272b326e5f78ee7ee3bbffa6b24b09db4d828810468"}, - {file = "rpds_py-0.13.2-cp39-none-win32.whl", hash = "sha256:b5267feb19070bef34b8dea27e2b504ebd9d31748e3ecacb3a4101da6fcb255c"}, - {file = "rpds_py-0.13.2-cp39-none-win_amd64.whl", hash = "sha256:ddf23960cb42b69bce13045d5bc66f18c7d53774c66c13f24cf1b9c144ba3141"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:97163a1ab265a1073a6372eca9f4eeb9f8c6327457a0b22ddfc4a17dcd613e74"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:25ea41635d22b2eb6326f58e608550e55d01df51b8a580ea7e75396bafbb28e9"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d59d4d451ba77f08cb4cd9268dec07be5bc65f73666302dbb5061989b17198"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7c564c58cf8f248fe859a4f0fe501b050663f3d7fbc342172f259124fb59933"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61dbc1e01dc0c5875da2f7ae36d6e918dc1b8d2ce04e871793976594aad8a57a"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdb82eb60d31b0c033a8e8ee9f3fc7dfbaa042211131c29da29aea8531b4f18f"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d204957169f0b3511fb95395a9da7d4490fb361763a9f8b32b345a7fe119cb45"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c45008ca79bad237cbc03c72bc5205e8c6f66403773929b1b50f7d84ef9e4d07"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:79bf58c08f0756adba691d480b5a20e4ad23f33e1ae121584cf3a21717c36dfa"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e86593bf8637659e6a6ed58854b6c87ec4e9e45ee8a4adfd936831cef55c2d21"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:d329896c40d9e1e5c7715c98529e4a188a1f2df51212fd65102b32465612b5dc"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4a5375c5fff13f209527cd886dc75394f040c7d1ecad0a2cb0627f13ebe78a12"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:06d218e4464d31301e943b65b2c6919318ea6f69703a351961e1baaf60347276"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1f41d32a2ddc5a94df4b829b395916a4b7f103350fa76ba6de625fcb9e773ac"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6bc568b05e02cd612be53900c88aaa55012e744930ba2eeb56279db4c6676eb3"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d94d78418203904730585efa71002286ac4c8ac0689d0eb61e3c465f9e608ff"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bed0252c85e21cf73d2d033643c945b460d6a02fc4a7d644e3b2d6f5f2956c64"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:244e173bb6d8f3b2f0c4d7370a1aa341f35da3e57ffd1798e5b2917b91731fd3"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7f55cd9cf1564b7b03f238e4c017ca4794c05b01a783e9291065cb2858d86ce4"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:f03a1b3a4c03e3e0161642ac5367f08479ab29972ea0ffcd4fa18f729cd2be0a"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:f5f4424cb87a20b016bfdc157ff48757b89d2cc426256961643d443c6c277007"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c82bbf7e03748417c3a88c1b0b291288ce3e4887a795a3addaa7a1cfd9e7153e"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:c0095b8aa3e432e32d372e9a7737e65b58d5ed23b9620fea7cb81f17672f1fa1"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:4c2d26aa03d877c9730bf005621c92da263523a1e99247590abbbe252ccb7824"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96f2975fb14f39c5fe75203f33dd3010fe37d1c4e33177feef1107b5ced750e3"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4dcc5ee1d0275cb78d443fdebd0241e58772a354a6d518b1d7af1580bbd2c4e8"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61d42d2b08430854485135504f672c14d4fc644dd243a9c17e7c4e0faf5ed07e"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d3a61e928feddc458a55110f42f626a2a20bea942ccedb6fb4cee70b4830ed41"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7de12b69d95072394998c622cfd7e8cea8f560db5fca6a62a148f902a1029f8b"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:87a90f5545fd61f6964e65eebde4dc3fa8660bb7d87adb01d4cf17e0a2b484ad"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:9c95a1a290f9acf7a8f2ebbdd183e99215d491beea52d61aa2a7a7d2c618ddc6"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:35f53c76a712e323c779ca39b9a81b13f219a8e3bc15f106ed1e1462d56fcfe9"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:96fb0899bb2ab353f42e5374c8f0789f54e0a94ef2f02b9ac7149c56622eaf31"}, - {file = "rpds_py-0.13.2.tar.gz", hash = "sha256:f8eae66a1304de7368932b42d801c67969fd090ddb1a7a24f27b435ed4bed68f"}, + {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"}, + {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"}, + {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"}, + {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"}, + {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"}, + {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"}, + {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"}, + {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"}, + {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"}, + {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"}, + {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"}, + {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"}, + {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"}, + {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"}, + {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"}, + {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"}, + {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"}, + {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"}, + {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"}, + {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"}, + {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"}, ] [[package]] @@ -2686,13 +2699,13 @@ xmlschema = "*" [[package]] name = "setuptools" -version = "69.0.2" +version = "69.0.3" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.2-py3-none-any.whl", hash = "sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2"}, - {file = "setuptools-69.0.2.tar.gz", hash = "sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6"}, + {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, + {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, ] [package.extras] @@ -2767,17 +2780,18 @@ kidmagic = ["kid"] [[package]] name = "stripe" -version = "5.4.0" +version = "7.9.0" description = "Python bindings for the Stripe API" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" files = [ - {file = "stripe-5.4.0-py2.py3-none-any.whl", hash = "sha256:57c0da7e3b889b69ff1dbf23ac1ec5e00f665cfba069fdf0f328b83ddf4225df"}, - {file = "stripe-5.4.0.tar.gz", hash = "sha256:72bda7bf9be7528e1b97a5bbacb0716cdf6a0c9597b13fdbfa364cec3c130713"}, + {file = "stripe-7.9.0-py2.py3-none-any.whl", hash = "sha256:42b4aa5162e45f889afaa40fc1eccfb9ec551c616e1620f700c19a11ae8e62eb"}, + {file = "stripe-7.9.0.tar.gz", hash = "sha256:84e5e430835a4b0cd4fd2a57ce3853269d1db3439111cda6b6ed752e349cf4a1"}, ] [package.dependencies] requests = {version = ">=2.20", markers = "python_version >= \"3.0\""} +typing-extensions = {version = ">=4.5.0", markers = "python_version >= \"3.7\""} [[package]] name = "text-unidecode" @@ -2792,13 +2806,13 @@ files = [ [[package]] name = "tlds" -version = "2023112100" +version = "2024012300" description = "Automatically updated list of valid TLDs taken directly from IANA" optional = false python-versions = "*" files = [ - {file = "tlds-2023112100-py2.py3-none-any.whl", hash = "sha256:17341dd4c20efefecc349c3112443d217dcc405df9c33f8bcdd60e56f61b29d0"}, - {file = "tlds-2023112100.tar.gz", hash = "sha256:3adbb9e991e804e160e7b4ff09bcfe61c6a7662f5ba0bb27d78e6a2022ed8d18"}, + {file = "tlds-2024012300-py2.py3-none-any.whl", hash = "sha256:7d46a7bb9ff741e14c72d554f7945b5b3244694ee87fada69db3941afed09d14"}, + {file = "tlds-2024012300.tar.gz", hash = "sha256:521d97a4fdb8ad58c7daf68cc3a3901d5052a402ae0ac2caca06932d275bad5f"}, ] [[package]] @@ -2823,109 +2837,114 @@ telegram = ["requests"] [[package]] name = "typing-extensions" -version = "4.8.0" +version = "4.9.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, - {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, ] [[package]] name = "tzdata" -version = "2023.3" +version = "2023.4" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, - {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, + {file = "tzdata-2023.4-py2.py3-none-any.whl", hash = "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3"}, + {file = "tzdata-2023.4.tar.gz", hash = "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"}, ] [[package]] name = "ujson" -version = "5.8.0" +version = "5.9.0" description = "Ultra fast JSON encoder and decoder for Python" optional = false python-versions = ">=3.8" files = [ - {file = "ujson-5.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f4511560d75b15ecb367eef561554959b9d49b6ec3b8d5634212f9fed74a6df1"}, - {file = "ujson-5.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9399eaa5d1931a0ead49dce3ffacbea63f3177978588b956036bfe53cdf6af75"}, - {file = "ujson-5.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4e7bb7eba0e1963f8b768f9c458ecb193e5bf6977090182e2b4f4408f35ac76"}, - {file = "ujson-5.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40931d7c08c4ce99adc4b409ddb1bbb01635a950e81239c2382cfe24251b127a"}, - {file = "ujson-5.8.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d53039d39de65360e924b511c7ca1a67b0975c34c015dd468fca492b11caa8f7"}, - {file = "ujson-5.8.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bdf04c6af3852161be9613e458a1fb67327910391de8ffedb8332e60800147a2"}, - {file = "ujson-5.8.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a70f776bda2e5072a086c02792c7863ba5833d565189e09fabbd04c8b4c3abba"}, - {file = "ujson-5.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f26629ac531d712f93192c233a74888bc8b8212558bd7d04c349125f10199fcf"}, - {file = "ujson-5.8.0-cp310-cp310-win32.whl", hash = "sha256:7ecc33b107ae88405aebdb8d82c13d6944be2331ebb04399134c03171509371a"}, - {file = "ujson-5.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:3b27a8da7a080add559a3b73ec9ebd52e82cc4419f7c6fb7266e62439a055ed0"}, - {file = "ujson-5.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:193349a998cd821483a25f5df30b44e8f495423840ee11b3b28df092ddfd0f7f"}, - {file = "ujson-5.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ddeabbc78b2aed531f167d1e70387b151900bc856d61e9325fcdfefb2a51ad8"}, - {file = "ujson-5.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ce24909a9c25062e60653073dd6d5e6ec9d6ad7ed6e0069450d5b673c854405"}, - {file = "ujson-5.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27a2a3c7620ebe43641e926a1062bc04e92dbe90d3501687957d71b4bdddaec4"}, - {file = "ujson-5.8.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b852bdf920fe9f84e2a2c210cc45f1b64f763b4f7d01468b33f7791698e455e"}, - {file = "ujson-5.8.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:20768961a6a706170497129960762ded9c89fb1c10db2989c56956b162e2a8a3"}, - {file = "ujson-5.8.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e0147d41e9fb5cd174207c4a2895c5e24813204499fd0839951d4c8784a23bf5"}, - {file = "ujson-5.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e3673053b036fd161ae7a5a33358ccae6793ee89fd499000204676baafd7b3aa"}, - {file = "ujson-5.8.0-cp311-cp311-win32.whl", hash = "sha256:a89cf3cd8bf33a37600431b7024a7ccf499db25f9f0b332947fbc79043aad879"}, - {file = "ujson-5.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:3659deec9ab9eb19e8646932bfe6fe22730757c4addbe9d7d5544e879dc1b721"}, - {file = "ujson-5.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:102bf31c56f59538cccdfec45649780ae00657e86247c07edac434cb14d5388c"}, - {file = "ujson-5.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:299a312c3e85edee1178cb6453645217ba23b4e3186412677fa48e9a7f986de6"}, - {file = "ujson-5.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2e385a7679b9088d7bc43a64811a7713cc7c33d032d020f757c54e7d41931ae"}, - {file = "ujson-5.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad24ec130855d4430a682c7a60ca0bc158f8253ec81feed4073801f6b6cb681b"}, - {file = "ujson-5.8.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16fde596d5e45bdf0d7de615346a102510ac8c405098e5595625015b0d4b5296"}, - {file = "ujson-5.8.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6d230d870d1ce03df915e694dcfa3f4e8714369cce2346686dbe0bc8e3f135e7"}, - {file = "ujson-5.8.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9571de0c53db5cbc265945e08f093f093af2c5a11e14772c72d8e37fceeedd08"}, - {file = "ujson-5.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7cba16b26efe774c096a5e822e4f27097b7c81ed6fb5264a2b3f5fd8784bab30"}, - {file = "ujson-5.8.0-cp312-cp312-win32.whl", hash = "sha256:48c7d373ff22366eecfa36a52b9b55b0ee5bd44c2b50e16084aa88b9de038916"}, - {file = "ujson-5.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:5ac97b1e182d81cf395ded620528c59f4177eee024b4b39a50cdd7b720fdeec6"}, - {file = "ujson-5.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2a64cc32bb4a436e5813b83f5aab0889927e5ea1788bf99b930fad853c5625cb"}, - {file = "ujson-5.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e54578fa8838ddc722539a752adfce9372474114f8c127bb316db5392d942f8b"}, - {file = "ujson-5.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9721cd112b5e4687cb4ade12a7b8af8b048d4991227ae8066d9c4b3a6642a582"}, - {file = "ujson-5.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d9707e5aacf63fb919f6237d6490c4e0244c7f8d3dc2a0f84d7dec5db7cb54c"}, - {file = "ujson-5.8.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0be81bae295f65a6896b0c9030b55a106fb2dec69ef877253a87bc7c9c5308f7"}, - {file = "ujson-5.8.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ae7f4725c344bf437e9b881019c558416fe84ad9c6b67426416c131ad577df67"}, - {file = "ujson-5.8.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9ab282d67ef3097105552bf151438b551cc4bedb3f24d80fada830f2e132aeb9"}, - {file = "ujson-5.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:94c7bd9880fa33fcf7f6d7f4cc032e2371adee3c5dba2922b918987141d1bf07"}, - {file = "ujson-5.8.0-cp38-cp38-win32.whl", hash = "sha256:bf5737dbcfe0fa0ac8fa599eceafae86b376492c8f1e4b84e3adf765f03fb564"}, - {file = "ujson-5.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:11da6bed916f9bfacf13f4fc6a9594abd62b2bb115acfb17a77b0f03bee4cfd5"}, - {file = "ujson-5.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:69b3104a2603bab510497ceabc186ba40fef38ec731c0ccaa662e01ff94a985c"}, - {file = "ujson-5.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9249fdefeb021e00b46025e77feed89cd91ffe9b3a49415239103fc1d5d9c29a"}, - {file = "ujson-5.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2873d196725a8193f56dde527b322c4bc79ed97cd60f1d087826ac3290cf9207"}, - {file = "ujson-5.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a4dafa9010c366589f55afb0fd67084acd8added1a51251008f9ff2c3e44042"}, - {file = "ujson-5.8.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a42baa647a50fa8bed53d4e242be61023bd37b93577f27f90ffe521ac9dc7a3"}, - {file = "ujson-5.8.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f3554eaadffe416c6f543af442066afa6549edbc34fe6a7719818c3e72ebfe95"}, - {file = "ujson-5.8.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fb87decf38cc82bcdea1d7511e73629e651bdec3a43ab40985167ab8449b769c"}, - {file = "ujson-5.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:407d60eb942c318482bbfb1e66be093308bb11617d41c613e33b4ce5be789adc"}, - {file = "ujson-5.8.0-cp39-cp39-win32.whl", hash = "sha256:0fe1b7edaf560ca6ab023f81cbeaf9946a240876a993b8c5a21a1c539171d903"}, - {file = "ujson-5.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:3f9b63530a5392eb687baff3989d0fb5f45194ae5b1ca8276282fb647f8dcdb3"}, - {file = "ujson-5.8.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:efeddf950fb15a832376c0c01d8d7713479fbeceaed1eaecb2665aa62c305aec"}, - {file = "ujson-5.8.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d8283ac5d03e65f488530c43d6610134309085b71db4f675e9cf5dff96a8282"}, - {file = "ujson-5.8.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb0142f6f10f57598655340a3b2c70ed4646cbe674191da195eb0985a9813b83"}, - {file = "ujson-5.8.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07d459aca895eb17eb463b00441986b021b9312c6c8cc1d06880925c7f51009c"}, - {file = "ujson-5.8.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d524a8c15cfc863705991d70bbec998456a42c405c291d0f84a74ad7f35c5109"}, - {file = "ujson-5.8.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d6f84a7a175c75beecde53a624881ff618e9433045a69fcfb5e154b73cdaa377"}, - {file = "ujson-5.8.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b748797131ac7b29826d1524db1cc366d2722ab7afacc2ce1287cdafccddbf1f"}, - {file = "ujson-5.8.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e72ba76313d48a1a3a42e7dc9d1db32ea93fac782ad8dde6f8b13e35c229130"}, - {file = "ujson-5.8.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f504117a39cb98abba4153bf0b46b4954cc5d62f6351a14660201500ba31fe7f"}, - {file = "ujson-5.8.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a8c91b6f4bf23f274af9002b128d133b735141e867109487d17e344d38b87d94"}, - {file = "ujson-5.8.0.tar.gz", hash = "sha256:78e318def4ade898a461b3d92a79f9441e7e0e4d2ad5419abed4336d702c7425"}, + {file = "ujson-5.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ab71bf27b002eaf7d047c54a68e60230fbd5cd9da60de7ca0aa87d0bccead8fa"}, + {file = "ujson-5.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a365eac66f5aa7a7fdf57e5066ada6226700884fc7dce2ba5483538bc16c8c5"}, + {file = "ujson-5.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e015122b337858dba5a3dc3533af2a8fc0410ee9e2374092f6a5b88b182e9fcc"}, + {file = "ujson-5.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:779a2a88c53039bebfbccca934430dabb5c62cc179e09a9c27a322023f363e0d"}, + {file = "ujson-5.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10ca3c41e80509fd9805f7c149068fa8dbee18872bbdc03d7cca928926a358d5"}, + {file = "ujson-5.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a566e465cb2fcfdf040c2447b7dd9718799d0d90134b37a20dff1e27c0e9096"}, + {file = "ujson-5.9.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f833c529e922577226a05bc25b6a8b3eb6c4fb155b72dd88d33de99d53113124"}, + {file = "ujson-5.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b68a0caab33f359b4cbbc10065c88e3758c9f73a11a65a91f024b2e7a1257106"}, + {file = "ujson-5.9.0-cp310-cp310-win32.whl", hash = "sha256:7cc7e605d2aa6ae6b7321c3ae250d2e050f06082e71ab1a4200b4ae64d25863c"}, + {file = "ujson-5.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:a6d3f10eb8ccba4316a6b5465b705ed70a06011c6f82418b59278fbc919bef6f"}, + {file = "ujson-5.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b23bbb46334ce51ddb5dded60c662fbf7bb74a37b8f87221c5b0fec1ec6454b"}, + {file = "ujson-5.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6974b3a7c17bbf829e6c3bfdc5823c67922e44ff169851a755eab79a3dd31ec0"}, + {file = "ujson-5.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5964ea916edfe24af1f4cc68488448fbb1ec27a3ddcddc2b236da575c12c8ae"}, + {file = "ujson-5.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ba7cac47dd65ff88571eceeff48bf30ed5eb9c67b34b88cb22869b7aa19600d"}, + {file = "ujson-5.9.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bbd91a151a8f3358c29355a491e915eb203f607267a25e6ab10531b3b157c5e"}, + {file = "ujson-5.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:829a69d451a49c0de14a9fecb2a2d544a9b2c884c2b542adb243b683a6f15908"}, + {file = "ujson-5.9.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:a807ae73c46ad5db161a7e883eec0fbe1bebc6a54890152ccc63072c4884823b"}, + {file = "ujson-5.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8fc2aa18b13d97b3c8ccecdf1a3c405f411a6e96adeee94233058c44ff92617d"}, + {file = "ujson-5.9.0-cp311-cp311-win32.whl", hash = "sha256:70e06849dfeb2548be48fdd3ceb53300640bc8100c379d6e19d78045e9c26120"}, + {file = "ujson-5.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:7309d063cd392811acc49b5016728a5e1b46ab9907d321ebbe1c2156bc3c0b99"}, + {file = "ujson-5.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:20509a8c9f775b3a511e308bbe0b72897ba6b800767a7c90c5cca59d20d7c42c"}, + {file = "ujson-5.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b28407cfe315bd1b34f1ebe65d3bd735d6b36d409b334100be8cdffae2177b2f"}, + {file = "ujson-5.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d302bd17989b6bd90d49bade66943c78f9e3670407dbc53ebcf61271cadc399"}, + {file = "ujson-5.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f21315f51e0db8ee245e33a649dd2d9dce0594522de6f278d62f15f998e050e"}, + {file = "ujson-5.9.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5635b78b636a54a86fdbf6f027e461aa6c6b948363bdf8d4fbb56a42b7388320"}, + {file = "ujson-5.9.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:82b5a56609f1235d72835ee109163c7041b30920d70fe7dac9176c64df87c164"}, + {file = "ujson-5.9.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5ca35f484622fd208f55041b042d9d94f3b2c9c5add4e9af5ee9946d2d30db01"}, + {file = "ujson-5.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:829b824953ebad76d46e4ae709e940bb229e8999e40881338b3cc94c771b876c"}, + {file = "ujson-5.9.0-cp312-cp312-win32.whl", hash = "sha256:25fa46e4ff0a2deecbcf7100af3a5d70090b461906f2299506485ff31d9ec437"}, + {file = "ujson-5.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:60718f1720a61560618eff3b56fd517d107518d3c0160ca7a5a66ac949c6cf1c"}, + {file = "ujson-5.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d581db9db9e41d8ea0b2705c90518ba623cbdc74f8d644d7eb0d107be0d85d9c"}, + {file = "ujson-5.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ff741a5b4be2d08fceaab681c9d4bc89abf3c9db600ab435e20b9b6d4dfef12e"}, + {file = "ujson-5.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdcb02cabcb1e44381221840a7af04433c1dc3297af76fde924a50c3054c708c"}, + {file = "ujson-5.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e208d3bf02c6963e6ef7324dadf1d73239fb7008491fdf523208f60be6437402"}, + {file = "ujson-5.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4b3917296630a075e04d3d07601ce2a176479c23af838b6cf90a2d6b39b0d95"}, + {file = "ujson-5.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0c4d6adb2c7bb9eb7c71ad6f6f612e13b264942e841f8cc3314a21a289a76c4e"}, + {file = "ujson-5.9.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0b159efece9ab5c01f70b9d10bbb77241ce111a45bc8d21a44c219a2aec8ddfd"}, + {file = "ujson-5.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0cb4a7814940ddd6619bdce6be637a4b37a8c4760de9373bac54bb7b229698b"}, + {file = "ujson-5.9.0-cp38-cp38-win32.whl", hash = "sha256:dc80f0f5abf33bd7099f7ac94ab1206730a3c0a2d17549911ed2cb6b7aa36d2d"}, + {file = "ujson-5.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:506a45e5fcbb2d46f1a51fead991c39529fc3737c0f5d47c9b4a1d762578fc30"}, + {file = "ujson-5.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0fd2eba664a22447102062814bd13e63c6130540222c0aa620701dd01f4be81"}, + {file = "ujson-5.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bdf7fc21a03bafe4ba208dafa84ae38e04e5d36c0e1c746726edf5392e9f9f36"}, + {file = "ujson-5.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2f909bc08ce01f122fd9c24bc6f9876aa087188dfaf3c4116fe6e4daf7e194f"}, + {file = "ujson-5.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd4ea86c2afd41429751d22a3ccd03311c067bd6aeee2d054f83f97e41e11d8f"}, + {file = "ujson-5.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:63fb2e6599d96fdffdb553af0ed3f76b85fda63281063f1cb5b1141a6fcd0617"}, + {file = "ujson-5.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:32bba5870c8fa2a97f4a68f6401038d3f1922e66c34280d710af00b14a3ca562"}, + {file = "ujson-5.9.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:37ef92e42535a81bf72179d0e252c9af42a4ed966dc6be6967ebfb929a87bc60"}, + {file = "ujson-5.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f69f16b8f1c69da00e38dc5f2d08a86b0e781d0ad3e4cc6a13ea033a439c4844"}, + {file = "ujson-5.9.0-cp39-cp39-win32.whl", hash = "sha256:3382a3ce0ccc0558b1c1668950008cece9bf463ebb17463ebf6a8bfc060dae34"}, + {file = "ujson-5.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:6adef377ed583477cf005b58c3025051b5faa6b8cc25876e594afbb772578f21"}, + {file = "ujson-5.9.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ffdfebd819f492e48e4f31c97cb593b9c1a8251933d8f8972e81697f00326ff1"}, + {file = "ujson-5.9.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4eec2ddc046360d087cf35659c7ba0cbd101f32035e19047013162274e71fcf"}, + {file = "ujson-5.9.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbb90aa5c23cb3d4b803c12aa220d26778c31b6e4b7a13a1f49971f6c7d088e"}, + {file = "ujson-5.9.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba0823cb70866f0d6a4ad48d998dd338dce7314598721bc1b7986d054d782dfd"}, + {file = "ujson-5.9.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:4e35d7885ed612feb6b3dd1b7de28e89baaba4011ecdf995e88be9ac614765e9"}, + {file = "ujson-5.9.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b048aa93eace8571eedbd67b3766623e7f0acbf08ee291bef7d8106210432427"}, + {file = "ujson-5.9.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:323279e68c195110ef85cbe5edce885219e3d4a48705448720ad925d88c9f851"}, + {file = "ujson-5.9.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9ac92d86ff34296f881e12aa955f7014d276895e0e4e868ba7fddebbde38e378"}, + {file = "ujson-5.9.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6eecbd09b316cea1fd929b1e25f70382917542ab11b692cb46ec9b0a26c7427f"}, + {file = "ujson-5.9.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:473fb8dff1d58f49912323d7cb0859df5585cfc932e4b9c053bf8cf7f2d7c5c4"}, + {file = "ujson-5.9.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f91719c6abafe429c1a144cfe27883eace9fb1c09a9c5ef1bcb3ae80a3076a4e"}, + {file = "ujson-5.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b1c0991c4fe256f5fdb19758f7eac7f47caac29a6c57d0de16a19048eb86bad"}, + {file = "ujson-5.9.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a8ea0f55a1396708e564595aaa6696c0d8af532340f477162ff6927ecc46e21"}, + {file = "ujson-5.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:07e0cfdde5fd91f54cd2d7ffb3482c8ff1bf558abf32a8b953a5d169575ae1cd"}, + {file = "ujson-5.9.0.tar.gz", hash = "sha256:89cc92e73d5501b8a7f48575eeb14ad27156ad092c2e9fc7e3cf949f07e75532"}, ] [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -2966,13 +2985,13 @@ python-dateutil = ">=2.4.0" [[package]] name = "wcwidth" -version = "0.2.12" +version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.12-py2.py3-none-any.whl", hash = "sha256:f26ec43d96c8cbfed76a5075dac87680124fa84e0855195a6184da9c187f133c"}, - {file = "wcwidth-0.2.12.tar.gz", hash = "sha256:f01c104efdf57971bcb756f054dd58ddec5204dd15fa31d6503ea57947d97c02"}, + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] [[package]] @@ -3085,13 +3104,13 @@ files = [ [[package]] name = "xmlschema" -version = "2.5.0" +version = "3.0.1" description = "An XML Schema validator and decoder" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "xmlschema-2.5.0-py3-none-any.whl", hash = "sha256:f2b29c45485fac414cc1fdb38d18a220c5987d7d3aa996e6df6ff35ee94d5a63"}, - {file = "xmlschema-2.5.0.tar.gz", hash = "sha256:276a03e0fd3c94c148d528bff4d9482f9b99bf8c7b4056a2e8e703d28149d454"}, + {file = "xmlschema-3.0.1-py3-none-any.whl", hash = "sha256:116243b2ad38cd2df9ee0606d4e4e898a6f156736b39ab0017e6f49862c0809e"}, + {file = "xmlschema-3.0.1.tar.gz", hash = "sha256:bb24a5f4738e49d85d9eb03a2b5af26bbbbfdb055517ad953d98925094b8c026"}, ] [package.dependencies] @@ -3250,4 +3269,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "6f50be70b30ae90c359a54d1847544a3c9156822b917add7008dafc89d3d3b4e" +content-hash = "962d1184c48af00a191965cca13e241e8c2377f16bf32b568df6c791ef0af834" diff --git a/pkgs/pretix/pretix-static.nix b/pkgs/pretix/pretix-static.nix index f97399c..984ea71 100644 --- a/pkgs/pretix/pretix-static.nix +++ b/pkgs/pretix/pretix-static.nix @@ -8,7 +8,7 @@ let nodeEnv = buildNpmPackage rec { name = "pretix-nodejs"; src = "${pretix.passthru.pythonModule.pkgs.pretix}/lib/${pretix.python.libPrefix}/site-packages/pretix/static/npm_dir"; - npmDepsHash = "sha256-lf7GTXjvz4df1GeQ6uibwwGm+gKRU/RdNEHiCJ+zF1Y="; + npmDepsHash = "sha256-J+HsQijfE+L/sa28+ISyMDgjjKvSHe3J2bOe/QYHbnc="; dontNpmBuild = true; installPhase = '' mkdir -p $out diff --git a/pkgs/pretix/pyproject.toml b/pkgs/pretix/pyproject.toml index 541b36e..2a6d6a5 100644 --- a/pkgs/pretix/pyproject.toml +++ b/pkgs/pretix/pyproject.toml @@ -7,7 +7,7 @@ license = "MIT" [tool.poetry.dependencies] python = "^3.10" -pretix = "^2023.10.0" +pretix = "^2024.1.0" [tool.poetry.dev-dependencies] From 39d5076ee618fc8ec8b5c4fdb5910bd095f0f769 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 1 Feb 2024 00:19:56 +0000 Subject: [PATCH 015/562] Add new gpg public key --- pkgs/contact-page/src/gpg/3044E71E.txt | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 pkgs/contact-page/src/gpg/3044E71E.txt diff --git a/pkgs/contact-page/src/gpg/3044E71E.txt b/pkgs/contact-page/src/gpg/3044E71E.txt new file mode 100644 index 0000000..329f049 --- /dev/null +++ b/pkgs/contact-page/src/gpg/3044E71E.txt @@ -0,0 +1,23 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMEZbmOERYJKwYBBAHaRw8BAQdAarCLR2RvxBnRODJY8WM98gCRbsHzXFTYTIoR +ZlmbOQe0HEpha29iIExlY2huZXIgPGphbHJAamFsci5kZT6IjgQTFgoANhYhBDBE +5x497/SbWGz1gJv0/MuQhU2pBQJluY4RAhsBBAsJCAcEFQoJCAUWAgMBAAIeBQIX +gAAKCRCb9PzLkIVNqbmFAQDG8xNgbZsZx6N2ssVC9k98IUvuKuMZQ6Gju86EsnNY +dgD/eSVRfAKCtIPSGtoLvE5zL80hk117R4f8rbMEvrmt9gm4MwRluY53FgkrBgEE +AdpHDwEBB0DRonRUQIQSfkqX7yHFHewbEYnc/spaPufL6EnSPVLvZ4j1BBgWCgAm +FiEEMETnHj3v9JtYbPWAm/T8y5CFTakFAmW5jncCGwIFCQHhM4AAgQkQm/T8y5CF +Tal2IAQZFgoAHRYhBDp0/wfiMHs2RqSZ6EYNR7hAgU8/BQJluY53AAoJEEYNR7hA +gU8/HikBAPOziBknk+WcsKODsdViFedagVgtnjW8J6mJZRKNcD2fAP4/42g9wU2i +KHKHypLlGdmgOVOpSGNcubkcPFcOOHH7AZevAQDUU/UNpIHe7R3rYq4sFT2iYa9T +ZKpmOostoAzyYOViZwD/RA2suqGyrSe96JLnxwzy3LccYgV3VwEbHDWeUTvOCAy4 +OARluY6pEgorBgEEAZdVAQUBAQdAAXZvPoXdFpBhYS8KgCeXweUMlSwsCnXmgiDh +neSFMwsDAQgHiH4EGBYKACYWIQQwROcePe/0m1hs9YCb9PzLkIVNqQUCZbmOqQIb +DAUJAeEzgAAKCRCb9PzLkIVNqbmEAQDSBggKtjGkLuYtIHBBCfBF4Dx7odOapasa +tYqZTU7twwD/VhDvRGPbTl7X7DYQ36bmyjTe6cZAj3/M0ueQhlTrJAW4MwRluY7E +FgkrBgEEAdpHDwEBB0B95fmIsa7I4c3ttAko71CuEI/wTam0zYrYJNtL7sz3o4h+ +BBgWCgAmFiEEMETnHj3v9JtYbPWAm/T8y5CFTakFAmW5jsQCGyAFCQHhM4AACgkQ +m/T8y5CFTamxRwD6A9TAs2Ac2VUQDCGgIEgUeULB2fZ1i0s0zydXctKJf7wBAL64 +utFE0ryrkFHMGY4xHMwZfvWosYH/qfLlKadnb3cK +=WgEZ +-----END PGP PUBLIC KEY BLOCK----- From 739e2b064d707d6683d6441be829a40cd3c7db10 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 4 Feb 2024 15:57:10 +0000 Subject: [PATCH 016/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'home-manager': 'github:nix-community/home-manager/10cd9c53115061aa6a0a90aad0b0dde6a999cdb9' (2024-01-19) → 'github:nix-community/home-manager/652fda4ca6dafeb090943422c34ae9145787af37' (2024-02-03) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/f4a8d6d5324c327dcc2d863eb7f3cc06ad630df4' (2024-01-29) → 'github:nixos/nixpkgs/25e3d4c0d3591c99929b1ec07883177f6ea70c9d' (2024-02-01) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/996d064488f4bf9e61f9980790d35d5a79f64b40' (2024-01-30) → 'github:NixOS/nixpkgs/863faaacc38cd9047a1bf890033e35dd54c649e0' (2024-02-04) • Updated input 'nur': 'github:nix-community/NUR/68b210c7240de86b3639cf9542df9dcb9c504914' (2024-01-30) → 'github:nix-community/NUR/f66ad1a3a3aedd1862bc5dc1885ec348fa23f897' (2024-02-04) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/e0b44e9e2d3aa855d1dd77b06f067cd0e0c3860d' (2024-01-12) → 'github:nix-community/poetry2nix/658dc2595a7c1d269d096f43c0eb86f1708bc72b' (2024-02-04) • Updated input 'sops-nix': 'github:Mic92/sops-nix/73bf36912e31a6b21af6e0f39218e067283c67ef' (2024-01-28) → 'github:Mic92/sops-nix/23f61b897c00b66855074db471ba016e0cda20dd' (2024-02-04) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 7a06b9a..2732893 100644 --- a/flake.lock +++ b/flake.lock @@ -85,11 +85,11 @@ ] }, "locked": { - "lastModified": 1705659542, - "narHash": "sha256-WA3xVfAk1AYmFdwghT7mt/erYpsU6JPu9mdTEP/e9HQ=", + "lastModified": 1706981411, + "narHash": "sha256-cLbLPTL1CDmETVh4p0nQtvoF+FSEjsnJTFpTxhXywhQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "10cd9c53115061aa6a0a90aad0b0dde6a999cdb9", + "rev": "652fda4ca6dafeb090943422c34ae9145787af37", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1706644812, - "narHash": "sha256-OFP4nLyzvikvdbsAxQurqdhSK79lEjlyg3VtnSsmzbw=", + "lastModified": 1707061033, + "narHash": "sha256-4c0pDEoRNzlvGEk0nUJPUVX6NCqMB1YCkw7B5GYHLTo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "996d064488f4bf9e61f9980790d35d5a79f64b40", + "rev": "863faaacc38cd9047a1bf890033e35dd54c649e0", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1706515015, - "narHash": "sha256-eFfY5A7wlYy3jD/75lx6IJRueg4noE+jowl0a8lIlVo=", + "lastModified": 1706826059, + "narHash": "sha256-N69Oab+cbt3flLvYv8fYnEHlBsWwdKciNZHUbynVEOA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "f4a8d6d5324c327dcc2d863eb7f3cc06ad630df4", + "rev": "25e3d4c0d3591c99929b1ec07883177f6ea70c9d", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1706643926, - "narHash": "sha256-GOBRsUCZ3a9GgaLvbm2wpmsnZGY41IvEp9C3rQLXaTI=", + "lastModified": 1707060527, + "narHash": "sha256-85kLh6Pu3DHsZCSZTb4tXSNa36nrRBA63T/2CxGBmdo=", "owner": "nix-community", "repo": "NUR", - "rev": "68b210c7240de86b3639cf9542df9dcb9c504914", + "rev": "f66ad1a3a3aedd1862bc5dc1885ec348fa23f897", "type": "github" }, "original": { @@ -276,11 +276,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1705060653, - "narHash": "sha256-puYyylgrBS4AFAHeyVRTjTUVD8DZdecJfymWJe7H438=", + "lastModified": 1707047877, + "narHash": "sha256-5v8oizzm8iGl+6yTejn70CmWfR+JPGsbPdzUw2hd6gk=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "e0b44e9e2d3aa855d1dd77b06f067cd0e0c3860d", + "rev": "658dc2595a7c1d269d096f43c0eb86f1708bc72b", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1706410821, - "narHash": "sha256-iCfXspqUOPLwRobqQNAQeKzprEyVowLMn17QaRPQc+M=", + "lastModified": 1707015547, + "narHash": "sha256-YZr0OrqWPdbwBhxpBu69D32ngJZw8AMgZtJeaJn0e94=", "owner": "Mic92", "repo": "sops-nix", - "rev": "73bf36912e31a6b21af6e0f39218e067283c67ef", + "rev": "23f61b897c00b66855074db471ba016e0cda20dd", "type": "github" }, "original": { From 44b6af06b93aafef8d137de996a36c1e07d866f0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 4 Feb 2024 17:00:08 +0000 Subject: [PATCH 017/562] Fix invalid default scheme assignment --- home-manager/modules/dynamic-colors.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home-manager/modules/dynamic-colors.nix b/home-manager/modules/dynamic-colors.nix index 233497d..2b2fc27 100644 --- a/home-manager/modules/dynamic-colors.nix +++ b/home-manager/modules/dynamic-colors.nix @@ -79,7 +79,7 @@ let if scheme is None: if target.exists(): continue - scheme = entry[DEFAULT_SCHEME] + scheme = DEFAULT_SCHEME else: if target.exists() and target.is_symlink: os.remove(target) From f18126b6afce9ac40f7a0e88602544ef911b49b6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 4 Feb 2024 17:00:35 +0000 Subject: [PATCH 018/562] Ignore configs that don't exist --- home-manager/modules/dynamic-colors.nix | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/home-manager/modules/dynamic-colors.nix b/home-manager/modules/dynamic-colors.nix index 2b2fc27..1aa2c47 100644 --- a/home-manager/modules/dynamic-colors.nix +++ b/home-manager/modules/dynamic-colors.nix @@ -89,7 +89,10 @@ let 'dark': entry['dark'], }[scheme] - os.symlink(src, target) + try: + os.symlink(src, target) + except FileNotFoundError: + pass if entry.get('exec') is not None: command, *args = entry["exec"] @@ -102,10 +105,13 @@ let for arg in args ] print(command, *args) - subprocess.run( - (command, *args), - cwd=directory - ) + try: + subprocess.run( + (command, *args), + cwd=directory + ) + except FileNotFoundError: + pass if __name__ == '__main__': From d8da8bd96f51404945d395514629e120137512da Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 10 Feb 2024 14:23:08 +0000 Subject: [PATCH 019/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nix-pre-commit-hooks': 'github:cachix/pre-commit-hooks.nix/7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf' (2024-01-28) → 'github:cachix/pre-commit-hooks.nix/0db2e67ee49910adfa13010e7f012149660af7f0' (2024-02-07) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/25e3d4c0d3591c99929b1ec07883177f6ea70c9d' (2024-02-01) → 'github:nixos/nixpkgs/6832d0d99649db3d65a0e15fa51471537b2c56a6' (2024-02-07) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/863faaacc38cd9047a1bf890033e35dd54c649e0' (2024-02-04) → 'github:NixOS/nixpkgs/2253eb356824637e3aa49bb399f546336efeaad1' (2024-02-10) • Updated input 'nur': 'github:nix-community/NUR/f66ad1a3a3aedd1862bc5dc1885ec348fa23f897' (2024-02-04) → 'github:nix-community/NUR/d52b9e3d55a8ec67a0fd08dce7a511a670d5d99a' (2024-02-10) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/658dc2595a7c1d269d096f43c0eb86f1708bc72b' (2024-02-04) → 'github:nix-community/poetry2nix/4eb2ac54029af42a001c9901194e9ce19cbd8a40' (2024-02-06) • Updated input 'sops-nix': 'github:Mic92/sops-nix/23f61b897c00b66855074db471ba016e0cda20dd' (2024-02-04) → 'github:Mic92/sops-nix/2168851d58595431ee11ebfc3a49d60d318b7312' (2024-02-08) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/9a333eaa80901efe01df07eade2c16d183761fa3' (2024-01-22) → 'github:NixOS/nixpkgs/bc6cb3d59b7aab88e967264254f8c1aa4c0284e9' (2024-02-08) --- flake.lock | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/flake.lock b/flake.lock index 2732893..1089237 100644 --- a/flake.lock +++ b/flake.lock @@ -154,11 +154,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1706424699, - "narHash": "sha256-Q3RBuOpZNH2eFA1e+IHgZLAOqDD9SKhJ/sszrL8bQD4=", + "lastModified": 1707297608, + "narHash": "sha256-ADjo/5VySGlvtCW3qR+vdFF4xM9kJFlRDqcC9ZGI8EA=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf", + "rev": "0db2e67ee49910adfa13010e7f012149660af7f0", "type": "github" }, "original": { @@ -202,27 +202,27 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1705957679, - "narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=", + "lastModified": 1707391491, + "narHash": "sha256-TyDXcq8Z3slMNeyeF+ke0BzISWuM6NrBklr7XyiRbZA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9a333eaa80901efe01df07eade2c16d183761fa3", + "rev": "bc6cb3d59b7aab88e967264254f8c1aa4c0284e9", "type": "github" }, "original": { "owner": "NixOS", - "ref": "release-23.05", + "ref": "release-23.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgsMaster": { "locked": { - "lastModified": 1707061033, - "narHash": "sha256-4c0pDEoRNzlvGEk0nUJPUVX6NCqMB1YCkw7B5GYHLTo=", + "lastModified": 1707574216, + "narHash": "sha256-jPz3FmuVF5XVqDkOucyJ78KB6cwsQyR0kKzT+po+x4c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "863faaacc38cd9047a1bf890033e35dd54c649e0", + "rev": "2253eb356824637e3aa49bb399f546336efeaad1", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1706826059, - "narHash": "sha256-N69Oab+cbt3flLvYv8fYnEHlBsWwdKciNZHUbynVEOA=", + "lastModified": 1707347730, + "narHash": "sha256-0etC/exQIaqC9vliKhc3eZE2Mm2wgLa0tj93ZF/egvM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "25e3d4c0d3591c99929b1ec07883177f6ea70c9d", + "rev": "6832d0d99649db3d65a0e15fa51471537b2c56a6", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1707060527, - "narHash": "sha256-85kLh6Pu3DHsZCSZTb4tXSNa36nrRBA63T/2CxGBmdo=", + "lastModified": 1707565398, + "narHash": "sha256-cuNdIPwqo2LaOWxvmCeUb1I0UAGFavT8bvUf2O7eJVo=", "owner": "nix-community", "repo": "NUR", - "rev": "f66ad1a3a3aedd1862bc5dc1885ec348fa23f897", + "rev": "d52b9e3d55a8ec67a0fd08dce7a511a670d5d99a", "type": "github" }, "original": { @@ -276,11 +276,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1707047877, - "narHash": "sha256-5v8oizzm8iGl+6yTejn70CmWfR+JPGsbPdzUw2hd6gk=", + "lastModified": 1707195113, + "narHash": "sha256-xPFxTMe4rKE/ZWLlOWv22qpGwpozpR+U1zhyf1040Zk=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "658dc2595a7c1d269d096f43c0eb86f1708bc72b", + "rev": "4eb2ac54029af42a001c9901194e9ce19cbd8a40", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1707015547, - "narHash": "sha256-YZr0OrqWPdbwBhxpBu69D32ngJZw8AMgZtJeaJn0e94=", + "lastModified": 1707397511, + "narHash": "sha256-pYqXcTjcPC/go3FzT1dYtYsbmzAjO1MHhT/xgiI6J7o=", "owner": "Mic92", "repo": "sops-nix", - "rev": "23f61b897c00b66855074db471ba016e0cda20dd", + "rev": "2168851d58595431ee11ebfc3a49d60d318b7312", "type": "github" }, "original": { From bc9e106d8a2fabde8f0bcf982ae935e3d7833dde Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 10 Feb 2024 14:33:08 +0000 Subject: [PATCH 020/562] Disable IPv6 for Postfix smtp My provider does not allow to set reverse DNS and therefore, other mail servers don't accept my mail. Let's just disable IPv6 for now. --- hosts/iron/services/mail.nix | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/hosts/iron/services/mail.nix b/hosts/iron/services/mail.nix index 4ed06b9..9d83681 100644 --- a/hosts/iron/services/mail.nix +++ b/hosts/iron/services/mail.nix @@ -31,11 +31,16 @@ in messageSizeLimit = 50 * 1024 * 1024; }; }; - services.postfix.config = { - smtp_bind_address = "159.69.103.126"; - smtp_bind_address_enforce = true; + services.postfix = { + config = { + smtp_bind_address = "159.69.103.126"; + smtp_bind_address_enforce = true; + }; + masterConfig.smtp_inet.args = [ + "-o" + "inet_protocols=ipv4" + ]; }; - security.acme.certs."hha.jalr.de" = { dnsProvider = "hetzner"; credentialsFile = pkgs.writeText "certbotCredentialsFile" "HETZNER_API_KEY_FILE=${config.sops.secrets.hetzner-api-key.path}"; From 839631035850c690098fe88ce84320da6c47b49f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 16 Feb 2024 21:09:14 +0000 Subject: [PATCH 021/562] Add bathroom mirror --- hosts/iron/secrets.yaml | 6 +- .../services/esphome/devices/badspiegel.yaml | 115 ++++++++++++++++++ hosts/iron/services/home-assistant.nix | 2 + 3 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 hosts/iron/services/esphome/devices/badspiegel.yaml diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index f5dfd67..ca2cb55 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -9,7 +9,7 @@ dkim-keys: radicale-htpasswd: ENC[AES256_GCM,data:Q0WnleP9I4xozsL/H+5oV3Ag7khfalV40A6ub+DA07U8UKna3/ju533RmjWOnETzSNa6XK140nfCcfGZCiqGyF9tfuuXcKFu+j4=,iv:87PSvHyKF7QUQZmEuxM+IT0VKSGnS0MjoUmCqJ+6tzI=,tag:yrP3TgxE8aSZf0MrCF9dsQ==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] -esphome: ENC[AES256_GCM,data:u8fNhi3J2wEJ6uxYT5LfYzktnmhTuHX4Tundu8iPxstFHkk7eF4HjlZi7KWmSZSFNqZqCRQ/Kksmtylc5LxGvVUAgwr4fUu9qBns3UbwwdrOrenefrcDZDq2Z2VjNtIHK2CbmqmDoodZy7JWgezY8ZzEjqcpv+btZ/91+ApM/5Q81gxcbFWMmurOp/yl0LSaCVu4sE7L60IstZisJMtmJ/YTY6KYop6TMuwUUDwVa5kgqzxLJWc0MEDt7rSutqVd7ryGzacvcaC4HcOcbVHVNc5tCqELBxExV4zd56rK2RLfBtDJVX7S3h+deWmNg6IMnPkAtgaer0QT8x4BIhbj8r7S2lcWDF1r1V2aZQ33mXbiuMlDVdmHliMnKpY+QIVLLtC0xNofRKixD+S1zmsjqQTJaMZO76dk8dRrZ+mnDPjDdLjT6687YPOeRuIAzLYhJrgyvQdE+SBgx0B71L/Q0Jp2joO4esx0iWwa8A6h8WZMulO1CGQpRfhI5GABz/sJtSm1pkZbxHJnhKXxAV3KiAP3RH673xkdo3Wmn1Q7RsOVsogXodYd4klmSgAszvF0eBl/pazCgfErI6ReNIr7cUGYd82Ub0gveSvPzqCPGJMkxwZ51QOUKI/pvw4pywolpH1JN5edPfoepVvbrrk/TD8X0Dd6YKOWuzjZ8LsuM1znqywwGh5BGvWzSpK1JZcYJG4Na5LFHgniyOuL6y6aANXSW6TBuehNwNEHkbm2GOjpxy3Ml5nWwQLkkD2wEdSU0/MW23rr6cOVUOrYiZvxip8l5Nf5Cl/JTLGaepRJaMBkTZj4G5x+r4zqOTBsbcEG8eiPAZG5uIxxVYo=,iv:U1srWrPW11lz/UYFW7Z9apla+ShH7W/QzDiw+evfcXg=,tag:1dxPp+m2O6xSyAZEsSf0dw==,type:str] +esphome: ENC[AES256_GCM,data:deY5RdItnZt7iJzSiHWvduRWqLTPt5ep70k/oLMjSanqYgAdWV/bGvod3I4bF2HdZymZjmeeGYo6lJCxJ7PwEfzhUGG6626wHhJ5VlfVThwqZ3mXkENdl/+aDyMtaxfaLTn3ygPewG/lAMY8Wn9beCTt4J6te5HlmHSp0VcFvLNl/m6F7nMdd1r1oaubvW7TPPe1+1jkpqphfd56bGYeEQArNEUCeCaXdtPCNZA/aEHZIYmmixuECdzTFTOreHBtG0pFMuAFrVsS3EZxMmnoMhAPrkhML2MSQnXLM2FGPd/FfeQzi9AMmiUqv55YGsJkuNXJs9x6ouU+JsjP876owFIKhB5VEEZAw9cqv/OFdjGboW2akjchZ5HROaofLfHjlVKy1PQwzbVwb8igHZE9PIFbk9O0Jb5fawoe9L9xp0jI6XrnHkgOFhv65uxogzYLFnMvTR8ZFJ02HPNGCh+eQECa5iuzTRb3OWCYls6si7RKGZgu1tE3HADVhqk6ViHckJLnlT1YABmnxoQiKovz1UIOE39e5Wl9m0XGC6OME37bJuSM3Sk24BBHQ36t3IverN3W9bhyhIQe4hw7PXuBVDCu4FJi1PDjmJwRWAWf5+BC1SFigSWDzunI55sX8zWCko9b75BKZoFfxKZminhFYwKTdtRdhbKPK8CIa9FcVf2eDmykhMvMmKVIm74d4yEXHjKt8Yww0x8TKEcqWIobMyPqlixpShaa7c73JgPfzkN0LYK4Da1Y+5MpZdUUypCe+R+Jwg/ROXZpGgwK7LFA2JHS71dq7nysHn5WhHFREPdVF558iiiOALCdMnvdUT6fU748Hx+KijYUl2Kax09l9sRkRsuCj7LRJ+ARDY/v8NlQJeXRIsyosg//DvejNJ5F7oMJK+H/sblTfCoY6SLp1WHAhywW6c5uBsGm1xLsdecfWok3sVv2qjQ5l2FPMvlXdp/0/RjxhLnvVYVTWzw=,iv:5Yybvm1eHbdJop6fGRmaW3Tnie3KHv21zVdWBZCUntA=,tag:7WDHLXkzWS8Dfs79u4Ur2A==,type:str] sops: kms: [] gcp_kms: [] @@ -25,8 +25,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-01-12T02:04:19Z" - mac: ENC[AES256_GCM,data:pXHs+ucPNr+v/x3R2Jb+1zxnHdAeSneT+6lt20eLhjvcMQIFckYXFxc0eOMnV00jTWb+vyz6g5zHsg9+kv+xm/xBHozw9sRJi01Ni+AR/ZLSbVDa6NiMyu536MrA1TeD3iZrxgmpDTuxsChdETz0mmPyEPOMT29seWYlhzI/++o=,iv:2guaerRyQj6qz9Dyo2HbC/dXUA6cuAA+yuDwbUDCcK8=,tag:HcVT4KdLCyjwtWP24JVfhg==,type:str] + lastmodified: "2024-02-12T23:53:31Z" + mac: ENC[AES256_GCM,data:11gj3hKXjXDW27rbLCmIKExJdVnDUJbdPiQxzYGlk4FSxviIbCWdTEQ5VN4r8y/GxehVO757010jxu8u/kKR0MU3BFDkVyxh4Qv7LoUisrj7/8uJawOlmlEdykTxTgW+Q1yxy2mhK3t6D2+f9rNKYCmJhazHXJN9cuhiL1xXwcQ=,iv:OQfy2FQRw+SuXjDn2Woi66BI+cRkv1i0nnTaga4iLH8=,tag:j+fKWVttetoKaHwGRJ8Dmw==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/esphome/devices/badspiegel.yaml b/hosts/iron/services/esphome/devices/badspiegel.yaml new file mode 100644 index 0000000..9f8989c --- /dev/null +++ b/hosts/iron/services/esphome/devices/badspiegel.yaml @@ -0,0 +1,115 @@ +esphome: + name: "badspiegel" + friendly_name: "Badspiegel" + platformio_options: + board_build.flash_mode: dio + on_boot: + then: + - light.turn_on: + id: front_light + brightness: 30% + color_temperature: 2700 K + - light.turn_on: + id: background_light + brightness: 20% + color_temperature: 2700 K + +esp32: + board: wemos_d1_uno32 + framework: + type: arduino + version: recommended + platform_version: 5.4.0 + +logger: + +api: + encryption: + key: !secret apikey_badspiegel + +ota: + password: !secret otapass_badspiegel + +wifi: + ssid: !secret wifi_ssid_bw + password: !secret wifi_password_bw + domain: .iot.bw.jalr.de + power_save_mode: none + enable_on_boot: True + fast_connect: On + output_power: 8.5 + +output: + - platform: ledc + pin: GPIO17 + id: output_background_warm + - platform: ledc + pin: GPIO25 + id: output_background_cold + - platform: ledc + pin: GPIO16 + id: output_front_warm + - platform: ledc + pin: GPIO26 + id: output_front_cold + +light: + - platform: cwww + name: "Background light" + id: background_light + cold_white: output_background_cold + warm_white: output_background_warm + cold_white_color_temperature: 6500 K + warm_white_color_temperature: 2700 K + constant_brightness: true + gamma_correct: 0 + - platform: cwww + name: "Front light" + id: front_light + cold_white: output_front_cold + warm_white: output_front_warm + cold_white_color_temperature: 6500 K + warm_white_color_temperature: 2700 K + constant_brightness: true + gamma_correct: 0 + +switch: + - platform: gpio + name: "Heating" + id: heating + pin: GPIO2 + icon: "mdi:thermometer" + - platform: gpio + name: "Soundsystem" + id: soundsystem + pin: GPIO4 + icon: "mdi:speaker" + +esp32_touch: +# setup_mode: true + +binary_sensor: +# ESP32 touch pins: 4, 13, 27, 32, 33 +# - platform: esp32_touch +# name: "touch pad GPIO13" +# pin: GPIO13 +# threshold: 1000 +# on_press: +# internal: true + - platform: esp32_touch + name: "touch pad GPIO12" + pin: GPIO12 + threshold: 900 + on_press: + then: + - light.toggle: + id: front_light + internal: true + - platform: esp32_touch + name: "touch pad GPIO14" + pin: GPIO14 + threshold: 900 + on_press: + then: + - light.toggle: + id: background_light diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index 27d40ac..e2c2f0e 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -83,6 +83,8 @@ in "light.eingang_deckenleuchte_deckenleuchte" "light.led_panel_schreibtisch_panel" "light.kueche_leiste_led_light" + "light.badspiegel_background_light" + "light.badspiegel_front_light" ]; min_brightness = 20; } From 5a66fae01b51f4bd93c551457683dca822733440 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 16 Feb 2024 21:09:40 +0000 Subject: [PATCH 022/562] Increase current --- .../esphome/devices/chinafrickeldeckenleuchte.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml b/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml index 371d9fe..f6b783b 100644 --- a/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml +++ b/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml @@ -13,23 +13,23 @@ output: - platform: bp5758d id: output_ch1 channel: 1 - current: 20 + current: 60 - platform: bp5758d id: output_ch2 channel: 2 - current: 20 + current: 60 - platform: bp5758d id: output_ch3 channel: 3 - current: 20 + current: 60 - platform: bp5758d id: output_ch4 channel: 4 - current: 20 + current: 60 - platform: bp5758d id: output_ch5 channel: 5 - current: 20 + current: 60 light: - platform: rgbww From cc48b41153f52b2e91ee61cc06a4b136b69823d1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 16 Feb 2024 21:10:07 +0000 Subject: [PATCH 023/562] Add toggle button --- .../services/esphome/devices/kueche-leiste.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/hosts/iron/services/esphome/devices/kueche-leiste.yaml b/hosts/iron/services/esphome/devices/kueche-leiste.yaml index cffa6b8..a5189db 100644 --- a/hosts/iron/services/esphome/devices/kueche-leiste.yaml +++ b/hosts/iron/services/esphome/devices/kueche-leiste.yaml @@ -61,3 +61,18 @@ sensor: humidity: name: "Living Room Humidity" update_interval: 60s + +binary_sensor: + - platform: gpio + pin: + number: GPIO6 + mode: + input: true + pullup: true + inverted: true + name: "Physical Power Button" + on_press: + then: + - light.toggle: + id: led_light + internal: True From a6cdef851890c677df2cf9c74407aa565dd2730a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 19 Feb 2024 15:20:33 +0000 Subject: [PATCH 024/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nix-pre-commit-hooks': 'github:cachix/pre-commit-hooks.nix/0db2e67ee49910adfa13010e7f012149660af7f0' (2024-02-07) → 'github:cachix/pre-commit-hooks.nix/5df5a70ad7575f6601d91f0efec95dd9bc619431' (2024-02-15) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/6832d0d99649db3d65a0e15fa51471537b2c56a6' (2024-02-07) → 'github:nixos/nixpkgs/84d981bae8b5e783b3b548de505b22880559515f' (2024-02-17) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/2253eb356824637e3aa49bb399f546336efeaad1' (2024-02-10) → 'github:NixOS/nixpkgs/090f90c92fea282f11c9f33624b17a14a6087a28' (2024-02-19) • Updated input 'nur': 'github:nix-community/NUR/d52b9e3d55a8ec67a0fd08dce7a511a670d5d99a' (2024-02-10) → 'github:nix-community/NUR/0746498eec8c0a0b2ac98fe835d6af996b719531' (2024-02-19) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/4eb2ac54029af42a001c9901194e9ce19cbd8a40' (2024-02-06) → 'github:nix-community/poetry2nix/403d923ea8e2e6cedce3a0f04a9394c4244cb806' (2024-02-17) • Updated input 'sops-nix': 'github:Mic92/sops-nix/2168851d58595431ee11ebfc3a49d60d318b7312' (2024-02-08) → 'github:Mic92/sops-nix/ffed177a9d2c685901781c3c6c9024ae0ffc252b' (2024-02-18) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/bc6cb3d59b7aab88e967264254f8c1aa4c0284e9' (2024-02-08) → 'github:NixOS/nixpkgs/69405156cffbdf2be50153f13cbdf9a0bea38e49' (2024-02-17) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 1089237..d732f65 100644 --- a/flake.lock +++ b/flake.lock @@ -154,11 +154,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1707297608, - "narHash": "sha256-ADjo/5VySGlvtCW3qR+vdFF4xM9kJFlRDqcC9ZGI8EA=", + "lastModified": 1708018599, + "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "0db2e67ee49910adfa13010e7f012149660af7f0", + "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", "type": "github" }, "original": { @@ -202,11 +202,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1707391491, - "narHash": "sha256-TyDXcq8Z3slMNeyeF+ke0BzISWuM6NrBklr7XyiRbZA=", + "lastModified": 1708210246, + "narHash": "sha256-Q8L9XwrBK53fbuuIFMbjKvoV7ixfLFKLw4yV+SD28Y8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bc6cb3d59b7aab88e967264254f8c1aa4c0284e9", + "rev": "69405156cffbdf2be50153f13cbdf9a0bea38e49", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1707574216, - "narHash": "sha256-jPz3FmuVF5XVqDkOucyJ78KB6cwsQyR0kKzT+po+x4c=", + "lastModified": 1708355737, + "narHash": "sha256-gnvsgW5EHnpfMhVAGtjZyXOCZVIg3e3kMqGOzZdPkDE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2253eb356824637e3aa49bb399f546336efeaad1", + "rev": "090f90c92fea282f11c9f33624b17a14a6087a28", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1707347730, - "narHash": "sha256-0etC/exQIaqC9vliKhc3eZE2Mm2wgLa0tj93ZF/egvM=", + "lastModified": 1708161998, + "narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6832d0d99649db3d65a0e15fa51471537b2c56a6", + "rev": "84d981bae8b5e783b3b548de505b22880559515f", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1707565398, - "narHash": "sha256-cuNdIPwqo2LaOWxvmCeUb1I0UAGFavT8bvUf2O7eJVo=", + "lastModified": 1708353184, + "narHash": "sha256-BdSI+j49fZmMD9to0Har0wRvkN14x2Ipzipu6cQfp2A=", "owner": "nix-community", "repo": "NUR", - "rev": "d52b9e3d55a8ec67a0fd08dce7a511a670d5d99a", + "rev": "0746498eec8c0a0b2ac98fe835d6af996b719531", "type": "github" }, "original": { @@ -276,11 +276,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1707195113, - "narHash": "sha256-xPFxTMe4rKE/ZWLlOWv22qpGwpozpR+U1zhyf1040Zk=", + "lastModified": 1708175019, + "narHash": "sha256-B7wY2pNrLc3X9uYRo1LUmVzI6oH6fX8oi+96GdUpayU=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "4eb2ac54029af42a001c9901194e9ce19cbd8a40", + "rev": "403d923ea8e2e6cedce3a0f04a9394c4244cb806", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1707397511, - "narHash": "sha256-pYqXcTjcPC/go3FzT1dYtYsbmzAjO1MHhT/xgiI6J7o=", + "lastModified": 1708225343, + "narHash": "sha256-Q0uVUOfumc1DcKsIJIfMCHph08MjkOvZxvPb/Vi8hWw=", "owner": "Mic92", "repo": "sops-nix", - "rev": "2168851d58595431ee11ebfc3a49d60d318b7312", + "rev": "ffed177a9d2c685901781c3c6c9024ae0ffc252b", "type": "github" }, "original": { From 98498cdf77ee79400e31b325657d9b4571a86b89 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 19 Feb 2024 15:25:56 +0000 Subject: [PATCH 025/562] Include automations and scenes --- hosts/iron/services/home-assistant.nix | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index e2c2f0e..1bce8db 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -89,7 +89,7 @@ in min_brightness = 20; } ]; - automation = [ + "automation nix" = [ { alias = "Waschmaschine fertig Benachrichtigung"; trigger = { @@ -108,9 +108,18 @@ in ]; } ]; + "automation ui" = "!include automations.yaml"; + "scene nix" = [ + ]; + "scene ui" = "!include scenes.yaml"; }; }; + systemd.tmpfiles.rules = [ + "f ${config.services.home-assistant.configDir}/automations.yaml 0755 hass hass" + "f ${config.services.home-assistant.configDir}/scenes.yaml 0755 hass hass" + ]; + services.nginx.virtualHosts."hass.jalr.de" = { enableACME = true; forceSSL = true; From 9bd6400f3957ca1a86630ec848d9daa1f2fc9649 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 19 Feb 2024 15:31:10 +0000 Subject: [PATCH 026/562] Change controller to ESP32C3 --- .../devices/led-panel-schreibtisch.yaml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml b/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml index a58e7e5..8440bd6 100644 --- a/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml +++ b/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml @@ -1,6 +1,8 @@ esphome: name: "led-panel-schreibtisch" friendly_name: "LED Panel Schreibtisch" + platformio_options: + board_build.flash_mode: dio on_boot: then: - light.turn_on: @@ -20,31 +22,34 @@ wifi: ssid: !secret wifi_ssid_bw password: !secret wifi_password_bw domain: .iot.bw.jalr.de + power_save_mode: none + enable_on_boot: True + fast_connect: On + output_power: 8.5 esp32: - board: wemos_d1_uno32 + board: esp32-c3-devkitm-1 + variant: ESP32C3 framework: - type: arduino - version: recommended - platform_version: 5.4.0 + type: esp-idf logger: output: - platform: ledc - pin: GPIO16 + pin: GPIO1 id: output_warm power_supply: power frequency: 2kHz - platform: ledc - pin: GPIO17 + pin: GPIO3 id: output_cold power_supply: power frequency: 2kHz power_supply: - id: power - pin: GPIO25 + pin: GPIO0 enable_time: 0s keep_on_time: 0s From 761831fdbed1dd20240c75b53cbf2e0a7cf63fc7 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 19 Feb 2024 15:33:09 +0000 Subject: [PATCH 027/562] Use rsync to manage esphome config directory esphome tries to write build outputs to /nix/store which of course does not work as it is read-only. --- hosts/iron/services/esphome/default.nix | 34 +++++-------------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/hosts/iron/services/esphome/default.nix b/hosts/iron/services/esphome/default.nix index 05b07d5..3914464 100644 --- a/hosts/iron/services/esphome/default.nix +++ b/hosts/iron/services/esphome/default.nix @@ -14,8 +14,6 @@ let mkdir $out cp -r * $out ln -snf "${config.sops.secrets.esphome.path}" "$out/secrets.yaml" - ln -snf "${stateDir}/.esphome" "$out/.esphome" - ln -snf "${stateDir}/.gitignore" "$out/.gitignore" ''; }; esphomeParams = @@ -35,39 +33,19 @@ in enable = true; address = "127.0.0.1"; port = ports.esphome.tcp; - /* - package = pkgs.esphome.overrideAttrs (o: o // { - propagatedBuildInputs = (o.propagatedBuildInputs or []) ++ [ - pkgs.gcc + package = pkgs.esphome.overrideAttrs (attrs: { + makeWrapperArgs = attrs.makeWrapperArgs ++ [ + "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ pkgs.stdenv.cc.cc.lib ]}" ]; - makeWrapperArgs = [ - # platformio is used in esphomeyaml/platformio_api.py - # esptool is used in esphomeyaml/__main__.py - # git is used in esphomeyaml/writer.py - "--prefix PATH : ${lib.makeBinPath (with pkgs; [ platformio esptool_3 git gcc])}" - "--set ESPHOME_USE_SUBPROCESS ''" - ]; - }); - */ - }; - - systemd.services.esphome.serviceConfig = { - WorkingDirectory = lib.mkForce cfgdir; - ExecStart = lib.mkForce "${cfg.package}/bin/esphome dashboard ${esphomeParams} ${cfgdir}"; - /* - Environment = [ - "NIX_LD=/nix/store/qn3ggz5sf3hkjs2c797xf7nan3amdxmp-glibc-2.38-27/lib/ld-linux-x86-64.so.2" - "NIX_LD_LIBRARY_PATH=/nix/store/myw67gkgayf3s2mniij7zwd79lxy8v0k-gcc-12.3.0-lib/lib" - ]; - */ + }); }; system.activationScripts.esphome-custom = { deps = [ "users" "groups" ]; text = '' mkdir -p "${stateDir}/.esphome" - touch "${stateDir}/.gitignore" - chown esphome:esphome "${stateDir}/.esphome" "${stateDir}/.gitignore" + ${pkgs.rsync}/bin/rsync -a --delete "${cfgdir}/" "${stateDir}/" + chown esphome:esphome "${stateDir}/" ''; }; } From 88a53b42b6b13529be9a9fd3fb62977b6813c8bb Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 19 Feb 2024 17:06:15 +0000 Subject: [PATCH 028/562] Add Digitaler Dienst email account --- home-manager/users/jalr.nix | 67 ++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 20 deletions(-) diff --git a/home-manager/users/jalr.nix b/home-manager/users/jalr.nix index dca1e9a..4428902 100644 --- a/home-manager/users/jalr.nix +++ b/home-manager/users/jalr.nix @@ -68,30 +68,57 @@ tig ]; - accounts.email.accounts."jalr" = { - primary = true; - userName = "jalr@jalr.de"; - address = "jalr@jalr.de"; - realName = "Jakob Lechner"; - imap = { - host = "hha.jalr.de"; - port = 143; - tls = { + accounts.email.accounts = { + "jalr" = { + primary = true; + userName = "jalr@jalr.de"; + address = "jalr@jalr.de"; + realName = "Jakob Lechner"; + imap = { + host = "hha.jalr.de"; + port = 143; + tls = { + enable = true; + useStartTls = true; + }; + }; + smtp = { + host = "hha.jalr.de"; + port = 587; + tls = { + enable = true; + useStartTls = true; + }; + }; + thunderbird = { enable = true; - useStartTls = true; + profiles = [ "default" ]; }; }; - smtp = { - host = "hha.jalr.de"; - port = 587; - tls = { - enable = true; - useStartTls = true; + "Digitaler Dienst" = { + userName = "j.lechner@digitaler-dienst.gmbh"; + address = "j.lechner@digitaler-dienst.gmbh"; + realName = "Jakob Lechner"; + imap = { + host = "mail.agenturserver.de"; + port = 143; + tls = { + enable = true; + useStartTls = true; + }; + }; + smtp = { + host = "mail.agenturserver.de"; + port = 587; + tls = { + enable = true; + useStartTls = true; + }; + }; + thunderbird = { + enable = true; + profiles = [ "default" ]; }; - }; - thunderbird = { - enable = true; - profiles = [ "default" ]; }; }; }; From dbc63ae057d951745d08d994ecc5fb946179a908 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 19 Feb 2024 17:06:54 +0000 Subject: [PATCH 029/562] Add .well-known config for radicale --- hosts/iron/services/radicale.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/iron/services/radicale.nix b/hosts/iron/services/radicale.nix index bf5196d..a47cee7 100644 --- a/hosts/iron/services/radicale.nix +++ b/hosts/iron/services/radicale.nix @@ -25,6 +25,8 @@ in # proxy_pass_request_headers = on; # underscores_in_headers = on; }; + locations."/.well-known/caldav".return = "301 $scheme://$host:$server_port/radicale"; + locations."/.well-known/carddav".return = "301 $scheme://$host:$server_port/radicale"; }; }; From 66fe0d953991671fd265e8cc17824483835c84d4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 21 Feb 2024 17:50:44 +0000 Subject: [PATCH 030/562] Verify ACME certificates using nginx As nginx runs on this host anyway, there is no need to do DNS validation. As the Hetzner API token for DNS access does not allow fine-grained permissions, this also improves security. --- hosts/iron/secrets.yaml | 5 ++--- hosts/iron/services/mail.nix | 10 +++------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index ca2cb55..80ac050 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -2,7 +2,6 @@ duckdns-secret: ENC[AES256_GCM,data:SAf/xZ28tgmvqcVKC2tMNRm838AVMMNCC3fpYLXBEIoT sturzbach-htpasswd: ENC[AES256_GCM,data:qqBwu6mASnRqjy65knU4uIvBNXXgrfcmvWnbmOH4tVQ7vRbpEhe/GQDwAg==,iv:OQnDOzezjajGl35m/u5StQeMRR+1sNDD5u1my1wTngQ=,tag:7zjVRWI1IzZ5iS3sFHLubg==,type:str] navidrome-password-encryption-key: ENC[AES256_GCM,data:ynQsFyGDEBnlWhTlv0mF7mLiXOjijq9ixWWEa1OXsTOYAd74dU0dp3Fo532WtD4fPvIWEf8Y2dYmY7zPVLuydQ==,iv:GJqPVL5OIFPLMcCVOjWvMjyFR4iTXo3uGE8R0keTzG0=,tag:RTERQgYRxBBevlL2H1lIWA==,type:str] wireguard_key_hetzner-ha: ENC[AES256_GCM,data:ak/KpQIHBNRPriJ1IeKYXIp4CcnygRHSj5MzZNnuxQnVunmmtzGu0lBEajA=,iv:aNw3EooT6XE1zC+g37WSJasRCfnNUaKQrYCDBMTxRrg=,tag:KXc70tVFc7xDLlefk1Hzow==,type:str] -hetzner-api-key: ENC[AES256_GCM,data:7eWYncujkEytQzhRdNRItPgpz1eUvcyp2PVLJtHbqd8=,iv:AxoKJUuor32kC3ZdpkDPUEUlPRosY6cKoWx0TIGK9wA=,tag:SVtXMraGxnJnx/j3zMQnQw==,type:str] rspamd-worker-controller: ENC[AES256_GCM,data:7tS8bEr9i5F+YZoj3uPQa6Xd2SCsuC+jE531AbKEmPHNeL3qMyO0pQZ/P1ONaPHTVMOPQHYABihDJcZv0BKW,iv:pFBVi4F661fnYPcCPwuetiGL1H+RAnJiFQhTUqGNwjU=,tag:xQoHIEQpnrMOnXqsH8anxQ==,type:str] dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] @@ -25,8 +24,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-02-12T23:53:31Z" - mac: ENC[AES256_GCM,data:11gj3hKXjXDW27rbLCmIKExJdVnDUJbdPiQxzYGlk4FSxviIbCWdTEQ5VN4r8y/GxehVO757010jxu8u/kKR0MU3BFDkVyxh4Qv7LoUisrj7/8uJawOlmlEdykTxTgW+Q1yxy2mhK3t6D2+f9rNKYCmJhazHXJN9cuhiL1xXwcQ=,iv:OQfy2FQRw+SuXjDn2Woi66BI+cRkv1i0nnTaga4iLH8=,tag:j+fKWVttetoKaHwGRJ8Dmw==,type:str] + lastmodified: "2024-02-21T17:38:25Z" + mac: ENC[AES256_GCM,data:UrmKnVS6JcalkyIW1pdPPbbLK8gkD0FcMBG9HCS22EVllYJQva1e7sEFRXJHL3G/G8Y+jF9bhKybXGgN0qG3pEDOkp000lJSPzDuB4A3YNsJ/ELb/rXPS7P1SsWoyrAYMPsa1rFlzfy8WiJjAZHGovKf2rugkWS8XtyrXjOsySI=,iv:q6HGzyH/3dBeXNG8AWDa7KlhwyLrP4Vp+pGAGFoBw4E=,tag:MhxSjwt4T6yWZIrKSHuiYg==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/mail.nix b/hosts/iron/services/mail.nix index 9d83681..98b4364 100644 --- a/hosts/iron/services/mail.nix +++ b/hosts/iron/services/mail.nix @@ -4,10 +4,6 @@ let ports = import ../ports.nix args; in { - sops.secrets.hetzner-api-key = { - sopsFile = ../secrets.yaml; - owner = "acme"; - }; #sops.secrets."domain_key_jalr.de" = { # sopsFile = ../secrets.yaml; # owner = "rspamd"; @@ -41,8 +37,8 @@ in "inet_protocols=ipv4" ]; }; - security.acme.certs."hha.jalr.de" = { - dnsProvider = "hetzner"; - credentialsFile = pkgs.writeText "certbotCredentialsFile" "HETZNER_API_KEY_FILE=${config.sops.secrets.hetzner-api-key.path}"; + services.nginx.virtualHosts."hha.jalr.de" = { + enableACME = true; + forceSSL = true; }; } From f3383f21a829757ee0fe7d50c79e0920e3bc4b29 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 21 Feb 2024 17:53:52 +0000 Subject: [PATCH 031/562] Retain platformio cache As compiling might take long, it is not a good idea to remove the platformio cache with the `rsync --delete` on every deployment. --- hosts/iron/services/esphome/default.nix | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/hosts/iron/services/esphome/default.nix b/hosts/iron/services/esphome/default.nix index 3914464..73af2f2 100644 --- a/hosts/iron/services/esphome/default.nix +++ b/hosts/iron/services/esphome/default.nix @@ -43,9 +43,21 @@ in system.activationScripts.esphome-custom = { deps = [ "users" "groups" ]; text = '' - mkdir -p "${stateDir}/.esphome" - ${pkgs.rsync}/bin/rsync -a --delete "${cfgdir}/" "${stateDir}/" - chown esphome:esphome "${stateDir}/" + ${pkgs.rsync}/bin/rsync \ + -a \ + --delete \ + --exclude=.esphome \ + --exclude=.platformio \ + --exclude=.gitignore \ + "${cfgdir}/" "${stateDir}/" + mkdir -p \ + "${stateDir}/.esphome" \ + "${stateDir}/.platformio" + touch "${stateDir}/.gitignore" + chown esphome:esphome \ + "${stateDir}/" \ + "${stateDir}/.esphome" \ + "${stateDir}/.platformio" ''; }; } From 3f9114aecb8b5a2ccb325673a760eafbc0364e83 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 21 Feb 2024 17:56:09 +0000 Subject: [PATCH 032/562] Use separate switches for ct and brightness This helps if I want to keep automatic color temperature setting by circadian_lighting but want to manually reduce the brightness at the same time. --- hosts/iron/services/home-assistant.nix | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index 1bce8db..9289ac7 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -1,6 +1,14 @@ args@{ lib, pkgs, config, custom-utils, ... }: let ports = import ../ports.nix args; + circadian_lighting_lights = [ + "light.yeelight_meteorite_ceiling_light" + "light.eingang_deckenleuchte_deckenleuchte" + "light.led_panel_schreibtisch_panel" + "light.kueche_leiste_led_light" + "light.badspiegel_background_light" + "light.badspiegel_front_light" + ]; in { services.home-assistant = { @@ -78,15 +86,14 @@ in switch = [ { platform = "circadian_lighting"; - lights_ct = [ - "light.yeelight_meteorite_ceiling_light" - "light.eingang_deckenleuchte_deckenleuchte" - "light.led_panel_schreibtisch_panel" - "light.kueche_leiste_led_light" - "light.badspiegel_background_light" - "light.badspiegel_front_light" - ]; - min_brightness = 20; + lights_ct = circadian_lighting_lights; + disable_brightness_adjust = true; + name = "Set color temperature by Circadian Lighting"; + } + { + platform = "circadian_lighting"; + lights_brightness = circadian_lighting_lights; + name = "Set brightness by Circadian Lighting"; } ]; "automation nix" = [ From 961f193643d53d1ff4cfdc3f1a72bcdfd0f70306 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 21 Feb 2024 18:08:43 +0000 Subject: [PATCH 033/562] Add bluetooth proxy For HHCC Flower Care sensors --- hosts/iron/services/esphome/devices/kueche-leiste.yaml | 10 +++++++++- hosts/iron/services/home-assistant.nix | 7 +++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/hosts/iron/services/esphome/devices/kueche-leiste.yaml b/hosts/iron/services/esphome/devices/kueche-leiste.yaml index a5189db..9008e66 100644 --- a/hosts/iron/services/esphome/devices/kueche-leiste.yaml +++ b/hosts/iron/services/esphome/devices/kueche-leiste.yaml @@ -29,11 +29,19 @@ wifi: ssid: !secret wifi_ssid_bw password: !secret wifi_password_bw domain: .iot.bw.jalr.de - power_save_mode: none enable_on_boot: True fast_connect: On output_power: 8.5 +esp32_ble_tracker: + scan_parameters: + active: false + +bluetooth_proxy: + active: true + +xiaomi_ble: + output: - platform: ledc pin: GPIO0 diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index 9289ac7..f5f3d37 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -61,6 +61,7 @@ in extraComponents = [ # See https://www.home-assistant.io/integrations "esphome" + "xiaomi_ble" ]; customComponents = [ pkgs.home-assistant-custom-components.circadian_lighting @@ -119,6 +120,12 @@ in "scene nix" = [ ]; "scene ui" = "!include scenes.yaml"; + bluetooth = { }; + device_tracker = [ + { + platform = "bluetooth_le_tracker"; + } + ]; }; }; From 9907fa426c94668f24d7a44ebd66a2bff00392cc Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 21 Feb 2024 18:26:08 +0000 Subject: [PATCH 034/562] Do not turn on light on boot This is a always-on device and it should not turn on automatically after a power failure. --- hosts/iron/services/esphome/devices/kueche-leiste.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/iron/services/esphome/devices/kueche-leiste.yaml b/hosts/iron/services/esphome/devices/kueche-leiste.yaml index 9008e66..ea6109d 100644 --- a/hosts/iron/services/esphome/devices/kueche-leiste.yaml +++ b/hosts/iron/services/esphome/devices/kueche-leiste.yaml @@ -5,7 +5,7 @@ esphome: board_build.flash_mode: dio on_boot: then: - - light.turn_on: + - light.control: id: led_light brightness: 50% color_temperature: 2700 K From 9878ddc34be3ef5ccf44c80773e91a2c4678400c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 21 Feb 2024 18:27:55 +0000 Subject: [PATCH 035/562] Use static IP addresses for not always-on devices This should reduce the time it takes the device to connect to Home Assistant. --- hosts/iron/services/dnsmasq.nix | 4 +++- .../services/esphome/devices/led-panel-schreibtisch.yaml | 6 +++++- hosts/iron/services/esphome/devices/yeelight-meteorite.yaml | 5 +++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/hosts/iron/services/dnsmasq.nix b/hosts/iron/services/dnsmasq.nix index 3233865..1498ca8 100644 --- a/hosts/iron/services/dnsmasq.nix +++ b/hosts/iron/services/dnsmasq.nix @@ -19,13 +19,15 @@ in ]; dhcp-range = [ "192.168.42.20,192.168.42.254,4h" - "10.20.0.20,10.20.3.254,12h" + "10.20.1.1,10.20.3.254,12h" ]; cache-size = 10000; dns-forward-max = 1000; no-hosts = true; addn-hosts = "${pkgs.writeText "hosts.dnsmasq" '' 192.168.42.1 aluminium unifi + 10.20.0.10 yeelight-meteorite.iot.bw.jalr.de + 10.20.0.11 led-panel-schreibtisch.iot.bw.jalr.de ''}"; server = [ "142.250.185.78" # dns.as250.net diff --git a/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml b/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml index 8440bd6..0141c46 100644 --- a/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml +++ b/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml @@ -24,7 +24,11 @@ wifi: domain: .iot.bw.jalr.de power_save_mode: none enable_on_boot: True - fast_connect: On + fast_connect: true + manual_ip: + static_ip: 10.20.0.11 + gateway: 10.20.0.1 + subnet: 255.255.240.0 output_power: 8.5 esp32: diff --git a/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml b/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml index 617aae1..258633c 100644 --- a/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml +++ b/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml @@ -30,6 +30,11 @@ wifi: ssid: !secret wifi_ssid_bw password: !secret wifi_password_bw domain: .iot.bw.jalr.de + fast_connect: true + manual_ip: + static_ip: 10.20.0.10 + gateway: 10.20.0.1 + subnet: 255.255.240.0 output: - platform: ledc From b023ea9ff263d4038ebef6ce3abab3d35071a8cd Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 21 Feb 2024 18:49:47 +0000 Subject: [PATCH 036/562] Fix low brightness ct issue --- .../services/esphome/devices/yeelight-meteorite.yaml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml b/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml index 258633c..842fceb 100644 --- a/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml +++ b/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml @@ -41,14 +41,18 @@ output: pin: GPIO19 id: output_warm power_supply: power -# min_power: 0.13 - max_power: 0.82 + min_power: 0.13 + max_power: 0.77 + frequency: 1220Hz + zero_means_zero: true - platform: ledc pin: GPIO21 id: output_cold power_supply: power -# min_power: 0.13 - max_power: 0.82 + frequency: 1220Hz + zero_means_zero: true + min_power: 0.13 + max_power: 0.76 - platform: ledc pin: GPIO23 From bb9289fdc0fdb7817ca3a9142f547acd8f6e1d99 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 21 Feb 2024 23:54:12 +0000 Subject: [PATCH 037/562] Add calibre --- hosts/iron/secrets.yaml | 7 +-- hosts/iron/services/calibre.nix | 91 +++++++++++++++++++++++++++++++++ hosts/iron/services/default.nix | 3 +- 3 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 hosts/iron/services/calibre.nix diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 80ac050..a41b39e 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -1,11 +1,12 @@ duckdns-secret: ENC[AES256_GCM,data:SAf/xZ28tgmvqcVKC2tMNRm838AVMMNCC3fpYLXBEIoTl7E7,iv:+KTEpNMj0+aVCGKB1dRFFslgjpBhSzBZFdee+VIAt4o=,tag:C/eSyoQjAgD7Qv4J4jsp4g==,type:str] +calibre-htpasswd: ENC[AES256_GCM,data:+WW5A3/GZIk0p5CJ8RnK/gcYpJIXXsfrCpqFUWz2PzFZwf5xOlUeTGxqZdNorKq5xip4sT3/brrG4mqGDJ7iXfXJ,iv:D7CqUlbX4XGuUhjRLKytgvLa+jF4zuTZGV1NZCehf8Y=,tag:TAjSyBCIMZC4LBm0Q/2aXQ==,type:str] +radicale-htpasswd: ENC[AES256_GCM,data:Q0WnleP9I4xozsL/H+5oV3Ag7khfalV40A6ub+DA07U8UKna3/ju533RmjWOnETzSNa6XK140nfCcfGZCiqGyF9tfuuXcKFu+j4=,iv:87PSvHyKF7QUQZmEuxM+IT0VKSGnS0MjoUmCqJ+6tzI=,tag:yrP3TgxE8aSZf0MrCF9dsQ==,type:str] sturzbach-htpasswd: ENC[AES256_GCM,data:qqBwu6mASnRqjy65knU4uIvBNXXgrfcmvWnbmOH4tVQ7vRbpEhe/GQDwAg==,iv:OQnDOzezjajGl35m/u5StQeMRR+1sNDD5u1my1wTngQ=,tag:7zjVRWI1IzZ5iS3sFHLubg==,type:str] navidrome-password-encryption-key: ENC[AES256_GCM,data:ynQsFyGDEBnlWhTlv0mF7mLiXOjijq9ixWWEa1OXsTOYAd74dU0dp3Fo532WtD4fPvIWEf8Y2dYmY7zPVLuydQ==,iv:GJqPVL5OIFPLMcCVOjWvMjyFR4iTXo3uGE8R0keTzG0=,tag:RTERQgYRxBBevlL2H1lIWA==,type:str] wireguard_key_hetzner-ha: ENC[AES256_GCM,data:ak/KpQIHBNRPriJ1IeKYXIp4CcnygRHSj5MzZNnuxQnVunmmtzGu0lBEajA=,iv:aNw3EooT6XE1zC+g37WSJasRCfnNUaKQrYCDBMTxRrg=,tag:KXc70tVFc7xDLlefk1Hzow==,type:str] rspamd-worker-controller: ENC[AES256_GCM,data:7tS8bEr9i5F+YZoj3uPQa6Xd2SCsuC+jE531AbKEmPHNeL3qMyO0pQZ/P1ONaPHTVMOPQHYABihDJcZv0BKW,iv:pFBVi4F661fnYPcCPwuetiGL1H+RAnJiFQhTUqGNwjU=,tag:xQoHIEQpnrMOnXqsH8anxQ==,type:str] dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] -radicale-htpasswd: ENC[AES256_GCM,data:Q0WnleP9I4xozsL/H+5oV3Ag7khfalV40A6ub+DA07U8UKna3/ju533RmjWOnETzSNa6XK140nfCcfGZCiqGyF9tfuuXcKFu+j4=,iv:87PSvHyKF7QUQZmEuxM+IT0VKSGnS0MjoUmCqJ+6tzI=,tag:yrP3TgxE8aSZf0MrCF9dsQ==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] esphome: ENC[AES256_GCM,data:deY5RdItnZt7iJzSiHWvduRWqLTPt5ep70k/oLMjSanqYgAdWV/bGvod3I4bF2HdZymZjmeeGYo6lJCxJ7PwEfzhUGG6626wHhJ5VlfVThwqZ3mXkENdl/+aDyMtaxfaLTn3ygPewG/lAMY8Wn9beCTt4J6te5HlmHSp0VcFvLNl/m6F7nMdd1r1oaubvW7TPPe1+1jkpqphfd56bGYeEQArNEUCeCaXdtPCNZA/aEHZIYmmixuECdzTFTOreHBtG0pFMuAFrVsS3EZxMmnoMhAPrkhML2MSQnXLM2FGPd/FfeQzi9AMmiUqv55YGsJkuNXJs9x6ouU+JsjP876owFIKhB5VEEZAw9cqv/OFdjGboW2akjchZ5HROaofLfHjlVKy1PQwzbVwb8igHZE9PIFbk9O0Jb5fawoe9L9xp0jI6XrnHkgOFhv65uxogzYLFnMvTR8ZFJ02HPNGCh+eQECa5iuzTRb3OWCYls6si7RKGZgu1tE3HADVhqk6ViHckJLnlT1YABmnxoQiKovz1UIOE39e5Wl9m0XGC6OME37bJuSM3Sk24BBHQ36t3IverN3W9bhyhIQe4hw7PXuBVDCu4FJi1PDjmJwRWAWf5+BC1SFigSWDzunI55sX8zWCko9b75BKZoFfxKZminhFYwKTdtRdhbKPK8CIa9FcVf2eDmykhMvMmKVIm74d4yEXHjKt8Yww0x8TKEcqWIobMyPqlixpShaa7c73JgPfzkN0LYK4Da1Y+5MpZdUUypCe+R+Jwg/ROXZpGgwK7LFA2JHS71dq7nysHn5WhHFREPdVF558iiiOALCdMnvdUT6fU748Hx+KijYUl2Kax09l9sRkRsuCj7LRJ+ARDY/v8NlQJeXRIsyosg//DvejNJ5F7oMJK+H/sblTfCoY6SLp1WHAhywW6c5uBsGm1xLsdecfWok3sVv2qjQ5l2FPMvlXdp/0/RjxhLnvVYVTWzw=,iv:5Yybvm1eHbdJop6fGRmaW3Tnie3KHv21zVdWBZCUntA=,tag:7WDHLXkzWS8Dfs79u4Ur2A==,type:str] @@ -24,8 +25,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-02-21T17:38:25Z" - mac: ENC[AES256_GCM,data:UrmKnVS6JcalkyIW1pdPPbbLK8gkD0FcMBG9HCS22EVllYJQva1e7sEFRXJHL3G/G8Y+jF9bhKybXGgN0qG3pEDOkp000lJSPzDuB4A3YNsJ/ELb/rXPS7P1SsWoyrAYMPsa1rFlzfy8WiJjAZHGovKf2rugkWS8XtyrXjOsySI=,iv:q6HGzyH/3dBeXNG8AWDa7KlhwyLrP4Vp+pGAGFoBw4E=,tag:MhxSjwt4T6yWZIrKSHuiYg==,type:str] + lastmodified: "2024-02-21T23:52:33Z" + mac: ENC[AES256_GCM,data:9J+48OtEbiDWJr1/+R+i4MhcR11QF6Z6FnmdMjEPl3YbaX9+pLgHwtWZNh3AOwhlUCLBeAMt0MkNvrckcq6D8brU2h9fuEJDk3ygLSUPgLs4WJT/rqNn5ZqnSVVtt70b+XK7WPJXqXE9dydXW/Y+TBADC+Es129wYJnZXMTSdGI=,iv:/7igkG2WhJi97cvBHstr88J8ed+67jnODRHagKghgHM=,tag:GtIKo9mMBXVW3eblglRccw==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/calibre.nix b/hosts/iron/services/calibre.nix new file mode 100644 index 0000000..f738170 --- /dev/null +++ b/hosts/iron/services/calibre.nix @@ -0,0 +1,91 @@ +args@{ lib, config, pkgs, custom-utils, ... }: +let + ports = import ../ports.nix args; +in +{ + sops.secrets.calibre-htpasswd = { + owner = "nginx"; + sopsFile = ../secrets.yaml; + }; + + services.calibre-server = { + enable = true; + port = ports.calibre-server.tcp; + host = "127.0.0.1"; + }; + + services.calibre-web = { + enable = true; + user = config.services.calibre-server.user; + group = config.services.calibre-server.group; + listen = { + ip = "127.0.0.1"; + port = ports.calibre-web.tcp; + }; + options.enableBookUploading = true; + options.reverseProxyAuth.enable = true; + options.reverseProxyAuth.header = "X-Remote-User"; + }; + + systemd.services.calibre-web = { + serviceConfig = { + BindPaths = [ + "/var/lib/calibre-web" + "/var/lib/calibre-server" + ]; + BindReadOnlyPaths = [ + "/nix/store" + ]; + CapabilityBoundingSet = ""; + IPAddressAllow = "localhost"; + IPAddressDeny = "any"; + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateDevices = lib.mkForce true; + PrivateTmp = true; + PrivateUsers = true; + ProcSubset = "pid"; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "noaccess"; + ProtectSystem = "strict"; + ReadWritePaths = ""; + RemoveIPC = true; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + RootDirectory = "/run/calibre-web"; + RuntimeDirectory = "calibre-web"; + StateDirectory = "calibre-web"; + SystemCallArchitectures = "native"; + SystemCallFilter = [ + "@system-service" + "~@privileged" + ]; + WorkingDirectory = "/var/lib/calibre-web"; + }; + }; + + + services.nginx.virtualHosts."books.jalr.de" = { + enableACME = true; + forceSSL = true; + kTLS = true; + basicAuthFile = config.sops.secrets.calibre-htpasswd.path; + locations."/" = { + proxyPass = "http://127.0.0.1:${toString ports.calibre-web.tcp}/"; + recommendedProxySettings = true; + extraConfig = '' + client_max_body_size 200M; + proxy_set_header X-Remote-User $remote_user; + ''; + }; + }; +} diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index d2507e6..86ff156 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -1,9 +1,10 @@ { imports = [ + ./calibre.nix ./dnsmasq.nix ./dyndns.nix - ./home-assistant.nix ./esphome + ./home-assistant.nix ./jellyfin.nix ./mail.nix ./matrix.nix From 41768ddb074d96a42aa7bc64415a3fc83ae625f8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 26 Feb 2024 21:45:35 +0000 Subject: [PATCH 038/562] Add calibre ports --- hosts/iron/ports.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 80a74ea..a01a8b8 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -1,6 +1,8 @@ { lib, custom-utils, ... }: custom-utils.validatePortAttrset { + calibre-server.tcp = 8081; + calibre-web.tcp = 8082; esphome.tcp = 6052; home-assistant.tcp = 8123; jellyfin.tcp = 8096; From c92439815c25687a72c1653004635ff99f4fd03f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 26 Feb 2024 22:32:16 +0000 Subject: [PATCH 039/562] Update pretix version Bump pretix version from 2024.1.0 to 2024.1.1 --- pkgs/pretix/poetry.lock | 711 +++++++++++++++++-------------------- pkgs/pretix/pyproject.toml | 2 +- 2 files changed, 317 insertions(+), 396 deletions(-) diff --git a/pkgs/pretix/poetry.lock b/pkgs/pretix/poetry.lock index e94e1b7..ce6d6ba 100644 --- a/pkgs/pretix/poetry.lock +++ b/pkgs/pretix/poetry.lock @@ -252,48 +252,48 @@ dev = ["Sphinx (==4.3.2)", "black (==22.3.0)", "build (==0.8.0)", "flake8 (==4.0 [[package]] name = "cbor2" -version = "5.6.0" +version = "5.6.2" description = "CBOR (de)serializer with extensive tag support" optional = false python-versions = ">=3.8" files = [ - {file = "cbor2-5.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7569627514699b10d903795e344e5520cd758f7db968e46e667b6875c409610b"}, - {file = "cbor2-5.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e6d5c5b5cb25450561c92c9ac7d72912027cfa8807aab77ea6f5549e2157335"}, - {file = "cbor2-5.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19403d65c32709c4940ae729470dd77ed88ebbd4972355d0ec23ff4dbe34faa3"}, - {file = "cbor2-5.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329196be76fbba0ad63926913eb225dddcfc4891ff6760484fdcf071cebc7188"}, - {file = "cbor2-5.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ac835523af0e37086b5f6aac9283e45cffdf6fa0f1be5eecf967014e7184d948"}, - {file = "cbor2-5.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:63ab6734098c494687b26531ed4d44c06f287a44061ae1bc16b3fa65563d80b0"}, - {file = "cbor2-5.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:777897d46e31bc2683ed9e015a9c97fc97929bf78d620fc3361fe39a86912eba"}, - {file = "cbor2-5.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5d3932c3f0637439f121a54b9e6020e62e9f2620751b2e850a6f09f1c1ee299e"}, - {file = "cbor2-5.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f017d451b9b7e45759e9ffbfae8a2b1bda3f6a547d6451f7761655a8438f956"}, - {file = "cbor2-5.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c66cf65766195c310b2134ceeb20927fce85373d13483e97d2211dd499739f9b"}, - {file = "cbor2-5.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2411ad0fc8817ff38076523bfc43d193188eedcb0d3a1c52428672636f3760d4"}, - {file = "cbor2-5.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b5ce2c7c9172c401db047202029f96a5799c68ff0c936874c596e3718cd383e4"}, - {file = "cbor2-5.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1a4e1bb41ac5dc27bd4737c92934e9daf38440ce849eaf3e25da24f9d1fd2195"}, - {file = "cbor2-5.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:83736e076e878f3679ef2dd6cfce5ebcb71f65f9eeada1d14b16b5b87dbc2250"}, - {file = "cbor2-5.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8724f172b581414444801bd7e4974a1512822231e30162c7d5a6374a3c89ddbf"}, - {file = "cbor2-5.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ae83ca762a60b43c83c23edf487e41dc90ba7cc98e25134cde2bf09e99ec1fa3"}, - {file = "cbor2-5.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0da8f4aed346ff0ce667254331d341ad27d8d62c8813536f019d8a68aef40eba"}, - {file = "cbor2-5.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99780a5fe8e23a467eb1084feb74b9bdc6598f0eb6c09821b00bb65ddd834d67"}, - {file = "cbor2-5.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f0167b4fd537db4925ee8c2890fb950493280628d9c18034625fa5c8a96db689"}, - {file = "cbor2-5.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8a073761d9148e4ffbfb0e4125643c059a4d5d5c5c5448cd56759765e1113487"}, - {file = "cbor2-5.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:62ced11efb37729e1a2a5f04fb8c2661d46ae6adbdddc23cb31ffad2ec75ff7a"}, - {file = "cbor2-5.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0130d50aa1cd0ba8ce65eda5bbbb57bda3f2c9cd86bba7d8be5e3c9b19f88f93"}, - {file = "cbor2-5.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:29ba57a33fcffd5d70fd6ac1182520e887918f9d2b6225a06eaae029f070e18f"}, - {file = "cbor2-5.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe7a459aae6ca4abdc490fdf89463cbeea3449569eca853af7c2672286edcea0"}, - {file = "cbor2-5.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0c098a2802ec1df0a6e96c415203c8a52c42158e1e07d8074c9acf19bcc146f"}, - {file = "cbor2-5.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d3184d91a855aedb6f0e76e5ac548a1e43a7fcd3d5ba2deb0894b81c77c2c461"}, - {file = "cbor2-5.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:622b4fe945ecdd93df8c21169c8f1a85dcf21d78ecb1e8b7f9f2795520480010"}, - {file = "cbor2-5.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:aaf6a424742f55e2991c7013df02a629d24c64e5730c3fd3aebcbbebc580bfab"}, - {file = "cbor2-5.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e1ff25fb1b6bafbdb192037860471962f59ce9c1f584611572360e15725abbb1"}, - {file = "cbor2-5.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4143152579ff9e0668688d6d41e2f6a20161f8dc5af97b1b92f400d3112888af"}, - {file = "cbor2-5.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df7b7cf96e9027138129edbfa0e2024d6f4beb7db42c2a992ab867eff3c04d46"}, - {file = "cbor2-5.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:789496ece76712c298f1fd4681d074f6828ed0d788076c5949c4474c11291f68"}, - {file = "cbor2-5.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3d8525d4f525add7971b75b7ff947eed085405d9db7ad6fad456909cbffd18c1"}, - {file = "cbor2-5.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c9423aaf110ce7c3e856f2d5dc6ece7358de48bad7a88d2633f5943d5cd20676"}, - {file = "cbor2-5.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:52fa913133b82578244e6b86b8dff9d88c9d13acf84955b6942650689f302c01"}, - {file = "cbor2-5.6.0-py3-none-any.whl", hash = "sha256:7ba2d0abbb199dd08b7ea59038dbf6524277f124d836b66744cfdd49d31fd012"}, - {file = "cbor2-5.6.0.tar.gz", hash = "sha256:9d94e2226f8f5792fdba5ab20e07b9bfe02e76c10c3ca126418cd4310439d002"}, + {file = "cbor2-5.6.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:516b8390936bb172ff18d7b609a452eaa51991513628949b0a9bf25cbe5a7129"}, + {file = "cbor2-5.6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1b8b504b590367a51fe8c0d9b8cb458a614d782d37b24483097e2b1e93ed0fff"}, + {file = "cbor2-5.6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f687e6731b1198811223576800258a712ddbfdcfa86c0aee2cc8269193e6b96"}, + {file = "cbor2-5.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e94043d99fe779f62a15a5e156768588a2a7047bb3a127fa312ac1135ff5ecb"}, + {file = "cbor2-5.6.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8af7162fcf7aa2649f02563bdb18b2fa6478b751eee4df0257bffe19ea8f107a"}, + {file = "cbor2-5.6.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ea7ecd81c5c6e02c2635973f52a0dd1e19c0bf5ef51f813d8cd5e3e7ed072726"}, + {file = "cbor2-5.6.2-cp310-cp310-win_amd64.whl", hash = "sha256:3c7f223f1fedc74d33f363d184cb2bab9e4bdf24998f73b5e3bef366d6c41628"}, + {file = "cbor2-5.6.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ea9e150029c3976c46ee9870b6dcdb0a5baae21008fe3290564886b11aa2b64"}, + {file = "cbor2-5.6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:922e06710e5cf6f56b82b0b90d2f356aa229b99e570994534206985f675fd307"}, + {file = "cbor2-5.6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b01a718e083e6de8b43296c3ccdb3aa8af6641f6bbb3ea1700427c6af73db28a"}, + {file = "cbor2-5.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac85eb731c524d148f608b9bdb2069fa79e374a10ed5d10a2405eba9a6561e60"}, + {file = "cbor2-5.6.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03e5b68867b9d89ff2abd14ef7c6d42fbd991adc3e734a19a294935f22a4d05a"}, + {file = "cbor2-5.6.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7221b83000ee01d674572eec1d1caa366eac109d1d32c14d7af9a4aaaf496563"}, + {file = "cbor2-5.6.2-cp311-cp311-win_amd64.whl", hash = "sha256:9aca73b63bdc6561e1a0d38618e78b9c204c942260d51e663c92c4ba6c961684"}, + {file = "cbor2-5.6.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:377cfe9d5560c682486faef6d856226abf8b2801d95fa29d4e5d75b1615eb091"}, + {file = "cbor2-5.6.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fdc564ef2e9228bcd96ec8c6cdaa431a48ab03b3fb8326ead4b3f986330e5b9e"}, + {file = "cbor2-5.6.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d1c0021d9a1f673066de7c8941f71a59abb11909cc355892dda01e79a2b3045"}, + {file = "cbor2-5.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fde9e704e96751e0729cc58b912d0e77c34387fb6bcceea0817069e8683df45"}, + {file = "cbor2-5.6.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:30e9ba8f4896726ca61869efacda50b6859aff92162ae5a0e192859664f36c81"}, + {file = "cbor2-5.6.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:211a1e18e65ac71e04434ff5b58bde5c53f85b9c5bc92a3c0e2265089d3034f3"}, + {file = "cbor2-5.6.2-cp312-cp312-win_amd64.whl", hash = "sha256:94981277b4bf448a2754c1f34a9d0055a9d1c5a8d102c933ffe95c80f1085bae"}, + {file = "cbor2-5.6.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f70db0ebcf005c25408e8d5cc4b9558c899f13a3e2f8281fa3d3be4894e0e821"}, + {file = "cbor2-5.6.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:22c24fe9ef1696a84b8fd80ff66eb0e5234505d8b9a9711fc6db57bce10771f3"}, + {file = "cbor2-5.6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a4a3420f80d6b942874d66eaad07658066370df994ddee4125b48b2cbc61ece"}, + {file = "cbor2-5.6.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b28d8ff0e726224a7429281700c28afe0e665f83f9ae79648cbae3f1a391cbf"}, + {file = "cbor2-5.6.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c10ede9462458998f1b9c488e25fe3763aa2491119b7af472b72bf538d789e24"}, + {file = "cbor2-5.6.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ea686dfb5e54d690e704ce04993bc8ca0052a7cd2d4b13dd333a41cca8a05a05"}, + {file = "cbor2-5.6.2-cp38-cp38-win_amd64.whl", hash = "sha256:22996159b491d545ecfd489392d3c71e5d0afb9a202dfc0edc8b2cf413a58326"}, + {file = "cbor2-5.6.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9faa0712d414a88cc1244c78cd4b28fced44f1827dbd8c1649e3c40588aa670f"}, + {file = "cbor2-5.6.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6031a284d93fc953fc2a2918f261c4f5100905bd064ca3b46961643e7312a828"}, + {file = "cbor2-5.6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30c8a9a9df79f26e72d8d5fa51ef08eb250d9869a711bcf9539f1865916c983"}, + {file = "cbor2-5.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44bf7457fca23209e14dab8181dff82466a83b72e55b444dbbfe90fa67659492"}, + {file = "cbor2-5.6.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cc29c068687aa2e7778f63b653f1346065b858427a2555df4dc2191f4a0de8ce"}, + {file = "cbor2-5.6.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42eaf0f768bd27afcb38135d5bfc361d3a157f1f5c7dddcd8d391f7fa43d9de8"}, + {file = "cbor2-5.6.2-cp39-cp39-win_amd64.whl", hash = "sha256:8839b73befa010358477736680657b9d08c1ed935fd973decb1909712a41afdc"}, + {file = "cbor2-5.6.2-py3-none-any.whl", hash = "sha256:c0b53a65673550fde483724ff683753f49462d392d45d7b6576364b39e76e54c"}, + {file = "cbor2-5.6.2.tar.gz", hash = "sha256:b7513c2dea8868991fad7ef8899890ebcf8b199b9b4461c3c11d7ad3aef4820d"}, ] [package.extras] @@ -358,13 +358,13 @@ zstd = ["zstandard (==0.22.0)"] [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -617,43 +617,43 @@ files = [ [[package]] name = "cryptography" -version = "42.0.2" +version = "42.0.5" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be"}, - {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d"}, - {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4"}, - {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2"}, - {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529"}, - {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1"}, - {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1"}, - {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929"}, - {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9"}, - {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2"}, - {file = "cryptography-42.0.2-cp37-abi3-win32.whl", hash = "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee"}, - {file = "cryptography-42.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee"}, - {file = "cryptography-42.0.2-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242"}, - {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a"}, - {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446"}, - {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90"}, - {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3"}, - {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589"}, - {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a"}, - {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea"}, - {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33"}, - {file = "cryptography-42.0.2-cp39-abi3-win32.whl", hash = "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635"}, - {file = "cryptography-42.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6"}, - {file = "cryptography-42.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380"}, - {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6"}, - {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2"}, - {file = "cryptography-42.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f"}, - {file = "cryptography-42.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008"}, - {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12"}, - {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a"}, - {file = "cryptography-42.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65"}, - {file = "cryptography-42.0.2.tar.gz", hash = "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888"}, + {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16"}, + {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec"}, + {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb"}, + {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4"}, + {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278"}, + {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7"}, + {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee"}, + {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1"}, + {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d"}, + {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da"}, + {file = "cryptography-42.0.5-cp37-abi3-win32.whl", hash = "sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74"}, + {file = "cryptography-42.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940"}, + {file = "cryptography-42.0.5-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8"}, + {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1"}, + {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e"}, + {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc"}, + {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a"}, + {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7"}, + {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922"}, + {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc"}, + {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30"}, + {file = "cryptography-42.0.5-cp39-abi3-win32.whl", hash = "sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413"}, + {file = "cryptography-42.0.5-cp39-abi3-win_amd64.whl", hash = "sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400"}, + {file = "cryptography-42.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8"}, + {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2"}, + {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c"}, + {file = "cryptography-42.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576"}, + {file = "cryptography-42.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6"}, + {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e"}, + {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac"}, + {file = "cryptography-42.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd"}, + {file = "cryptography-42.0.5.tar.gz", hash = "sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1"}, ] [package.dependencies] @@ -710,23 +710,6 @@ files = [ {file = "defusedcsv-2.0.0.tar.gz", hash = "sha256:7612228e54ef1690a19f7aef526709010608e987f9998c89588ef05d9ecfe4d6"}, ] -[[package]] -name = "deprecated" -version = "1.2.14" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] - [[package]] name = "dj-static" version = "0.0.6" @@ -742,13 +725,13 @@ static3 = "*" [[package]] name = "django" -version = "4.2.9" +version = "4.2.10" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." optional = false python-versions = ">=3.8" files = [ - {file = "Django-4.2.9-py3-none-any.whl", hash = "sha256:2cc2fc7d1708ada170ddd6c99f35cc25db664f165d3794bc7723f46b2f8c8984"}, - {file = "Django-4.2.9.tar.gz", hash = "sha256:12498cc3cb8bc8038539fef9e90e95f507502436c1f0c3a673411324fa675d14"}, + {file = "Django-4.2.10-py3-none-any.whl", hash = "sha256:a2d4c4d4ea0b6f0895acde632071aff6400bfc331228fc978b05452a0ff3e9f1"}, + {file = "Django-4.2.10.tar.gz", hash = "sha256:b1260ed381b10a11753c73444408e19869f3241fc45c985cd55a30177c789d13"}, ] [package.dependencies] @@ -1126,13 +1109,13 @@ dev = ["pytest", "pytest-cov", "pytest-django", "pytest-mock", "pytest-runner"] [[package]] name = "elementpath" -version = "4.1.5" +version = "4.3.0" description = "XPath 1.0/2.0/3.0/3.1 parsers and selectors for ElementTree and lxml" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "elementpath-4.1.5-py3-none-any.whl", hash = "sha256:2ac1a2fb31eb22bbbf817f8cf6752f844513216263f0e3892c8e79782fe4bb55"}, - {file = "elementpath-4.1.5.tar.gz", hash = "sha256:c2d6dc524b29ef751ecfc416b0627668119d8812441c555d7471da41d4bacb8d"}, + {file = "elementpath-4.3.0-py3-none-any.whl", hash = "sha256:ecc885f2bb5bd5322fd68ace071f134a8fabf05f0019d77c638b906b844f6593"}, + {file = "elementpath-4.3.0.tar.gz", hash = "sha256:8d25db9150f5a6aa978c9f58e607fcd5ab6e6e3017140563439a9884ab1eb304"}, ] [package.extras] @@ -1249,12 +1232,13 @@ files = [ [[package]] name = "future" -version = "0.18.3" +version = "1.0.0" description = "Clean single-source support for Python 3 and 2" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ - {file = "future-0.18.3.tar.gz", hash = "sha256:34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307"}, + {file = "future-1.0.0-py3-none-any.whl", hash = "sha256:929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216"}, + {file = "future-1.0.0.tar.gz", hash = "sha256:bd2968309307861edae1458a4f8a4f3598c03be43b97521076aebf5d94c07b05"}, ] [[package]] @@ -1369,17 +1353,17 @@ referencing = ">=0.31.0" [[package]] name = "jwcrypto" -version = "1.5.1" +version = "1.5.4" description = "Implementation of JOSE Web standards" optional = false -python-versions = ">= 3.6" +python-versions = ">= 3.8" files = [ - {file = "jwcrypto-1.5.1.tar.gz", hash = "sha256:48bb9bf433777136253579e52b75ffe0f9a4a721d133d01f45a0b91ed5f4f1ae"}, + {file = "jwcrypto-1.5.4.tar.gz", hash = "sha256:0815fbab613db99bad85691da5f136f8860423396667728a264bcfa6e1db36b0"}, ] [package.dependencies] cryptography = ">=3.4" -deprecated = "*" +typing_extensions = ">=4.5.0" [[package]] name = "kombu" @@ -1611,85 +1595,101 @@ tests = ["flake8", "pytest", "pytest-cache", "pytest-cover", "pytest-flake8", "p [[package]] name = "multidict" -version = "6.0.4" +version = "6.0.5" description = "multidict implementation" optional = false python-versions = ">=3.7" files = [ - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, - {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, - {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, - {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, - {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, - {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"}, - {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"}, - {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, - {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, - {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, - {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, - {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, - {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, + {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, + {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, + {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, + {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, + {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, + {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, + {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, + {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, + {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, + {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, + {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, + {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, + {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, + {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, + {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, ] [[package]] @@ -1781,13 +1781,13 @@ six = ">=1.0.0" [[package]] name = "phonenumberslite" -version = "8.13.29" +version = "8.13.31" description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." optional = false python-versions = "*" files = [ - {file = "phonenumberslite-8.13.29-py2.py3-none-any.whl", hash = "sha256:74e3ee63dfa2bb562ce2e6ce74ce76ae74a2f81472005b80343235fb43426db4"}, - {file = "phonenumberslite-8.13.29.tar.gz", hash = "sha256:2b04a53401d01ab42564c1abc762fc9808ad398e71dacfa3b38d4321e112ecb3"}, + {file = "phonenumberslite-8.13.31-py2.py3-none-any.whl", hash = "sha256:137d53d5d78dca30bc2becf81a3e2ac74deb8f0997e9bbe44de515ece4bd92bd"}, + {file = "phonenumberslite-8.13.31.tar.gz", hash = "sha256:e1f4359bff90c86d1b52db0e726d3334df00cc7d9c9c2ef66561d5f7a774d4ba"}, ] [[package]] @@ -1897,13 +1897,13 @@ files = [ [[package]] name = "pretix" -version = "2024.1.0" +version = "2024.1.1" description = "Reinventing presales, one ticket at a time" optional = false python-versions = ">=3.9" files = [ - {file = "pretix-2024.1.0-py3-none-any.whl", hash = "sha256:8c4f4e9a8a3011831aae4574049bcd185e5e2df1a04fe8dd6b63a5d4fde18741"}, - {file = "pretix-2024.1.0.tar.gz", hash = "sha256:94982a415acc76367dc88c0a73b74a1b24c423eadf321de50584d0c5ff363ce6"}, + {file = "pretix-2024.1.1-py3-none-any.whl", hash = "sha256:77bf042a0fd5d9c265c044bdfd7f53375adfc962442b6a24190f606a48daeb0b"}, + {file = "pretix-2024.1.1.tar.gz", hash = "sha256:9e25156c26d435a3a78109b7ae5b9cf45ef2a1d31cb1da2dfd773c44d0c631ad"}, ] [package.dependencies] @@ -2312,13 +2312,13 @@ yubiauth-server = ["WebOb", "yubiauth"] [[package]] name = "pytz" -version = "2023.4" +version = "2024.1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.4-py2.py3-none-any.whl", hash = "sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a"}, - {file = "pytz-2023.4.tar.gz", hash = "sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40"}, + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, ] [[package]] @@ -2537,110 +2537,110 @@ files = [ [[package]] name = "rpds-py" -version = "0.17.1" +version = "0.18.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"}, - {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"}, - {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"}, - {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"}, - {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"}, - {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"}, - {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"}, - {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"}, - {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"}, - {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"}, - {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"}, - {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"}, - {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"}, - {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"}, - {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"}, - {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"}, - {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"}, - {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"}, - {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"}, - {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"}, - {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"}, - {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"}, - {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"}, - {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"}, - {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"}, - {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"}, - {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"}, - {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"}, - {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"}, - {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"}, - {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"}, - {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"}, - {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"}, - {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"}, - {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"}, - {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, + {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, + {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, + {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, + {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, + {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, + {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, + {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, + {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, + {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, + {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, + {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, ] [[package]] @@ -2699,19 +2699,19 @@ xmlschema = "*" [[package]] name = "setuptools" -version = "69.0.3" +version = "69.1.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, - {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, + {file = "setuptools-69.1.1-py3-none-any.whl", hash = "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56"}, + {file = "setuptools-69.1.1.tar.gz", hash = "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -2806,24 +2806,24 @@ files = [ [[package]] name = "tlds" -version = "2024012300" +version = "2024020701" description = "Automatically updated list of valid TLDs taken directly from IANA" optional = false python-versions = "*" files = [ - {file = "tlds-2024012300-py2.py3-none-any.whl", hash = "sha256:7d46a7bb9ff741e14c72d554f7945b5b3244694ee87fada69db3941afed09d14"}, - {file = "tlds-2024012300.tar.gz", hash = "sha256:521d97a4fdb8ad58c7daf68cc3a3901d5052a402ae0ac2caca06932d275bad5f"}, + {file = "tlds-2024020701-py2.py3-none-any.whl", hash = "sha256:e061ec51d0ca160ac64b8c228b0cf72b544aeb47249d82dbd1b5681245b4444a"}, + {file = "tlds-2024020701.tar.gz", hash = "sha256:462b5dff89cfa1a3dca4cfd2fb81a53acaadee3fe618b7a018e314d692e0d3a4"}, ] [[package]] name = "tqdm" -version = "4.66.1" +version = "4.66.2" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"}, - {file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"}, + {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, + {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, ] [package.dependencies] @@ -2837,24 +2837,24 @@ telegram = ["requests"] [[package]] name = "typing-extensions" -version = "4.9.0" +version = "4.10.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, - {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, + {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, + {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, ] [[package]] name = "tzdata" -version = "2023.4" +version = "2024.1" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2023.4-py2.py3-none-any.whl", hash = "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3"}, - {file = "tzdata-2023.4.tar.gz", hash = "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"}, + {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, + {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] [[package]] @@ -2933,13 +2933,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.0" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, - {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] @@ -3023,103 +3023,24 @@ files = [ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - [[package]] name = "xmlschema" -version = "3.0.1" +version = "3.0.2" description = "An XML Schema validator and decoder" optional = false python-versions = ">=3.8" files = [ - {file = "xmlschema-3.0.1-py3-none-any.whl", hash = "sha256:116243b2ad38cd2df9ee0606d4e4e898a6f156736b39ab0017e6f49862c0809e"}, - {file = "xmlschema-3.0.1.tar.gz", hash = "sha256:bb24a5f4738e49d85d9eb03a2b5af26bbbbfdb055517ad953d98925094b8c026"}, + {file = "xmlschema-3.0.2-py3-none-any.whl", hash = "sha256:c8935f81e1645df3e71136805c7206871268aa8c6e31e3667ea23746f22fea0a"}, + {file = "xmlschema-3.0.2.tar.gz", hash = "sha256:b2526e91695905aa62d4aa2b68349565a168fedf88ada0005f5e0dd21da9734b"}, ] [package.dependencies] -elementpath = ">=4.1.5,<5.0.0" +elementpath = ">=4.3.0,<5.0.0" [package.extras] -codegen = ["elementpath (>=4.1.5,<5.0.0)", "jinja2"] -dev = ["Sphinx", "coverage", "elementpath (>=4.1.5,<5.0.0)", "flake8", "jinja2", "lxml", "lxml-stubs", "memory-profiler", "mypy", "sphinx-rtd-theme", "tox"] -docs = ["Sphinx", "elementpath (>=4.1.5,<5.0.0)", "jinja2", "sphinx-rtd-theme"] +codegen = ["elementpath (>=4.3.0,<5.0.0)", "jinja2"] +dev = ["Sphinx", "coverage", "elementpath (>=4.3.0,<5.0.0)", "flake8", "jinja2", "lxml", "lxml-stubs", "memory-profiler", "mypy", "sphinx-rtd-theme", "tox"] +docs = ["Sphinx", "elementpath (>=4.3.0,<5.0.0)", "jinja2", "sphinx-rtd-theme"] [[package]] name = "yarl" @@ -3269,4 +3190,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "962d1184c48af00a191965cca13e241e8c2377f16bf32b568df6c791ef0af834" +content-hash = "c766a0dcecee2fdceb93eb95222197e196f55120b33bb4a4e41416a46e8bd301" diff --git a/pkgs/pretix/pyproject.toml b/pkgs/pretix/pyproject.toml index 2a6d6a5..18c2b8d 100644 --- a/pkgs/pretix/pyproject.toml +++ b/pkgs/pretix/pyproject.toml @@ -7,7 +7,7 @@ license = "MIT" [tool.poetry.dependencies] python = "^3.10" -pretix = "^2024.1.0" +pretix = "^2024.1.1" [tool.poetry.dev-dependencies] From eb3eb33e3921e9deea15bcdf25d5a6a74ab302a2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 28 Feb 2024 13:56:38 +0000 Subject: [PATCH 040/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'flake-utils': 'github:numtide/flake-utils/1ef2e671c3b0c19053962c07dbda38332dcebf26' (2024-01-15) → 'github:numtide/flake-utils/d465f4819400de7c8d874d50b982301f28a84605' (2024-02-28) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/84d981bae8b5e783b3b548de505b22880559515f' (2024-02-17) → 'github:nixos/nixpkgs/b7ee09cf5614b02d289cd86fcfa6f24d4e078c2a' (2024-02-26) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/090f90c92fea282f11c9f33624b17a14a6087a28' (2024-02-19) → 'github:NixOS/nixpkgs/916c2eb0082b5c1ce6d9a90c979e281b9bb5e170' (2024-02-28) • Updated input 'nur': 'github:nix-community/NUR/0746498eec8c0a0b2ac98fe835d6af996b719531' (2024-02-19) → 'github:nix-community/NUR/7afc790502560fc0e4897a1fe996865185bcff69' (2024-02-28) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/403d923ea8e2e6cedce3a0f04a9394c4244cb806' (2024-02-17) → 'github:nix-community/poetry2nix/3c92540611f42d3fb2d0d084a6c694cd6544b609' (2024-02-22) • Updated input 'poetry2nix/nix-github-actions': 'github:nix-community/nix-github-actions/4bb5e752616262457bc7ca5882192a564c0472d2' (2023-11-03) → 'github:nix-community/nix-github-actions/5163432afc817cf8bd1f031418d1869e4c9d5547' (2023-12-29) • Updated input 'poetry2nix/treefmt-nix': 'github:numtide/treefmt-nix/e82f32aa7f06bbbd56d7b12186d555223dc399d1' (2023-11-12) → 'github:numtide/treefmt-nix/e504621290a1fd896631ddbc5e9c16f4366c9f65' (2024-02-19) • Updated input 'sops-nix': 'github:Mic92/sops-nix/ffed177a9d2c685901781c3c6c9024ae0ffc252b' (2024-02-18) → 'github:Mic92/sops-nix/a1c8de14f60924fafe13aea66b46157f0150f4cf' (2024-02-26) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/69405156cffbdf2be50153f13cbdf9a0bea38e49' (2024-02-17) → 'github:NixOS/nixpkgs/89a2a12e6c8c6a56c72eb3589982c8e2f89c70ea' (2024-02-25) --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index d732f65..e2f152e 100644 --- a/flake.lock +++ b/flake.lock @@ -21,11 +21,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1709126324, + "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "d465f4819400de7c8d874d50b982301f28a84605", "type": "github" }, "original": { @@ -130,11 +130,11 @@ ] }, "locked": { - "lastModified": 1698974481, - "narHash": "sha256-yPncV9Ohdz1zPZxYHQf47S8S0VrnhV7nNhCawY46hDA=", + "lastModified": 1703863825, + "narHash": "sha256-rXwqjtwiGKJheXB43ybM8NwWB8rO2dSRrEqes0S7F5Y=", "owner": "nix-community", "repo": "nix-github-actions", - "rev": "4bb5e752616262457bc7ca5882192a564c0472d2", + "rev": "5163432afc817cf8bd1f031418d1869e4c9d5547", "type": "github" }, "original": { @@ -202,11 +202,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1708210246, - "narHash": "sha256-Q8L9XwrBK53fbuuIFMbjKvoV7ixfLFKLw4yV+SD28Y8=", + "lastModified": 1708819810, + "narHash": "sha256-1KosU+ZFXf31GPeCBNxobZWMgHsSOJcrSFA6F2jhzdE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "69405156cffbdf2be50153f13cbdf9a0bea38e49", + "rev": "89a2a12e6c8c6a56c72eb3589982c8e2f89c70ea", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1708355737, - "narHash": "sha256-gnvsgW5EHnpfMhVAGtjZyXOCZVIg3e3kMqGOzZdPkDE=", + "lastModified": 1709127906, + "narHash": "sha256-VOwXke+Vn29HZ7nq14nROQYd3xEmyxwWI7NfbKxbqYY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "090f90c92fea282f11c9f33624b17a14a6087a28", + "rev": "916c2eb0082b5c1ce6d9a90c979e281b9bb5e170", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1708161998, - "narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=", + "lastModified": 1708979614, + "narHash": "sha256-FWLWmYojIg6TeqxSnHkKpHu5SGnFP5um1uUjH+wRV6g=", "owner": "nixos", "repo": "nixpkgs", - "rev": "84d981bae8b5e783b3b548de505b22880559515f", + "rev": "b7ee09cf5614b02d289cd86fcfa6f24d4e078c2a", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1708353184, - "narHash": "sha256-BdSI+j49fZmMD9to0Har0wRvkN14x2Ipzipu6cQfp2A=", + "lastModified": 1709123495, + "narHash": "sha256-+pvD2syrkSCtmX23z3QknBICihICLG6tskPGOFROszM=", "owner": "nix-community", "repo": "NUR", - "rev": "0746498eec8c0a0b2ac98fe835d6af996b719531", + "rev": "7afc790502560fc0e4897a1fe996865185bcff69", "type": "github" }, "original": { @@ -276,11 +276,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1708175019, - "narHash": "sha256-B7wY2pNrLc3X9uYRo1LUmVzI6oH6fX8oi+96GdUpayU=", + "lastModified": 1708589824, + "narHash": "sha256-2GOiFTkvs5MtVF65sC78KNVxQSmsxtk0WmV1wJ9V2ck=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "403d923ea8e2e6cedce3a0f04a9394c4244cb806", + "rev": "3c92540611f42d3fb2d0d084a6c694cd6544b609", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1708225343, - "narHash": "sha256-Q0uVUOfumc1DcKsIJIfMCHph08MjkOvZxvPb/Vi8hWw=", + "lastModified": 1708987867, + "narHash": "sha256-k2lDaDWNTU5sBVHanYzjDKVDmk29RHIgdbbXu5sdzBA=", "owner": "Mic92", "repo": "sops-nix", - "rev": "ffed177a9d2c685901781c3c6c9024ae0ffc252b", + "rev": "a1c8de14f60924fafe13aea66b46157f0150f4cf", "type": "github" }, "original": { @@ -361,11 +361,11 @@ ] }, "locked": { - "lastModified": 1699786194, - "narHash": "sha256-3h3EH1FXQkIeAuzaWB+nK0XK54uSD46pp+dMD3gAcB4=", + "lastModified": 1708335038, + "narHash": "sha256-ETLZNFBVCabo7lJrpjD6cAbnE11eDOjaQnznmg/6hAE=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "e82f32aa7f06bbbd56d7b12186d555223dc399d1", + "rev": "e504621290a1fd896631ddbc5e9c16f4366c9f65", "type": "github" }, "original": { From 099f0df91322371afed8b0de78555112c1701019 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 29 Feb 2024 17:35:07 +0000 Subject: [PATCH 041/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:nixos/nixpkgs/b7ee09cf5614b02d289cd86fcfa6f24d4e078c2a' (2024-02-26) → 'github:nixos/nixpkgs/c8e74c2f83fe12b4e5a8bd1abbc090575b0f7611' (2024-02-28) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/916c2eb0082b5c1ce6d9a90c979e281b9bb5e170' (2024-02-28) → 'github:NixOS/nixpkgs/bf82777340bcb9b01ebfc8e18994a67724ce78bb' (2024-02-29) • Updated input 'nur': 'github:nix-community/NUR/7afc790502560fc0e4897a1fe996865185bcff69' (2024-02-28) → 'github:nix-community/NUR/c52cf9478c981de340151638d76c3c2371eb9ebe' (2024-02-29) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index e2f152e..f9d14cc 100644 --- a/flake.lock +++ b/flake.lock @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1709127906, - "narHash": "sha256-VOwXke+Vn29HZ7nq14nROQYd3xEmyxwWI7NfbKxbqYY=", + "lastModified": 1709227968, + "narHash": "sha256-sH6Kn4cVVns68Q9aozD6njzz1LuyXjSAFlldKa2wBkY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "916c2eb0082b5c1ce6d9a90c979e281b9bb5e170", + "rev": "bf82777340bcb9b01ebfc8e18994a67724ce78bb", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1708979614, - "narHash": "sha256-FWLWmYojIg6TeqxSnHkKpHu5SGnFP5um1uUjH+wRV6g=", + "lastModified": 1709128929, + "narHash": "sha256-GWrv9a+AgGhG4/eI/CyVVIIygia7cEy68Huv3P8oyaw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b7ee09cf5614b02d289cd86fcfa6f24d4e078c2a", + "rev": "c8e74c2f83fe12b4e5a8bd1abbc090575b0f7611", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1709123495, - "narHash": "sha256-+pvD2syrkSCtmX23z3QknBICihICLG6tskPGOFROszM=", + "lastModified": 1709225079, + "narHash": "sha256-2bmOKg/aIgmguPZz3OwjG5lCAGaLwM9ubBkXjcp7edU=", "owner": "nix-community", "repo": "NUR", - "rev": "7afc790502560fc0e4897a1fe996865185bcff69", + "rev": "c52cf9478c981de340151638d76c3c2371eb9ebe", "type": "github" }, "original": { From 24fe88e338400a59239b08714754d3cc567d75b6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 29 Feb 2024 17:48:12 +0000 Subject: [PATCH 042/562] Enable zram otherwise, cryptsetup gets OOM killed when adding a new key --- hosts/iron/configuration.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index 75bba3f..c9b061f 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -205,5 +205,12 @@ with lib; { options.zfs.fsname = "rpool/nixos/podman"; }; }; + + zramSwap = { + enable = true; + algorithm = "zstd"; + memoryPercent = 60; + priority = 1; + }; }; } From b7ddc8fb505f4a5d566c944256ff171d54a30cb8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 29 Feb 2024 17:49:08 +0000 Subject: [PATCH 043/562] Add luks passfile --- hosts/iron/configuration.nix | 12 +++++++++++- hosts/iron/luks-passfile.gpg | Bin 0 -> 4262 bytes 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 hosts/iron/luks-passfile.gpg diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index c9b061f..df0793e 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -112,7 +112,14 @@ with lib; { "net.ipv6.conf.all.forwarding" = 1; }; initrd = { - availableKernelModules = [ "ahci" ]; + availableKernelModules = [ + "ahci" + "ehci_pci" + "sd_mod" + "sdhci_pci" + "usb_storage" + "xhci_pci" + ]; systemd.enable = true; luks.devices = lib.listToAttrs ( map @@ -121,6 +128,9 @@ with lib; { value = { device = "${devNodes}${dev}${partitionScheme.luksDev}"; allowDiscards = true; + keyFileSize = 4096; + keyFile = "/dev/disk/by-id/usb-jalr_RAM_Mass_Storage_DE6270431F6F342C-0:0"; + keyFileTimeout = 5; }; }) disks diff --git a/hosts/iron/luks-passfile.gpg b/hosts/iron/luks-passfile.gpg new file mode 100644 index 0000000000000000000000000000000000000000..96c99037e5db9fbe22fce05d023542b20c621db6 GIT binary patch literal 4262 zcmZpPV^02)Y1$XoA}hqm?l67s$(To9X8IjJ*=3QcYA(#ErZSszx%QuEx)QyW#&)6 z^or5tXTYUZGbcC-US|?Exe=CB^~8ZuVTn-s^=TWX@iTusUa9I|{HD$)@Lm3~H%s}f zWOrp-u1UGd=y}uM;iRPY_e{%c|Nc#6xW0Ac*O(U<>!uXnxS;8(m2tD+dWn@V_wBoH zo;XUZXUt5Gb?QDd*X!D=Tg{SRy4G>NWwq3vHF0*{q?ea`X5F&9H8fECRu6 zezG16@19w^sw_9ID6Cs?_i9J>7SW3f_VCCF@|})bBC}xY!aspm^R-Jo4}CtslmDcC za_`jkYxP&RPgdis{5iS#fYhvzFPZAAJl5}Ix%V{PR5D`)Q|&Wz=Cpv)yWU@}x@dBm zNgoS6*t$?hL=GpE4sLa!0r1~+KfL&|Gn3aw8h?Hb zH901;Bqb~F=ey;`CB1w74@k}Vcl_uNi@WJt@=rzixLh*6JN?_P_W2JEp1zS;Ter^q z&qW@ANbWKXhsx7SeoMaKh@I0M*E7THmR!dl;f4iIFY)!h+Bm5iY5@3@+<`1IAFAHf<^4VRgl+*c_7;2(GY#izB}*UB@wcYp7&S*_PH zwNJ;JQN7Jfw|%?M*MzwD)%UK;EIv0gBU0<3O7EE~(>QKS@pRxU3=ymBuj^fYV3z-! z)D6;+3aZzw?(DVUKe*JbLaQu0;CXS#>V=b;i*@hZn_BnefV;cS&h?jmeeV^sRbjYw zCI8LkH}_&+w(blJG!}c^$@u^1&3o5RKB{*STz=H2?#88$ZH>(qf8{@GwP{BA#Y7|? z?%e#1`}D8#UYk#Uw|kN@r}tBT{flc=_TI6VPfAbuv^qbl@T$wE^1s}5@`aSR`sS@nG4k7|O*eWQ?%lA{dYXpy*$ua%?oU>>Jset4GSkcQ zp1#}4|JwE!S-X;+3ZLo7-K|+7a6u#Zv6H@%Lzcm-){hrfptpR( z!RsN#4l=V$s*mq1N$5QLCa6{N?8G36LoD2{Lps+xEjMQfn6Y2(h}YUsmH&e0j^B`) z9KDz8w3|iVlai%IfwGxxbN?*b^6*gLzpDZEiOY2hDwb+&&RKa@Z=vP64Bztt;^*y) z1g+I&{bm((uhMv+<9^$D%F?<0Sq*osme((R_P9LI+WZ~YJVPZ#-lkuXN-OSKZPpZ> z*te(o$PSsc^Iq6(oExgTA%R23LH)B9bl@V3_eVto}u; zpKRVs$G;J}<=KKZ+X}0#Ge6aO9Ej7|GIizuc^k!UdX^h%71c>^xTTjqV{2X0@@Aip ze*CFdi*pYiNi+4m6SV1!cWjxm5c_teX`&4in>y5w>3n$LEx)j0mTGZ5pUI_&C*EOS z|L<5lr!nV5aj=7n`K%{z8mt^QX1OZx#;0%CczKPW>z=F6HpN)q5KO80eMI-Q;-!d# zd0Thag5&89BzYjMHxjOqu_jZAoOz+nl?Z+#1!}E!`P9ENoUhonZa;uQ#96&a}Ik?%~CTz9UQOvD+og^?#R<|rUw`FK6KDF>@U}g~hh5Qh%f>Lqm2wkIZ@yf1O77pm zOP@d9Q$FT&@DTT-bz)UEo43q-+x{&t(DzmPa>nE{=h(ERFL2L0^`E;iHmW2mD*g0P z@%;nvDqx5HLy z&E@QK=3J}fbR0IaKh9A(=$dvomP6jwBPcDf%hJbB_oU47pYPI-=V~>SvFK;&sL!;T zU-0o-%JhOuRn92OtyYE?jTPwhG(&GDTE!Qb*9GNfMS|v)Rf35BM-CVHZgZ0H= zt+0UAIlm^qkl*yCB7V=KzDYuN>|0M(i7Q*o)Kn{pc)shwgCAFOLu}9A`_daM|DNm9 z#fixa1-4B19uX`0Orq6$bFZG~JHtwoZw>BV%dP9uZWr*|CvJ8*wsQ}ca@5X{@@aWY zWe#kwzAbW`%BVF%+PQm;((#U(8;=)ePbv2dj5?B19e?HUJK@m7uWid}Rf9f;7i8S5 z_B;G8TFs=LeR=EWg=K%_mUL!F8Tkc&IvG-RNhl|A`k9%#n%`OSt~z`1$J(%PU#Ir9~b-i2&;n!4!3lZ8P^4WVXS_MPyTi)g(i$hmTb@5f0yPgX`3RP~2iZAdoKnO?bk@zh8axuxB) zJML)921q%z%>B~ivaIN_dK<_5HxtXsYB{6PuSweNg*0zGn>^c7>&zyTXLI2K0 z@5U21%Z@hre!N_8YfjXQDVOvar*x+`6bWWX$UoYW)}$?;X>sy9hg^rtp8CK#`IPvj zhZUus+?f+??;x7OU~Rx`d}Piho;nsLF|C!QhusXO{0=+4gnNZd!$+n*!P~Vnm;L?F zRajfOP>26f@oS-Jw_@$T32wg7CAEjOXKT{<#&nH(&By zr|XrjvOUb(LltMIhdkZkn{gugx8;?7qyJxiJ>)cv^|IglocGIm;elBU4l$jwQ@` zd6HOu^{O0&y~j`d4c9DM;>$So-UE+kQo2vp&hERI74bz*a=SwCwYQb~V#Iej-m3C50QoZMm#0#HGwvKD0rW~yAGC1R~^{PX33P;WghW86* zGwi*cS-Z&~_FL5Fu6fgV<>m`Au5;&@@%KSo=}VtjbHC6z4W9-6PT!{#dQ~asbP>yg zR5qRsoC3Og`QGuHZ2xoE`v|Mno=C6iJO;C=>ED?@DeYKzf2*)x?xTj1?A5wa2ft@2 zT-$5%{R?N(bnctGK5ng>DwHhuf5zw2zSa+VW?eCOd}K-0n;9%Jf3%#1UvmFD|8d&s z@CAW)A3pl`$@F3W=BF1tRppffc_-=UoSd>PSNnjqpQnbZ^DIsyiAQrX56k`hSJ1=1 zmtjt)9a~<*qOS9jn;sbDX1$#H^h>M=qt>qp6{q;0J-Fpuq;~D0fy##S8mSzM|1Q}) z`K55|_4tbyLt9h5gVal&2(DIcEiI;m8T0k0bZSgE686PHR@QX;i8H$eA_XOWuDk6L6uLq!p(QBxvA15}?K?+TtE(6N zh`nQ&COYM#I^R|0DW`wmwl|(8BceMYNZLcG?E2Z8$4<6j$ajO#>+X5WWBLZvJc>hFan z&zbaL!UQ*_968BbwJ+bBEi}s69>o^Z^!NJpL%-+OY-dgGt+1C9n&G(n%+U|i(ib)_ zv(TD&V566i|AKd)7>|d9XGE@%JhEW2UDJno``W7}&f<$}b$FB|?GSDJYSx>x(MRqq zSAAshxX^*w^39gT2X&IBtm6y+T(p$UT7dDLq3fLeax3lLoLXij<9H|DyZF4Xw$=iH zjiql(-`XiW-Q1&k^U$TUV(H6nYMk(Vx#ME8+QSJ~zPx{Fq3sxb#ktDzWA*ff;a|^d zv8QcYteYYFzi{Kh{fAFa_;8HJg;ibh-U{w*D+2$#e{>;sa_Y z57$c4uG=+5H5p|k{SQ96ccsOXL((D!>{l9(x_jHXo|sdwg{t46mn4IWp{>F1AK4P6+-@{jd z$_Ji0JQ2v$xjV<9J^So-#nXkG%sd4(m~<8^PxQ$Vdg>A;`9XFQ!;Lw-?`5q{rmlNq zzJGOsWypCwhL!ik9sC#ca2;POen+SGfJW#tlcOnor7POB{#-VeZ~LOHaDQFbTN&l) z{5(sKeEf04v61P9mvvk4w0Bj8m$yH(Ri2!8g-f<-am4z!lf Date: Fri, 1 Mar 2024 09:17:37 +0000 Subject: [PATCH 044/562] Add recommended nginx settings --- hosts/weinturm-pretix-prod/services/pretix.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hosts/weinturm-pretix-prod/services/pretix.nix b/hosts/weinturm-pretix-prod/services/pretix.nix index 191024e..908d469 100644 --- a/hosts/weinturm-pretix-prod/services/pretix.nix +++ b/hosts/weinturm-pretix-prod/services/pretix.nix @@ -32,6 +32,11 @@ in }; }; + services.nginx = { + recommendedOptimisation = true; + recommendedTlsSettings = true; + }; + jalr.mailserver = { enable = true; fqdn = "tickets.weinturm.jalr.de"; From 41b3a31a6c2dd225619c080ed198a65ec7e36c3d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 1 Mar 2024 09:18:03 +0000 Subject: [PATCH 045/562] Increase gunicorn workers --- hosts/weinturm-pretix-prod/services/pretix.nix | 1 + pkgs/pretix/module.nix | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/hosts/weinturm-pretix-prod/services/pretix.nix b/hosts/weinturm-pretix-prod/services/pretix.nix index 908d469..78c7026 100644 --- a/hosts/weinturm-pretix-prod/services/pretix.nix +++ b/hosts/weinturm-pretix-prod/services/pretix.nix @@ -30,6 +30,7 @@ in "mail@jalr.de" ]; }; + gunicornWorkers = 32; }; services.nginx = { diff --git a/pkgs/pretix/module.nix b/pkgs/pretix/module.nix index da43907..c2f851a 100644 --- a/pkgs/pretix/module.nix +++ b/pkgs/pretix/module.nix @@ -106,6 +106,11 @@ in type = types.path; description = "Path to the sops secrets file which stores pretix.cfg settings."; }; + gunicornWorkers = mkOption { + type = types.int; + description = "Number of gunicorn workers. Recommended is roughly two times the number of CPU cores available."; + default = 2; + }; mail = { enable = mkEnableOption "Enables or disables emailing."; from = mkOption { @@ -232,7 +237,7 @@ in set -euo pipefail export PRETIX_CONFIG_FILE="$CREDENTIALS_DIRECTORY/config" exec ${pythonPackages.gunicorn}/bin/gunicorn pretix.wsgi --name ${name} \ - --workers 3 \ + --workers ${toString cfg.gunicornWorkers} \ --log-level=info \ --bind=${bind.host}:${toString bind.port} ''; From c2b11ca20348de7e4e3f8226a5f41dfaab2b74a4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 2 Mar 2024 00:19:21 +0000 Subject: [PATCH 046/562] Update pretix version Bump pretix version from 2024.1.1 to 2024.2.0 --- pkgs/pretix/poetry.lock | 571 +++++++++++++++++----------------- pkgs/pretix/pretix-static.nix | 2 +- pkgs/pretix/pyproject.toml | 2 +- 3 files changed, 279 insertions(+), 296 deletions(-) diff --git a/pkgs/pretix/poetry.lock b/pkgs/pretix/poetry.lock index ce6d6ba..1e11f88 100644 --- a/pkgs/pretix/poetry.lock +++ b/pkgs/pretix/poetry.lock @@ -155,6 +155,17 @@ typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} [package.extras] tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] +[[package]] +name = "asn1crypto" +version = "1.5.1" +description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP" +optional = false +python-versions = "*" +files = [ + {file = "asn1crypto-1.5.1-py2.py3-none-any.whl", hash = "sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67"}, + {file = "asn1crypto-1.5.1.tar.gz", hash = "sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c"}, +] + [[package]] name = "async-timeout" version = "4.0.3" @@ -433,13 +444,13 @@ pycparser = "*" [[package]] name = "chardet" -version = "5.1.0" +version = "5.2.0" description = "Universal encoding detector for Python 3" optional = false python-versions = ">=3.7" files = [ - {file = "chardet-5.1.0-py3-none-any.whl", hash = "sha256:362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9"}, - {file = "chardet-5.1.0.tar.gz", hash = "sha256:0d62712b956bc154f85fb0a266e2a3c5913c2967e00348701b32411d6def31e5"}, + {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, + {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, ] [[package]] @@ -671,32 +682,35 @@ test-randomorder = ["pytest-randomly"] [[package]] name = "css-inline" -version = "0.8.7" -description = "Fast CSS inlining written in Rust" +version = "0.13.0" +description = "High-performance library for inlining CSS into HTML 'style' attributes" optional = false python-versions = ">=3.7" files = [ - {file = "css_inline-0.8.7-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:3604d7af3df90681a5a31d2a1438bd237ae1ba171f2ea1cb62824f4909238a63"}, - {file = "css_inline-0.8.7-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:6e0afb35e17888b2ddd8efee738f1f68ae569615cb32b66427381372cab2d6b2"}, - {file = "css_inline-0.8.7-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:84e2b2c5c7c16b5ff546f9fae53e7f0d24bc63e9de6a2a655809c3698ad9f9e2"}, - {file = "css_inline-0.8.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773a150ba085d73ea8a4f27f562dcf90a7bc8dcecf0d1867b660f22d036c6a6a"}, - {file = "css_inline-0.8.7-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:39a90bd53272ee68a4d7909dc9b03240b296c50249b964cb253faf361c90e9dd"}, - {file = "css_inline-0.8.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ee0894e7a72434750799fced0c7404fed19f3d0538c7fb3ff61d4efacd473d"}, - {file = "css_inline-0.8.7-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:5b08837acd1fe60a8f8cbd44dfce88dda1676aca47eeb51bf512c02e90803b77"}, - {file = "css_inline-0.8.7-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:6c0f02ddc5b694520d0fb8db7961e703120a373e516a74cfa6c8303b1c131e42"}, - {file = "css_inline-0.8.7-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:51cc996cfce5fd10aa5e41569c664cded198f30f4706e699e97942893aa9e7f9"}, - {file = "css_inline-0.8.7-cp37-abi3-win32.whl", hash = "sha256:c5910202e7583f0d1b6aea34d63cd378e28808f8bcf210a9c961cb26ccc5ed25"}, - {file = "css_inline-0.8.7-cp37-abi3-win_amd64.whl", hash = "sha256:6803c2fb2064330de1761a44ae86ab6c9b78d1761c36ebdd8919346e595d702d"}, - {file = "css_inline-0.8.7-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:36a392ed87f840621838e63937e151d236a62cfdba2760f503273330691ea3d8"}, - {file = "css_inline-0.8.7-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0757b71ae23d4131d7ca274bb35d41f5faa41b88eed9090df3ab409689d055d"}, - {file = "css_inline-0.8.7-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6579c9ea5e288e644bd78dbfd3d2bae9c33eb11e3f02d2c61cf4b5683c8f97da"}, - {file = "css_inline-0.8.7-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:819bf4c331e59da07d824529027c00ec618c2f0b1d498f43e5281988339ac082"}, - {file = "css_inline-0.8.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e87293717865bca00bbc2046864e33a421468129a8a8fe938abf2397c4a8e26"}, - {file = "css_inline-0.8.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7d4313eed1de7def6d2e9c4780f11e1faed3800f2e2ad4de47dc15ba7a40da"}, - {file = "css_inline-0.8.7-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:7e5d5aebf87bcacc6bd3f548e0648f4e1b26d4b50e7239df234a42cb1374c039"}, - {file = "css_inline-0.8.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3b5dc09f6de78fa9f7152e701fdfa2ed827a7c0543a6746ba9879e8731c6da5"}, - {file = "css_inline-0.8.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf6053352d053d32a2294510416c704e5b62325a8214dca5c764455e318948c"}, - {file = "css_inline-0.8.7.tar.gz", hash = "sha256:68dac7010c27624627f7df9be12888b9129fd658804f52f8feac25f7d4766050"}, + {file = "css_inline-0.13.0-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:c06b1cb6e5638328e9f1a62f8a0b760914852834d950b7f6812653231c806ded"}, + {file = "css_inline-0.13.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:af66e7dc7e762ab24ebe57f98b7c02ac87cc10457a64b545de923a47694f63f7"}, + {file = "css_inline-0.13.0-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cbe8e5b1379695183a1700a70ad22877731b22e223ad4b7ddbd38b6e3b18b484"}, + {file = "css_inline-0.13.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c4861ed5c62412a7f1db87195cb94cfdb7b2ae1f1b4e10a31df7f6217e49bda"}, + {file = "css_inline-0.13.0-cp37-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:30d7d79b939df4ef14587998ad1be350410b3c19e697d0a445f99c7734fdf15a"}, + {file = "css_inline-0.13.0-cp37-abi3-manylinux_2_24_armv7l.whl", hash = "sha256:0111e8c300676aa47b99f30667583ec0a70914a63377ceefa008f5ba75853df3"}, + {file = "css_inline-0.13.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c1a8cb1323579bc38e2b9a55fe2ebb9f95dae5774521d1e870a6548069774197"}, + {file = "css_inline-0.13.0-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:c69ca8e8fca9c4d655de091c126d9d69de82b66e3182abdfb37db54c9532caac"}, + {file = "css_inline-0.13.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2f843e58e8907614c39f65898ebddb62e893bf49a022f26ac1fa1a7f53591521"}, + {file = "css_inline-0.13.0-cp37-abi3-win32.whl", hash = "sha256:3963e66e20c554798d58759bb282ef763836b4ee2afa2c6e466b2b31d9475f21"}, + {file = "css_inline-0.13.0-cp37-abi3-win_amd64.whl", hash = "sha256:f3403165e511935de3fd702b667fac2b018e080d96ac04918041788ec409f04b"}, + {file = "css_inline-0.13.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:80db07d589361f1ed75c297bd984049918693016c81cf288cc3dc7276653469a"}, + {file = "css_inline-0.13.0-pp310-pypy310_pp73-manylinux_2_24_aarch64.whl", hash = "sha256:00410f5bf5bbc50d6f0aa474750aa2c9ebdc51b37af60e15d1ced7e539608492"}, + {file = "css_inline-0.13.0-pp310-pypy310_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:3814d5060fa874ea88cc7262f0dec79cd83c63d5528fed049434ff4cd725d296"}, + {file = "css_inline-0.13.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:866dba67fc4065981fc60af72f470e58210eaee59b69ba6ac023f948ee5199b5"}, + {file = "css_inline-0.13.0-pp37-pypy37_pp73-manylinux_2_24_aarch64.whl", hash = "sha256:1fa752b54612e38bfc69083fd77de53df2053bd5f1de2a210e37b3347eb9720d"}, + {file = "css_inline-0.13.0-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:f481d2dfa116c9f1a163c2478b6c4c7d035740a680d19b6cb780677148c595f6"}, + {file = "css_inline-0.13.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:206c1cb0700f00a7164d18ce293bdaa4ca6cdfc4640e04ea5724ef1c4937bd64"}, + {file = "css_inline-0.13.0-pp38-pypy38_pp73-manylinux_2_24_aarch64.whl", hash = "sha256:6761771ea8481fdcb00ce25727e08232561a107a8330f012e52276a6fe84e080"}, + {file = "css_inline-0.13.0-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d7f8399b05d88c4cf48bcea3a9fe4f6cdab9e4def0e608d9c7e9447dd39f2e72"}, + {file = "css_inline-0.13.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:46296fefce679d760cd824cefcdd4f372dbc23232599a99e94612fc46bc0bfbe"}, + {file = "css_inline-0.13.0-pp39-pypy39_pp73-manylinux_2_24_aarch64.whl", hash = "sha256:4c9e4d17a801240e3d23d047f159a997f01c52d441a2529dddb18557068dbf5b"}, + {file = "css_inline-0.13.0-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:551619187c6c2d58442e5b67917e4254cec552e38750be942a871bc118ee56d6"}, + {file = "css_inline-0.13.0.tar.gz", hash = "sha256:d1a8366df670f7db78f5da9f8d4f500b3a5485bc945ec53e43c976b1626853ee"}, ] [[package]] @@ -759,13 +773,13 @@ django = "*" [[package]] name = "django-bootstrap3" -version = "23.1" -description = "Bootstrap 3 support for Django projects" +version = "23.6" +description = "Bootstrap 3 for Django" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "django-bootstrap3-23.1.tar.gz", hash = "sha256:7095b7c66a89f3baeb78ea028799ebd795d29739fc8602460422e7c2a194ad30"}, - {file = "django_bootstrap3-23.1-py3-none-any.whl", hash = "sha256:044ff0d34cd6a3928e0b7dc104a06b2f73e71bea237da5e9a477cc047a5d8e21"}, + {file = "django-bootstrap3-23.6.tar.gz", hash = "sha256:f8563b2641bcad3a8626beda979ff697c8375002cbf906fbd49f4be97b0f8a54"}, + {file = "django_bootstrap3-23.6-py3-none-any.whl", hash = "sha256:ba1334104c390ca9dc5b985a8d8ec45fab2c6401e4abb8d3a47d3b225614c3d9"}, ] [package.dependencies] @@ -773,13 +787,13 @@ Django = ">=3.2" [[package]] name = "django-compressor" -version = "4.3.1" +version = "4.4" description = "('Compresses linked and inline JavaScript or CSS into single cached files.',)" optional = false python-versions = "*" files = [ - {file = "django_compressor-4.3.1-py2.py3-none-any.whl", hash = "sha256:2c451174acb6f083054af7c8089376599b22d6380bd60311f78ec3fed79acc8e"}, - {file = "django_compressor-4.3.1.tar.gz", hash = "sha256:68858c0da6cc099cc29a022d86c3ba8aed114da9d709eeceb0d7b8181b5f8942"}, + {file = "django_compressor-4.4-py2.py3-none-any.whl", hash = "sha256:6e2b0c0becb9607f5099c2546a824c5b84a6918a34bc37a8a622ffa250313596"}, + {file = "django_compressor-4.4.tar.gz", hash = "sha256:1b0acc9cfba9f69bc38e7c41da9b0d70a20bc95587b643ffef9609cf46064f67"}, ] [package.dependencies] @@ -810,13 +824,13 @@ test = ["djangorestframework", "graphene-django", "pytest", "pytest-cov", "pytes [[package]] name = "django-filter" -version = "23.2" +version = "23.5" description = "Django-filter is a reusable Django application for allowing users to filter querysets dynamically." optional = false python-versions = ">=3.7" files = [ - {file = "django-filter-23.2.tar.gz", hash = "sha256:2fe15f78108475eda525692813205fa6f9e8c1caf1ae65daa5862d403c6dbf00"}, - {file = "django_filter-23.2-py3-none-any.whl", hash = "sha256:d12d8e0fc6d3eb26641e553e5d53b191eb8cec611427d4bdce0becb1f7c172b5"}, + {file = "django-filter-23.5.tar.gz", hash = "sha256:67583aa43b91fe8c49f74a832d95f4d8442be628fd4c6d65e9f811f5153a4e5c"}, + {file = "django_filter-23.5-py3-none-any.whl", hash = "sha256:99122a201d83860aef4fe77758b69dda913e874cc5e0eaa50a86b0b18d708400"}, ] [package.dependencies] @@ -839,13 +853,13 @@ django-jquery-js = "*" [[package]] name = "django-formtools" -version = "2.4.1" +version = "2.5.1" description = "A set of high-level abstractions for Django forms" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "django-formtools-2.4.1.tar.gz", hash = "sha256:21f8d5dac737f1e636fa8a0a10969c1c32f525a6dfa27c29592827ba70d9643a"}, - {file = "django_formtools-2.4.1-py3-none-any.whl", hash = "sha256:49ea8a64ddef4728a558bf5f8f622c0f4053b979edcf193bf00dd80432ab2f12"}, + {file = "django-formtools-2.5.1.tar.gz", hash = "sha256:47cb34552c6efca088863d693284d04fc36eaaf350eb21e1a1d935e0df523c93"}, + {file = "django_formtools-2.5.1-py3-none-any.whl", hash = "sha256:bce9b64eda52cc1eef6961cc649cf75aacd1a707c2fff08d6c3efcbc8e7e761a"}, ] [package.dependencies] @@ -867,17 +881,17 @@ python-dateutil = "*" [[package]] name = "django-hijack" -version = "3.3.0" +version = "3.4.5" description = "django-hijack allows superusers to hijack (=login as) and work on behalf of another user." optional = false python-versions = "*" files = [ - {file = "django-hijack-3.3.0.tar.gz", hash = "sha256:795cd0087596a21c9bf641fa5cf1787f4edf144e16a423014afbcf2838e8e124"}, - {file = "django_hijack-3.3.0-py3-none-any.whl", hash = "sha256:976ae3bc7e9db0bcb5f5b85a58fba98f5ff1d7a6e92e1b65854289cc79a351d4"}, + {file = "django-hijack-3.4.5.tar.gz", hash = "sha256:7e45b1de786bdc130628e4230b359dde6d8744ecd3bcd668d2b27c5d614a071c"}, + {file = "django_hijack-3.4.5-py3-none-any.whl", hash = "sha256:129cbe75444b163135871a947d38ffb72181f4f2583544703fc9efe083c9ddad"}, ] [package.dependencies] -django = ">=2.2" +django = ">=3.2" [package.extras] test = ["pytest", "pytest-cov", "pytest-django"] @@ -956,13 +970,13 @@ all-filter-dependencies = ["bleach (>=3.0)", "docutils (>=0.14)", "markdown (>=2 [[package]] name = "django-oauth-toolkit" -version = "2.2.0" +version = "2.3.0" description = "OAuth2 Provider for Django" optional = false python-versions = "*" files = [ - {file = "django-oauth-toolkit-2.2.0.tar.gz", hash = "sha256:46890decb24a34e2a5382debeaf7752e50d90b7a11716cf2a9fd067097ec0963"}, - {file = "django_oauth_toolkit-2.2.0-py3-none-any.whl", hash = "sha256:abd85c74af525a62365ec2049113e73a2ff8b46ef906e7104a7ba968ef02a11d"}, + {file = "django-oauth-toolkit-2.3.0.tar.gz", hash = "sha256:cf1cb1a5744672e6bd7d66b4a110a463bcef9cf5ed4f27e29682cc6a4d0df1ed"}, + {file = "django_oauth_toolkit-2.3.0-py3-none-any.whl", hash = "sha256:47dfeab97ec21496f307c2cf3468e64ca08897fa499bf3104366d32005c9111d"}, ] [package.dependencies] @@ -973,13 +987,13 @@ requests = ">=2.13.0" [[package]] name = "django-otp" -version = "1.2.4" +version = "1.3.0" description = "A pluggable framework for adding two-factor authentication to Django using one-time passwords." optional = false python-versions = ">=3.7" files = [ - {file = "django_otp-1.2.4-py3-none-any.whl", hash = "sha256:5ddd1aaf455db47fac3ce0d8b518e68e9a57db55e30ad68eafad377e4fa741f5"}, - {file = "django_otp-1.2.4.tar.gz", hash = "sha256:7e805cc196cbac93edbbbbf5078d7c5156fec2dba1b2589361ddbf74c4557e39"}, + {file = "django_otp-1.3.0-py3-none-any.whl", hash = "sha256:5277731bc05b6cdbf96aa84ac46018e30ed5fb248086053b0146f925de059060"}, + {file = "django_otp-1.3.0.tar.gz", hash = "sha256:8f4156a3c14ce2aaa31379385eadf388925cd50fc4b5d20a3b944f454c98ff7c"}, ] [package.dependencies] @@ -990,13 +1004,13 @@ qrcode = ["qrcode"] [[package]] name = "django-phonenumber-field" -version = "7.1.0" +version = "7.3.0" description = "An international phone number field for django models." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "django-phonenumber-field-7.1.0.tar.gz", hash = "sha256:63721dbdc7424cd594a08d80f550e790cf6e7c903cbc0fb4dd9d86baac8b8c51"}, - {file = "django_phonenumber_field-7.1.0-py3-none-any.whl", hash = "sha256:4eaab35fe9a163046dc3a47188771385c56a788e0e11b7bbcc662e1e6b7b9104"}, + {file = "django-phonenumber-field-7.3.0.tar.gz", hash = "sha256:f9cdb3de085f99c249328293a3b93d4e5fa440c0c8e3b99eb0d0f54748629797"}, + {file = "django_phonenumber_field-7.3.0-py3-none-any.whl", hash = "sha256:bc6eaa49d1f9d870944f5280258db511e3a1ba5e2fbbed255488dceacae45d06"}, ] [package.dependencies] @@ -1008,17 +1022,17 @@ phonenumberslite = ["phonenumberslite (>=7.0.2)"] [[package]] name = "django-redis" -version = "5.2.0" +version = "5.4.0" description = "Full featured redis cache backend for Django." optional = false python-versions = ">=3.6" files = [ - {file = "django-redis-5.2.0.tar.gz", hash = "sha256:8a99e5582c79f894168f5865c52bd921213253b7fd64d16733ae4591564465de"}, - {file = "django_redis-5.2.0-py3-none-any.whl", hash = "sha256:1d037dc02b11ad7aa11f655d26dac3fb1af32630f61ef4428860a2e29ff92026"}, + {file = "django-redis-5.4.0.tar.gz", hash = "sha256:6a02abaa34b0fea8bf9b707d2c363ab6adc7409950b2db93602e6cb292818c42"}, + {file = "django_redis-5.4.0-py3-none-any.whl", hash = "sha256:ebc88df7da810732e2af9987f7f426c96204bf89319df4c6da6ca9a2942edd5b"}, ] [package.dependencies] -Django = ">=2.2" +Django = ">=3.2" redis = ">=3,<4.0.0 || >4.0.0,<4.0.1 || >4.0.1" [package.extras] @@ -1040,17 +1054,17 @@ Django = ">=3.2" [[package]] name = "django-statici18n" -version = "2.3.1" +version = "2.4.0" description = "A Django app that compiles i18n JavaScript catalogs to static files." optional = false python-versions = "*" files = [ - {file = "django-statici18n-2.3.1.tar.gz", hash = "sha256:00079579035d5b45320830191e2c047f8643b7906307eff9833f0fa95068a603"}, - {file = "django_statici18n-2.3.1-py2.py3-none-any.whl", hash = "sha256:5f4bb3d58670def2df490babe338524927cfb2ebe2e5e20538b98d9424e83d0e"}, + {file = "django-statici18n-2.4.0.tar.gz", hash = "sha256:32660a0d492188751266c800cf4e44005d563bd1e4c91c349e1bd63a6855e270"}, + {file = "django_statici18n-2.4.0-py2.py3-none-any.whl", hash = "sha256:02a96963a8c42aa7a222a2ba0c39d888306e66f375b6c6acc748a3a81035ed52"}, ] [package.dependencies] -Django = ">=2.2" +Django = ">=3.2" django-appconf = ">=1.0" [[package]] @@ -1070,23 +1084,23 @@ pytz = "*" [[package]] name = "dnspython" -version = "2.3.0" +version = "2.5.0" description = "DNS toolkit" optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.8" files = [ - {file = "dnspython-2.3.0-py3-none-any.whl", hash = "sha256:89141536394f909066cabd112e3e1a37e4e654db00a25308b0f130bc3152eb46"}, - {file = "dnspython-2.3.0.tar.gz", hash = "sha256:224e32b03eb46be70e12ef6d64e0be123a64e621ab4c0822ff6d450d52a540b9"}, + {file = "dnspython-2.5.0-py3-none-any.whl", hash = "sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6"}, + {file = "dnspython-2.5.0.tar.gz", hash = "sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15"}, ] [package.extras] -curio = ["curio (>=1.2,<2.0)", "sniffio (>=1.1,<2.0)"] -dnssec = ["cryptography (>=2.6,<40.0)"] -doh = ["h2 (>=4.1.0)", "httpx (>=0.21.1)", "requests (>=2.23.0,<3.0.0)", "requests-toolbelt (>=0.9.1,<0.11.0)"] +dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=5.0.3)", "mypy (>=1.0.1)", "pylint (>=2.7)", "pytest (>=6.2.5)", "pytest-cov (>=3.0.0)", "sphinx (>=7.0.0)", "twine (>=4.0.0)", "wheel (>=0.41.0)"] +dnssec = ["cryptography (>=41)"] +doh = ["h2 (>=4.1.0)", "httpcore (>=0.17.3)", "httpx (>=0.25.1)"] doq = ["aioquic (>=0.9.20)"] -idna = ["idna (>=2.1,<4.0)"] -trio = ["trio (>=0.14,<0.23)"] -wmi = ["wmi (>=1.5.1,<2.0.0)"] +idna = ["idna (>=2.1)"] +trio = ["trio (>=0.14)"] +wmi = ["wmi (>=1.5.1)"] [[package]] name = "drf-ujson2" @@ -1121,18 +1135,6 @@ files = [ [package.extras] dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", "memray", "mypy", "tox", "xmlschema (>=2.0.0)"] -[[package]] -name = "enum34" -version = "1.1.10" -description = "Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4" -optional = false -python-versions = "*" -files = [ - {file = "enum34-1.1.10-py2-none-any.whl", hash = "sha256:a98a201d6de3f2ab3db284e70a33b0f896fbf35f8086594e8c9e74b909058d53"}, - {file = "enum34-1.1.10-py3-none-any.whl", hash = "sha256:c3858660960c984d6ab0ebad691265180da2b43f07e061c0f8dca9ef3cffd328"}, - {file = "enum34-1.1.10.tar.gz", hash = "sha256:cce6a7477ed816bd2542d03d53db9f0db935dd013b70f336a95c73979289f248"}, -] - [[package]] name = "et-xmlfile" version = "1.1.0" @@ -1230,17 +1232,6 @@ files = [ {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, ] -[[package]] -name = "future" -version = "1.0.0" -description = "Clean single-source support for Python 3 and 2" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "future-1.0.0-py3-none-any.whl", hash = "sha256:929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216"}, - {file = "future-1.0.0.tar.gz", hash = "sha256:bd2968309307861edae1458a4f8a4f3598c03be43b97521076aebf5d94c07b05"}, -] - [[package]] name = "geoip2" version = "4.8.0" @@ -1399,16 +1390,17 @@ zookeeper = ["kazoo (>=2.8.0)"] [[package]] name = "libsass" -version = "0.22.0" +version = "0.23.0" description = "Sass for Python: A straightforward binding of libsass for Python." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "libsass-0.22.0-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f1efc1b612299c88aec9e39d6ca0c266d360daa5b19d9430bdeaffffa86993f9"}, - {file = "libsass-0.22.0-cp37-abi3-macosx_10_15_x86_64.whl", hash = "sha256:081e256ab3c5f3f09c7b8dea3bf3bf5e64a97c6995fd9eea880639b3f93a9f9a"}, - {file = "libsass-0.22.0-cp37-abi3-win32.whl", hash = "sha256:89c5ce497fcf3aba1dd1b19aae93b99f68257e5f2026b731b00a872f13324c7f"}, - {file = "libsass-0.22.0-cp37-abi3-win_amd64.whl", hash = "sha256:65455a2728b696b62100eb5932604aa13a29f4ac9a305d95773c14aaa7200aaf"}, - {file = "libsass-0.22.0.tar.gz", hash = "sha256:3ab5ad18e47db560f4f0c09e3d28cf3bb1a44711257488ac2adad69f4f7f8425"}, + {file = "libsass-0.23.0-cp38-abi3-macosx_11_0_x86_64.whl", hash = "sha256:34cae047cbbfc4ffa832a61cbb110f3c95f5471c6170c842d3fed161e40814dc"}, + {file = "libsass-0.23.0-cp38-abi3-macosx_14_0_arm64.whl", hash = "sha256:ea97d1b45cdc2fc3590cb9d7b60f1d8915d3ce17a98c1f2d4dd47ee0d9c68ce6"}, + {file = "libsass-0.23.0-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4a218406d605f325d234e4678bd57126a66a88841cb95bee2caeafdc6f138306"}, + {file = "libsass-0.23.0-cp38-abi3-win32.whl", hash = "sha256:31e86d92a5c7a551df844b72d83fc2b5e50abc6fbbb31e296f7bebd6489ed1b4"}, + {file = "libsass-0.23.0-cp38-abi3-win_amd64.whl", hash = "sha256:a2ec85d819f353cbe807432d7275d653710d12b08ec7ef61c124a580a8352f3c"}, + {file = "libsass-0.23.0.tar.gz", hash = "sha256:6f209955ede26684e76912caf329f4ccb57e4a043fd77fe0e7348dd9574f1880"}, ] [[package]] @@ -1506,16 +1498,17 @@ source = ["Cython (>=3.0.7)"] [[package]] name = "markdown" -version = "3.4.3" +version = "3.5.2" description = "Python implementation of John Gruber's Markdown." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Markdown-3.4.3-py3-none-any.whl", hash = "sha256:065fd4df22da73a625f14890dd77eb8040edcbd68794bcd35943be14490608b2"}, - {file = "Markdown-3.4.3.tar.gz", hash = "sha256:8bf101198e004dc93e84a12a7395e31aac6a9c9942848ae1d99b9d72cf9b3520"}, + {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, + {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, ] [package.extras] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] testing = ["coverage", "pyyaml"] [[package]] @@ -1792,82 +1785,88 @@ files = [ [[package]] name = "pillow" -version = "9.5.0" +version = "10.2.0" description = "Python Imaging Library (Fork)" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Pillow-9.5.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16"}, - {file = "Pillow-9.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d"}, - {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903"}, - {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a"}, - {file = "Pillow-9.5.0-cp310-cp310-win32.whl", hash = "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44"}, - {file = "Pillow-9.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb"}, - {file = "Pillow-9.5.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32"}, - {file = "Pillow-9.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625"}, - {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579"}, - {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296"}, - {file = "Pillow-9.5.0-cp311-cp311-win32.whl", hash = "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec"}, - {file = "Pillow-9.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4"}, - {file = "Pillow-9.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089"}, - {file = "Pillow-9.5.0-cp312-cp312-win32.whl", hash = "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb"}, - {file = "Pillow-9.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b"}, - {file = "Pillow-9.5.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47"}, - {file = "Pillow-9.5.0-cp37-cp37m-win32.whl", hash = "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7"}, - {file = "Pillow-9.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6"}, - {file = "Pillow-9.5.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597"}, - {file = "Pillow-9.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51"}, - {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96"}, - {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f"}, - {file = "Pillow-9.5.0-cp38-cp38-win32.whl", hash = "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc"}, - {file = "Pillow-9.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569"}, - {file = "Pillow-9.5.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66"}, - {file = "Pillow-9.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1"}, - {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a"}, - {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865"}, - {file = "Pillow-9.5.0-cp39-cp39-win32.whl", hash = "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964"}, - {file = "Pillow-9.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799"}, - {file = "Pillow-9.5.0.tar.gz", hash = "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, + {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, + {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, + {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, + {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, + {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, + {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, + {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, + {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, + {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, + {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, + {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, + {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, + {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, + {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, + {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, + {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, ] [package.extras] docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] [[package]] name = "platformdirs" @@ -1897,13 +1896,13 @@ files = [ [[package]] name = "pretix" -version = "2024.1.1" +version = "2024.2.0" description = "Reinventing presales, one ticket at a time" optional = false python-versions = ">=3.9" files = [ - {file = "pretix-2024.1.1-py3-none-any.whl", hash = "sha256:77bf042a0fd5d9c265c044bdfd7f53375adfc962442b6a24190f606a48daeb0b"}, - {file = "pretix-2024.1.1.tar.gz", hash = "sha256:9e25156c26d435a3a78109b7ae5b9cf45ef2a1d31cb1da2dfd773c44d0c631ad"}, + {file = "pretix-2024.2.0-py3-none-any.whl", hash = "sha256:62cddbb2354728f9a9d695755ed55e88d88d35db2cfe2c94ac5be9e648adb51f"}, + {file = "pretix-2024.2.0.tar.gz", hash = "sha256:a99d095bb2739cf2574770bc940d988f52bd61d2464598f113ab661a596f5fd5"}, ] [package.dependencies] @@ -1912,41 +1911,41 @@ babel = "*" BeautifulSoup4 = "==4.12.*" bleach = "==5.0.*" celery = "==5.3.*" -chardet = "==5.1.*" +chardet = "==5.2.*" cryptography = ">=3.4.2" -css-inline = "==0.8.*" +css-inline = "==0.13.*" defusedcsv = ">=1.1.0" dj-static = "*" Django = "==4.2.*" -django-bootstrap3 = "==23.1.*" -django-compressor = "==4.3.*" +django-bootstrap3 = "==23.6.*" +django-compressor = "4.4" django-countries = "==7.5.*" -django-filter = "23.2" +django-filter = "23.5" django-formset-js-improved = "0.5.0.3" -django-formtools = "2.4.1" +django-formtools = "2.5.1" django-hierarkey = "==1.1.*" -django-hijack = "==3.3.*" +django-hijack = "==3.4.*" django-i18nfield = ">=1.9.4,<1.10.dev0" django-libsass = "0.9" django-localflavor = "4.0" django-markup = "*" -django-oauth-toolkit = "==2.2.*" -django-otp = "==1.2.*" -django-phonenumber-field = "==7.1.*" -django-redis = "==5.2.*" +django-oauth-toolkit = "==2.3.*" +django-otp = "==1.3.*" +django-phonenumber-field = "==7.3.*" +django-redis = "==5.4.*" django-scopes = "==2.0.*" -django-statici18n = "==2.3.*" +django-statici18n = "==2.4.*" djangorestframework = "==3.14.*" -dnspython = "==2.3.*" +dnspython = "==2.5.*" drf-ujson2 = "==1.7.*" geoip2 = "==4.*" importlib-metadata = "==7.*" isoweek = "*" jsonschema = "*" kombu = "==5.3.*" -libsass = "==0.22.*" +libsass = "==0.23.*" lxml = "*" -markdown = "3.4.3" +markdown = "3.5.2" mt-940 = "==4.30.*" oauthlib = "==3.2.*" openpyxl = "==3.1.*" @@ -1954,26 +1953,25 @@ packaging = "*" paypal-checkout-serversdk = "==1.0.*" paypalrestsdk = "==1.13.*" phonenumberslite = "==8.13.*" -Pillow = "==9.5.*" +Pillow = "==10.2.*" pretix-plugin-build = "*" -protobuf = "==4.23.*" +protobuf = "==4.25.*" psycopg2-binary = "*" pycountry = "*" pycparser = "2.21" -pycryptodome = "==3.18.*" -PyJWT = "==2.7.*" +pycryptodome = "==3.20.*" +PyJWT = "==2.8.*" pypdf = "==3.9.*" python-bidi = "==0.4.*" python-dateutil = "==2.8.*" -python-u2flib-server = "==4.*" pytz = "*" pytz-deprecation-shim = "==0.1.*" pyuca = "*" qrcode = "==7.4.*" -redis = "==4.6.*" -reportlab = "==4.0.*" +redis = "==5.0.*" +reportlab = "==4.1.*" requests = "==2.31.*" -sentry-sdk = "==1.15.*" +sentry-sdk = "==1.40.*" sepaxml = "==2.6.*" slimit = "*" static3 = "==0.7.*" @@ -1983,11 +1981,11 @@ tlds = ">=2020041600" tqdm = "==4.*" vat-moss-forked = "2020.3.20.0.11.0" vobject = "==0.9.*" -webauthn = "==0.4.*" +webauthn = "==2.0.*" zeep = "==4.2.*" [package.extras] -dev = ["aiohttp (==3.8.*)", "coverage", "coveralls", "fakeredis (==2.18.*)", "flake8 (==6.0.*)", "freezegun", "isort (==5.12.*)", "pep8-naming (==0.13.*)", "potypo", "pycodestyle (==2.10.*)", "pyflakes (==3.0.*)", "pytest (==7.3.*)", "pytest-asyncio", "pytest-cache", "pytest-cov", "pytest-django (==4.*)", "pytest-mock (==3.10.*)", "pytest-rerunfailures (==11.*)", "pytest-sugar", "pytest-xdist (==3.3.*)", "responses"] +dev = ["aiohttp (==3.9.*)", "coverage", "coveralls", "fakeredis (==2.21.*)", "flake8 (==7.0.*)", "freezegun", "isort (==5.13.*)", "pep8-naming (==0.13.*)", "potypo", "pytest (==8.0.*)", "pytest-asyncio", "pytest-cache", "pytest-cov", "pytest-django (==4.*)", "pytest-mock (==3.12.*)", "pytest-rerunfailures (==13.*)", "pytest-sugar", "pytest-xdist (==3.5.*)", "responses"] memcached = ["pylibmc"] [[package]] @@ -2020,24 +2018,22 @@ wcwidth = "*" [[package]] name = "protobuf" -version = "4.23.4" +version = "4.25.3" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "protobuf-4.23.4-cp310-abi3-win32.whl", hash = "sha256:5fea3c64d41ea5ecf5697b83e41d09b9589e6f20b677ab3c48e5f242d9b7897b"}, - {file = "protobuf-4.23.4-cp310-abi3-win_amd64.whl", hash = "sha256:7b19b6266d92ca6a2a87effa88ecc4af73ebc5cfde194dc737cf8ef23a9a3b12"}, - {file = "protobuf-4.23.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8547bf44fe8cec3c69e3042f5c4fb3e36eb2a7a013bb0a44c018fc1e427aafbd"}, - {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fee88269a090ada09ca63551bf2f573eb2424035bcf2cb1b121895b01a46594a"}, - {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:effeac51ab79332d44fba74660d40ae79985901ac21bca408f8dc335a81aa597"}, - {file = "protobuf-4.23.4-cp37-cp37m-win32.whl", hash = "sha256:c3e0939433c40796ca4cfc0fac08af50b00eb66a40bbbc5dee711998fb0bbc1e"}, - {file = "protobuf-4.23.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9053df6df8e5a76c84339ee4a9f5a2661ceee4a0dab019e8663c50ba324208b0"}, - {file = "protobuf-4.23.4-cp38-cp38-win32.whl", hash = "sha256:e1c915778d8ced71e26fcf43c0866d7499891bca14c4368448a82edc61fdbc70"}, - {file = "protobuf-4.23.4-cp38-cp38-win_amd64.whl", hash = "sha256:351cc90f7d10839c480aeb9b870a211e322bf05f6ab3f55fcb2f51331f80a7d2"}, - {file = "protobuf-4.23.4-cp39-cp39-win32.whl", hash = "sha256:6dd9b9940e3f17077e820b75851126615ee38643c2c5332aa7a359988820c720"}, - {file = "protobuf-4.23.4-cp39-cp39-win_amd64.whl", hash = "sha256:0a5759f5696895de8cc913f084e27fd4125e8fb0914bb729a17816a33819f474"}, - {file = "protobuf-4.23.4-py3-none-any.whl", hash = "sha256:e9d0be5bf34b275b9f87ba7407796556abeeba635455d036c7351f7c183ef8ff"}, - {file = "protobuf-4.23.4.tar.gz", hash = "sha256:ccd9430c0719dce806b93f89c91de7977304729e55377f872a92465d548329a9"}, + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] [[package]] @@ -2145,54 +2141,54 @@ files = [ [[package]] name = "pycryptodome" -version = "3.18.0" +version = "3.20.0" description = "Cryptographic library for Python" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "pycryptodome-3.18.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:d1497a8cd4728db0e0da3c304856cb37c0c4e3d0b36fcbabcc1600f18504fc54"}, - {file = "pycryptodome-3.18.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:928078c530da78ff08e10eb6cada6e0dff386bf3d9fa9871b4bbc9fbc1efe024"}, - {file = "pycryptodome-3.18.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:157c9b5ba5e21b375f052ca78152dd309a09ed04703fd3721dce3ff8ecced148"}, - {file = "pycryptodome-3.18.0-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:d20082bdac9218649f6abe0b885927be25a917e29ae0502eaf2b53f1233ce0c2"}, - {file = "pycryptodome-3.18.0-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:e8ad74044e5f5d2456c11ed4cfd3e34b8d4898c0cb201c4038fe41458a82ea27"}, - {file = "pycryptodome-3.18.0-cp27-cp27m-win32.whl", hash = "sha256:62a1e8847fabb5213ccde38915563140a5b338f0d0a0d363f996b51e4a6165cf"}, - {file = "pycryptodome-3.18.0-cp27-cp27m-win_amd64.whl", hash = "sha256:16bfd98dbe472c263ed2821284118d899c76968db1a6665ade0c46805e6b29a4"}, - {file = "pycryptodome-3.18.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:7a3d22c8ee63de22336679e021c7f2386f7fc465477d59675caa0e5706387944"}, - {file = "pycryptodome-3.18.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:78d863476e6bad2a592645072cc489bb90320972115d8995bcfbee2f8b209918"}, - {file = "pycryptodome-3.18.0-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:b6a610f8bfe67eab980d6236fdc73bfcdae23c9ed5548192bb2d530e8a92780e"}, - {file = "pycryptodome-3.18.0-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:422c89fd8df8a3bee09fb8d52aaa1e996120eafa565437392b781abec2a56e14"}, - {file = "pycryptodome-3.18.0-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:9ad6f09f670c466aac94a40798e0e8d1ef2aa04589c29faa5b9b97566611d1d1"}, - {file = "pycryptodome-3.18.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:53aee6be8b9b6da25ccd9028caf17dcdce3604f2c7862f5167777b707fbfb6cb"}, - {file = "pycryptodome-3.18.0-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:10da29526a2a927c7d64b8f34592f461d92ae55fc97981aab5bbcde8cb465bb6"}, - {file = "pycryptodome-3.18.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f21efb8438971aa16924790e1c3dba3a33164eb4000106a55baaed522c261acf"}, - {file = "pycryptodome-3.18.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4944defabe2ace4803f99543445c27dd1edbe86d7d4edb87b256476a91e9ffa4"}, - {file = "pycryptodome-3.18.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:51eae079ddb9c5f10376b4131be9589a6554f6fd84f7f655180937f611cd99a2"}, - {file = "pycryptodome-3.18.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:83c75952dcf4a4cebaa850fa257d7a860644c70a7cd54262c237c9f2be26f76e"}, - {file = "pycryptodome-3.18.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:957b221d062d5752716923d14e0926f47670e95fead9d240fa4d4862214b9b2f"}, - {file = "pycryptodome-3.18.0-cp35-abi3-win32.whl", hash = "sha256:795bd1e4258a2c689c0b1f13ce9684fa0dd4c0e08680dcf597cf9516ed6bc0f3"}, - {file = "pycryptodome-3.18.0-cp35-abi3-win_amd64.whl", hash = "sha256:b1d9701d10303eec8d0bd33fa54d44e67b8be74ab449052a8372f12a66f93fb9"}, - {file = "pycryptodome-3.18.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:cb1be4d5af7f355e7d41d36d8eec156ef1382a88638e8032215c215b82a4b8ec"}, - {file = "pycryptodome-3.18.0-pp27-pypy_73-win32.whl", hash = "sha256:fc0a73f4db1e31d4a6d71b672a48f3af458f548059aa05e83022d5f61aac9c08"}, - {file = "pycryptodome-3.18.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f022a4fd2a5263a5c483a2bb165f9cb27f2be06f2f477113783efe3fe2ad887b"}, - {file = "pycryptodome-3.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:363dd6f21f848301c2dcdeb3c8ae5f0dee2286a5e952a0f04954b82076f23825"}, - {file = "pycryptodome-3.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12600268763e6fec3cefe4c2dcdf79bde08d0b6dc1813887e789e495cb9f3403"}, - {file = "pycryptodome-3.18.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4604816adebd4faf8810782f137f8426bf45fee97d8427fa8e1e49ea78a52e2c"}, - {file = "pycryptodome-3.18.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:01489bbdf709d993f3058e2996f8f40fee3f0ea4d995002e5968965fa2fe89fb"}, - {file = "pycryptodome-3.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3811e31e1ac3069988f7a1c9ee7331b942e605dfc0f27330a9ea5997e965efb2"}, - {file = "pycryptodome-3.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f4b967bb11baea9128ec88c3d02f55a3e338361f5e4934f5240afcb667fdaec"}, - {file = "pycryptodome-3.18.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9c8eda4f260072f7dbe42f473906c659dcbadd5ae6159dfb49af4da1293ae380"}, - {file = "pycryptodome-3.18.0.tar.gz", hash = "sha256:c9adee653fc882d98956e33ca2c1fb582e23a8af7ac82fee75bd6113c55a0413"}, + {file = "pycryptodome-3.20.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:f0e6d631bae3f231d3634f91ae4da7a960f7ff87f2865b2d2b831af1dfb04e9a"}, + {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:baee115a9ba6c5d2709a1e88ffe62b73ecc044852a925dcb67713a288c4ec70f"}, + {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:417a276aaa9cb3be91f9014e9d18d10e840a7a9b9a9be64a42f553c5b50b4d1d"}, + {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a1250b7ea809f752b68e3e6f3fd946b5939a52eaeea18c73bdab53e9ba3c2dd"}, + {file = "pycryptodome-3.20.0-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:d5954acfe9e00bc83ed9f5cb082ed22c592fbbef86dc48b907238be64ead5c33"}, + {file = "pycryptodome-3.20.0-cp27-cp27m-win32.whl", hash = "sha256:06d6de87c19f967f03b4cf9b34e538ef46e99a337e9a61a77dbe44b2cbcf0690"}, + {file = "pycryptodome-3.20.0-cp27-cp27m-win_amd64.whl", hash = "sha256:ec0bb1188c1d13426039af8ffcb4dbe3aad1d7680c35a62d8eaf2a529b5d3d4f"}, + {file = "pycryptodome-3.20.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5601c934c498cd267640b57569e73793cb9a83506f7c73a8ec57a516f5b0b091"}, + {file = "pycryptodome-3.20.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d29daa681517f4bc318cd8a23af87e1f2a7bad2fe361e8aa29c77d652a065de4"}, + {file = "pycryptodome-3.20.0-cp27-cp27mu-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3427d9e5310af6680678f4cce149f54e0bb4af60101c7f2c16fdf878b39ccccc"}, + {file = "pycryptodome-3.20.0-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:3cd3ef3aee1079ae44afaeee13393cf68b1058f70576b11439483e34f93cf818"}, + {file = "pycryptodome-3.20.0-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:ac1c7c0624a862f2e53438a15c9259d1655325fc2ec4392e66dc46cdae24d044"}, + {file = "pycryptodome-3.20.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76658f0d942051d12a9bd08ca1b6b34fd762a8ee4240984f7c06ddfb55eaf15a"}, + {file = "pycryptodome-3.20.0-cp35-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f35d6cee81fa145333137009d9c8ba90951d7d77b67c79cbe5f03c7eb74d8fe2"}, + {file = "pycryptodome-3.20.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76cb39afede7055127e35a444c1c041d2e8d2f1f9c121ecef573757ba4cd2c3c"}, + {file = "pycryptodome-3.20.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a4c4dc60b78ec41d2afa392491d788c2e06edf48580fbfb0dd0f828af49d25"}, + {file = "pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fb3b87461fa35afa19c971b0a2b7456a7b1db7b4eba9a8424666104925b78128"}, + {file = "pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:acc2614e2e5346a4a4eab6e199203034924313626f9620b7b4b38e9ad74b7e0c"}, + {file = "pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:210ba1b647837bfc42dd5a813cdecb5b86193ae11a3f5d972b9a0ae2c7e9e4b4"}, + {file = "pycryptodome-3.20.0-cp35-abi3-win32.whl", hash = "sha256:8d6b98d0d83d21fb757a182d52940d028564efe8147baa9ce0f38d057104ae72"}, + {file = "pycryptodome-3.20.0-cp35-abi3-win_amd64.whl", hash = "sha256:9b3ae153c89a480a0ec402e23db8d8d84a3833b65fa4b15b81b83be9d637aab9"}, + {file = "pycryptodome-3.20.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:4401564ebf37dfde45d096974c7a159b52eeabd9969135f0426907db367a652a"}, + {file = "pycryptodome-3.20.0-pp27-pypy_73-win32.whl", hash = "sha256:ec1f93feb3bb93380ab0ebf8b859e8e5678c0f010d2d78367cf6bc30bfeb148e"}, + {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:acae12b9ede49f38eb0ef76fdec2df2e94aad85ae46ec85be3648a57f0a7db04"}, + {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f47888542a0633baff535a04726948e876bf1ed880fddb7c10a736fa99146ab3"}, + {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e0e4a987d38cfc2e71b4a1b591bae4891eeabe5fa0f56154f576e26287bfdea"}, + {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c18b381553638414b38705f07d1ef0a7cf301bc78a5f9bc17a957eb19446834b"}, + {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a60fedd2b37b4cb11ccb5d0399efe26db9e0dd149016c1cc6c8161974ceac2d6"}, + {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:405002eafad114a2f9a930f5db65feef7b53c4784495dd8758069b89baf68eab"}, + {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ab6ab0cb755154ad14e507d1df72de9897e99fd2d4922851a276ccc14f4f1a5"}, + {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:acf6e43fa75aca2d33e93409f2dafe386fe051818ee79ee8a3e21de9caa2ac9e"}, + {file = "pycryptodome-3.20.0.tar.gz", hash = "sha256:09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7"}, ] [[package]] name = "pyjwt" -version = "2.7.0" +version = "2.8.0" description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.7" files = [ - {file = "PyJWT-2.7.0-py3-none-any.whl", hash = "sha256:ba2b425b15ad5ef12f200dc67dd56af4e26de2331f965c5439994dad075876e1"}, - {file = "PyJWT-2.7.0.tar.gz", hash = "sha256:bd6ca4a3c4285c1a2d4349e5a035fdf8fb94e04ccd0fcbe6ba289dae9cc3e074"}, + {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, + {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, ] [package.extras] @@ -2292,24 +2288,6 @@ soap = ["zeep"] soap-alt = ["suds"] soap-fallback = ["PySimpleSOAP"] -[[package]] -name = "python-u2flib-server" -version = "4.0.1" -description = "Python based U2F server library" -optional = false -python-versions = "*" -files = [ - {file = "python-u2flib-server-4.0.1.tar.gz", hash = "sha256:160425fe00407b06ce261a7d3c455a6a529ed73f71cfea1b436b573e1dff000b"}, -] - -[package.dependencies] -cryptography = ">=1.2" -enum34 = "*" - -[package.extras] -u2f-server = ["WebOb", "argparse"] -yubiauth-server = ["WebOb", "yubiauth"] - [[package]] name = "pytz" version = "2024.1" @@ -2403,17 +2381,17 @@ files = [ [[package]] name = "redis" -version = "4.6.0" +version = "5.0.2" description = "Python client for Redis database and key-value store" optional = false python-versions = ">=3.7" files = [ - {file = "redis-4.6.0-py3-none-any.whl", hash = "sha256:e2b03db868160ee4591de3cb90d40ebb50a90dd302138775937f6a42b7ed183c"}, - {file = "redis-4.6.0.tar.gz", hash = "sha256:585dc516b9eb042a619ef0a39c3d7d55fe81bdb4df09a52c9cdde0d07bf1aa7d"}, + {file = "redis-5.0.2-py3-none-any.whl", hash = "sha256:4caa8e1fcb6f3c0ef28dba99535101d80934b7d4cd541bbb47f4a3826ee472d1"}, + {file = "redis-5.0.2.tar.gz", hash = "sha256:3f82cc80d350e93042c8e6e7a5d0596e4dd68715babffba79492733e1f367037"}, ] [package.dependencies] -async-timeout = {version = ">=4.0.2", markers = "python_full_version <= \"3.11.2\""} +async-timeout = ">=4.0.3" [package.extras] hiredis = ["hiredis (>=1.0.0)"] @@ -2436,13 +2414,13 @@ rpds-py = ">=0.7.0" [[package]] name = "reportlab" -version = "4.0.9" +version = "4.1.0" description = "The Reportlab Toolkit" optional = false python-versions = ">=3.7,<4" files = [ - {file = "reportlab-4.0.9-py3-none-any.whl", hash = "sha256:c9656216321897486e323be138f7aea67851cedc116b8cc35f8ec7f8cc763538"}, - {file = "reportlab-4.0.9.tar.gz", hash = "sha256:f32bff66a0fda234202e1e33eaf77f25008871a61cb01cd91584a521a04c0047"}, + {file = "reportlab-4.1.0-py3-none-any.whl", hash = "sha256:28a40d5000afbd8ccae15a47f7abe2841768461354bede1a9d42841132997c98"}, + {file = "reportlab-4.1.0.tar.gz", hash = "sha256:3a99faf412691159c068b3ff01c15307ce2fd2cf6b860199434874e002040a84"}, ] [package.dependencies] @@ -2645,13 +2623,13 @@ files = [ [[package]] name = "sentry-sdk" -version = "1.15.0" +version = "1.40.6" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.15.0.tar.gz", hash = "sha256:69ecbb2e1ff4db02a06c4f20f6f69cb5dfe3ebfbc06d023e40d77cf78e9c37e7"}, - {file = "sentry_sdk-1.15.0-py2.py3-none-any.whl", hash = "sha256:7ad4d37dd093f4a7cb5ad804c6efe9e8fab8873f7ffc06042dc3f3fd700a93ec"}, + {file = "sentry-sdk-1.40.6.tar.gz", hash = "sha256:f143f3fb4bb57c90abef6e2ad06b5f6f02b2ca13e4060ec5c0549c7a9ccce3fa"}, + {file = "sentry_sdk-1.40.6-py2.py3-none-any.whl", hash = "sha256:becda09660df63e55f307570e9817c664392655a7328bbc414b507e9cb874c67"}, ] [package.dependencies] @@ -2660,18 +2638,24 @@ urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""} [package.extras] aiohttp = ["aiohttp (>=3.5)"] +arq = ["arq (>=0.23)"] +asyncpg = ["asyncpg (>=0.23)"] beam = ["apache-beam (>=2.12)"] bottle = ["bottle (>=0.12.13)"] celery = ["celery (>=3)"] chalice = ["chalice (>=1.16.0)"] +clickhouse-driver = ["clickhouse-driver (>=0.2.0)"] django = ["django (>=1.8)"] falcon = ["falcon (>=1.4)"] fastapi = ["fastapi (>=0.79.0)"] -flask = ["blinker (>=1.1)", "flask (>=0.11)"] +flask = ["blinker (>=1.1)", "flask (>=0.11)", "markupsafe"] +grpcio = ["grpcio (>=1.21.1)"] httpx = ["httpx (>=0.16.0)"] huey = ["huey (>=2)"] +loguru = ["loguru (>=0.5)"] opentelemetry = ["opentelemetry-distro (>=0.35b0)"] -pure-eval = ["asttokens", "executing", "pure-eval"] +opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"] +pure-eval = ["asttokens", "executing", "pure_eval"] pymongo = ["pymongo (>=3.1)"] pyspark = ["pyspark (>=2.4.4)"] quart = ["blinker (>=1.1)", "quart (>=0.16.1)"] @@ -2996,21 +2980,20 @@ files = [ [[package]] name = "webauthn" -version = "0.4.7" -description = "A WebAuthn Python module." +version = "2.0.0" +description = "Pythonic WebAuthn" optional = false python-versions = "*" files = [ - {file = "webauthn-0.4.7-py2.py3-none-any.whl", hash = "sha256:238391b2e2cc60fb51a2cd2d2d6be149920b9af6184651353d9f95856617a9e7"}, - {file = "webauthn-0.4.7.tar.gz", hash = "sha256:8ad9072ff1d6169f3be30d4dc8733ea563dd266962397bc58b40f674a6af74ac"}, + {file = "webauthn-2.0.0-py3-none-any.whl", hash = "sha256:644dc68af5caaade06be6a2a2278775e85116e92dd755ad7a49d992d51c82033"}, + {file = "webauthn-2.0.0.tar.gz", hash = "sha256:12cc1759da98668b8242badc37c4129df300f89d89f5c183fac80e7b33c41dfd"}, ] [package.dependencies] -cbor2 = ">=4.0.1" -cryptography = ">=2.3.1" -future = ">=0.17.1" -pyOpenSSL = ">=16.0.0" -six = ">=1.11.0" +asn1crypto = ">=1.4.0" +cbor2 = ">=5.4.6" +cryptography = ">=41.0.7" +pyOpenSSL = ">=23.3.0" [[package]] name = "webencodings" @@ -3190,4 +3173,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "c766a0dcecee2fdceb93eb95222197e196f55120b33bb4a4e41416a46e8bd301" +content-hash = "e9fc7007f6697e279758c9460ed3ac584b006ff6dae76244fd7790c44bcdd71a" diff --git a/pkgs/pretix/pretix-static.nix b/pkgs/pretix/pretix-static.nix index 984ea71..7ef6129 100644 --- a/pkgs/pretix/pretix-static.nix +++ b/pkgs/pretix/pretix-static.nix @@ -8,7 +8,7 @@ let nodeEnv = buildNpmPackage rec { name = "pretix-nodejs"; src = "${pretix.passthru.pythonModule.pkgs.pretix}/lib/${pretix.python.libPrefix}/site-packages/pretix/static/npm_dir"; - npmDepsHash = "sha256-J+HsQijfE+L/sa28+ISyMDgjjKvSHe3J2bOe/QYHbnc="; + npmDepsHash = "sha256-kE13dcTdWZZNHPMcHEiK0a2dEcu3Z3/q815YhaVkLbQ="; dontNpmBuild = true; installPhase = '' mkdir -p $out diff --git a/pkgs/pretix/pyproject.toml b/pkgs/pretix/pyproject.toml index 18c2b8d..1712267 100644 --- a/pkgs/pretix/pyproject.toml +++ b/pkgs/pretix/pyproject.toml @@ -7,7 +7,7 @@ license = "MIT" [tool.poetry.dependencies] python = "^3.10" -pretix = "^2024.1.1" +pretix = "^2024.2.0" [tool.poetry.dev-dependencies] From 4170e91ab8ef85236fa0e0b39001913b9664cbf6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 2 Mar 2024 00:20:05 +0000 Subject: [PATCH 047/562] Reduce gunicorn workers as the VM will be scaled down to Hetzner CAX11 (2 Cores, 4GiB RAM) --- hosts/weinturm-pretix-prod/services/pretix.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/weinturm-pretix-prod/services/pretix.nix b/hosts/weinturm-pretix-prod/services/pretix.nix index 78c7026..9c93e6a 100644 --- a/hosts/weinturm-pretix-prod/services/pretix.nix +++ b/hosts/weinturm-pretix-prod/services/pretix.nix @@ -30,7 +30,7 @@ in "mail@jalr.de" ]; }; - gunicornWorkers = 32; + gunicornWorkers = 4; }; services.nginx = { From 6069d6376eb45b8824616bf817939deaa314abf2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 5 Mar 2024 17:33:11 +0000 Subject: [PATCH 048/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:nixos/nixpkgs/c8e74c2f83fe12b4e5a8bd1abbc090575b0f7611' (2024-02-28) → 'github:nixos/nixpkgs/617579a787259b9a6419492eaac670a5f7663917' (2024-03-04) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/bf82777340bcb9b01ebfc8e18994a67724ce78bb' (2024-02-29) → 'github:NixOS/nixpkgs/0cfd293af3249b214085553e0ef053141f32099a' (2024-03-05) • Updated input 'nur': 'github:nix-community/NUR/c52cf9478c981de340151638d76c3c2371eb9ebe' (2024-02-29) → 'github:nix-community/NUR/c715d34e7040f934a2edfa7024a1f04e86536b9e' (2024-03-05) • Updated input 'sops-nix': 'github:Mic92/sops-nix/a1c8de14f60924fafe13aea66b46157f0150f4cf' (2024-02-26) → 'github:Mic92/sops-nix/291aad29b59ceda517a06e59809f35cb0bb17c6b' (2024-03-04) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/89a2a12e6c8c6a56c72eb3589982c8e2f89c70ea' (2024-02-25) → 'github:NixOS/nixpkgs/66d65cb00b82ffa04ee03347595aa20e41fe3555' (2024-03-03) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index f9d14cc..fdc15ec 100644 --- a/flake.lock +++ b/flake.lock @@ -202,11 +202,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1708819810, - "narHash": "sha256-1KosU+ZFXf31GPeCBNxobZWMgHsSOJcrSFA6F2jhzdE=", + "lastModified": 1709428628, + "narHash": "sha256-//ZCCnpVai/ShtO2vPjh3AWgo8riXCaret6V9s7Hew4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "89a2a12e6c8c6a56c72eb3589982c8e2f89c70ea", + "rev": "66d65cb00b82ffa04ee03347595aa20e41fe3555", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1709227968, - "narHash": "sha256-sH6Kn4cVVns68Q9aozD6njzz1LuyXjSAFlldKa2wBkY=", + "lastModified": 1709659624, + "narHash": "sha256-oVFPjAfRFpAXZJDz1Ta4SAbaL73fxctCBdFC5vZF504=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bf82777340bcb9b01ebfc8e18994a67724ce78bb", + "rev": "0cfd293af3249b214085553e0ef053141f32099a", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1709128929, - "narHash": "sha256-GWrv9a+AgGhG4/eI/CyVVIIygia7cEy68Huv3P8oyaw=", + "lastModified": 1709569716, + "narHash": "sha256-iOR44RU4jQ+YPGrn+uQeYAp7Xo7Z/+gT+wXJoGxxLTY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c8e74c2f83fe12b4e5a8bd1abbc090575b0f7611", + "rev": "617579a787259b9a6419492eaac670a5f7663917", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1709225079, - "narHash": "sha256-2bmOKg/aIgmguPZz3OwjG5lCAGaLwM9ubBkXjcp7edU=", + "lastModified": 1709649736, + "narHash": "sha256-HRrzvBWIRQlSN4joPI+rroqtEPWEcZK/ETY4cAkDwOs=", "owner": "nix-community", "repo": "NUR", - "rev": "c52cf9478c981de340151638d76c3c2371eb9ebe", + "rev": "c715d34e7040f934a2edfa7024a1f04e86536b9e", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1708987867, - "narHash": "sha256-k2lDaDWNTU5sBVHanYzjDKVDmk29RHIgdbbXu5sdzBA=", + "lastModified": 1709591996, + "narHash": "sha256-0sQcalXSgqlO6mnxBTXkSQChBHy2GQsokB1XY8r+LpQ=", "owner": "Mic92", "repo": "sops-nix", - "rev": "a1c8de14f60924fafe13aea66b46157f0150f4cf", + "rev": "291aad29b59ceda517a06e59809f35cb0bb17c6b", "type": "github" }, "original": { From c685c71b8df916d3ce963d0374b57fc9862cc2f1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 5 Mar 2024 19:40:44 +0000 Subject: [PATCH 049/562] Add PHP language server --- home-manager/modules/neovim.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/home-manager/modules/neovim.nix b/home-manager/modules/neovim.nix index 09b05a3..e187e32 100644 --- a/home-manager/modules/neovim.nix +++ b/home-manager/modules/neovim.nix @@ -110,6 +110,11 @@ cmd = [ "${pkgs.rnix-lsp}/bin/rnix-lsp" ]; }; + # PHP + phpactor = { + cmd = [ "${pkgs.phpactor}/bin/phpactor" "language-server" ]; + }; + # Python pylsp = { cmd = [ "${pkgs.python3Packages.python-lsp-server}/bin/pylsp" ]; From d0ffc383167321ec86c4c3bcd850d70152e06433 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 5 Mar 2024 19:41:00 +0000 Subject: [PATCH 050/562] Add lsp_signature plugin --- home-manager/modules/neovim.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/home-manager/modules/neovim.nix b/home-manager/modules/neovim.nix index e187e32..36cac80 100644 --- a/home-manager/modules/neovim.nix +++ b/home-manager/modules/neovim.nix @@ -79,6 +79,12 @@ vim-nix vim-puppet vim-terraform + ( + lib.mkIf nixosConfig.jalr.workstation.enable { + plugin = lsp_signature-nvim; + config = "lua require('lsp_signature').setup()"; + } + ) ]; }; @@ -133,6 +139,7 @@ jedi_signature_help = { enabled = true; }; jedi_symbols = { enabled = true; }; mccabe = { enabled = true; }; + lsp_signature-nvim = { enabled = true; }; preload = { enabled = true; }; pycodestyle = { enabled = true; }; pyflakes = { enabled = true; }; From 4e52bd17561c1e87b42c89be9047a254a96bd8e9 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 10 Mar 2024 08:54:56 +0000 Subject: [PATCH 051/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:nixos/nixpkgs/617579a787259b9a6419492eaac670a5f7663917' (2024-03-04) → 'github:nixos/nixpkgs/b94a96839afcc56de3551aa7472b8d9a3e77e05d' (2024-03-09) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/0cfd293af3249b214085553e0ef053141f32099a' (2024-03-05) → 'github:NixOS/nixpkgs/7e0c071ac153adc8a3157042e5f474682c86a991' (2024-03-10) • Updated input 'nur': 'github:nix-community/NUR/c715d34e7040f934a2edfa7024a1f04e86536b9e' (2024-03-05) → 'github:nix-community/NUR/0fc60d25043f9cda4549e6656fea6787cbdd095f' (2024-03-10) • Updated input 'sops-nix': 'github:Mic92/sops-nix/291aad29b59ceda517a06e59809f35cb0bb17c6b' (2024-03-04) → 'github:Mic92/sops-nix/f8d5c8baa83fe620a28c0db633be9db3e34474b4' (2024-03-10) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/66d65cb00b82ffa04ee03347595aa20e41fe3555' (2024-03-03) → 'github:NixOS/nixpkgs/b17375d3bb7c79ffc52f3538028b2ec06eb79ef8' (2024-03-10) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index fdc15ec..f1825d0 100644 --- a/flake.lock +++ b/flake.lock @@ -202,11 +202,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1709428628, - "narHash": "sha256-//ZCCnpVai/ShtO2vPjh3AWgo8riXCaret6V9s7Hew4=", + "lastModified": 1710033658, + "narHash": "sha256-yiZiVKP5Ya813iYLho2+CcFuuHpaqKc/CoxOlANKcqM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "66d65cb00b82ffa04ee03347595aa20e41fe3555", + "rev": "b17375d3bb7c79ffc52f3538028b2ec06eb79ef8", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1709659624, - "narHash": "sha256-oVFPjAfRFpAXZJDz1Ta4SAbaL73fxctCBdFC5vZF504=", + "lastModified": 1710059092, + "narHash": "sha256-an7XPS5txBKuFQa4MeJ+WbrWusfuY0sb2wx+SbPGnNA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0cfd293af3249b214085553e0ef053141f32099a", + "rev": "7e0c071ac153adc8a3157042e5f474682c86a991", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1709569716, - "narHash": "sha256-iOR44RU4jQ+YPGrn+uQeYAp7Xo7Z/+gT+wXJoGxxLTY=", + "lastModified": 1710021367, + "narHash": "sha256-FuMVdWqXMT38u1lcySYyv93A7B8wU0EGzUr4t4jQu8g=", "owner": "nixos", "repo": "nixpkgs", - "rev": "617579a787259b9a6419492eaac670a5f7663917", + "rev": "b94a96839afcc56de3551aa7472b8d9a3e77e05d", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1709649736, - "narHash": "sha256-HRrzvBWIRQlSN4joPI+rroqtEPWEcZK/ETY4cAkDwOs=", + "lastModified": 1710060343, + "narHash": "sha256-63QQVGm3/VoSsnpFeW/zEP//HJ+C1qR9ZOqMguCsqSc=", "owner": "nix-community", "repo": "NUR", - "rev": "c715d34e7040f934a2edfa7024a1f04e86536b9e", + "rev": "0fc60d25043f9cda4549e6656fea6787cbdd095f", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1709591996, - "narHash": "sha256-0sQcalXSgqlO6mnxBTXkSQChBHy2GQsokB1XY8r+LpQ=", + "lastModified": 1710039806, + "narHash": "sha256-vC2fo/phnetp6ub/nRv6mgAi5LbhJ6ujGQWrRD2VgNs=", "owner": "Mic92", "repo": "sops-nix", - "rev": "291aad29b59ceda517a06e59809f35cb0bb17c6b", + "rev": "f8d5c8baa83fe620a28c0db633be9db3e34474b4", "type": "github" }, "original": { From 224c9388698045db6f7afc702f09530440fc6271 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 10 Mar 2024 19:03:47 +0000 Subject: [PATCH 052/562] Fix esphome build issues The package from nixpkgs master seems to fix the build issues. --- hosts/iron/services/esphome/default.nix | 62 ++++++++++++++----------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/hosts/iron/services/esphome/default.nix b/hosts/iron/services/esphome/default.nix index 73af2f2..aec1058 100644 --- a/hosts/iron/services/esphome/default.nix +++ b/hosts/iron/services/esphome/default.nix @@ -2,7 +2,6 @@ args@{ lib, pkgs, config, custom-utils, ... }: let ports = import ../../ports.nix args; cfg = config.services.esphome; - stateDir = "/var/lib/esphome"; devices = [ ./yeelight-meteorite.yaml ]; @@ -13,7 +12,6 @@ let installPhase = '' mkdir $out cp -r * $out - ln -snf "${config.sops.secrets.esphome.path}" "$out/secrets.yaml" ''; }; esphomeParams = @@ -33,31 +31,43 @@ in enable = true; address = "127.0.0.1"; port = ports.esphome.tcp; - package = pkgs.esphome.overrideAttrs (attrs: { - makeWrapperArgs = attrs.makeWrapperArgs ++ [ - "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ pkgs.stdenv.cc.cc.lib ]}" - ]; - }); + package = pkgs.master.esphome; + #package = pkgs.esphome.overrideAttrs (attrs: { + # makeWrapperArgs = attrs.makeWrapperArgs ++ [ + # "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ pkgs.stdenv.cc.cc.lib ]}" + # ]; + #}); }; - system.activationScripts.esphome-custom = { - deps = [ "users" "groups" ]; - text = '' - ${pkgs.rsync}/bin/rsync \ - -a \ - --delete \ - --exclude=.esphome \ - --exclude=.platformio \ - --exclude=.gitignore \ - "${cfgdir}/" "${stateDir}/" - mkdir -p \ - "${stateDir}/.esphome" \ - "${stateDir}/.platformio" - touch "${stateDir}/.gitignore" - chown esphome:esphome \ - "${stateDir}/" \ - "${stateDir}/.esphome" \ - "${stateDir}/.platformio" - ''; + systemd.services.esphome = { + environment = { + "PLATFORMIO_CORE_DIR" = lib.mkForce "/tmp/.platformio"; + }; + serviceConfig = { + BindPaths = [ + "/var/lib/esphome" + "/var/lib/private/esphome" + ]; + BindReadOnlyPaths = [ + "/nix/store" + "${cfgdir}" + ]; + DeviceAllow = [ + "char-ttyACM rw" + "char-ttyAMA rw" + "char-ttyUSB rw" + ]; + ExecStartPre = [ + "${pkgs.rsync}/bin/rsync -a --delete --exclude=.esphome --exclude=.platformio --exclude=.gitignore '${cfgdir}/' '/var/lib/esphome/'" + "${pkgs.coreutils}/bin/ln -snf '%d/secrets.yaml' '/var/lib/esphome/secrets.yaml'" + ]; + LoadCredential = "secrets.yaml:${config.sops.secrets.esphome.path}"; + PrivateTmp = true; + RootDirectory = "/run/esphome"; + RuntimeDirectory = "esphome"; + StateDirectory = "esphome"; + SupplementaryGroups = [ "dialout" ]; + WorkingDirectory = lib.mkForce "/tmp"; + }; }; } From 73a900614e10d33f4d0403bc100335bafe4c1541 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 10 Mar 2024 19:04:51 +0000 Subject: [PATCH 053/562] Rename temperature sensors --- hosts/iron/services/esphome/devices/kueche-leiste.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hosts/iron/services/esphome/devices/kueche-leiste.yaml b/hosts/iron/services/esphome/devices/kueche-leiste.yaml index ea6109d..de9d8cb 100644 --- a/hosts/iron/services/esphome/devices/kueche-leiste.yaml +++ b/hosts/iron/services/esphome/devices/kueche-leiste.yaml @@ -65,9 +65,12 @@ sensor: - platform: dht pin: GPIO5 temperature: - name: "Living Room Temperature" + name: "Temperatur" + id: temperature humidity: - name: "Living Room Humidity" + name: "Feuchtigkeit" + id: humidity + accuracy_decimals: 1 update_interval: 60s binary_sensor: From 23f067e7dfb100a40764095b01a0216bbbf25965 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 10 Mar 2024 19:07:28 +0000 Subject: [PATCH 054/562] Add heating --- hosts/iron/secrets.yaml | 6 +- .../esphome/devices/fussbodenheizung.yaml | 166 ++++++++++++++++++ 2 files changed, 169 insertions(+), 3 deletions(-) create mode 100644 hosts/iron/services/esphome/devices/fussbodenheizung.yaml diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index a41b39e..f863483 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -9,7 +9,7 @@ dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] -esphome: ENC[AES256_GCM,data:deY5RdItnZt7iJzSiHWvduRWqLTPt5ep70k/oLMjSanqYgAdWV/bGvod3I4bF2HdZymZjmeeGYo6lJCxJ7PwEfzhUGG6626wHhJ5VlfVThwqZ3mXkENdl/+aDyMtaxfaLTn3ygPewG/lAMY8Wn9beCTt4J6te5HlmHSp0VcFvLNl/m6F7nMdd1r1oaubvW7TPPe1+1jkpqphfd56bGYeEQArNEUCeCaXdtPCNZA/aEHZIYmmixuECdzTFTOreHBtG0pFMuAFrVsS3EZxMmnoMhAPrkhML2MSQnXLM2FGPd/FfeQzi9AMmiUqv55YGsJkuNXJs9x6ouU+JsjP876owFIKhB5VEEZAw9cqv/OFdjGboW2akjchZ5HROaofLfHjlVKy1PQwzbVwb8igHZE9PIFbk9O0Jb5fawoe9L9xp0jI6XrnHkgOFhv65uxogzYLFnMvTR8ZFJ02HPNGCh+eQECa5iuzTRb3OWCYls6si7RKGZgu1tE3HADVhqk6ViHckJLnlT1YABmnxoQiKovz1UIOE39e5Wl9m0XGC6OME37bJuSM3Sk24BBHQ36t3IverN3W9bhyhIQe4hw7PXuBVDCu4FJi1PDjmJwRWAWf5+BC1SFigSWDzunI55sX8zWCko9b75BKZoFfxKZminhFYwKTdtRdhbKPK8CIa9FcVf2eDmykhMvMmKVIm74d4yEXHjKt8Yww0x8TKEcqWIobMyPqlixpShaa7c73JgPfzkN0LYK4Da1Y+5MpZdUUypCe+R+Jwg/ROXZpGgwK7LFA2JHS71dq7nysHn5WhHFREPdVF558iiiOALCdMnvdUT6fU748Hx+KijYUl2Kax09l9sRkRsuCj7LRJ+ARDY/v8NlQJeXRIsyosg//DvejNJ5F7oMJK+H/sblTfCoY6SLp1WHAhywW6c5uBsGm1xLsdecfWok3sVv2qjQ5l2FPMvlXdp/0/RjxhLnvVYVTWzw=,iv:5Yybvm1eHbdJop6fGRmaW3Tnie3KHv21zVdWBZCUntA=,tag:7WDHLXkzWS8Dfs79u4Ur2A==,type:str] +esphome: ENC[AES256_GCM,data:mM7IJLUtLcEZpUDAXGEs5sddcNlcEz59o9LCavP3UPxrIuUrDuMPZ/PiLZfKZLeEDBtUUpGqCzDkki4VFZNNUr0ZDonqpQypQ7U/uedfMZvRei8jdsyMGuJ0V4e2rgNGvLhBI62Wh2wLEC1ct8fz8l8H6qKHvnh7ABV2uaCebKZ7ea6vdgjPmYVd5lyYBWcbIfLK+M4xnLsxHnJTl9S67xcw3lj7K9eGETTh6yzn78IdBMcfbtM5KMRlTr/OFACN3YIpaTp3Va/liSuHu9sljze++5QF/UYR9qayzDen0U64aLoUtkqD2kRKQs9Xb6KJJQID7HGBY7DXS4A1VL3KXN2I06hsp8dttgYT+wb4ZhvLdoGTkEj45wlTx7ZxdAGXBJfikpJveYp0IqboqpPHqGKhg08ZQG4yiDzqZzaODRiAIBDn9t1iwfpcJU4CoBIs2PpBQOyTMPIWQzcx27UZmoFogNEPQ+RV7pBE+pzjKyVnGxOEsp79w4nbXXmoDutIM5eFaGDGSIKpNwTfqXxk5IXIWMCYSZIzZHk0TI56UPlWZpyrBawlCAg0fy+y3oa8Bjg1GXVqhzhVNpeGOEk149wlzPpeEaKhA1lHAQ0k+KFtMKmyVPasMBnN/klZyIEm6/v0SteP3nXpDNgRgum7Pm8BrJkk9FUahluD/LbvgRgwOGaUvao4Yq/pGxR4Oyx0iRf7I9JLU/3UIDfL81QKKgY/U4UIrsWRWLsV3TdCglBs4WU52E/H3X5ZmNAAfzHoKtY149tvqPEKCv8mCfkm7ajb81cj4YFX8vLYKb89hbdGw7G2lhKdzenL2v2JNkOkmZqG0EGp+c9Doe333WWEix1IIE3uHh5SWCgtHUiB19Tc3+A122/9Bgbuvv9v/mb455asAQQLN3954s1x29OqkJvWXMIL7wxf0JA45OOcOPZfLVxzjvISxW1mMMYG21+aBDquj9Y9f95WAXDzXZfcgMKzkR0eUwkoF7dJ85Gl/cGF8fCp7U5WWXZRC9ORwR+W9hmF2Jj2DpCXhuAMy9/aC8F5Oz4fpZ/6NSlP5ywj+6nRhSQvbq7r8xzJO/uBRQtXTXoQmm+VXFeNkUkikh80B0GoKYS/QqtqYrsM,iv:PIJv3Gn7oJuA6BGul1EUKfBa1R9+fHTTMN787YaUMwM=,tag:4wC5yPLsxjRd58zSnoiZlg==,type:str] sops: kms: [] gcp_kms: [] @@ -25,8 +25,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-02-21T23:52:33Z" - mac: ENC[AES256_GCM,data:9J+48OtEbiDWJr1/+R+i4MhcR11QF6Z6FnmdMjEPl3YbaX9+pLgHwtWZNh3AOwhlUCLBeAMt0MkNvrckcq6D8brU2h9fuEJDk3ygLSUPgLs4WJT/rqNn5ZqnSVVtt70b+XK7WPJXqXE9dydXW/Y+TBADC+Es129wYJnZXMTSdGI=,iv:/7igkG2WhJi97cvBHstr88J8ed+67jnODRHagKghgHM=,tag:GtIKo9mMBXVW3eblglRccw==,type:str] + lastmodified: "2024-03-10T17:10:12Z" + mac: ENC[AES256_GCM,data:cjetZHtcYh+qe72Mv1PtQtK8vtQVRCSdqoXNmtv0Vy/I+gCwzVqxX2/DH+8KAirpfG7ctA9IxCX72uAPw/DEHyjhG/znZHma01XYrfU+sBS4wpguDOvunQDj/hoiAsOtZu/7IjkDfydaaCCtmBaqLcDCF5tps1Co88qqFlaL8iA=,iv:saNQjaI57dmLsnAJY1F7OGYfdocFZErkNtSkRWBW6Mg=,tag:gjkH73xCS30FDSPup4DdXw==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml new file mode 100644 index 0000000..30ff9ce --- /dev/null +++ b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml @@ -0,0 +1,166 @@ +esphome: + name: "fussbodenheizung" + friendly_name: "Fußbodenheizung" + +esp8266: + board: d1_mini + framework: + version: recommended + +logger: + +api: + encryption: + key: !secret apikey_fussbodenheizung + +ota: + password: !secret otapass_fussbodenheizung + +wifi: + ssid: !secret wifi_ssid_bw + password: !secret wifi_password_bw + domain: .iot.bw.jalr.de + enable_on_boot: True + fast_connect: On + +switch: + - platform: gpio + pin: + number: 16 + inverted: true + id: relay_1 + icon: "mdi:electric-switch" + - platform: gpio + pin: + number: 14 + inverted: true + id: relay_2 + icon: "mdi:electric-switch" + - platform: gpio + pin: + number: 12 + inverted: true + id: relay_3 + icon: "mdi:electric-switch" + - platform: gpio + pin: + number: 13 + inverted: true + id: relay_4 + icon: "mdi:electric-switch" + - platform: gpio + pin: + number: 0 + inverted: true + id: relay_5 + icon: "mdi:electric-switch" + +sensor: + - platform: dht + pin: GPIO2 + temperature: + name: "Temperatur" + id: temperature_local + humidity: + name: "Feuchtigkeit" + id: humidity + accuracy_decimals: 1 + update_interval: 60s + - platform: homeassistant + id: temperature_kitchen + entity_id: sensor.kueche_leiste_temperatur + - platform: homeassistant + id: humidity_kitchen + entity_id: sensor.kueche_leiste_feuchtigkeit + +climate: + #- platform: thermostat + # name: "Bad" + # #sensor: heating_livingroom + # #humidity_sensor: + # min_heating_off_time: 300s + # min_heating_run_time: 300s + # min_idle_time: 30s + # heat_action: + # - switch.turn_on: relay_1 + # idle_action: + # - switch.turn_off: relay_1 + # default_preset: zuhause + # on_boot_restore_from: memory + # preset: + # - name: zuhause + # default_target_temperature_low: 22 °C + # - name: abwesend + # default_target_temperature_low: 16 °C + #- platform: thermostat + # name: "Schlafzimmer" + # #sensor: heating_livingroom + # #humidity_sensor: + # min_heating_off_time: 300s + # min_heating_run_time: 300s + # min_idle_time: 30s + # heat_action: + # - switch.turn_on: relay_2 + # idle_action: + # - switch.turn_off: relay_2 + # default_preset: zuhause + # on_boot_restore_from: memory + # preset: + # - name: zuhause + # default_target_temperature_low: 16 °C + # - name: abwesend + # default_target_temperature_low: 15 °C + - platform: thermostat + name: "West" + sensor: temperature_kitchen + humidity_sensor: humidity_kitchen + min_heating_off_time: 300s + min_heating_run_time: 300s + min_idle_time: 30s + heat_action: + - switch.turn_on: relay_3 + idle_action: + - switch.turn_off: relay_3 + default_preset: zuhause + on_boot_restore_from: memory + preset: + - name: zuhause + default_target_temperature_low: 18 °C + - name: abwesend + default_target_temperature_low: 16 °C + - platform: thermostat + name: "Mitte" + sensor: temperature_local + humidity_sensor: humidity + min_heating_off_time: 300s + min_heating_run_time: 300s + min_idle_time: 30s + heat_action: + - switch.turn_on: relay_4 + idle_action: + - switch.turn_off: relay_4 + default_preset: zuhause + on_boot_restore_from: memory + preset: + - name: zuhause + default_target_temperature_low: 19 °C + - name: abwesend + default_target_temperature_low: 16 °C + - platform: thermostat + name: "Ost" + sensor: temperature_local # FIXME + #humidity_sensor: + min_heating_off_time: 300s + min_heating_run_time: 300s + min_idle_time: 30s + heat_action: + - switch.turn_on: relay_5 + idle_action: + - switch.turn_off: relay_5 + default_preset: zuhause + on_boot_restore_from: memory + preset: + - name: zuhause + default_target_temperature_low: 20 °C + - name: abwesend + default_target_temperature_low: 16 °C From 9f66b86503c4f2cc0b44a290e6ad3a8e71f11ca8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 15 Mar 2024 12:45:33 +0000 Subject: [PATCH 055/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'flake-utils': 'github:numtide/flake-utils/d465f4819400de7c8d874d50b982301f28a84605' (2024-02-28) → 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/30e3c3a9ec4ac8453282ca7f67fca9e1da12c3e6' (2024-01-15) → 'github:nix-community/gomod2nix/872b63ddd28f318489c929d25f1f0a3c6039c971' (2024-03-11) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/b94a96839afcc56de3551aa7472b8d9a3e77e05d' (2024-03-09) → 'github:nixos/nixpkgs/878ef7d9721bee9f81f8a80819f9211ad1f993da' (2024-03-14) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/7e0c071ac153adc8a3157042e5f474682c86a991' (2024-03-10) → 'github:NixOS/nixpkgs/4d1e5a2df3ddd73fdda863bf777824682b29e660' (2024-03-15) • Updated input 'nur': 'github:nix-community/NUR/0fc60d25043f9cda4549e6656fea6787cbdd095f' (2024-03-10) → 'github:nix-community/NUR/90155b2212a941712b74575db564c6afd24492b5' (2024-03-15) • Updated input 'sops-nix': 'github:Mic92/sops-nix/f8d5c8baa83fe620a28c0db633be9db3e34474b4' (2024-03-10) → 'github:Mic92/sops-nix/6c32d3b9c7593f4b466ec5404e59fc09a803a090' (2024-03-14) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index f1825d0..999cc9a 100644 --- a/flake.lock +++ b/flake.lock @@ -21,11 +21,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1709126324, - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "d465f4819400de7c8d874d50b982301f28a84605", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1705314449, - "narHash": "sha256-yfQQ67dLejP0FLK76LKHbkzcQqNIrux6MFe32MMFGNQ=", + "lastModified": 1710154385, + "narHash": "sha256-4c3zQ2YY4BZOufaBJB4v9VBBeN2dH7iVdoJw8SDNCfI=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "30e3c3a9ec4ac8453282ca7f67fca9e1da12c3e6", + "rev": "872b63ddd28f318489c929d25f1f0a3c6039c971", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1710059092, - "narHash": "sha256-an7XPS5txBKuFQa4MeJ+WbrWusfuY0sb2wx+SbPGnNA=", + "lastModified": 1710506697, + "narHash": "sha256-blAByi2E1j5GUsViapltMos6X6XNF8HosgLJwUNicCo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7e0c071ac153adc8a3157042e5f474682c86a991", + "rev": "4d1e5a2df3ddd73fdda863bf777824682b29e660", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1710021367, - "narHash": "sha256-FuMVdWqXMT38u1lcySYyv93A7B8wU0EGzUr4t4jQu8g=", + "lastModified": 1710420202, + "narHash": "sha256-MvFKESbq4rUWuaf2RKPNYENaSZEw/jaCLo2gU6oREcM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b94a96839afcc56de3551aa7472b8d9a3e77e05d", + "rev": "878ef7d9721bee9f81f8a80819f9211ad1f993da", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1710060343, - "narHash": "sha256-63QQVGm3/VoSsnpFeW/zEP//HJ+C1qR9ZOqMguCsqSc=", + "lastModified": 1710506669, + "narHash": "sha256-9m+oWHbBZi3c7YyiMs5hiOIqCG+WgP1sMA+s60AtWOU=", "owner": "nix-community", "repo": "NUR", - "rev": "0fc60d25043f9cda4549e6656fea6787cbdd095f", + "rev": "90155b2212a941712b74575db564c6afd24492b5", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1710039806, - "narHash": "sha256-vC2fo/phnetp6ub/nRv6mgAi5LbhJ6ujGQWrRD2VgNs=", + "lastModified": 1710433464, + "narHash": "sha256-IXlPoWgIRovZ32mYvqqdBgOQln71LouE/HBhbKc1wcw=", "owner": "Mic92", "repo": "sops-nix", - "rev": "f8d5c8baa83fe620a28c0db633be9db3e34474b4", + "rev": "6c32d3b9c7593f4b466ec5404e59fc09a803a090", "type": "github" }, "original": { From 78f4afb0fd1126d398614f72e0463944258f7e57 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 15 Mar 2024 15:47:09 +0000 Subject: [PATCH 056/562] Update fints endpoint --- hosts/weinturm-pretix-prod/secrets.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hosts/weinturm-pretix-prod/secrets.yaml b/hosts/weinturm-pretix-prod/secrets.yaml index 27523d8..2fba100 100644 --- a/hosts/weinturm-pretix-prod/secrets.yaml +++ b/hosts/weinturm-pretix-prod/secrets.yaml @@ -1,5 +1,5 @@ pretix-cfg: ENC[AES256_GCM,data:sfgKDr9aNOdwlumoltRuD7u1ksykFdEKtzt3MldjQnG0b4iAEspEhjcxqaNvPpXYm8EZKtsLBBQgdd1ifyQgs3k69c/GfzQ/jZ/yQ2OUkCO7U9A=,iv:FADYpPbGEEM/pD6EI85s9wVMv8yMrGJa+miE25XQ+t8=,tag:WJ9LHCNFHSr9RmmUi6hxnw==,type:str] -pretix-banktool-cfg: ENC[AES256_GCM,data:6tcaQwnXsA2jZYQD2BdGu7gVzlCE+cF03icOF7VIVY92+xWMw+aivJRocDQAMBslD04EoEAu74tNIcky23swtgJwbtcwSmouDqofzo/HoXrudNyvjECYd6xUzmq/OvSBSQVY3s3OxCcc0TlpPVUipDxcGaALwJdhtCB11ZrVfOoXrycZ3YLAEESK0rC4tc5E550lhxmkyOan1m9q9rI4KVhv4mIlU6nVQbDA7LcljRPAJESFmwuwx75t6uPYKH9CjaYL3XE/MmZIZ6pN3qiNyqEx8dsxWZh1KQI233TfMr6jcIXwamTFK6/yieE2nQJfyM8r8b3E3D4nJ5+nn5Cb+wxwewEPveEmFUsNXYD84fpk2fK0nvYyOi32++gfefObFVE2ejAE7iu3rIrboA/wJoSfPCDGHVtdLVXC//MjLI3JUAU+QMTwRFz53KhE+lxFsbqaX4IdLuUwMoFSW6qRWGe7/SGUChH1Wrj705MMc4dfn2qaGhDbZNkDJA==,iv:Pl8XpuGcFzLlzEVe+JQ02S2rthKz88QMZXkGEywpCTU=,tag:beSgKDPcErhJhoV59YDIsw==,type:str] +pretix-banktool-cfg: ENC[AES256_GCM,data:Dl84Wu/za3wXEGlPmuBKONRKhxr44R6Hd8N+Tumy2x4XU3u4sv4t7qIsMfJAqFnBiBW93Fi6xvyoh2q17Ey2cnuTaF2Ix+OTrLqgdvaREWzlYMv0jnHHCDm8SP30g0yf9QS7P0q79A+JmLKAmPTFCtMxF4iDyQqJe/jNjULDI8lOR47QqSwsOJh0gcZrwqGUPrK+Ru01ZsI1NCyiNO3HDy6IfK9oRm9GcI0qU1kA6RiP8NqngyIt2xLHctXdZhjxE35tTfo55OjlBX/twqSYch5PVMUkBbJlYdZ9TH60zeD+4e641g6c/BSPAYUy1knbtXEZ+RE3QU6IHtFhe72dcvurYFwPIOqqjp7gxsQXuLSH0MH4o5UWqOvRvrm8BdbfLoqk7RD//XYmJMmXE3WEZbZtfHPqg5b2wV0/66DlmVTT9ZODlLOGt4WxMYCfU6YlAZdJQ1OYLSvatdN2pR9GkdNVgwu2glK9nEmCjMBytBXOtSZ+4l8gYg9+lQ==,iv:Od3/+WLCp9ney/ZZDzShkVDvLgmduS/xdTVIs4DJv7Q=,tag:7UnV4YlEuotcEi44r6ZuWA==,type:str] sops: kms: [] gcp_kms: [] @@ -15,8 +15,8 @@ sops: MGh3UVh2R05WWDU3SDVFKzdvODRGQVUKo1u58Ra1dhAfBmv3xwLk/6+6/mFPJn0Z FyL7yjU6JMWzR/8FUv5lJAubudiZ8MnuH+10deGvQnT5AxG9fNzi5w== -----END AGE ENCRYPTED FILE----- - lastmodified: "2023-09-25T15:21:49Z" - mac: ENC[AES256_GCM,data:R3uP3tH4faLEtga0E2Gh4WrLrpV7dYvxWDEJkD5ycUc2vglY3MeswMEhNEhkD7cpYiWKB8TaBeBe/mP3hOmgs3WY1sDURZSqKKFT1FfTTL86e1BAOq7S4rG2lRQyNxxDjeJCqFQbEV3feggqPFnV8x8kBObAd29akAK5jQn1TK8=,iv:4F83RXiyLDlzlDVgMWKAOc7BTGSi4F0so9Ub/uzl+VM=,tag:2Q2BRBRR9yC6Uli5TcZhEg==,type:str] + lastmodified: "2024-03-15T15:46:51Z" + mac: ENC[AES256_GCM,data:W37WHI4w3BgCGuZ+wKtg6lqWxWKxjKuqy8OjpDmz9DTwSyvhVK3zt061Xw+HFDG7kPOKXzEb3Q+C9FjYU1B1V4GbBGHWtrVg0LSLs0KvQ0N+DhLkrbdRwvt/rLinXTgo7j4c/0w/YZQTQBrWEscZ3C2dhuTpFT+htjEFDhQKyhU=,iv:qRaM75MXCSfEfAIf1d2+uN1Sn/nAAHJUtKFAoiIOHBU=,tag:FjxJLH3cIZPLuCQNTlrqJQ==,type:str] pgp: - created_at: "2024-01-31T01:20:41Z" enc: |- @@ -30,4 +30,4 @@ sops: -----END PGP MESSAGE----- fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted - version: 3.7.3 + version: 3.8.1 From 40d071ba49dda0b3a0dd350c41733157925f50a7 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 17 Mar 2024 20:01:59 +0000 Subject: [PATCH 057/562] Add iot network --- hosts/aluminium/configuration.nix | 8 ++++++++ hosts/aluminium/services/dnsmasq.nix | 7 ++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/hosts/aluminium/configuration.nix b/hosts/aluminium/configuration.nix index e95c861..5201eee 100644 --- a/hosts/aluminium/configuration.nix +++ b/hosts/aluminium/configuration.nix @@ -26,6 +26,10 @@ in id = 2; interface = "enp1s0"; }; + iot = { + id = 3; + interface = "enp1s0"; + }; pv = { id = 10; interface = "enp1s0"; @@ -48,6 +52,10 @@ in address = "192.168.1.1"; prefixLength = 24; }]; + iot.ipv4.addresses = [{ + address = "192.168.2.1"; + prefixLength = 24; + }]; pv.ipv4.addresses = [{ address = "192.168.10.1"; prefixLength = 30; diff --git a/hosts/aluminium/services/dnsmasq.nix b/hosts/aluminium/services/dnsmasq.nix index 7d45fa8..db84b5a 100644 --- a/hosts/aluminium/services/dnsmasq.nix +++ b/hosts/aluminium/services/dnsmasq.nix @@ -10,14 +10,19 @@ in listen-address = [ "192.168.0.1" "192.168.1.1" + "192.168.2.1" "192.168.10.9" ]; interface = "lo"; expand-hosts = true; - domain = "lan.kbh.jalr.de"; + domain = [ + "lan.kbh.jalr.de,192.168.0.0/24" + "iot.kbh.jalr.de,192.168.2.0/24" + ]; dhcp-range = [ "192.168.0.20,192.168.0.254,4h" "192.168.1.20,192.168.1.254,4h" + "192.168.2.20,192.168.2.254,4h" "192.168.10.8,static,24h" ]; dhcp-host = [ From 7c4a6b263fa0e4d9bad5da1be8cfab6d309a2143 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 17 Mar 2024 20:06:14 +0000 Subject: [PATCH 058/562] Add home-assistant and esphome --- hosts/aluminium/ports.nix | 8 ++- hosts/aluminium/secrets.yaml | 7 ++- hosts/aluminium/services/default.nix | 3 + hosts/aluminium/services/esphome/default.nix | 62 ++++++++++++++++++ .../services/esphome/devices/wasserbett.yaml | 63 +++++++++++++++++++ hosts/aluminium/services/home-assistant.nix | 58 +++++++++++++++++ hosts/aluminium/services/nginx.nix | 20 ++++++ pkgs/default.nix | 1 + .../guntamatic.nix | 19 ++++++ 9 files changed, 236 insertions(+), 5 deletions(-) create mode 100644 hosts/aluminium/services/esphome/default.nix create mode 100644 hosts/aluminium/services/esphome/devices/wasserbett.yaml create mode 100644 hosts/aluminium/services/home-assistant.nix create mode 100644 hosts/aluminium/services/nginx.nix create mode 100644 pkgs/home-assistant-custom-components/guntamatic.nix diff --git a/hosts/aluminium/ports.nix b/hosts/aluminium/ports.nix index a259d6d..f1d126f 100644 --- a/hosts/aluminium/ports.nix +++ b/hosts/aluminium/ports.nix @@ -2,8 +2,12 @@ custom-utils.validatePortAttrset { asterisk-rtp = { udp.range = [ 10000 10200 ]; }; - unifi.tcp = 8443; doorbell-audiosocket.tcp = 9092; - doorbell-webrtc.tcp = 8889; doorbell-webrtc-ice.tcp = 8189; + doorbell-webrtc.tcp = 8889; + esphome.tcp = 6052; + home-assistant.tcp = 8123; + nginx-http.tcp = 80; + nginx-https.tcp = 443; + unifi.tcp = 8443; } diff --git a/hosts/aluminium/secrets.yaml b/hosts/aluminium/secrets.yaml index 01b9197..2ecd5a3 100644 --- a/hosts/aluminium/secrets.yaml +++ b/hosts/aluminium/secrets.yaml @@ -4,6 +4,7 @@ myintercom-doorbell-password: ENC[AES256_GCM,data:waUUvHQ9BZFePQ==,iv:ev21SNOwzd asterisk-pjsip: ENC[AES256_GCM,data:PMgHCdo7K1a9/OitWdUonJ66gr70uwYgylCCWAO9cYOeXdPTIFuFLHlgBIUUxfln3UqhquTzoTluZJW9vaSuzZGe1kLIYrb1hRyrM0HLCCQc8m46jN898le/9ZrEivxonWkxf4FTfpENIf7iEr5KHh4vfd4tr4IbORTFdpcbsy8pd5eyvS8G2z9dynIWS19zqrzfGrW6yZICzAJz28IQCiiHgpN16bqSwlcPm1UdX+qi0+ZJ3TAr16Px1F9VFOXtEsu4EZvJSomecJDuhjo3QzBFffXDL971of8KX05BJgtpP6SzIZXKfSWaOxaguctdFr2tScvze0o3FXpDoOn0cvinOdYQt1P2TzjFnBZ4I3N1turpD4be9xJ92coV/j1hBsZHj2mWE/iCdsrzj2uP/74b4Mo1BJZ6l1gXFg3OgyDXaVoMxAOnutelCEG0lf78hsJXF56aQ1LVSUly6ugZP4rMiPFg5oa7WfrIsVVURUt7WRFrDLCYIQVynpfeUxHshPSB+/jVvYLqie5XeNt8B8mgTJYFo5hFB28sa1beqYEA27QMT3gRvWivqDnuf8soVi/r3WREfnSCBujhzXQF/uJZEwqVEn0OQo9ICfJ8hqtvDiAw6Hb4Wn+0maoYQeKjbPHeL3kr1SUE/kU913FNig4Yn66QKYevLLIkd3uQ0GqTLcgn4Ttwu3qArlXXxrI4US8yA7XGQUutVadN7ayyZBbYnw+vUTlPfhSO+ridK3huGKnQfcPAbD31L11EeQBe2820Nba9Bb4d5QAkiGsNj5y9tZ4Vl6l2JErO63fVPKQ9fPxD3yYyZpP8Hm1e7Wl1eRsNtoWqkTRtno7hIpAYFoMYTUk2x5U/qZOgtRX0JHufi6+GXvPPlBaQNfiGzNlJjdmtTT6MGLPRQjsASGi00pSjKd4psAj9Uf8rttsHhJHvIRDRsiNSjae+JGbVlyyauU1JL44Qf+U+MaJDjkLagNqUZ9xgNFmXzr7st6bRFYCJHkmQC8bgJsdpwRMz3HjNzrKZRvRhHIiwT3d+oyrd9hoSQl3JkxcrD7AfEThrBQL9BpGCDcfr5RzfNv8Fb08tR7rlIzyb6Rw3eKlY1obfZRRNTF+iYlBDz8LLI+BwWqJiefbHB2F9nOC0of5Eqm5gjn+MXSKuSIP5ltDsjfO+m6q7c+t7udKwnJVnePtOnuf4uQpKfxjpld4e8Y1N9hyuKSjqEy83UB4yXJb1OoUAOXENvdPhGFDghmSC+ZVcCZRBG2k6d6MdXY6AkdjUAteDQLsDNMwpW8a8RwOXlDoAtxu7yEYP51BrHu2spagNfXMWHThnkcuR/TvqAPmcPlzVjcX+tnuU0k+JK5e4eWc+diTcvo8fpeaKi7A4uyGWRaZsoaauxsK1dEwIgmAAYyWc0Hl+Z49/dLW8kgr/Qh9N5SRRk/SLk4GvS0uyYYClN7G/7LdMDUwWifr32oqXEINDh0NEyehEJ9dEQsIIH5gR3OdlEAuL1C7/Js3/ZCdBREXRYt4y5y4TAO/kMmGgv7Y/Z2XVD0klXVBMvVnil4LJ0H5KF+RZC4j/C6acRBdrPaI0nlE3bfAbmizQN9D7jOj5BkkRzBaYlMaBuFKRKUA6CUanhUWhIn3ZlF3Z+o4PGB2c7EFXZN+PzOSgkQYUD7KtVW/QV94mxkcqN9mKe6mAbj87neN1IHhEkNOj7KJQP60pqDjx6N+WYFpD3sYvDcJDg2WFumR8F2v+jHx09v5AB1r6AzhPJ3TCwnHN4e1+Nexxlb91iPcoSmLRF3Fimn7307260CtaA70hngWHSRaBcKTXi3WL1v9kKOou2kKs1GMy5bjREtqheBxZ1i4x56VtANF9lo9UT+97qxuAqk08Rc4z9j5M8cJK/d1syRT0z/uAuTWlRgxdE/Fj/OlDNr/SnZw9CLkQ0SVJAuJFFg9EY0ru3PC9PDNt9CJiVy0GoeK0mv7ZkTv2o456kdzMpJPBwpKLIO9tpZBbNZrMn1HpLJrfXIvmuVDFmm3EH6FVhGoI+4yB11Eo/2aEMzUOEtn55KNeESkoVel6GgYiwrg1ZlQS7XhdCTGyCOMbFTOLHgUe4vaUfPBNOyLaLWE3ZiyGCxVb+nBltcPSDHrNtbc2fuPqVom3Z1wfmako1BGcwRzbLdaUPwuu6eRa/KxppPh/PoYTttPxOArql25BWAVTI6BIhlvGgZgqDRwihHBGt1uyXjwv4ufES5zgxhMB8mNqVnCSkcLXXyvpmCiB5kEv5+V4nCJIXSNbmym+V9tEzGh+cx8up24IHrg6gG28fHfMcV7Z+JzN86jogr+sgH9wigrcYcDqTE9lHJhaZlmNraTl8viAwEXkPC/dnQuPSTX5V1qeRtKo1oFkf9xnPhdVLq51GoVU+MhQqZsbnqymgKnPWTQq3Kyiux5go/Li0BqfiV+Wwpn+f3WXJ21aMpU2FfIR26z2DULlJUYDKoewmklq8vzk5iZ/tywPFGR1G0z8IM5jwr+qz0uEccAtulCWsQjtvw0kGLnTsoB2WNL4x0Kti/cE14purKaE65wMrBoG/mxd6R7ZHE7u/Uo1MDAsgqsS8MomCqyxC/1yH9BdhpXc6VZJpborqWQjW/kK8/OBxWFjfQgwvDGeQkgv2ShV0c8U6DgnS545Im9aAxQGvu1sXMhnVNQZdZ2Ta3Gz7bTHqkxB4/X7KGHdGSmw5s/RQfo0BkBBBLLTc49pcmJTxG5LPkRebCM8ANX57qj3u/D9wYumFKclTglNdrjaxSdh3zTb1kEQ0rn/D4z7lVNUsw7srUUZeEadg3xTZSmSustbziXvp51juiJeyPjVY2AlmbVVxU0O245kbyWA8lHcEluo+dfk0Rr9hDNHz35NxQRCslPHiSKswxfuPcqyzlSiBMLsMWrJ5/RyQJgaO/XJ/x3R2o4h+MiHtUKj91epxAIpYD8JqQ4eaUkP6GJRNDSNLK3VNP69Qecc7b6AvV5udzt2up0lp7OuzEZeT88Vg8YcZvOv1UTxmkI6dem1xi4imJs+V4OZrcSt9ZTlc34rc6/lvVxVQZs/1vADB0ZVk3jp24KWuRWFGacJqUIxW8TbI8N1DtmZcf7sqoQU1QPRzkOa/UYmzWablAP4B5M5WOjyr3YSJGOzHxN+GSSs4K4jHUon+LbpKxHL5KJUSsD+kZFTfsDauFhAzpFDhR2wW/XYLr0iTvKQ6+26dIpW65P8Egv+n/CXQE0wuJ1R5z0M4FucpUo+FTUIcww8cfqfHqMlMeKEFeu8/QNdZ0uj06Q8/j6E/OUjpxTIVRQBs4qaLWxMZv3zulCUe9Czr6c28NhewIJlLUxOnCVDo5pT1OmzZPghurNyhTBFP8PfJrRXN1h2uvXfGP46dgt9jgeqqQqP9xlq+fzo9cyEZ/n4nQvY+CBuOW9Cqo41zNB0PQ3tC9SU477gQkDrg0M6/bAk+xsqVg1DpZOSuRUQnOfbTdZ1CXhESy+dcri9BeKKcTCZ6aenvW4W4J6OV8en3L4jPFsgqEWJUk1qr9ggM5NXc7RIrR0eCsiR9V1gi4HWMF1roTZ3wK9NvdATj3HWTGssfdpXht/vjedIp+InNWBWjnBfIf7XWuPgiB/ZW9uew8g8vDLULGVtww==,iv:bFKc8e+3rLAHje8UWwY2elof5xqceTTWX1f7nkE91nM=,tag:NWMiljj8urTDoka5bkF0jg==,type:str] asterisk-ari: ENC[AES256_GCM,data:HnY7d3BdScb0bmsBVlsTHAMv2k8tyyA/,iv:q+NsCHcGGOCe6gdAHbFfjKvO4dyWoW/xI5jtngJmdds=,tag:e8kuEsEokf5lAAgO/coxTQ==,type:str] asterisk-voicemail: ENC[AES256_GCM,data:uyXeBP+9WkfVot4Ot3vwv3OEZfoVDK2I+lvaPpGJTZp16YNtP+uxNiW2ynewQlORCTY59bP1jW3bQdT/ASGsErOrhInYSytTyfdZ51BF9+jz0TH6oWxsSuuawTrkC8jvJOpejt6XuGoYbbqlM/VL1xzgDkq3ztTxaHTfdTonQij2Q4cYddMRHWIEuBCK7FU2TlHAJeIFZvtE0MiyNNT3rEWSs1xcljTGfMjkoMd+FI1uZSQT4r0kAaPPkvCWcAGH6R+F0Ue++i9TuLhu+sDV+X6u3N/garDW74H0bOcLJysImtuPXh1aXuBkHQuC1Liss/IF4NDjtDDhpfc0eePR5MWv/Kj0q+VFJiUPY6XnWh6fG9I2yY22+I7eAAg/xWVZBXPWbFHRz8jm1owp4ln6/hcrJOw6Fzw8tZ6Jd9nciOeOmR1KtjEzklPP5kP1YQPtGio/LnOaAAhTHy16MbWf/Ey4S30+eHB+joD8OM93+YxxrdKNE6XXEcAhkdpHYecrvz4Co1fhY7ZoOnNvA8Juup/7PMyNEU/Fy4Pta34aT/j1s7de2vTpRNBeecWvgFA9Qd7Re/2XPqOAkpduxDniwsUdb52oL39MBoOCY8brmXn2J/mMDeOmoqvjRHsPZsajPTAqF/nqRB8VpwoZAKAx59DYBGgmHz7/7JRX9NXOAus1yLbMfVqDftk6+KTFQ9wCqei3jaI/K5AJrSEwlZG0BLoDefIGXT5f8bNNgSn865j2RP+FLa6W3/u5t+k=,iv:/phktIxMdDO5Nrum7hf3oLDmQO04lrkvFuHNw77aRks=,tag:7OUg0BG9X7nBHWiQNaSOEQ==,type:str] +esphome: ENC[AES256_GCM,data:2pFVokO8YTyKa1F7EePo6wIS3y6prL8SSkxypWZkHl3Ye6Qg0eqZ4du/iwLIXQpJoc6R3uU7D6eIQEVOGbwqYp6+F0CW17F89k9c/VLHQHRpWbA20GgLr7X4fZ8xdbp7HCLpVxRsdzDz8aoARfV8Cn6T7Uo80ah1rMDnTj10WI+Yu6xVqVwPNWrSk9NUGKMK32M2slk=,iv:Xla0c4d9rxn06upy7GTbWBQ8pzl+gLnIw+Rf6hqQlhk=,tag:S+clc2ctuOA6lsInSFm93Q==,type:str] sops: kms: [] gcp_kms: [] @@ -19,8 +20,8 @@ sops: NEtzRXY1Q1Njelc1YXNWVE9Jd2NnOFEKjOWHaxO5fF5l+c1Hv6QLBQajrvu1VimZ Hqk0GYrFpfpFtbhBRyrYgmNuX/qIRMHemdXcNKDYcj0WXgsdVqH7Qw== -----END AGE ENCRYPTED FILE----- - lastmodified: "2023-11-06T23:32:51Z" - mac: ENC[AES256_GCM,data:7lW6i4ULus4348NwnV/ovcWebspBcEBzYqLtl+8xFOfe3erIFnC3iRo0ibZJ8yishZpIUxoVu08yxQoa1qEriC57WETMaR+iGUPaY75tHraBJGY26Etk7Hy2QhQ7D+srBY+CogHhHAD8HUwT4/ZiPqKe1eQAvNg/6HWnjbQkG/Q=,iv:r43odkYgQsyK5uJJ5V98kTx7enP7TRuFoTnYfHmD/8o=,tag:hR+1zCniHs1l3qSkhQhtFw==,type:str] + lastmodified: "2024-03-17T20:41:27Z" + mac: ENC[AES256_GCM,data:f7RdcXpu9CGSZpIF8rwuIkn97EWRxJXxoC7KKbkZg4yxSxZJR/S5UXzEC56eY73IdBHap4op3l+cO7pT7p1rkspHQPH/5D225ihVQ8PQ29u2nlyyrrebB5tM1Mt+rJRlizBPxDDKySJYgdqZCWUwB8f5hQudpb0CGra7NfQreRg=,iv:vwpVqib7fyuV83FiyMT4BOeuqyrcspFyieQGWyZZzcU=,tag:zuJVSA2WqzSvM4MBWrdRlQ==,type:str] pgp: - created_at: "2024-01-31T01:19:14Z" enc: |- @@ -34,4 +35,4 @@ sops: -----END PGP MESSAGE----- fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted - version: 3.7.3 + version: 3.8.1 diff --git a/hosts/aluminium/services/default.nix b/hosts/aluminium/services/default.nix index 9539fb7..7ce0f6e 100644 --- a/hosts/aluminium/services/default.nix +++ b/hosts/aluminium/services/default.nix @@ -4,6 +4,9 @@ ./dnsmasq.nix ./doorbell.nix ./dyndns.nix + ./esphome + ./home-assistant.nix + ./nginx.nix ./unifi-controller.nix ]; } diff --git a/hosts/aluminium/services/esphome/default.nix b/hosts/aluminium/services/esphome/default.nix new file mode 100644 index 0000000..b64c343 --- /dev/null +++ b/hosts/aluminium/services/esphome/default.nix @@ -0,0 +1,62 @@ +args@{ lib, pkgs, config, custom-utils, ... }: +let + ports = import ../../ports.nix args; + cfg = config.services.esphome; + cfgdir = pkgs.stdenvNoCC.mkDerivation { + name = "esphome-config"; + src = ./devices; + dontBuild = true; + installPhase = '' + mkdir $out + cp -r * $out + ''; + }; + esphomeParams = + if cfg.enableUnixSocket + then "--socket /run/esphome/esphome.sock" + else "--address ${cfg.address} --port ${toString cfg.port}"; +in +{ + sops.secrets.esphome = { + sopsFile = ../../secrets.yaml; + }; + + services.esphome = { + enable = true; + address = "127.0.0.1"; + port = ports.esphome.tcp; + package = pkgs.master.esphome; + }; + + systemd.services.esphome = { + environment = { + "PLATFORMIO_CORE_DIR" = lib.mkForce "/tmp/.platformio"; + }; + serviceConfig = { + BindPaths = [ + "/var/lib/esphome" + "/var/lib/private/esphome" + ]; + BindReadOnlyPaths = [ + "/nix/store" + "${cfgdir}" + ]; + DeviceAllow = [ + "char-ttyACM rw" + "char-ttyAMA rw" + "char-ttyUSB rw" + ]; + ExecStartPre = [ + "${pkgs.rsync}/bin/rsync -a --delete --exclude=.esphome --exclude=.platformio --exclude=.gitignore '${cfgdir}/' '/var/lib/esphome/'" + "${pkgs.coreutils}/bin/ln -snf '%d/secrets.yaml' '/var/lib/esphome/secrets.yaml'" + ]; + LoadCredential = "secrets.yaml:${config.sops.secrets.esphome.path}"; + PrivateTmp = true; + RootDirectory = "/run/esphome"; + RuntimeDirectory = "esphome"; + StateDirectory = "esphome"; + SupplementaryGroups = [ "dialout" ]; + WorkingDirectory = lib.mkForce "/tmp"; + }; + }; +} diff --git a/hosts/aluminium/services/esphome/devices/wasserbett.yaml b/hosts/aluminium/services/esphome/devices/wasserbett.yaml new file mode 100644 index 0000000..d40b52e --- /dev/null +++ b/hosts/aluminium/services/esphome/devices/wasserbett.yaml @@ -0,0 +1,63 @@ +esphome: + name: "waterbed" + friendly_name: "Wasserbett" + +esp8266: + board: d1_mini + framework: + version: recommended + +logger: + +api: + encryption: + key: !secret apikey_waterbed + +ota: + password: !secret otapass_waterbed + +wifi: + ssid: !secret wifi_ssid_kbh + password: !secret wifi_password_kbh + domain: .iot.kbh.jalr.de + enable_on_boot: true + fast_connect: true + +switch: + - platform: gpio + pin: + number: 13 + id: pump + icon: "mdi:electric-switch" + +dallas: + - pin: 12 + +sensor: + - platform: dallas + #address: 0xb7000802397ccc10 + index: 0 + name: "Temperatur" + id: temperature_waterbed + +climate: + - platform: thermostat + name: "Temperatur" + id: temperature + sensor: temperature_waterbed + heat_deadband: 0.2 + heat_overrun: 0.2 + min_heating_off_time: 300s + min_heating_run_time: 300s + min_idle_time: 30s + heat_action: + - switch.turn_on: pump + idle_action: + - switch.turn_off: pump + default_preset: heizen + on_boot_restore_from: memory + preset: + - name: heizen + default_target_temperature_low: 28.5 °C + - name: abwesend + default_target_temperature_low: 24 °C diff --git a/hosts/aluminium/services/home-assistant.nix b/hosts/aluminium/services/home-assistant.nix new file mode 100644 index 0000000..1a741d7 --- /dev/null +++ b/hosts/aluminium/services/home-assistant.nix @@ -0,0 +1,58 @@ +args@{ lib, pkgs, config, custom-utils, ... }: +let + ports = import ../ports.nix args; +in +{ + services.home-assistant = { + enable = true; + lovelaceConfig = { }; + extraComponents = [ + # See https://www.home-assistant.io/integrations + "esphome" + ]; + customComponents = [ + # https://github.com/a529987659852/GuntamaticBiostar + pkgs.home-assistant-custom-components.guntamatic + ]; + lovelaceConfigWritable = false; + configWritable = false; + config = { + http = { + server_host = [ "127.0.0.1" ]; + server_port = ports.home-assistant.tcp; + use_x_forwarded_for = true; + trusted_proxies = [ "127.0.0.1" ]; + }; + homeassistant = { + unit_system = "metric"; + time_zone = "Europe/Berlin"; + temperature_unit = "C"; + longitude = config.location.longitude; + latitude = config.location.latitude; + }; + default_config = { }; + "automation nix" = [ + ]; + "automation ui" = "!include automations.yaml"; + "scene nix" = [ + ]; + "scene ui" = "!include scenes.yaml"; + }; + }; + + systemd.tmpfiles.rules = [ + "f ${config.services.home-assistant.configDir}/automations.yaml 0755 hass hass" + "f ${config.services.home-assistant.configDir}/scenes.yaml 0755 hass hass" + ]; + + services.nginx.virtualHosts."hass.kbh.jalr.de" = { + enableACME = true; + forceSSL = true; + kTLS = true; + locations."/" = { + proxyPass = "http://127.0.0.1:${toString ports.home-assistant.tcp}/"; + recommendedProxySettings = true; + proxyWebsockets = true; + }; + }; +} diff --git a/hosts/aluminium/services/nginx.nix b/hosts/aluminium/services/nginx.nix new file mode 100644 index 0000000..71bdff2 --- /dev/null +++ b/hosts/aluminium/services/nginx.nix @@ -0,0 +1,20 @@ +args@{ pkgs, custom-utils, ... }: + +let + ports = import ../ports.nix args; +in +{ + services.nginx = { + enable = true; + defaultHTTPListenPort = ports.nginx-http.tcp; + defaultSSLListenPort = ports.nginx-https.tcp; + recommendedGzipSettings = true; + recommendedOptimisation = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + }; + networking.firewall.allowedTCPPorts = [ + 80 + 443 + ]; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index 1322ca8..5c352fe 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -31,5 +31,6 @@ in wofi-bluetooth = callPackage ./wofi-bluetooth/wofi-bluetooth.nix { }; home-assistant-custom-components = prev.recurseIntoAttrs { circadian_lighting = callPackage ./home-assistant-custom-components/circadian_lighting.nix { }; + guntamatic = callPackage ./home-assistant-custom-components/guntamatic.nix { }; }; } diff --git a/pkgs/home-assistant-custom-components/guntamatic.nix b/pkgs/home-assistant-custom-components/guntamatic.nix new file mode 100644 index 0000000..b7f86bb --- /dev/null +++ b/pkgs/home-assistant-custom-components/guntamatic.nix @@ -0,0 +1,19 @@ +{ lib +, fetchFromGitHub +, buildHomeAssistantComponent +}: + +buildHomeAssistantComponent rec { + owner = "a529987659852"; + domain = "GuntamaticBiostar"; + version = "0.2.8"; + + src = fetchFromGitHub { + owner = "a529987659852"; + repo = "GuntamaticBiostar"; + rev = "refs/tags/v${version}"; + hash = "sha256-edKt2LQzxaMXAIeJcBag85ksKPXOfgCENO4jBw9hkCQ="; + }; + + dontBuild = true; +} From 3d01b5c461634d63ab9c899a7d29f1fe4dcc57b8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 18 Mar 2024 09:32:14 +0000 Subject: [PATCH 059/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:nixos/nixpkgs/878ef7d9721bee9f81f8a80819f9211ad1f993da' (2024-03-14) → 'github:nixos/nixpkgs/614b4613980a522ba49f0d194531beddbb7220d3' (2024-03-17) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/4d1e5a2df3ddd73fdda863bf777824682b29e660' (2024-03-15) → 'github:NixOS/nixpkgs/a1c4f0a754752ad00277eeeb7b712e2eb05b9b3c' (2024-03-18) • Updated input 'nur': 'github:nix-community/NUR/90155b2212a941712b74575db564c6afd24492b5' (2024-03-15) → 'github:nix-community/NUR/05351320d5ece2eb43cbd991edd4d1f56f5ca17f' (2024-03-18) • Updated input 'sops-nix': 'github:Mic92/sops-nix/6c32d3b9c7593f4b466ec5404e59fc09a803a090' (2024-03-14) → 'github:Mic92/sops-nix/83b68a0e8c94b72cdd0a6e547a14ca7eb1c03616' (2024-03-17) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/b17375d3bb7c79ffc52f3538028b2ec06eb79ef8' (2024-03-10) → 'github:NixOS/nixpkgs/6dc11d9859d6a18ab0c5e5829a5b8e4810658de3' (2024-03-16) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 999cc9a..2e198ca 100644 --- a/flake.lock +++ b/flake.lock @@ -202,11 +202,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1710033658, - "narHash": "sha256-yiZiVKP5Ya813iYLho2+CcFuuHpaqKc/CoxOlANKcqM=", + "lastModified": 1710628718, + "narHash": "sha256-y+l3eH53UlENaYa1lmnCBHusZb1kxBEFd2/c7lDsGpw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b17375d3bb7c79ffc52f3538028b2ec06eb79ef8", + "rev": "6dc11d9859d6a18ab0c5e5829a5b8e4810658de3", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1710506697, - "narHash": "sha256-blAByi2E1j5GUsViapltMos6X6XNF8HosgLJwUNicCo=", + "lastModified": 1710754042, + "narHash": "sha256-Sq0AVqsrczN1VZCdtmtBxHNA5Kb3ecRK9Wow3EwlXQE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4d1e5a2df3ddd73fdda863bf777824682b29e660", + "rev": "a1c4f0a754752ad00277eeeb7b712e2eb05b9b3c", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1710420202, - "narHash": "sha256-MvFKESbq4rUWuaf2RKPNYENaSZEw/jaCLo2gU6oREcM=", + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", "owner": "nixos", "repo": "nixpkgs", - "rev": "878ef7d9721bee9f81f8a80819f9211ad1f993da", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1710506669, - "narHash": "sha256-9m+oWHbBZi3c7YyiMs5hiOIqCG+WgP1sMA+s60AtWOU=", + "lastModified": 1710750753, + "narHash": "sha256-MQ5haKyTNKAFTw3oDaShLHiECiD5DVV4HfmzN3l77Yk=", "owner": "nix-community", "repo": "NUR", - "rev": "90155b2212a941712b74575db564c6afd24492b5", + "rev": "05351320d5ece2eb43cbd991edd4d1f56f5ca17f", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1710433464, - "narHash": "sha256-IXlPoWgIRovZ32mYvqqdBgOQln71LouE/HBhbKc1wcw=", + "lastModified": 1710644594, + "narHash": "sha256-RquCuzxfy4Nr8DPbdp3D/AsbYep21JgQzG8aMH9jJ4A=", "owner": "Mic92", "repo": "sops-nix", - "rev": "6c32d3b9c7593f4b466ec5404e59fc09a803a090", + "rev": "83b68a0e8c94b72cdd0a6e547a14ca7eb1c03616", "type": "github" }, "original": { From 2bf323bc657249140a286716fb81e44ad0564ebb Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 22 Mar 2024 08:59:40 +0000 Subject: [PATCH 060/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'home-manager': 'github:nix-community/home-manager/652fda4ca6dafeb090943422c34ae9145787af37' (2024-02-03) → 'github:nix-community/home-manager/f33900124c23c4eca5831b9b5eb32ea5894375ce' (2024-03-19) • Updated input 'nix-pre-commit-hooks': 'github:cachix/pre-commit-hooks.nix/5df5a70ad7575f6601d91f0efec95dd9bc619431' (2024-02-15) → 'github:cachix/pre-commit-hooks.nix/e611897ddfdde3ed3eaac4758635d7177ff78673' (2024-03-20) • Updated input 'nix-pre-commit-hooks/gitignore': 'github:hercules-ci/gitignore.nix/43e1aa1308018f37118e34d3a9cb4f5e75dc11d5' (2023-12-29) → 'github:hercules-ci/gitignore.nix/637db329424fd7e46cf4185293b9cc8c88c95394' (2024-02-28) • Updated input 'nix-pre-commit-hooks/nixpkgs': 'github:NixOS/nixpkgs/eabe8d3eface69f5bb16c18f8662a702f50c20d5' (2024-01-09) → 'github:NixOS/nixpkgs/e367f7a1fb93137af22a3908f00b9a35e2d286a7' (2024-03-18) • Updated input 'nix-pre-commit-hooks/nixpkgs-stable': 'github:NixOS/nixpkgs/3dc440faeee9e889fe2d1b4d25ad0f430d449356' (2024-01-10) → 'github:NixOS/nixpkgs/614b4613980a522ba49f0d194531beddbb7220d3' (2024-03-17) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/614b4613980a522ba49f0d194531beddbb7220d3' (2024-03-17) → 'github:nixos/nixpkgs/f091af045dff8347d66d186a62d42aceff159456' (2024-03-20) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/a1c4f0a754752ad00277eeeb7b712e2eb05b9b3c' (2024-03-18) → 'github:NixOS/nixpkgs/5d0418785750709a7fa3139224de4965e87ae17b' (2024-03-22) • Updated input 'nur': 'github:nix-community/NUR/05351320d5ece2eb43cbd991edd4d1f56f5ca17f' (2024-03-18) → 'github:nix-community/NUR/c03e4bfa0dbd731210226d2b406c6b512107ed9e' (2024-03-22) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 2e198ca..8aa7838 100644 --- a/flake.lock +++ b/flake.lock @@ -42,11 +42,11 @@ ] }, "locked": { - "lastModified": 1703887061, - "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", "owner": "hercules-ci", "repo": "gitignore.nix", - "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { @@ -85,11 +85,11 @@ ] }, "locked": { - "lastModified": 1706981411, - "narHash": "sha256-cLbLPTL1CDmETVh4p0nQtvoF+FSEjsnJTFpTxhXywhQ=", + "lastModified": 1710888565, + "narHash": "sha256-s9Hi4RHhc6yut4EcYD50sZWRDKsugBJHSbON8KFwoTw=", "owner": "nix-community", "repo": "home-manager", - "rev": "652fda4ca6dafeb090943422c34ae9145787af37", + "rev": "f33900124c23c4eca5831b9b5eb32ea5894375ce", "type": "github" }, "original": { @@ -154,11 +154,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1708018599, - "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", + "lastModified": 1710923068, + "narHash": "sha256-6hOpUiuxuwpXXc/xfJsBUJeqqgGI+JMJuLo45aG3cKc=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", + "rev": "e611897ddfdde3ed3eaac4758635d7177ff78673", "type": "github" }, "original": { @@ -170,11 +170,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1704842529, - "narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { @@ -186,11 +186,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1704874635, - "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=", + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1710754042, - "narHash": "sha256-Sq0AVqsrczN1VZCdtmtBxHNA5Kb3ecRK9Wow3EwlXQE=", + "lastModified": 1711097850, + "narHash": "sha256-O7m2Qtp7by283tXt1m/vwPum5nKpE5srlalmLvGyZeU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a1c4f0a754752ad00277eeeb7b712e2eb05b9b3c", + "rev": "5d0418785750709a7fa3139224de4965e87ae17b", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "lastModified": 1710951922, + "narHash": "sha256-FOOBJ3DQenLpTNdxMHR2CpGZmYuctb92gF0lpiirZ30=", "owner": "nixos", "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "rev": "f091af045dff8347d66d186a62d42aceff159456", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1710750753, - "narHash": "sha256-MQ5haKyTNKAFTw3oDaShLHiECiD5DVV4HfmzN3l77Yk=", + "lastModified": 1711095683, + "narHash": "sha256-mLxazCxRu18EUFAAgQroruM83rdPH1mQvIaCAUtv/DQ=", "owner": "nix-community", "repo": "NUR", - "rev": "05351320d5ece2eb43cbd991edd4d1f56f5ca17f", + "rev": "c03e4bfa0dbd731210226d2b406c6b512107ed9e", "type": "github" }, "original": { From c9ea023a9ed1d60908e4c2ee9e9b08ebdba89b0f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 22 Mar 2024 16:58:04 +0000 Subject: [PATCH 061/562] Set default domain The default domain should be used for all networks, unless a specific domain is defined. --- hosts/aluminium/services/dnsmasq.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/aluminium/services/dnsmasq.nix b/hosts/aluminium/services/dnsmasq.nix index db84b5a..98e4056 100644 --- a/hosts/aluminium/services/dnsmasq.nix +++ b/hosts/aluminium/services/dnsmasq.nix @@ -16,7 +16,7 @@ in interface = "lo"; expand-hosts = true; domain = [ - "lan.kbh.jalr.de,192.168.0.0/24" + "lan.kbh.jalr.de" "iot.kbh.jalr.de,192.168.2.0/24" ]; dhcp-range = [ From 9c14761fac838e925c992a48d581423cb4ddd069 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 22 Mar 2024 16:59:10 +0000 Subject: [PATCH 062/562] Change ownership of secrets file since the secret is now passed via systemd credentials, it can still be read out if owned by root. --- hosts/iron/services/esphome/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/hosts/iron/services/esphome/default.nix b/hosts/iron/services/esphome/default.nix index aec1058..53a3c0f 100644 --- a/hosts/iron/services/esphome/default.nix +++ b/hosts/iron/services/esphome/default.nix @@ -22,9 +22,6 @@ in { sops.secrets.esphome = { sopsFile = ../../secrets.yaml; - owner = "esphome"; - group = "esphome"; - mode = "0400"; }; services.esphome = { From 8a9616fdea3156aaa11f19040d48c23e8620a206 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 28 Mar 2024 16:36:09 +0000 Subject: [PATCH 063/562] Enable experimental to enable reporting of devices' battery state --- modules/bluetooth.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/bluetooth.nix b/modules/bluetooth.nix index dc12711..4b3cf33 100644 --- a/modules/bluetooth.nix +++ b/modules/bluetooth.nix @@ -12,6 +12,7 @@ in services.blueman.enable = true; services.ofono.enable = true; services.upower.enable = true; + hardware.bluetooth.settings.General.Experimental = true; # to show battery state }; } From cb05c905ac338f6c8af8d112dff989483c7a98fc Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 28 Mar 2024 16:40:29 +0000 Subject: [PATCH 064/562] Add exiftool --- home-manager/modules/gui.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home-manager/modules/gui.nix b/home-manager/modules/gui.nix index 1ef15d5..35eb065 100644 --- a/home-manager/modules/gui.nix +++ b/home-manager/modules/gui.nix @@ -2,6 +2,7 @@ lib.mkIf nixosConfig.jalr.gui.enable { home.packages = with pkgs; [ evince + exiftool gcr # required for pinentry-gnome geeqie mpv From a4ac79709c77fc465c3c16daedaa8226a7f03961 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 28 Mar 2024 16:41:02 +0000 Subject: [PATCH 065/562] Remove workaround for stateVersion --- home-manager/users/jalr.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home-manager/users/jalr.nix b/home-manager/users/jalr.nix index 4428902..d8a735b 100644 --- a/home-manager/users/jalr.nix +++ b/home-manager/users/jalr.nix @@ -43,7 +43,7 @@ users.jalr = { lib, pkgs, ... }: { imports = [ ../modules ]; config = { - home.stateVersion = if config.system.stateVersion == "22.11" then "22.05" else config.system.stateVersion; + home.stateVersion = config.system.stateVersion; home.packages = with pkgs; [ cutecom From c1780f98775a97a9498ba9657592e3f4ed922723 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 28 Mar 2024 16:42:27 +0000 Subject: [PATCH 066/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nix-pre-commit-hooks': 'github:cachix/pre-commit-hooks.nix/e611897ddfdde3ed3eaac4758635d7177ff78673' (2024-03-20) → 'github:cachix/pre-commit-hooks.nix/7d47a32e5cd1ea481fab33c516356ce27c8cef4a' (2024-03-27) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/f091af045dff8347d66d186a62d42aceff159456' (2024-03-20) → 'github:nixos/nixpkgs/44733514b72e732bd49f5511bd0203dea9b9a434' (2024-03-26) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/5d0418785750709a7fa3139224de4965e87ae17b' (2024-03-22) → 'github:NixOS/nixpkgs/b2245daba6d9b667166b54921d370f937ca60902' (2024-03-28) • Updated input 'nur': 'github:nix-community/NUR/c03e4bfa0dbd731210226d2b406c6b512107ed9e' (2024-03-22) → 'github:nix-community/NUR/0ccb18994cca45444b862482fe4197717ea2cff4' (2024-03-28) • Updated input 'sops-nix': 'github:Mic92/sops-nix/83b68a0e8c94b72cdd0a6e547a14ca7eb1c03616' (2024-03-17) → 'github:Mic92/sops-nix/405987a66cce9a4a82f321f11b205982a7127c88' (2024-03-24) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/6dc11d9859d6a18ab0c5e5829a5b8e4810658de3' (2024-03-16) → 'github:NixOS/nixpkgs/ac6bdf6181666ebb4f90dd20f31e2fa66ede6b68' (2024-03-23) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 8aa7838..748f863 100644 --- a/flake.lock +++ b/flake.lock @@ -154,11 +154,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1710923068, - "narHash": "sha256-6hOpUiuxuwpXXc/xfJsBUJeqqgGI+JMJuLo45aG3cKc=", + "lastModified": 1711519547, + "narHash": "sha256-Q7YmSCUJmDl71fJv/zD9lrOCJ1/SE/okZ2DsrmRjzhY=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "e611897ddfdde3ed3eaac4758635d7177ff78673", + "rev": "7d47a32e5cd1ea481fab33c516356ce27c8cef4a", "type": "github" }, "original": { @@ -202,11 +202,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1710628718, - "narHash": "sha256-y+l3eH53UlENaYa1lmnCBHusZb1kxBEFd2/c7lDsGpw=", + "lastModified": 1711233294, + "narHash": "sha256-eEu5y4J145BYDw9o/YEmeJyqh8blgnZwuz9k234zuWc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6dc11d9859d6a18ab0c5e5829a5b8e4810658de3", + "rev": "ac6bdf6181666ebb4f90dd20f31e2fa66ede6b68", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1711097850, - "narHash": "sha256-O7m2Qtp7by283tXt1m/vwPum5nKpE5srlalmLvGyZeU=", + "lastModified": 1711643963, + "narHash": "sha256-Uv2+rRDTg+olOJ6k8cjlcag24BDMMDrHFJn2alauOZI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5d0418785750709a7fa3139224de4965e87ae17b", + "rev": "b2245daba6d9b667166b54921d370f937ca60902", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1710951922, - "narHash": "sha256-FOOBJ3DQenLpTNdxMHR2CpGZmYuctb92gF0lpiirZ30=", + "lastModified": 1711460390, + "narHash": "sha256-akSgjDZL6pVHEfSE6sz1DNSXuYX6hq+P/1Z5IoYWs7E=", "owner": "nixos", "repo": "nixpkgs", - "rev": "f091af045dff8347d66d186a62d42aceff159456", + "rev": "44733514b72e732bd49f5511bd0203dea9b9a434", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1711095683, - "narHash": "sha256-mLxazCxRu18EUFAAgQroruM83rdPH1mQvIaCAUtv/DQ=", + "lastModified": 1711635893, + "narHash": "sha256-ULay7PLILr2BEdySdctFKTsfV4fmI1/hNiZPKEVuvWo=", "owner": "nix-community", "repo": "NUR", - "rev": "c03e4bfa0dbd731210226d2b406c6b512107ed9e", + "rev": "0ccb18994cca45444b862482fe4197717ea2cff4", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1710644594, - "narHash": "sha256-RquCuzxfy4Nr8DPbdp3D/AsbYep21JgQzG8aMH9jJ4A=", + "lastModified": 1711249319, + "narHash": "sha256-N+Pp3/8H+rd7cO71VNV/ovV/Kwt+XNeUHNhsmyTabdM=", "owner": "Mic92", "repo": "sops-nix", - "rev": "83b68a0e8c94b72cdd0a6e547a14ca7eb1c03616", + "rev": "405987a66cce9a4a82f321f11b205982a7127c88", "type": "github" }, "original": { From 6ef922e9dbfc3231bd47241c957aeeff1ab86edb Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 28 Mar 2024 16:50:18 +0000 Subject: [PATCH 067/562] Update pretix version Bump pretix version from 2024.2.0 to 2024.3.0 --- pkgs/pretix/poetry.lock | 330 +++++++++++++++++----------------- pkgs/pretix/pretix-static.nix | 2 +- pkgs/pretix/pyproject.toml | 2 +- 3 files changed, 167 insertions(+), 167 deletions(-) diff --git a/pkgs/pretix/poetry.lock b/pkgs/pretix/poetry.lock index 1e11f88..9a93f4d 100644 --- a/pkgs/pretix/poetry.lock +++ b/pkgs/pretix/poetry.lock @@ -140,13 +140,13 @@ with-fonttools = ["fonttools (>=4.0)"] [[package]] name = "asgiref" -version = "3.7.2" +version = "3.8.1" description = "ASGI specs, helper code, and adapters" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "asgiref-3.7.2-py3-none-any.whl", hash = "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e"}, - {file = "asgiref-3.7.2.tar.gz", hash = "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"}, + {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, + {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, ] [package.dependencies] @@ -568,13 +568,13 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "click-didyoumean" -version = "0.3.0" +version = "0.3.1" description = "Enables git-like *did-you-mean* feature in click" optional = false -python-versions = ">=3.6.2,<4.0.0" +python-versions = ">=3.6.2" files = [ - {file = "click-didyoumean-0.3.0.tar.gz", hash = "sha256:f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035"}, - {file = "click_didyoumean-0.3.0-py3-none-any.whl", hash = "sha256:a0713dc7a1de3f06bc0df5a9567ad19ead2d3d5689b434768a6145bff77c0667"}, + {file = "click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c"}, + {file = "click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463"}, ] [package.dependencies] @@ -739,13 +739,13 @@ static3 = "*" [[package]] name = "django" -version = "4.2.10" +version = "4.2.11" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." optional = false python-versions = ">=3.8" files = [ - {file = "Django-4.2.10-py3-none-any.whl", hash = "sha256:a2d4c4d4ea0b6f0895acde632071aff6400bfc331228fc978b05452a0ff3e9f1"}, - {file = "Django-4.2.10.tar.gz", hash = "sha256:b1260ed381b10a11753c73444408e19869f3241fc45c985cd55a30177c789d13"}, + {file = "Django-4.2.11-py3-none-any.whl", hash = "sha256:ddc24a0a8280a0430baa37aff11f28574720af05888c62b7cfe71d219f4599d3"}, + {file = "Django-4.2.11.tar.gz", hash = "sha256:6e6ff3db2d8dd0c986b4eec8554c8e4f919b5c1ff62a5b4390c17aff2ed6e5c4"}, ] [package.dependencies] @@ -824,17 +824,17 @@ test = ["djangorestframework", "graphene-django", "pytest", "pytest-cov", "pytes [[package]] name = "django-filter" -version = "23.5" +version = "24.1" description = "Django-filter is a reusable Django application for allowing users to filter querysets dynamically." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "django-filter-23.5.tar.gz", hash = "sha256:67583aa43b91fe8c49f74a832d95f4d8442be628fd4c6d65e9f811f5153a4e5c"}, - {file = "django_filter-23.5-py3-none-any.whl", hash = "sha256:99122a201d83860aef4fe77758b69dda913e874cc5e0eaa50a86b0b18d708400"}, + {file = "django-filter-24.1.tar.gz", hash = "sha256:65cb43ce272077e5ac6aae1054d76c121cd6b552e296a82a13921e9371baf8c1"}, + {file = "django_filter-24.1-py3-none-any.whl", hash = "sha256:335bcae6cbd3e984b024841070f567b22faea57594f27d37c52f8f131f8d8621"}, ] [package.dependencies] -Django = ">=3.2" +Django = ">=4.2" [[package]] name = "django-formset-js-improved" @@ -1084,22 +1084,22 @@ pytz = "*" [[package]] name = "dnspython" -version = "2.5.0" +version = "2.6.1" description = "DNS toolkit" optional = false python-versions = ">=3.8" files = [ - {file = "dnspython-2.5.0-py3-none-any.whl", hash = "sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6"}, - {file = "dnspython-2.5.0.tar.gz", hash = "sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15"}, + {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, + {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, ] [package.extras] -dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=5.0.3)", "mypy (>=1.0.1)", "pylint (>=2.7)", "pytest (>=6.2.5)", "pytest-cov (>=3.0.0)", "sphinx (>=7.0.0)", "twine (>=4.0.0)", "wheel (>=0.41.0)"] +dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "mypy (>=1.8)", "pylint (>=3)", "pytest (>=7.4)", "pytest-cov (>=4.1.0)", "sphinx (>=7.2.0)", "twine (>=4.0.0)", "wheel (>=0.42.0)"] dnssec = ["cryptography (>=41)"] -doh = ["h2 (>=4.1.0)", "httpcore (>=0.17.3)", "httpx (>=0.25.1)"] -doq = ["aioquic (>=0.9.20)"] -idna = ["idna (>=2.1)"] -trio = ["trio (>=0.14)"] +doh = ["h2 (>=4.1.0)", "httpcore (>=1.0.0)", "httpx (>=0.26.0)"] +doq = ["aioquic (>=0.9.25)"] +idna = ["idna (>=3.6)"] +trio = ["trio (>=0.23)"] wmi = ["wmi (>=1.5.1)"] [[package]] @@ -1123,13 +1123,13 @@ dev = ["pytest", "pytest-cov", "pytest-django", "pytest-mock", "pytest-runner"] [[package]] name = "elementpath" -version = "4.3.0" +version = "4.4.0" description = "XPath 1.0/2.0/3.0/3.1 parsers and selectors for ElementTree and lxml" optional = false python-versions = ">=3.8" files = [ - {file = "elementpath-4.3.0-py3-none-any.whl", hash = "sha256:ecc885f2bb5bd5322fd68ace071f134a8fabf05f0019d77c638b906b844f6593"}, - {file = "elementpath-4.3.0.tar.gz", hash = "sha256:8d25db9150f5a6aa978c9f58e607fcd5ab6e6e3017140563439a9884ab1eb304"}, + {file = "elementpath-4.4.0-py3-none-any.whl", hash = "sha256:cda092281afe508ece1bf65373905b30196c9426f3730cfea46059e103a131bd"}, + {file = "elementpath-4.4.0.tar.gz", hash = "sha256:dfc4b8ca3d87966dcb0df40b5b6d04a98f053683271930fad9e7fa000924dfb2"}, ] [package.extras] @@ -1265,22 +1265,22 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.0.1" +version = "7.1.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, - {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, + {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, + {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "isodate" @@ -1344,27 +1344,28 @@ referencing = ">=0.31.0" [[package]] name = "jwcrypto" -version = "1.5.4" +version = "1.5.6" description = "Implementation of JOSE Web standards" optional = false python-versions = ">= 3.8" files = [ - {file = "jwcrypto-1.5.4.tar.gz", hash = "sha256:0815fbab613db99bad85691da5f136f8860423396667728a264bcfa6e1db36b0"}, + {file = "jwcrypto-1.5.6-py3-none-any.whl", hash = "sha256:150d2b0ebbdb8f40b77f543fb44ffd2baeff48788be71f67f03566692fd55789"}, + {file = "jwcrypto-1.5.6.tar.gz", hash = "sha256:771a87762a0c081ae6166958a954f80848820b2ab066937dc8b8379d65b1b039"}, ] [package.dependencies] cryptography = ">=3.4" -typing_extensions = ">=4.5.0" +typing-extensions = ">=4.5.0" [[package]] name = "kombu" -version = "5.3.5" +version = "5.3.6" description = "Messaging library for Python." optional = false python-versions = ">=3.8" files = [ - {file = "kombu-5.3.5-py3-none-any.whl", hash = "sha256:0eac1bbb464afe6fb0924b21bf79460416d25d8abc52546d4f16cad94f789488"}, - {file = "kombu-5.3.5.tar.gz", hash = "sha256:30e470f1a6b49c70dc6f6d13c3e4cc4e178aa6c469ceb6bcd55645385fc84b93"}, + {file = "kombu-5.3.6-py3-none-any.whl", hash = "sha256:49f1e62b12369045de2662f62cc584e7df83481a513db83b01f87b5b9785e378"}, + {file = "kombu-5.3.6.tar.gz", hash = "sha256:f3da5b570a147a5da8280180aa80b03807283d63ea5081fcdb510d18242431d9"}, ] [package.dependencies] @@ -1381,7 +1382,7 @@ mongodb = ["pymongo (>=4.1.1)"] msgpack = ["msgpack"] pyro = ["pyro4"] qpid = ["qpid-python (>=0.26)", "qpid-tools (>=0.26)"] -redis = ["redis (>=4.5.2,!=4.5.5,<6.0.0)"] +redis = ["redis (>=4.5.2,!=4.5.5,!=5.0.2)"] slmq = ["softlayer-messaging (>=1.0.3)"] sqlalchemy = ["sqlalchemy (>=1.4.48,<2.1)"] sqs = ["boto3 (>=1.26.143)", "pycurl (>=7.43.0.5)", "urllib3 (>=1.26.16)"] @@ -1498,13 +1499,13 @@ source = ["Cython (>=3.0.7)"] [[package]] name = "markdown" -version = "3.5.2" +version = "3.6" description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, - {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, + {file = "Markdown-3.6-py3-none-any.whl", hash = "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f"}, + {file = "Markdown-3.6.tar.gz", hash = "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"}, ] [package.extras] @@ -1513,64 +1514,61 @@ testing = ["coverage", "pyyaml"] [[package]] name = "maxminddb" -version = "2.5.2" +version = "2.6.0" description = "Reader for the MaxMind DB format" optional = false python-versions = ">=3.8" files = [ - {file = "maxminddb-2.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f5682963a5817066db50f219c33aaa7eb969888211a289a444c42b5dfa0c0f78"}, - {file = "maxminddb-2.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fe6bb1b5ea132fcd9fd7b16c80247f0ba667018d5f9f98cd645b297e3b02fbf"}, - {file = "maxminddb-2.5.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:955a3ec4b161e872cc615b7a09ae9770049e9794e7b3832e3d78905a65c5049d"}, - {file = "maxminddb-2.5.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:29d63e7711e5f95c7c190010e57dca9e262aee8ac300aaf75c3f7ede0b5a5863"}, - {file = "maxminddb-2.5.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:08a540ec3661f6ca40499c86028e96dca5780e9d471b485dc797859b0b22dd22"}, - {file = "maxminddb-2.5.2-cp310-cp310-win32.whl", hash = "sha256:17fdb691c389a0e956410d5baef9ad082a0aa67dd6aa231d193499e71a104c19"}, - {file = "maxminddb-2.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:d71b48d3dff9150a44e949b28fa5e7251a7a6895a3a77e200ce08410f096f12f"}, - {file = "maxminddb-2.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1409a045eb04cebb297221eab1020c4f05434d02c0961410f6996ef474482998"}, - {file = "maxminddb-2.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d839c480e4b93bb37bb1cc2777d77e6b2127c006e60b56f748f10571d8b0e471"}, - {file = "maxminddb-2.5.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bca70905515fe50684974a9afaa7db4a4e9fbfdebcb0c2cde9db8e048e0d8145"}, - {file = "maxminddb-2.5.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:67f97cd0c6aac39a51294b04a1e922532125285c24b18a58e2a9c92c7691fa9f"}, - {file = "maxminddb-2.5.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1a3fab6bea6cc59444e6bad2a4fbf91228f6f51dcb29d09ed091930a475bd8cb"}, - {file = "maxminddb-2.5.2-cp311-cp311-win32.whl", hash = "sha256:a99e3125528ea31e807f80e8c5b65118dc5cc122d0a435f1691a3cc1df55840c"}, - {file = "maxminddb-2.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:b6adf63695fa5e3d2549f7c2c9d82c6d252edd5c6ba67074637d2cb944143673"}, - {file = "maxminddb-2.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ed504ca9f3c42e8e71bdbe21f5b818139a1448ac15d7bb6ce12cf41e3b7e2067"}, - {file = "maxminddb-2.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a5053231228d7cbf57d98a741b3cbee9efa9e689348dbb56c414e5a4c7f6f1c"}, - {file = "maxminddb-2.5.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7e8688342bab592647313cd2054779bcd35ad85933424ceae9f07e3a9779986"}, - {file = "maxminddb-2.5.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:335ee3140b41d4e751c14f8fae297aa064c7d3f184c9fbb2790336123187c440"}, - {file = "maxminddb-2.5.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b0203fa2731da45e5461f6e8a0768e85bba8e02137a1598b3fcadf7cbfe8e6f2"}, - {file = "maxminddb-2.5.2-cp312-cp312-win32.whl", hash = "sha256:8b89129de70e1629f200df9dfda4e4f477c26b05c29e0836604a00209c9466d5"}, - {file = "maxminddb-2.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:099f4e27feec4bb9658034a3eb853e746721fc15709030bee4f2f889f4a34185"}, - {file = "maxminddb-2.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:19d8d1e9bbc5281fb4c8112d541d2bd350fd8b5ddfbb43a6951e46df7cd27b9d"}, - {file = "maxminddb-2.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94183a78628cad257183a88ce12a3bb9ffbfe0544bd0c1aafc1f9dc55629dd1b"}, - {file = "maxminddb-2.5.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:17de49660372dcccaa23958eccdd1c2464f92f594d027045ad76788db14a5da4"}, - {file = "maxminddb-2.5.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ae05c4f87b1dd9a21d430c52451eef5f3bd5af609d093408db91fe0dc4d8d7d1"}, - {file = "maxminddb-2.5.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cb718908b9dffa10e02361094158ae68ded5a82c750de89737437999a81bafe"}, - {file = "maxminddb-2.5.2-cp38-cp38-win32.whl", hash = "sha256:e0faa0c4c458eb0eb2f267daa7b106baef72c3c7ebcbece00b9e974fc8321412"}, - {file = "maxminddb-2.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:bac5a29fdc5df9222f7baecbcc4a88b309a66a7d147b34160940c0850ee4b9c5"}, - {file = "maxminddb-2.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c204f53ef7c1d77e9fb0dba415dbb56419f2b08ccaca66cd772e29b3a793c3e7"}, - {file = "maxminddb-2.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae98508a200db6f7ae5985a53039aba8eef7ed71d34b0a0e9c9145c3e6139fc3"}, - {file = "maxminddb-2.5.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e9198d25e252b27d4e9526d5fcd4b78341c23153363a94f1246de5afcd39f6d"}, - {file = "maxminddb-2.5.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b85b008f8e2cf3abfabdc24041549c51c97ea9a8bc46eeeadac8cec7acf9fbf0"}, - {file = "maxminddb-2.5.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6f50210506e9818162ef6706d3127efb0575dfe2cc98a7236ca2011f1cc3effe"}, - {file = "maxminddb-2.5.2-cp39-cp39-win32.whl", hash = "sha256:2bba43d370a57785f5ef61c10d0b4bf8de58d431da3c4c2ed78bb2ff3d07edbf"}, - {file = "maxminddb-2.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:2e01b09480b97d2ebe6765618fb12a0f52caa17368d6cf1f42481d6740428de7"}, - {file = "maxminddb-2.5.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:dd47d13376eaee2e8d1a1fb55d3d6ccdcc995bc931699967f7d5670ec6a454a3"}, - {file = "maxminddb-2.5.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abd626efaba4f0bc867462337f846796da0bb97b82125dbdbc63067947e353b0"}, - {file = "maxminddb-2.5.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ddbe547d83a2e28e81d9f59fd9708d3044ffb2398ee0f8df2e2a2e9cdea6646"}, - {file = "maxminddb-2.5.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:22184fa2514c15f5b39e4e2522f4f73d00afcf5eb7102c473f9376f3c3a03b81"}, - {file = "maxminddb-2.5.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5cb6702fbcc5b209ac3cffacd9cf0a5155feabbeb6fdcf497038be7cb6e52da6"}, - {file = "maxminddb-2.5.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0c3ebfc0af00445089629faffa4c5a1fcc42a1ca5d7dffc42bba314fde20c6d"}, - {file = "maxminddb-2.5.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:461dcf0a4f67aa1c9faea6d52c4060d39559bf68e99a514cf8c1e01af383f90b"}, - {file = "maxminddb-2.5.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e012e889639aab411f5483990188da51c968377f665dcb90584971dbf314d50a"}, - {file = "maxminddb-2.5.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:20596e452d03071db37a72c8ef9236126c04ed342864f68db0adf0d1bc9f642e"}, - {file = "maxminddb-2.5.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ec51b66774b102824c9a3dd4916356283f6a61db1868d4ebcb98bf26486718e"}, - {file = "maxminddb-2.5.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fda0dd512f345cc92492f96c61a0df47efc2e2064c15e8053ab2114b362d64d"}, - {file = "maxminddb-2.5.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:862fcfe226ebda29a537cdce678dc8dc71ca6540ad2483099f80c6a1ee4cdbdd"}, - {file = "maxminddb-2.5.2.tar.gz", hash = "sha256:b3c33e4fc7821ee6c9f40837116e16ab6175863d4a64eee024c5bec686690a87"}, + {file = "maxminddb-2.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4ec0e12623b53b3548239f0082bc2417e71543e2e5b7b4f49c56545f52013f7f"}, + {file = "maxminddb-2.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:568ad9f34ec4118e7e1b9b583c086576ac68add40232ae57a2b1d4bd4834705e"}, + {file = "maxminddb-2.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0626df312d92e8b34ab1bf12921ac44a05a82a70f611f3bb6ed5b55668344849"}, + {file = "maxminddb-2.6.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f1b5149c8064e9d47d98d382ed54037f0ba25ca9c1e2b1d1cd9958c3808ced44"}, + {file = "maxminddb-2.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dfa11a83c615a7cfd407e47cc6b8576aad2322bc6ce4af2b6a916fb634a5556e"}, + {file = "maxminddb-2.6.0-cp310-cp310-win32.whl", hash = "sha256:d1fcf83866b77faf501eba458cc59760d8945a310ba53a8d47d9bb04592cb1cb"}, + {file = "maxminddb-2.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:2ba1c6cc68316dec14b1251741d5b5c7538ccebc6aadddc61fd870e090adfdff"}, + {file = "maxminddb-2.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:695466fe8933430d53894f91ce3a468383a6c1a2f89eeddd05dad21377ea94d9"}, + {file = "maxminddb-2.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e02868d8081e6cadfe0cd8e7dc577c172a7dd78b65bbafff89b8b2bec41e493"}, + {file = "maxminddb-2.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31f6819ed566668e890937aadc79373cf9de20378ac76f323628863d8f3d1383"}, + {file = "maxminddb-2.6.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:725b01b6cb4b744b846041168b02dcf05908ce02e544aa35d64dbcf2448efd05"}, + {file = "maxminddb-2.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af8c4792272f85b0f9da70f3c3670bc3163590d5c9964412ed47ab3f31138c21"}, + {file = "maxminddb-2.6.0-cp311-cp311-win32.whl", hash = "sha256:50b0318222b99b27cb3abff3f85983e36a33fb785445402930b28d2c3fe320d0"}, + {file = "maxminddb-2.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:db4919488de1215650316284fe079f07b463d4c5f96ce01b338adaac8f35936d"}, + {file = "maxminddb-2.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cda00948032969affce349588ee8638eae97f47b8b10b4064e7e9bf6bda3410d"}, + {file = "maxminddb-2.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16c2619779abe6baa722e6d65500393a6ea8fe5a3ce24bb02564defb020f51cd"}, + {file = "maxminddb-2.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eee0250b6cfc30eca89f06fc4d455aad51f657da05612dfe6207aa9be870edb7"}, + {file = "maxminddb-2.6.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:61f7f6b12264d52eba5235580edecd0bad0aac7c1c5ba0a0970373c5d19b81d7"}, + {file = "maxminddb-2.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f223183a9e5c8e2044f6347c07b71deab4dac36d44de46163ff3358cb4f909c8"}, + {file = "maxminddb-2.6.0-cp312-cp312-win32.whl", hash = "sha256:42c58ad0e5c70bbaedd3b681b172000256f4710c6c2180221c9f43f826381c00"}, + {file = "maxminddb-2.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:c9168f0251bbb6806fd85dea7e145b53163f3e74626bf65b8b62b24121bbb038"}, + {file = "maxminddb-2.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fa897a9ae335559d26d63656d4d34f4a9a0e63be3cb67624fdcd448b7d010536"}, + {file = "maxminddb-2.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6508bd089be94174608c0d95f95983b891daa07181eef4aaae2ff55930a3022b"}, + {file = "maxminddb-2.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9ebcd1603ace5768934668e940bc3f7a23973b06c833031bb3ef1ff6d5193bf"}, + {file = "maxminddb-2.6.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:541650f00ecaff32b486ca0a89fd74a2493e35e0cfe1142b4a66b852de6e00c4"}, + {file = "maxminddb-2.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b15df0645f067c229cafdbc5160c3a0512b3ec16f3c77252dc83341312329fc9"}, + {file = "maxminddb-2.6.0-cp38-cp38-win32.whl", hash = "sha256:0dfe9b4af5870a60b9abaaa898b458d2af2338cabe2f8fa6c7d74bf473f1d01a"}, + {file = "maxminddb-2.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:fa1f45ca2b2b60bd3c88cea33bb8ca948f3dd44795049477248c804e2c02b726"}, + {file = "maxminddb-2.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f50300386c030a1152c1c97a02f880bc80bc8ddff500b782fd41334382f0dbda"}, + {file = "maxminddb-2.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e5647563d11f57df239988371db2eeed8246ad4673eb3d798892d1812e5d653"}, + {file = "maxminddb-2.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df22644fe0b022f8dbdd56bc066ce02d29a67e5d7a543949f1bd43638234ce9"}, + {file = "maxminddb-2.6.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:74eb211e4a755d6f8b9704239c42d06cdcb42beb2030a707d629e8db092faf72"}, + {file = "maxminddb-2.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:313afcdaeda32e5249093a0672bd1276261511ddc93e52fb2dda87061f1ba154"}, + {file = "maxminddb-2.6.0-cp39-cp39-win32.whl", hash = "sha256:6883311bdd673d27781cbb8e06cc623aef497aa970e5e532cb79a13460955d09"}, + {file = "maxminddb-2.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:2e9c672952c5ed22bf7aae69830116a9d0747d9abd9ebcfe375d31432fdea2e8"}, + {file = "maxminddb-2.6.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c79c1892e0b582660f1d821b0b68bb6100ca60dc13cfc2553e3c12939907fa75"}, + {file = "maxminddb-2.6.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8a06f0f16bb502887fada29b2d9f3cec4c6e44e230fdf0cc67452fa0232f7c"}, + {file = "maxminddb-2.6.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f036479418ed91ec019c7ef6e3e6757797a16891dbf8829d9c1b74e2a5feb5b"}, + {file = "maxminddb-2.6.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6ec791c115dbfa20d0a4d4f0a2c336886f6abb30025a6ac2eb42b94c581bdd67"}, + {file = "maxminddb-2.6.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a6e028be4c38d9c11a408a2fbd89626d0bbf1eb89996bf0beaf1e11453937bd6"}, + {file = "maxminddb-2.6.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:048e85e74828d1c7327df4ca452a4b859dd2ca2b9746c978fe613138cae65b97"}, + {file = "maxminddb-2.6.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d126f0d2784d53aa613c009b89677bbf88defb3bf7a66e9b8e60e0859f23aa4"}, + {file = "maxminddb-2.6.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:fb8d69564a3b682d8f1dd79a97b52f6525a2a4939ef9a23c7b108ec2f973a42a"}, + {file = "maxminddb-2.6.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a2864cb9093d89b5ccfcdd124da6b8feb3cc3ac7891ab5b43b7131a8a0050bd9"}, + {file = "maxminddb-2.6.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e90b8be14ded4f01f71c23034600b088594417e42a7bbdd132e87d923246db0e"}, + {file = "maxminddb-2.6.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e7a0735a04545386df64eb8bc9aea9971b172584066e0d88af8404ba6ccbbd9"}, + {file = "maxminddb-2.6.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5ee2e5138ef28b7cf920fedb313b0e605bc66bd2d46c9abcd9656d18ed4eb660"}, + {file = "maxminddb-2.6.0.tar.gz", hash = "sha256:c5b91c62bc274d0a83ac88088a6db2dac1301acb8aa7bf80a901a07120361e1d"}, ] -[package.dependencies] -setuptools = ">=68.2.2" - [[package]] name = "mt-940" version = "4.30.0" @@ -1717,13 +1715,13 @@ et-xmlfile = "*" [[package]] name = "packaging" -version = "23.2" +version = "24.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, ] [[package]] @@ -1774,13 +1772,13 @@ six = ">=1.0.0" [[package]] name = "phonenumberslite" -version = "8.13.31" +version = "8.13.33" description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." optional = false python-versions = "*" files = [ - {file = "phonenumberslite-8.13.31-py2.py3-none-any.whl", hash = "sha256:137d53d5d78dca30bc2becf81a3e2ac74deb8f0997e9bbe44de515ece4bd92bd"}, - {file = "phonenumberslite-8.13.31.tar.gz", hash = "sha256:e1f4359bff90c86d1b52db0e726d3334df00cc7d9c9c2ef66561d5f7a774d4ba"}, + {file = "phonenumberslite-8.13.33-py2.py3-none-any.whl", hash = "sha256:4d92f4f9079bb83588dde45fd8a414bc13e4962886aa4d23576984196f4d83c2"}, + {file = "phonenumberslite-8.13.33.tar.gz", hash = "sha256:7426bc46af3de5a800a4c8f33ab13e33225d2c8ed4fc52aa3c0380dadd8d7381"}, ] [[package]] @@ -1896,13 +1894,13 @@ files = [ [[package]] name = "pretix" -version = "2024.2.0" +version = "2024.3.0" description = "Reinventing presales, one ticket at a time" optional = false python-versions = ">=3.9" files = [ - {file = "pretix-2024.2.0-py3-none-any.whl", hash = "sha256:62cddbb2354728f9a9d695755ed55e88d88d35db2cfe2c94ac5be9e648adb51f"}, - {file = "pretix-2024.2.0.tar.gz", hash = "sha256:a99d095bb2739cf2574770bc940d988f52bd61d2464598f113ab661a596f5fd5"}, + {file = "pretix-2024.3.0-py3-none-any.whl", hash = "sha256:b3155aaa8ef46797effd7f948b8dd6a68cca6bef397fb53be7859f5d178828b5"}, + {file = "pretix-2024.3.0.tar.gz", hash = "sha256:e3e4aaf48bdb2871b12bc4bdd7429dd5689f91b68422aaadb933a0c0de73fe4b"}, ] [package.dependencies] @@ -1920,7 +1918,7 @@ Django = "==4.2.*" django-bootstrap3 = "==23.6.*" django-compressor = "4.4" django-countries = "==7.5.*" -django-filter = "23.5" +django-filter = "24.1" django-formset-js-improved = "0.5.0.3" django-formtools = "2.5.1" django-hierarkey = "==1.1.*" @@ -1936,7 +1934,7 @@ django-redis = "==5.4.*" django-scopes = "==2.0.*" django-statici18n = "==2.4.*" djangorestframework = "==3.14.*" -dnspython = "==2.5.*" +dnspython = "==2.6.*" drf-ujson2 = "==1.7.*" geoip2 = "==4.*" importlib-metadata = "==7.*" @@ -1945,7 +1943,7 @@ jsonschema = "*" kombu = "==5.3.*" libsass = "==0.23.*" lxml = "*" -markdown = "3.5.2" +markdown = "3.6" mt-940 = "==4.30.*" oauthlib = "==3.2.*" openpyxl = "==3.1.*" @@ -1955,7 +1953,7 @@ paypalrestsdk = "==1.13.*" phonenumberslite = "==8.13.*" Pillow = "==10.2.*" pretix-plugin-build = "*" -protobuf = "==4.25.*" +protobuf = "==5.26.*" psycopg2-binary = "*" pycountry = "*" pycparser = "2.21" @@ -1963,7 +1961,7 @@ pycryptodome = "==3.20.*" PyJWT = "==2.8.*" pypdf = "==3.9.*" python-bidi = "==0.4.*" -python-dateutil = "==2.8.*" +python-dateutil = "==2.9.*" pytz = "*" pytz-deprecation-shim = "==0.1.*" pyuca = "*" @@ -1971,7 +1969,7 @@ qrcode = "==7.4.*" redis = "==5.0.*" reportlab = "==4.1.*" requests = "==2.31.*" -sentry-sdk = "==1.40.*" +sentry-sdk = "==1.42.*" sepaxml = "==2.6.*" slimit = "*" static3 = "==0.7.*" @@ -1985,7 +1983,7 @@ webauthn = "==2.0.*" zeep = "==4.2.*" [package.extras] -dev = ["aiohttp (==3.9.*)", "coverage", "coveralls", "fakeredis (==2.21.*)", "flake8 (==7.0.*)", "freezegun", "isort (==5.13.*)", "pep8-naming (==0.13.*)", "potypo", "pytest (==8.0.*)", "pytest-asyncio", "pytest-cache", "pytest-cov", "pytest-django (==4.*)", "pytest-mock (==3.12.*)", "pytest-rerunfailures (==13.*)", "pytest-sugar", "pytest-xdist (==3.5.*)", "responses"] +dev = ["aiohttp (==3.9.*)", "coverage", "coveralls", "fakeredis (==2.21.*)", "flake8 (==7.0.*)", "freezegun", "isort (==5.13.*)", "pep8-naming (==0.13.*)", "potypo", "pytest (==8.1.*)", "pytest-asyncio", "pytest-cache", "pytest-cov", "pytest-django (==4.*)", "pytest-mock (==3.12.*)", "pytest-rerunfailures (==14.*)", "pytest-sugar", "pytest-xdist (==3.5.*)", "responses"] memcached = ["pylibmc"] [[package]] @@ -2018,22 +2016,22 @@ wcwidth = "*" [[package]] name = "protobuf" -version = "4.25.3" +version = "5.26.1" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, - {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, - {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, - {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, - {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, - {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, - {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, - {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, - {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, + {file = "protobuf-5.26.1-cp310-abi3-win32.whl", hash = "sha256:3c388ea6ddfe735f8cf69e3f7dc7611e73107b60bdfcf5d0f024c3ccd3794e23"}, + {file = "protobuf-5.26.1-cp310-abi3-win_amd64.whl", hash = "sha256:e6039957449cb918f331d32ffafa8eb9255769c96aa0560d9a5bf0b4e00a2a33"}, + {file = "protobuf-5.26.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:38aa5f535721d5bb99861166c445c4105c4e285c765fbb2ac10f116e32dcd46d"}, + {file = "protobuf-5.26.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fbfe61e7ee8c1860855696e3ac6cfd1b01af5498facc6834fcc345c9684fb2ca"}, + {file = "protobuf-5.26.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:f7417703f841167e5a27d48be13389d52ad705ec09eade63dfc3180a959215d7"}, + {file = "protobuf-5.26.1-cp38-cp38-win32.whl", hash = "sha256:d693d2504ca96750d92d9de8a103102dd648fda04540495535f0fec7577ed8fc"}, + {file = "protobuf-5.26.1-cp38-cp38-win_amd64.whl", hash = "sha256:9b557c317ebe6836835ec4ef74ec3e994ad0894ea424314ad3552bc6e8835b4e"}, + {file = "protobuf-5.26.1-cp39-cp39-win32.whl", hash = "sha256:b9ba3ca83c2e31219ffbeb9d76b63aad35a3eb1544170c55336993d7a18ae72c"}, + {file = "protobuf-5.26.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ee014c2c87582e101d6b54260af03b6596728505c79f17c8586e7523aaa8f8c"}, + {file = "protobuf-5.26.1-py3-none-any.whl", hash = "sha256:da612f2720c0183417194eeaa2523215c4fcc1a1949772dc65f05047e08d5932"}, + {file = "protobuf-5.26.1.tar.gz", hash = "sha256:8ca2a1d97c290ec7b16e4e5dff2e5ae150cc1582f55b5ab300d45cb0dfa90e51"}, ] [[package]] @@ -2199,13 +2197,13 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pyopenssl" -version = "24.0.0" +version = "24.1.0" description = "Python wrapper module around the OpenSSL library" optional = false python-versions = ">=3.7" files = [ - {file = "pyOpenSSL-24.0.0-py3-none-any.whl", hash = "sha256:ba07553fb6fd6a7a2259adb9b84e12302a9a8a75c44046e8bb5d3e5ee887e3c3"}, - {file = "pyOpenSSL-24.0.0.tar.gz", hash = "sha256:6aa33039a93fffa4563e655b61d11364d01264be8ccb49906101e02a334530bf"}, + {file = "pyOpenSSL-24.1.0-py3-none-any.whl", hash = "sha256:17ed5be5936449c5418d1cd269a1a9e9081bc54c17aed272b45856a3d3dc86ad"}, + {file = "pyOpenSSL-24.1.0.tar.gz", hash = "sha256:cabed4bfaa5df9f1a16c0ef64a0cb65318b5cd077a7eda7d6970131ca2f41a6f"}, ] [package.dependencies] @@ -2213,7 +2211,7 @@ cryptography = ">=41.0.5,<43" [package.extras] docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] -test = ["flaky", "pretend", "pytest (>=3.0.1)"] +test = ["pretend", "pytest (>=3.0.1)", "pytest-rerunfailures"] [[package]] name = "pypdf" @@ -2260,13 +2258,13 @@ six = "*" [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -2274,13 +2272,13 @@ six = ">=1.5" [[package]] name = "python-stdnum" -version = "1.19" +version = "1.20" description = "Python module to handle standardized numbers and codes" optional = false python-versions = "*" files = [ - {file = "python-stdnum-1.19.tar.gz", hash = "sha256:133ec82f56390ea74c190569e98f2fb14b869808b1d54785708f22d0fead8b3f"}, - {file = "python_stdnum-1.19-py2.py3-none-any.whl", hash = "sha256:1b5b401ad3f45b798b0317313b781a433f5d7a5ff2c9feb8054664f76f78644e"}, + {file = "python-stdnum-1.20.tar.gz", hash = "sha256:ad2a2cf2eb025de408210235f36b4ae31252de3186240ccaa8126e117cb82690"}, + {file = "python_stdnum-1.20-py2.py3-none-any.whl", hash = "sha256:111008e10391d54fb2afad2a10df70d5cb0c6c0a7ec82fec6f022cb8712961d3"}, ] [package.extras] @@ -2381,17 +2379,17 @@ files = [ [[package]] name = "redis" -version = "5.0.2" +version = "5.0.3" description = "Python client for Redis database and key-value store" optional = false python-versions = ">=3.7" files = [ - {file = "redis-5.0.2-py3-none-any.whl", hash = "sha256:4caa8e1fcb6f3c0ef28dba99535101d80934b7d4cd541bbb47f4a3826ee472d1"}, - {file = "redis-5.0.2.tar.gz", hash = "sha256:3f82cc80d350e93042c8e6e7a5d0596e4dd68715babffba79492733e1f367037"}, + {file = "redis-5.0.3-py3-none-any.whl", hash = "sha256:5da9b8fe9e1254293756c16c008e8620b3d15fcc6dde6babde9541850e72a32d"}, + {file = "redis-5.0.3.tar.gz", hash = "sha256:4973bae7444c0fbed64a06b87446f79361cb7e4ec1538c022d696ed7a5015580"}, ] [package.dependencies] -async-timeout = ">=4.0.3" +async-timeout = {version = ">=4.0.3", markers = "python_full_version < \"3.11.3\""} [package.extras] hiredis = ["hiredis (>=1.0.0)"] @@ -2399,13 +2397,13 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" [[package]] name = "referencing" -version = "0.33.0" +version = "0.34.0" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"}, - {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"}, + {file = "referencing-0.34.0-py3-none-any.whl", hash = "sha256:d53ae300ceddd3169f1ffa9caf2cb7b769e92657e4fafb23d34b93679116dfd4"}, + {file = "referencing-0.34.0.tar.gz", hash = "sha256:5773bd84ef41799a5a8ca72dc34590c041eb01bf9aa02632b4a973fb0181a844"}, ] [package.dependencies] @@ -2623,13 +2621,13 @@ files = [ [[package]] name = "sentry-sdk" -version = "1.40.6" +version = "1.42.0" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.40.6.tar.gz", hash = "sha256:f143f3fb4bb57c90abef6e2ad06b5f6f02b2ca13e4060ec5c0549c7a9ccce3fa"}, - {file = "sentry_sdk-1.40.6-py2.py3-none-any.whl", hash = "sha256:becda09660df63e55f307570e9817c664392655a7328bbc414b507e9cb874c67"}, + {file = "sentry-sdk-1.42.0.tar.gz", hash = "sha256:4a8364b8f7edbf47f95f7163e48334c96100d9c098f0ae6606e2e18183c223e6"}, + {file = "sentry_sdk-1.42.0-py2.py3-none-any.whl", hash = "sha256:a654ee7e497a3f5f6368b36d4f04baeab1fe92b3105f7f6965d6ef0de35a9ba4"}, ] [package.dependencies] @@ -2653,9 +2651,10 @@ grpcio = ["grpcio (>=1.21.1)"] httpx = ["httpx (>=0.16.0)"] huey = ["huey (>=2)"] loguru = ["loguru (>=0.5)"] +openai = ["openai (>=1.0.0)", "tiktoken (>=0.3.0)"] opentelemetry = ["opentelemetry-distro (>=0.35b0)"] opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"] -pure-eval = ["asttokens", "executing", "pure_eval"] +pure-eval = ["asttokens", "executing", "pure-eval"] pymongo = ["pymongo (>=3.1)"] pyspark = ["pyspark (>=2.4.4)"] quart = ["blinker (>=1.1)", "quart (>=0.16.1)"] @@ -2683,18 +2682,18 @@ xmlschema = "*" [[package]] name = "setuptools" -version = "69.1.1" +version = "69.2.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.1.1-py3-none-any.whl", hash = "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56"}, - {file = "setuptools-69.1.1.tar.gz", hash = "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"}, + {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"}, + {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] @@ -2790,13 +2789,13 @@ files = [ [[package]] name = "tlds" -version = "2024020701" +version = "2024030600" description = "Automatically updated list of valid TLDs taken directly from IANA" optional = false python-versions = "*" files = [ - {file = "tlds-2024020701-py2.py3-none-any.whl", hash = "sha256:e061ec51d0ca160ac64b8c228b0cf72b544aeb47249d82dbd1b5681245b4444a"}, - {file = "tlds-2024020701.tar.gz", hash = "sha256:462b5dff89cfa1a3dca4cfd2fb81a53acaadee3fe618b7a018e314d692e0d3a4"}, + {file = "tlds-2024030600-py2.py3-none-any.whl", hash = "sha256:e4eafaad17a8eb19064d46eda0ca8abc366cf67ba01c71861a7dbfc7003c0708"}, + {file = "tlds-2024030600.tar.gz", hash = "sha256:e39e7c8e931a2e90710594622e4737ed336e0da335fbc7aca015b200b6279cb1"}, ] [[package]] @@ -2956,12 +2955,13 @@ files = [ [[package]] name = "vobject" -version = "0.9.6.1" +version = "0.9.7" description = "A full-featured Python package for parsing and creating iCalendar and vCard files" optional = false python-versions = "*" files = [ - {file = "vobject-0.9.6.1.tar.gz", hash = "sha256:96512aec74b90abb71f6b53898dd7fe47300cc940104c4f79148f0671f790101"}, + {file = "vobject-0.9.7-py2.py3-none-any.whl", hash = "sha256:67ebec81ee39fc60b7355ce077f850d5f13d99d08b110fa1abcfdbb516205e20"}, + {file = "vobject-0.9.7.tar.gz", hash = "sha256:ab727bf81de88984ada5c11f066f1e1649903d3e3d7ec91f1ce968172afd5256"}, ] [package.dependencies] @@ -3008,22 +3008,22 @@ files = [ [[package]] name = "xmlschema" -version = "3.0.2" +version = "3.2.0" description = "An XML Schema validator and decoder" optional = false python-versions = ">=3.8" files = [ - {file = "xmlschema-3.0.2-py3-none-any.whl", hash = "sha256:c8935f81e1645df3e71136805c7206871268aa8c6e31e3667ea23746f22fea0a"}, - {file = "xmlschema-3.0.2.tar.gz", hash = "sha256:b2526e91695905aa62d4aa2b68349565a168fedf88ada0005f5e0dd21da9734b"}, + {file = "xmlschema-3.2.0-py3-none-any.whl", hash = "sha256:7ad8b4838fee0cfbfc3a5c7d38e33964cf5ebd2c20e2aa23ea813b6793438f9c"}, + {file = "xmlschema-3.2.0.tar.gz", hash = "sha256:541d96893691aae3cb93ea36a85dde18327012e26e0c51d610f4f79e7fc86f7b"}, ] [package.dependencies] -elementpath = ">=4.3.0,<5.0.0" +elementpath = ">=4.4.0,<5.0.0" [package.extras] -codegen = ["elementpath (>=4.3.0,<5.0.0)", "jinja2"] -dev = ["Sphinx", "coverage", "elementpath (>=4.3.0,<5.0.0)", "flake8", "jinja2", "lxml", "lxml-stubs", "memory-profiler", "mypy", "sphinx-rtd-theme", "tox"] -docs = ["Sphinx", "elementpath (>=4.3.0,<5.0.0)", "jinja2", "sphinx-rtd-theme"] +codegen = ["elementpath (>=4.4.0,<5.0.0)", "jinja2"] +dev = ["Sphinx", "coverage", "elementpath (>=4.4.0,<5.0.0)", "flake8", "jinja2", "lxml", "lxml-stubs", "memory-profiler", "mypy", "sphinx-rtd-theme", "tox"] +docs = ["Sphinx", "elementpath (>=4.4.0,<5.0.0)", "jinja2", "sphinx-rtd-theme"] [[package]] name = "yarl" @@ -3157,20 +3157,20 @@ xmlsec = ["xmlsec (>=0.6.1)"] [[package]] name = "zipp" -version = "3.17.0" +version = "3.18.1" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, - {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, + {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, + {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "e9fc7007f6697e279758c9460ed3ac584b006ff6dae76244fd7790c44bcdd71a" +content-hash = "77a24f59f28158ab613d4477d810b12c3ef99154ff4969e5132221f1a24d209f" diff --git a/pkgs/pretix/pretix-static.nix b/pkgs/pretix/pretix-static.nix index 7ef6129..25861b3 100644 --- a/pkgs/pretix/pretix-static.nix +++ b/pkgs/pretix/pretix-static.nix @@ -8,7 +8,7 @@ let nodeEnv = buildNpmPackage rec { name = "pretix-nodejs"; src = "${pretix.passthru.pythonModule.pkgs.pretix}/lib/${pretix.python.libPrefix}/site-packages/pretix/static/npm_dir"; - npmDepsHash = "sha256-kE13dcTdWZZNHPMcHEiK0a2dEcu3Z3/q815YhaVkLbQ="; + npmDepsHash = "sha256-2fHlEEmYzpF3SyvF7+FbwCt+zQVGF0/kslDFnJ+DQGE="; dontNpmBuild = true; installPhase = '' mkdir -p $out diff --git a/pkgs/pretix/pyproject.toml b/pkgs/pretix/pyproject.toml index 1712267..9a2815d 100644 --- a/pkgs/pretix/pyproject.toml +++ b/pkgs/pretix/pyproject.toml @@ -7,7 +7,7 @@ license = "MIT" [tool.poetry.dependencies] python = "^3.10" -pretix = "^2024.2.0" +pretix = "^2024.3.0" [tool.poetry.dev-dependencies] From 8930bdd6f5b131476d27c98dd435ad444aeb4deb Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 7 Apr 2024 01:32:29 +0000 Subject: [PATCH 068/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'home-manager': 'github:nix-community/home-manager/f33900124c23c4eca5831b9b5eb32ea5894375ce' (2024-03-19) → 'github:nix-community/home-manager/d6bb9f934f2870e5cbc5b94c79e9db22246141ff' (2024-04-06) • Updated input 'nix-pre-commit-hooks': 'github:cachix/pre-commit-hooks.nix/7d47a32e5cd1ea481fab33c516356ce27c8cef4a' (2024-03-27) → 'github:cachix/pre-commit-hooks.nix/e35aed5fda3cc79f88ed7f1795021e559582093a' (2024-04-02) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/44733514b72e732bd49f5511bd0203dea9b9a434' (2024-03-26) → 'github:nixos/nixpkgs/72da83d9515b43550436891f538ff41d68eecc7f' (2024-04-05) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/b2245daba6d9b667166b54921d370f937ca60902' (2024-03-28) → 'github:NixOS/nixpkgs/092bd1b943ff26449b95a6e74c14185119bbc4f1' (2024-04-07) • Updated input 'nur': 'github:nix-community/NUR/0ccb18994cca45444b862482fe4197717ea2cff4' (2024-03-28) → 'github:nix-community/NUR/ef7e3ecaf9f58150db1e00d01ea9985b0f8d9756' (2024-04-06) • Updated input 'sops-nix': 'github:Mic92/sops-nix/405987a66cce9a4a82f321f11b205982a7127c88' (2024-03-24) → 'github:Mic92/sops-nix/99b1e37f9fc0960d064a7862eb7adfb92e64fa10' (2024-03-31) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/ac6bdf6181666ebb4f90dd20f31e2fa66ede6b68' (2024-03-23) → 'github:NixOS/nixpkgs/2b4e3ca0091049c6fbb4908c66b05b77eaef9f0c' (2024-03-30) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 748f863..f259512 100644 --- a/flake.lock +++ b/flake.lock @@ -85,11 +85,11 @@ ] }, "locked": { - "lastModified": 1710888565, - "narHash": "sha256-s9Hi4RHhc6yut4EcYD50sZWRDKsugBJHSbON8KFwoTw=", + "lastModified": 1712386041, + "narHash": "sha256-dA82pOMQNnCJMAsPG7AXG35VmCSMZsJHTFlTHizpKWQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "f33900124c23c4eca5831b9b5eb32ea5894375ce", + "rev": "d6bb9f934f2870e5cbc5b94c79e9db22246141ff", "type": "github" }, "original": { @@ -154,11 +154,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1711519547, - "narHash": "sha256-Q7YmSCUJmDl71fJv/zD9lrOCJ1/SE/okZ2DsrmRjzhY=", + "lastModified": 1712055707, + "narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "7d47a32e5cd1ea481fab33c516356ce27c8cef4a", + "rev": "e35aed5fda3cc79f88ed7f1795021e559582093a", "type": "github" }, "original": { @@ -202,11 +202,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1711233294, - "narHash": "sha256-eEu5y4J145BYDw9o/YEmeJyqh8blgnZwuz9k234zuWc=", + "lastModified": 1711819797, + "narHash": "sha256-tNeB6emxj74Y6ctwmsjtMlzUMn458sBmwnD35U5KIM4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ac6bdf6181666ebb4f90dd20f31e2fa66ede6b68", + "rev": "2b4e3ca0091049c6fbb4908c66b05b77eaef9f0c", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1711643963, - "narHash": "sha256-Uv2+rRDTg+olOJ6k8cjlcag24BDMMDrHFJn2alauOZI=", + "lastModified": 1712453419, + "narHash": "sha256-lanMHRPtuW7v/5J3QsRQ5ZzWEYXomVRqzPBw45XF/Ys=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b2245daba6d9b667166b54921d370f937ca60902", + "rev": "092bd1b943ff26449b95a6e74c14185119bbc4f1", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1711460390, - "narHash": "sha256-akSgjDZL6pVHEfSE6sz1DNSXuYX6hq+P/1Z5IoYWs7E=", + "lastModified": 1712310679, + "narHash": "sha256-XgC/a/giEeNkhme/AV1ToipoZ/IVm1MV2ntiK4Tm+pw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "44733514b72e732bd49f5511bd0203dea9b9a434", + "rev": "72da83d9515b43550436891f538ff41d68eecc7f", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1711635893, - "narHash": "sha256-ULay7PLILr2BEdySdctFKTsfV4fmI1/hNiZPKEVuvWo=", + "lastModified": 1712439993, + "narHash": "sha256-dwtJxHYg6EJg5LVfcpRcwlUOxqCGLGlndB7YrbNqcC4=", "owner": "nix-community", "repo": "NUR", - "rev": "0ccb18994cca45444b862482fe4197717ea2cff4", + "rev": "ef7e3ecaf9f58150db1e00d01ea9985b0f8d9756", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1711249319, - "narHash": "sha256-N+Pp3/8H+rd7cO71VNV/ovV/Kwt+XNeUHNhsmyTabdM=", + "lastModified": 1711855048, + "narHash": "sha256-HxegAPnQJSC4cbEbF4Iq3YTlFHZKLiNTk8147EbLdGg=", "owner": "Mic92", "repo": "sops-nix", - "rev": "405987a66cce9a4a82f321f11b205982a7127c88", + "rev": "99b1e37f9fc0960d064a7862eb7adfb92e64fa10", "type": "github" }, "original": { From 5c1a7d069f54fe3e6397bf0f8010beb9befd554e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 10 Apr 2024 07:11:24 +0000 Subject: [PATCH 069/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nix-pre-commit-hooks': 'github:cachix/pre-commit-hooks.nix/e35aed5fda3cc79f88ed7f1795021e559582093a' (2024-04-02) → 'github:cachix/pre-commit-hooks.nix/70f504012f0a132ac33e56988e1028d88a48855c' (2024-04-08) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/72da83d9515b43550436891f538ff41d68eecc7f' (2024-04-05) → 'github:nixos/nixpkgs/d272ca50d1f7424fbfcd1e6f1c9e01d92f6da167' (2024-04-08) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/092bd1b943ff26449b95a6e74c14185119bbc4f1' (2024-04-07) → 'github:NixOS/nixpkgs/949fe90552a65bb7c03d72dd03e3e1383c5f9122' (2024-04-10) • Updated input 'nur': 'github:nix-community/NUR/ef7e3ecaf9f58150db1e00d01ea9985b0f8d9756' (2024-04-06) → 'github:nix-community/NUR/f8e01e52fb1c4007d66d178f0205a9eec9bf54f5' (2024-04-10) • Updated input 'sops-nix': 'github:Mic92/sops-nix/99b1e37f9fc0960d064a7862eb7adfb92e64fa10' (2024-03-31) → 'github:Mic92/sops-nix/538c114cfdf1f0458f507087b1dcf018ce1c0c4c' (2024-04-08) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/2b4e3ca0091049c6fbb4908c66b05b77eaef9f0c' (2024-03-30) → 'github:NixOS/nixpkgs/e38d7cb66ea4f7a0eb6681920615dfcc30fc2920' (2024-04-06) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index f259512..d2fdfa6 100644 --- a/flake.lock +++ b/flake.lock @@ -154,11 +154,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1712055707, - "narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=", + "lastModified": 1712579741, + "narHash": "sha256-igpsH+pa6yFwYOdah3cFciCk8gw+ytniG9quf5f/q84=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "e35aed5fda3cc79f88ed7f1795021e559582093a", + "rev": "70f504012f0a132ac33e56988e1028d88a48855c", "type": "github" }, "original": { @@ -202,11 +202,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1711819797, - "narHash": "sha256-tNeB6emxj74Y6ctwmsjtMlzUMn458sBmwnD35U5KIM4=", + "lastModified": 1712437997, + "narHash": "sha256-g0whLLwRvgO2FsyhY8fNk+TWenS3jg5UdlWL4uqgFeo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2b4e3ca0091049c6fbb4908c66b05b77eaef9f0c", + "rev": "e38d7cb66ea4f7a0eb6681920615dfcc30fc2920", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1712453419, - "narHash": "sha256-lanMHRPtuW7v/5J3QsRQ5ZzWEYXomVRqzPBw45XF/Ys=", + "lastModified": 1712732900, + "narHash": "sha256-3WatyifPmxpCeADFwLsGnHzAOyY86T+O/ZZrkDnL8Hk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "092bd1b943ff26449b95a6e74c14185119bbc4f1", + "rev": "949fe90552a65bb7c03d72dd03e3e1383c5f9122", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1712310679, - "narHash": "sha256-XgC/a/giEeNkhme/AV1ToipoZ/IVm1MV2ntiK4Tm+pw=", + "lastModified": 1712588820, + "narHash": "sha256-y31s5idk3jMJMAVE4Ud9AdI7HT3CgTAeMTJ0StqKN7Y=", "owner": "nixos", "repo": "nixpkgs", - "rev": "72da83d9515b43550436891f538ff41d68eecc7f", + "rev": "d272ca50d1f7424fbfcd1e6f1c9e01d92f6da167", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1712439993, - "narHash": "sha256-dwtJxHYg6EJg5LVfcpRcwlUOxqCGLGlndB7YrbNqcC4=", + "lastModified": 1712732516, + "narHash": "sha256-2kR592l8VvcZ3QHBEvRmJmjS6FF9aHowLBXS5uXvKBA=", "owner": "nix-community", "repo": "NUR", - "rev": "ef7e3ecaf9f58150db1e00d01ea9985b0f8d9756", + "rev": "f8e01e52fb1c4007d66d178f0205a9eec9bf54f5", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1711855048, - "narHash": "sha256-HxegAPnQJSC4cbEbF4Iq3YTlFHZKLiNTk8147EbLdGg=", + "lastModified": 1712617241, + "narHash": "sha256-a4hbls4vlLRMciv62YrYT/Xs/3Cubce8WFHPUDWwzf8=", "owner": "Mic92", "repo": "sops-nix", - "rev": "99b1e37f9fc0960d064a7862eb7adfb92e64fa10", + "rev": "538c114cfdf1f0458f507087b1dcf018ce1c0c4c", "type": "github" }, "original": { From 421cb222e45ebd0b24255dc3781ccc4814a38dfe Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 10 Apr 2024 18:50:52 +0000 Subject: [PATCH 070/562] Change instance name The responsibility shifted to Digitaler Dienst GmbH --- hosts/weinturm-pretix-prod/services/pretix.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hosts/weinturm-pretix-prod/services/pretix.nix b/hosts/weinturm-pretix-prod/services/pretix.nix index 9c93e6a..d1ce2f6 100644 --- a/hosts/weinturm-pretix-prod/services/pretix.nix +++ b/hosts/weinturm-pretix-prod/services/pretix.nix @@ -6,7 +6,7 @@ in { services.pretix = { enable = true; - instanceName = "Weinturm Open Air"; + instanceName = "Digitaler Dienst GmbH"; domain = "tickets.weinturm-open-air.de"; extraDomains = [ "tickets.weinturm.jalr.de" @@ -28,6 +28,7 @@ in from = "no-reply@tickets.weinturm-open-air.de"; admins = [ "mail@jalr.de" + "pretix@digitaler-dienst.gmbh" ]; }; gunicornWorkers = 4; From a5249410bb7838ba41655bee83dc5bfbfb86bb4f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 10 Apr 2024 19:08:59 +0000 Subject: [PATCH 071/562] Add domain `tickets.buendnis-gegen-rechts-nea.de` --- hosts/weinturm-pretix-prod/services/pretix.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/weinturm-pretix-prod/services/pretix.nix b/hosts/weinturm-pretix-prod/services/pretix.nix index d1ce2f6..895e166 100644 --- a/hosts/weinturm-pretix-prod/services/pretix.nix +++ b/hosts/weinturm-pretix-prod/services/pretix.nix @@ -12,6 +12,7 @@ in "tickets.weinturm.jalr.de" "tickets.wasted-openair.de" "oel.wasted-openair.de" + "tickets.buendnis-gegen-rechts-nea.de" ]; enableTls = true; enableRegistration = false; From a1d4520510a382ae6df873858182af5340c57768 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 19 Apr 2024 15:38:46 +0000 Subject: [PATCH 072/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nix-pre-commit-hooks': 'github:cachix/pre-commit-hooks.nix/70f504012f0a132ac33e56988e1028d88a48855c' (2024-04-08) → 'github:cachix/pre-commit-hooks.nix/40e6053ecb65fcbf12863338a6dcefb3f55f1bf8' (2024-04-12) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/d272ca50d1f7424fbfcd1e6f1c9e01d92f6da167' (2024-04-08) → 'github:nixos/nixpkgs/e402c3eb6d88384ca6c52ef1c53e61bdc9b84ddd' (2024-04-17) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/949fe90552a65bb7c03d72dd03e3e1383c5f9122' (2024-04-10) → 'github:NixOS/nixpkgs/cc5b30542b0202032f2ad5792cfa3955446fdfdf' (2024-04-19) • Updated input 'nur': 'github:nix-community/NUR/f8e01e52fb1c4007d66d178f0205a9eec9bf54f5' (2024-04-10) → 'github:nix-community/NUR/e16ee8a64f1ab6bfbd54f24985141a0bd1243c29' (2024-04-19) • Updated input 'sops-nix': 'github:Mic92/sops-nix/538c114cfdf1f0458f507087b1dcf018ce1c0c4c' (2024-04-08) → 'github:Mic92/sops-nix/a929a011a09db735abc45a8a45d1ff7fdee62755' (2024-04-19) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/e38d7cb66ea4f7a0eb6681920615dfcc30fc2920' (2024-04-06) → 'github:NixOS/nixpkgs/8494ae076b7878d61a7d2d25e89a847fe8f8364c' (2024-04-18) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index d2fdfa6..c9f07a6 100644 --- a/flake.lock +++ b/flake.lock @@ -154,11 +154,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1712579741, - "narHash": "sha256-igpsH+pa6yFwYOdah3cFciCk8gw+ytniG9quf5f/q84=", + "lastModified": 1712897695, + "narHash": "sha256-nMirxrGteNAl9sWiOhoN5tIHyjBbVi5e2tgZUgZlK3Y=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "70f504012f0a132ac33e56988e1028d88a48855c", + "rev": "40e6053ecb65fcbf12863338a6dcefb3f55f1bf8", "type": "github" }, "original": { @@ -202,11 +202,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1712437997, - "narHash": "sha256-g0whLLwRvgO2FsyhY8fNk+TWenS3jg5UdlWL4uqgFeo=", + "lastModified": 1713434076, + "narHash": "sha256-+/p5edwlkqKZc6GDAQl+92Hoe1f3NNbUF9uj+X9H3pU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e38d7cb66ea4f7a0eb6681920615dfcc30fc2920", + "rev": "8494ae076b7878d61a7d2d25e89a847fe8f8364c", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1712732900, - "narHash": "sha256-3WatyifPmxpCeADFwLsGnHzAOyY86T+O/ZZrkDnL8Hk=", + "lastModified": 1713540478, + "narHash": "sha256-biYsnIjsOvc4mNfcAv/bpHGJ2eHBaNpukUzmf1YFcRU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "949fe90552a65bb7c03d72dd03e3e1383c5f9122", + "rev": "cc5b30542b0202032f2ad5792cfa3955446fdfdf", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1712588820, - "narHash": "sha256-y31s5idk3jMJMAVE4Ud9AdI7HT3CgTAeMTJ0StqKN7Y=", + "lastModified": 1713344939, + "narHash": "sha256-jpHkAt0sG2/J7ueKnG7VvLLkBYUMQbXQ2L8OBpVG53s=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d272ca50d1f7424fbfcd1e6f1c9e01d92f6da167", + "rev": "e402c3eb6d88384ca6c52ef1c53e61bdc9b84ddd", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1712732516, - "narHash": "sha256-2kR592l8VvcZ3QHBEvRmJmjS6FF9aHowLBXS5uXvKBA=", + "lastModified": 1713540396, + "narHash": "sha256-mc9hP0I2K2I23fx0py4bp6k28liXgBRilVQRc5hb3LU=", "owner": "nix-community", "repo": "NUR", - "rev": "f8e01e52fb1c4007d66d178f0205a9eec9bf54f5", + "rev": "e16ee8a64f1ab6bfbd54f24985141a0bd1243c29", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1712617241, - "narHash": "sha256-a4hbls4vlLRMciv62YrYT/Xs/3Cubce8WFHPUDWwzf8=", + "lastModified": 1713532771, + "narHash": "sha256-vfKxhYVMzG2tg48/1rewBoSLCrKIjQsG1j7Nm/Y2gf4=", "owner": "Mic92", "repo": "sops-nix", - "rev": "538c114cfdf1f0458f507087b1dcf018ce1c0c4c", + "rev": "a929a011a09db735abc45a8a45d1ff7fdee62755", "type": "github" }, "original": { From 52e05f138e25e0379e978f3543874c45d9197f96 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 21 Apr 2024 23:19:22 +0000 Subject: [PATCH 073/562] Add plant light --- hosts/iron/secrets.yaml | 6 +-- .../esphome/devices/pflanzenleuchte.yaml | 54 +++++++++++++++++++ 2 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 hosts/iron/services/esphome/devices/pflanzenleuchte.yaml diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index f863483..81dc763 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -9,7 +9,7 @@ dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] -esphome: ENC[AES256_GCM,data:mM7IJLUtLcEZpUDAXGEs5sddcNlcEz59o9LCavP3UPxrIuUrDuMPZ/PiLZfKZLeEDBtUUpGqCzDkki4VFZNNUr0ZDonqpQypQ7U/uedfMZvRei8jdsyMGuJ0V4e2rgNGvLhBI62Wh2wLEC1ct8fz8l8H6qKHvnh7ABV2uaCebKZ7ea6vdgjPmYVd5lyYBWcbIfLK+M4xnLsxHnJTl9S67xcw3lj7K9eGETTh6yzn78IdBMcfbtM5KMRlTr/OFACN3YIpaTp3Va/liSuHu9sljze++5QF/UYR9qayzDen0U64aLoUtkqD2kRKQs9Xb6KJJQID7HGBY7DXS4A1VL3KXN2I06hsp8dttgYT+wb4ZhvLdoGTkEj45wlTx7ZxdAGXBJfikpJveYp0IqboqpPHqGKhg08ZQG4yiDzqZzaODRiAIBDn9t1iwfpcJU4CoBIs2PpBQOyTMPIWQzcx27UZmoFogNEPQ+RV7pBE+pzjKyVnGxOEsp79w4nbXXmoDutIM5eFaGDGSIKpNwTfqXxk5IXIWMCYSZIzZHk0TI56UPlWZpyrBawlCAg0fy+y3oa8Bjg1GXVqhzhVNpeGOEk149wlzPpeEaKhA1lHAQ0k+KFtMKmyVPasMBnN/klZyIEm6/v0SteP3nXpDNgRgum7Pm8BrJkk9FUahluD/LbvgRgwOGaUvao4Yq/pGxR4Oyx0iRf7I9JLU/3UIDfL81QKKgY/U4UIrsWRWLsV3TdCglBs4WU52E/H3X5ZmNAAfzHoKtY149tvqPEKCv8mCfkm7ajb81cj4YFX8vLYKb89hbdGw7G2lhKdzenL2v2JNkOkmZqG0EGp+c9Doe333WWEix1IIE3uHh5SWCgtHUiB19Tc3+A122/9Bgbuvv9v/mb455asAQQLN3954s1x29OqkJvWXMIL7wxf0JA45OOcOPZfLVxzjvISxW1mMMYG21+aBDquj9Y9f95WAXDzXZfcgMKzkR0eUwkoF7dJ85Gl/cGF8fCp7U5WWXZRC9ORwR+W9hmF2Jj2DpCXhuAMy9/aC8F5Oz4fpZ/6NSlP5ywj+6nRhSQvbq7r8xzJO/uBRQtXTXoQmm+VXFeNkUkikh80B0GoKYS/QqtqYrsM,iv:PIJv3Gn7oJuA6BGul1EUKfBa1R9+fHTTMN787YaUMwM=,tag:4wC5yPLsxjRd58zSnoiZlg==,type:str] +esphome: ENC[AES256_GCM,data:tUZeokkcOM15CVw/4Zjrvwm+Q/MDylf5syeWVmPJcwYjzhDwm5SjOdcswTurz8imZwRdUfmgkPDicdQucEAiV4ml69IDo5YZNIoYZreE524wVTHkBT3kie67qANIHjMdt0ldwaplQcseYzRXvSC7AO457TjfNqA7o54IknAKGLxN2KCBr2KHDNxXG7zcpdT4eAo1soLL9tBfiiXa8TWZ7DGNQDV4o+FSc6GTIlHlNCJjqKyrKLwBsbdcuzgqCkhZEIwAUuHw4pSrcHZrojjIx7TXjdkMX8pOYQTsxHzXyURUbrZHHIFxankEIRAkrb0RJCuz3lkskmL9kRpdtlyfm/uJRwvvwpl7gGjbAHltTEkZ/0W12GpN1f7YDKO/uJVWhttaNbE9d/94H6QiGTCGJRpUtUfxsR0UgHdrEWJG3QF3mksLHzdRdaa8j/mBgE6bNuXZdDo8Xz4igxlhGdGqSWvo9NwMGCtz2UydTiVdFG3P4gTYMXdvQ6DdAIZwNQmGoCIP+GeOuen4cBuZjqqQB5kkGyLiYh6Pg2U0cC3w6XW6eR6rgeiDpsNiYEhQISpVGWCTjjr3r9EbWotjC0n1IowJ8LlV7pBSgU91rMsSvFeJNVztQweLZC/+HcoGPmtUatOYNgfbX7xEUPtM7IgMv8OJXwefJoisdfPMXy7CtKaiYdNhDev1MwOzbUfmCLwumGvQmEr9C1ROGN0J8mc6h6jMNFYj+wZS8vUuYUkQXmAmIr09vRUGip3MieSfhJSMgGZlXT3AtohbJHgV1TBCKgIDSuI5/1H0v4z7pP3WXGP5EqCJKDcQrCyAL/r8xItIWVmVzfv2XG1r6R+77Zc5YETQXIZfPzb8GsnO/1/JIY05cZapj8SLnfXZz1zU4t8/Hd5lRElNgU2GlFOkObsMqxlYfbxu64gTj/ixQicz5c4CP22SZ8lw/5cqn6JeDF6l5c9OPHBGw5bh8kLINGWkO0UbFn//OR9ZG9nob6XreGSsIiJyLCYRaOagqemp38vJ+byvk2EF8vw3K73pZ48O3jWHye8fKKQWTLvsQ3G3bmXIsF7Dh+/X57m33hvC0NsRuy5oQR9reHIHHisWOVQH7tF0tcXHd4m1kXsSGy4SCe9pIdH/BxF+MOTKFO2qw57xjzf1ST5cqwKPnm8WxrX462uwsLtupkx+uuyPyX+oiCUAJCpsrZrqZSN3U+IyEibK5dTLVM+9b48m3QpK/TojWEfOo0/Y0YYmqO+vVL7qtX3SL0j/SR4=,iv:dUgjOLQZYQm80z8VO1ZTuiTnKiI7hPqzeWduoE2YIL8=,tag:pswxnVwAu3WkCYVHjCuIjQ==,type:str] sops: kms: [] gcp_kms: [] @@ -25,8 +25,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-03-10T17:10:12Z" - mac: ENC[AES256_GCM,data:cjetZHtcYh+qe72Mv1PtQtK8vtQVRCSdqoXNmtv0Vy/I+gCwzVqxX2/DH+8KAirpfG7ctA9IxCX72uAPw/DEHyjhG/znZHma01XYrfU+sBS4wpguDOvunQDj/hoiAsOtZu/7IjkDfydaaCCtmBaqLcDCF5tps1Co88qqFlaL8iA=,iv:saNQjaI57dmLsnAJY1F7OGYfdocFZErkNtSkRWBW6Mg=,tag:gjkH73xCS30FDSPup4DdXw==,type:str] + lastmodified: "2024-04-21T19:55:48Z" + mac: ENC[AES256_GCM,data:oIdVZu3nsl14zJouYv0BXjMv5ytR+8Y3u0fQ6/J0uKdXwBiulBapKeji7c5TWrxkimcQlbkutg/BtRTEUaFzq9IzdgQKrBJqpzvXtF15qZLIK809UQZgLRTMUVpskZw0qJt+DEmv32/3RRvWiERcs0P6umzV45vOvHqJOsU0Hbk=,iv:xqzn+XaGVLeeFm0uc8zrWflUpB76npS3qCZ6IiFbDwo=,tag:fsrcAVGsGTVG2qc1OX+4qg==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/esphome/devices/pflanzenleuchte.yaml b/hosts/iron/services/esphome/devices/pflanzenleuchte.yaml new file mode 100644 index 0000000..d961943 --- /dev/null +++ b/hosts/iron/services/esphome/devices/pflanzenleuchte.yaml @@ -0,0 +1,54 @@ +esphome: + name: "pflanzenleuchte" + friendly_name: "Pflanzenleuchte" + platformio_options: + board_build.flash_mode: dio + +esp32: + board: esp32-c3-devkitm-1 + variant: ESP32C3 + framework: + type: esp-idf + +logger: + +api: + encryption: + key: !secret apikey_pflanzenleuchte + +ota: + password: !secret otapass_pflanzenleuchte + +wifi: + ssid: !secret wifi_ssid_bw + password: !secret wifi_password_bw + domain: .iot.bw.jalr.de + enable_on_boot: True + fast_connect: On + output_power: 8.5 + +output: + - platform: ledc + pin: GPIO0 + id: output_royal_blue + inverted: true + min_power: 0.25 + zero_means_zero: true + - platform: ledc + pin: GPIO1 + id: output_deep_red + inverted: true + min_power: 0.25 + zero_means_zero: true + +light: + - platform: monochromatic + name: "Royalblau" + id: royal_blue + output: output_royal_blue + gamma_correct: false + - platform: monochromatic + name: "Tiefrot" + id: deep_red + output: output_deep_red + gamma_correct: false From 8441cfdbe36f7760db1d5ad419adc6fc0bd51eef Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 28 Apr 2024 23:10:17 +0000 Subject: [PATCH 074/562] Add doorlock --- hosts/iron/secrets.yaml | 6 +- .../services/esphome/devices/tuerschloss.yaml | 63 +++++++++++++++++++ 2 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 hosts/iron/services/esphome/devices/tuerschloss.yaml diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 81dc763..cbc2b03 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -9,7 +9,7 @@ dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] -esphome: ENC[AES256_GCM,data:tUZeokkcOM15CVw/4Zjrvwm+Q/MDylf5syeWVmPJcwYjzhDwm5SjOdcswTurz8imZwRdUfmgkPDicdQucEAiV4ml69IDo5YZNIoYZreE524wVTHkBT3kie67qANIHjMdt0ldwaplQcseYzRXvSC7AO457TjfNqA7o54IknAKGLxN2KCBr2KHDNxXG7zcpdT4eAo1soLL9tBfiiXa8TWZ7DGNQDV4o+FSc6GTIlHlNCJjqKyrKLwBsbdcuzgqCkhZEIwAUuHw4pSrcHZrojjIx7TXjdkMX8pOYQTsxHzXyURUbrZHHIFxankEIRAkrb0RJCuz3lkskmL9kRpdtlyfm/uJRwvvwpl7gGjbAHltTEkZ/0W12GpN1f7YDKO/uJVWhttaNbE9d/94H6QiGTCGJRpUtUfxsR0UgHdrEWJG3QF3mksLHzdRdaa8j/mBgE6bNuXZdDo8Xz4igxlhGdGqSWvo9NwMGCtz2UydTiVdFG3P4gTYMXdvQ6DdAIZwNQmGoCIP+GeOuen4cBuZjqqQB5kkGyLiYh6Pg2U0cC3w6XW6eR6rgeiDpsNiYEhQISpVGWCTjjr3r9EbWotjC0n1IowJ8LlV7pBSgU91rMsSvFeJNVztQweLZC/+HcoGPmtUatOYNgfbX7xEUPtM7IgMv8OJXwefJoisdfPMXy7CtKaiYdNhDev1MwOzbUfmCLwumGvQmEr9C1ROGN0J8mc6h6jMNFYj+wZS8vUuYUkQXmAmIr09vRUGip3MieSfhJSMgGZlXT3AtohbJHgV1TBCKgIDSuI5/1H0v4z7pP3WXGP5EqCJKDcQrCyAL/r8xItIWVmVzfv2XG1r6R+77Zc5YETQXIZfPzb8GsnO/1/JIY05cZapj8SLnfXZz1zU4t8/Hd5lRElNgU2GlFOkObsMqxlYfbxu64gTj/ixQicz5c4CP22SZ8lw/5cqn6JeDF6l5c9OPHBGw5bh8kLINGWkO0UbFn//OR9ZG9nob6XreGSsIiJyLCYRaOagqemp38vJ+byvk2EF8vw3K73pZ48O3jWHye8fKKQWTLvsQ3G3bmXIsF7Dh+/X57m33hvC0NsRuy5oQR9reHIHHisWOVQH7tF0tcXHd4m1kXsSGy4SCe9pIdH/BxF+MOTKFO2qw57xjzf1ST5cqwKPnm8WxrX462uwsLtupkx+uuyPyX+oiCUAJCpsrZrqZSN3U+IyEibK5dTLVM+9b48m3QpK/TojWEfOo0/Y0YYmqO+vVL7qtX3SL0j/SR4=,iv:dUgjOLQZYQm80z8VO1ZTuiTnKiI7hPqzeWduoE2YIL8=,tag:pswxnVwAu3WkCYVHjCuIjQ==,type:str] +esphome: ENC[AES256_GCM,data:ZM6dbmsnXoB4NRFmq2L5qK5bcSC52zSPdUxtWW8VN8845k6p76l7s6V6ZXl6lev4r1WbfSmz/GS/a1jjO3SddLct8/FfLAlJ6X4sTVb7QI7Cez0C1oDLQq9MwBnv72j0llCdB+kkknCoKycvMWT0W1To8wYcYnS26QN3SZM1IQfKNIJFlniD8dYrchbA4DuuDcvKt0JlgswU9rloJ8sPDkVh6DoUjGZ9CnLupy7zyCNVbx/wFjhoAN1QcAROxnLGvkL/P7i5LYXIEgNJqFswsF1n9NEFnsWKQMIMeMM5pKRzmAfH1DVAxWmlZe13cNZ/q4C7cLXIsQELHhlZpLXiuD0beV3/ucmQ/blY9MnkWZEJk5wCz4VRQ8/T+RMFNjXxpKxtIkO9BUF66m+BHf4jdImCSdm/PgYAnAMBUlOfw9JUjtOJpl6LlcacECn29fCztTkWQpshJ1yq3AIM+pJsbFEvAAWM1poGHnMGwtIY7hjFtCWsoqt+Vm9qp6sPP40GLbQL9F2avpP5zy6nOG8S9U5l11NwckO6CWJY0jeW7VO59rR7o2T+5UIPUuxzmErPxBRc45tjwnt4ktqVomiFQJWFLDF4V7b3Y/Iqj5N0jtO7zy0iYeVvEO1CBLvhOx9Su5uoCs0nlY19i00USK/nDX4rGBdhAu/EfbDj3TuoAtwqFIjB9b2kJXP2tFwoR5uiKLXnbpDPPrpawv4Y4WAzV1UybBsXyHYbTn5+lveAEJos3cCPdPQVQumGWCaf7pDKzsV24xnuMmfkXvUH/Y9pVCLJ4MA/5378A6yjZuznSUmrtKd6cHe6MlEs5SRkZvbxbk0+W5AROffo9TGV1kYSkUw6QWkVgv8//VW9Mx8tFs0I5M07J/DSA+Zc8yEbcr6g+Mttbhg1wSmw2lpG1kG/IMjWkGtWClj5fjwIR23Yzoc2rjMutiaF4YZsa2RoVPFGfrnEmttQoIL1AMRQaeOypyGY5KGRCD1bfsZ2C5rid8pKOoJFAxl6cEWbeicfXZR4WqY6ZBjvGk4kcGYkhSioKy5b4v0VJ470RH5ywbMLyJg9JOMCt2cRD9epEJp+eK3d711F+mkxBEF58WTkg05yC346RmIy2hwUtMfpbJy9t4008j7gbx3RRTzTveADalu9/MAW2grEhgiTO6hSQGGCX7wCTR2VbWSV/G3gYfvFA+/8K1GyrCr4yqtWGSpneUwnphS3NV/yakC32wO3v2W+ANoL8B+PvNjv147+/5Q5CDiWckqW4EQokU1SievQn5m23TCuLjKmjAShSCqLXdt08G1uErTvD1kxvfe8huME9ChGbaJLr3v3s9ijXHQW21S9BQm+UhyOQ3wD1x9uclKN5Ac6rv2IllRMQYxaPRcT6VllW0Kq0LWDdOQ=,iv:ioMyzAp4UGkkqCAVSudT+s7YziwF8sTkmp4K8MGIA0w=,tag:yPWrzujN4EsAODdH5q5bvQ==,type:str] sops: kms: [] gcp_kms: [] @@ -25,8 +25,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-04-21T19:55:48Z" - mac: ENC[AES256_GCM,data:oIdVZu3nsl14zJouYv0BXjMv5ytR+8Y3u0fQ6/J0uKdXwBiulBapKeji7c5TWrxkimcQlbkutg/BtRTEUaFzq9IzdgQKrBJqpzvXtF15qZLIK809UQZgLRTMUVpskZw0qJt+DEmv32/3RRvWiERcs0P6umzV45vOvHqJOsU0Hbk=,iv:xqzn+XaGVLeeFm0uc8zrWflUpB76npS3qCZ6IiFbDwo=,tag:fsrcAVGsGTVG2qc1OX+4qg==,type:str] + lastmodified: "2024-04-28T22:19:35Z" + mac: ENC[AES256_GCM,data:a9qs5bOAjYVfW6HBk6wtzGinR+hPy/ddXTqW24YtFbA0ws2bWXqGjZjy28oKZzAdzq53AcsO/XqJY1q8CD0iJJOCw1VBud6GjYBfEO3sT4zBXEvteacz0Qa3mk8GBs5NmoKMvuOrYglLFDguTYUG3AKAgBc6Hb3P5asZrdvo0JA=,iv:JxZXtMgifdJ7oSh+CAFG3lbUY9y+Zf/S9BJrTxPhaFk=,tag:q05afBRE3XGt0ZKqufM+cw==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/esphome/devices/tuerschloss.yaml b/hosts/iron/services/esphome/devices/tuerschloss.yaml new file mode 100644 index 0000000..8886c03 --- /dev/null +++ b/hosts/iron/services/esphome/devices/tuerschloss.yaml @@ -0,0 +1,63 @@ +esphome: + name: "tuerschloss" + friendly_name: "Türschloss" + platformio_options: + board_build.flash_mode: dio + +esp32: + board: esp32-c3-devkitm-1 + variant: ESP32C3 + framework: + type: esp-idf + +logger: + +api: + encryption: + key: !secret apikey_tuerschloss + +ota: + password: !secret otapass_tuerschloss + +wifi: + ssid: !secret wifi_ssid_bw + password: !secret wifi_password_bw + domain: .iot.bw.jalr.de + enable_on_boot: True + fast_connect: On + output_power: 8.5 + +output: + - platform: gpio + pin: + number: GPIO0 + inverted: true + mode: + output: true + open_drain: true + id: btn_unlock + - platform: gpio + pin: + number: GPIO1 + inverted: true + mode: + output: true + open_drain: true + id: btn_lock + +lock: + - platform: template + name: "Türschloss" + id: tuerschloss + optimistic: true + assumed_state: true + lock_action: + - output.turn_on: btn_lock + - delay: 250ms + - output.turn_off: btn_lock + - delay: 5s + unlock_action: + - output.turn_on: btn_unlock + - delay: 250ms + - output.turn_off: btn_unlock + - delay: 5s From b395cde724ed4b5a0f34e5baae61fc7006241819 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 30 Apr 2024 08:25:27 +0000 Subject: [PATCH 075/562] Replace rnix with nixd --- home-manager/modules/neovim.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home-manager/modules/neovim.nix b/home-manager/modules/neovim.nix index 36cac80..997a1f9 100644 --- a/home-manager/modules/neovim.nix +++ b/home-manager/modules/neovim.nix @@ -112,8 +112,8 @@ }; # Nix - rnix = { - cmd = [ "${pkgs.rnix-lsp}/bin/rnix-lsp" ]; + nixd = { + cmd = [ "${pkgs.nixd}/bin/nixd" ]; }; # PHP From 0042b62652a9908f3e46f417b670fc643eaac555 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 4 May 2024 14:50:59 +0000 Subject: [PATCH 076/562] Improve firewalling --- hosts/aluminium/services/dnsmasq.nix | 20 ++++++++++++++----- hosts/aluminium/services/unifi-controller.nix | 5 +++-- hosts/iron/services/dnsmasq.nix | 16 ++++++++++----- hosts/iron/services/unifi-controller.nix | 5 +++-- 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/hosts/aluminium/services/dnsmasq.nix b/hosts/aluminium/services/dnsmasq.nix index 98e4056..6363be1 100644 --- a/hosts/aluminium/services/dnsmasq.nix +++ b/hosts/aluminium/services/dnsmasq.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ lib, pkgs, ... }: let stateDir = "/var/lib/dnsmasq"; @@ -42,8 +42,18 @@ in }; }; - networking.firewall = { - allowedUDPPorts = [ 53 67 ]; - allowedTCPPorts = [ 53 ]; - }; + networking.firewall.interfaces = lib.attrsets.genAttrs [ + "heizung" + "iot" + "lechner" + "pv" + "sprechanlage" + "voice" + ] + ( + interface: { + allowedUDPPorts = [ 53 67 ]; + allowedTCPPorts = [ 53 ]; + } + ); } diff --git a/hosts/aluminium/services/unifi-controller.nix b/hosts/aluminium/services/unifi-controller.nix index 8004941..3442337 100644 --- a/hosts/aluminium/services/unifi-controller.nix +++ b/hosts/aluminium/services/unifi-controller.nix @@ -6,8 +6,9 @@ in { services.unifi = { enable = true; - openFirewall = true; unifiPackage = pkgs.unifi; }; - networking.firewall.allowedTCPPorts = [ ports.unifi.tcp ]; + networking.firewall.interfaces.lechner.allowedTCPPorts = [ + ports.unifi.tcp + ]; } diff --git a/hosts/iron/services/dnsmasq.nix b/hosts/iron/services/dnsmasq.nix index 1498ca8..04c537a 100644 --- a/hosts/iron/services/dnsmasq.nix +++ b/hosts/iron/services/dnsmasq.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ lib, pkgs, ... }: let stateDir = "/var/lib/dnsmasq"; @@ -37,8 +37,14 @@ in }; }; - networking.firewall = { - allowedUDPPorts = [ 53 67 ]; - allowedTCPPorts = [ 53 ]; - }; + networking.firewall.interfaces = lib.attrsets.genAttrs [ + "enp2s4" + "iot" + ] + ( + interface: { + allowedUDPPorts = [ 53 67 ]; + allowedTCPPorts = [ 53 ]; + } + ); } diff --git a/hosts/iron/services/unifi-controller.nix b/hosts/iron/services/unifi-controller.nix index 8004941..b5e4cac 100644 --- a/hosts/iron/services/unifi-controller.nix +++ b/hosts/iron/services/unifi-controller.nix @@ -6,8 +6,9 @@ in { services.unifi = { enable = true; - openFirewall = true; unifiPackage = pkgs.unifi; }; - networking.firewall.allowedTCPPorts = [ ports.unifi.tcp ]; + networking.firewall.interfaces.enp2s4.allowedTCPPorts = [ + ports.unifi.tcp + ]; } From 918cfe2c88088a3bc160da34882e4bbd856e2116 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 4 May 2024 20:33:31 +0000 Subject: [PATCH 077/562] Add script lights_off_except --- hosts/iron/services/home-assistant.nix | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index f5f3d37..774126b 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -126,6 +126,30 @@ in platform = "bluetooth_le_tracker"; } ]; + script = [ + { + lights_off_except = { + icon = "mdi:home-lightbulb"; + fields.exclude_lights.description = "Excluded lights as list"; + sequence = [ + { + service = "logbook.log"; + data_template = { + entity_id = "script.turn_off_lights"; + name = "Exclude log"; + message = "Turning of all lights except: {{ exclude_lights }}"; + }; + } + { + service = "light.turn_off"; + data_template.entity_id = '' + {{ states.light | rejectattr('entity_id', 'in', exclude_lights) | rejectattr('state', 'in', 'off') | join(',', attribute='entity_id') }} + ''; + } + ]; + }; + } + ]; }; }; From dc2e0b34616605521cc3d861c8152c27b92cd49f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 4 May 2024 21:25:53 +0000 Subject: [PATCH 078/562] Add calendar --- hosts/iron/secrets.yaml | 5 +++-- hosts/iron/services/home-assistant.nix | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index cbc2b03..bf9e09c 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -10,6 +10,7 @@ dkim-keys: synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] esphome: ENC[AES256_GCM,data:ZM6dbmsnXoB4NRFmq2L5qK5bcSC52zSPdUxtWW8VN8845k6p76l7s6V6ZXl6lev4r1WbfSmz/GS/a1jjO3SddLct8/FfLAlJ6X4sTVb7QI7Cez0C1oDLQq9MwBnv72j0llCdB+kkknCoKycvMWT0W1To8wYcYnS26QN3SZM1IQfKNIJFlniD8dYrchbA4DuuDcvKt0JlgswU9rloJ8sPDkVh6DoUjGZ9CnLupy7zyCNVbx/wFjhoAN1QcAROxnLGvkL/P7i5LYXIEgNJqFswsF1n9NEFnsWKQMIMeMM5pKRzmAfH1DVAxWmlZe13cNZ/q4C7cLXIsQELHhlZpLXiuD0beV3/ucmQ/blY9MnkWZEJk5wCz4VRQ8/T+RMFNjXxpKxtIkO9BUF66m+BHf4jdImCSdm/PgYAnAMBUlOfw9JUjtOJpl6LlcacECn29fCztTkWQpshJ1yq3AIM+pJsbFEvAAWM1poGHnMGwtIY7hjFtCWsoqt+Vm9qp6sPP40GLbQL9F2avpP5zy6nOG8S9U5l11NwckO6CWJY0jeW7VO59rR7o2T+5UIPUuxzmErPxBRc45tjwnt4ktqVomiFQJWFLDF4V7b3Y/Iqj5N0jtO7zy0iYeVvEO1CBLvhOx9Su5uoCs0nlY19i00USK/nDX4rGBdhAu/EfbDj3TuoAtwqFIjB9b2kJXP2tFwoR5uiKLXnbpDPPrpawv4Y4WAzV1UybBsXyHYbTn5+lveAEJos3cCPdPQVQumGWCaf7pDKzsV24xnuMmfkXvUH/Y9pVCLJ4MA/5378A6yjZuznSUmrtKd6cHe6MlEs5SRkZvbxbk0+W5AROffo9TGV1kYSkUw6QWkVgv8//VW9Mx8tFs0I5M07J/DSA+Zc8yEbcr6g+Mttbhg1wSmw2lpG1kG/IMjWkGtWClj5fjwIR23Yzoc2rjMutiaF4YZsa2RoVPFGfrnEmttQoIL1AMRQaeOypyGY5KGRCD1bfsZ2C5rid8pKOoJFAxl6cEWbeicfXZR4WqY6ZBjvGk4kcGYkhSioKy5b4v0VJ470RH5ywbMLyJg9JOMCt2cRD9epEJp+eK3d711F+mkxBEF58WTkg05yC346RmIy2hwUtMfpbJy9t4008j7gbx3RRTzTveADalu9/MAW2grEhgiTO6hSQGGCX7wCTR2VbWSV/G3gYfvFA+/8K1GyrCr4yqtWGSpneUwnphS3NV/yakC32wO3v2W+ANoL8B+PvNjv147+/5Q5CDiWckqW4EQokU1SievQn5m23TCuLjKmjAShSCqLXdt08G1uErTvD1kxvfe8huME9ChGbaJLr3v3s9ijXHQW21S9BQm+UhyOQ3wD1x9uclKN5Ac6rv2IllRMQYxaPRcT6VllW0Kq0LWDdOQ=,iv:ioMyzAp4UGkkqCAVSudT+s7YziwF8sTkmp4K8MGIA0w=,tag:yPWrzujN4EsAODdH5q5bvQ==,type:str] +home-assistant: ENC[AES256_GCM,data:wcFMxDdRCHf/shO9v2WaGgrsa9J2WP62xFs=,iv:9ckeIO62cFZUo8fPyQj445CrJVTooNlwLapM/oTsrkk=,tag:mlfxtXDPsB3T79P9BX9oJQ==,type:str] sops: kms: [] gcp_kms: [] @@ -25,8 +26,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-04-28T22:19:35Z" - mac: ENC[AES256_GCM,data:a9qs5bOAjYVfW6HBk6wtzGinR+hPy/ddXTqW24YtFbA0ws2bWXqGjZjy28oKZzAdzq53AcsO/XqJY1q8CD0iJJOCw1VBud6GjYBfEO3sT4zBXEvteacz0Qa3mk8GBs5NmoKMvuOrYglLFDguTYUG3AKAgBc6Hb3P5asZrdvo0JA=,iv:JxZXtMgifdJ7oSh+CAFG3lbUY9y+Zf/S9BJrTxPhaFk=,tag:q05afBRE3XGt0ZKqufM+cw==,type:str] + lastmodified: "2024-05-04T20:56:17Z" + mac: ENC[AES256_GCM,data:hf0awSFMl+WYmfe2WgryQ2PnO01bl0F054CwjPgkG4LSPCIM5p83oVz8OZxFALrYJkQzEghrRMR7QH9p9YU4LGaS1Fi+UdI8n8yZ+7QqwusPDdhTAv1DcH3eNFmZxNNKx/M1C+ll4ufH28rn8aiYJDaoD0G7aFgd8lE0w8cB5ro=,iv:1CaROIk1+Xi190utju79HBXK5Y7zirNONIO7YefLuvg=,tag:I63TCEk/neHI7HK0j4x0hA==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index 774126b..e8eea7f 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -11,6 +11,12 @@ let ]; in { + sops.secrets.home-assistant = { + sopsFile = ../secrets.yaml; + owner = "root"; + group = "hass"; + mode = "0640"; + }; services.home-assistant = { enable = true; lovelaceConfig = { @@ -150,9 +156,25 @@ in }; } ]; + calendar = [ + { + platform = "caldav"; + username = "jalr@jalr.de"; + password = "!secret radicale"; + url = "https://cal.jalr.de/radicale"; + } + ]; }; }; + systemd.services.home-assistant.serviceConfig.ExecStartPre = [ + ( + pkgs.writeShellScript "home-assistant-secrets" '' + ln -sf "${config.sops.secrets.home-assistant.path}" "${config.services.home-assistant.configDir}/secrets.yaml" + '' + ) + ]; + systemd.tmpfiles.rules = [ "f ${config.services.home-assistant.configDir}/automations.yaml 0755 hass hass" "f ${config.services.home-assistant.configDir}/scenes.yaml 0755 hass hass" From c9b2a0bcca9d3904228c9fdfcd7d9ae8adfb7e3b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 7 May 2024 00:02:55 +0000 Subject: [PATCH 079/562] Fix lock state --- hosts/iron/services/esphome/devices/tuerschloss.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hosts/iron/services/esphome/devices/tuerschloss.yaml b/hosts/iron/services/esphome/devices/tuerschloss.yaml index 8886c03..4b8f7f5 100644 --- a/hosts/iron/services/esphome/devices/tuerschloss.yaml +++ b/hosts/iron/services/esphome/devices/tuerschloss.yaml @@ -49,15 +49,16 @@ lock: - platform: template name: "Türschloss" id: tuerschloss - optimistic: true assumed_state: true lock_action: - output.turn_on: btn_lock - delay: 250ms - output.turn_off: btn_lock - delay: 5s + - lambda: id(tuerschloss).publish_state(LOCK_STATE_LOCKED); unlock_action: - output.turn_on: btn_unlock - delay: 250ms - output.turn_off: btn_unlock - delay: 5s + - lambda: id(tuerschloss).publish_state(LOCK_STATE_UNLOCKED); From 00099c2f039905d97b371cb25f25dca1d9288663 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 7 May 2024 00:02:11 +0000 Subject: [PATCH 080/562] Add door intercom --- hosts/iron/secrets.yaml | 6 +- .../esphome/devices/tuersprechanlage.yaml | 70 +++++++++++++++++++ 2 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 hosts/iron/services/esphome/devices/tuersprechanlage.yaml diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index bf9e09c..33595e2 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -9,7 +9,7 @@ dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] -esphome: ENC[AES256_GCM,data:ZM6dbmsnXoB4NRFmq2L5qK5bcSC52zSPdUxtWW8VN8845k6p76l7s6V6ZXl6lev4r1WbfSmz/GS/a1jjO3SddLct8/FfLAlJ6X4sTVb7QI7Cez0C1oDLQq9MwBnv72j0llCdB+kkknCoKycvMWT0W1To8wYcYnS26QN3SZM1IQfKNIJFlniD8dYrchbA4DuuDcvKt0JlgswU9rloJ8sPDkVh6DoUjGZ9CnLupy7zyCNVbx/wFjhoAN1QcAROxnLGvkL/P7i5LYXIEgNJqFswsF1n9NEFnsWKQMIMeMM5pKRzmAfH1DVAxWmlZe13cNZ/q4C7cLXIsQELHhlZpLXiuD0beV3/ucmQ/blY9MnkWZEJk5wCz4VRQ8/T+RMFNjXxpKxtIkO9BUF66m+BHf4jdImCSdm/PgYAnAMBUlOfw9JUjtOJpl6LlcacECn29fCztTkWQpshJ1yq3AIM+pJsbFEvAAWM1poGHnMGwtIY7hjFtCWsoqt+Vm9qp6sPP40GLbQL9F2avpP5zy6nOG8S9U5l11NwckO6CWJY0jeW7VO59rR7o2T+5UIPUuxzmErPxBRc45tjwnt4ktqVomiFQJWFLDF4V7b3Y/Iqj5N0jtO7zy0iYeVvEO1CBLvhOx9Su5uoCs0nlY19i00USK/nDX4rGBdhAu/EfbDj3TuoAtwqFIjB9b2kJXP2tFwoR5uiKLXnbpDPPrpawv4Y4WAzV1UybBsXyHYbTn5+lveAEJos3cCPdPQVQumGWCaf7pDKzsV24xnuMmfkXvUH/Y9pVCLJ4MA/5378A6yjZuznSUmrtKd6cHe6MlEs5SRkZvbxbk0+W5AROffo9TGV1kYSkUw6QWkVgv8//VW9Mx8tFs0I5M07J/DSA+Zc8yEbcr6g+Mttbhg1wSmw2lpG1kG/IMjWkGtWClj5fjwIR23Yzoc2rjMutiaF4YZsa2RoVPFGfrnEmttQoIL1AMRQaeOypyGY5KGRCD1bfsZ2C5rid8pKOoJFAxl6cEWbeicfXZR4WqY6ZBjvGk4kcGYkhSioKy5b4v0VJ470RH5ywbMLyJg9JOMCt2cRD9epEJp+eK3d711F+mkxBEF58WTkg05yC346RmIy2hwUtMfpbJy9t4008j7gbx3RRTzTveADalu9/MAW2grEhgiTO6hSQGGCX7wCTR2VbWSV/G3gYfvFA+/8K1GyrCr4yqtWGSpneUwnphS3NV/yakC32wO3v2W+ANoL8B+PvNjv147+/5Q5CDiWckqW4EQokU1SievQn5m23TCuLjKmjAShSCqLXdt08G1uErTvD1kxvfe8huME9ChGbaJLr3v3s9ijXHQW21S9BQm+UhyOQ3wD1x9uclKN5Ac6rv2IllRMQYxaPRcT6VllW0Kq0LWDdOQ=,iv:ioMyzAp4UGkkqCAVSudT+s7YziwF8sTkmp4K8MGIA0w=,tag:yPWrzujN4EsAODdH5q5bvQ==,type:str] +esphome: ENC[AES256_GCM,data:ufIZkZo1aP/Th/8a+9srkJBqLqPQI/ymElIEBmTKzqsJ3HE/mx9QJ1aH0vGVed9W/wSJ+7+huFpB+pNAebJMohK/fAmAVG3lzgT0wKWw8g4u33VHb6X8FIW6q1+CYRnOCQsocgM4EX26YfzaxVpw9P4PF/abwB1bVzr9xnEL2JdJfstzxnR70dKO88WTolykysc443iDW80i0scH+sCh8JIfDrV+V0l3jT+woAeTw1VA0hFa5x9i3tdfrHpzc/sN1/OW6F1CsMVS2pwUTkr7pKp5nfjxhEPi94iLMmakm0XWPZpay2213FQEUYiRqCIGmD1Oiyq0nSVcOAkc66TNwsqrdPCkCL8OPTXuTd+yIfAuU3267kUMNcN2A9kqGMx4Inj8JGlmvxuoQueuXIA4gvVFhJFBdovpl10HY/YkG/cGM0gazfF2+5xG93RgD9Uryq1g61XTFOkOaH7XtGs8Q13xnnXVwfq2pK/vnx9kQkgXJJQRU1Ng8PAg+Rw1VK6bzVz5ugj6q1ei56orNy4A8FU1z1aGyChfPT3XPaDwLr0pEXvc2Vz/6CxAosSpNHIQ6fO0XBM7nvIs/2jHZssXSVo2iwYRZsgZft60cg0FfBmDyc3QH6pVjYhoQGsBlfQt5CtW7XX3rJjQTcDLfzUlO8Ykax7TXZKnDcvtNonRm45bmV+1CqS9KLrBHouWN0axtweabAVW8dld9EnL3CrclE/RbTI0nPOR00S+Ip7wNuBto30yTACxaPHYF79izHu4rQjmm2N5Jt+nI8maEVva6IbAog16NUw6fYDaMwBDeSszBZm0BwNMf36EP/Mcp+MXrBfP1kOYe6HGjftMRDky83XYvP6Cx7FJcPXIZdsMQydxsXB3LKroFqoS2HsHBnCgQbbraQ5UWi40vKXANlKbgFcutqkATvoPW6Hbh07vfiLVfDeuHU9DUCFlgK7KHPWk/g+Uo+TUmgTVKNhbGU/vFu/9h4kIrbf/ocqL/tyMjwA5Yp9e0rQCez8w5Zqfbtqm4N1WB518Q7p52r8C+yLBAua7yB0gAc7SENXWFafkbHClchZXi3c0hY64YvuweDp8G/bPFT/yLuY/yBvA3F2G3CxZXzCMvhMVQfm2yzJeOL20vWumZ8LuIaXJ/13AzLp+lUrc8RmJvU/Hrp6xsEqzXz34qMiBNUR1BKjNAS86WJ1rzD3QtejeETGDwsw016jNbyIMcShgxiEMHnD6HXzWnfTv2fO5xICiAG/VMm5h+vC3MweW2XO01P3O0/Rq/OSy3R8ZlEFErlhR1HiXhc2CdxuuxqDySi0/rP/Jpxf25Zi8mY9YBTFlV0T9ApzJoTwlobMmmxHmqq+vQSKAxLq0lJ/bpO+8utchHbnQNUICveCkX4w+rK9Vnls3zbiLTBnsf+J4y5zpLZ5HkDCUNcEnD29ZR30IYoBTLUG3PlfyH++rLl5ynW5QKUWLnUdjvf9ZwS2veFAZw6tfHelzjkZ5tps5BkjS8YAi/x70Jw4qs3fzZudq6Lej4fsMdkBnYSSN2s7Sc3A1,iv:jSR/M4KS+cZMQgtTZWtPcpmKFD5QNr7s8ClAbXzpR2s=,tag:sp3BnZi+b9WuIiCPapG6Bw==,type:str] home-assistant: ENC[AES256_GCM,data:wcFMxDdRCHf/shO9v2WaGgrsa9J2WP62xFs=,iv:9ckeIO62cFZUo8fPyQj445CrJVTooNlwLapM/oTsrkk=,tag:mlfxtXDPsB3T79P9BX9oJQ==,type:str] sops: kms: [] @@ -26,8 +26,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-05-04T20:56:17Z" - mac: ENC[AES256_GCM,data:hf0awSFMl+WYmfe2WgryQ2PnO01bl0F054CwjPgkG4LSPCIM5p83oVz8OZxFALrYJkQzEghrRMR7QH9p9YU4LGaS1Fi+UdI8n8yZ+7QqwusPDdhTAv1DcH3eNFmZxNNKx/M1C+ll4ufH28rn8aiYJDaoD0G7aFgd8lE0w8cB5ro=,iv:1CaROIk1+Xi190utju79HBXK5Y7zirNONIO7YefLuvg=,tag:I63TCEk/neHI7HK0j4x0hA==,type:str] + lastmodified: "2024-05-06T15:25:14Z" + mac: ENC[AES256_GCM,data:JfgVZ7I/S22cN4yiXqE5nJY0KBq+ZLJABlMTi58VUw5jGf1vUmyTDkzm67QmZtVVL3R/xodrSMJw5CodF7wgVvJFilSvez/ygr1P8KKo7CDMxzl5VTO5uHq5aszOmRFF5N9ZGfUFZxjl3iuCwQofckcMKgeyG/1wOIf37H4Gstw=,iv:oLS4yQdl0LE363gVIkRUieFJ5M2N8Fc4Rge7SuTN85k=,tag:N4uxXbKIHfZonkiV1GxckQ==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/esphome/devices/tuersprechanlage.yaml b/hosts/iron/services/esphome/devices/tuersprechanlage.yaml new file mode 100644 index 0000000..cb676ad --- /dev/null +++ b/hosts/iron/services/esphome/devices/tuersprechanlage.yaml @@ -0,0 +1,70 @@ +esphome: + name: "tuersprechanlage" + friendly_name: "Türsprechanlage" + +esp32: + board: lolin_s2_mini + variant: ESP32S2 + framework: + type: esp-idf + sdkconfig_options: + CONFIG_ESP_CONSOLE_USB_CDC: y + +logger: + hardware_uart: USB_CDC + +api: + encryption: + key: !secret apikey_tuersprechanlage + +ota: + password: !secret otapass_tuersprechanlage + +wifi: + ssid: !secret wifi_ssid_bw + password: !secret wifi_password_bw + domain: .iot.bw.jalr.de + enable_on_boot: True + fast_connect: True + power_save_mode: none + output_power: 10 + +binary_sensor: + - platform: gpio + name: Etagenklingel + id: etagenklingel + pin: + number: GPIO16 + mode: + input: true + pullup: true + filters: + - delayed_off: 10s + + - platform: gpio + name: Treppenlicht + id: treppenlicht + pin: + number: GPIO18 + mode: + input: true + pullup: true + filters: + - invert + - delayed_off: 10s + +output: + - platform: gpio + pin: GPIO15 + id: btn_door + +button: + - platform: template + name: "Türöffner" + id: tueroeffner + icon: mdi:lock-open + on_press: + - logger.log: "Button pressed" + - output.turn_on: btn_door + - delay: 500ms + - output.turn_off: btn_door From 605084a1d8339c68d2d82181ece34d6fbae56b2d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 7 May 2024 09:41:40 +0000 Subject: [PATCH 081/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'home-manager': 'github:nix-community/home-manager/d6bb9f934f2870e5cbc5b94c79e9db22246141ff' (2024-04-06) → 'github:nix-community/home-manager/86853e31dc1b62c6eeed11c667e8cdd0285d4411' (2024-04-25) • Updated input 'nix-pre-commit-hooks': 'github:cachix/pre-commit-hooks.nix/40e6053ecb65fcbf12863338a6dcefb3f55f1bf8' (2024-04-12) → 'github:cachix/pre-commit-hooks.nix/2849da033884f54822af194400f8dff435ada242' (2024-04-30) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/e402c3eb6d88384ca6c52ef1c53e61bdc9b84ddd' (2024-04-17) → 'github:nixos/nixpkgs/27c13997bf450a01219899f5a83bd6ffbfc70d3c' (2024-05-06) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/cc5b30542b0202032f2ad5792cfa3955446fdfdf' (2024-04-19) → 'github:NixOS/nixpkgs/5ca6e2c74a8805cd499a60c76605a186359c5eca' (2024-05-07) • Updated input 'nur': 'github:nix-community/NUR/e16ee8a64f1ab6bfbd54f24985141a0bd1243c29' (2024-04-19) → 'github:nix-community/NUR/e35c205abf0abd7fca3fdbba7bb8488d4fe88f6c' (2024-05-07) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/3c92540611f42d3fb2d0d084a6c694cd6544b609' (2024-02-22) → 'github:nix-community/poetry2nix/e6b36523407ae6a7a4dfe29770c30b3a3563b43a' (2024-05-06) • Updated input 'poetry2nix/treefmt-nix': 'github:numtide/treefmt-nix/e504621290a1fd896631ddbc5e9c16f4366c9f65' (2024-02-19) → 'github:numtide/treefmt-nix/c6aaf729f34a36c445618580a9f95a48f5e4e03f' (2024-04-25) • Updated input 'sops-nix': 'github:Mic92/sops-nix/a929a011a09db735abc45a8a45d1ff7fdee62755' (2024-04-19) → 'github:Mic92/sops-nix/893e3df091f6838f4f9d71c61ab079d5c5dedbd1' (2024-05-06) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/8494ae076b7878d61a7d2d25e89a847fe8f8364c' (2024-04-18) → 'github:NixOS/nixpkgs/b980b91038fc4b09067ef97bbe5ad07eecca1e76' (2024-05-04) --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index c9f07a6..431b550 100644 --- a/flake.lock +++ b/flake.lock @@ -85,11 +85,11 @@ ] }, "locked": { - "lastModified": 1712386041, - "narHash": "sha256-dA82pOMQNnCJMAsPG7AXG35VmCSMZsJHTFlTHizpKWQ=", + "lastModified": 1714043624, + "narHash": "sha256-Xn2r0Jv95TswvPlvamCC46wwNo8ALjRCMBJbGykdhcM=", "owner": "nix-community", "repo": "home-manager", - "rev": "d6bb9f934f2870e5cbc5b94c79e9db22246141ff", + "rev": "86853e31dc1b62c6eeed11c667e8cdd0285d4411", "type": "github" }, "original": { @@ -154,11 +154,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1712897695, - "narHash": "sha256-nMirxrGteNAl9sWiOhoN5tIHyjBbVi5e2tgZUgZlK3Y=", + "lastModified": 1714478972, + "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "40e6053ecb65fcbf12863338a6dcefb3f55f1bf8", + "rev": "2849da033884f54822af194400f8dff435ada242", "type": "github" }, "original": { @@ -202,11 +202,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1713434076, - "narHash": "sha256-+/p5edwlkqKZc6GDAQl+92Hoe1f3NNbUF9uj+X9H3pU=", + "lastModified": 1714858427, + "narHash": "sha256-tCxeDP4C1pWe2rYY3IIhdA40Ujz32Ufd4tcrHPSKx2M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8494ae076b7878d61a7d2d25e89a847fe8f8364c", + "rev": "b980b91038fc4b09067ef97bbe5ad07eecca1e76", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1713540478, - "narHash": "sha256-biYsnIjsOvc4mNfcAv/bpHGJ2eHBaNpukUzmf1YFcRU=", + "lastModified": 1715074791, + "narHash": "sha256-4HSJc1vzdczOwTHhqrNaCD9Sb3g//noOiQZVFMQvBPQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cc5b30542b0202032f2ad5792cfa3955446fdfdf", + "rev": "5ca6e2c74a8805cd499a60c76605a186359c5eca", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1713344939, - "narHash": "sha256-jpHkAt0sG2/J7ueKnG7VvLLkBYUMQbXQ2L8OBpVG53s=", + "lastModified": 1714971268, + "narHash": "sha256-IKwMSwHj9+ec660l+I4tki/1NRoeGpyA2GdtdYpAgEw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "e402c3eb6d88384ca6c52ef1c53e61bdc9b84ddd", + "rev": "27c13997bf450a01219899f5a83bd6ffbfc70d3c", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1713540396, - "narHash": "sha256-mc9hP0I2K2I23fx0py4bp6k28liXgBRilVQRc5hb3LU=", + "lastModified": 1715070864, + "narHash": "sha256-lyRQYwMKPgvhRNcaeWnh08YJDZ/bFgQfRpFqsBBOP2I=", "owner": "nix-community", "repo": "NUR", - "rev": "e16ee8a64f1ab6bfbd54f24985141a0bd1243c29", + "rev": "e35c205abf0abd7fca3fdbba7bb8488d4fe88f6c", "type": "github" }, "original": { @@ -276,11 +276,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1708589824, - "narHash": "sha256-2GOiFTkvs5MtVF65sC78KNVxQSmsxtk0WmV1wJ9V2ck=", + "lastModified": 1715017507, + "narHash": "sha256-RN2Vsba56PfX02DunWcZYkMLsipp928h+LVAWMYmbZg=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "3c92540611f42d3fb2d0d084a6c694cd6544b609", + "rev": "e6b36523407ae6a7a4dfe29770c30b3a3563b43a", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1713532771, - "narHash": "sha256-vfKxhYVMzG2tg48/1rewBoSLCrKIjQsG1j7Nm/Y2gf4=", + "lastModified": 1715035358, + "narHash": "sha256-RY6kqhpCPa/q3vbqt3iYRyjO3hJz9KZnshMjbpPon8o=", "owner": "Mic92", "repo": "sops-nix", - "rev": "a929a011a09db735abc45a8a45d1ff7fdee62755", + "rev": "893e3df091f6838f4f9d71c61ab079d5c5dedbd1", "type": "github" }, "original": { @@ -361,11 +361,11 @@ ] }, "locked": { - "lastModified": 1708335038, - "narHash": "sha256-ETLZNFBVCabo7lJrpjD6cAbnE11eDOjaQnznmg/6hAE=", + "lastModified": 1714058656, + "narHash": "sha256-Qv4RBm4LKuO4fNOfx9wl40W2rBbv5u5m+whxRYUMiaA=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "e504621290a1fd896631ddbc5e9c16f4366c9f65", + "rev": "c6aaf729f34a36c445618580a9f95a48f5e4e03f", "type": "github" }, "original": { From a58627271addb18a2796c76be5185be2866aad60 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 10 May 2024 23:33:18 +0000 Subject: [PATCH 082/562] Add prusa slicer --- home-manager/modules/3d-printing.nix | 7 +++++++ home-manager/modules/default.nix | 1 + 2 files changed, 8 insertions(+) create mode 100644 home-manager/modules/3d-printing.nix diff --git a/home-manager/modules/3d-printing.nix b/home-manager/modules/3d-printing.nix new file mode 100644 index 0000000..5107e9c --- /dev/null +++ b/home-manager/modules/3d-printing.nix @@ -0,0 +1,7 @@ +{ nixosConfig, lib, pkgs, ... }: + +lib.mkIf nixosConfig.jalr.gui.enable { + home.packages = with pkgs; [ + prusa-slicer + ]; +} diff --git a/home-manager/modules/default.nix b/home-manager/modules/default.nix index c8c85d8..151eafc 100644 --- a/home-manager/modules/default.nix +++ b/home-manager/modules/default.nix @@ -3,6 +3,7 @@ { imports = [ ./${nixosConfig.jalr.terminalEmulator}.nix + ./3d-printing.nix ./aws.nix ./claws-mail.nix ./cli.nix From 7711b79807b4e3f4d7ef4b03010f06d4ce3efd00 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 12 May 2024 19:06:34 +0000 Subject: [PATCH 083/562] Add host `tin` --- hosts/default.nix | 4 ++ hosts/tin/configuration.nix | 32 ++++++++++++++++ hosts/tin/hardware-configuration.nix | 56 ++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 hosts/tin/configuration.nix create mode 100644 hosts/tin/hardware-configuration.nix diff --git a/hosts/default.nix b/hosts/default.nix index 322731b..921af03 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -26,4 +26,8 @@ system = "aarch64"; targetHost = "162.55.35.199"; }; + tin = { + system = "x86_64-linux"; + targetHost = "tin.lan.bw.jalr.de"; + }; } diff --git a/hosts/tin/configuration.nix b/hosts/tin/configuration.nix new file mode 100644 index 0000000..8eb0507 --- /dev/null +++ b/hosts/tin/configuration.nix @@ -0,0 +1,32 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page, on +# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). + +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./hardware-configuration.nix + ../../home-manager/users/jalr.nix + ]; + + networking = { + hostName = "tin"; + networkmanager.enable = true; + useDHCP = false; + }; + + system.stateVersion = "23.11"; # Did you read the comment? + + jalr = { + bootloader = "systemd-boot"; + bluetooth.enable = true; + uefi.enable = true; + gui.enable = true; + workstation.enable = true; + sdr.enable = false; + #autologin.enable = true; + #autologin.username = "jal"; + }; +} + diff --git a/hosts/tin/hardware-configuration.nix b/hosts/tin/hardware-configuration.nix new file mode 100644 index 0000000..a797e49 --- /dev/null +++ b/hosts/tin/hardware-configuration.nix @@ -0,0 +1,56 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { + device = "/dev/disk/by-uuid/a939bba5-2eb2-4e9f-97f8-7d1604cb3f76"; + fsType = "btrfs"; + options = [ "compress=zstd" "subvol=root" ]; + }; + + fileSystems."/home" = + { + device = "/dev/disk/by-uuid/a939bba5-2eb2-4e9f-97f8-7d1604cb3f76"; + fsType = "btrfs"; + options = [ "compress=zstd" "subvol=home" ]; + }; + + fileSystems."/nix" = + { + device = "/dev/disk/by-uuid/a939bba5-2eb2-4e9f-97f8-7d1604cb3f76"; + fsType = "btrfs"; + options = [ "compress=zstd" "subvol=nix" ]; + }; + + fileSystems."/boot" = + { + device = "/dev/disk/by-uuid/BC71-DDC2"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s25.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} From c38432e2a0cfb54dd4091a16dc0d323c02a364be Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 12 May 2024 19:12:20 +0000 Subject: [PATCH 084/562] Fix current setting --- .../esphome/devices/chinafrickeldeckenleuchte.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml b/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml index f6b783b..205d23d 100644 --- a/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml +++ b/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml @@ -13,23 +13,23 @@ output: - platform: bp5758d id: output_ch1 channel: 1 - current: 60 + current: 20 - platform: bp5758d id: output_ch2 channel: 2 - current: 60 + current: 20 - platform: bp5758d id: output_ch3 channel: 3 - current: 60 + current: 20 - platform: bp5758d id: output_ch4 channel: 4 - current: 60 + current: 80 - platform: bp5758d id: output_ch5 channel: 5 - current: 60 + current: 80 light: - platform: rgbww From 5d78f0fc9cf19e71366c66c9f018a2bfb707ff3e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 13 May 2024 14:22:04 +0000 Subject: [PATCH 085/562] Add gnome GUI --- hosts/tin/configuration.nix | 1 + modules/default.nix | 10 +++++++++- modules/gnome.nix | 12 ++++++++++++ modules/sway.nix | 2 +- 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 modules/gnome.nix diff --git a/hosts/tin/configuration.nix b/hosts/tin/configuration.nix index 8eb0507..0eb8457 100644 --- a/hosts/tin/configuration.nix +++ b/hosts/tin/configuration.nix @@ -23,6 +23,7 @@ bluetooth.enable = true; uefi.enable = true; gui.enable = true; + gui.desktop = "gnome"; workstation.enable = true; sdr.enable = false; #autologin.enable = true; diff --git a/modules/default.nix b/modules/default.nix index d43da52..6905712 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -2,7 +2,14 @@ { options.jalr = { - gui.enable = lib.mkEnableOption "GUI"; + gui = { + enable = lib.mkEnableOption "GUI"; + desktop = lib.mkOption { + type = lib.types.nullOr (lib.types.enum [ "sway" "gnome" ]); + default = "sway"; + description = "Desktop environment to install"; + }; + }; workstation.enable = lib.mkEnableOption "Workstation"; }; @@ -17,6 +24,7 @@ ./dnsmasq.nix ./fish.nix ./fonts.nix + ./gnome.nix ./journald.nix ./kdeconnect.nix ./kvm-switch-enable-screen.nix diff --git a/modules/gnome.nix b/modules/gnome.nix new file mode 100644 index 0000000..1bd91bb --- /dev/null +++ b/modules/gnome.nix @@ -0,0 +1,12 @@ +{ config, lib, pkgs, ... }: + +lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "gnome") { + services.xserver = { + enable = true; + desktopManager.gnome.enable = true; + displayManager.gdm = { + enable = true; + autoSuspend = false; + }; + }; +} diff --git a/modules/sway.nix b/modules/sway.nix index b234c37..f534f18 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -1,6 +1,6 @@ { config, lib, pkgs, ... }: -lib.mkIf config.jalr.gui.enable { +lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { programs.sway = { enable = true; # FIXME: move to home manager From 3bbc2fa2adb1837e8ac12dbac49ded1fff19ff15 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 13 May 2024 14:24:01 +0000 Subject: [PATCH 086/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'home-manager': 'github:nix-community/home-manager/86853e31dc1b62c6eeed11c667e8cdd0285d4411' (2024-04-25) → 'github:nix-community/home-manager/ab5542e9dbd13d0100f8baae2bc2d68af901f4b4' (2024-05-10) • Updated input 'nix-pre-commit-hooks': 'github:cachix/pre-commit-hooks.nix/2849da033884f54822af194400f8dff435ada242' (2024-04-30) → 'github:cachix/pre-commit-hooks.nix/c182c876690380f8d3b9557c4609472ebfa1b141' (2024-05-13) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/27c13997bf450a01219899f5a83bd6ffbfc70d3c' (2024-05-06) → 'github:nixos/nixpkgs/71bae31b7dbc335528ca7e96f479ec93462323ff' (2024-05-11) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/5ca6e2c74a8805cd499a60c76605a186359c5eca' (2024-05-07) → 'github:NixOS/nixpkgs/7a689a202cd44d80ea6c7918a40a17887f8c99e6' (2024-05-13) • Updated input 'nur': 'github:nix-community/NUR/e35c205abf0abd7fca3fdbba7bb8488d4fe88f6c' (2024-05-07) → 'github:nix-community/NUR/a42f0e5a176713278508c0135c6224ea6ad26a80' (2024-05-13) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/e6b36523407ae6a7a4dfe29770c30b3a3563b43a' (2024-05-06) → 'github:nix-community/poetry2nix/291a863e866972f356967d0a270b259f46bf987f' (2024-05-09) • Updated input 'sops-nix': 'github:Mic92/sops-nix/893e3df091f6838f4f9d71c61ab079d5c5dedbd1' (2024-05-06) → 'github:Mic92/sops-nix/b6cb5de2ce57acb10ecdaaf9bbd62a5ff24fa02e' (2024-05-12) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/b980b91038fc4b09067ef97bbe5ad07eecca1e76' (2024-05-04) → 'github:NixOS/nixpkgs/8e47858badee5594292921c2668c11004c3b0142' (2024-05-11) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 431b550..4c76318 100644 --- a/flake.lock +++ b/flake.lock @@ -85,11 +85,11 @@ ] }, "locked": { - "lastModified": 1714043624, - "narHash": "sha256-Xn2r0Jv95TswvPlvamCC46wwNo8ALjRCMBJbGykdhcM=", + "lastModified": 1715381426, + "narHash": "sha256-wPuqrAQGdv3ISs74nJfGb+Yprm23U/rFpcHFFNWgM94=", "owner": "nix-community", "repo": "home-manager", - "rev": "86853e31dc1b62c6eeed11c667e8cdd0285d4411", + "rev": "ab5542e9dbd13d0100f8baae2bc2d68af901f4b4", "type": "github" }, "original": { @@ -154,11 +154,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1714478972, - "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", + "lastModified": 1715609711, + "narHash": "sha256-/5u29K0c+4jyQ8x7dUIEUWlz2BoTSZWUP2quPwFCE7M=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "2849da033884f54822af194400f8dff435ada242", + "rev": "c182c876690380f8d3b9557c4609472ebfa1b141", "type": "github" }, "original": { @@ -202,11 +202,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1714858427, - "narHash": "sha256-tCxeDP4C1pWe2rYY3IIhdA40Ujz32Ufd4tcrHPSKx2M=", + "lastModified": 1715458492, + "narHash": "sha256-q0OFeZqKQaik2U8wwGDsELEkgoZMK7gvfF6tTXkpsqE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b980b91038fc4b09067ef97bbe5ad07eecca1e76", + "rev": "8e47858badee5594292921c2668c11004c3b0142", "type": "github" }, "original": { @@ -218,11 +218,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1715074791, - "narHash": "sha256-4HSJc1vzdczOwTHhqrNaCD9Sb3g//noOiQZVFMQvBPQ=", + "lastModified": 1715609807, + "narHash": "sha256-QKBJGCDQdkBflKJMa6p7h95opIXhOXv6DL6f1G+YaFI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5ca6e2c74a8805cd499a60c76605a186359c5eca", + "rev": "7a689a202cd44d80ea6c7918a40a17887f8c99e6", "type": "github" }, "original": { @@ -234,11 +234,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1714971268, - "narHash": "sha256-IKwMSwHj9+ec660l+I4tki/1NRoeGpyA2GdtdYpAgEw=", + "lastModified": 1715395895, + "narHash": "sha256-DreMqi6+qa21ffLQqhMQL2XRUkAGt3N7iVB5FhJKie4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "27c13997bf450a01219899f5a83bd6ffbfc70d3c", + "rev": "71bae31b7dbc335528ca7e96f479ec93462323ff", "type": "github" }, "original": { @@ -250,11 +250,11 @@ }, "nur": { "locked": { - "lastModified": 1715070864, - "narHash": "sha256-lyRQYwMKPgvhRNcaeWnh08YJDZ/bFgQfRpFqsBBOP2I=", + "lastModified": 1715608391, + "narHash": "sha256-FMrt7buRO3BwR/9slNN+0F6aI5DhygJFaIdG/USSRhA=", "owner": "nix-community", "repo": "NUR", - "rev": "e35c205abf0abd7fca3fdbba7bb8488d4fe88f6c", + "rev": "a42f0e5a176713278508c0135c6224ea6ad26a80", "type": "github" }, "original": { @@ -276,11 +276,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1715017507, - "narHash": "sha256-RN2Vsba56PfX02DunWcZYkMLsipp928h+LVAWMYmbZg=", + "lastModified": 1715251496, + "narHash": "sha256-vRBfJCKvJtu5sYev56XStirA3lAOPv0EkoEV2Nfc+tc=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "e6b36523407ae6a7a4dfe29770c30b3a3563b43a", + "rev": "291a863e866972f356967d0a270b259f46bf987f", "type": "github" }, "original": { @@ -311,11 +311,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1715035358, - "narHash": "sha256-RY6kqhpCPa/q3vbqt3iYRyjO3hJz9KZnshMjbpPon8o=", + "lastModified": 1715482972, + "narHash": "sha256-y1uMzXNlrVOWYj1YNcsGYLm4TOC2aJrwoUY1NjQs9fM=", "owner": "Mic92", "repo": "sops-nix", - "rev": "893e3df091f6838f4f9d71c61ab079d5c5dedbd1", + "rev": "b6cb5de2ce57acb10ecdaaf9bbd62a5ff24fa02e", "type": "github" }, "original": { From aea7047c781493f4add994fe4187cfeaff375a8c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 13 May 2024 15:47:48 +0000 Subject: [PATCH 087/562] Start neovim in insert mode --- home-manager/modules/git.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home-manager/modules/git.nix b/home-manager/modules/git.nix index 2bdf690..c17c7f5 100644 --- a/home-manager/modules/git.nix +++ b/home-manager/modules/git.nix @@ -13,6 +13,7 @@ extraConfig = { init.defaultBranch = "main"; core.pager = "${pkgs.diff-so-fancy}/bin/diff-so-fancy | less --tabs=4 -RFX"; + core.editor = "${pkgs.neovim}/bin/nvim +star"; diff.sops.textconv = "${pkgs.sops}/bin/sops -d"; pull.ff = "only"; alias.find-merge = "!sh -c 'commit=$0 && branch=\${1:-HEAD} && (git rev-list $commit..$branch --ancestry-path | cat -n; git rev-list $commit..$branch --first-parent | cat -n) | sort -k2 -s | uniq -f1 -d | sort -n | tail -1 | cut -f2'"; From 9051f49700c1ecf788620586a01b9dee1d692025 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 14 May 2024 10:24:15 +0000 Subject: [PATCH 088/562] Disable signal bridge The bridge is broken. When https://gitlab.com/signald/signald/-/merge_requests/163 is fixed, we might be able to enable it again. --- hosts/iron/services/matrix.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/iron/services/matrix.nix b/hosts/iron/services/matrix.nix index 02984ad..7214d0d 100644 --- a/hosts/iron/services/matrix.nix +++ b/hosts/iron/services/matrix.nix @@ -31,7 +31,7 @@ in }; }; mautrix-signal = { - enable = true; + enable = false; port = ports.mautrix-signal.tcp; settings.bridge = { permissions = { From 4ab80690bd97a934bdefb9f3c7d08a4ddc001670 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 15 May 2024 07:16:43 +0000 Subject: [PATCH 089/562] Remove tradebyte stuff --- .../modules/communication/default.nix | 1 - .../modules/communication/ferdium.nix | 7 - home-manager/users/jal.nix | 224 ------------------ hosts/default.nix | 3 - hosts/hafnium/configuration.nix | 147 ------------ hosts/hafnium/hardware-configuration.nix | 44 ---- hosts/hafnium/secrets.yaml | 42 ---- modules/default.nix | 1 - modules/nix.nix | 16 +- modules/tradebyte/default.nix | 8 - 10 files changed, 1 insertion(+), 492 deletions(-) delete mode 100644 home-manager/modules/communication/ferdium.nix delete mode 100644 home-manager/users/jal.nix delete mode 100644 hosts/hafnium/configuration.nix delete mode 100644 hosts/hafnium/hardware-configuration.nix delete mode 100644 hosts/hafnium/secrets.yaml delete mode 100644 modules/tradebyte/default.nix diff --git a/home-manager/modules/communication/default.nix b/home-manager/modules/communication/default.nix index 6be079f..b908afc 100644 --- a/home-manager/modules/communication/default.nix +++ b/home-manager/modules/communication/default.nix @@ -2,7 +2,6 @@ { imports = [ - ./ferdium.nix ./mumble.nix ./qtox.nix ./telegram-desktop.nix diff --git a/home-manager/modules/communication/ferdium.nix b/home-manager/modules/communication/ferdium.nix deleted file mode 100644 index ee8f39e..0000000 --- a/home-manager/modules/communication/ferdium.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ nixosConfig, lib, pkgs, ... }: - -lib.mkIf nixosConfig.jalr.tradebyte.enable { - home.packages = with pkgs; [ - master.ferdium - ]; -} diff --git a/home-manager/users/jal.nix b/home-manager/users/jal.nix deleted file mode 100644 index e824fb6..0000000 --- a/home-manager/users/jal.nix +++ /dev/null @@ -1,224 +0,0 @@ -{ config, lib, pkgs, ... }: - -let - userName = "jal"; - vpn_routes = [ - "10.18.0.0/16" # OEE VPC - "10.64.0.0/16" # CPS - "10.158.128.0/23" # approval - "10.158.224.0/20" # core production - "10.158.240.0/20" # core development - #"10.96.0.0/24" # CCS infrastructure - #"10.96.8.0/24" # Boomi - #"10.96.10.0/24" # Boomi (new) - "10.96.0.0/16" - "10.170.254.30/32" # first core DNS resolver - "10.170.254.40/32" # second core DNS resolver - ]; - vpnc-script = pkgs.writeShellScript "vpnc-script-tb" '' - cisco_split_inc="$CISCO_SPLIT_INC" - export CISCO_SPLIT_INC=0 - - echo "DNS server sent by vpn: $INTERNAL_IP4_DNS" - unset INTERNAL_IP4_DNS - - route_in_whitelist() { - for route in ${builtins.toString vpn_routes}; do - [ "$1" = "$route" ] && return 0 - done - return 1 - } - - routes() { - for i in $(seq 0 $((cisco_split_inc-1))); do - addr_var="CISCO_SPLIT_INC_''${i}_ADDR" - mask_var="CISCO_SPLIT_INC_''${i}_MASK" - masklen_var="CISCO_SPLIT_INC_''${i}_MASKLEN" - addr="''${!addr_var}" - mask="''${!mask_var}" - masklen="''${!masklen_var}" - if route_in_whitelist "$addr/$masklen"; then - case "$1" in - add) - if [ -n "$NETGW" ]; then - ip route add "$addr/$masklen" metric 100 dev "$TUNDEV" via "$NETGW" - else - ip route add "$addr/$masklen" metric 100 dev "$TUNDEV" - fi - ;; - remove) - ip route del "$addr/$masklen" dev "$TUNDEV" - ;; - esac - echo "allowing route '$addr/$masklen'" - else - echo "ignoring route '$addr/$masklen'" - fi - done - } - - case "$reason" in - pre-init|reconnect|attempt-reconnect) - "${pkgs.vpnc-scripts}/bin/vpnc-script" "$@" - ;; - connect) - "${pkgs.vpnc-scripts}/bin/vpnc-script" "$@" - routes add - ;; - disconnect) - routes remove - "${pkgs.vpnc-scripts}/bin/vpnc-script" "$@" - ;; - *) - echo "reason '$reason' is not implemented" >&2 - exit 1 - ;; - esac - ''; - tradebyte-vpn = pkgs.writeShellScriptBin "tradebyte-vpn" '' - [ $UID -ne 0 ] && exec sudo -- "$0" "$@" - /run/wrappers/bin/sudo -u "$SUDO_USER" ${pkgs.pass}/bin/pass show zalando | openconnect \ - --protocol=pulse \ - -u jlechner \ - --passwd-on-stdin \ - -i pulse \ - --pfs \ - --disable-ipv6 \ - --script=${vpnc-script} \ - https://remote.tradebyte.org | grep -v '^> ' - ''; - aws_defaults = { - sso = { - start_url = "https://d-9967250383.awsapps.com/start"; - region = "eu-central-1"; - role_name = "AdministratorAccess"; - }; - region = "eu-central-1"; - }; -in -{ - imports = [ - ./default.nix - ]; - - jalr = { - git = { - user = { - name = "Jakob Lechner"; - email = "jal@tradebyte.biz"; - }; - signByDefault = false; - }; - gpg.defaultKey = "FE170812543DF81393EA56BA5042B8317A10617E"; - aws = { - enable = true; - accounts = { - ops_testing = { - sso_account_id = 134848648016; - sso_start_url = aws_defaults.sso.start_url; - sso_region = aws_defaults.sso.region; - sso_role_name = aws_defaults.sso.role_name; - region = aws_defaults.region; - }; - core-production = { - sso_account_id = 455520445575; - sso_start_url = aws_defaults.sso.start_url; - sso_region = aws_defaults.sso.region; - sso_role_name = aws_defaults.sso.role_name; - region = aws_defaults.region; - }; - tbmeta-production = { - sso_account_id = 696695470425; - sso_start_url = aws_defaults.sso.start_url; - sso_region = aws_defaults.sso.region; - sso_role_name = aws_defaults.sso.role_name; - region = aws_defaults.region; - }; - abnahme = { - sso_account_id = 837645089494; - sso_start_url = aws_defaults.sso.start_url; - sso_region = aws_defaults.sso.region; - sso_role_name = aws_defaults.sso.role_name; - region = aws_defaults.region; - }; - core-develop = { - sso_account_id = 934000686307; - sso_start_url = aws_defaults.sso.start_url; - sso_region = aws_defaults.sso.region; - sso_role_name = aws_defaults.sso.role_name; - region = aws_defaults.region; - }; - infrastructure = { - sso_account_id = 994756397773; - sso_start_url = aws_defaults.sso.start_url; - sso_region = aws_defaults.sso.region; - sso_role_name = aws_defaults.sso.role_name; - region = aws_defaults.region; - }; - tbmeta-development = { - sso_account_id = 730951147261; - sso_start_url = aws_defaults.sso.start_url; - sso_region = aws_defaults.sso.region; - sso_role_name = aws_defaults.sso.role_name; - region = aws_defaults.region; - }; - }; - }; - }; - - users.users.${userName} = { - isNormalUser = true; - extraGroups = [ - "dialout" - "podman" - "libvirtd" - "lp" - "networkmanager" - "scanner" - "video" - "wheel" - "wireshark" - ]; # Enable ‘sudo’ for the user. - shell = pkgs.fish; - }; - - home-manager = { - useUserPackages = true; - useGlobalPkgs = true; - users.${userName} = { lib, pkgs, ... }: { - imports = [ ../modules ]; - config = { - home.stateVersion = config.system.stateVersion; - - home.packages = with pkgs; [ - mycli - timetrap - tradebyte-vpn - - # common - asciinema - bat - docker-compose - envsubst - gnupg - nmap - psutils - pwgen - tig - vlc - xdg_utils - ]; - }; - }; - }; - - security.sudo.extraRules = [{ - users = [ userName ]; - commands = [ - { - command = "${tradebyte-vpn}/bin/tradebyte-vpn"; - options = [ "NOPASSWD" ]; - } - ]; - }]; -} diff --git a/hosts/default.nix b/hosts/default.nix index 921af03..aa58d11 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -10,9 +10,6 @@ cadmium = { system = "x86_64-linux"; }; - hafnium = { - system = "x86_64-linux"; - }; weinturm-pretix-prod = { system = "aarch64"; targetHost = "142.132.185.70"; diff --git a/hosts/hafnium/configuration.nix b/hosts/hafnium/configuration.nix deleted file mode 100644 index 31afa72..0000000 --- a/hosts/hafnium/configuration.nix +++ /dev/null @@ -1,147 +0,0 @@ -{ lib, config, pkgs, self, system, ... }: - -let - tradebyteDnsServers = [ - "10.170.254.30" - "10.170.254.40" - ]; -in -{ - imports = [ - ./hardware-configuration.nix - ../../home-manager/users/jal.nix - ]; - - networking = { - hostName = "hafnium"; - networkmanager = { - enable = true; - }; - useDHCP = false; - interfaces = { - enp2s0f0.useDHCP = false; - enp5s0.useDHCP = false; - wlp3s0.useDHCP = false; - }; - firewall = { - allowedUDPPorts = [ - 53 - ]; - allowedTCPPorts = [ - 53 - ]; - }; - extraHosts = '' - #10.10.10.10 example.com - ''; - }; - - environment.systemPackages = with pkgs; [ - brightnessctl - gnome3.adwaita-icon-theme - openconnect - redir - tcpdump - ]; - - environment.variables.EDITOR = "nvim"; - - programs.mtr.enable = true; - - - services.udisks2.enable = true; - - jalr = { - bootloader = "systemd-boot"; - bluetooth.enable = true; - uefi.enable = true; - gui.enable = true; - workstation.enable = true; - sdr.enable = false; - libvirt.enable = true; - autologin.enable = true; - autologin.username = "jal"; - tradebyte.enable = true; - }; - - - sops.secrets = ( - lib.listToAttrs (map - (name: lib.nameValuePair "wireguard_key_${name}" { - sopsFile = ./secrets.yaml; - }) - [ - "tbcore" - "ops-testing" - ] - ) - ); - - networking.wireguard.interfaces = { - tbcore = { - ips = [ "172.27.27.16/32" ]; - privateKeyFile = config.sops.secrets.wireguard_key_tbcore.path; - listenPort = 51930; - - peers = [{ - publicKey = "K5vF/yTag6NnWjZsMug63DERdCFRfHoqxVkgKH55oFE="; - endpoint = "194.33.184.175:51930"; - #endpoint = "ccs-emergency-vpn.core.tradebyte.com:51930"; - persistentKeepalive = 25; - allowedIPs = [ - "10.158.128.0/23" - "10.158.224.0/20" - "10.18.0.0/16" - "10.64.64.0/20" # CPS - "172.31.1.0/24" - ]; - }]; - }; - ops-testing = { - ips = [ "10.254.254.2/30" ]; - privateKeyFile = config.sops.secrets.wireguard_key_ops-testing.path; - peers = [{ - publicKey = "+jZETJfwaRiM+7ys5eYjgiWEAtxP47RzZSCx0w4l2nI="; - endpoint = "3.68.138.217:2048"; - persistentKeepalive = 25; - allowedIPs = [ - "10.254.254.0/30" - "10.250.0.0/16" - ]; - }]; - }; - }; - - services.dnsmasq.settings.server = lib.lists.flatten - ( - map (domain: (map (srv: "/${domain}/${srv}") tradebyteDnsServers)) [ - "vpce-0c1c169d1e33a1c2f-yugtdam1.s3.eu-central-1.vpce.amazonaws.com" - "ccs.tradebyte.com" - "instance.tradebyte.com" - ]) ++ [ - "/internal.production.core.tradebyte.com/10.158.224.2" - "/internal.development.core.tradebyte.com/10.170.254.30" - "/rds.amazonaws.com/9.9.9.9" - "/tradebyte.com/9.9.9.9" - "/tradebyte.org/9.9.9.9" - "/develop.sys.tradebyte.com/10.0.3.1" - "/corp.ad.zalando.net/10.160.19.100" - ]; - services.actkbd = { - enable = true; - bindings = [ - { keys = [ 232 ]; events = [ "key" ]; command = "/run/current-system/sw/bin/brightnessctl s -5%"; } - { keys = [ 233 ]; events = [ "key" ]; command = "/run/current-system/sw/bin/brightnessctl s +5%"; } - ]; - }; - - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "23.11"; # Did you read the comment? - -} - diff --git a/hosts/hafnium/hardware-configuration.nix b/hosts/hafnium/hardware-configuration.nix deleted file mode 100644 index 5e2c719..0000000 --- a/hosts/hafnium/hardware-configuration.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ modulesPath, ... }: - -{ - imports = [ - "${modulesPath}/installer/scan/not-detected.nix" - ]; - - hardware.cpu.amd.updateMicrocode = true; - - boot = { - initrd.availableKernelModules = [ - "nvme" - "ehci_pci" - "xhci_pci" - "usb_storage" - "sd_mod" - "rtsx_pci_sdmmc" - ]; - kernelModules = [ "kvm-amd" ]; - }; - - fileSystems = { - "/" = { - device = "/dev/disk/by-uuid/b86310f5-fe3d-4b4d-bc02-ab0d7e9297cf"; - fsType = "btrfs"; - options = [ - "discard=async" - "noatime" - "subvol=/nixos" - "compress=zstd:6" - ]; - }; - "/boot" = { - device = "/dev/disk/by-uuid/564E-26B4"; - fsType = "vfat"; - options = [ "nodev" "nosuid" "noexec" ]; - }; - }; - - boot.initrd.luks.devices.cryptroot = { - device = "/dev/disk/by-uuid/d9b120c1-5e80-4893-92fe-497e5b44c25b"; - allowDiscards = true; - }; -} diff --git a/hosts/hafnium/secrets.yaml b/hosts/hafnium/secrets.yaml deleted file mode 100644 index f2bf06a..0000000 --- a/hosts/hafnium/secrets.yaml +++ /dev/null @@ -1,42 +0,0 @@ -wireguard_key_tbcore: ENC[AES256_GCM,data:/VdCVC6xciihm2suOiuNabAWPhWPGSyWSKbLKRpy8EK7aXpyxZPybnANc1E=,iv:/LxrjPLzUkHdyT45RIfbfc4Xa3vsnQNiamnbiMdubpg=,tag:N5nFx1QsH9FGiK9DrMg2hQ==,type:str] -wireguard_key_ops-testing: ENC[AES256_GCM,data:FiADGmh3GAK6LI9Y5EEErmoVCfx4So6mN3glnzUWk8zDXJbRYP1Uj1kJiss=,iv:7tEWVT6eeHpekgkO17DXtrO7meFvYo6xV4ZLpGG20PQ=,tag:Mtr2gMnCqfJP5ADyordddw==,type:str] -sops: - kms: [] - gcp_kms: [] - azure_kv: [] - hc_vault: [] - age: - - recipient: age1ahnfjspcpwxxk7getcxkj3fypwt37rr6p3xsmp8n2tqqqz8jtg7q2am0et - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtWlZBSFBKNXJ4QmpDZUpT - NE91ek10QkwxSU1XTE81cGxHZXZmL1JncEY0ClZFbVd5dG14L1hqQlRWTDVkZmpx - V1EzSG9rMC80WTNIZExXOXU1VjcrMk0KLS0tIElWdkh4MzNyeTNteDJTY3RvanQx - ai9YdFdleXNNY2pXQzZMem0vdDdSMjgKvngMU5Y1/Pp+G/a9SyewkN9wr22ZcGP6 - XHHadzk6NE7BJWqquY+2B0Rh3B1Ow+rC8yJd7FhJlHw+i0Bp/d/ESw== - -----END AGE ENCRYPTED FILE----- - lastmodified: "2022-04-21T08:09:31Z" - mac: ENC[AES256_GCM,data:+TB7XQPMQCFAR/0jrUKTgjm2yJ7qJ6Jak3DMbFof7mnGE9LKT+xPKYzPwAM+4aDzngHv1fumD6JCXDoJ4DS95frAVfNVNM1bfB0iVmrtf0PX1y+Em189/hs3bt2YBkvvW9kYJMq0g9VBngX6gwGuaBAFHly1gi6SPMZN4vNRF6g=,iv:DK5OYG+BohxllorP0j9mvQ7MtqVNnBjJ3Nf378scJOA=,tag:lBwsHbY9PlJ2/eMtKcxZxA==,type:str] - pgp: - - created_at: "2022-04-20T21:27:25Z" - enc: | - -----BEGIN PGP MESSAGE----- - - hQIMA6jlFWJ+id7kARAArP1hdPwQk2XyKsXYnSj6vxK81GhfZp3tkYEqsU3Jdpwn - OR+0SnuoNWk4dN4JE4ooS5DOhS0ZaVsglLPtiLLohGWYY4OrX33JHZN4oEa5GMBK - t9b0YNb9owow0MSFN679tmiCMvzXGprT0mdWO3/X/HlKvCcTYPRqul4BVeVR/LyG - V94MSaF3BUwFb4p/Q8jcWfsfH5gmMpiFHQsmtci4LjDHvAVCFzI3AjcbRRJUfO5v - ampZ+9yUNo8Y6btrQQWvMoGpOp6U7cj6rTk+eZuW16/7WbHMz6WSpolDyy01QjzQ - szS5RuACnUTMqG4YWQk90H3Srgq/6CFBVLSTm2h8zdO9UZcgkJRYLTFczbYbyqgN - 2Vpjf0UwIv5MHvdo1QZJeBEl8TxjI5UZY2/UDOb9OZXktcAxW5U0Wy6pZIfUsJpk - GJeAb+P3pLvs62hkNSS+rGoGvLX2u0R/Xvw1btTdLLOeIOPNGF8lau32mBuErIZ9 - 2E44N1qV8uQDkDdvaKpj4ikf/0MURPW4GWXST3K/BwD1Gos2SzVD17kXGGOVdeOP - Q19LSo06h2Cq+zNcyKU4C0IdRPvFLKJbyEN3vDYXGnJK7lqGr/UDDcPgYPHVPn1Q - gTdmAk2e8lZY6O0OP5tth5cMjJZj5msvjbww9J1PA3VnBuo8+17zCJ/IYwCUlEbS - XgEWH0LKnwjG7Ufr8eT0DzeCJoD2U/2h+8/+Q2dc4YqokIPW7VuZhR+HZygVAX65 - 1yT/1z+1Hr6kLr9cDLzjyPRu5rNgZJHc8pxkbrQsT764oclvfbgIcmvko9Fsg4o= - =S5XT - -----END PGP MESSAGE----- - fp: FE170812543DF81393EA56BA5042B8317A10617E - unencrypted_suffix: _unencrypted - version: 3.7.2 diff --git a/modules/default.nix b/modules/default.nix index 6905712..e5fc8af 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -46,7 +46,6 @@ ./sudo.nix ./sway.nix ./tor.nix - ./tradebyte ./udmx.nix ./uefi.nix ./unfree.nix diff --git a/modules/nix.nix b/modules/nix.nix index 5d48e97..65beaa3 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -30,21 +30,7 @@ config = prev.config; }; }) - ] - # Tradebyte access points use legacy crypto - ++ lib.optional config.jalr.tradebyte.enable ( - final: prev: - let - inherit (prev) callPackage; - in - { - wpa_supplicant = prev.wpa_supplicant.overrideAttrs (attrs: { - patches = attrs.patches ++ [ - ./wpa_supplicant/SSL_CTX_set_options-SSL_OP_LEGACY_SERVER_CONNECT.patch - ]; - }); - } - ); + ]; environment.systemPackages = with pkgs; [ cached-nix-shell diff --git a/modules/tradebyte/default.nix b/modules/tradebyte/default.nix deleted file mode 100644 index de83fba..0000000 --- a/modules/tradebyte/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ lib, ... }: - -{ - options.jalr = { - tradebyte.enable = lib.mkEnableOption "TB.config"; - }; -} - From 3fe20d2313e616076a191b73c478524230fec0f0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 15 May 2024 08:47:27 +0000 Subject: [PATCH 090/562] Add element-desktop --- home-manager/modules/communication/default.nix | 1 + home-manager/modules/communication/element-desktop.nix | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 home-manager/modules/communication/element-desktop.nix diff --git a/home-manager/modules/communication/default.nix b/home-manager/modules/communication/default.nix index b908afc..e9d1a28 100644 --- a/home-manager/modules/communication/default.nix +++ b/home-manager/modules/communication/default.nix @@ -2,6 +2,7 @@ { imports = [ + ./element-desktop.nix ./mumble.nix ./qtox.nix ./telegram-desktop.nix diff --git a/home-manager/modules/communication/element-desktop.nix b/home-manager/modules/communication/element-desktop.nix new file mode 100644 index 0000000..6cabee6 --- /dev/null +++ b/home-manager/modules/communication/element-desktop.nix @@ -0,0 +1,7 @@ +{ nixosConfig, lib, pkgs, ... }: + +lib.mkIf nixosConfig.jalr.gui.enable { + home.packages = with pkgs; [ + element-desktop + ]; +} From 123fcf6748e2c16eab368286ecc077c47a4b9fee Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 15 May 2024 09:08:20 +0000 Subject: [PATCH 091/562] Improve neovim config for git - Only start in insert mode when editing a commit message (and not when doing a rebase or something else) - Add colorcolumn to indicate maximum line length - Add spell check --- home-manager/modules/git.nix | 1 - home-manager/modules/neovim.nix | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/home-manager/modules/git.nix b/home-manager/modules/git.nix index c17c7f5..2bdf690 100644 --- a/home-manager/modules/git.nix +++ b/home-manager/modules/git.nix @@ -13,7 +13,6 @@ extraConfig = { init.defaultBranch = "main"; core.pager = "${pkgs.diff-so-fancy}/bin/diff-so-fancy | less --tabs=4 -RFX"; - core.editor = "${pkgs.neovim}/bin/nvim +star"; diff.sops.textconv = "${pkgs.sops}/bin/sops -d"; pull.ff = "only"; alias.find-merge = "!sh -c 'commit=$0 && branch=\${1:-HEAD} && (git rev-list $commit..$branch --ancestry-path | cat -n; git rev-list $commit..$branch --first-parent | cat -n) | sort -k2 -s | uniq -f1 -d | sort -n | tail -1 | cut -f2'"; diff --git a/home-manager/modules/neovim.nix b/home-manager/modules/neovim.nix index 997a1f9..934a4f8 100644 --- a/home-manager/modules/neovim.nix +++ b/home-manager/modules/neovim.nix @@ -43,6 +43,8 @@ autocmd BufWinLeave * call clearmatches() augroup END + autocmd BufRead COMMIT_EDITMSG startinsert + let g:deoplete#enable_at_startup = 1 sign define LspDiagnosticsSignError text=🟥 @@ -183,4 +185,9 @@ ) ) ); + + xdg.configFile."nvim/ftplugin/gitcommit.vim".text = '' + setlocal spell + setlocal colorcolumn=73 + ''; } From 28e4bb364d85a3178b73de3a52ba27df1be1427f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 15 May 2024 19:00:02 +0000 Subject: [PATCH 092/562] Update repo url for git hooks --- flake.lock | 4 ++-- flake.nix | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 4c76318..1ac3b85 100644 --- a/flake.lock +++ b/flake.lock @@ -157,14 +157,14 @@ "lastModified": 1715609711, "narHash": "sha256-/5u29K0c+4jyQ8x7dUIEUWlz2BoTSZWUP2quPwFCE7M=", "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "repo": "git-hooks.nix", "rev": "c182c876690380f8d3b9557c4609472ebfa1b141", "type": "github" }, "original": { "owner": "cachix", "ref": "master", - "repo": "pre-commit-hooks.nix", + "repo": "git-hooks.nix", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 13dd219..7ccc21f 100644 --- a/flake.nix +++ b/flake.nix @@ -12,7 +12,7 @@ }; nix-pre-commit-hooks = { - url = "github:cachix/pre-commit-hooks.nix/master"; + url = "github:cachix/git-hooks.nix/master"; inputs.flake-utils.follows = "flake-utils"; }; From c36980202eb85f0d888105923b8d8671d4174b58 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 15 May 2024 19:00:32 +0000 Subject: [PATCH 093/562] Add markdown file type settings --- home-manager/modules/neovim.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home-manager/modules/neovim.nix b/home-manager/modules/neovim.nix index 934a4f8..0447001 100644 --- a/home-manager/modules/neovim.nix +++ b/home-manager/modules/neovim.nix @@ -190,4 +190,8 @@ setlocal spell setlocal colorcolumn=73 ''; + xdg.configFile."nvim/ftplugin/markdown.vim".text = '' + setlocal spell + setlocal colorcolumn=81 + ''; } From ee7903d5c0a4d36c3e1981c6e61f0a80f652f4a4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 15 May 2024 22:46:04 +0000 Subject: [PATCH 094/562] Add caldav integration --- hosts/iron/services/home-assistant.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index e8eea7f..aa76c88 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -66,6 +66,7 @@ in }; extraComponents = [ # See https://www.home-assistant.io/integrations + "caldav" "esphome" "xiaomi_ble" ]; From e58a791325ed1ac27ec885a08a1282251158d60f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 15 May 2024 22:46:15 +0000 Subject: [PATCH 095/562] Add openweathermap integration --- hosts/aluminium/services/home-assistant.nix | 1 + hosts/iron/services/home-assistant.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/hosts/aluminium/services/home-assistant.nix b/hosts/aluminium/services/home-assistant.nix index 1a741d7..79974ef 100644 --- a/hosts/aluminium/services/home-assistant.nix +++ b/hosts/aluminium/services/home-assistant.nix @@ -9,6 +9,7 @@ in extraComponents = [ # See https://www.home-assistant.io/integrations "esphome" + "openweathermap" ]; customComponents = [ # https://github.com/a529987659852/GuntamaticBiostar diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index aa76c88..2452105 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -68,6 +68,7 @@ in # See https://www.home-assistant.io/integrations "caldav" "esphome" + "openweathermap" "xiaomi_ble" ]; customComponents = [ From 597679ead174c1c69286f1ca16677422d9b6329b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 15 May 2024 22:48:10 +0000 Subject: [PATCH 096/562] Add local_todo integration --- hosts/iron/services/home-assistant.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index 2452105..acbb59d 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -68,6 +68,7 @@ in # See https://www.home-assistant.io/integrations "caldav" "esphome" + "local_todo" "openweathermap" "xiaomi_ble" ]; From 4d283f82e44bb1b09e78205b68e3a84aeacea452 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 17 May 2024 19:48:50 +0200 Subject: [PATCH 097/562] Use local timezone on workstations --- modules/localization.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/localization.nix b/modules/localization.nix index 3c3d813..b1a7ea0 100644 --- a/modules/localization.nix +++ b/modules/localization.nix @@ -1,3 +1,4 @@ +{ lib, config, pkgs, ... }: { i18n = { defaultLocale = "en_GB.UTF-8"; @@ -8,7 +9,7 @@ console.keyMap = "neo"; - time.timeZone = "UTC"; + time.timeZone = if config.jalr.workstation.enable then "Europe/Berlin" else "UTC"; location = { latitude = 49.5; From 633cc6104aa9c29ba212237b74a116ca65436146 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 21 May 2024 21:50:38 +0200 Subject: [PATCH 098/562] Add repl command --- justfile | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/justfile b/justfile index b44ce6d..8d0ac78 100644 --- a/justfile +++ b/justfile @@ -12,3 +12,13 @@ build: update: nix flake update --commit-lock-file which fwupdmgr >/dev/null 2>&1 && fwupdmgr refresh || true + +repl: + nix repl --expr "\ + let \ + flake = builtins.getFlake \"$(git rev-parse --show-toplevel)\"; in \ + flake // { \ + lib = flake.inputs.nixpkgs.lib; \ + pkgs = flake.inputs.nixpkgs.legacyPackages."\${builtins.currentSystem}"; \ + } \ + " From cec9622771d25365892aa23191ae447a8a438636 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 21 May 2024 22:24:38 +0200 Subject: [PATCH 099/562] Switch to 24.05 --- flake.lock | 93 ++++++++++++++++++++++-------------------------------- flake.nix | 6 ++-- 2 files changed, 41 insertions(+), 58 deletions(-) diff --git a/flake.lock b/flake.lock index 1ac3b85..e7d87bb 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1710154385, - "narHash": "sha256-4c3zQ2YY4BZOufaBJB4v9VBBeN2dH7iVdoJw8SDNCfI=", + "lastModified": 1716202913, + "narHash": "sha256-zjPNXI4DWBOrPsrK8u/XTsm5Q36quONQvz0jhAKHEeg=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "872b63ddd28f318489c929d25f1f0a3c6039c971", + "rev": "4702caff8e201f4c98fe3583637a930d253447c8", "type": "github" }, "original": { @@ -85,16 +85,16 @@ ] }, "locked": { - "lastModified": 1715381426, - "narHash": "sha256-wPuqrAQGdv3ISs74nJfGb+Yprm23U/rFpcHFFNWgM94=", + "lastModified": 1716736833, + "narHash": "sha256-rNObca6dm7Qs524O4st8VJH6pZ/Xe1gxl+Rx6mcWYo0=", "owner": "nix-community", "repo": "home-manager", - "rev": "ab5542e9dbd13d0100f8baae2bc2d68af901f4b4", + "rev": "a631666f5ec18271e86a5cde998cba68c33d9ac6", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-23.11", + "ref": "release-24.05", "repo": "home-manager", "type": "github" } @@ -146,19 +146,18 @@ "nix-pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", - "flake-utils": [ - "flake-utils" - ], "gitignore": "gitignore", - "nixpkgs": "nixpkgs", + "nixpkgs": [ + "nixpkgs" + ], "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1715609711, - "narHash": "sha256-/5u29K0c+4jyQ8x7dUIEUWlz2BoTSZWUP2quPwFCE7M=", + "lastModified": 1716213921, + "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "c182c876690380f8d3b9557c4609472ebfa1b141", + "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", "type": "github" }, "original": { @@ -170,16 +169,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", + "lastModified": 1716793392, + "narHash": "sha256-ex3nO87EEQhshXd19QSVW5UIXL0pbPuew4q8TdEJQBY=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "67a8b308bae9c26be660ccceff3e53a65e01afe1", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } @@ -202,11 +201,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1715458492, - "narHash": "sha256-q0OFeZqKQaik2U8wwGDsELEkgoZMK7gvfF6tTXkpsqE=", + "lastModified": 1716655032, + "narHash": "sha256-kQ25DAiCGigsNR/Quxm3v+JGXAEXZ8I7RAF4U94bGzE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8e47858badee5594292921c2668c11004c3b0142", + "rev": "59a450646ec8ee0397f5fa54a08573e8240eb91f", "type": "github" }, "original": { @@ -218,11 +217,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1715609807, - "narHash": "sha256-QKBJGCDQdkBflKJMa6p7h95opIXhOXv6DL6f1G+YaFI=", + "lastModified": 1716887039, + "narHash": "sha256-u9O9RPH7sXFuAeYECdUsNFmcbnyCnoMrQTvqKzmQeCI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7a689a202cd44d80ea6c7918a40a17887f8c99e6", + "rev": "4c4f6f1395b1fda7ebe6a9106e68d2098f09441d", "type": "github" }, "original": { @@ -232,29 +231,13 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1715395895, - "narHash": "sha256-DreMqi6+qa21ffLQqhMQL2XRUkAGt3N7iVB5FhJKie4=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "71bae31b7dbc335528ca7e96f479ec93462323ff", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, "nur": { "locked": { - "lastModified": 1715608391, - "narHash": "sha256-FMrt7buRO3BwR/9slNN+0F6aI5DhygJFaIdG/USSRhA=", + "lastModified": 1716885908, + "narHash": "sha256-Ij9xCqfSPLJ7UwnOeOf/RzrB2T1QP1AlFyyL+ee4RmU=", "owner": "nix-community", "repo": "NUR", - "rev": "a42f0e5a176713278508c0135c6224ea6ad26a80", + "rev": "731eb0c95af5efa7a8ffb3ca1b5f1a00d8e5db13", "type": "github" }, "original": { @@ -276,11 +259,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1715251496, - "narHash": "sha256-vRBfJCKvJtu5sYev56XStirA3lAOPv0EkoEV2Nfc+tc=", + "lastModified": 1716813403, + "narHash": "sha256-9+G8tEOh3QkjSUV2UMC+TpvzKOR8IUFlkJJTMpVQMkc=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "291a863e866972f356967d0a270b259f46bf987f", + "rev": "12599ecaa9ec641c29dc8fd07f8267b23874bf3a", "type": "github" }, "original": { @@ -296,7 +279,7 @@ "home-manager": "home-manager", "krops": "krops", "nix-pre-commit-hooks": "nix-pre-commit-hooks", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "nixpkgsMaster": "nixpkgsMaster", "nur": "nur", "poetry2nix": "poetry2nix", @@ -311,11 +294,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1715482972, - "narHash": "sha256-y1uMzXNlrVOWYj1YNcsGYLm4TOC2aJrwoUY1NjQs9fM=", + "lastModified": 1716692524, + "narHash": "sha256-sALodaA7Zkp/JD6ehgwc0UCBrSBfB4cX66uFGTsqeFU=", "owner": "Mic92", "repo": "sops-nix", - "rev": "b6cb5de2ce57acb10ecdaaf9bbd62a5ff24fa02e", + "rev": "962797a8d7f15ed7033031731d0bb77244839960", "type": "github" }, "original": { @@ -361,11 +344,11 @@ ] }, "locked": { - "lastModified": 1714058656, - "narHash": "sha256-Qv4RBm4LKuO4fNOfx9wl40W2rBbv5u5m+whxRYUMiaA=", + "lastModified": 1715940852, + "narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "c6aaf729f34a36c445618580a9f95a48f5e4e03f", + "rev": "2fba33a182602b9d49f0b2440513e5ee091d838b", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 7ccc21f..51f9a22 100644 --- a/flake.nix +++ b/flake.nix @@ -1,19 +1,19 @@ { inputs = { flake-utils.url = "github:numtide/flake-utils"; - nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; nixpkgsMaster.url = "github:NixOS/nixpkgs/master"; nur.url = "github:nix-community/NUR"; home-manager = { - url = "github:nix-community/home-manager/release-23.11"; + url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-pre-commit-hooks = { url = "github:cachix/git-hooks.nix/master"; - inputs.flake-utils.follows = "flake-utils"; + inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { From 0bc59075055d7b18b9415197d711fd3e2e79d6c0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 22 May 2024 22:22:22 +0200 Subject: [PATCH 100/562] Use official pretix module --- hosts/weinturm-pretix-prod/configuration.nix | 2 +- .../weinturm-pretix-prod/services/pretix.nix | 104 +- pkgs/default.nix | 6 +- pkgs/modules.nix | 2 +- .../default.nix} | 2 +- pkgs/pretix-banktool/module.nix | 60 + .../requirements.patch} | 0 pkgs/pretix/.envrc | 1 - pkgs/pretix/module.nix | 318 -- pkgs/pretix/poetry.lock | 3176 ----------------- pkgs/pretix/pretix-static.nix | 48 - pkgs/pretix/pretix.nix | 60 - pkgs/pretix/pretix_wrapper/__main__.py | 9 - pkgs/pretix/pretix_wrapper/settings.py | 4 - pkgs/pretix/pyproject.toml | 19 - pkgs/pretix/shell.nix | 8 - 16 files changed, 139 insertions(+), 3680 deletions(-) rename pkgs/{pretix/pretix-banktool.nix => pretix-banktool/default.nix} (92%) create mode 100644 pkgs/pretix-banktool/module.nix rename pkgs/{pretix/pretix-banktool-requirements.patch => pretix-banktool/requirements.patch} (100%) delete mode 100644 pkgs/pretix/.envrc delete mode 100644 pkgs/pretix/module.nix delete mode 100644 pkgs/pretix/poetry.lock delete mode 100644 pkgs/pretix/pretix-static.nix delete mode 100644 pkgs/pretix/pretix.nix delete mode 100644 pkgs/pretix/pretix_wrapper/__main__.py delete mode 100644 pkgs/pretix/pretix_wrapper/settings.py delete mode 100644 pkgs/pretix/pyproject.toml delete mode 100644 pkgs/pretix/shell.nix diff --git a/hosts/weinturm-pretix-prod/configuration.nix b/hosts/weinturm-pretix-prod/configuration.nix index b4c9ba8..3a6fc72 100644 --- a/hosts/weinturm-pretix-prod/configuration.nix +++ b/hosts/weinturm-pretix-prod/configuration.nix @@ -51,5 +51,5 @@ uefi.enable = true; }; - system.stateVersion = "23.11"; + system.stateVersion = "24.05"; } diff --git a/hosts/weinturm-pretix-prod/services/pretix.nix b/hosts/weinturm-pretix-prod/services/pretix.nix index 895e166..29edd2b 100644 --- a/hosts/weinturm-pretix-prod/services/pretix.nix +++ b/hosts/weinturm-pretix-prod/services/pretix.nix @@ -1,48 +1,94 @@ args@{ config, lib, pkgs, custom-utils, ... }: let + cfg = config.services.pretix; ports = import ../ports.nix args; + domain = "tickets.weinturm-open-air.de"; + extraDomains = [ + "tickets.weinturm.jalr.de" + "tickets.wasted-openair.de" + "oel.wasted-openair.de" + "tickets.buendnis-gegen-rechts-nea.de" + ]; + gunicornWorkers = 4; + secretsFile = ../secrets.yaml; in { - services.pretix = { - enable = true; - instanceName = "Digitaler Dienst GmbH"; - domain = "tickets.weinturm-open-air.de"; - extraDomains = [ - "tickets.weinturm.jalr.de" - "tickets.wasted-openair.de" - "oel.wasted-openair.de" - "tickets.buendnis-gegen-rechts-nea.de" - ]; - enableTls = true; - enableRegistration = false; - passwordReset = true; - locale = "de"; - timezone = "Europe/Berlin"; - secretsFile = ../secrets.yaml; - banktool = { - enable = true; - days = 14; + sops.secrets = { + pretix-cfg = { + sopsFile = secretsFile; }; - mail = { - enable = true; - from = "no-reply@tickets.weinturm-open-air.de"; - admins = [ - "mail@jalr.de" - "pretix@digitaler-dienst.gmbh" - ]; + pretix-banktool-cfg = { + sopsFile = secretsFile; }; - gunicornWorkers = 4; }; - services.nginx = { + services.pretix = { + enable = true; + settings = { + pretix = { + instance_name = "Digitaler Dienst GmbH"; + url = "https://${domain}"; + registration = false; + password_reset = true; + }; + locale = { + default = "de"; + timezone = "Europe/Berlin"; + }; + mail = { + from = "no-reply@tickets.weinturm-open-air.de"; + }; + redis.location = "unix:///run/redis-pretix/redis.sock?db=0"; + celery.backend = "redis+socket:///run/redis-pretix/redis.sock?virtual_host=2"; + celery.broker = "redis+socket:///run/redis-pretix/redis.sock?virtual_host=1"; + }; + nginx = { + enable = true; + inherit domain; + }; + gunicorn = { + extraArgs = [ + "--workers=${toString gunicornWorkers}" + ]; + }; + }; + + # Add user to `redis-pretix` group + # to grant access to /run/redis-pretix/redis.sock + users.users.pretix.extraGroups = [ "redis-pretix" ]; + + services.pretix-banktool = { + enable = true; + days = 14; + secretsFile = config.sops.secrets.pretix-banktool-cfg.path; + }; + + networking.firewall.allowedTCPPorts = [ 80 443 ]; + + services.nginx = lib.mkIf cfg.nginx.enable { + recommendedGzipSettings = true; recommendedOptimisation = true; + recommendedProxySettings = true; recommendedTlsSettings = true; + virtualHosts = { + "${cfg.nginx.domain}" = { + enableACME = true; + forceSSL = true; + kTLS = true; + extraConfig = '' + add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload' always; + more_set_headers Referrer-Policy same-origin; + more_set_headers X-Content-Type-Options nosniff; + ''; + serverAliases = extraDomains; + }; + }; }; jalr.mailserver = { enable = true; - fqdn = "tickets.weinturm.jalr.de"; + fqdn = "tickets.weinturm-open-air.de"; relayPort = ports.postfix-relay.tcp; domains = [ { diff --git a/pkgs/default.nix b/pkgs/default.nix index 5c352fe..35c5b95 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -17,11 +17,7 @@ in myintercom-doorbell = callPackage ./myintercom-doorbell { inherit poetry2nix; }; - pretix = callPackage ./pretix/pretix.nix { - inherit poetry2nix; - }; - pretix-banktool = callPackage ./pretix/pretix-banktool.nix { }; - pretix-static = callPackage ./pretix/pretix-static.nix { }; + pretix-banktool = callPackage ./pretix-banktool { }; tabbed-box-maker = callPackage ./tabbed-box-maker { }; vesc-firmware = callPackage ./vesc-tool/firmware.nix { }; vesc-tool = callPackage ./vesc-tool/tool.nix { }; diff --git a/pkgs/modules.nix b/pkgs/modules.nix index f61aa63..cdfda2f 100644 --- a/pkgs/modules.nix +++ b/pkgs/modules.nix @@ -4,6 +4,6 @@ imports = [ ./asterisk-sounds-de/module.nix ./myintercom-doorbell/module.nix - ./pretix/module.nix + ./pretix-banktool/module.nix ]; } diff --git a/pkgs/pretix/pretix-banktool.nix b/pkgs/pretix-banktool/default.nix similarity index 92% rename from pkgs/pretix/pretix-banktool.nix rename to pkgs/pretix-banktool/default.nix index f53f6f7..d685c12 100644 --- a/pkgs/pretix/pretix-banktool.nix +++ b/pkgs/pretix-banktool/default.nix @@ -11,7 +11,7 @@ python3Packages.buildPythonApplication rec { }; patches = [ - ./pretix-banktool-requirements.patch + ./requirements.patch ]; buildInputs = with python3Packages; [ diff --git a/pkgs/pretix-banktool/module.nix b/pkgs/pretix-banktool/module.nix new file mode 100644 index 0000000..253a519 --- /dev/null +++ b/pkgs/pretix-banktool/module.nix @@ -0,0 +1,60 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.services.pretix-banktool; + mkTimer = { description, unit, onCalendar }: { + inherit description; + requires = [ "pretix-migrate.service" ]; + after = [ "network.target" ]; + wantedBy = [ "timers.target" ]; + timerConfig = { + Persistent = true; + OnCalendar = onCalendar; + Unit = unit; + }; + }; +in +{ + options.services.pretix-banktool = with lib; with lib.types; { + enable = mkEnableOption "Enable tool to query bank account and sync transaction data to pretix server."; + days = mkOption { + type = types.int; + description = "The timeframe of transaction to fetch from the bank in days."; + }; + secretsFile = mkOption { + type = types.path; + description = '' + Path of file containing secrets for pretix banktool. + ''; + }; + }; + config = { + systemd.services.pretix-banktool = lib.mkIf cfg.enable { + description = "Tool to query bank account and sync transaction data to pretix server."; + serviceConfig = { + Type = "oneshot"; + DynamicUser = true; + CapabilityBoundingSet = null; + PrivateUsers = true; + ProtectHome = true; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; + RestrictNamespaces = true; + SystemCallFilter = "@system-service"; + LoadCredential = "config:${cfg.secretsFile}"; + }; + script = "${pkgs.pretix-banktool}/bin/pretix-banktool upload \"$CREDENTIALS_DIRECTORY/config\" --days=${toString cfg.days}"; + }; + + systemd.timers.pretix-banktool = lib.mkIf cfg.enable { + description = "Run tool to query bank account and sync transaction data to pretix server."; + after = [ "network.target" ]; + wantedBy = [ "timers.target" ]; + timerConfig = { + Persistent = true; + OnCalendar = "*-*-* *:00:00"; + Unit = "pretix-banktool.service"; + }; + }; + }; +} + diff --git a/pkgs/pretix/pretix-banktool-requirements.patch b/pkgs/pretix-banktool/requirements.patch similarity index 100% rename from pkgs/pretix/pretix-banktool-requirements.patch rename to pkgs/pretix-banktool/requirements.patch diff --git a/pkgs/pretix/.envrc b/pkgs/pretix/.envrc deleted file mode 100644 index 1d953f4..0000000 --- a/pkgs/pretix/.envrc +++ /dev/null @@ -1 +0,0 @@ -use nix diff --git a/pkgs/pretix/module.nix b/pkgs/pretix/module.nix deleted file mode 100644 index c2f851a..0000000 --- a/pkgs/pretix/module.nix +++ /dev/null @@ -1,318 +0,0 @@ -{ config, lib, pkgs, ... }: - -let - cfg = config.services.pretix; - name = "pretix"; - user = "pretix"; - group = "pretix"; - bind = { - host = "127.0.0.1"; - port = 8000; - }; - postgresql = { - database = "pretix"; - user = "pretix"; - password = "pretix"; - }; - redisPort = 6379; - urlScheme = if cfg.enableTls then "https" else "http"; - url = "${urlScheme}://${cfg.domain}"; - toBool = x: if x then "on" else "off"; - hstsHeader = if cfg.enableTls then "add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains; preload\" always;" else ""; - pythonPackages = pkgs.pretix.passthru.pythonModule.passthru.pkgs; - python = pkgs.pretix.passthru.python; - runCommandArgs = { - # Sets PYTHONPATH in derivation - buildInputs = [ - pkgs.pretix - pythonPackages.gunicorn - pythonPackages.celery - ]; - }; - staticRoot = pkgs.pretix-static; - environmentFile = pkgs.runCommand "pretix-environ" runCommandArgs ('' - cat > $out <=4.0,<5.0", markers = "python_version < \"3.11\""} -attrs = ">=17.3.0" -frozenlist = ">=1.1.1" -multidict = ">=4.5,<7.0" -yarl = ">=1.0,<2.0" - -[package.extras] -speedups = ["Brotli", "aiodns", "brotlicffi"] - -[[package]] -name = "aiosignal" -version = "1.3.1" -description = "aiosignal: a list of registered asynchronous callbacks" -optional = false -python-versions = ">=3.7" -files = [ - {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, - {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, -] - -[package.dependencies] -frozenlist = ">=1.1.0" - -[[package]] -name = "amqp" -version = "5.2.0" -description = "Low-level AMQP client for Python (fork of amqplib)." -optional = false -python-versions = ">=3.6" -files = [ - {file = "amqp-5.2.0-py3-none-any.whl", hash = "sha256:827cb12fb0baa892aad844fd95258143bce4027fdac4fccddbc43330fd281637"}, - {file = "amqp-5.2.0.tar.gz", hash = "sha256:a1ecff425ad063ad42a486c902807d1482311481c8ad95a72694b2975e75f7fd"}, -] - -[package.dependencies] -vine = ">=5.0.0,<6.0.0" - -[[package]] -name = "arabic-reshaper" -version = "3.0.0" -description = "Reconstruct Arabic sentences to be used in applications that do not support Arabic" -optional = false -python-versions = "*" -files = [ - {file = "arabic_reshaper-3.0.0-py3-none-any.whl", hash = "sha256:3f71d5034bb694204a239a6f1ebcf323ac3c5b059de02259235e2016a1a5e2dc"}, - {file = "arabic_reshaper-3.0.0.tar.gz", hash = "sha256:ffcd13ba5ec007db71c072f5b23f420da92ac7f268512065d49e790e62237099"}, -] - -[package.extras] -with-fonttools = ["fonttools (>=4.0)"] - -[[package]] -name = "asgiref" -version = "3.8.1" -description = "ASGI specs, helper code, and adapters" -optional = false -python-versions = ">=3.8" -files = [ - {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, - {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, -] - -[package.dependencies] -typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} - -[package.extras] -tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] - -[[package]] -name = "asn1crypto" -version = "1.5.1" -description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP" -optional = false -python-versions = "*" -files = [ - {file = "asn1crypto-1.5.1-py2.py3-none-any.whl", hash = "sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67"}, - {file = "asn1crypto-1.5.1.tar.gz", hash = "sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c"}, -] - -[[package]] -name = "async-timeout" -version = "4.0.3" -description = "Timeout context manager for asyncio programs" -optional = false -python-versions = ">=3.7" -files = [ - {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"}, - {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"}, -] - -[[package]] -name = "attrs" -version = "23.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, -] - -[package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] - -[[package]] -name = "babel" -version = "2.14.0" -description = "Internationalization utilities" -optional = false -python-versions = ">=3.7" -files = [ - {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, - {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, -] - -[package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] - -[[package]] -name = "beautifulsoup4" -version = "4.12.3" -description = "Screen-scraping library" -optional = false -python-versions = ">=3.6.0" -files = [ - {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, - {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, -] - -[package.dependencies] -soupsieve = ">1.2" - -[package.extras] -cchardet = ["cchardet"] -chardet = ["chardet"] -charset-normalizer = ["charset-normalizer"] -html5lib = ["html5lib"] -lxml = ["lxml"] - -[[package]] -name = "billiard" -version = "4.2.0" -description = "Python multiprocessing fork with improvements and bugfixes" -optional = false -python-versions = ">=3.7" -files = [ - {file = "billiard-4.2.0-py3-none-any.whl", hash = "sha256:07aa978b308f334ff8282bd4a746e681b3513db5c9a514cbdd810cbbdc19714d"}, - {file = "billiard-4.2.0.tar.gz", hash = "sha256:9a3c3184cb275aa17a732f93f65b20c525d3d9f253722d26a82194803ade5a2c"}, -] - -[[package]] -name = "bleach" -version = "5.0.1" -description = "An easy safelist-based HTML-sanitizing tool." -optional = false -python-versions = ">=3.7" -files = [ - {file = "bleach-5.0.1-py3-none-any.whl", hash = "sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a"}, - {file = "bleach-5.0.1.tar.gz", hash = "sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c"}, -] - -[package.dependencies] -six = ">=1.9.0" -webencodings = "*" - -[package.extras] -css = ["tinycss2 (>=1.1.0,<1.2)"] -dev = ["Sphinx (==4.3.2)", "black (==22.3.0)", "build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "mypy (==0.961)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)"] - -[[package]] -name = "cbor2" -version = "5.6.2" -description = "CBOR (de)serializer with extensive tag support" -optional = false -python-versions = ">=3.8" -files = [ - {file = "cbor2-5.6.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:516b8390936bb172ff18d7b609a452eaa51991513628949b0a9bf25cbe5a7129"}, - {file = "cbor2-5.6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1b8b504b590367a51fe8c0d9b8cb458a614d782d37b24483097e2b1e93ed0fff"}, - {file = "cbor2-5.6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f687e6731b1198811223576800258a712ddbfdcfa86c0aee2cc8269193e6b96"}, - {file = "cbor2-5.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e94043d99fe779f62a15a5e156768588a2a7047bb3a127fa312ac1135ff5ecb"}, - {file = "cbor2-5.6.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8af7162fcf7aa2649f02563bdb18b2fa6478b751eee4df0257bffe19ea8f107a"}, - {file = "cbor2-5.6.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ea7ecd81c5c6e02c2635973f52a0dd1e19c0bf5ef51f813d8cd5e3e7ed072726"}, - {file = "cbor2-5.6.2-cp310-cp310-win_amd64.whl", hash = "sha256:3c7f223f1fedc74d33f363d184cb2bab9e4bdf24998f73b5e3bef366d6c41628"}, - {file = "cbor2-5.6.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ea9e150029c3976c46ee9870b6dcdb0a5baae21008fe3290564886b11aa2b64"}, - {file = "cbor2-5.6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:922e06710e5cf6f56b82b0b90d2f356aa229b99e570994534206985f675fd307"}, - {file = "cbor2-5.6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b01a718e083e6de8b43296c3ccdb3aa8af6641f6bbb3ea1700427c6af73db28a"}, - {file = "cbor2-5.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac85eb731c524d148f608b9bdb2069fa79e374a10ed5d10a2405eba9a6561e60"}, - {file = "cbor2-5.6.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03e5b68867b9d89ff2abd14ef7c6d42fbd991adc3e734a19a294935f22a4d05a"}, - {file = "cbor2-5.6.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7221b83000ee01d674572eec1d1caa366eac109d1d32c14d7af9a4aaaf496563"}, - {file = "cbor2-5.6.2-cp311-cp311-win_amd64.whl", hash = "sha256:9aca73b63bdc6561e1a0d38618e78b9c204c942260d51e663c92c4ba6c961684"}, - {file = "cbor2-5.6.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:377cfe9d5560c682486faef6d856226abf8b2801d95fa29d4e5d75b1615eb091"}, - {file = "cbor2-5.6.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fdc564ef2e9228bcd96ec8c6cdaa431a48ab03b3fb8326ead4b3f986330e5b9e"}, - {file = "cbor2-5.6.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d1c0021d9a1f673066de7c8941f71a59abb11909cc355892dda01e79a2b3045"}, - {file = "cbor2-5.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fde9e704e96751e0729cc58b912d0e77c34387fb6bcceea0817069e8683df45"}, - {file = "cbor2-5.6.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:30e9ba8f4896726ca61869efacda50b6859aff92162ae5a0e192859664f36c81"}, - {file = "cbor2-5.6.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:211a1e18e65ac71e04434ff5b58bde5c53f85b9c5bc92a3c0e2265089d3034f3"}, - {file = "cbor2-5.6.2-cp312-cp312-win_amd64.whl", hash = "sha256:94981277b4bf448a2754c1f34a9d0055a9d1c5a8d102c933ffe95c80f1085bae"}, - {file = "cbor2-5.6.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f70db0ebcf005c25408e8d5cc4b9558c899f13a3e2f8281fa3d3be4894e0e821"}, - {file = "cbor2-5.6.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:22c24fe9ef1696a84b8fd80ff66eb0e5234505d8b9a9711fc6db57bce10771f3"}, - {file = "cbor2-5.6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a4a3420f80d6b942874d66eaad07658066370df994ddee4125b48b2cbc61ece"}, - {file = "cbor2-5.6.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b28d8ff0e726224a7429281700c28afe0e665f83f9ae79648cbae3f1a391cbf"}, - {file = "cbor2-5.6.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c10ede9462458998f1b9c488e25fe3763aa2491119b7af472b72bf538d789e24"}, - {file = "cbor2-5.6.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ea686dfb5e54d690e704ce04993bc8ca0052a7cd2d4b13dd333a41cca8a05a05"}, - {file = "cbor2-5.6.2-cp38-cp38-win_amd64.whl", hash = "sha256:22996159b491d545ecfd489392d3c71e5d0afb9a202dfc0edc8b2cf413a58326"}, - {file = "cbor2-5.6.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9faa0712d414a88cc1244c78cd4b28fced44f1827dbd8c1649e3c40588aa670f"}, - {file = "cbor2-5.6.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6031a284d93fc953fc2a2918f261c4f5100905bd064ca3b46961643e7312a828"}, - {file = "cbor2-5.6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30c8a9a9df79f26e72d8d5fa51ef08eb250d9869a711bcf9539f1865916c983"}, - {file = "cbor2-5.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44bf7457fca23209e14dab8181dff82466a83b72e55b444dbbfe90fa67659492"}, - {file = "cbor2-5.6.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cc29c068687aa2e7778f63b653f1346065b858427a2555df4dc2191f4a0de8ce"}, - {file = "cbor2-5.6.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42eaf0f768bd27afcb38135d5bfc361d3a157f1f5c7dddcd8d391f7fa43d9de8"}, - {file = "cbor2-5.6.2-cp39-cp39-win_amd64.whl", hash = "sha256:8839b73befa010358477736680657b9d08c1ed935fd973decb1909712a41afdc"}, - {file = "cbor2-5.6.2-py3-none-any.whl", hash = "sha256:c0b53a65673550fde483724ff683753f49462d392d45d7b6576364b39e76e54c"}, - {file = "cbor2-5.6.2.tar.gz", hash = "sha256:b7513c2dea8868991fad7ef8899890ebcf8b199b9b4461c3c11d7ad3aef4820d"}, -] - -[package.extras] -benchmarks = ["pytest-benchmark (==4.0.0)"] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.3.0)", "typing-extensions"] -test = ["coverage (>=7)", "hypothesis", "pytest"] - -[[package]] -name = "celery" -version = "5.3.6" -description = "Distributed Task Queue." -optional = false -python-versions = ">=3.8" -files = [ - {file = "celery-5.3.6-py3-none-any.whl", hash = "sha256:9da4ea0118d232ce97dff5ed4974587fb1c0ff5c10042eb15278487cdd27d1af"}, - {file = "celery-5.3.6.tar.gz", hash = "sha256:870cc71d737c0200c397290d730344cc991d13a057534353d124c9380267aab9"}, -] - -[package.dependencies] -billiard = ">=4.2.0,<5.0" -click = ">=8.1.2,<9.0" -click-didyoumean = ">=0.3.0" -click-plugins = ">=1.1.1" -click-repl = ">=0.2.0" -kombu = ">=5.3.4,<6.0" -python-dateutil = ">=2.8.2" -tzdata = ">=2022.7" -vine = ">=5.1.0,<6.0" - -[package.extras] -arangodb = ["pyArango (>=2.0.2)"] -auth = ["cryptography (==41.0.5)"] -azureblockblob = ["azure-storage-blob (>=12.15.0)"] -brotli = ["brotli (>=1.0.0)", "brotlipy (>=0.7.0)"] -cassandra = ["cassandra-driver (>=3.25.0,<4)"] -consul = ["python-consul2 (==0.1.5)"] -cosmosdbsql = ["pydocumentdb (==2.3.5)"] -couchbase = ["couchbase (>=3.0.0)"] -couchdb = ["pycouchdb (==1.14.2)"] -django = ["Django (>=2.2.28)"] -dynamodb = ["boto3 (>=1.26.143)"] -elasticsearch = ["elastic-transport (<=8.10.0)", "elasticsearch (<=8.11.0)"] -eventlet = ["eventlet (>=0.32.0)"] -gevent = ["gevent (>=1.5.0)"] -librabbitmq = ["librabbitmq (>=2.0.0)"] -memcache = ["pylibmc (==1.6.3)"] -mongodb = ["pymongo[srv] (>=4.0.2)"] -msgpack = ["msgpack (==1.0.7)"] -pymemcache = ["python-memcached (==1.59)"] -pyro = ["pyro4 (==4.82)"] -pytest = ["pytest-celery (==0.0.0)"] -redis = ["redis (>=4.5.2,!=4.5.5,<6.0.0)"] -s3 = ["boto3 (>=1.26.143)"] -slmq = ["softlayer-messaging (>=1.0.3)"] -solar = ["ephem (==4.1.5)"] -sqlalchemy = ["sqlalchemy (>=1.4.48,<2.1)"] -sqs = ["boto3 (>=1.26.143)", "kombu[sqs] (>=5.3.0)", "pycurl (>=7.43.0.5)", "urllib3 (>=1.26.16)"] -tblib = ["tblib (>=1.3.0)", "tblib (>=1.5.0)"] -yaml = ["PyYAML (>=3.10)"] -zookeeper = ["kazoo (>=1.3.1)"] -zstd = ["zstandard (==0.22.0)"] - -[[package]] -name = "certifi" -version = "2024.2.2" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, -] - -[[package]] -name = "cffi" -version = "1.16.0" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, - {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, - {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, - {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, - {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, - {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, - {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, - {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, - {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, - {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, - {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, - {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, - {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, - {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, - {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "chardet" -version = "5.2.0" -description = "Universal encoding detector for Python 3" -optional = false -python-versions = ">=3.7" -files = [ - {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, - {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "click" -version = "8.1.7" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "click-didyoumean" -version = "0.3.1" -description = "Enables git-like *did-you-mean* feature in click" -optional = false -python-versions = ">=3.6.2" -files = [ - {file = "click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c"}, - {file = "click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463"}, -] - -[package.dependencies] -click = ">=7" - -[[package]] -name = "click-plugins" -version = "1.1.1" -description = "An extension module for click to enable registering CLI commands via setuptools entry-points." -optional = false -python-versions = "*" -files = [ - {file = "click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b"}, - {file = "click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8"}, -] - -[package.dependencies] -click = ">=4.0" - -[package.extras] -dev = ["coveralls", "pytest (>=3.6)", "pytest-cov", "wheel"] - -[[package]] -name = "click-repl" -version = "0.3.0" -description = "REPL plugin for Click" -optional = false -python-versions = ">=3.6" -files = [ - {file = "click-repl-0.3.0.tar.gz", hash = "sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9"}, - {file = "click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812"}, -] - -[package.dependencies] -click = ">=7.0" -prompt-toolkit = ">=3.0.36" - -[package.extras] -testing = ["pytest (>=7.2.1)", "pytest-cov (>=4.0.0)", "tox (>=4.4.3)"] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "cryptography" -version = "42.0.5" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16"}, - {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da"}, - {file = "cryptography-42.0.5-cp37-abi3-win32.whl", hash = "sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74"}, - {file = "cryptography-42.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940"}, - {file = "cryptography-42.0.5-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30"}, - {file = "cryptography-42.0.5-cp39-abi3-win32.whl", hash = "sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413"}, - {file = "cryptography-42.0.5-cp39-abi3-win_amd64.whl", hash = "sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd"}, - {file = "cryptography-42.0.5.tar.gz", hash = "sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1"}, -] - -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] -nox = ["nox"] -pep8test = ["check-sdist", "click", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - -[[package]] -name = "css-inline" -version = "0.13.0" -description = "High-performance library for inlining CSS into HTML 'style' attributes" -optional = false -python-versions = ">=3.7" -files = [ - {file = "css_inline-0.13.0-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:c06b1cb6e5638328e9f1a62f8a0b760914852834d950b7f6812653231c806ded"}, - {file = "css_inline-0.13.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:af66e7dc7e762ab24ebe57f98b7c02ac87cc10457a64b545de923a47694f63f7"}, - {file = "css_inline-0.13.0-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cbe8e5b1379695183a1700a70ad22877731b22e223ad4b7ddbd38b6e3b18b484"}, - {file = "css_inline-0.13.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c4861ed5c62412a7f1db87195cb94cfdb7b2ae1f1b4e10a31df7f6217e49bda"}, - {file = "css_inline-0.13.0-cp37-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:30d7d79b939df4ef14587998ad1be350410b3c19e697d0a445f99c7734fdf15a"}, - {file = "css_inline-0.13.0-cp37-abi3-manylinux_2_24_armv7l.whl", hash = "sha256:0111e8c300676aa47b99f30667583ec0a70914a63377ceefa008f5ba75853df3"}, - {file = "css_inline-0.13.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c1a8cb1323579bc38e2b9a55fe2ebb9f95dae5774521d1e870a6548069774197"}, - {file = "css_inline-0.13.0-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:c69ca8e8fca9c4d655de091c126d9d69de82b66e3182abdfb37db54c9532caac"}, - {file = "css_inline-0.13.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2f843e58e8907614c39f65898ebddb62e893bf49a022f26ac1fa1a7f53591521"}, - {file = "css_inline-0.13.0-cp37-abi3-win32.whl", hash = "sha256:3963e66e20c554798d58759bb282ef763836b4ee2afa2c6e466b2b31d9475f21"}, - {file = "css_inline-0.13.0-cp37-abi3-win_amd64.whl", hash = "sha256:f3403165e511935de3fd702b667fac2b018e080d96ac04918041788ec409f04b"}, - {file = "css_inline-0.13.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:80db07d589361f1ed75c297bd984049918693016c81cf288cc3dc7276653469a"}, - {file = "css_inline-0.13.0-pp310-pypy310_pp73-manylinux_2_24_aarch64.whl", hash = "sha256:00410f5bf5bbc50d6f0aa474750aa2c9ebdc51b37af60e15d1ced7e539608492"}, - {file = "css_inline-0.13.0-pp310-pypy310_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:3814d5060fa874ea88cc7262f0dec79cd83c63d5528fed049434ff4cd725d296"}, - {file = "css_inline-0.13.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:866dba67fc4065981fc60af72f470e58210eaee59b69ba6ac023f948ee5199b5"}, - {file = "css_inline-0.13.0-pp37-pypy37_pp73-manylinux_2_24_aarch64.whl", hash = "sha256:1fa752b54612e38bfc69083fd77de53df2053bd5f1de2a210e37b3347eb9720d"}, - {file = "css_inline-0.13.0-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:f481d2dfa116c9f1a163c2478b6c4c7d035740a680d19b6cb780677148c595f6"}, - {file = "css_inline-0.13.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:206c1cb0700f00a7164d18ce293bdaa4ca6cdfc4640e04ea5724ef1c4937bd64"}, - {file = "css_inline-0.13.0-pp38-pypy38_pp73-manylinux_2_24_aarch64.whl", hash = "sha256:6761771ea8481fdcb00ce25727e08232561a107a8330f012e52276a6fe84e080"}, - {file = "css_inline-0.13.0-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d7f8399b05d88c4cf48bcea3a9fe4f6cdab9e4def0e608d9c7e9447dd39f2e72"}, - {file = "css_inline-0.13.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:46296fefce679d760cd824cefcdd4f372dbc23232599a99e94612fc46bc0bfbe"}, - {file = "css_inline-0.13.0-pp39-pypy39_pp73-manylinux_2_24_aarch64.whl", hash = "sha256:4c9e4d17a801240e3d23d047f159a997f01c52d441a2529dddb18557068dbf5b"}, - {file = "css_inline-0.13.0-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:551619187c6c2d58442e5b67917e4254cec552e38750be942a871bc118ee56d6"}, - {file = "css_inline-0.13.0.tar.gz", hash = "sha256:d1a8366df670f7db78f5da9f8d4f500b3a5485bc945ec53e43c976b1626853ee"}, -] - -[[package]] -name = "defusedcsv" -version = "2.0.0" -description = "Drop-in replacement for Python's CSV library that tries to mitigate CSV injection attacks" -optional = false -python-versions = "*" -files = [ - {file = "defusedcsv-2.0.0-py3-none-any.whl", hash = "sha256:a7bc3b1ac1ce4f8c6c1e8740466b1b5789b51ca18d918b0099313dc0cdf2cef4"}, - {file = "defusedcsv-2.0.0.tar.gz", hash = "sha256:7612228e54ef1690a19f7aef526709010608e987f9998c89588ef05d9ecfe4d6"}, -] - -[[package]] -name = "dj-static" -version = "0.0.6" -description = "Serve production static files with Django." -optional = false -python-versions = "*" -files = [ - {file = "dj-static-0.0.6.tar.gz", hash = "sha256:032ec1c532617922e6e3e956d504a6fb1acce4fc1c7c94612d0fda21828ce8ef"}, -] - -[package.dependencies] -static3 = "*" - -[[package]] -name = "django" -version = "4.2.11" -description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." -optional = false -python-versions = ">=3.8" -files = [ - {file = "Django-4.2.11-py3-none-any.whl", hash = "sha256:ddc24a0a8280a0430baa37aff11f28574720af05888c62b7cfe71d219f4599d3"}, - {file = "Django-4.2.11.tar.gz", hash = "sha256:6e6ff3db2d8dd0c986b4eec8554c8e4f919b5c1ff62a5b4390c17aff2ed6e5c4"}, -] - -[package.dependencies] -asgiref = ">=3.6.0,<4" -sqlparse = ">=0.3.1" -tzdata = {version = "*", markers = "sys_platform == \"win32\""} - -[package.extras] -argon2 = ["argon2-cffi (>=19.1.0)"] -bcrypt = ["bcrypt"] - -[[package]] -name = "django-appconf" -version = "1.0.6" -description = "A helper class for handling configuration defaults of packaged apps gracefully." -optional = false -python-versions = ">=3.7" -files = [ - {file = "django-appconf-1.0.6.tar.gz", hash = "sha256:cfe87ea827c4ee04b9a70fab90b86d704cb02f2981f89da8423cb0fabf88efbf"}, - {file = "django_appconf-1.0.6-py3-none-any.whl", hash = "sha256:c3ae442fba1ff7ec830412c5184b17169a7a1e71cf0864a4c3f93cf4c98a1993"}, -] - -[package.dependencies] -django = "*" - -[[package]] -name = "django-bootstrap3" -version = "23.6" -description = "Bootstrap 3 for Django" -optional = false -python-versions = ">=3.8" -files = [ - {file = "django-bootstrap3-23.6.tar.gz", hash = "sha256:f8563b2641bcad3a8626beda979ff697c8375002cbf906fbd49f4be97b0f8a54"}, - {file = "django_bootstrap3-23.6-py3-none-any.whl", hash = "sha256:ba1334104c390ca9dc5b985a8d8ec45fab2c6401e4abb8d3a47d3b225614c3d9"}, -] - -[package.dependencies] -Django = ">=3.2" - -[[package]] -name = "django-compressor" -version = "4.4" -description = "('Compresses linked and inline JavaScript or CSS into single cached files.',)" -optional = false -python-versions = "*" -files = [ - {file = "django_compressor-4.4-py2.py3-none-any.whl", hash = "sha256:6e2b0c0becb9607f5099c2546a824c5b84a6918a34bc37a8a622ffa250313596"}, - {file = "django_compressor-4.4.tar.gz", hash = "sha256:1b0acc9cfba9f69bc38e7c41da9b0d70a20bc95587b643ffef9609cf46064f67"}, -] - -[package.dependencies] -django-appconf = ">=1.0.3" -rcssmin = "1.1.1" -rjsmin = "1.2.1" - -[[package]] -name = "django-countries" -version = "7.5.1" -description = "Provides a country field for Django models." -optional = false -python-versions = "*" -files = [ - {file = "django-countries-7.5.1.tar.gz", hash = "sha256:22915d9b9403932b731622619940a54894a3eb0da9a374e7249c8fc453c122d7"}, - {file = "django_countries-7.5.1-py3-none-any.whl", hash = "sha256:2df707aca7a5e677254bed116cf6021a136ebaccd5c2f46860abd6452bb45521"}, -] - -[package.dependencies] -asgiref = "*" -typing-extensions = "*" - -[package.extras] -dev = ["black", "django", "djangorestframework", "graphene-django", "pytest", "pytest-django", "tox"] -maintainer = ["django", "transifex-client", "zest.releaser[recommended]"] -pyuca = ["pyuca"] -test = ["djangorestframework", "graphene-django", "pytest", "pytest-cov", "pytest-django"] - -[[package]] -name = "django-filter" -version = "24.1" -description = "Django-filter is a reusable Django application for allowing users to filter querysets dynamically." -optional = false -python-versions = ">=3.8" -files = [ - {file = "django-filter-24.1.tar.gz", hash = "sha256:65cb43ce272077e5ac6aae1054d76c121cd6b552e296a82a13921e9371baf8c1"}, - {file = "django_filter-24.1-py3-none-any.whl", hash = "sha256:335bcae6cbd3e984b024841070f567b22faea57594f27d37c52f8f131f8d8621"}, -] - -[package.dependencies] -Django = ">=4.2" - -[[package]] -name = "django-formset-js-improved" -version = "0.5.0.3" -description = "Extend Django formsets with JavaScript" -optional = false -python-versions = "*" -files = [ - {file = "django-formset-js-improved-0.5.0.3.tar.gz", hash = "sha256:6c5a0ffec4fc25ad5f502b914fa6414fb0e43ec5f116a88a2da0090a72f32a4c"}, - {file = "django_formset_js_improved-0.5.0.3-py3-none-any.whl", hash = "sha256:99ff030c427fe412a8a54c6fadc3809f3d65683470b67f68d1d421ce7a09bb94"}, -] - -[package.dependencies] -Django = "*" -django-jquery-js = "*" - -[[package]] -name = "django-formtools" -version = "2.5.1" -description = "A set of high-level abstractions for Django forms" -optional = false -python-versions = ">=3.8" -files = [ - {file = "django-formtools-2.5.1.tar.gz", hash = "sha256:47cb34552c6efca088863d693284d04fc36eaaf350eb21e1a1d935e0df523c93"}, - {file = "django_formtools-2.5.1-py3-none-any.whl", hash = "sha256:bce9b64eda52cc1eef6961cc649cf75aacd1a707c2fff08d6c3efcbc8e7e761a"}, -] - -[package.dependencies] -Django = ">=3.2" - -[[package]] -name = "django-hierarkey" -version = "1.1.0" -description = "Hierarchical key-value store for django" -optional = false -python-versions = "*" -files = [ - {file = "django-hierarkey-1.1.0.tar.gz", hash = "sha256:b0963b760b5bb4b97fe7abc6b7a0f3d2dd23e4741ac4585252af1d47f5ae771a"}, - {file = "django_hierarkey-1.1.0-py3-none-any.whl", hash = "sha256:2be56a6ae79bec1b356e2df22d2781fb6a48bd4bc55635a74a3e468fc0e2046f"}, -] - -[package.dependencies] -python-dateutil = "*" - -[[package]] -name = "django-hijack" -version = "3.4.5" -description = "django-hijack allows superusers to hijack (=login as) and work on behalf of another user." -optional = false -python-versions = "*" -files = [ - {file = "django-hijack-3.4.5.tar.gz", hash = "sha256:7e45b1de786bdc130628e4230b359dde6d8744ecd3bcd668d2b27c5d614a071c"}, - {file = "django_hijack-3.4.5-py3-none-any.whl", hash = "sha256:129cbe75444b163135871a947d38ffb72181f4f2583544703fc9efe083c9ddad"}, -] - -[package.dependencies] -django = ">=3.2" - -[package.extras] -test = ["pytest", "pytest-cov", "pytest-django"] - -[[package]] -name = "django-i18nfield" -version = "1.9.4" -description = "Store internationalized strings in Django models" -optional = false -python-versions = "*" -files = [ - {file = "django-i18nfield-1.9.4.tar.gz", hash = "sha256:f24c209f4fcbf407ec1ebf749b6c182bf4089ef46c3cd0e60fa547955d575d2e"}, - {file = "django_i18nfield-1.9.4-py3-none-any.whl", hash = "sha256:d31bf725b43d6fa0d67a403efb45abf54fc6013ee9135ad55679626df9d0c8ca"}, -] - -[[package]] -name = "django-jquery-js" -version = "3.1.1" -description = "jQuery, bundled up so apps can depend upon it" -optional = false -python-versions = "*" -files = [ - {file = "django-jquery-js-3.1.1.tar.gz", hash = "sha256:308e6472801f89be7c02fa3d06bea6470cfbcab8287db80c64b1093717b8eea9"}, -] - -[package.dependencies] -Django = ">=1.4" - -[[package]] -name = "django-libsass" -version = "0.9" -description = "A django-compressor filter to compile SASS files using libsass" -optional = false -python-versions = "*" -files = [ - {file = "django-libsass-0.9.tar.gz", hash = "sha256:bfbbb55a8950bb40fa04dd416605f92da34ad1f303b10a41abc3232386ec27b5"}, - {file = "django_libsass-0.9-py3-none-any.whl", hash = "sha256:5234d29100889cac79e36a0f44207ec6d275adfd2da1acb6a94b55c89fe2bd97"}, -] - -[package.dependencies] -django-compressor = ">=1.3" -libsass = ">=0.7.0,<1" - -[[package]] -name = "django-localflavor" -version = "4.0" -description = "Country-specific Django helpers" -optional = false -python-versions = "*" -files = [ - {file = "django-localflavor-4.0.tar.gz", hash = "sha256:11859e522dba74aa6dde5a659242b1fbc5efb4dea08e9b77315402bdeca5194e"}, - {file = "django_localflavor-4.0-py3-none-any.whl", hash = "sha256:7a5b1df03ca8e10df9d1b3c2e4314e43383067868183cdf41ab4e7a973694a8b"}, -] - -[package.dependencies] -django = ">=3.2" -python-stdnum = ">=1.6" - -[[package]] -name = "django-markup" -version = "1.8.1" -description = "A generic Django application to convert text with specific markup to html." -optional = false -python-versions = ">=3.7" -files = [ - {file = "django-markup-1.8.1.tar.gz", hash = "sha256:04824880a7afbd19e7b3cdaf0005e759f818b2cc4e3b4f1dd97182b7038a72c9"}, - {file = "django_markup-1.8.1-py2.py3-none-any.whl", hash = "sha256:bf0dabcfc288eac76b6e501357b02383ff7012b48e4005cab58e3c68b5474e07"}, - {file = "django_markup-1.8.1-py3-none-any.whl", hash = "sha256:ab0bbdcb721ec92a2848dd93f47e4a0d01760677ca78789230432298cf82a7c8"}, -] - -[package.dependencies] -django = ">=3.2" - -[package.extras] -all-filter-dependencies = ["bleach (>=3.0)", "docutils (>=0.14)", "markdown (>=2.6.9)", "pygments (>=2.10.0)", "pygments (>=2.2.0)", "python-creole (>=1.3.1)", "smartypants (>=2.0.0)", "textile (>=2.3.16)"] - -[[package]] -name = "django-oauth-toolkit" -version = "2.3.0" -description = "OAuth2 Provider for Django" -optional = false -python-versions = "*" -files = [ - {file = "django-oauth-toolkit-2.3.0.tar.gz", hash = "sha256:cf1cb1a5744672e6bd7d66b4a110a463bcef9cf5ed4f27e29682cc6a4d0df1ed"}, - {file = "django_oauth_toolkit-2.3.0-py3-none-any.whl", hash = "sha256:47dfeab97ec21496f307c2cf3468e64ca08897fa499bf3104366d32005c9111d"}, -] - -[package.dependencies] -django = ">=2.2,<4.0.0 || >4.0.0" -jwcrypto = ">=0.8.0" -oauthlib = ">=3.1.0" -requests = ">=2.13.0" - -[[package]] -name = "django-otp" -version = "1.3.0" -description = "A pluggable framework for adding two-factor authentication to Django using one-time passwords." -optional = false -python-versions = ">=3.7" -files = [ - {file = "django_otp-1.3.0-py3-none-any.whl", hash = "sha256:5277731bc05b6cdbf96aa84ac46018e30ed5fb248086053b0146f925de059060"}, - {file = "django_otp-1.3.0.tar.gz", hash = "sha256:8f4156a3c14ce2aaa31379385eadf388925cd50fc4b5d20a3b944f454c98ff7c"}, -] - -[package.dependencies] -django = ">=3.2" - -[package.extras] -qrcode = ["qrcode"] - -[[package]] -name = "django-phonenumber-field" -version = "7.3.0" -description = "An international phone number field for django models." -optional = false -python-versions = ">=3.8" -files = [ - {file = "django-phonenumber-field-7.3.0.tar.gz", hash = "sha256:f9cdb3de085f99c249328293a3b93d4e5fa440c0c8e3b99eb0d0f54748629797"}, - {file = "django_phonenumber_field-7.3.0-py3-none-any.whl", hash = "sha256:bc6eaa49d1f9d870944f5280258db511e3a1ba5e2fbbed255488dceacae45d06"}, -] - -[package.dependencies] -Django = ">=3.2" - -[package.extras] -phonenumbers = ["phonenumbers (>=7.0.2)"] -phonenumberslite = ["phonenumberslite (>=7.0.2)"] - -[[package]] -name = "django-redis" -version = "5.4.0" -description = "Full featured redis cache backend for Django." -optional = false -python-versions = ">=3.6" -files = [ - {file = "django-redis-5.4.0.tar.gz", hash = "sha256:6a02abaa34b0fea8bf9b707d2c363ab6adc7409950b2db93602e6cb292818c42"}, - {file = "django_redis-5.4.0-py3-none-any.whl", hash = "sha256:ebc88df7da810732e2af9987f7f426c96204bf89319df4c6da6ca9a2942edd5b"}, -] - -[package.dependencies] -Django = ">=3.2" -redis = ">=3,<4.0.0 || >4.0.0,<4.0.1 || >4.0.1" - -[package.extras] -hiredis = ["redis[hiredis] (>=3,!=4.0.0,!=4.0.1)"] - -[[package]] -name = "django-scopes" -version = "2.0.0" -description = "Scope querys in multi-tenant django applications" -optional = false -python-versions = "*" -files = [ - {file = "django-scopes-2.0.0.tar.gz", hash = "sha256:d190d9a2462bce812bc6fdd254e47ba031f6fba3279c8ac7397c671df0a4e54f"}, - {file = "django_scopes-2.0.0-py3-none-any.whl", hash = "sha256:9cf521b4d543ffa2ff6369fb5a1dda03567e862ba89626c01405f3d93ca04724"}, -] - -[package.dependencies] -Django = ">=3.2" - -[[package]] -name = "django-statici18n" -version = "2.4.0" -description = "A Django app that compiles i18n JavaScript catalogs to static files." -optional = false -python-versions = "*" -files = [ - {file = "django-statici18n-2.4.0.tar.gz", hash = "sha256:32660a0d492188751266c800cf4e44005d563bd1e4c91c349e1bd63a6855e270"}, - {file = "django_statici18n-2.4.0-py2.py3-none-any.whl", hash = "sha256:02a96963a8c42aa7a222a2ba0c39d888306e66f375b6c6acc748a3a81035ed52"}, -] - -[package.dependencies] -Django = ">=3.2" -django-appconf = ">=1.0" - -[[package]] -name = "djangorestframework" -version = "3.14.0" -description = "Web APIs for Django, made easy." -optional = false -python-versions = ">=3.6" -files = [ - {file = "djangorestframework-3.14.0-py3-none-any.whl", hash = "sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08"}, - {file = "djangorestframework-3.14.0.tar.gz", hash = "sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8"}, -] - -[package.dependencies] -django = ">=3.0" -pytz = "*" - -[[package]] -name = "dnspython" -version = "2.6.1" -description = "DNS toolkit" -optional = false -python-versions = ">=3.8" -files = [ - {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, - {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, -] - -[package.extras] -dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "mypy (>=1.8)", "pylint (>=3)", "pytest (>=7.4)", "pytest-cov (>=4.1.0)", "sphinx (>=7.2.0)", "twine (>=4.0.0)", "wheel (>=0.42.0)"] -dnssec = ["cryptography (>=41)"] -doh = ["h2 (>=4.1.0)", "httpcore (>=1.0.0)", "httpx (>=0.26.0)"] -doq = ["aioquic (>=0.9.25)"] -idna = ["idna (>=3.6)"] -trio = ["trio (>=0.23)"] -wmi = ["wmi (>=1.5.1)"] - -[[package]] -name = "drf-ujson2" -version = "1.7.2" -description = "Django Rest Framework UJSON Renderer" -optional = false -python-versions = ">=3.6" -files = [ - {file = "drf_ujson2-1.7.2-py3-none-any.whl", hash = "sha256:5fead7ee1cccafd08137a845ddb1f153415519519ddfd9de5bcadfacb70ceb0b"}, - {file = "drf_ujson2-1.7.2.tar.gz", hash = "sha256:ae550e861280e7166232ccbfcb4e950059d88f7123abb02019bed48f8e2dbdbb"}, -] - -[package.dependencies] -django = "*" -djangorestframework = "*" -ujson = ">=2.0.1" - -[package.extras] -dev = ["pytest", "pytest-cov", "pytest-django", "pytest-mock", "pytest-runner"] - -[[package]] -name = "elementpath" -version = "4.4.0" -description = "XPath 1.0/2.0/3.0/3.1 parsers and selectors for ElementTree and lxml" -optional = false -python-versions = ">=3.8" -files = [ - {file = "elementpath-4.4.0-py3-none-any.whl", hash = "sha256:cda092281afe508ece1bf65373905b30196c9426f3730cfea46059e103a131bd"}, - {file = "elementpath-4.4.0.tar.gz", hash = "sha256:dfc4b8ca3d87966dcb0df40b5b6d04a98f053683271930fad9e7fa000924dfb2"}, -] - -[package.extras] -dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", "memray", "mypy", "tox", "xmlschema (>=2.0.0)"] - -[[package]] -name = "et-xmlfile" -version = "1.1.0" -description = "An implementation of lxml.xmlfile for the standard library" -optional = false -python-versions = ">=3.6" -files = [ - {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"}, - {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, -] - -[[package]] -name = "frozenlist" -version = "1.4.1" -description = "A list-like structure which implements collections.abc.MutableSequence" -optional = false -python-versions = ">=3.8" -files = [ - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, - {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, - {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, - {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, - {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, - {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, - {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, - {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, - {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, - {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, - {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, - {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, - {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, -] - -[[package]] -name = "geoip2" -version = "4.8.0" -description = "MaxMind GeoIP2 API" -optional = false -python-versions = ">=3.8" -files = [ - {file = "geoip2-4.8.0-py2.py3-none-any.whl", hash = "sha256:39b38ec703575355d10475c0e6aa981827a2b4b5471d308c4ecb5e79cbe366ce"}, - {file = "geoip2-4.8.0.tar.gz", hash = "sha256:dd9cc180b7d41724240ea481d5d539149e65b234f64282b231b9170794a9ac35"}, -] - -[package.dependencies] -aiohttp = ">=3.6.2,<4.0.0" -maxminddb = ">=2.5.1,<3.0.0" -requests = ">=2.24.0,<3.0.0" -setuptools = ">=60.0.0" - -[package.extras] -test = ["mocket (>=3.11.1)"] - -[[package]] -name = "idna" -version = "3.6" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.5" -files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, -] - -[[package]] -name = "importlib-metadata" -version = "7.1.0" -description = "Read metadata from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, - {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "isoweek" -version = "1.3.3" -description = "Objects representing a week" -optional = false -python-versions = "*" -files = [ - {file = "isoweek-1.3.3-py2.py3-none-any.whl", hash = "sha256:d3324c497d97f1534669de225ec877964222e4cc773a4a99063086f7a4e342b6"}, - {file = "isoweek-1.3.3.tar.gz", hash = "sha256:73f3f7bac443e05a3ab45c32a72048b0c4f26d53d81462ec4b142c7581d3ffe8"}, -] - -[[package]] -name = "jsonschema" -version = "4.21.1" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, - {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, -] - -[package.dependencies] -attrs = ">=22.2.0" -jsonschema-specifications = ">=2023.03.6" -referencing = ">=0.28.4" -rpds-py = ">=0.7.1" - -[package.extras] -format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] - -[[package]] -name = "jsonschema-specifications" -version = "2023.12.1" -description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, - {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, -] - -[package.dependencies] -referencing = ">=0.31.0" - -[[package]] -name = "jwcrypto" -version = "1.5.6" -description = "Implementation of JOSE Web standards" -optional = false -python-versions = ">= 3.8" -files = [ - {file = "jwcrypto-1.5.6-py3-none-any.whl", hash = "sha256:150d2b0ebbdb8f40b77f543fb44ffd2baeff48788be71f67f03566692fd55789"}, - {file = "jwcrypto-1.5.6.tar.gz", hash = "sha256:771a87762a0c081ae6166958a954f80848820b2ab066937dc8b8379d65b1b039"}, -] - -[package.dependencies] -cryptography = ">=3.4" -typing-extensions = ">=4.5.0" - -[[package]] -name = "kombu" -version = "5.3.6" -description = "Messaging library for Python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "kombu-5.3.6-py3-none-any.whl", hash = "sha256:49f1e62b12369045de2662f62cc584e7df83481a513db83b01f87b5b9785e378"}, - {file = "kombu-5.3.6.tar.gz", hash = "sha256:f3da5b570a147a5da8280180aa80b03807283d63ea5081fcdb510d18242431d9"}, -] - -[package.dependencies] -amqp = ">=5.1.1,<6.0.0" -vine = "*" - -[package.extras] -azureservicebus = ["azure-servicebus (>=7.10.0)"] -azurestoragequeues = ["azure-identity (>=1.12.0)", "azure-storage-queue (>=12.6.0)"] -confluentkafka = ["confluent-kafka (>=2.2.0)"] -consul = ["python-consul2"] -librabbitmq = ["librabbitmq (>=2.0.0)"] -mongodb = ["pymongo (>=4.1.1)"] -msgpack = ["msgpack"] -pyro = ["pyro4"] -qpid = ["qpid-python (>=0.26)", "qpid-tools (>=0.26)"] -redis = ["redis (>=4.5.2,!=4.5.5,!=5.0.2)"] -slmq = ["softlayer-messaging (>=1.0.3)"] -sqlalchemy = ["sqlalchemy (>=1.4.48,<2.1)"] -sqs = ["boto3 (>=1.26.143)", "pycurl (>=7.43.0.5)", "urllib3 (>=1.26.16)"] -yaml = ["PyYAML (>=3.10)"] -zookeeper = ["kazoo (>=2.8.0)"] - -[[package]] -name = "libsass" -version = "0.23.0" -description = "Sass for Python: A straightforward binding of libsass for Python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "libsass-0.23.0-cp38-abi3-macosx_11_0_x86_64.whl", hash = "sha256:34cae047cbbfc4ffa832a61cbb110f3c95f5471c6170c842d3fed161e40814dc"}, - {file = "libsass-0.23.0-cp38-abi3-macosx_14_0_arm64.whl", hash = "sha256:ea97d1b45cdc2fc3590cb9d7b60f1d8915d3ce17a98c1f2d4dd47ee0d9c68ce6"}, - {file = "libsass-0.23.0-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4a218406d605f325d234e4678bd57126a66a88841cb95bee2caeafdc6f138306"}, - {file = "libsass-0.23.0-cp38-abi3-win32.whl", hash = "sha256:31e86d92a5c7a551df844b72d83fc2b5e50abc6fbbb31e296f7bebd6489ed1b4"}, - {file = "libsass-0.23.0-cp38-abi3-win_amd64.whl", hash = "sha256:a2ec85d819f353cbe807432d7275d653710d12b08ec7ef61c124a580a8352f3c"}, - {file = "libsass-0.23.0.tar.gz", hash = "sha256:6f209955ede26684e76912caf329f4ccb57e4a043fd77fe0e7348dd9574f1880"}, -] - -[[package]] -name = "lxml" -version = "5.1.0" -description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." -optional = false -python-versions = ">=3.6" -files = [ - {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:704f5572ff473a5f897745abebc6df40f22d4133c1e0a1f124e4f2bd3330ff7e"}, - {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d3c0f8567ffe7502d969c2c1b809892dc793b5d0665f602aad19895f8d508da"}, - {file = "lxml-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5fcfbebdb0c5d8d18b84118842f31965d59ee3e66996ac842e21f957eb76138c"}, - {file = "lxml-5.1.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f37c6d7106a9d6f0708d4e164b707037b7380fcd0b04c5bd9cae1fb46a856fb"}, - {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2befa20a13f1a75c751f47e00929fb3433d67eb9923c2c0b364de449121f447c"}, - {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22b7ee4c35f374e2c20337a95502057964d7e35b996b1c667b5c65c567d2252a"}, - {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bf8443781533b8d37b295016a4b53c1494fa9a03573c09ca5104550c138d5c05"}, - {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:82bddf0e72cb2af3cbba7cec1d2fd11fda0de6be8f4492223d4a268713ef2147"}, - {file = "lxml-5.1.0-cp310-cp310-win32.whl", hash = "sha256:b66aa6357b265670bb574f050ffceefb98549c721cf28351b748be1ef9577d93"}, - {file = "lxml-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:4946e7f59b7b6a9e27bef34422f645e9a368cb2be11bf1ef3cafc39a1f6ba68d"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:436a943c2900bb98123b06437cdd30580a61340fbdb7b28aaf345a459c19046a"}, - {file = "lxml-5.1.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:acb6b2f96f60f70e7f34efe0c3ea34ca63f19ca63ce90019c6cbca6b676e81fa"}, - {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af8920ce4a55ff41167ddbc20077f5698c2e710ad3353d32a07d3264f3a2021e"}, - {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cfced4a069003d8913408e10ca8ed092c49a7f6cefee9bb74b6b3e860683b45"}, - {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9e5ac3437746189a9b4121db2a7b86056ac8786b12e88838696899328fc44bb2"}, - {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204"}, - {file = "lxml-5.1.0-cp311-cp311-win32.whl", hash = "sha256:bc64d1b1dab08f679fb89c368f4c05693f58a9faf744c4d390d7ed1d8223869b"}, - {file = "lxml-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5ab722ae5a873d8dcee1f5f45ddd93c34210aed44ff2dc643b5025981908cda"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9aa543980ab1fbf1720969af1d99095a548ea42e00361e727c58a40832439114"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6f11b77ec0979f7e4dc5ae081325a2946f1fe424148d3945f943ceaede98adb8"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a36c506e5f8aeb40680491d39ed94670487ce6614b9d27cabe45d94cd5d63e1e"}, - {file = "lxml-5.1.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a"}, - {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16dd953fb719f0ffc5bc067428fc9e88f599e15723a85618c45847c96f11f431"}, - {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16018f7099245157564d7148165132c70adb272fb5a17c048ba70d9cc542a1a1"}, - {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:82cd34f1081ae4ea2ede3d52f71b7be313756e99b4b5f829f89b12da552d3aa3"}, - {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:19a1bc898ae9f06bccb7c3e1dfd73897ecbbd2c96afe9095a6026016e5ca97b8"}, - {file = "lxml-5.1.0-cp312-cp312-win32.whl", hash = "sha256:13521a321a25c641b9ea127ef478b580b5ec82aa2e9fc076c86169d161798b01"}, - {file = "lxml-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:1ad17c20e3666c035db502c78b86e58ff6b5991906e55bdbef94977700c72623"}, - {file = "lxml-5.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:24ef5a4631c0b6cceaf2dbca21687e29725b7c4e171f33a8f8ce23c12558ded1"}, - {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d2900b7f5318bc7ad8631d3d40190b95ef2aa8cc59473b73b294e4a55e9f30f"}, - {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:601f4a75797d7a770daed8b42b97cd1bb1ba18bd51a9382077a6a247a12aa38d"}, - {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4b68c961b5cc402cbd99cca5eb2547e46ce77260eb705f4d117fd9c3f932b95"}, - {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:afd825e30f8d1f521713a5669b63657bcfe5980a916c95855060048b88e1adb7"}, - {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:262bc5f512a66b527d026518507e78c2f9c2bd9eb5c8aeeb9f0eb43fcb69dc67"}, - {file = "lxml-5.1.0-cp36-cp36m-win32.whl", hash = "sha256:e856c1c7255c739434489ec9c8aa9cdf5179785d10ff20add308b5d673bed5cd"}, - {file = "lxml-5.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c7257171bb8d4432fe9d6fdde4d55fdbe663a63636a17f7f9aaba9bcb3153ad7"}, - {file = "lxml-5.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b9e240ae0ba96477682aa87899d94ddec1cc7926f9df29b1dd57b39e797d5ab5"}, - {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a96f02ba1bcd330807fc060ed91d1f7a20853da6dd449e5da4b09bfcc08fdcf5"}, - {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3898ae2b58eeafedfe99e542a17859017d72d7f6a63de0f04f99c2cb125936"}, - {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61c5a7edbd7c695e54fca029ceb351fc45cd8860119a0f83e48be44e1c464862"}, - {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3aeca824b38ca78d9ee2ab82bd9883083d0492d9d17df065ba3b94e88e4d7ee6"}, - {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8f52fe6859b9db71ee609b0c0a70fea5f1e71c3462ecf144ca800d3f434f0764"}, - {file = "lxml-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:d42e3a3fc18acc88b838efded0e6ec3edf3e328a58c68fbd36a7263a874906c8"}, - {file = "lxml-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:eac68f96539b32fce2c9b47eb7c25bb2582bdaf1bbb360d25f564ee9e04c542b"}, - {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ae15347a88cf8af0949a9872b57a320d2605ae069bcdf047677318bc0bba45b1"}, - {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c26aab6ea9c54d3bed716b8851c8bfc40cb249b8e9880e250d1eddde9f709bf5"}, - {file = "lxml-5.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:342e95bddec3a698ac24378d61996b3ee5ba9acfeb253986002ac53c9a5f6f84"}, - {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:725e171e0b99a66ec8605ac77fa12239dbe061482ac854d25720e2294652eeaa"}, - {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d184e0d5c918cff04cdde9dbdf9600e960161d773666958c9d7b565ccc60c45"}, - {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:98f3f020a2b736566c707c8e034945c02aa94e124c24f77ca097c446f81b01f1"}, - {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d48fc57e7c1e3df57be5ae8614bab6d4e7b60f65c5457915c26892c41afc59e"}, - {file = "lxml-5.1.0-cp38-cp38-win32.whl", hash = "sha256:7ec465e6549ed97e9f1e5ed51c657c9ede767bc1c11552f7f4d022c4df4a977a"}, - {file = "lxml-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:b21b4031b53d25b0858d4e124f2f9131ffc1530431c6d1321805c90da78388d1"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:52427a7eadc98f9e62cb1368a5079ae826f94f05755d2d567d93ee1bc3ceb354"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6a2a2c724d97c1eb8cf966b16ca2915566a4904b9aad2ed9a09c748ffe14f969"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:843b9c835580d52828d8f69ea4302537337a21e6b4f1ec711a52241ba4a824f3"}, - {file = "lxml-5.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b99f564659cfa704a2dd82d0684207b1aadf7d02d33e54845f9fc78e06b7581"}, - {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f8b0c78e7aac24979ef09b7f50da871c2de2def043d468c4b41f512d831e912"}, - {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bcf86dfc8ff3e992fed847c077bd875d9e0ba2fa25d859c3a0f0f76f07f0c8d"}, - {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:49a9b4af45e8b925e1cd6f3b15bbba2c81e7dba6dce170c677c9cda547411e14"}, - {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:280f3edf15c2a967d923bcfb1f8f15337ad36f93525828b40a0f9d6c2ad24890"}, - {file = "lxml-5.1.0-cp39-cp39-win32.whl", hash = "sha256:ed7326563024b6e91fef6b6c7a1a2ff0a71b97793ac33dbbcf38f6005e51ff6e"}, - {file = "lxml-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:8d7b4beebb178e9183138f552238f7e6613162a42164233e2bda00cb3afac58f"}, - {file = "lxml-5.1.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9bd0ae7cc2b85320abd5e0abad5ccee5564ed5f0cc90245d2f9a8ef330a8deae"}, - {file = "lxml-5.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c1d679df4361408b628f42b26a5d62bd3e9ba7f0c0e7969f925021554755aa"}, - {file = "lxml-5.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2ad3a8ce9e8a767131061a22cd28fdffa3cd2dc193f399ff7b81777f3520e372"}, - {file = "lxml-5.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:304128394c9c22b6569eba2a6d98392b56fbdfbad58f83ea702530be80d0f9df"}, - {file = "lxml-5.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d74fcaf87132ffc0447b3c685a9f862ffb5b43e70ea6beec2fb8057d5d2a1fea"}, - {file = "lxml-5.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:8cf5877f7ed384dabfdcc37922c3191bf27e55b498fecece9fd5c2c7aaa34c33"}, - {file = "lxml-5.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:877efb968c3d7eb2dad540b6cabf2f1d3c0fbf4b2d309a3c141f79c7e0061324"}, - {file = "lxml-5.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f14a4fb1c1c402a22e6a341a24c1341b4a3def81b41cd354386dcb795f83897"}, - {file = "lxml-5.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:25663d6e99659544ee8fe1b89b1a8c0aaa5e34b103fab124b17fa958c4a324a6"}, - {file = "lxml-5.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b9f19df998761babaa7f09e6bc169294eefafd6149aaa272081cbddc7ba4ca3"}, - {file = "lxml-5.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e53d7e6a98b64fe54775d23a7c669763451340c3d44ad5e3a3b48a1efbdc96f"}, - {file = "lxml-5.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c3cd1fc1dc7c376c54440aeaaa0dcc803d2126732ff5c6b68ccd619f2e64be4f"}, - {file = "lxml-5.1.0.tar.gz", hash = "sha256:3eea6ed6e6c918e468e693c41ef07f3c3acc310b70ddd9cc72d9ef84bc9564ca"}, -] - -[package.extras] -cssselect = ["cssselect (>=0.7)"] -html5 = ["html5lib"] -htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=3.0.7)"] - -[[package]] -name = "markdown" -version = "3.6" -description = "Python implementation of John Gruber's Markdown." -optional = false -python-versions = ">=3.8" -files = [ - {file = "Markdown-3.6-py3-none-any.whl", hash = "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f"}, - {file = "Markdown-3.6.tar.gz", hash = "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"}, -] - -[package.extras] -docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] -testing = ["coverage", "pyyaml"] - -[[package]] -name = "maxminddb" -version = "2.6.0" -description = "Reader for the MaxMind DB format" -optional = false -python-versions = ">=3.8" -files = [ - {file = "maxminddb-2.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4ec0e12623b53b3548239f0082bc2417e71543e2e5b7b4f49c56545f52013f7f"}, - {file = "maxminddb-2.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:568ad9f34ec4118e7e1b9b583c086576ac68add40232ae57a2b1d4bd4834705e"}, - {file = "maxminddb-2.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0626df312d92e8b34ab1bf12921ac44a05a82a70f611f3bb6ed5b55668344849"}, - {file = "maxminddb-2.6.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f1b5149c8064e9d47d98d382ed54037f0ba25ca9c1e2b1d1cd9958c3808ced44"}, - {file = "maxminddb-2.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dfa11a83c615a7cfd407e47cc6b8576aad2322bc6ce4af2b6a916fb634a5556e"}, - {file = "maxminddb-2.6.0-cp310-cp310-win32.whl", hash = "sha256:d1fcf83866b77faf501eba458cc59760d8945a310ba53a8d47d9bb04592cb1cb"}, - {file = "maxminddb-2.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:2ba1c6cc68316dec14b1251741d5b5c7538ccebc6aadddc61fd870e090adfdff"}, - {file = "maxminddb-2.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:695466fe8933430d53894f91ce3a468383a6c1a2f89eeddd05dad21377ea94d9"}, - {file = "maxminddb-2.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e02868d8081e6cadfe0cd8e7dc577c172a7dd78b65bbafff89b8b2bec41e493"}, - {file = "maxminddb-2.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31f6819ed566668e890937aadc79373cf9de20378ac76f323628863d8f3d1383"}, - {file = "maxminddb-2.6.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:725b01b6cb4b744b846041168b02dcf05908ce02e544aa35d64dbcf2448efd05"}, - {file = "maxminddb-2.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af8c4792272f85b0f9da70f3c3670bc3163590d5c9964412ed47ab3f31138c21"}, - {file = "maxminddb-2.6.0-cp311-cp311-win32.whl", hash = "sha256:50b0318222b99b27cb3abff3f85983e36a33fb785445402930b28d2c3fe320d0"}, - {file = "maxminddb-2.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:db4919488de1215650316284fe079f07b463d4c5f96ce01b338adaac8f35936d"}, - {file = "maxminddb-2.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cda00948032969affce349588ee8638eae97f47b8b10b4064e7e9bf6bda3410d"}, - {file = "maxminddb-2.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16c2619779abe6baa722e6d65500393a6ea8fe5a3ce24bb02564defb020f51cd"}, - {file = "maxminddb-2.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eee0250b6cfc30eca89f06fc4d455aad51f657da05612dfe6207aa9be870edb7"}, - {file = "maxminddb-2.6.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:61f7f6b12264d52eba5235580edecd0bad0aac7c1c5ba0a0970373c5d19b81d7"}, - {file = "maxminddb-2.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f223183a9e5c8e2044f6347c07b71deab4dac36d44de46163ff3358cb4f909c8"}, - {file = "maxminddb-2.6.0-cp312-cp312-win32.whl", hash = "sha256:42c58ad0e5c70bbaedd3b681b172000256f4710c6c2180221c9f43f826381c00"}, - {file = "maxminddb-2.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:c9168f0251bbb6806fd85dea7e145b53163f3e74626bf65b8b62b24121bbb038"}, - {file = "maxminddb-2.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fa897a9ae335559d26d63656d4d34f4a9a0e63be3cb67624fdcd448b7d010536"}, - {file = "maxminddb-2.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6508bd089be94174608c0d95f95983b891daa07181eef4aaae2ff55930a3022b"}, - {file = "maxminddb-2.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9ebcd1603ace5768934668e940bc3f7a23973b06c833031bb3ef1ff6d5193bf"}, - {file = "maxminddb-2.6.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:541650f00ecaff32b486ca0a89fd74a2493e35e0cfe1142b4a66b852de6e00c4"}, - {file = "maxminddb-2.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b15df0645f067c229cafdbc5160c3a0512b3ec16f3c77252dc83341312329fc9"}, - {file = "maxminddb-2.6.0-cp38-cp38-win32.whl", hash = "sha256:0dfe9b4af5870a60b9abaaa898b458d2af2338cabe2f8fa6c7d74bf473f1d01a"}, - {file = "maxminddb-2.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:fa1f45ca2b2b60bd3c88cea33bb8ca948f3dd44795049477248c804e2c02b726"}, - {file = "maxminddb-2.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f50300386c030a1152c1c97a02f880bc80bc8ddff500b782fd41334382f0dbda"}, - {file = "maxminddb-2.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e5647563d11f57df239988371db2eeed8246ad4673eb3d798892d1812e5d653"}, - {file = "maxminddb-2.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9df22644fe0b022f8dbdd56bc066ce02d29a67e5d7a543949f1bd43638234ce9"}, - {file = "maxminddb-2.6.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:74eb211e4a755d6f8b9704239c42d06cdcb42beb2030a707d629e8db092faf72"}, - {file = "maxminddb-2.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:313afcdaeda32e5249093a0672bd1276261511ddc93e52fb2dda87061f1ba154"}, - {file = "maxminddb-2.6.0-cp39-cp39-win32.whl", hash = "sha256:6883311bdd673d27781cbb8e06cc623aef497aa970e5e532cb79a13460955d09"}, - {file = "maxminddb-2.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:2e9c672952c5ed22bf7aae69830116a9d0747d9abd9ebcfe375d31432fdea2e8"}, - {file = "maxminddb-2.6.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c79c1892e0b582660f1d821b0b68bb6100ca60dc13cfc2553e3c12939907fa75"}, - {file = "maxminddb-2.6.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8a06f0f16bb502887fada29b2d9f3cec4c6e44e230fdf0cc67452fa0232f7c"}, - {file = "maxminddb-2.6.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f036479418ed91ec019c7ef6e3e6757797a16891dbf8829d9c1b74e2a5feb5b"}, - {file = "maxminddb-2.6.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6ec791c115dbfa20d0a4d4f0a2c336886f6abb30025a6ac2eb42b94c581bdd67"}, - {file = "maxminddb-2.6.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a6e028be4c38d9c11a408a2fbd89626d0bbf1eb89996bf0beaf1e11453937bd6"}, - {file = "maxminddb-2.6.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:048e85e74828d1c7327df4ca452a4b859dd2ca2b9746c978fe613138cae65b97"}, - {file = "maxminddb-2.6.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d126f0d2784d53aa613c009b89677bbf88defb3bf7a66e9b8e60e0859f23aa4"}, - {file = "maxminddb-2.6.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:fb8d69564a3b682d8f1dd79a97b52f6525a2a4939ef9a23c7b108ec2f973a42a"}, - {file = "maxminddb-2.6.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a2864cb9093d89b5ccfcdd124da6b8feb3cc3ac7891ab5b43b7131a8a0050bd9"}, - {file = "maxminddb-2.6.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e90b8be14ded4f01f71c23034600b088594417e42a7bbdd132e87d923246db0e"}, - {file = "maxminddb-2.6.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e7a0735a04545386df64eb8bc9aea9971b172584066e0d88af8404ba6ccbbd9"}, - {file = "maxminddb-2.6.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5ee2e5138ef28b7cf920fedb313b0e605bc66bd2d46c9abcd9656d18ed4eb660"}, - {file = "maxminddb-2.6.0.tar.gz", hash = "sha256:c5b91c62bc274d0a83ac88088a6db2dac1301acb8aa7bf80a901a07120361e1d"}, -] - -[[package]] -name = "mt-940" -version = "4.30.0" -description = "A library to parse MT940 files and returns smart Python collections for statistics and manipulation." -optional = false -python-versions = "*" -files = [ - {file = "mt-940-4.30.0.tar.gz", hash = "sha256:da14e2ec84d6c6e85604d2a6b8a800b08ec6000351acde501c41eb662819295c"}, - {file = "mt_940-4.30.0-py2.py3-none-any.whl", hash = "sha256:66fa0c1e942478fd7970b791be017b1ca46556f54d44115008f3982e97ae0a9b"}, -] - -[package.extras] -docs = ["GitPython (>=2.1.9)", "sphinx (>=1.7.2)", "sphinx2rst"] -tests = ["flake8", "pytest", "pytest-cache", "pytest-cover", "pytest-flake8", "pyyaml"] - -[[package]] -name = "multidict" -version = "6.0.5" -description = "multidict implementation" -optional = false -python-versions = ">=3.7" -files = [ - {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, - {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, - {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, - {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, - {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, - {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, - {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, - {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, - {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, - {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, - {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, - {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, - {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, - {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, - {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, - {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, - {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, - {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, -] - -[[package]] -name = "oauthlib" -version = "3.2.2" -description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" -optional = false -python-versions = ">=3.6" -files = [ - {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"}, - {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"}, -] - -[package.extras] -rsa = ["cryptography (>=3.0.0)"] -signals = ["blinker (>=1.4.0)"] -signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] - -[[package]] -name = "openpyxl" -version = "3.1.2" -description = "A Python library to read/write Excel 2010 xlsx/xlsm files" -optional = false -python-versions = ">=3.6" -files = [ - {file = "openpyxl-3.1.2-py2.py3-none-any.whl", hash = "sha256:f91456ead12ab3c6c2e9491cf33ba6d08357d802192379bb482f1033ade496f5"}, - {file = "openpyxl-3.1.2.tar.gz", hash = "sha256:a6f5977418eff3b2d5500d54d9db50c8277a368436f4e4f8ddb1be3422870184"}, -] - -[package.dependencies] -et-xmlfile = "*" - -[[package]] -name = "packaging" -version = "24.0" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, -] - -[[package]] -name = "paypal-checkout-serversdk" -version = "1.0.3" -description = "Deprecated" -optional = false -python-versions = "*" -files = [ - {file = "paypal-checkout-serversdk-1.0.3.tar.gz", hash = "sha256:880c7fab12955d65aff29baeb90c182307307d2676edbd41072f3f540a2934b4"}, - {file = "paypal_checkout_serversdk-1.0.3-py3-none-any.whl", hash = "sha256:48a00ec6c52450583e2265dbbdf700b025f38f40ddc597b24b6aa4d8f0cb0257"}, -] - -[package.dependencies] -paypalhttp = "*" - -[[package]] -name = "paypalhttp" -version = "1.0.1" -description = "" -optional = false -python-versions = "*" -files = [ - {file = "paypalhttp-1.0.1-py3-none-any.whl", hash = "sha256:251a6e72e2c5140c5372ee6351b64f7af61b5aad9c554618db5782a06205989a"}, - {file = "paypalhttp-1.0.1.tar.gz", hash = "sha256:20e00f95ea052f59145b65bc2baf3b8720f449460c96bf7d32f191c8e293d16d"}, -] - -[package.dependencies] -pyopenssl = ">=0.15" -requests = ">=2.0.0" -six = ">=1.0.0" - -[[package]] -name = "paypalrestsdk" -version = "1.13.3" -description = "Deprecated" -optional = false -python-versions = "*" -files = [ - {file = "paypalrestsdk-1.13.3-py3-none-any.whl", hash = "sha256:a3f51616ee8f6d975a5a5a8c2049db63653c843479c8fdd71c9d588a31e14560"}, - {file = "paypalrestsdk-1.13.3.tar.gz", hash = "sha256:dac236492a9ac1260a760014a2e56ab38b09d8143295b5e896545359b61fedd6"}, -] - -[package.dependencies] -pyopenssl = ">=0.15" -requests = ">=1.0.0" -six = ">=1.0.0" - -[[package]] -name = "phonenumberslite" -version = "8.13.33" -description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." -optional = false -python-versions = "*" -files = [ - {file = "phonenumberslite-8.13.33-py2.py3-none-any.whl", hash = "sha256:4d92f4f9079bb83588dde45fd8a414bc13e4962886aa4d23576984196f4d83c2"}, - {file = "phonenumberslite-8.13.33.tar.gz", hash = "sha256:7426bc46af3de5a800a4c8f33ab13e33225d2c8ed4fc52aa3c0380dadd8d7381"}, -] - -[[package]] -name = "pillow" -version = "10.2.0" -description = "Python Imaging Library (Fork)" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, - {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, - {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, - {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, - {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, - {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, - {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, - {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, - {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, - {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, - {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, - {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, - {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, - {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, - {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, - {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, - {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, - {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, - {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, - {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, - {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, - {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, - {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, - {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, - {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, - {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, - {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, - {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, - {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, - {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, - {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, - {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, - {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, - {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, -] - -[package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] -fpx = ["olefile"] -mic = ["olefile"] -tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] -typing = ["typing-extensions"] -xmp = ["defusedxml"] - -[[package]] -name = "platformdirs" -version = "4.2.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, -] - -[package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] - -[[package]] -name = "ply" -version = "3.11" -description = "Python Lex & Yacc" -optional = false -python-versions = "*" -files = [ - {file = "ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce"}, - {file = "ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"}, -] - -[[package]] -name = "pretix" -version = "2024.3.0" -description = "Reinventing presales, one ticket at a time" -optional = false -python-versions = ">=3.9" -files = [ - {file = "pretix-2024.3.0-py3-none-any.whl", hash = "sha256:b3155aaa8ef46797effd7f948b8dd6a68cca6bef397fb53be7859f5d178828b5"}, - {file = "pretix-2024.3.0.tar.gz", hash = "sha256:e3e4aaf48bdb2871b12bc4bdd7429dd5689f91b68422aaadb933a0c0de73fe4b"}, -] - -[package.dependencies] -arabic-reshaper = "3.0.0" -babel = "*" -BeautifulSoup4 = "==4.12.*" -bleach = "==5.0.*" -celery = "==5.3.*" -chardet = "==5.2.*" -cryptography = ">=3.4.2" -css-inline = "==0.13.*" -defusedcsv = ">=1.1.0" -dj-static = "*" -Django = "==4.2.*" -django-bootstrap3 = "==23.6.*" -django-compressor = "4.4" -django-countries = "==7.5.*" -django-filter = "24.1" -django-formset-js-improved = "0.5.0.3" -django-formtools = "2.5.1" -django-hierarkey = "==1.1.*" -django-hijack = "==3.4.*" -django-i18nfield = ">=1.9.4,<1.10.dev0" -django-libsass = "0.9" -django-localflavor = "4.0" -django-markup = "*" -django-oauth-toolkit = "==2.3.*" -django-otp = "==1.3.*" -django-phonenumber-field = "==7.3.*" -django-redis = "==5.4.*" -django-scopes = "==2.0.*" -django-statici18n = "==2.4.*" -djangorestframework = "==3.14.*" -dnspython = "==2.6.*" -drf-ujson2 = "==1.7.*" -geoip2 = "==4.*" -importlib-metadata = "==7.*" -isoweek = "*" -jsonschema = "*" -kombu = "==5.3.*" -libsass = "==0.23.*" -lxml = "*" -markdown = "3.6" -mt-940 = "==4.30.*" -oauthlib = "==3.2.*" -openpyxl = "==3.1.*" -packaging = "*" -paypal-checkout-serversdk = "==1.0.*" -paypalrestsdk = "==1.13.*" -phonenumberslite = "==8.13.*" -Pillow = "==10.2.*" -pretix-plugin-build = "*" -protobuf = "==5.26.*" -psycopg2-binary = "*" -pycountry = "*" -pycparser = "2.21" -pycryptodome = "==3.20.*" -PyJWT = "==2.8.*" -pypdf = "==3.9.*" -python-bidi = "==0.4.*" -python-dateutil = "==2.9.*" -pytz = "*" -pytz-deprecation-shim = "==0.1.*" -pyuca = "*" -qrcode = "==7.4.*" -redis = "==5.0.*" -reportlab = "==4.1.*" -requests = "==2.31.*" -sentry-sdk = "==1.42.*" -sepaxml = "==2.6.*" -slimit = "*" -static3 = "==0.7.*" -stripe = "==7.9.*" -text-unidecode = "==1.*" -tlds = ">=2020041600" -tqdm = "==4.*" -vat-moss-forked = "2020.3.20.0.11.0" -vobject = "==0.9.*" -webauthn = "==2.0.*" -zeep = "==4.2.*" - -[package.extras] -dev = ["aiohttp (==3.9.*)", "coverage", "coveralls", "fakeredis (==2.21.*)", "flake8 (==7.0.*)", "freezegun", "isort (==5.13.*)", "pep8-naming (==0.13.*)", "potypo", "pytest (==8.1.*)", "pytest-asyncio", "pytest-cache", "pytest-cov", "pytest-django (==4.*)", "pytest-mock (==3.12.*)", "pytest-rerunfailures (==14.*)", "pytest-sugar", "pytest-xdist (==3.5.*)", "responses"] -memcached = ["pylibmc"] - -[[package]] -name = "pretix-plugin-build" -version = "1.0.1" -description = "Build toolchain for pretix plugins" -optional = false -python-versions = "*" -files = [ - {file = "pretix-plugin-build-1.0.1.tar.gz", hash = "sha256:88b6ea70201b78ae0fc8b5e279ba5d136eebb7a6ce3fb797733206d9b76fbd8a"}, - {file = "pretix_plugin_build-1.0.1-py3-none-any.whl", hash = "sha256:9a7be6b373471a274069f021148f918ab2b91bf5addca0e871f63c0451c57fc4"}, -] - -[package.dependencies] -django = "*" - -[[package]] -name = "prompt-toolkit" -version = "3.0.43" -description = "Library for building powerful interactive command lines in Python" -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, - {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, -] - -[package.dependencies] -wcwidth = "*" - -[[package]] -name = "protobuf" -version = "5.26.1" -description = "" -optional = false -python-versions = ">=3.8" -files = [ - {file = "protobuf-5.26.1-cp310-abi3-win32.whl", hash = "sha256:3c388ea6ddfe735f8cf69e3f7dc7611e73107b60bdfcf5d0f024c3ccd3794e23"}, - {file = "protobuf-5.26.1-cp310-abi3-win_amd64.whl", hash = "sha256:e6039957449cb918f331d32ffafa8eb9255769c96aa0560d9a5bf0b4e00a2a33"}, - {file = "protobuf-5.26.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:38aa5f535721d5bb99861166c445c4105c4e285c765fbb2ac10f116e32dcd46d"}, - {file = "protobuf-5.26.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fbfe61e7ee8c1860855696e3ac6cfd1b01af5498facc6834fcc345c9684fb2ca"}, - {file = "protobuf-5.26.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:f7417703f841167e5a27d48be13389d52ad705ec09eade63dfc3180a959215d7"}, - {file = "protobuf-5.26.1-cp38-cp38-win32.whl", hash = "sha256:d693d2504ca96750d92d9de8a103102dd648fda04540495535f0fec7577ed8fc"}, - {file = "protobuf-5.26.1-cp38-cp38-win_amd64.whl", hash = "sha256:9b557c317ebe6836835ec4ef74ec3e994ad0894ea424314ad3552bc6e8835b4e"}, - {file = "protobuf-5.26.1-cp39-cp39-win32.whl", hash = "sha256:b9ba3ca83c2e31219ffbeb9d76b63aad35a3eb1544170c55336993d7a18ae72c"}, - {file = "protobuf-5.26.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ee014c2c87582e101d6b54260af03b6596728505c79f17c8586e7523aaa8f8c"}, - {file = "protobuf-5.26.1-py3-none-any.whl", hash = "sha256:da612f2720c0183417194eeaa2523215c4fcc1a1949772dc65f05047e08d5932"}, - {file = "protobuf-5.26.1.tar.gz", hash = "sha256:8ca2a1d97c290ec7b16e4e5dff2e5ae150cc1582f55b5ab300d45cb0dfa90e51"}, -] - -[[package]] -name = "psycopg2-binary" -version = "2.9.9" -description = "psycopg2 - Python-PostgreSQL Database Adapter" -optional = false -python-versions = ">=3.7" -files = [ - {file = "psycopg2-binary-2.9.9.tar.gz", hash = "sha256:7f01846810177d829c7692f1f5ada8096762d9172af1b1a28d4ab5b77c923c1c"}, - {file = "psycopg2_binary-2.9.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c2470da5418b76232f02a2fcd2229537bb2d5a7096674ce61859c3229f2eb202"}, - {file = "psycopg2_binary-2.9.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c6af2a6d4b7ee9615cbb162b0738f6e1fd1f5c3eda7e5da17861eacf4c717ea7"}, - {file = "psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75723c3c0fbbf34350b46a3199eb50638ab22a0228f93fb472ef4d9becc2382b"}, - {file = "psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83791a65b51ad6ee6cf0845634859d69a038ea9b03d7b26e703f94c7e93dbcf9"}, - {file = "psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0ef4854e82c09e84cc63084a9e4ccd6d9b154f1dbdd283efb92ecd0b5e2b8c84"}, - {file = "psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed1184ab8f113e8d660ce49a56390ca181f2981066acc27cf637d5c1e10ce46e"}, - {file = "psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d2997c458c690ec2bc6b0b7ecbafd02b029b7b4283078d3b32a852a7ce3ddd98"}, - {file = "psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b58b4710c7f4161b5e9dcbe73bb7c62d65670a87df7bcce9e1faaad43e715245"}, - {file = "psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:0c009475ee389757e6e34611d75f6e4f05f0cf5ebb76c6037508318e1a1e0d7e"}, - {file = "psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8dbf6d1bc73f1d04ec1734bae3b4fb0ee3cb2a493d35ede9badbeb901fb40f6f"}, - {file = "psycopg2_binary-2.9.9-cp310-cp310-win32.whl", hash = "sha256:3f78fd71c4f43a13d342be74ebbc0666fe1f555b8837eb113cb7416856c79682"}, - {file = "psycopg2_binary-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:876801744b0dee379e4e3c38b76fc89f88834bb15bf92ee07d94acd06ec890a0"}, - {file = "psycopg2_binary-2.9.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ee825e70b1a209475622f7f7b776785bd68f34af6e7a46e2e42f27b659b5bc26"}, - {file = "psycopg2_binary-2.9.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1ea665f8ce695bcc37a90ee52de7a7980be5161375d42a0b6c6abedbf0d81f0f"}, - {file = "psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:143072318f793f53819048fdfe30c321890af0c3ec7cb1dfc9cc87aa88241de2"}, - {file = "psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c332c8d69fb64979ebf76613c66b985414927a40f8defa16cf1bc028b7b0a7b0"}, - {file = "psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7fc5a5acafb7d6ccca13bfa8c90f8c51f13d8fb87d95656d3950f0158d3ce53"}, - {file = "psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:977646e05232579d2e7b9c59e21dbe5261f403a88417f6a6512e70d3f8a046be"}, - {file = "psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b6356793b84728d9d50ead16ab43c187673831e9d4019013f1402c41b1db9b27"}, - {file = "psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bc7bb56d04601d443f24094e9e31ae6deec9ccb23581f75343feebaf30423359"}, - {file = "psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:77853062a2c45be16fd6b8d6de2a99278ee1d985a7bd8b103e97e41c034006d2"}, - {file = "psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:78151aa3ec21dccd5cdef6c74c3e73386dcdfaf19bced944169697d7ac7482fc"}, - {file = "psycopg2_binary-2.9.9-cp311-cp311-win32.whl", hash = "sha256:dc4926288b2a3e9fd7b50dc6a1909a13bbdadfc67d93f3374d984e56f885579d"}, - {file = "psycopg2_binary-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:b76bedd166805480ab069612119ea636f5ab8f8771e640ae103e05a4aae3e417"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8532fd6e6e2dc57bcb3bc90b079c60de896d2128c5d9d6f24a63875a95a088cf"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0605eaed3eb239e87df0d5e3c6489daae3f7388d455d0c0b4df899519c6a38d"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f8544b092a29a6ddd72f3556a9fcf249ec412e10ad28be6a0c0d948924f2212"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d423c8d8a3c82d08fe8af900ad5b613ce3632a1249fd6a223941d0735fce493"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e5afae772c00980525f6d6ecf7cbca55676296b580c0e6abb407f15f3706996"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e6f98446430fdf41bd36d4faa6cb409f5140c1c2cf58ce0bbdaf16af7d3f119"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c77e3d1862452565875eb31bdb45ac62502feabbd53429fdc39a1cc341d681ba"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb16c65dcb648d0a43a2521f2f0a2300f40639f6f8c1ecbc662141e4e3e1ee07"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:911dda9c487075abd54e644ccdf5e5c16773470a6a5d3826fda76699410066fb"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:57fede879f08d23c85140a360c6a77709113efd1c993923c59fde17aa27599fe"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-win32.whl", hash = "sha256:64cf30263844fa208851ebb13b0732ce674d8ec6a0c86a4e160495d299ba3c93"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:81ff62668af011f9a48787564ab7eded4e9fb17a4a6a74af5ffa6a457400d2ab"}, - {file = "psycopg2_binary-2.9.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2293b001e319ab0d869d660a704942c9e2cce19745262a8aba2115ef41a0a42a"}, - {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ef7df18daf2c4c07e2695e8cfd5ee7f748a1d54d802330985a78d2a5a6dca9"}, - {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a602ea5aff39bb9fac6308e9c9d82b9a35c2bf288e184a816002c9fae930b77"}, - {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8359bf4791968c5a78c56103702000105501adb557f3cf772b2c207284273984"}, - {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:275ff571376626195ab95a746e6a04c7df8ea34638b99fc11160de91f2fef503"}, - {file = "psycopg2_binary-2.9.9-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f9b5571d33660d5009a8b3c25dc1db560206e2d2f89d3df1cb32d72c0d117d52"}, - {file = "psycopg2_binary-2.9.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:420f9bbf47a02616e8554e825208cb947969451978dceb77f95ad09c37791dae"}, - {file = "psycopg2_binary-2.9.9-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4154ad09dac630a0f13f37b583eae260c6aa885d67dfbccb5b02c33f31a6d420"}, - {file = "psycopg2_binary-2.9.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a148c5d507bb9b4f2030a2025c545fccb0e1ef317393eaba42e7eabd28eb6041"}, - {file = "psycopg2_binary-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:68fc1f1ba168724771e38bee37d940d2865cb0f562380a1fb1ffb428b75cb692"}, - {file = "psycopg2_binary-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:281309265596e388ef483250db3640e5f414168c5a67e9c665cafce9492eda2f"}, - {file = "psycopg2_binary-2.9.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:60989127da422b74a04345096c10d416c2b41bd7bf2a380eb541059e4e999980"}, - {file = "psycopg2_binary-2.9.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:246b123cc54bb5361588acc54218c8c9fb73068bf227a4a531d8ed56fa3ca7d6"}, - {file = "psycopg2_binary-2.9.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34eccd14566f8fe14b2b95bb13b11572f7c7d5c36da61caf414d23b91fcc5d94"}, - {file = "psycopg2_binary-2.9.9-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18d0ef97766055fec15b5de2c06dd8e7654705ce3e5e5eed3b6651a1d2a9a152"}, - {file = "psycopg2_binary-2.9.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d3f82c171b4ccd83bbaf35aa05e44e690113bd4f3b7b6cc54d2219b132f3ae55"}, - {file = "psycopg2_binary-2.9.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ead20f7913a9c1e894aebe47cccf9dc834e1618b7aa96155d2091a626e59c972"}, - {file = "psycopg2_binary-2.9.9-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ca49a8119c6cbd77375ae303b0cfd8c11f011abbbd64601167ecca18a87e7cdd"}, - {file = "psycopg2_binary-2.9.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:323ba25b92454adb36fa425dc5cf6f8f19f78948cbad2e7bc6cdf7b0d7982e59"}, - {file = "psycopg2_binary-2.9.9-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:1236ed0952fbd919c100bc839eaa4a39ebc397ed1c08a97fc45fee2a595aa1b3"}, - {file = "psycopg2_binary-2.9.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:729177eaf0aefca0994ce4cffe96ad3c75e377c7b6f4efa59ebf003b6d398716"}, - {file = "psycopg2_binary-2.9.9-cp38-cp38-win32.whl", hash = "sha256:804d99b24ad523a1fe18cc707bf741670332f7c7412e9d49cb5eab67e886b9b5"}, - {file = "psycopg2_binary-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:a6cdcc3ede532f4a4b96000b6362099591ab4a3e913d70bcbac2b56c872446f7"}, - {file = "psycopg2_binary-2.9.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:72dffbd8b4194858d0941062a9766f8297e8868e1dd07a7b36212aaa90f49472"}, - {file = "psycopg2_binary-2.9.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:30dcc86377618a4c8f3b72418df92e77be4254d8f89f14b8e8f57d6d43603c0f"}, - {file = "psycopg2_binary-2.9.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31a34c508c003a4347d389a9e6fcc2307cc2150eb516462a7a17512130de109e"}, - {file = "psycopg2_binary-2.9.9-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15208be1c50b99203fe88d15695f22a5bed95ab3f84354c494bcb1d08557df67"}, - {file = "psycopg2_binary-2.9.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1873aade94b74715be2246321c8650cabf5a0d098a95bab81145ffffa4c13876"}, - {file = "psycopg2_binary-2.9.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a58c98a7e9c021f357348867f537017057c2ed7f77337fd914d0bedb35dace7"}, - {file = "psycopg2_binary-2.9.9-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4686818798f9194d03c9129a4d9a702d9e113a89cb03bffe08c6cf799e053291"}, - {file = "psycopg2_binary-2.9.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ebdc36bea43063116f0486869652cb2ed7032dbc59fbcb4445c4862b5c1ecf7f"}, - {file = "psycopg2_binary-2.9.9-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:ca08decd2697fdea0aea364b370b1249d47336aec935f87b8bbfd7da5b2ee9c1"}, - {file = "psycopg2_binary-2.9.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ac05fb791acf5e1a3e39402641827780fe44d27e72567a000412c648a85ba860"}, - {file = "psycopg2_binary-2.9.9-cp39-cp39-win32.whl", hash = "sha256:9dba73be7305b399924709b91682299794887cbbd88e38226ed9f6712eabee90"}, - {file = "psycopg2_binary-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:f7ae5d65ccfbebdfa761585228eb4d0df3a8b15cfb53bd953e713e09fbb12957"}, -] - -[[package]] -name = "pycountry" -version = "23.12.11" -description = "ISO country, subdivision, language, currency and script definitions and their translations" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycountry-23.12.11-py3-none-any.whl", hash = "sha256:2ff91cff4f40ff61086e773d61e72005fe95de4a57bfc765509db05695dc50ab"}, - {file = "pycountry-23.12.11.tar.gz", hash = "sha256:00569d82eaefbc6a490a311bfa84a9c571cff9ddbf8b0a4f4e7b4f868b4ad925"}, -] - -[[package]] -name = "pycparser" -version = "2.21" -description = "C parser in Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, -] - -[[package]] -name = "pycryptodome" -version = "3.20.0" -description = "Cryptographic library for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pycryptodome-3.20.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:f0e6d631bae3f231d3634f91ae4da7a960f7ff87f2865b2d2b831af1dfb04e9a"}, - {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:baee115a9ba6c5d2709a1e88ffe62b73ecc044852a925dcb67713a288c4ec70f"}, - {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:417a276aaa9cb3be91f9014e9d18d10e840a7a9b9a9be64a42f553c5b50b4d1d"}, - {file = "pycryptodome-3.20.0-cp27-cp27m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a1250b7ea809f752b68e3e6f3fd946b5939a52eaeea18c73bdab53e9ba3c2dd"}, - {file = "pycryptodome-3.20.0-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:d5954acfe9e00bc83ed9f5cb082ed22c592fbbef86dc48b907238be64ead5c33"}, - {file = "pycryptodome-3.20.0-cp27-cp27m-win32.whl", hash = "sha256:06d6de87c19f967f03b4cf9b34e538ef46e99a337e9a61a77dbe44b2cbcf0690"}, - {file = "pycryptodome-3.20.0-cp27-cp27m-win_amd64.whl", hash = "sha256:ec0bb1188c1d13426039af8ffcb4dbe3aad1d7680c35a62d8eaf2a529b5d3d4f"}, - {file = "pycryptodome-3.20.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5601c934c498cd267640b57569e73793cb9a83506f7c73a8ec57a516f5b0b091"}, - {file = "pycryptodome-3.20.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d29daa681517f4bc318cd8a23af87e1f2a7bad2fe361e8aa29c77d652a065de4"}, - {file = "pycryptodome-3.20.0-cp27-cp27mu-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3427d9e5310af6680678f4cce149f54e0bb4af60101c7f2c16fdf878b39ccccc"}, - {file = "pycryptodome-3.20.0-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:3cd3ef3aee1079ae44afaeee13393cf68b1058f70576b11439483e34f93cf818"}, - {file = "pycryptodome-3.20.0-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:ac1c7c0624a862f2e53438a15c9259d1655325fc2ec4392e66dc46cdae24d044"}, - {file = "pycryptodome-3.20.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76658f0d942051d12a9bd08ca1b6b34fd762a8ee4240984f7c06ddfb55eaf15a"}, - {file = "pycryptodome-3.20.0-cp35-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f35d6cee81fa145333137009d9c8ba90951d7d77b67c79cbe5f03c7eb74d8fe2"}, - {file = "pycryptodome-3.20.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76cb39afede7055127e35a444c1c041d2e8d2f1f9c121ecef573757ba4cd2c3c"}, - {file = "pycryptodome-3.20.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a4c4dc60b78ec41d2afa392491d788c2e06edf48580fbfb0dd0f828af49d25"}, - {file = "pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fb3b87461fa35afa19c971b0a2b7456a7b1db7b4eba9a8424666104925b78128"}, - {file = "pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:acc2614e2e5346a4a4eab6e199203034924313626f9620b7b4b38e9ad74b7e0c"}, - {file = "pycryptodome-3.20.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:210ba1b647837bfc42dd5a813cdecb5b86193ae11a3f5d972b9a0ae2c7e9e4b4"}, - {file = "pycryptodome-3.20.0-cp35-abi3-win32.whl", hash = "sha256:8d6b98d0d83d21fb757a182d52940d028564efe8147baa9ce0f38d057104ae72"}, - {file = "pycryptodome-3.20.0-cp35-abi3-win_amd64.whl", hash = "sha256:9b3ae153c89a480a0ec402e23db8d8d84a3833b65fa4b15b81b83be9d637aab9"}, - {file = "pycryptodome-3.20.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:4401564ebf37dfde45d096974c7a159b52eeabd9969135f0426907db367a652a"}, - {file = "pycryptodome-3.20.0-pp27-pypy_73-win32.whl", hash = "sha256:ec1f93feb3bb93380ab0ebf8b859e8e5678c0f010d2d78367cf6bc30bfeb148e"}, - {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:acae12b9ede49f38eb0ef76fdec2df2e94aad85ae46ec85be3648a57f0a7db04"}, - {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f47888542a0633baff535a04726948e876bf1ed880fddb7c10a736fa99146ab3"}, - {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e0e4a987d38cfc2e71b4a1b591bae4891eeabe5fa0f56154f576e26287bfdea"}, - {file = "pycryptodome-3.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c18b381553638414b38705f07d1ef0a7cf301bc78a5f9bc17a957eb19446834b"}, - {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a60fedd2b37b4cb11ccb5d0399efe26db9e0dd149016c1cc6c8161974ceac2d6"}, - {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:405002eafad114a2f9a930f5db65feef7b53c4784495dd8758069b89baf68eab"}, - {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ab6ab0cb755154ad14e507d1df72de9897e99fd2d4922851a276ccc14f4f1a5"}, - {file = "pycryptodome-3.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:acf6e43fa75aca2d33e93409f2dafe386fe051818ee79ee8a3e21de9caa2ac9e"}, - {file = "pycryptodome-3.20.0.tar.gz", hash = "sha256:09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7"}, -] - -[[package]] -name = "pyjwt" -version = "2.8.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, - {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, -] - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - -[[package]] -name = "pyopenssl" -version = "24.1.0" -description = "Python wrapper module around the OpenSSL library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyOpenSSL-24.1.0-py3-none-any.whl", hash = "sha256:17ed5be5936449c5418d1cd269a1a9e9081bc54c17aed272b45856a3d3dc86ad"}, - {file = "pyOpenSSL-24.1.0.tar.gz", hash = "sha256:cabed4bfaa5df9f1a16c0ef64a0cb65318b5cd077a7eda7d6970131ca2f41a6f"}, -] - -[package.dependencies] -cryptography = ">=41.0.5,<43" - -[package.extras] -docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] -test = ["pretend", "pytest (>=3.0.1)", "pytest-rerunfailures"] - -[[package]] -name = "pypdf" -version = "3.9.1" -description = "A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pypdf-3.9.1-py3-none-any.whl", hash = "sha256:5f4abdb4691a8d7631e7f2db09f66cfe3a388a072882d8375c6b1bdc28027c0a"}, - {file = "pypdf-3.9.1.tar.gz", hash = "sha256:c2b7fcfe25fbd04e8da600cb2700267ecee7e8781dc798cce3a4f567143a4df1"}, -] - -[package.extras] -crypto = ["PyCryptodome"] -dev = ["black", "flit", "pip-tools", "pre-commit (<2.18.0)", "pytest-cov", "wheel"] -docs = ["myst_parser", "sphinx", "sphinx_rtd_theme"] -full = ["Pillow", "PyCryptodome"] -image = ["Pillow"] - -[[package]] -name = "pypng" -version = "0.20220715.0" -description = "Pure Python library for saving and loading PNG images" -optional = false -python-versions = "*" -files = [ - {file = "pypng-0.20220715.0-py3-none-any.whl", hash = "sha256:4a43e969b8f5aaafb2a415536c1a8ec7e341cd6a3f957fd5b5f32a4cfeed902c"}, - {file = "pypng-0.20220715.0.tar.gz", hash = "sha256:739c433ba96f078315de54c0db975aee537cbc3e1d0ae4ed9aab0ca1e427e2c1"}, -] - -[[package]] -name = "python-bidi" -version = "0.4.2" -description = "Pure python implementation of the BiDi layout algorithm" -optional = false -python-versions = "*" -files = [ - {file = "python-bidi-0.4.2.tar.gz", hash = "sha256:5347f71e82b3e9976dc657f09ded2bfe39ba8d6777ca81a5b2c56c30121c496e"}, - {file = "python_bidi-0.4.2-py2.py3-none-any.whl", hash = "sha256:50eef6f6a0bbdd685f9e8c207f3c9050f5b578d0a46e37c76a9c4baea2cc2e13"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "python-stdnum" -version = "1.20" -description = "Python module to handle standardized numbers and codes" -optional = false -python-versions = "*" -files = [ - {file = "python-stdnum-1.20.tar.gz", hash = "sha256:ad2a2cf2eb025de408210235f36b4ae31252de3186240ccaa8126e117cb82690"}, - {file = "python_stdnum-1.20-py2.py3-none-any.whl", hash = "sha256:111008e10391d54fb2afad2a10df70d5cb0c6c0a7ec82fec6f022cb8712961d3"}, -] - -[package.extras] -soap = ["zeep"] -soap-alt = ["suds"] -soap-fallback = ["PySimpleSOAP"] - -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pytz-deprecation-shim" -version = "0.1.0.post0" -description = "Shims to make deprecation of pytz easier" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -files = [ - {file = "pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl", hash = "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6"}, - {file = "pytz_deprecation_shim-0.1.0.post0.tar.gz", hash = "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d"}, -] - -[package.dependencies] -tzdata = {version = "*", markers = "python_version >= \"3.6\""} - -[[package]] -name = "pyuca" -version = "1.2" -description = "a Python implementation of the Unicode Collation Algorithm" -optional = false -python-versions = "*" -files = [ - {file = "pyuca-1.2-py2.py3-none-any.whl", hash = "sha256:abaa12e1bd2c7c68ca8396ff8383bc0654a739cef3ae68fd7af58bf29af0a91e"}, - {file = "pyuca-1.2.tar.gz", hash = "sha256:8a382fe74627f08c0d18908c0713ca4a20aad5385f077579e56208beea2893b2"}, -] - -[[package]] -name = "qrcode" -version = "7.4.2" -description = "QR Code image generator" -optional = false -python-versions = ">=3.7" -files = [ - {file = "qrcode-7.4.2-py3-none-any.whl", hash = "sha256:581dca7a029bcb2deef5d01068e39093e80ef00b4a61098a2182eac59d01643a"}, - {file = "qrcode-7.4.2.tar.gz", hash = "sha256:9dd969454827e127dbd93696b20747239e6d540e082937c90f14ac95b30f5845"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} -pypng = "*" -typing-extensions = "*" - -[package.extras] -all = ["pillow (>=9.1.0)", "pytest", "pytest-cov", "tox", "zest.releaser[recommended]"] -dev = ["pytest", "pytest-cov", "tox"] -maintainer = ["zest.releaser[recommended]"] -pil = ["pillow (>=9.1.0)"] -test = ["coverage", "pytest"] - -[[package]] -name = "rcssmin" -version = "1.1.1" -description = "CSS Minifier" -optional = false -python-versions = "*" -files = [ - {file = "rcssmin-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:d4e263fa9428704fd94c2cb565c7519ca1d225217943f71caffe6741ab5b9df1"}, - {file = "rcssmin-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:c7278c1c25bb90d8e554df92cfb3b6a1195004ead50f764653d3093933ee0877"}, - {file = "rcssmin-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f15673e97f0a68b4c378c4d15b088fe96d60bc106d278c88829923118833c20f"}, - {file = "rcssmin-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d0afc6e7b64ef30d6dcde88830ec1a237b9f16a39f920a8fd159928684ccf8db"}, - {file = "rcssmin-1.1.1-cp310-cp310-manylinux1_i686.whl", hash = "sha256:705c9112d0ed54ea40aecf97e7fd29bdf0f1c46d278a32d8f957f31dde90778a"}, - {file = "rcssmin-1.1.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:f7a1fcdbafaacac0530da04edca4a44303baab430ea42e7d59aece4b3f3e9a51"}, - {file = "rcssmin-1.1.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:cf74d7ea5e191f0f344b354eed8b7c83eeafbd9a97bec3a579c3d26edf11b005"}, - {file = "rcssmin-1.1.1-cp311-cp311-manylinux1_i686.whl", hash = "sha256:908fe072efd2432fb0975a61124609a8e05021367f6a3463d45f5e3e74c4fdda"}, - {file = "rcssmin-1.1.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:35da6a6999e9e2c5b0e691b42ed56cc479373e0ecab33ef5277dfecce625e44a"}, - {file = "rcssmin-1.1.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:e923c105100ab70abde1c01d3196ddd6b07255e32073685542be4e3a60870c8e"}, - {file = "rcssmin-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:868215e1fd0e92a6122e0ed5973dfc7bb8330fe1e92274d05b2585253b38c0ca"}, - {file = "rcssmin-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:c7728e3b546b1b6ea08cab721e8e21409dbcc11b881d0b87d10b0be8930af2a2"}, - {file = "rcssmin-1.1.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:271e3d2f8614a6d4637ed8fff3d90007f03e2a654cd9444f37d888797662ba72"}, - {file = "rcssmin-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:42576d95dfad53d77df2e68dfdec95b89b10fad320f241f1af3ca1438578254a"}, - {file = "rcssmin-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:79421230dd67c37ec61ed9892813d2b839b68f2f48ef55c75f976e81701d60b4"}, - {file = "rcssmin-1.1.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:8fcfd10ae2a1c4ce231a33013f2539e07c3836bf17cc945cc25cc30bf8e68e45"}, - {file = "rcssmin-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c30f8bc839747b6da59274e0c6e4361915d66532e26448d589cb2b1846d7bf11"}, - {file = "rcssmin-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:ee386bec6d62f8c814d65c011d604a7c82d24aa3f718facd66e850eea8d6a5a1"}, - {file = "rcssmin-1.1.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8a26fec3c1e6b7a3765ccbaccc20fbb5c0ed3422cc381e01a2607f08d7621c44"}, - {file = "rcssmin-1.1.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:a04d58a2a21e9a089306d3f99c4b12bf5b656a79c198ef2321e80f8fd9afab06"}, - {file = "rcssmin-1.1.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:914e589f40573035006913861ed2adc28fbe70082a8b6bff5be7ee430b7b5c2e"}, - {file = "rcssmin-1.1.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a417735d4023d47d048a6288c88dbceadd20abaaf65a11bb4fda1e8458057019"}, - {file = "rcssmin-1.1.1.tar.gz", hash = "sha256:4f9400b4366d29f5f5446f58e78549afa8338e6a59740c73115e9f6ac413dc64"}, -] - -[[package]] -name = "redis" -version = "5.0.3" -description = "Python client for Redis database and key-value store" -optional = false -python-versions = ">=3.7" -files = [ - {file = "redis-5.0.3-py3-none-any.whl", hash = "sha256:5da9b8fe9e1254293756c16c008e8620b3d15fcc6dde6babde9541850e72a32d"}, - {file = "redis-5.0.3.tar.gz", hash = "sha256:4973bae7444c0fbed64a06b87446f79361cb7e4ec1538c022d696ed7a5015580"}, -] - -[package.dependencies] -async-timeout = {version = ">=4.0.3", markers = "python_full_version < \"3.11.3\""} - -[package.extras] -hiredis = ["hiredis (>=1.0.0)"] -ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)"] - -[[package]] -name = "referencing" -version = "0.34.0" -description = "JSON Referencing + Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "referencing-0.34.0-py3-none-any.whl", hash = "sha256:d53ae300ceddd3169f1ffa9caf2cb7b769e92657e4fafb23d34b93679116dfd4"}, - {file = "referencing-0.34.0.tar.gz", hash = "sha256:5773bd84ef41799a5a8ca72dc34590c041eb01bf9aa02632b4a973fb0181a844"}, -] - -[package.dependencies] -attrs = ">=22.2.0" -rpds-py = ">=0.7.0" - -[[package]] -name = "reportlab" -version = "4.1.0" -description = "The Reportlab Toolkit" -optional = false -python-versions = ">=3.7,<4" -files = [ - {file = "reportlab-4.1.0-py3-none-any.whl", hash = "sha256:28a40d5000afbd8ccae15a47f7abe2841768461354bede1a9d42841132997c98"}, - {file = "reportlab-4.1.0.tar.gz", hash = "sha256:3a99faf412691159c068b3ff01c15307ce2fd2cf6b860199434874e002040a84"}, -] - -[package.dependencies] -chardet = "*" -pillow = ">=9.0.0" - -[package.extras] -accel = ["rl-accel (>=0.9.0,<1.1)"] -pycairo = ["freetype-py (>=2.3.0,<2.4)", "rlPyCairo (>=0.2.0,<1)"] -renderpm = ["rl-renderPM (>=4.0.3,<4.1)"] - -[[package]] -name = "requests" -version = "2.31.0" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.7" -files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-file" -version = "2.0.0" -description = "File transport adapter for Requests" -optional = false -python-versions = "*" -files = [ - {file = "requests-file-2.0.0.tar.gz", hash = "sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972"}, - {file = "requests_file-2.0.0-py2.py3-none-any.whl", hash = "sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf"}, -] - -[package.dependencies] -requests = ">=1.0.0" - -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -description = "A utility belt for advanced users of python-requests" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, - {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, -] - -[package.dependencies] -requests = ">=2.0.1,<3.0.0" - -[[package]] -name = "rjsmin" -version = "1.2.1" -description = "Javascript Minifier" -optional = false -python-versions = "*" -files = [ - {file = "rjsmin-1.2.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:35827844d2085bd59d34214dfba6f1fc42a215c455887437b07dbf9c73019cc1"}, - {file = "rjsmin-1.2.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:812af25c08d6a5ae98019a2e1b47ebb47f7469abd351670c353d619eaeae4064"}, - {file = "rjsmin-1.2.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:b8464629a18fe69f70677854c93a3707976024b226a0ce62707c618f923e1346"}, - {file = "rjsmin-1.2.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bd1faedc425006d9e86b23837d164f01d105b7a8b66b767a9766d0014773db2a"}, - {file = "rjsmin-1.2.1-cp310-cp310-manylinux1_i686.whl", hash = "sha256:99c074cd6a8302ff47118a9c3d086f89328dc8e5c4b105aa1f348fb85c765a30"}, - {file = "rjsmin-1.2.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:bc5bc2f94e59bc81562c572b7f1bdd6bcec4f61168dc68a2993bad2d355b6e19"}, - {file = "rjsmin-1.2.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:35f21046504544e2941e04190ce24161255479133751550e36ddb3f4af0ecdca"}, - {file = "rjsmin-1.2.1-cp311-cp311-manylinux1_i686.whl", hash = "sha256:ca90630b84fe94bb07739c3e3793e87d30c6ee450dde08653121f0d9153c8d0d"}, - {file = "rjsmin-1.2.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:7dd58b5ed88233bc61dc80b0ed87b93a1786031d9977c70d335221ef1ac5581a"}, - {file = "rjsmin-1.2.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:f0895b360dccf7e2d6af8762a52985e3fbaa56778de1bf6b20dbc96134253807"}, - {file = "rjsmin-1.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:747bc9d3bc8a220f40858e6aad50b2ae2eb7f69c924d4fa3803b81be1c1ddd02"}, - {file = "rjsmin-1.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:f7cd33602ec0f393a0058e883284496bb4dbbdd34e0bbe23b594c8933ddf9b65"}, - {file = "rjsmin-1.2.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:3453ee6d5e7a2723ec45c2909e2382371783400e8d51952b692884c6d850a3d0"}, - {file = "rjsmin-1.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:8c340e251619c97571a5ade20f147f1f7e8664f66a2d6d7319e05e3ef6a4423c"}, - {file = "rjsmin-1.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:145c6af8df42d8af102d0d39a6de2e5fa66aef9e38947cfb9d65377d1b9940b2"}, - {file = "rjsmin-1.2.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:bbd7a0abaa394afd951f5d4e05249d306fec1c9674bfee179787674dddd0bdb7"}, - {file = "rjsmin-1.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:eb770aaf637919b0011c4eb87b9ac6317079fb9800eb17c90dda05fc9de4ebc3"}, - {file = "rjsmin-1.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5d67ec09da46a492186e35cabca02a0d092eda5ef5b408a419b99ee4acf28d5c"}, - {file = "rjsmin-1.2.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:d332e44a1b21ad63401cc7eebc81157e3d982d5fb503bb4faaea5028068d71e9"}, - {file = "rjsmin-1.2.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:113132a40ce7d03b2ced4fac215f0297338ed1c207394b739266efab7831988b"}, - {file = "rjsmin-1.2.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:122aa52bcf7ad9f12728d309012d1308c6ecfe4d6b09ea867a110dcad7b7728c"}, - {file = "rjsmin-1.2.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:8a6710e358c661dcdcfd027e67de3afd72a6af4c88101dcf110de39e9bbded39"}, - {file = "rjsmin-1.2.1.tar.gz", hash = "sha256:1f982be8e011438777a94307279b40134a3935fc0f079312ee299725b8af5411"}, -] - -[[package]] -name = "rpds-py" -version = "0.18.0" -description = "Python bindings to Rust's persistent data structures (rpds)" -optional = false -python-versions = ">=3.8" -files = [ - {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, - {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, - {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, - {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, - {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, - {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, - {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, - {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, - {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, - {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, - {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, - {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, - {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, - {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, - {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, - {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, - {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, - {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, - {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, - {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, - {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, -] - -[[package]] -name = "sentry-sdk" -version = "1.42.0" -description = "Python client for Sentry (https://sentry.io)" -optional = false -python-versions = "*" -files = [ - {file = "sentry-sdk-1.42.0.tar.gz", hash = "sha256:4a8364b8f7edbf47f95f7163e48334c96100d9c098f0ae6606e2e18183c223e6"}, - {file = "sentry_sdk-1.42.0-py2.py3-none-any.whl", hash = "sha256:a654ee7e497a3f5f6368b36d4f04baeab1fe92b3105f7f6965d6ef0de35a9ba4"}, -] - -[package.dependencies] -certifi = "*" -urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""} - -[package.extras] -aiohttp = ["aiohttp (>=3.5)"] -arq = ["arq (>=0.23)"] -asyncpg = ["asyncpg (>=0.23)"] -beam = ["apache-beam (>=2.12)"] -bottle = ["bottle (>=0.12.13)"] -celery = ["celery (>=3)"] -chalice = ["chalice (>=1.16.0)"] -clickhouse-driver = ["clickhouse-driver (>=0.2.0)"] -django = ["django (>=1.8)"] -falcon = ["falcon (>=1.4)"] -fastapi = ["fastapi (>=0.79.0)"] -flask = ["blinker (>=1.1)", "flask (>=0.11)", "markupsafe"] -grpcio = ["grpcio (>=1.21.1)"] -httpx = ["httpx (>=0.16.0)"] -huey = ["huey (>=2)"] -loguru = ["loguru (>=0.5)"] -openai = ["openai (>=1.0.0)", "tiktoken (>=0.3.0)"] -opentelemetry = ["opentelemetry-distro (>=0.35b0)"] -opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"] -pure-eval = ["asttokens", "executing", "pure-eval"] -pymongo = ["pymongo (>=3.1)"] -pyspark = ["pyspark (>=2.4.4)"] -quart = ["blinker (>=1.1)", "quart (>=0.16.1)"] -rq = ["rq (>=0.6)"] -sanic = ["sanic (>=0.8)"] -sqlalchemy = ["sqlalchemy (>=1.2)"] -starlette = ["starlette (>=0.19.1)"] -starlite = ["starlite (>=1.48)"] -tornado = ["tornado (>=5)"] - -[[package]] -name = "sepaxml" -version = "2.6.1" -description = "Python SEPA XML implementations" -optional = false -python-versions = "*" -files = [ - {file = "sepaxml-2.6.1-py3-none-any.whl", hash = "sha256:f110e4a11322c1ea46f86550d703468b109343b4cece1d5b792d394f03d86110"}, - {file = "sepaxml-2.6.1.tar.gz", hash = "sha256:939c12236779e6a3d7221d3557921abd6e30b0bfd369e67815ea55bccaacd688"}, -] - -[package.dependencies] -text-unidecode = "*" -xmlschema = "*" - -[[package]] -name = "setuptools" -version = "69.2.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"}, - {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "slimit" -version = "0.8.1" -description = "SlimIt - JavaScript minifier" -optional = false -python-versions = "*" -files = [ - {file = "slimit-0.8.1.zip", hash = "sha256:f433dcef899f166b207b67d91d3f7344659cb33b8259818f084167244e17720b"}, -] - -[package.dependencies] -ply = ">=3.4" - -[[package]] -name = "soupsieve" -version = "2.5" -description = "A modern CSS selector implementation for Beautiful Soup." -optional = false -python-versions = ">=3.8" -files = [ - {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, - {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, -] - -[[package]] -name = "sqlparse" -version = "0.4.4" -description = "A non-validating SQL parser." -optional = false -python-versions = ">=3.5" -files = [ - {file = "sqlparse-0.4.4-py3-none-any.whl", hash = "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3"}, - {file = "sqlparse-0.4.4.tar.gz", hash = "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c"}, -] - -[package.extras] -dev = ["build", "flake8"] -doc = ["sphinx"] -test = ["pytest", "pytest-cov"] - -[[package]] -name = "static3" -version = "0.7.0" -description = "A really simple WSGI way to serve static (or mixed) content." -optional = false -python-versions = "*" -files = [ - {file = "static3-0.7.0.tar.gz", hash = "sha256:674641c64bc75507af2eb20bef7e7e3593dca993dec6674be108fa15b42f47c8"}, -] - -[package.extras] -genshimagic = ["Genshi"] -kidmagic = ["kid"] - -[[package]] -name = "stripe" -version = "7.9.0" -description = "Python bindings for the Stripe API" -optional = false -python-versions = ">=3.6" -files = [ - {file = "stripe-7.9.0-py2.py3-none-any.whl", hash = "sha256:42b4aa5162e45f889afaa40fc1eccfb9ec551c616e1620f700c19a11ae8e62eb"}, - {file = "stripe-7.9.0.tar.gz", hash = "sha256:84e5e430835a4b0cd4fd2a57ce3853269d1db3439111cda6b6ed752e349cf4a1"}, -] - -[package.dependencies] -requests = {version = ">=2.20", markers = "python_version >= \"3.0\""} -typing-extensions = {version = ">=4.5.0", markers = "python_version >= \"3.7\""} - -[[package]] -name = "text-unidecode" -version = "1.3" -description = "The most basic Text::Unidecode port" -optional = false -python-versions = "*" -files = [ - {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, - {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, -] - -[[package]] -name = "tlds" -version = "2024030600" -description = "Automatically updated list of valid TLDs taken directly from IANA" -optional = false -python-versions = "*" -files = [ - {file = "tlds-2024030600-py2.py3-none-any.whl", hash = "sha256:e4eafaad17a8eb19064d46eda0ca8abc366cf67ba01c71861a7dbfc7003c0708"}, - {file = "tlds-2024030600.tar.gz", hash = "sha256:e39e7c8e931a2e90710594622e4737ed336e0da335fbc7aca015b200b6279cb1"}, -] - -[[package]] -name = "tqdm" -version = "4.66.2" -description = "Fast, Extensible Progress Meter" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, - {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[package.extras] -dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] -notebook = ["ipywidgets (>=6)"] -slack = ["slack-sdk"] -telegram = ["requests"] - -[[package]] -name = "typing-extensions" -version = "4.10.0" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, -] - -[[package]] -name = "tzdata" -version = "2024.1" -description = "Provider of IANA time zone data" -optional = false -python-versions = ">=2" -files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, -] - -[[package]] -name = "ujson" -version = "5.9.0" -description = "Ultra fast JSON encoder and decoder for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "ujson-5.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ab71bf27b002eaf7d047c54a68e60230fbd5cd9da60de7ca0aa87d0bccead8fa"}, - {file = "ujson-5.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a365eac66f5aa7a7fdf57e5066ada6226700884fc7dce2ba5483538bc16c8c5"}, - {file = "ujson-5.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e015122b337858dba5a3dc3533af2a8fc0410ee9e2374092f6a5b88b182e9fcc"}, - {file = "ujson-5.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:779a2a88c53039bebfbccca934430dabb5c62cc179e09a9c27a322023f363e0d"}, - {file = "ujson-5.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10ca3c41e80509fd9805f7c149068fa8dbee18872bbdc03d7cca928926a358d5"}, - {file = "ujson-5.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a566e465cb2fcfdf040c2447b7dd9718799d0d90134b37a20dff1e27c0e9096"}, - {file = "ujson-5.9.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f833c529e922577226a05bc25b6a8b3eb6c4fb155b72dd88d33de99d53113124"}, - {file = "ujson-5.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b68a0caab33f359b4cbbc10065c88e3758c9f73a11a65a91f024b2e7a1257106"}, - {file = "ujson-5.9.0-cp310-cp310-win32.whl", hash = "sha256:7cc7e605d2aa6ae6b7321c3ae250d2e050f06082e71ab1a4200b4ae64d25863c"}, - {file = "ujson-5.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:a6d3f10eb8ccba4316a6b5465b705ed70a06011c6f82418b59278fbc919bef6f"}, - {file = "ujson-5.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b23bbb46334ce51ddb5dded60c662fbf7bb74a37b8f87221c5b0fec1ec6454b"}, - {file = "ujson-5.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6974b3a7c17bbf829e6c3bfdc5823c67922e44ff169851a755eab79a3dd31ec0"}, - {file = "ujson-5.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5964ea916edfe24af1f4cc68488448fbb1ec27a3ddcddc2b236da575c12c8ae"}, - {file = "ujson-5.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ba7cac47dd65ff88571eceeff48bf30ed5eb9c67b34b88cb22869b7aa19600d"}, - {file = "ujson-5.9.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bbd91a151a8f3358c29355a491e915eb203f607267a25e6ab10531b3b157c5e"}, - {file = "ujson-5.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:829a69d451a49c0de14a9fecb2a2d544a9b2c884c2b542adb243b683a6f15908"}, - {file = "ujson-5.9.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:a807ae73c46ad5db161a7e883eec0fbe1bebc6a54890152ccc63072c4884823b"}, - {file = "ujson-5.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8fc2aa18b13d97b3c8ccecdf1a3c405f411a6e96adeee94233058c44ff92617d"}, - {file = "ujson-5.9.0-cp311-cp311-win32.whl", hash = "sha256:70e06849dfeb2548be48fdd3ceb53300640bc8100c379d6e19d78045e9c26120"}, - {file = "ujson-5.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:7309d063cd392811acc49b5016728a5e1b46ab9907d321ebbe1c2156bc3c0b99"}, - {file = "ujson-5.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:20509a8c9f775b3a511e308bbe0b72897ba6b800767a7c90c5cca59d20d7c42c"}, - {file = "ujson-5.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b28407cfe315bd1b34f1ebe65d3bd735d6b36d409b334100be8cdffae2177b2f"}, - {file = "ujson-5.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d302bd17989b6bd90d49bade66943c78f9e3670407dbc53ebcf61271cadc399"}, - {file = "ujson-5.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f21315f51e0db8ee245e33a649dd2d9dce0594522de6f278d62f15f998e050e"}, - {file = "ujson-5.9.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5635b78b636a54a86fdbf6f027e461aa6c6b948363bdf8d4fbb56a42b7388320"}, - {file = "ujson-5.9.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:82b5a56609f1235d72835ee109163c7041b30920d70fe7dac9176c64df87c164"}, - {file = "ujson-5.9.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5ca35f484622fd208f55041b042d9d94f3b2c9c5add4e9af5ee9946d2d30db01"}, - {file = "ujson-5.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:829b824953ebad76d46e4ae709e940bb229e8999e40881338b3cc94c771b876c"}, - {file = "ujson-5.9.0-cp312-cp312-win32.whl", hash = "sha256:25fa46e4ff0a2deecbcf7100af3a5d70090b461906f2299506485ff31d9ec437"}, - {file = "ujson-5.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:60718f1720a61560618eff3b56fd517d107518d3c0160ca7a5a66ac949c6cf1c"}, - {file = "ujson-5.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d581db9db9e41d8ea0b2705c90518ba623cbdc74f8d644d7eb0d107be0d85d9c"}, - {file = "ujson-5.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ff741a5b4be2d08fceaab681c9d4bc89abf3c9db600ab435e20b9b6d4dfef12e"}, - {file = "ujson-5.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdcb02cabcb1e44381221840a7af04433c1dc3297af76fde924a50c3054c708c"}, - {file = "ujson-5.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e208d3bf02c6963e6ef7324dadf1d73239fb7008491fdf523208f60be6437402"}, - {file = "ujson-5.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4b3917296630a075e04d3d07601ce2a176479c23af838b6cf90a2d6b39b0d95"}, - {file = "ujson-5.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0c4d6adb2c7bb9eb7c71ad6f6f612e13b264942e841f8cc3314a21a289a76c4e"}, - {file = "ujson-5.9.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0b159efece9ab5c01f70b9d10bbb77241ce111a45bc8d21a44c219a2aec8ddfd"}, - {file = "ujson-5.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0cb4a7814940ddd6619bdce6be637a4b37a8c4760de9373bac54bb7b229698b"}, - {file = "ujson-5.9.0-cp38-cp38-win32.whl", hash = "sha256:dc80f0f5abf33bd7099f7ac94ab1206730a3c0a2d17549911ed2cb6b7aa36d2d"}, - {file = "ujson-5.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:506a45e5fcbb2d46f1a51fead991c39529fc3737c0f5d47c9b4a1d762578fc30"}, - {file = "ujson-5.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0fd2eba664a22447102062814bd13e63c6130540222c0aa620701dd01f4be81"}, - {file = "ujson-5.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bdf7fc21a03bafe4ba208dafa84ae38e04e5d36c0e1c746726edf5392e9f9f36"}, - {file = "ujson-5.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2f909bc08ce01f122fd9c24bc6f9876aa087188dfaf3c4116fe6e4daf7e194f"}, - {file = "ujson-5.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd4ea86c2afd41429751d22a3ccd03311c067bd6aeee2d054f83f97e41e11d8f"}, - {file = "ujson-5.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:63fb2e6599d96fdffdb553af0ed3f76b85fda63281063f1cb5b1141a6fcd0617"}, - {file = "ujson-5.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:32bba5870c8fa2a97f4a68f6401038d3f1922e66c34280d710af00b14a3ca562"}, - {file = "ujson-5.9.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:37ef92e42535a81bf72179d0e252c9af42a4ed966dc6be6967ebfb929a87bc60"}, - {file = "ujson-5.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f69f16b8f1c69da00e38dc5f2d08a86b0e781d0ad3e4cc6a13ea033a439c4844"}, - {file = "ujson-5.9.0-cp39-cp39-win32.whl", hash = "sha256:3382a3ce0ccc0558b1c1668950008cece9bf463ebb17463ebf6a8bfc060dae34"}, - {file = "ujson-5.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:6adef377ed583477cf005b58c3025051b5faa6b8cc25876e594afbb772578f21"}, - {file = "ujson-5.9.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ffdfebd819f492e48e4f31c97cb593b9c1a8251933d8f8972e81697f00326ff1"}, - {file = "ujson-5.9.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4eec2ddc046360d087cf35659c7ba0cbd101f32035e19047013162274e71fcf"}, - {file = "ujson-5.9.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbb90aa5c23cb3d4b803c12aa220d26778c31b6e4b7a13a1f49971f6c7d088e"}, - {file = "ujson-5.9.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba0823cb70866f0d6a4ad48d998dd338dce7314598721bc1b7986d054d782dfd"}, - {file = "ujson-5.9.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:4e35d7885ed612feb6b3dd1b7de28e89baaba4011ecdf995e88be9ac614765e9"}, - {file = "ujson-5.9.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b048aa93eace8571eedbd67b3766623e7f0acbf08ee291bef7d8106210432427"}, - {file = "ujson-5.9.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:323279e68c195110ef85cbe5edce885219e3d4a48705448720ad925d88c9f851"}, - {file = "ujson-5.9.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9ac92d86ff34296f881e12aa955f7014d276895e0e4e868ba7fddebbde38e378"}, - {file = "ujson-5.9.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6eecbd09b316cea1fd929b1e25f70382917542ab11b692cb46ec9b0a26c7427f"}, - {file = "ujson-5.9.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:473fb8dff1d58f49912323d7cb0859df5585cfc932e4b9c053bf8cf7f2d7c5c4"}, - {file = "ujson-5.9.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f91719c6abafe429c1a144cfe27883eace9fb1c09a9c5ef1bcb3ae80a3076a4e"}, - {file = "ujson-5.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b1c0991c4fe256f5fdb19758f7eac7f47caac29a6c57d0de16a19048eb86bad"}, - {file = "ujson-5.9.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a8ea0f55a1396708e564595aaa6696c0d8af532340f477162ff6927ecc46e21"}, - {file = "ujson-5.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:07e0cfdde5fd91f54cd2d7ffb3482c8ff1bf558abf32a8b953a5d169575ae1cd"}, - {file = "ujson-5.9.0.tar.gz", hash = "sha256:89cc92e73d5501b8a7f48575eeb14ad27156ad092c2e9fc7e3cf949f07e75532"}, -] - -[[package]] -name = "urllib3" -version = "2.2.1" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "vat-moss-forked" -version = "2020.3.20.0.11.0" -description = "Tools for VAT MOSS and Norway VAT on digital services." -optional = false -python-versions = "*" -files = [ - {file = "vat_moss_forked-2020.3.20.0.11.0-py3-none-any.whl", hash = "sha256:80f489da56836f5d3ad8e5b29621238a18888fa8669ebf9dd975c3666174471f"}, - {file = "vat_moss_forked-2020.3.20.0.11.0.tar.gz", hash = "sha256:d46836079687a20375cae0336946015060c71a30faa30642c8ea726daf638095"}, -] - -[[package]] -name = "vine" -version = "5.1.0" -description = "Python promises." -optional = false -python-versions = ">=3.6" -files = [ - {file = "vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc"}, - {file = "vine-5.1.0.tar.gz", hash = "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0"}, -] - -[[package]] -name = "vobject" -version = "0.9.7" -description = "A full-featured Python package for parsing and creating iCalendar and vCard files" -optional = false -python-versions = "*" -files = [ - {file = "vobject-0.9.7-py2.py3-none-any.whl", hash = "sha256:67ebec81ee39fc60b7355ce077f850d5f13d99d08b110fa1abcfdbb516205e20"}, - {file = "vobject-0.9.7.tar.gz", hash = "sha256:ab727bf81de88984ada5c11f066f1e1649903d3e3d7ec91f1ce968172afd5256"}, -] - -[package.dependencies] -python-dateutil = ">=2.4.0" - -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -optional = false -python-versions = "*" -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - -[[package]] -name = "webauthn" -version = "2.0.0" -description = "Pythonic WebAuthn" -optional = false -python-versions = "*" -files = [ - {file = "webauthn-2.0.0-py3-none-any.whl", hash = "sha256:644dc68af5caaade06be6a2a2278775e85116e92dd755ad7a49d992d51c82033"}, - {file = "webauthn-2.0.0.tar.gz", hash = "sha256:12cc1759da98668b8242badc37c4129df300f89d89f5c183fac80e7b33c41dfd"}, -] - -[package.dependencies] -asn1crypto = ">=1.4.0" -cbor2 = ">=5.4.6" -cryptography = ">=41.0.7" -pyOpenSSL = ">=23.3.0" - -[[package]] -name = "webencodings" -version = "0.5.1" -description = "Character encoding aliases for legacy web content" -optional = false -python-versions = "*" -files = [ - {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, - {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, -] - -[[package]] -name = "xmlschema" -version = "3.2.0" -description = "An XML Schema validator and decoder" -optional = false -python-versions = ">=3.8" -files = [ - {file = "xmlschema-3.2.0-py3-none-any.whl", hash = "sha256:7ad8b4838fee0cfbfc3a5c7d38e33964cf5ebd2c20e2aa23ea813b6793438f9c"}, - {file = "xmlschema-3.2.0.tar.gz", hash = "sha256:541d96893691aae3cb93ea36a85dde18327012e26e0c51d610f4f79e7fc86f7b"}, -] - -[package.dependencies] -elementpath = ">=4.4.0,<5.0.0" - -[package.extras] -codegen = ["elementpath (>=4.4.0,<5.0.0)", "jinja2"] -dev = ["Sphinx", "coverage", "elementpath (>=4.4.0,<5.0.0)", "flake8", "jinja2", "lxml", "lxml-stubs", "memory-profiler", "mypy", "sphinx-rtd-theme", "tox"] -docs = ["Sphinx", "elementpath (>=4.4.0,<5.0.0)", "jinja2", "sphinx-rtd-theme"] - -[[package]] -name = "yarl" -version = "1.9.4" -description = "Yet another URL library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, - {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, - {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, - {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, - {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, - {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, - {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, - {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, - {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, - {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, - {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, - {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, - {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, - {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, - {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, - {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, -] - -[package.dependencies] -idna = ">=2.0" -multidict = ">=4.0" - -[[package]] -name = "zeep" -version = "4.2.1" -description = "A Python SOAP client" -optional = false -python-versions = ">=3.7" -files = [ - {file = "zeep-4.2.1-py3-none-any.whl", hash = "sha256:6754feb4c34a4b6d65fbc359252bf6654dcce3937bf1d95aae4402a60a8f5939"}, - {file = "zeep-4.2.1.tar.gz", hash = "sha256:72093acfdb1d8360ed400869b73fbf1882b95c4287f798084c42ee0c1ff0e425"}, -] - -[package.dependencies] -attrs = ">=17.2.0" -isodate = ">=0.5.4" -lxml = ">=4.6.0" -platformdirs = ">=1.4.0" -pytz = "*" -requests = ">=2.7.0" -requests-file = ">=1.5.1" -requests-toolbelt = ">=0.7.1" - -[package.extras] -async = ["httpx (>=0.15.0)"] -docs = ["sphinx (>=1.4.0)"] -test = ["coverage[toml] (==5.2.1)", "flake8 (==3.8.3)", "flake8-blind-except (==0.1.1)", "flake8-debugger (==3.2.1)", "flake8-imports (==0.1.1)", "freezegun (==0.3.15)", "isort (==5.3.2)", "pretend (==1.0.9)", "pytest (==6.2.5)", "pytest-asyncio", "pytest-cov (==2.8.1)", "pytest-httpx", "requests-mock (>=0.7.0)"] -xmlsec = ["xmlsec (>=0.6.1)"] - -[[package]] -name = "zipp" -version = "3.18.1" -description = "Backport of pathlib-compatible object wrapper for zip files" -optional = false -python-versions = ">=3.8" -files = [ - {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, - {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] - -[metadata] -lock-version = "2.0" -python-versions = "^3.10" -content-hash = "77a24f59f28158ab613d4477d810b12c3ef99154ff4969e5132221f1a24d209f" diff --git a/pkgs/pretix/pretix-static.nix b/pkgs/pretix/pretix-static.nix deleted file mode 100644 index 25861b3..0000000 --- a/pkgs/pretix/pretix-static.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ stdenvNoCC -, pretix -, buildNpmPackage -, makeWrapper -}: - -let - nodeEnv = buildNpmPackage rec { - name = "pretix-nodejs"; - src = "${pretix.passthru.pythonModule.pkgs.pretix}/lib/${pretix.python.libPrefix}/site-packages/pretix/static/npm_dir"; - npmDepsHash = "sha256-2fHlEEmYzpF3SyvF7+FbwCt+zQVGF0/kslDFnJ+DQGE="; - dontNpmBuild = true; - installPhase = '' - mkdir -p $out - cp -r node_modules $out/ - mkdir -p $out/bin - ln -s $out/node_modules/rollup/dist/bin/rollup $out/bin/rollup - ''; - postFixup = '' - wrapProgram $out/bin/rollup --prefix NODE_PATH : $out - ''; - nativeBuildInputs = [ - makeWrapper - ]; - }; -in -stdenvNoCC.mkDerivation { - name = "pretix-static"; - src = ./.; - buildPhase = '' - mkdir $out - export PRETIX_STATIC_ROOT=$out - export DJANGO_SETTINGS_MODULE=pretix_wrapper.settings - ${pretix}/bin/pretix collectstatic --noinput - mkdir -p $PRETIX_STATIC_ROOT/node_prefix - ln -s ${nodeEnv}/node_modules $PRETIX_STATIC_ROOT/node_prefix/node_modules - echo ${nodeEnv}/bin/rollup - ${pretix}/bin/pretix compress - ''; - installPhase = '' - runHook preInstall - runHook postInstall - ''; - nativeBuildInputs = [ - nodeEnv - ]; -} - diff --git a/pkgs/pretix/pretix.nix b/pkgs/pretix/pretix.nix deleted file mode 100644 index 697f2c3..0000000 --- a/pkgs/pretix/pretix.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ lib -, poetry2nix -, pkgs -, gettext -, tlds-alpha-by-domain ? ./tlds-alpha-by-domain.txt -}: - -let - tlds = pkgs.fetchurl { - url = "https://data.iana.org/TLD/tlds-alpha-by-domain.txt"; - sha256 = "0153py77ll759jacq41dp2z2ksr08pdcfic0rwjd6pr84dk89y9v"; - }; - pkgsRequiringSetuptools = [ - "dj-static" - "django-jquery-js" - "paypal-checkout-serversdk" - "python-u2flib-server" - "slimit" - "static3" - ]; -in -poetry2nix.mkPoetryApplication rec { - projectDir = ./.; - #python = pkgs.python310; - preferWheels = true; - overrides = poetry2nix.defaultPoetryOverrides.extend - ( - self: super: lib.attrsets.genAttrs pkgsRequiringSetuptools - ( - pythonPackage: - super."${pythonPackage}".overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ super.setuptools ]; - } - ) - ) // { - tlds = super.tlds.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ super.setuptools ]; - } - ); - pretix = super.pretix.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ - gettext - ]; - preFixup = '' - python -m pretix compilemessages - python -m pretix compilejsi18n - ''; - } - ); - reportlab = super.reportlab.overridePythonAttrs ( - old: { - postPatch = ""; - } - ); - } - ); -} diff --git a/pkgs/pretix/pretix_wrapper/__main__.py b/pkgs/pretix/pretix_wrapper/__main__.py deleted file mode 100644 index 57fdb08..0000000 --- a/pkgs/pretix/pretix_wrapper/__main__.py +++ /dev/null @@ -1,9 +0,0 @@ -import sys -import os - -module_name = "pretix" - - -def main(): - os.environ["PYTHONPATH"] = ":".join(sys.path) - os.execv(sys.executable, [sys.executable, "-m", module_name, *sys.argv[1:]]) diff --git a/pkgs/pretix/pretix_wrapper/settings.py b/pkgs/pretix/pretix_wrapper/settings.py deleted file mode 100644 index e0c5620..0000000 --- a/pkgs/pretix/pretix_wrapper/settings.py +++ /dev/null @@ -1,4 +0,0 @@ -import os -from pretix.settings import * - -STATIC_ROOT = os.getenv("PRETIX_STATIC_ROOT") diff --git a/pkgs/pretix/pyproject.toml b/pkgs/pretix/pyproject.toml deleted file mode 100644 index 9a2815d..0000000 --- a/pkgs/pretix/pyproject.toml +++ /dev/null @@ -1,19 +0,0 @@ -[tool.poetry] -name = "pretix_wrapper" -version = "1.0.0" -description = "" -authors = ["Jakob Lechner "] -license = "MIT" - -[tool.poetry.dependencies] -python = "^3.10" -pretix = "^2024.3.0" - -[tool.poetry.dev-dependencies] - -[tool.poetry.scripts] -pretix = "pretix_wrapper.__main__:main" - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" diff --git a/pkgs/pretix/shell.nix b/pkgs/pretix/shell.nix deleted file mode 100644 index cd52c53..0000000 --- a/pkgs/pretix/shell.nix +++ /dev/null @@ -1,8 +0,0 @@ -with import { }; - -mkShell { - buildInputs = [ - poetry - ]; - -} From 4c0d5c5fe04d28c52dab0f4cf0ab4a9c27e3a7ee Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 22 May 2024 22:30:51 +0200 Subject: [PATCH 101/562] Remove deprecated use of lib.mdDoc --- modules/matrix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/matrix/default.nix b/modules/matrix/default.nix index 4c0d8bf..d237ca5 100644 --- a/modules/matrix/default.nix +++ b/modules/matrix/default.nix @@ -56,7 +56,7 @@ in defaultText = literalExpression '' optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit ''; - description = lib.mdDoc '' + description = '' List of Systemd services to require and wait for when starting the application service. ''; }; From 102ae3fe62df9d59a08554209a0ebf41b693ed7e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 22 May 2024 22:31:31 +0200 Subject: [PATCH 102/562] Fix pinentry deprecations --- home-manager/modules/gui.nix | 2 -- modules/yubikey-gpg.nix | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/home-manager/modules/gui.nix b/home-manager/modules/gui.nix index 35eb065..d744a18 100644 --- a/home-manager/modules/gui.nix +++ b/home-manager/modules/gui.nix @@ -3,11 +3,9 @@ lib.mkIf nixosConfig.jalr.gui.enable { home.packages = with pkgs; [ evince exiftool - gcr # required for pinentry-gnome geeqie mpv networkmanagerapplet - pinentry-gnome streamlink supersonic-wayland vlc diff --git a/modules/yubikey-gpg.nix b/modules/yubikey-gpg.nix index 5582a8c..449172e 100644 --- a/modules/yubikey-gpg.nix +++ b/modules/yubikey-gpg.nix @@ -7,7 +7,7 @@ gnupg.agent = { enable = true; enableSSHSupport = true; - pinentryFlavor = if config.jalr.gui.enable then "gnome3" else "tty"; + pinentryPackage = with pkgs; if config.jalr.gui.enable then pinentry-gnome3 else pinentry-tty; }; }; From 774d0df25d72dcf99d8dd9dd83f69336d6bb0707 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 23 May 2024 10:45:29 +0200 Subject: [PATCH 103/562] Use TOML format for Alacritty configuration --- home-manager/modules/alacritty.nix | 20 +++++++++----------- home-manager/modules/dynamic-colors.nix | 6 +++--- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/home-manager/modules/alacritty.nix b/home-manager/modules/alacritty.nix index 6974d18..b240cbc 100644 --- a/home-manager/modules/alacritty.nix +++ b/home-manager/modules/alacritty.nix @@ -1,6 +1,7 @@ { lib, pkgs, nixosConfig, ... }: let solarized = import ./solarized.nix; + tomlFormat = pkgs.formats.toml { }; #nixosConfig.jalr.terminalEmulator.command = pkgs.writeShellScriptBin "alacritty-sway-cwd" '' # this_alacritty_pid="$(swaymsg -t get_tree | ${pkgs.jq} -e 'recurse(.nodes[]?) | select((.focused==true) and (.app_id=="Alacritty")).pid')" @@ -144,18 +145,15 @@ in enable = nixosConfig.jalr.gui.enable; }; - # The option `home-manager.users.jalr.xdg.configFile.dark.alacritty/alacritty-dark.yml' does not exist - - /* - xdg.configFile = builtins.mapAttrs (colorScheme: cfg: { - "alacritty/alacritty-${colorScheme}.yml" = lib.replaceStrings [ "\\\\" ] [ "\\" ] (builtins.toJSON cfg); - }) settings; - */ - xdg.configFile = lib.attrsets.mapAttrs' - (colorScheme: cfg: lib.attrsets.nameValuePair "alacritty/alacritty-${colorScheme}.yml" { - text = lib.replaceStrings [ "\\\\" ] [ "\\" ] (builtins.toJSON cfg); - }) + (colorScheme: cfg: + let name = "alacritty-${colorScheme}.toml"; + in + lib.attrsets.nameValuePair "alacritty/${name}" { + source = tomlFormat.generate name cfg; + target = "alacritty/${name}"; + } + ) settings; programs.fish.functions = { diff --git a/home-manager/modules/dynamic-colors.nix b/home-manager/modules/dynamic-colors.nix index 1aa2c47..82ed460 100644 --- a/home-manager/modules/dynamic-colors.nix +++ b/home-manager/modules/dynamic-colors.nix @@ -9,9 +9,9 @@ let applicationConfig = [ { dir = "~/.config/alacritty"; - light = "alacritty-light.yml"; - dark = "alacritty-dark.yml"; - target = "alacritty.yml"; + light = "alacritty-light.toml"; + dark = "alacritty-dark.toml"; + target = "alacritty.toml"; } { dir = "~/.config/wofi"; From 0ac2fa36327d4ee88a4f3c6fa415a6c734870522 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 23 May 2024 10:48:52 +0200 Subject: [PATCH 104/562] Fix deprecation --- home-manager/modules/alacritty.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home-manager/modules/alacritty.nix b/home-manager/modules/alacritty.nix index b240cbc..2fb22be 100644 --- a/home-manager/modules/alacritty.nix +++ b/home-manager/modules/alacritty.nix @@ -106,7 +106,7 @@ let mouse.hide_when_typing = true; - key_bindings = [ + keyboard.bindings = [ { key = "F1"; mods = "Control"; From 39f8eaa6ccba7d3763c76279df6379256ae61b3b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 23 May 2024 10:49:48 +0200 Subject: [PATCH 105/562] Remove alacritty-sway-cwd attempt This was an attempt to start new instances of Alacritty in the same working directory as the focused instance. A working implementation is now part of the sway module. --- home-manager/modules/alacritty.nix | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/home-manager/modules/alacritty.nix b/home-manager/modules/alacritty.nix index 2fb22be..3c82e32 100644 --- a/home-manager/modules/alacritty.nix +++ b/home-manager/modules/alacritty.nix @@ -3,20 +3,6 @@ let solarized = import ./solarized.nix; tomlFormat = pkgs.formats.toml { }; - #nixosConfig.jalr.terminalEmulator.command = pkgs.writeShellScriptBin "alacritty-sway-cwd" '' - # this_alacritty_pid="$(swaymsg -t get_tree | ${pkgs.jq} -e 'recurse(.nodes[]?) | select((.focused==true) and (.app_id=="Alacritty")).pid')" - - # if [ "$this_alacritty_pid" ]; then - # child_pid="$(pgrep -P "$this_alacritty_pid")" - # cwd="$(readlink /proc/$child_pid/cwd)" - # fi - # if [ -e "$cwd" ]; then - # exec ${pkgs.alacritty} --working-directory "$cwd" - # fi - - # exec alacritty - #''; - colorschemes = { # https://github.com/alacritty/alacritty/wiki/Color-schemes#solarized solarized-dark = { From e972e1a182a22e40707234052296a739707fb0d3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 23 May 2024 11:07:32 +0200 Subject: [PATCH 106/562] Fix workaround to hide the titlebar --- home-manager/modules/sway/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home-manager/modules/sway/default.nix b/home-manager/modules/sway/default.nix index 3b51e61..2d4be5b 100644 --- a/home-manager/modules/sway/default.nix +++ b/home-manager/modules/sway/default.nix @@ -297,7 +297,9 @@ in fonts = { names = [ "monospace" ]; style = "Regular"; - size = 0.0; + + # FIXME: this is an ugly workaround until https://github.com/swaywm/sway/issues/7409 is fixed + size = 0.001; }; }; From 5c17d3083e5a08c03c0f5a46d7b15b7258395526 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 23 May 2024 17:23:17 +0200 Subject: [PATCH 107/562] Add host `copper` --- hosts/copper/configuration.nix | 27 ++++++++++++++++ hosts/copper/hardware-configuration.nix | 43 +++++++++++++++++++++++++ hosts/default.nix | 4 +++ 3 files changed, 74 insertions(+) create mode 100644 hosts/copper/configuration.nix create mode 100644 hosts/copper/hardware-configuration.nix diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix new file mode 100644 index 0000000..cc92b67 --- /dev/null +++ b/hosts/copper/configuration.nix @@ -0,0 +1,27 @@ +{ + imports = [ + ./hardware-configuration.nix + ../../home-manager/users/jalr.nix + ]; + + networking = { + hostName = "copper"; + }; + + jalr = { + bootloader = "systemd-boot"; + bluetooth.enable = true; + uefi.enable = true; + gui.enable = true; + workstation.enable = true; + sdr.enable = true; + libvirt.enable = true; + autologin = { + enable = true; + username = "jalr"; + }; + }; + + system.stateVersion = "24.05"; +} + diff --git a/hosts/copper/hardware-configuration.nix b/hosts/copper/hardware-configuration.nix new file mode 100644 index 0000000..7dac416 --- /dev/null +++ b/hosts/copper/hardware-configuration.nix @@ -0,0 +1,43 @@ +{ config, lib, modulesPath, ... }: + +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd = { + availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ]; + luks.devices."copper-crypt".device = "/dev/disk/by-uuid/0687579d-83e3-4a0c-a63a-3d8566456924"; + }; + + fileSystems = + let + bootDev = "/dev/disk/by-uuid/FF86-D9B6"; + btrfsDev = "/dev/disk/by-uuid/16109d28-7ba1-403e-9bb3-3a8da8838c1f"; + in + { + "/" = { + device = btrfsDev; + fsType = "btrfs"; + options = [ "subvol=root" "compress=zstd" ]; + }; + "/home" = { + device = btrfsDev; + fsType = "btrfs"; + options = [ "subvol=home" "compress=zstd" "nodev" "nosuid" ]; + }; + "/nix" = { + device = btrfsDev; + fsType = "btrfs"; + options = [ "subvol=nix" "compress=zstd" "noatime" "nodev" ]; + }; + + "/boot" = { + device = bootDev; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" "nodev" "nosuid" "noexec" ]; + }; + }; + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/default.nix b/hosts/default.nix index aa58d11..b6751aa 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -27,4 +27,8 @@ system = "x86_64-linux"; targetHost = "tin.lan.bw.jalr.de"; }; + copper = { + system = "x86_64-linux"; + targetHost = "copper.lan.bw.jalr.de"; + }; } From e1a9158c22da9bcaa6708659f014b7603391cd43 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 23 May 2024 17:23:38 +0200 Subject: [PATCH 108/562] Update ssh key --- pkgs/contact-page/src/itsmine | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/contact-page/src/itsmine b/pkgs/contact-page/src/itsmine index a5e644e..006fa26 100644 --- a/pkgs/contact-page/src/itsmine +++ b/pkgs/contact-page/src/itsmine @@ -8,5 +8,5 @@ while read type key comment do grep -F "$comment" ~/.ssh/authorized_keys || echo "$type $key $comment" >> ~/.ssh/authorized_keys done << EOF -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM2x+uWFR4z9MzwZnlFMgJrFXxpruZ58WukKyWrCjURj cardno:000616522763 +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH3l+Yixrsjhze20CSjvUK4Qj/BNqbTNitgk20vuzPej cardno:25_750_479 EOF From cf3cf6d66eaa7707540f86216bfdd96eb84c3a76 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 23 May 2024 17:24:21 +0200 Subject: [PATCH 109/562] Rename script --- pkgs/contact-page/src/{itsmine => p0wn} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pkgs/contact-page/src/{itsmine => p0wn} (100%) diff --git a/pkgs/contact-page/src/itsmine b/pkgs/contact-page/src/p0wn similarity index 100% rename from pkgs/contact-page/src/itsmine rename to pkgs/contact-page/src/p0wn From 0fc518960aabda127e3572456d1f18001138ed8e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 23 May 2024 19:15:21 +0200 Subject: [PATCH 110/562] Add Element profiles --- .../modules/communication/element-desktop.nix | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/home-manager/modules/communication/element-desktop.nix b/home-manager/modules/communication/element-desktop.nix index 6cabee6..c210a98 100644 --- a/home-manager/modules/communication/element-desktop.nix +++ b/home-manager/modules/communication/element-desktop.nix @@ -1,7 +1,42 @@ { nixosConfig, lib, pkgs, ... }: +let + profiles = { + "digitaler-dienst" = { + description = "Digitaler Dienst"; + }; + "private" = { + description = "private"; + }; + }; +in lib.mkIf nixosConfig.jalr.gui.enable { home.packages = with pkgs; [ element-desktop ]; + + # Create an empty directory in nix store + # as we want to use Element only with `--profile-dir` + xdg.configFile.Element = { + source = pkgs.runCommand "empty-Element-directory" { } "mkdir $out"; + target = "Element"; + }; + + + xdg.desktopEntries = lib.attrsets.mapAttrs' + (name: value: lib.attrsets.nameValuePair "element-desktop-${name}" + { + categories = [ "Network" "InstantMessaging" "Chat" ]; + exec = toString (pkgs.writeShellScript "element-desktop-${name}" '' + exec element-desktop --profile-dir "$HOME/.config/element-profiles/${name}" + ''); + genericName = "Matrix Client"; + icon = "element"; + mimeType = [ "x-scheme-handler/element" ]; + name = "Element ${value.description}"; + terminal = false; + type = "Application"; + } + ) + profiles; } From f1ce67dc0daf27118243edc3ce92cb82a2a62039 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 May 2024 00:07:30 +0200 Subject: [PATCH 111/562] Enable networkmanager for GUI systems --- hosts/cadmium/configuration.nix | 3 --- hosts/jalr-t520/configuration.nix | 1 - hosts/tin/configuration.nix | 1 - modules/network-manager.nix | 2 ++ 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/hosts/cadmium/configuration.nix b/hosts/cadmium/configuration.nix index eb39348..f7e6ca2 100644 --- a/hosts/cadmium/configuration.nix +++ b/hosts/cadmium/configuration.nix @@ -8,9 +8,6 @@ networking = { hostName = "cadmium"; - networkmanager = { - enable = true; - }; useDHCP = false; firewall = { diff --git a/hosts/jalr-t520/configuration.nix b/hosts/jalr-t520/configuration.nix index f34a5fc..6f604d0 100644 --- a/hosts/jalr-t520/configuration.nix +++ b/hosts/jalr-t520/configuration.nix @@ -8,7 +8,6 @@ networking = { hostName = "jalr-t520"; - networkmanager.enable = true; useDHCP = false; }; diff --git a/hosts/tin/configuration.nix b/hosts/tin/configuration.nix index 0eb8457..f9be603 100644 --- a/hosts/tin/configuration.nix +++ b/hosts/tin/configuration.nix @@ -12,7 +12,6 @@ networking = { hostName = "tin"; - networkmanager.enable = true; useDHCP = false; }; diff --git a/modules/network-manager.nix b/modules/network-manager.nix index 2c75c57..18a6426 100644 --- a/modules/network-manager.nix +++ b/modules/network-manager.nix @@ -5,4 +5,6 @@ lib.mkIf config.jalr.gui.enable { enable = true; indicator = true; }; + + networking.networkmanager.enable = true; } From c8a9a1baa08bb0a4e93e0c07a39470d10de66ad5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 May 2024 01:59:21 +0200 Subject: [PATCH 112/562] Disable chat --- home-manager/modules/thunderbird.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home-manager/modules/thunderbird.nix b/home-manager/modules/thunderbird.nix index dfe8769..c2698d0 100644 --- a/home-manager/modules/thunderbird.nix +++ b/home-manager/modules/thunderbird.nix @@ -3,5 +3,8 @@ programs.thunderbird = { enable = nixosConfig.jalr.gui.enable; profiles."default".isDefault = true; + settings = { + "mail.chat.enabled" = false; + }; }; } From a54efeadf9ff61b95f49b29884b02b249fadbbc0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 May 2024 02:04:16 +0200 Subject: [PATCH 113/562] Add Digitaler Dienst info mailbox --- home-manager/users/jalr.nix | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/home-manager/users/jalr.nix b/home-manager/users/jalr.nix index d8a735b..20aaede 100644 --- a/home-manager/users/jalr.nix +++ b/home-manager/users/jalr.nix @@ -120,6 +120,31 @@ profiles = [ "default" ]; }; }; + "Digitaler Dienst info" = { + userName = "info@digitaler-dienst.gmbh"; + address = "info@digitaler-dienst.gmbh"; + realName = "Digitaler Dienst"; + imap = { + host = "mail.agenturserver.de"; + port = 143; + tls = { + enable = true; + useStartTls = true; + }; + }; + smtp = { + host = "mail.agenturserver.de"; + port = 587; + tls = { + enable = true; + useStartTls = true; + }; + }; + thunderbird = { + enable = true; + profiles = [ "default" ]; + }; + }; }; }; }; From 3360041997f9ca55d75a8cdeea9cecb3f8834927 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 May 2024 02:19:07 +0200 Subject: [PATCH 114/562] Add FabLab mailbox --- home-manager/users/jalr.nix | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/home-manager/users/jalr.nix b/home-manager/users/jalr.nix index 20aaede..71f15cc 100644 --- a/home-manager/users/jalr.nix +++ b/home-manager/users/jalr.nix @@ -145,6 +145,31 @@ profiles = [ "default" ]; }; }; + "FabLab NEA" = { + userName = "kontakt@fablab-nea.de"; + address = "kontakt@fablab-nea.de"; + realName = "FabLab NEA"; + imap = { + host = "hha.jalr.de"; + port = 143; + tls = { + enable = true; + useStartTls = true; + }; + }; + smtp = { + host = "hha.jalr.de"; + port = 587; + tls = { + enable = true; + useStartTls = true; + }; + }; + thunderbird = { + enable = true; + profiles = [ "default" ]; + }; + }; }; }; }; From c7b469c3500afa05f79c5eb944ada4dab7f1962b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 May 2024 14:29:26 +0200 Subject: [PATCH 115/562] Change home-manager structure After I quit Tradebyte, I'm now only having a single user account. It makes sense to restructure the home-manager configuration. --- home-manager/users/default.nix | 28 --------------- hosts/aluminium/configuration.nix | 2 +- hosts/cadmium/configuration.nix | 2 +- hosts/copper/configuration.nix | 2 +- hosts/iron/configuration.nix | 2 +- hosts/jalr-t520/configuration.nix | 2 +- hosts/magnesium/configuration.nix | 2 +- hosts/tin/configuration.nix | 2 +- hosts/weinturm-pretix-prod/configuration.nix | 2 +- {home-manager => users}/README.md | 0 .../users/jalr.nix => users/jalr/default.nix | 17 +-------- .../jalr}/modules/3d-printing.nix | 0 .../jalr}/modules/alacritty.nix | 0 {home-manager => users/jalr}/modules/aws.nix | 0 .../jalr}/modules/claws-mail.nix | 0 {home-manager => users/jalr}/modules/cli.nix | 0 .../jalr}/modules/communication/default.nix | 0 .../modules/communication/element-desktop.nix | 0 .../jalr}/modules/communication/mumble.nix | 0 .../jalr}/modules/communication/qtox.nix | 0 .../communication/telegram-desktop.nix | 0 .../jalr}/modules/default.nix | 2 +- .../jalr}/modules/direnv.nix | 0 .../jalr}/modules/dynamic-colors.nix | 0 .../jalr}/modules/firefox/default.nix | 0 .../jalr}/modules/firefox/userChrome.css | 0 {home-manager => users/jalr}/modules/fish.nix | 0 {home-manager => users/jalr}/modules/fpv.nix | 0 {home-manager => users/jalr}/modules/git.nix | 8 ++--- .../jalr}/modules/gnuradio.nix | 0 .../jalr}/modules/graphics/default.nix | 0 .../jalr}/modules/graphics/gimp.nix | 0 .../jalr}/modules/graphics/inkscape.nix | 0 .../jalr}/modules/graphics/krita.nix | 0 {home-manager => users/jalr}/modules/gui.nix | 0 .../jalr}/modules/jameica.nix | 0 .../jalr}/modules/kicad.nix | 0 {home-manager => users/jalr}/modules/mpv.nix | 0 .../jalr}/modules/mute-indicator.nix | 0 {home-manager => users/jalr}/modules/neo.nix | 0 .../jalr}/modules/neovim.nix | 0 .../jalr}/modules/obs-studio/default.nix | 0 .../jalr}/modules/openscad.nix | 0 {home-manager => users/jalr}/modules/pass.nix | 0 .../jalr}/modules/pcmanfm.nix | 0 .../jalr}/modules/python.nix | 0 .../jalr}/modules/remarkable/default.nix | 0 .../jalr}/modules/remarkable/restream.nix | 0 .../jalr}/modules/remarkable/rmview.nix | 0 .../jalr}/modules/solarized.nix | 0 .../jalr}/modules/sound/audacity.nix | 0 .../jalr}/modules/sound/default.nix | 0 .../jalr}/modules/sound/easyeffects.nix | 0 .../jalr}/modules/sound/pipewire.nix | 0 .../jalr}/modules/sway/default.nix | 35 ++++++------------- .../jalr}/modules/sway/gammastep.nix | 0 .../modules/sway/move-to-output/default.nix | 0 .../jalr}/modules/sway/waybar.nix | 0 .../jalr}/modules/sway/wofi-bluetooth.nix | 0 .../jalr}/modules/sway/wofi.nix | 0 .../modules/sway/yubikey-touch-detector.nix | 0 .../jalr}/modules/thunderbird.nix | 0 {home-manager => users/jalr}/modules/tmux.nix | 0 .../jalr}/modules/tor-browser.nix | 0 .../jalr}/modules/vdirsyncer.nix | 0 65 files changed, 25 insertions(+), 81 deletions(-) delete mode 100644 home-manager/users/default.nix rename {home-manager => users}/README.md (100%) rename home-manager/users/jalr.nix => users/jalr/default.nix (93%) rename {home-manager => users/jalr}/modules/3d-printing.nix (100%) rename {home-manager => users/jalr}/modules/alacritty.nix (100%) rename {home-manager => users/jalr}/modules/aws.nix (100%) rename {home-manager => users/jalr}/modules/claws-mail.nix (100%) rename {home-manager => users/jalr}/modules/cli.nix (100%) rename {home-manager => users/jalr}/modules/communication/default.nix (100%) rename {home-manager => users/jalr}/modules/communication/element-desktop.nix (100%) rename {home-manager => users/jalr}/modules/communication/mumble.nix (100%) rename {home-manager => users/jalr}/modules/communication/qtox.nix (100%) rename {home-manager => users/jalr}/modules/communication/telegram-desktop.nix (100%) rename {home-manager => users/jalr}/modules/default.nix (93%) rename {home-manager => users/jalr}/modules/direnv.nix (100%) rename {home-manager => users/jalr}/modules/dynamic-colors.nix (100%) rename {home-manager => users/jalr}/modules/firefox/default.nix (100%) rename {home-manager => users/jalr}/modules/firefox/userChrome.css (100%) rename {home-manager => users/jalr}/modules/fish.nix (100%) rename {home-manager => users/jalr}/modules/fpv.nix (100%) rename {home-manager => users/jalr}/modules/git.nix (96%) rename {home-manager => users/jalr}/modules/gnuradio.nix (100%) rename {home-manager => users/jalr}/modules/graphics/default.nix (100%) rename {home-manager => users/jalr}/modules/graphics/gimp.nix (100%) rename {home-manager => users/jalr}/modules/graphics/inkscape.nix (100%) rename {home-manager => users/jalr}/modules/graphics/krita.nix (100%) rename {home-manager => users/jalr}/modules/gui.nix (100%) rename {home-manager => users/jalr}/modules/jameica.nix (100%) rename {home-manager => users/jalr}/modules/kicad.nix (100%) rename {home-manager => users/jalr}/modules/mpv.nix (100%) rename {home-manager => users/jalr}/modules/mute-indicator.nix (100%) rename {home-manager => users/jalr}/modules/neo.nix (100%) rename {home-manager => users/jalr}/modules/neovim.nix (100%) rename {home-manager => users/jalr}/modules/obs-studio/default.nix (100%) rename {home-manager => users/jalr}/modules/openscad.nix (100%) rename {home-manager => users/jalr}/modules/pass.nix (100%) rename {home-manager => users/jalr}/modules/pcmanfm.nix (100%) rename {home-manager => users/jalr}/modules/python.nix (100%) rename {home-manager => users/jalr}/modules/remarkable/default.nix (100%) rename {home-manager => users/jalr}/modules/remarkable/restream.nix (100%) rename {home-manager => users/jalr}/modules/remarkable/rmview.nix (100%) rename {home-manager => users/jalr}/modules/solarized.nix (100%) rename {home-manager => users/jalr}/modules/sound/audacity.nix (100%) rename {home-manager => users/jalr}/modules/sound/default.nix (100%) rename {home-manager => users/jalr}/modules/sound/easyeffects.nix (100%) rename {home-manager => users/jalr}/modules/sound/pipewire.nix (100%) rename {home-manager => users/jalr}/modules/sway/default.nix (93%) rename {home-manager => users/jalr}/modules/sway/gammastep.nix (100%) rename {home-manager => users/jalr}/modules/sway/move-to-output/default.nix (100%) rename {home-manager => users/jalr}/modules/sway/waybar.nix (100%) rename {home-manager => users/jalr}/modules/sway/wofi-bluetooth.nix (100%) rename {home-manager => users/jalr}/modules/sway/wofi.nix (100%) rename {home-manager => users/jalr}/modules/sway/yubikey-touch-detector.nix (100%) rename {home-manager => users/jalr}/modules/thunderbird.nix (100%) rename {home-manager => users/jalr}/modules/tmux.nix (100%) rename {home-manager => users/jalr}/modules/tor-browser.nix (100%) rename {home-manager => users/jalr}/modules/vdirsyncer.nix (100%) diff --git a/home-manager/users/default.nix b/home-manager/users/default.nix deleted file mode 100644 index 26dd6aa..0000000 --- a/home-manager/users/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ lib, ... }: - -{ - options.jalr = { - git = { - user = { - name = lib.mkOption { - type = lib.types.str; - description = "name to use for git commits"; - }; - email = lib.mkOption { - type = lib.types.str; - description = "email to use for git commits"; - }; - }; - signByDefault = lib.mkEnableOption "GPG sign commits per default"; - }; - gpg.defaultKey = lib.mkOption { - type = lib.types.str; - description = "default gpg key id"; - }; - terminalEmulator = lib.mkOption { - type = lib.types.str; - description = "default Terminal emulator name"; - default = "alacritty"; - }; - }; -} diff --git a/hosts/aluminium/configuration.nix b/hosts/aluminium/configuration.nix index 5201eee..40cb8ef 100644 --- a/hosts/aluminium/configuration.nix +++ b/hosts/aluminium/configuration.nix @@ -7,7 +7,7 @@ in { imports = [ ./hardware-configuration.nix - ../../home-manager/users/jalr.nix + ../../users/jalr ./services ]; diff --git a/hosts/cadmium/configuration.nix b/hosts/cadmium/configuration.nix index f7e6ca2..55d51ab 100644 --- a/hosts/cadmium/configuration.nix +++ b/hosts/cadmium/configuration.nix @@ -3,7 +3,7 @@ { imports = [ ./hardware-configuration.nix - ../../home-manager/users/jalr.nix + ../../users/jalr ]; networking = { diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index cc92b67..7c6ca88 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -1,7 +1,7 @@ { imports = [ ./hardware-configuration.nix - ../../home-manager/users/jalr.nix + ../../users/jalr ]; networking = { diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index df0793e..398fd7a 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -33,7 +33,7 @@ let in with lib; { imports = [ - ../../home-manager/users/jalr.nix + ../../users/jalr ./services ]; config = { diff --git a/hosts/jalr-t520/configuration.nix b/hosts/jalr-t520/configuration.nix index 6f604d0..9cd08a5 100644 --- a/hosts/jalr-t520/configuration.nix +++ b/hosts/jalr-t520/configuration.nix @@ -3,7 +3,7 @@ { imports = [ ./hardware-configuration.nix - ../../home-manager/users/jalr.nix + ../../users/jalr ]; networking = { diff --git a/hosts/magnesium/configuration.nix b/hosts/magnesium/configuration.nix index 1bbbf96..0529035 100644 --- a/hosts/magnesium/configuration.nix +++ b/hosts/magnesium/configuration.nix @@ -3,7 +3,7 @@ { imports = [ ./hardware-configuration.nix - ../../home-manager/users/jalr.nix + ../../users/jalr ./services ]; diff --git a/hosts/tin/configuration.nix b/hosts/tin/configuration.nix index f9be603..03af0d7 100644 --- a/hosts/tin/configuration.nix +++ b/hosts/tin/configuration.nix @@ -7,7 +7,7 @@ { imports = [ ./hardware-configuration.nix - ../../home-manager/users/jalr.nix + ../../users/jalr ]; networking = { diff --git a/hosts/weinturm-pretix-prod/configuration.nix b/hosts/weinturm-pretix-prod/configuration.nix index 3a6fc72..97d6106 100644 --- a/hosts/weinturm-pretix-prod/configuration.nix +++ b/hosts/weinturm-pretix-prod/configuration.nix @@ -1,7 +1,7 @@ { ... }: { imports = [ ./hardware-configuration.nix - ../../home-manager/users/jalr.nix + ../../users/jalr ./services ]; diff --git a/home-manager/README.md b/users/README.md similarity index 100% rename from home-manager/README.md rename to users/README.md diff --git a/home-manager/users/jalr.nix b/users/jalr/default.nix similarity index 93% rename from home-manager/users/jalr.nix rename to users/jalr/default.nix index 71f15cc..180bb00 100644 --- a/home-manager/users/jalr.nix +++ b/users/jalr/default.nix @@ -1,21 +1,6 @@ { config, pkgs, ... }: { - imports = [ - ./default.nix - ]; - - jalr = { - git = { - user = { - name = "Jakob Lechner"; - email = "mail@jalr.de"; - }; - signByDefault = true; - }; - gpg.defaultKey = "3044E71E3DEFF49B586CF5809BF4FCCB90854DA9"; - }; - users.users.jalr = { isNormalUser = true; extraGroups = [ @@ -41,7 +26,7 @@ useUserPackages = true; useGlobalPkgs = true; users.jalr = { lib, pkgs, ... }: { - imports = [ ../modules ]; + imports = [ ./modules ]; config = { home.stateVersion = config.system.stateVersion; diff --git a/home-manager/modules/3d-printing.nix b/users/jalr/modules/3d-printing.nix similarity index 100% rename from home-manager/modules/3d-printing.nix rename to users/jalr/modules/3d-printing.nix diff --git a/home-manager/modules/alacritty.nix b/users/jalr/modules/alacritty.nix similarity index 100% rename from home-manager/modules/alacritty.nix rename to users/jalr/modules/alacritty.nix diff --git a/home-manager/modules/aws.nix b/users/jalr/modules/aws.nix similarity index 100% rename from home-manager/modules/aws.nix rename to users/jalr/modules/aws.nix diff --git a/home-manager/modules/claws-mail.nix b/users/jalr/modules/claws-mail.nix similarity index 100% rename from home-manager/modules/claws-mail.nix rename to users/jalr/modules/claws-mail.nix diff --git a/home-manager/modules/cli.nix b/users/jalr/modules/cli.nix similarity index 100% rename from home-manager/modules/cli.nix rename to users/jalr/modules/cli.nix diff --git a/home-manager/modules/communication/default.nix b/users/jalr/modules/communication/default.nix similarity index 100% rename from home-manager/modules/communication/default.nix rename to users/jalr/modules/communication/default.nix diff --git a/home-manager/modules/communication/element-desktop.nix b/users/jalr/modules/communication/element-desktop.nix similarity index 100% rename from home-manager/modules/communication/element-desktop.nix rename to users/jalr/modules/communication/element-desktop.nix diff --git a/home-manager/modules/communication/mumble.nix b/users/jalr/modules/communication/mumble.nix similarity index 100% rename from home-manager/modules/communication/mumble.nix rename to users/jalr/modules/communication/mumble.nix diff --git a/home-manager/modules/communication/qtox.nix b/users/jalr/modules/communication/qtox.nix similarity index 100% rename from home-manager/modules/communication/qtox.nix rename to users/jalr/modules/communication/qtox.nix diff --git a/home-manager/modules/communication/telegram-desktop.nix b/users/jalr/modules/communication/telegram-desktop.nix similarity index 100% rename from home-manager/modules/communication/telegram-desktop.nix rename to users/jalr/modules/communication/telegram-desktop.nix diff --git a/home-manager/modules/default.nix b/users/jalr/modules/default.nix similarity index 93% rename from home-manager/modules/default.nix rename to users/jalr/modules/default.nix index 151eafc..04a40c0 100644 --- a/home-manager/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -2,8 +2,8 @@ { imports = [ - ./${nixosConfig.jalr.terminalEmulator}.nix ./3d-printing.nix + ./alacritty.nix ./aws.nix ./claws-mail.nix ./cli.nix diff --git a/home-manager/modules/direnv.nix b/users/jalr/modules/direnv.nix similarity index 100% rename from home-manager/modules/direnv.nix rename to users/jalr/modules/direnv.nix diff --git a/home-manager/modules/dynamic-colors.nix b/users/jalr/modules/dynamic-colors.nix similarity index 100% rename from home-manager/modules/dynamic-colors.nix rename to users/jalr/modules/dynamic-colors.nix diff --git a/home-manager/modules/firefox/default.nix b/users/jalr/modules/firefox/default.nix similarity index 100% rename from home-manager/modules/firefox/default.nix rename to users/jalr/modules/firefox/default.nix diff --git a/home-manager/modules/firefox/userChrome.css b/users/jalr/modules/firefox/userChrome.css similarity index 100% rename from home-manager/modules/firefox/userChrome.css rename to users/jalr/modules/firefox/userChrome.css diff --git a/home-manager/modules/fish.nix b/users/jalr/modules/fish.nix similarity index 100% rename from home-manager/modules/fish.nix rename to users/jalr/modules/fish.nix diff --git a/home-manager/modules/fpv.nix b/users/jalr/modules/fpv.nix similarity index 100% rename from home-manager/modules/fpv.nix rename to users/jalr/modules/fpv.nix diff --git a/home-manager/modules/git.nix b/users/jalr/modules/git.nix similarity index 96% rename from home-manager/modules/git.nix rename to users/jalr/modules/git.nix index 2bdf690..2ff8657 100644 --- a/home-manager/modules/git.nix +++ b/users/jalr/modules/git.nix @@ -4,11 +4,11 @@ programs = { git = { enable = true; - userName = nixosConfig.jalr.git.user.name; - userEmail = nixosConfig.jalr.git.user.email; + userName = "Jakob Lechner"; + userEmail = "mail@jalr.de"; signing = { - key = nixosConfig.jalr.gpg.defaultKey; - signByDefault = nixosConfig.jalr.git.signByDefault; + key = "3044E71E3DEFF49B586CF5809BF4FCCB90854DA9"; + signByDefault = false; }; extraConfig = { init.defaultBranch = "main"; diff --git a/home-manager/modules/gnuradio.nix b/users/jalr/modules/gnuradio.nix similarity index 100% rename from home-manager/modules/gnuradio.nix rename to users/jalr/modules/gnuradio.nix diff --git a/home-manager/modules/graphics/default.nix b/users/jalr/modules/graphics/default.nix similarity index 100% rename from home-manager/modules/graphics/default.nix rename to users/jalr/modules/graphics/default.nix diff --git a/home-manager/modules/graphics/gimp.nix b/users/jalr/modules/graphics/gimp.nix similarity index 100% rename from home-manager/modules/graphics/gimp.nix rename to users/jalr/modules/graphics/gimp.nix diff --git a/home-manager/modules/graphics/inkscape.nix b/users/jalr/modules/graphics/inkscape.nix similarity index 100% rename from home-manager/modules/graphics/inkscape.nix rename to users/jalr/modules/graphics/inkscape.nix diff --git a/home-manager/modules/graphics/krita.nix b/users/jalr/modules/graphics/krita.nix similarity index 100% rename from home-manager/modules/graphics/krita.nix rename to users/jalr/modules/graphics/krita.nix diff --git a/home-manager/modules/gui.nix b/users/jalr/modules/gui.nix similarity index 100% rename from home-manager/modules/gui.nix rename to users/jalr/modules/gui.nix diff --git a/home-manager/modules/jameica.nix b/users/jalr/modules/jameica.nix similarity index 100% rename from home-manager/modules/jameica.nix rename to users/jalr/modules/jameica.nix diff --git a/home-manager/modules/kicad.nix b/users/jalr/modules/kicad.nix similarity index 100% rename from home-manager/modules/kicad.nix rename to users/jalr/modules/kicad.nix diff --git a/home-manager/modules/mpv.nix b/users/jalr/modules/mpv.nix similarity index 100% rename from home-manager/modules/mpv.nix rename to users/jalr/modules/mpv.nix diff --git a/home-manager/modules/mute-indicator.nix b/users/jalr/modules/mute-indicator.nix similarity index 100% rename from home-manager/modules/mute-indicator.nix rename to users/jalr/modules/mute-indicator.nix diff --git a/home-manager/modules/neo.nix b/users/jalr/modules/neo.nix similarity index 100% rename from home-manager/modules/neo.nix rename to users/jalr/modules/neo.nix diff --git a/home-manager/modules/neovim.nix b/users/jalr/modules/neovim.nix similarity index 100% rename from home-manager/modules/neovim.nix rename to users/jalr/modules/neovim.nix diff --git a/home-manager/modules/obs-studio/default.nix b/users/jalr/modules/obs-studio/default.nix similarity index 100% rename from home-manager/modules/obs-studio/default.nix rename to users/jalr/modules/obs-studio/default.nix diff --git a/home-manager/modules/openscad.nix b/users/jalr/modules/openscad.nix similarity index 100% rename from home-manager/modules/openscad.nix rename to users/jalr/modules/openscad.nix diff --git a/home-manager/modules/pass.nix b/users/jalr/modules/pass.nix similarity index 100% rename from home-manager/modules/pass.nix rename to users/jalr/modules/pass.nix diff --git a/home-manager/modules/pcmanfm.nix b/users/jalr/modules/pcmanfm.nix similarity index 100% rename from home-manager/modules/pcmanfm.nix rename to users/jalr/modules/pcmanfm.nix diff --git a/home-manager/modules/python.nix b/users/jalr/modules/python.nix similarity index 100% rename from home-manager/modules/python.nix rename to users/jalr/modules/python.nix diff --git a/home-manager/modules/remarkable/default.nix b/users/jalr/modules/remarkable/default.nix similarity index 100% rename from home-manager/modules/remarkable/default.nix rename to users/jalr/modules/remarkable/default.nix diff --git a/home-manager/modules/remarkable/restream.nix b/users/jalr/modules/remarkable/restream.nix similarity index 100% rename from home-manager/modules/remarkable/restream.nix rename to users/jalr/modules/remarkable/restream.nix diff --git a/home-manager/modules/remarkable/rmview.nix b/users/jalr/modules/remarkable/rmview.nix similarity index 100% rename from home-manager/modules/remarkable/rmview.nix rename to users/jalr/modules/remarkable/rmview.nix diff --git a/home-manager/modules/solarized.nix b/users/jalr/modules/solarized.nix similarity index 100% rename from home-manager/modules/solarized.nix rename to users/jalr/modules/solarized.nix diff --git a/home-manager/modules/sound/audacity.nix b/users/jalr/modules/sound/audacity.nix similarity index 100% rename from home-manager/modules/sound/audacity.nix rename to users/jalr/modules/sound/audacity.nix diff --git a/home-manager/modules/sound/default.nix b/users/jalr/modules/sound/default.nix similarity index 100% rename from home-manager/modules/sound/default.nix rename to users/jalr/modules/sound/default.nix diff --git a/home-manager/modules/sound/easyeffects.nix b/users/jalr/modules/sound/easyeffects.nix similarity index 100% rename from home-manager/modules/sound/easyeffects.nix rename to users/jalr/modules/sound/easyeffects.nix diff --git a/home-manager/modules/sound/pipewire.nix b/users/jalr/modules/sound/pipewire.nix similarity index 100% rename from home-manager/modules/sound/pipewire.nix rename to users/jalr/modules/sound/pipewire.nix diff --git a/home-manager/modules/sway/default.nix b/users/jalr/modules/sway/default.nix similarity index 93% rename from home-manager/modules/sway/default.nix rename to users/jalr/modules/sway/default.nix index 2d4be5b..c89db64 100644 --- a/home-manager/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -3,22 +3,19 @@ let solarized = import ../solarized.nix; terminalEmulator = - if nixosConfig.jalr.terminalEmulator == "alacritty" - then - pkgs.writeShellScript "alacritty-sway-cwd" '' - this_alacritty_pid="$(${pkgs.sway}/bin/swaymsg -t get_tree | ${pkgs.jq}/bin/jq -e 'recurse(.nodes[]?) | select((.focused==true) and (.app_id=="Alacritty")).pid')" + pkgs.writeShellScript "alacritty-sway-cwd" '' + this_alacritty_pid="$(${pkgs.sway}/bin/swaymsg -t get_tree | ${pkgs.jq}/bin/jq -e 'recurse(.nodes[]?) | select((.focused==true) and (.app_id=="Alacritty")).pid')" - if [ "$this_alacritty_pid" ]; then - child_pid="$(pgrep -P "$this_alacritty_pid")" - cwd="$(readlink /proc/$child_pid/cwd)" - fi - if [ -e "$cwd" ]; then - exec ${pkgs.alacritty}/bin/alacritty --working-directory "$cwd" - fi + if [ "$this_alacritty_pid" ]; then + child_pid="$(pgrep -P "$this_alacritty_pid")" + cwd="$(readlink /proc/$child_pid/cwd)" + fi + if [ -e "$cwd" ]; then + exec ${pkgs.alacritty}/bin/alacritty --working-directory "$cwd" + fi - exec ${pkgs.alacritty}/bin/alacritty - '' - else nixosConfig.jalr.terminalEmulator; + exec ${pkgs.alacritty}/bin/alacritty + ''; cfg = config.wayland.windowManager.sway.config; wallpaper = pkgs.fetchurl { url = "https://raw.githubusercontent.com/swaywm/sway/3b2bc894a5ebbcbbd6707d45a25d171779c2e874/assets/Sway_Wallpaper_Blue_1920x1080.png"; @@ -113,16 +110,6 @@ in output."*".bg = "${wallpaper} fill"; - # FIXME - #input = { - # #"type:keyboard" = { - # # xkb_layout = "neo"; - # #}; - #} // (lib.optionalAttrs (nixosConfig.networking.hostName == "mayushii") { - # "type:touchpad".events = "disabled"; - # "2:10:TPPS/2_Elan_TrackPoint".pointer_accel = "-0.15"; - #}); - keybindings = { "${cfg.modifier}+Return" = "exec ${cfg.terminal}"; "${cfg.modifier}+Backspace" = "exec ${cfg.terminal}"; diff --git a/home-manager/modules/sway/gammastep.nix b/users/jalr/modules/sway/gammastep.nix similarity index 100% rename from home-manager/modules/sway/gammastep.nix rename to users/jalr/modules/sway/gammastep.nix diff --git a/home-manager/modules/sway/move-to-output/default.nix b/users/jalr/modules/sway/move-to-output/default.nix similarity index 100% rename from home-manager/modules/sway/move-to-output/default.nix rename to users/jalr/modules/sway/move-to-output/default.nix diff --git a/home-manager/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix similarity index 100% rename from home-manager/modules/sway/waybar.nix rename to users/jalr/modules/sway/waybar.nix diff --git a/home-manager/modules/sway/wofi-bluetooth.nix b/users/jalr/modules/sway/wofi-bluetooth.nix similarity index 100% rename from home-manager/modules/sway/wofi-bluetooth.nix rename to users/jalr/modules/sway/wofi-bluetooth.nix diff --git a/home-manager/modules/sway/wofi.nix b/users/jalr/modules/sway/wofi.nix similarity index 100% rename from home-manager/modules/sway/wofi.nix rename to users/jalr/modules/sway/wofi.nix diff --git a/home-manager/modules/sway/yubikey-touch-detector.nix b/users/jalr/modules/sway/yubikey-touch-detector.nix similarity index 100% rename from home-manager/modules/sway/yubikey-touch-detector.nix rename to users/jalr/modules/sway/yubikey-touch-detector.nix diff --git a/home-manager/modules/thunderbird.nix b/users/jalr/modules/thunderbird.nix similarity index 100% rename from home-manager/modules/thunderbird.nix rename to users/jalr/modules/thunderbird.nix diff --git a/home-manager/modules/tmux.nix b/users/jalr/modules/tmux.nix similarity index 100% rename from home-manager/modules/tmux.nix rename to users/jalr/modules/tmux.nix diff --git a/home-manager/modules/tor-browser.nix b/users/jalr/modules/tor-browser.nix similarity index 100% rename from home-manager/modules/tor-browser.nix rename to users/jalr/modules/tor-browser.nix diff --git a/home-manager/modules/vdirsyncer.nix b/users/jalr/modules/vdirsyncer.nix similarity index 100% rename from home-manager/modules/vdirsyncer.nix rename to users/jalr/modules/vdirsyncer.nix From 26ea41867a2f8e8165a0d744e23d8d73c9b33280 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 May 2024 14:31:31 +0200 Subject: [PATCH 116/562] Enable zram --- hosts/copper/configuration.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index 7c6ca88..83b3404 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -8,6 +8,13 @@ hostName = "copper"; }; + zramSwap = { + enable = true; + algorithm = "zstd"; + memoryPercent = 60; + priority = 1; + }; + jalr = { bootloader = "systemd-boot"; bluetooth.enable = true; From 321e96443b2f627239a6990105451bcfcb2dc2c5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 May 2024 15:49:45 +0200 Subject: [PATCH 117/562] Fix bug: pasting user does not work --- users/jalr/modules/pass.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/users/jalr/modules/pass.nix b/users/jalr/modules/pass.nix index ce3e446..e3950a3 100644 --- a/users/jalr/modules/pass.nix +++ b/users/jalr/modules/pass.nix @@ -1,11 +1,17 @@ -{ nixosConfig, config, pkgs, ... }: +{ nixosConfig, pkgs, ... }: let pw = pkgs.writeScriptBin "pw" '' p="$(${pkgs.pass}/bin/pass show "$1")" copy_line() { - echo -n "$p" | ${pkgs.gnused}/bin/sed -n "$1"p | ${pkgs.wl-clipboard}/bin/wl-copy -o -f + echo -n "$p" \ + | ${pkgs.gnused}/bin/sed -n "$1"p \ + | ${pkgs.wl-clipboard}/bin/wl-copy \ + --paste-once \ + --foreground \ + --trim-newline \ + --type text/plain } echo "username" From 0c4b521edc69c1ce124bcb1b03cabf0c0fdd43d8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 May 2024 21:57:22 +0200 Subject: [PATCH 118/562] Fix removing failed commands from history --- users/jalr/modules/fish.nix | 34 +++++----------------------------- 1 file changed, 5 insertions(+), 29 deletions(-) diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index 59e209b..e2cbf76 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -61,23 +61,7 @@ #alias cal='ncal -b -M' alias myip='dig +short myip.opendns.com @resolver1.opendns.com' - function hm -d 'merge history and delete failed commands' - history --merge - - if test -z "$fish_private_mode" && test -e "$__fish_user_data_dir/successful_commands" && test -e "$__fish_user_data_dir/failed_commands" - while read line; - if ! grep -qFx $line "$__fish_user_data_dir/successful_commands" - set hist_command (echo $line | base64 -d) - echo "deleting command: $hist_command" - echo "." - history delete --exact --case-sensitive $hist_command - end - end < "$__fish_user_data_dir/failed_commands" - echo -n > "$__fish_user_data_dir/successful_commands" - echo -n > "$__fish_user_data_dir/failed_commands" - end - end - hm + history --merge >/dev/null 2>&1 # fancy tools if which eza > /dev/null 2>&1 @@ -121,18 +105,10 @@ function __postexec --on-event fish_postexec - if test $status -ne 0 - if test -z "$hist_cmd" - if test -z "$fish_private_mode" - echo $argv[1] | base64 >> "$__fish_user_data_dir/failed_commands" - end - end - else - if test -z "$fish_private_mode" - echo $argv[1] | base64 >> "$__fish_user_data_dir/successful_commands" - end - commandline $commandline_buffer - set -e commandline_buffer + if test $status -ne 0; and test -z "$hist_cmd"; and test -z "$fish_private_mode" + #$SHELL -c " + history delete --exact --case-sensitive -- $argv[1] + #" & end end From d63d0326fafd653318f7e06187cc86912294bf73 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 27 May 2024 15:20:56 +0200 Subject: [PATCH 119/562] Add `--no-edit` to `gam` abbrev --- users/jalr/modules/git.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/users/jalr/modules/git.nix b/users/jalr/modules/git.nix index 2ff8657..88bf208 100644 --- a/users/jalr/modules/git.nix +++ b/users/jalr/modules/git.nix @@ -23,7 +23,7 @@ fish = { shellAbbrs = { ga = "git add"; - gam = "git commit --amend"; + gam = "git commit --amend --no-edit"; gap = "git add --patch"; gb = "git branch"; gbd = "git branch --delete"; From 0ff22fbfb5ea14c2155a4ac71c8aca82c8473e5e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 27 May 2024 15:21:20 +0200 Subject: [PATCH 120/562] Add `--rebase` to `gpll` abbrev --- users/jalr/modules/git.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/users/jalr/modules/git.nix b/users/jalr/modules/git.nix index 88bf208..4b55de3 100644 --- a/users/jalr/modules/git.nix +++ b/users/jalr/modules/git.nix @@ -38,7 +38,7 @@ gf = "git fetch"; ginit = "git init"; gl = "git log"; - gpll = "git pull"; + gpll = "git pull --rebase"; gpsh = "git push"; grb = "git rebase --autostash"; grbi = "git rebase --autostash --interactive --autosquash refs/remotes/origin/HEAD"; From 54a368a411297edb3bb68bd1bbbbd53312d096ed Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 27 May 2024 18:20:54 +0200 Subject: [PATCH 121/562] Fix typo --- pkgs/tabbed-box-maker/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tabbed-box-maker/default.nix b/pkgs/tabbed-box-maker/default.nix index d30e534..dee949e 100644 --- a/pkgs/tabbed-box-maker/default.nix +++ b/pkgs/tabbed-box-maker/default.nix @@ -14,7 +14,7 @@ stdenvNoCC.mkDerivation { sha256 = "8TNNVMSwbvcEwkvMHecHtGLEpiX3F0g0EGsgO1YKBGQ="; }; - dontBild = true; + dontBuild = true; installPhase = '' mkdir $out cp * $out From ca1ec6b16cc0e12b982d170459938f294560eb13 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 01:25:13 +0200 Subject: [PATCH 122/562] Rename sieve option The option `services.dovecot2.sieveScripts` has been renamed to `services.dovecot2.sieve.scripts` --- modules/mailserver/dovecot.nix | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/modules/mailserver/dovecot.nix b/modules/mailserver/dovecot.nix index 353474d..62193db 100644 --- a/modules/mailserver/dovecot.nix +++ b/modules/mailserver/dovecot.nix @@ -33,14 +33,16 @@ lib.mkIf cfg.enable { Spam = { specialUse = "Junk"; auto = "subscribe"; }; }; - sieveScripts = { - before = pkgs.writeText "spam.sieve" '' - require "fileinto"; + sieve = { + scripts = { + before = pkgs.writeText "spam.sieve" '' + require "fileinto"; - if header :is "X-Spam" "Yes" { - fileinto "Spam"; - } - ''; + if header :is "X-Spam" "Yes" { + fileinto "Spam"; + } + ''; + }; }; extraConfig = '' From c4e80d0d913d92c51f4b8a2f0789919eb602ea40 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 12:38:47 +0200 Subject: [PATCH 123/562] Fix sieve configuration after update to 24.05 --- modules/mailserver/dovecot.nix | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/mailserver/dovecot.nix b/modules/mailserver/dovecot.nix index 62193db..dea0bc5 100644 --- a/modules/mailserver/dovecot.nix +++ b/modules/mailserver/dovecot.nix @@ -34,6 +34,14 @@ lib.mkIf cfg.enable { }; sieve = { + globalExtensions = [ + "fileinto" + "vnd.dovecot.pipe" + ]; + plugins = [ + "sieve_imapsieve" + "sieve_extprograms" + ]; scripts = { before = pkgs.writeText "spam.sieve" '' require "fileinto"; @@ -102,8 +110,6 @@ lib.mkIf cfg.enable { lda_mailbox_autocreate = yes plugin { - sieve_plugins = sieve_imapsieve sieve_extprograms - ${lib.optionalString cfg.spam.enable '' imapsieve_mailbox1_name = Spam imapsieve_mailbox1_causes = COPY @@ -115,8 +121,6 @@ lib.mkIf cfg.enable { imapsieve_mailbox2_before = file:/var/lib/dovecot/sieve/learn-ham.sieve sieve_pipe_bin_dir = ${pkgs.symlinkJoin { name = "sieve-pipe-bin-dir"; paths = with pkgs; [ rspamd ]; } }/bin ''} - - sieve_global_extensions = +vnd.dovecot.pipe } ''; }; From 5003a40a977380002e33eb8288317caedd3ddc38 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 01:27:20 +0200 Subject: [PATCH 124/562] Fix app_service_config and RuntimeDirectory As the nixos module now already sets a RuntimeDirectory, I had to move stuff around and use some `lib.mkForce`. --- modules/matrix/synapse.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/matrix/synapse.nix b/modules/matrix/synapse.nix index 11eed82..d29c4d4 100644 --- a/modules/matrix/synapse.nix +++ b/modules/matrix/synapse.nix @@ -90,14 +90,18 @@ lib.mkIf cfg.enable { ) cfg.synapse.app_service_config; serviceConfig = { - RuntimeDirectory = "matrix-synapse/app_service_config"; + RuntimeDirectory = lib.mkForce [ + "matrix-synapse" + "matrix-synapse/app_service_config" + ]; + RuntimeDirectoryPreserve = lib.mkForce false; ExecStartPre = lib.attrsets.mapAttrsToList (name: value: let script = pkgs.writeShellScript "app_service_config-${name}" '' - cp "${value}" "$RUNTIME_DIRECTORY/${name}.yaml" - chown matrix-synapse: "$RUNTIME_DIRECTORY/${name}.yaml" + cp "${value}" "/run/matrix-synapse/app_service_config/${name}.yaml" + chown matrix-synapse: "/run/matrix-synapse/app_service_config/${name}.yaml" ''; in "+${script}" From c8a5c0d0248ce3524cdfdbab492c6b8b29a0a355 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 11:10:24 +0200 Subject: [PATCH 125/562] Remove Claws Mail --- users/jalr/modules/claws-mail.nix | 6 ------ users/jalr/modules/default.nix | 1 - 2 files changed, 7 deletions(-) delete mode 100644 users/jalr/modules/claws-mail.nix diff --git a/users/jalr/modules/claws-mail.nix b/users/jalr/modules/claws-mail.nix deleted file mode 100644 index ff32d39..0000000 --- a/users/jalr/modules/claws-mail.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ nixosConfig, lib, pkgs, ... }: -lib.mkIf nixosConfig.jalr.gui.enable { - home.packages = with pkgs; [ - claws-mail - ]; -} diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 04a40c0..9207861 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -5,7 +5,6 @@ ./3d-printing.nix ./alacritty.nix ./aws.nix - ./claws-mail.nix ./cli.nix ./communication ./direnv.nix From 9fe1fbe3078532f40904e3876b49a9a607f0d840 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 12:28:36 +0200 Subject: [PATCH 126/562] Fix indentation --- justfile | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/justfile b/justfile index 8d0ac78..a1cfcd2 100644 --- a/justfile +++ b/justfile @@ -1,24 +1,24 @@ boot: - nixos-rebuild boot --flake . --use-remote-sudo - which fwupdmgr >/dev/null 2>&1 && fwupdmgr update || true + nixos-rebuild boot --flake . --use-remote-sudo + which fwupdmgr >/dev/null 2>&1 && fwupdmgr update || true switch: - nixos-rebuild switch --flake . --use-remote-sudo - which fwupdmgr >/dev/null 2>&1 && fwupdmgr update || true + nixos-rebuild switch --flake . --use-remote-sudo + which fwupdmgr >/dev/null 2>&1 && fwupdmgr update || true build: - nixos-rebuild build --flake . + nixos-rebuild build --flake . update: - nix flake update --commit-lock-file - which fwupdmgr >/dev/null 2>&1 && fwupdmgr refresh || true + nix flake update --commit-lock-file + which fwupdmgr >/dev/null 2>&1 && fwupdmgr refresh || true repl: - nix repl --expr "\ - let \ - flake = builtins.getFlake \"$(git rev-parse --show-toplevel)\"; in \ - flake // { \ - lib = flake.inputs.nixpkgs.lib; \ - pkgs = flake.inputs.nixpkgs.legacyPackages."\${builtins.currentSystem}"; \ - } \ - " + nix repl --expr "\ + let \ + flake = builtins.getFlake \"$(git rev-parse --show-toplevel)\"; in \ + flake // { \ + lib = flake.inputs.nixpkgs.lib; \ + pkgs = flake.inputs.nixpkgs.legacyPackages."\${builtins.currentSystem}"; \ + } \ + " From dc0c5a86db6d6a7878faaedbb6498e907870b1d1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 12:33:06 +0200 Subject: [PATCH 127/562] Add `luks-pass` command --- justfile | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/justfile b/justfile index a1cfcd2..b8d309c 100644 --- a/justfile +++ b/justfile @@ -1,3 +1,5 @@ +usb_ram_disk := "/dev/disk/by-id/usb-jalr_RAM_Mass_Storage_DE6270431F6F342C-0:0" + boot: nixos-rebuild boot --flake . --use-remote-sudo which fwupdmgr >/dev/null 2>&1 && fwupdmgr update || true @@ -22,3 +24,11 @@ repl: pkgs = flake.inputs.nixpkgs.legacyPackages."\${builtins.currentSystem}"; \ } \ " + +luks-pass host: + @if [ -b "{{usb_ram_disk}}" ]; then \ + gpg -d hosts/{{host}}/luks-passfile.gpg | sudo dd of={{usb_ram_disk}}; \ + else \ + echo "{{usb_ram_disk}} is not a block device" >&2; \ + fi + From 083980d619c11dc5655f36a2b633de4b56bef20c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 19:51:39 +0200 Subject: [PATCH 128/562] Add useful nix settings --- modules/nix.nix | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/modules/nix.nix b/modules/nix.nix index 65beaa3..c6910ea 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -2,11 +2,6 @@ { nix = { - package = pkgs.nixFlakes; - extraOptions = '' - experimental-features = nix-command flakes - ''; - daemonCPUSchedPolicy = "idle"; daemonIOSchedClass = "idle"; daemonIOSchedPriority = 7; @@ -16,12 +11,25 @@ ]; settings = { + experimental-features = [ + "nix-command" + "flakes" + "repl-flake" + ]; trusted-users = [ "@wheel" ]; auto-optimise-store = true; allowed-users = [ "@wheel" ]; + + log-lines = lib.mkDefault 25; + + # Avoid disk full issues + max-free = lib.mkDefault (3000 * 1024 * 1024); + min-free = lib.mkDefault (512 * 1024 * 10); }; }; + systemd.services.nix-daemon.serviceConfig.OOMScoreAdjust = 250; + nixpkgs.overlays = with inputs; [ self.overlays.default (final: prev: { From b9cee6c8b7254bc64d1f528aeac9722f938c1486 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 19:57:19 +0200 Subject: [PATCH 129/562] Harden OpenSSH service --- modules/sshd.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/sshd.nix b/modules/sshd.nix index 3ad95f3..655fd7f 100644 --- a/modules/sshd.nix +++ b/modules/sshd.nix @@ -1,6 +1,20 @@ { services.openssh = { enable = true; - settings.PasswordAuthentication = false; + settings = { + KbdInteractiveAuthentication = false; + # Use key exchange algorithms recommended by `nixpkgs#ssh-audit` + KexAlgorithms = [ + "curve25519-sha256" + "curve25519-sha256@libssh.org" + "diffie-hellman-group16-sha512" + "diffie-hellman-group18-sha512" + "sntrup761x25519-sha512@openssh.com" + ]; + PasswordAuthentication = false; + StreamLocalBindUnlink = true; # unbind gnupg sockets if they exists + UseDns = false; + X11Forwarding = false; + }; }; } From 8d0d6980c11990014b79ee9c088ad0a78ebad5d2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 20:21:24 +0200 Subject: [PATCH 130/562] Add jalr's ssh keys to root's authorized keys --- users/jalr/default.nix | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/users/jalr/default.nix b/users/jalr/default.nix index 180bb00..ae1253d 100644 --- a/users/jalr/default.nix +++ b/users/jalr/default.nix @@ -1,5 +1,10 @@ { config, pkgs, ... }: +let + sshKeys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH3l+Yixrsjhze20CSjvUK4Qj/BNqbTNitgk20vuzPej cardno:25_750_479" + ]; +in { users.users.jalr = { isNormalUser = true; @@ -17,11 +22,11 @@ "wireshark" ]; # Enable ‘sudo’ for the user. shell = pkgs.fish; - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH3l+Yixrsjhze20CSjvUK4Qj/BNqbTNitgk20vuzPej cardno:25_750_479" - ]; + openssh.authorizedKeys.keys = sshKeys; }; + users.users.root.openssh.authorizedKeys.keys = sshKeys; + home-manager = { useUserPackages = true; useGlobalPkgs = true; From a2c01c0fdadcc88559b7c0dea9f73489e26a25fe Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 20:22:26 +0200 Subject: [PATCH 131/562] Allow only system-level authorized_keys --- modules/sshd.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/sshd.nix b/modules/sshd.nix index 655fd7f..b521e9b 100644 --- a/modules/sshd.nix +++ b/modules/sshd.nix @@ -1,3 +1,7 @@ +{ lib +, ... +}: + { services.openssh = { enable = true; @@ -16,5 +20,6 @@ UseDns = false; X11Forwarding = false; }; + authorizedKeysFiles = lib.mkForce [ "/etc/ssh/authorized_keys.d/%u" ]; }; } From 1b9d7745f4af604225f3ab831ba1c2a6f424eed5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 20:28:15 +0200 Subject: [PATCH 132/562] Add upgrade-diff --- modules/default.nix | 1 + modules/upgrade-diff.nix | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 modules/upgrade-diff.nix diff --git a/modules/default.nix b/modules/default.nix index e5fc8af..dbb9ab1 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -49,6 +49,7 @@ ./udmx.nix ./uefi.nix ./unfree.nix + ./upgrade-diff.nix ./wireshark.nix ./yubikey-gpg.nix ]; diff --git a/modules/upgrade-diff.nix b/modules/upgrade-diff.nix new file mode 100644 index 0000000..ccdbe4c --- /dev/null +++ b/modules/upgrade-diff.nix @@ -0,0 +1,14 @@ +# MIT Jörg Thalheim - https://github.com/Mic92/dotfiles/blob/c6cad4e57016945c4816c8ec6f0a94daaa0c3203/nixos/modules/upgrade-diff.nix +{ config, pkgs, ... }: +{ + system.activationScripts.diff = { + supportsDryActivation = true; + text = '' + if [[ -e /run/current-system ]]; then + echo "--- diff to current-system" + ${pkgs.nvd}/bin/nvd --nix-bin-dir=${config.nix.package}/bin diff /run/current-system "$systemConfig" + echo "---" + fi + ''; + }; +} From 24e315729cba69fd25d56ede77a4c8734ded7f10 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 21:13:47 +0200 Subject: [PATCH 133/562] Add htop config --- users/jalr/modules/cli.nix | 23 ----------------------- users/jalr/modules/cli/default.nix | 28 ++++++++++++++++++++++++++++ users/jalr/modules/cli/htop.nix | 25 +++++++++++++++++++++++++ users/jalr/modules/default.nix | 2 +- 4 files changed, 54 insertions(+), 24 deletions(-) delete mode 100644 users/jalr/modules/cli.nix create mode 100644 users/jalr/modules/cli/default.nix create mode 100644 users/jalr/modules/cli/htop.nix diff --git a/users/jalr/modules/cli.nix b/users/jalr/modules/cli.nix deleted file mode 100644 index f07297b..0000000 --- a/users/jalr/modules/cli.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ nixosConfig, lib, pkgs, ... }: -{ - home.packages = with pkgs; [ - cached-nix-shell - eza - file - htop - inetutils - jq - lsof - ncdu - ripgrep - unzip - ] ++ (if ! nixosConfig.jalr.workstation.enable then [ ] else [ - direnv - dnsutils - screen - speedtest-cli - usbutils - wget - yt-dlp - ]); -} diff --git a/users/jalr/modules/cli/default.nix b/users/jalr/modules/cli/default.nix new file mode 100644 index 0000000..caae5d3 --- /dev/null +++ b/users/jalr/modules/cli/default.nix @@ -0,0 +1,28 @@ +{ nixosConfig, lib, pkgs, ... }: +{ + imports = [ + ./htop.nix + ]; + + config = { + home.packages = with pkgs; [ + cached-nix-shell + eza + file + inetutils + jq + lsof + ncdu + ripgrep + unzip + ] ++ (if ! nixosConfig.jalr.workstation.enable then [ ] else [ + direnv + dnsutils + screen + speedtest-cli + usbutils + wget + yt-dlp + ]); + }; +} diff --git a/users/jalr/modules/cli/htop.nix b/users/jalr/modules/cli/htop.nix new file mode 100644 index 0000000..86dbf6c --- /dev/null +++ b/users/jalr/modules/cli/htop.nix @@ -0,0 +1,25 @@ +{ nixosConfig +, config +, lib +, ... +}: + +{ + programs.htop = { + enable = true; + settings = { + color_scheme = 6; + } // (with config.lib.htop; leftMeters ([ + (bar "LeftCPUs") + (bar "Memory") + ] ++ lib.lists.optional nixosConfig.zramSwap.enable (bar "Zram") ++ [ + ] ++ lib.lists.optional (!(nixosConfig.swapDevices == [ ])) (bar "Swap") ++ [ + (bar "DiskIO") + ])) // (with config.lib.htop; rightMeters [ + (bar "RightCPUs") + (text "Tasks") + (text "LoadAverage") + (text "NetworkIO") + ]); + }; +} diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 9207861..6775d19 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -5,7 +5,7 @@ ./3d-printing.nix ./alacritty.nix ./aws.nix - ./cli.nix + ./cli ./communication ./direnv.nix ./dynamic-colors.nix From 4279d367469786f6f62727aef5806a3fe247e957 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 22:27:38 +0200 Subject: [PATCH 134/562] Update theme-agnoster --- users/jalr/modules/fish.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index e2cbf76..ebcebac 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -11,8 +11,8 @@ src = pkgs.fetchFromGitHub { owner = "oh-my-fish"; repo = "theme-agnoster"; - rev = "c142e802983bd1b34b4d91efac2126fc5913126d"; - sha256 = "0PLx626BWoBp/L6wgkB4o+53q8PymiEE/rTu2mfzHhg="; + rev = "4c5518c89ebcef393ef154c9f576a52651400d27"; + sha256 = "OFESuesnfqhXM0aij+79kdxjp4xgCt28YwTrcwQhFMU="; fetchSubmodules = true; }; } From 72757468f5da08a80f8fa49cae9c5d3e9ba23fc6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 22:29:46 +0200 Subject: [PATCH 135/562] Move functions to attrset --- users/jalr/modules/fish.nix | 50 +++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index ebcebac..55ac57a 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -88,31 +88,42 @@ complete -c g -w grep end - function jqless -d 'jq -C [args] | less -R' - jq -C $argv | less -R - end # NixOS direnv if which direnv > /dev/null eval (direnv hook fish) end - function __cut_commandline -d 'cut commandline and paste it later' + bind \ed 'dirh-fzf' + + ''; + + functions = { + jqless = { + body = '' + jq -C $argv | less -R + ''; + }; + __cut_commandline = { + description = "cut commandline and paste it later"; + body = '' set -g commandline_buffer (commandline) commandline "" - end - - - - function __postexec --on-event fish_postexec + ''; + }; + __postexec = { + onEvent = "fish_postexec"; + body = '' if test $status -ne 0; and test -z "$hist_cmd"; and test -z "$fish_private_mode" #$SHELL -c " history delete --exact --case-sensitive -- $argv[1] #" & end - end - - function dirh-nocolor --description "Print the current directory history (the prev and next lists)" + ''; + }; + dirh-nocolor = { + description = "Print the current directory history (the prev and next lists)"; + body = '' set -l options h/help argparse -n dirh --max-args=0 $options -- $argv or return @@ -141,14 +152,15 @@ printf '%s\n' $dirnext_rev[$i] end end - end - - function dirh-fzf -d 'directory history fuzzy finder' + ''; + }; + dirh-fzf = { + description = "directory history fuzzy finder"; + body = '' builtin cd (dirh-nocolor | uniq | fzf) - end - - bind \ed 'dirh-fzf' - ''; + ''; + }; + }; }; xdg.configFile."fish/completions/mycli.fish".text = '' From 47d02301b7b7b9b44107956c31ac21ca71d4895b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 22:35:18 +0200 Subject: [PATCH 136/562] Fix autosuggestion color --- users/jalr/modules/fish.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index 55ac57a..654b52a 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -96,6 +96,8 @@ bind \ed 'dirh-fzf' + # fix too dark color on solarized theme + set -g fish_color_autosuggestion brgreen ''; functions = { From e98e0184246617c9858d421c8c9129879caad659 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 22:44:23 +0200 Subject: [PATCH 137/562] Use abbr instead of aliases --- users/jalr/modules/fish.nix | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index 654b52a..70d1c74 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -65,26 +65,26 @@ # fancy tools if which eza > /dev/null 2>&1 - alias l=eza - alias ll='eza -l --time-style=long-iso --git' - alias la='eza -la --time-style=long-iso --git' - alias tree='eza --tree' - alias llt='eza -s modified -l' + abbr --add l eza + abbr --add ll 'eza -l --time-style=long-iso --git' + abbr --add la 'eza -la --time-style=long-iso --git' + abbr --add tree 'eza --tree' + abbr --add llt 'eza -s modified -l' else - alias l=ls - alias ll='ls -l' - alias la='ls -la' - alias llt='ls -trl' + abbr --add l ls + abbr --add ll 'ls -l' + abbr --add la 'ls -la' + abbr --add llt 'ls -trl' end if which rg > /dev/null 2>&1 - alias g=rg + abbr --add g rg complete -c g -w rg else if which ag > /dev/null 2>&1 - alias g=ag + abbr --add g ag complete -c g -w ag else - alias g='grep --color=auto' + abbr --add g 'grep --color=auto' complete -c g -w grep end From 782da4e6ac5c9134ff877f1ce039f5b84719440f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 22:44:47 +0200 Subject: [PATCH 138/562] Start in insert mode when editing fish commandline --- users/jalr/modules/neovim.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index 0447001..1c6f2ed 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -44,6 +44,7 @@ augroup END autocmd BufRead COMMIT_EDITMSG startinsert + autocmd BufRead /tmp/tmp.*.fish startinsert let g:deoplete#enable_at_startup = 1 From 14a865275ab3f0f59aae7062b74f4ca2a5c4a8a7 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 22:48:48 +0200 Subject: [PATCH 139/562] Use option to configure diff-so-fancy --- users/jalr/modules/git.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/users/jalr/modules/git.nix b/users/jalr/modules/git.nix index 4b55de3..d6acd8b 100644 --- a/users/jalr/modules/git.nix +++ b/users/jalr/modules/git.nix @@ -10,9 +10,11 @@ key = "3044E71E3DEFF49B586CF5809BF4FCCB90854DA9"; signByDefault = false; }; + diff-so-fancy = { + enable = true; + }; extraConfig = { init.defaultBranch = "main"; - core.pager = "${pkgs.diff-so-fancy}/bin/diff-so-fancy | less --tabs=4 -RFX"; diff.sops.textconv = "${pkgs.sops}/bin/sops -d"; pull.ff = "only"; alias.find-merge = "!sh -c 'commit=$0 && branch=\${1:-HEAD} && (git rev-list $commit..$branch --ancestry-path | cat -n; git rev-list $commit..$branch --first-parent | cat -n) | sort -k2 -s | uniq -f1 -d | sort -n | tail -1 | cut -f2'"; From 8ff961418e9ec3b1e8eb118f8148cfdc96f62a6b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 May 2024 23:19:34 +0200 Subject: [PATCH 140/562] Move nix-index --- users/jalr/modules/default.nix | 3 +-- users/jalr/modules/nix-index.nix | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 users/jalr/modules/nix-index.nix diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 6775d19..e656fa4 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -22,6 +22,7 @@ ./mute-indicator.nix ./neo.nix ./neovim.nix + ./nix-index.nix ./obs-studio ./openscad.nix ./pass.nix @@ -35,6 +36,4 @@ ./tor-browser.nix ./vdirsyncer.nix ]; - - programs.nix-index.enable = true; } diff --git a/users/jalr/modules/nix-index.nix b/users/jalr/modules/nix-index.nix new file mode 100644 index 0000000..c753a5e --- /dev/null +++ b/users/jalr/modules/nix-index.nix @@ -0,0 +1,5 @@ +{ + programs.nix-index = { + enable = true; + }; +} From 7f8967d44e3ee01414d25c3065f2ea37aa4ee81e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 29 May 2024 01:55:47 +0200 Subject: [PATCH 141/562] Add networking module --- modules/default.nix | 2 +- modules/networking/default.nix | 11 +++++++++++ modules/{ => networking}/network-manager.nix | 0 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 modules/networking/default.nix rename modules/{ => networking}/network-manager.nix (100%) diff --git a/modules/default.nix b/modules/default.nix index dbb9ab1..03326b4 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -33,7 +33,7 @@ ./mailserver ./matrix ./mute-indicator.nix - ./network-manager.nix + ./networking ./nix.nix ./obs.nix ./pipewire.nix diff --git a/modules/networking/default.nix b/modules/networking/default.nix new file mode 100644 index 0000000..98c88ed --- /dev/null +++ b/modules/networking/default.nix @@ -0,0 +1,11 @@ +{ lib +, ... +}: + +{ + imports = [ + ./network-manager.nix + ]; + + networking.firewall.logRefusedConnections = lib.mkDefault false; +} diff --git a/modules/network-manager.nix b/modules/networking/network-manager.nix similarity index 100% rename from modules/network-manager.nix rename to modules/networking/network-manager.nix From d8d05806dd9ceaceee99675f9cd6330d8567278c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 29 May 2024 21:59:26 +0200 Subject: [PATCH 142/562] Use dnscrypt-proxy2 as resolver --- modules/default.nix | 3 +-- modules/{dnsmasq.nix => dns.nix} | 19 ++++++++++++++++++- modules/tor.nix | 17 ----------------- 3 files changed, 19 insertions(+), 20 deletions(-) rename modules/{dnsmasq.nix => dns.nix} (52%) delete mode 100644 modules/tor.nix diff --git a/modules/default.nix b/modules/default.nix index 03326b4..e48b296 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -21,7 +21,7 @@ ./bluetooth.nix ./bootloader ./dji-goggles.nix - ./dnsmasq.nix + ./dns.nix ./fish.nix ./fonts.nix ./gnome.nix @@ -45,7 +45,6 @@ ./sshd.nix ./sudo.nix ./sway.nix - ./tor.nix ./udmx.nix ./uefi.nix ./unfree.nix diff --git a/modules/dnsmasq.nix b/modules/dns.nix similarity index 52% rename from modules/dnsmasq.nix rename to modules/dns.nix index e33f50b..20d1feb 100644 --- a/modules/dnsmasq.nix +++ b/modules/dns.nix @@ -1,7 +1,24 @@ { lib, config, ... }: +let + dnscryptListenAddress = "127.0.0.1"; + dnscryptListenPort = 9053; +in { config = lib.mkIf config.jalr.workstation.enable { + services.dnscrypt-proxy2 = { + enable = true; + settings = { + ipv6_servers = true; + require_dnssec = true; + require_nolog = true; + require_nofilter = true; + dnscrypt_ephemeral_keys = true; + tls_disable_session_tickets = true; + listen_addresses = [ "${dnscryptListenAddress}:${toString dnscryptListenPort}" ]; + anonymized_dns.skip_incompatible = true; + }; + }; services.dnsmasq = { enable = true; resolveLocalQueries = true; @@ -12,7 +29,7 @@ "/lan.bw.jalr.de/192.168.42.1" "/lechner.zz/192.168.0.1" "/login.wifionice.de/172.18.0.1" - "127.0.0.1#9053" + "${dnscryptListenAddress}#${toString dnscryptListenPort}" ]; no-resolv = true; interface = "lo"; diff --git a/modules/tor.nix b/modules/tor.nix deleted file mode 100644 index c33b3c5..0000000 --- a/modules/tor.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ lib, config, ... }: - -{ - config = lib.mkIf config.jalr.workstation.enable { - services.tor = { - enable = true; - settings = { - DNSPort = 9053; - AutomapHostsOnResolve = true; - AutomapHostsSuffixes = [ - ".exit" - ".onion" - ]; - }; - }; - }; -} From 6b387c7738cd733db8e9ee1fdc9025cc06576026 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 29 May 2024 22:03:43 +0200 Subject: [PATCH 143/562] Change formatting --- users/jalr/modules/firefox/default.nix | 185 +++++++++++++------------ 1 file changed, 93 insertions(+), 92 deletions(-) diff --git a/users/jalr/modules/firefox/default.nix b/users/jalr/modules/firefox/default.nix index a2d4992..74caabe 100644 --- a/users/jalr/modules/firefox/default.nix +++ b/users/jalr/modules/firefox/default.nix @@ -3,101 +3,102 @@ programs.firefox = { enable = nixosConfig.jalr.gui.enable; package = pkgs.firefox-esr; - profiles = { - default = { - extensions = with pkgs.nur.repos.rycee.firefox-addons; [ - darkreader - tree-style-tab - ublock-origin - umatrix - violentmonkey - ]; - settings = { - #"browser.startup.homepage" = "https://nixos.org"; - #"browser.search.region" = "GB"; - #"browser.search.isUS" = false; - #"distribution.searchplugins.defaultLocale" = "en-GB"; - #"general.useragent.locale" = "en-GB"; - #"browser.bookmarks.showMobileBookmarks" = true; - "app.normandy.enabled" = false; - "app.shield.optoutstudies.enabled" = false; - "app.update.auto" = false; - "browser.ctrlTab.sortByRecentlyUsed" = true; - "browser.fixup.alternate.enabled" = false; - "browser.formfill.enable" = false; - "browser.link.open_newwindow.restriction" = 0; - "browser.newtabpage.enabled" = false; - "browser.ping-centre.telemetry" = false; - "browser.safebrowsing.downloads.enabled" = false; - "browser.safebrowsing.downloads.remote.block_dangerous" = false; - "browser.safebrowsing.downloads.remote.block_dangerous_host" = false; - "browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false; - "browser.safebrowsing.downloads.remote.block_uncommon" = false; - "browser.safebrowsing.downloads.remote.enabled" = false; - "browser.safebrowsing.downloads.remote.url" = ""; - "browser.safebrowsing.malware.enabled" = false; - "browser.safebrowsing.phishing.enabled" = false; - "browser.safebrowsing.provider.google.advisoryURL" = ""; - "browser.safebrowsing.provider.google.gethashURL" = ""; - "browser.safebrowsing.provider.google.lists" = ""; - "browser.safebrowsing.provider.google.reportMalwareMistakeURL" = ""; - "browser.safebrowsing.provider.google.reportPhishMistakeURL" = ""; - "browser.safebrowsing.provider.google.reportURL" = ""; - "browser.safebrowsing.provider.google.updateURL" = ""; - "browser.safebrowsing.provider.google4.advisoryURL" = ""; - "browser.safebrowsing.provider.google4.dataSharingURL" = ""; - "browser.safebrowsing.provider.google4.gethashURL" = ""; - "browser.safebrowsing.provider.google4.lists" = ""; - "browser.safebrowsing.provider.google4.reportMalwareMistakeURL" = ""; - "browser.safebrowsing.provider.google4.reportPhishMistakeURL" = ""; - "browser.safebrowsing.provider.google4.reportURL" = ""; - "browser.safebrowsing.provider.google4.updateURL" = ""; - "browser.safebrowsing.provider.mozilla.gethashURL" = ""; - "browser.safebrowsing.provider.mozilla.lists" = ""; - "browser.safebrowsing.provider.mozilla.updateURL" = ""; - "browser.search.suggest.enabled" = false; - "browser.search.widget.inNavBar" = true; - "browser.startup.page" = 0; - "extensions.pocket.enabled" = false; - "extensions.update.enabled" = false; - "identity.fxaccounts.enabled" = false; - "keyword.enabled" = false; - "network.captive-portal-service.enabled" = false; - "network.predictor.enabled" = false; - "privacy.donottrackheader.enabled" = true; - "startup.homepage_welcome_url" = about:blank; - "toolkit.legacyUserProfileCustomizations.stylesheets" = true; - "toolkit.telemetry.archive.enabled" = false; - "toolkit.telemetry.bhrPing.enabled" = false; - "toolkit.telemetry.firstShutdownPing.enabled" = false; - "toolkit.telemetry.newProfilePing.enabled" = false; - "toolkit.telemetry.server" = http://127.0.0.1:4711; - "toolkit.telemetry.server_owner" = ""; - "toolkit.telemetry.shutdownPingSender.enabled" = false; - "toolkit.telemetry.updatePing.enabled" = false; - "urlclassifier.downloadAllowTable" = ""; - "urlclassifier.downloadBlockTable" = ""; - "urlclassifier.malwareTable" = ""; - "urlclassifier.phishTable" = ""; - "datareporting.healthreport.uploadEnabled" = ""; - "app.normandy.api_url" = ""; - "breakpad.reportURL" = ""; - "browser.region.network.url" = ""; - "browser.search.geoSpecificDefaults.url" = ""; - "browser.shell.checkDefaultBrowser" = false; + profiles.default = { + id = 0; + isDefault = true; + extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + darkreader + tree-style-tab + ublock-origin + umatrix + violentmonkey + ]; + settings = { + #"browser.startup.homepage" = "https://nixos.org"; + #"browser.search.region" = "GB"; + #"browser.search.isUS" = false; + #"distribution.searchplugins.defaultLocale" = "en-GB"; + #"general.useragent.locale" = "en-GB"; + #"browser.bookmarks.showMobileBookmarks" = true; + "app.normandy.enabled" = false; + "app.shield.optoutstudies.enabled" = false; + "app.update.auto" = false; + "browser.bookmarks.addedImportButton" = false; + "browser.ctrlTab.sortByRecentlyUsed" = true; + "browser.fixup.alternate.enabled" = false; + "browser.formfill.enable" = false; + "browser.link.open_newwindow.restriction" = 0; + "browser.newtabpage.enabled" = false; + "browser.ping-centre.telemetry" = false; + "browser.safebrowsing.downloads.enabled" = false; + "browser.safebrowsing.downloads.remote.block_dangerous" = false; + "browser.safebrowsing.downloads.remote.block_dangerous_host" = false; + "browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false; + "browser.safebrowsing.downloads.remote.block_uncommon" = false; + "browser.safebrowsing.downloads.remote.enabled" = false; + "browser.safebrowsing.downloads.remote.url" = ""; + "browser.safebrowsing.malware.enabled" = false; + "browser.safebrowsing.phishing.enabled" = false; + "browser.safebrowsing.provider.google.advisoryURL" = ""; + "browser.safebrowsing.provider.google.gethashURL" = ""; + "browser.safebrowsing.provider.google.lists" = ""; + "browser.safebrowsing.provider.google.reportMalwareMistakeURL" = ""; + "browser.safebrowsing.provider.google.reportPhishMistakeURL" = ""; + "browser.safebrowsing.provider.google.reportURL" = ""; + "browser.safebrowsing.provider.google.updateURL" = ""; + "browser.safebrowsing.provider.google4.advisoryURL" = ""; + "browser.safebrowsing.provider.google4.dataSharingURL" = ""; + "browser.safebrowsing.provider.google4.gethashURL" = ""; + "browser.safebrowsing.provider.google4.lists" = ""; + "browser.safebrowsing.provider.google4.reportMalwareMistakeURL" = ""; + "browser.safebrowsing.provider.google4.reportPhishMistakeURL" = ""; + "browser.safebrowsing.provider.google4.reportURL" = ""; + "browser.safebrowsing.provider.google4.updateURL" = ""; + "browser.safebrowsing.provider.mozilla.gethashURL" = ""; + "browser.safebrowsing.provider.mozilla.lists" = ""; + "browser.safebrowsing.provider.mozilla.updateURL" = ""; + "browser.search.suggest.enabled" = false; + "browser.search.widget.inNavBar" = true; + "browser.startup.page" = 0; + "extensions.pocket.enabled" = false; + "extensions.update.enabled" = false; + "identity.fxaccounts.enabled" = false; + "keyword.enabled" = false; + "network.captive-portal-service.enabled" = false; + "network.predictor.enabled" = false; + "privacy.donottrackheader.enabled" = true; + "startup.homepage_welcome_url" = "about:blank"; + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "toolkit.telemetry.archive.enabled" = false; + "toolkit.telemetry.bhrPing.enabled" = false; + "toolkit.telemetry.firstShutdownPing.enabled" = false; + "toolkit.telemetry.newProfilePing.enabled" = false; + "toolkit.telemetry.server" = "http://127.0.0.1:4711"; + "toolkit.telemetry.server_owner" = ""; + "toolkit.telemetry.shutdownPingSender.enabled" = false; + "toolkit.telemetry.updatePing.enabled" = false; + "urlclassifier.downloadAllowTable" = ""; + "urlclassifier.downloadBlockTable" = ""; + "urlclassifier.malwareTable" = ""; + "urlclassifier.phishTable" = ""; + "datareporting.healthreport.uploadEnabled" = ""; + "app.normandy.api_url" = ""; + "breakpad.reportURL" = ""; + "browser.region.network.url" = ""; + "browser.search.geoSpecificDefaults.url" = ""; + "browser.shell.checkDefaultBrowser" = false; - "privacy.userContext.enabled" = true; - "privacy.userContext.ui.enabled" = true; - "network.dnsCacheExpiration" = 0; - - # disable disk cache to reduce ssd writes - "browser.cache.disk.enable" = false; - "browser.cache.memory.enable" = true; - "browser.cache.memory.capacity" = -1; - }; - userChrome = builtins.readFile ./userChrome.css; + "privacy.userContext.enabled" = true; + "privacy.userContext.ui.enabled" = true; + "network.dnsCacheExpiration" = 0; + # disable disk cache to reduce ssd writes + "browser.cache.disk.enable" = false; + "browser.cache.memory.enable" = true; + "browser.cache.memory.capacity" = -1; }; + + userChrome = builtins.readFile ./userChrome.css; }; }; } From d63b718b229e5d35c524f86b12879c0b76d638ca Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 29 May 2024 22:06:05 +0200 Subject: [PATCH 144/562] Add policies --- users/jalr/modules/firefox/default.nix | 260 +++++++++++++++++++++++++ 1 file changed, 260 insertions(+) diff --git a/users/jalr/modules/firefox/default.nix b/users/jalr/modules/firefox/default.nix index 74caabe..d82c31f 100644 --- a/users/jalr/modules/firefox/default.nix +++ b/users/jalr/modules/firefox/default.nix @@ -3,6 +3,266 @@ programs.firefox = { enable = nixosConfig.jalr.gui.enable; package = pkgs.firefox-esr; + policies = { + AllowedDomainsForApps = ""; + CaptivePortal = false; + DNSOverHTTPS.Enabled = false; + DisableAppUpdate = true; + DisableFeedbackCommands = true; + DisableFirefoxAccounts = true; + DisableFirefoxScreenshots = true; + DisableFirefoxStudies = true; + DisablePocket = true; + DisableTelemetry = true; + DisplayBookmarksToolbar = "newtab"; + DisplayMenuBar = "never"; + EncryptedMediaExtensions = { Enabled = false; Locked = true; }; + NoDefaultBookmarks = true; + OfferToSaveLogins = false; + StartDownloadsInTempDirectory = true; + UserMessaging = { + WhatsNew = false; + ExtensionRecommendations = false; + FeatureRecommendations = false; + UrlbarInterventions = false; + SkipOnboarding = true; + MoreFromMozilla = false; + Locked = false; + }; + Permissions = { + Camera = { + /* + Allow = ["https://example.org" "https://example.org:1234"]; + Block = ["https://example.edu"]; + BlockNewRequests = true | false; + Locked = true | false; + */ + }; + Microphone = { }; + Location = { }; + Notifications = { }; + Autoplay = { }; + }; + PopupBlocking = { + /* Allow = ["http://example.org/" "http://example.edu/"]; */ + Default = false; + Locked = false; + }; + Bookmarks = ( + builtins.map + (b: b // { + Folder = "Nix"; + Placement = "toolbar"; + }) [ + { + Title = "NixOS Manual"; + URL = "https://nixos.org/manual/nixos/stable/"; + } + { + Title = "Nix manual"; + URL = "https://nix.dev/manual/nix/2.18/stable"; + } + { + Title = "Nixpkgs manual"; + URL = "https://nixos.org/manual/nixpkgs/stable/"; + } + { + Title = "Noogle"; + URL = "https://noogle.dev/"; + } + { + Title = "Home Manager Configuration Options"; + URL = "https://nix-community.github.io/home-manager/options.xhtml"; + } + { + Title = "Home Manager Option Search"; + URL = "https://mipmip.github.io/home-manager-option-search/"; + } + { + Title = "NixOS Status"; + URL = "https://status.nixos.org/"; + } + { + Title = "krops"; + URL = "https://cgit.krebsco.de/krops/about/"; + } + { + Title = "Awesome Nix"; + URL = "https://github.com/nix-community/awesome-nix"; + } + ] + ) ++ ( + builtins.map + (b: b // { + Folder = "Digitaler Dienst"; + Placement = "toolbar"; + }) [ + { + Title = "GitLab"; + URL = "https://gitlab.digitaler-dienst.net/"; + } + { + Title = "Moco"; + URL = "https://digitaler-dienst.mocoapp.com/activities"; + } + { + Title = "Leantime"; + URL = "https://todo.digitaler-dienst.gmbh/"; + } + { + Title = "Nextcloud"; + URL = "https://nx52865.your-storageshare.de/"; + } + { + Title = "FreeScout"; + URL = "https://tickets.digitaler-dienst.gmbh/"; + } + { + Title = "Personio"; + URL = "https://laemmermann.personio.de/"; + } + ] + ) ++ [ + { + Title = "Fefes Blog"; + URL = "https://blog.fefe.de"; + Placement = "toolbar"; + #Placement = "menu"; + #Favicon = "https://example.com/favicon.ico"; + } + ]; + /* + ManagedBookmarks = [ + { + toplevel_name = "My managed bookmarks folder"; + } + { + url = "example.com"; + name = "Example"; + } + { + name = "Mozilla links"; + children = [ + { + url = "https://mozilla.org"; + name = "Mozilla.org"; + } + { + url = "https://support.mozilla.org/"; + name = "SUMO"; + } + ]; + } + ]; + */ + SearchEngines.Default = "DuckDuckGo"; + SearchEngines.Remove = [ + "Google" + "Wikipedia (en)" + ]; + SearchEngines.Add = [ + { + Name = "Startpage"; + URLTemplate = "https://www.startpage.com/sp/search"; + Method = "POST"; + PostData = "qadf=none&query={searchTerms}"; + IconURL = "https://www.startpage.com/sp/cdn/favicons/mobile/android-icon-192x192.png"; + Alias = "sp"; + } + { + Name = "DuckDuckGo"; + URLTemplate = "https://duckduckgo.com/?q={searchTerms}"; + Method = "GET"; + IconURL = "https://duckduckgo.com/favicon.ico"; + Alias = "ddg"; + } + + # Wikipedia + { + Name = "Wikipedia en"; + URLTemplate = "https://en.wikipedia.org/wiki/Special:Search?search={searchTerms}"; + Method = "GET"; + IconURL = "https://en.wikipedia.org/static/images/icons/wikipedia.png"; + Alias = "wen"; + } + { + Name = "Wikipedia de"; + URLTemplate = "https://de.wikipedia.org/w/index.php?search={searchTerms}"; + Method = "GET"; + IconURL = "https://www.wikipedia.de/img/wikipedia.png"; + Alias = "wde"; + } + { + Name = "Nix Packages"; + URLTemplate = "https://search.nixos.org/packages?query={searchTerms}"; + Method = "GET"; + IconURL = "https://nixos.org/favicon.png"; + Alias = "pkg"; + } + { + Name = "NixOS Options"; + URLTemplate = "https://search.nixos.org/options?query={searchTerms}"; + Method = "GET"; + IconURL = "https://nixos.org/favicon.png"; + Alias = "opt"; + } + { + Name = "Docker images"; + URLTemplate = "https://hub.docker.com/search/?q={searchTerms}"; + Method = "GET"; + IconURL = "https://hub.docker.com/favicon.ico"; + Alias = "docker"; + } + { + Name = "GitHub"; + URLTemplate = "https://github.com/search?q={searchTerms}"; + Method = "GET"; + IconURL = "https://github.githubassets.com/favicons/favicon.svg"; + Alias = "gh"; + } + + # Shopping + { + Name = "Amazon de"; + URLTemplate = "https://www.amazon.de/s?k={searchTerms}"; + Method = "GET"; + IconURL = "https://www.amazon.de/favicon.ico"; + Alias = "amde"; + } + { + Name = "Ebay de"; + URLTemplate = "https://www.ebay.de/sch/i.html?_nkw={searchTerms}"; + Method = "GET"; + IconURL = "https://pages.ebay.com/favicon.ico"; + Alias = "ebde"; + } + + # Dictionary + { + Name = "dict.cc"; + URLTemplate = "https://www.dict.cc/?s={searchTerms}"; + Method = "GET"; + IconURL = "https://www4.dict.cc/img/favicons/favicon4.png"; + Alias = "dcc"; + } + { + Name = "Duden"; + URLTemplate = "https://www.duden.de/suchen/dudenonline/{searchTerms}"; + Method = "GET"; + IconURL = "https://www.duden.de/sites/default/res/apple-touch-icon/180x180.png"; + Alias = "duden"; + } + + # Map + { + Name = "OpenStreetMap"; + URLTemplate = "https://www.openstreetmap.org/search?query={searchTerms}"; + Method = "GET"; + IconURL = "https://www.openstreetmap.org/assets/favicon-194x194-79d3fb0152c735866e64b1d7535d504483cd13c2fad0131a6142bd9629d30de2.png"; + Alias = "osm"; + } + ]; + }; profiles.default = { id = 0; isDefault = true; From ac867b1c7f00b0c603ea9dc76871658f6c84ceec Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 30 May 2024 01:26:08 +0200 Subject: [PATCH 145/562] Add tweaks for loction bar --- users/jalr/modules/firefox/userChrome.css | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/users/jalr/modules/firefox/userChrome.css b/users/jalr/modules/firefox/userChrome.css index dcc6b2b..21743cf 100644 --- a/users/jalr/modules/firefox/userChrome.css +++ b/users/jalr/modules/firefox/userChrome.css @@ -218,4 +218,23 @@ url(chrome://browser/content/browser.xhtml) { } /*** End of: Megabar Styler One-Offs ***/ + + /* Hide "Firefox Suggest" in location bar search results */ + .urlbarView-row[label="Firefox Suggest"]::before { + display: none !important + } + .urlbarView-row[label] { + margin-block-start: 4px !important; + } + + /* Hide search button in location bar */ + #identity-box[pageproxystate=invalid] > .identity-box-button, + .searchbar-search-button { + display: none + } + + /* Hide search placeholder in location bar */ + #urlbar-input::placeholder { + color: transparent; + } } From 5f9c537bbc280061e9d4a84d23da679730243167 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 30 May 2024 01:26:19 +0200 Subject: [PATCH 146/562] Hide back & forward buttons --- users/jalr/modules/firefox/userChrome.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/users/jalr/modules/firefox/userChrome.css b/users/jalr/modules/firefox/userChrome.css index 21743cf..291b8f8 100644 --- a/users/jalr/modules/firefox/userChrome.css +++ b/users/jalr/modules/firefox/userChrome.css @@ -237,4 +237,9 @@ url(chrome://browser/content/browser.xhtml) { #urlbar-input::placeholder { color: transparent; } + + /* Hide back & forward buttons */ + toolbarbutton#back-button { + display: none; + } } From 112283c7b4d12b454454185e4bb8bb718a54ced4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 31 May 2024 15:55:25 +0200 Subject: [PATCH 147/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/4702caff8e201f4c98fe3583637a930d253447c8' (2024-05-20) → 'github:nix-community/gomod2nix/31b6d2e40b36456e792cd6cf50d5a8ddd2fa59a1' (2024-05-30) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/67a8b308bae9c26be660ccceff3e53a65e01afe1' (2024-05-27) → 'github:nixos/nixpkgs/d24e7fdcfaecdca496ddd426cae98c9e2d12dfe8' (2024-05-30) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/4c4f6f1395b1fda7ebe6a9106e68d2098f09441d' (2024-05-28) → 'github:NixOS/nixpkgs/5ceeafa47de0b2e842354147fafc39d567e4cd9c' (2024-05-31) • Updated input 'nur': 'github:nix-community/NUR/731eb0c95af5efa7a8ffb3ca1b5f1a00d8e5db13' (2024-05-28) → 'github:nix-community/NUR/7963300aab117ee31dd5185541ceed009ce3e312' (2024-05-31) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/12599ecaa9ec641c29dc8fd07f8267b23874bf3a' (2024-05-27) → 'github:nix-community/poetry2nix/0a592572706db14e49202892318d3812061340a0' (2024-05-30) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index e7d87bb..8527298 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1716202913, - "narHash": "sha256-zjPNXI4DWBOrPsrK8u/XTsm5Q36quONQvz0jhAKHEeg=", + "lastModified": 1717050755, + "narHash": "sha256-C9IEHABulv2zEDFA+Bf0E1nmfN4y6MIUe5eM2RCrDC0=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "4702caff8e201f4c98fe3583637a930d253447c8", + "rev": "31b6d2e40b36456e792cd6cf50d5a8ddd2fa59a1", "type": "github" }, "original": { @@ -169,11 +169,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1716793392, - "narHash": "sha256-ex3nO87EEQhshXd19QSVW5UIXL0pbPuew4q8TdEJQBY=", + "lastModified": 1717090882, + "narHash": "sha256-Up5tvtY9YlVEyVn9hfZcxFQi5qVhQ5hdVNGPQOUchNw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "67a8b308bae9c26be660ccceff3e53a65e01afe1", + "rev": "d24e7fdcfaecdca496ddd426cae98c9e2d12dfe8", "type": "github" }, "original": { @@ -217,11 +217,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1716887039, - "narHash": "sha256-u9O9RPH7sXFuAeYECdUsNFmcbnyCnoMrQTvqKzmQeCI=", + "lastModified": 1717160210, + "narHash": "sha256-a6o2BB3W0W6t4LExUJbBjZs6O+VN9ld1oH2jOGMrNAI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4c4f6f1395b1fda7ebe6a9106e68d2098f09441d", + "rev": "5ceeafa47de0b2e842354147fafc39d567e4cd9c", "type": "github" }, "original": { @@ -233,11 +233,11 @@ }, "nur": { "locked": { - "lastModified": 1716885908, - "narHash": "sha256-Ij9xCqfSPLJ7UwnOeOf/RzrB2T1QP1AlFyyL+ee4RmU=", + "lastModified": 1717163092, + "narHash": "sha256-M6kObY8gQjx6spj5NxJDBZs8glTo32a2pSu0przux+w=", "owner": "nix-community", "repo": "NUR", - "rev": "731eb0c95af5efa7a8ffb3ca1b5f1a00d8e5db13", + "rev": "7963300aab117ee31dd5185541ceed009ce3e312", "type": "github" }, "original": { @@ -259,11 +259,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1716813403, - "narHash": "sha256-9+G8tEOh3QkjSUV2UMC+TpvzKOR8IUFlkJJTMpVQMkc=", + "lastModified": 1717090555, + "narHash": "sha256-4ajbEBEB8C2x9Dz07ZG5iXDsXuOjntpMmZt+I/tGBFQ=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "12599ecaa9ec641c29dc8fd07f8267b23874bf3a", + "rev": "0a592572706db14e49202892318d3812061340a0", "type": "github" }, "original": { From bb3db55a9c53a3b77178398820f051340615a9ea Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 31 May 2024 15:58:30 +0200 Subject: [PATCH 148/562] Refactor nixos module list --- flake.nix | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/flake.nix b/flake.nix index 51f9a22..85c33f9 100644 --- a/flake.nix +++ b/flake.nix @@ -146,7 +146,6 @@ nixosConfigurations = nixpkgs.lib.mapAttrs (hostname: { system - , extraModules ? [ ] , targetHost ? hostname , nixpkgs ? inputs.nixpkgs }: nixpkgs.lib.nixosSystem rec { @@ -178,13 +177,11 @@ inherit targetHost; }; }) - ] ++ [{ - nixpkgs.overlays = [ nur.overlay ]; - }] ++ [ + ] ++ [ + { nixpkgs.overlays = [ nur.overlay ]; } home-manager.nixosModules.home-manager - ] ++ (with inputs; [ - sops-nix.nixosModules.sops - ]) ++ extraModules; + inputs.sops-nix.nixosModules.sops + ]; }) (import ./hosts inputs); }; From eadff7c906ef3e30c531a4d1bcc2d65a97026013 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 31 May 2024 16:06:46 +0200 Subject: [PATCH 149/562] Add disko --- flake.lock | 21 +++++++++++++++++++++ flake.nix | 8 ++++++++ 2 files changed, 29 insertions(+) diff --git a/flake.lock b/flake.lock index 8527298..f095430 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,25 @@ { "nodes": { + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717097713, + "narHash": "sha256-M0tIapdiiB2piVTDK+aL7AnsjS656AY7l7htKN0dnQM=", + "owner": "nix-community", + "repo": "disko", + "rev": "9d5c673a6611b7bf448dbfb0843c75b9cce9cf1f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -274,6 +294,7 @@ }, "root": { "inputs": { + "disko": "disko", "flake-utils": "flake-utils", "gomod2nix": "gomod2nix", "home-manager": "home-manager", diff --git a/flake.nix b/flake.nix index 85c33f9..b1bdcc5 100644 --- a/flake.nix +++ b/flake.nix @@ -29,6 +29,13 @@ }; }; + disko = { + url = "github:nix-community/disko"; + inputs = { + nixpkgs.follows = "nixpkgs"; + }; + }; + gomod2nix = { url = "github:nix-community/gomod2nix"; inputs = { @@ -181,6 +188,7 @@ { nixpkgs.overlays = [ nur.overlay ]; } home-manager.nixosModules.home-manager inputs.sops-nix.nixosModules.sops + inputs.disko.nixosModules.disko ]; }) (import ./hosts inputs); From 9279c8016786b9f9675c76972f73c39b40e6935a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 31 May 2024 16:29:50 +0200 Subject: [PATCH 150/562] Add declarative disk configuration --- hosts/copper/configuration.nix | 1 + hosts/copper/disko.nix | 56 +++++++++++++++++++++++++ hosts/copper/hardware-configuration.nix | 29 ------------- 3 files changed, 57 insertions(+), 29 deletions(-) create mode 100644 hosts/copper/disko.nix diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index 83b3404..84bd964 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -1,6 +1,7 @@ { imports = [ ./hardware-configuration.nix + ./disko.nix ../../users/jalr ]; diff --git a/hosts/copper/disko.nix b/hosts/copper/disko.nix new file mode 100644 index 0000000..af624e2 --- /dev/null +++ b/hosts/copper/disko.nix @@ -0,0 +1,56 @@ +{ + disko.devices = { + disk = { + nvme = { + type = "disk"; + device = "/dev/disk/by-id/nvme-Samsung_SSD_990_PRO_2TB_S7DNNJ0X235226N"; + content = { + type = "gpt"; + partitions = { + esp = { + type = "EF00"; + size = "1024M"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "uid=0" "gid=0" "fmask=0077" "dmask=0077" "nodev" "nosuid" "noexec" ]; + }; + }; + luks = { + size = "100%"; + content = { + type = "luks"; + name = "copper-crypt"; + settings = { + allowDiscards = true; + }; + extraFormatArgs = [ "--hash sha512 --use-random --pbkdf argon2id --iter-time 5000 --pbkdf-memory ${builtins.toString (4*1024*1024)} --pbkdf-parallel 4" ]; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + subvolumes = { + "/root" = { + mountpoint = "/"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + "/home" = { + mountpoint = "/home"; + mountOptions = [ "compress=zstd" "noatime" "nodev" "nosuid" ]; + }; + "/nix" = { + mountpoint = "/nix"; + mountOptions = [ "compress=zstd" "noatime" "noatime" "nodev" ]; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; +} + + diff --git a/hosts/copper/hardware-configuration.nix b/hosts/copper/hardware-configuration.nix index 7dac416..ef93cab 100644 --- a/hosts/copper/hardware-configuration.nix +++ b/hosts/copper/hardware-configuration.nix @@ -7,37 +7,8 @@ boot.initrd = { availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ]; - luks.devices."copper-crypt".device = "/dev/disk/by-uuid/0687579d-83e3-4a0c-a63a-3d8566456924"; }; - fileSystems = - let - bootDev = "/dev/disk/by-uuid/FF86-D9B6"; - btrfsDev = "/dev/disk/by-uuid/16109d28-7ba1-403e-9bb3-3a8da8838c1f"; - in - { - "/" = { - device = btrfsDev; - fsType = "btrfs"; - options = [ "subvol=root" "compress=zstd" ]; - }; - "/home" = { - device = btrfsDev; - fsType = "btrfs"; - options = [ "subvol=home" "compress=zstd" "nodev" "nosuid" ]; - }; - "/nix" = { - device = btrfsDev; - fsType = "btrfs"; - options = [ "subvol=nix" "compress=zstd" "noatime" "nodev" ]; - }; - - "/boot" = { - device = bootDev; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" "nodev" "nosuid" "noexec" ]; - }; - }; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } From ab16e8495857371e7e3ba54592a00ee2be229beb Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 31 May 2024 18:04:09 +0200 Subject: [PATCH 151/562] Add instructions to deploy with nixos-anywhere --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 15ccbb8..94fa809 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,15 @@ For a systematic overview of Home Manager and its available options, please see ## Install a new host This installs nixos on host `somehost`: + +### NixOS Anywhere + +```bash +nix run github:nix-community/nixos-anywhere -- --flake .# root@ +``` + +### The traditional way + ```bash nix-shell -p nixUnstable --run 'nixos-install --flake https://gitlab.jalr.de/jalr/nixos-configuration#somehost --no-channel-copy' ``` From 9869f2ad59deff12b40bc5c6a875b2abbd035894 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 31 May 2024 18:04:26 +0200 Subject: [PATCH 152/562] Add instructions to trust GPG key --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 94fa809..7b18909 100644 --- a/README.md +++ b/README.md @@ -55,4 +55,7 @@ nix-repl> :lf .# ``` gpg --card-edit gpg/card> fetch +gpg --edit-key $key +gpg> trust +Your decision? 5 ``` From b08797cac06bce6621d2dd7760942c4117432449 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 31 May 2024 23:32:29 +0200 Subject: [PATCH 153/562] Add pointer settings --- users/jalr/modules/gui.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/users/jalr/modules/gui.nix b/users/jalr/modules/gui.nix index d744a18..d3c71d2 100644 --- a/users/jalr/modules/gui.nix +++ b/users/jalr/modules/gui.nix @@ -1,5 +1,11 @@ { nixosConfig, lib, pkgs, ... }: lib.mkIf nixosConfig.jalr.gui.enable { + home.pointerCursor = { + package = pkgs.gnome-themes-extra; + name = "Adwaita"; + size = lib.mkDefault 16; + }; + home.packages = with pkgs; [ evince exiftool From 8dd515edc1c75a0e51a2d12502c5098b9c0725e9 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 31 May 2024 23:32:41 +0200 Subject: [PATCH 154/562] Set scaling for internal display on host copper --- users/jalr/modules/sway/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index c89db64..0e34c15 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -35,6 +35,7 @@ let #gsettings set $gnome_schema gtk-theme 'Dracula' ${pkgs.glib}/bin/gsettings "$@" ''; + matchHostname = (hostname: lib.optionalAttrs (nixosConfig.networking.hostName == hostname)); in { imports = lib.optionals nixosConfig.jalr.gui.enable [ @@ -108,7 +109,11 @@ in terminal = "${terminalEmulator}"; menu = "${pkgs.wofi}/bin/wofi --allow-images --show drun --color=$HOME/.config/wofi/color"; - output."*".bg = "${wallpaper} fill"; + output = { + "*".bg = "${wallpaper} fill"; + } // matchHostname "copper" { + eDP-1.scale = toString 1.5; + }; keybindings = { "${cfg.modifier}+Return" = "exec ${cfg.terminal}"; From 25e8e332c631985d17f651a05249b223c1f0a223 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 3 Jun 2024 09:42:32 +0200 Subject: [PATCH 155/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/9d5c673a6611b7bf448dbfb0843c75b9cce9cf1f' (2024-05-30) → 'github:nix-community/disko/39cd5a1fcd6d7a476eac2894b09122ead99f6efc' (2024-06-03) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/d24e7fdcfaecdca496ddd426cae98c9e2d12dfe8' (2024-05-30) → 'github:nixos/nixpkgs/805a384895c696f802a9bf5bf4720f37385df547' (2024-05-31) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/5ceeafa47de0b2e842354147fafc39d567e4cd9c' (2024-05-31) → 'github:NixOS/nixpkgs/0b2a090503b08d27bc82f923eb562805f35eb498' (2024-06-03) • Updated input 'nur': 'github:nix-community/NUR/7963300aab117ee31dd5185541ceed009ce3e312' (2024-05-31) → 'github:nix-community/NUR/bf139c97aaf94adbaa9bac52629aafaba8f193d1' (2024-06-03) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/0a592572706db14e49202892318d3812061340a0' (2024-05-30) → 'github:nix-community/poetry2nix/11e97e742da5b4e43c27cfe13fca904e82fd4e56' (2024-06-01) • Updated input 'poetry2nix/treefmt-nix': 'github:numtide/treefmt-nix/2fba33a182602b9d49f0b2440513e5ee091d838b' (2024-05-17) → 'github:numtide/treefmt-nix/03b982b77df58d5974c61c6022085bafe780c1cf' (2024-05-31) • Updated input 'sops-nix': 'github:Mic92/sops-nix/962797a8d7f15ed7033031731d0bb77244839960' (2024-05-26) → 'github:Mic92/sops-nix/ab2a43b0d21d1d37d4d5726a892f714eaeb4b075' (2024-06-02) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/59a450646ec8ee0397f5fa54a08573e8240eb91f' (2024-05-25) → 'github:NixOS/nixpkgs/3b1b4895b2c5f9f5544d02132896aeb9ceea77bc' (2024-06-01) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index f095430..737bec9 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1717097713, - "narHash": "sha256-M0tIapdiiB2piVTDK+aL7AnsjS656AY7l7htKN0dnQM=", + "lastModified": 1717378144, + "narHash": "sha256-gwx3rVXnt2jNxl8L2DybYv41fA8QhWVGebe932pa2nw=", "owner": "nix-community", "repo": "disko", - "rev": "9d5c673a6611b7bf448dbfb0843c75b9cce9cf1f", + "rev": "39cd5a1fcd6d7a476eac2894b09122ead99f6efc", "type": "github" }, "original": { @@ -189,11 +189,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1717090882, - "narHash": "sha256-Up5tvtY9YlVEyVn9hfZcxFQi5qVhQ5hdVNGPQOUchNw=", + "lastModified": 1717144377, + "narHash": "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d24e7fdcfaecdca496ddd426cae98c9e2d12dfe8", + "rev": "805a384895c696f802a9bf5bf4720f37385df547", "type": "github" }, "original": { @@ -221,11 +221,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1716655032, - "narHash": "sha256-kQ25DAiCGigsNR/Quxm3v+JGXAEXZ8I7RAF4U94bGzE=", + "lastModified": 1717265169, + "narHash": "sha256-IITcGd6xpNoyq9SZBigCkv4+qMHSqot0RDPR4xsZ2CA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "59a450646ec8ee0397f5fa54a08573e8240eb91f", + "rev": "3b1b4895b2c5f9f5544d02132896aeb9ceea77bc", "type": "github" }, "original": { @@ -237,11 +237,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1717160210, - "narHash": "sha256-a6o2BB3W0W6t4LExUJbBjZs6O+VN9ld1oH2jOGMrNAI=", + "lastModified": 1717399553, + "narHash": "sha256-gWlwJQnKj4UWHQIWC/TIYIeV59/VnLAMUgIjp4JB/9Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5ceeafa47de0b2e842354147fafc39d567e4cd9c", + "rev": "0b2a090503b08d27bc82f923eb562805f35eb498", "type": "github" }, "original": { @@ -253,11 +253,11 @@ }, "nur": { "locked": { - "lastModified": 1717163092, - "narHash": "sha256-M6kObY8gQjx6spj5NxJDBZs8glTo32a2pSu0przux+w=", + "lastModified": 1717400384, + "narHash": "sha256-0J9DSDPMRJ0iONCXuFg5+0812NWj4ByNwUsCwJY08mc=", "owner": "nix-community", "repo": "NUR", - "rev": "7963300aab117ee31dd5185541ceed009ce3e312", + "rev": "bf139c97aaf94adbaa9bac52629aafaba8f193d1", "type": "github" }, "original": { @@ -279,11 +279,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1717090555, - "narHash": "sha256-4ajbEBEB8C2x9Dz07ZG5iXDsXuOjntpMmZt+I/tGBFQ=", + "lastModified": 1717250109, + "narHash": "sha256-MTivB5fsfaPtWwcibBhs20hHYEUe9o9bTRXsGJjQRso=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "0a592572706db14e49202892318d3812061340a0", + "rev": "11e97e742da5b4e43c27cfe13fca904e82fd4e56", "type": "github" }, "original": { @@ -315,11 +315,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1716692524, - "narHash": "sha256-sALodaA7Zkp/JD6ehgwc0UCBrSBfB4cX66uFGTsqeFU=", + "lastModified": 1717297459, + "narHash": "sha256-cZC2f68w5UrJ1f+2NWGV9Gx0dEYmxwomWN2B0lx0QRA=", "owner": "Mic92", "repo": "sops-nix", - "rev": "962797a8d7f15ed7033031731d0bb77244839960", + "rev": "ab2a43b0d21d1d37d4d5726a892f714eaeb4b075", "type": "github" }, "original": { @@ -365,11 +365,11 @@ ] }, "locked": { - "lastModified": 1715940852, - "narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=", + "lastModified": 1717182148, + "narHash": "sha256-Hi09/RoizxubRf3PHToT2Nm7TL8B/abSVa6q82uEgNI=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "2fba33a182602b9d49f0b2440513e5ee091d838b", + "rev": "03b982b77df58d5974c61c6022085bafe780c1cf", "type": "github" }, "original": { From c5931e7cc7b0c6722f9c5fb0f86ff52b107ac529 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 3 Jun 2024 12:31:45 +0200 Subject: [PATCH 156/562] Fix http 500 in home-assistant --- hosts/iron/services/radicale.nix | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hosts/iron/services/radicale.nix b/hosts/iron/services/radicale.nix index a47cee7..538947f 100644 --- a/hosts/iron/services/radicale.nix +++ b/hosts/iron/services/radicale.nix @@ -1,4 +1,4 @@ -args@{ config, lib, custom-utils, ... }: +args@{ config, lib, pkgs, custom-utils, ... }: let ports = import ../ports.nix args; @@ -54,5 +54,14 @@ in level = "warning"; }; }; + # Apply fix https://github.com/Kozea/Radicale/issues/1485 + package = pkgs.radicale.overrideAttrs (p: { + src = pkgs.fetchFromGitHub { + owner = "Kozea"; + repo = "Radicale"; + rev = "5146537915f0cb397ae4ef53fe8a4f91fac5d972"; + sha256 = "DRNiY665MHqmXAeGs39N3YfTAV0SEjzUNf3Nfk+kKvk="; + }; + }); }; } From 0f55324c65934d3d1373f48af161c76628d52039 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 4 Jun 2024 16:20:57 +0200 Subject: [PATCH 157/562] Remove udev rule and use `/dev/v4l/by-id/` instead --- modules/obs.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/obs.nix b/modules/obs.nix index 7f66004..e8bcf9f 100644 --- a/modules/obs.nix +++ b/modules/obs.nix @@ -11,8 +11,4 @@ lib.mkIf config.jalr.gui.enable { environment.systemPackages = with pkgs; [ v4l-utils ]; - - services.udev.extraRules = '' - SUBSYSTEM=="video4linux", ATTR{idVendor}=="2109", ATTR{idProduct}=="2813", SYMLINK+="video_c922" - ''; } From bee0c89f8d566c1940a70f44444b4846df512e13 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 4 Jun 2024 16:30:38 +0200 Subject: [PATCH 158/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/39cd5a1fcd6d7a476eac2894b09122ead99f6efc' (2024-06-03) → 'github:nix-community/disko/a838e83e21502a211b83373109a260e5ef5fbcf1' (2024-06-04) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/805a384895c696f802a9bf5bf4720f37385df547' (2024-05-31) → 'github:nixos/nixpkgs/b3b2b28c1daa04fe2ae47c21bb76fd226eac4ca1' (2024-06-01) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/0b2a090503b08d27bc82f923eb562805f35eb498' (2024-06-03) → 'github:NixOS/nixpkgs/b37b08ae04af951640a9a9fcb4d1aab54603f551' (2024-06-04) • Updated input 'nur': 'github:nix-community/NUR/bf139c97aaf94adbaa9bac52629aafaba8f193d1' (2024-06-03) → 'github:nix-community/NUR/4e7a2f26c246f795ee386acbdd45353c22417e89' (2024-06-04) • Updated input 'sops-nix': 'github:Mic92/sops-nix/ab2a43b0d21d1d37d4d5726a892f714eaeb4b075' (2024-06-02) → 'github:Mic92/sops-nix/d4555e80d80d2fa77f0a44201ca299f9602492a0' (2024-06-03) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 737bec9..d4d3ec1 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1717378144, - "narHash": "sha256-gwx3rVXnt2jNxl8L2DybYv41fA8QhWVGebe932pa2nw=", + "lastModified": 1717490821, + "narHash": "sha256-CivVhYExnMJ2afm+o1ogB231pKW/azhUghMI53MHmOM=", "owner": "nix-community", "repo": "disko", - "rev": "39cd5a1fcd6d7a476eac2894b09122ead99f6efc", + "rev": "a838e83e21502a211b83373109a260e5ef5fbcf1", "type": "github" }, "original": { @@ -189,11 +189,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1717144377, - "narHash": "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=", + "lastModified": 1717281328, + "narHash": "sha256-evZPzpf59oNcDUXxh2GHcxHkTEG4fjae2ytWP85jXRo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "805a384895c696f802a9bf5bf4720f37385df547", + "rev": "b3b2b28c1daa04fe2ae47c21bb76fd226eac4ca1", "type": "github" }, "original": { @@ -237,11 +237,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1717399553, - "narHash": "sha256-gWlwJQnKj4UWHQIWC/TIYIeV59/VnLAMUgIjp4JB/9Q=", + "lastModified": 1717510920, + "narHash": "sha256-rW2leqeGcK2m3DPFqxK52TocyigX0hIwEf0hN6drSXk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0b2a090503b08d27bc82f923eb562805f35eb498", + "rev": "b37b08ae04af951640a9a9fcb4d1aab54603f551", "type": "github" }, "original": { @@ -253,11 +253,11 @@ }, "nur": { "locked": { - "lastModified": 1717400384, - "narHash": "sha256-0J9DSDPMRJ0iONCXuFg5+0812NWj4ByNwUsCwJY08mc=", + "lastModified": 1717504708, + "narHash": "sha256-Gys2zgCYe2XGkb25hM46Oa3TAUPkay+XWUph28ciYVM=", "owner": "nix-community", "repo": "NUR", - "rev": "bf139c97aaf94adbaa9bac52629aafaba8f193d1", + "rev": "4e7a2f26c246f795ee386acbdd45353c22417e89", "type": "github" }, "original": { @@ -315,11 +315,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1717297459, - "narHash": "sha256-cZC2f68w5UrJ1f+2NWGV9Gx0dEYmxwomWN2B0lx0QRA=", + "lastModified": 1717455931, + "narHash": "sha256-8Q6mKSsto8gaGczXd4G0lvawdAYLa5Dlh3/g4hl5CaM=", "owner": "Mic92", "repo": "sops-nix", - "rev": "ab2a43b0d21d1d37d4d5726a892f714eaeb4b075", + "rev": "d4555e80d80d2fa77f0a44201ca299f9602492a0", "type": "github" }, "original": { From 2fb7ef285719fa06459002b7bd8e2184cf96b167 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 6 Jun 2024 13:41:57 +0200 Subject: [PATCH 159/562] Add mobile broadband --- modules/default.nix | 1 + modules/mobile-network.nix | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 modules/mobile-network.nix diff --git a/modules/default.nix b/modules/default.nix index e48b296..321ff67 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -32,6 +32,7 @@ ./localization.nix ./mailserver ./matrix + ./mobile-network.nix ./mute-indicator.nix ./networking ./nix.nix diff --git a/modules/mobile-network.nix b/modules/mobile-network.nix new file mode 100644 index 0000000..fb7efdb --- /dev/null +++ b/modules/mobile-network.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +lib.mkIf config.jalr.gui.enable { + environment.systemPackages = with pkgs; [ + usb-modeswitch + ]; +} From 8f1cea1ce68c914b7230e897df930ac2825c73db Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 11 Jun 2024 10:25:35 +0200 Subject: [PATCH 160/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/a838e83e21502a211b83373109a260e5ef5fbcf1' (2024-06-04) → 'github:nix-community/disko/c1cfbfad7cb45f0c177b35b59ba67d1b5fc7ca82' (2024-06-10) • Updated input 'home-manager': 'github:nix-community/home-manager/a631666f5ec18271e86a5cde998cba68c33d9ac6' (2024-05-26) → 'github:nix-community/home-manager/845a5c4c073f74105022533907703441e0464bc3' (2024-06-04) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/0e8fcc54b842ad8428c9e705cb5994eaf05c26a0' (2024-05-20) → 'github:cachix/git-hooks.nix/cc4d466cb1254af050ff7bdf47f6d404a7c646d1' (2024-06-06) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/b3b2b28c1daa04fe2ae47c21bb76fd226eac4ca1' (2024-06-01) → 'github:nixos/nixpkgs/2819fffa7fa42156680f0d282c60d81e8fb185b7' (2024-06-09) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/b37b08ae04af951640a9a9fcb4d1aab54603f551' (2024-06-04) → 'github:NixOS/nixpkgs/5b403d5f9c3dc03cc863c6c007ec5c9ed7275864' (2024-06-11) • Updated input 'nur': 'github:nix-community/NUR/4e7a2f26c246f795ee386acbdd45353c22417e89' (2024-06-04) → 'github:nix-community/NUR/d1c970b5275fb45cf32e4eff52afd798b860dbf1' (2024-06-11) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/11e97e742da5b4e43c27cfe13fca904e82fd4e56' (2024-06-01) → 'github:nix-community/poetry2nix/304f8235fb0729fd48567af34fcd1b58d18f9b95' (2024-06-09) • Updated input 'poetry2nix/treefmt-nix': 'github:numtide/treefmt-nix/03b982b77df58d5974c61c6022085bafe780c1cf' (2024-05-31) → 'github:numtide/treefmt-nix/3eb96ca1ae9edf792a8e0963cc92fddfa5a87706' (2024-06-01) • Updated input 'sops-nix': 'github:Mic92/sops-nix/d4555e80d80d2fa77f0a44201ca299f9602492a0' (2024-06-03) → 'github:Mic92/sops-nix/d071c74a7de1e26d211b69b6fbae37ae2e31a87f' (2024-06-10) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/3b1b4895b2c5f9f5544d02132896aeb9ceea77bc' (2024-06-01) → 'github:NixOS/nixpkgs/4913a7c3d8b8d00cb9476a6bd730ff57777f740c' (2024-06-08) --- flake.lock | 60 +++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/flake.lock b/flake.lock index d4d3ec1..4428b59 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1717490821, - "narHash": "sha256-CivVhYExnMJ2afm+o1ogB231pKW/azhUghMI53MHmOM=", + "lastModified": 1718008439, + "narHash": "sha256-nlh/2uD5p2SAdkn6Zuey20yaR5FFWvhL3poapDGNE4Y=", "owner": "nix-community", "repo": "disko", - "rev": "a838e83e21502a211b83373109a260e5ef5fbcf1", + "rev": "c1cfbfad7cb45f0c177b35b59ba67d1b5fc7ca82", "type": "github" }, "original": { @@ -105,11 +105,11 @@ ] }, "locked": { - "lastModified": 1716736833, - "narHash": "sha256-rNObca6dm7Qs524O4st8VJH6pZ/Xe1gxl+Rx6mcWYo0=", + "lastModified": 1717527182, + "narHash": "sha256-vWSkg6AMok1UUQiSYVdGMOXKD2cDFnajITiSi0Zjd1A=", "owner": "nix-community", "repo": "home-manager", - "rev": "a631666f5ec18271e86a5cde998cba68c33d9ac6", + "rev": "845a5c4c073f74105022533907703441e0464bc3", "type": "github" }, "original": { @@ -173,11 +173,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1716213921, - "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", + "lastModified": 1717664902, + "narHash": "sha256-7XfBuLULizXjXfBYy/VV+SpYMHreNRHk9nKMsm1bgb4=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", + "rev": "cc4d466cb1254af050ff7bdf47f6d404a7c646d1", "type": "github" }, "original": { @@ -189,11 +189,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1717281328, - "narHash": "sha256-evZPzpf59oNcDUXxh2GHcxHkTEG4fjae2ytWP85jXRo=", + "lastModified": 1717952948, + "narHash": "sha256-mJi4/gjiwQlSaxjA6AusXBN/6rQRaPCycR7bd8fydnQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b3b2b28c1daa04fe2ae47c21bb76fd226eac4ca1", + "rev": "2819fffa7fa42156680f0d282c60d81e8fb185b7", "type": "github" }, "original": { @@ -221,11 +221,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1717265169, - "narHash": "sha256-IITcGd6xpNoyq9SZBigCkv4+qMHSqot0RDPR4xsZ2CA=", + "lastModified": 1717880976, + "narHash": "sha256-BRvSCsKtDUr83NEtbGfHLUOdDK0Cgbezj2PtcHnz+sQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3b1b4895b2c5f9f5544d02132896aeb9ceea77bc", + "rev": "4913a7c3d8b8d00cb9476a6bd730ff57777f740c", "type": "github" }, "original": { @@ -237,11 +237,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1717510920, - "narHash": "sha256-rW2leqeGcK2m3DPFqxK52TocyigX0hIwEf0hN6drSXk=", + "lastModified": 1718091963, + "narHash": "sha256-ePQyPtgHdgt/EAoKtJfKdoR3YklVAcKU6kTb1k++f3c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b37b08ae04af951640a9a9fcb4d1aab54603f551", + "rev": "5b403d5f9c3dc03cc863c6c007ec5c9ed7275864", "type": "github" }, "original": { @@ -253,11 +253,11 @@ }, "nur": { "locked": { - "lastModified": 1717504708, - "narHash": "sha256-Gys2zgCYe2XGkb25hM46Oa3TAUPkay+XWUph28ciYVM=", + "lastModified": 1718094125, + "narHash": "sha256-Y2Bt+ZAGOkbbWL6x/BaXDvM3prZol13WmAr5C+MXe2g=", "owner": "nix-community", "repo": "NUR", - "rev": "4e7a2f26c246f795ee386acbdd45353c22417e89", + "rev": "d1c970b5275fb45cf32e4eff52afd798b860dbf1", "type": "github" }, "original": { @@ -279,11 +279,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1717250109, - "narHash": "sha256-MTivB5fsfaPtWwcibBhs20hHYEUe9o9bTRXsGJjQRso=", + "lastModified": 1717965289, + "narHash": "sha256-62VsS1MvwcsyYWnxxOD9rX5yqDUvMXH7qE3Kj8HECYE=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "11e97e742da5b4e43c27cfe13fca904e82fd4e56", + "rev": "304f8235fb0729fd48567af34fcd1b58d18f9b95", "type": "github" }, "original": { @@ -315,11 +315,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1717455931, - "narHash": "sha256-8Q6mKSsto8gaGczXd4G0lvawdAYLa5Dlh3/g4hl5CaM=", + "lastModified": 1718058322, + "narHash": "sha256-d5jLlAwVi4NzT9yc5UrPiOpDxTRhu8GGh0IIfeFcdrM=", "owner": "Mic92", "repo": "sops-nix", - "rev": "d4555e80d80d2fa77f0a44201ca299f9602492a0", + "rev": "d071c74a7de1e26d211b69b6fbae37ae2e31a87f", "type": "github" }, "original": { @@ -365,11 +365,11 @@ ] }, "locked": { - "lastModified": 1717182148, - "narHash": "sha256-Hi09/RoizxubRf3PHToT2Nm7TL8B/abSVa6q82uEgNI=", + "lastModified": 1717278143, + "narHash": "sha256-u10aDdYrpiGOLoxzY/mJ9llST9yO8Q7K/UlROoNxzDw=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "03b982b77df58d5974c61c6022085bafe780c1cf", + "rev": "3eb96ca1ae9edf792a8e0963cc92fddfa5a87706", "type": "github" }, "original": { From d60fad55452019341f3179824714226a753fbd88 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Jun 2024 10:33:09 +0200 Subject: [PATCH 161/562] Flatten inputs --- flake.nix | 68 ++++++++++++++++++++----------------------------------- 1 file changed, 24 insertions(+), 44 deletions(-) diff --git a/flake.nix b/flake.nix index b1bdcc5..0fa2c4c 100644 --- a/flake.nix +++ b/flake.nix @@ -1,56 +1,36 @@ { inputs = { + disko.inputs.nixpkgs.follows = "nixpkgs"; + disko.url = "github:nix-community/disko"; + flake-utils.url = "github:numtide/flake-utils"; + + gomod2nix.inputs.flake-utils.follows = "flake-utils"; + gomod2nix.inputs.nixpkgs.follows = "nixpkgs"; + gomod2nix.url = "github:nix-community/gomod2nix"; + + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + home-manager.url = "github:nix-community/home-manager/release-24.05"; + + krops.inputs.flake-utils.follows = "flake-utils"; + krops.inputs.nixpkgs.follows = "nixpkgs"; + krops.url = "github:Mic92/krops"; + + nix-pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs"; + nix-pre-commit-hooks.url = "github:cachix/git-hooks.nix/master"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; + nixpkgsMaster.url = "github:NixOS/nixpkgs/master"; nur.url = "github:nix-community/NUR"; - home-manager = { - url = "github:nix-community/home-manager/release-24.05"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + poetry2nix.inputs.flake-utils.follows = "flake-utils"; + poetry2nix.inputs.nixpkgs.follows = "nixpkgs"; + poetry2nix.url = "github:nix-community/poetry2nix"; - nix-pre-commit-hooks = { - url = "github:cachix/git-hooks.nix/master"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - sops-nix = { - url = "github:Mic92/sops-nix"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - krops = { - url = "github:Mic92/krops"; - inputs = { - flake-utils.follows = "flake-utils"; - nixpkgs.follows = "nixpkgs"; - }; - }; - - disko = { - url = "github:nix-community/disko"; - inputs = { - nixpkgs.follows = "nixpkgs"; - }; - }; - - gomod2nix = { - url = "github:nix-community/gomod2nix"; - inputs = { - flake-utils.follows = "flake-utils"; - nixpkgs.follows = "nixpkgs"; - }; - }; - - poetry2nix = { - url = "github:nix-community/poetry2nix"; - inputs = { - flake-utils.follows = "flake-utils"; - nixpkgs.follows = "nixpkgs"; - }; - }; + sops-nix.inputs.nixpkgs.follows = "nixpkgs"; + sops-nix.url = "github:Mic92/sops-nix"; }; outputs = { self From 650bcbb2de41612efe2501967f1bc423a85477b2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Jun 2024 13:08:31 +0200 Subject: [PATCH 162/562] Add nixos-hardware --- flake.lock | 17 +++++++++++++++++ flake.nix | 5 ++++- hosts/default.nix | 6 ++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/flake.lock b/flake.lock index 4428b59..816b544 100644 --- a/flake.lock +++ b/flake.lock @@ -187,6 +187,22 @@ "type": "github" } }, + "nixos-hardware": { + "locked": { + "lastModified": 1718265846, + "narHash": "sha256-h4MnTID6ciFxtTvtl+ibXMKaG6iLMezCtUvKIfFG7r0=", + "owner": "nixos", + "repo": "nixos-hardware", + "rev": "d75003136c0fc94ee60e51806c2801ff572d06a6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "master", + "repo": "nixos-hardware", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1717952948, @@ -300,6 +316,7 @@ "home-manager": "home-manager", "krops": "krops", "nix-pre-commit-hooks": "nix-pre-commit-hooks", + "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs", "nixpkgsMaster": "nixpkgsMaster", "nur": "nur", diff --git a/flake.nix b/flake.nix index 0fa2c4c..fa2976f 100644 --- a/flake.nix +++ b/flake.nix @@ -19,6 +19,8 @@ nix-pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs"; nix-pre-commit-hooks.url = "github:cachix/git-hooks.nix/master"; + nixos-hardware.url = "github:nixos/nixos-hardware/master"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; nixpkgsMaster.url = "github:NixOS/nixpkgs/master"; @@ -133,6 +135,7 @@ nixosConfigurations = nixpkgs.lib.mapAttrs (hostname: { system + , extraModules ? [ ] , targetHost ? hostname , nixpkgs ? inputs.nixpkgs }: nixpkgs.lib.nixosSystem rec { @@ -169,7 +172,7 @@ home-manager.nixosModules.home-manager inputs.sops-nix.nixosModules.sops inputs.disko.nixosModules.disko - ]; + ] ++ extraModules; }) (import ./hosts inputs); }; diff --git a/hosts/default.nix b/hosts/default.nix index b6751aa..27f156e 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -1,4 +1,7 @@ { ... }@inputs: +let + hardware = inputs.nixos-hardware.nixosModules; +in { aluminium = { targetHost = "192.168.0.1"; @@ -30,5 +33,8 @@ copper = { system = "x86_64-linux"; targetHost = "copper.lan.bw.jalr.de"; + extraModules = [ + hardware.framework-16-7040-amd + ]; }; } From 53b1c122c13078e2d37d55b711c4b749b799668b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Jun 2024 13:09:33 +0200 Subject: [PATCH 163/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/c1cfbfad7cb45f0c177b35b59ba67d1b5fc7ca82' (2024-06-10) → 'github:nix-community/disko/832a9f2c81ff3485404bd63952eadc17bf7ccef2' (2024-06-13) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/2819fffa7fa42156680f0d282c60d81e8fb185b7' (2024-06-09) → 'github:nixos/nixpkgs/cc54fb41d13736e92229c21627ea4f22199fee6b' (2024-06-12) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/5b403d5f9c3dc03cc863c6c007ec5c9ed7275864' (2024-06-11) → 'github:NixOS/nixpkgs/b17538d34de26bf52626a9caff104a267abd991a' (2024-06-13) • Updated input 'nur': 'github:nix-community/NUR/d1c970b5275fb45cf32e4eff52afd798b860dbf1' (2024-06-11) → 'github:nix-community/NUR/90bcce2a42dec3c29e4a882cec70b370d714fa31' (2024-06-13) • Updated input 'sops-nix': 'github:Mic92/sops-nix/d071c74a7de1e26d211b69b6fbae37ae2e31a87f' (2024-06-10) → 'github:Mic92/sops-nix/c279dec105dd53df13a5e57525da97905cc0f0d6' (2024-06-11) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 816b544..ea56a86 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1718008439, - "narHash": "sha256-nlh/2uD5p2SAdkn6Zuey20yaR5FFWvhL3poapDGNE4Y=", + "lastModified": 1718242063, + "narHash": "sha256-n3AWItJ4a94GT0cray/eUV7tt3mulQ52L+lWJN9d1E8=", "owner": "nix-community", "repo": "disko", - "rev": "c1cfbfad7cb45f0c177b35b59ba67d1b5fc7ca82", + "rev": "832a9f2c81ff3485404bd63952eadc17bf7ccef2", "type": "github" }, "original": { @@ -205,11 +205,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1717952948, - "narHash": "sha256-mJi4/gjiwQlSaxjA6AusXBN/6rQRaPCycR7bd8fydnQ=", + "lastModified": 1718208800, + "narHash": "sha256-US1tAChvPxT52RV8GksWZS415tTS7PV42KTc2PNDBmc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "2819fffa7fa42156680f0d282c60d81e8fb185b7", + "rev": "cc54fb41d13736e92229c21627ea4f22199fee6b", "type": "github" }, "original": { @@ -253,11 +253,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1718091963, - "narHash": "sha256-ePQyPtgHdgt/EAoKtJfKdoR3YklVAcKU6kTb1k++f3c=", + "lastModified": 1718276662, + "narHash": "sha256-p0KXZc6ekKXwYcMeyS5Hs9uTQKoSDkJW1QDf0gkilLk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5b403d5f9c3dc03cc863c6c007ec5c9ed7275864", + "rev": "b17538d34de26bf52626a9caff104a267abd991a", "type": "github" }, "original": { @@ -269,11 +269,11 @@ }, "nur": { "locked": { - "lastModified": 1718094125, - "narHash": "sha256-Y2Bt+ZAGOkbbWL6x/BaXDvM3prZol13WmAr5C+MXe2g=", + "lastModified": 1718276606, + "narHash": "sha256-3yL4mmgQL/WfUK/FZrjO6kYK2CRhfL/7+K1G83Lfigs=", "owner": "nix-community", "repo": "NUR", - "rev": "d1c970b5275fb45cf32e4eff52afd798b860dbf1", + "rev": "90bcce2a42dec3c29e4a882cec70b370d714fa31", "type": "github" }, "original": { @@ -332,11 +332,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1718058322, - "narHash": "sha256-d5jLlAwVi4NzT9yc5UrPiOpDxTRhu8GGh0IIfeFcdrM=", + "lastModified": 1718137936, + "narHash": "sha256-psA+1Q5fPaK6yI3vzlLINNtb6EeXj111zQWnZYyJS9c=", "owner": "Mic92", "repo": "sops-nix", - "rev": "d071c74a7de1e26d211b69b6fbae37ae2e31a87f", + "rev": "c279dec105dd53df13a5e57525da97905cc0f0d6", "type": "github" }, "original": { From 87c0dfba58c107a2c79380a9b08ac64c4571f44b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Jun 2024 13:42:24 +0200 Subject: [PATCH 164/562] Add overlay to REPL --- justfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/justfile b/justfile index b8d309c..715cff1 100644 --- a/justfile +++ b/justfile @@ -19,10 +19,10 @@ repl: nix repl --expr "\ let \ flake = builtins.getFlake \"$(git rev-parse --show-toplevel)\"; in \ - flake // { \ - lib = flake.inputs.nixpkgs.lib; \ - pkgs = flake.inputs.nixpkgs.legacyPackages."\${builtins.currentSystem}"; \ - } \ + flake // (with flake; { \ + lib = inputs.nixpkgs.lib; \ + pkgs = inputs.nixpkgs.legacyPackages."\${builtins.currentSystem}".extend(import ./pkgs inputs); \ + }) \ " luks-pass host: From 70e35c324905d0a1775528879f1ab16fe048fdea Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Jun 2024 13:49:29 +0200 Subject: [PATCH 165/562] Remove commented session variables --- users/jalr/modules/sway/default.nix | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index 0e34c15..7e9286f 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -61,19 +61,6 @@ in _JAVA_AWT_WM_NONREPARENTING = "1"; }; - #home.sessionVariables = { - # CLUTTER_BACKEND = "wayland"; - # GDK_BACKEND = "wayland"; - # GDK_DPI_SCALE = 1; - # MOZ_ENABLE_WAYLAND = 1; - # QT_QPA_PLATFORM = "wayland-egl"; - # QT_WAYLAND_DISABLE_WINDOWDECORATION = 1; - # SDL_VIDEODRIVER = "wayland"; - # WLR_NO_HARDWARE_CURSORS = 1; - # _JAVA_AWT_WM_NONREPARENTING = 1; - # _JAVA_OPTIONS = "-Dawt.useSystemAAFontSettings=on"; - #}; - programs.fish.loginShellInit = '' if [ -z $WAYLAND_DISPLAY ] && [ (tty) = /dev/tty1 ] export XDG_SESSION_TYPE="wayland" # otherwise set to tty From 2054adbea601e5b3167f13adf3d3eec440dac3e3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Jun 2024 13:51:33 +0200 Subject: [PATCH 166/562] Remove environment variables These are already set with home-manager. --- modules/sway.nix | 9 --------- 1 file changed, 9 deletions(-) diff --git a/modules/sway.nix b/modules/sway.nix index f534f18..dda11f2 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -12,15 +12,6 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { wl-clipboard xwayland ]; - extraSessionCommands = '' - export XKB_DEFAULT_LAYOUT=de # TODO: test if we need it - export XKB_DEFAULT_VARIANT=neo # TODO: test if we need it - export QT_QPA_PLATFORM=wayland - export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 - export ELM_ENGINE=wayland_shm - export GDK_BACKEND=wayland - export _JAVA_AWT_WM_NONREPARENTING=1 - ''; }; xdg = { From 12463fc3b11c6c7855d34c2fec3aa23cd5e770b0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Jun 2024 13:53:15 +0200 Subject: [PATCH 167/562] Move polkit enabling to sway module As it is currently only required by sway. --- modules/default.nix | 2 -- modules/sway.nix | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/default.nix b/modules/default.nix index 321ff67..bd73bc6 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -67,8 +67,6 @@ ]; }; - security.polkit.enable = true; - security.acme = { acceptTerms = true; defaults = { diff --git a/modules/sway.nix b/modules/sway.nix index dda11f2..b6e9b4f 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -14,6 +14,8 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { ]; }; + security.polkit.enable = true; + xdg = { portal = { enable = true; From 4f5d6c44562177d7ab95faf8a6c7dbb4ffde4170 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Jun 2024 13:54:58 +0200 Subject: [PATCH 168/562] Manage sway extra packages in home-manager module --- modules/sway.nix | 11 ++--------- users/jalr/modules/sway/default.nix | 6 +++++- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/modules/sway.nix b/modules/sway.nix index b6e9b4f..5ffba51 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -3,15 +3,8 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { programs.sway = { enable = true; - # FIXME: move to home manager - extraPackages = with pkgs; [ - grim - mako - gammastep - slurp - wl-clipboard - xwayland - ]; + xwayland.enable = true; + wrapperFeatures.gtk = true; }; security.polkit.enable = true; diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index 7e9286f..52e7600 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -47,9 +47,13 @@ in ]; } // (lib.mkIf nixosConfig.jalr.gui.enable { home.packages = with pkgs; [ + gsettings + swappy # screenshot editing sway-contrib.grimshot # screenshots wdisplays # graphical output manager - gsettings + mako + slurp + wl-clipboard ]; home.sessionVariables = { From 28acb6e48cab547d2f84ccb365c3044dbeab1639 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Jun 2024 13:55:27 +0200 Subject: [PATCH 169/562] Improve sway performance --- modules/sway.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/sway.nix b/modules/sway.nix index 5ffba51..a35ca05 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -7,8 +7,17 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { wrapperFeatures.gtk = true; }; + hardware.opengl.enable = true; + security.polkit.enable = true; + security.pam.loginLimits = [{ + domain = "@users"; + item = "rtprio"; + type = "-"; + value = 1; + }]; + xdg = { portal = { enable = true; From 6319bc0b460b78a48e7f3ef4da48c43881dd4431 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Jun 2024 14:55:01 +0200 Subject: [PATCH 170/562] Add ots --- users/jalr/modules/default.nix | 1 + users/jalr/modules/ots.nix | 52 ++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 users/jalr/modules/ots.nix diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index e656fa4..f9b1fdf 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -25,6 +25,7 @@ ./nix-index.nix ./obs-studio ./openscad.nix + ./ots.nix ./pass.nix ./pcmanfm.nix ./python.nix diff --git a/users/jalr/modules/ots.nix b/users/jalr/modules/ots.nix new file mode 100644 index 0000000..68369e2 --- /dev/null +++ b/users/jalr/modules/ots.nix @@ -0,0 +1,52 @@ +{ lib, pkgs, ... }: + +let + configFile = "ots/ots.json"; +in +{ + home.packages = [ + ( + pkgs.writeShellScriptBin "ots" '' + set -e + set -o nounset + + args=() + region="" + new="" + while [[ $# -gt 0 ]]; do + case "$1" in + new) + new=1 + args+=("$1"); shift + ;; + --region|--region=*) + region=1 + args+=("$1"); shift + ;; + *) + args+=("$1"); shift + ;; + esac + done + + if [[ $new && ! $region ]]; then + args+=("--region" "eu-central-1") + fi + + exec ${pkgs.ots}/bin/ots "''${args[@]}" + '' + ) + ]; + + /* + xdg.configFile."${configFile}".text = lib.generators.toJSON {} ( + let + region = "eu-central-1"; + in + { + apiUrl = "https://ots.${region}.api.sniptt.com/secrets"; + apiKey = ""; + } + ); + */ +} From 9de22b40267355d360d40f4e3a5a6a2376c22e75 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 14 Jun 2024 13:10:10 +0200 Subject: [PATCH 171/562] Use option to make neovim the default editor --- users/jalr/modules/neovim.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index 1c6f2ed..d85aad4 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -1,11 +1,9 @@ { lib, nixosConfig, config, pkgs, ... }: { - home.sessionVariables = { - EDITOR = "nvim"; - }; programs.neovim = { enable = true; vimAlias = true; + defaultEditor = true; extraConfig = '' " use space as leader let mapleader = " " From 0ba830ca4daa6805053320b9755cda8b31a44eac Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 14 Jun 2024 13:11:18 +0200 Subject: [PATCH 172/562] Set leader key first extraConfig is included after the plugin config => Let's create a fake plugin derivation, so that we can use it to set configuration before the plugin configurations. --- users/jalr/modules/neovim.nix | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index d85aad4..479db89 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -1,13 +1,14 @@ { lib, nixosConfig, config, pkgs, ... }: + +let + fakePlugin = pkgs.runCommand "neovim-fake-plugin" { } "mkdir $out"; +in { programs.neovim = { enable = true; vimAlias = true; defaultEditor = true; extraConfig = '' - " use space as leader - let mapleader = " " - colorscheme NeoSolarized """"""""""""""""" @@ -66,8 +67,17 @@ lua require('init') ''; + plugins = [ + { + plugin = fakePlugin; + config = '' + " use space as leader + let mapleader = " " + ''; + } + ] ++ # nix-env -f '' -qaP -A vimPlugins - plugins = with pkgs.vimPlugins; [ + (with pkgs.vimPlugins; [ #Valloric/MatchTagAlways #frankier/neovim-colors-solarized-truecolor-only #nvie/vim-rst-tables @@ -86,7 +96,7 @@ config = "lua require('lsp_signature').setup()"; } ) - ]; + ]); }; xdg.configFile."nvim/lua/init.lua".text = builtins.concatStringsSep "\n" ( From 0c914775ad682a96f0c6a9bd72a92b5fdeb4fed8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 14 Jun 2024 13:12:58 +0200 Subject: [PATCH 173/562] Add telescope-nvim --- users/jalr/modules/neovim.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index 479db89..d2dbe58 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -85,6 +85,15 @@ in deoplete-nvim editorconfig-vim nvim-lspconfig + { + plugin = telescope-nvim; + config = '' + lua require('telescope').setup() + nnoremap Telescope find_files + nnoremap Telescope live_grep + nnoremap Telescope buffers + ''; + } vim-gitgutter vim-indent-guides vim-nix From 2fef51b00b6a12c2f582b1a87789721a15492af7 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 14 Jun 2024 13:13:12 +0200 Subject: [PATCH 174/562] Add fd --- users/jalr/modules/cli/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/modules/cli/default.nix b/users/jalr/modules/cli/default.nix index caae5d3..82cb395 100644 --- a/users/jalr/modules/cli/default.nix +++ b/users/jalr/modules/cli/default.nix @@ -8,6 +8,7 @@ home.packages = with pkgs; [ cached-nix-shell eza + fd file inetutils jq From 28b8b8f6291b04b29f343b9163549020ae992ec2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 14 Jun 2024 16:27:07 +0200 Subject: [PATCH 175/562] Add sponsorblock extension --- users/jalr/modules/firefox/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/modules/firefox/default.nix b/users/jalr/modules/firefox/default.nix index d82c31f..9f40008 100644 --- a/users/jalr/modules/firefox/default.nix +++ b/users/jalr/modules/firefox/default.nix @@ -268,6 +268,7 @@ isDefault = true; extensions = with pkgs.nur.repos.rycee.firefox-addons; [ darkreader + sponsorblock tree-style-tab ublock-origin umatrix From bfd6fd64bfc816ed30dba6bf1b72b715e0f567eb Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 14 Jun 2024 16:27:21 +0200 Subject: [PATCH 176/562] Add youtube-shorts-block extension --- users/jalr/modules/firefox/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/modules/firefox/default.nix b/users/jalr/modules/firefox/default.nix index 9f40008..228c4db 100644 --- a/users/jalr/modules/firefox/default.nix +++ b/users/jalr/modules/firefox/default.nix @@ -273,6 +273,7 @@ ublock-origin umatrix violentmonkey + youtube-shorts-block ]; settings = { #"browser.startup.homepage" = "https://nixos.org"; From b3ea8ca1a76d6f614b692755c231290274e40c2a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 14 Jun 2024 22:59:08 +0200 Subject: [PATCH 177/562] Switch to terraform-ls as terraform-lsp does not recognize newer language features like the `one` function. --- users/jalr/modules/neovim.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index d2dbe58..f2b216d 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -186,8 +186,8 @@ in }; # Terraform - terraform_lsp = { - cmd = [ "${pkgs.terraform-lsp}/bin/terraform-lsp" "serve" ]; + terraformls = { + cmd = [ "${pkgs.terraform-ls}/bin/terraform-ls" "serve" ]; }; # YAML From 2b31ea0a82b56ea09ca5fb062ffceff55a927d57 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 16 Jun 2024 12:26:31 +0200 Subject: [PATCH 178/562] Hide forward-button as well --- users/jalr/modules/firefox/userChrome.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/users/jalr/modules/firefox/userChrome.css b/users/jalr/modules/firefox/userChrome.css index 291b8f8..889027a 100644 --- a/users/jalr/modules/firefox/userChrome.css +++ b/users/jalr/modules/firefox/userChrome.css @@ -239,7 +239,7 @@ url(chrome://browser/content/browser.xhtml) { } /* Hide back & forward buttons */ - toolbarbutton#back-button { + toolbarbutton#back-button, toolbarbutton#forward-button { display: none; } } From 9663b395ce97c438241d8463dafd7abd02e9ea5d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 18 Jun 2024 13:23:47 +0200 Subject: [PATCH 179/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/832a9f2c81ff3485404bd63952eadc17bf7ccef2' (2024-06-13) → 'github:nix-community/disko/8262659fc990cecdf6a8de74c3de7b6ec58c2276' (2024-06-17) • Updated input 'home-manager': 'github:nix-community/home-manager/845a5c4c073f74105022533907703441e0464bc3' (2024-06-04) → 'github:nix-community/home-manager/a1fddf0967c33754271761d91a3d921772b30d0e' (2024-06-16) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/d75003136c0fc94ee60e51806c2801ff572d06a6' (2024-06-13) → 'github:nixos/nixos-hardware/cde8f7e11f036160b0fd6a9e07dc4c8e4061cf06' (2024-06-16) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/cc54fb41d13736e92229c21627ea4f22199fee6b' (2024-06-12) → 'github:nixos/nixpkgs/752c634c09ceb50c45e751f8791cb45cb3d46c9e' (2024-06-15) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/b17538d34de26bf52626a9caff104a267abd991a' (2024-06-13) → 'github:NixOS/nixpkgs/3ef6d6e20f04c11b54321019286fbe7b4993081e' (2024-06-18) • Updated input 'nur': 'github:nix-community/NUR/90bcce2a42dec3c29e4a882cec70b370d714fa31' (2024-06-13) → 'github:nix-community/NUR/4f50a4040a3426e2257d35350e8f0fdc4eb2d9fe' (2024-06-18) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/304f8235fb0729fd48567af34fcd1b58d18f9b95' (2024-06-09) → 'github:nix-community/poetry2nix/3f2540f372429e99eb61e305e9aa942c63418504' (2024-06-18) • Updated input 'poetry2nix/treefmt-nix': 'github:numtide/treefmt-nix/3eb96ca1ae9edf792a8e0963cc92fddfa5a87706' (2024-06-01) → 'github:numtide/treefmt-nix/68eb1dc333ce82d0ab0c0357363ea17c31ea1f81' (2024-06-16) • Updated input 'sops-nix': 'github:Mic92/sops-nix/c279dec105dd53df13a5e57525da97905cc0f0d6' (2024-06-11) → 'github:Mic92/sops-nix/797ce4c1f45a85df6dd3d9abdc53f2691bea9251' (2024-06-16) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/4913a7c3d8b8d00cb9476a6bd730ff57777f740c' (2024-06-08) → 'github:NixOS/nixpkgs/c884223af91820615a6146af1ae1fea25c107005' (2024-06-15) --- flake.lock | 60 +++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/flake.lock b/flake.lock index ea56a86..322671d 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1718242063, - "narHash": "sha256-n3AWItJ4a94GT0cray/eUV7tt3mulQ52L+lWJN9d1E8=", + "lastModified": 1718588625, + "narHash": "sha256-8ZbrJq1jcmyzJ4SDkvd8JOZD4/fNUHpL4cpqVe4w3CU=", "owner": "nix-community", "repo": "disko", - "rev": "832a9f2c81ff3485404bd63952eadc17bf7ccef2", + "rev": "8262659fc990cecdf6a8de74c3de7b6ec58c2276", "type": "github" }, "original": { @@ -105,11 +105,11 @@ ] }, "locked": { - "lastModified": 1717527182, - "narHash": "sha256-vWSkg6AMok1UUQiSYVdGMOXKD2cDFnajITiSi0Zjd1A=", + "lastModified": 1718530513, + "narHash": "sha256-BmO8d0r+BVlwWtMLQEYnwmngqdXIuyFzMwvmTcLMee8=", "owner": "nix-community", "repo": "home-manager", - "rev": "845a5c4c073f74105022533907703441e0464bc3", + "rev": "a1fddf0967c33754271761d91a3d921772b30d0e", "type": "github" }, "original": { @@ -189,11 +189,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1718265846, - "narHash": "sha256-h4MnTID6ciFxtTvtl+ibXMKaG6iLMezCtUvKIfFG7r0=", + "lastModified": 1718548414, + "narHash": "sha256-1obyIuQPR/Kq1j5/i/5EuAfQrDwjYnjCDG8iLtXmBhQ=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "d75003136c0fc94ee60e51806c2801ff572d06a6", + "rev": "cde8f7e11f036160b0fd6a9e07dc4c8e4061cf06", "type": "github" }, "original": { @@ -205,11 +205,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1718208800, - "narHash": "sha256-US1tAChvPxT52RV8GksWZS415tTS7PV42KTc2PNDBmc=", + "lastModified": 1718437845, + "narHash": "sha256-ZT7Oc1g4I4pHVGGjQFnewFVDRLH5cIZhEzODLz9YXeY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "cc54fb41d13736e92229c21627ea4f22199fee6b", + "rev": "752c634c09ceb50c45e751f8791cb45cb3d46c9e", "type": "github" }, "original": { @@ -237,11 +237,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1717880976, - "narHash": "sha256-BRvSCsKtDUr83NEtbGfHLUOdDK0Cgbezj2PtcHnz+sQ=", + "lastModified": 1718478900, + "narHash": "sha256-v43N1gZLcGkhg3PdcrKUNIZ1L0FBzB2JqhIYEyKAHEs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4913a7c3d8b8d00cb9476a6bd730ff57777f740c", + "rev": "c884223af91820615a6146af1ae1fea25c107005", "type": "github" }, "original": { @@ -253,11 +253,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1718276662, - "narHash": "sha256-p0KXZc6ekKXwYcMeyS5Hs9uTQKoSDkJW1QDf0gkilLk=", + "lastModified": 1718709602, + "narHash": "sha256-3FrviFpJCl0WO0Cp4k+SMSKlqFPienMGxssr0lAswpo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b17538d34de26bf52626a9caff104a267abd991a", + "rev": "3ef6d6e20f04c11b54321019286fbe7b4993081e", "type": "github" }, "original": { @@ -269,11 +269,11 @@ }, "nur": { "locked": { - "lastModified": 1718276606, - "narHash": "sha256-3yL4mmgQL/WfUK/FZrjO6kYK2CRhfL/7+K1G83Lfigs=", + "lastModified": 1718703915, + "narHash": "sha256-PT4FT+JbQA2eRxKmrOhlTAGYctfCR1oGxSbCJ8521q8=", "owner": "nix-community", "repo": "NUR", - "rev": "90bcce2a42dec3c29e4a882cec70b370d714fa31", + "rev": "4f50a4040a3426e2257d35350e8f0fdc4eb2d9fe", "type": "github" }, "original": { @@ -295,11 +295,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1717965289, - "narHash": "sha256-62VsS1MvwcsyYWnxxOD9rX5yqDUvMXH7qE3Kj8HECYE=", + "lastModified": 1718708370, + "narHash": "sha256-pUfmjLFM7q/TsYTGgzJKtYgKx42/UdMdUF7CpM4F89A=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "304f8235fb0729fd48567af34fcd1b58d18f9b95", + "rev": "3f2540f372429e99eb61e305e9aa942c63418504", "type": "github" }, "original": { @@ -332,11 +332,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1718137936, - "narHash": "sha256-psA+1Q5fPaK6yI3vzlLINNtb6EeXj111zQWnZYyJS9c=", + "lastModified": 1718506969, + "narHash": "sha256-Pm9I/BMQHbsucdWf6y9G3xBZh3TMlThGo4KBbeoeczg=", "owner": "Mic92", "repo": "sops-nix", - "rev": "c279dec105dd53df13a5e57525da97905cc0f0d6", + "rev": "797ce4c1f45a85df6dd3d9abdc53f2691bea9251", "type": "github" }, "original": { @@ -382,11 +382,11 @@ ] }, "locked": { - "lastModified": 1717278143, - "narHash": "sha256-u10aDdYrpiGOLoxzY/mJ9llST9yO8Q7K/UlROoNxzDw=", + "lastModified": 1718522839, + "narHash": "sha256-ULzoKzEaBOiLRtjeY3YoGFJMwWSKRYOic6VNw2UyTls=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "3eb96ca1ae9edf792a8e0963cc92fddfa5a87706", + "rev": "68eb1dc333ce82d0ab0c0357363ea17c31ea1f81", "type": "github" }, "original": { From 749710bbfb5b9e1162fd0a46d905bb515ba0344e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 19 Jun 2024 00:29:59 +0200 Subject: [PATCH 180/562] Add screenshare script --- users/jalr/modules/sway/default.nix | 1 + users/jalr/modules/sway/screenshare.nix | 55 +++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 users/jalr/modules/sway/screenshare.nix diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index 52e7600..cdc6614 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -40,6 +40,7 @@ in { imports = lib.optionals nixosConfig.jalr.gui.enable [ ./gammastep.nix + ./screenshare.nix ./waybar.nix ./wofi.nix ./wofi-bluetooth.nix diff --git a/users/jalr/modules/sway/screenshare.nix b/users/jalr/modules/sway/screenshare.nix new file mode 100644 index 0000000..c5a21d6 --- /dev/null +++ b/users/jalr/modules/sway/screenshare.nix @@ -0,0 +1,55 @@ +{ pkgs, ... }: +{ + home.packages = [ + ( + pkgs.writeShellScriptBin "screenshare" '' + # https://github.com/emersion/xdg-desktop-portal-wlr/issues/107 + + case "$1" in + start) + # Step 1: Create a new output + swaymsg create_output + + # Step 2: Find the name of the newly created output + NEW_OUTPUT=$(swaymsg -t get_outputs | jq -r '.[] | select(.name | startswith("HEADLESS-")) | .name' | sort | tail -n 1) + + # Check if the output was successfully created + if [ -z "$NEW_OUTPUT" ]; then + echo "Failed to create a new output." + exit 1 + fi + + # Step 3: Assign a workspace to the new output + swaymsg workspace sshr output "$NEW_OUTPUT" + + # Step 4: Set the resolution for the new output + swaymsg output "$NEW_OUTPUT" resolution 1280x720 + + # Step 5: Set the background color for the new output + swaymsg output "$NEW_OUTPUT" bg "#220900" solid_color + + # Step 6: Switch to workspace sshr and then back to the previous workspace + CURRENT_WORKSPACE=$(swaymsg -t get_workspaces | jq -r '.[] | select(.focused) | .name') + swaymsg workspace sshr + swaymsg workspace "$CURRENT_WORKSPACE" + ;; + stop) + headless_outputs=$(swaymsg -t get_outputs | jq -r '.[] | select(.name | startswith("HEADLESS-")) | .name') + + # Check if there are any HEADLESS outputs + if [ -z "$headless_outputs" ]; then + echo "No HEADLESS outputs found." + exit 0 + fi + + # Unplug each HEADLESS output + for output in $headless_outputs; do + echo "Unplugging $output..." + swaymsg output "$output" unplug + done + ;; + esac + '' + ) + ]; +} From e27557693ae11c6214c15d36a937284c1810247a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 19 Jun 2024 00:33:39 +0200 Subject: [PATCH 181/562] Add wl-mirror --- users/jalr/modules/sway/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index cdc6614..6712c0a 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -49,12 +49,13 @@ in } // (lib.mkIf nixosConfig.jalr.gui.enable { home.packages = with pkgs; [ gsettings + mako + slurp swappy # screenshot editing sway-contrib.grimshot # screenshots wdisplays # graphical output manager - mako - slurp wl-clipboard + wl-mirror ]; home.sessionVariables = { From bc8041f605b0f543deebf2c04a2d7cf3aeeb67ac Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 19 Jun 2024 12:57:46 +0200 Subject: [PATCH 182/562] Hide waybar on output `HEADLESS-1` --- users/jalr/modules/sway/waybar.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index 5f9c2f5..f388388 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -24,6 +24,10 @@ in # home-manager’s waybar module performs additional checks that are overly strict xdg.configFile."waybar/config".text = lib.generators.toJSON { } { layer = "top"; + output = [ + "!HEADLESS-1" + "*" + ]; position = "top"; height = 24; From 5f3d72d12abfe1ceefd83cd127e39ddf4c6ea2ae Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 19 Jun 2024 12:57:04 +0200 Subject: [PATCH 183/562] Add lazygit --- users/jalr/modules/git.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/users/jalr/modules/git.nix b/users/jalr/modules/git.nix index d6acd8b..1090f43 100644 --- a/users/jalr/modules/git.nix +++ b/users/jalr/modules/git.nix @@ -22,6 +22,9 @@ }; lfs.enable = true; }; + lazygit = { + enable = true; + }; fish = { shellAbbrs = { ga = "git add"; @@ -58,6 +61,7 @@ gswc = "git switch -c"; gwl = "git worktree list"; gwr = "git worktree remove"; + lg = "lazygit"; }; functions = { #function gwa -d 'git worktree add' From 5607e43c50083b994abb4b34c4822e53883e0e1c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 19 Jun 2024 12:57:13 +0200 Subject: [PATCH 184/562] Remove tig --- users/jalr/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/users/jalr/default.nix b/users/jalr/default.nix index ae1253d..5541c6b 100644 --- a/users/jalr/default.nix +++ b/users/jalr/default.nix @@ -55,7 +55,6 @@ in nmap psutils pwgen - tig ]; accounts.email.accounts = { From ea16e50463c6ea82c9a7671dfb0fb61de5fff538 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 19 Jun 2024 13:26:29 +0200 Subject: [PATCH 185/562] Add icons to eza --- users/jalr/modules/fish.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index 70d1c74..fa0b7e1 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -65,11 +65,11 @@ # fancy tools if which eza > /dev/null 2>&1 - abbr --add l eza - abbr --add ll 'eza -l --time-style=long-iso --git' - abbr --add la 'eza -la --time-style=long-iso --git' - abbr --add tree 'eza --tree' - abbr --add llt 'eza -s modified -l' + abbr --add l eza --icons + abbr --add ll 'eza -l --time-style=long-iso --git --icons' + abbr --add la 'eza -la --time-style=long-iso --git --icons' + abbr --add tree 'eza --tree --icons' + abbr --add llt 'eza -s modified -l --icons' else abbr --add l ls abbr --add ll 'ls -l' From 4d7a9dc44f90a9a515ae5b7ed5154b68a0fb4a61 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 19 Jun 2024 13:36:08 +0200 Subject: [PATCH 186/562] Use home-manager option for eza --- users/jalr/modules/cli/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/users/jalr/modules/cli/default.nix b/users/jalr/modules/cli/default.nix index 82cb395..978c846 100644 --- a/users/jalr/modules/cli/default.nix +++ b/users/jalr/modules/cli/default.nix @@ -7,7 +7,6 @@ config = { home.packages = with pkgs; [ cached-nix-shell - eza fd file inetutils @@ -25,5 +24,7 @@ wget yt-dlp ]); + + programs.eza.enable = true; }; } From 02476ebba6f82d2bc1a27919ade37cde23cf0e94 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 19 Jun 2024 13:36:38 +0200 Subject: [PATCH 187/562] Add `ls` alias to eza if it is enabled --- users/jalr/modules/fish.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index fa0b7e1..f9c2cf2 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -28,7 +28,7 @@ } ]; shellAliases = { - ls = "ls --color=auto"; + ls = if config.programs.eza.enable then "eza --git --icons" else "ls --color=auto"; crontab = "crontab -i"; }; From 177c024d0a5141374b3b42ee8e16cec2ee6eb962 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 23 Jun 2024 20:05:57 +0200 Subject: [PATCH 188/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/8262659fc990cecdf6a8de74c3de7b6ec58c2276' (2024-06-17) → 'github:nix-community/disko/e1174d991944a01eaaa04bc59c6281edca4c0e6e' (2024-06-20) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/cc4d466cb1254af050ff7bdf47f6d404a7c646d1' (2024-06-06) → 'github:cachix/git-hooks.nix/8cd35b9496d21a6c55164d8547d9d5280162b07a' (2024-06-20) • Updated input 'nix-pre-commit-hooks/nixpkgs-stable': 'github:NixOS/nixpkgs/614b4613980a522ba49f0d194531beddbb7220d3' (2024-03-17) → 'github:NixOS/nixpkgs/842253bf992c3a7157b67600c2857193f126563a' (2024-06-15) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/cde8f7e11f036160b0fd6a9e07dc4c8e4061cf06' (2024-06-16) → 'github:nixos/nixos-hardware/c3e48cbd88414f583ff08804eb57b0da4c194f9e' (2024-06-23) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/752c634c09ceb50c45e751f8791cb45cb3d46c9e' (2024-06-15) → 'github:nixos/nixpkgs/dd457de7e08c6d06789b1f5b88fc9327f4d96309' (2024-06-19) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/3ef6d6e20f04c11b54321019286fbe7b4993081e' (2024-06-18) → 'github:NixOS/nixpkgs/e0ba5d6aaf27ed0deb1ad168bd151a6fd23634f1' (2024-06-23) • Updated input 'nur': 'github:nix-community/NUR/4f50a4040a3426e2257d35350e8f0fdc4eb2d9fe' (2024-06-18) → 'github:nix-community/NUR/72137385988d41b40f749b9203f9ba831f4fbe04' (2024-06-23) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/3f2540f372429e99eb61e305e9aa942c63418504' (2024-06-18) → 'github:nix-community/poetry2nix/5392004e2b350afda0dd5e92ccd53ab9b1261947' (2024-06-20) • Updated input 'sops-nix': 'github:Mic92/sops-nix/797ce4c1f45a85df6dd3d9abdc53f2691bea9251' (2024-06-16) → 'github:Mic92/sops-nix/5e2e9421e9ed2b918be0a441c4535cfa45e04811' (2024-06-23) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/c884223af91820615a6146af1ae1fea25c107005' (2024-06-15) → 'github:NixOS/nixpkgs/5e8e3b89adbd0be63192f6e645e0a54080004924' (2024-06-22) --- flake.lock | 60 +++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/flake.lock b/flake.lock index 322671d..473ab19 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1718588625, - "narHash": "sha256-8ZbrJq1jcmyzJ4SDkvd8JOZD4/fNUHpL4cpqVe4w3CU=", + "lastModified": 1718846788, + "narHash": "sha256-9dtXYtEkmXoUJV+PGLqscqF7qTn4AIhAKpFWRFU2NYs=", "owner": "nix-community", "repo": "disko", - "rev": "8262659fc990cecdf6a8de74c3de7b6ec58c2276", + "rev": "e1174d991944a01eaaa04bc59c6281edca4c0e6e", "type": "github" }, "original": { @@ -173,11 +173,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1717664902, - "narHash": "sha256-7XfBuLULizXjXfBYy/VV+SpYMHreNRHk9nKMsm1bgb4=", + "lastModified": 1718879355, + "narHash": "sha256-RTyqP4fBX2MdhNuMP+fnR3lIwbdtXhyj7w7fwtvgspc=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "cc4d466cb1254af050ff7bdf47f6d404a7c646d1", + "rev": "8cd35b9496d21a6c55164d8547d9d5280162b07a", "type": "github" }, "original": { @@ -189,11 +189,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1718548414, - "narHash": "sha256-1obyIuQPR/Kq1j5/i/5EuAfQrDwjYnjCDG8iLtXmBhQ=", + "lastModified": 1719145664, + "narHash": "sha256-+0bBlerLxsHUJcKPDWZM1wL3V9bzCFjz+VyRTG8fnUA=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "cde8f7e11f036160b0fd6a9e07dc4c8e4061cf06", + "rev": "c3e48cbd88414f583ff08804eb57b0da4c194f9e", "type": "github" }, "original": { @@ -205,11 +205,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1718437845, - "narHash": "sha256-ZT7Oc1g4I4pHVGGjQFnewFVDRLH5cIZhEzODLz9YXeY=", + "lastModified": 1718835956, + "narHash": "sha256-wM9v2yIxClRYsGHut5vHICZTK7xdrUGfrLkXvSuv6s4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "752c634c09ceb50c45e751f8791cb45cb3d46c9e", + "rev": "dd457de7e08c6d06789b1f5b88fc9327f4d96309", "type": "github" }, "original": { @@ -221,11 +221,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "lastModified": 1718447546, + "narHash": "sha256-JHuXsrC9pr4kA4n7LuuPfWFJUVlDBVJ1TXDVpHEuUgM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "rev": "842253bf992c3a7157b67600c2857193f126563a", "type": "github" }, "original": { @@ -237,11 +237,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1718478900, - "narHash": "sha256-v43N1gZLcGkhg3PdcrKUNIZ1L0FBzB2JqhIYEyKAHEs=", + "lastModified": 1719099622, + "narHash": "sha256-YzJECAxFt+U5LPYf/pCwW/e1iUd2PF21WITHY9B/BAs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c884223af91820615a6146af1ae1fea25c107005", + "rev": "5e8e3b89adbd0be63192f6e645e0a54080004924", "type": "github" }, "original": { @@ -253,11 +253,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1718709602, - "narHash": "sha256-3FrviFpJCl0WO0Cp4k+SMSKlqFPienMGxssr0lAswpo=", + "lastModified": 1719164991, + "narHash": "sha256-acO5Qg3aA0t4+zd7lLwMZRZz4jothylV1maUeA+CI0g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3ef6d6e20f04c11b54321019286fbe7b4993081e", + "rev": "e0ba5d6aaf27ed0deb1ad168bd151a6fd23634f1", "type": "github" }, "original": { @@ -269,11 +269,11 @@ }, "nur": { "locked": { - "lastModified": 1718703915, - "narHash": "sha256-PT4FT+JbQA2eRxKmrOhlTAGYctfCR1oGxSbCJ8521q8=", + "lastModified": 1719160963, + "narHash": "sha256-hm2XunlO5oD0xh9Z0r1kIQj8UEt1vYeyyFlieN8hkHI=", "owner": "nix-community", "repo": "NUR", - "rev": "4f50a4040a3426e2257d35350e8f0fdc4eb2d9fe", + "rev": "72137385988d41b40f749b9203f9ba831f4fbe04", "type": "github" }, "original": { @@ -295,11 +295,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1718708370, - "narHash": "sha256-pUfmjLFM7q/TsYTGgzJKtYgKx42/UdMdUF7CpM4F89A=", + "lastModified": 1718881664, + "narHash": "sha256-ZULRSiURptz6Da+yECzQDS30IIEAEOYyIAv5rs+p9Fg=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "3f2540f372429e99eb61e305e9aa942c63418504", + "rev": "5392004e2b350afda0dd5e92ccd53ab9b1261947", "type": "github" }, "original": { @@ -332,11 +332,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1718506969, - "narHash": "sha256-Pm9I/BMQHbsucdWf6y9G3xBZh3TMlThGo4KBbeoeczg=", + "lastModified": 1719111739, + "narHash": "sha256-kr2QzRrplzlCP87ddayCZQS+dhGW98kw2zy7+jUXtF4=", "owner": "Mic92", "repo": "sops-nix", - "rev": "797ce4c1f45a85df6dd3d9abdc53f2691bea9251", + "rev": "5e2e9421e9ed2b918be0a441c4535cfa45e04811", "type": "github" }, "original": { From 8b83a6a1ef95502dd4ef319f5da569dbad4dde9e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 23 Jun 2024 20:38:30 +0200 Subject: [PATCH 189/562] Fix lamp going dark on low brightness --- .../esphome/devices/chinafrickeldeckenleuchte.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml b/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml index 205d23d..0edcf9f 100644 --- a/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml +++ b/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml @@ -14,22 +14,32 @@ output: id: output_ch1 channel: 1 current: 20 + min_power: 0.02 + zero_means_zero: true - platform: bp5758d id: output_ch2 channel: 2 current: 20 + min_power: 0.02 + zero_means_zero: true - platform: bp5758d id: output_ch3 channel: 3 current: 20 + min_power: 0.02 + zero_means_zero: true - platform: bp5758d id: output_ch4 channel: 4 current: 80 + min_power: 0.02 + zero_means_zero: true - platform: bp5758d id: output_ch5 channel: 5 current: 80 + min_power: 0.02 + zero_means_zero: true light: - platform: rgbww From f187754465b59f56e9a0ae02e720ab1c72735403 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 23 Jun 2024 23:18:26 +0200 Subject: [PATCH 190/562] Add door opener button --- .../services/esphome/devices/tuerschloss.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/hosts/iron/services/esphome/devices/tuerschloss.yaml b/hosts/iron/services/esphome/devices/tuerschloss.yaml index 4b8f7f5..b662b56 100644 --- a/hosts/iron/services/esphome/devices/tuerschloss.yaml +++ b/hosts/iron/services/esphome/devices/tuerschloss.yaml @@ -44,6 +44,10 @@ output: output: true open_drain: true id: btn_lock + - platform: gpio + pin: + number: GPIO3 + id: btn_open lock: - platform: template @@ -62,3 +66,14 @@ lock: - output.turn_off: btn_unlock - delay: 5s - lambda: id(tuerschloss).publish_state(LOCK_STATE_UNLOCKED); + +button: + - platform: template + name: "Türöffner" + id: tueroeffner + icon: mdi:lock-open + on_press: + - logger.log: "Button pressed" + - output.turn_on: btn_open + - delay: 250ms + - output.turn_off: btn_open From 519bc0cf944afb3bbe9830f742a44bde2c8cd64a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 24 Jun 2024 00:26:17 +0200 Subject: [PATCH 191/562] Update VESC tool --- pkgs/vesc-tool/firmware.nix | 6 ++---- pkgs/vesc-tool/tool.nix | 13 ++++++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/pkgs/vesc-tool/firmware.nix b/pkgs/vesc-tool/firmware.nix index cb16051..50613f9 100644 --- a/pkgs/vesc-tool/firmware.nix +++ b/pkgs/vesc-tool/firmware.nix @@ -13,10 +13,8 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "vedderb"; repo = "bldc"; - rev = "6.00"; - sha256 = "XeIS+3SOKeTkbsx/aCy0FRw/LVXBbLpAqz6upN5HJUY="; - #rev = "5b6cc075d3cfa62bd52a05fad0195fae114d914c"; - #sha256 = "SB/mQEYY2Bi2xl5qniKdShMQ0vdrVuLtiWWH4D1U0tw="; + rev = "f7c2b34e1cff2234cae98be3abf0cd50e249558f"; # release_6_02 + sha256 = "BJwxmtYjQhxV8O0Ze9k0cPz0ubJnq5ePUd/9tGx35jo="; fetchSubmodules = true; }; diff --git a/pkgs/vesc-tool/tool.nix b/pkgs/vesc-tool/tool.nix index 2a23fa3..ee9f906 100644 --- a/pkgs/vesc-tool/tool.nix +++ b/pkgs/vesc-tool/tool.nix @@ -24,8 +24,10 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "vedderb"; repo = "vesc_tool"; - rev = "6d9d6d7f17c8756a272c267659849ea9c9404efa"; - sha256 = "EXXWAwX3yPirhe83wz5/vEectieHeUAkIla7ICxzMow="; + #rev = "f3c6fe5f5dcf0cb2fba7676204ea3db1dc8ff4ee"; # release_6_02 + rev = "4a0edea5846d973e5da510fbe11ce009aaf21a96"; + sha256 = "18ue6YBVcggr4qyHpCorrh01oeo4i58Jgp9Twaq+DlI="; + fetchSubmodules = true; }; @@ -64,7 +66,8 @@ stdenv.mkDerivation rec { cp build/lin/* $out/bin ''; - postFixup = '' - wrapQtApp $out/bin/vesc_tool_6.02 - ''; + #postFixup = '' + # #wrapQtApp $out/bin/vesc_tool_6.05 + # #Builder called die: Cannot wrap '/nix/store/yppigini483d9kj8sn1cbjxp4cy81qqj-vesc_tool-master/bin/vesc_tool_6.02' because it is not an executable file + #''; } From 256db2b5dc2cbb9758ed2a9e46b4555a57dab18a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 25 Jun 2024 18:51:34 +0200 Subject: [PATCH 192/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/e1174d991944a01eaaa04bc59c6281edca4c0e6e' (2024-06-20) → 'github:nix-community/disko/dd4d1663ccf7fbdb32361b9afe9e71206584cd4c' (2024-06-24) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/8cd35b9496d21a6c55164d8547d9d5280162b07a' (2024-06-20) → 'github:cachix/git-hooks.nix/0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07' (2024-06-24) • Updated input 'nix-pre-commit-hooks/nixpkgs-stable': 'github:NixOS/nixpkgs/842253bf992c3a7157b67600c2857193f126563a' (2024-06-15) → 'github:NixOS/nixpkgs/03d771e513ce90147b65fe922d87d3a0356fc125' (2024-06-19) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/c3e48cbd88414f583ff08804eb57b0da4c194f9e' (2024-06-23) → 'github:nixos/nixos-hardware/caabc425565bbd5c8640630b0bf6974961a49242' (2024-06-25) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/dd457de7e08c6d06789b1f5b88fc9327f4d96309' (2024-06-19) → 'github:nixos/nixpkgs/e4509b3a560c87a8d4cb6f9992b8915abf9e36d8' (2024-06-23) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/e0ba5d6aaf27ed0deb1ad168bd151a6fd23634f1' (2024-06-23) → 'github:NixOS/nixpkgs/5ef104ab485523f3cb2665a068b6462dd4122521' (2024-06-25) • Updated input 'nur': 'github:nix-community/NUR/72137385988d41b40f749b9203f9ba831f4fbe04' (2024-06-23) → 'github:nix-community/NUR/8039bbf50a73c2b192f4fdc1a8518ba44e3c6117' (2024-06-25) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/5392004e2b350afda0dd5e92ccd53ab9b1261947' (2024-06-20) → 'github:nix-community/poetry2nix/46ce1e17d4a97a3cd5bf5433a7afd8d3e09ee106' (2024-06-24) • Updated input 'sops-nix': 'github:Mic92/sops-nix/5e2e9421e9ed2b918be0a441c4535cfa45e04811' (2024-06-23) → 'github:Mic92/sops-nix/c2ea1186c0cbfa4d06d406ae50f3e4b085ddc9b3' (2024-06-24) --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index 473ab19..da7ae0e 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1718846788, - "narHash": "sha256-9dtXYtEkmXoUJV+PGLqscqF7qTn4AIhAKpFWRFU2NYs=", + "lastModified": 1719236180, + "narHash": "sha256-VZAfBk2Lo8hQy/NQ4XVSpTICT0ownXBUi1QvGfdlxaM=", "owner": "nix-community", "repo": "disko", - "rev": "e1174d991944a01eaaa04bc59c6281edca4c0e6e", + "rev": "dd4d1663ccf7fbdb32361b9afe9e71206584cd4c", "type": "github" }, "original": { @@ -173,11 +173,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1718879355, - "narHash": "sha256-RTyqP4fBX2MdhNuMP+fnR3lIwbdtXhyj7w7fwtvgspc=", + "lastModified": 1719259945, + "narHash": "sha256-F1h+XIsGKT9TkGO3omxDLEb/9jOOsI6NnzsXFsZhry4=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "8cd35b9496d21a6c55164d8547d9d5280162b07a", + "rev": "0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07", "type": "github" }, "original": { @@ -189,11 +189,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1719145664, - "narHash": "sha256-+0bBlerLxsHUJcKPDWZM1wL3V9bzCFjz+VyRTG8fnUA=", + "lastModified": 1719322773, + "narHash": "sha256-BqPxtFwXrpJQDh65NOIHX99pz2rtIMshG9Mt2xnnc5c=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "c3e48cbd88414f583ff08804eb57b0da4c194f9e", + "rev": "caabc425565bbd5c8640630b0bf6974961a49242", "type": "github" }, "original": { @@ -205,11 +205,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1718835956, - "narHash": "sha256-wM9v2yIxClRYsGHut5vHICZTK7xdrUGfrLkXvSuv6s4=", + "lastModified": 1719145550, + "narHash": "sha256-K0i/coxxTEl30tgt4oALaylQfxqbotTSNb1/+g+mKMQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "dd457de7e08c6d06789b1f5b88fc9327f4d96309", + "rev": "e4509b3a560c87a8d4cb6f9992b8915abf9e36d8", "type": "github" }, "original": { @@ -221,11 +221,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1718447546, - "narHash": "sha256-JHuXsrC9pr4kA4n7LuuPfWFJUVlDBVJ1TXDVpHEuUgM=", + "lastModified": 1718811006, + "narHash": "sha256-0Y8IrGhRmBmT7HHXlxxepg2t8j1X90++qRN3lukGaIk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "842253bf992c3a7157b67600c2857193f126563a", + "rev": "03d771e513ce90147b65fe922d87d3a0356fc125", "type": "github" }, "original": { @@ -253,11 +253,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1719164991, - "narHash": "sha256-acO5Qg3aA0t4+zd7lLwMZRZz4jothylV1maUeA+CI0g=", + "lastModified": 1719331463, + "narHash": "sha256-qaQvb9Dvq1iBHSWmTJfHK7NTGVA5HjWp7y8hY9X8m/s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e0ba5d6aaf27ed0deb1ad168bd151a6fd23634f1", + "rev": "5ef104ab485523f3cb2665a068b6462dd4122521", "type": "github" }, "original": { @@ -269,11 +269,11 @@ }, "nur": { "locked": { - "lastModified": 1719160963, - "narHash": "sha256-hm2XunlO5oD0xh9Z0r1kIQj8UEt1vYeyyFlieN8hkHI=", + "lastModified": 1719333593, + "narHash": "sha256-9ktfPXvz+0BNjZTnjqlgMRdCNkI+6jkmQWSNuNp14jM=", "owner": "nix-community", "repo": "NUR", - "rev": "72137385988d41b40f749b9203f9ba831f4fbe04", + "rev": "8039bbf50a73c2b192f4fdc1a8518ba44e3c6117", "type": "github" }, "original": { @@ -295,11 +295,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1718881664, - "narHash": "sha256-ZULRSiURptz6Da+yECzQDS30IIEAEOYyIAv5rs+p9Fg=", + "lastModified": 1719235245, + "narHash": "sha256-ZzAr51YObcqaDyQtAmW9ggjIPxVBcScnbDP7YluChoA=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "5392004e2b350afda0dd5e92ccd53ab9b1261947", + "rev": "46ce1e17d4a97a3cd5bf5433a7afd8d3e09ee106", "type": "github" }, "original": { @@ -332,11 +332,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1719111739, - "narHash": "sha256-kr2QzRrplzlCP87ddayCZQS+dhGW98kw2zy7+jUXtF4=", + "lastModified": 1719268571, + "narHash": "sha256-pcUk2Fg5vPXLUEnFI97qaB8hto/IToRfqskFqsjvjb8=", "owner": "Mic92", "repo": "sops-nix", - "rev": "5e2e9421e9ed2b918be0a441c4535cfa45e04811", + "rev": "c2ea1186c0cbfa4d06d406ae50f3e4b085ddc9b3", "type": "github" }, "original": { From a8b74142e1e8e9f764db29aa313c9ae3dfca50fc Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 26 Jun 2024 20:26:13 +0200 Subject: [PATCH 193/562] Replace docker-compose with podman-compose --- modules/podman.nix | 4 ++++ users/jalr/default.nix | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/podman.nix b/modules/podman.nix index d7453a9..79486f1 100644 --- a/modules/podman.nix +++ b/modules/podman.nix @@ -1,7 +1,11 @@ +{ pkgs, ... }: { virtualisation.podman = { enable = true; dockerCompat = true; dockerSocket.enable = true; }; + environment.systemPackages = with pkgs; [ + podman-compose + ]; } diff --git a/users/jalr/default.nix b/users/jalr/default.nix index 5541c6b..09de610 100644 --- a/users/jalr/default.nix +++ b/users/jalr/default.nix @@ -49,7 +49,6 @@ in # common asciinema bat - docker-compose envsubst gnupg nmap From 2f7e11240e5d73478b20afc8e9429d517fa74780 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 26 Jun 2024 20:27:54 +0200 Subject: [PATCH 194/562] Add port redirection for web development I'm using rootless containers and these can't bind to privileged ports. --- hosts/copper/configuration.nix | 1 + hosts/copper/services/default.nix | 5 ++++ hosts/copper/services/webdev.nix | 50 +++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 hosts/copper/services/default.nix create mode 100644 hosts/copper/services/webdev.nix diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index 84bd964..3a3cfa4 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -3,6 +3,7 @@ ./hardware-configuration.nix ./disko.nix ../../users/jalr + ./services ]; networking = { diff --git a/hosts/copper/services/default.nix b/hosts/copper/services/default.nix new file mode 100644 index 0000000..f407703 --- /dev/null +++ b/hosts/copper/services/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./webdev.nix + ]; +} diff --git a/hosts/copper/services/webdev.nix b/hosts/copper/services/webdev.nix new file mode 100644 index 0000000..5236f67 --- /dev/null +++ b/hosts/copper/services/webdev.nix @@ -0,0 +1,50 @@ +{ pkgs, lib, ... }: +{ + systemd.services = lib.attrsets.mapAttrs' + ( + name: mapping: lib.attrsets.nameValuePair "redir-${name}" { + description = "Port redirection for local development web server (${name})"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + AmbientCapabilities = "CAP_NET_BIND_SERVICE"; + BindReadOnlyPaths = [ "/nix/store" ]; + CapabilityBoundingSet = "CAP_NET_BIND_SERVICE"; + DynamicUser = true; + ExecStart = "${pkgs.redir}/bin/redir -n 127.0.0.1:${toString mapping.to} 127.0.0.1:${toString mapping.from}"; + IPAddressAllow = "localhost"; + IPAddressDeny = "any"; + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateDevices = lib.mkForce true; + PrivateTmp = true; + ProcSubset = "pid"; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "noaccess"; + ProtectSystem = "strict"; + ReadWritePaths = ""; + RemoveIPC = true; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + RootDirectory = "/run/redir-https"; + RuntimeDirectory = "redir-https"; + SystemCallArchitectures = "native"; + SystemCallFilter = [ "@system-service" "~@privileged" "~@resources" ]; + Type = "exec"; + }; + } + ) + { + http = { from = 8080; to = 80; }; + https = { from = 8443; to = 443; }; + }; +} From 9721f59c20cbc46f9e56f2a08708640ef6dacb20 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 26 Jun 2024 20:29:18 +0200 Subject: [PATCH 195/562] Resolve subdomains for `localhost` to 127.0.0.1 I'm using it for local web development. --- modules/dns.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/dns.nix b/modules/dns.nix index 20d1feb..5cbac18 100644 --- a/modules/dns.nix +++ b/modules/dns.nix @@ -31,6 +31,9 @@ in "/login.wifionice.de/172.18.0.1" "${dnscryptListenAddress}#${toString dnscryptListenPort}" ]; + address = [ + "/localhost/127.0.0.1" + ]; no-resolv = true; interface = "lo"; listen-address = [ From 73c1f0ca63ade7bbc793f00d74c6b27597affc60 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 28 Jun 2024 15:18:47 +0200 Subject: [PATCH 196/562] Add ardour --- users/jalr/modules/ardour.nix | 8 ++++++++ users/jalr/modules/default.nix | 1 + 2 files changed, 9 insertions(+) create mode 100644 users/jalr/modules/ardour.nix diff --git a/users/jalr/modules/ardour.nix b/users/jalr/modules/ardour.nix new file mode 100644 index 0000000..4d3d5ac --- /dev/null +++ b/users/jalr/modules/ardour.nix @@ -0,0 +1,8 @@ +{ nixosConfig, lib, pkgs, ... }: +lib.mkIf nixosConfig.jalr.gui.enable { + home.packages = with pkgs; [ + ardour + x42-plugins + ]; + home.sessionVariables.LV2_PATH = "${pkgs.x42-plugins}/lib/lv2/"; +} diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index f9b1fdf..6f4adf6 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -4,6 +4,7 @@ imports = [ ./3d-printing.nix ./alacritty.nix + ./ardour.nix ./aws.nix ./cli ./communication From 754f35d898e86d575c27544e094037a1eef89e24 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 1 Jul 2024 16:46:10 +0200 Subject: [PATCH 197/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/dd4d1663ccf7fbdb32361b9afe9e71206584cd4c' (2024-06-24) → 'github:nix-community/disko/d185770ea261fb5cf81aa5ad1791b93a7834d12c' (2024-06-30) • Updated input 'home-manager': 'github:nix-community/home-manager/a1fddf0967c33754271761d91a3d921772b30d0e' (2024-06-16) → 'github:nix-community/home-manager/391ca6e950c2525b4f853cbe29922452c14eda82' (2024-07-01) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/caabc425565bbd5c8640630b0bf6974961a49242' (2024-06-25) → 'github:nixos/nixos-hardware/a59f00f5ac65b19382617ba00f360f8bc07ed3ac' (2024-06-29) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/e4509b3a560c87a8d4cb6f9992b8915abf9e36d8' (2024-06-23) → 'github:nixos/nixpkgs/7dca15289a1c2990efbe4680f0923ce14139b042' (2024-06-30) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/5ef104ab485523f3cb2665a068b6462dd4122521' (2024-06-25) → 'github:NixOS/nixpkgs/6a2724e5acba62d1b5f511ff318c4ead2b2fdfaa' (2024-07-01) • Updated input 'nur': 'github:nix-community/NUR/8039bbf50a73c2b192f4fdc1a8518ba44e3c6117' (2024-06-25) → 'github:nix-community/NUR/0575d7fb334ea662a0a03620780c87df0612eb9a' (2024-07-01) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/46ce1e17d4a97a3cd5bf5433a7afd8d3e09ee106' (2024-06-24) → 'github:nix-community/poetry2nix/4fd045cdb85f2a0173021a4717dc01d92d7ab2b2' (2024-06-28) • Updated input 'sops-nix': 'github:Mic92/sops-nix/c2ea1186c0cbfa4d06d406ae50f3e4b085ddc9b3' (2024-06-24) → 'github:Mic92/sops-nix/b5974d4331fb6c893e808977a2e1a6d34b3162d6' (2024-06-30) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/5e8e3b89adbd0be63192f6e645e0a54080004924' (2024-06-22) → 'github:NixOS/nixpkgs/4a1e673523344f6ccc84b37f4413ad74ea19a119' (2024-06-29) --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index da7ae0e..92fa0a5 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1719236180, - "narHash": "sha256-VZAfBk2Lo8hQy/NQ4XVSpTICT0ownXBUi1QvGfdlxaM=", + "lastModified": 1719733833, + "narHash": "sha256-6h2EqZU9bL9rHlXE+2LCBgnDImejzbS+4dYsNDDFlkY=", "owner": "nix-community", "repo": "disko", - "rev": "dd4d1663ccf7fbdb32361b9afe9e71206584cd4c", + "rev": "d185770ea261fb5cf81aa5ad1791b93a7834d12c", "type": "github" }, "original": { @@ -105,11 +105,11 @@ ] }, "locked": { - "lastModified": 1718530513, - "narHash": "sha256-BmO8d0r+BVlwWtMLQEYnwmngqdXIuyFzMwvmTcLMee8=", + "lastModified": 1719827385, + "narHash": "sha256-qs+nU20Sm8czHg3bhGCqiH+8e13BJyRrKONW34g3i50=", "owner": "nix-community", "repo": "home-manager", - "rev": "a1fddf0967c33754271761d91a3d921772b30d0e", + "rev": "391ca6e950c2525b4f853cbe29922452c14eda82", "type": "github" }, "original": { @@ -189,11 +189,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1719322773, - "narHash": "sha256-BqPxtFwXrpJQDh65NOIHX99pz2rtIMshG9Mt2xnnc5c=", + "lastModified": 1719681865, + "narHash": "sha256-Lp+l1IsREVbz8WM35OJYZz8sAH0XOjrZWUXVB5bJ2qg=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "caabc425565bbd5c8640630b0bf6974961a49242", + "rev": "a59f00f5ac65b19382617ba00f360f8bc07ed3ac", "type": "github" }, "original": { @@ -205,11 +205,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1719145550, - "narHash": "sha256-K0i/coxxTEl30tgt4oALaylQfxqbotTSNb1/+g+mKMQ=", + "lastModified": 1719707984, + "narHash": "sha256-RoxIr/fbndtuKqulGvNCcuzC6KdAib85Q8gXnjzA1dw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "e4509b3a560c87a8d4cb6f9992b8915abf9e36d8", + "rev": "7dca15289a1c2990efbe4680f0923ce14139b042", "type": "github" }, "original": { @@ -237,11 +237,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1719099622, - "narHash": "sha256-YzJECAxFt+U5LPYf/pCwW/e1iUd2PF21WITHY9B/BAs=", + "lastModified": 1719663039, + "narHash": "sha256-tXlrgAQygNIy49LDVFuPXlWD2zTQV9/F8pfoqwwPJyo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5e8e3b89adbd0be63192f6e645e0a54080004924", + "rev": "4a1e673523344f6ccc84b37f4413ad74ea19a119", "type": "github" }, "original": { @@ -253,11 +253,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1719331463, - "narHash": "sha256-qaQvb9Dvq1iBHSWmTJfHK7NTGVA5HjWp7y8hY9X8m/s=", + "lastModified": 1719844534, + "narHash": "sha256-fz0goydZPck6T7fWz5nSY74R5+V9DBepjQxYN3sKPYo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5ef104ab485523f3cb2665a068b6462dd4122521", + "rev": "6a2724e5acba62d1b5f511ff318c4ead2b2fdfaa", "type": "github" }, "original": { @@ -269,11 +269,11 @@ }, "nur": { "locked": { - "lastModified": 1719333593, - "narHash": "sha256-9ktfPXvz+0BNjZTnjqlgMRdCNkI+6jkmQWSNuNp14jM=", + "lastModified": 1719837916, + "narHash": "sha256-dV1URYa5SezYyz/1IDb1BHmIZ4tM0WtpPfVkFGH8xfY=", "owner": "nix-community", "repo": "NUR", - "rev": "8039bbf50a73c2b192f4fdc1a8518ba44e3c6117", + "rev": "0575d7fb334ea662a0a03620780c87df0612eb9a", "type": "github" }, "original": { @@ -295,11 +295,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1719235245, - "narHash": "sha256-ZzAr51YObcqaDyQtAmW9ggjIPxVBcScnbDP7YluChoA=", + "lastModified": 1719549552, + "narHash": "sha256-efvBV+45uQA6r7aov48H6MhvKp1QUIyIX5gh9oueUzs=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "46ce1e17d4a97a3cd5bf5433a7afd8d3e09ee106", + "rev": "4fd045cdb85f2a0173021a4717dc01d92d7ab2b2", "type": "github" }, "original": { @@ -332,11 +332,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1719268571, - "narHash": "sha256-pcUk2Fg5vPXLUEnFI97qaB8hto/IToRfqskFqsjvjb8=", + "lastModified": 1719716556, + "narHash": "sha256-KA9gy2Wkv76s4A8eLnOcdKVTygewbw3xsB8+awNMyqs=", "owner": "Mic92", "repo": "sops-nix", - "rev": "c2ea1186c0cbfa4d06d406ae50f3e4b085ddc9b3", + "rev": "b5974d4331fb6c893e808977a2e1a6d34b3162d6", "type": "github" }, "original": { From d834379c086adc435f1877f2ab6b095224256e9d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 2 Jul 2024 10:45:39 +0200 Subject: [PATCH 198/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/d185770ea261fb5cf81aa5ad1791b93a7834d12c' (2024-06-30) → 'github:nix-community/disko/544a80a69d6e2da04e4df7ec8210a858de8c7533' (2024-07-01) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/a59f00f5ac65b19382617ba00f360f8bc07ed3ac' (2024-06-29) → 'github:nixos/nixos-hardware/6e253f12b1009053eff5344be5e835f604bb64cd' (2024-07-02) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/7dca15289a1c2990efbe4680f0923ce14139b042' (2024-06-30) → 'github:nixos/nixpkgs/d032c1a6dfad4eedec7e35e91986becc699d7d69' (2024-07-01) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/6a2724e5acba62d1b5f511ff318c4ead2b2fdfaa' (2024-07-01) → 'github:NixOS/nixpkgs/e689d1116660575bac669cbbe1cc05999bbd2f0f' (2024-07-02) • Updated input 'nur': 'github:nix-community/NUR/0575d7fb334ea662a0a03620780c87df0612eb9a' (2024-07-01) → 'github:nix-community/NUR/6206fd683edcb79c4a0592cf25e610449ed0d82d' (2024-07-02) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/4fd045cdb85f2a0173021a4717dc01d92d7ab2b2' (2024-06-28) → 'github:nix-community/poetry2nix/42262f382c68afab1113ebd1911d0c93822d756e' (2024-07-01) • Updated input 'poetry2nix/treefmt-nix': 'github:numtide/treefmt-nix/68eb1dc333ce82d0ab0c0357363ea17c31ea1f81' (2024-06-16) → 'github:numtide/treefmt-nix/8df5ff62195d4e67e2264df0b7f5e8c9995fd0bd' (2024-06-30) • Updated input 'sops-nix': 'github:Mic92/sops-nix/b5974d4331fb6c893e808977a2e1a6d34b3162d6' (2024-06-30) → 'github:Mic92/sops-nix/a11224af8d824935f363928074b4717ca2e280db' (2024-07-01) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 92fa0a5..9bc5db0 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1719733833, - "narHash": "sha256-6h2EqZU9bL9rHlXE+2LCBgnDImejzbS+4dYsNDDFlkY=", + "lastModified": 1719864345, + "narHash": "sha256-e4Pw+30vFAxuvkSTaTypd9zYemB/QlWcH186dsGT+Ms=", "owner": "nix-community", "repo": "disko", - "rev": "d185770ea261fb5cf81aa5ad1791b93a7834d12c", + "rev": "544a80a69d6e2da04e4df7ec8210a858de8c7533", "type": "github" }, "original": { @@ -189,11 +189,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1719681865, - "narHash": "sha256-Lp+l1IsREVbz8WM35OJYZz8sAH0XOjrZWUXVB5bJ2qg=", + "lastModified": 1719895800, + "narHash": "sha256-xNbjISJTFailxass4LmdWeV4jNhAlmJPwj46a/GxE6M=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "a59f00f5ac65b19382617ba00f360f8bc07ed3ac", + "rev": "6e253f12b1009053eff5344be5e835f604bb64cd", "type": "github" }, "original": { @@ -205,11 +205,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1719707984, - "narHash": "sha256-RoxIr/fbndtuKqulGvNCcuzC6KdAib85Q8gXnjzA1dw=", + "lastModified": 1719838683, + "narHash": "sha256-Zw9rQjHz1ilNIimEXFeVa1ERNRBF8DoXDhLAZq5B4pE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "7dca15289a1c2990efbe4680f0923ce14139b042", + "rev": "d032c1a6dfad4eedec7e35e91986becc699d7d69", "type": "github" }, "original": { @@ -253,11 +253,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1719844534, - "narHash": "sha256-fz0goydZPck6T7fWz5nSY74R5+V9DBepjQxYN3sKPYo=", + "lastModified": 1719909084, + "narHash": "sha256-GxoaFEsoQZhP7YDzLhilmlUlX2vLnzsizM6ACQlbd8A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6a2724e5acba62d1b5f511ff318c4ead2b2fdfaa", + "rev": "e689d1116660575bac669cbbe1cc05999bbd2f0f", "type": "github" }, "original": { @@ -269,11 +269,11 @@ }, "nur": { "locked": { - "lastModified": 1719837916, - "narHash": "sha256-dV1URYa5SezYyz/1IDb1BHmIZ4tM0WtpPfVkFGH8xfY=", + "lastModified": 1719908032, + "narHash": "sha256-veUPZ3anuH+PQn/CLcNlP0oiuHctzeIDa2w+DzVGE4E=", "owner": "nix-community", "repo": "NUR", - "rev": "0575d7fb334ea662a0a03620780c87df0612eb9a", + "rev": "6206fd683edcb79c4a0592cf25e610449ed0d82d", "type": "github" }, "original": { @@ -295,11 +295,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1719549552, - "narHash": "sha256-efvBV+45uQA6r7aov48H6MhvKp1QUIyIX5gh9oueUzs=", + "lastModified": 1719850884, + "narHash": "sha256-UU/lVTHFx0GpEkihoLJrMuM9DcuhZmNe3db45vshSyI=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "4fd045cdb85f2a0173021a4717dc01d92d7ab2b2", + "rev": "42262f382c68afab1113ebd1911d0c93822d756e", "type": "github" }, "original": { @@ -332,11 +332,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1719716556, - "narHash": "sha256-KA9gy2Wkv76s4A8eLnOcdKVTygewbw3xsB8+awNMyqs=", + "lastModified": 1719873517, + "narHash": "sha256-D1dxZmXf6M2h5lNE1m6orojuUawVPjogbGRsqSBX+1g=", "owner": "Mic92", "repo": "sops-nix", - "rev": "b5974d4331fb6c893e808977a2e1a6d34b3162d6", + "rev": "a11224af8d824935f363928074b4717ca2e280db", "type": "github" }, "original": { @@ -382,11 +382,11 @@ ] }, "locked": { - "lastModified": 1718522839, - "narHash": "sha256-ULzoKzEaBOiLRtjeY3YoGFJMwWSKRYOic6VNw2UyTls=", + "lastModified": 1719749022, + "narHash": "sha256-ddPKHcqaKCIFSFc/cvxS14goUhCOAwsM1PbMr0ZtHMg=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "68eb1dc333ce82d0ab0c0357363ea17c31ea1f81", + "rev": "8df5ff62195d4e67e2264df0b7f5e8c9995fd0bd", "type": "github" }, "original": { From 3d4e1ceac1916fe11c6c77013df5955f1cf4aa52 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 3 Jul 2024 01:54:17 +0200 Subject: [PATCH 199/562] Implement secure boot on copper --- flake.lock | 221 +++++++++++++++++++++++++++- flake.nix | 4 + hosts/copper/configuration.nix | 2 +- modules/bootloader/default.nix | 7 +- modules/bootloader/lanzaboote.nix | 8 + modules/bootloader/systemd-boot.nix | 2 +- 6 files changed, 233 insertions(+), 11 deletions(-) create mode 100644 modules/bootloader/lanzaboote.nix diff --git a/flake.lock b/flake.lock index 9bc5db0..305c277 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,26 @@ { "nodes": { + "crane": { + "inputs": { + "nixpkgs": [ + "lanzaboote", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717535930, + "narHash": "sha256-1hZ/txnbd/RmiBPNUs7i8UQw2N89uAK3UzrGAWdnFfU=", + "owner": "ipetkov", + "repo": "crane", + "rev": "55e7754ec31dac78980c8be45f8a28e80e370946", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "disko": { "inputs": { "nixpkgs": [ @@ -36,6 +57,43 @@ "type": "github" } }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "lanzaboote", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717285511, + "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -54,7 +112,47 @@ "type": "github" } }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "gitignore": { + "inputs": { + "nixpkgs": [ + "lanzaboote", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_2": { "inputs": { "nixpkgs": [ "nix-pre-commit-hooks", @@ -142,6 +240,33 @@ "type": "github" } }, + "lanzaboote": { + "inputs": { + "crane": "crane", + "flake-compat": "flake-compat", + "flake-parts": "flake-parts", + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1718178907, + "narHash": "sha256-eSZyrQ9uoPB9iPQ8Y5H7gAmAgAvCw3InStmU3oEjqsE=", + "owner": "nix-community", + "repo": "lanzaboote", + "rev": "b627ccd97d0159214cee5c7db1412b75e4be6086", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.4.1", + "repo": "lanzaboote", + "type": "github" + } + }, "nix-github-actions": { "inputs": { "nixpkgs": [ @@ -165,12 +290,12 @@ }, "nix-pre-commit-hooks": { "inputs": { - "flake-compat": "flake-compat", - "gitignore": "gitignore", + "flake-compat": "flake-compat_2", + "gitignore": "gitignore_2", "nixpkgs": [ "nixpkgs" ], - "nixpkgs-stable": "nixpkgs-stable" + "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { "lastModified": 1719259945, @@ -220,6 +345,22 @@ } }, "nixpkgs-stable": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_2": { "locked": { "lastModified": 1718811006, "narHash": "sha256-0Y8IrGhRmBmT7HHXlxxepg2t8j1X90++qRN3lukGaIk=", @@ -235,7 +376,7 @@ "type": "github" } }, - "nixpkgs-stable_2": { + "nixpkgs-stable_3": { "locked": { "lastModified": 1719663039, "narHash": "sha256-tXlrgAQygNIy49LDVFuPXlWD2zTQV9/F8pfoqwwPJyo=", @@ -291,7 +432,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_2", + "systems": "systems_3", "treefmt-nix": "treefmt-nix" }, "locked": { @@ -308,6 +449,33 @@ "type": "github" } }, + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": [ + "lanzaboote", + "flake-compat" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "lanzaboote", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1717664902, + "narHash": "sha256-7XfBuLULizXjXfBYy/VV+SpYMHreNRHk9nKMsm1bgb4=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "cc4d466cb1254af050ff7bdf47f6d404a7c646d1", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "disko": "disko", @@ -315,6 +483,7 @@ "gomod2nix": "gomod2nix", "home-manager": "home-manager", "krops": "krops", + "lanzaboote": "lanzaboote", "nix-pre-commit-hooks": "nix-pre-commit-hooks", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs", @@ -324,12 +493,37 @@ "sops-nix": "sops-nix" } }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "lanzaboote", + "flake-utils" + ], + "nixpkgs": [ + "lanzaboote", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717813066, + "narHash": "sha256-wqbRwq3i7g5EHIui0bIi84mdqZ/It1AXBSLJ5tafD28=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "6dc3e45fe4aee36efeed24d64fc68b1f989d5465", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "sops-nix": { "inputs": { "nixpkgs": [ "nixpkgs" ], - "nixpkgs-stable": "nixpkgs-stable_2" + "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { "lastModified": 1719873517, @@ -361,6 +555,21 @@ } }, "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", diff --git a/flake.nix b/flake.nix index fa2976f..4ae9e7f 100644 --- a/flake.nix +++ b/flake.nix @@ -16,6 +16,9 @@ krops.inputs.nixpkgs.follows = "nixpkgs"; krops.url = "github:Mic92/krops"; + lanzaboote.url = "github:nix-community/lanzaboote/v0.4.1"; + lanzaboote.inputs.nixpkgs.follows = "nixpkgs"; + nix-pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs"; nix-pre-commit-hooks.url = "github:cachix/git-hooks.nix/master"; @@ -172,6 +175,7 @@ home-manager.nixosModules.home-manager inputs.sops-nix.nixosModules.sops inputs.disko.nixosModules.disko + inputs.lanzaboote.nixosModules.lanzaboote ] ++ extraModules; }) (import ./hosts inputs); diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index 3a3cfa4..56d4a18 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -18,7 +18,7 @@ }; jalr = { - bootloader = "systemd-boot"; + bootloader = "lanzaboote"; bluetooth.enable = true; uefi.enable = true; gui.enable = true; diff --git a/modules/bootloader/default.nix b/modules/bootloader/default.nix index 22c07a5..bcb2908 100644 --- a/modules/bootloader/default.nix +++ b/modules/bootloader/default.nix @@ -1,15 +1,16 @@ -{ config, lib, pkgs, ... }: +{ lib, ... }: { options.jalr = { bootloader = lib.mkOption { - type = lib.types.nullOr (lib.types.enum [ "systemd-boot" "grub2" ]); + type = lib.types.nullOr (lib.types.enum [ "systemd-boot" "grub2" "lanzaboote" ]); default = null; description = "Bootloader to install"; }; }; imports = [ - ./systemd-boot.nix ./grub2.nix + ./lanzaboote.nix + ./systemd-boot.nix ]; } diff --git a/modules/bootloader/lanzaboote.nix b/modules/bootloader/lanzaboote.nix new file mode 100644 index 0000000..92f0820 --- /dev/null +++ b/modules/bootloader/lanzaboote.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: + +lib.mkIf (config.jalr.bootloader == "lanzaboote") { + boot.lanzaboote = { + enable = true; + pkiBundle = "/etc/secureboot"; + }; +} diff --git a/modules/bootloader/systemd-boot.nix b/modules/bootloader/systemd-boot.nix index 96cab4d..995bb0b 100644 --- a/modules/bootloader/systemd-boot.nix +++ b/modules/bootloader/systemd-boot.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: lib.mkIf (config.jalr.bootloader == "systemd-boot") { boot = { From e180a20b7d8da734d81f0f818947dc4b0c7621d1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 4 Jul 2024 16:11:49 +0200 Subject: [PATCH 200/562] Format file using black --- .../myintercom_doorbell/connection.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pkgs/myintercom-doorbell/myintercom_doorbell/connection.py b/pkgs/myintercom-doorbell/myintercom_doorbell/connection.py index 12767ea..a5e968e 100644 --- a/pkgs/myintercom-doorbell/myintercom_doorbell/connection.py +++ b/pkgs/myintercom-doorbell/myintercom_doorbell/connection.py @@ -13,9 +13,15 @@ from time import sleep @dataclass(frozen=True) class types_struct: uuid: bytes = b"\x01" # Message payload contains UUID set in Asterisk Dialplan - audio: bytes = b"\x10" # * Message payload contains 8Khz 16-bit mono LE PCM audio (* See Github readme) - silence: bytes = b"\x02" # Message payload contains silence (I've never seen this occur personally) - hangup: bytes = b"\x00" # Tell Asterisk to hangup the call (This doesn't appear to ever be sent from Asterisk to us) + audio: bytes = ( + b"\x10" # * Message payload contains 8Khz 16-bit mono LE PCM audio (* See Github readme) + ) + silence: bytes = ( + b"\x02" # Message payload contains silence (I've never seen this occur personally) + ) + hangup: bytes = ( + b"\x00" # Tell Asterisk to hangup the call (This doesn't appear to ever be sent from Asterisk to us) + ) error: bytes = b"\xff" # Message payload contains an error from Asterisk From 547b2e8601e38b2a2919f240d6ddb9e1fff00bd2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 4 Jul 2024 16:14:01 +0200 Subject: [PATCH 201/562] Add vesc-tool --- users/jalr/modules/default.nix | 1 + users/jalr/modules/vesc-tool.nix | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 users/jalr/modules/vesc-tool.nix diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 6f4adf6..bbd599c 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -37,5 +37,6 @@ ./tmux.nix ./tor-browser.nix ./vdirsyncer.nix + ./vesc-tool.nix ]; } diff --git a/users/jalr/modules/vesc-tool.nix b/users/jalr/modules/vesc-tool.nix new file mode 100644 index 0000000..81ac31d --- /dev/null +++ b/users/jalr/modules/vesc-tool.nix @@ -0,0 +1,5 @@ +{ nixosConfig, lib, pkgs, ... }: + +lib.mkIf nixosConfig.jalr.gui.enable { + home.packages = with pkgs; [ vesc-tool ]; +} From d6a82588c3bd0457a544cb640b853a937434ba65 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 4 Jul 2024 16:14:51 +0200 Subject: [PATCH 202/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/544a80a69d6e2da04e4df7ec8210a858de8c7533' (2024-07-01) → 'github:nix-community/disko/64679cd7f318c9b6595902b47d4585b1d51d5f9e' (2024-07-04) • Updated input 'home-manager': 'github:nix-community/home-manager/391ca6e950c2525b4f853cbe29922452c14eda82' (2024-07-01) → 'github:nix-community/home-manager/e1391fb22e18a36f57e6999c7a9f966dc80ac073' (2024-07-03) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/d032c1a6dfad4eedec7e35e91986becc699d7d69' (2024-07-01) → 'github:nixos/nixpkgs/706eef542dec88cc0ed25b9075d3037564b2d164' (2024-07-02) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/e689d1116660575bac669cbbe1cc05999bbd2f0f' (2024-07-02) → 'github:NixOS/nixpkgs/c84f25977d0984b5a5c8664522cc899e4f2b592d' (2024-07-04) • Updated input 'nur': 'github:nix-community/NUR/6206fd683edcb79c4a0592cf25e610449ed0d82d' (2024-07-02) → 'github:nix-community/NUR/3bea142e43206126968fdae8a262e18be760c998' (2024-07-04) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 305c277..7d9df80 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1719864345, - "narHash": "sha256-e4Pw+30vFAxuvkSTaTypd9zYemB/QlWcH186dsGT+Ms=", + "lastModified": 1720056646, + "narHash": "sha256-BymcV4HWtx2VFuabDCM4/nEJcfivCx0S02wUCz11mAY=", "owner": "nix-community", "repo": "disko", - "rev": "544a80a69d6e2da04e4df7ec8210a858de8c7533", + "rev": "64679cd7f318c9b6595902b47d4585b1d51d5f9e", "type": "github" }, "original": { @@ -203,11 +203,11 @@ ] }, "locked": { - "lastModified": 1719827385, - "narHash": "sha256-qs+nU20Sm8czHg3bhGCqiH+8e13BJyRrKONW34g3i50=", + "lastModified": 1720042825, + "narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=", "owner": "nix-community", "repo": "home-manager", - "rev": "391ca6e950c2525b4f853cbe29922452c14eda82", + "rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1719838683, - "narHash": "sha256-Zw9rQjHz1ilNIimEXFeVa1ERNRBF8DoXDhLAZq5B4pE=", + "lastModified": 1719956923, + "narHash": "sha256-nNJHJ9kfPdzYsCOlHOnbiiyKjZUW5sWbwx3cakg3/C4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d032c1a6dfad4eedec7e35e91986becc699d7d69", + "rev": "706eef542dec88cc0ed25b9075d3037564b2d164", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1719909084, - "narHash": "sha256-GxoaFEsoQZhP7YDzLhilmlUlX2vLnzsizM6ACQlbd8A=", + "lastModified": 1720102434, + "narHash": "sha256-EjgHuIzTpZcHHmRDxZovObybc2fmQWND7UG/Njpw2yU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e689d1116660575bac669cbbe1cc05999bbd2f0f", + "rev": "c84f25977d0984b5a5c8664522cc899e4f2b592d", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1719908032, - "narHash": "sha256-veUPZ3anuH+PQn/CLcNlP0oiuHctzeIDa2w+DzVGE4E=", + "lastModified": 1720101913, + "narHash": "sha256-9R3asnufwGpOexYMJXzzndPmnTo1aHTe7/En52zCaW4=", "owner": "nix-community", "repo": "NUR", - "rev": "6206fd683edcb79c4a0592cf25e610449ed0d82d", + "rev": "3bea142e43206126968fdae8a262e18be760c998", "type": "github" }, "original": { From e7b017596c41e181278d2d04ed5b1ca3bb9befa8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 4 Jul 2024 18:50:49 +0200 Subject: [PATCH 203/562] Decrease DPMS off time This will first turn off the screen and then lock it. If I sit in front of the computer, I still have a chance to prevent the locking. --- users/jalr/modules/sway/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index 6712c0a..d9565a9 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -336,7 +336,7 @@ in ExecStart = '' ${pkgs.swayidle}/bin/swayidle -w \ timeout 300 "${pkgs.swaylock}/bin/swaylock -f -i ${wallpaper}" \ - timeout 300 '${pkgs.sway}/bin/swaymsg "output * dpms off"' \ + timeout 270 '${pkgs.sway}/bin/swaymsg "output * dpms off"' \ resume '${pkgs.sway}/bin/swaymsg "output * dpms on"' \ before-sleep "${pkgs.swaylock}/bin/swaylock -f -i ${wallpaper}" ''; From f7e4eecee5f365b0c2cfe97e74607fe0c180d9be Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 4 Jul 2024 18:51:51 +0200 Subject: [PATCH 204/562] Add timewarrior --- users/jalr/modules/sway/default.nix | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index d9565a9..b53f2fb 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -36,6 +36,24 @@ let ${pkgs.glib}/bin/gsettings "$@" ''; matchHostname = (hostname: lib.optionalAttrs (nixosConfig.networking.hostName == hostname)); + resumeTimeTrackingNotification = pkgs.writeShellScript "resume-time-tracking-notification" '' + export PATH=${pkgs.lib.makeBinPath [pkgs.timewarrior pkgs.libnotify]} + task="$1" + date="$2" + if [ $(notify-send --action 'default=Resume time tracking' "Tracking '$task' stopped at $date, resume?") = "default" ]; then + timew continue + fi + ''; + lockScreen = pkgs.writeShellScript "lock-screen" '' + export PATH="${pkgs.lib.makeBinPath [pkgs.gnused pkgs.timewarrior pkgs.coreutils pkgs.swaylock]}" + task="$(timew | sed -n -r 's/^Tracking (.*)$/\1/p')" + date="$(date --rfc-3339=seconds)" + if [ "$task" != "" ]; then + timew stop + nohup ${resumeTimeTrackingNotification} "$task" "$date" >/dev/null 2>&1 & + fi + swaylock -f -i ${wallpaper} + ''; in { imports = lib.optionals nixosConfig.jalr.gui.enable [ @@ -49,10 +67,12 @@ in } // (lib.mkIf nixosConfig.jalr.gui.enable { home.packages = with pkgs; [ gsettings + libnotify # notify-send mako slurp swappy # screenshot editing sway-contrib.grimshot # screenshots + timewarrior wdisplays # graphical output manager wl-clipboard wl-mirror @@ -228,7 +248,7 @@ in "XF86AudioMute" = "exec pactl set-source-mute alsa_input.usb-BEHRINGER_UMC202HD_192k-00.HiFi__umc202hd_mono_in_U192k_0_1__source toggle"; - "${cfg.modifier}+l" = "exec ${pkgs.swaylock}/bin/swaylock -f -i ${wallpaper}"; + "${cfg.modifier}+l" = "exec ${lockScreen}"; }; bars = [ ]; # managed as systemd user unit @@ -335,10 +355,10 @@ in Environment = "PATH=${pkgs.bash}/bin:${config.wayland.windowManager.sway.package}/bin"; ExecStart = '' ${pkgs.swayidle}/bin/swayidle -w \ - timeout 300 "${pkgs.swaylock}/bin/swaylock -f -i ${wallpaper}" \ + timeout 300 "${lockScreen}" \ timeout 270 '${pkgs.sway}/bin/swaymsg "output * dpms off"' \ resume '${pkgs.sway}/bin/swaymsg "output * dpms on"' \ - before-sleep "${pkgs.swaylock}/bin/swaylock -f -i ${wallpaper}" + before-sleep "${lockScreen}" ''; Restart = "on-failure"; }; From 48560242fd4aa611666dc4b3a0b7295d387a6a55 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 4 Jul 2024 21:40:16 +0200 Subject: [PATCH 205/562] Remove unnecessary clutter --- pkgs/vesc-tool/firmware.nix | 12 ++---------- pkgs/vesc-tool/tool.nix | 16 ++-------------- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/pkgs/vesc-tool/firmware.nix b/pkgs/vesc-tool/firmware.nix index 50613f9..0f84683 100644 --- a/pkgs/vesc-tool/firmware.nix +++ b/pkgs/vesc-tool/firmware.nix @@ -1,12 +1,11 @@ -{ lib -, stdenv +{ stdenv , fetchFromGitHub , gcc-arm-embedded-7 , python311 , git }: -stdenv.mkDerivation rec { +stdenv.mkDerivation { pname = "vesc-firmware"; version = "master"; @@ -22,13 +21,6 @@ stdenv.mkDerivation rec { gcc-arm-embedded-7 python311 git - # bash - # libsForQt5.qmake - # libsForQt5.qtconnectivity - # libsForQt5.qtgamepad - # libsForQt5.qtlocation - # libsForQt5.qtquickcontrols2 - # libsForQt5.qtserialport ]; buildCommand = '' diff --git a/pkgs/vesc-tool/tool.nix b/pkgs/vesc-tool/tool.nix index ee9f906..0b3a1c1 100644 --- a/pkgs/vesc-tool/tool.nix +++ b/pkgs/vesc-tool/tool.nix @@ -1,5 +1,4 @@ -{ lib -, stdenv +{ stdenv , fetchFromGitHub , libsForQt5 , vesc-firmware @@ -17,14 +16,13 @@ let ''; in -stdenv.mkDerivation rec { +stdenv.mkDerivation { pname = "vesc_tool"; version = "master"; src = fetchFromGitHub { owner = "vedderb"; repo = "vesc_tool"; - #rev = "f3c6fe5f5dcf0cb2fba7676204ea3db1dc8ff4ee"; # release_6_02 rev = "4a0edea5846d973e5da510fbe11ce009aaf21a96"; sha256 = "18ue6YBVcggr4qyHpCorrh01oeo4i58Jgp9Twaq+DlI="; @@ -49,11 +47,6 @@ stdenv.mkDerivation rec { ]; buildPhase = '' - tempdir="$(mktemp -d)" - cp -r "$src/." "$tempdir/" - chmod -R +w "$tempdir" - cd "$tempdir" - mkdir -p res/firmwares/ cp ${qresource} res/firmwares/res_fw.qrc cp ${vesc-firmware}/*.bin res/firmwares @@ -65,9 +58,4 @@ stdenv.mkDerivation rec { mkdir -p $out/bin cp build/lin/* $out/bin ''; - - #postFixup = '' - # #wrapQtApp $out/bin/vesc_tool_6.05 - # #Builder called die: Cannot wrap '/nix/store/yppigini483d9kj8sn1cbjxp4cy81qqj-vesc_tool-master/bin/vesc_tool_6.02' because it is not an executable file - #''; } From 31564aa64f489ed309c141d4f52ae2b6901de1f1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 4 Jul 2024 21:40:33 +0200 Subject: [PATCH 206/562] Add VESC model 60 --- pkgs/vesc-tool/firmware.nix | 8 +++++--- pkgs/vesc-tool/tool.nix | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkgs/vesc-tool/firmware.nix b/pkgs/vesc-tool/firmware.nix index 0f84683..f2c31dd 100644 --- a/pkgs/vesc-tool/firmware.nix +++ b/pkgs/vesc-tool/firmware.nix @@ -24,13 +24,15 @@ stdenv.mkDerivation { ]; buildCommand = '' + set -x cp -r $src bldc ( cd bldc chmod +w . - #make all_fw_package - make fw_410 + make fw_410 fw_60 ) - cp -r bldc/build/* $out + mkdir -p $out + find bldc + cp --target-directory=$out --recursive bldc/build/*/*.{bin,hex} ''; } diff --git a/pkgs/vesc-tool/tool.nix b/pkgs/vesc-tool/tool.nix index 0b3a1c1..4043910 100644 --- a/pkgs/vesc-tool/tool.nix +++ b/pkgs/vesc-tool/tool.nix @@ -12,6 +12,7 @@ let 410.bin + 60.bin ''; From a3f10e48c7e857350624e749f9fb9cdb46049106 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 5 Jul 2024 04:05:16 +0200 Subject: [PATCH 207/562] Update VESC and fix adding firmware --- pkgs/vesc-tool/firmware.nix | 22 +++++++++++++--------- pkgs/vesc-tool/tool.nix | 31 ++++++++----------------------- 2 files changed, 21 insertions(+), 32 deletions(-) diff --git a/pkgs/vesc-tool/firmware.nix b/pkgs/vesc-tool/firmware.nix index f2c31dd..9db0fdc 100644 --- a/pkgs/vesc-tool/firmware.nix +++ b/pkgs/vesc-tool/firmware.nix @@ -2,37 +2,41 @@ , fetchFromGitHub , gcc-arm-embedded-7 , python311 -, git +, writeShellScriptBin }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { pname = "vesc-firmware"; version = "master"; src = fetchFromGitHub { owner = "vedderb"; repo = "bldc"; - rev = "f7c2b34e1cff2234cae98be3abf0cd50e249558f"; # release_6_02 - sha256 = "BJwxmtYjQhxV8O0Ze9k0cPz0ubJnq5ePUd/9tGx35jo="; + rev = "dd3b97b041c325acfb95ac1adb550d28390ea253"; + sha256 = "2Zex2FNkedO4wjG05CQIyVFU0i0/+O9V3LzsxHZOnvg="; fetchSubmodules = true; }; nativeBuildInputs = [ gcc-arm-embedded-7 python311 - git + (writeShellScriptBin "git" '' + if [ "$*" != "rev-parse --short HEAD" ]; then + exit 1 + fi + echo "${src.rev}" + '') ]; buildCommand = '' - set -x cp -r $src bldc ( cd bldc chmod +w . - make fw_410 fw_60 + make -j $NIX_BUILD_CORES fw_410 fw_60 + python package_firmware.py ) mkdir -p $out - find bldc - cp --target-directory=$out --recursive bldc/build/*/*.{bin,hex} + cp --recursive --target-directory=$out bldc/package/* ''; } diff --git a/pkgs/vesc-tool/tool.nix b/pkgs/vesc-tool/tool.nix index 4043910..3cb591d 100644 --- a/pkgs/vesc-tool/tool.nix +++ b/pkgs/vesc-tool/tool.nix @@ -2,21 +2,9 @@ , fetchFromGitHub , libsForQt5 , vesc-firmware -, writeText , qt5 }: -let - qresource = writeText "res_fw.qrc" - '' - - - 410.bin - 60.bin - - - ''; -in stdenv.mkDerivation { pname = "vesc_tool"; version = "master"; @@ -24,8 +12,8 @@ stdenv.mkDerivation { src = fetchFromGitHub { owner = "vedderb"; repo = "vesc_tool"; - rev = "4a0edea5846d973e5da510fbe11ce009aaf21a96"; - sha256 = "18ue6YBVcggr4qyHpCorrh01oeo4i58Jgp9Twaq+DlI="; + rev = "211f5d317542a3674df638405485a143a23f67ce"; + sha256 = "liF2JbcrRtVPSySJhY7CHRghsBV3gKRGD40pKVD19wE="; fetchSubmodules = true; }; @@ -35,10 +23,6 @@ stdenv.mkDerivation { qt5.wrapQtAppsHook ]; - buildInputs = [ - vesc-firmware - ]; - propagatedBuildInputs = with qt5; [ qtconnectivity qtgamepad @@ -47,14 +31,15 @@ stdenv.mkDerivation { qtserialport ]; - buildPhase = '' - mkdir -p res/firmwares/ - cp ${qresource} res/firmwares/res_fw.qrc - cp ${vesc-firmware}/*.bin res/firmwares + dontConfigure = true; + buildPhase = '' + for f in ${vesc-firmware}/*; do + ln -s "$f" res/firmwares/ + done qmake -config release "CONFIG += release_lin build_platinum" make clean - make -j8 + make -j $NIX_BUILD_CORES rm -rf build/lin/obj mkdir -p $out/bin cp build/lin/* $out/bin From 3a5da3b792db917a28410271f501c2653e2864f1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 8 Jul 2024 10:28:36 +0200 Subject: [PATCH 208/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/64679cd7f318c9b6595902b47d4585b1d51d5f9e' (2024-07-04) → 'github:nix-community/disko/f1a00e7f55dc266ef286cc6fc8458fa2b5ca2414' (2024-07-08) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/6e253f12b1009053eff5344be5e835f604bb64cd' (2024-07-02) → 'github:nixos/nixos-hardware/da0aa7b533d49e6319c603e07b46a5690082f65f' (2024-07-07) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/706eef542dec88cc0ed25b9075d3037564b2d164' (2024-07-02) → 'github:nixos/nixpkgs/49ee0e94463abada1de470c9c07bfc12b36dcf40' (2024-07-06) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/c84f25977d0984b5a5c8664522cc899e4f2b592d' (2024-07-04) → 'github:NixOS/nixpkgs/f7c2368d09adf1e93c84234454b8342f328abca7' (2024-07-08) • Updated input 'nur': 'github:nix-community/NUR/3bea142e43206126968fdae8a262e18be760c998' (2024-07-04) → 'github:nix-community/NUR/db025ae0e02678497a77cff0a174062d913fbc39' (2024-07-08) • Updated input 'sops-nix': 'github:Mic92/sops-nix/a11224af8d824935f363928074b4717ca2e280db' (2024-07-01) → 'github:Mic92/sops-nix/c184aca4db5d71c3db0c8cbfcaaec337a5d065ea' (2024-07-07) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/4a1e673523344f6ccc84b37f4413ad74ea19a119' (2024-06-29) → 'github:NixOS/nixpkgs/550ac3e955c30fe96dd8b2223e37e0f5d225c927' (2024-07-06) --- flake.lock | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/flake.lock b/flake.lock index 7d9df80..4860d13 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1720056646, - "narHash": "sha256-BymcV4HWtx2VFuabDCM4/nEJcfivCx0S02wUCz11mAY=", + "lastModified": 1720402389, + "narHash": "sha256-zJv6euDOrJWMHBhxfp/ay+Dvjwpe8YtMuEI5b09bxmo=", "owner": "nix-community", "repo": "disko", - "rev": "64679cd7f318c9b6595902b47d4585b1d51d5f9e", + "rev": "f1a00e7f55dc266ef286cc6fc8458fa2b5ca2414", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1719895800, - "narHash": "sha256-xNbjISJTFailxass4LmdWeV4jNhAlmJPwj46a/GxE6M=", + "lastModified": 1720372297, + "narHash": "sha256-bwy1rPQSQSCj/TNf1yswHW88nBQYvJQkeScGvOA8pd4=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "6e253f12b1009053eff5344be5e835f604bb64cd", + "rev": "da0aa7b533d49e6319c603e07b46a5690082f65f", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1719956923, - "narHash": "sha256-nNJHJ9kfPdzYsCOlHOnbiiyKjZUW5sWbwx3cakg3/C4=", + "lastModified": 1720244366, + "narHash": "sha256-WrDV0FPMVd2Sq9hkR5LNHudS3OSMmUrs90JUTN+MXpA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "706eef542dec88cc0ed25b9075d3037564b2d164", + "rev": "49ee0e94463abada1de470c9c07bfc12b36dcf40", "type": "github" }, "original": { @@ -378,27 +378,27 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1719663039, - "narHash": "sha256-tXlrgAQygNIy49LDVFuPXlWD2zTQV9/F8pfoqwwPJyo=", + "lastModified": 1720282526, + "narHash": "sha256-dudRkHPRivMNOhd04YI+v4sWvn2SnN5ODSPIu5IVbco=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4a1e673523344f6ccc84b37f4413ad74ea19a119", + "rev": "550ac3e955c30fe96dd8b2223e37e0f5d225c927", "type": "github" }, "original": { "owner": "NixOS", - "ref": "release-23.11", + "ref": "release-24.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgsMaster": { "locked": { - "lastModified": 1720102434, - "narHash": "sha256-EjgHuIzTpZcHHmRDxZovObybc2fmQWND7UG/Njpw2yU=", + "lastModified": 1720427250, + "narHash": "sha256-Ny3Tk3pHPI/TIeuWNGh06NKqeCnfjOS1jncrLBogcbc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c84f25977d0984b5a5c8664522cc899e4f2b592d", + "rev": "f7c2368d09adf1e93c84234454b8342f328abca7", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1720101913, - "narHash": "sha256-9R3asnufwGpOexYMJXzzndPmnTo1aHTe7/En52zCaW4=", + "lastModified": 1720422264, + "narHash": "sha256-oPd3E1XD2sjOsi32hTpklOZevwg2DjhYWYY14IbSC/s=", "owner": "nix-community", "repo": "NUR", - "rev": "3bea142e43206126968fdae8a262e18be760c998", + "rev": "db025ae0e02678497a77cff0a174062d913fbc39", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1719873517, - "narHash": "sha256-D1dxZmXf6M2h5lNE1m6orojuUawVPjogbGRsqSBX+1g=", + "lastModified": 1720321395, + "narHash": "sha256-kcI8q9Nh8/CSj0ygfWq1DLckHl8IHhFarL8ie6g7OEk=", "owner": "Mic92", "repo": "sops-nix", - "rev": "a11224af8d824935f363928074b4717ca2e280db", + "rev": "c184aca4db5d71c3db0c8cbfcaaec337a5d065ea", "type": "github" }, "original": { From 5539880ddb85c23775126a9851e938462f0f06af Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 8 Jul 2024 11:26:24 +0200 Subject: [PATCH 209/562] Add kanshi --- users/jalr/modules/gui.nix | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/users/jalr/modules/gui.nix b/users/jalr/modules/gui.nix index d3c71d2..dac9372 100644 --- a/users/jalr/modules/gui.nix +++ b/users/jalr/modules/gui.nix @@ -17,4 +17,33 @@ lib.mkIf nixosConfig.jalr.gui.enable { vlc xdg_utils ]; + + services.kanshi = { + enable = true; + settings = [ + { + profile.name = "laemmermann"; + profile.outputs = [ + { + criteria = "ViewSonic Corporation VX3276-QHD VSX2403A0490"; + status = "enable"; + mode = "2560x1440@59.951Hz"; + position = "0,0"; + } + { + criteria = "ViewSonic Corporation VX3276-QHD VSX2351A0801"; + status = "enable"; + mode = "2560x1440@59.951Hz"; + position = "2560,0"; + } + { + criteria = "eDP-1"; + status = "enable"; + mode = "2560x1600"; + position = "5120,0"; + } + ]; + } + ]; + }; } From 4a9a063c4098c26a5f1652f70b703ada6aa8be60 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 12 Jul 2024 13:28:05 +0200 Subject: [PATCH 210/562] Add fw-ectool --- hosts/copper/hardware-configuration.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hosts/copper/hardware-configuration.nix b/hosts/copper/hardware-configuration.nix index ef93cab..aa46864 100644 --- a/hosts/copper/hardware-configuration.nix +++ b/hosts/copper/hardware-configuration.nix @@ -1,4 +1,4 @@ -{ config, lib, modulesPath, ... }: +{ config, lib, pkgs, modulesPath, ... }: { imports = [ @@ -11,4 +11,8 @@ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + + environment.systemPackages = with pkgs; [ + fw-ectool + ]; } From 22580177d52befdbc215dd08622a7a87617c2434 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 17 Jul 2024 11:39:25 +0200 Subject: [PATCH 211/562] Add twig parser --- users/jalr/modules/neovim.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index f2b216d..4654577 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -94,6 +94,13 @@ in nnoremap Telescope buffers ''; } + nvim-treesitter-parsers.twig + { + plugin = nvim-treesitter; + config = '' + lua require'nvim-treesitter.configs'.setup { highlight = { enable = true, }, } + ''; + } vim-gitgutter vim-indent-guides vim-nix From c132be812e54d6db32364b670ae6c1ef5f28bfd8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 17 Jul 2024 21:02:53 +0200 Subject: [PATCH 212/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/f1a00e7f55dc266ef286cc6fc8458fa2b5ca2414' (2024-07-08) → 'github:nix-community/disko/bad376945de7033c7adc424c02054ea3736cf7c4' (2024-07-15) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07' (2024-06-24) → 'github:cachix/git-hooks.nix/f451c19376071a90d8c58ab1a953c6e9840527fd' (2024-07-15) • Updated input 'nix-pre-commit-hooks/nixpkgs-stable': 'github:NixOS/nixpkgs/03d771e513ce90147b65fe922d87d3a0356fc125' (2024-06-19) → 'github:NixOS/nixpkgs/194846768975b7ad2c4988bdb82572c00222c0d7' (2024-07-07) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/da0aa7b533d49e6319c603e07b46a5690082f65f' (2024-07-07) → 'github:nixos/nixos-hardware/c5013aa7ce2c7ec90acee5d965d950c8348db751' (2024-07-11) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/49ee0e94463abada1de470c9c07bfc12b36dcf40' (2024-07-06) → 'github:nixos/nixpkgs/53e81e790209e41f0c1efa9ff26ff2fd7ab35e27' (2024-07-14) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/f7c2368d09adf1e93c84234454b8342f328abca7' (2024-07-08) → 'github:NixOS/nixpkgs/3f7fcbb2f91ec01dfb2574567d668494a56304e7' (2024-07-17) • Updated input 'nur': 'github:nix-community/NUR/db025ae0e02678497a77cff0a174062d913fbc39' (2024-07-08) → 'github:nix-community/NUR/f33f46c1e38b07b20a978ac39208058ab9ddedb1' (2024-07-17) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/42262f382c68afab1113ebd1911d0c93822d756e' (2024-07-01) → 'github:nix-community/poetry2nix/d11c01e58587e5f21037ed6477465a7f26a32e27' (2024-07-15) • Updated input 'sops-nix': 'github:Mic92/sops-nix/c184aca4db5d71c3db0c8cbfcaaec337a5d065ea' (2024-07-07) → 'github:Mic92/sops-nix/0703ba03fd9c1665f8ab68cc3487302475164617' (2024-07-14) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/550ac3e955c30fe96dd8b2223e37e0f5d225c927' (2024-07-06) → 'github:NixOS/nixpkgs/74348da2f3a312ee25cea09b98cdba4cb9fa5d5d' (2024-07-14) --- flake.lock | 62 +++++++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/flake.lock b/flake.lock index 4860d13..ce87ae1 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1720402389, - "narHash": "sha256-zJv6euDOrJWMHBhxfp/ay+Dvjwpe8YtMuEI5b09bxmo=", + "lastModified": 1721007199, + "narHash": "sha256-Gof4Lj1rgTrX59bNu5b/uS/3X/marUGM7LYw31NoXEA=", "owner": "nix-community", "repo": "disko", - "rev": "f1a00e7f55dc266ef286cc6fc8458fa2b5ca2414", + "rev": "bad376945de7033c7adc424c02054ea3736cf7c4", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1719259945, - "narHash": "sha256-F1h+XIsGKT9TkGO3omxDLEb/9jOOsI6NnzsXFsZhry4=", + "lastModified": 1721042469, + "narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07", + "rev": "f451c19376071a90d8c58ab1a953c6e9840527fd", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1720372297, - "narHash": "sha256-bwy1rPQSQSCj/TNf1yswHW88nBQYvJQkeScGvOA8pd4=", + "lastModified": 1720737798, + "narHash": "sha256-G/OtEAts7ZUvW5lrGMXSb8HqRp2Jr9I7reBuvCOL54w=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "da0aa7b533d49e6319c603e07b46a5690082f65f", + "rev": "c5013aa7ce2c7ec90acee5d965d950c8348db751", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1720244366, - "narHash": "sha256-WrDV0FPMVd2Sq9hkR5LNHudS3OSMmUrs90JUTN+MXpA=", + "lastModified": 1720954236, + "narHash": "sha256-1mEKHp4m9brvfQ0rjCca8P1WHpymK3TOr3v34ydv9bs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "49ee0e94463abada1de470c9c07bfc12b36dcf40", + "rev": "53e81e790209e41f0c1efa9ff26ff2fd7ab35e27", "type": "github" }, "original": { @@ -362,27 +362,27 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1718811006, - "narHash": "sha256-0Y8IrGhRmBmT7HHXlxxepg2t8j1X90++qRN3lukGaIk=", + "lastModified": 1720386169, + "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "03d771e513ce90147b65fe922d87d3a0356fc125", + "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.11", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1720282526, - "narHash": "sha256-dudRkHPRivMNOhd04YI+v4sWvn2SnN5ODSPIu5IVbco=", + "lastModified": 1720915306, + "narHash": "sha256-6vuViC56+KSr+945bCV8akHK+7J5k6n/epYg/W3I5eQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "550ac3e955c30fe96dd8b2223e37e0f5d225c927", + "rev": "74348da2f3a312ee25cea09b98cdba4cb9fa5d5d", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1720427250, - "narHash": "sha256-Ny3Tk3pHPI/TIeuWNGh06NKqeCnfjOS1jncrLBogcbc=", + "lastModified": 1721241996, + "narHash": "sha256-4An0f26vnpKA9vm1FG0XtOxDaPHiTrziTekwaX3J3jE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f7c2368d09adf1e93c84234454b8342f328abca7", + "rev": "3f7fcbb2f91ec01dfb2574567d668494a56304e7", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1720422264, - "narHash": "sha256-oPd3E1XD2sjOsi32hTpklOZevwg2DjhYWYY14IbSC/s=", + "lastModified": 1721241063, + "narHash": "sha256-jBAuwmtJmSNT6xwjtGINslFK0m3R3+Ydw+xrd+a3tSE=", "owner": "nix-community", "repo": "NUR", - "rev": "db025ae0e02678497a77cff0a174062d913fbc39", + "rev": "f33f46c1e38b07b20a978ac39208058ab9ddedb1", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1719850884, - "narHash": "sha256-UU/lVTHFx0GpEkihoLJrMuM9DcuhZmNe3db45vshSyI=", + "lastModified": 1721039874, + "narHash": "sha256-XANsG9GYHip8pxZpbqKf/YGv8tIa0xTh289Y+WNBNfw=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "42262f382c68afab1113ebd1911d0c93822d756e", + "rev": "d11c01e58587e5f21037ed6477465a7f26a32e27", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1720321395, - "narHash": "sha256-kcI8q9Nh8/CSj0ygfWq1DLckHl8IHhFarL8ie6g7OEk=", + "lastModified": 1720926522, + "narHash": "sha256-eTpnrT6yu1vp8C0B5fxHXhgKxHoYMoYTEikQx///jxY=", "owner": "Mic92", "repo": "sops-nix", - "rev": "c184aca4db5d71c3db0c8cbfcaaec337a5d065ea", + "rev": "0703ba03fd9c1665f8ab68cc3487302475164617", "type": "github" }, "original": { From 97642bd6a1f8e1801c67a6970caba4bc8829b252 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 17 Jul 2024 23:07:53 +0200 Subject: [PATCH 213/562] Enable automatic garbage collection --- modules/nix.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/nix.nix b/modules/nix.nix index c6910ea..94aca4f 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -26,6 +26,11 @@ max-free = lib.mkDefault (3000 * 1024 * 1024); min-free = lib.mkDefault (512 * 1024 * 10); }; + gc = { + automatic = true; + options = "--delete-older-than 30d"; + randomizedDelaySec = "60 min"; + }; }; systemd.services.nix-daemon.serviceConfig.OOMScoreAdjust = 250; From 50d3be57fe2ca1435de65204d9a36255e909be22 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 17 Jul 2024 23:09:01 +0200 Subject: [PATCH 214/562] Enable nftables --- hosts/aluminium/configuration.nix | 18 +++++++----------- hosts/iron/configuration.nix | 9 +++------ modules/networking/default.nix | 2 ++ 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/hosts/aluminium/configuration.nix b/hosts/aluminium/configuration.nix index 40cb8ef..7e843b6 100644 --- a/hosts/aluminium/configuration.nix +++ b/hosts/aluminium/configuration.nix @@ -1,9 +1,5 @@ { config, lib, pkgs, ... }: -let - iptablesAppendIfMissing = rule: "iptables -C " + rule + " || iptables -A " + rule; - iptablesInsertIfMissing = rule: "iptables -C " + rule + " || iptables -I " + rule; -in { imports = [ ./hardware-configuration.nix @@ -78,13 +74,13 @@ in "voice" ]; }; - firewall = { - extraCommands = lib.concatStringsSep "\n" [ - (iptablesAppendIfMissing "FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu") - (iptablesInsertIfMissing "INPUT -i voice -p udp -m udp --dport 5060 -j ACCEPT") - (iptablesInsertIfMissing "INPUT -s 217.10.68.150 -p udp --dport 5060 -j ACCEPT") - ]; - }; + firewall.extraForwardRules = '' + tcp flags syn tcp option maxseg size set rt mtu + ''; + firewall.extraInputRules = '' + iifname "voice" udp dport 5059 accept + ip saddr 217.10.68.150 udp dport 5060 accept + ''; }; diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index 398fd7a..31d5069 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -29,7 +29,6 @@ let biosBoot = "-part4"; }; efiSystemPartitions = (map (diskName: diskName + partitionScheme.efiBoot) disks); - iptablesAppendIfMissing = rule: "iptables -C " + rule + " || iptables -A " + rule; in with lib; { imports = [ @@ -75,11 +74,9 @@ with lib; { ]; }; - firewall = { - extraCommands = lib.concatStringsSep "\n" [ - (iptablesAppendIfMissing "FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu") - ]; - }; + firewall.extraForwardRules = '' + tcp flags syn tcp option maxseg size set rt mtu + ''; }; services.radvd = { diff --git a/modules/networking/default.nix b/modules/networking/default.nix index 98c88ed..065c24b 100644 --- a/modules/networking/default.nix +++ b/modules/networking/default.nix @@ -8,4 +8,6 @@ ]; networking.firewall.logRefusedConnections = lib.mkDefault false; + + networking.nftables.enable = true; } From d21d155a0eb79e22224650c429fdeb27f7b03076 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 17 Jul 2024 23:15:36 +0200 Subject: [PATCH 215/562] Configure ciphers --- modules/sshd.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/sshd.nix b/modules/sshd.nix index b521e9b..01b757a 100644 --- a/modules/sshd.nix +++ b/modules/sshd.nix @@ -7,6 +7,9 @@ enable = true; settings = { KbdInteractiveAuthentication = false; + Ciphers = [ + "aes256-gcm@openssh.com" + ]; # Use key exchange algorithms recommended by `nixpkgs#ssh-audit` KexAlgorithms = [ "curve25519-sha256" From 6295e55eb82b85d54bffeb5d04dd9bdd4edb986c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 17 Jul 2024 23:16:25 +0200 Subject: [PATCH 216/562] Allow only ed25519 host key --- modules/sshd.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/sshd.nix b/modules/sshd.nix index 01b757a..a046574 100644 --- a/modules/sshd.nix +++ b/modules/sshd.nix @@ -23,6 +23,12 @@ UseDns = false; X11Forwarding = false; }; + hostKeys = [ + { + path = "/etc/ssh/ssh_host_ed25519_key"; + type = "ed25519"; + } + ]; authorizedKeysFiles = lib.mkForce [ "/etc/ssh/authorized_keys.d/%u" ]; }; } From 37221ed58d2768062dd9d3b31d6fabce843f541f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 17 Jul 2024 23:17:21 +0200 Subject: [PATCH 217/562] Implement connection rate limiting --- modules/sshd.nix | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/modules/sshd.nix b/modules/sshd.nix index a046574..040ed09 100644 --- a/modules/sshd.nix +++ b/modules/sshd.nix @@ -1,4 +1,5 @@ { lib +, config , ... }: @@ -31,4 +32,30 @@ ]; authorizedKeysFiles = lib.mkForce [ "/etc/ssh/authorized_keys.d/%u" ]; }; + + networking.nftables.tables."nixos-fw".content = lib.mkOrder 20 '' + set ssh-ratelimit-v4 { + type ipv4_addr + timeout 60s + flags dynamic + } + + set ssh-ratelimit-v6 { + type ipv6_addr + timeout 60s + flags dynamic + } + ''; + + # Implement connection rate limit + services.openssh.openFirewall = false; + networking.firewall.extraInputRules = lib.mkOrder 5 ( + let + ports = builtins.concatStringsSep ", " (map builtins.toString config.services.openssh.ports); + in + '' + tcp dport { ${ports} } update @ssh-ratelimit-v4 { ip saddr limit rate 1/second burst 10 packets } accept + tcp dport { ${ports} } update @ssh-ratelimit-v6 { ip6 saddr limit rate 1/second burst 10 packets } accept + '' + ); } From 82d16eb239955b434f8229905561cc5fdb1465a9 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 18 Jul 2024 19:32:42 +0200 Subject: [PATCH 218/562] Add mycli --- users/jalr/modules/default.nix | 1 + users/jalr/modules/dynamic-colors.nix | 6 ++ users/jalr/modules/mycli.nix | 150 ++++++++++++++++++++++++++ 3 files changed, 157 insertions(+) create mode 100644 users/jalr/modules/mycli.nix diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index bbd599c..eb4a37f 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -21,6 +21,7 @@ ./kicad.nix ./mpv.nix ./mute-indicator.nix + ./mycli.nix ./neo.nix ./neovim.nix ./nix-index.nix diff --git a/users/jalr/modules/dynamic-colors.nix b/users/jalr/modules/dynamic-colors.nix index 82ed460..d28d856 100644 --- a/users/jalr/modules/dynamic-colors.nix +++ b/users/jalr/modules/dynamic-colors.nix @@ -33,6 +33,12 @@ let target = "theme.css"; exec = [ "${pkgs.systemd}/bin/systemctl" "--user" "restart" "waybar.service" ]; } + { + dir = "~/.config/mycli"; + light = "theme-light.ini"; + dark = "theme-dark.ini"; + target = "myclirc"; + } { exec = ( if nixosConfig.jalr.gui.enable diff --git a/users/jalr/modules/mycli.nix b/users/jalr/modules/mycli.nix new file mode 100644 index 0000000..bcc9dd1 --- /dev/null +++ b/users/jalr/modules/mycli.nix @@ -0,0 +1,150 @@ +{ lib, pkgs, ... }: +let + quoteValues = ini: lib.mapAttrs + (section: attrs: + lib.mapAttrs (key: value: if builtins.isString value then ''"${value}"'' else value) attrs + ) + ini; + + solarized = import ./solarized.nix; + + config = { + main = { + # Enables context sensitive auto-completion. If this is disabled the all + # possible completions will be listed. + smart_completion = true; + + # Multi-line mode allows breaking up the sql statements into multiple lines. If + # this is set to True, then the end of the statements must have a semi-colon. + # If this is set to False then sql statements can't be split into multiple + # lines. End of line (return) is considered as the end of the statement. + multi_line = false; + + # Destructive warning mode will alert you before executing a sql statement + # that may cause harm to the database such as "drop table", "drop database" + # or "shutdown". + destructive_warning = true; + + # log_file location. + log_file = "~/.mycli.log"; + + # Default log level. Possible values: "CRITICAL", "ERROR", "WARNING", "INFO" + # and "DEBUG". "NONE" disables logging. + log_level = "INFO"; + + # Log every query and its results to a file. Enable this by uncommenting the + # line below. + # audit_log = "~/.mycli-audit.log"; + + # Timing of sql statments and table rendering. + timing = true; + + # Table format. Possible values: ascii, double, github, + # psql, plain, simple, grid, fancy_grid, pipe, orgtbl, rst, mediawiki, html, + # latex, latex_booktabs, textile, moinmoin, jira, vertical, tsv, csv. + # Recommended: ascii + table_format = "ascii"; + + # Syntax coloring style. Possible values (many support the "-dark" suffix): + # manni, igor, xcode, vim, autumn, vs, rrt, native, perldoc, borland, tango, emacs, + # friendly, monokai, paraiso, colorful, murphy, bw, pastie, paraiso, trac, default, + # fruity. + # Screenshots at http://mycli.net/syntax + # Can be further modified in [colors] + syntax_style = "native"; + + # Keybindings: Possible values: emacs, vi. + # Emacs mode: Ctrl-A is home, Ctrl-E is end. All emacs keybindings are available in the REPL. + # When Vi mode is enabled you can use modal editing features offered by Vi in the REPL. + key_bindings = "emacs"; + + # Enabling this option will show the suggestions in a wider menu. Thus more items are suggested. + wider_completion_menu = false; + + # MySQL prompt + # \D - The full current date + # \d - Database name + # \h - Hostname of the server + # \m - Minutes of the current time + # \n - Newline + # \P - AM/PM + # \p - Port + # \R - The current time, in 24-hour military time (0–23) + # \r - The current time, standard 12-hour time (1–12) + # \s - Seconds of the current time + # \t - Product type (Percona, MySQL, MariaDB) + # \A - DSN alias name (from the [alias_dsn] section) + # \u - Username + # \x1b[...m - insert ANSI escape sequence + prompt = "\\u@\\A:\\d> "; + prompt_continuation = "-> "; + + # Skip intro info on startup and outro info on exit + less_chatty = false; + + # Use alias from --login-path instead of host name in prompt + login_path_as_host = false; + + # Cause result sets to be displayed vertically if they are too wide for the current window, + # and using normal tabular format otherwise. (This applies to statements terminated by ; or \G.) + auto_vertical_output = false; + + # keyword casing preference. Possible values "lower", "upper", "auto" + keyword_casing = "upper"; + + # disabled pager on startup + enable_pager = true; + }; + # Favorite queries. + favorite_queries = { }; + + # Use the -d option to reference a DSN. + # Special characters in passwords and other strings can be escaped with URL encoding. + alias_dsn = { + # example_dsn = "mysql://[user[:password]@][host][:port][/dbname]"; + }; + }; + + colors = { + common = { + "sql.datatype" = "nobold ${solarized.yellow.hex}"; + "sql.function" = "bg:#FF0000 #0000FF"; + "sql.keyword" = "${solarized.green.hex}"; + "sql.literal" = solarized.green.hex; + "sql.number" = solarized.cyan.hex; + "sql.string" = solarized.cyan.hex; + }; + light = { + "prompt" = "bg:${solarized.blue.hex} ${solarized.base02.hex}"; + "selected" = "bg:${solarized.base2.hex} ${solarized.base00.hex}"; + "sql.comment" = "italic ${solarized.base1.hex}"; + "sql.operator" = "${solarized.base02.hex}"; + "sql.punctuation" = "${solarized.base01.hex}"; + "sql.symbol" = "${solarized.base01.hex}"; + }; + dark = { + "prompt" = "bg:${solarized.blue.hex} ${solarized.base2.hex}"; + "selected" = "bg:${solarized.base02.hex} ${solarized.base0.hex}"; + "sql.comment" = "italic ${solarized.base01.hex}"; + "sql.operator" = "${solarized.base2.hex}"; + "sql.punctuation" = "${solarized.base1.hex}"; + "sql.symbol" = "${solarized.base1.hex}"; + }; + }; +in +{ + home.packages = with pkgs; [ + mycli + ]; + + xdg.configFile = lib.attrsets.mapAttrs' + ( + name: value: lib.attrsets.nameValuePair "mycli/theme-${name}.ini" { + text = lib.generators.toINI { } (quoteValues (config // { colors = value; })); + } + ) + { + light = colors.common // colors.light; + dark = colors.common // colors.dark; + }; +} From a0201897f9894ea15d49a51fdbff178a15e39d87 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 8 Aug 2024 16:51:42 +0200 Subject: [PATCH 219/562] Update unifi controller to version 8 --- hosts/aluminium/services/unifi-controller.nix | 2 +- hosts/iron/ports.nix | 3 ++- hosts/iron/services/unifi-controller.nix | 5 +++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/hosts/aluminium/services/unifi-controller.nix b/hosts/aluminium/services/unifi-controller.nix index 3442337..a97eda8 100644 --- a/hosts/aluminium/services/unifi-controller.nix +++ b/hosts/aluminium/services/unifi-controller.nix @@ -6,7 +6,7 @@ in { services.unifi = { enable = true; - unifiPackage = pkgs.unifi; + unifiPackage = pkgs.unifi8; }; networking.firewall.interfaces.lechner.allowedTCPPorts = [ ports.unifi.tcp diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index a01a8b8..6b38336 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -18,6 +18,7 @@ custom-utils.validatePortAttrset { qbittorrent-webui.tcp = 8099; radicale.tcp = 5232; rmfakecloud.tcp = 3000; - unifi.tcp = 8443; + unifi-http.tcp = 8080; + unifi-https.tcp = 8443; wireguard-public-ip-tunnel.udp = 51000; } diff --git a/hosts/iron/services/unifi-controller.nix b/hosts/iron/services/unifi-controller.nix index b5e4cac..bb5417f 100644 --- a/hosts/iron/services/unifi-controller.nix +++ b/hosts/iron/services/unifi-controller.nix @@ -6,9 +6,10 @@ in { services.unifi = { enable = true; - unifiPackage = pkgs.unifi; + unifiPackage = pkgs.unifi8; }; networking.firewall.interfaces.enp2s4.allowedTCPPorts = [ - ports.unifi.tcp + ports.unifi-http.tcp + ports.unifi-https.tcp ]; } From 23688c96d5f43bbe9c8cce3d66df175a3a33bdd0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 13 Aug 2024 11:21:54 +0200 Subject: [PATCH 220/562] Add browserpass --- users/jalr/modules/firefox/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/users/jalr/modules/firefox/default.nix b/users/jalr/modules/firefox/default.nix index 228c4db..aab0eac 100644 --- a/users/jalr/modules/firefox/default.nix +++ b/users/jalr/modules/firefox/default.nix @@ -267,6 +267,7 @@ id = 0; isDefault = true; extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + browserpass darkreader sponsorblock tree-style-tab @@ -363,4 +364,9 @@ userChrome = builtins.readFile ./userChrome.css; }; }; + + programs.browserpass = { + enable = true; + browsers = [ "firefox" ]; + }; } From eec9bc3c71fffabcb65a59edfcbc230b1522962b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 13 Aug 2024 11:24:28 +0200 Subject: [PATCH 221/562] Set Git identity per directory --- users/jalr/modules/fish.nix | 4 ++++ users/jalr/modules/git.nix | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index f9c2cf2..570509a 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -98,6 +98,10 @@ # fix too dark color on solarized theme set -g fish_color_autosuggestion brgreen + + if type -q fish_set_git_author_by_pwd + fish_set_git_author_by_pwd + end ''; functions = { diff --git a/users/jalr/modules/git.nix b/users/jalr/modules/git.nix index 1090f43..9d4391f 100644 --- a/users/jalr/modules/git.nix +++ b/users/jalr/modules/git.nix @@ -1,5 +1,10 @@ { nixosConfig, pkgs, ... }: - +let + identity.DigitalerDienst = { + name = "Jakob Lechner"; + email = "j.lechner@digitaler-dienst.gmbh"; + }; +in { programs = { git = { @@ -157,6 +162,18 @@ end ''; }; + "fish_set_git_author_by_pwd" = { + description = "Set Git identity by PWD"; + body = '' + if string match -n $HOME'/digitaler-dienst/*' $PWD/ > /dev/null + if git rev-parse --git-dir >/dev/null 2>&1 + git config --local user.name >/dev/null || git config --local user.name "${identity.DigitalerDienst.name}" + git config --local user.email >/dev/null || git config --local user.email "${identity.DigitalerDienst.email}" + end + end + ''; + onVariable = "PWD"; + }; }; }; }; From e287537c8ba949d07c7e6ff06965a3a78c7534f5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 13 Aug 2024 14:45:19 +0200 Subject: [PATCH 222/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/bad376945de7033c7adc424c02054ea3736cf7c4' (2024-07-15) → 'github:nix-community/disko/0d510fe40b56ed74907a021d7e1ffd0042592914' (2024-08-12) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/31b6d2e40b36456e792cd6cf50d5a8ddd2fa59a1' (2024-05-30) → 'github:nix-community/gomod2nix/4e08ca09253ef996bd4c03afa383b23e35fe28a1' (2024-08-02) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/f451c19376071a90d8c58ab1a953c6e9840527fd' (2024-07-15) → 'github:cachix/git-hooks.nix/c7012d0c18567c889b948781bc74a501e92275d1' (2024-08-09) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/c5013aa7ce2c7ec90acee5d965d950c8348db751' (2024-07-11) → 'github:nixos/nixos-hardware/c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf' (2024-08-10) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/53e81e790209e41f0c1efa9ff26ff2fd7ab35e27' (2024-07-14) → 'github:nixos/nixpkgs/a731b45590a5169542990c36ffcde6cebd9a3356' (2024-08-11) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/3f7fcbb2f91ec01dfb2574567d668494a56304e7' (2024-07-17) → 'github:NixOS/nixpkgs/0972c7d0124cc865be8803af49b979e5d44fc577' (2024-08-13) • Updated input 'nur': 'github:nix-community/NUR/f33f46c1e38b07b20a978ac39208058ab9ddedb1' (2024-07-17) → 'github:nix-community/NUR/20b1fc4032363116a880dc64e3fa96f8a24d4e64' (2024-08-13) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/d11c01e58587e5f21037ed6477465a7f26a32e27' (2024-07-15) → 'github:nix-community/poetry2nix/ed52f844c4dd04dde45550c3189529854384124e' (2024-08-13) • Updated input 'sops-nix': 'github:Mic92/sops-nix/0703ba03fd9c1665f8ab68cc3487302475164617' (2024-07-14) → 'github:Mic92/sops-nix/be0eec2d27563590194a9206f551a6f73d52fa34' (2024-08-12) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/74348da2f3a312ee25cea09b98cdba4cb9fa5d5d' (2024-07-14) → 'github:NixOS/nixpkgs/556533a23879fc7e5f98dd2e0b31a6911a213171' (2024-07-21) --- flake.lock | 60 +++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/flake.lock b/flake.lock index ce87ae1..dfc6cea 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1721007199, - "narHash": "sha256-Gof4Lj1rgTrX59bNu5b/uS/3X/marUGM7LYw31NoXEA=", + "lastModified": 1723426710, + "narHash": "sha256-yrS9al6l3fYfFfvovnyBWnyELDQOdfKyai4K/jKgoBw=", "owner": "nix-community", "repo": "disko", - "rev": "bad376945de7033c7adc424c02054ea3736cf7c4", + "rev": "0d510fe40b56ed74907a021d7e1ffd0042592914", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1717050755, - "narHash": "sha256-C9IEHABulv2zEDFA+Bf0E1nmfN4y6MIUe5eM2RCrDC0=", + "lastModified": 1722589758, + "narHash": "sha256-sbbA8b6Q2vB/t/r1znHawoXLysCyD4L/6n6/RykiSnA=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "31b6d2e40b36456e792cd6cf50d5a8ddd2fa59a1", + "rev": "4e08ca09253ef996bd4c03afa383b23e35fe28a1", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1721042469, - "narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=", + "lastModified": 1723202784, + "narHash": "sha256-qbhjc/NEGaDbyy0ucycubq4N3//gDFFH3DOmp1D3u1Q=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "f451c19376071a90d8c58ab1a953c6e9840527fd", + "rev": "c7012d0c18567c889b948781bc74a501e92275d1", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1720737798, - "narHash": "sha256-G/OtEAts7ZUvW5lrGMXSb8HqRp2Jr9I7reBuvCOL54w=", + "lastModified": 1723310128, + "narHash": "sha256-IiH8jG6PpR4h9TxSGMYh+2/gQiJW9MwehFvheSb5rPc=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "c5013aa7ce2c7ec90acee5d965d950c8348db751", + "rev": "c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1720954236, - "narHash": "sha256-1mEKHp4m9brvfQ0rjCca8P1WHpymK3TOr3v34ydv9bs=", + "lastModified": 1723400035, + "narHash": "sha256-WoKZDlBEdMhP+hjquBAh0BhUJbcH2+U8g2mHOr1mv8I=", "owner": "nixos", "repo": "nixpkgs", - "rev": "53e81e790209e41f0c1efa9ff26ff2fd7ab35e27", + "rev": "a731b45590a5169542990c36ffcde6cebd9a3356", "type": "github" }, "original": { @@ -378,11 +378,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1720915306, - "narHash": "sha256-6vuViC56+KSr+945bCV8akHK+7J5k6n/epYg/W3I5eQ=", + "lastModified": 1721524707, + "narHash": "sha256-5NctRsoE54N86nWd0psae70YSLfrOek3Kv1e8KoXe/0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "74348da2f3a312ee25cea09b98cdba4cb9fa5d5d", + "rev": "556533a23879fc7e5f98dd2e0b31a6911a213171", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1721241996, - "narHash": "sha256-4An0f26vnpKA9vm1FG0XtOxDaPHiTrziTekwaX3J3jE=", + "lastModified": 1723553046, + "narHash": "sha256-bup3YXvp+VOBP9VNKl6UaV9aQ7A3ybf5bWK22yPJ530=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3f7fcbb2f91ec01dfb2574567d668494a56304e7", + "rev": "0972c7d0124cc865be8803af49b979e5d44fc577", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1721241063, - "narHash": "sha256-jBAuwmtJmSNT6xwjtGINslFK0m3R3+Ydw+xrd+a3tSE=", + "lastModified": 1723549487, + "narHash": "sha256-65NYBcYUx0DjL7TGlesle5PdtJVfOCPnv5zvsgB/dRw=", "owner": "nix-community", "repo": "NUR", - "rev": "f33f46c1e38b07b20a978ac39208058ab9ddedb1", + "rev": "20b1fc4032363116a880dc64e3fa96f8a24d4e64", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1721039874, - "narHash": "sha256-XANsG9GYHip8pxZpbqKf/YGv8tIa0xTh289Y+WNBNfw=", + "lastModified": 1723512448, + "narHash": "sha256-VSTtxGKre1p6zd6ACuBmfDcR+BT9+ml8Y3KrSbfGFYU=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "d11c01e58587e5f21037ed6477465a7f26a32e27", + "rev": "ed52f844c4dd04dde45550c3189529854384124e", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1720926522, - "narHash": "sha256-eTpnrT6yu1vp8C0B5fxHXhgKxHoYMoYTEikQx///jxY=", + "lastModified": 1723501126, + "narHash": "sha256-N9IcHgj/p1+2Pvk8P4Zc1bfrMwld5PcosVA0nL6IGdE=", "owner": "Mic92", "repo": "sops-nix", - "rev": "0703ba03fd9c1665f8ab68cc3487302475164617", + "rev": "be0eec2d27563590194a9206f551a6f73d52fa34", "type": "github" }, "original": { From 7f02d2b6689b6bb3242203eb1a3cffd40fb32c44 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 14 Aug 2024 14:05:56 +0200 Subject: [PATCH 223/562] Add NTP server to DHCP configuration --- hosts/iron/services/dnsmasq.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hosts/iron/services/dnsmasq.nix b/hosts/iron/services/dnsmasq.nix index 04c537a..8e7ca67 100644 --- a/hosts/iron/services/dnsmasq.nix +++ b/hosts/iron/services/dnsmasq.nix @@ -34,6 +34,9 @@ in "2001:470:20::2" # ordns.he.net "74.82.42.42" # ordns.he.net ]; + dhcp-option = [ + "option:ntp-server,192.168.42.1" + ]; }; }; From 368f648adca39b989f9ac0eb83510ee3371297ab Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 14 Aug 2024 18:54:33 +0200 Subject: [PATCH 224/562] Rework pass - Remove pw script - Add otp extension --- users/jalr/modules/pass.nix | 47 ++++++++++++------------------------- 1 file changed, 15 insertions(+), 32 deletions(-) diff --git a/users/jalr/modules/pass.nix b/users/jalr/modules/pass.nix index e3950a3..e77fdb9 100644 --- a/users/jalr/modules/pass.nix +++ b/users/jalr/modules/pass.nix @@ -1,35 +1,18 @@ -{ nixosConfig, pkgs, ... }: +{ nixosConfig, lib, config, pkgs, ... }: -let - pw = pkgs.writeScriptBin "pw" '' - p="$(${pkgs.pass}/bin/pass show "$1")" - - copy_line() { - echo -n "$p" \ - | ${pkgs.gnused}/bin/sed -n "$1"p \ - | ${pkgs.wl-clipboard}/bin/wl-copy \ - --paste-once \ - --foreground \ - --trim-newline \ - --type text/plain - } - - echo "username" - copy_line 2 - echo "password" - copy_line 1 - ''; -in { - home.packages = [ - pw - ] ++ - ( - if nixosConfig.jalr.gui.enable - then with pkgs; [ - qtpass - pass-wayland - ] - else [ ] - ); + programs.password-store = { + enable = true; + package = + if nixosConfig.jalr.gui.enable + then pkgs.pass-wayland.withExtensions (exts: [ exts.pass-otp ]) + else pkgs.pass.withExtensions (exts: [ exts.pass-otp ]); + }; + home.packages = lib.optionals nixosConfig.jalr.gui.enable [ + pkgs.qtpass + ]; + xdg.dataFile.password-store = { + source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.password-store"; + target = "password-store"; + }; } From 442d60a4c84fd3ca68aac6e00117d39699c21e39 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 15 Aug 2024 09:54:12 +0200 Subject: [PATCH 225/562] Add completions for just --- users/jalr/modules/fish.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index 570509a..63c7692 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -192,4 +192,8 @@ complete -c mycli -f -s h -l host -r -a '(__fish_print_hostnames)' complete -c mycli -f -s d -l dsn -r -a '(mycli --list-dsn)' ''; + + xdg.configFile."fish/completions/just.fish".source = pkgs.runCommand "just-fish-completions" { } '' + ${pkgs.just}/bin/just --completions fish > $out + ''; } From 2501db5c5dd21dd4088d092cc502d65270c48438 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 20 Aug 2024 11:31:32 +0200 Subject: [PATCH 226/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/0d510fe40b56ed74907a021d7e1ffd0042592914' (2024-08-12) → 'github:nix-community/disko/4e719b38fa7c85f4f65d0308ca7084c91e7bdd6d' (2024-08-19) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/c7012d0c18567c889b948781bc74a501e92275d1' (2024-08-09) → 'github:cachix/git-hooks.nix/bfef0ada09e2c8ac55bbcd0831bd0c9d42e651ba' (2024-08-16) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf' (2024-08-10) → 'github:nixos/nixos-hardware/b09c46430ffcf18d575acf5c339b38ac4e1db5d2' (2024-08-19) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/a731b45590a5169542990c36ffcde6cebd9a3356' (2024-08-11) → 'github:nixos/nixpkgs/c42fcfbdfeae23e68fc520f9182dde9f38ad1890' (2024-08-17) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/0972c7d0124cc865be8803af49b979e5d44fc577' (2024-08-13) → 'github:NixOS/nixpkgs/1bc1437a085748a3b24c8f25047eb2eac4068318' (2024-08-20) • Updated input 'nur': 'github:nix-community/NUR/20b1fc4032363116a880dc64e3fa96f8a24d4e64' (2024-08-13) → 'github:nix-community/NUR/0ba1aacb815bd8574f6bd25032fdb4fd77d6e630' (2024-08-20) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/ed52f844c4dd04dde45550c3189529854384124e' (2024-08-13) → 'github:nix-community/poetry2nix/5ee730a8752264e463c0eaf06cc060fd07f6dae9' (2024-08-20) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index dfc6cea..af034e9 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1723426710, - "narHash": "sha256-yrS9al6l3fYfFfvovnyBWnyELDQOdfKyai4K/jKgoBw=", + "lastModified": 1724031427, + "narHash": "sha256-o1HdAf+7IGv9M13R3c+zc/sJ0QgeEnhsvHBcodI4UpM=", "owner": "nix-community", "repo": "disko", - "rev": "0d510fe40b56ed74907a021d7e1ffd0042592914", + "rev": "4e719b38fa7c85f4f65d0308ca7084c91e7bdd6d", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1723202784, - "narHash": "sha256-qbhjc/NEGaDbyy0ucycubq4N3//gDFFH3DOmp1D3u1Q=", + "lastModified": 1723803910, + "narHash": "sha256-yezvUuFiEnCFbGuwj/bQcqg7RykIEqudOy/RBrId0pc=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "c7012d0c18567c889b948781bc74a501e92275d1", + "rev": "bfef0ada09e2c8ac55bbcd0831bd0c9d42e651ba", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1723310128, - "narHash": "sha256-IiH8jG6PpR4h9TxSGMYh+2/gQiJW9MwehFvheSb5rPc=", + "lastModified": 1724067415, + "narHash": "sha256-WJBAEFXAtA41RMpK8mvw0cQ62CJkNMBtzcEeNIJV7b0=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf", + "rev": "b09c46430ffcf18d575acf5c339b38ac4e1db5d2", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1723400035, - "narHash": "sha256-WoKZDlBEdMhP+hjquBAh0BhUJbcH2+U8g2mHOr1mv8I=", + "lastModified": 1723938990, + "narHash": "sha256-9tUadhnZQbWIiYVXH8ncfGXGvkNq3Hag4RCBEMUk7MI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a731b45590a5169542990c36ffcde6cebd9a3356", + "rev": "c42fcfbdfeae23e68fc520f9182dde9f38ad1890", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1723553046, - "narHash": "sha256-bup3YXvp+VOBP9VNKl6UaV9aQ7A3ybf5bWK22yPJ530=", + "lastModified": 1724145953, + "narHash": "sha256-WamuitHHkmPp/fzwAdZxprYR7BOhtNytGmDuCp0UoHg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0972c7d0124cc865be8803af49b979e5d44fc577", + "rev": "1bc1437a085748a3b24c8f25047eb2eac4068318", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1723549487, - "narHash": "sha256-65NYBcYUx0DjL7TGlesle5PdtJVfOCPnv5zvsgB/dRw=", + "lastModified": 1724135985, + "narHash": "sha256-yImm/xJDDBganXyJawdIbwG1hCFYbeaLEwDLMSCdUvg=", "owner": "nix-community", "repo": "NUR", - "rev": "20b1fc4032363116a880dc64e3fa96f8a24d4e64", + "rev": "0ba1aacb815bd8574f6bd25032fdb4fd77d6e630", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1723512448, - "narHash": "sha256-VSTtxGKre1p6zd6ACuBmfDcR+BT9+ml8Y3KrSbfGFYU=", + "lastModified": 1724134185, + "narHash": "sha256-nDqpGjz7cq3ThdC98BPe1ANCNlsJds/LLZ3/MdIXjA0=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "ed52f844c4dd04dde45550c3189529854384124e", + "rev": "5ee730a8752264e463c0eaf06cc060fd07f6dae9", "type": "github" }, "original": { From 28b6f5acf30a82749225fb71579f0814931088bb Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 20 Aug 2024 12:04:31 +0200 Subject: [PATCH 227/562] Add vim-fluid --- pkgs/default.nix | 3 +++ pkgs/vim-fluid/default.nix | 12 ++++++++++++ users/jalr/modules/neovim.nix | 6 ++++++ 3 files changed, 21 insertions(+) create mode 100644 pkgs/vim-fluid/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 35c5b95..f25637b 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -29,4 +29,7 @@ in circadian_lighting = callPackage ./home-assistant-custom-components/circadian_lighting.nix { }; guntamatic = callPackage ./home-assistant-custom-components/guntamatic.nix { }; }; + vimPlugins = prev.vimPlugins // { + vim-fluid = callPackage ./vim-fluid { inherit (prev.vimUtils) buildVimPlugin; }; + }; } diff --git a/pkgs/vim-fluid/default.nix b/pkgs/vim-fluid/default.nix new file mode 100644 index 0000000..35f232f --- /dev/null +++ b/pkgs/vim-fluid/default.nix @@ -0,0 +1,12 @@ +{ buildVimPlugin, fetchFromGitHub }: +buildVimPlugin { + pname = "vim-fluid"; + version = "0.0.1"; + src = fetchFromGitHub { + owner = "mipmip"; + repo = "vim-fluid"; + rev = "cedc4ad871941e8f7134d1d71f9434f1bc3d93d5"; + sha256 = "sha256-LiS2Dqw1K1Fu5VfHQnxIBDxDzEarmSAUUavQcwHRDsQ="; + }; + meta.homepage = "https://github.com/mipmip/vim-fluid"; +} diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index 4654577..ddda151 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -101,6 +101,12 @@ in lua require'nvim-treesitter.configs'.setup { highlight = { enable = true, }, } ''; } + { + plugin = vim-fluid; + config = '' + au BufRead *.html if join(getline(1,3), "\n") =~ 'data-namespace-typo3-fluid="true"' | setlocal filetype=fluid | endif + ''; + } vim-gitgutter vim-indent-guides vim-nix From a3fdb19b1075a5aeb2fc2354605708b7fff5bd2b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 20 Aug 2024 15:23:11 +0200 Subject: [PATCH 228/562] Add vim-typoscript plugin --- pkgs/default.nix | 1 + pkgs/vim-typoscript/default.nix | 13 +++++++++++++ users/jalr/modules/neovim.nix | 1 + 3 files changed, 15 insertions(+) create mode 100644 pkgs/vim-typoscript/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index f25637b..54cca56 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -31,5 +31,6 @@ in }; vimPlugins = prev.vimPlugins // { vim-fluid = callPackage ./vim-fluid { inherit (prev.vimUtils) buildVimPlugin; }; + vim-typoscript = callPackage ./vim-typoscript { inherit (prev.vimUtils) buildVimPlugin; }; }; } diff --git a/pkgs/vim-typoscript/default.nix b/pkgs/vim-typoscript/default.nix new file mode 100644 index 0000000..ab85d79 --- /dev/null +++ b/pkgs/vim-typoscript/default.nix @@ -0,0 +1,13 @@ +{ buildVimPlugin, fetchFromGitHub }: +buildVimPlugin rec { + pname = "vim-typoscript"; + version = "2.0.0"; + src = fetchFromGitHub { + owner = "DanielSiepmann"; + repo = "mirror-vim.typoscript"; + rev = "v${version}"; + sha256 = "sha256-fCB+ikDmkfEP/W0pFYGrsZiH30vT0g3z6GZpRGk0Rhc="; + }; + meta.homepage = "https://git.daniel-siepmann.de/danielsiepmann/vim-syntax-typoscript"; +} + diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index ddda151..deb6fe2 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -112,6 +112,7 @@ in vim-nix vim-puppet vim-terraform + vim-typoscript ( lib.mkIf nixosConfig.jalr.workstation.enable { plugin = lsp_signature-nvim; From 1ac083a5fd2c9e09ba469a51ecdb3b465242914f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 23 Aug 2024 15:04:04 +0200 Subject: [PATCH 229/562] Add jinja plugin --- users/jalr/modules/neovim.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index deb6fe2..ee25579 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -84,6 +84,7 @@ in NeoSolarized deoplete-nvim editorconfig-vim + jinja-vim nvim-lspconfig { plugin = telescope-nvim; From a1ca116b489dbd1d049cc46095ccdd2a2b02f087 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 26 Aug 2024 18:07:05 +0200 Subject: [PATCH 230/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/4e719b38fa7c85f4f65d0308ca7084c91e7bdd6d' (2024-08-19) → 'github:nix-community/disko/b09eb605e376c9e95c87c0ef3fcb8008e11c8368' (2024-08-26) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/bfef0ada09e2c8ac55bbcd0831bd0c9d42e651ba' (2024-08-16) → 'github:cachix/git-hooks.nix/c8a54057aae480c56e28ef3e14e4960628ac495b' (2024-08-23) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/b09c46430ffcf18d575acf5c339b38ac4e1db5d2' (2024-08-19) → 'github:nixos/nixos-hardware/9fc19be21f0807d6be092d70bf0b1de0c00ac895' (2024-08-25) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/c42fcfbdfeae23e68fc520f9182dde9f38ad1890' (2024-08-17) → 'github:nixos/nixpkgs/797f7dc49e0bc7fab4b57c021cdf68f595e47841' (2024-08-22) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/1bc1437a085748a3b24c8f25047eb2eac4068318' (2024-08-20) → 'github:NixOS/nixpkgs/94930d463b3c7b50eb6a6a8a25089759a8431f59' (2024-08-26) • Updated input 'nur': 'github:nix-community/NUR/0ba1aacb815bd8574f6bd25032fdb4fd77d6e630' (2024-08-20) → 'github:nix-community/NUR/b88e43567b88e61760055808ce2f3f8928a06fd1' (2024-08-26) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/5ee730a8752264e463c0eaf06cc060fd07f6dae9' (2024-08-20) → 'github:nix-community/poetry2nix/7619e43c2b48c29e24b88a415256f09df96ec276' (2024-08-23) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index af034e9..53f7881 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1724031427, - "narHash": "sha256-o1HdAf+7IGv9M13R3c+zc/sJ0QgeEnhsvHBcodI4UpM=", + "lastModified": 1724639687, + "narHash": "sha256-L2h46/z8WExNvtCEdZ8YuMu5TwfAGsKXXgM7pyIShvs=", "owner": "nix-community", "repo": "disko", - "rev": "4e719b38fa7c85f4f65d0308ca7084c91e7bdd6d", + "rev": "b09eb605e376c9e95c87c0ef3fcb8008e11c8368", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1723803910, - "narHash": "sha256-yezvUuFiEnCFbGuwj/bQcqg7RykIEqudOy/RBrId0pc=", + "lastModified": 1724440431, + "narHash": "sha256-9etXEOUtzeMgqg1u0wp+EdwG7RpmrAZ2yX516bMj2aE=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "bfef0ada09e2c8ac55bbcd0831bd0c9d42e651ba", + "rev": "c8a54057aae480c56e28ef3e14e4960628ac495b", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1724067415, - "narHash": "sha256-WJBAEFXAtA41RMpK8mvw0cQ62CJkNMBtzcEeNIJV7b0=", + "lastModified": 1724575805, + "narHash": "sha256-OB/kEL3GAhUZmUfkbPfsPhKs0pRqJKs0EEBiLfyKZw8=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "b09c46430ffcf18d575acf5c339b38ac4e1db5d2", + "rev": "9fc19be21f0807d6be092d70bf0b1de0c00ac895", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1723938990, - "narHash": "sha256-9tUadhnZQbWIiYVXH8ncfGXGvkNq3Hag4RCBEMUk7MI=", + "lastModified": 1724316499, + "narHash": "sha256-Qb9MhKBUTCfWg/wqqaxt89Xfi6qTD3XpTzQ9eXi3JmE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c42fcfbdfeae23e68fc520f9182dde9f38ad1890", + "rev": "797f7dc49e0bc7fab4b57c021cdf68f595e47841", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1724145953, - "narHash": "sha256-WamuitHHkmPp/fzwAdZxprYR7BOhtNytGmDuCp0UoHg=", + "lastModified": 1724684795, + "narHash": "sha256-Y0L/3OCfiD20VCgY/ZXWkijmaXGUpp1QjijZqL4aJS8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1bc1437a085748a3b24c8f25047eb2eac4068318", + "rev": "94930d463b3c7b50eb6a6a8a25089759a8431f59", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1724135985, - "narHash": "sha256-yImm/xJDDBganXyJawdIbwG1hCFYbeaLEwDLMSCdUvg=", + "lastModified": 1724686814, + "narHash": "sha256-OwcY7S/yNv0nJL+YRw6ZZF0ptpQw8o9ctCGYwQfBtsA=", "owner": "nix-community", "repo": "NUR", - "rev": "0ba1aacb815bd8574f6bd25032fdb4fd77d6e630", + "rev": "b88e43567b88e61760055808ce2f3f8928a06fd1", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1724134185, - "narHash": "sha256-nDqpGjz7cq3ThdC98BPe1ANCNlsJds/LLZ3/MdIXjA0=", + "lastModified": 1724417163, + "narHash": "sha256-gD0N0pnKxWJcKtbetlkKOIumS0Zovgxx/nMfOIJIzoI=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "5ee730a8752264e463c0eaf06cc060fd07f6dae9", + "rev": "7619e43c2b48c29e24b88a415256f09df96ec276", "type": "github" }, "original": { From 4166d39a3e87decf73e12c48476caa1442b41f21 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 27 Aug 2024 20:32:06 +0200 Subject: [PATCH 231/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/b09eb605e376c9e95c87c0ef3fcb8008e11c8368' (2024-08-26) → 'github:nix-community/disko/b89a61129f3976d6440e2356ac5d3e30930f7012' (2024-08-27) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/c8a54057aae480c56e28ef3e14e4960628ac495b' (2024-08-23) → 'github:cachix/git-hooks.nix/1cd12de659fab215624c630c37d1c62aa2b7824e' (2024-08-27) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/797f7dc49e0bc7fab4b57c021cdf68f595e47841' (2024-08-22) → 'github:nixos/nixpkgs/2527da1ef492c495d5391f3bcf9c1dd9f4514e32' (2024-08-24) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/94930d463b3c7b50eb6a6a8a25089759a8431f59' (2024-08-26) → 'github:NixOS/nixpkgs/3745928ba909559bd73779e29c3448d553818e7c' (2024-08-27) • Updated input 'nur': 'github:nix-community/NUR/b88e43567b88e61760055808ce2f3f8928a06fd1' (2024-08-26) → 'github:nix-community/NUR/95f1862227c883581265a8801ea28af99635dd97' (2024-08-27) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 53f7881..5972978 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1724639687, - "narHash": "sha256-L2h46/z8WExNvtCEdZ8YuMu5TwfAGsKXXgM7pyIShvs=", + "lastModified": 1724769572, + "narHash": "sha256-K+HQbC2/hnGngIB019mX6f4XUrf7dB1eBfiUHW4Vx48=", "owner": "nix-community", "repo": "disko", - "rev": "b09eb605e376c9e95c87c0ef3fcb8008e11c8368", + "rev": "b89a61129f3976d6440e2356ac5d3e30930f7012", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1724440431, - "narHash": "sha256-9etXEOUtzeMgqg1u0wp+EdwG7RpmrAZ2yX516bMj2aE=", + "lastModified": 1724763886, + "narHash": "sha256-SzBtZs5z+YGM50oyt67R78qLhxG/wG5/SlVRsCF5kRc=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "c8a54057aae480c56e28ef3e14e4960628ac495b", + "rev": "1cd12de659fab215624c630c37d1c62aa2b7824e", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1724316499, - "narHash": "sha256-Qb9MhKBUTCfWg/wqqaxt89Xfi6qTD3XpTzQ9eXi3JmE=", + "lastModified": 1724531977, + "narHash": "sha256-XROVLf9ti4rrNCFLr+DmXRZtPjCQTW4cYy59owTEmxk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "797f7dc49e0bc7fab4b57c021cdf68f595e47841", + "rev": "2527da1ef492c495d5391f3bcf9c1dd9f4514e32", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1724684795, - "narHash": "sha256-Y0L/3OCfiD20VCgY/ZXWkijmaXGUpp1QjijZqL4aJS8=", + "lastModified": 1724783408, + "narHash": "sha256-PZyawI4vmyjG3yRJoU8T3xetBifB5b23y/JsgY2w85g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "94930d463b3c7b50eb6a6a8a25089759a8431f59", + "rev": "3745928ba909559bd73779e29c3448d553818e7c", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1724686814, - "narHash": "sha256-OwcY7S/yNv0nJL+YRw6ZZF0ptpQw8o9ctCGYwQfBtsA=", + "lastModified": 1724775364, + "narHash": "sha256-agN3Oaph2+2DH3+m6Jp4d1ji5s93joohKcV35DfJWQk=", "owner": "nix-community", "repo": "NUR", - "rev": "b88e43567b88e61760055808ce2f3f8928a06fd1", + "rev": "95f1862227c883581265a8801ea28af99635dd97", "type": "github" }, "original": { From d1d11a3eeef3e90e936c1639d4a44fe609c94398 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 2 Sep 2024 11:45:49 +0200 Subject: [PATCH 232/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/b89a61129f3976d6440e2356ac5d3e30930f7012' (2024-08-27) → 'github:nix-community/disko/96073e6423623d4a8027e9739d2af86d6422ea7a' (2024-09-02) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/1cd12de659fab215624c630c37d1c62aa2b7824e' (2024-08-27) → 'github:cachix/git-hooks.nix/4509ca64f1084e73bc7a721b20c669a8d4c5ebe6' (2024-08-28) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/9fc19be21f0807d6be092d70bf0b1de0c00ac895' (2024-08-25) → 'github:nixos/nixos-hardware/95c3dfe6ef2e96ddc1ccdd7194e3cda02ca9a8ef' (2024-08-28) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/2527da1ef492c495d5391f3bcf9c1dd9f4514e32' (2024-08-24) → 'github:nixos/nixpkgs/6e99f2a27d600612004fbd2c3282d614bfee6421' (2024-08-30) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/3745928ba909559bd73779e29c3448d553818e7c' (2024-08-27) → 'github:NixOS/nixpkgs/e4a2b7892d0614864f49a2ad5f832eda82f7c471' (2024-09-02) • Updated input 'nur': 'github:nix-community/NUR/95f1862227c883581265a8801ea28af99635dd97' (2024-08-27) → 'github:nix-community/NUR/22e350ecdc47dc5dbba7dfe0e63cf58c3482a0bd' (2024-09-02) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/7619e43c2b48c29e24b88a415256f09df96ec276' (2024-08-23) → 'github:nix-community/poetry2nix/0d3fad5740d892487805cd2d60d8e4ed828486e9' (2024-09-02) • Updated input 'sops-nix': 'github:Mic92/sops-nix/be0eec2d27563590194a9206f551a6f73d52fa34' (2024-08-12) → 'github:Mic92/sops-nix/5db5921e40ae382d6716dce591ea23b0a39d96f7' (2024-09-01) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 5972978..66bb545 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1724769572, - "narHash": "sha256-K+HQbC2/hnGngIB019mX6f4XUrf7dB1eBfiUHW4Vx48=", + "lastModified": 1725242307, + "narHash": "sha256-a2iTMBngegEZvaNAzzxq5Gc5Vp3UWoGUqWtK11Txbic=", "owner": "nix-community", "repo": "disko", - "rev": "b89a61129f3976d6440e2356ac5d3e30930f7012", + "rev": "96073e6423623d4a8027e9739d2af86d6422ea7a", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1724763886, - "narHash": "sha256-SzBtZs5z+YGM50oyt67R78qLhxG/wG5/SlVRsCF5kRc=", + "lastModified": 1724857454, + "narHash": "sha256-Qyl9Q4QMTLZnnBb/8OuQ9LSkzWjBU1T5l5zIzTxkkhk=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "1cd12de659fab215624c630c37d1c62aa2b7824e", + "rev": "4509ca64f1084e73bc7a721b20c669a8d4c5ebe6", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1724575805, - "narHash": "sha256-OB/kEL3GAhUZmUfkbPfsPhKs0pRqJKs0EEBiLfyKZw8=", + "lastModified": 1724878143, + "narHash": "sha256-UjpKo92iZ25M05kgSOw/Ti6VZwpgdlOa73zHj8OcaDk=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "9fc19be21f0807d6be092d70bf0b1de0c00ac895", + "rev": "95c3dfe6ef2e96ddc1ccdd7194e3cda02ca9a8ef", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1724531977, - "narHash": "sha256-XROVLf9ti4rrNCFLr+DmXRZtPjCQTW4cYy59owTEmxk=", + "lastModified": 1725001927, + "narHash": "sha256-eV+63gK0Mp7ygCR0Oy4yIYSNcum2VQwnZamHxYTNi+M=", "owner": "nixos", "repo": "nixpkgs", - "rev": "2527da1ef492c495d5391f3bcf9c1dd9f4514e32", + "rev": "6e99f2a27d600612004fbd2c3282d614bfee6421", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1724783408, - "narHash": "sha256-PZyawI4vmyjG3yRJoU8T3xetBifB5b23y/JsgY2w85g=", + "lastModified": 1725270189, + "narHash": "sha256-czWe/ldomeJqX8SgdLPhpGu71ST+g4tJRjGNWMCIPGg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3745928ba909559bd73779e29c3448d553818e7c", + "rev": "e4a2b7892d0614864f49a2ad5f832eda82f7c471", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1724775364, - "narHash": "sha256-agN3Oaph2+2DH3+m6Jp4d1ji5s93joohKcV35DfJWQk=", + "lastModified": 1725267338, + "narHash": "sha256-PM8w4aivrIjfkrmMY2ndIlVhvcJD6XFsNBthfoIC0y4=", "owner": "nix-community", "repo": "NUR", - "rev": "95f1862227c883581265a8801ea28af99635dd97", + "rev": "22e350ecdc47dc5dbba7dfe0e63cf58c3482a0bd", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1724417163, - "narHash": "sha256-gD0N0pnKxWJcKtbetlkKOIumS0Zovgxx/nMfOIJIzoI=", + "lastModified": 1725253878, + "narHash": "sha256-HwXut4WbOUAjmybhui2eNSE6+Wb0nigYgDzBBOZaPG4=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "7619e43c2b48c29e24b88a415256f09df96ec276", + "rev": "0d3fad5740d892487805cd2d60d8e4ed828486e9", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1723501126, - "narHash": "sha256-N9IcHgj/p1+2Pvk8P4Zc1bfrMwld5PcosVA0nL6IGdE=", + "lastModified": 1725201042, + "narHash": "sha256-lj5pxOwidP0W//E7IvyhbhXrnEUW99I07+QpERnzTS4=", "owner": "Mic92", "repo": "sops-nix", - "rev": "be0eec2d27563590194a9206f551a6f73d52fa34", + "rev": "5db5921e40ae382d6716dce591ea23b0a39d96f7", "type": "github" }, "original": { From 07bd344eb8701347810cc6406ec998ddabf5abb7 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 3 Sep 2024 22:01:31 +0200 Subject: [PATCH 233/562] Add bridge interface --- hosts/iron/configuration.nix | 22 ++++++++++++++-------- hosts/iron/interfaces.nix | 4 ++++ hosts/iron/services/dnsmasq.nix | 3 ++- hosts/iron/services/dyndns.nix | 5 ++++- hosts/iron/services/unifi-controller.nix | 3 ++- 5 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 hosts/iron/interfaces.nix diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index 31d5069..5963afe 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -1,5 +1,6 @@ { inputs, config, pkgs, lib, ... }: let + interfaces = import ./interfaces.nix; zfsKernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; disks = [ "ata-Samsung_SSD_870_QVO_8TB_S5SSNG0R103837K" @@ -46,14 +47,19 @@ with lib; { useDHCP = false; networkmanager.enable = false; + bridges = { + "${interfaces.lan}" = { + interfaces = [ "enp2s4" "enp3s5" ]; + }; + }; vlans = { iot = { id = 20; - interface = "enp2s4"; + interface = interfaces.lan; }; }; interfaces = { - enp2s4.ipv4.addresses = [{ + "${interfaces.lan}".ipv4.addresses = [{ address = "192.168.42.1"; prefixLength = 24; }]; @@ -61,16 +67,16 @@ with lib; { address = "10.20.0.1"; prefixLength = 20; }]; - enp3s5 = { + "${interfaces.wan}" = { useDHCP = true; }; }; nat = { enable = true; - externalInterface = "enp3s5"; + externalInterface = interfaces.wan; internalInterfaces = [ - "enp2s4" + interfaces.lan ]; }; @@ -82,7 +88,7 @@ with lib; { services.radvd = { enable = true; config = '' - interface enp2s4 { + interface ${interfaces.lan} { AdvSendAdvert on; prefix ::/64 { AdvOnLink on; @@ -97,10 +103,10 @@ with lib; { noipv6rs waitip 6 - interface enp3s5 + interface ${interfaces.wan} ipv6rs ia_na 1 - ia_pd 1/::/64 enp2s4/0/64 + ia_pd 1/::/64 ${interfaces.lan}/0/64 ''; boot = { diff --git a/hosts/iron/interfaces.nix b/hosts/iron/interfaces.nix new file mode 100644 index 0000000..dec89ae --- /dev/null +++ b/hosts/iron/interfaces.nix @@ -0,0 +1,4 @@ +{ + lan = "br0"; + wan = "enp0s25"; +} diff --git a/hosts/iron/services/dnsmasq.nix b/hosts/iron/services/dnsmasq.nix index 8e7ca67..15d6710 100644 --- a/hosts/iron/services/dnsmasq.nix +++ b/hosts/iron/services/dnsmasq.nix @@ -1,6 +1,7 @@ { lib, pkgs, ... }: let + interfaces = import ../interfaces.nix; stateDir = "/var/lib/dnsmasq"; in { @@ -41,7 +42,7 @@ in }; networking.firewall.interfaces = lib.attrsets.genAttrs [ - "enp2s4" + interfaces.lan "iot" ] ( diff --git a/hosts/iron/services/dyndns.nix b/hosts/iron/services/dyndns.nix index 9b4aebf..710aceb 100644 --- a/hosts/iron/services/dyndns.nix +++ b/hosts/iron/services/dyndns.nix @@ -1,4 +1,7 @@ { config, ... }: +let + interfaces = import ../interfaces.nix; +in { sops.secrets.duckdns-secret = { sopsFile = ../secrets.yaml; @@ -11,7 +14,7 @@ username = "nouser"; passwordFile = config.sops.secrets.duckdns-secret.path; domains = [ "jalr-bw" ]; - use = "if, if=enp3s5"; + use = "if, if=${interfaces.wan}"; #usev6=ifv6, ifv6=enp3s4 }; } diff --git a/hosts/iron/services/unifi-controller.nix b/hosts/iron/services/unifi-controller.nix index bb5417f..6eeed31 100644 --- a/hosts/iron/services/unifi-controller.nix +++ b/hosts/iron/services/unifi-controller.nix @@ -2,13 +2,14 @@ args@{ pkgs, custom-utils, ... }: let ports = import ../ports.nix args; + interfaces = import ../interfaces.nix; in { services.unifi = { enable = true; unifiPackage = pkgs.unifi8; }; - networking.firewall.interfaces.enp2s4.allowedTCPPorts = [ + networking.firewall.interfaces."${interfaces.lan}".allowedTCPPorts = [ ports.unifi-http.tcp ports.unifi-https.tcp ]; From e373b452dab71900b458af8ecb673da806afa66d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 8 Sep 2024 01:09:57 +0200 Subject: [PATCH 234/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/96073e6423623d4a8027e9739d2af86d6422ea7a' (2024-09-02) → 'github:nix-community/disko/e55f9a8678adc02024a4877c2a403e3f6daf24fe' (2024-09-03) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/4e08ca09253ef996bd4c03afa383b23e35fe28a1' (2024-08-02) → 'github:nix-community/gomod2nix/1c6fd4e862bf2f249c9114ad625c64c6c29a8a08' (2024-09-05) • Updated input 'home-manager': 'github:nix-community/home-manager/e1391fb22e18a36f57e6999c7a9f966dc80ac073' (2024-07-03) → 'github:nix-community/home-manager/208df2e558b73b6a1f0faec98493cb59a25f62ba' (2024-09-07) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/4509ca64f1084e73bc7a721b20c669a8d4c5ebe6' (2024-08-28) → 'github:cachix/git-hooks.nix/7570de7b9b504cfe92025dd1be797bf546f66528' (2024-09-05) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/95c3dfe6ef2e96ddc1ccdd7194e3cda02ca9a8ef' (2024-08-28) → 'github:nixos/nixos-hardware/04a1cda0c1725094a4db703cccbb956b7558f5a6' (2024-09-07) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/6e99f2a27d600612004fbd2c3282d614bfee6421' (2024-08-30) → 'github:nixos/nixpkgs/6f6c45b5134a8ee2e465164811e451dcb5ad86e3' (2024-09-03) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/e4a2b7892d0614864f49a2ad5f832eda82f7c471' (2024-09-02) → 'github:NixOS/nixpkgs/193565cfe3ff415029ee805fbcbe1c2b2e1a01e3' (2024-09-07) • Updated input 'nur': 'github:nix-community/NUR/22e350ecdc47dc5dbba7dfe0e63cf58c3482a0bd' (2024-09-02) → 'github:nix-community/NUR/c92b904814d4a89d323c90e249c84ef6629ffade' (2024-09-07) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/0d3fad5740d892487805cd2d60d8e4ed828486e9' (2024-09-02) → 'github:nix-community/poetry2nix/a313fd7169ae43ecd1a2ea2f1e4899fe3edba4d2' (2024-09-05) • Updated input 'sops-nix': 'github:Mic92/sops-nix/5db5921e40ae382d6716dce591ea23b0a39d96f7' (2024-09-01) → 'github:Mic92/sops-nix/d9d781523a1463965cd1e1333a306e70d9feff07' (2024-09-05) --- flake.lock | 60 +++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/flake.lock b/flake.lock index 66bb545..d7bdd94 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1725242307, - "narHash": "sha256-a2iTMBngegEZvaNAzzxq5Gc5Vp3UWoGUqWtK11Txbic=", + "lastModified": 1725377834, + "narHash": "sha256-tqoAO8oT6zEUDXte98cvA1saU9+1dLJQe3pMKLXv8ps=", "owner": "nix-community", "repo": "disko", - "rev": "96073e6423623d4a8027e9739d2af86d6422ea7a", + "rev": "e55f9a8678adc02024a4877c2a403e3f6daf24fe", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1722589758, - "narHash": "sha256-sbbA8b6Q2vB/t/r1znHawoXLysCyD4L/6n6/RykiSnA=", + "lastModified": 1725515722, + "narHash": "sha256-+gljgHaflZhQXtr3WjJrGn8NXv7MruVPAORSufuCFnw=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "4e08ca09253ef996bd4c03afa383b23e35fe28a1", + "rev": "1c6fd4e862bf2f249c9114ad625c64c6c29a8a08", "type": "github" }, "original": { @@ -203,11 +203,11 @@ ] }, "locked": { - "lastModified": 1720042825, - "narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=", + "lastModified": 1725703823, + "narHash": "sha256-tDgM4d8mLK0Hd6YMB2w1BqMto1XBXADOzPEaLl10VI4=", "owner": "nix-community", "repo": "home-manager", - "rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073", + "rev": "208df2e558b73b6a1f0faec98493cb59a25f62ba", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1724857454, - "narHash": "sha256-Qyl9Q4QMTLZnnBb/8OuQ9LSkzWjBU1T5l5zIzTxkkhk=", + "lastModified": 1725513492, + "narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "4509ca64f1084e73bc7a721b20c669a8d4c5ebe6", + "rev": "7570de7b9b504cfe92025dd1be797bf546f66528", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1724878143, - "narHash": "sha256-UjpKo92iZ25M05kgSOw/Ti6VZwpgdlOa73zHj8OcaDk=", + "lastModified": 1725716377, + "narHash": "sha256-7NzW9O/cAw7iWzRfh7Oo/SuSudL4a1YTKS6yoh3tMck=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "95c3dfe6ef2e96ddc1ccdd7194e3cda02ca9a8ef", + "rev": "04a1cda0c1725094a4db703cccbb956b7558f5a6", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1725001927, - "narHash": "sha256-eV+63gK0Mp7ygCR0Oy4yIYSNcum2VQwnZamHxYTNi+M=", + "lastModified": 1725407940, + "narHash": "sha256-tiN5Rlg/jiY0tyky+soJZoRzLKbPyIdlQ77xVgREDNM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6e99f2a27d600612004fbd2c3282d614bfee6421", + "rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1725270189, - "narHash": "sha256-czWe/ldomeJqX8SgdLPhpGu71ST+g4tJRjGNWMCIPGg=", + "lastModified": 1725749909, + "narHash": "sha256-z6tE76iVykVY8tGoNZnvm0q50VjxDPhn6YQNPFH1K2c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e4a2b7892d0614864f49a2ad5f832eda82f7c471", + "rev": "193565cfe3ff415029ee805fbcbe1c2b2e1a01e3", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1725267338, - "narHash": "sha256-PM8w4aivrIjfkrmMY2ndIlVhvcJD6XFsNBthfoIC0y4=", + "lastModified": 1725741028, + "narHash": "sha256-/CornZK9spEoVBOXdR/Rf36Hm5WqyIM9u+JXU1ffMEs=", "owner": "nix-community", "repo": "NUR", - "rev": "22e350ecdc47dc5dbba7dfe0e63cf58c3482a0bd", + "rev": "c92b904814d4a89d323c90e249c84ef6629ffade", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1725253878, - "narHash": "sha256-HwXut4WbOUAjmybhui2eNSE6+Wb0nigYgDzBBOZaPG4=", + "lastModified": 1725532428, + "narHash": "sha256-dCfawQDwpukcwQw++Cn/3LIh/RZMmH+k3fm91Oc5Pf0=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "0d3fad5740d892487805cd2d60d8e4ed828486e9", + "rev": "a313fd7169ae43ecd1a2ea2f1e4899fe3edba4d2", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1725201042, - "narHash": "sha256-lj5pxOwidP0W//E7IvyhbhXrnEUW99I07+QpERnzTS4=", + "lastModified": 1725540166, + "narHash": "sha256-htc9rsTMSAY5ek+DB3tpntdD/es0eam2hJgO92bWSys=", "owner": "Mic92", "repo": "sops-nix", - "rev": "5db5921e40ae382d6716dce591ea23b0a39d96f7", + "rev": "d9d781523a1463965cd1e1333a306e70d9feff07", "type": "github" }, "original": { From acc04548f05ce5b06ac3366ba8ac54f9c7248b42 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 9 Sep 2024 14:02:33 +0200 Subject: [PATCH 235/562] Fix udev rule --- modules/dji-goggles.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/dji-goggles.nix b/modules/dji-goggles.nix index 00a735b..951482a 100644 --- a/modules/dji-goggles.nix +++ b/modules/dji-goggles.nix @@ -1,6 +1,6 @@ { services.udev.extraRules = '' # DJI Goggles - SUBSYSTEM=="usb", ATTRS{idVendor}=="2ca3", ATTRS{idProduct}=="001f", GROUP="video", MODE="0660" + SUBSYSTEM=="usb", ATTR{idVendor}=="2ca3", ATTR{idProduct}=="001f", MODE="0660", GROUP="plugdev" ''; } From c5517cfaf76e765b07b1af652c6d94e95f9e31f3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 9 Sep 2024 14:02:56 +0200 Subject: [PATCH 236/562] Add user to plugdev group --- users/jalr/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/default.nix b/users/jalr/default.nix index 09de610..a2d2a83 100644 --- a/users/jalr/default.nix +++ b/users/jalr/default.nix @@ -16,6 +16,7 @@ in "libvirtd" "lp" "networkmanager" + "plugdev" "scanner" "video" "wheel" From 80698ceebd5a0ed1879bb39bbda55a77cb5a490c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 9 Sep 2024 14:03:25 +0200 Subject: [PATCH 237/562] Add scripts configured in UI --- hosts/iron/services/home-assistant.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index acbb59d..c7f304a 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -135,7 +135,7 @@ in platform = "bluetooth_le_tracker"; } ]; - script = [ + "script nix" = [ { lights_off_except = { icon = "mdi:home-lightbulb"; @@ -159,6 +159,7 @@ in }; } ]; + "script ui" = "!include scripts.yaml"; calendar = [ { platform = "caldav"; From 0006377763530da6f1fbd6be9023922938c8d9b3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 11 Sep 2024 13:00:08 +0200 Subject: [PATCH 238/562] Define default applications for mime types --- users/jalr/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/users/jalr/default.nix b/users/jalr/default.nix index a2d2a83..175fdf0 100644 --- a/users/jalr/default.nix +++ b/users/jalr/default.nix @@ -57,6 +57,14 @@ in pwgen ]; + xdg.mimeApps = { + enable = true; + defaultApplications = { + "application/pdf" = "org.gnome.Evince.desktop"; + "image/svg+xml" = "org.inkscape.Inkscape.desktop"; + }; + }; + accounts.email.accounts = { "jalr" = { primary = true; From 2db35dfc54aff58bc8becc78f301acbf517235c2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 11 Sep 2024 18:21:25 +0200 Subject: [PATCH 239/562] Add Matrix sliding-sync service --- hosts/iron/ports.nix | 1 + hosts/iron/secrets.yaml | 5 +++-- hosts/iron/services/matrix.nix | 7 +++++++ hosts/magnesium/services/webserver.nix | 3 ++- modules/matrix/default.nix | 11 +++++++++++ modules/matrix/sliding-sync.nix | 18 ++++++++++++++++++ 6 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 modules/matrix/sliding-sync.nix diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 6b38336..0a751fc 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -7,6 +7,7 @@ custom-utils.validatePortAttrset { home-assistant.tcp = 8123; jellyfin.tcp = 8096; matrix-synapse.tcp = 8008; + matrix-sliding-sync.tcp = 8009; mautrix-signal.tcp = 29319; mautrix-whatsapp.tcp = 29318; navidrome.tcp = 4533; diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 33595e2..4e19154 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -8,6 +8,7 @@ rspamd-worker-controller: ENC[AES256_GCM,data:7tS8bEr9i5F+YZoj3uPQa6Xd2SCsuC+jE5 dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] +matrix-sliding-sync: ENC[AES256_GCM,data:CmR8Q5NL1m+eixenK4u1n3MfVh49/Q3ZIRmWfSbuFMr3u79rIGrtFf2EjaThCwBHQyXdYw1wyTouxhGZql1Fcp/HYma8u4w5nJOaJa1TXg==,iv:/kFqA/+kpCkhHZKJdhadjH11pZwh4MFiQPjY96t8M5k=,tag:aZkDCcbtonHMTv4TdBv1sQ==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] esphome: ENC[AES256_GCM,data:ufIZkZo1aP/Th/8a+9srkJBqLqPQI/ymElIEBmTKzqsJ3HE/mx9QJ1aH0vGVed9W/wSJ+7+huFpB+pNAebJMohK/fAmAVG3lzgT0wKWw8g4u33VHb6X8FIW6q1+CYRnOCQsocgM4EX26YfzaxVpw9P4PF/abwB1bVzr9xnEL2JdJfstzxnR70dKO88WTolykysc443iDW80i0scH+sCh8JIfDrV+V0l3jT+woAeTw1VA0hFa5x9i3tdfrHpzc/sN1/OW6F1CsMVS2pwUTkr7pKp5nfjxhEPi94iLMmakm0XWPZpay2213FQEUYiRqCIGmD1Oiyq0nSVcOAkc66TNwsqrdPCkCL8OPTXuTd+yIfAuU3267kUMNcN2A9kqGMx4Inj8JGlmvxuoQueuXIA4gvVFhJFBdovpl10HY/YkG/cGM0gazfF2+5xG93RgD9Uryq1g61XTFOkOaH7XtGs8Q13xnnXVwfq2pK/vnx9kQkgXJJQRU1Ng8PAg+Rw1VK6bzVz5ugj6q1ei56orNy4A8FU1z1aGyChfPT3XPaDwLr0pEXvc2Vz/6CxAosSpNHIQ6fO0XBM7nvIs/2jHZssXSVo2iwYRZsgZft60cg0FfBmDyc3QH6pVjYhoQGsBlfQt5CtW7XX3rJjQTcDLfzUlO8Ykax7TXZKnDcvtNonRm45bmV+1CqS9KLrBHouWN0axtweabAVW8dld9EnL3CrclE/RbTI0nPOR00S+Ip7wNuBto30yTACxaPHYF79izHu4rQjmm2N5Jt+nI8maEVva6IbAog16NUw6fYDaMwBDeSszBZm0BwNMf36EP/Mcp+MXrBfP1kOYe6HGjftMRDky83XYvP6Cx7FJcPXIZdsMQydxsXB3LKroFqoS2HsHBnCgQbbraQ5UWi40vKXANlKbgFcutqkATvoPW6Hbh07vfiLVfDeuHU9DUCFlgK7KHPWk/g+Uo+TUmgTVKNhbGU/vFu/9h4kIrbf/ocqL/tyMjwA5Yp9e0rQCez8w5Zqfbtqm4N1WB518Q7p52r8C+yLBAua7yB0gAc7SENXWFafkbHClchZXi3c0hY64YvuweDp8G/bPFT/yLuY/yBvA3F2G3CxZXzCMvhMVQfm2yzJeOL20vWumZ8LuIaXJ/13AzLp+lUrc8RmJvU/Hrp6xsEqzXz34qMiBNUR1BKjNAS86WJ1rzD3QtejeETGDwsw016jNbyIMcShgxiEMHnD6HXzWnfTv2fO5xICiAG/VMm5h+vC3MweW2XO01P3O0/Rq/OSy3R8ZlEFErlhR1HiXhc2CdxuuxqDySi0/rP/Jpxf25Zi8mY9YBTFlV0T9ApzJoTwlobMmmxHmqq+vQSKAxLq0lJ/bpO+8utchHbnQNUICveCkX4w+rK9Vnls3zbiLTBnsf+J4y5zpLZ5HkDCUNcEnD29ZR30IYoBTLUG3PlfyH++rLl5ynW5QKUWLnUdjvf9ZwS2veFAZw6tfHelzjkZ5tps5BkjS8YAi/x70Jw4qs3fzZudq6Lej4fsMdkBnYSSN2s7Sc3A1,iv:jSR/M4KS+cZMQgtTZWtPcpmKFD5QNr7s8ClAbXzpR2s=,tag:sp3BnZi+b9WuIiCPapG6Bw==,type:str] home-assistant: ENC[AES256_GCM,data:wcFMxDdRCHf/shO9v2WaGgrsa9J2WP62xFs=,iv:9ckeIO62cFZUo8fPyQj445CrJVTooNlwLapM/oTsrkk=,tag:mlfxtXDPsB3T79P9BX9oJQ==,type:str] @@ -26,8 +27,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-05-06T15:25:14Z" - mac: ENC[AES256_GCM,data:JfgVZ7I/S22cN4yiXqE5nJY0KBq+ZLJABlMTi58VUw5jGf1vUmyTDkzm67QmZtVVL3R/xodrSMJw5CodF7wgVvJFilSvez/ygr1P8KKo7CDMxzl5VTO5uHq5aszOmRFF5N9ZGfUFZxjl3iuCwQofckcMKgeyG/1wOIf37H4Gstw=,iv:oLS4yQdl0LE363gVIkRUieFJ5M2N8Fc4Rge7SuTN85k=,tag:N4uxXbKIHfZonkiV1GxckQ==,type:str] + lastmodified: "2024-09-11T16:10:31Z" + mac: ENC[AES256_GCM,data:7STJaln+9X6xZFAyLSoMCw2PKNiRr4GNhxGbZRPRf+nKfkFh7wJRS3YWVrxd9iOonSPsuHfPnBrAPiq7ILXqwfjNcyf2HtOIPxHz0utE6b0X7KvEwmLSRMOQG9rpsETE5UBQ+DgtU9IwZzTXgh9CGZpHWQAPeOI+lK4OKLlXvkk=,iv:E++ECn4SJy43lW5RWxjSDc7dj0LWDXIuO+5fVFE3+zU=,tag:QFvao9PWSllzXXhGwFQgrw==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/matrix.nix b/hosts/iron/services/matrix.nix index 7214d0d..115277f 100644 --- a/hosts/iron/services/matrix.nix +++ b/hosts/iron/services/matrix.nix @@ -9,12 +9,19 @@ in owner = "matrix-synapse"; sopsFile = ../secrets.yaml; }; + matrix-sliding-sync = { + sopsFile = ../secrets.yaml; + }; }; jalr.matrix = { enable = true; fqdn = "matrix.jalr.de"; domain = "jalr.de"; synapse.port = ports.matrix-synapse.tcp; + sliding-sync = { + port = ports.matrix-sliding-sync.tcp; + secretFile = config.sops.secrets.matrix-sliding-sync.path; + }; turn = { host = "turn.jalr.de"; sharedSecretFile = config.sops.secrets.synapse-turn-shared-secret.path; diff --git a/hosts/magnesium/services/webserver.nix b/hosts/magnesium/services/webserver.nix index 9c55514..8ab2c50 100644 --- a/hosts/magnesium/services/webserver.nix +++ b/hosts/magnesium/services/webserver.nix @@ -44,7 +44,7 @@ in add_header Content-Type application/json; return 200 '${builtins.toJSON { "m.server" = "${matrixDomain}:443"; - }}'; + }}'; ''; "=/.well-known/matrix/client".extraConfig = '' ${parentHeaders} @@ -52,6 +52,7 @@ in add_header Access-Control-Allow-Origin *; return 200 '${builtins.toJSON { "m.homeserver"."base_url" = "https://${matrixDomain}"; + "org.matrix.msc3575.proxy"."url" = "https://${matrixDomain}"; }}'; ''; }; diff --git a/modules/matrix/default.nix b/modules/matrix/default.nix index d237ca5..48dae11 100644 --- a/modules/matrix/default.nix +++ b/modules/matrix/default.nix @@ -21,6 +21,16 @@ in }; }; }; + sliding-sync = { + port = mkOption { + description = "TCP port for synapse service."; + type = port; + }; + secretFile = mkOption { + type = path; + description = "Location of the file to set secret environment variables."; + }; + }; fqdn = mkOption { type = str; description = '' @@ -82,6 +92,7 @@ in imports = [ ./mautrix-signal.nix ./mautrix-whatsapp.nix + ./sliding-sync.nix ./synapse.nix ]; } diff --git a/modules/matrix/sliding-sync.nix b/modules/matrix/sliding-sync.nix new file mode 100644 index 0000000..9ab2cba --- /dev/null +++ b/modules/matrix/sliding-sync.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.jalr.matrix; +in +lib.mkIf cfg.enable { + services.matrix-sliding-sync = { + enable = true; + settings = { + SYNCV3_SERVER = "https://${cfg.fqdn}"; + SYNCV3_BINDADDR = "127.0.0.1:${toString cfg.sliding-sync.port}"; + }; + environmentFile = cfg.sliding-sync.secretFile; + }; + services.nginx.virtualHosts."${cfg.fqdn}".locations."/_matrix/client/unstable/org.matrix.msc3575/sync" = { + proxyPass = "http://127.0.0.1:${toString cfg.sliding-sync.port}"; + }; +} From d870abcd3fe763b1de86f895840c3e86fce6db29 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 11 Sep 2024 18:23:21 +0200 Subject: [PATCH 240/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/04a1cda0c1725094a4db703cccbb956b7558f5a6' (2024-09-07) → 'github:nixos/nixos-hardware/166dee4f88a7e3ba1b7a243edb1aca822f00680e' (2024-09-09) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/6f6c45b5134a8ee2e465164811e451dcb5ad86e3' (2024-09-03) → 'github:nixos/nixpkgs/44a71ff39c182edaf25a7ace5c9454e7cba2c658' (2024-09-10) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/193565cfe3ff415029ee805fbcbe1c2b2e1a01e3' (2024-09-07) → 'github:NixOS/nixpkgs/ee9a6df34035b1d24a2171869de9912904b65e03' (2024-09-11) • Updated input 'nur': 'github:nix-community/NUR/c92b904814d4a89d323c90e249c84ef6629ffade' (2024-09-07) → 'github:nix-community/NUR/458b5f46020cce18c46452b8ec16721c57142936' (2024-09-11) • Updated input 'sops-nix': 'github:Mic92/sops-nix/d9d781523a1463965cd1e1333a306e70d9feff07' (2024-09-05) → 'github:Mic92/sops-nix/cede1a08039178ac12957733e97ab1006c6b6892' (2024-09-09) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/556533a23879fc7e5f98dd2e0b31a6911a213171' (2024-07-21) → 'github:NixOS/nixpkgs/dc454045f5b5d814e5862a6d057e7bb5c29edc05' (2024-09-08) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index d7bdd94..e819fdf 100644 --- a/flake.lock +++ b/flake.lock @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1725716377, - "narHash": "sha256-7NzW9O/cAw7iWzRfh7Oo/SuSudL4a1YTKS6yoh3tMck=", + "lastModified": 1725885300, + "narHash": "sha256-5RLEnou1/GJQl+Wd+Bxaj7QY7FFQ9wjnFq1VNEaxTmc=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "04a1cda0c1725094a4db703cccbb956b7558f5a6", + "rev": "166dee4f88a7e3ba1b7a243edb1aca822f00680e", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1725407940, - "narHash": "sha256-tiN5Rlg/jiY0tyky+soJZoRzLKbPyIdlQ77xVgREDNM=", + "lastModified": 1725930920, + "narHash": "sha256-RVhD9hnlTT2nJzPHlAqrWqCkA7T6CYrP41IoVRkciZM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3", + "rev": "44a71ff39c182edaf25a7ace5c9454e7cba2c658", "type": "github" }, "original": { @@ -378,11 +378,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1721524707, - "narHash": "sha256-5NctRsoE54N86nWd0psae70YSLfrOek3Kv1e8KoXe/0=", + "lastModified": 1725762081, + "narHash": "sha256-vNv+aJUW5/YurRy1ocfvs4q/48yVESwlC/yHzjkZSP8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "556533a23879fc7e5f98dd2e0b31a6911a213171", + "rev": "dc454045f5b5d814e5862a6d057e7bb5c29edc05", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1725749909, - "narHash": "sha256-z6tE76iVykVY8tGoNZnvm0q50VjxDPhn6YQNPFH1K2c=", + "lastModified": 1726071450, + "narHash": "sha256-iKjWcP3Y+W4AX2UmumaChive9Dc0WAvMwY1SXLv7wO8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "193565cfe3ff415029ee805fbcbe1c2b2e1a01e3", + "rev": "ee9a6df34035b1d24a2171869de9912904b65e03", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1725741028, - "narHash": "sha256-/CornZK9spEoVBOXdR/Rf36Hm5WqyIM9u+JXU1ffMEs=", + "lastModified": 1726069811, + "narHash": "sha256-CATlLfKFs6vA7SSG+uaiT/rSGBwWMCI5S5kdUvQK9qE=", "owner": "nix-community", "repo": "NUR", - "rev": "c92b904814d4a89d323c90e249c84ef6629ffade", + "rev": "458b5f46020cce18c46452b8ec16721c57142936", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1725540166, - "narHash": "sha256-htc9rsTMSAY5ek+DB3tpntdD/es0eam2hJgO92bWSys=", + "lastModified": 1725922448, + "narHash": "sha256-ruvh8tlEflRPifs5tlpa0gkttzq4UtgXkJQS7FusgFE=", "owner": "Mic92", "repo": "sops-nix", - "rev": "d9d781523a1463965cd1e1333a306e70d9feff07", + "rev": "cede1a08039178ac12957733e97ab1006c6b6892", "type": "github" }, "original": { From 32c28d8577dd99cf22775ce1ad57c9bf846e36ac Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 11 Sep 2024 22:40:02 +0200 Subject: [PATCH 241/562] Enable Signal --- hosts/iron/services/matrix.nix | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/hosts/iron/services/matrix.nix b/hosts/iron/services/matrix.nix index 115277f..79a184d 100644 --- a/hosts/iron/services/matrix.nix +++ b/hosts/iron/services/matrix.nix @@ -2,6 +2,8 @@ args@{ config, pkgs, custom-utils, ... }: let ports = import ../ports.nix args; + signalPhoneNumber = "+4915566437153"; + signalUser = "jalr"; in { sops.secrets = { @@ -38,7 +40,7 @@ in }; }; mautrix-signal = { - enable = false; + enable = true; port = ports.mautrix-signal.tcp; settings.bridge = { permissions = { @@ -50,4 +52,27 @@ in }; }; }; + + systemd.services.signal-cli-receive = { + description = "Run signal-cli to receive messages"; + serviceConfig = { + Type = "oneshot"; + User = signalUser; + CapabilityBoundingSet = null; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; + RestrictNamespaces = true; + SystemCallFilter = "@system-service"; + }; + script = "${pkgs.signal-cli}/bin/signal-cli -u ${signalPhoneNumber} receive"; + }; + systemd.timers.signal-cli-receive = { + description = "Run signal-cli to receive messages"; + after = [ "network.target" ]; + wantedBy = [ "timers.target" ]; + timerConfig = { + Persistent = true; + OnCalendar = "*-*-* *:00:00"; + Unit = config.systemd.services.signal-cli-receive.name; + }; + }; } From 9e95b2595a021c3e2ad53d9afc23580c487c2ded Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 11 Sep 2024 22:40:53 +0200 Subject: [PATCH 242/562] Add libvirt --- hosts/iron/configuration.nix | 17 ++++++++++++++--- hosts/iron/services/dnsmasq.nix | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index 5963afe..d2a78b8 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -77,12 +77,20 @@ with lib; { externalInterface = interfaces.wan; internalInterfaces = [ interfaces.lan + "virbr0" ]; }; - firewall.extraForwardRules = '' - tcp flags syn tcp option maxseg size set rt mtu - ''; + firewall = { + allowedTCPPorts = [ 5201 ]; + extraForwardRules = '' + tcp flags syn tcp option maxseg size set rt mtu + ''; + interfaces.virbr0 = { + allowedTCPPorts = [ 53 ]; + allowedUDPPorts = [ 53 67 ]; + }; + }; }; services.radvd = { @@ -225,5 +233,8 @@ with lib; { memoryPercent = 60; priority = 1; }; + + + jalr.libvirt.enable = true; }; } diff --git a/hosts/iron/services/dnsmasq.nix b/hosts/iron/services/dnsmasq.nix index 15d6710..b277cf4 100644 --- a/hosts/iron/services/dnsmasq.nix +++ b/hosts/iron/services/dnsmasq.nix @@ -8,6 +8,7 @@ in services.dnsmasq = { enable = true; settings = { + bind-interfaces = true; listen-address = [ "192.168.42.1" "10.20.0.1" From 476c0990444efa54182b03212474f7d75375f5c9 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 11 Sep 2024 22:42:07 +0200 Subject: [PATCH 243/562] Remove nano --- modules/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/default.nix b/modules/default.nix index bd73bc6..ae19e75 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -67,6 +67,8 @@ ]; }; + programs.nano.enable = false; + security.acme = { acceptTerms = true; defaults = { From 6b8a8c73c5bcccd08722804eb1bb338a2d46b3c1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 17 Sep 2024 13:48:22 +0200 Subject: [PATCH 244/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/e55f9a8678adc02024a4877c2a403e3f6daf24fe' (2024-09-03) → 'github:nix-community/disko/22ee467a54a3ab7fa9d637ccad5330c6c087e9dc' (2024-09-16) • Updated input 'flake-utils': 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11) → 'github:numtide/flake-utils/c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a' (2024-09-17) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/166dee4f88a7e3ba1b7a243edb1aca822f00680e' (2024-09-09) → 'github:nixos/nixos-hardware/dc8b0296f68f72f3fe77469c549a6f098555c2e9' (2024-09-16) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/44a71ff39c182edaf25a7ace5c9454e7cba2c658' (2024-09-10) → 'github:nixos/nixpkgs/8f7492cce28977fbf8bd12c72af08b1f6c7c3e49' (2024-09-14) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/ee9a6df34035b1d24a2171869de9912904b65e03' (2024-09-11) → 'github:NixOS/nixpkgs/06e78ca76feaa97082b905d330265d495eefc9f7' (2024-09-17) • Updated input 'nur': 'github:nix-community/NUR/458b5f46020cce18c46452b8ec16721c57142936' (2024-09-11) → 'github:nix-community/NUR/48b58426a0fb447bad367813e742247dc860bed6' (2024-09-17) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/a313fd7169ae43ecd1a2ea2f1e4899fe3edba4d2' (2024-09-05) → 'github:nix-community/poetry2nix/a0cbe913ce184bef7cd739f75ba5d123e1f41ef2' (2024-09-15) • Updated input 'sops-nix': 'github:Mic92/sops-nix/cede1a08039178ac12957733e97ab1006c6b6892' (2024-09-09) → 'github:Mic92/sops-nix/e2d404a7ea599a013189aa42947f66cede0645c8' (2024-09-16) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index e819fdf..83e4427 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1725377834, - "narHash": "sha256-tqoAO8oT6zEUDXte98cvA1saU9+1dLJQe3pMKLXv8ps=", + "lastModified": 1726524467, + "narHash": "sha256-xkPPPvfHhHK7BNX5ZrQ9N6AIEixCmFzRZHduDf0zv30=", "owner": "nix-community", "repo": "disko", - "rev": "e55f9a8678adc02024a4877c2a403e3f6daf24fe", + "rev": "22ee467a54a3ab7fa9d637ccad5330c6c087e9dc", "type": "github" }, "original": { @@ -99,11 +99,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1725885300, - "narHash": "sha256-5RLEnou1/GJQl+Wd+Bxaj7QY7FFQ9wjnFq1VNEaxTmc=", + "lastModified": 1726489388, + "narHash": "sha256-JBHtN+n1HzKawpnOQAz6jdgvrtYV9c/kyzgoIdguQGo=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "166dee4f88a7e3ba1b7a243edb1aca822f00680e", + "rev": "dc8b0296f68f72f3fe77469c549a6f098555c2e9", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1725930920, - "narHash": "sha256-RVhD9hnlTT2nJzPHlAqrWqCkA7T6CYrP41IoVRkciZM=", + "lastModified": 1726320982, + "narHash": "sha256-RuVXUwcYwaUeks6h3OLrEmg14z9aFXdWppTWPMTwdQw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "44a71ff39c182edaf25a7ace5c9454e7cba2c658", + "rev": "8f7492cce28977fbf8bd12c72af08b1f6c7c3e49", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1726071450, - "narHash": "sha256-iKjWcP3Y+W4AX2UmumaChive9Dc0WAvMwY1SXLv7wO8=", + "lastModified": 1726573629, + "narHash": "sha256-O4fWqykLSQrGcNmx7HCElAmrYC6riGbhdCzk1dmj4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ee9a6df34035b1d24a2171869de9912904b65e03", + "rev": "06e78ca76feaa97082b905d330265d495eefc9f7", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1726069811, - "narHash": "sha256-CATlLfKFs6vA7SSG+uaiT/rSGBwWMCI5S5kdUvQK9qE=", + "lastModified": 1726569072, + "narHash": "sha256-x33fIaVSJGc/kLiXh+a8x97GrMN1DtnRd8Ar50sDaNs=", "owner": "nix-community", "repo": "NUR", - "rev": "458b5f46020cce18c46452b8ec16721c57142936", + "rev": "48b58426a0fb447bad367813e742247dc860bed6", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1725532428, - "narHash": "sha256-dCfawQDwpukcwQw++Cn/3LIh/RZMmH+k3fm91Oc5Pf0=", + "lastModified": 1726394406, + "narHash": "sha256-RUzT5OUT+sCNl/fA4u6u/SPc1Bye7MU96Vtu6jksfxs=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "a313fd7169ae43ecd1a2ea2f1e4899fe3edba4d2", + "rev": "a0cbe913ce184bef7cd739f75ba5d123e1f41ef2", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1725922448, - "narHash": "sha256-ruvh8tlEflRPifs5tlpa0gkttzq4UtgXkJQS7FusgFE=", + "lastModified": 1726524647, + "narHash": "sha256-qis6BtOOBBEAfUl7FMHqqTwRLB61OL5OFzIsOmRz2J4=", "owner": "Mic92", "repo": "sops-nix", - "rev": "cede1a08039178ac12957733e97ab1006c6b6892", + "rev": "e2d404a7ea599a013189aa42947f66cede0645c8", "type": "github" }, "original": { From 13b86afac1ff740e1c007bffd8850c6435b58f3f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 17 Sep 2024 14:35:31 +0200 Subject: [PATCH 245/562] Use implicit TLS port for SMTP client connection --- hosts/iron/ports.nix | 2 +- hosts/weinturm-pretix-prod/ports.nix | 2 +- modules/mailserver/postfix.nix | 4 ++-- users/jalr/default.nix | 12 ++++++------ 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 0a751fc..b5d9466 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -14,7 +14,7 @@ custom-utils.validatePortAttrset { nginx-http.tcp = 80; nginx-https.tcp = 443; postfix-relay.tcp = 25; - postfix-submission.tcp = [ 465 587 ]; + postfix-submission.tcp = [ 465 ]; qbittorrent-torrent.tcp = 59832; qbittorrent-webui.tcp = 8099; radicale.tcp = 5232; diff --git a/hosts/weinturm-pretix-prod/ports.nix b/hosts/weinturm-pretix-prod/ports.nix index 9c3e0e7..5de5641 100644 --- a/hosts/weinturm-pretix-prod/ports.nix +++ b/hosts/weinturm-pretix-prod/ports.nix @@ -4,5 +4,5 @@ custom-utils.validatePortAttrset { nginx-http.tcp = 80; nginx-https.tcp = 443; ports.postfix-relay.tcp = 25; - ports.postfix-submission.tcp = [ 465 587 ]; + ports.postfix-submission.tcp = [ 465 ]; } diff --git a/modules/mailserver/postfix.nix b/modules/mailserver/postfix.nix index e09a48a..62b7eaa 100644 --- a/modules/mailserver/postfix.nix +++ b/modules/mailserver/postfix.nix @@ -41,7 +41,7 @@ lib.mkIf cfg.enable { relayPort = cfg.relayPort; - enableSubmission = true; # plain/STARTTLS (latter is forced in submissionOptions) + enableSubmission = false; # plain/STARTTLS (latter is forced in submissionOptions) enableSubmissions = true; # submission with implicit TLS (TCP/465) hostname = cfg.fqdn; @@ -147,7 +147,7 @@ lib.mkIf cfg.enable { networking.firewall.allowedTCPPorts = [ 25 # SMTP - 587 # SMTP submission + 465 # SMTPS (implicit TLS) ]; systemd.services.postfix = { diff --git a/users/jalr/default.nix b/users/jalr/default.nix index 175fdf0..9d83727 100644 --- a/users/jalr/default.nix +++ b/users/jalr/default.nix @@ -81,10 +81,10 @@ in }; smtp = { host = "hha.jalr.de"; - port = 587; + port = 465; tls = { enable = true; - useStartTls = true; + useStartTls = false; }; }; thunderbird = { @@ -106,10 +106,10 @@ in }; smtp = { host = "mail.agenturserver.de"; - port = 587; + port = 465; tls = { enable = true; - useStartTls = true; + useStartTls = false; }; }; thunderbird = { @@ -156,10 +156,10 @@ in }; smtp = { host = "hha.jalr.de"; - port = 587; + port = 465; tls = { enable = true; - useStartTls = true; + useStartTls = false; }; }; thunderbird = { From 2ba33e485169a7fab15ad4ddf28485484819ae9d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 17 Sep 2024 13:46:44 +0200 Subject: [PATCH 246/562] Add forgejo --- hosts/iron/secrets/mail-users.nix | Bin 1342 -> 1524 bytes hosts/magnesium/ports.nix | 3 +- hosts/magnesium/secrets.yaml | 7 +-- hosts/magnesium/services/default.nix | 1 + hosts/magnesium/services/forgejo.nix | 68 +++++++++++++++++++++++++++ 5 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 hosts/magnesium/services/forgejo.nix diff --git a/hosts/iron/secrets/mail-users.nix b/hosts/iron/secrets/mail-users.nix index 4caac0272ba9b7f6a486d618340f3c1cbb23dc09..0046b885874d45c973507b8b794424d0d4864c26 100644 GIT binary patch literal 1524 zcmZQ@_Y83kiVO&05aO?RHS60mha(MQ3{4+T=?i|@zlCi^Pg7RM2ib)dlm6&S?Anst zC%e+CtYMOOcG-i#gwIX2{J%8lCH3b3_zG?*)zrLy#`|)S(kF&FX__-Vwo;quD z`h?BvV}I^De(6S0$?jU|oi}Ej_Sw6sZ3TzfMW;EpDy&%@kIw2c`_9&N=61Pk#60K8 z-}&roN~)KZ^vz6m?J|)sa(|a`HRaNbf3MtF>yAI@o)`Q7;`b!8f6ZrumHZY=_h>O{(Olw-N7jfZ2%7IU_ z+ONB8te7ja<71wPt&Y5=ab28YuQ;*ex;4!o7<%u!80-?Z|^r<^|tEBr1|}=FwRt8| zelj~^n4=^*L#lsdW$4FDJuiFxV$Hp{tXI4lrZ2ON{+~`c{n6xtlCRg#Wi3ZS55>D_ z{NB|$F);OOSct^xzcp!>KF|DDo}Xa(A+6eXg(>~pNk&ET2!KD7}izh1a)-6s9(c-x0Of$dHqSIee8wA$o=l3`_P1z_qe{;3WJK>!M)9;9D$XuT% zb@i|E)(6WRr53#Mcp}e~y^(KO&NkKP2*wW|@$g|JeRM{>qPA+E0I7(bjH0S)ZAEJ!`?1l#~nEXP4dPx!uwI(nUi(v?cGu^u=#t z7nfa#LB92Xc_oJci(f*r~ z){|x`X!1T^+jT+d`>gy@`!h>zEUy0(Teg zteOA4=E2rAb{`La++I6{d0wYTish+WFGG?#H*j12{#J0{x17}b{YyFCv{O3+Unrl34NA5 zm!2(Xlufnt(4H`9ev;JGn`}4bB272NO`C8pwzYhwoUU@qqQwiy}j<>krkHnY?d;Nulsx$DKV#yc1qJ))vL_ zXeP~Eb>(dgyWeN;TWYop!9J&}Tt02tm&+8zV?HCpV53<2n^O1n2LpEm%=(*_a4(r* z<;Rn4DtexctEZ){y7o$Hw)D=KYxfoX-E4BEyzlDmFX2sxxI{$j9B!S|Bz z%87Nodrv-_X5;=&XO{fc%o@Iig}Xvuu$S0wc6MX_BzC-oyC-M=?xPZ|J0unc3L0Ms zEc`lS*RusVYGoa*!YBI{?D(>I_n!j64Lr%~!m_xg&fV(46g*EmL#M>W;M^peOZPra zi=N4GEx5QmMeNtymG_0s#Ts-@v9t?CyjWl7onUNyu<*Fe?Hx~zg-sUgmzUgs?cQ{8 zuW8~f<^wCT<##`K{!17}=FR7@E~BC(FSzYZ@Zqqxrm^ySg5FJ;CB?3AWTt0!_};Jg>$5*kX>wO_ zH0ZtRulC;h&Gxw;Pp4fDy}xUg-oB%PEi4^wAGfI6OKjt3*lNtf{Qk5Ruj)Fz)R4o? zQtnl*shrc4Iody12`%P1G{>yGI`R7f1J%qNsRJhZFIH8utZJFYH*41$CYvHXK8-yt zt+(fW`?t;3W24^X0yo2}7mTI{Mjp195HRa)!Oz7%Dt#}`l=!H**<+7$*0Vi}0%xpe zpY_tocII7=<860N%)G8XEyyit@$_upIt`^G8F`8q1&BagXL-C$JdO8uDa2M7{Y_$CbNFBX0lUXJ-#_dOd;9t9<}2+B1XF9|m(yB3gXPHl;5Bx^Dk7)U8T<+qHw3+pEoRl7 z@XPhe{q7mbNfwX)epupA+xfe>z~$S#_j(KN&S;S9Z@SG|$P?YhU4F#!6(7&53vH8^ zq?sw++`TaC826r+U$U0Xk+YV|S$cHyGM8`eN!3eSohk*=&eX76m*U$lB={nEvCWa< zecky?;xCj^t}R)_ep!-jChL4_+q_Mu>n6Ko7#!4oq}aVBb-iz{u<>*;nO`ev`}VyH Q?w;cG^UtJ+(uJ}103 Date: Tue, 17 Sep 2024 21:47:25 +0200 Subject: [PATCH 247/562] Add ntp service --- hosts/aluminium/services/default.nix | 1 + hosts/aluminium/services/dnsmasq.nix | 3 +++ hosts/aluminium/services/ntp.nix | 13 +++++++++++++ 3 files changed, 17 insertions(+) create mode 100644 hosts/aluminium/services/ntp.nix diff --git a/hosts/aluminium/services/default.nix b/hosts/aluminium/services/default.nix index 7ce0f6e..8639a37 100644 --- a/hosts/aluminium/services/default.nix +++ b/hosts/aluminium/services/default.nix @@ -7,6 +7,7 @@ ./esphome ./home-assistant.nix ./nginx.nix + ./ntp.nix ./unifi-controller.nix ]; } diff --git a/hosts/aluminium/services/dnsmasq.nix b/hosts/aluminium/services/dnsmasq.nix index 6363be1..ff4549a 100644 --- a/hosts/aluminium/services/dnsmasq.nix +++ b/hosts/aluminium/services/dnsmasq.nix @@ -39,6 +39,9 @@ in "2001:470:20::2" # ordns.he.net "74.82.42.42" # ordns.he.net ]; + dhcp-option = [ + "option:ntp-server,192.168.0.1" + ]; }; }; diff --git a/hosts/aluminium/services/ntp.nix b/hosts/aluminium/services/ntp.nix new file mode 100644 index 0000000..aed11f4 --- /dev/null +++ b/hosts/aluminium/services/ntp.nix @@ -0,0 +1,13 @@ +{ lib, pkgs, ... }: +{ + services.chrony = { + enable = true; + extraConfig = '' + allow 192.168.0.0/24 + allow 192.168.10.0/24 + leapsectz right/UTC + ''; + }; + networking.firewall.interfaces.lechner.allowedUDPPorts = [ 123 ]; + networking.firewall.interfaces.heizung.allowedUDPPorts = [ 123 ]; +} From 240d8dbc4cd6b7ff93bac49b567716d85f9f43e5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 17 Sep 2024 23:32:59 +0200 Subject: [PATCH 248/562] Allow unifi inform port on lan interface --- hosts/aluminium/ports.nix | 3 ++- hosts/aluminium/services/unifi-controller.nix | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/hosts/aluminium/ports.nix b/hosts/aluminium/ports.nix index f1d126f..34bfdaf 100644 --- a/hosts/aluminium/ports.nix +++ b/hosts/aluminium/ports.nix @@ -9,5 +9,6 @@ custom-utils.validatePortAttrset { home-assistant.tcp = 8123; nginx-http.tcp = 80; nginx-https.tcp = 443; - unifi.tcp = 8443; + unifi-inform.tcp = 8080; + unifi-ui.tcp = 8443; } diff --git a/hosts/aluminium/services/unifi-controller.nix b/hosts/aluminium/services/unifi-controller.nix index a97eda8..16489c6 100644 --- a/hosts/aluminium/services/unifi-controller.nix +++ b/hosts/aluminium/services/unifi-controller.nix @@ -9,6 +9,7 @@ in unifiPackage = pkgs.unifi8; }; networking.firewall.interfaces.lechner.allowedTCPPorts = [ - ports.unifi.tcp + ports.unifi-inform.tcp + ports.unifi-ui.tcp ]; } From f6e3fd2b98ced525974bd252575a4efeea9e9693 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 18 Sep 2024 15:42:37 +0200 Subject: [PATCH 249/562] Set max seg size for interface ppp0 --- hosts/aluminium/configuration.nix | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/hosts/aluminium/configuration.nix b/hosts/aluminium/configuration.nix index 7e843b6..cdd652a 100644 --- a/hosts/aluminium/configuration.nix +++ b/hosts/aluminium/configuration.nix @@ -74,9 +74,6 @@ "voice" ]; }; - firewall.extraForwardRules = '' - tcp flags syn tcp option maxseg size set rt mtu - ''; firewall.extraInputRules = '' iifname "voice" udp dport 5059 accept ip saddr 217.10.68.150 udp dport 5060 accept @@ -119,6 +116,16 @@ }; }; + networking.nftables.tables.pppoe = { + family = "ip"; + content = '' + chain clamp { + type filter hook forward priority mangle; + oifname "ppp0" tcp flags syn tcp option maxseg size set rt mtu comment "clamp MSS to Path MTU" + } + ''; + }; + zramSwap = { enable = true; algorithm = "zstd"; From 188de9cf193edfe1577583f37a5f55e9031fa2b2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 18 Sep 2024 15:43:18 +0200 Subject: [PATCH 250/562] Allow sip port from voice network --- hosts/aluminium/services/asterisk/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hosts/aluminium/services/asterisk/default.nix b/hosts/aluminium/services/asterisk/default.nix index ccc0e79..c6d8cd7 100644 --- a/hosts/aluminium/services/asterisk/default.nix +++ b/hosts/aluminium/services/asterisk/default.nix @@ -188,6 +188,10 @@ in to = rtp.end; } ]; + interfaces.voice = { + allowedTCPPorts = [ 5060 ]; + allowedUDPPorts = [ 5060 ]; + }; }; systemd.services."asterisk-reload-endpoint@" = { From ad462bc9ebb6292f2d96451e1e7007e0661db06b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 19 Sep 2024 00:02:38 +0200 Subject: [PATCH 251/562] Add detergent dosing to washing machine --- .../esphome/devices/waschmaschine.yaml | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/hosts/iron/services/esphome/devices/waschmaschine.yaml b/hosts/iron/services/esphome/devices/waschmaschine.yaml index 8e4f376..0e5d854 100644 --- a/hosts/iron/services/esphome/devices/waschmaschine.yaml +++ b/hosts/iron/services/esphome/devices/waschmaschine.yaml @@ -38,4 +38,82 @@ sensor: name: "in Betrieb" current_operation: name: "aktueller Vorgang" + id: current_operation +number: + - platform: template + name: "Waschmittelmenge" + id: detergent_dosing + min_value: 25.0 + max_value: 150.0 + step: 1 + unit_of_measurement: "ml" + icon: 'mdi:cup-water' + restore_value: true + initial_value: 75.0 + optimistic: true + - platform: template + name: "Waschmittelvorrat" + id: detergent_supply + min_value: 0.0 + max_value: 5000 + step: 1.0 + unit_of_measurement: "ml" + icon: 'mdi:cup-water' + restore_value: true + initial_value: 0 + optimistic: true + +stepper: + - platform: a4988 + id: detergent_stepper + step_pin: GPIO32 + sleep_pin: GPIO33 + dir_pin: GPIO25 # not used + max_speed: 600 steps/s + acceleration: 125 steps/s^2 + deceleration: 125 steps/s^2 + +globals: + - id: dosing_enabled + type: bool + restore_value: false + initial_value: 'true' + +interval: + - interval: 1s + then: + if: + condition: + and: + - lambda: return id(current_operation).state == "Einw/Vorwäsche"; + - lambda: return id(dosing_enabled); + then: + - lambda: &dosing |- + float dose = id(detergent_dosing).state; + float current_supply = id(detergent_supply).state; + if (current_supply >= dose) { + id(detergent_stepper).set_target(dose * 125); + id(detergent_stepper).report_position(0); + id(detergent_supply).publish_state(current_supply - dose); + ESP_LOGD("custom", "Waschmitteldosierung durchgeführt: %.2f ml, verbleibender Vorrat: %.2f ml", dose, current_supply - dose); + } else { + ESP_LOGW("custom", "Nicht genug Waschmittelvorrat! Aktueller Vorrat: %.2f ml, gewünschte Dosierung: %.2f ml", current_supply, dose); + } + - lambda: |- + id(dosing_enabled) = false; + - interval: 1s + then: + if: + condition: + lambda: return id(current_operation).state == "Knitterschutz/Ende"; + then: + - lambda: |- + id(dosing_enabled) = true; + +button: + - platform: template + name: "Waschmitteldosierung auslösen" + icon: "mdi:cup-water" + on_press: + - lambda: *dosing From e3cf0168498c5d3fa197366b405647e3a48de084 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 21 Sep 2024 00:16:17 +0200 Subject: [PATCH 252/562] Fix firmware embedding into VESC tool --- pkgs/vesc-tool/tool.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/vesc-tool/tool.nix b/pkgs/vesc-tool/tool.nix index 3cb591d..7b70eca 100644 --- a/pkgs/vesc-tool/tool.nix +++ b/pkgs/vesc-tool/tool.nix @@ -34,9 +34,7 @@ stdenv.mkDerivation { dontConfigure = true; buildPhase = '' - for f in ${vesc-firmware}/*; do - ln -s "$f" res/firmwares/ - done + cp -r ${vesc-firmware}/* res/firmwares/ qmake -config release "CONFIG += release_lin build_platinum" make clean make -j $NIX_BUILD_CORES From 8a39f779ef6993d7ac94841153e15479077b2bc0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 21 Sep 2024 00:17:15 +0200 Subject: [PATCH 253/562] Build vesc6 mk3 firmware This is the appropriate firmware for my VESC6 MKIII --- pkgs/vesc-tool/firmware.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/vesc-tool/firmware.nix b/pkgs/vesc-tool/firmware.nix index 9db0fdc..d79819f 100644 --- a/pkgs/vesc-tool/firmware.nix +++ b/pkgs/vesc-tool/firmware.nix @@ -33,7 +33,9 @@ stdenv.mkDerivation rec { ( cd bldc chmod +w . - make -j $NIX_BUILD_CORES fw_410 fw_60 + # print targets: + # make; false + make -j $NIX_BUILD_CORES fw_410 fw_60_mk3 python package_firmware.py ) mkdir -p $out From 937af5ea230a19ed4999cf9c3a9b0ec1371e9abf Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 21 Sep 2024 00:18:22 +0200 Subject: [PATCH 254/562] Update VESC tool and firmware --- pkgs/vesc-tool/firmware.nix | 4 ++-- pkgs/vesc-tool/tool.nix | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pkgs/vesc-tool/firmware.nix b/pkgs/vesc-tool/firmware.nix index d79819f..dba61cf 100644 --- a/pkgs/vesc-tool/firmware.nix +++ b/pkgs/vesc-tool/firmware.nix @@ -12,8 +12,8 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "vedderb"; repo = "bldc"; - rev = "dd3b97b041c325acfb95ac1adb550d28390ea253"; - sha256 = "2Zex2FNkedO4wjG05CQIyVFU0i0/+O9V3LzsxHZOnvg="; + rev = "b6e53d3f28e9fd7a54b266c149abbf8a1c23f80a"; + sha256 = "4Q0sAEglXONL6InlVfwVKtQ2ZXKGhfrVLBevnWyjXZ0="; fetchSubmodules = true; }; diff --git a/pkgs/vesc-tool/tool.nix b/pkgs/vesc-tool/tool.nix index 7b70eca..b20d1b2 100644 --- a/pkgs/vesc-tool/tool.nix +++ b/pkgs/vesc-tool/tool.nix @@ -12,9 +12,8 @@ stdenv.mkDerivation { src = fetchFromGitHub { owner = "vedderb"; repo = "vesc_tool"; - rev = "211f5d317542a3674df638405485a143a23f67ce"; - sha256 = "liF2JbcrRtVPSySJhY7CHRghsBV3gKRGD40pKVD19wE="; - + rev = "033c95697ec970413ff5c1dbb1988758563d630b"; + sha256 = "LIIE3Z5eoU6mUXmudbRr1iLA3l7338/CsSK8W/iwgf0="; fetchSubmodules = true; }; From d2b062e644e40597b5a732fc57b70d9283dcadb2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 23 Sep 2024 09:57:22 +0200 Subject: [PATCH 255/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/22ee467a54a3ab7fa9d637ccad5330c6c087e9dc' (2024-09-16) → 'github:nix-community/disko/51994df8ba24d5db5459ccf17b6494643301ad28' (2024-09-20) • Updated input 'home-manager': 'github:nix-community/home-manager/208df2e558b73b6a1f0faec98493cb59a25f62ba' (2024-09-07) → 'github:nix-community/home-manager/2f23fa308a7c067e52dfcc30a0758f47043ec176' (2024-09-22) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/7570de7b9b504cfe92025dd1be797bf546f66528' (2024-09-05) → 'github:cachix/git-hooks.nix/4e743a6920eab45e8ba0fbe49dc459f1423a4b74' (2024-09-19) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/dc8b0296f68f72f3fe77469c549a6f098555c2e9' (2024-09-16) → 'github:nixos/nixos-hardware/d0cb432a9d28218df11cbd77d984a2a46caeb5ac' (2024-09-22) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/8f7492cce28977fbf8bd12c72af08b1f6c7c3e49' (2024-09-14) → 'github:nixos/nixpkgs/944b2aea7f0a2d7c79f72468106bc5510cbf5101' (2024-09-20) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/06e78ca76feaa97082b905d330265d495eefc9f7' (2024-09-17) → 'github:NixOS/nixpkgs/eae2c94383bcc2e611a77eb3af19d4a23d5ff452' (2024-09-23) • Updated input 'nur': 'github:nix-community/NUR/48b58426a0fb447bad367813e742247dc860bed6' (2024-09-17) → 'github:nix-community/NUR/bca3011ab052943280c53f2024abf9b993eafee2' (2024-09-23) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/a0cbe913ce184bef7cd739f75ba5d123e1f41ef2' (2024-09-15) → 'github:nix-community/poetry2nix/026858e4700f0e1cc5cf4d2b9a1ae11c41ab88be' (2024-09-23) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 83e4427..328fe52 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1726524467, - "narHash": "sha256-xkPPPvfHhHK7BNX5ZrQ9N6AIEixCmFzRZHduDf0zv30=", + "lastModified": 1726842196, + "narHash": "sha256-u9h03JQUuQJ607xmti9F9Eh6E96kKUAGP+aXWgwm70o=", "owner": "nix-community", "repo": "disko", - "rev": "22ee467a54a3ab7fa9d637ccad5330c6c087e9dc", + "rev": "51994df8ba24d5db5459ccf17b6494643301ad28", "type": "github" }, "original": { @@ -203,11 +203,11 @@ ] }, "locked": { - "lastModified": 1725703823, - "narHash": "sha256-tDgM4d8mLK0Hd6YMB2w1BqMto1XBXADOzPEaLl10VI4=", + "lastModified": 1726989464, + "narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=", "owner": "nix-community", "repo": "home-manager", - "rev": "208df2e558b73b6a1f0faec98493cb59a25f62ba", + "rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1725513492, - "narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", + "lastModified": 1726745158, + "narHash": "sha256-D5AegvGoEjt4rkKedmxlSEmC+nNLMBPWFxvmYnVLhjk=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "7570de7b9b504cfe92025dd1be797bf546f66528", + "rev": "4e743a6920eab45e8ba0fbe49dc459f1423a4b74", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1726489388, - "narHash": "sha256-JBHtN+n1HzKawpnOQAz6jdgvrtYV9c/kyzgoIdguQGo=", + "lastModified": 1727040444, + "narHash": "sha256-19FNN5QT9Z11ZUMfftRplyNN+2PgcHKb3oq8KMW/hDA=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "dc8b0296f68f72f3fe77469c549a6f098555c2e9", + "rev": "d0cb432a9d28218df11cbd77d984a2a46caeb5ac", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1726320982, - "narHash": "sha256-RuVXUwcYwaUeks6h3OLrEmg14z9aFXdWppTWPMTwdQw=", + "lastModified": 1726838390, + "narHash": "sha256-NmcVhGElxDbmEWzgXsyAjlRhUus/nEqPC5So7BOJLUM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8f7492cce28977fbf8bd12c72af08b1f6c7c3e49", + "rev": "944b2aea7f0a2d7c79f72468106bc5510cbf5101", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1726573629, - "narHash": "sha256-O4fWqykLSQrGcNmx7HCElAmrYC6riGbhdCzk1dmj4qs=", + "lastModified": 1727078180, + "narHash": "sha256-g7h1GLV75RbADLo7ikSlJHVJvYDUNBnr9a2vCEFzvCo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "06e78ca76feaa97082b905d330265d495eefc9f7", + "rev": "eae2c94383bcc2e611a77eb3af19d4a23d5ff452", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1726569072, - "narHash": "sha256-x33fIaVSJGc/kLiXh+a8x97GrMN1DtnRd8Ar50sDaNs=", + "lastModified": 1727076083, + "narHash": "sha256-zxpNV5o7JY/2j1rKsG3VyCCkImJ//Q2T9pQITFqUMoc=", "owner": "nix-community", "repo": "NUR", - "rev": "48b58426a0fb447bad367813e742247dc860bed6", + "rev": "bca3011ab052943280c53f2024abf9b993eafee2", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1726394406, - "narHash": "sha256-RUzT5OUT+sCNl/fA4u6u/SPc1Bye7MU96Vtu6jksfxs=", + "lastModified": 1727073647, + "narHash": "sha256-/HGpq4yVSH7tHMBnTeCNUbfLuzYLLRRtvqNzDAP1d8k=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "a0cbe913ce184bef7cd739f75ba5d123e1f41ef2", + "rev": "026858e4700f0e1cc5cf4d2b9a1ae11c41ab88be", "type": "github" }, "original": { From 22a1f2807eddab3bc251c58199bb9d3a9663c88a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 24 Sep 2024 21:33:23 +0200 Subject: [PATCH 256/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/51994df8ba24d5db5459ccf17b6494643301ad28' (2024-09-20) → 'github:nix-community/disko/6d42596a35d34918a905e8539a44d3fc91f42b5b' (2024-09-24) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/944b2aea7f0a2d7c79f72468106bc5510cbf5101' (2024-09-20) → 'github:nixos/nixpkgs/23cbb250f3bf4f516a2d0bf03c51a30900848075' (2024-09-22) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/eae2c94383bcc2e611a77eb3af19d4a23d5ff452' (2024-09-23) → 'github:NixOS/nixpkgs/b7643ddc3b422f1d6e42c83a2d58ea5ce222048c' (2024-09-24) • Updated input 'nur': 'github:nix-community/NUR/bca3011ab052943280c53f2024abf9b993eafee2' (2024-09-23) → 'github:nix-community/NUR/c7225411f6e9087829c3a120e2698867d1b05319' (2024-09-24) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/026858e4700f0e1cc5cf4d2b9a1ae11c41ab88be' (2024-09-23) → 'github:nix-community/poetry2nix/7624b3e0275d9b52dbdda46ef7ffee66b36ff823' (2024-09-24) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 328fe52..6346249 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1726842196, - "narHash": "sha256-u9h03JQUuQJ607xmti9F9Eh6E96kKUAGP+aXWgwm70o=", + "lastModified": 1727196810, + "narHash": "sha256-xQzgXRlczZoFfrUdA4nD5qojCQVqpiIk82aYINQZd+U=", "owner": "nix-community", "repo": "disko", - "rev": "51994df8ba24d5db5459ccf17b6494643301ad28", + "rev": "6d42596a35d34918a905e8539a44d3fc91f42b5b", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1726838390, - "narHash": "sha256-NmcVhGElxDbmEWzgXsyAjlRhUus/nEqPC5So7BOJLUM=", + "lastModified": 1726969270, + "narHash": "sha256-8fnFlXBgM/uSvBlLWjZ0Z0sOdRBesyNdH0+esxqizGc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "944b2aea7f0a2d7c79f72468106bc5510cbf5101", + "rev": "23cbb250f3bf4f516a2d0bf03c51a30900848075", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1727078180, - "narHash": "sha256-g7h1GLV75RbADLo7ikSlJHVJvYDUNBnr9a2vCEFzvCo=", + "lastModified": 1727205223, + "narHash": "sha256-RHzehUZqXKM8W8tUywY58jASi+Z8LDvrssuJz4UnG1w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eae2c94383bcc2e611a77eb3af19d4a23d5ff452", + "rev": "b7643ddc3b422f1d6e42c83a2d58ea5ce222048c", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1727076083, - "narHash": "sha256-zxpNV5o7JY/2j1rKsG3VyCCkImJ//Q2T9pQITFqUMoc=", + "lastModified": 1727201865, + "narHash": "sha256-nqHWxGhUFS6xyiVminVIECdG0Gu5em7LPf1mb4+5PEw=", "owner": "nix-community", "repo": "NUR", - "rev": "bca3011ab052943280c53f2024abf9b993eafee2", + "rev": "c7225411f6e9087829c3a120e2698867d1b05319", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1727073647, - "narHash": "sha256-/HGpq4yVSH7tHMBnTeCNUbfLuzYLLRRtvqNzDAP1d8k=", + "lastModified": 1727169160, + "narHash": "sha256-m/3tT0Wvk2V4H15riZC/yT7i7t+8V58HTDpthKV5yhk=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "026858e4700f0e1cc5cf4d2b9a1ae11c41ab88be", + "rev": "7624b3e0275d9b52dbdda46ef7ffee66b36ff823", "type": "github" }, "original": { From 2afbd0e328d30a85885e5942dd69adab54c16105 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 25 Sep 2024 03:54:57 +0200 Subject: [PATCH 257/562] Change controller --- .../services/esphome/devices/badspiegel.yaml | 46 +++++++++++-------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/hosts/iron/services/esphome/devices/badspiegel.yaml b/hosts/iron/services/esphome/devices/badspiegel.yaml index 9f8989c..8041d2e 100644 --- a/hosts/iron/services/esphome/devices/badspiegel.yaml +++ b/hosts/iron/services/esphome/devices/badspiegel.yaml @@ -15,7 +15,7 @@ esphome: color_temperature: 2700 K esp32: - board: wemos_d1_uno32 + board: az-delivery-devkit-v4 framework: type: arduino version: recommended @@ -41,16 +41,16 @@ wifi: output: - platform: ledc - pin: GPIO17 + pin: GPIO33 id: output_background_warm - platform: ledc - pin: GPIO25 + pin: GPIO32 id: output_background_cold - platform: ledc - pin: GPIO16 + pin: GPIO25 id: output_front_warm - platform: ledc - pin: GPIO26 + pin: GPIO14 id: output_front_cold light: @@ -77,39 +77,47 @@ switch: - platform: gpio name: "Heating" id: heating - pin: GPIO2 + pin: GPIO26 icon: "mdi:thermometer" - platform: gpio name: "Soundsystem" id: soundsystem - pin: GPIO4 + pin: GPIO23 icon: "mdi:speaker" esp32_touch: # setup_mode: true + +sensor: + - platform: dht + pin: GPIO22 + temperature: + name: "Temperatur" + id: temperature + humidity: + name: "Feuchtigkeit" + id: humidity + accuracy_decimals: 1 + update_interval: 60s + binary_sensor: # ESP32 touch pins: 4, 13, 27, 32, 33 -# - platform: esp32_touch -# name: "touch pad GPIO13" -# pin: GPIO13 -# threshold: 1000 -# on_press: -# internal: true - platform: esp32_touch - name: "touch pad GPIO12" - pin: GPIO12 - threshold: 900 + name: "touch pad GPIO13" + pin: GPIO13 + threshold: 923 on_press: then: - light.toggle: id: front_light internal: true - platform: esp32_touch - name: "touch pad GPIO14" - pin: GPIO14 - threshold: 900 + name: "touch pad GPIO27" + pin: GPIO27 + threshold: 1125 on_press: then: - light.toggle: id: background_light + internal: true From 4eed03bc105f8e386981c2711a9970a31515e4e2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 25 Sep 2024 11:02:35 +0200 Subject: [PATCH 258/562] Set indentation settings for sshconfig --- users/jalr/modules/neovim.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index ee25579..ad9fe28 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -227,4 +227,7 @@ in setlocal spell setlocal colorcolumn=81 ''; + xdg.configFile."nvim/ftplugin/sshconfig.vim".text = '' + setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab + ''; } From fa8515dd38ad3c715583737bde27a6b96b02cc95 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 25 Sep 2024 16:17:00 +0200 Subject: [PATCH 259/562] Add custom icon for Digitaler Dienst Element --- .../modules/communication/element-desktop.nix | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/users/jalr/modules/communication/element-desktop.nix b/users/jalr/modules/communication/element-desktop.nix index c210a98..d634e21 100644 --- a/users/jalr/modules/communication/element-desktop.nix +++ b/users/jalr/modules/communication/element-desktop.nix @@ -4,6 +4,10 @@ let profiles = { "digitaler-dienst" = { description = "Digitaler Dienst"; + icon = pkgs.fetchurl { + url = "https://matrix.digitaler-dienst.gmbh/_matrix/media/v3/thumbnail/digitaler-dienst.gmbh/kfUmmNxpmbsLtdIRvZcxkWAh?width=256&height=256"; + sha256 = "uSxx9avx3I/rDzFnwgEZUwLVktsTeZiSWcDHjPzcUtw="; + }; }; "private" = { description = "private"; @@ -11,10 +15,6 @@ let }; in lib.mkIf nixosConfig.jalr.gui.enable { - home.packages = with pkgs; [ - element-desktop - ]; - # Create an empty directory in nix store # as we want to use Element only with `--profile-dir` xdg.configFile.Element = { @@ -22,21 +22,33 @@ lib.mkIf nixosConfig.jalr.gui.enable { target = "Element"; }; - xdg.desktopEntries = lib.attrsets.mapAttrs' - (name: value: lib.attrsets.nameValuePair "element-desktop-${name}" + (name: value: lib.attrsets.nameValuePair "element-desktop-${name}" ( + let + package = ( + if value ? icon then + pkgs.element-desktop.overrideAttrs + (oldAttrs: { + patchPhase = oldAttrs.patchPhase or "" + '' + rm build/icons/* res/img/* + cp ${value.icon} res/img/element.png + ''; + }) + else pkgs.element-desktop + ); + in { categories = [ "Network" "InstantMessaging" "Chat" ]; exec = toString (pkgs.writeShellScript "element-desktop-${name}" '' - exec element-desktop --profile-dir "$HOME/.config/element-profiles/${name}" + exec "${package}/bin/element-desktop" --profile-dir "$HOME/.config/element-profiles/${name}" ''); genericName = "Matrix Client"; - icon = "element"; + icon = "${package}/share/element/img/element.png"; mimeType = [ "x-scheme-handler/element" ]; name = "Element ${value.description}"; terminal = false; type = "Application"; } - ) + )) profiles; } From e23f0a276771ad06d3c6766d91c910a6d767b993 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 29 Sep 2024 10:26:21 +0200 Subject: [PATCH 260/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/67dc29be3036cc888f0b9d4f0a788ee0f6768700' (2024-09-26) → 'github:nix-community/disko/b709e1cc33fcde71c7db43850a55ebe6449d0959' (2024-09-28) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/1c6fd4e862bf2f249c9114ad625c64c6c29a8a08' (2024-09-05) → 'github:nix-community/gomod2nix/ba932692e249374e91bcbfe2e3a25ed3342a72eb' (2024-09-27) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/4e743a6920eab45e8ba0fbe49dc459f1423a4b74' (2024-09-19) → 'github:cachix/git-hooks.nix/85f7a7177c678de68224af3402ab8ee1bcee25c8' (2024-09-28) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/d0cb432a9d28218df11cbd77d984a2a46caeb5ac' (2024-09-22) → 'github:nixos/nixos-hardware/8e8c6cbad12ef805268b4e380a7298fbc275898d' (2024-09-29) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/759537f06e6999e141588ff1c9be7f3a5c060106' (2024-09-25) → 'github:nixos/nixpkgs/fbca5e745367ae7632731639de5c21f29c8744ed' (2024-09-28) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/e0f477a570df7375172a08ddb9199c90853c63f0' (2024-09-27) → 'github:NixOS/nixpkgs/a33c9035167809d873252ac9f9f05134a05e6e16' (2024-09-29) • Updated input 'nur': 'github:nix-community/NUR/a3494e9def7d07a1d97fb4acfa13bff7da65fd2e' (2024-09-27) → 'github:nix-community/NUR/6acf80f88c3f8fbf4f95f5df7a936a488a7bca12' (2024-09-29) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/d024cc089cfa3b7cff70a796f15ba148d14ce2ec' (2024-09-26) → 'github:nix-community/poetry2nix/d8928e5929c2344704264e8447452e0f73c72497' (2024-09-28) • Updated input 'poetry2nix/nix-github-actions': 'github:nix-community/nix-github-actions/5163432afc817cf8bd1f031418d1869e4c9d5547' (2023-12-29) → 'github:nix-community/nix-github-actions/622f829f5fe69310a866c8a6cd07e747c44ef820' (2024-07-04) • Updated input 'poetry2nix/treefmt-nix': 'github:numtide/treefmt-nix/8df5ff62195d4e67e2264df0b7f5e8c9995fd0bd' (2024-06-30) → 'github:numtide/treefmt-nix/879b29ae9a0378904fbbefe0dadaed43c8905754' (2024-09-27) --- flake.lock | 66 +++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/flake.lock b/flake.lock index 6346249..9ade965 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1727196810, - "narHash": "sha256-xQzgXRlczZoFfrUdA4nD5qojCQVqpiIk82aYINQZd+U=", + "lastModified": 1727531434, + "narHash": "sha256-b+GBgCWd2N6pkiTkRZaMFOPztPO4IVTaclYPrQl2uLk=", "owner": "nix-community", "repo": "disko", - "rev": "6d42596a35d34918a905e8539a44d3fc91f42b5b", + "rev": "b709e1cc33fcde71c7db43850a55ebe6449d0959", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1725515722, - "narHash": "sha256-+gljgHaflZhQXtr3WjJrGn8NXv7MruVPAORSufuCFnw=", + "lastModified": 1727478263, + "narHash": "sha256-6/c82/1/Y4JRPGuhNPvVZFQltR2eXaFi3av1SZQEQ10=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "1c6fd4e862bf2f249c9114ad625c64c6c29a8a08", + "rev": "ba932692e249374e91bcbfe2e3a25ed3342a72eb", "type": "github" }, "original": { @@ -275,11 +275,11 @@ ] }, "locked": { - "lastModified": 1703863825, - "narHash": "sha256-rXwqjtwiGKJheXB43ybM8NwWB8rO2dSRrEqes0S7F5Y=", + "lastModified": 1720066371, + "narHash": "sha256-uPlLYH2S0ACj0IcgaK9Lsf4spmJoGejR9DotXiXSBZQ=", "owner": "nix-community", "repo": "nix-github-actions", - "rev": "5163432afc817cf8bd1f031418d1869e4c9d5547", + "rev": "622f829f5fe69310a866c8a6cd07e747c44ef820", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1726745158, - "narHash": "sha256-D5AegvGoEjt4rkKedmxlSEmC+nNLMBPWFxvmYnVLhjk=", + "lastModified": 1727514110, + "narHash": "sha256-0YRcOxJG12VGDFH8iS8pJ0aYQQUAgo/r3ZAL+cSh9nk=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "4e743a6920eab45e8ba0fbe49dc459f1423a4b74", + "rev": "85f7a7177c678de68224af3402ab8ee1bcee25c8", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1727040444, - "narHash": "sha256-19FNN5QT9Z11ZUMfftRplyNN+2PgcHKb3oq8KMW/hDA=", + "lastModified": 1727595438, + "narHash": "sha256-bAvkJYuZKeDwW/J/Ga/axplEbYbQhq6jdQBVdGcpuO8=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "d0cb432a9d28218df11cbd77d984a2a46caeb5ac", + "rev": "8e8c6cbad12ef805268b4e380a7298fbc275898d", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1726969270, - "narHash": "sha256-8fnFlXBgM/uSvBlLWjZ0Z0sOdRBesyNdH0+esxqizGc=", + "lastModified": 1727540905, + "narHash": "sha256-40J9tW7Y794J7Uw4GwcAKlMxlX2xISBl6IBigo83ih8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "23cbb250f3bf4f516a2d0bf03c51a30900848075", + "rev": "fbca5e745367ae7632731639de5c21f29c8744ed", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1727205223, - "narHash": "sha256-RHzehUZqXKM8W8tUywY58jASi+Z8LDvrssuJz4UnG1w=", + "lastModified": 1727597789, + "narHash": "sha256-SW4KO6eOwb+FZMwk0aYRZajSUqVSYByNF2jj53+XTb0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b7643ddc3b422f1d6e42c83a2d58ea5ce222048c", + "rev": "a33c9035167809d873252ac9f9f05134a05e6e16", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1727201865, - "narHash": "sha256-nqHWxGhUFS6xyiVminVIECdG0Gu5em7LPf1mb4+5PEw=", + "lastModified": 1727596560, + "narHash": "sha256-222fcWG6s13RXuAK711nbrHs6wOb3UORXJ/vt3rCM60=", "owner": "nix-community", "repo": "NUR", - "rev": "c7225411f6e9087829c3a120e2698867d1b05319", + "rev": "6acf80f88c3f8fbf4f95f5df7a936a488a7bca12", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1727169160, - "narHash": "sha256-m/3tT0Wvk2V4H15riZC/yT7i7t+8V58HTDpthKV5yhk=", + "lastModified": 1727546745, + "narHash": "sha256-dtOOYKGcfYTf0bSPuiY+BVEKdSw/zd/u2QvNXciQ0/E=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "7624b3e0275d9b52dbdda46ef7ffee66b36ff823", + "rev": "d8928e5929c2344704264e8447452e0f73c72497", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1726524647, - "narHash": "sha256-qis6BtOOBBEAfUl7FMHqqTwRLB61OL5OFzIsOmRz2J4=", + "lastModified": 1727423009, + "narHash": "sha256-+4B/dQm2EnORIk0k2wV3aHGaE0WXTBjColXjj7qWh10=", "owner": "Mic92", "repo": "sops-nix", - "rev": "e2d404a7ea599a013189aa42947f66cede0645c8", + "rev": "127a96f49ddc377be6ba76964411bab11ae27803", "type": "github" }, "original": { @@ -591,11 +591,11 @@ ] }, "locked": { - "lastModified": 1719749022, - "narHash": "sha256-ddPKHcqaKCIFSFc/cvxS14goUhCOAwsM1PbMr0ZtHMg=", + "lastModified": 1727431250, + "narHash": "sha256-uGRlRT47ecicF9iLD1G3g43jn2e+b5KaMptb59LHnvM=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "8df5ff62195d4e67e2264df0b7f5e8c9995fd0bd", + "rev": "879b29ae9a0378904fbbefe0dadaed43c8905754", "type": "github" }, "original": { From 726954d5f5599b6893a242bce2b5038624687e2d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 29 Sep 2024 10:39:16 +0200 Subject: [PATCH 261/562] Increase keyFileTimeout --- hosts/iron/configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index d2a78b8..38d24a4 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -141,7 +141,7 @@ with lib; { allowDiscards = true; keyFileSize = 4096; keyFile = "/dev/disk/by-id/usb-jalr_RAM_Mass_Storage_DE6270431F6F342C-0:0"; - keyFileTimeout = 5; + keyFileTimeout = 60; }; }) disks From aafdcf4a469495bc8fdf733db99711e732143032 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 8 Oct 2024 21:09:58 +0200 Subject: [PATCH 262/562] Add dashboard --- hosts/aluminium/services/home-assistant.nix | 54 ++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/hosts/aluminium/services/home-assistant.nix b/hosts/aluminium/services/home-assistant.nix index 79974ef..5fc1fe8 100644 --- a/hosts/aluminium/services/home-assistant.nix +++ b/hosts/aluminium/services/home-assistant.nix @@ -5,7 +5,59 @@ in { services.home-assistant = { enable = true; - lovelaceConfig = { }; + lovelaceConfig = { + title = "Home"; + views = [ + { + path = "default_view"; + title = "Home"; + cards = [ + { + title = "Heizung"; + type = "entities"; + entities = [ + { entity = "sensor.guntamaticbiostar_betrieb"; } + { entity = "sensor.guntamaticbiostar_pufferladung"; } + { entity = "sensor.guntamaticbiostar_puffer_oben"; } + { entity = "sensor.guntamaticbiostar_puffer_unten"; } + { entity = "sensor.guntamaticbiostar_kesseltemperatur"; } + { entity = "sensor.guntamaticbiostar_vorlauf_ist_1"; } + { entity = "sensor.guntamaticbiostar_raumtemp_hk_1"; } + { entity = "sensor.guntamaticbiostar_aussentemperatur"; } + { entity = "sensor.guntamaticbiostar_co2_gehalt"; } + { entity = "select.guntamaticbiostar_program"; } + { entity = "sensor.guntamaticbiostar_programm"; } + { entity = "sensor.guntamaticbiostar_programm_hk1"; } + { entity = "sensor.guntamaticbiostar_rauchgasauslastung"; } + { entity = "sensor.guntamaticbiostar_rucklauftemperatur"; } + { entity = "sensor.guntamaticbiostar_servicezeit"; } + ]; + } + { + type = "grid"; + square = false; + columns = 1; + cards = [ + { + title = "Wasserbett"; + type = "entities"; + entities = [ + { + entity = "sensor.waterbed_temperatur"; + name = "Temperatur"; + } + ]; + } + { + type = "thermostat"; + entity = "climate.waterbed_temperatur"; + } + ]; + } + ]; + } + ]; + }; extraComponents = [ # See https://www.home-assistant.io/integrations "esphome" From 0fc2c1836318e88a1f466910b23763503ab4d0a4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 8 Oct 2024 21:11:05 +0200 Subject: [PATCH 263/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/b709e1cc33fcde71c7db43850a55ebe6449d0959' (2024-09-28) → 'github:nix-community/disko/d39ee334984fcdae6244f5a8e6ab857479cbaefe' (2024-10-07) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/ba932692e249374e91bcbfe2e3a25ed3342a72eb' (2024-09-27) → 'github:nix-community/gomod2nix/066e0dd2afde263f547cb0905b77cea00521d86c' (2024-09-30) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/85f7a7177c678de68224af3402ab8ee1bcee25c8' (2024-09-28) → 'github:cachix/git-hooks.nix/1211305a5b237771e13fcca0c51e60ad47326a9a' (2024-10-05) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/8e8c6cbad12ef805268b4e380a7298fbc275898d' (2024-09-29) → 'github:nixos/nixos-hardware/ecfcd787f373f43307d764762e139a7cdeb9c22b' (2024-10-07) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/fbca5e745367ae7632731639de5c21f29c8744ed' (2024-09-28) → 'github:nixos/nixpkgs/ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6' (2024-10-06) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/a33c9035167809d873252ac9f9f05134a05e6e16' (2024-09-29) → 'github:NixOS/nixpkgs/782c8b0451119555e47038daccf7621c5dd67950' (2024-10-08) • Updated input 'nur': 'github:nix-community/NUR/6acf80f88c3f8fbf4f95f5df7a936a488a7bca12' (2024-09-29) → 'github:nix-community/NUR/d9b924cd1b0a5e6018264e1f4c63edcfbbe97cdf' (2024-10-08) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/d8928e5929c2344704264e8447452e0f73c72497' (2024-09-28) → 'github:nix-community/poetry2nix/8e965fd42c0da4357c53d987bc62b54a954424da' (2024-10-07) • Updated input 'poetry2nix/treefmt-nix': 'github:numtide/treefmt-nix/879b29ae9a0378904fbbefe0dadaed43c8905754' (2024-09-27) → 'github:numtide/treefmt-nix/4446c7a6fc0775df028c5a3f6727945ba8400e64' (2024-10-03) • Updated input 'sops-nix': 'github:Mic92/sops-nix/127a96f49ddc377be6ba76964411bab11ae27803' (2024-09-27) → 'github:Mic92/sops-nix/06535d0e3d0201e6a8080dd32dbfde339b94f01b' (2024-10-08) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/dc454045f5b5d814e5862a6d057e7bb5c29edc05' (2024-09-08) → 'github:NixOS/nixpkgs/17ae88b569bb15590549ff478bab6494dde4a907' (2024-10-05) --- flake.lock | 66 +++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/flake.lock b/flake.lock index 9ade965..7517b86 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1727531434, - "narHash": "sha256-b+GBgCWd2N6pkiTkRZaMFOPztPO4IVTaclYPrQl2uLk=", + "lastModified": 1728334376, + "narHash": "sha256-CTKEKPzD/j8FK6H4DO3EjyixZd3HHvgAgfnCwpGFP5c=", "owner": "nix-community", "repo": "disko", - "rev": "b709e1cc33fcde71c7db43850a55ebe6449d0959", + "rev": "d39ee334984fcdae6244f5a8e6ab857479cbaefe", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1727478263, - "narHash": "sha256-6/c82/1/Y4JRPGuhNPvVZFQltR2eXaFi3av1SZQEQ10=", + "lastModified": 1727668934, + "narHash": "sha256-nPpQ/4k6Fjaq2CHNSdO6j1ikiuWApuk/S6lU6ISp5SQ=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "ba932692e249374e91bcbfe2e3a25ed3342a72eb", + "rev": "066e0dd2afde263f547cb0905b77cea00521d86c", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1727514110, - "narHash": "sha256-0YRcOxJG12VGDFH8iS8pJ0aYQQUAgo/r3ZAL+cSh9nk=", + "lastModified": 1728092656, + "narHash": "sha256-eMeCTJZ5xBeQ0f9Os7K8DThNVSo9gy4umZLDfF5q6OM=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "85f7a7177c678de68224af3402ab8ee1bcee25c8", + "rev": "1211305a5b237771e13fcca0c51e60ad47326a9a", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1727595438, - "narHash": "sha256-bAvkJYuZKeDwW/J/Ga/axplEbYbQhq6jdQBVdGcpuO8=", + "lastModified": 1728269138, + "narHash": "sha256-oKxDImsOvgUZMY4NwXVyUc/c1HiU2qInX+b5BU0yXls=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "8e8c6cbad12ef805268b4e380a7298fbc275898d", + "rev": "ecfcd787f373f43307d764762e139a7cdeb9c22b", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1727540905, - "narHash": "sha256-40J9tW7Y794J7Uw4GwcAKlMxlX2xISBl6IBigo83ih8=", + "lastModified": 1728193676, + "narHash": "sha256-PbDWAIjKJdlVg+qQRhzdSor04bAPApDqIv2DofTyynk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "fbca5e745367ae7632731639de5c21f29c8744ed", + "rev": "ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6", "type": "github" }, "original": { @@ -378,11 +378,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1725762081, - "narHash": "sha256-vNv+aJUW5/YurRy1ocfvs4q/48yVESwlC/yHzjkZSP8=", + "lastModified": 1728156290, + "narHash": "sha256-uogSvuAp+1BYtdu6UWuObjHqSbBohpyARXDWqgI12Ss=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dc454045f5b5d814e5862a6d057e7bb5c29edc05", + "rev": "17ae88b569bb15590549ff478bab6494dde4a907", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1727597789, - "narHash": "sha256-SW4KO6eOwb+FZMwk0aYRZajSUqVSYByNF2jj53+XTb0=", + "lastModified": 1728413927, + "narHash": "sha256-Ph8V+5JY/V6tp/tSMk0sSJnYxA9pwN9SbdX6sQQ3yuc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a33c9035167809d873252ac9f9f05134a05e6e16", + "rev": "782c8b0451119555e47038daccf7621c5dd67950", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1727596560, - "narHash": "sha256-222fcWG6s13RXuAK711nbrHs6wOb3UORXJ/vt3rCM60=", + "lastModified": 1728413295, + "narHash": "sha256-0UgpAUNLBQwAsqQKqX/ggNBvRGHrn6YggMJLBRr33V8=", "owner": "nix-community", "repo": "NUR", - "rev": "6acf80f88c3f8fbf4f95f5df7a936a488a7bca12", + "rev": "d9b924cd1b0a5e6018264e1f4c63edcfbbe97cdf", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1727546745, - "narHash": "sha256-dtOOYKGcfYTf0bSPuiY+BVEKdSw/zd/u2QvNXciQ0/E=", + "lastModified": 1728266256, + "narHash": "sha256-RefXB9kqYch6uGT+mo6m3KTbNerfbDYz+EqkLb6YBbs=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "d8928e5929c2344704264e8447452e0f73c72497", + "rev": "8e965fd42c0da4357c53d987bc62b54a954424da", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1727423009, - "narHash": "sha256-+4B/dQm2EnORIk0k2wV3aHGaE0WXTBjColXjj7qWh10=", + "lastModified": 1728345710, + "narHash": "sha256-lpunY1+bf90ts+sA2/FgxVNIegPDKCpEoWwOPu4ITTQ=", "owner": "Mic92", "repo": "sops-nix", - "rev": "127a96f49ddc377be6ba76964411bab11ae27803", + "rev": "06535d0e3d0201e6a8080dd32dbfde339b94f01b", "type": "github" }, "original": { @@ -591,11 +591,11 @@ ] }, "locked": { - "lastModified": 1727431250, - "narHash": "sha256-uGRlRT47ecicF9iLD1G3g43jn2e+b5KaMptb59LHnvM=", + "lastModified": 1727984844, + "narHash": "sha256-xpRqITAoD8rHlXQafYZOLvUXCF6cnZkPfoq67ThN0Hc=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "879b29ae9a0378904fbbefe0dadaed43c8905754", + "rev": "4446c7a6fc0775df028c5a3f6727945ba8400e64", "type": "github" }, "original": { From 1491636cb91f87a6b8348ccdfedcdf7caed20aaf Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Oct 2024 10:04:52 +0200 Subject: [PATCH 264/562] Add pyyaml --- users/jalr/modules/python.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/users/jalr/modules/python.nix b/users/jalr/modules/python.nix index 9a620b3..d73b0e3 100644 --- a/users/jalr/modules/python.nix +++ b/users/jalr/modules/python.nix @@ -1,8 +1,10 @@ { nixosConfig, lib, pkgs, ... }: lib.mkIf nixosConfig.jalr.workstation.enable { home.packages = with pkgs; [ - python3 - python3Packages.virtualenv - python3Packages.ipython + (python3.withPackages (pp: with pp; [ + ipython + pyyaml + virtualenv + ])) ]; } From 3b2f03e6e8f68b51a5db0fcc993cf2bba77f2b18 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Oct 2024 10:05:31 +0200 Subject: [PATCH 265/562] Add basic boot debugging instructions --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 7b18909..32052e4 100644 --- a/README.md +++ b/README.md @@ -59,3 +59,8 @@ gpg --edit-key $key gpg> trust Your decision? 5 ``` + +## Debugging boot issues + +1. Add `rd.systemd.debug_shell` kernel parameter +2. Press CTRL+ALT+F9 to switch to root shell From 2207e66b6aa02e43b7ca2388f178969a42e56cf1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Oct 2024 10:06:46 +0200 Subject: [PATCH 266/562] Change path to music directory --- hosts/iron/configuration.nix | 2 +- hosts/iron/services/navidrome.nix | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index 38d24a4..ab27c75 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -15,7 +15,7 @@ let "bpool/nixos/root" = "/boot"; "rpool/filebitch" = "/filebitch"; "rpool/navidrome" = "/var/lib/private/navidrome"; - "rpool/navidrome/music" = "/var/lib/private/navidrome/music"; + "rpool/navidrome/music" = "/var/lib/navidrome/music"; "rpool/nixos/home" = "/home"; "rpool/nixos/root" = "/"; "rpool/nixos/var/lib" = "/var/lib"; diff --git a/hosts/iron/services/navidrome.nix b/hosts/iron/services/navidrome.nix index 4f1044a..755f26c 100644 --- a/hosts/iron/services/navidrome.nix +++ b/hosts/iron/services/navidrome.nix @@ -7,6 +7,7 @@ let Address = "127.0.0.1"; Port = ports.navidrome.tcp; DevActivityPanel = false; + MusicFolder = "/var/lib/navidrome/music"; }; passwordEncryptionKeyFile = config.sops.secrets.navidrome-password-encryption-key.path; configFile = (pkgs.formats.json { }).generate "navidrome.json" settings; From 39ced5297f26b458bf38889b6b62d373145ab72f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Oct 2024 10:07:53 +0200 Subject: [PATCH 267/562] Fix automatic detergent dosing --- hosts/iron/services/esphome/devices/waschmaschine.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hosts/iron/services/esphome/devices/waschmaschine.yaml b/hosts/iron/services/esphome/devices/waschmaschine.yaml index 0e5d854..3e4babb 100644 --- a/hosts/iron/services/esphome/devices/waschmaschine.yaml +++ b/hosts/iron/services/esphome/devices/waschmaschine.yaml @@ -86,7 +86,8 @@ interval: if: condition: and: - - lambda: return id(current_operation).state == "Einw/Vorwäsche"; + #- lambda: return id(current_operation).state == "Einw/Vorwäsche"; + - lambda: return id(current_operation).state == "Waschen"; - lambda: return id(dosing_enabled); then: - lambda: &dosing |- From 5a99f3eda7d69ca53c265f229ab6cc0fe00b8cd3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Oct 2024 10:54:45 +0200 Subject: [PATCH 268/562] Remove file completions for mycli command --- users/jalr/modules/fish.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index 63c7692..47bc9c7 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -171,6 +171,7 @@ xdg.configFile."fish/completions/mycli.fish".text = '' complete -e -c mycli + complete -c mycli -f complete -c mycli -f -s h -l host -d "Host address of the database." complete -c mycli -f -s P -l port -d "Port number to use for connection." complete -c mycli -f -s u -l user -d "User name to connect to the database." From 39b7da4adcd5bf93d3bddfc9b371e5d900b4f5db Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Oct 2024 10:55:45 +0200 Subject: [PATCH 269/562] Add myssh script --- users/jalr/modules/default.nix | 2 +- users/jalr/modules/fish.nix | 4 + .../modules/{mycli.nix => mycli/default.nix} | 16 +- users/jalr/modules/mycli/myssh.py | 142 ++++++++++++++++++ 4 files changed, 160 insertions(+), 4 deletions(-) rename users/jalr/modules/{mycli.nix => mycli/default.nix} (93%) create mode 100755 users/jalr/modules/mycli/myssh.py diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index eb4a37f..eaa4602 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -21,7 +21,7 @@ ./kicad.nix ./mpv.nix ./mute-indicator.nix - ./mycli.nix + ./mycli ./neo.nix ./neovim.nix ./nix-index.nix diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index 47bc9c7..0ca1af4 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -194,6 +194,10 @@ complete -c mycli -f -s d -l dsn -r -a '(mycli --list-dsn)' ''; + xdg.configFile."fish/completions/myssh.fish".text = '' + complete -c myssh -f -a '(myssh --list)' + ''; + xdg.configFile."fish/completions/just.fish".source = pkgs.runCommand "just-fish-completions" { } '' ${pkgs.just}/bin/just --completions fish > $out ''; diff --git a/users/jalr/modules/mycli.nix b/users/jalr/modules/mycli/default.nix similarity index 93% rename from users/jalr/modules/mycli.nix rename to users/jalr/modules/mycli/default.nix index bcc9dd1..f688679 100644 --- a/users/jalr/modules/mycli.nix +++ b/users/jalr/modules/mycli/default.nix @@ -6,7 +6,7 @@ let ) ini; - solarized = import ./solarized.nix; + solarized = import ../solarized.nix; config = { main = { @@ -133,8 +133,18 @@ let }; in { - home.packages = with pkgs; [ - mycli + home.packages = [ + pkgs.mycli + (pkgs.stdenv.mkDerivation { + name = "myssh"; + propagatedBuildInputs = [ + (pkgs.python3.withPackages (pp: with pp; [ + pyyaml + ])) + ]; + dontUnpack = true; + installPhase = "install -Dm755 ${./myssh.py} $out/bin/myssh"; + }) ]; xdg.configFile = lib.attrsets.mapAttrs' diff --git a/users/jalr/modules/mycli/myssh.py b/users/jalr/modules/mycli/myssh.py new file mode 100755 index 0000000..1e25796 --- /dev/null +++ b/users/jalr/modules/mycli/myssh.py @@ -0,0 +1,142 @@ +#!/usr/bin/env python + +import argparse +import json +import os +import subprocess +import sys +import yaml + + +def get_db_connecition_from_typo3_config(ssh_host, ssh_user, config_file): + php_code = """ + 1 + } + + +def connect(connection_name, connection): + if "t3_config" in connection: + db = get_db_connecition_from_typo3_config( + connection["ssh_host"], connection["ssh_user"], connection["t3_config"] + ) + db_host = db["host"] + db_user = db["user"] + db_password = db["password"] + db_name = db["dbname"] + elif "staging_level" in connection: + env = get_db_connection_from_env_file( + connection["ssh_host"], connection["ssh_user"], connection["staging_level"] + ) + db_host = env["TYPO3_DB_HOST"] + db_user = env["TYPO3_DB_USER"] + db_password = env["TYPO3_DB_PASSWORD"] + db_name = env["TYPO3_DB_DATABASE"] + + os.execl( + "/usr/bin/env", + "env", + "mycli", + "--prompt", + f"{connection_name}>", + "--ssh-user", + connection["ssh_user"], + "--ssh-host", + connection["ssh_host"], + "-h", + db_host, + "-u", + db_user, + "-p", + db_password, + db_name, + ) + + +def read_config(path): + with open(path, "r") as fh: + config = yaml.safe_load(fh.read()) + + return config + + +def main(): + connections = read_config(os.path.expanduser("~/.config/mycli/connections.yaml")) + + parser = argparse.ArgumentParser() + parser.add_argument("--list", action="store_true") + parser.add_argument("connection", type=str, nargs="?") + + args = vars(parser.parse_args()) + + if args["list"]: + print("\n".join(connections.keys())) + + if args["connection"] is not None: + connect(args["connection"], connections[args["connection"]]) + + +if __name__ == "__main__": + main() From 8225188ccfa9b7e29d2ce2d68f64d7f9019346e7 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 14 Oct 2024 21:36:33 +0200 Subject: [PATCH 270/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/d39ee334984fcdae6244f5a8e6ab857479cbaefe' (2024-10-07) → 'github:nix-community/disko/3b778f10eb275573da9f5c8a7a49e774200b87e5' (2024-10-14) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/066e0dd2afde263f547cb0905b77cea00521d86c' (2024-09-30) → 'github:nix-community/gomod2nix/d5547e530464c562324f171006fc8f639aa01c9f' (2024-10-09) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/1211305a5b237771e13fcca0c51e60ad47326a9a' (2024-10-05) → 'github:cachix/git-hooks.nix/ff68f91754be6f3427e4986d7949e6273659be1d' (2024-10-13) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/ecfcd787f373f43307d764762e139a7cdeb9c22b' (2024-10-07) → 'github:nixos/nixos-hardware/a8dd1b21995964b115b1e3ec639dd6ce24ab9806' (2024-10-12) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6' (2024-10-06) → 'github:nixos/nixpkgs/a3f9ad65a0bf298ed5847629a57808b97e6e8077' (2024-10-12) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/782c8b0451119555e47038daccf7621c5dd67950' (2024-10-08) → 'github:NixOS/nixpkgs/225211d8031e252e5019bcc001554f971b7d0618' (2024-10-14) • Updated input 'nur': 'github:nix-community/NUR/d9b924cd1b0a5e6018264e1f4c63edcfbbe97cdf' (2024-10-08) → 'github:nix-community/NUR/96670f5e62fc211ff06be5ed7654c44318ddf7e2' (2024-10-14) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/8e965fd42c0da4357c53d987bc62b54a954424da' (2024-10-07) → 'github:nix-community/poetry2nix/8a18db56dd62edd26458a87e4d335b7df84c3f3f' (2024-10-10) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 7517b86..c069116 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1728334376, - "narHash": "sha256-CTKEKPzD/j8FK6H4DO3EjyixZd3HHvgAgfnCwpGFP5c=", + "lastModified": 1728922573, + "narHash": "sha256-FegyBabjV4868aJUbvFtqH0zKDEtUpeCAfnB1vWXeBg=", "owner": "nix-community", "repo": "disko", - "rev": "d39ee334984fcdae6244f5a8e6ab857479cbaefe", + "rev": "3b778f10eb275573da9f5c8a7a49e774200b87e5", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1727668934, - "narHash": "sha256-nPpQ/4k6Fjaq2CHNSdO6j1ikiuWApuk/S6lU6ISp5SQ=", + "lastModified": 1728509152, + "narHash": "sha256-tQo1rg3TlwgyI8eHnLvZSlQx9d/o2Rb4oF16TfaTOw0=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "066e0dd2afde263f547cb0905b77cea00521d86c", + "rev": "d5547e530464c562324f171006fc8f639aa01c9f", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1728092656, - "narHash": "sha256-eMeCTJZ5xBeQ0f9Os7K8DThNVSo9gy4umZLDfF5q6OM=", + "lastModified": 1728778939, + "narHash": "sha256-WybK5E3hpGxtCYtBwpRj1E9JoiVxe+8kX83snTNaFHE=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "1211305a5b237771e13fcca0c51e60ad47326a9a", + "rev": "ff68f91754be6f3427e4986d7949e6273659be1d", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1728269138, - "narHash": "sha256-oKxDImsOvgUZMY4NwXVyUc/c1HiU2qInX+b5BU0yXls=", + "lastModified": 1728729581, + "narHash": "sha256-oazkQ/z7r43YkDLLQdMg8oIB3CwWNb+2ZrYOxtLEWTQ=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "ecfcd787f373f43307d764762e139a7cdeb9c22b", + "rev": "a8dd1b21995964b115b1e3ec639dd6ce24ab9806", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1728193676, - "narHash": "sha256-PbDWAIjKJdlVg+qQRhzdSor04bAPApDqIv2DofTyynk=", + "lastModified": 1728740863, + "narHash": "sha256-u+rxA79a0lyhG+u+oPBRtTDtzz8kvkc9a6SWSt9ekVc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6", + "rev": "a3f9ad65a0bf298ed5847629a57808b97e6e8077", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1728413927, - "narHash": "sha256-Ph8V+5JY/V6tp/tSMk0sSJnYxA9pwN9SbdX6sQQ3yuc=", + "lastModified": 1728933870, + "narHash": "sha256-QNTrtaZLyvLcnL7QwwVKINuBypNKlHa8SzM7ILkBPvQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "782c8b0451119555e47038daccf7621c5dd67950", + "rev": "225211d8031e252e5019bcc001554f971b7d0618", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1728413295, - "narHash": "sha256-0UgpAUNLBQwAsqQKqX/ggNBvRGHrn6YggMJLBRr33V8=", + "lastModified": 1728930569, + "narHash": "sha256-OvKCDKpI8sHA07Ct+f5uotGr9ATrIJ/fUfwZZnD8Tmk=", "owner": "nix-community", "repo": "NUR", - "rev": "d9b924cd1b0a5e6018264e1f4c63edcfbbe97cdf", + "rev": "96670f5e62fc211ff06be5ed7654c44318ddf7e2", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1728266256, - "narHash": "sha256-RefXB9kqYch6uGT+mo6m3KTbNerfbDYz+EqkLb6YBbs=", + "lastModified": 1728564116, + "narHash": "sha256-BkEqM5zUrYAwRKrfqi7hPOqjgD6+N0NCJvooaY8aQoE=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "8e965fd42c0da4357c53d987bc62b54a954424da", + "rev": "8a18db56dd62edd26458a87e4d335b7df84c3f3f", "type": "github" }, "original": { From 05a1b91fc4bf2fa93b790567cffc00d102c07085 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 16 Oct 2024 21:06:56 +0200 Subject: [PATCH 271/562] Improve WhatsApp setup - Implement graceful VM shutdown - Add systemd timer --- hosts/iron/configuration.nix | 2 - hosts/iron/services/default.nix | 1 + hosts/iron/services/matrix.nix | 11 ---- hosts/iron/services/whatsapp.nix | 88 ++++++++++++++++++++++++++++++++ 4 files changed, 89 insertions(+), 13 deletions(-) create mode 100644 hosts/iron/services/whatsapp.nix diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index ab27c75..80a60f2 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -234,7 +234,5 @@ with lib; { priority = 1; }; - - jalr.libvirt.enable = true; }; } diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index 86ff156..40087e5 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -16,5 +16,6 @@ ./remarkable.nix ./sturzbach.nix ./unifi-controller.nix + ./whatsapp.nix ]; } diff --git a/hosts/iron/services/matrix.nix b/hosts/iron/services/matrix.nix index 79a184d..93e413d 100644 --- a/hosts/iron/services/matrix.nix +++ b/hosts/iron/services/matrix.nix @@ -28,17 +28,6 @@ in host = "turn.jalr.de"; sharedSecretFile = config.sops.secrets.synapse-turn-shared-secret.path; }; - mautrix-whatsapp = { - enable = true; - port = ports.mautrix-whatsapp.tcp; - settings.bridge.permissions = { - # Only one user since using the name from the address book does not - # work with multiple users - #"@jalr:jalr.de" = 100; - "@jalr:jalr.de" = "admin"; - "jalr.de" = "user"; - }; - }; mautrix-signal = { enable = true; port = ports.mautrix-signal.tcp; diff --git a/hosts/iron/services/whatsapp.nix b/hosts/iron/services/whatsapp.nix new file mode 100644 index 0000000..ae88ae2 --- /dev/null +++ b/hosts/iron/services/whatsapp.nix @@ -0,0 +1,88 @@ +args@{ config, pkgs, custom-utils, ... }: + +let + ports = import ../ports.nix args; + shutdownAndroidVm = pkgs.writeShellScript "shutdown-android-vm" '' + set -e + export PATH=${pkgs.lib.makeBinPath [pkgs.libvirt pkgs.gnused pkgs.android-tools]} + + if [ "$(virsh domstate "$1")" = "running" ]; then + host="$(virsh -q domifaddr --domain "$1" | sed -n -r 's#.*ipv4\s*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/[0-9]+$#\1#p')" + port=5555 + adb connect "$host:$port" + adb -s "$host:$port" shell -- reboot -p + fi + ''; + vmName = "Bliss-v16"; +in +{ + jalr.matrix.mautrix-whatsapp = { + enable = true; + port = ports.mautrix-whatsapp.tcp; + settings.bridge.permissions = { + # Only one user since using the name from the address book does not + # work with multiple users + #"@jalr:jalr.de" = 100; + "@jalr:jalr.de" = "admin"; + "jalr.de" = "user"; + }; + }; + + jalr.libvirt.enable = true; + + systemd.services.libvirt-guests.serviceConfig.ExecStop = [ + "" + "${shutdownAndroidVm} ${vmName}" + "${pkgs.libvirt}/libexec/libvirt-guests.sh stop" + ]; + + systemd.services."whatsapp@" = { + description = "Start Android VM, wait for WhatsApp and shut down VM."; + serviceConfig = { + Type = "oneshot"; + }; + environment.VM = "%i"; + script = '' + export PATH=${pkgs.lib.makeBinPath [pkgs.libvirt pkgs.gnused pkgs.android-tools pkgs.coreutils]} + + domstate="$(virsh domstate "$VM")" + + if [ "$domstate" != "running" ]; then + virsh start "$VM" + fi + + echo "Wait until IP of Android VM is known" + while :; do + host="$(virsh -q domifaddr --domain "$VM" | sed -n -r 's#.*ipv4\s*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/[0-9]+$#\1#p')" + if [ "$host" ]; then + break + fi + sleep 1 + done + + port=5555 + adb connect "$host:$port" + + echo "Waiting for WhatsApp" + while ! adb -s "$host:$port" shell -- pgrep com.whatsapp > /dev/null; do + sleep 1 + done + + echo "Sleeping..." + sleep 5m + + echo "Shutting down Android" + adb -s "$host:$port" shell -- reboot -p + ''; + }; + systemd.timers."whatsapp-${vmName}" = { + description = "Start Android VM to run WhatsApp"; + after = [ "network.target" ]; + wantedBy = [ "timers.target" ]; + timerConfig = { + Persistent = true; + OnCalendar = "*-*-* 2:00:00"; + Unit = "whatsapp@${vmName}.service"; + }; + }; +} From e0363dee0fe0fef9ea203db7882febd99670f06f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 16 Oct 2024 21:08:53 +0200 Subject: [PATCH 272/562] Use stable esphome package --- hosts/iron/services/esphome/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/iron/services/esphome/default.nix b/hosts/iron/services/esphome/default.nix index 53a3c0f..6b08885 100644 --- a/hosts/iron/services/esphome/default.nix +++ b/hosts/iron/services/esphome/default.nix @@ -28,7 +28,7 @@ in enable = true; address = "127.0.0.1"; port = ports.esphome.tcp; - package = pkgs.master.esphome; + package = pkgs.esphome; #package = pkgs.esphome.overrideAttrs (attrs: { # makeWrapperArgs = attrs.makeWrapperArgs ++ [ # "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ pkgs.stdenv.cc.cc.lib ]}" From aba21934dcb89548900f494149ebabd2b82f7330 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 16 Oct 2024 21:45:47 +0200 Subject: [PATCH 273/562] Add bathroom thermostat --- .../esphome/devices/fussbodenheizung.yaml | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml index 30ff9ce..1b1eff0 100644 --- a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml +++ b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml @@ -72,26 +72,34 @@ sensor: - platform: homeassistant id: humidity_kitchen entity_id: sensor.kueche_leiste_feuchtigkeit + - platform: homeassistant + id: temperature_bathroom + entity_id: sensor.badspiegel_temperatur + - platform: homeassistant + id: humidity_bathroom + entity_id: sensor.badspiegel_feuchtigkeit climate: - #- platform: thermostat - # name: "Bad" - # #sensor: heating_livingroom - # #humidity_sensor: - # min_heating_off_time: 300s - # min_heating_run_time: 300s - # min_idle_time: 30s - # heat_action: - # - switch.turn_on: relay_1 - # idle_action: - # - switch.turn_off: relay_1 - # default_preset: zuhause - # on_boot_restore_from: memory - # preset: - # - name: zuhause - # default_target_temperature_low: 22 °C - # - name: abwesend - # default_target_temperature_low: 16 °C + - platform: thermostat + name: "Bad" + sensor: temperature_bathroom + humidity_sensor: humidity_bathroom + min_heating_off_time: 300s + min_heating_run_time: 300s + min_idle_time: 30s + heat_action: + - switch.turn_on: relay_1 + idle_action: + - switch.turn_off: relay_1 + default_preset: zuhause + on_boot_restore_from: memory + preset: + - name: morgens + default_target_temperature_low: 23 °C + - name: zuhause + default_target_temperature_low: 20 °C + - name: abwesend + default_target_temperature_low: 16 °C #- platform: thermostat # name: "Schlafzimmer" # #sensor: heating_livingroom From c5d7c0e916cba73da1fb776859eb50e72ee8026f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 21 Oct 2024 09:18:06 +0200 Subject: [PATCH 274/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/3b778f10eb275573da9f5c8a7a49e774200b87e5' (2024-10-14) → 'github:nix-community/disko/a6a3179ddf396dfc28a078e2f169354d0c137125' (2024-10-18) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/d5547e530464c562324f171006fc8f639aa01c9f' (2024-10-09) → 'github:nix-community/gomod2nix/5d387097aa716f35dd99d848dc26d8d5b62a104c' (2024-10-20) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/ff68f91754be6f3427e4986d7949e6273659be1d' (2024-10-13) → 'github:cachix/git-hooks.nix/3c3e88f0f544d6bb54329832616af7eb971b6be6' (2024-10-16) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/a8dd1b21995964b115b1e3ec639dd6ce24ab9806' (2024-10-12) → 'github:nixos/nixos-hardware/9fcf30fccf8435f6390efec4a4d38e69c2268a36' (2024-10-20) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/a3f9ad65a0bf298ed5847629a57808b97e6e8077' (2024-10-12) → 'github:nixos/nixpkgs/4eb33fe664af7b41a4c446f87d20c9a0a6321fa3' (2024-10-17) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/225211d8031e252e5019bcc001554f971b7d0618' (2024-10-14) → 'github:NixOS/nixpkgs/47626c904b01b31ba104247714ae4700a3cb240e' (2024-10-21) • Updated input 'nur': 'github:nix-community/NUR/96670f5e62fc211ff06be5ed7654c44318ddf7e2' (2024-10-14) → 'github:nix-community/NUR/41ca6cfe238fdfab2831386c5a65f5c0a01e1cfd' (2024-10-21) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/8a18db56dd62edd26458a87e4d335b7df84c3f3f' (2024-10-10) → 'github:nix-community/poetry2nix/e67cc181b5bdf5aa46f1340fa9acd3910f6fb122' (2024-10-17) • Updated input 'sops-nix': 'github:Mic92/sops-nix/06535d0e3d0201e6a8080dd32dbfde339b94f01b' (2024-10-08) → 'github:Mic92/sops-nix/c504fd7ac946d7a1b17944d73b261ca0a0b226a5' (2024-10-20) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/17ae88b569bb15590549ff478bab6494dde4a907' (2024-10-05) → 'github:NixOS/nixpkgs/bb8c2cf7ea0dd2e18a52746b2c3a5b0c73b93c22' (2024-10-19) --- flake.lock | 60 +++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/flake.lock b/flake.lock index c069116..aaa92a7 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1728922573, - "narHash": "sha256-FegyBabjV4868aJUbvFtqH0zKDEtUpeCAfnB1vWXeBg=", + "lastModified": 1729281548, + "narHash": "sha256-MuojlSnwAJAwfhgmW8ZtZrwm2Sko4fqubCvReqbUzYw=", "owner": "nix-community", "repo": "disko", - "rev": "3b778f10eb275573da9f5c8a7a49e774200b87e5", + "rev": "a6a3179ddf396dfc28a078e2f169354d0c137125", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1728509152, - "narHash": "sha256-tQo1rg3TlwgyI8eHnLvZSlQx9d/o2Rb4oF16TfaTOw0=", + "lastModified": 1729448365, + "narHash": "sha256-oquZeWTYWTr5IxfwEzgsxjtD8SSFZYLdO9DaQb70vNU=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "d5547e530464c562324f171006fc8f639aa01c9f", + "rev": "5d387097aa716f35dd99d848dc26d8d5b62a104c", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1728778939, - "narHash": "sha256-WybK5E3hpGxtCYtBwpRj1E9JoiVxe+8kX83snTNaFHE=", + "lastModified": 1729104314, + "narHash": "sha256-pZRZsq5oCdJt3upZIU4aslS9XwFJ+/nVtALHIciX/BI=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "ff68f91754be6f3427e4986d7949e6273659be1d", + "rev": "3c3e88f0f544d6bb54329832616af7eb971b6be6", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1728729581, - "narHash": "sha256-oazkQ/z7r43YkDLLQdMg8oIB3CwWNb+2ZrYOxtLEWTQ=", + "lastModified": 1729455275, + "narHash": "sha256-THqzn/7um3oMHUEGXyq+1CJQE7EogwR3HjLMNOlhFBE=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "a8dd1b21995964b115b1e3ec639dd6ce24ab9806", + "rev": "9fcf30fccf8435f6390efec4a4d38e69c2268a36", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1728740863, - "narHash": "sha256-u+rxA79a0lyhG+u+oPBRtTDtzz8kvkc9a6SWSt9ekVc=", + "lastModified": 1729181673, + "narHash": "sha256-LDiPhQ3l+fBjRATNtnuDZsBS7hqoBtPkKBkhpoBHv3I=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a3f9ad65a0bf298ed5847629a57808b97e6e8077", + "rev": "4eb33fe664af7b41a4c446f87d20c9a0a6321fa3", "type": "github" }, "original": { @@ -378,11 +378,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1728156290, - "narHash": "sha256-uogSvuAp+1BYtdu6UWuObjHqSbBohpyARXDWqgI12Ss=", + "lastModified": 1729357638, + "narHash": "sha256-66RHecx+zohbZwJVEPF7uuwHeqf8rykZTMCTqIrOew4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "17ae88b569bb15590549ff478bab6494dde4a907", + "rev": "bb8c2cf7ea0dd2e18a52746b2c3a5b0c73b93c22", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1728933870, - "narHash": "sha256-QNTrtaZLyvLcnL7QwwVKINuBypNKlHa8SzM7ILkBPvQ=", + "lastModified": 1729494546, + "narHash": "sha256-7EQfszYNnqugacMrfOkLK8QynBOIB0y9t/1vIMzXqhc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "225211d8031e252e5019bcc001554f971b7d0618", + "rev": "47626c904b01b31ba104247714ae4700a3cb240e", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1728930569, - "narHash": "sha256-OvKCDKpI8sHA07Ct+f5uotGr9ATrIJ/fUfwZZnD8Tmk=", + "lastModified": 1729491640, + "narHash": "sha256-k2mR4w+yvko/JsWaH+1fIqjWRFixEs+jv/lNw8qnfkQ=", "owner": "nix-community", "repo": "NUR", - "rev": "96670f5e62fc211ff06be5ed7654c44318ddf7e2", + "rev": "41ca6cfe238fdfab2831386c5a65f5c0a01e1cfd", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1728564116, - "narHash": "sha256-BkEqM5zUrYAwRKrfqi7hPOqjgD6+N0NCJvooaY8aQoE=", + "lastModified": 1729173771, + "narHash": "sha256-rT2Vz1kFSj+NKHetVY7PJUACX+qBETdnuPSklzFKCsc=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "8a18db56dd62edd26458a87e4d335b7df84c3f3f", + "rev": "e67cc181b5bdf5aa46f1340fa9acd3910f6fb122", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1728345710, - "narHash": "sha256-lpunY1+bf90ts+sA2/FgxVNIegPDKCpEoWwOPu4ITTQ=", + "lastModified": 1729394972, + "narHash": "sha256-fADlzOzcSaGsrO+THUZ8SgckMMc7bMQftztKFCLVcFI=", "owner": "Mic92", "repo": "sops-nix", - "rev": "06535d0e3d0201e6a8080dd32dbfde339b94f01b", + "rev": "c504fd7ac946d7a1b17944d73b261ca0a0b226a5", "type": "github" }, "original": { From aa79e9a295eb4639d8286afac1fa72aa84fc14ca Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 23 Oct 2024 10:28:41 +0200 Subject: [PATCH 275/562] Fix JSON parse error on PHP warnings Redirect PHP warnings to stderr instead of stdout so that the JSON doesn't become invalid if there are PHP warnings. --- users/jalr/modules/mycli/myssh.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/users/jalr/modules/mycli/myssh.py b/users/jalr/modules/mycli/myssh.py index 1e25796..c79b430 100755 --- a/users/jalr/modules/mycli/myssh.py +++ b/users/jalr/modules/mycli/myssh.py @@ -28,20 +28,19 @@ def get_db_connecition_from_typo3_config(ssh_host, ssh_user, config_file): "--", "php", "-d", - "display_errors=1", + "display_errors=stderr", "--", config_file, ], check=True, input=php_code, stdout=subprocess.PIPE, - stderr=subprocess.PIPE, + stderr=sys.stderr, text=True, ) except subprocess.CalledProcessError as e: print(f"Error: Command failed with return code {e.returncode}") print(f"stdout: {e.stdout}") - print(f"stderr: {e.stderr}") raise return json.loads(proc.stdout) From a2d776548c2c4d136763250257c3ca3598dea80e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 23 Oct 2024 13:56:32 +0200 Subject: [PATCH 276/562] Enable periodic dumps --- hosts/magnesium/services/forgejo.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hosts/magnesium/services/forgejo.nix b/hosts/magnesium/services/forgejo.nix index 98042a7..9eef90f 100644 --- a/hosts/magnesium/services/forgejo.nix +++ b/hosts/magnesium/services/forgejo.nix @@ -49,6 +49,10 @@ in }; log.level = "Warn"; }; + dump = { + enable = true; + type = "tar.zst"; + }; }; networking.firewall.allowedTCPPorts = [ cfg.settings.server.SSH_PORT ]; From 6cbfa3e4dabdbc62655ced68b5a80dfaa4e037be Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 23 Oct 2024 13:57:49 +0200 Subject: [PATCH 277/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/a6a3179ddf396dfc28a078e2f169354d0c137125' (2024-10-18) → 'github:nix-community/disko/4be2aadf13b67ffbb993deb73adff77c46b728fc' (2024-10-22) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/9fcf30fccf8435f6390efec4a4d38e69c2268a36' (2024-10-20) → 'github:nixos/nixos-hardware/22e8de2729f40d29a445c8baeaf22740b8b25daf' (2024-10-22) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/4eb33fe664af7b41a4c446f87d20c9a0a6321fa3' (2024-10-17) → 'github:nixos/nixpkgs/89172919243df199fe237ba0f776c3e3e3d72367' (2024-10-20) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/47626c904b01b31ba104247714ae4700a3cb240e' (2024-10-21) → 'github:NixOS/nixpkgs/148aa178a9ab4c98b55b85d2935f3e1722130c51' (2024-10-23) • Updated input 'nur': 'github:nix-community/NUR/41ca6cfe238fdfab2831386c5a65f5c0a01e1cfd' (2024-10-21) → 'github:nix-community/NUR/b79837253f7eb49c14d8665b656202ef0d78845a' (2024-10-23) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/e67cc181b5bdf5aa46f1340fa9acd3910f6fb122' (2024-10-17) → 'github:nix-community/poetry2nix/f7f9446455084a6333c428371afe23229379cf62' (2024-10-22) • Updated input 'sops-nix': 'github:Mic92/sops-nix/c504fd7ac946d7a1b17944d73b261ca0a0b226a5' (2024-10-20) → 'github:Mic92/sops-nix/a4c33bfecb93458d90f9eb26f1cf695b47285243' (2024-10-23) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index aaa92a7..59cff38 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1729281548, - "narHash": "sha256-MuojlSnwAJAwfhgmW8ZtZrwm2Sko4fqubCvReqbUzYw=", + "lastModified": 1729588208, + "narHash": "sha256-PNONdMd+sG7JWzNIDerX7oVZXL8FTVlSAZ1BmUo2HjE=", "owner": "nix-community", "repo": "disko", - "rev": "a6a3179ddf396dfc28a078e2f169354d0c137125", + "rev": "4be2aadf13b67ffbb993deb73adff77c46b728fc", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1729455275, - "narHash": "sha256-THqzn/7um3oMHUEGXyq+1CJQE7EogwR3HjLMNOlhFBE=", + "lastModified": 1729624485, + "narHash": "sha256-iEffyT68tEU5kHQuyP05QRH+JhWNNLAwHfgZAzXFS7o=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "9fcf30fccf8435f6390efec4a4d38e69c2268a36", + "rev": "22e8de2729f40d29a445c8baeaf22740b8b25daf", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1729181673, - "narHash": "sha256-LDiPhQ3l+fBjRATNtnuDZsBS7hqoBtPkKBkhpoBHv3I=", + "lastModified": 1729449015, + "narHash": "sha256-Gf04dXB0n4q0A9G5nTGH3zuMGr6jtJppqdeljxua1fo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4eb33fe664af7b41a4c446f87d20c9a0a6321fa3", + "rev": "89172919243df199fe237ba0f776c3e3e3d72367", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1729494546, - "narHash": "sha256-7EQfszYNnqugacMrfOkLK8QynBOIB0y9t/1vIMzXqhc=", + "lastModified": 1729684406, + "narHash": "sha256-ogE0sFjMltcKiuLnP/yBhRfQhw00LE69E1ARgAV18Kg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "47626c904b01b31ba104247714ae4700a3cb240e", + "rev": "148aa178a9ab4c98b55b85d2935f3e1722130c51", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1729491640, - "narHash": "sha256-k2mR4w+yvko/JsWaH+1fIqjWRFixEs+jv/lNw8qnfkQ=", + "lastModified": 1729683741, + "narHash": "sha256-IvsiJRTO5+BUAN3+jkWnZZ1h6LbgguHgtTgHGJia2VM=", "owner": "nix-community", "repo": "NUR", - "rev": "41ca6cfe238fdfab2831386c5a65f5c0a01e1cfd", + "rev": "b79837253f7eb49c14d8665b656202ef0d78845a", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1729173771, - "narHash": "sha256-rT2Vz1kFSj+NKHetVY7PJUACX+qBETdnuPSklzFKCsc=", + "lastModified": 1729621708, + "narHash": "sha256-NEagK4dENd9Riu8Gc1JHOnrKL/3TmiAINDCAvXqWkL4=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "e67cc181b5bdf5aa46f1340fa9acd3910f6fb122", + "rev": "f7f9446455084a6333c428371afe23229379cf62", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1729394972, - "narHash": "sha256-fADlzOzcSaGsrO+THUZ8SgckMMc7bMQftztKFCLVcFI=", + "lastModified": 1729669122, + "narHash": "sha256-SpS3rSwYcskdOpx+jeCv1lcZDdkT/K5qT8dlenCBQ8c=", "owner": "Mic92", "repo": "sops-nix", - "rev": "c504fd7ac946d7a1b17944d73b261ca0a0b226a5", + "rev": "a4c33bfecb93458d90f9eb26f1cf695b47285243", "type": "github" }, "original": { From 540e720874ed38de2636ac2e7d3e923b3e749817 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 28 Oct 2024 15:02:53 +0100 Subject: [PATCH 278/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/4be2aadf13b67ffbb993deb73adff77c46b728fc' (2024-10-22) → 'github:nix-community/disko/89e458a3bb3693e769bfb2b2447c3fe72092d498' (2024-10-27) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/22e8de2729f40d29a445c8baeaf22740b8b25daf' (2024-10-22) → 'github:nixos/nixos-hardware/6906ac67a1078cf950b8527341e229eeecb5bc30' (2024-10-27) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/89172919243df199fe237ba0f776c3e3e3d72367' (2024-10-20) → 'github:nixos/nixpkgs/cd3e8833d70618c4eea8df06f95b364b016d4950' (2024-10-26) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/148aa178a9ab4c98b55b85d2935f3e1722130c51' (2024-10-23) → 'github:NixOS/nixpkgs/9b2bdcc99abfd60ccac074cc63541f757d21ec43' (2024-10-28) • Updated input 'nur': 'github:nix-community/NUR/b79837253f7eb49c14d8665b656202ef0d78845a' (2024-10-23) → 'github:nix-community/NUR/eeb8fce4d316d67fc9baf0169e626f9cb590c4b7' (2024-10-28) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/f7f9446455084a6333c428371afe23229379cf62' (2024-10-22) → 'github:nix-community/poetry2nix/caddf1463524201e73b201fa3fc51b5233bf7d5b' (2024-10-28) • Updated input 'sops-nix': 'github:Mic92/sops-nix/a4c33bfecb93458d90f9eb26f1cf695b47285243' (2024-10-23) → 'github:Mic92/sops-nix/1666d16426abe79af5c47b7c0efa82fd31bf4c56' (2024-10-27) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/bb8c2cf7ea0dd2e18a52746b2c3a5b0c73b93c22' (2024-10-19) → 'github:NixOS/nixpkgs/cd3e8833d70618c4eea8df06f95b364b016d4950' (2024-10-26) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 59cff38..b0dc780 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1729588208, - "narHash": "sha256-PNONdMd+sG7JWzNIDerX7oVZXL8FTVlSAZ1BmUo2HjE=", + "lastModified": 1730045523, + "narHash": "sha256-W5Avk1THhZALXITHGazKfZbIZ5+Bc4nSYvAYHUn96EU=", "owner": "nix-community", "repo": "disko", - "rev": "4be2aadf13b67ffbb993deb73adff77c46b728fc", + "rev": "89e458a3bb3693e769bfb2b2447c3fe72092d498", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1729624485, - "narHash": "sha256-iEffyT68tEU5kHQuyP05QRH+JhWNNLAwHfgZAzXFS7o=", + "lastModified": 1730068391, + "narHash": "sha256-jlAGtfMuI8pUUoUmNkm2P/38pOtHZdcAf3Az8XQLAf4=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "22e8de2729f40d29a445c8baeaf22740b8b25daf", + "rev": "6906ac67a1078cf950b8527341e229eeecb5bc30", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1729449015, - "narHash": "sha256-Gf04dXB0n4q0A9G5nTGH3zuMGr6jtJppqdeljxua1fo=", + "lastModified": 1729973466, + "narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "89172919243df199fe237ba0f776c3e3e3d72367", + "rev": "cd3e8833d70618c4eea8df06f95b364b016d4950", "type": "github" }, "original": { @@ -378,11 +378,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1729357638, - "narHash": "sha256-66RHecx+zohbZwJVEPF7uuwHeqf8rykZTMCTqIrOew4=", + "lastModified": 1729973466, + "narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bb8c2cf7ea0dd2e18a52746b2c3a5b0c73b93c22", + "rev": "cd3e8833d70618c4eea8df06f95b364b016d4950", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1729684406, - "narHash": "sha256-ogE0sFjMltcKiuLnP/yBhRfQhw00LE69E1ARgAV18Kg=", + "lastModified": 1730123274, + "narHash": "sha256-kj/6VN+3i7Pwx/TzHTliUNBK0qAFg88mwVjkrBegydg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "148aa178a9ab4c98b55b85d2935f3e1722130c51", + "rev": "9b2bdcc99abfd60ccac074cc63541f757d21ec43", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1729683741, - "narHash": "sha256-IvsiJRTO5+BUAN3+jkWnZZ1h6LbgguHgtTgHGJia2VM=", + "lastModified": 1730123330, + "narHash": "sha256-FiSuH3xb9Yh/3I8x0rz8TXhCHIsNGmZxwLIvQCW2qic=", "owner": "nix-community", "repo": "NUR", - "rev": "b79837253f7eb49c14d8665b656202ef0d78845a", + "rev": "eeb8fce4d316d67fc9baf0169e626f9cb590c4b7", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1729621708, - "narHash": "sha256-NEagK4dENd9Riu8Gc1JHOnrKL/3TmiAINDCAvXqWkL4=", + "lastModified": 1730121131, + "narHash": "sha256-cRRa09+BhJ3L/0HoKR6V9bho6dUQKS5rIjlQp2oYktU=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "f7f9446455084a6333c428371afe23229379cf62", + "rev": "caddf1463524201e73b201fa3fc51b5233bf7d5b", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1729669122, - "narHash": "sha256-SpS3rSwYcskdOpx+jeCv1lcZDdkT/K5qT8dlenCBQ8c=", + "lastModified": 1729999681, + "narHash": "sha256-qm0uCtM9bg97LeJTKQ8dqV/FvqRN+ompyW4GIJruLuw=", "owner": "Mic92", "repo": "sops-nix", - "rev": "a4c33bfecb93458d90f9eb26f1cf695b47285243", + "rev": "1666d16426abe79af5c47b7c0efa82fd31bf4c56", "type": "github" }, "original": { From dd1210bceb1839a76a0c79fae60ade374caf1b9a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 29 Oct 2024 19:53:24 +0100 Subject: [PATCH 279/562] Add ntfy service --- hosts/magnesium/ports.nix | 3 ++- hosts/magnesium/services/default.nix | 1 + hosts/magnesium/services/ntfy.nix | 34 ++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 hosts/magnesium/services/ntfy.nix diff --git a/hosts/magnesium/ports.nix b/hosts/magnesium/ports.nix index 0fa666e..7401906 100644 --- a/hosts/magnesium/ports.nix +++ b/hosts/magnesium/ports.nix @@ -5,9 +5,10 @@ custom-utils.validatePortAttrset { coturn-plain = { tcp = [ 3478 3479 ]; udp = [ 3478 3479 ]; }; coturn-relay.udp.range = [ 49160 49200 ]; coturn-tls = { tcp = [ 5349 5350 ]; udp = [ 5349 5350 ]; }; + forgejo-ssh.tcp = 2022; mosquitto.tcp = 1883; nginx-http.tcp = 80; nginx-https.tcp = 443; + ntfy.tcp = 12474; wireguard-public-ip-tunnel.udp = 51000; - forgejo-ssh.tcp = 2022; } diff --git a/hosts/magnesium/services/default.nix b/hosts/magnesium/services/default.nix index 9737c6c..ab5d185 100644 --- a/hosts/magnesium/services/default.nix +++ b/hosts/magnesium/services/default.nix @@ -4,6 +4,7 @@ ./forgejo.nix ./gitlab-runner.nix ./mosquitto.nix + ./ntfy.nix ./public-ip-tunnel.nix ./webserver.nix ]; diff --git a/hosts/magnesium/services/ntfy.nix b/hosts/magnesium/services/ntfy.nix new file mode 100644 index 0000000..4533c26 --- /dev/null +++ b/hosts/magnesium/services/ntfy.nix @@ -0,0 +1,34 @@ +args@{ lib, pkgs, config, custom-utils, ... }: +let + cfg = config.services.ntfy-sh; + ports = import ../ports.nix args; + domain = "ntfy.jalr.de"; + datadir = "/var/lib/ntfy-sh"; +in +{ + # ntfy access --auth-file /var/lib/private/ntfy-sh/user.db '*' 'up*' write-only + + services.ntfy-sh = { + enable = true; + settings = { + listen-http = "127.0.0.1:${toString ports.ntfy.tcp}"; + base-url = "https://${domain}"; + behind-proxy = true; + #web-root = "disable"; + #auth-default-access = "read-only"; + attachment-cache-dir = "${datadir}/attachments"; + auth-file = "${datadir}/user.db"; + cache-file = "${datadir}/cache-file.db"; + }; + }; + services.nginx.virtualHosts."${domain}" = { + enableACME = true; + forceSSL = true; + kTLS = true; + locations."/" = { + proxyPass = "http://${cfg.settings.listen-http}/"; + recommendedProxySettings = true; + proxyWebsockets = true; + }; + }; +} From 2d07256518c63de5195658c0342cd7780bd8cbaa Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 4 Nov 2024 09:43:51 +0100 Subject: [PATCH 280/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/89e458a3bb3693e769bfb2b2447c3fe72092d498' (2024-10-27) → 'github:nix-community/disko/380847d94ff0fedee8b50ee4baddb162c06678df' (2024-11-03) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/3c3e88f0f544d6bb54329832616af7eb971b6be6' (2024-10-16) → 'github:cachix/git-hooks.nix/af8a16fe5c264f5e9e18bcee2859b40a656876cf' (2024-10-30) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/6906ac67a1078cf950b8527341e229eeecb5bc30' (2024-10-27) → 'github:nixos/nixos-hardware/f6e0cd5c47d150c4718199084e5764f968f1b560' (2024-11-02) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/cd3e8833d70618c4eea8df06f95b364b016d4950' (2024-10-26) → 'github:nixos/nixpkgs/080166c15633801df010977d9d7474b4a6c549d7' (2024-10-30) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/9b2bdcc99abfd60ccac074cc63541f757d21ec43' (2024-10-28) → 'github:NixOS/nixpkgs/fe21dd5ab593b2cd974161e462b2e2b0c8e24bae' (2024-11-04) • Updated input 'nur': 'github:nix-community/NUR/eeb8fce4d316d67fc9baf0169e626f9cb590c4b7' (2024-10-28) → 'github:nix-community/NUR/6720812cce88e6bcd4fd20a081d2c48303e0388c' (2024-11-04) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/caddf1463524201e73b201fa3fc51b5233bf7d5b' (2024-10-28) → 'github:nix-community/poetry2nix/43a898b4d76f7f3f70df77a2cc2d40096bc9d75e' (2024-10-30) • Updated input 'poetry2nix/nix-github-actions': 'github:nix-community/nix-github-actions/622f829f5fe69310a866c8a6cd07e747c44ef820' (2024-07-04) → 'github:nix-community/nix-github-actions/e04df33f62cdcf93d73e9a04142464753a16db67' (2024-10-24) • Updated input 'poetry2nix/treefmt-nix': 'github:numtide/treefmt-nix/4446c7a6fc0775df028c5a3f6727945ba8400e64' (2024-10-03) → 'github:numtide/treefmt-nix/9ef337e492a5555d8e17a51c911ff1f02635be15' (2024-10-28) • Updated input 'sops-nix': 'github:Mic92/sops-nix/1666d16426abe79af5c47b7c0efa82fd31bf4c56' (2024-10-27) → 'github:Mic92/sops-nix/e9b5eef9b51cdf966c76143e13a9476725b2f760' (2024-11-03) • Updated input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/cd3e8833d70618c4eea8df06f95b364b016d4950' (2024-10-26) → 'github:NixOS/nixpkgs/3c2f1c4ca372622cb2f9de8016c9a0b1cbd0f37c' (2024-11-03) --- flake.lock | 66 +++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/flake.lock b/flake.lock index b0dc780..66023b5 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1730045523, - "narHash": "sha256-W5Avk1THhZALXITHGazKfZbIZ5+Bc4nSYvAYHUn96EU=", + "lastModified": 1730675461, + "narHash": "sha256-Mhqz3p/HEiI/zxBJWO57LYQf6gGlJB0tci6fiVXLjd8=", "owner": "nix-community", "repo": "disko", - "rev": "89e458a3bb3693e769bfb2b2447c3fe72092d498", + "rev": "380847d94ff0fedee8b50ee4baddb162c06678df", "type": "github" }, "original": { @@ -275,11 +275,11 @@ ] }, "locked": { - "lastModified": 1720066371, - "narHash": "sha256-uPlLYH2S0ACj0IcgaK9Lsf4spmJoGejR9DotXiXSBZQ=", + "lastModified": 1729742964, + "narHash": "sha256-B4mzTcQ0FZHdpeWcpDYPERtyjJd/NIuaQ9+BV1h+MpA=", "owner": "nix-community", "repo": "nix-github-actions", - "rev": "622f829f5fe69310a866c8a6cd07e747c44ef820", + "rev": "e04df33f62cdcf93d73e9a04142464753a16db67", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1729104314, - "narHash": "sha256-pZRZsq5oCdJt3upZIU4aslS9XwFJ+/nVtALHIciX/BI=", + "lastModified": 1730302582, + "narHash": "sha256-W1MIJpADXQCgosJZT8qBYLRuZls2KSiKdpnTVdKBuvU=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "3c3e88f0f544d6bb54329832616af7eb971b6be6", + "rev": "af8a16fe5c264f5e9e18bcee2859b40a656876cf", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1730068391, - "narHash": "sha256-jlAGtfMuI8pUUoUmNkm2P/38pOtHZdcAf3Az8XQLAf4=", + "lastModified": 1730537918, + "narHash": "sha256-GJB1/aaTnAtt9sso/EQ77TAGJ/rt6uvlP0RqZFnWue8=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "6906ac67a1078cf950b8527341e229eeecb5bc30", + "rev": "f6e0cd5c47d150c4718199084e5764f968f1b560", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1729973466, - "narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=", + "lastModified": 1730327045, + "narHash": "sha256-xKel5kd1AbExymxoIfQ7pgcX6hjw9jCgbiBjiUfSVJ8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "cd3e8833d70618c4eea8df06f95b364b016d4950", + "rev": "080166c15633801df010977d9d7474b4a6c549d7", "type": "github" }, "original": { @@ -378,11 +378,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1729973466, - "narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=", + "lastModified": 1730602179, + "narHash": "sha256-efgLzQAWSzJuCLiCaQUCDu4NudNlHdg2NzGLX5GYaEY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cd3e8833d70618c4eea8df06f95b364b016d4950", + "rev": "3c2f1c4ca372622cb2f9de8016c9a0b1cbd0f37c", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1730123274, - "narHash": "sha256-kj/6VN+3i7Pwx/TzHTliUNBK0qAFg88mwVjkrBegydg=", + "lastModified": 1730707924, + "narHash": "sha256-B1VgouTS2j2pFsYPSAQWGees242Gp4iyCdapjK3lPpg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9b2bdcc99abfd60ccac074cc63541f757d21ec43", + "rev": "fe21dd5ab593b2cd974161e462b2e2b0c8e24bae", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1730123330, - "narHash": "sha256-FiSuH3xb9Yh/3I8x0rz8TXhCHIsNGmZxwLIvQCW2qic=", + "lastModified": 1730708002, + "narHash": "sha256-I57tjJe+Yo2xLW1jSmOFFCf8Wk8Wr0hpoFGfPMTjhTs=", "owner": "nix-community", "repo": "NUR", - "rev": "eeb8fce4d316d67fc9baf0169e626f9cb590c4b7", + "rev": "6720812cce88e6bcd4fd20a081d2c48303e0388c", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1730121131, - "narHash": "sha256-cRRa09+BhJ3L/0HoKR6V9bho6dUQKS5rIjlQp2oYktU=", + "lastModified": 1730284601, + "narHash": "sha256-eHYcKVLIRRv3J1vjmxurS6HVdGphB53qxUeAkylYrZY=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "caddf1463524201e73b201fa3fc51b5233bf7d5b", + "rev": "43a898b4d76f7f3f70df77a2cc2d40096bc9d75e", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1729999681, - "narHash": "sha256-qm0uCtM9bg97LeJTKQ8dqV/FvqRN+ompyW4GIJruLuw=", + "lastModified": 1730605784, + "narHash": "sha256-1NveNAMLHbxOg0BpBMSVuZ2yW2PpDnZLbZ25wV50PMc=", "owner": "Mic92", "repo": "sops-nix", - "rev": "1666d16426abe79af5c47b7c0efa82fd31bf4c56", + "rev": "e9b5eef9b51cdf966c76143e13a9476725b2f760", "type": "github" }, "original": { @@ -591,11 +591,11 @@ ] }, "locked": { - "lastModified": 1727984844, - "narHash": "sha256-xpRqITAoD8rHlXQafYZOLvUXCF6cnZkPfoq67ThN0Hc=", + "lastModified": 1730120726, + "narHash": "sha256-LqHYIxMrl/1p3/kvm2ir925tZ8DkI0KA10djk8wecSk=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "4446c7a6fc0775df028c5a3f6727945ba8400e64", + "rev": "9ef337e492a5555d8e17a51c911ff1f02635be15", "type": "github" }, "original": { From 7f03078b584d96dea7b44a0879d1a3d5648db8e4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 7 Nov 2024 16:41:02 +0100 Subject: [PATCH 281/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/380847d94ff0fedee8b50ee4baddb162c06678df' (2024-11-03) → 'github:nix-community/disko/856a2902156ba304efebd4c1096dbf7465569454' (2024-11-04) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/af8a16fe5c264f5e9e18bcee2859b40a656876cf' (2024-10-30) → 'github:cachix/git-hooks.nix/d70155fdc00df4628446352fc58adc640cd705c2' (2024-11-05) • Updated input 'nix-pre-commit-hooks/nixpkgs-stable': 'github:NixOS/nixpkgs/194846768975b7ad2c4988bdb82572c00222c0d7' (2024-07-07) → 'github:NixOS/nixpkgs/d063c1dd113c91ab27959ba540c0d9753409edf3' (2024-11-04) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/f6e0cd5c47d150c4718199084e5764f968f1b560' (2024-11-02) → 'github:nixos/nixos-hardware/e1cc1f6483393634aee94514186d21a4871e78d7' (2024-11-06) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/080166c15633801df010977d9d7474b4a6c549d7' (2024-10-30) → 'github:nixos/nixpkgs/dba414932936fde69f0606b4f1d87c5bc0003ede' (2024-11-06) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/fe21dd5ab593b2cd974161e462b2e2b0c8e24bae' (2024-11-04) → 'github:NixOS/nixpkgs/a46925097143c5535a814c0d9ca53b29fb2a5d1d' (2024-11-07) • Updated input 'nur': 'github:nix-community/NUR/6720812cce88e6bcd4fd20a081d2c48303e0388c' (2024-11-04) → 'github:nix-community/NUR/bfd50d178dff545abb87dbf0663a3bd7abfad92d' (2024-11-07) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/43a898b4d76f7f3f70df77a2cc2d40096bc9d75e' (2024-10-30) → 'github:nix-community/poetry2nix/a1925e0848c62ab542b0b93b1b22875ee6efcb3d' (2024-11-07) • Updated input 'sops-nix': 'github:Mic92/sops-nix/e9b5eef9b51cdf966c76143e13a9476725b2f760' (2024-11-03) → 'github:Mic92/sops-nix/c5ae1e214ff935f2d3593187a131becb289ea639' (2024-11-06) --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index 66023b5..20d9f7f 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1730675461, - "narHash": "sha256-Mhqz3p/HEiI/zxBJWO57LYQf6gGlJB0tci6fiVXLjd8=", + "lastModified": 1730751873, + "narHash": "sha256-sdY29RWz0S7VbaoTwSy6RummdHKf0wUTaBlqPxrtvmQ=", "owner": "nix-community", "repo": "disko", - "rev": "380847d94ff0fedee8b50ee4baddb162c06678df", + "rev": "856a2902156ba304efebd4c1096dbf7465569454", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1730302582, - "narHash": "sha256-W1MIJpADXQCgosJZT8qBYLRuZls2KSiKdpnTVdKBuvU=", + "lastModified": 1730814269, + "narHash": "sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF+06nOg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "af8a16fe5c264f5e9e18bcee2859b40a656876cf", + "rev": "d70155fdc00df4628446352fc58adc640cd705c2", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1730537918, - "narHash": "sha256-GJB1/aaTnAtt9sso/EQ77TAGJ/rt6uvlP0RqZFnWue8=", + "lastModified": 1730919458, + "narHash": "sha256-yMO0T0QJlmT/x4HEyvrCyigGrdYfIXX3e5gWqB64wLg=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "f6e0cd5c47d150c4718199084e5764f968f1b560", + "rev": "e1cc1f6483393634aee94514186d21a4871e78d7", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730327045, - "narHash": "sha256-xKel5kd1AbExymxoIfQ7pgcX6hjw9jCgbiBjiUfSVJ8=", + "lastModified": 1730883749, + "narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "080166c15633801df010977d9d7474b4a6c549d7", + "rev": "dba414932936fde69f0606b4f1d87c5bc0003ede", "type": "github" }, "original": { @@ -362,11 +362,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1720386169, - "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", + "lastModified": 1730741070, + "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", + "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1730707924, - "narHash": "sha256-B1VgouTS2j2pFsYPSAQWGees242Gp4iyCdapjK3lPpg=", + "lastModified": 1730994033, + "narHash": "sha256-UL/aB8nufAq7tLPJAuyT380IqiZXAdnp4t+BrNUxWYo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fe21dd5ab593b2cd974161e462b2e2b0c8e24bae", + "rev": "a46925097143c5535a814c0d9ca53b29fb2a5d1d", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1730708002, - "narHash": "sha256-I57tjJe+Yo2xLW1jSmOFFCf8Wk8Wr0hpoFGfPMTjhTs=", + "lastModified": 1730990741, + "narHash": "sha256-lfp3sBCEWsj/L83WjUvsBwusU0YX+BhajdC4VDdwknE=", "owner": "nix-community", "repo": "NUR", - "rev": "6720812cce88e6bcd4fd20a081d2c48303e0388c", + "rev": "bfd50d178dff545abb87dbf0663a3bd7abfad92d", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1730284601, - "narHash": "sha256-eHYcKVLIRRv3J1vjmxurS6HVdGphB53qxUeAkylYrZY=", + "lastModified": 1730961552, + "narHash": "sha256-TjfCllZmU8U2Bs/ENsrii7GCHBDkorPsmZ0d97DcaAQ=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "43a898b4d76f7f3f70df77a2cc2d40096bc9d75e", + "rev": "a1925e0848c62ab542b0b93b1b22875ee6efcb3d", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1730605784, - "narHash": "sha256-1NveNAMLHbxOg0BpBMSVuZ2yW2PpDnZLbZ25wV50PMc=", + "lastModified": 1730883027, + "narHash": "sha256-pvXMOJIqRW0trsW+FzRMl6d5PbsM4rWfD5lcKCOrrwI=", "owner": "Mic92", "repo": "sops-nix", - "rev": "e9b5eef9b51cdf966c76143e13a9476725b2f760", + "rev": "c5ae1e214ff935f2d3593187a131becb289ea639", "type": "github" }, "original": { From 525be5d0d0e74fa8412538151b0eae6d560cdeec Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 7 Nov 2024 21:28:23 +0100 Subject: [PATCH 282/562] Add wshowkeys --- modules/sway.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/sway.nix b/modules/sway.nix index a35ca05..181f95d 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -28,4 +28,6 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { }; icons.enable = true; }; + + programs.wshowkeys.enable = true; } From 27309cea2c4023163f2a3b7d92dd66ee8d962ec9 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 8 Nov 2024 14:42:26 +0100 Subject: [PATCH 283/562] Make tree-style-tabs close confirmation floating --- users/jalr/modules/sway/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index b53f2fb..e878052 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -286,6 +286,13 @@ in criteria = { app_id = "firefox"; title = "Firefox — Sharing Indicator"; }; command = "kill"; } + { + criteria = { + app_id = "firefox-esr"; + title = "Extension: \\\\(Tree Style Tab\\\\) - Close tabs\\\\? — Mozilla Firefox"; + }; + command = "floating enable"; + } ]; window.border = 2; From e573cde83fda041d7d1f68bf8770827eeed72b02 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 8 Nov 2024 18:11:29 +0100 Subject: [PATCH 284/562] Fix handling of secrets --- hosts/iron/services/esphome/default.nix | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/hosts/iron/services/esphome/default.nix b/hosts/iron/services/esphome/default.nix index 6b08885..0e81496 100644 --- a/hosts/iron/services/esphome/default.nix +++ b/hosts/iron/services/esphome/default.nix @@ -2,9 +2,6 @@ args@{ lib, pkgs, config, custom-utils, ... }: let ports = import ../../ports.nix args; cfg = config.services.esphome; - devices = [ - ./yeelight-meteorite.yaml - ]; cfgdir = pkgs.stdenvNoCC.mkDerivation { name = "esphome-config"; src = ./devices; @@ -22,6 +19,7 @@ in { sops.secrets.esphome = { sopsFile = ../../secrets.yaml; + restartUnits = [ config.systemd.services.esphome.name ]; }; services.esphome = { @@ -29,11 +27,6 @@ in address = "127.0.0.1"; port = ports.esphome.tcp; package = pkgs.esphome; - #package = pkgs.esphome.overrideAttrs (attrs: { - # makeWrapperArgs = attrs.makeWrapperArgs ++ [ - # "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ pkgs.stdenv.cc.cc.lib ]}" - # ]; - #}); }; systemd.services.esphome = { @@ -41,13 +34,13 @@ in "PLATFORMIO_CORE_DIR" = lib.mkForce "/tmp/.platformio"; }; serviceConfig = { - BindPaths = [ - "/var/lib/esphome" - "/var/lib/private/esphome" - ]; BindReadOnlyPaths = [ "/nix/store" - "${cfgdir}" + cfgdir + "%d/secrets.yaml:/var/lib/esphome/secrets.yaml" + ]; + BindPaths = [ + "/var/lib/esphome" ]; DeviceAllow = [ "char-ttyACM rw" @@ -55,8 +48,7 @@ in "char-ttyUSB rw" ]; ExecStartPre = [ - "${pkgs.rsync}/bin/rsync -a --delete --exclude=.esphome --exclude=.platformio --exclude=.gitignore '${cfgdir}/' '/var/lib/esphome/'" - "${pkgs.coreutils}/bin/ln -snf '%d/secrets.yaml' '/var/lib/esphome/secrets.yaml'" + "${pkgs.rsync}/bin/rsync -a --delete --checksum --exclude secrets.yaml --exclude=.esphome --exclude=.platformio --exclude=.gitignore '${cfgdir}/' '/var/lib/esphome/'" ]; LoadCredential = "secrets.yaml:${config.sops.secrets.esphome.path}"; PrivateTmp = true; From a7f19adb605f0e6d63a57eaa66feeb83f5375c4d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 8 Nov 2024 20:27:30 +0100 Subject: [PATCH 285/562] Implement staircase lighting --- .../esphome/devices/tuersprechanlage.yaml | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/hosts/iron/services/esphome/devices/tuersprechanlage.yaml b/hosts/iron/services/esphome/devices/tuersprechanlage.yaml index cb676ad..80a1843 100644 --- a/hosts/iron/services/esphome/devices/tuersprechanlage.yaml +++ b/hosts/iron/services/esphome/devices/tuersprechanlage.yaml @@ -32,7 +32,7 @@ wifi: binary_sensor: - platform: gpio name: Etagenklingel - id: etagenklingel + id: floor_bell pin: number: GPIO16 mode: @@ -43,7 +43,7 @@ binary_sensor: - platform: gpio name: Treppenlicht - id: treppenlicht + id: staircase_light pin: number: GPIO18 mode: @@ -52,19 +52,39 @@ binary_sensor: filters: - invert - delayed_off: 10s + on_press: + then: + - output.turn_on: output_staircase_light_ssr + - delay: 200ms + - output.turn_off: output_staircase_light_ssr output: - platform: gpio pin: GPIO15 - id: btn_door + id: output_door_opener + - platform: ledc + pin: + number: GPIO33 + inverted: true + id: output_staircase_light_ssr + frequency: 50000 + min_power: 0 + max_power: 0.12 button: - platform: template name: "Türöffner" - id: tueroeffner + id: btn_tueroeffner icon: mdi:lock-open on_press: - - logger.log: "Button pressed" - - output.turn_on: btn_door + - output.turn_on: output_door_opener - delay: 500ms - - output.turn_off: btn_door + - output.turn_off: output_door_opener + - platform: template + name: "Treppenlicht" + id: btn_staircase_light + icon: mdi:stairs + on_press: + - output.turn_on: output_staircase_light_ssr + - delay: 200ms + - output.turn_off: output_staircase_light_ssr From 8c30072409515440926ef6acfc480b73e4be4724 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 8 Nov 2024 20:28:16 +0100 Subject: [PATCH 286/562] Add wifi signal sensor --- hosts/iron/services/esphome/devices/badspiegel.yaml | 3 +++ .../services/esphome/devices/chinafrickeldeckenleuchte.yaml | 5 +++++ hosts/iron/services/esphome/devices/fussbodenheizung.yaml | 3 +++ hosts/iron/services/esphome/devices/kueche-leiste.yaml | 3 +++ .../services/esphome/devices/led-panel-schreibtisch.yaml | 5 +++++ hosts/iron/services/esphome/devices/pflanzenleuchte.yaml | 5 +++++ hosts/iron/services/esphome/devices/tuerschloss.yaml | 5 +++++ hosts/iron/services/esphome/devices/tuersprechanlage.yaml | 5 +++++ hosts/iron/services/esphome/devices/waschmaschine.yaml | 3 +++ hosts/iron/services/esphome/devices/yeelight-meteorite.yaml | 5 +++++ 10 files changed, 42 insertions(+) diff --git a/hosts/iron/services/esphome/devices/badspiegel.yaml b/hosts/iron/services/esphome/devices/badspiegel.yaml index 8041d2e..2ee052b 100644 --- a/hosts/iron/services/esphome/devices/badspiegel.yaml +++ b/hosts/iron/services/esphome/devices/badspiegel.yaml @@ -90,6 +90,9 @@ esp32_touch: sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s - platform: dht pin: GPIO22 temperature: diff --git a/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml b/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml index 0edcf9f..802e77f 100644 --- a/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml +++ b/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml @@ -5,6 +5,11 @@ esp8266: logger: +sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s + bp5758d: data_pin: GPIO4 clock_pin: GPIO5 diff --git a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml index 1b1eff0..ac114f4 100644 --- a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml +++ b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml @@ -56,6 +56,9 @@ switch: icon: "mdi:electric-switch" sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s - platform: dht pin: GPIO2 temperature: diff --git a/hosts/iron/services/esphome/devices/kueche-leiste.yaml b/hosts/iron/services/esphome/devices/kueche-leiste.yaml index de9d8cb..3b8f396 100644 --- a/hosts/iron/services/esphome/devices/kueche-leiste.yaml +++ b/hosts/iron/services/esphome/devices/kueche-leiste.yaml @@ -62,6 +62,9 @@ light: gamma_correct: 0 sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s - platform: dht pin: GPIO5 temperature: diff --git a/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml b/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml index 0141c46..737d62e 100644 --- a/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml +++ b/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml @@ -39,6 +39,11 @@ esp32: logger: +sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s + output: - platform: ledc pin: GPIO1 diff --git a/hosts/iron/services/esphome/devices/pflanzenleuchte.yaml b/hosts/iron/services/esphome/devices/pflanzenleuchte.yaml index d961943..d66b2b2 100644 --- a/hosts/iron/services/esphome/devices/pflanzenleuchte.yaml +++ b/hosts/iron/services/esphome/devices/pflanzenleuchte.yaml @@ -27,6 +27,11 @@ wifi: fast_connect: On output_power: 8.5 +sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s + output: - platform: ledc pin: GPIO0 diff --git a/hosts/iron/services/esphome/devices/tuerschloss.yaml b/hosts/iron/services/esphome/devices/tuerschloss.yaml index b662b56..71863cf 100644 --- a/hosts/iron/services/esphome/devices/tuerschloss.yaml +++ b/hosts/iron/services/esphome/devices/tuerschloss.yaml @@ -27,6 +27,11 @@ wifi: fast_connect: On output_power: 8.5 +sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s + output: - platform: gpio pin: diff --git a/hosts/iron/services/esphome/devices/tuersprechanlage.yaml b/hosts/iron/services/esphome/devices/tuersprechanlage.yaml index 80a1843..cc0ede7 100644 --- a/hosts/iron/services/esphome/devices/tuersprechanlage.yaml +++ b/hosts/iron/services/esphome/devices/tuersprechanlage.yaml @@ -29,6 +29,11 @@ wifi: power_save_mode: none output_power: 10 +sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s + binary_sensor: - platform: gpio name: Etagenklingel diff --git a/hosts/iron/services/esphome/devices/waschmaschine.yaml b/hosts/iron/services/esphome/devices/waschmaschine.yaml index 3e4babb..82e25a3 100644 --- a/hosts/iron/services/esphome/devices/waschmaschine.yaml +++ b/hosts/iron/services/esphome/devices/waschmaschine.yaml @@ -27,6 +27,9 @@ external_components: components: [ miele_w433 ] sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s - platform: miele_w433 enable_7segment_pin: 27 clock_pin: 14 diff --git a/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml b/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml index 842fceb..e6b1a4b 100644 --- a/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml +++ b/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml @@ -36,6 +36,11 @@ wifi: gateway: 10.20.0.1 subnet: 255.255.240.0 +sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s + output: - platform: ledc pin: GPIO19 From 64dff5397b1995839a97bd10372bedd8ce66b863 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 8 Nov 2024 20:29:14 +0100 Subject: [PATCH 287/562] Reduce on/off times --- .../esphome/devices/fussbodenheizung.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml index ac114f4..7ad5cef 100644 --- a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml +++ b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml @@ -87,8 +87,8 @@ climate: name: "Bad" sensor: temperature_bathroom humidity_sensor: humidity_bathroom - min_heating_off_time: 300s - min_heating_run_time: 300s + min_heating_off_time: 1s + min_heating_run_time: 1s min_idle_time: 30s heat_action: - switch.turn_on: relay_1 @@ -125,8 +125,8 @@ climate: name: "West" sensor: temperature_kitchen humidity_sensor: humidity_kitchen - min_heating_off_time: 300s - min_heating_run_time: 300s + min_heating_off_time: 1s + min_heating_run_time: 1s min_idle_time: 30s heat_action: - switch.turn_on: relay_3 @@ -143,8 +143,8 @@ climate: name: "Mitte" sensor: temperature_local humidity_sensor: humidity - min_heating_off_time: 300s - min_heating_run_time: 300s + min_heating_off_time: 1s + min_heating_run_time: 1s min_idle_time: 30s heat_action: - switch.turn_on: relay_4 @@ -161,8 +161,8 @@ climate: name: "Ost" sensor: temperature_local # FIXME #humidity_sensor: - min_heating_off_time: 300s - min_heating_run_time: 300s + min_heating_off_time: 1s + min_heating_run_time: 1s min_idle_time: 30s heat_action: - switch.turn_on: relay_5 From 15b3b572ff444cabba3fb3b466ac5ed63089efbf Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 8 Nov 2024 20:30:03 +0100 Subject: [PATCH 288/562] Add bedroom --- .../esphome/devices/fussbodenheizung.yaml | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml index 7ad5cef..616f5a5 100644 --- a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml +++ b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml @@ -103,24 +103,26 @@ climate: default_target_temperature_low: 20 °C - name: abwesend default_target_temperature_low: 16 °C - #- platform: thermostat - # name: "Schlafzimmer" - # #sensor: heating_livingroom - # #humidity_sensor: - # min_heating_off_time: 300s - # min_heating_run_time: 300s - # min_idle_time: 30s - # heat_action: - # - switch.turn_on: relay_2 - # idle_action: - # - switch.turn_off: relay_2 - # default_preset: zuhause - # on_boot_restore_from: memory - # preset: - # - name: zuhause - # default_target_temperature_low: 16 °C - # - name: abwesend - # default_target_temperature_low: 15 °C + - platform: thermostat + name: "Schlafzimmer" + #sensor: heating_livingroom + #humidity_sensor: + sensor: temperature_local # FIXME + humidity_sensor: humidity # FIXME + min_heating_off_time: 1s + min_heating_run_time: 1s + min_idle_time: 30s + heat_action: + - switch.turn_on: relay_2 + idle_action: + - switch.turn_off: relay_2 + default_preset: zuhause + on_boot_restore_from: memory + preset: + - name: zuhause + default_target_temperature_low: 16 °C + - name: abwesend + default_target_temperature_low: 15 °C - platform: thermostat name: "West" sensor: temperature_kitchen From 798d68b0f70ecc69ebc582ef813c07d97a750ecc Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 8 Nov 2024 21:53:12 +0100 Subject: [PATCH 289/562] Add pinspot --- hosts/iron/secrets.yaml | 6 +-- .../services/esphome/devices/pinspot.yaml | 52 +++++++++++++++++++ 2 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 hosts/iron/services/esphome/devices/pinspot.yaml diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 4e19154..cfc9d5a 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -10,7 +10,7 @@ dkim-keys: synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] matrix-sliding-sync: ENC[AES256_GCM,data:CmR8Q5NL1m+eixenK4u1n3MfVh49/Q3ZIRmWfSbuFMr3u79rIGrtFf2EjaThCwBHQyXdYw1wyTouxhGZql1Fcp/HYma8u4w5nJOaJa1TXg==,iv:/kFqA/+kpCkhHZKJdhadjH11pZwh4MFiQPjY96t8M5k=,tag:aZkDCcbtonHMTv4TdBv1sQ==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] -esphome: ENC[AES256_GCM,data:ufIZkZo1aP/Th/8a+9srkJBqLqPQI/ymElIEBmTKzqsJ3HE/mx9QJ1aH0vGVed9W/wSJ+7+huFpB+pNAebJMohK/fAmAVG3lzgT0wKWw8g4u33VHb6X8FIW6q1+CYRnOCQsocgM4EX26YfzaxVpw9P4PF/abwB1bVzr9xnEL2JdJfstzxnR70dKO88WTolykysc443iDW80i0scH+sCh8JIfDrV+V0l3jT+woAeTw1VA0hFa5x9i3tdfrHpzc/sN1/OW6F1CsMVS2pwUTkr7pKp5nfjxhEPi94iLMmakm0XWPZpay2213FQEUYiRqCIGmD1Oiyq0nSVcOAkc66TNwsqrdPCkCL8OPTXuTd+yIfAuU3267kUMNcN2A9kqGMx4Inj8JGlmvxuoQueuXIA4gvVFhJFBdovpl10HY/YkG/cGM0gazfF2+5xG93RgD9Uryq1g61XTFOkOaH7XtGs8Q13xnnXVwfq2pK/vnx9kQkgXJJQRU1Ng8PAg+Rw1VK6bzVz5ugj6q1ei56orNy4A8FU1z1aGyChfPT3XPaDwLr0pEXvc2Vz/6CxAosSpNHIQ6fO0XBM7nvIs/2jHZssXSVo2iwYRZsgZft60cg0FfBmDyc3QH6pVjYhoQGsBlfQt5CtW7XX3rJjQTcDLfzUlO8Ykax7TXZKnDcvtNonRm45bmV+1CqS9KLrBHouWN0axtweabAVW8dld9EnL3CrclE/RbTI0nPOR00S+Ip7wNuBto30yTACxaPHYF79izHu4rQjmm2N5Jt+nI8maEVva6IbAog16NUw6fYDaMwBDeSszBZm0BwNMf36EP/Mcp+MXrBfP1kOYe6HGjftMRDky83XYvP6Cx7FJcPXIZdsMQydxsXB3LKroFqoS2HsHBnCgQbbraQ5UWi40vKXANlKbgFcutqkATvoPW6Hbh07vfiLVfDeuHU9DUCFlgK7KHPWk/g+Uo+TUmgTVKNhbGU/vFu/9h4kIrbf/ocqL/tyMjwA5Yp9e0rQCez8w5Zqfbtqm4N1WB518Q7p52r8C+yLBAua7yB0gAc7SENXWFafkbHClchZXi3c0hY64YvuweDp8G/bPFT/yLuY/yBvA3F2G3CxZXzCMvhMVQfm2yzJeOL20vWumZ8LuIaXJ/13AzLp+lUrc8RmJvU/Hrp6xsEqzXz34qMiBNUR1BKjNAS86WJ1rzD3QtejeETGDwsw016jNbyIMcShgxiEMHnD6HXzWnfTv2fO5xICiAG/VMm5h+vC3MweW2XO01P3O0/Rq/OSy3R8ZlEFErlhR1HiXhc2CdxuuxqDySi0/rP/Jpxf25Zi8mY9YBTFlV0T9ApzJoTwlobMmmxHmqq+vQSKAxLq0lJ/bpO+8utchHbnQNUICveCkX4w+rK9Vnls3zbiLTBnsf+J4y5zpLZ5HkDCUNcEnD29ZR30IYoBTLUG3PlfyH++rLl5ynW5QKUWLnUdjvf9ZwS2veFAZw6tfHelzjkZ5tps5BkjS8YAi/x70Jw4qs3fzZudq6Lej4fsMdkBnYSSN2s7Sc3A1,iv:jSR/M4KS+cZMQgtTZWtPcpmKFD5QNr7s8ClAbXzpR2s=,tag:sp3BnZi+b9WuIiCPapG6Bw==,type:str] +esphome: ENC[AES256_GCM,data:QyPrVPhqvaCfx7oRmJ14EFpEIpQRwlLwTABK9qTP/wYcoflFsorNAmIoTiX/4KziQl050ByztnjIhrsxFx2dN6dv+RiLVWP+k0G63rfeS5gxe8QSgzsEtWWaUk3DE87i20DUusj1/B6yUsMApMohjaufuVzReL2MtVSVgtDUS6nVqGnRubrdujAxyRWvjQtamWBa1fjz39U876F10KMUYB+iGtObfNJGH18lAQ1arKEUQQSl8u1vNJuZiKqFhzxcu/IF6AhJgcKmCi2nrcEgbrv4ZwOcJ7+VG29qY7C4LCeAU4wOWJmtnCSf9osSwzR5hFco46L3Y8k0XXEOiEAJl+8ZLNKqQJpShh9wioMrj9XNpX/PvGCpBLTHsXTCGktDdbK/RLEGZnnL0s6If7Qs0XTwWZEe0q4IsltfdWJdZQWbvlY58ooUkK55wml/SlpuHgSdY6pOp/bOnBwvIrh/962DWtSXDxNnvps4Qy0eRUtpS2G6+rLIXXkq7KlSUg/A5XRNWbLGX5u7pJuvJ5xlldFW+tb1rqyrKXGIGra3Y6Ib4Z17znmajMSIeQItChj8UsOqlcHaCI5s8kDFjafJfpTTtAm0mj2cBFYmWHC/WR1YAtd2mrffr258CShtO+eeAqhSSTopIL637udKaY1Vto1dVReTmK24ANopQOaxnTtFjBdQaeluP4PAWrAGADBio1iwjsWIQlr0vnMjSBd0JcnW0Q3i+/5zhQfaEzZ6FQXOs05+l7ryLrGgBbyM2FRLTuAWBsv5yv3lz8FiSGVNaLMW5rofZpFvX0oa7P9HyU/RIpUzx307VBsIJlzrW2NgWvc9iLHLHWJDa7xcemGTvZDp/0BujYHeYYfVViPtVcCicLvDLikgtJRlkdPmyRoMSx0o3taoPsYoVZielo5EZpLiaLwuCNnCk2fRxAgPUa4+zGhZc2Z/BrOvK7sxcyIXEYRrZ8Ti2iNQJthNNb1CzSUXpdpSZtFi1jjiC45V0dlg/lSqrkRjyA9DpGbegt3WpO/6X+uc9vSAgR4f/0xNngTKzCfFV+fyUJXffpje9fQhQnecsTDjjc3aLiESqc3mx8MP6gHI9fS8z8PU72t+4tJxe8hjo7VWlInOVKV9zp9Tn+P4Ez1MebPJRlrwHGSVFsPhKct+CgzE+Q0B3vvcWyQfdJHeFCPWsTWmcCUoJf61fQO/3JwZI8YE3HET+NsRoxVHTl099LzWWCbrfT4uN3+O3VQbceLM+KxKCLVGNEHKlF8NHCIk4KCWhKNwhXvuMjf4GgtYbENFn1QbmiQFpYfIl8FA8PZVk7x+dzuROL4NpIKaBfrg34LQnxFpc2YCBnEsmsJVPybR5ZHC8eDL7JdVSg+FhvOxzBkvCeQjG8746/t0HJYPucisFCmP1isGpcn8Eku+BT/2XocHsUwpyo+RQoruWKwkLtnCHeaGSszqWzugSGXU4b4T2HB2yU9ORpt6uP+wbtc49GeMHrUGiO+w6BQm3TzPEZ0XMh4+8iayGhbd8T213C72sHpo5eCbv7C2zE/3dxHr2/+xtfstQFRuMPhq/r/4aqkeGKTwWEBcOwD1knlnbXo5OZsdvX9SeqF+mno/uDxZW00QqaWiQz89SWLGHtC4gjbE2wU2IpiGZMTOtNieOrjjCfdX3ZkrhA==,iv:Qn0nDrXRCOJaTJJBK6/PEGbhS1pbB0dTZYakgha5wJQ=,tag:8GeYWlsxgAGfFL61V5CwXg==,type:str] home-assistant: ENC[AES256_GCM,data:wcFMxDdRCHf/shO9v2WaGgrsa9J2WP62xFs=,iv:9ckeIO62cFZUo8fPyQj445CrJVTooNlwLapM/oTsrkk=,tag:mlfxtXDPsB3T79P9BX9oJQ==,type:str] sops: kms: [] @@ -27,8 +27,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-09-11T16:10:31Z" - mac: ENC[AES256_GCM,data:7STJaln+9X6xZFAyLSoMCw2PKNiRr4GNhxGbZRPRf+nKfkFh7wJRS3YWVrxd9iOonSPsuHfPnBrAPiq7ILXqwfjNcyf2HtOIPxHz0utE6b0X7KvEwmLSRMOQG9rpsETE5UBQ+DgtU9IwZzTXgh9CGZpHWQAPeOI+lK4OKLlXvkk=,iv:E++ECn4SJy43lW5RWxjSDc7dj0LWDXIuO+5fVFE3+zU=,tag:QFvao9PWSllzXXhGwFQgrw==,type:str] + lastmodified: "2024-11-08T17:10:15Z" + mac: ENC[AES256_GCM,data:bCkqwd22O4K1Ivix4JWEY+RAiPB+8NP3y2KrDEeGXR3R03t6Xi2S+tXLKh9MBp0/jatUS2COs1tY0+hL2quC7rjpv25hufA+7oHA+jASgglD+5lKnc1OGpvBt4eMCszYorIKOP55glLLMn8WmYAPQm5PDPnfNtwZwEs1zmwffjA=,iv:YR38y2za5FrTr+t7hminVStO9/Z9zFbKoBRtuzrl+rI=,tag:ci5MZ2cjRjc8HYKJy11Jbg==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/esphome/devices/pinspot.yaml b/hosts/iron/services/esphome/devices/pinspot.yaml new file mode 100644 index 0000000..98fc572 --- /dev/null +++ b/hosts/iron/services/esphome/devices/pinspot.yaml @@ -0,0 +1,52 @@ +esphome: + name: "pinspot" + friendly_name: "Pinspot" + platformio_options: + board_build.flash_mode: dio + +esp32: + board: esp32-c3-devkitm-1 + variant: ESP32C3 + framework: + type: esp-idf + +logger: + +api: + encryption: + key: !secret apikey_pinspot + +ota: + password: !secret otapass_pinspot + +wifi: + ssid: !secret wifi_ssid_bw + password: !secret wifi_password_bw + domain: .iot.bw.jalr.de + enable_on_boot: True + fast_connect: On + output_power: 8.5 + +sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s + +output: + - platform: ledc + pin: GPIO1 + id: output_led_brightness + min_power: 0.028 + zero_means_zero: true + - platform: ledc + pin: GPIO4 + inverted: true + id: output_led_colortemp + +light: + - platform: color_temperature + name: "Pinspot" + color_temperature: output_led_colortemp + brightness: output_led_brightness + cold_white_color_temperature: 6000 K + warm_white_color_temperature: 2700 K From 715276f7c7c2cb39bdd89be84286b5439d652f99 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 8 Nov 2024 22:16:19 +0100 Subject: [PATCH 290/562] Reduce opacity --- users/jalr/modules/alacritty.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/users/jalr/modules/alacritty.nix b/users/jalr/modules/alacritty.nix index 3c82e32..77f3b5b 100644 --- a/users/jalr/modules/alacritty.nix +++ b/users/jalr/modules/alacritty.nix @@ -114,7 +114,7 @@ let scrolling.history = 100000; - window.opacity = 0.95; + window.opacity = 0.9; }; settings = { dark = commonSettings // { From bae82fdec30933a80324455b83ecec7a89006565 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 8 Nov 2024 22:17:18 +0100 Subject: [PATCH 291/562] Install qbittorrent from master as the package on 24.05 channel has a vulnerability --- modules/qbittorrent/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/qbittorrent/default.nix b/modules/qbittorrent/default.nix index 810685b..6065479 100644 --- a/modules/qbittorrent/default.nix +++ b/modules/qbittorrent/default.nix @@ -59,7 +59,7 @@ in serviceConfig = { Restart = "always"; - ExecStart = "${pkgs.qbittorrent-nox}/bin/qbittorrent-nox --profile=${cfg.configDir} --webui-port=${toString cfg.webuiPort}"; + ExecStart = "${pkgs.master.qbittorrent-nox}/bin/qbittorrent-nox --profile=${cfg.configDir} --webui-port=${toString cfg.webuiPort}"; User = "qbittorrent"; Group = "qbittorrent"; From f881e0c22d6952d43de4e9f86d85878527e7363e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 10 Nov 2024 18:31:36 +0100 Subject: [PATCH 292/562] Remove raumtemp_hk_1 and rauchgasauslastung --- hosts/aluminium/services/home-assistant.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/hosts/aluminium/services/home-assistant.nix b/hosts/aluminium/services/home-assistant.nix index 5fc1fe8..2b19ab4 100644 --- a/hosts/aluminium/services/home-assistant.nix +++ b/hosts/aluminium/services/home-assistant.nix @@ -22,13 +22,11 @@ in { entity = "sensor.guntamaticbiostar_puffer_unten"; } { entity = "sensor.guntamaticbiostar_kesseltemperatur"; } { entity = "sensor.guntamaticbiostar_vorlauf_ist_1"; } - { entity = "sensor.guntamaticbiostar_raumtemp_hk_1"; } { entity = "sensor.guntamaticbiostar_aussentemperatur"; } { entity = "sensor.guntamaticbiostar_co2_gehalt"; } { entity = "select.guntamaticbiostar_program"; } { entity = "sensor.guntamaticbiostar_programm"; } { entity = "sensor.guntamaticbiostar_programm_hk1"; } - { entity = "sensor.guntamaticbiostar_rauchgasauslastung"; } { entity = "sensor.guntamaticbiostar_rucklauftemperatur"; } { entity = "sensor.guntamaticbiostar_servicezeit"; } ]; From 22bdf86a86691d0874ae93ace18e346b43dd911f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 10 Nov 2024 18:42:11 +0100 Subject: [PATCH 293/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/856a2902156ba304efebd4c1096dbf7465569454' (2024-11-04) → 'github:nix-community/disko/5e40e02978e3bd63c2a6a9fa6fa8ba0e310e747f' (2024-11-08) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/dba414932936fde69f0606b4f1d87c5bc0003ede' (2024-11-06) → 'github:nixos/nixpkgs/83fb6c028368e465cd19bb127b86f971a5e41ebc' (2024-11-07) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/a46925097143c5535a814c0d9ca53b29fb2a5d1d' (2024-11-07) → 'github:NixOS/nixpkgs/44bbe5ddad08599cb6556157c1e20242b5d9a0b2' (2024-11-10) • Updated input 'nur': 'github:nix-community/NUR/bfd50d178dff545abb87dbf0663a3bd7abfad92d' (2024-11-07) → 'github:nix-community/NUR/5b5350f16cefe83e1a3ed3f30d69b6af654f0d52' (2024-11-10) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/a1925e0848c62ab542b0b93b1b22875ee6efcb3d' (2024-11-07) → 'github:nix-community/poetry2nix/f554d27c1544d9c56e5f1f8e2b8aff399803674e' (2024-11-10) • Updated input 'sops-nix': 'github:Mic92/sops-nix/c5ae1e214ff935f2d3593187a131becb289ea639' (2024-11-06) → 'github:Mic92/sops-nix/f1675e3b0e1e663a4af49be67ecbc9e749f85eb7' (2024-11-10) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 20d9f7f..0525c8c 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1730751873, - "narHash": "sha256-sdY29RWz0S7VbaoTwSy6RummdHKf0wUTaBlqPxrtvmQ=", + "lastModified": 1731060864, + "narHash": "sha256-aYE7oAYZ+gPU1mPNhM0JwLAQNgjf0/JK1BF1ln2KBgk=", "owner": "nix-community", "repo": "disko", - "rev": "856a2902156ba304efebd4c1096dbf7465569454", + "rev": "5e40e02978e3bd63c2a6a9fa6fa8ba0e310e747f", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730883749, - "narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=", + "lastModified": 1730963269, + "narHash": "sha256-rz30HrFYCHiWEBCKHMffHbMdWJ35hEkcRVU0h7ms3x0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "dba414932936fde69f0606b4f1d87c5bc0003ede", + "rev": "83fb6c028368e465cd19bb127b86f971a5e41ebc", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1730994033, - "narHash": "sha256-UL/aB8nufAq7tLPJAuyT380IqiZXAdnp4t+BrNUxWYo=", + "lastModified": 1731260124, + "narHash": "sha256-BEOxhi+NnklFH0J+Zcar4p8iOzj/Qvm216JXYAvAreA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a46925097143c5535a814c0d9ca53b29fb2a5d1d", + "rev": "44bbe5ddad08599cb6556157c1e20242b5d9a0b2", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1730990741, - "narHash": "sha256-lfp3sBCEWsj/L83WjUvsBwusU0YX+BhajdC4VDdwknE=", + "lastModified": 1731258665, + "narHash": "sha256-DVFTn7Ol69nWLSFwnBj/2T3wptOC97MH4i5NHlkQrzk=", "owner": "nix-community", "repo": "NUR", - "rev": "bfd50d178dff545abb87dbf0663a3bd7abfad92d", + "rev": "5b5350f16cefe83e1a3ed3f30d69b6af654f0d52", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1730961552, - "narHash": "sha256-TjfCllZmU8U2Bs/ENsrii7GCHBDkorPsmZ0d97DcaAQ=", + "lastModified": 1731205797, + "narHash": "sha256-F7N1mxH1VrkVNHR3JGNMRvp9+98KYO4b832KS8Gl2xI=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "a1925e0848c62ab542b0b93b1b22875ee6efcb3d", + "rev": "f554d27c1544d9c56e5f1f8e2b8aff399803674e", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1730883027, - "narHash": "sha256-pvXMOJIqRW0trsW+FzRMl6d5PbsM4rWfD5lcKCOrrwI=", + "lastModified": 1731213149, + "narHash": "sha256-jR8i6nFLmSmm0cIoeRQ8Q4EBARa3oGaAtEER/OMMxus=", "owner": "Mic92", "repo": "sops-nix", - "rev": "c5ae1e214ff935f2d3593187a131becb289ea639", + "rev": "f1675e3b0e1e663a4af49be67ecbc9e749f85eb7", "type": "github" }, "original": { From 3ceac436b938d04606e9bdb48834ac67bf2aa180 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 10 Nov 2024 18:50:16 +0100 Subject: [PATCH 294/562] Add notification to stoke up --- hosts/aluminium/services/home-assistant.nix | 32 +++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/hosts/aluminium/services/home-assistant.nix b/hosts/aluminium/services/home-assistant.nix index 2b19ab4..2395ff9 100644 --- a/hosts/aluminium/services/home-assistant.nix +++ b/hosts/aluminium/services/home-assistant.nix @@ -83,6 +83,38 @@ in }; default_config = { }; "automation nix" = [ + { + alias = "Nachschüren"; + description = "Benachrichtigung auf iPad bei Wechsel auf Teillast"; + mode = "single"; + trigger = [ + { + platform = "state"; + entity_id = [ "sensor.guntamaticbiostar_betrieb" ]; + from = "VOLLLAST"; + to = "TEILLAST"; + } + ]; + condition = [ + { + condition = "numeric_state"; + entity_id = "sensor.guntamaticbiostar_pufferladung"; + below = "80"; + } + ]; + action = [ + { + device_id = "5612874405fa2ee539ad4518a1bb8e34"; + domain = "mobile_app"; + type = "notify"; + message = '' + Kessel läuft auf Teillast und Puffer ist unter 80%. Vielleicht willst du + nachschüren. + ''; + title = "Nachschüren?"; + } + ]; + } ]; "automation ui" = "!include automations.yaml"; "scene nix" = [ From 008269cdbafaaf4019a2b9b13f08a6c982756cd5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 11 Nov 2024 11:42:58 +0100 Subject: [PATCH 295/562] Update README --- README.md | 8 +------- users/README.md | 9 +++++++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 32052e4..5d6c327 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,4 @@ -## home-manager -https://github.com/nix-community/home-manager - -For a systematic overview of Home Manager and its available options, please see -- the [Home Manager manual](https://nix-community.github.io/home-manager/index.html) and -- the [Home Manager configuration options](https://nix-community.github.io/home-manager/options.html). - +# jalr's NixOS Configuration ## Install a new host diff --git a/users/README.md b/users/README.md index e245e64..50675ba 100644 --- a/users/README.md +++ b/users/README.md @@ -1,2 +1,7 @@ -# Documentation -[Home Manager Manual](https://rycee.gitlab.io/home-manager/) +# Home Manager +The user configuration is managed by [Home Manager](https://github.com/nix-community/home-manager) + +For a systematic overview of Home Manager and its available options, please see +- the [Home Manager manual](https://nix-community.github.io/home-manager/index.html) and +- the [Home Manager configuration options](https://nix-community.github.io/home-manager/options.html). + From 883c7ed6a6e70527e13a4b296fdac1a4a1ed74ba Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 13 Nov 2024 14:35:02 +0100 Subject: [PATCH 296/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/5e40e02978e3bd63c2a6a9fa6fa8ba0e310e747f' (2024-11-08) → 'github:nix-community/disko/486250f404f4a4f4f33f8f669d83ca5f6e6b7dfc' (2024-11-10) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/d70155fdc00df4628446352fc58adc640cd705c2' (2024-11-05) → 'github:cachix/git-hooks.nix/cd1af27aa85026ac759d5d3fccf650abe7e1bbf0' (2024-11-11) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/e1cc1f6483393634aee94514186d21a4871e78d7' (2024-11-06) → 'github:nixos/nixos-hardware/f6581f1c3b137086e42a08a906bdada63045f991' (2024-11-12) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/83fb6c028368e465cd19bb127b86f971a5e41ebc' (2024-11-07) → 'github:nixos/nixpkgs/9256f7c71a195ebe7a218043d9f93390d49e6884' (2024-11-10) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/44bbe5ddad08599cb6556157c1e20242b5d9a0b2' (2024-11-10) → 'github:NixOS/nixpkgs/3f7e0ddd7bed4b519c01301b5be762f6e7576d38' (2024-11-13) • Updated input 'nur': 'github:nix-community/NUR/5b5350f16cefe83e1a3ed3f30d69b6af654f0d52' (2024-11-10) → 'github:nix-community/NUR/4b0e599bebf4bdf6725cdf8036a335096bf13097' (2024-11-13) • Updated input 'sops-nix': 'github:Mic92/sops-nix/f1675e3b0e1e663a4af49be67ecbc9e749f85eb7' (2024-11-10) → 'github:Mic92/sops-nix/4c91d52db103e757fc25b58998b0576ae702d659' (2024-11-11) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 0525c8c..c0308c4 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1731060864, - "narHash": "sha256-aYE7oAYZ+gPU1mPNhM0JwLAQNgjf0/JK1BF1ln2KBgk=", + "lastModified": 1731274291, + "narHash": "sha256-cZ0QMpv5p2a6WEE+o9uu0a4ma6RzQDOQTbm7PbixWz8=", "owner": "nix-community", "repo": "disko", - "rev": "5e40e02978e3bd63c2a6a9fa6fa8ba0e310e747f", + "rev": "486250f404f4a4f4f33f8f669d83ca5f6e6b7dfc", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1730814269, - "narHash": "sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF+06nOg=", + "lastModified": 1731363552, + "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "d70155fdc00df4628446352fc58adc640cd705c2", + "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1730919458, - "narHash": "sha256-yMO0T0QJlmT/x4HEyvrCyigGrdYfIXX3e5gWqB64wLg=", + "lastModified": 1731403644, + "narHash": "sha256-T9V7CTucjRZ4Qc6pUEV/kpgNGzQbHWfGcfK6JJLfUeI=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "e1cc1f6483393634aee94514186d21a4871e78d7", + "rev": "f6581f1c3b137086e42a08a906bdada63045f991", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730963269, - "narHash": "sha256-rz30HrFYCHiWEBCKHMffHbMdWJ35hEkcRVU0h7ms3x0=", + "lastModified": 1731239293, + "narHash": "sha256-q2yjIWFFcTzp5REWQUOU9L6kHdCDmFDpqeix86SOvDc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "83fb6c028368e465cd19bb127b86f971a5e41ebc", + "rev": "9256f7c71a195ebe7a218043d9f93390d49e6884", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1731260124, - "narHash": "sha256-BEOxhi+NnklFH0J+Zcar4p8iOzj/Qvm216JXYAvAreA=", + "lastModified": 1731504820, + "narHash": "sha256-mRON3li1hSIkDk5u/DAr5Iv3QUMUiPHDIMaqVSOVTnc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "44bbe5ddad08599cb6556157c1e20242b5d9a0b2", + "rev": "3f7e0ddd7bed4b519c01301b5be762f6e7576d38", "type": "github" }, "original": { @@ -410,11 +410,11 @@ }, "nur": { "locked": { - "lastModified": 1731258665, - "narHash": "sha256-DVFTn7Ol69nWLSFwnBj/2T3wptOC97MH4i5NHlkQrzk=", + "lastModified": 1731494868, + "narHash": "sha256-gFzX+e1ATJmhjOMvbBmqf1v4WgMz770dZhtGN4dZtng=", "owner": "nix-community", "repo": "NUR", - "rev": "5b5350f16cefe83e1a3ed3f30d69b6af654f0d52", + "rev": "4b0e599bebf4bdf6725cdf8036a335096bf13097", "type": "github" }, "original": { @@ -526,11 +526,11 @@ "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1731213149, - "narHash": "sha256-jR8i6nFLmSmm0cIoeRQ8Q4EBARa3oGaAtEER/OMMxus=", + "lastModified": 1731364708, + "narHash": "sha256-HC0anOL+KmUQ2hdRl0AtunbAckasxrkn4VLmxbW/WaA=", "owner": "Mic92", "repo": "sops-nix", - "rev": "f1675e3b0e1e663a4af49be67ecbc9e749f85eb7", + "rev": "4c91d52db103e757fc25b58998b0576ae702d659", "type": "github" }, "original": { From c7f0ec97751938247f26640b38a23f62c5678c11 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 13 Nov 2024 19:02:30 +0100 Subject: [PATCH 297/562] Add DHT model As autodetection is buggy and the sensor might report wrong values. --- hosts/iron/services/esphome/devices/badspiegel.yaml | 1 + hosts/iron/services/esphome/devices/fussbodenheizung.yaml | 1 + hosts/iron/services/esphome/devices/kueche-leiste.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/hosts/iron/services/esphome/devices/badspiegel.yaml b/hosts/iron/services/esphome/devices/badspiegel.yaml index 2ee052b..e80b97d 100644 --- a/hosts/iron/services/esphome/devices/badspiegel.yaml +++ b/hosts/iron/services/esphome/devices/badspiegel.yaml @@ -95,6 +95,7 @@ sensor: update_interval: 60s - platform: dht pin: GPIO22 + model: DHT22 temperature: name: "Temperatur" id: temperature diff --git a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml index 616f5a5..618c606 100644 --- a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml +++ b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml @@ -60,6 +60,7 @@ sensor: name: "WiFi Signal Sensor" update_interval: 60s - platform: dht + model: DHT22 pin: GPIO2 temperature: name: "Temperatur" diff --git a/hosts/iron/services/esphome/devices/kueche-leiste.yaml b/hosts/iron/services/esphome/devices/kueche-leiste.yaml index 3b8f396..44bbd8d 100644 --- a/hosts/iron/services/esphome/devices/kueche-leiste.yaml +++ b/hosts/iron/services/esphome/devices/kueche-leiste.yaml @@ -66,6 +66,7 @@ sensor: name: "WiFi Signal Sensor" update_interval: 60s - platform: dht + model: DHT22 pin: GPIO5 temperature: name: "Temperatur" From 3c53540bb8238c61065c90c38f9ad1dc200b2e19 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 13 Nov 2024 19:03:38 +0100 Subject: [PATCH 298/562] Lower update interval of temp/humidity sensor --- hosts/iron/services/esphome/devices/badspiegel.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/iron/services/esphome/devices/badspiegel.yaml b/hosts/iron/services/esphome/devices/badspiegel.yaml index e80b97d..60220e1 100644 --- a/hosts/iron/services/esphome/devices/badspiegel.yaml +++ b/hosts/iron/services/esphome/devices/badspiegel.yaml @@ -103,7 +103,7 @@ sensor: name: "Feuchtigkeit" id: humidity accuracy_decimals: 1 - update_interval: 60s + update_interval: 30s binary_sensor: # ESP32 touch pins: 4, 13, 27, 32, 33 From d2b3027bc427a70eafbe97ecfe2f6d288a7a5a69 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 13 Nov 2024 19:04:25 +0100 Subject: [PATCH 299/562] Update touch pad values Crappy fixed the touch pads with tape :) --- hosts/iron/services/esphome/devices/badspiegel.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hosts/iron/services/esphome/devices/badspiegel.yaml b/hosts/iron/services/esphome/devices/badspiegel.yaml index 60220e1..71a2df6 100644 --- a/hosts/iron/services/esphome/devices/badspiegel.yaml +++ b/hosts/iron/services/esphome/devices/badspiegel.yaml @@ -107,19 +107,21 @@ sensor: binary_sensor: # ESP32 touch pins: 4, 13, 27, 32, 33 + # Touch Pad T4 - platform: esp32_touch name: "touch pad GPIO13" pin: GPIO13 - threshold: 923 + threshold: 902 on_press: then: - light.toggle: id: front_light internal: true + # Touch Pad T7 - platform: esp32_touch name: "touch pad GPIO27" pin: GPIO27 - threshold: 1125 + threshold: 1030 on_press: then: - light.toggle: From 9799e221a220fecd340e9adfc1526e74a5f77e49 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 13 Nov 2024 22:15:23 +0100 Subject: [PATCH 300/562] Add hedgedoc service --- hosts/magnesium/ports.nix | 1 + hosts/magnesium/services/default.nix | 1 + hosts/magnesium/services/hedgedoc.nix | 43 +++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 hosts/magnesium/services/hedgedoc.nix diff --git a/hosts/magnesium/ports.nix b/hosts/magnesium/ports.nix index 7401906..a346a5f 100644 --- a/hosts/magnesium/ports.nix +++ b/hosts/magnesium/ports.nix @@ -6,6 +6,7 @@ custom-utils.validatePortAttrset { coturn-relay.udp.range = [ 49160 49200 ]; coturn-tls = { tcp = [ 5349 5350 ]; udp = [ 5349 5350 ]; }; forgejo-ssh.tcp = 2022; + hedgedoc.tcp = 3000; mosquitto.tcp = 1883; nginx-http.tcp = 80; nginx-https.tcp = 443; diff --git a/hosts/magnesium/services/default.nix b/hosts/magnesium/services/default.nix index ab5d185..aba802f 100644 --- a/hosts/magnesium/services/default.nix +++ b/hosts/magnesium/services/default.nix @@ -3,6 +3,7 @@ ./coturn.nix ./forgejo.nix ./gitlab-runner.nix + ./hedgedoc.nix ./mosquitto.nix ./ntfy.nix ./public-ip-tunnel.nix diff --git a/hosts/magnesium/services/hedgedoc.nix b/hosts/magnesium/services/hedgedoc.nix new file mode 100644 index 0000000..b8df3e1 --- /dev/null +++ b/hosts/magnesium/services/hedgedoc.nix @@ -0,0 +1,43 @@ +args@{ config, custom-utils, ... }: + +let + domain = "pad.jalr.de"; + ports = import ../ports.nix args; + cfg = config.services.hedgedoc; +in +{ + services.hedgedoc = { + enable = true; + settings = { + domain = domain; + protocolUseSSL = true; + csp.enable = true; + port = ports.hedgedoc.tcp; + db = { + dialect = "postgres"; + host = "/run/postgresql"; + user = "hedgedoc"; + database = "hedgedoc"; + }; + allowEmailRegister = false; + }; + }; + + services.postgresql = { + enable = true; + ensureDatabases = [ "hedgedoc" ]; + ensureUsers = [{ + name = "hedgedoc"; + ensureDBOwnership = true; + }]; + }; + + services.nginx.virtualHosts."${domain}" = { + enableACME = true; + forceSSL = true; + + locations."/" = { + proxyPass = "http://${cfg.settings.host}:${toString cfg.settings.port}"; + }; + }; +} From 5f3faa705f3910eb0a642c899d352a7c5b65affe Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 15 Nov 2024 00:21:33 +0100 Subject: [PATCH 301/562] Update to 24.11 --- flake.lock | 16 +- flake.nix | 4 +- hosts/aluminium/services/dyndns.nix | 12 +- hosts/aluminium/services/unifi-controller.nix | 1 + hosts/iron/configuration.nix | 2 - hosts/iron/services/dyndns.nix | 14 +- hosts/iron/services/navidrome.nix | 4 +- hosts/iron/services/radicale.nix | 9 - hosts/iron/services/unifi-controller.nix | 1 + hosts/magnesium/configuration.nix | 10 +- hosts/magnesium/services/forgejo.nix | 2 +- hosts/weinturm-pretix-prod/configuration.nix | 10 +- modules/matrix/mautrix-signal.nix | 158 ++++-------------- modules/matrix/mautrix-whatsapp.nix | 3 +- modules/nix.nix | 11 +- modules/pipewire.nix | 1 - modules/sway.nix | 2 +- pkgs/fpvout/default.nix | 2 +- users/jalr/modules/gui.nix | 2 +- 19 files changed, 91 insertions(+), 173 deletions(-) diff --git a/flake.lock b/flake.lock index c0308c4..16c0ce6 100644 --- a/flake.lock +++ b/flake.lock @@ -203,16 +203,16 @@ ] }, "locked": { - "lastModified": 1726989464, - "narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=", + "lastModified": 1731832479, + "narHash": "sha256-icDDuYwJ0avTMZTxe1qyU/Baht5JOqw4pb5mWpR+hT0=", "owner": "nix-community", "repo": "home-manager", - "rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176", + "rev": "5056a1cf0ce7c2a08ab50713b6c4af77975f6111", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-24.05", + "ref": "master", "repo": "home-manager", "type": "github" } @@ -330,16 +330,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1731239293, - "narHash": "sha256-q2yjIWFFcTzp5REWQUOU9L6kHdCDmFDpqeix86SOvDc=", + "lastModified": 1731858824, + "narHash": "sha256-0KhJ6SOyWjx408tsgcoVQFx9nEn55DwrhFbCE49Oyac=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9256f7c71a195ebe7a218043d9f93390d49e6884", + "rev": "7937932921ea34c51c1b586e2505574f6f0be5a7", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-24.05", + "ref": "release-24.11", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 4ae9e7f..9f867d0 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ gomod2nix.url = "github:nix-community/gomod2nix"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; - home-manager.url = "github:nix-community/home-manager/release-24.05"; + home-manager.url = "github:nix-community/home-manager/master"; krops.inputs.flake-utils.follows = "flake-utils"; krops.inputs.nixpkgs.follows = "nixpkgs"; @@ -24,7 +24,7 @@ nixos-hardware.url = "github:nixos/nixos-hardware/master"; - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; + nixpkgs.url = "github:nixos/nixpkgs/release-24.11"; nixpkgsMaster.url = "github:NixOS/nixpkgs/master"; diff --git a/hosts/aluminium/services/dyndns.nix b/hosts/aluminium/services/dyndns.nix index ea0e38c..bbcdb34 100644 --- a/hosts/aluminium/services/dyndns.nix +++ b/hosts/aluminium/services/dyndns.nix @@ -1,4 +1,4 @@ -{ config, ... }: +{ config, pkgs, ... }: { sops.secrets.duckdns-secret = { sopsFile = ../secrets.yaml; @@ -11,6 +11,14 @@ username = "nouser"; passwordFile = config.sops.secrets.duckdns-secret.path; domains = [ "jalr-k" ]; - use = "if, if=ppp0"; + usev4 = "ifv4, ifv4=ppp0"; + package = pkgs.ddclient.overrideAttrs (p: rec { + nativeBuildInputs = p.nativeBuildInputs ++ [ pkgs.makeWrapper ]; + wrapperPath = pkgs.lib.makeBinPath [ pkgs.iproute2 ]; + postFixup = '' + wrapProgram $out/bin/ddclient \ + --prefix PATH : "${wrapperPath}" + ''; + }); }; } diff --git a/hosts/aluminium/services/unifi-controller.nix b/hosts/aluminium/services/unifi-controller.nix index 16489c6..4801621 100644 --- a/hosts/aluminium/services/unifi-controller.nix +++ b/hosts/aluminium/services/unifi-controller.nix @@ -7,6 +7,7 @@ in services.unifi = { enable = true; unifiPackage = pkgs.unifi8; + mongodbPackage = pkgs.mongodb-7_0; }; networking.firewall.interfaces.lechner.allowedTCPPorts = [ ports.unifi-inform.tcp diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index 80a60f2..d8e1203 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -1,7 +1,6 @@ { inputs, config, pkgs, lib, ... }: let interfaces = import ./interfaces.nix; - zfsKernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; disks = [ "ata-Samsung_SSD_870_QVO_8TB_S5SSNG0R103837K" "ata-Samsung_SSD_870_QVO_8TB_S5SSNG0R103838A" @@ -118,7 +117,6 @@ with lib; { ''; boot = { - kernelPackages = zfsKernelPackages; kernel.sysctl = { "net.ipv6.conf.all.forwarding" = 1; }; diff --git a/hosts/iron/services/dyndns.nix b/hosts/iron/services/dyndns.nix index 710aceb..6f6e206 100644 --- a/hosts/iron/services/dyndns.nix +++ b/hosts/iron/services/dyndns.nix @@ -1,4 +1,4 @@ -{ config, ... }: +{ config, pkgs, ... }: let interfaces = import ../interfaces.nix; in @@ -14,7 +14,15 @@ in username = "nouser"; passwordFile = config.sops.secrets.duckdns-secret.path; domains = [ "jalr-bw" ]; - use = "if, if=${interfaces.wan}"; - #usev6=ifv6, ifv6=enp3s4 + usev4 = "ifv4, ifv4=${interfaces.wan}"; + usev6 = "ifv6, ifv6=${interfaces.wan}"; + package = pkgs.ddclient.overrideAttrs (p: rec { + nativeBuildInputs = p.nativeBuildInputs ++ [ pkgs.makeWrapper ]; + wrapperPath = pkgs.lib.makeBinPath [ pkgs.iproute2 ]; + postFixup = '' + wrapProgram $out/bin/ddclient \ + --prefix PATH : "${wrapperPath}" + ''; + }); }; } diff --git a/hosts/iron/services/navidrome.nix b/hosts/iron/services/navidrome.nix index 755f26c..f6b87e4 100644 --- a/hosts/iron/services/navidrome.nix +++ b/hosts/iron/services/navidrome.nix @@ -18,14 +18,14 @@ let if [ -e "''$password_encryption_key_file" ]; then export ND_PASSWORDENCRYPTIONKEY="$(cat "''$password_encryption_key_file")" fi - exec ${pkgs.navidrome}/bin/navidrome --configfile ${configFile} + exec ${config.services.navidrome.package}/bin/navidrome --configfile ${configFile} ''; in { services.navidrome.enable = true; systemd.services.navidrome = { serviceConfig = { - ExecStart = lib.mkForce "${utils.systemdUtils.lib.makeJobScript "navidrome-start" script} %d"; + ExecStart = lib.mkForce "${pkgs.writeShellScript "navidrome-start" script} %d"; } // lib.attrsets.optionalAttrs (passwordEncryptionKeyFile != null) { LoadCredential = "PasswordEncryptionKey:${passwordEncryptionKeyFile}"; }; diff --git a/hosts/iron/services/radicale.nix b/hosts/iron/services/radicale.nix index 538947f..ec367ce 100644 --- a/hosts/iron/services/radicale.nix +++ b/hosts/iron/services/radicale.nix @@ -54,14 +54,5 @@ in level = "warning"; }; }; - # Apply fix https://github.com/Kozea/Radicale/issues/1485 - package = pkgs.radicale.overrideAttrs (p: { - src = pkgs.fetchFromGitHub { - owner = "Kozea"; - repo = "Radicale"; - rev = "5146537915f0cb397ae4ef53fe8a4f91fac5d972"; - sha256 = "DRNiY665MHqmXAeGs39N3YfTAV0SEjzUNf3Nfk+kKvk="; - }; - }); }; } diff --git a/hosts/iron/services/unifi-controller.nix b/hosts/iron/services/unifi-controller.nix index 6eeed31..bbd67a8 100644 --- a/hosts/iron/services/unifi-controller.nix +++ b/hosts/iron/services/unifi-controller.nix @@ -8,6 +8,7 @@ in services.unifi = { enable = true; unifiPackage = pkgs.unifi8; + mongodbPackage = pkgs.mongodb-7_0; }; networking.firewall.interfaces."${interfaces.lan}".allowedTCPPorts = [ ports.unifi-http.tcp diff --git a/hosts/magnesium/configuration.nix b/hosts/magnesium/configuration.nix index 0529035..cf05901 100644 --- a/hosts/magnesium/configuration.nix +++ b/hosts/magnesium/configuration.nix @@ -24,16 +24,14 @@ ]; routes = [ { - routeConfig.Destination = "172.31.1.1"; + Destination = "172.31.1.1"; } { - routeConfig = { - Gateway = "172.31.1.1"; - GatewayOnLink = true; - }; + Gateway = "172.31.1.1"; + GatewayOnLink = true; } { - routeConfig.Gateway = "fe80::1"; + Gateway = "fe80::1"; } ]; }; diff --git a/hosts/magnesium/services/forgejo.nix b/hosts/magnesium/services/forgejo.nix index 9eef90f..90d7fb4 100644 --- a/hosts/magnesium/services/forgejo.nix +++ b/hosts/magnesium/services/forgejo.nix @@ -12,7 +12,7 @@ in services.forgejo = { enable = true; lfs.enable = true; - mailerPasswordFile = config.sops.secrets.forgejo-mail.path; + secrets.mailer.PASSWD = config.sops.secrets.forgejo-mail.path; settings = { DEFAULT.APP_NAME = "jalr's git"; avatar.DISABLE_GRAVATAR = true; diff --git a/hosts/weinturm-pretix-prod/configuration.nix b/hosts/weinturm-pretix-prod/configuration.nix index 97d6106..694dc1b 100644 --- a/hosts/weinturm-pretix-prod/configuration.nix +++ b/hosts/weinturm-pretix-prod/configuration.nix @@ -20,16 +20,14 @@ ]; routes = [ { - routeConfig.Destination = "172.31.1.1"; + Destination = "172.31.1.1"; } { - routeConfig = { - Gateway = "172.31.1.1"; - GatewayOnLink = true; - }; + Gateway = "172.31.1.1"; + GatewayOnLink = true; } { - routeConfig.Gateway = "fe80::1"; + Gateway = "fe80::1"; } ]; }; diff --git a/modules/matrix/mautrix-signal.nix b/modules/matrix/mautrix-signal.nix index a470546..d1db25d 100644 --- a/modules/matrix/mautrix-signal.nix +++ b/modules/matrix/mautrix-signal.nix @@ -4,133 +4,47 @@ let cfg = config.jalr.matrix; synapseCfg = config.services.matrix-synapse.settings; dataDir = "/var/lib/mautrix-signal"; - registrationFile = "${dataDir}/signal-registration.yaml"; - settings = { - homeserver = { - address = synapseCfg.public_baseurl; - domain = synapseCfg.server_name; - }; - appservice = rec { - hostname = "127.0.0.1"; - port = cfg.mautrix-signal.port; - address = "http://${hostname}:${toString port}"; - provisioning.shared_secret = "disable"; - database = "sqlite:///${dataDir}/mautrix-signal.db"; - }; - bridge = { - encryption = { - allow = true; - default = true; - }; - verification_levels = { - receive = "cross-signed-tofu"; - send = "cross-signed-tofu"; - share = "cross-signed-tofu"; - }; - }; - logging = { - version = 1; - min_level = "info"; - writers = lib.singleton { - type = "stdout"; - format = "pretty-colored"; - time_format = " "; - }; - }; - } // cfg.mautrix-signal.settings; - settingsFormat = pkgs.formats.json { }; - settingsFile = "${dataDir}/config.json"; - settingsFileUnsubstituted = - settingsFormat.generate "mautrix-signal-config.json" settings; in lib.mkIf cfg.mautrix-signal.enable { - systemd.services.mautrix-signal = { - description = "mautrix-signal, A Matrix-Signal puppeting bridge."; - wantedBy = [ "multi-user.target" ]; - wants = [ "network-online.target" ] ++ cfg.mautrix-signal.serviceDependencies; - after = [ "network-online.target" ] ++ cfg.mautrix-signal.serviceDependencies; - - environment.HOME = dataDir; - preStart = '' - # substitute the settings file by environment variables - # in this case read from EnvironmentFile - test -f '${settingsFile}' && rm -f '${settingsFile}' - old_umask=$(umask) - umask 0177 - ${pkgs.envsubst}/bin/envsubst \ - -o '${settingsFile}' \ - -i '${settingsFileUnsubstituted}' - - cp '${settingsFile}' '${settingsFile}.tmp' - umask $old_umask - - # generate the appservice's registration file if absent - if [ ! -f '${registrationFile}' ]; then - ${pkgs.mautrix-signal}/bin/mautrix-signal \ - --generate-registration \ - --config='${settingsFile}.tmp' \ - --registration='${registrationFile}' - fi - - umask 0177 - ${pkgs.yq}/bin/yq -s '.[0].appservice.as_token = .[1].as_token - | .[0].appservice.hs_token = .[1].hs_token - | .[0]' '${settingsFile}' '${registrationFile}' \ - > '${settingsFile}.tmp' - mv '${settingsFile}.tmp' '${settingsFile}' - umask $old_umask - ''; - serviceConfig = { - Type = "exec"; - User = "mautrix-signal"; - #EnvironmentFile = cfg.environmentFile; - WorkingDirectory = dataDir; - StateDirectory = lib.mkIf (dataDir == "/var/lib/mautrix-signal") "mautrix-signal"; - ExecStart = '' - ${pkgs.mautrix-signal}/bin/mautrix-signal \ - --config='${settingsFile}' \ - --no-update - ''; - Restart = "on-failure"; - RestartSec = "30s"; - - ReadWritePaths = dataDir; - NoNewPrivileges = true; - MemoryDenyWriteExecute = true; - PrivateDevices = true; - PrivateTmp = true; - #ProtectHome = true; - ProtectSystem = "strict"; - ProtectControlGroups = true; - RestrictSUIDSGID = true; - RestrictRealtime = true; - LockPersonality = true; - ProtectKernelLogs = true; - ProtectKernelTunables = true; - ProtectHostname = true; - ProtectKernelModules = true; - PrivateUsers = true; - ProtectClock = true; - SystemCallArchitectures = "native"; - SystemCallErrorNumber = "EPERM"; - SystemCallFilter = "@system-service"; - }; - restartTriggers = [ settingsFileUnsubstituted ]; + services.mautrix-signal = { + enable = true; + registerToSynapse = true; + settings = { + homeserver = { + address = synapseCfg.public_baseurl; + domain = synapseCfg.server_name; + }; + appservice = rec { + hostname = "127.0.0.1"; + port = cfg.mautrix-signal.port; + address = "http://${hostname}:${toString port}"; + provisioning.shared_secret = "disable"; + database = "sqlite:///${dataDir}/mautrix-signal.db"; + }; + bridge = { + encryption = { + allow = true; + default = true; + }; + verification_levels = { + receive = "cross-signed-tofu"; + send = "cross-signed-tofu"; + share = "cross-signed-tofu"; + }; + }; + logging = { + version = 1; + min_level = "info"; + writers = lib.singleton { + type = "stdout"; + format = "pretty-colored"; + time_format = " "; + }; + }; + } // cfg.mautrix-signal.settings; }; - users.users.mautrix-signal = { - isSystemUser = true; - group = "mautrix-signal"; - home = dataDir; - description = "mautrix-signal bridge user"; - }; - - users.groups.mautrix-signal = { }; - services.signald = { enable = true; - group = "mautrix-signal"; }; - - jalr.matrix.synapse.app_service_config."mautrix-signal" = "/var/lib/mautrix-signal/signal-registration.yaml"; } diff --git a/modules/matrix/mautrix-whatsapp.nix b/modules/matrix/mautrix-whatsapp.nix index c4f851d..aa49668 100644 --- a/modules/matrix/mautrix-whatsapp.nix +++ b/modules/matrix/mautrix-whatsapp.nix @@ -7,6 +7,7 @@ in lib.mkIf cfg.mautrix-whatsapp.enable { services.mautrix-whatsapp = { enable = true; + registerToSynapse = true; settings = { homeserver = { address = synapseCfg.public_baseurl; @@ -50,6 +51,4 @@ lib.mkIf cfg.mautrix-whatsapp.enable { }; } // cfg.mautrix-whatsapp.settings; }; - - jalr.matrix.synapse.app_service_config."mautrix-whatsapp" = "/var/lib/mautrix-whatsapp/whatsapp-registration.yaml"; } diff --git a/modules/nix.nix b/modules/nix.nix index 94aca4f..0ae40e8 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, inputs, system, ... }: +{ lib, pkgs, inputs, system, ... }: { nix = { @@ -14,7 +14,6 @@ experimental-features = [ "nix-command" "flakes" - "repl-flake" ]; trusted-users = [ "@wheel" ]; auto-optimise-store = true; @@ -35,8 +34,12 @@ systemd.services.nix-daemon.serviceConfig.OOMScoreAdjust = 250; - nixpkgs.overlays = with inputs; [ - self.overlays.default + nixpkgs.config.permittedInsecurePackages = [ + "olm-3.2.16" + ]; + + nixpkgs.overlays = [ + inputs.self.overlays.default (final: prev: { master = import inputs.nixpkgsMaster { inherit system; diff --git a/modules/pipewire.nix b/modules/pipewire.nix index cb4cf02..d5fa8b4 100644 --- a/modules/pipewire.nix +++ b/modules/pipewire.nix @@ -1,7 +1,6 @@ { config, lib, pkgs, ... }: lib.mkIf config.jalr.gui.enable { - sound.enable = true; hardware.pulseaudio.enable = false; # FIXME diff --git a/modules/sway.nix b/modules/sway.nix index 181f95d..4b47299 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -7,7 +7,7 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { wrapperFeatures.gtk = true; }; - hardware.opengl.enable = true; + hardware.graphics.enable = true; security.polkit.enable = true; diff --git a/pkgs/fpvout/default.nix b/pkgs/fpvout/default.nix index 97ecad7..f4090d7 100644 --- a/pkgs/fpvout/default.nix +++ b/pkgs/fpvout/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = with pkgs; [ cmake pkg-config - libusb + libusb1 ]; installPhase = '' diff --git a/users/jalr/modules/gui.nix b/users/jalr/modules/gui.nix index dac9372..6e34d61 100644 --- a/users/jalr/modules/gui.nix +++ b/users/jalr/modules/gui.nix @@ -15,7 +15,7 @@ lib.mkIf nixosConfig.jalr.gui.enable { streamlink supersonic-wayland vlc - xdg_utils + xdg-utils ]; services.kanshi = { From 1025fbc46f4a51dc0a3222e7b165da68cedc0fc4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 15 Nov 2024 00:23:33 +0100 Subject: [PATCH 302/562] Remove qtox --- users/jalr/modules/communication/default.nix | 1 - users/jalr/modules/communication/qtox.nix | 7 ------- 2 files changed, 8 deletions(-) delete mode 100644 users/jalr/modules/communication/qtox.nix diff --git a/users/jalr/modules/communication/default.nix b/users/jalr/modules/communication/default.nix index e9d1a28..d94f3b7 100644 --- a/users/jalr/modules/communication/default.nix +++ b/users/jalr/modules/communication/default.nix @@ -4,7 +4,6 @@ imports = [ ./element-desktop.nix ./mumble.nix - ./qtox.nix ./telegram-desktop.nix ]; } diff --git a/users/jalr/modules/communication/qtox.nix b/users/jalr/modules/communication/qtox.nix deleted file mode 100644 index 85aa45b..0000000 --- a/users/jalr/modules/communication/qtox.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ nixosConfig, lib, pkgs, ... }: - -lib.mkIf nixosConfig.jalr.gui.enable { - home.packages = with pkgs; [ - qtox - ]; -} From 98881dcfbcdd7112285db7bb3355d487f9d966dc Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 15 Nov 2024 00:32:35 +0100 Subject: [PATCH 303/562] Remove matrix-sliding-sync since matrix-synapse incorporated its functionality. --- hosts/iron/ports.nix | 1 - hosts/iron/secrets.yaml | 7 +++---- hosts/iron/services/matrix.nix | 7 ------- modules/matrix/default.nix | 11 ----------- modules/matrix/sliding-sync.nix | 18 ------------------ 5 files changed, 3 insertions(+), 41 deletions(-) delete mode 100644 modules/matrix/sliding-sync.nix diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index b5d9466..7fe675c 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -7,7 +7,6 @@ custom-utils.validatePortAttrset { home-assistant.tcp = 8123; jellyfin.tcp = 8096; matrix-synapse.tcp = 8008; - matrix-sliding-sync.tcp = 8009; mautrix-signal.tcp = 29319; mautrix-whatsapp.tcp = 29318; navidrome.tcp = 4533; diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index cfc9d5a..ddada4a 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -8,7 +8,6 @@ rspamd-worker-controller: ENC[AES256_GCM,data:7tS8bEr9i5F+YZoj3uPQa6Xd2SCsuC+jE5 dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] -matrix-sliding-sync: ENC[AES256_GCM,data:CmR8Q5NL1m+eixenK4u1n3MfVh49/Q3ZIRmWfSbuFMr3u79rIGrtFf2EjaThCwBHQyXdYw1wyTouxhGZql1Fcp/HYma8u4w5nJOaJa1TXg==,iv:/kFqA/+kpCkhHZKJdhadjH11pZwh4MFiQPjY96t8M5k=,tag:aZkDCcbtonHMTv4TdBv1sQ==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] esphome: ENC[AES256_GCM,data:QyPrVPhqvaCfx7oRmJ14EFpEIpQRwlLwTABK9qTP/wYcoflFsorNAmIoTiX/4KziQl050ByztnjIhrsxFx2dN6dv+RiLVWP+k0G63rfeS5gxe8QSgzsEtWWaUk3DE87i20DUusj1/B6yUsMApMohjaufuVzReL2MtVSVgtDUS6nVqGnRubrdujAxyRWvjQtamWBa1fjz39U876F10KMUYB+iGtObfNJGH18lAQ1arKEUQQSl8u1vNJuZiKqFhzxcu/IF6AhJgcKmCi2nrcEgbrv4ZwOcJ7+VG29qY7C4LCeAU4wOWJmtnCSf9osSwzR5hFco46L3Y8k0XXEOiEAJl+8ZLNKqQJpShh9wioMrj9XNpX/PvGCpBLTHsXTCGktDdbK/RLEGZnnL0s6If7Qs0XTwWZEe0q4IsltfdWJdZQWbvlY58ooUkK55wml/SlpuHgSdY6pOp/bOnBwvIrh/962DWtSXDxNnvps4Qy0eRUtpS2G6+rLIXXkq7KlSUg/A5XRNWbLGX5u7pJuvJ5xlldFW+tb1rqyrKXGIGra3Y6Ib4Z17znmajMSIeQItChj8UsOqlcHaCI5s8kDFjafJfpTTtAm0mj2cBFYmWHC/WR1YAtd2mrffr258CShtO+eeAqhSSTopIL637udKaY1Vto1dVReTmK24ANopQOaxnTtFjBdQaeluP4PAWrAGADBio1iwjsWIQlr0vnMjSBd0JcnW0Q3i+/5zhQfaEzZ6FQXOs05+l7ryLrGgBbyM2FRLTuAWBsv5yv3lz8FiSGVNaLMW5rofZpFvX0oa7P9HyU/RIpUzx307VBsIJlzrW2NgWvc9iLHLHWJDa7xcemGTvZDp/0BujYHeYYfVViPtVcCicLvDLikgtJRlkdPmyRoMSx0o3taoPsYoVZielo5EZpLiaLwuCNnCk2fRxAgPUa4+zGhZc2Z/BrOvK7sxcyIXEYRrZ8Ti2iNQJthNNb1CzSUXpdpSZtFi1jjiC45V0dlg/lSqrkRjyA9DpGbegt3WpO/6X+uc9vSAgR4f/0xNngTKzCfFV+fyUJXffpje9fQhQnecsTDjjc3aLiESqc3mx8MP6gHI9fS8z8PU72t+4tJxe8hjo7VWlInOVKV9zp9Tn+P4Ez1MebPJRlrwHGSVFsPhKct+CgzE+Q0B3vvcWyQfdJHeFCPWsTWmcCUoJf61fQO/3JwZI8YE3HET+NsRoxVHTl099LzWWCbrfT4uN3+O3VQbceLM+KxKCLVGNEHKlF8NHCIk4KCWhKNwhXvuMjf4GgtYbENFn1QbmiQFpYfIl8FA8PZVk7x+dzuROL4NpIKaBfrg34LQnxFpc2YCBnEsmsJVPybR5ZHC8eDL7JdVSg+FhvOxzBkvCeQjG8746/t0HJYPucisFCmP1isGpcn8Eku+BT/2XocHsUwpyo+RQoruWKwkLtnCHeaGSszqWzugSGXU4b4T2HB2yU9ORpt6uP+wbtc49GeMHrUGiO+w6BQm3TzPEZ0XMh4+8iayGhbd8T213C72sHpo5eCbv7C2zE/3dxHr2/+xtfstQFRuMPhq/r/4aqkeGKTwWEBcOwD1knlnbXo5OZsdvX9SeqF+mno/uDxZW00QqaWiQz89SWLGHtC4gjbE2wU2IpiGZMTOtNieOrjjCfdX3ZkrhA==,iv:Qn0nDrXRCOJaTJJBK6/PEGbhS1pbB0dTZYakgha5wJQ=,tag:8GeYWlsxgAGfFL61V5CwXg==,type:str] home-assistant: ENC[AES256_GCM,data:wcFMxDdRCHf/shO9v2WaGgrsa9J2WP62xFs=,iv:9ckeIO62cFZUo8fPyQj445CrJVTooNlwLapM/oTsrkk=,tag:mlfxtXDPsB3T79P9BX9oJQ==,type:str] @@ -27,8 +26,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-11-08T17:10:15Z" - mac: ENC[AES256_GCM,data:bCkqwd22O4K1Ivix4JWEY+RAiPB+8NP3y2KrDEeGXR3R03t6Xi2S+tXLKh9MBp0/jatUS2COs1tY0+hL2quC7rjpv25hufA+7oHA+jASgglD+5lKnc1OGpvBt4eMCszYorIKOP55glLLMn8WmYAPQm5PDPnfNtwZwEs1zmwffjA=,iv:YR38y2za5FrTr+t7hminVStO9/Z9zFbKoBRtuzrl+rI=,tag:ci5MZ2cjRjc8HYKJy11Jbg==,type:str] + lastmodified: "2024-11-14T23:31:19Z" + mac: ENC[AES256_GCM,data:0M0g9zxaeHDJS82HB+bUpK1txwf8Eojgg39NAl3phEsyGUalCLr8m/4JfAM58EUFfrmD89CJ5diIl8DGAaF4VSWDDOWDZ7q5Mlz2XDzIS9hM5HWOpSL2ZdhcUm+hu1YYwPrluCP27dEW0OMNxXorRPIVmougSYq0M2sw+xJ5hXE=,iv:9w6ojfH3Nnmg1DRvUjs5cZdcYz2f1uXNFw4FtPY8LtY=,tag:/LeqlUl0pOmwvobO/Cg0qw==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- @@ -42,4 +41,4 @@ sops: -----END PGP MESSAGE----- fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted - version: 3.8.1 + version: 3.9.1 diff --git a/hosts/iron/services/matrix.nix b/hosts/iron/services/matrix.nix index 93e413d..8cf62b5 100644 --- a/hosts/iron/services/matrix.nix +++ b/hosts/iron/services/matrix.nix @@ -11,19 +11,12 @@ in owner = "matrix-synapse"; sopsFile = ../secrets.yaml; }; - matrix-sliding-sync = { - sopsFile = ../secrets.yaml; - }; }; jalr.matrix = { enable = true; fqdn = "matrix.jalr.de"; domain = "jalr.de"; synapse.port = ports.matrix-synapse.tcp; - sliding-sync = { - port = ports.matrix-sliding-sync.tcp; - secretFile = config.sops.secrets.matrix-sliding-sync.path; - }; turn = { host = "turn.jalr.de"; sharedSecretFile = config.sops.secrets.synapse-turn-shared-secret.path; diff --git a/modules/matrix/default.nix b/modules/matrix/default.nix index 48dae11..d237ca5 100644 --- a/modules/matrix/default.nix +++ b/modules/matrix/default.nix @@ -21,16 +21,6 @@ in }; }; }; - sliding-sync = { - port = mkOption { - description = "TCP port for synapse service."; - type = port; - }; - secretFile = mkOption { - type = path; - description = "Location of the file to set secret environment variables."; - }; - }; fqdn = mkOption { type = str; description = '' @@ -92,7 +82,6 @@ in imports = [ ./mautrix-signal.nix ./mautrix-whatsapp.nix - ./sliding-sync.nix ./synapse.nix ]; } diff --git a/modules/matrix/sliding-sync.nix b/modules/matrix/sliding-sync.nix deleted file mode 100644 index 9ab2cba..0000000 --- a/modules/matrix/sliding-sync.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, lib, pkgs, ... }: - -let - cfg = config.jalr.matrix; -in -lib.mkIf cfg.enable { - services.matrix-sliding-sync = { - enable = true; - settings = { - SYNCV3_SERVER = "https://${cfg.fqdn}"; - SYNCV3_BINDADDR = "127.0.0.1:${toString cfg.sliding-sync.port}"; - }; - environmentFile = cfg.sliding-sync.secretFile; - }; - services.nginx.virtualHosts."${cfg.fqdn}".locations."/_matrix/client/unstable/org.matrix.msc3575/sync" = { - proxyPass = "http://127.0.0.1:${toString cfg.sliding-sync.port}"; - }; -} From 42929033eb20be88392edb2e524111557bf07df2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 15 Nov 2024 01:20:01 +0100 Subject: [PATCH 304/562] Fix TLS certificate handling --- hosts/magnesium/services/coturn.nix | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/hosts/magnesium/services/coturn.nix b/hosts/magnesium/services/coturn.nix index 93479ad..a6d3dd6 100644 --- a/hosts/magnesium/services/coturn.nix +++ b/hosts/magnesium/services/coturn.nix @@ -37,9 +37,6 @@ in no-tcp-relay = true; - cert = "/run/turnserver/fullchain.pem"; - pkey = "/run/turnserver/key.pem"; - no-cli = true; extraConfig = '' @@ -80,9 +77,19 @@ in systemd.services.coturn = { after = [ "acme-finished-${fqdn}.target" ]; serviceConfig = { - ExecStartPre = lib.singleton "!${pkgs.writeShellScript "coturn-setup-tls" '' - cp ${config.security.acme.certs."${fqdn}".directory}/{fullchain,key}.pem /run/turnserver/ - chgrp turnserver /run/turnserver/{fullchain,key}.pem + Environment = [ + "CERT_FILE=%d/fullchain.pem" + "KEY_FILE=%d/key.pem" + ]; + LoadCredential = [ + "fullchain.pem:${config.security.acme.certs."${fqdn}".directory}/fullchain.pem" + "key.pem:${config.security.acme.certs."${fqdn}".directory}/key.pem" + ]; + ExecStartPre = lib.singleton "${pkgs.writeShellScript "coturn-setup-tls" '' + cat >> /run/coturn/turnserver.cfg << EOF + cert="$CERT_FILE"; + pkey="$KEY_FILE"; + EOF ''}"; }; }; From 38edf234c2fb7f7fba6458afba600051767968af Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 18 Nov 2024 17:31:13 +0100 Subject: [PATCH 305/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/486250f404f4a4f4f33f8f669d83ca5f6e6b7dfc?narHash=sha256-cZ0QMpv5p2a6WEE%2Bo9uu0a4ma6RzQDOQTbm7PbixWz8%3D' (2024-11-10) → 'github:nix-community/disko/639d1520df9417ca2761536c3072688569e83c80?narHash=sha256-z76Q/OXLxO/RxMII3fIt/TG665DANiE2lVvnolK2lXk%3D' (2024-11-18) • Updated input 'flake-utils': 'github:numtide/flake-utils/c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a?narHash=sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ%3D' (2024-09-17) → 'github:numtide/flake-utils/11707dc2f618dd54ca8739b309ec4fc024de578b?narHash=sha256-l0KFg5HjrsfsO/JpG%2Br7fRrqm12kzFHyUHqHCVpMMbI%3D' (2024-11-13) • Updated input 'home-manager': 'github:nix-community/home-manager/5056a1cf0ce7c2a08ab50713b6c4af77975f6111?narHash=sha256-icDDuYwJ0avTMZTxe1qyU/Baht5JOqw4pb5mWpR%2BhT0%3D' (2024-11-17) → 'github:nix-community/home-manager/f3a2ff69586f3a54b461526e5702b1a2f81e740a?narHash=sha256-uw7K/RsYioJicV79Nl39yjtfhdfTDU2aRxnBgvFhkZ8%3D' (2024-11-17) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/f6581f1c3b137086e42a08a906bdada63045f991?narHash=sha256-T9V7CTucjRZ4Qc6pUEV/kpgNGzQbHWfGcfK6JJLfUeI%3D' (2024-11-12) → 'github:nixos/nixos-hardware/672ac2ac86f7dff2f6f3406405bddecf960e0db6?narHash=sha256-UhWmEZhwJZmVZ1jfHZFzCg%2BZLO9Tb/v3Y6LC0UNyeTo%3D' (2024-11-16) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/7937932921ea34c51c1b586e2505574f6f0be5a7?narHash=sha256-0KhJ6SOyWjx408tsgcoVQFx9nEn55DwrhFbCE49Oyac%3D' (2024-11-17) → 'github:nixos/nixpkgs/783008b28c589eb73873b764525c36cc6f61c44b?narHash=sha256-gVlLTGJNnF6GVV0PRCKoDZ8MrUdwz0QMtdX4d6Yyk5M%3D' (2024-11-18) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/3f7e0ddd7bed4b519c01301b5be762f6e7576d38?narHash=sha256-mRON3li1hSIkDk5u/DAr5Iv3QUMUiPHDIMaqVSOVTnc%3D' (2024-11-13) → 'github:NixOS/nixpkgs/45533e4b16bcdafbd28eec81cc959028e8e9982c?narHash=sha256-CJ9wMq1B%2BbtL0mhPfnh3omClJddnN2qbLox5rD/jgX4%3D' (2024-11-18) • Updated input 'nur': 'github:nix-community/NUR/4b0e599bebf4bdf6725cdf8036a335096bf13097?narHash=sha256-gFzX%2Be1ATJmhjOMvbBmqf1v4WgMz770dZhtGN4dZtng%3D' (2024-11-13) → 'github:nix-community/NUR/81041938c7f8e36c9e31947e7ba3baf098ffdaf8?narHash=sha256-eqT3tCnjxK7oXW3OQPZpwDCsRxYTHLtN81t47n/fSF4%3D' (2024-11-18) • Updated input 'sops-nix': 'github:Mic92/sops-nix/4c91d52db103e757fc25b58998b0576ae702d659?narHash=sha256-HC0anOL%2BKmUQ2hdRl0AtunbAckasxrkn4VLmxbW/WaA%3D' (2024-11-11) → 'github:Mic92/sops-nix/472741cf3fee089241ac9ea705bb2b9e0bfa2978?narHash=sha256-NVUTFxKrJp/hjehlF1IvkPnlRYg/O9HFVutbxOM8zNM%3D' (2024-11-17) • Removed input 'sops-nix/nixpkgs-stable' --- flake.lock | 67 ++++++++++++++++++++---------------------------------- 1 file changed, 25 insertions(+), 42 deletions(-) diff --git a/flake.lock b/flake.lock index 16c0ce6..8d60baa 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1731274291, - "narHash": "sha256-cZ0QMpv5p2a6WEE+o9uu0a4ma6RzQDOQTbm7PbixWz8=", + "lastModified": 1731895210, + "narHash": "sha256-z76Q/OXLxO/RxMII3fIt/TG665DANiE2lVvnolK2lXk=", "owner": "nix-community", "repo": "disko", - "rev": "486250f404f4a4f4f33f8f669d83ca5f6e6b7dfc", + "rev": "639d1520df9417ca2761536c3072688569e83c80", "type": "github" }, "original": { @@ -99,11 +99,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -203,11 +203,11 @@ ] }, "locked": { - "lastModified": 1731832479, - "narHash": "sha256-icDDuYwJ0avTMZTxe1qyU/Baht5JOqw4pb5mWpR+hT0=", + "lastModified": 1731887066, + "narHash": "sha256-uw7K/RsYioJicV79Nl39yjtfhdfTDU2aRxnBgvFhkZ8=", "owner": "nix-community", "repo": "home-manager", - "rev": "5056a1cf0ce7c2a08ab50713b6c4af77975f6111", + "rev": "f3a2ff69586f3a54b461526e5702b1a2f81e740a", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1731403644, - "narHash": "sha256-T9V7CTucjRZ4Qc6pUEV/kpgNGzQbHWfGcfK6JJLfUeI=", + "lastModified": 1731797098, + "narHash": "sha256-UhWmEZhwJZmVZ1jfHZFzCg+ZLO9Tb/v3Y6LC0UNyeTo=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "f6581f1c3b137086e42a08a906bdada63045f991", + "rev": "672ac2ac86f7dff2f6f3406405bddecf960e0db6", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1731858824, - "narHash": "sha256-0KhJ6SOyWjx408tsgcoVQFx9nEn55DwrhFbCE49Oyac=", + "lastModified": 1731945907, + "narHash": "sha256-gVlLTGJNnF6GVV0PRCKoDZ8MrUdwz0QMtdX4d6Yyk5M=", "owner": "nixos", "repo": "nixpkgs", - "rev": "7937932921ea34c51c1b586e2505574f6f0be5a7", + "rev": "783008b28c589eb73873b764525c36cc6f61c44b", "type": "github" }, "original": { @@ -376,29 +376,13 @@ "type": "github" } }, - "nixpkgs-stable_3": { - "locked": { - "lastModified": 1730602179, - "narHash": "sha256-efgLzQAWSzJuCLiCaQUCDu4NudNlHdg2NzGLX5GYaEY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3c2f1c4ca372622cb2f9de8016c9a0b1cbd0f37c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgsMaster": { "locked": { - "lastModified": 1731504820, - "narHash": "sha256-mRON3li1hSIkDk5u/DAr5Iv3QUMUiPHDIMaqVSOVTnc=", + "lastModified": 1731945831, + "narHash": "sha256-CJ9wMq1B+btL0mhPfnh3omClJddnN2qbLox5rD/jgX4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3f7e0ddd7bed4b519c01301b5be762f6e7576d38", + "rev": "45533e4b16bcdafbd28eec81cc959028e8e9982c", "type": "github" }, "original": { @@ -410,11 +394,11 @@ }, "nur": { "locked": { - "lastModified": 1731494868, - "narHash": "sha256-gFzX+e1ATJmhjOMvbBmqf1v4WgMz770dZhtGN4dZtng=", + "lastModified": 1731944891, + "narHash": "sha256-eqT3tCnjxK7oXW3OQPZpwDCsRxYTHLtN81t47n/fSF4=", "owner": "nix-community", "repo": "NUR", - "rev": "4b0e599bebf4bdf6725cdf8036a335096bf13097", + "rev": "81041938c7f8e36c9e31947e7ba3baf098ffdaf8", "type": "github" }, "original": { @@ -522,15 +506,14 @@ "inputs": { "nixpkgs": [ "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_3" + ] }, "locked": { - "lastModified": 1731364708, - "narHash": "sha256-HC0anOL+KmUQ2hdRl0AtunbAckasxrkn4VLmxbW/WaA=", + "lastModified": 1731862312, + "narHash": "sha256-NVUTFxKrJp/hjehlF1IvkPnlRYg/O9HFVutbxOM8zNM=", "owner": "Mic92", "repo": "sops-nix", - "rev": "4c91d52db103e757fc25b58998b0576ae702d659", + "rev": "472741cf3fee089241ac9ea705bb2b9e0bfa2978", "type": "github" }, "original": { From 920294917b19aed37967c2fd292b48986044e113 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 19 Nov 2024 19:34:57 +0100 Subject: [PATCH 306/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/639d1520df9417ca2761536c3072688569e83c80?narHash=sha256-z76Q/OXLxO/RxMII3fIt/TG665DANiE2lVvnolK2lXk%3D' (2024-11-18) → 'github:nix-community/disko/da52cf40206d7d1a419d07640eb47b2fb9ac2c21?narHash=sha256-SBosboLvLqDv%2B7mNgRTIYDQbHE61rDDkXTJWiRX3PPo%3D' (2024-11-19) • Updated input 'home-manager': 'github:nix-community/home-manager/f3a2ff69586f3a54b461526e5702b1a2f81e740a?narHash=sha256-uw7K/RsYioJicV79Nl39yjtfhdfTDU2aRxnBgvFhkZ8%3D' (2024-11-17) → 'github:nix-community/home-manager/a46e702093a5c46e192243edbd977d5749e7f294?narHash=sha256-qjEI64RKvDxRyEarY0jTzrZMa8ebezh2DEZmJJrpVdo%3D' (2024-11-19) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/cd1af27aa85026ac759d5d3fccf650abe7e1bbf0?narHash=sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf%2BInnSMT4jlMU%3D' (2024-11-11) → 'github:cachix/git-hooks.nix/3308484d1a443fc5bc92012435d79e80458fe43c?narHash=sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE%3D' (2024-11-19) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/783008b28c589eb73873b764525c36cc6f61c44b?narHash=sha256-gVlLTGJNnF6GVV0PRCKoDZ8MrUdwz0QMtdX4d6Yyk5M%3D' (2024-11-18) → 'github:nixos/nixpkgs/23f0925292d938d0682ddddf5696e2edb1d593f7?narHash=sha256-Fhxe9Yao1b4I8uq4fZ3o9Adv%2BhtAcFL4DO18bCvOkHU%3D' (2024-11-19) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/45533e4b16bcdafbd28eec81cc959028e8e9982c?narHash=sha256-CJ9wMq1B%2BbtL0mhPfnh3omClJddnN2qbLox5rD/jgX4%3D' (2024-11-18) → 'github:NixOS/nixpkgs/a254cdb551a3c095229a314a075bfcd9593b365e?narHash=sha256-3wkG87iMa13x0yGSumkC%2BGx4SNK7yWDTmolexXtW8MY%3D' (2024-11-19) • Updated input 'nur': 'github:nix-community/NUR/81041938c7f8e36c9e31947e7ba3baf098ffdaf8?narHash=sha256-eqT3tCnjxK7oXW3OQPZpwDCsRxYTHLtN81t47n/fSF4%3D' (2024-11-18) → 'github:nix-community/NUR/a2712ed4e2e98c0e86ebc074acb2af8248941cc8?narHash=sha256-83fCcCsW/f1DIBQoQfSvnp95L4WADvKTC%2BxMQFQ0RRI%3D' (2024-11-19) • Updated input 'sops-nix': 'github:Mic92/sops-nix/472741cf3fee089241ac9ea705bb2b9e0bfa2978?narHash=sha256-NVUTFxKrJp/hjehlF1IvkPnlRYg/O9HFVutbxOM8zNM%3D' (2024-11-17) → 'github:Mic92/sops-nix/e39947d0ee8e341fa7108bd02a33cdfa24a1360e?narHash=sha256-vvXx1m2Rsw7MkbKJdpcICzz4YPgZPApGKQGhNZfkhOI%3D' (2024-11-18) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 8d60baa..73b0642 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1731895210, - "narHash": "sha256-z76Q/OXLxO/RxMII3fIt/TG665DANiE2lVvnolK2lXk=", + "lastModified": 1732030699, + "narHash": "sha256-SBosboLvLqDv+7mNgRTIYDQbHE61rDDkXTJWiRX3PPo=", "owner": "nix-community", "repo": "disko", - "rev": "639d1520df9417ca2761536c3072688569e83c80", + "rev": "da52cf40206d7d1a419d07640eb47b2fb9ac2c21", "type": "github" }, "original": { @@ -203,11 +203,11 @@ ] }, "locked": { - "lastModified": 1731887066, - "narHash": "sha256-uw7K/RsYioJicV79Nl39yjtfhdfTDU2aRxnBgvFhkZ8=", + "lastModified": 1732025103, + "narHash": "sha256-qjEI64RKvDxRyEarY0jTzrZMa8ebezh2DEZmJJrpVdo=", "owner": "nix-community", "repo": "home-manager", - "rev": "f3a2ff69586f3a54b461526e5702b1a2f81e740a", + "rev": "a46e702093a5c46e192243edbd977d5749e7f294", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1731363552, - "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=", + "lastModified": 1732021966, + "narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0", + "rev": "3308484d1a443fc5bc92012435d79e80458fe43c", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1731945907, - "narHash": "sha256-gVlLTGJNnF6GVV0PRCKoDZ8MrUdwz0QMtdX4d6Yyk5M=", + "lastModified": 1732039841, + "narHash": "sha256-Fhxe9Yao1b4I8uq4fZ3o9Adv+htAcFL4DO18bCvOkHU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "783008b28c589eb73873b764525c36cc6f61c44b", + "rev": "23f0925292d938d0682ddddf5696e2edb1d593f7", "type": "github" }, "original": { @@ -378,11 +378,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1731945831, - "narHash": "sha256-CJ9wMq1B+btL0mhPfnh3omClJddnN2qbLox5rD/jgX4=", + "lastModified": 1732041242, + "narHash": "sha256-3wkG87iMa13x0yGSumkC+Gx4SNK7yWDTmolexXtW8MY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "45533e4b16bcdafbd28eec81cc959028e8e9982c", + "rev": "a254cdb551a3c095229a314a075bfcd9593b365e", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nur": { "locked": { - "lastModified": 1731944891, - "narHash": "sha256-eqT3tCnjxK7oXW3OQPZpwDCsRxYTHLtN81t47n/fSF4=", + "lastModified": 1732034903, + "narHash": "sha256-83fCcCsW/f1DIBQoQfSvnp95L4WADvKTC+xMQFQ0RRI=", "owner": "nix-community", "repo": "NUR", - "rev": "81041938c7f8e36c9e31947e7ba3baf098ffdaf8", + "rev": "a2712ed4e2e98c0e86ebc074acb2af8248941cc8", "type": "github" }, "original": { @@ -509,11 +509,11 @@ ] }, "locked": { - "lastModified": 1731862312, - "narHash": "sha256-NVUTFxKrJp/hjehlF1IvkPnlRYg/O9HFVutbxOM8zNM=", + "lastModified": 1731954233, + "narHash": "sha256-vvXx1m2Rsw7MkbKJdpcICzz4YPgZPApGKQGhNZfkhOI=", "owner": "Mic92", "repo": "sops-nix", - "rev": "472741cf3fee089241ac9ea705bb2b9e0bfa2978", + "rev": "e39947d0ee8e341fa7108bd02a33cdfa24a1360e", "type": "github" }, "original": { From 71e302547af1214b70e34ff1fb0e46a265d5a310 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 19 Nov 2024 22:09:41 +0100 Subject: [PATCH 307/562] Migrate to runner authentication token --- hosts/magnesium/services/gitlab-runner.nix | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/hosts/magnesium/services/gitlab-runner.nix b/hosts/magnesium/services/gitlab-runner.nix index 9f920eb..bc28c9f 100644 --- a/hosts/magnesium/services/gitlab-runner.nix +++ b/hosts/magnesium/services/gitlab-runner.nix @@ -17,13 +17,9 @@ description = "FabLab NEA Hetzner Cloud - labsync image builder"; limit = 5; executor = "docker+machine"; - registrationConfigFile = config.sops.secrets.gitlab-runner_fablab-nea-hcloud-labsync.path; + authenticationTokenConfigFile = config.sops.secrets.gitlab-runner_fablab-nea-hcloud-labsync.path; dockerImage = "quay.io/official-images/alpine:latest"; dockerPrivileged = true; - tagList = [ - "labsync-image" - ]; - maximumTimeout = 6 * 60 * 60; registrationFlags = [ "--docker-tlsverify" "--machine-idle-nodes 0" @@ -35,7 +31,7 @@ "--machine-machine-name gitlabrunner-%s" ] ++ (map (o: "--machine-machine-options=" + o) [ "hetzner-image=debian-12" - "hetzner-server-type=cx11" + "hetzner-server-type=cx22" "hetzner-server-location=nbg1" ]); }; From 1d714b04e6bf26d3c2ab4c9633ff169baebda3f3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 19 Nov 2024 22:27:24 +0100 Subject: [PATCH 308/562] Fix home-assistant-custom-components overlay --- pkgs/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index 54cca56..57b9529 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -25,7 +25,7 @@ in contact = callPackage ./contact-page { }; }; wofi-bluetooth = callPackage ./wofi-bluetooth/wofi-bluetooth.nix { }; - home-assistant-custom-components = prev.recurseIntoAttrs { + home-assistant-custom-components = prev.home-assistant-custom-components // { circadian_lighting = callPackage ./home-assistant-custom-components/circadian_lighting.nix { }; guntamatic = callPackage ./home-assistant-custom-components/guntamatic.nix { }; }; From 4489ec18a9e51d36e60fcac5e729b618741dcb90 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 19 Nov 2024 22:48:32 +0100 Subject: [PATCH 309/562] Replace circadian_lighting with adaptive_lighting --- hosts/iron/services/home-assistant.nix | 42 ++++++------------- pkgs/default.nix | 1 - .../circadian_lighting.nix | 19 --------- 3 files changed, 12 insertions(+), 50 deletions(-) delete mode 100644 pkgs/home-assistant-custom-components/circadian_lighting.nix diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index c7f304a..76cbac5 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -1,14 +1,6 @@ args@{ lib, pkgs, config, custom-utils, ... }: let ports = import ../ports.nix args; - circadian_lighting_lights = [ - "light.yeelight_meteorite_ceiling_light" - "light.eingang_deckenleuchte_deckenleuchte" - "light.led_panel_schreibtisch_panel" - "light.kueche_leiste_led_light" - "light.badspiegel_background_light" - "light.badspiegel_front_light" - ]; in { sops.secrets.home-assistant = { @@ -26,12 +18,6 @@ in path = "default_view"; title = "Home"; cards = [ - { - type = "entities"; - entities = [ - "switch.circadian_lighting_circadian_lighting" - ]; - } { title = "Eingang"; type = "entities"; @@ -72,8 +58,8 @@ in "openweathermap" "xiaomi_ble" ]; - customComponents = [ - pkgs.home-assistant-custom-components.circadian_lighting + customComponents = with pkgs.home-assistant-custom-components; [ + adaptive_lighting ]; lovelaceConfigWritable = false; configWritable = false; @@ -92,20 +78,16 @@ in latitude = config.location.latitude; }; default_config = { }; - circadian_lighting = { }; - switch = [ - { - platform = "circadian_lighting"; - lights_ct = circadian_lighting_lights; - disable_brightness_adjust = true; - name = "Set color temperature by Circadian Lighting"; - } - { - platform = "circadian_lighting"; - lights_brightness = circadian_lighting_lights; - name = "Set brightness by Circadian Lighting"; - } - ]; + adaptive_lighting = { + lights = [ + "light.yeelight_meteorite_ceiling_light" + "light.eingang_deckenleuchte_deckenleuchte" + "light.led_panel_schreibtisch_panel" + "light.kueche_leiste_led_light" + "light.badspiegel_background_light" + "light.badspiegel_front_light" + ]; + }; "automation nix" = [ { alias = "Waschmaschine fertig Benachrichtigung"; diff --git a/pkgs/default.nix b/pkgs/default.nix index 57b9529..dd3e989 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -26,7 +26,6 @@ in }; wofi-bluetooth = callPackage ./wofi-bluetooth/wofi-bluetooth.nix { }; home-assistant-custom-components = prev.home-assistant-custom-components // { - circadian_lighting = callPackage ./home-assistant-custom-components/circadian_lighting.nix { }; guntamatic = callPackage ./home-assistant-custom-components/guntamatic.nix { }; }; vimPlugins = prev.vimPlugins // { diff --git a/pkgs/home-assistant-custom-components/circadian_lighting.nix b/pkgs/home-assistant-custom-components/circadian_lighting.nix deleted file mode 100644 index 54316f7..0000000 --- a/pkgs/home-assistant-custom-components/circadian_lighting.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ lib -, fetchFromGitHub -, buildHomeAssistantComponent -}: - -buildHomeAssistantComponent rec { - owner = "claytonjn"; - domain = "circadian_lighting"; - version = "2.1.4"; - - src = fetchFromGitHub { - owner = "claytonjn"; - repo = "hass-circadian_lighting"; - rev = "refs/tags/${version}"; - hash = "sha256-F67JP5PzMblWpI4CvrHyutPenzVd9KyKeHcHx8rcezA="; - }; - - dontBuild = true; -} From dbb58edd7b1be043d9635a523f16ec3941ec604b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 19 Nov 2024 23:57:15 +0100 Subject: [PATCH 310/562] Add valetudo to home-assistant --- hosts/iron/ports.nix | 1 + hosts/iron/secrets.yaml | 7 +++-- hosts/iron/services/home-assistant.nix | 36 ++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 7fe675c..10760b1 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -9,6 +9,7 @@ custom-utils.validatePortAttrset { matrix-synapse.tcp = 8008; mautrix-signal.tcp = 29319; mautrix-whatsapp.tcp = 29318; + mqtt.tcp = 1883; navidrome.tcp = 4533; nginx-http.tcp = 80; nginx-https.tcp = 443; diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index ddada4a..7a87653 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -11,6 +11,9 @@ synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5 rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] esphome: ENC[AES256_GCM,data:QyPrVPhqvaCfx7oRmJ14EFpEIpQRwlLwTABK9qTP/wYcoflFsorNAmIoTiX/4KziQl050ByztnjIhrsxFx2dN6dv+RiLVWP+k0G63rfeS5gxe8QSgzsEtWWaUk3DE87i20DUusj1/B6yUsMApMohjaufuVzReL2MtVSVgtDUS6nVqGnRubrdujAxyRWvjQtamWBa1fjz39U876F10KMUYB+iGtObfNJGH18lAQ1arKEUQQSl8u1vNJuZiKqFhzxcu/IF6AhJgcKmCi2nrcEgbrv4ZwOcJ7+VG29qY7C4LCeAU4wOWJmtnCSf9osSwzR5hFco46L3Y8k0XXEOiEAJl+8ZLNKqQJpShh9wioMrj9XNpX/PvGCpBLTHsXTCGktDdbK/RLEGZnnL0s6If7Qs0XTwWZEe0q4IsltfdWJdZQWbvlY58ooUkK55wml/SlpuHgSdY6pOp/bOnBwvIrh/962DWtSXDxNnvps4Qy0eRUtpS2G6+rLIXXkq7KlSUg/A5XRNWbLGX5u7pJuvJ5xlldFW+tb1rqyrKXGIGra3Y6Ib4Z17znmajMSIeQItChj8UsOqlcHaCI5s8kDFjafJfpTTtAm0mj2cBFYmWHC/WR1YAtd2mrffr258CShtO+eeAqhSSTopIL637udKaY1Vto1dVReTmK24ANopQOaxnTtFjBdQaeluP4PAWrAGADBio1iwjsWIQlr0vnMjSBd0JcnW0Q3i+/5zhQfaEzZ6FQXOs05+l7ryLrGgBbyM2FRLTuAWBsv5yv3lz8FiSGVNaLMW5rofZpFvX0oa7P9HyU/RIpUzx307VBsIJlzrW2NgWvc9iLHLHWJDa7xcemGTvZDp/0BujYHeYYfVViPtVcCicLvDLikgtJRlkdPmyRoMSx0o3taoPsYoVZielo5EZpLiaLwuCNnCk2fRxAgPUa4+zGhZc2Z/BrOvK7sxcyIXEYRrZ8Ti2iNQJthNNb1CzSUXpdpSZtFi1jjiC45V0dlg/lSqrkRjyA9DpGbegt3WpO/6X+uc9vSAgR4f/0xNngTKzCfFV+fyUJXffpje9fQhQnecsTDjjc3aLiESqc3mx8MP6gHI9fS8z8PU72t+4tJxe8hjo7VWlInOVKV9zp9Tn+P4Ez1MebPJRlrwHGSVFsPhKct+CgzE+Q0B3vvcWyQfdJHeFCPWsTWmcCUoJf61fQO/3JwZI8YE3HET+NsRoxVHTl099LzWWCbrfT4uN3+O3VQbceLM+KxKCLVGNEHKlF8NHCIk4KCWhKNwhXvuMjf4GgtYbENFn1QbmiQFpYfIl8FA8PZVk7x+dzuROL4NpIKaBfrg34LQnxFpc2YCBnEsmsJVPybR5ZHC8eDL7JdVSg+FhvOxzBkvCeQjG8746/t0HJYPucisFCmP1isGpcn8Eku+BT/2XocHsUwpyo+RQoruWKwkLtnCHeaGSszqWzugSGXU4b4T2HB2yU9ORpt6uP+wbtc49GeMHrUGiO+w6BQm3TzPEZ0XMh4+8iayGhbd8T213C72sHpo5eCbv7C2zE/3dxHr2/+xtfstQFRuMPhq/r/4aqkeGKTwWEBcOwD1knlnbXo5OZsdvX9SeqF+mno/uDxZW00QqaWiQz89SWLGHtC4gjbE2wU2IpiGZMTOtNieOrjjCfdX3ZkrhA==,iv:Qn0nDrXRCOJaTJJBK6/PEGbhS1pbB0dTZYakgha5wJQ=,tag:8GeYWlsxgAGfFL61V5CwXg==,type:str] home-assistant: ENC[AES256_GCM,data:wcFMxDdRCHf/shO9v2WaGgrsa9J2WP62xFs=,iv:9ckeIO62cFZUo8fPyQj445CrJVTooNlwLapM/oTsrkk=,tag:mlfxtXDPsB3T79P9BX9oJQ==,type:str] +mqtt-users: + home-assistant: ENC[AES256_GCM,data:oIjCw7ZnA5iOBmQdW1jcy3QQnpjT32pY,iv:5HFRkXJBdMXQbjk2ubQs3sEy5qEteiqSe2hrNc8+H40=,tag:7B6yI4oCHanE0JE/gHaKnQ==,type:str] + valetudo: ENC[AES256_GCM,data:+HRz6X+A5dhmx43G99ka0u9VozuzOFWR,iv:SPw5yoiBqN7sBH5EofevacTtu45jmuTPqToKrar0aJ0=,tag:lf+usB/eNNP1yuWW/QyTqQ==,type:str] sops: kms: [] gcp_kms: [] @@ -26,8 +29,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-11-14T23:31:19Z" - mac: ENC[AES256_GCM,data:0M0g9zxaeHDJS82HB+bUpK1txwf8Eojgg39NAl3phEsyGUalCLr8m/4JfAM58EUFfrmD89CJ5diIl8DGAaF4VSWDDOWDZ7q5Mlz2XDzIS9hM5HWOpSL2ZdhcUm+hu1YYwPrluCP27dEW0OMNxXorRPIVmougSYq0M2sw+xJ5hXE=,iv:9w6ojfH3Nnmg1DRvUjs5cZdcYz2f1uXNFw4FtPY8LtY=,tag:/LeqlUl0pOmwvobO/Cg0qw==,type:str] + lastmodified: "2024-11-19T22:31:29Z" + mac: ENC[AES256_GCM,data:VEeLfkMhm/JiB+R/mWVHzoX7vtQHT+b+G14kNk0ri8PtJ9WtvaDJFs8zX87gaH/XUorOhR6+2uNyafyoKQGBtKlWFjpaFufTHp2V3pSJ2GF1MLKBR9DvAE6Js/Odpp7u7Gm7AVDP3Q4N1wZ6uhL3Abzedd4/OcYlEvtd1Vod0i0=,iv:dnwOokPPpaNhkmP1S2pZiaAdt6F7unc3ZA0D0zrdhz0=,tag:VTMzfGMpmqO4stnjFVaDUQ==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index 76cbac5..bc1627c 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -1,6 +1,7 @@ args@{ lib, pkgs, config, custom-utils, ... }: let ports = import ../ports.nix args; + interfaces = import ../interfaces.nix; in { sops.secrets.home-assistant = { @@ -9,6 +10,12 @@ in group = "hass"; mode = "0640"; }; + sops.secrets."mqtt-users/home-assistant" = { + sopsFile = ../secrets.yaml; + }; + sops.secrets."mqtt-users/valetudo" = { + sopsFile = ../secrets.yaml; + }; services.home-assistant = { enable = true; lovelaceConfig = { @@ -61,6 +68,9 @@ in customComponents = with pkgs.home-assistant-custom-components; [ adaptive_lighting ]; + customLovelaceModules = with pkgs.home-assistant-custom-lovelace-modules; [ + valetudo-map-card + ]; lovelaceConfigWritable = false; configWritable = false; config = { @@ -150,9 +160,35 @@ in url = "https://cal.jalr.de/radicale"; } ]; + mqtt = { }; }; }; + services.mosquitto = { + enable = true; + persistence = true; + listeners = [ + { + port = ports.mqtt.tcp; + users = { + valetudo = { + passwordFile = config.sops.secrets."mqtt-users/valetudo".path; + acl = [ + "readwrite homeassistant/+/donald/#" + "readwrite valetudo/donald/#" + ]; + }; + home-assistant = { + passwordFile = config.sops.secrets."mqtt-users/home-assistant".path; + acl = [ "readwrite #" ]; + }; + }; + } + ]; + }; + networking.firewall.interfaces."${interfaces.lan}".allowedTCPPorts = [ ports.mqtt.tcp ]; + networking.firewall.interfaces.iot.allowedTCPPorts = [ ports.mqtt.tcp ]; + systemd.services.home-assistant.serviceConfig.ExecStartPre = [ ( pkgs.writeShellScript "home-assistant-secrets" '' From dc658529b3ce23f235dbdf69fc5429d1c32b7ef0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 20 Nov 2024 00:13:30 +0100 Subject: [PATCH 311/562] Remove mosquitto This service is not used anymore. --- hosts/magnesium/ports.nix | 1 - hosts/magnesium/services/default.nix | 1 - hosts/magnesium/services/mosquitto.nix | 20 -------------------- 3 files changed, 22 deletions(-) delete mode 100644 hosts/magnesium/services/mosquitto.nix diff --git a/hosts/magnesium/ports.nix b/hosts/magnesium/ports.nix index a346a5f..a2cc556 100644 --- a/hosts/magnesium/ports.nix +++ b/hosts/magnesium/ports.nix @@ -7,7 +7,6 @@ custom-utils.validatePortAttrset { coturn-tls = { tcp = [ 5349 5350 ]; udp = [ 5349 5350 ]; }; forgejo-ssh.tcp = 2022; hedgedoc.tcp = 3000; - mosquitto.tcp = 1883; nginx-http.tcp = 80; nginx-https.tcp = 443; ntfy.tcp = 12474; diff --git a/hosts/magnesium/services/default.nix b/hosts/magnesium/services/default.nix index aba802f..33736cb 100644 --- a/hosts/magnesium/services/default.nix +++ b/hosts/magnesium/services/default.nix @@ -4,7 +4,6 @@ ./forgejo.nix ./gitlab-runner.nix ./hedgedoc.nix - ./mosquitto.nix ./ntfy.nix ./public-ip-tunnel.nix ./webserver.nix diff --git a/hosts/magnesium/services/mosquitto.nix b/hosts/magnesium/services/mosquitto.nix deleted file mode 100644 index e81027e..0000000 --- a/hosts/magnesium/services/mosquitto.nix +++ /dev/null @@ -1,20 +0,0 @@ -args@{ config, lib, pkgs, custom-utils, ... }: - -let - ports = import ../ports.nix args; -in -{ - services.mosquitto = { - enable = true; - persistence = true; - listeners = [ - { - port = ports.mosquitto.tcp; - settings = { - allow_anonymous = true; - }; - } - ]; - }; - networking.firewall.allowedTCPPorts = [ ports.mosquitto.tcp ]; -} From d8224b81b139d3a4ac0a11d75107a156004f333d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 21 Nov 2024 03:11:19 +0100 Subject: [PATCH 312/562] Add ota platform --- hosts/aluminium/services/esphome/devices/wasserbett.yaml | 3 ++- hosts/iron/services/esphome/devices/badspiegel.yaml | 3 ++- hosts/iron/services/esphome/devices/eingang-deckenleuchte.yaml | 3 ++- hosts/iron/services/esphome/devices/fussbodenheizung.yaml | 3 ++- hosts/iron/services/esphome/devices/kueche-leiste.yaml | 3 ++- .../iron/services/esphome/devices/led-panel-schreibtisch.yaml | 3 ++- hosts/iron/services/esphome/devices/pflanzenleuchte.yaml | 3 ++- hosts/iron/services/esphome/devices/pinspot.yaml | 3 ++- hosts/iron/services/esphome/devices/tuerschloss.yaml | 3 ++- hosts/iron/services/esphome/devices/tuersprechanlage.yaml | 3 ++- hosts/iron/services/esphome/devices/waschmaschine.yaml | 3 ++- hosts/iron/services/esphome/devices/yeelight-meteorite.yaml | 3 ++- 12 files changed, 24 insertions(+), 12 deletions(-) diff --git a/hosts/aluminium/services/esphome/devices/wasserbett.yaml b/hosts/aluminium/services/esphome/devices/wasserbett.yaml index d40b52e..8d0e6ab 100644 --- a/hosts/aluminium/services/esphome/devices/wasserbett.yaml +++ b/hosts/aluminium/services/esphome/devices/wasserbett.yaml @@ -14,7 +14,8 @@ api: key: !secret apikey_waterbed ota: - password: !secret otapass_waterbed + - platform: esphome + password: !secret otapass_waterbed wifi: ssid: !secret wifi_ssid_kbh diff --git a/hosts/iron/services/esphome/devices/badspiegel.yaml b/hosts/iron/services/esphome/devices/badspiegel.yaml index 71a2df6..74e451a 100644 --- a/hosts/iron/services/esphome/devices/badspiegel.yaml +++ b/hosts/iron/services/esphome/devices/badspiegel.yaml @@ -28,7 +28,8 @@ api: key: !secret apikey_badspiegel ota: - password: !secret otapass_badspiegel + - platform: esphome + password: !secret otapass_badspiegel wifi: ssid: !secret wifi_ssid_bw diff --git a/hosts/iron/services/esphome/devices/eingang-deckenleuchte.yaml b/hosts/iron/services/esphome/devices/eingang-deckenleuchte.yaml index b752069..b39f719 100644 --- a/hosts/iron/services/esphome/devices/eingang-deckenleuchte.yaml +++ b/hosts/iron/services/esphome/devices/eingang-deckenleuchte.yaml @@ -16,7 +16,8 @@ api: key: !secret apikey_eingang_deckenleuchte ota: - password: !secret otapass_eingang_deckenleuchte + - platform: esphome + password: !secret otapass_eingang_deckenleuchte wifi: ssid: !secret wifi_ssid_bw diff --git a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml index 618c606..7b0db38 100644 --- a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml +++ b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml @@ -14,7 +14,8 @@ api: key: !secret apikey_fussbodenheizung ota: - password: !secret otapass_fussbodenheizung + - platform: esphome + password: !secret otapass_fussbodenheizung wifi: ssid: !secret wifi_ssid_bw diff --git a/hosts/iron/services/esphome/devices/kueche-leiste.yaml b/hosts/iron/services/esphome/devices/kueche-leiste.yaml index 44bbd8d..434c137 100644 --- a/hosts/iron/services/esphome/devices/kueche-leiste.yaml +++ b/hosts/iron/services/esphome/devices/kueche-leiste.yaml @@ -23,7 +23,8 @@ api: key: !secret apikey_kueche_leiste ota: - password: !secret otapass_kueche_leiste + - platform: esphome + password: !secret otapass_kueche_leiste wifi: ssid: !secret wifi_ssid_bw diff --git a/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml b/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml index 737d62e..ceff0b0 100644 --- a/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml +++ b/hosts/iron/services/esphome/devices/led-panel-schreibtisch.yaml @@ -16,7 +16,8 @@ api: key: !secret apikey_panel_schreibtisch ota: - password: !secret otapass_panel_schreibtisch + - platform: esphome + password: !secret otapass_panel_schreibtisch wifi: ssid: !secret wifi_ssid_bw diff --git a/hosts/iron/services/esphome/devices/pflanzenleuchte.yaml b/hosts/iron/services/esphome/devices/pflanzenleuchte.yaml index d66b2b2..4c7af8b 100644 --- a/hosts/iron/services/esphome/devices/pflanzenleuchte.yaml +++ b/hosts/iron/services/esphome/devices/pflanzenleuchte.yaml @@ -17,7 +17,8 @@ api: key: !secret apikey_pflanzenleuchte ota: - password: !secret otapass_pflanzenleuchte + - platform: esphome + password: !secret otapass_pflanzenleuchte wifi: ssid: !secret wifi_ssid_bw diff --git a/hosts/iron/services/esphome/devices/pinspot.yaml b/hosts/iron/services/esphome/devices/pinspot.yaml index 98fc572..b7adc49 100644 --- a/hosts/iron/services/esphome/devices/pinspot.yaml +++ b/hosts/iron/services/esphome/devices/pinspot.yaml @@ -17,7 +17,8 @@ api: key: !secret apikey_pinspot ota: - password: !secret otapass_pinspot + - platform: esphome + password: !secret otapass_pinspot wifi: ssid: !secret wifi_ssid_bw diff --git a/hosts/iron/services/esphome/devices/tuerschloss.yaml b/hosts/iron/services/esphome/devices/tuerschloss.yaml index 71863cf..1560071 100644 --- a/hosts/iron/services/esphome/devices/tuerschloss.yaml +++ b/hosts/iron/services/esphome/devices/tuerschloss.yaml @@ -17,7 +17,8 @@ api: key: !secret apikey_tuerschloss ota: - password: !secret otapass_tuerschloss + - platform: esphome + password: !secret otapass_tuerschloss wifi: ssid: !secret wifi_ssid_bw diff --git a/hosts/iron/services/esphome/devices/tuersprechanlage.yaml b/hosts/iron/services/esphome/devices/tuersprechanlage.yaml index cc0ede7..49940a4 100644 --- a/hosts/iron/services/esphome/devices/tuersprechanlage.yaml +++ b/hosts/iron/services/esphome/devices/tuersprechanlage.yaml @@ -18,7 +18,8 @@ api: key: !secret apikey_tuersprechanlage ota: - password: !secret otapass_tuersprechanlage + - platform: esphome + password: !secret otapass_tuersprechanlage wifi: ssid: !secret wifi_ssid_bw diff --git a/hosts/iron/services/esphome/devices/waschmaschine.yaml b/hosts/iron/services/esphome/devices/waschmaschine.yaml index 82e25a3..fad1aea 100644 --- a/hosts/iron/services/esphome/devices/waschmaschine.yaml +++ b/hosts/iron/services/esphome/devices/waschmaschine.yaml @@ -7,7 +7,8 @@ api: key: !secret apikey_waschmaschine ota: - password: !secret otapass_waschmaschine + - platform: esphome + password: !secret otapass_waschmaschine wifi: ssid: !secret wifi_ssid_bw diff --git a/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml b/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml index e6b1a4b..54a5f14 100644 --- a/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml +++ b/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml @@ -24,7 +24,8 @@ api: key: !secret apikey_yeelight_meteorite ota: - password: !secret otapass_yeelight_meteorite + - platform: esphome + password: !secret otapass_yeelight_meteorite wifi: ssid: !secret wifi_ssid_bw From f08c879b4cf998d5b4172ce294dc69ca679cf295 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 21 Nov 2024 14:06:04 +0100 Subject: [PATCH 313/562] Use release-24.11 branch for home-manager --- flake.lock | 8 ++++---- flake.nix | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index 73b0642..e2afcb0 100644 --- a/flake.lock +++ b/flake.lock @@ -203,16 +203,16 @@ ] }, "locked": { - "lastModified": 1732025103, - "narHash": "sha256-qjEI64RKvDxRyEarY0jTzrZMa8ebezh2DEZmJJrpVdo=", + "lastModified": 1731880681, + "narHash": "sha256-FmYTkIyPBUxSWgA7DPIVTsCCMvSSbs56yOtHpLNSnKg=", "owner": "nix-community", "repo": "home-manager", - "rev": "a46e702093a5c46e192243edbd977d5749e7f294", + "rev": "aecd341dfead1c3ef7a3c15468ecd71e8343b7c6", "type": "github" }, "original": { "owner": "nix-community", - "ref": "master", + "ref": "release-24.11", "repo": "home-manager", "type": "github" } diff --git a/flake.nix b/flake.nix index 9f867d0..7b8b91e 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ gomod2nix.url = "github:nix-community/gomod2nix"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; - home-manager.url = "github:nix-community/home-manager/master"; + home-manager.url = "github:nix-community/home-manager/release-24.11"; krops.inputs.flake-utils.follows = "flake-utils"; krops.inputs.nixpkgs.follows = "nixpkgs"; From 3c63b586fad9269d323337a713508eea8616f3c6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 21 Nov 2024 14:07:08 +0100 Subject: [PATCH 314/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/da52cf40206d7d1a419d07640eb47b2fb9ac2c21?narHash=sha256-SBosboLvLqDv%2B7mNgRTIYDQbHE61rDDkXTJWiRX3PPo%3D' (2024-11-19) → 'github:nix-community/disko/a0c384e0a3b8bcaed30a6bcf3783f8a7c8b35be4?narHash=sha256-iYh6h8yueU8IyOfNclbiBG2%2BfBFcjjUfXm90ZBzk0c0%3D' (2024-11-20) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/23f0925292d938d0682ddddf5696e2edb1d593f7?narHash=sha256-Fhxe9Yao1b4I8uq4fZ3o9Adv%2BhtAcFL4DO18bCvOkHU%3D' (2024-11-19) → 'github:nixos/nixpkgs/30e58f735716fe27491e729912f21e20dcc66a99?narHash=sha256-wT6U8OJYx0V7NfrUcmQmOFzPJnvPDShGvdlvzFR7gmU%3D' (2024-11-21) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/a254cdb551a3c095229a314a075bfcd9593b365e?narHash=sha256-3wkG87iMa13x0yGSumkC%2BGx4SNK7yWDTmolexXtW8MY%3D' (2024-11-19) → 'github:NixOS/nixpkgs/87678783d01353aab40133d49f028c2c6960e4ff?narHash=sha256-rm9ykabuykurbgBPbQDpUJtTMQDRCPfBJESvzvJKAbo%3D' (2024-11-21) • Updated input 'nur': 'github:nix-community/NUR/a2712ed4e2e98c0e86ebc074acb2af8248941cc8?narHash=sha256-83fCcCsW/f1DIBQoQfSvnp95L4WADvKTC%2BxMQFQ0RRI%3D' (2024-11-19) → 'github:nix-community/NUR/5e67f4745975ab2e5111ca7ff6c3ae02e9a555b8?narHash=sha256-l4YncGn8Ee2v8DW3WqtKI4qHeGk7aUc3KoAPvwunC%2Bo%3D' (2024-11-21) • Updated input 'sops-nix': 'github:Mic92/sops-nix/e39947d0ee8e341fa7108bd02a33cdfa24a1360e?narHash=sha256-vvXx1m2Rsw7MkbKJdpcICzz4YPgZPApGKQGhNZfkhOI%3D' (2024-11-18) → 'github:Mic92/sops-nix/53c853fb1a7e4f25f68805ee25c83d5de18dc699?narHash=sha256-N9JGWe/T8BC0Tss2Cv30plvZUYoiRmykP7ZdY2on2b0%3D' (2024-11-21) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index e2afcb0..269e1c3 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1732030699, - "narHash": "sha256-SBosboLvLqDv+7mNgRTIYDQbHE61rDDkXTJWiRX3PPo=", + "lastModified": 1732109232, + "narHash": "sha256-iYh6h8yueU8IyOfNclbiBG2+fBFcjjUfXm90ZBzk0c0=", "owner": "nix-community", "repo": "disko", - "rev": "da52cf40206d7d1a419d07640eb47b2fb9ac2c21", + "rev": "a0c384e0a3b8bcaed30a6bcf3783f8a7c8b35be4", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732039841, - "narHash": "sha256-Fhxe9Yao1b4I8uq4fZ3o9Adv+htAcFL4DO18bCvOkHU=", + "lastModified": 1732194236, + "narHash": "sha256-wT6U8OJYx0V7NfrUcmQmOFzPJnvPDShGvdlvzFR7gmU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "23f0925292d938d0682ddddf5696e2edb1d593f7", + "rev": "30e58f735716fe27491e729912f21e20dcc66a99", "type": "github" }, "original": { @@ -378,11 +378,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1732041242, - "narHash": "sha256-3wkG87iMa13x0yGSumkC+Gx4SNK7yWDTmolexXtW8MY=", + "lastModified": 1732194398, + "narHash": "sha256-rm9ykabuykurbgBPbQDpUJtTMQDRCPfBJESvzvJKAbo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a254cdb551a3c095229a314a075bfcd9593b365e", + "rev": "87678783d01353aab40133d49f028c2c6960e4ff", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nur": { "locked": { - "lastModified": 1732034903, - "narHash": "sha256-83fCcCsW/f1DIBQoQfSvnp95L4WADvKTC+xMQFQ0RRI=", + "lastModified": 1732193657, + "narHash": "sha256-l4YncGn8Ee2v8DW3WqtKI4qHeGk7aUc3KoAPvwunC+o=", "owner": "nix-community", "repo": "NUR", - "rev": "a2712ed4e2e98c0e86ebc074acb2af8248941cc8", + "rev": "5e67f4745975ab2e5111ca7ff6c3ae02e9a555b8", "type": "github" }, "original": { @@ -509,11 +509,11 @@ ] }, "locked": { - "lastModified": 1731954233, - "narHash": "sha256-vvXx1m2Rsw7MkbKJdpcICzz4YPgZPApGKQGhNZfkhOI=", + "lastModified": 1732186149, + "narHash": "sha256-N9JGWe/T8BC0Tss2Cv30plvZUYoiRmykP7ZdY2on2b0=", "owner": "Mic92", "repo": "sops-nix", - "rev": "e39947d0ee8e341fa7108bd02a33cdfa24a1360e", + "rev": "53c853fb1a7e4f25f68805ee25c83d5de18dc699", "type": "github" }, "original": { From 5c4890aa860c70972897d9092065c80cbbe69480 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 27 Nov 2024 16:47:45 +0100 Subject: [PATCH 315/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/a0c384e0a3b8bcaed30a6bcf3783f8a7c8b35be4?narHash=sha256-iYh6h8yueU8IyOfNclbiBG2%2BfBFcjjUfXm90ZBzk0c0%3D' (2024-11-20) → 'github:nix-community/disko/869ba3a87486289a4197b52a6c9e7222edf00b3e?narHash=sha256-%2B4U2I2653JvPFxcux837ulwYS864QvEueIljUkwytsk%3D' (2024-11-26) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/5d387097aa716f35dd99d848dc26d8d5b62a104c?narHash=sha256-oquZeWTYWTr5IxfwEzgsxjtD8SSFZYLdO9DaQb70vNU%3D' (2024-10-20) → 'github:nix-community/gomod2nix/f11423d1a082d83710275913f05b2a0b606f5aed?narHash=sha256-i3FpT1w4x1hNZSKj20Rt2qHQvp1xp3Dz9rCPeSIQp0s%3D' (2024-11-25) • Updated input 'home-manager': 'github:nix-community/home-manager/aecd341dfead1c3ef7a3c15468ecd71e8343b7c6?narHash=sha256-FmYTkIyPBUxSWgA7DPIVTsCCMvSSbs56yOtHpLNSnKg%3D' (2024-11-17) → 'github:nix-community/home-manager/f3111f62a23451114433888902a55cf0692b408d?narHash=sha256-T1e5oceypZu3Q8vzICjv1X/sGs9XfJRMW5OuXHgpB3c%3D' (2024-11-24) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/672ac2ac86f7dff2f6f3406405bddecf960e0db6?narHash=sha256-UhWmEZhwJZmVZ1jfHZFzCg%2BZLO9Tb/v3Y6LC0UNyeTo%3D' (2024-11-16) → 'github:nixos/nixos-hardware/45348ad6fb8ac0e8415f6e5e96efe47dd7f39405?narHash=sha256-kF6rDeCshoCgmQz%2B7uiuPdREVFuzhIorGOoPXMalL2U%3D' (2024-11-24) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/30e58f735716fe27491e729912f21e20dcc66a99?narHash=sha256-wT6U8OJYx0V7NfrUcmQmOFzPJnvPDShGvdlvzFR7gmU%3D' (2024-11-21) → 'github:nixos/nixpkgs/f0fbc84ad2072de534b2981f0221ec7f6e239dd3?narHash=sha256-%2BeZwR8P6DsnyA5ySzloUcdMU9mJ7tu6N9oGHTn%2BvFJc%3D' (2024-11-27) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/87678783d01353aab40133d49f028c2c6960e4ff?narHash=sha256-rm9ykabuykurbgBPbQDpUJtTMQDRCPfBJESvzvJKAbo%3D' (2024-11-21) → 'github:NixOS/nixpkgs/6490fd94d60c5d666efb35bc1f022e7dfa379090?narHash=sha256-%2BFjR11WTPjTAAwLK%2BDxfOtjbsgPRdaeF7egW2S15Mz0%3D' (2024-11-27) • Updated input 'nur': 'github:nix-community/NUR/5e67f4745975ab2e5111ca7ff6c3ae02e9a555b8?narHash=sha256-l4YncGn8Ee2v8DW3WqtKI4qHeGk7aUc3KoAPvwunC%2Bo%3D' (2024-11-21) → 'github:nix-community/NUR/f2a9aa0e0cff734ea2ee8528aa97c2f367b92647?narHash=sha256-itN6gokrJekkGJ1bBduDxqc0NeZVDEPwGM1eBk89268%3D' (2024-11-27) • Updated input 'sops-nix': 'github:Mic92/sops-nix/53c853fb1a7e4f25f68805ee25c83d5de18dc699?narHash=sha256-N9JGWe/T8BC0Tss2Cv30plvZUYoiRmykP7ZdY2on2b0%3D' (2024-11-21) → 'github:Mic92/sops-nix/3433ea14fbd9e6671d0ff0dd45ed15ee4c156ffa?narHash=sha256-xtt95%2Bc7OUMoqZf4OvA/7AemiH3aVuWHQbErYQoPwFk%3D' (2024-11-25) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 269e1c3..e9ef20a 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1732109232, - "narHash": "sha256-iYh6h8yueU8IyOfNclbiBG2+fBFcjjUfXm90ZBzk0c0=", + "lastModified": 1732645828, + "narHash": "sha256-+4U2I2653JvPFxcux837ulwYS864QvEueIljUkwytsk=", "owner": "nix-community", "repo": "disko", - "rev": "a0c384e0a3b8bcaed30a6bcf3783f8a7c8b35be4", + "rev": "869ba3a87486289a4197b52a6c9e7222edf00b3e", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1729448365, - "narHash": "sha256-oquZeWTYWTr5IxfwEzgsxjtD8SSFZYLdO9DaQb70vNU=", + "lastModified": 1732540042, + "narHash": "sha256-i3FpT1w4x1hNZSKj20Rt2qHQvp1xp3Dz9rCPeSIQp0s=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "5d387097aa716f35dd99d848dc26d8d5b62a104c", + "rev": "f11423d1a082d83710275913f05b2a0b606f5aed", "type": "github" }, "original": { @@ -203,11 +203,11 @@ ] }, "locked": { - "lastModified": 1731880681, - "narHash": "sha256-FmYTkIyPBUxSWgA7DPIVTsCCMvSSbs56yOtHpLNSnKg=", + "lastModified": 1732466619, + "narHash": "sha256-T1e5oceypZu3Q8vzICjv1X/sGs9XfJRMW5OuXHgpB3c=", "owner": "nix-community", "repo": "home-manager", - "rev": "aecd341dfead1c3ef7a3c15468ecd71e8343b7c6", + "rev": "f3111f62a23451114433888902a55cf0692b408d", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1731797098, - "narHash": "sha256-UhWmEZhwJZmVZ1jfHZFzCg+ZLO9Tb/v3Y6LC0UNyeTo=", + "lastModified": 1732483221, + "narHash": "sha256-kF6rDeCshoCgmQz+7uiuPdREVFuzhIorGOoPXMalL2U=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "672ac2ac86f7dff2f6f3406405bddecf960e0db6", + "rev": "45348ad6fb8ac0e8415f6e5e96efe47dd7f39405", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732194236, - "narHash": "sha256-wT6U8OJYx0V7NfrUcmQmOFzPJnvPDShGvdlvzFR7gmU=", + "lastModified": 1732719247, + "narHash": "sha256-+eZwR8P6DsnyA5ySzloUcdMU9mJ7tu6N9oGHTn+vFJc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "30e58f735716fe27491e729912f21e20dcc66a99", + "rev": "f0fbc84ad2072de534b2981f0221ec7f6e239dd3", "type": "github" }, "original": { @@ -378,11 +378,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1732194398, - "narHash": "sha256-rm9ykabuykurbgBPbQDpUJtTMQDRCPfBJESvzvJKAbo=", + "lastModified": 1732721025, + "narHash": "sha256-+FjR11WTPjTAAwLK+DxfOtjbsgPRdaeF7egW2S15Mz0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "87678783d01353aab40133d49f028c2c6960e4ff", + "rev": "6490fd94d60c5d666efb35bc1f022e7dfa379090", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nur": { "locked": { - "lastModified": 1732193657, - "narHash": "sha256-l4YncGn8Ee2v8DW3WqtKI4qHeGk7aUc3KoAPvwunC+o=", + "lastModified": 1732712909, + "narHash": "sha256-itN6gokrJekkGJ1bBduDxqc0NeZVDEPwGM1eBk89268=", "owner": "nix-community", "repo": "NUR", - "rev": "5e67f4745975ab2e5111ca7ff6c3ae02e9a555b8", + "rev": "f2a9aa0e0cff734ea2ee8528aa97c2f367b92647", "type": "github" }, "original": { @@ -509,11 +509,11 @@ ] }, "locked": { - "lastModified": 1732186149, - "narHash": "sha256-N9JGWe/T8BC0Tss2Cv30plvZUYoiRmykP7ZdY2on2b0=", + "lastModified": 1732575825, + "narHash": "sha256-xtt95+c7OUMoqZf4OvA/7AemiH3aVuWHQbErYQoPwFk=", "owner": "Mic92", "repo": "sops-nix", - "rev": "53c853fb1a7e4f25f68805ee25c83d5de18dc699", + "rev": "3433ea14fbd9e6671d0ff0dd45ed15ee4c156ffa", "type": "github" }, "original": { From 813bd64820095dc1ea352c18d0a0d621589806c6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 28 Nov 2024 00:49:44 +0100 Subject: [PATCH 316/562] Add bthome --- hosts/iron/services/home-assistant.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index bc1627c..e6319fe 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -59,6 +59,7 @@ in }; extraComponents = [ # See https://www.home-assistant.io/integrations + "bthome" "caldav" "esphome" "local_todo" From c1486a7ffecd2f2be9ce32bc90457200822cd6e6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 28 Nov 2024 00:44:55 +0100 Subject: [PATCH 317/562] Add sensor to bedroom --- .../services/esphome/devices/fussbodenheizung.yaml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml index 7b0db38..623b378 100644 --- a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml +++ b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml @@ -83,6 +83,12 @@ sensor: - platform: homeassistant id: humidity_bathroom entity_id: sensor.badspiegel_feuchtigkeit + - platform: homeassistant + entity_id: sensor.bthome_sensor_e8e8_temperature + id: temperature_bedroom + - platform: homeassistant + entity_id: sensor.bthome_sensor_e8e8_humidity + id: humidity_bedroom climate: - platform: thermostat @@ -107,10 +113,8 @@ climate: default_target_temperature_low: 16 °C - platform: thermostat name: "Schlafzimmer" - #sensor: heating_livingroom - #humidity_sensor: - sensor: temperature_local # FIXME - humidity_sensor: humidity # FIXME + sensor: temperature_bedroom + humidity_sensor: humidity_bedroom min_heating_off_time: 1s min_heating_run_time: 1s min_idle_time: 30s From 36d58100de0a55c62cec9d9f243d32bb31a26cd5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 28 Nov 2024 00:45:26 +0100 Subject: [PATCH 318/562] Add presets --- .../esphome/devices/fussbodenheizung.yaml | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml index 623b378..0e9019a 100644 --- a/hosts/iron/services/esphome/devices/fussbodenheizung.yaml +++ b/hosts/iron/services/esphome/devices/fussbodenheizung.yaml @@ -102,13 +102,15 @@ climate: - switch.turn_on: relay_1 idle_action: - switch.turn_off: relay_1 - default_preset: zuhause + default_preset: tag on_boot_restore_from: memory preset: - name: morgens default_target_temperature_low: 23 °C - - name: zuhause + - name: tag default_target_temperature_low: 20 °C + - name: nacht + default_target_temperature_low: 18 °C - name: abwesend default_target_temperature_low: 16 °C - platform: thermostat @@ -122,11 +124,13 @@ climate: - switch.turn_on: relay_2 idle_action: - switch.turn_off: relay_2 - default_preset: zuhause + default_preset: tag on_boot_restore_from: memory preset: - - name: zuhause - default_target_temperature_low: 16 °C + - name: tag + default_target_temperature_low: 22 °C + - name: nacht + default_target_temperature_low: 18 °C - name: abwesend default_target_temperature_low: 15 °C - platform: thermostat @@ -140,11 +144,13 @@ climate: - switch.turn_on: relay_3 idle_action: - switch.turn_off: relay_3 - default_preset: zuhause + default_preset: tag on_boot_restore_from: memory preset: - - name: zuhause - default_target_temperature_low: 18 °C + - name: tag + default_target_temperature_low: 19 °C + - name: nacht + default_target_temperature_low: 17 °C - name: abwesend default_target_temperature_low: 16 °C - platform: thermostat @@ -158,11 +164,13 @@ climate: - switch.turn_on: relay_4 idle_action: - switch.turn_off: relay_4 - default_preset: zuhause + default_preset: tag on_boot_restore_from: memory preset: - - name: zuhause + - name: tag default_target_temperature_low: 19 °C + - name: nacht + default_target_temperature_low: 17 °C - name: abwesend default_target_temperature_low: 16 °C - platform: thermostat @@ -176,10 +184,12 @@ climate: - switch.turn_on: relay_5 idle_action: - switch.turn_off: relay_5 - default_preset: zuhause + default_preset: tag on_boot_restore_from: memory preset: - - name: zuhause - default_target_temperature_low: 20 °C + - name: tag + default_target_temperature_low: 21 °C + - name: nacht + default_target_temperature_low: 19 °C - name: abwesend default_target_temperature_low: 16 °C From c989ffaeba4ef2335953c168b9987917f572e2f5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 28 Nov 2024 00:46:39 +0100 Subject: [PATCH 319/562] Add extraHosts example --- hosts/copper/configuration.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index 56d4a18..e468384 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -1,3 +1,5 @@ +{ lib, ... }: + { imports = [ ./hardware-configuration.nix @@ -8,6 +10,15 @@ networking = { hostName = "copper"; + extraHosts = lib.concatStringsSep "\n" ( + lib.attrsets.mapAttrsToList + (addr: hosts: + lib.concatStringsSep " " ([ addr ] ++ hosts) + ) + { + #"192.0.2.1" = ["example.com"]; + } + ); }; zramSwap = { From 2ea65edb28b2ab33fbefb07f94625a069befcfde Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 28 Nov 2024 00:48:28 +0100 Subject: [PATCH 320/562] Allow DNS and DHCP on virbr0 --- hosts/copper/configuration.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index e468384..db1152b 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -19,6 +19,8 @@ #"192.0.2.1" = ["example.com"]; } ); + firewall.interfaces.virbr0.allowedTCPPorts = [ 53 ]; + firewall.interfaces.virbr0.allowedUDPPorts = [ 53 67 ]; }; zramSwap = { From 8e88a26cf98ef8840fba6d7f26eff35d60d152b5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 28 Nov 2024 00:54:37 +0100 Subject: [PATCH 321/562] Rename iproute to iproute2 --- users/jalr/modules/sway/waybar.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index f388388..c851c5f 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -180,7 +180,7 @@ in "custom/vpn" = { interval = 10; exec = pkgs.writeShellScript "vpn-state" '' - ${pkgs.iproute}/bin/ip -j link \ + ${pkgs.iproute2}/bin/ip -j link \ | ${pkgs.jq}/bin/jq --unbuffered --compact-output ' [[.[].ifname | select(. | startswith("mullvad"))][] | split("-")[1] + " 󰌾${thinsp}"] as $conns | { text: ($conns[0] // ""), class: (if $conns | length > 0 then "connected" else "disconnected" end) }' From 4571c2b24aa8f29721afef2e58bbe8ab5485cee9 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 3 Dec 2024 22:20:58 +0100 Subject: [PATCH 322/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/869ba3a87486289a4197b52a6c9e7222edf00b3e?narHash=sha256-%2B4U2I2653JvPFxcux837ulwYS864QvEueIljUkwytsk%3D' (2024-11-26) → 'github:nix-community/disko/785c1e02c7e465375df971949b8dcbde9ec362e5?narHash=sha256-8dupm9GfK%2BBowGdQd7EHK5V61nneLfr9xR6sc5vtDi0%3D' (2024-12-02) • Updated input 'home-manager': 'github:nix-community/home-manager/f3111f62a23451114433888902a55cf0692b408d?narHash=sha256-T1e5oceypZu3Q8vzICjv1X/sGs9XfJRMW5OuXHgpB3c%3D' (2024-11-24) → 'github:nix-community/home-manager/62d536255879be574ebfe9b87c4ac194febf47c5?narHash=sha256-lYnT%2BEYE47f5yY3KS/Kd4pJ6CO9fhCqumkYYkQ3TK20%3D' (2024-12-01) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/45348ad6fb8ac0e8415f6e5e96efe47dd7f39405?narHash=sha256-kF6rDeCshoCgmQz%2B7uiuPdREVFuzhIorGOoPXMalL2U%3D' (2024-11-24) → 'github:nixos/nixos-hardware/cceee0a31d2f01bcc98b2fbd591327c06a4ea4f9?narHash=sha256-fc6jTzIwCIVWTX50FtW6AZpuukuQWSEbPiyg6ZRGWFY%3D' (2024-12-03) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/f0fbc84ad2072de534b2981f0221ec7f6e239dd3?narHash=sha256-%2BeZwR8P6DsnyA5ySzloUcdMU9mJ7tu6N9oGHTn%2BvFJc%3D' (2024-11-27) → 'github:nixos/nixpkgs/6a6f5974bd2e78895e75c03f8734036d40f177f2?narHash=sha256-qsU2nHl/LEAmBY/tNZyxwzTh3ym3oyZRKthyk%2BHv3ow%3D' (2024-12-03) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/6490fd94d60c5d666efb35bc1f022e7dfa379090?narHash=sha256-%2BFjR11WTPjTAAwLK%2BDxfOtjbsgPRdaeF7egW2S15Mz0%3D' (2024-11-27) → 'github:NixOS/nixpkgs/229da450d6f628a9444c6d39d4b2349ea53b7e44?narHash=sha256-FgJ2/ateQWwLA78ERfCUIrzaZ/X5AaCOSWLq8I2hfCw%3D' (2024-12-03) • Updated input 'nur': 'github:nix-community/NUR/f2a9aa0e0cff734ea2ee8528aa97c2f367b92647?narHash=sha256-itN6gokrJekkGJ1bBduDxqc0NeZVDEPwGM1eBk89268%3D' (2024-11-27) → 'github:nix-community/NUR/0c7ae4a63afbc6c305e401a06191380027f5ec73?narHash=sha256-Uem1KaDdvbHcTxii4t1fuuFsJlC7WeEjmXH%2Bi1ElR/I%3D' (2024-12-03) • Updated input 'sops-nix': 'github:Mic92/sops-nix/3433ea14fbd9e6671d0ff0dd45ed15ee4c156ffa?narHash=sha256-xtt95%2Bc7OUMoqZf4OvA/7AemiH3aVuWHQbErYQoPwFk%3D' (2024-11-25) → 'github:Mic92/sops-nix/c6134b6fff6bda95a1ac872a2a9d5f32e3c37856?narHash=sha256-m6/qwJAJYcidGMEdLqjKzRIjapK4nUfMq7rDCTmZajc%3D' (2024-12-02) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index e9ef20a..a615154 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1732645828, - "narHash": "sha256-+4U2I2653JvPFxcux837ulwYS864QvEueIljUkwytsk=", + "lastModified": 1733168902, + "narHash": "sha256-8dupm9GfK+BowGdQd7EHK5V61nneLfr9xR6sc5vtDi0=", "owner": "nix-community", "repo": "disko", - "rev": "869ba3a87486289a4197b52a6c9e7222edf00b3e", + "rev": "785c1e02c7e465375df971949b8dcbde9ec362e5", "type": "github" }, "original": { @@ -203,11 +203,11 @@ ] }, "locked": { - "lastModified": 1732466619, - "narHash": "sha256-T1e5oceypZu3Q8vzICjv1X/sGs9XfJRMW5OuXHgpB3c=", + "lastModified": 1733050161, + "narHash": "sha256-lYnT+EYE47f5yY3KS/Kd4pJ6CO9fhCqumkYYkQ3TK20=", "owner": "nix-community", "repo": "home-manager", - "rev": "f3111f62a23451114433888902a55cf0692b408d", + "rev": "62d536255879be574ebfe9b87c4ac194febf47c5", "type": "github" }, "original": { @@ -314,11 +314,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1732483221, - "narHash": "sha256-kF6rDeCshoCgmQz+7uiuPdREVFuzhIorGOoPXMalL2U=", + "lastModified": 1733217105, + "narHash": "sha256-fc6jTzIwCIVWTX50FtW6AZpuukuQWSEbPiyg6ZRGWFY=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "45348ad6fb8ac0e8415f6e5e96efe47dd7f39405", + "rev": "cceee0a31d2f01bcc98b2fbd591327c06a4ea4f9", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732719247, - "narHash": "sha256-+eZwR8P6DsnyA5ySzloUcdMU9mJ7tu6N9oGHTn+vFJc=", + "lastModified": 1733260348, + "narHash": "sha256-qsU2nHl/LEAmBY/tNZyxwzTh3ym3oyZRKthyk+Hv3ow=", "owner": "nixos", "repo": "nixpkgs", - "rev": "f0fbc84ad2072de534b2981f0221ec7f6e239dd3", + "rev": "6a6f5974bd2e78895e75c03f8734036d40f177f2", "type": "github" }, "original": { @@ -378,11 +378,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1732721025, - "narHash": "sha256-+FjR11WTPjTAAwLK+DxfOtjbsgPRdaeF7egW2S15Mz0=", + "lastModified": 1733260817, + "narHash": "sha256-FgJ2/ateQWwLA78ERfCUIrzaZ/X5AaCOSWLq8I2hfCw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6490fd94d60c5d666efb35bc1f022e7dfa379090", + "rev": "229da450d6f628a9444c6d39d4b2349ea53b7e44", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nur": { "locked": { - "lastModified": 1732712909, - "narHash": "sha256-itN6gokrJekkGJ1bBduDxqc0NeZVDEPwGM1eBk89268=", + "lastModified": 1733260004, + "narHash": "sha256-Uem1KaDdvbHcTxii4t1fuuFsJlC7WeEjmXH+i1ElR/I=", "owner": "nix-community", "repo": "NUR", - "rev": "f2a9aa0e0cff734ea2ee8528aa97c2f367b92647", + "rev": "0c7ae4a63afbc6c305e401a06191380027f5ec73", "type": "github" }, "original": { @@ -509,11 +509,11 @@ ] }, "locked": { - "lastModified": 1732575825, - "narHash": "sha256-xtt95+c7OUMoqZf4OvA/7AemiH3aVuWHQbErYQoPwFk=", + "lastModified": 1733128155, + "narHash": "sha256-m6/qwJAJYcidGMEdLqjKzRIjapK4nUfMq7rDCTmZajc=", "owner": "Mic92", "repo": "sops-nix", - "rev": "3433ea14fbd9e6671d0ff0dd45ed15ee4c156ffa", + "rev": "c6134b6fff6bda95a1ac872a2a9d5f32e3c37856", "type": "github" }, "original": { From 691795d60e78363aeb7efb1ed713411adb8577a9 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 4 Dec 2024 03:55:17 +0100 Subject: [PATCH 323/562] Update USB RAM disk device path --- hosts/iron/configuration.nix | 2 +- justfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index d8e1203..121eedb 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -138,7 +138,7 @@ with lib; { device = "${devNodes}${dev}${partitionScheme.luksDev}"; allowDiscards = true; keyFileSize = 4096; - keyFile = "/dev/disk/by-id/usb-jalr_RAM_Mass_Storage_DE6270431F6F342C-0:0"; + keyFile = "/dev/disk/by-id/usb-jalr_USB_RAM_disk_prototype-01-0:0"; keyFileTimeout = 60; }; }) diff --git a/justfile b/justfile index 715cff1..6186025 100644 --- a/justfile +++ b/justfile @@ -1,4 +1,4 @@ -usb_ram_disk := "/dev/disk/by-id/usb-jalr_RAM_Mass_Storage_DE6270431F6F342C-0:0" +usb_ram_disk := "/dev/disk/by-id/usb-jalr_USB_RAM_disk_prototype-01-0:0" boot: nixos-rebuild boot --flake . --use-remote-sudo From 1832142b4ee4c9c7c61b763cc7938ed9a36bfb31 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 5 Dec 2024 14:34:33 +0100 Subject: [PATCH 324/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/3308484d1a443fc5bc92012435d79e80458fe43c?narHash=sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE%3D' (2024-11-19) → 'github:cachix/git-hooks.nix/6f4e2a2112050951a314d2733a994fbab94864c6?narHash=sha256-SVQVsbafSM1dJ4fpgyBqLZ%2BLft%2BjcQuMtEL3lQWx2Sk%3D' (2024-12-04) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/6a6f5974bd2e78895e75c03f8734036d40f177f2?narHash=sha256-qsU2nHl/LEAmBY/tNZyxwzTh3ym3oyZRKthyk%2BHv3ow%3D' (2024-12-03) → 'github:nixos/nixpkgs/c88114f800b48eeecd1b3a6413091f01b08f3539?narHash=sha256-QcLFaG3MnQ4yKxXg7UZKsOkKrQh3iTixWOm0BWve2VE%3D' (2024-12-05) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/229da450d6f628a9444c6d39d4b2349ea53b7e44?narHash=sha256-FgJ2/ateQWwLA78ERfCUIrzaZ/X5AaCOSWLq8I2hfCw%3D' (2024-12-03) → 'github:NixOS/nixpkgs/9894aea69bfd7e4f04ce35fded6f2ec9d2d9a1a2?narHash=sha256-zm8HdU5Hm7yhAxQrvV2VNUBLbHM4X1deInfCfAE58rA%3D' (2024-12-05) • Updated input 'nur': 'github:nix-community/NUR/0c7ae4a63afbc6c305e401a06191380027f5ec73?narHash=sha256-Uem1KaDdvbHcTxii4t1fuuFsJlC7WeEjmXH%2Bi1ElR/I%3D' (2024-12-03) → 'github:nix-community/NUR/e6098b0360b6436634f3604c134e99b608a8c252?narHash=sha256-AEBmhobRo6PcvaZn9oEfjsQ/NElKBIBj8Va7sivSyzw%3D' (2024-12-05) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index a615154..044d128 100644 --- a/flake.lock +++ b/flake.lock @@ -298,11 +298,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1732021966, - "narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=", + "lastModified": 1733318908, + "narHash": "sha256-SVQVsbafSM1dJ4fpgyBqLZ+Lft+jcQuMtEL3lQWx2Sk=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "3308484d1a443fc5bc92012435d79e80458fe43c", + "rev": "6f4e2a2112050951a314d2733a994fbab94864c6", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733260348, - "narHash": "sha256-qsU2nHl/LEAmBY/tNZyxwzTh3ym3oyZRKthyk+Hv3ow=", + "lastModified": 1733404344, + "narHash": "sha256-QcLFaG3MnQ4yKxXg7UZKsOkKrQh3iTixWOm0BWve2VE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6a6f5974bd2e78895e75c03f8734036d40f177f2", + "rev": "c88114f800b48eeecd1b3a6413091f01b08f3539", "type": "github" }, "original": { @@ -378,11 +378,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1733260817, - "narHash": "sha256-FgJ2/ateQWwLA78ERfCUIrzaZ/X5AaCOSWLq8I2hfCw=", + "lastModified": 1733405546, + "narHash": "sha256-zm8HdU5Hm7yhAxQrvV2VNUBLbHM4X1deInfCfAE58rA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "229da450d6f628a9444c6d39d4b2349ea53b7e44", + "rev": "9894aea69bfd7e4f04ce35fded6f2ec9d2d9a1a2", "type": "github" }, "original": { @@ -394,11 +394,11 @@ }, "nur": { "locked": { - "lastModified": 1733260004, - "narHash": "sha256-Uem1KaDdvbHcTxii4t1fuuFsJlC7WeEjmXH+i1ElR/I=", + "lastModified": 1733396819, + "narHash": "sha256-AEBmhobRo6PcvaZn9oEfjsQ/NElKBIBj8Va7sivSyzw=", "owner": "nix-community", "repo": "NUR", - "rev": "0c7ae4a63afbc6c305e401a06191380027f5ec73", + "rev": "e6098b0360b6436634f3604c134e99b608a8c252", "type": "github" }, "original": { From 9184561078f286099459d49a136a2721e5f85704 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 7 Dec 2024 15:05:42 +0100 Subject: [PATCH 325/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'home-manager': 'github:nix-community/home-manager/62d536255879be574ebfe9b87c4ac194febf47c5?narHash=sha256-lYnT%2BEYE47f5yY3KS/Kd4pJ6CO9fhCqumkYYkQ3TK20%3D' (2024-12-01) → 'github:nix-community/home-manager/c7ffc9727d115e433fd884a62dc164b587ff651d?narHash=sha256-zjO6m5BqxXIyjrnUziAzk4%2BT4VleqjstNudSqWcpsHI%3D' (2024-12-07) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/cceee0a31d2f01bcc98b2fbd591327c06a4ea4f9?narHash=sha256-fc6jTzIwCIVWTX50FtW6AZpuukuQWSEbPiyg6ZRGWFY%3D' (2024-12-03) → 'github:nixos/nixos-hardware/e563803af3526852b6b1d77107a81908c66a9fcf?narHash=sha256-IS3bxa4N1VMSh3/P6vhEAHQZecQ3oAlKCDvzCQSO5Is%3D' (2024-12-06) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/c88114f800b48eeecd1b3a6413091f01b08f3539?narHash=sha256-QcLFaG3MnQ4yKxXg7UZKsOkKrQh3iTixWOm0BWve2VE%3D' (2024-12-05) → 'github:nixos/nixpkgs/ba3fa71b0a4442712885529f01291a084cf3f504?narHash=sha256-YZ2/U5x/6i5HZ7deI1diw48H9NQ3a5EJXUk1li15%2BD4%3D' (2024-12-07) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/9894aea69bfd7e4f04ce35fded6f2ec9d2d9a1a2?narHash=sha256-zm8HdU5Hm7yhAxQrvV2VNUBLbHM4X1deInfCfAE58rA%3D' (2024-12-05) → 'github:NixOS/nixpkgs/347d7e1d88770c4fd41fb758ac486563137240c4?narHash=sha256-2r0KpVWBz3BvExWsbRVk%2BBt8vhm%2BDMm37nkRJFuiTiA%3D' (2024-12-07) • Updated input 'nur': 'github:nix-community/NUR/e6098b0360b6436634f3604c134e99b608a8c252?narHash=sha256-AEBmhobRo6PcvaZn9oEfjsQ/NElKBIBj8Va7sivSyzw%3D' (2024-12-05) → 'github:nix-community/NUR/9e479b56f56dc09cc23d265c2957e3ed0f2fa7fe?narHash=sha256-YVvIoxhDCGYYDQhEj0%2BXtiTd4msUjjIXhE98AFenvDI%3D' (2024-12-07) • Added input 'nur/flake-parts': 'github:hercules-ci/flake-parts/205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9?narHash=sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c%3D' (2024-12-04) • Added input 'nur/flake-parts/nixpkgs-lib': follows 'nur/nixpkgs' • Added input 'nur/nixpkgs': 'github:nixos/nixpkgs/55d15ad12a74eb7d4646254e13638ad0c4128776?narHash=sha256-M1%2BuCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo%3D' (2024-12-03) • Added input 'nur/treefmt-nix': 'github:numtide/treefmt-nix/49717b5af6f80172275d47a418c9719a31a78b53?narHash=sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM%3D' (2024-12-03) • Added input 'nur/treefmt-nix/nixpkgs': follows 'nur/nixpkgs' --- flake.lock | 97 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 80 insertions(+), 17 deletions(-) diff --git a/flake.lock b/flake.lock index 044d128..43e11d7 100644 --- a/flake.lock +++ b/flake.lock @@ -94,6 +94,27 @@ "type": "github" } }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -203,11 +224,11 @@ ] }, "locked": { - "lastModified": 1733050161, - "narHash": "sha256-lYnT+EYE47f5yY3KS/Kd4pJ6CO9fhCqumkYYkQ3TK20=", + "lastModified": 1733572789, + "narHash": "sha256-zjO6m5BqxXIyjrnUziAzk4+T4VleqjstNudSqWcpsHI=", "owner": "nix-community", "repo": "home-manager", - "rev": "62d536255879be574ebfe9b87c4ac194febf47c5", + "rev": "c7ffc9727d115e433fd884a62dc164b587ff651d", "type": "github" }, "original": { @@ -314,11 +335,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1733217105, - "narHash": "sha256-fc6jTzIwCIVWTX50FtW6AZpuukuQWSEbPiyg6ZRGWFY=", + "lastModified": 1733481457, + "narHash": "sha256-IS3bxa4N1VMSh3/P6vhEAHQZecQ3oAlKCDvzCQSO5Is=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "cceee0a31d2f01bcc98b2fbd591327c06a4ea4f9", + "rev": "e563803af3526852b6b1d77107a81908c66a9fcf", "type": "github" }, "original": { @@ -330,11 +351,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733404344, - "narHash": "sha256-QcLFaG3MnQ4yKxXg7UZKsOkKrQh3iTixWOm0BWve2VE=", + "lastModified": 1733579763, + "narHash": "sha256-YZ2/U5x/6i5HZ7deI1diw48H9NQ3a5EJXUk1li15+D4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c88114f800b48eeecd1b3a6413091f01b08f3539", + "rev": "ba3fa71b0a4442712885529f01291a084cf3f504", "type": "github" }, "original": { @@ -378,11 +399,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1733405546, - "narHash": "sha256-zm8HdU5Hm7yhAxQrvV2VNUBLbHM4X1deInfCfAE58rA=", + "lastModified": 1733579837, + "narHash": "sha256-2r0KpVWBz3BvExWsbRVk+Bt8vhm+DMm37nkRJFuiTiA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9894aea69bfd7e4f04ce35fded6f2ec9d2d9a1a2", + "rev": "347d7e1d88770c4fd41fb758ac486563137240c4", "type": "github" }, "original": { @@ -392,13 +413,34 @@ "type": "github" } }, - "nur": { + "nixpkgs_2": { "locked": { - "lastModified": 1733396819, - "narHash": "sha256-AEBmhobRo6PcvaZn9oEfjsQ/NElKBIBj8Va7sivSyzw=", + "lastModified": 1733212471, + "narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55d15ad12a74eb7d4646254e13638ad0c4128776", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nur": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_2", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1733554674, + "narHash": "sha256-YVvIoxhDCGYYDQhEj0+XtiTd4msUjjIXhE98AFenvDI=", "owner": "nix-community", "repo": "NUR", - "rev": "e6098b0360b6436634f3604c134e99b608a8c252", + "rev": "9e479b56f56dc09cc23d265c2957e3ed0f2fa7fe", "type": "github" }, "original": { @@ -417,7 +459,7 @@ "nixpkgs" ], "systems": "systems_3", - "treefmt-nix": "treefmt-nix" + "treefmt-nix": "treefmt-nix_2" }, "locked": { "lastModified": 1731205797, @@ -567,6 +609,27 @@ } }, "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_2": { "inputs": { "nixpkgs": [ "poetry2nix", From 58974585abbc43e8797105d6f7f5cf0720ee75d5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 9 Dec 2024 00:54:55 +0100 Subject: [PATCH 326/562] Fix nur overlay deprecation --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 7b8b91e..870a1bd 100644 --- a/flake.nix +++ b/flake.nix @@ -171,7 +171,7 @@ }; }) ] ++ [ - { nixpkgs.overlays = [ nur.overlay ]; } + { nixpkgs.overlays = [ nur.overlays.default ]; } home-manager.nixosModules.home-manager inputs.sops-nix.nixosModules.sops inputs.disko.nixosModules.disko From 2ec800234dead2af1efd7e745d43ae1d5feee93a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 9 Dec 2024 00:52:14 +0100 Subject: [PATCH 327/562] Enable backups for home-manager managed files --- users/jalr/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/default.nix b/users/jalr/default.nix index 9d83727..5f43783 100644 --- a/users/jalr/default.nix +++ b/users/jalr/default.nix @@ -31,6 +31,7 @@ in home-manager = { useUserPackages = true; useGlobalPkgs = true; + backupFileExtension = "hm.bak"; users.jalr = { lib, pkgs, ... }: { imports = [ ./modules ]; config = { From c4fb41f93a6ea735aeae1cc3c9c208dd80efe266 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 8 Dec 2024 03:28:59 +0100 Subject: [PATCH 328/562] Add snapsync and mopidy --- hosts/iron/services/default.nix | 3 ++ hosts/iron/services/mopidy.nix | 65 ++++++++++++++++++++++++++++++ hosts/iron/services/snapclient.nix | 36 +++++++++++++++++ hosts/iron/services/snapserver.nix | 47 +++++++++++++++++++++ 4 files changed, 151 insertions(+) create mode 100644 hosts/iron/services/mopidy.nix create mode 100644 hosts/iron/services/snapclient.nix create mode 100644 hosts/iron/services/snapserver.nix diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index 40087e5..f2f47a0 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -8,12 +8,15 @@ ./jellyfin.nix ./mail.nix ./matrix.nix + ./mopidy.nix ./navidrome.nix ./nginx.nix ./ntp.nix ./public-ip-tunnel.nix ./radicale.nix ./remarkable.nix + ./snapclient.nix + ./snapserver.nix ./sturzbach.nix ./unifi-controller.nix ./whatsapp.nix diff --git a/hosts/iron/services/mopidy.nix b/hosts/iron/services/mopidy.nix new file mode 100644 index 0000000..9d76041 --- /dev/null +++ b/hosts/iron/services/mopidy.nix @@ -0,0 +1,65 @@ +args@{ lib, pkgs, config, custom-utils, ... }: +let + interfaces = import ../interfaces.nix; + mopidyConfig = { + audio.output = "audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! wavenc ! filesink location=/run/snapserver/mopidy.fifo"; + file.enabled = false; + local = { + library = "sqlite"; + scan_flush_threshold = 100; + media_dir = "/var/lib/music"; + included_file_extensions = lib.strings.concatStringsSep "," [ + ".aac" + ".flac" + ".m4a" + ".mp3" + ".opus" + ]; + }; + m3u = { + playlists_dir = "$XDG_CONFIG_DIR/mopidy/playlists"; + }; + http = { + enabled = true; + hostname = "::"; + port = 6680; + }; + mpd = { + enabled = true; + hostname = "::"; + port = 6600; + }; + }; +in +{ + services.mopidy = { + enable = true; + extensionPackages = with pkgs; [ + mopidy-iris + mopidy-local + mopidy-moped + mopidy-mpd + mopidy-muse + mopidy-somafm + mopidy-ytmusic + ]; + configuration = lib.generators.toINI { } mopidyConfig; + }; + + networking.firewall.interfaces."${interfaces.lan}".allowedTCPPorts = [ + mopidyConfig.http.port + mopidyConfig.mpd.port + ]; + + environment.systemPackages = [ + (with config.systemd.services.mopidy.serviceConfig; + pkgs.writeShellScriptBin "mopidyctl" '' + cmd='sudo -u ${User} -- ${ExecStart}' + if [ $# -eq 0 ]; then + exec $cmd --help + fi + exec $cmd "$@" + '' + ) + ]; +} diff --git a/hosts/iron/services/snapclient.nix b/hosts/iron/services/snapclient.nix new file mode 100644 index 0000000..8093022 --- /dev/null +++ b/hosts/iron/services/snapclient.nix @@ -0,0 +1,36 @@ +{ lib, pkgs, ... }: + +let hostId = "Wohnzimmer"; +in +{ + #services.pipewire = { + # enable = true; + # pulse.enable = true; + # alsa.enable = true; + #}; + + #environment.systemPackages = with pkgs; [ + # pulseaudio # pacmd and pactl + # pulsemixer + #]; + + systemd.services.snapclient = { + enable = true; + description = "Snapcast client"; + wants = [ "network.target" "sound.target" ]; + after = [ "network.target" "sound.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + DynamicUser = "yes"; + ExecStart = "${pkgs.snapcast}/bin/snapclient --host 127.0.0.1 -s DAC"; + Group = "audio"; + NoNewPrivileges = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX"; + RestrictNamespaces = true; + }; + }; +} diff --git a/hosts/iron/services/snapserver.nix b/hosts/iron/services/snapserver.nix new file mode 100644 index 0000000..526070f --- /dev/null +++ b/hosts/iron/services/snapserver.nix @@ -0,0 +1,47 @@ +args@{ lib, pkgs, config, custom-utils, ... }: +let + ports = import ../ports.nix args; + interfaces = import ../interfaces.nix; +in +{ + services.snapserver = { + enable = true; + streams = { + mopidy = { + type = "pipe"; + location = "/run/snapserver/mopidy.fifo"; + }; + airplay = { + type = "airplay"; + location = lib.getExe' pkgs.shairport-sync "shairport-sync"; + query = { + devicename = "Snapcast"; + }; + }; + }; + }; + + #systemd.services.snapserver = { + #requires = [config.systemd.services.mopidy.name]; + #after = [config.systemd.services.mopidy.name]; + #}; + + services.home-assistant.config.media_player = [ + { + platform = "snapcast"; + host = "127.0.0.1"; + } + ]; + + networking.firewall.interfaces."${interfaces.lan}" = { + allowedTCPPorts = [ + config.services.snapserver.http.port + config.services.snapserver.port + config.services.snapserver.tcp.port + 5000 # airplay + ]; + allowedUDPPortRanges = [ + { from = 6001; to = 6011; } # airplay + ]; + }; +} From 2a8c2c2f3be8a31071dc705076c40047e79b2a2b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 8 Dec 2024 04:04:25 +0100 Subject: [PATCH 329/562] Add snapclient user unit --- users/jalr/modules/default.nix | 3 ++- users/jalr/modules/snapclient.nix | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 users/jalr/modules/snapclient.nix diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index eaa4602..6211b94 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -18,7 +18,7 @@ ./graphics ./gui.nix ./jameica.nix - ./kicad.nix + #./kicad.nix FIXME: kicad build fails ./mpv.nix ./mute-indicator.nix ./mycli @@ -32,6 +32,7 @@ ./pcmanfm.nix ./python.nix ./remarkable + ./snapclient.nix ./sound ./sway ./thunderbird.nix diff --git a/users/jalr/modules/snapclient.nix b/users/jalr/modules/snapclient.nix new file mode 100644 index 0000000..c391bfb --- /dev/null +++ b/users/jalr/modules/snapclient.nix @@ -0,0 +1,20 @@ +{ nixosConfig, lib, pkgs, ... }: + +lib.mkIf nixosConfig.jalr.gui.enable { + systemd.user.services.snapclient = { + Unit.Description = "Snapcast client"; + Service = { + BindPaths = [ "/run/user/1000/pulse" ]; + ExecStart = "${pkgs.snapcast}/bin/snapclient --player pulse"; + NoNewPrivileges = true; + ProtectControlGroups = true; + ProtectHome = "tmpfs"; + ProtectKernelModules = true; + ProtectKernelTunables = true; + RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX"; + RestrictNamespaces = true; + Type = "simple"; + }; + Install.WantedBy = [ "default.target" ]; + }; +} From ffbe3c5d4943dececda5599ef6d3a01cd3fffb93 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 8 Dec 2024 20:12:44 +0100 Subject: [PATCH 330/562] Add avahi module --- modules/avahi.nix | 6 ++++++ modules/default.nix | 1 + 2 files changed, 7 insertions(+) create mode 100644 modules/avahi.nix diff --git a/modules/avahi.nix b/modules/avahi.nix new file mode 100644 index 0000000..f97e514 --- /dev/null +++ b/modules/avahi.nix @@ -0,0 +1,6 @@ +{ config, lib, ... }: + +lib.mkIf config.jalr.gui.enable { + services.avahi.enable = true; + services.avahi.nssmdns = true; +} diff --git a/modules/default.nix b/modules/default.nix index ae19e75..c009cda 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -17,6 +17,7 @@ ../pkgs/modules.nix ./adb.nix ./autologin.nix + ./avahi.nix ./aws.nix ./bluetooth.nix ./bootloader From be3127e7d27764100695e4c76c340dac2b514a9d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 8 Dec 2024 20:14:12 +0100 Subject: [PATCH 331/562] Add avahi service --- hosts/iron/services/avahi.nix | 18 ++++++++++++++++++ hosts/iron/services/default.nix | 1 + 2 files changed, 19 insertions(+) create mode 100644 hosts/iron/services/avahi.nix diff --git a/hosts/iron/services/avahi.nix b/hosts/iron/services/avahi.nix new file mode 100644 index 0000000..977c3ab --- /dev/null +++ b/hosts/iron/services/avahi.nix @@ -0,0 +1,18 @@ +args@{ lib, pkgs, config, custom-utils, ... }: +let + interfaces = import ../interfaces.nix; +in +{ + services.avahi = { + enable = true; + allowInterfaces = [ interfaces.lan ]; + publish.domain = true; + publish.enable = true; + publish.userServices = true; + publish.workstation = true; + }; + + networking.firewall.interfaces."${interfaces.lan}".allowedUDPPorts = [ + 5353 + ]; +} diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index f2f47a0..7afd50e 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -1,5 +1,6 @@ { imports = [ + ./avahi.nix ./calibre.nix ./dnsmasq.nix ./dyndns.nix From 9ffcefc612185326a3bb00117a7f053d73aba66f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 8 Dec 2024 23:03:02 +0100 Subject: [PATCH 332/562] Add LedFx --- hosts/iron/services/default.nix | 1 + hosts/iron/services/ledfx.nix | 57 +++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 hosts/iron/services/ledfx.nix diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index 7afd50e..0915d98 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -7,6 +7,7 @@ ./esphome ./home-assistant.nix ./jellyfin.nix + ./ledfx.nix ./mail.nix ./matrix.nix ./mopidy.nix diff --git a/hosts/iron/services/ledfx.nix b/hosts/iron/services/ledfx.nix new file mode 100644 index 0000000..1496923 --- /dev/null +++ b/hosts/iron/services/ledfx.nix @@ -0,0 +1,57 @@ +args@{ lib, pkgs, config, custom-utils, ... }: +let + interfaces = import ../interfaces.nix; +in +{ + networking.firewall.interfaces."${interfaces.lan}".allowedTCPPorts = [ + 8888 + ]; + + systemd.services.snapclient-ledfx = { + enable = true; + description = "Snapcast client"; + wants = [ "network.target" "sound.target" ]; + after = [ "network.target" "sound.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + DynamicUser = "yes"; + ExecStart = "${pkgs.snapcast}/bin/snapclient --host 127.0.0.1 --hostID ledfx -i 2 --player alsa -s ledfx"; + Group = "audio"; + NoNewPrivileges = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX"; + RestrictNamespaces = true; + RuntimeDirectory = "snapclient-ledfx"; + }; + }; + + systemd.services.ledfx = { + enable = true; + description = "LedFx"; + wants = [ "network.target" "sound.target" ]; + after = [ "network.target" "sound.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + DynamicUser = "yes"; + ExecStart = "${pkgs.ledfx}/bin/ledfx --host 0.0.0.0 -p 8888 -c %S/ledfx"; + Group = "audio"; + NoNewPrivileges = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX"; + RestrictNamespaces = true; + StateDirectory = "ledfx"; + StateDirectoryMode = "0755"; + }; + }; + + boot.kernelModules = [ "snd-aloop" ]; + boot.extraModprobeConfig = '' + options snd-aloop id=ledfx enable=1 pcm_substreams=1 + ''; +} From ca0f4663b0b3c88b277acd154bba199382d96878 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 9 Dec 2024 00:54:15 +0100 Subject: [PATCH 333/562] Enable snapcast-discover module --- modules/pipewire.nix | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/modules/pipewire.nix b/modules/pipewire.nix index d5fa8b4..f3e2e36 100644 --- a/modules/pipewire.nix +++ b/modules/pipewire.nix @@ -18,6 +18,23 @@ lib.mkIf config.jalr.gui.enable { enable = true; support32Bit = true; }; + extraConfig.pipewire-pulse."10-snapcast-discover" = { + "context.modules" = [ + { + name = "libpipewire-module-snapcast-discover"; + args = { + stream.rules = [{ + matches = [{ + snapcast.ip = "~.*"; + }]; + actions = { + create-stream = { }; + }; + }]; + }; + } + ]; + }; }; environment.systemPackages = with pkgs; [ From ebad296d69f144bed1de60995da83ec74d607e23 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 11 Dec 2024 09:55:25 +0100 Subject: [PATCH 334/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/f11423d1a082d83710275913f05b2a0b606f5aed?narHash=sha256-i3FpT1w4x1hNZSKj20Rt2qHQvp1xp3Dz9rCPeSIQp0s%3D' (2024-11-25) → 'github:nix-community/gomod2nix/514283ec89c39ad0079ff2f3b1437404e4cba608?narHash=sha256-tPsqU00FhgdFr0JiQUiBMgPVbl1jbPCY5gbFiJycL3I%3D' (2024-12-08) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/6f4e2a2112050951a314d2733a994fbab94864c6?narHash=sha256-SVQVsbafSM1dJ4fpgyBqLZ%2BLft%2BjcQuMtEL3lQWx2Sk%3D' (2024-12-04) → 'github:cachix/git-hooks.nix/d8c02f0ffef0ef39f6063731fc539d8c71eb463a?narHash=sha256-%2BXTFXYlFJBxohhMGLDpYdEnhUNdxN8dyTA8WAd%2Blh2A%3D' (2024-12-08) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/e563803af3526852b6b1d77107a81908c66a9fcf?narHash=sha256-IS3bxa4N1VMSh3/P6vhEAHQZecQ3oAlKCDvzCQSO5Is%3D' (2024-12-06) → 'github:nixos/nixos-hardware/cf737e2eba82b603f54f71b10cb8fd09d22ce3f5?narHash=sha256-%2BjjPup/ByS0LEVIrBbt7FnGugJgLeG9oc%2BivFASYn2U%3D' (2024-12-10) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/ba3fa71b0a4442712885529f01291a084cf3f504?narHash=sha256-YZ2/U5x/6i5HZ7deI1diw48H9NQ3a5EJXUk1li15%2BD4%3D' (2024-12-07) → 'github:nixos/nixpkgs/6d60fef390f5959497a1475633a367eff2531c6e?narHash=sha256-sh/6PyGBXVboXqHDCjnmRuJMlRfKRAEKiVDp/wq5md0%3D' (2024-12-11) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/347d7e1d88770c4fd41fb758ac486563137240c4?narHash=sha256-2r0KpVWBz3BvExWsbRVk%2BBt8vhm%2BDMm37nkRJFuiTiA%3D' (2024-12-07) → 'github:NixOS/nixpkgs/e09964d017754a834c6ea18691ab03fd79a8a5e9?narHash=sha256-92qbxStkOTkn2TcWZHJ6Q0EC3OYFZoy4BoKXgeGnYoM%3D' (2024-12-11) • Updated input 'nur': 'github:nix-community/NUR/9e479b56f56dc09cc23d265c2957e3ed0f2fa7fe?narHash=sha256-YVvIoxhDCGYYDQhEj0%2BXtiTd4msUjjIXhE98AFenvDI%3D' (2024-12-07) → 'github:nix-community/NUR/d0b75000239c951baf13a810249da08f849d617f?narHash=sha256-mscKfmp9UIhqlkf/OBQqgYqe6e0SnXZCinRA59swOqI%3D' (2024-12-11) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/55d15ad12a74eb7d4646254e13638ad0c4128776?narHash=sha256-M1%2BuCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo%3D' (2024-12-03) → 'github:nixos/nixpkgs/a73246e2eef4c6ed172979932bc80e1404ba2d56?narHash=sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU%3D' (2024-12-09) • Updated input 'sops-nix': 'github:Mic92/sops-nix/c6134b6fff6bda95a1ac872a2a9d5f32e3c37856?narHash=sha256-m6/qwJAJYcidGMEdLqjKzRIjapK4nUfMq7rDCTmZajc%3D' (2024-12-02) → 'github:Mic92/sops-nix/a80af8929781b5fe92ddb8ae52e9027fae780d2a?narHash=sha256-pm4cfEcPXripE36PYCl0A2Tu5ruwHEvTee%2BHzNk%2BSQE%3D' (2024-12-09) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 43e11d7..6bf85b0 100644 --- a/flake.lock +++ b/flake.lock @@ -204,11 +204,11 @@ ] }, "locked": { - "lastModified": 1732540042, - "narHash": "sha256-i3FpT1w4x1hNZSKj20Rt2qHQvp1xp3Dz9rCPeSIQp0s=", + "lastModified": 1733668782, + "narHash": "sha256-tPsqU00FhgdFr0JiQUiBMgPVbl1jbPCY5gbFiJycL3I=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "f11423d1a082d83710275913f05b2a0b606f5aed", + "rev": "514283ec89c39ad0079ff2f3b1437404e4cba608", "type": "github" }, "original": { @@ -319,11 +319,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1733318908, - "narHash": "sha256-SVQVsbafSM1dJ4fpgyBqLZ+Lft+jcQuMtEL3lQWx2Sk=", + "lastModified": 1733665616, + "narHash": "sha256-+XTFXYlFJBxohhMGLDpYdEnhUNdxN8dyTA8WAd+lh2A=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "6f4e2a2112050951a314d2733a994fbab94864c6", + "rev": "d8c02f0ffef0ef39f6063731fc539d8c71eb463a", "type": "github" }, "original": { @@ -335,11 +335,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1733481457, - "narHash": "sha256-IS3bxa4N1VMSh3/P6vhEAHQZecQ3oAlKCDvzCQSO5Is=", + "lastModified": 1733861262, + "narHash": "sha256-+jjPup/ByS0LEVIrBbt7FnGugJgLeG9oc+ivFASYn2U=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "e563803af3526852b6b1d77107a81908c66a9fcf", + "rev": "cf737e2eba82b603f54f71b10cb8fd09d22ce3f5", "type": "github" }, "original": { @@ -351,11 +351,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733579763, - "narHash": "sha256-YZ2/U5x/6i5HZ7deI1diw48H9NQ3a5EJXUk1li15+D4=", + "lastModified": 1733904937, + "narHash": "sha256-sh/6PyGBXVboXqHDCjnmRuJMlRfKRAEKiVDp/wq5md0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ba3fa71b0a4442712885529f01291a084cf3f504", + "rev": "6d60fef390f5959497a1475633a367eff2531c6e", "type": "github" }, "original": { @@ -399,11 +399,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1733579837, - "narHash": "sha256-2r0KpVWBz3BvExWsbRVk+Bt8vhm+DMm37nkRJFuiTiA=", + "lastModified": 1733907127, + "narHash": "sha256-92qbxStkOTkn2TcWZHJ6Q0EC3OYFZoy4BoKXgeGnYoM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "347d7e1d88770c4fd41fb758ac486563137240c4", + "rev": "e09964d017754a834c6ea18691ab03fd79a8a5e9", "type": "github" }, "original": { @@ -415,11 +415,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1733212471, - "narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=", + "lastModified": 1733759999, + "narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "55d15ad12a74eb7d4646254e13638ad0c4128776", + "rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56", "type": "github" }, "original": { @@ -436,11 +436,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1733554674, - "narHash": "sha256-YVvIoxhDCGYYDQhEj0+XtiTd4msUjjIXhE98AFenvDI=", + "lastModified": 1733907038, + "narHash": "sha256-mscKfmp9UIhqlkf/OBQqgYqe6e0SnXZCinRA59swOqI=", "owner": "nix-community", "repo": "NUR", - "rev": "9e479b56f56dc09cc23d265c2957e3ed0f2fa7fe", + "rev": "d0b75000239c951baf13a810249da08f849d617f", "type": "github" }, "original": { @@ -551,11 +551,11 @@ ] }, "locked": { - "lastModified": 1733128155, - "narHash": "sha256-m6/qwJAJYcidGMEdLqjKzRIjapK4nUfMq7rDCTmZajc=", + "lastModified": 1733785344, + "narHash": "sha256-pm4cfEcPXripE36PYCl0A2Tu5ruwHEvTee+HzNk+SQE=", "owner": "Mic92", "repo": "sops-nix", - "rev": "c6134b6fff6bda95a1ac872a2a9d5f32e3c37856", + "rev": "a80af8929781b5fe92ddb8ae52e9027fae780d2a", "type": "github" }, "original": { From 185b8503ed5ae0efdc9b2a06371bcc8de27e28f4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 11 Dec 2024 16:38:51 +0100 Subject: [PATCH 335/562] Disable banktool --- hosts/weinturm-pretix-prod/services/pretix.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/weinturm-pretix-prod/services/pretix.nix b/hosts/weinturm-pretix-prod/services/pretix.nix index 29edd2b..5145484 100644 --- a/hosts/weinturm-pretix-prod/services/pretix.nix +++ b/hosts/weinturm-pretix-prod/services/pretix.nix @@ -59,7 +59,7 @@ in users.users.pretix.extraGroups = [ "redis-pretix" ]; services.pretix-banktool = { - enable = true; + enable = false; days = 14; secretsFile = config.sops.secrets.pretix-banktool-cfg.path; }; From 2b4a244fb7c9acc14ed547a0f0a2f82faafe30c7 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 12 Dec 2024 03:05:20 +0100 Subject: [PATCH 336/562] Add mpd --- hosts/iron/services/home-assistant.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index e6319fe..25f5ea6 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -162,6 +162,13 @@ in } ]; mqtt = { }; + media_player = [ + { + platform = "mpd"; + name = "mpd@iron"; + host = "127.0.0.1"; + } + ]; }; }; From d89a84cb9ec7b0e823b263e3e917e49d6d32da9f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 12 Dec 2024 03:05:59 +0100 Subject: [PATCH 337/562] Add TTS to Home Assistant --- hosts/iron/services/default.nix | 1 + hosts/iron/services/home-assistant.nix | 50 +++++++++++++++++++++++++- hosts/iron/services/snapserver.nix | 8 +++++ hosts/iron/services/tts.nix | 7 ++++ 4 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 hosts/iron/services/tts.nix diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index 0915d98..c0523da 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -20,6 +20,7 @@ ./snapclient.nix ./snapserver.nix ./sturzbach.nix + ./tts.nix ./unifi-controller.nix ./whatsapp.nix ]; diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index 25f5ea6..792890d 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -2,6 +2,7 @@ args@{ lib, pkgs, config, custom-utils, ... }: let ports = import ../ports.nix args; interfaces = import ../interfaces.nix; + domain = "hass.jalr.de"; in { sops.secrets.home-assistant = { @@ -64,7 +65,9 @@ in "esphome" "local_todo" "openweathermap" + "wyoming" "xiaomi_ble" + "vlc_telnet" ]; customComponents = with pkgs.home-assistant-custom-components; [ adaptive_lighting @@ -87,6 +90,8 @@ in temperature_unit = "C"; longitude = config.location.longitude; latitude = config.location.latitude; + external_url = "https://${domain}/"; + internal_url = "https://${domain}/"; }; default_config = { }; adaptive_lighting = { @@ -194,6 +199,49 @@ in } ]; }; + + systemd.services.hass-vlc = { + script = '' + exec ${pkgs.vlc}/bin/cvlc \ + --no-video \ + -I telnet \ + --telnet-password=vlc \ + --sout='#transcode{acodec=s16le,channels=2,samplerate=48000}:std{access=file,mux=raw,dst=/run/snapserver/hass.fifo}' \ + --aout=none + ''; + serviceConfig = { + BindPaths = [ "/run/snapserver/hass.fifo" ]; + BindReadOnlyPaths = [ "/nix/store" "/etc/ssl/certs" "/etc/static/ssl/certs" ]; + CapabilityBoundingSet = ""; + DynamicUser = "true"; + Group = "snapserver"; + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateDevices = lib.mkForce true; + PrivateUsers = true; + ProcSubset = "pid"; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "noaccess"; + ProtectSystem = "strict"; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + RootDirectory = "/run/hass-vlc"; + RuntimeDirectory = "hass-vlc"; + SystemCallArchitectures = "native"; + SystemCallFilter = [ "@system-service" "~@privileged" ]; + }; + wantedBy = [ "multi-user.target" ]; + }; + networking.firewall.interfaces."${interfaces.lan}".allowedTCPPorts = [ ports.mqtt.tcp ]; networking.firewall.interfaces.iot.allowedTCPPorts = [ ports.mqtt.tcp ]; @@ -210,7 +258,7 @@ in "f ${config.services.home-assistant.configDir}/scenes.yaml 0755 hass hass" ]; - services.nginx.virtualHosts."hass.jalr.de" = { + services.nginx.virtualHosts."${domain}" = { enableACME = true; forceSSL = true; kTLS = true; diff --git a/hosts/iron/services/snapserver.nix b/hosts/iron/services/snapserver.nix index 526070f..02ba3bd 100644 --- a/hosts/iron/services/snapserver.nix +++ b/hosts/iron/services/snapserver.nix @@ -7,10 +7,18 @@ in services.snapserver = { enable = true; streams = { + default = { + type = "meta"; + location = "meta:///hass/airplay/mopidy"; + }; mopidy = { type = "pipe"; location = "/run/snapserver/mopidy.fifo"; }; + hass = { + type = "pipe"; + location = "/run/snapserver/hass.fifo"; + }; airplay = { type = "airplay"; location = lib.getExe' pkgs.shairport-sync "shairport-sync"; diff --git a/hosts/iron/services/tts.nix b/hosts/iron/services/tts.nix new file mode 100644 index 0000000..344e6ef --- /dev/null +++ b/hosts/iron/services/tts.nix @@ -0,0 +1,7 @@ +{ + services.wyoming.piper.servers.default = { + enable = true; + uri = "tcp://127.0.0.1:10200"; + voice = "de_DE-thorsten-high"; + }; +} From 84e7d76f140d5afc19a690ff0224f12b3548e1fe Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 16 Dec 2024 03:15:58 +0100 Subject: [PATCH 338/562] Add bluetooth sink --- hosts/iron/services/default.nix | 5 +- hosts/iron/services/snapcast/alsa.nix | 6 ++ .../iron/services/snapcast/bluetooth-sink.nix | 77 +++++++++++++++++++ hosts/iron/services/snapcast/default.nix | 10 +++ hosts/iron/services/{ => snapcast}/ledfx.nix | 7 +- hosts/iron/services/{ => snapcast}/mopidy.nix | 2 +- .../services/{ => snapcast}/snapclient.nix | 0 .../services/{ => snapcast}/snapserver.nix | 18 +++-- 8 files changed, 107 insertions(+), 18 deletions(-) create mode 100644 hosts/iron/services/snapcast/alsa.nix create mode 100644 hosts/iron/services/snapcast/bluetooth-sink.nix create mode 100644 hosts/iron/services/snapcast/default.nix rename hosts/iron/services/{ => snapcast}/ledfx.nix (89%) rename hosts/iron/services/{ => snapcast}/mopidy.nix (97%) rename hosts/iron/services/{ => snapcast}/snapclient.nix (100%) rename hosts/iron/services/{ => snapcast}/snapserver.nix (73%) diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index c0523da..94f5ccb 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -7,18 +7,15 @@ ./esphome ./home-assistant.nix ./jellyfin.nix - ./ledfx.nix ./mail.nix ./matrix.nix - ./mopidy.nix ./navidrome.nix ./nginx.nix ./ntp.nix ./public-ip-tunnel.nix ./radicale.nix ./remarkable.nix - ./snapclient.nix - ./snapserver.nix + ./snapcast ./sturzbach.nix ./tts.nix ./unifi-controller.nix diff --git a/hosts/iron/services/snapcast/alsa.nix b/hosts/iron/services/snapcast/alsa.nix new file mode 100644 index 0000000..1b8566e --- /dev/null +++ b/hosts/iron/services/snapcast/alsa.nix @@ -0,0 +1,6 @@ +{ + boot.kernelModules = [ "snd-aloop" ]; + boot.extraModprobeConfig = '' + options snd-aloop id=ledfx,bluetooth enable=1,1 pcm_substreams=2,2 + ''; +} diff --git a/hosts/iron/services/snapcast/bluetooth-sink.nix b/hosts/iron/services/snapcast/bluetooth-sink.nix new file mode 100644 index 0000000..77418a4 --- /dev/null +++ b/hosts/iron/services/snapcast/bluetooth-sink.nix @@ -0,0 +1,77 @@ +{ pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + bluez-alsa + ]; + + hardware.bluetooth = { + enable = true; + settings = { + General = { + Enable = "Source,Sink,Media,Socket"; + Class = "0x00041C"; + # Pairing always on + AlwaysPairable = "true"; + # Don't disable discoverability after timeout + DiscoverableTimeout = "0"; + # Faster but uses more power + FastConnectable = "true"; + # Allow repairing of existing devices + JustWorksRepairing = "always"; + }; + }; + }; + + services.blueman.enable = true; + + systemd.services.bluetooth-auto-pair = { + wantedBy = [ + "bluetooth.service" + ]; + after = [ + "bluetooth.service" + ]; + bindsTo = [ + "bluetooth.service" + ]; + serviceConfig = { + Type = "simple"; + ExecStart = pkgs.writeShellScript "exec-start" '' + ${pkgs.bluez}/bin/bluetoothctl < Date: Sat, 28 Dec 2024 13:35:07 +0100 Subject: [PATCH 339/562] Fix service dependencies --- hosts/iron/services/home-assistant.nix | 2 ++ hosts/iron/services/snapcast/ledfx.nix | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index 792890d..d2bea9e 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -209,6 +209,8 @@ in --sout='#transcode{acodec=s16le,channels=2,samplerate=48000}:std{access=file,mux=raw,dst=/run/snapserver/hass.fifo}' \ --aout=none ''; + wants = [ "snapserver.service" ]; + after = [ "snapserver.service" ]; serviceConfig = { BindPaths = [ "/run/snapserver/hass.fifo" ]; BindReadOnlyPaths = [ "/nix/store" "/etc/ssl/certs" "/etc/static/ssl/certs" ]; diff --git a/hosts/iron/services/snapcast/ledfx.nix b/hosts/iron/services/snapcast/ledfx.nix index a6ade67..9f78c71 100644 --- a/hosts/iron/services/snapcast/ledfx.nix +++ b/hosts/iron/services/snapcast/ledfx.nix @@ -31,8 +31,8 @@ in systemd.services.ledfx = { enable = true; description = "LedFx"; - wants = [ "network.target" "sound.target" ]; - after = [ "network.target" "sound.target" ]; + wants = [ "network.target" "sound.target" "snapclient-ledfx.service" ]; + after = [ "network.target" "sound.target" "snapclient-ledfx.service" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { DynamicUser = "yes"; From 208d7d8b7d9cc9ddd4d33606b034454affc7bfb3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 28 Dec 2024 13:38:21 +0100 Subject: [PATCH 340/562] Replace inline lua scripts with lua type --- users/jalr/modules/neovim.nix | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index ad9fe28..d1f585b 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -88,18 +88,20 @@ in nvim-lspconfig { plugin = telescope-nvim; + type = "lua"; config = '' - lua require('telescope').setup() - nnoremap Telescope find_files - nnoremap Telescope live_grep - nnoremap Telescope buffers + require('telescope').setup() + vim.keymap.set('n', '', 'Telescope find_files') + vim.keymap.set('n', '', 'Telescope live_grep') + vim.keymap.set('n', '', 'Telescope buffers') ''; } nvim-treesitter-parsers.twig { plugin = nvim-treesitter; + type = "lua"; config = '' - lua require'nvim-treesitter.configs'.setup { highlight = { enable = true, }, } + require'nvim-treesitter.configs'.setup { highlight = { enable = true, }, } ''; } { @@ -117,7 +119,8 @@ in ( lib.mkIf nixosConfig.jalr.workstation.enable { plugin = lsp_signature-nvim; - config = "lua require('lsp_signature').setup()"; + type = "lua"; + config = "require('lsp_signature').setup()"; } ) ]); From 374daf8d7408033010b00f73f1c4e436e23de1cb Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 28 Dec 2024 13:43:47 +0100 Subject: [PATCH 341/562] Add instructions how to build a system config --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 5d6c327..332bf77 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,12 @@ nix run github:nix-community/nixos-anywhere -- --flake .# root@ Date: Mon, 30 Dec 2024 19:49:58 +0100 Subject: [PATCH 342/562] Add 38C3 wifi config --- modules/networking/network-manager.nix | 41 ++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/modules/networking/network-manager.nix b/modules/networking/network-manager.nix index 18a6426..d70a218 100644 --- a/modules/networking/network-manager.nix +++ b/modules/networking/network-manager.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: lib.mkIf config.jalr.gui.enable { programs.nm-applet = { @@ -6,5 +6,42 @@ lib.mkIf config.jalr.gui.enable { indicator = true; }; - networking.networkmanager.enable = true; + networking.networkmanager = { + enable = true; + ensureProfiles.profiles = { + "38C3" = { + connection = { + id = "38C3"; + type = "wifi"; + }; + wifi = { + mode = "infrastructure"; + ssid = "38C3"; + }; + wifi-security = { + auth-alg = "open"; + key-mgmt = "wpa-eap"; + }; + "802-1x" = { + anonymous-identity = "38C3"; + eap = "ttls;"; + identity = "38C3"; + password = "38C3"; + phase2-auth = "pap"; + altsubject-matches = "DNS:radius.c3noc.net"; + ca-cert = "${builtins.fetchurl { + url = "https://letsencrypt.org/certs/isrgrootx1.pem"; + sha256 = "sha256:1la36n2f31j9s03v847ig6ny9lr875q3g7smnq33dcsmf2i5gd92"; + }}"; + }; + ipv4 = { + method = "auto"; + }; + ipv6 = { + addr-gen-mode = "default"; + method = "auto"; + }; + }; + }; + }; } From 5fcaf0b00e2d5b6cf3ea27cbe6061c72c1846290 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 31 Dec 2024 17:01:34 +0100 Subject: [PATCH 343/562] Add EQ for Framework laptop --- users/jalr/modules/default.nix | 2 -- users/jalr/modules/sound/default.nix | 1 + users/jalr/modules/sound/easyeffects.nix | 7 +++++++ users/jalr/modules/sound/pipewire.nix | 1 - 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 6211b94..429c3d0 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -1,5 +1,3 @@ -{ nixosConfig, ... }: - { imports = [ ./3d-printing.nix diff --git a/users/jalr/modules/sound/default.nix b/users/jalr/modules/sound/default.nix index 5c7de31..21f8976 100644 --- a/users/jalr/modules/sound/default.nix +++ b/users/jalr/modules/sound/default.nix @@ -3,6 +3,7 @@ { imports = [ ./audacity.nix + ./easyeffects.nix ./pipewire.nix ]; } diff --git a/users/jalr/modules/sound/easyeffects.nix b/users/jalr/modules/sound/easyeffects.nix index 215ba9a..eaad63c 100644 --- a/users/jalr/modules/sound/easyeffects.nix +++ b/users/jalr/modules/sound/easyeffects.nix @@ -4,4 +4,11 @@ lib.mkIf nixosConfig.jalr.gui.enable { home.packages = with pkgs; [ easyeffects ]; + + services.easyeffects.enable = true; + + xdg.configFile."easyeffects/output/framework-16.json".source = pkgs.fetchurl { + url = "https://gist.githubusercontent.com/amesb/cc5d717472d7e322b5f551b643ff03f4/raw/85029e48072ab3802615b2824dce7df204f0d8ab/amesb%2520fw16%2520EE%2520profile.json"; + sha256 = "sha256-Te8S9DsG5P/NuNk5WE6mSB/DjHS+rKjOFRN7mDEVg8g="; + }; } diff --git a/users/jalr/modules/sound/pipewire.nix b/users/jalr/modules/sound/pipewire.nix index 0be3f41..22503f8 100644 --- a/users/jalr/modules/sound/pipewire.nix +++ b/users/jalr/modules/sound/pipewire.nix @@ -2,7 +2,6 @@ lib.mkIf nixosConfig.jalr.gui.enable { home.packages = with pkgs; [ - easyeffects pavucontrol qpwgraph ]; From 643de2a5d4c556bc9a549d0b6037bf3c4b2690d3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 8 Jan 2025 02:06:47 +0100 Subject: [PATCH 344/562] Add keys assistant prototype --- hosts/iron/secrets.yaml | 8 +- .../esphome/devices/wohnungstuer.yaml | 196 ++++++++++++++++++ 2 files changed, 200 insertions(+), 4 deletions(-) create mode 100644 hosts/iron/services/esphome/devices/wohnungstuer.yaml diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 7a87653..7594642 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -9,7 +9,7 @@ dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] -esphome: ENC[AES256_GCM,data:QyPrVPhqvaCfx7oRmJ14EFpEIpQRwlLwTABK9qTP/wYcoflFsorNAmIoTiX/4KziQl050ByztnjIhrsxFx2dN6dv+RiLVWP+k0G63rfeS5gxe8QSgzsEtWWaUk3DE87i20DUusj1/B6yUsMApMohjaufuVzReL2MtVSVgtDUS6nVqGnRubrdujAxyRWvjQtamWBa1fjz39U876F10KMUYB+iGtObfNJGH18lAQ1arKEUQQSl8u1vNJuZiKqFhzxcu/IF6AhJgcKmCi2nrcEgbrv4ZwOcJ7+VG29qY7C4LCeAU4wOWJmtnCSf9osSwzR5hFco46L3Y8k0XXEOiEAJl+8ZLNKqQJpShh9wioMrj9XNpX/PvGCpBLTHsXTCGktDdbK/RLEGZnnL0s6If7Qs0XTwWZEe0q4IsltfdWJdZQWbvlY58ooUkK55wml/SlpuHgSdY6pOp/bOnBwvIrh/962DWtSXDxNnvps4Qy0eRUtpS2G6+rLIXXkq7KlSUg/A5XRNWbLGX5u7pJuvJ5xlldFW+tb1rqyrKXGIGra3Y6Ib4Z17znmajMSIeQItChj8UsOqlcHaCI5s8kDFjafJfpTTtAm0mj2cBFYmWHC/WR1YAtd2mrffr258CShtO+eeAqhSSTopIL637udKaY1Vto1dVReTmK24ANopQOaxnTtFjBdQaeluP4PAWrAGADBio1iwjsWIQlr0vnMjSBd0JcnW0Q3i+/5zhQfaEzZ6FQXOs05+l7ryLrGgBbyM2FRLTuAWBsv5yv3lz8FiSGVNaLMW5rofZpFvX0oa7P9HyU/RIpUzx307VBsIJlzrW2NgWvc9iLHLHWJDa7xcemGTvZDp/0BujYHeYYfVViPtVcCicLvDLikgtJRlkdPmyRoMSx0o3taoPsYoVZielo5EZpLiaLwuCNnCk2fRxAgPUa4+zGhZc2Z/BrOvK7sxcyIXEYRrZ8Ti2iNQJthNNb1CzSUXpdpSZtFi1jjiC45V0dlg/lSqrkRjyA9DpGbegt3WpO/6X+uc9vSAgR4f/0xNngTKzCfFV+fyUJXffpje9fQhQnecsTDjjc3aLiESqc3mx8MP6gHI9fS8z8PU72t+4tJxe8hjo7VWlInOVKV9zp9Tn+P4Ez1MebPJRlrwHGSVFsPhKct+CgzE+Q0B3vvcWyQfdJHeFCPWsTWmcCUoJf61fQO/3JwZI8YE3HET+NsRoxVHTl099LzWWCbrfT4uN3+O3VQbceLM+KxKCLVGNEHKlF8NHCIk4KCWhKNwhXvuMjf4GgtYbENFn1QbmiQFpYfIl8FA8PZVk7x+dzuROL4NpIKaBfrg34LQnxFpc2YCBnEsmsJVPybR5ZHC8eDL7JdVSg+FhvOxzBkvCeQjG8746/t0HJYPucisFCmP1isGpcn8Eku+BT/2XocHsUwpyo+RQoruWKwkLtnCHeaGSszqWzugSGXU4b4T2HB2yU9ORpt6uP+wbtc49GeMHrUGiO+w6BQm3TzPEZ0XMh4+8iayGhbd8T213C72sHpo5eCbv7C2zE/3dxHr2/+xtfstQFRuMPhq/r/4aqkeGKTwWEBcOwD1knlnbXo5OZsdvX9SeqF+mno/uDxZW00QqaWiQz89SWLGHtC4gjbE2wU2IpiGZMTOtNieOrjjCfdX3ZkrhA==,iv:Qn0nDrXRCOJaTJJBK6/PEGbhS1pbB0dTZYakgha5wJQ=,tag:8GeYWlsxgAGfFL61V5CwXg==,type:str] +esphome: ENC[AES256_GCM,data:/qvYCozy6r5p3mx5QJUTcPF3NOnO0eowN4xAxt7eKbDIFgZ4E6lHOiEbZE+EluRsIiex3G7JvXeuGOG01U95caUjZ18lFQze+VxM31DACzbMB2u5QxKsWnNRABD6JdFM90HCymajEQTrZJWZJ0V6VyeJf6mj7ZYXJGjVyDxzVIRWF+2B4g1zY6211JFhwl2eo6//EamCqTuLYt6XagyiJfJJ3gp4yHF4ehxlU01IwO5OcBUhgWYGMf6y0JqLIkxqryQsl9L+VrWgjgx2fcjMhGA5C4yZ8dLOstSlOAsKYbxqDyKF0PoBf07WTiCcNx9ReW5wdfg/vb2tVXS0i58SrD81/G0p6gExKvnXmgdSU74hvzOaRNIMbRXUq+6ZXxZMJm/HahHpZ9klMWptmyQ/Y9eBiWEW0EflFZkGuIVI3ycn2admcRdF9SGi+dONeshbjdutFUrGfm+WRBD0FU103KwGjtxFFy5dC89PhMkOXFSR903d7Fy0DZ+qEo1LxzYS7prpTZz7LIYEC1H30du9PTWJhFMRSP7PFjmbPKxcG46dNYLh/I6quzHHmsinTO1zkE3/KgjchQcATuHV6t32admJccjsR8R69bcEEyWwixofhauQ35zlMC9jF2Q1GhWosisIQFLalHH1zitdH5K9qE+jh1MvEPh1tHJy/7RL2CMduBNQcGC/Af5T//4S868XknCxrjL1m8f/7As1+Iinu7Pee28vmtDeKPzQmJogqntMOoz9w6R5hERz5N8ch9RWqKU0z6hV5ciUG18PlyU/WWZ4rDaZJeUHM7vae+Y+or1O1PuemjMLHQhClYEGwbS+J93UrXKFsEytEz1s1BiJLpgJxYKzhb4zNFIha9SINtUq6ahHmzkjwtc/h1LDn9kQ/40nAIzUEt+UvUkeKpst+BbUEbAQi4WMU5BARl/Ogvpx2BocfE0GgsPksUbcwjv8y4AOXuHf89nTqVNOj8vyBr0oyQdsDayBQ9qLsp2xun7q9BLYw0BHLjWNwY7zp9vUXX476zcIWxhd1nOcl4Hma8z/GiceLBuMNnWNiou7G7sAWWKQIWSw5Kf6ebaP6uAY7wS0W0MdN90ascHcgZd1EHqluKSqxSPKVgQ1vfQtBh6uIPec12oJzcBxPj0yB4MnH5dsdaMjVUElRdzs8F+0T0SCYZSY+OK2OL8xN1WGW96bH3/+UEQDYHLmXOcsDcNGHHWkPAllArRLS65pDoI2IOFYdJzhdDWI+qVZZsxQf0NeW91ATN7qE/B+MlCIWugBUFOo9mIBrR/+FqUB66FnFvuO7J3Yaz/tHe5UDKJFqxgBVt4JwFHgxnwIjFHiNPbmeXhLJNy0yOhj4CF/Ah9sw1gDtULHMD5TiL/+0TFXaUZV7RqYK6dZtKW85LO3P62SM33Y6/HFlU+aEowfY2ZJKeAuOifbl8FQKFdMr/DY3pz+rJLY6SolMwn2tVq/u1OVfRCVLGTMU9V7nyyN5NfNSaucncqdb1HoybqbXvfE+iFjOkndwkU9aPhvw7ivK8EAeEpaKF3JXdlb01zl9ra8izjLVALCBIpmAJj8a4nP6z+zybxbfGiV20kFTGljvAGQ+G0fRtiH03jR8zdhuVHGkVDbKz8M9X80LM8eDFpaObA76SxtHTlQ7mlnreUQyQF4dEtL8dTDUcf8U1Sm8MkB1FW7vKVaXrSe/4FR9kayVo2GbjZUqzs1tEh2yBIOI4AnPz4ZxlapAiz9+/Msb46XwvXxO76Ax/lbzD9MnNgL3W0CUuCTtp2FG9AOBa60A22Tmk4DTNh6,iv:n/n2dgY5SQb8Z6fo+PROESZY4J4HpCOV/Gau4GcWiFQ=,tag:4vz12dpzqQQeY8GAHLXS9w==,type:str] home-assistant: ENC[AES256_GCM,data:wcFMxDdRCHf/shO9v2WaGgrsa9J2WP62xFs=,iv:9ckeIO62cFZUo8fPyQj445CrJVTooNlwLapM/oTsrkk=,tag:mlfxtXDPsB3T79P9BX9oJQ==,type:str] mqtt-users: home-assistant: ENC[AES256_GCM,data:oIjCw7ZnA5iOBmQdW1jcy3QQnpjT32pY,iv:5HFRkXJBdMXQbjk2ubQs3sEy5qEteiqSe2hrNc8+H40=,tag:7B6yI4oCHanE0JE/gHaKnQ==,type:str] @@ -29,8 +29,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-11-19T22:31:29Z" - mac: ENC[AES256_GCM,data:VEeLfkMhm/JiB+R/mWVHzoX7vtQHT+b+G14kNk0ri8PtJ9WtvaDJFs8zX87gaH/XUorOhR6+2uNyafyoKQGBtKlWFjpaFufTHp2V3pSJ2GF1MLKBR9DvAE6Js/Odpp7u7Gm7AVDP3Q4N1wZ6uhL3Abzedd4/OcYlEvtd1Vod0i0=,iv:dnwOokPPpaNhkmP1S2pZiaAdt6F7unc3ZA0D0zrdhz0=,tag:VTMzfGMpmqO4stnjFVaDUQ==,type:str] + lastmodified: "2025-01-07T22:04:49Z" + mac: ENC[AES256_GCM,data:Hii5uCxSS1GStQO7af++sSbGaRK+WPZjQYNSd0EpB5p5+qbWvvBgmOnAFLqMDkhq0aSHYnrFnGkTGuxNciRYIIvOXTE109YxeloT8PQNSKlMMduyb7iUfeAQVQFTTx3Vs6YVe3Jd7oVztqK+zztgkIOX8uoTzE5CHSmhJkLYLTA=,iv:2W7Al1OgcvA98FqkmlXtdpQiAXybBgxsS5h7VA9JcKs=,tag:ZmrkPN+OtLDm2oeSoWsxqA==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- @@ -44,4 +44,4 @@ sops: -----END PGP MESSAGE----- fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted - version: 3.9.1 + version: 3.9.2 diff --git a/hosts/iron/services/esphome/devices/wohnungstuer.yaml b/hosts/iron/services/esphome/devices/wohnungstuer.yaml new file mode 100644 index 0000000..46b47c8 --- /dev/null +++ b/hosts/iron/services/esphome/devices/wohnungstuer.yaml @@ -0,0 +1,196 @@ +esphome: + name: "wohnungstuer" + friendly_name: "Wohnungstür" + +api: + encryption: + key: !secret apikey_wohnungstuer + +ota: + - platform: esphome + password: !secret otapass_wohnungstuer + +wifi: + ssid: !secret wifi_ssid_bw + password: !secret wifi_password_bw + domain: .iot.bw.jalr.de + +esp32: + board: esp32doit-devkit-v1 + framework: + type: arduino + version: recommended + +logger: + +sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s + +globals: + - id: leaving + type: int + restore_value: no + initial_value: '0' + +binary_sensor: + - platform: template + name: "At home" + id: presence + device_class: presence + - platform: gpio + name: Tür + id: door + pin: + number: GPIO32 + mode: + input: true + pullup: true + device_class: door + on_press: # on opening door + then: + - lambda: |- + id(leaving) |= 1; + - if: + condition: + # bowl is occupied + binary_sensor.is_on: key_bowl + then: + - light.turn_on: + id: pixels + effect: strobe_red + else: + - if: + condition: + binary_sensor.is_off: presence # when away + then: + - light.turn_on: + id: pixels + effect: "None" + red: 75% + green: 75% + + on_release: # on closing door + then: + - if: + condition: + binary_sensor.is_off: presence # when away + then: + - light.turn_on: + id: pixels + effect: "scan" + red: 0% + green: 0% + blue: 100% + - if: + condition: + lambda: |- + return id(leaving) == 3; + then: + - light.turn_off: + id: pixels + - binary_sensor.template.publish: # set away state + id: presence + state: OFF + else: + - if: + condition: + # when keys are in the bowl + binary_sensor.is_on: key_bowl + then: + - light.turn_on: + id: pixels + effect: "None" + red: 0% + green: 50% + blue: 0% + - delay: 30s + - light.turn_off: + id: pixels + transition_length: 3s + - lambda: |- + id(leaving) = 0; + - if: + condition: + binary_sensor.is_on: presence # when at home + then: + - light.turn_off: + id: pixels + + - platform: gpio + name: Schlüsselschale + id: key_bowl + pin: + number: GPIO23 + mode: + input: true + pullup: true + device_class: occupancy + filters: + - invert: + - delayed_on: 100ms + - delayed_off: 100ms + on_press: # when keys fall in bowl + then: + - binary_sensor.template.publish: # set at home state + id: presence + state: ON + - lambda: |- + id(leaving) = 0; + - if: + condition: + # door is closed + binary_sensor.is_off: door + then: + - light.turn_on: + id: pixels + effect: "None" + red: 0% + green: 50% + blue: 0% + - delay: 30s + - light.turn_off: + id: pixels + transition_length: 3s + on_release: # when keys are removed from bowl + then: + - lambda: |- + id(leaving) |= 2; + - if: + condition: + # door is closed + binary_sensor.is_off: door + then: + - light.turn_on: + id: pixels + effect: "rainbow" + +light: + - platform: esp32_rmt_led_strip + id: pixels + rgb_order: GRB + pin: GPIO12 + num_leds: 5 + rmt_channel: 0 + chipset: ws2812 + effects: + - strobe: + name: strobe_red + colors: + - state: true + brightness: 100% + red: 100% + green: 0% + blue: 0% + duration: 250ms + - state: false + duration: 250ms + - addressable_rainbow: + name: rainbow + speed: 20 + width: 10 + - addressable_scan: + name: scan + move_interval: 40ms + scan_width: 1 From ebbb62a6b2787c7a59f7a3946f90c856b7fe48ea Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 11 Jan 2025 17:25:02 +0100 Subject: [PATCH 345/562] Re-add kicad build is fixed since 24.11 release --- users/jalr/modules/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 429c3d0..077656d 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -16,7 +16,7 @@ ./graphics ./gui.nix ./jameica.nix - #./kicad.nix FIXME: kicad build fails + ./kicad.nix ./mpv.nix ./mute-indicator.nix ./mycli From 82cbda5bcd5754fc21897481ec2aa98ae8895527 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 11 Jan 2025 17:25:55 +0100 Subject: [PATCH 346/562] Increase session life to 90d and use static secret --- hosts/magnesium/secrets.yaml | 7 +++--- hosts/magnesium/services/hedgedoc.nix | 34 +++++++++++++++++---------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/hosts/magnesium/secrets.yaml b/hosts/magnesium/secrets.yaml index f7c505b..23e5d88 100644 --- a/hosts/magnesium/secrets.yaml +++ b/hosts/magnesium/secrets.yaml @@ -2,6 +2,7 @@ wireguard_key_hetzner-ha: ENC[AES256_GCM,data:HEW+EalHg6/mq7pRKZkasGz0nqbkSppkf0 turn-static-auth-secret: ENC[AES256_GCM,data:rzhixUemFPwKj1BcVPZd7KtUO9OA6A2R4qEQ1BZGVG0=,iv:uYHYe4Cywxovt3b/Ho1tQVHrpgVic+AKh9AjYMYSZcM=,tag:rr8RW/if06t38GpZCYQB4w==,type:str] gitlab-runner_fablab-nea-hcloud-labsync: ENC[AES256_GCM,data:+znVO8cQxjDdhch7oUALZvt84iJmWnAx6lTM0+WGkGtaRWTCTPjgnst5waSJpw/Oysrd1PkXZKmLHyHuU7K/CHQij7sWH50G3ZcUum58klJc3dCPztlrLpDVHeSwyYiLpsqkQTfjqLPfrMkxuxBgTEVXlq2ZnFuyOGbFx9hubPxLeyQKakiW3qZWGjbFXYAps7Gl61AVdKJj3y1otX2JbCjG9x2i6FHZpl5ywwQCjKNM,iv:7v+I/oJtWDap6PNIJ4Qm3Si9dGs7a79SaMhnr/tbe1A=,tag:7jgoLtdWAEKMkWoXZ10owA==,type:str] forgejo-mail: ENC[AES256_GCM,data:eZv9dM0a06wFJaDUZjo=,iv:L32ab5k/AX8HqSACJA5w+WbzLlBijA5++Gcr2SrnYIU=,tag:ddyTXikWTMnxq86IijgyYg==,type:str] +hedgedoc-session-secret: ENC[AES256_GCM,data:AYUiUF7R+5C3F5kNRL0R95e1l3Y59tIP388uY0IYCskBhR0H0XMVvyrX/gIM33Twwkc5it+fQtNPNXsbrAnoKQ==,iv:Q6pDEdFplp845/DCHutwni/g7Ch39pTCvfNs4Eh28CQ=,tag:aqVGs3iThmepT7iJusLOMA==,type:str] sops: kms: [] gcp_kms: [] @@ -17,8 +18,8 @@ sops: QTBqZDZLeDFLK0k2MHF4Uk1mQTIxRHcKeLHz+lSnHLyTgw2Aq+IVGpIi9X8SQx+Q bCSPPMPIZsL4VLInuZmcd2n/kEr80fQM2P3/ktW8RnViQjTU+kKbMg== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-09-17T12:35:12Z" - mac: ENC[AES256_GCM,data:ji+KDLN/7nQG448ZMxOFCuCTrzwnn00xbey84itd2cHpGP3oWYCFDWqdMg18C7koZ8eVtudgi3v6++bYLunAMONcvVwqconiEgEy17GKMzaladkEVDzSTRLipbcby/k4VYzS+iBP02eEn1gHYaNWTeIN/8X+42kIdhq3Itx44fU=,iv:X72KO/yNE1RI8lSPEc5llmCUuO0bZrtD4kizHf4dnzA=,tag:jZOIX1hhF1yfy7U8f47/VA==,type:str] + lastmodified: "2025-01-11T15:28:59Z" + mac: ENC[AES256_GCM,data:1RnyUrbEI2JKpicmA3QV+5ob+vByahMjc4+ZpLbcMyZv/KXn02VP+OQaLm9NgPfpZmSmRgbdPNQAP4f71z/EjcceyANAhnvql3zuYgSXNp5l/IYo5UFZdWgQa14XTGO518969CDLW1zJnlkBtbtLEVlMJiQ/EraV1eNtgCr5UEU=,iv:0fLjboGiejUI9LxHW80ed+/Lf+jlN5UH7tVqfBptq0w=,tag:4Tyrqy9XwQAm0etooVBNZg==,type:str] pgp: - created_at: "2024-01-31T01:20:03Z" enc: |- @@ -32,4 +33,4 @@ sops: -----END PGP MESSAGE----- fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted - version: 3.8.1 + version: 3.9.2 diff --git a/hosts/magnesium/services/hedgedoc.nix b/hosts/magnesium/services/hedgedoc.nix index b8df3e1..0963f20 100644 --- a/hosts/magnesium/services/hedgedoc.nix +++ b/hosts/magnesium/services/hedgedoc.nix @@ -6,21 +6,31 @@ let cfg = config.services.hedgedoc; in { + sops.secrets.hedgedoc-session-secret = { + owner = config.systemd.services.hedgedoc.serviceConfig.User; + sopsFile = ../secrets.yaml; + }; services.hedgedoc = { enable = true; - settings = { - domain = domain; - protocolUseSSL = true; - csp.enable = true; - port = ports.hedgedoc.tcp; - db = { - dialect = "postgres"; - host = "/run/postgresql"; - user = "hedgedoc"; - database = "hedgedoc"; + settings = + let + day = 24 * 60 * 60 * 1000; + in + { + domain = domain; + protocolUseSSL = true; + csp.enable = true; + port = ports.hedgedoc.tcp; + db = { + dialect = "postgres"; + host = "/run/postgresql"; + user = "hedgedoc"; + database = "hedgedoc"; + }; + allowEmailRegister = false; + sessionSecret = config.sops.secrets.hedgedoc-session-secret.path; + sessionLife = 90 * day; }; - allowEmailRegister = false; - }; }; services.postgresql = { From 5dcc7d77f3bdd654fa29ebad05424ee6c3cabbc8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 13 Jan 2025 10:15:14 +0100 Subject: [PATCH 347/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/785c1e02c7e465375df971949b8dcbde9ec362e5?narHash=sha256-8dupm9GfK%2BBowGdQd7EHK5V61nneLfr9xR6sc5vtDi0%3D' (2024-12-02) → 'github:nix-community/disko/f720e64ec37fa16ebba6354eadf310f81555cc07?narHash=sha256-8hKhPQuMtXfJi%2B4lPvw3FBk/zSJVHeb726Zo0uF1PP8%3D' (2025-01-12) • Updated input 'home-manager': 'github:nix-community/home-manager/c7ffc9727d115e433fd884a62dc164b587ff651d?narHash=sha256-zjO6m5BqxXIyjrnUziAzk4%2BT4VleqjstNudSqWcpsHI%3D' (2024-12-07) → 'github:nix-community/home-manager/bd65bc3cde04c16755955630b344bc9e35272c56?narHash=sha256-dinzAqCjenWDxuy%2BMqUQq0I4zUSfaCvN9rzuCmgMZJY%3D' (2025-01-08) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/d8c02f0ffef0ef39f6063731fc539d8c71eb463a?narHash=sha256-%2BXTFXYlFJBxohhMGLDpYdEnhUNdxN8dyTA8WAd%2Blh2A%3D' (2024-12-08) → 'github:cachix/git-hooks.nix/a5a961387e75ae44cc20f0a57ae463da5e959656?narHash=sha256-3FZAG%2BpGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110%3D' (2025-01-03) • Removed input 'nix-pre-commit-hooks/nixpkgs-stable' • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/cf737e2eba82b603f54f71b10cb8fd09d22ce3f5?narHash=sha256-%2BjjPup/ByS0LEVIrBbt7FnGugJgLeG9oc%2BivFASYn2U%3D' (2024-12-10) → 'github:nixos/nixos-hardware/8870dcaff63dfc6647fb10648b827e9d40b0a337?narHash=sha256-OL7leZ6KBhcDF3nEKe4aZVfIm6xQpb1Kb%2BmxySIP93o%3D' (2025-01-09) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/6d60fef390f5959497a1475633a367eff2531c6e?narHash=sha256-sh/6PyGBXVboXqHDCjnmRuJMlRfKRAEKiVDp/wq5md0%3D' (2024-12-11) → 'github:nixos/nixpkgs/67e9c880898889470f153157a96b595e758167fc?narHash=sha256-hcETjfECLklW1ND8svDvN0Nw6H/1qtuoz3rbFNQ1Lrk%3D' (2025-01-13) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/e09964d017754a834c6ea18691ab03fd79a8a5e9?narHash=sha256-92qbxStkOTkn2TcWZHJ6Q0EC3OYFZoy4BoKXgeGnYoM%3D' (2024-12-11) → 'github:NixOS/nixpkgs/74dbb1b3cbf8b06b8d9874e6bd2a9ac2e2b483d3?narHash=sha256-4aJg0cDkUWK3mNqGXYzYSyRYQqSrsm2YGmmSSti/CUA%3D' (2025-01-13) • Updated input 'nur': 'github:nix-community/NUR/d0b75000239c951baf13a810249da08f849d617f?narHash=sha256-mscKfmp9UIhqlkf/OBQqgYqe6e0SnXZCinRA59swOqI%3D' (2024-12-11) → 'github:nix-community/NUR/e7493220ca728cb9d9df1a04ab681427e3ad88e9?narHash=sha256-sSD%2BITN1CuOnUMPU2VmLmZno963ydG/oKV%2B4TrMjGRE%3D' (2025-01-13) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/a73246e2eef4c6ed172979932bc80e1404ba2d56?narHash=sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU%3D' (2024-12-09) → 'github:nixos/nixpkgs/130595eba61081acde9001f43de3248d8888ac4a?narHash=sha256-Xb8mke6UCYjge9kPR9o4P1nVrhk7QBbKv3xQ9cj7h2s%3D' (2025-01-10) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/f554d27c1544d9c56e5f1f8e2b8aff399803674e?narHash=sha256-F7N1mxH1VrkVNHR3JGNMRvp9%2B98KYO4b832KS8Gl2xI%3D' (2024-11-10) → 'github:nix-community/poetry2nix/29b2641c1c6e67d836f9a9fda8a6de85be9644ac?narHash=sha256-lUSZtb4%2BlONT7MKradw9FLMzc%2BfxtrkKGX7w3oKJmJg%3D' (2025-01-08) • Updated input 'sops-nix': 'github:Mic92/sops-nix/a80af8929781b5fe92ddb8ae52e9027fae780d2a?narHash=sha256-pm4cfEcPXripE36PYCl0A2Tu5ruwHEvTee%2BHzNk%2BSQE%3D' (2024-12-09) → 'github:Mic92/sops-nix/f214c1b76c347a4e9c8fb68c73d4293a6820d125?narHash=sha256-4P99yL8vGehwzytkpP87eklBePt6aqeEC5JFsIzhfUs%3D' (2025-01-10) --- flake.lock | 84 ++++++++++++++++++++++-------------------------------- 1 file changed, 34 insertions(+), 50 deletions(-) diff --git a/flake.lock b/flake.lock index 6bf85b0..2867118 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1733168902, - "narHash": "sha256-8dupm9GfK+BowGdQd7EHK5V61nneLfr9xR6sc5vtDi0=", + "lastModified": 1736711425, + "narHash": "sha256-8hKhPQuMtXfJi+4lPvw3FBk/zSJVHeb726Zo0uF1PP8=", "owner": "nix-community", "repo": "disko", - "rev": "785c1e02c7e465375df971949b8dcbde9ec362e5", + "rev": "f720e64ec37fa16ebba6354eadf310f81555cc07", "type": "github" }, "original": { @@ -224,11 +224,11 @@ ] }, "locked": { - "lastModified": 1733572789, - "narHash": "sha256-zjO6m5BqxXIyjrnUziAzk4+T4VleqjstNudSqWcpsHI=", + "lastModified": 1736373539, + "narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=", "owner": "nix-community", "repo": "home-manager", - "rev": "c7ffc9727d115e433fd884a62dc164b587ff651d", + "rev": "bd65bc3cde04c16755955630b344bc9e35272c56", "type": "github" }, "original": { @@ -315,15 +315,14 @@ "gitignore": "gitignore_2", "nixpkgs": [ "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_2" + ] }, "locked": { - "lastModified": 1733665616, - "narHash": "sha256-+XTFXYlFJBxohhMGLDpYdEnhUNdxN8dyTA8WAd+lh2A=", + "lastModified": 1735882644, + "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "d8c02f0ffef0ef39f6063731fc539d8c71eb463a", + "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", "type": "github" }, "original": { @@ -335,11 +334,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1733861262, - "narHash": "sha256-+jjPup/ByS0LEVIrBbt7FnGugJgLeG9oc+ivFASYn2U=", + "lastModified": 1736441705, + "narHash": "sha256-OL7leZ6KBhcDF3nEKe4aZVfIm6xQpb1Kb+mxySIP93o=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "cf737e2eba82b603f54f71b10cb8fd09d22ce3f5", + "rev": "8870dcaff63dfc6647fb10648b827e9d40b0a337", "type": "github" }, "original": { @@ -351,11 +350,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733904937, - "narHash": "sha256-sh/6PyGBXVboXqHDCjnmRuJMlRfKRAEKiVDp/wq5md0=", + "lastModified": 1736754065, + "narHash": "sha256-hcETjfECLklW1ND8svDvN0Nw6H/1qtuoz3rbFNQ1Lrk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6d60fef390f5959497a1475633a367eff2531c6e", + "rev": "67e9c880898889470f153157a96b595e758167fc", "type": "github" }, "original": { @@ -381,29 +380,13 @@ "type": "github" } }, - "nixpkgs-stable_2": { - "locked": { - "lastModified": 1730741070, - "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgsMaster": { "locked": { - "lastModified": 1733907127, - "narHash": "sha256-92qbxStkOTkn2TcWZHJ6Q0EC3OYFZoy4BoKXgeGnYoM=", + "lastModified": 1736759503, + "narHash": "sha256-4aJg0cDkUWK3mNqGXYzYSyRYQqSrsm2YGmmSSti/CUA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e09964d017754a834c6ea18691ab03fd79a8a5e9", + "rev": "74dbb1b3cbf8b06b8d9874e6bd2a9ac2e2b483d3", "type": "github" }, "original": { @@ -415,11 +398,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1733759999, - "narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=", + "lastModified": 1736523798, + "narHash": "sha256-Xb8mke6UCYjge9kPR9o4P1nVrhk7QBbKv3xQ9cj7h2s=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56", + "rev": "130595eba61081acde9001f43de3248d8888ac4a", "type": "github" }, "original": { @@ -436,11 +419,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1733907038, - "narHash": "sha256-mscKfmp9UIhqlkf/OBQqgYqe6e0SnXZCinRA59swOqI=", + "lastModified": 1736755461, + "narHash": "sha256-sSD+ITN1CuOnUMPU2VmLmZno963ydG/oKV+4TrMjGRE=", "owner": "nix-community", "repo": "NUR", - "rev": "d0b75000239c951baf13a810249da08f849d617f", + "rev": "e7493220ca728cb9d9df1a04ab681427e3ad88e9", "type": "github" }, "original": { @@ -462,11 +445,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1731205797, - "narHash": "sha256-F7N1mxH1VrkVNHR3JGNMRvp9+98KYO4b832KS8Gl2xI=", + "lastModified": 1736323755, + "narHash": "sha256-lUSZtb4+lONT7MKradw9FLMzc+fxtrkKGX7w3oKJmJg=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "f554d27c1544d9c56e5f1f8e2b8aff399803674e", + "rev": "29b2641c1c6e67d836f9a9fda8a6de85be9644ac", "type": "github" }, "original": { @@ -551,11 +534,11 @@ ] }, "locked": { - "lastModified": 1733785344, - "narHash": "sha256-pm4cfEcPXripE36PYCl0A2Tu5ruwHEvTee+HzNk+SQE=", + "lastModified": 1736515725, + "narHash": "sha256-4P99yL8vGehwzytkpP87eklBePt6aqeEC5JFsIzhfUs=", "owner": "Mic92", "repo": "sops-nix", - "rev": "a80af8929781b5fe92ddb8ae52e9027fae780d2a", + "rev": "f214c1b76c347a4e9c8fb68c73d4293a6820d125", "type": "github" }, "original": { @@ -604,8 +587,9 @@ "type": "github" }, "original": { - "id": "systems", - "type": "indirect" + "owner": "nix-systems", + "repo": "default", + "type": "github" } }, "treefmt-nix": { From 6c8be2e071c27b921d576d470fe30a74d1f43aef Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 14 Jan 2025 15:56:28 +0100 Subject: [PATCH 348/562] Enable RealtimeKit system service --- modules/pipewire.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/pipewire.nix b/modules/pipewire.nix index f3e2e36..34f4c7d 100644 --- a/modules/pipewire.nix +++ b/modules/pipewire.nix @@ -51,4 +51,6 @@ lib.mkIf config.jalr.gui.enable { value = "unlimited"; } ]; + + security.rtkit.enable = true; } From 20857a4fa2caffa561e6038f7f4a1d65b4b8bed5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 14 Jan 2025 16:42:33 +0100 Subject: [PATCH 349/562] Enable Flatpak --- hosts/copper/configuration.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index db1152b..f7c224b 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -45,5 +45,7 @@ }; system.stateVersion = "24.05"; + + services.flatpak.enable = true; } From 935e5e367df63f4b995bc55d698f01f529d95655 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 14 Jan 2025 16:50:31 +0100 Subject: [PATCH 350/562] Replace Element and Telegram with Ferdium --- users/jalr/modules/communication/default.nix | 3 +- .../modules/communication/element-desktop.nix | 54 ------------------- users/jalr/modules/communication/ferdium.nix | 14 +++++ .../communication/telegram-desktop.nix | 7 --- 4 files changed, 15 insertions(+), 63 deletions(-) delete mode 100644 users/jalr/modules/communication/element-desktop.nix create mode 100644 users/jalr/modules/communication/ferdium.nix delete mode 100644 users/jalr/modules/communication/telegram-desktop.nix diff --git a/users/jalr/modules/communication/default.nix b/users/jalr/modules/communication/default.nix index d94f3b7..5dc2faf 100644 --- a/users/jalr/modules/communication/default.nix +++ b/users/jalr/modules/communication/default.nix @@ -2,8 +2,7 @@ { imports = [ - ./element-desktop.nix + ./ferdium.nix ./mumble.nix - ./telegram-desktop.nix ]; } diff --git a/users/jalr/modules/communication/element-desktop.nix b/users/jalr/modules/communication/element-desktop.nix deleted file mode 100644 index d634e21..0000000 --- a/users/jalr/modules/communication/element-desktop.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ nixosConfig, lib, pkgs, ... }: - -let - profiles = { - "digitaler-dienst" = { - description = "Digitaler Dienst"; - icon = pkgs.fetchurl { - url = "https://matrix.digitaler-dienst.gmbh/_matrix/media/v3/thumbnail/digitaler-dienst.gmbh/kfUmmNxpmbsLtdIRvZcxkWAh?width=256&height=256"; - sha256 = "uSxx9avx3I/rDzFnwgEZUwLVktsTeZiSWcDHjPzcUtw="; - }; - }; - "private" = { - description = "private"; - }; - }; -in -lib.mkIf nixosConfig.jalr.gui.enable { - # Create an empty directory in nix store - # as we want to use Element only with `--profile-dir` - xdg.configFile.Element = { - source = pkgs.runCommand "empty-Element-directory" { } "mkdir $out"; - target = "Element"; - }; - - xdg.desktopEntries = lib.attrsets.mapAttrs' - (name: value: lib.attrsets.nameValuePair "element-desktop-${name}" ( - let - package = ( - if value ? icon then - pkgs.element-desktop.overrideAttrs - (oldAttrs: { - patchPhase = oldAttrs.patchPhase or "" + '' - rm build/icons/* res/img/* - cp ${value.icon} res/img/element.png - ''; - }) - else pkgs.element-desktop - ); - in - { - categories = [ "Network" "InstantMessaging" "Chat" ]; - exec = toString (pkgs.writeShellScript "element-desktop-${name}" '' - exec "${package}/bin/element-desktop" --profile-dir "$HOME/.config/element-profiles/${name}" - ''); - genericName = "Matrix Client"; - icon = "${package}/share/element/img/element.png"; - mimeType = [ "x-scheme-handler/element" ]; - name = "Element ${value.description}"; - terminal = false; - type = "Application"; - } - )) - profiles; -} diff --git a/users/jalr/modules/communication/ferdium.nix b/users/jalr/modules/communication/ferdium.nix new file mode 100644 index 0000000..1d0b4d5 --- /dev/null +++ b/users/jalr/modules/communication/ferdium.nix @@ -0,0 +1,14 @@ +{ nixosConfig, lib, ... }: + +lib.mkIf nixosConfig.jalr.gui.enable { + xdg.desktopEntries.Ferdium = { + name = "Ferdium"; + exec = "flatpak run --branch=stable --arch=x86_64 --command=ferdium --file-forwarding org.ferdium.Ferdium @@u %U @@"; + terminal = false; + type = "Application"; + icon = "org.ferdium.Ferdium"; + comment = "Desktop app bringing all your messaging services into one installable"; + mimeType = [ "x-scheme-handler/ferdium" ]; + categories = [ "Network" "InstantMessaging" ]; + }; +} diff --git a/users/jalr/modules/communication/telegram-desktop.nix b/users/jalr/modules/communication/telegram-desktop.nix deleted file mode 100644 index d8876cc..0000000 --- a/users/jalr/modules/communication/telegram-desktop.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ nixosConfig, lib, pkgs, ... }: - -lib.mkIf nixosConfig.jalr.gui.enable { - home.packages = with pkgs; [ - tdesktop - ]; -} From 69d5ac43f58971dbeddacae7890ad91e6ff5f25d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 16 Jan 2025 17:08:53 +0100 Subject: [PATCH 351/562] Replace PCManFM with Thunar --- users/jalr/modules/default.nix | 2 +- users/jalr/modules/{pcmanfm.nix => thunar.nix} | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) rename users/jalr/modules/{pcmanfm.nix => thunar.nix} (74%) diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 077656d..d0d8f34 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -27,12 +27,12 @@ ./openscad.nix ./ots.nix ./pass.nix - ./pcmanfm.nix ./python.nix ./remarkable ./snapclient.nix ./sound ./sway + ./thunar.nix ./thunderbird.nix ./tmux.nix ./tor-browser.nix diff --git a/users/jalr/modules/pcmanfm.nix b/users/jalr/modules/thunar.nix similarity index 74% rename from users/jalr/modules/pcmanfm.nix rename to users/jalr/modules/thunar.nix index 49819d8..28b5b0b 100644 --- a/users/jalr/modules/pcmanfm.nix +++ b/users/jalr/modules/thunar.nix @@ -1,7 +1,8 @@ { nixosConfig, lib, pkgs, ... }: lib.mkIf nixosConfig.jalr.gui.enable { home.packages = with pkgs; [ - pcmanfm + xfce.thunar + xfce.thunar-volman ]; } From 3e1b573df8c8569881df4df37f23a66586ff6d8b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 16 Jan 2025 17:10:02 +0100 Subject: [PATCH 352/562] Fix link opening in Flatpak apps --- modules/sway.nix | 7 +++++++ users/jalr/default.nix | 6 ++++++ users/jalr/modules/sway/default.nix | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/sway.nix b/modules/sway.nix index 4b47299..a840d71 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -25,9 +25,16 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { xdg-desktop-portal-wlr xdg-desktop-portal-gtk ]; + xdgOpenUsePortal = true; }; icons.enable = true; }; programs.wshowkeys.enable = true; + + programs.dconf.enable = true; + + environment.systemPackages = with pkgs; [ + adwaita-icon-theme + ]; } diff --git a/users/jalr/default.nix b/users/jalr/default.nix index 5f43783..93e99b1 100644 --- a/users/jalr/default.nix +++ b/users/jalr/default.nix @@ -62,7 +62,13 @@ in enable = true; defaultApplications = { "application/pdf" = "org.gnome.Evince.desktop"; + "image/svg+xml" = "org.inkscape.Inkscape.desktop"; + + "x-scheme-handler/http" = "firefox-esr.desktop"; + "x-scheme-handler/https" = "firefox-esr.desktop"; + + "x-scheme-handler/mailto" = "thunderbird.desktop"; }; }; diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index e878052..bb16c26 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -92,7 +92,7 @@ in export XDG_SESSION_TYPE="wayland" # otherwise set to tty set -e __HM_SESS_VARS_SOURCED set -e __NIXOS_SET_ENVIRONMENT_DONE - exec systemd-cat -t sway sway + exec systemd-cat -t sway dbus-run-session sway end ''; From d3e7c79ddea1cf3fe1a354a8a40c10931ae74523 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 17 Jan 2025 17:36:30 +0100 Subject: [PATCH 353/562] Update kanshi config --- users/jalr/modules/gui.nix | 77 ++++++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 28 deletions(-) diff --git a/users/jalr/modules/gui.nix b/users/jalr/modules/gui.nix index 6e34d61..4352a9c 100644 --- a/users/jalr/modules/gui.nix +++ b/users/jalr/modules/gui.nix @@ -18,32 +18,53 @@ lib.mkIf nixosConfig.jalr.gui.enable { xdg-utils ]; - services.kanshi = { - enable = true; - settings = [ - { - profile.name = "laemmermann"; - profile.outputs = [ - { - criteria = "ViewSonic Corporation VX3276-QHD VSX2403A0490"; - status = "enable"; - mode = "2560x1440@59.951Hz"; - position = "0,0"; - } - { - criteria = "ViewSonic Corporation VX3276-QHD VSX2351A0801"; - status = "enable"; - mode = "2560x1440@59.951Hz"; - position = "2560,0"; - } - { - criteria = "eDP-1"; - status = "enable"; - mode = "2560x1600"; - position = "5120,0"; - } - ]; - } - ]; - }; + services.kanshi = + let + internalDisplay = { + criteria = "BOE 0x0BC9 Unknown"; + status = "enable"; + mode = "2560x1600"; + }; + in + { + enable = true; + settings = [ + { + profile.name = "laemmermann"; + profile.outputs = [ + { + criteria = "ViewSonic Corporation VX3276-QHD VSX2403A0490"; + status = "enable"; + mode = "2560x1440@59.951Hz"; + position = "0,0"; + } + { + criteria = "ViewSonic Corporation VX3276-QHD VSX2351A0801"; + status = "enable"; + mode = "2560x1440@59.951Hz"; + position = "2560,0"; + } + (internalDisplay // { position = "5120,0"; }) + ]; + } + { + profile.name = "digitaler-dienst"; + profile.outputs = [ + (internalDisplay // { position = "0,0"; }) + { + criteria = "Lenovo Group Limited L27q-38 URB731YF"; + status = "enable"; + mode = "2560x1440@59.951Hz"; + position = "2048,0"; + } + { + criteria = "Lenovo Group Limited L27q-35 URB5T16R"; + status = "enable"; + mode = "2560x1440@59.951Hz"; + position = "4380,0"; + } + ]; + } + ]; + }; } From 5475efb4644ca420983c9d62d4dfabb91186c389 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 18 Jan 2025 16:42:21 +0100 Subject: [PATCH 354/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/f720e64ec37fa16ebba6354eadf310f81555cc07?narHash=sha256-8hKhPQuMtXfJi%2B4lPvw3FBk/zSJVHeb726Zo0uF1PP8%3D' (2025-01-12) → 'github:nix-community/disko/bf0abfde48f469c256f2b0f481c6281ff04a5db2?narHash=sha256-rMEuiK69MDhjz1JgbaeQ9mBDXMJ2/P8vmOYRbFndXsk%3D' (2025-01-16) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/a5a961387e75ae44cc20f0a57ae463da5e959656?narHash=sha256-3FZAG%2BpGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110%3D' (2025-01-03) → 'github:cachix/git-hooks.nix/94ee657f6032d913fe0ef49adaa743804635b0bb?narHash=sha256-I/OuxGwXwRi5gnFPsyCvVR%2BIfFstA%2BQXEpHu1hvsgD8%3D' (2025-01-16) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/8870dcaff63dfc6647fb10648b827e9d40b0a337?narHash=sha256-OL7leZ6KBhcDF3nEKe4aZVfIm6xQpb1Kb%2BmxySIP93o%3D' (2025-01-09) → 'github:nixos/nixos-hardware/b678606690027913f3434dea3864e712b862dde5?narHash=sha256-oMr3PVIQ8XPDI8/x6BHxsWEPBRU98Pam6KGVwUh8MPk%3D' (2025-01-15) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/67e9c880898889470f153157a96b595e758167fc?narHash=sha256-hcETjfECLklW1ND8svDvN0Nw6H/1qtuoz3rbFNQ1Lrk%3D' (2025-01-13) → 'github:nixos/nixpkgs/c387cc8d7f36f39c664ec4ebd31bbd599afee63a?narHash=sha256-GTMaOEhGHMBh4FooFVAs7ItAMx%2Bj2BXnSDCUrrjETVY%3D' (2025-01-18) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/74dbb1b3cbf8b06b8d9874e6bd2a9ac2e2b483d3?narHash=sha256-4aJg0cDkUWK3mNqGXYzYSyRYQqSrsm2YGmmSSti/CUA%3D' (2025-01-13) → 'github:NixOS/nixpkgs/f52cc903969954c3c683711a2df89491f6c1a8c6?narHash=sha256-VS6ZgiEsizutKhCncL2bcM5i49DP/f2P4LteFaOc4uE%3D' (2025-01-18) • Updated input 'nur': 'github:nix-community/NUR/e7493220ca728cb9d9df1a04ab681427e3ad88e9?narHash=sha256-sSD%2BITN1CuOnUMPU2VmLmZno963ydG/oKV%2B4TrMjGRE%3D' (2025-01-13) → 'github:nix-community/NUR/c3f3c0e11ff74832a59cccd6a0db1b5add3fb369?narHash=sha256-dVEcx6ijAyxcnCE6ZDLJ2PYXHUY7gSd9QS03D4BWe58%3D' (2025-01-18) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/130595eba61081acde9001f43de3248d8888ac4a?narHash=sha256-Xb8mke6UCYjge9kPR9o4P1nVrhk7QBbKv3xQ9cj7h2s%3D' (2025-01-10) → 'github:nixos/nixpkgs/5df43628fdf08d642be8ba5b3625a6c70731c19c?narHash=sha256-Tbk1MZbtV2s5aG%2BiM99U8FqwxU/YNArMcWAv6clcsBc%3D' (2025-01-16) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/29b2641c1c6e67d836f9a9fda8a6de85be9644ac?narHash=sha256-lUSZtb4%2BlONT7MKradw9FLMzc%2BfxtrkKGX7w3oKJmJg%3D' (2025-01-08) → 'github:nix-community/poetry2nix/75d0515332b7ca269f6d7abfd2c44c47a7cbca7b?narHash=sha256-eiCqmKl0BIRiYk5/ZhZozwn4/7Km9CWTbc15Cv%2BVX5k%3D' (2025-01-14) • Updated input 'sops-nix': 'github:Mic92/sops-nix/f214c1b76c347a4e9c8fb68c73d4293a6820d125?narHash=sha256-4P99yL8vGehwzytkpP87eklBePt6aqeEC5JFsIzhfUs%3D' (2025-01-10) → 'github:Mic92/sops-nix/4c4fb93f18b9072c6fa1986221f9a3d7bf1fe4b6?narHash=sha256-GXUE9%2BFgxoZU8v0p6ilBJ8NH7k8nKmZjp/7dmMrCv3o%3D' (2025-01-17) --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index 2867118..62f68a4 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1736711425, - "narHash": "sha256-8hKhPQuMtXfJi+4lPvw3FBk/zSJVHeb726Zo0uF1PP8=", + "lastModified": 1737038063, + "narHash": "sha256-rMEuiK69MDhjz1JgbaeQ9mBDXMJ2/P8vmOYRbFndXsk=", "owner": "nix-community", "repo": "disko", - "rev": "f720e64ec37fa16ebba6354eadf310f81555cc07", + "rev": "bf0abfde48f469c256f2b0f481c6281ff04a5db2", "type": "github" }, "original": { @@ -318,11 +318,11 @@ ] }, "locked": { - "lastModified": 1735882644, - "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", + "lastModified": 1737043064, + "narHash": "sha256-I/OuxGwXwRi5gnFPsyCvVR+IfFstA+QXEpHu1hvsgD8=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", + "rev": "94ee657f6032d913fe0ef49adaa743804635b0bb", "type": "github" }, "original": { @@ -334,11 +334,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1736441705, - "narHash": "sha256-OL7leZ6KBhcDF3nEKe4aZVfIm6xQpb1Kb+mxySIP93o=", + "lastModified": 1736978406, + "narHash": "sha256-oMr3PVIQ8XPDI8/x6BHxsWEPBRU98Pam6KGVwUh8MPk=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "8870dcaff63dfc6647fb10648b827e9d40b0a337", + "rev": "b678606690027913f3434dea3864e712b862dde5", "type": "github" }, "original": { @@ -350,11 +350,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1736754065, - "narHash": "sha256-hcETjfECLklW1ND8svDvN0Nw6H/1qtuoz3rbFNQ1Lrk=", + "lastModified": 1737213358, + "narHash": "sha256-GTMaOEhGHMBh4FooFVAs7ItAMx+j2BXnSDCUrrjETVY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "67e9c880898889470f153157a96b595e758167fc", + "rev": "c387cc8d7f36f39c664ec4ebd31bbd599afee63a", "type": "github" }, "original": { @@ -382,11 +382,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1736759503, - "narHash": "sha256-4aJg0cDkUWK3mNqGXYzYSyRYQqSrsm2YGmmSSti/CUA=", + "lastModified": 1737213921, + "narHash": "sha256-VS6ZgiEsizutKhCncL2bcM5i49DP/f2P4LteFaOc4uE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "74dbb1b3cbf8b06b8d9874e6bd2a9ac2e2b483d3", + "rev": "f52cc903969954c3c683711a2df89491f6c1a8c6", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1736523798, - "narHash": "sha256-Xb8mke6UCYjge9kPR9o4P1nVrhk7QBbKv3xQ9cj7h2s=", + "lastModified": 1737062831, + "narHash": "sha256-Tbk1MZbtV2s5aG+iM99U8FqwxU/YNArMcWAv6clcsBc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "130595eba61081acde9001f43de3248d8888ac4a", + "rev": "5df43628fdf08d642be8ba5b3625a6c70731c19c", "type": "github" }, "original": { @@ -419,11 +419,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1736755461, - "narHash": "sha256-sSD+ITN1CuOnUMPU2VmLmZno963ydG/oKV+4TrMjGRE=", + "lastModified": 1737214132, + "narHash": "sha256-dVEcx6ijAyxcnCE6ZDLJ2PYXHUY7gSd9QS03D4BWe58=", "owner": "nix-community", "repo": "NUR", - "rev": "e7493220ca728cb9d9df1a04ab681427e3ad88e9", + "rev": "c3f3c0e11ff74832a59cccd6a0db1b5add3fb369", "type": "github" }, "original": { @@ -445,11 +445,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1736323755, - "narHash": "sha256-lUSZtb4+lONT7MKradw9FLMzc+fxtrkKGX7w3oKJmJg=", + "lastModified": 1736884309, + "narHash": "sha256-eiCqmKl0BIRiYk5/ZhZozwn4/7Km9CWTbc15Cv+VX5k=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "29b2641c1c6e67d836f9a9fda8a6de85be9644ac", + "rev": "75d0515332b7ca269f6d7abfd2c44c47a7cbca7b", "type": "github" }, "original": { @@ -534,11 +534,11 @@ ] }, "locked": { - "lastModified": 1736515725, - "narHash": "sha256-4P99yL8vGehwzytkpP87eklBePt6aqeEC5JFsIzhfUs=", + "lastModified": 1737107480, + "narHash": "sha256-GXUE9+FgxoZU8v0p6ilBJ8NH7k8nKmZjp/7dmMrCv3o=", "owner": "Mic92", "repo": "sops-nix", - "rev": "f214c1b76c347a4e9c8fb68c73d4293a6820d125", + "rev": "4c4fb93f18b9072c6fa1986221f9a3d7bf1fe4b6", "type": "github" }, "original": { From 4c51c018fa0ddd59de05739ab91bfa6b3a7485e8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 22 Jan 2025 13:27:03 +0100 Subject: [PATCH 355/562] Add buzzer --- .../esphome/devices/wohnungstuer.yaml | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/hosts/iron/services/esphome/devices/wohnungstuer.yaml b/hosts/iron/services/esphome/devices/wohnungstuer.yaml index 46b47c8..86ba80a 100644 --- a/hosts/iron/services/esphome/devices/wohnungstuer.yaml +++ b/hosts/iron/services/esphome/devices/wohnungstuer.yaml @@ -60,6 +60,11 @@ binary_sensor: - light.turn_on: id: pixels effect: strobe_red + - script.execute: + id: beep + on_ms: 250 + off_ms: 250 + else: - if: condition: @@ -69,7 +74,7 @@ binary_sensor: id: pixels effect: "None" red: 75% - green: 75% + green: 25% on_release: # on closing door then: @@ -83,6 +88,10 @@ binary_sensor: red: 0% green: 0% blue: 100% + - script.execute: + id: beep + on_ms: 100 + off_ms: 1000 - if: condition: lambda: |- @@ -90,6 +99,8 @@ binary_sensor: then: - light.turn_off: id: pixels + - script.stop: beep + - switch.turn_off: buzzer - binary_sensor.template.publish: # set away state id: presence state: OFF @@ -99,6 +110,8 @@ binary_sensor: # when keys are in the bowl binary_sensor.is_on: key_bowl then: + - script.stop: beep + - switch.turn_off: buzzer - light.turn_on: id: pixels effect: "None" @@ -117,6 +130,8 @@ binary_sensor: then: - light.turn_off: id: pixels + - script.stop: beep + - switch.turn_off: buzzer - platform: gpio name: Schlüsselschale @@ -143,6 +158,8 @@ binary_sensor: # door is closed binary_sensor.is_off: door then: + - script.stop: beep + - switch.turn_off: buzzer - light.turn_on: id: pixels effect: "None" @@ -192,5 +209,26 @@ light: width: 10 - addressable_scan: name: scan - move_interval: 40ms + move_interval: 20ms scan_width: 1 + +switch: + - platform: gpio + pin: GPIO22 + id: buzzer + +script: + - id: beep + mode: restart + parameters: + on_ms: int + off_ms: int + then: + - while: + condition: + lambda: 'return true;' + then: + - switch.turn_on: buzzer + - delay: !lambda return on_ms; + - switch.turn_off: buzzer + - delay: !lambda return off_ms; From a0f42f9725ea0cc4113a27b6290ed2d4d1874869 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 22 Jan 2025 13:28:21 +0100 Subject: [PATCH 356/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/94ee657f6032d913fe0ef49adaa743804635b0bb?narHash=sha256-I/OuxGwXwRi5gnFPsyCvVR%2BIfFstA%2BQXEpHu1hvsgD8%3D' (2025-01-16) → 'github:cachix/git-hooks.nix/9364dc02281ce2d37a1f55b6e51f7c0f65a75f17?narHash=sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg%3D' (2025-01-21) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/b678606690027913f3434dea3864e712b862dde5?narHash=sha256-oMr3PVIQ8XPDI8/x6BHxsWEPBRU98Pam6KGVwUh8MPk%3D' (2025-01-15) → 'github:nixos/nixos-hardware/61c79181e77ef774ab0468b28a24bc2647d498d6?narHash=sha256-utplyRM6pqnN940gfaLFBb9oUCSzkan86IvmkhsVlN8%3D' (2025-01-20) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/c387cc8d7f36f39c664ec4ebd31bbd599afee63a?narHash=sha256-GTMaOEhGHMBh4FooFVAs7ItAMx%2Bj2BXnSDCUrrjETVY%3D' (2025-01-18) → 'github:nixos/nixpkgs/9b6cdf829fdef63efed466cf537c838dc685da41?narHash=sha256-Oa91e3B0/T1E4iL3HRO2ZOIxBxZGkCjHYY8VpFHOrwQ%3D' (2025-01-22) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/f52cc903969954c3c683711a2df89491f6c1a8c6?narHash=sha256-VS6ZgiEsizutKhCncL2bcM5i49DP/f2P4LteFaOc4uE%3D' (2025-01-18) → 'github:NixOS/nixpkgs/66292a47a4f13788e9d286f888021770a439acdc?narHash=sha256-oCUz3dmHN24ygfLwG8ziIP5zMCTQ1f8EYbID4CHdaCw%3D' (2025-01-22) • Updated input 'nur': 'github:nix-community/NUR/c3f3c0e11ff74832a59cccd6a0db1b5add3fb369?narHash=sha256-dVEcx6ijAyxcnCE6ZDLJ2PYXHUY7gSd9QS03D4BWe58%3D' (2025-01-18) → 'github:nix-community/NUR/e40ac9c9b6aedbbfcddb32e94de8aa2f4a9a26bb?narHash=sha256-ZwJ3d0XiO8CQWf9C18inGojVGlCy8wWHt3v5HHaZJKM%3D' (2025-01-22) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/5df43628fdf08d642be8ba5b3625a6c70731c19c?narHash=sha256-Tbk1MZbtV2s5aG%2BiM99U8FqwxU/YNArMcWAv6clcsBc%3D' (2025-01-16) → 'github:nixos/nixpkgs/9e4d5190a9482a1fb9d18adf0bdb83c6e506eaab?narHash=sha256-nmKOgAU48S41dTPIXAq0AHZSehWUn6ZPrUKijHAMmIk%3D' (2025-01-21) • Updated input 'sops-nix': 'github:Mic92/sops-nix/4c4fb93f18b9072c6fa1986221f9a3d7bf1fe4b6?narHash=sha256-GXUE9%2BFgxoZU8v0p6ilBJ8NH7k8nKmZjp/7dmMrCv3o%3D' (2025-01-17) → 'github:Mic92/sops-nix/015d461c16678fc02a2f405eb453abb509d4e1d4?narHash=sha256-j9IdflJwRtqo9WpM0OfAZml47eBblUHGNQTe62OUqTw%3D' (2025-01-20) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 62f68a4..fcaaca2 100644 --- a/flake.lock +++ b/flake.lock @@ -318,11 +318,11 @@ ] }, "locked": { - "lastModified": 1737043064, - "narHash": "sha256-I/OuxGwXwRi5gnFPsyCvVR+IfFstA+QXEpHu1hvsgD8=", + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "94ee657f6032d913fe0ef49adaa743804635b0bb", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", "type": "github" }, "original": { @@ -334,11 +334,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1736978406, - "narHash": "sha256-oMr3PVIQ8XPDI8/x6BHxsWEPBRU98Pam6KGVwUh8MPk=", + "lastModified": 1737359802, + "narHash": "sha256-utplyRM6pqnN940gfaLFBb9oUCSzkan86IvmkhsVlN8=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "b678606690027913f3434dea3864e712b862dde5", + "rev": "61c79181e77ef774ab0468b28a24bc2647d498d6", "type": "github" }, "original": { @@ -350,11 +350,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1737213358, - "narHash": "sha256-GTMaOEhGHMBh4FooFVAs7ItAMx+j2BXnSDCUrrjETVY=", + "lastModified": 1737545261, + "narHash": "sha256-Oa91e3B0/T1E4iL3HRO2ZOIxBxZGkCjHYY8VpFHOrwQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c387cc8d7f36f39c664ec4ebd31bbd599afee63a", + "rev": "9b6cdf829fdef63efed466cf537c838dc685da41", "type": "github" }, "original": { @@ -382,11 +382,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1737213921, - "narHash": "sha256-VS6ZgiEsizutKhCncL2bcM5i49DP/f2P4LteFaOc4uE=", + "lastModified": 1737547357, + "narHash": "sha256-oCUz3dmHN24ygfLwG8ziIP5zMCTQ1f8EYbID4CHdaCw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f52cc903969954c3c683711a2df89491f6c1a8c6", + "rev": "66292a47a4f13788e9d286f888021770a439acdc", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1737062831, - "narHash": "sha256-Tbk1MZbtV2s5aG+iM99U8FqwxU/YNArMcWAv6clcsBc=", + "lastModified": 1737469691, + "narHash": "sha256-nmKOgAU48S41dTPIXAq0AHZSehWUn6ZPrUKijHAMmIk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "5df43628fdf08d642be8ba5b3625a6c70731c19c", + "rev": "9e4d5190a9482a1fb9d18adf0bdb83c6e506eaab", "type": "github" }, "original": { @@ -419,11 +419,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1737214132, - "narHash": "sha256-dVEcx6ijAyxcnCE6ZDLJ2PYXHUY7gSd9QS03D4BWe58=", + "lastModified": 1737548889, + "narHash": "sha256-ZwJ3d0XiO8CQWf9C18inGojVGlCy8wWHt3v5HHaZJKM=", "owner": "nix-community", "repo": "NUR", - "rev": "c3f3c0e11ff74832a59cccd6a0db1b5add3fb369", + "rev": "e40ac9c9b6aedbbfcddb32e94de8aa2f4a9a26bb", "type": "github" }, "original": { @@ -534,11 +534,11 @@ ] }, "locked": { - "lastModified": 1737107480, - "narHash": "sha256-GXUE9+FgxoZU8v0p6ilBJ8NH7k8nKmZjp/7dmMrCv3o=", + "lastModified": 1737411508, + "narHash": "sha256-j9IdflJwRtqo9WpM0OfAZml47eBblUHGNQTe62OUqTw=", "owner": "Mic92", "repo": "sops-nix", - "rev": "4c4fb93f18b9072c6fa1986221f9a3d7bf1fe4b6", + "rev": "015d461c16678fc02a2f405eb453abb509d4e1d4", "type": "github" }, "original": { From acc99ede489a6bdf16e838b826a34399f24dfe34 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 27 Jan 2025 08:28:48 +0100 Subject: [PATCH 357/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/61c79181e77ef774ab0468b28a24bc2647d498d6?narHash=sha256-utplyRM6pqnN940gfaLFBb9oUCSzkan86IvmkhsVlN8%3D' (2025-01-20) → 'github:nixos/nixos-hardware/dfad538f751a5aa5d4436d9781ab27a6128ec9d4?narHash=sha256-ZEbOJ9iT72iwqXsiEMbEa8wWjyFvRA9Ugx8utmYbpz4%3D' (2025-01-24) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/9b6cdf829fdef63efed466cf537c838dc685da41?narHash=sha256-Oa91e3B0/T1E4iL3HRO2ZOIxBxZGkCjHYY8VpFHOrwQ%3D' (2025-01-22) → 'github:nixos/nixpkgs/e7d1ad8950c9c4d3f17626b5a44965b26ca1a44a?narHash=sha256-AFirXjuOH227NzuDeVn%2BgLsTkSGjo0Ve2oPR1JA8fjU%3D' (2025-01-27) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/66292a47a4f13788e9d286f888021770a439acdc?narHash=sha256-oCUz3dmHN24ygfLwG8ziIP5zMCTQ1f8EYbID4CHdaCw%3D' (2025-01-22) → 'github:NixOS/nixpkgs/f104c8eca09a5affe9fa1de5d98d33affb31ade3?narHash=sha256-Nb4mQxo%2BYww06Z1v6QgZkAV/9tUPMUGBudvcRbzxfRw%3D' (2025-01-27) • Updated input 'nur': 'github:nix-community/NUR/e40ac9c9b6aedbbfcddb32e94de8aa2f4a9a26bb?narHash=sha256-ZwJ3d0XiO8CQWf9C18inGojVGlCy8wWHt3v5HHaZJKM%3D' (2025-01-22) → 'github:nix-community/NUR/be257bb480af81493b38f11c5ffde5a4c2594b73?narHash=sha256-f1YmugFJjPguW65Mn0jNmvS6NO6YWK0B092Pmx7ihWo%3D' (2025-01-27) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/9e4d5190a9482a1fb9d18adf0bdb83c6e506eaab?narHash=sha256-nmKOgAU48S41dTPIXAq0AHZSehWUn6ZPrUKijHAMmIk%3D' (2025-01-21) → 'github:nixos/nixpkgs/852ff1d9e153d8875a83602e03fdef8a63f0ecf8?narHash=sha256-Zf0hSrtzaM1DEz8//%2BXs51k/wdSajticVrATqDrfQjg%3D' (2025-01-26) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index fcaaca2..160134e 100644 --- a/flake.lock +++ b/flake.lock @@ -334,11 +334,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1737359802, - "narHash": "sha256-utplyRM6pqnN940gfaLFBb9oUCSzkan86IvmkhsVlN8=", + "lastModified": 1737751639, + "narHash": "sha256-ZEbOJ9iT72iwqXsiEMbEa8wWjyFvRA9Ugx8utmYbpz4=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "61c79181e77ef774ab0468b28a24bc2647d498d6", + "rev": "dfad538f751a5aa5d4436d9781ab27a6128ec9d4", "type": "github" }, "original": { @@ -350,11 +350,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1737545261, - "narHash": "sha256-Oa91e3B0/T1E4iL3HRO2ZOIxBxZGkCjHYY8VpFHOrwQ=", + "lastModified": 1737958377, + "narHash": "sha256-AFirXjuOH227NzuDeVn+gLsTkSGjo0Ve2oPR1JA8fjU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9b6cdf829fdef63efed466cf537c838dc685da41", + "rev": "e7d1ad8950c9c4d3f17626b5a44965b26ca1a44a", "type": "github" }, "original": { @@ -382,11 +382,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1737547357, - "narHash": "sha256-oCUz3dmHN24ygfLwG8ziIP5zMCTQ1f8EYbID4CHdaCw=", + "lastModified": 1737961843, + "narHash": "sha256-Nb4mQxo+Yww06Z1v6QgZkAV/9tUPMUGBudvcRbzxfRw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "66292a47a4f13788e9d286f888021770a439acdc", + "rev": "f104c8eca09a5affe9fa1de5d98d33affb31ade3", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1737469691, - "narHash": "sha256-nmKOgAU48S41dTPIXAq0AHZSehWUn6ZPrUKijHAMmIk=", + "lastModified": 1737885589, + "narHash": "sha256-Zf0hSrtzaM1DEz8//+Xs51k/wdSajticVrATqDrfQjg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9e4d5190a9482a1fb9d18adf0bdb83c6e506eaab", + "rev": "852ff1d9e153d8875a83602e03fdef8a63f0ecf8", "type": "github" }, "original": { @@ -419,11 +419,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1737548889, - "narHash": "sha256-ZwJ3d0XiO8CQWf9C18inGojVGlCy8wWHt3v5HHaZJKM=", + "lastModified": 1737954724, + "narHash": "sha256-f1YmugFJjPguW65Mn0jNmvS6NO6YWK0B092Pmx7ihWo=", "owner": "nix-community", "repo": "NUR", - "rev": "e40ac9c9b6aedbbfcddb32e94de8aa2f4a9a26bb", + "rev": "be257bb480af81493b38f11c5ffde5a4c2594b73", "type": "github" }, "original": { From fa980d17532797f9c4d7374f32410ac4137dfb22 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 Jan 2025 02:18:27 +0100 Subject: [PATCH 358/562] Enable color interlock otherwise, adaptive lighting will also set a color. --- .../iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml b/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml index 802e77f..88224a9 100644 --- a/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml +++ b/hosts/iron/services/esphome/devices/chinafrickeldeckenleuchte.yaml @@ -57,3 +57,4 @@ light: cold_white: output_ch5 warm_white_color_temperature: 2700 K cold_white_color_temperature: 6500 K + color_interlock: true From 88c5c3c885b0494bd8b17b07e3eb9f2063a7dee3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 29 Jan 2025 01:26:46 +0100 Subject: [PATCH 359/562] Changes for esp32 client - Use recommended settings for esp32 client, see https://github.com/DavidVentura/esp-snapcast - Allow access from iot network --- hosts/iron/services/snapcast/snapserver.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hosts/iron/services/snapcast/snapserver.nix b/hosts/iron/services/snapcast/snapserver.nix index 4dbda43..e007634 100644 --- a/hosts/iron/services/snapcast/snapserver.nix +++ b/hosts/iron/services/snapcast/snapserver.nix @@ -10,6 +10,11 @@ in default = { type = "meta"; location = "meta:///hass/bluetooth/airplay/mopidy"; + query = { + chunk_ms = "30"; + buffer = "690"; + codec = "flac"; + }; }; mopidy = { type = "pipe"; @@ -56,4 +61,10 @@ in { from = 6001; to = 6011; } # airplay ]; }; + + networking.firewall.interfaces.iot = { + allowedTCPPorts = [ + config.services.snapserver.port + ]; + }; } From 5eeaf11e6c0aebe2218464f590b822c1daba492c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 29 Jan 2025 11:06:13 +0100 Subject: [PATCH 360/562] Improve git diff --- users/jalr/modules/git.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/users/jalr/modules/git.nix b/users/jalr/modules/git.nix index 9d4391f..83e4b79 100644 --- a/users/jalr/modules/git.nix +++ b/users/jalr/modules/git.nix @@ -17,6 +17,7 @@ in }; diff-so-fancy = { enable = true; + markEmptyLines = false; }; extraConfig = { init.defaultBranch = "main"; @@ -24,11 +25,30 @@ in pull.ff = "only"; alias.find-merge = "!sh -c 'commit=$0 && branch=\${1:-HEAD} && (git rev-list $commit..$branch --ancestry-path | cat -n; git rev-list $commit..$branch --first-parent | cat -n) | sort -k2 -s | uniq -f1 -d | sort -n | tail -1 | cut -f2'"; alias.show-merge = "!sh -c 'merge=$(git find-merge $0 $1) && [ -n \"$merge\" ] && git show $merge'"; + color = { + ui = true; + meta = "11"; + frag = "magenta bold"; + func = "146 bold"; + commit = "yellow bold"; + old = "red bold"; + new = "green bold"; + whitespace = "red reverse"; + diff-highlight = { + oldNormal = "red bold"; + oldHighlight = "red bold 52"; + newNormal = "green bold"; + newHighlight = "green bold 22"; + }; + }; }; lfs.enable = true; }; lazygit = { enable = true; + settings = { + gui.scrollHeight = 8; + }; }; fish = { shellAbbrs = { From 4e45e263f56163d4ed9b19a461b013d53df110f6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 29 Jan 2025 13:18:45 +0100 Subject: [PATCH 361/562] Add permanent staircase light switch --- .../esphome/devices/tuersprechanlage.yaml | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/hosts/iron/services/esphome/devices/tuersprechanlage.yaml b/hosts/iron/services/esphome/devices/tuersprechanlage.yaml index 49940a4..d40d2c4 100644 --- a/hosts/iron/services/esphome/devices/tuersprechanlage.yaml +++ b/hosts/iron/services/esphome/devices/tuersprechanlage.yaml @@ -76,6 +76,17 @@ output: frequency: 50000 min_power: 0 max_power: 0.12 + - platform: template + type: binary + id: output_staircase_light_permanent + write_action: + - if: + condition: + lambda: 'return state;' + then: + - script.execute: script_staircase_permanent + else: + - script.stop: script_staircase_permanent button: - platform: template @@ -94,3 +105,20 @@ button: - output.turn_on: output_staircase_light_ssr - delay: 200ms - output.turn_off: output_staircase_light_ssr + +light: + - platform: binary + id: staircase_permanent + name: Treppenlicht permanent + output: output_staircase_light_permanent + +script: + - id: script_staircase_permanent + mode: restart + then: + - while: + condition: + lambda: 'return true;' + then: + - button.press: btn_staircase_light + - delay: 90s From 86cf49d8812578f728d32d7f4f67df40d8984372 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 29 Jan 2025 13:19:29 +0100 Subject: [PATCH 362/562] Stop alarm when removing keys if door is open --- .../services/esphome/devices/wohnungstuer.yaml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/hosts/iron/services/esphome/devices/wohnungstuer.yaml b/hosts/iron/services/esphome/devices/wohnungstuer.yaml index 86ba80a..8926b4e 100644 --- a/hosts/iron/services/esphome/devices/wohnungstuer.yaml +++ b/hosts/iron/services/esphome/devices/wohnungstuer.yaml @@ -47,6 +47,8 @@ binary_sensor: mode: input: true pullup: true + filters: + - delayed_on_off: 1s device_class: door on_press: # on opening door then: @@ -144,8 +146,7 @@ binary_sensor: device_class: occupancy filters: - invert: - - delayed_on: 100ms - - delayed_off: 100ms + - delayed_on_off: 250ms on_press: # when keys fall in bowl then: - binary_sensor.template.publish: # set at home state @@ -172,6 +173,15 @@ binary_sensor: transition_length: 3s on_release: # when keys are removed from bowl then: + - if: + condition: + lambda: |- + return id(leaving) == 1; + then: + - light.turn_off: + id: pixels + - script.stop: beep + - switch.turn_off: buzzer - lambda: |- id(leaving) |= 2; - if: From 261a05745805a138362eff936454f864b29ddd2e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 31 Jan 2025 14:23:27 +0100 Subject: [PATCH 363/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/bf0abfde48f469c256f2b0f481c6281ff04a5db2?narHash=sha256-rMEuiK69MDhjz1JgbaeQ9mBDXMJ2/P8vmOYRbFndXsk%3D' (2025-01-16) → 'github:nix-community/disko/18d0a984cc2bc82cf61df19523a34ad463aa7f54?narHash=sha256-KYOATYEwaKysL3HdHdS5kbQMXvzS4iPJzJrML%2B3TKAo%3D' (2025-01-29) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/e7d1ad8950c9c4d3f17626b5a44965b26ca1a44a?narHash=sha256-AFirXjuOH227NzuDeVn%2BgLsTkSGjo0Ve2oPR1JA8fjU%3D' (2025-01-27) → 'github:nixos/nixpkgs/bff401190a036ff01401d57f3b1a30b311cfdec9?narHash=sha256-l3Tn6TREbT%2BSQNWhol5EIjrdt60MLTKRJobacesN/0w%3D' (2025-01-31) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/f104c8eca09a5affe9fa1de5d98d33affb31ade3?narHash=sha256-Nb4mQxo%2BYww06Z1v6QgZkAV/9tUPMUGBudvcRbzxfRw%3D' (2025-01-27) → 'github:NixOS/nixpkgs/2b5331b146af2487829bfba45d01cd6904f4cccd?narHash=sha256-k/tJ6wBMWjrdOaQ138AT6Wa/KLIeFOTn4SXZTnYqtm0%3D' (2025-01-31) • Updated input 'nur': 'github:nix-community/NUR/be257bb480af81493b38f11c5ffde5a4c2594b73?narHash=sha256-f1YmugFJjPguW65Mn0jNmvS6NO6YWK0B092Pmx7ihWo%3D' (2025-01-27) → 'github:nix-community/NUR/df289edee9290b9adc0a8f3aa20c702f312f3658?narHash=sha256-meglyu9QhgFeTFp0AQdwYAyUvQ%2B4fRDgVH7PAS4jc7A%3D' (2025-01-31) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/852ff1d9e153d8875a83602e03fdef8a63f0ecf8?narHash=sha256-Zf0hSrtzaM1DEz8//%2BXs51k/wdSajticVrATqDrfQjg%3D' (2025-01-26) → 'github:nixos/nixpkgs/9d3ae807ebd2981d593cddd0080856873139aa40?narHash=sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9%2BWC4%3D' (2025-01-29) • Updated input 'sops-nix': 'github:Mic92/sops-nix/015d461c16678fc02a2f405eb453abb509d4e1d4?narHash=sha256-j9IdflJwRtqo9WpM0OfAZml47eBblUHGNQTe62OUqTw%3D' (2025-01-20) → 'github:Mic92/sops-nix/4c1251904d8a08c86ac6bc0d72cc09975e89aef7?narHash=sha256-wkwYJc8cKmmQWUloyS9KwttBnja2ONRuJQDEsmef320%3D' (2025-01-31) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 160134e..77132b3 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1737038063, - "narHash": "sha256-rMEuiK69MDhjz1JgbaeQ9mBDXMJ2/P8vmOYRbFndXsk=", + "lastModified": 1738148035, + "narHash": "sha256-KYOATYEwaKysL3HdHdS5kbQMXvzS4iPJzJrML+3TKAo=", "owner": "nix-community", "repo": "disko", - "rev": "bf0abfde48f469c256f2b0f481c6281ff04a5db2", + "rev": "18d0a984cc2bc82cf61df19523a34ad463aa7f54", "type": "github" }, "original": { @@ -350,11 +350,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1737958377, - "narHash": "sha256-AFirXjuOH227NzuDeVn+gLsTkSGjo0Ve2oPR1JA8fjU=", + "lastModified": 1738329486, + "narHash": "sha256-l3Tn6TREbT+SQNWhol5EIjrdt60MLTKRJobacesN/0w=", "owner": "nixos", "repo": "nixpkgs", - "rev": "e7d1ad8950c9c4d3f17626b5a44965b26ca1a44a", + "rev": "bff401190a036ff01401d57f3b1a30b311cfdec9", "type": "github" }, "original": { @@ -382,11 +382,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1737961843, - "narHash": "sha256-Nb4mQxo+Yww06Z1v6QgZkAV/9tUPMUGBudvcRbzxfRw=", + "lastModified": 1738329037, + "narHash": "sha256-k/tJ6wBMWjrdOaQ138AT6Wa/KLIeFOTn4SXZTnYqtm0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f104c8eca09a5affe9fa1de5d98d33affb31ade3", + "rev": "2b5331b146af2487829bfba45d01cd6904f4cccd", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1737885589, - "narHash": "sha256-Zf0hSrtzaM1DEz8//+Xs51k/wdSajticVrATqDrfQjg=", + "lastModified": 1738142207, + "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "852ff1d9e153d8875a83602e03fdef8a63f0ecf8", + "rev": "9d3ae807ebd2981d593cddd0080856873139aa40", "type": "github" }, "original": { @@ -419,11 +419,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1737954724, - "narHash": "sha256-f1YmugFJjPguW65Mn0jNmvS6NO6YWK0B092Pmx7ihWo=", + "lastModified": 1738319198, + "narHash": "sha256-meglyu9QhgFeTFp0AQdwYAyUvQ+4fRDgVH7PAS4jc7A=", "owner": "nix-community", "repo": "NUR", - "rev": "be257bb480af81493b38f11c5ffde5a4c2594b73", + "rev": "df289edee9290b9adc0a8f3aa20c702f312f3658", "type": "github" }, "original": { @@ -534,11 +534,11 @@ ] }, "locked": { - "lastModified": 1737411508, - "narHash": "sha256-j9IdflJwRtqo9WpM0OfAZml47eBblUHGNQTe62OUqTw=", + "lastModified": 1738291974, + "narHash": "sha256-wkwYJc8cKmmQWUloyS9KwttBnja2ONRuJQDEsmef320=", "owner": "Mic92", "repo": "sops-nix", - "rev": "015d461c16678fc02a2f405eb453abb509d4e1d4", + "rev": "4c1251904d8a08c86ac6bc0d72cc09975e89aef7", "type": "github" }, "original": { From f216123b80828c4267f75ec5c9429a1ea76acf23 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 31 Jan 2025 14:24:59 +0100 Subject: [PATCH 364/562] Update gpg key --- pkgs/contact-page/src/gpg/3044E71E.txt | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pkgs/contact-page/src/gpg/3044E71E.txt b/pkgs/contact-page/src/gpg/3044E71E.txt index 329f049..da79b74 100644 --- a/pkgs/contact-page/src/gpg/3044E71E.txt +++ b/pkgs/contact-page/src/gpg/3044E71E.txt @@ -6,18 +6,18 @@ ZlmbOQe0HEpha29iIExlY2huZXIgPGphbHJAamFsci5kZT6IjgQTFgoANhYhBDBE gAAKCRCb9PzLkIVNqbmFAQDG8xNgbZsZx6N2ssVC9k98IUvuKuMZQ6Gju86EsnNY dgD/eSVRfAKCtIPSGtoLvE5zL80hk117R4f8rbMEvrmt9gm4MwRluY53FgkrBgEE AdpHDwEBB0DRonRUQIQSfkqX7yHFHewbEYnc/spaPufL6EnSPVLvZ4j1BBgWCgAm -FiEEMETnHj3v9JtYbPWAm/T8y5CFTakFAmW5jncCGwIFCQHhM4AAgQkQm/T8y5CF -Tal2IAQZFgoAHRYhBDp0/wfiMHs2RqSZ6EYNR7hAgU8/BQJluY53AAoJEEYNR7hA -gU8/HikBAPOziBknk+WcsKODsdViFedagVgtnjW8J6mJZRKNcD2fAP4/42g9wU2i -KHKHypLlGdmgOVOpSGNcubkcPFcOOHH7AZevAQDUU/UNpIHe7R3rYq4sFT2iYa9T -ZKpmOostoAzyYOViZwD/RA2suqGyrSe96JLnxwzy3LccYgV3VwEbHDWeUTvOCAy4 +AhsCFiEEMETnHj3v9JtYbPWAm/T8y5CFTakFAmeapjEFCQPEYEkAgXYgBBkWCgAd +FiEEOnT/B+IwezZGpJnoRg1HuECBTz8FAmW5jncACgkQRg1HuECBTz8eKQEA87OI +GSeT5Zywo4Ox1WIV51qBWC2eNbwnqYllEo1wPZ8A/j/jaD3BTaIocofKkuUZ2aA5 +U6lIY1y5uRw8Vw44cfsBCRCb9PzLkIVNqcQ/AP9jUZhRTIN68wJVgum+gvha4TEr +jFO2kNknySPCBRlaDwD9EY8S8vFHgdYiKznegRSPxpMCvQJaCY45iz+C3f2RVg64 OARluY6pEgorBgEEAZdVAQUBAQdAAXZvPoXdFpBhYS8KgCeXweUMlSwsCnXmgiDh -neSFMwsDAQgHiH4EGBYKACYWIQQwROcePe/0m1hs9YCb9PzLkIVNqQUCZbmOqQIb -DAUJAeEzgAAKCRCb9PzLkIVNqbmEAQDSBggKtjGkLuYtIHBBCfBF4Dx7odOapasa -tYqZTU7twwD/VhDvRGPbTl7X7DYQ36bmyjTe6cZAj3/M0ueQhlTrJAW4MwRluY7E +neSFMwsDAQgHiH4EGBYKACYCGwwWIQQwROcePe/0m1hs9YCb9PzLkIVNqQUCZ5qm +MQUJA8RgFwAKCRCb9PzLkIVNqTe+AQDfwIANBVThT7sU+aG4Bp3uyVV1QrGp0Ofl +yatQaNUUoQD6AhuvEjRP4zX3j+iQeDQ0S80kkAAlLm4j02BQZ/76YA64MwRluY7E FgkrBgEEAdpHDwEBB0B95fmIsa7I4c3ttAko71CuEI/wTam0zYrYJNtL7sz3o4h+ -BBgWCgAmFiEEMETnHj3v9JtYbPWAm/T8y5CFTakFAmW5jsQCGyAFCQHhM4AACgkQ -m/T8y5CFTamxRwD6A9TAs2Ac2VUQDCGgIEgUeULB2fZ1i0s0zydXctKJf7wBAL64 -utFE0ryrkFHMGY4xHMwZfvWosYH/qfLlKadnb3cK -=WgEZ +BBgWCgAmAhsgFiEEMETnHj3v9JtYbPWAm/T8y5CFTakFAmeapjEFCQPEX/wACgkQ +m/T8y5CFTankYgEAvtt26Zb7UQCndmcrm8kp/7aoO+QDpZvcNxBZdkJAtOYBANUM +lKvWENxPyWSXttGzffFlMekZsxoEtBMvLgHWJ0YK +=spOi -----END PGP PUBLIC KEY BLOCK----- From aef0a15dc8cd75e2b4ac0390e91d0235a0263aae Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 3 Feb 2025 23:35:44 +0100 Subject: [PATCH 365/562] Update docker-machine-gitlab --- pkgs/default.nix | 4 +- pkgs/docker-machine-gitlab/default.nix | 103 +++++++--- pkgs/docker-machine-gitlab/gomod2nix.toml | 232 ++++++++++++++++++++++ 3 files changed, 309 insertions(+), 30 deletions(-) create mode 100644 pkgs/docker-machine-gitlab/gomod2nix.toml diff --git a/pkgs/default.nix b/pkgs/default.nix index dd3e989..62b61c9 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -11,7 +11,9 @@ in docker-machine-driver-hetzner = callPackage ./docker-machine-driver-hetzner { inherit (inputs.gomod2nix.legacyPackages.${system}) buildGoApplication; }; - docker-machine-gitlab = callPackage ./docker-machine-gitlab { }; + docker-machine-gitlab = callPackage ./docker-machine-gitlab { + inherit (inputs.gomod2nix.legacyPackages.${system}) buildGoApplication; + }; fpvout = callPackage ./fpvout { }; mute-indicator = callPackage ./mute-indicator { }; myintercom-doorbell = callPackage ./myintercom-doorbell { diff --git a/pkgs/docker-machine-gitlab/default.nix b/pkgs/docker-machine-gitlab/default.nix index 48469ea..ca847bd 100644 --- a/pkgs/docker-machine-gitlab/default.nix +++ b/pkgs/docker-machine-gitlab/default.nix @@ -1,35 +1,80 @@ -{ lib, buildGoPackage, fetchFromGitLab, installShellFiles, docker-machine-driver-hetzner, makeWrapper, openssh }: +{ lib +, buildGoApplication +, fetchFromGitLab +, installShellFiles +, docker-machine-driver-hetzner +, makeWrapper +, openssh +, rsync +, +}: +( + buildGoApplication rec { + pname = "docker-machine-gitlab"; + version = "0.16.2-gitlab.32"; + goPackagePath = "github.com/docker/machine"; + modules = ./gomod2nix.toml; -buildGoPackage rec { - pname = "docker-machine-gitlab"; - version = "0.16.2-gitlab.22"; + src = fetchFromGitLab { + rev = "v${version}"; + group = "gitlab-org"; + owner = "ci-cd"; + repo = "docker-machine"; + sha256 = "sha256-jipKo3LRTDUVKMkBK2qH/JIUcj3vJh7SdcQ8FMTr2Ok="; + }; - goPackagePath = "github.com/docker/machine"; + nativeBuildInputs = [ + docker-machine-driver-hetzner + installShellFiles + makeWrapper + openssh + rsync + ]; - src = fetchFromGitLab { - rev = "v${version}"; - group = "gitlab-org"; - owner = "ci-cd"; - repo = "docker-machine"; - sha256 = "sha256-WYnaY/0FJzXDiECms1gGNR1jN4DUQ3s296KG9r1c2io="; - }; - - nativeBuildInputs = [ - docker-machine-driver-hetzner - installShellFiles - makeWrapper - openssh - ]; - - postInstall = '' - pushd go/src/${goPackagePath}/contrib/completion - installShellCompletion --bash bash/* - installShellCompletion --zsh zsh/* - popd - wrapProgram $out/bin/docker-machine \ - --prefix PATH : ${lib.makeBinPath [ + postInstall = '' + pushd contrib/completion + installShellCompletion --bash bash/* + installShellCompletion --zsh zsh/* + popd + wrapProgram $out/bin/docker-machine \ + --prefix PATH : ${lib.makeBinPath [ docker-machine-driver-hetzner openssh + rsync ]} - ''; -} + ''; + } +).overrideAttrs (attrs: { + checkPhase = + '' + export USER="unknown" + ln -s $GOPATH/bin bin + + # Disable failing test + cat > cmd/docker-machine/machine_test.go << EOF + package main + + import ( + "os" + "testing" + + "github.com/docker/machine/commands/mcndirs" + ) + + func TestStorePathSetCorrectly(t *testing.T) { + mcndirs.BaseDir = "" + os.Args = []string{"docker-machine", "--storage-path", "/tmp/foo"} + main() + /* + if mcndirs.BaseDir != "/tmp/foo" { + t.Fatal("Expected MACHINE_STORAGE_PATH environment variable to be /tmp/foo but was ", os.Getenv("MACHINE_STORAGE_PATH")) + } + */ + } + EOF + + sed -i 's#exec.Command("/usr/bin/scp"#exec.Command("${openssh}/bin/scp"#' commands/scp_test.go + sed -i 's#exec.Command("/usr/bin/rsync"#exec.Command("${rsync}/bin/rsync"#' commands/scp_test.go + '' + + attrs.checkPhase; +}) diff --git a/pkgs/docker-machine-gitlab/gomod2nix.toml b/pkgs/docker-machine-gitlab/gomod2nix.toml new file mode 100644 index 0000000..f2bae8f --- /dev/null +++ b/pkgs/docker-machine-gitlab/gomod2nix.toml @@ -0,0 +1,232 @@ +schema = 3 + +[mod] + [mod."cloud.google.com/go/compute"] + version = "v1.25.1" + hash = "sha256-A5Wiq8eKgolb81ZpAnoGaBNrTtHpDLLPFgXBJaKcnSA=" + [mod."cloud.google.com/go/compute/metadata"] + version = "v0.2.3" + hash = "sha256-kYB1FTQRdTDqCqJzSU/jJYbVUGyxbkASUKbEs36FUyU=" + [mod."github.com/Azure/azure-sdk-for-go"] + version = "v5.0.0-beta+incompatible" + hash = "sha256-wH+ODrNrEx6aLsbJd1LKztHBz4MDric0gVUHtlq26cg=" + [mod."github.com/Azure/go-autorest"] + version = "v7.2.1+incompatible" + hash = "sha256-yPtI1uwZs5FIJXU+ZUZfSxsnA+b7AmokMzkzXhQz1z4=" + [mod."github.com/Microsoft/go-winio"] + version = "v0.6.1" + hash = "sha256-BL0BVaHtmPKQts/711W59AbHXjGKqFS4ZTal0RYnR9I=" + [mod."github.com/aws/aws-sdk-go"] + version = "v1.36.21" + hash = "sha256-Lko4zIyNdBdKI1u7dWgcf8mjuf1HdpvV8lC6u9TmuUM=" + [mod."github.com/bitly/go-simplejson"] + version = "v0.5.1" + hash = "sha256-ypd4SyAww1+1IlxXlAeGYbTKwl/mahlj9k0MjXJkAJ0=" + [mod."github.com/bugsnag/bugsnag-go"] + version = "v1.0.6-0.20151120182711-02e952891c52" + hash = "sha256-D0oYpL2bgzUlBTs10AM+2MkmwbgfNod4W5hGf4KsP0s=" + [mod."github.com/bugsnag/osext"] + version = "v0.0.0-20130617224835-0dd3f918b21b" + hash = "sha256-Q/iSW9oc9UZEH3GFjTouJoMngM6jPp+bszVcQyv+7Ao=" + [mod."github.com/bugsnag/panicwrap"] + version = "v0.0.0-20160118154447-aceac81c6e2f" + hash = "sha256-q4qH0IhNfxOOjNsWqR4t8Kk0duRexYRAm+P+oaW+nds=" + [mod."github.com/cenkalti/backoff"] + version = "v0.0.0-20141124221459-9831e1e25c87" + hash = "sha256-KyUBfBPlFd37Y9P3xnORI1SbFLxBEtWTsnNf0MaaXkQ=" + [mod."github.com/codegangsta/cli"] + version = "v1.11.1-0.20151120215642-0302d3914d2a" + hash = "sha256-D8uAVNyBdtLvpUD97l0521hSJd+Mk/0oT3xW95cklto=" + [mod."github.com/containerd/log"] + version = "v0.1.0" + hash = "sha256-vuE6Mie2gSxiN3jTKTZovjcbdBd1YEExb7IBe3GM+9s=" + [mod."github.com/davecgh/go-spew"] + version = "v1.1.1" + hash = "sha256-nhzSUrE1fCkN0+RL04N4h8jWmRFPPPWbCuDc7Ss0akI=" + [mod."github.com/dgrijalva/jwt-go"] + version = "v4.5.0" + hash = "sha256-dyKL8wQRApkdCkKxJ1knllvixsrBLw+BtRS0SjlN7NQ=" + replaced = "github.com/golang-jwt/jwt/v4" + [mod."github.com/digitalocean/godo"] + version = "v1.0.1-0.20170317202744-d59ed2fe842b" + hash = "sha256-YwkNqher0TEfaHghZK/YTNOoTpAVtsr27Kk72CIvtfM=" + [mod."github.com/distribution/reference"] + version = "v0.6.0" + hash = "sha256-gr4tL+qz4jKyAtl8LINcxMSanztdt+pybj1T+2ulQv4=" + [mod."github.com/docker/docker"] + version = "v25.0.6+incompatible" + hash = "sha256-sUMANzDY4ORfD6qQ25NUhi7PPWF5v8NlOFquiVeDZmc=" + [mod."github.com/docker/go-connections"] + version = "v0.4.0" + hash = "sha256-GHNIjOuuNp5lFQ308+nDNwQPGESCVV7bCUxSW5ZxZlc=" + [mod."github.com/docker/go-units"] + version = "v0.2.1-0.20151230175859-0bbddae09c5a" + hash = "sha256-PbojDBnjJeH425NPmFUb70+0oAfOUH3r0VdXCT6ViXw=" + [mod."github.com/exoscale/egoscale"] + version = "v0.9.23" + hash = "sha256-DftIgQ0YcZAi+fl/XT2Qnwr/jBGw2g7y4d5vgy67/xE=" + [mod."github.com/felixge/httpsnoop"] + version = "v1.0.4" + hash = "sha256-c1JKoRSndwwOyOxq9ddCe+8qn7mG9uRq2o/822x5O/c=" + [mod."github.com/go-logr/logr"] + version = "v1.4.2" + hash = "sha256-/W6qGilFlZNTb9Uq48xGZ4IbsVeSwJiAMLw4wiNYHLI=" + [mod."github.com/go-logr/stdr"] + version = "v1.2.2" + hash = "sha256-rRweAP7XIb4egtT1f2gkz4sYOu7LDHmcJ5iNsJUd0sE=" + [mod."github.com/gogo/protobuf"] + version = "v1.3.2" + hash = "sha256-pogILFrrk+cAtb0ulqn9+gRZJ7sGnnLLdtqITvxvG6c=" + [mod."github.com/golang/groupcache"] + version = "v0.0.0-20210331224755-41bb18bfe9da" + hash = "sha256-7Gs7CS9gEYZkbu5P4hqPGBpeGZWC64VDwraSKFF+VR0=" + [mod."github.com/golang/protobuf"] + version = "v1.5.4" + hash = "sha256-N3+Lv9lEZjrdOWdQhFj6Y3Iap4rVLEQeI8/eFFyAMZ0=" + [mod."github.com/google/go-querystring"] + version = "v0.0.0-20140804062624-30f7a39f4a21" + hash = "sha256-gjDRAELJKrQF7NgL2iSz3X260oHwykhsx23pGfN8iP4=" + [mod."github.com/google/s2a-go"] + version = "v0.1.7" + hash = "sha256-E+SX/3VmRI5qN7SbnRP4Tt+gQTq93pScpY9U2tTmIU0=" + [mod."github.com/google/uuid"] + version = "v1.6.0" + hash = "sha256-VWl9sqUzdOuhW0KzQlv0gwwUQClYkmZwSydHG2sALYw=" + [mod."github.com/googleapis/enterprise-certificate-proxy"] + version = "v0.3.2" + hash = "sha256-wVuR3QC0mYFl5LNeKdRXdKdod7BGP5sv2h6VVib85v8=" + [mod."github.com/googleapis/gax-go/v2"] + version = "v2.12.2" + hash = "sha256-Ip0d68jgTxN3v1MWFW6nwCsMc70Q9PCM87bhXJdOkHY=" + [mod."github.com/intel-go/cpuid"] + version = "v0.0.0-20181003105527-1a4a6f06a1c6" + hash = "sha256-iGtI0TF0jB5FEWy1J4YFuHzDYjZM3YBlmENJEgNNkYg=" + [mod."github.com/jinzhu/copier"] + version = "v0.0.0-20180308034124-7e38e58719c3" + hash = "sha256-F3zQzaS79GsZP6pLtxSYnsX/GgTN14TuBE8QqdBnJw4=" + [mod."github.com/jmespath/go-jmespath"] + version = "v0.4.0" + hash = "sha256-xpT9g2qIXmPq7eeHUXHiDqJeQoHCudh44G/KCSFbcuo=" + [mod."github.com/juju/loggo"] + version = "v1.0.0" + hash = "sha256-kfQSM4ZtqGXJJ0838/ClX2/SinwCKoDGrvpNVYVqsyk=" + [mod."github.com/mitchellh/mapstructure"] + version = "v0.0.0-20140721150620-740c764bc614" + hash = "sha256-ix0FerxJyiTrNxmysA9vGDCPig14/8pBtsWQX/NIn2Y=" + [mod."github.com/moby/term"] + version = "v0.5.0" + hash = "sha256-jy0kbkeUsr0KoiE33WLxNAgYXZIERKR2O5+saXBwdD8=" + [mod."github.com/morikuni/aec"] + version = "v1.0.0" + hash = "sha256-5zYgLeGr3K+uhGKlN3xv0PO67V+2Zw+cezjzNCmAWOE=" + [mod."github.com/opencontainers/go-digest"] + version = "v1.0.0" + hash = "sha256-cfVDjHyWItmUGZ2dzQhCHgmOmou8v7N+itDkLZVkqkQ=" + [mod."github.com/opencontainers/image-spec"] + version = "v1.0.2" + hash = "sha256-X7kZoMYZNOIDpx8ziK7V+5YM07qiYWOE4yJo+sTOjjU=" + [mod."github.com/pkg/errors"] + version = "v0.9.1" + hash = "sha256-mNfQtcrQmu3sNg/7IwiieKWOgFQOVVe2yXgKBpe/wZw=" + [mod."github.com/pmezard/go-difflib"] + version = "v1.0.0" + hash = "sha256-/FtmHnaGjdvEIKAJtrUfEhV7EVo5A/eYrtdnUkuxLDA=" + [mod."github.com/rackspace/gophercloud"] + version = "v1.0.1-0.20150408191457-ce0f487f6747" + hash = "sha256-MCFOrRu/ctp6LlaSjpLYTrPia3NUUaI0DOxUPLMp9HA=" + [mod."github.com/skarademir/naturalsort"] + version = "v0.0.0-20150715044055-69a5d87bef62" + hash = "sha256-0pVMtl/t6ZpDftoVPY4tVa/3nUyPZtc59WsqbOHzKwI=" + [mod."github.com/stretchr/objx"] + version = "v0.5.2" + hash = "sha256-VKYxrrFb1nkX6Wu3tE5DoP9+fCttwSl9pgLN6567nck=" + [mod."github.com/stretchr/testify"] + version = "v1.9.0" + hash = "sha256-uUp/On+1nK+lARkTVtb5RxlW15zxtw2kaAFuIASA+J0=" + [mod."github.com/tent/http-link-go"] + version = "v0.0.0-20130702225549-ac974c61c2f9" + hash = "sha256-0jlX8F7SZJfMmKG51E0x9ZT4nnPTz+nGqYzcbVYQ8Lo=" + [mod."github.com/vmware/govcloudair"] + version = "v0.0.2" + hash = "sha256-Hk+WfrVIB1GupSP+XbfPO9szJaKUXz0kfoUX8RxIrKw=" + [mod."github.com/vmware/govmomi"] + version = "v0.6.2" + hash = "sha256-MPxva4racsmd4vH76ttps85fhYHW6Ze1uNmCqwdT2so=" + [mod."go.opencensus.io"] + version = "v0.24.0" + hash = "sha256-4H+mGZgG2c9I1y0m8avF4qmt8LUKxxVsTqR8mKgP4yo=" + [mod."go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"] + version = "v0.49.0" + hash = "sha256-1/7YxtXZM4i75rXXIO6UN4CTY93nE/v2k2htS0uUOVg=" + [mod."go.opentelemetry.io/otel"] + version = "v1.28.0" + hash = "sha256-bilBBr2cuADs9bQ7swnGLTuC7h0DooU6BQtrQqMqIjs=" + [mod."go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"] + version = "v1.28.0" + hash = "sha256-nst5au6viPt71JG2TOd6JKfJGJ3QfbktC321XQJUfbU=" + [mod."go.opentelemetry.io/otel/metric"] + version = "v1.28.0" + hash = "sha256-k3p1lYcvrODwIkZo/j2jvCoDFUelz4yVJEEVdUKUmGU=" + [mod."go.opentelemetry.io/otel/sdk"] + version = "v1.28.0" + hash = "sha256-X48fV4A9vgxfjBpmUIQumod2nyI+tUc5lnhFkeKBRsc=" + [mod."go.opentelemetry.io/otel/trace"] + version = "v1.28.0" + hash = "sha256-8uxmlm0/5VGoWegxwy0q8NgeY+pyicSoV08RkvD9Q98=" + [mod."golang.org/x/crypto"] + version = "v0.31.0" + hash = "sha256-ZBjoG7ZOuTEmjaXPP9txAvjAjC46DeaLs0zrNzi8EQw=" + [mod."golang.org/x/mod"] + version = "v0.17.0" + hash = "sha256-CLaPeF6uTFuRDv4oHwOQE6MCMvrzkUjWN3NuyywZjKU=" + [mod."golang.org/x/net"] + version = "v0.33.0" + hash = "sha256-9swkU9vp6IflUUqAzK+y8PytSmrKLuryidP3RmRfe0w=" + [mod."golang.org/x/oauth2"] + version = "v0.18.0" + hash = "sha256-TX4CvtvHU+SGSmqlxaQqlgJjlJiOtLGYAZa0zeBfZak=" + [mod."golang.org/x/sync"] + version = "v0.10.0" + hash = "sha256-HWruKClrdoBKVdxKCyoazxeQV4dIYLdkHekQvx275/o=" + [mod."golang.org/x/sys"] + version = "v0.28.0" + hash = "sha256-kzSlDo5FKsQU9cLefIt2dueGUfz9XuEW+mGSGlPATGc=" + [mod."golang.org/x/term"] + version = "v0.27.0" + hash = "sha256-cb5p/yOlVL7dbkxugUVfqESTVpZ2LtrUWPnx9yue3r0=" + [mod."golang.org/x/text"] + version = "v0.21.0" + hash = "sha256-QaMwddBRnoS2mv9Y86eVC2x2wx/GZ7kr2zAJvwDeCPc=" + [mod."golang.org/x/tools"] + version = "v0.21.1-0.20240508182429-e35e4ccd0d2d" + hash = "sha256-KfnS+3fREPAWQUBoUedPupQp9yLrugxMmmEoHvyzKNE=" + [mod."google.golang.org/api"] + version = "v0.169.0" + hash = "sha256-7+EAvbTTnUutkXpQBbxPSmZTS5P0mrKTiFooMI81w0k=" + [mod."google.golang.org/appengine"] + version = "v1.6.8" + hash = "sha256-decMa0MiWfW/Bzr8QPPzzpeya0YWGHhZAt4Cr/bD1wQ=" + [mod."google.golang.org/genproto/googleapis/api"] + version = "v0.0.0-20240701130421-f6361c86f094" + hash = "sha256-uDvld45ensSUweUJYFdUfVt/0mNRrexpuQ3Jas3GMv4=" + [mod."google.golang.org/genproto/googleapis/rpc"] + version = "v0.0.0-20240701130421-f6361c86f094" + hash = "sha256-ass/74EkCljwk7DaASDtK2zipn2cZv6tCLKvwONUWgY=" + [mod."google.golang.org/grpc"] + version = "v1.64.1" + hash = "sha256-A1+kiePmeqRIdigryUGNJWZiILLacDPtMTEyO6CqDpY=" + [mod."google.golang.org/protobuf"] + version = "v1.34.2" + hash = "sha256-nMTlrDEE2dbpWz50eQMPBQXCyQh4IdjrTIccaU0F3m0=" + [mod."gopkg.in/check.v1"] + version = "v1.0.0-20160105164936-4f90aeace3a2" + hash = "sha256-2+om0xBiwyEtUZRY78rYvWU8ECLVhEipNngXz9ttiVE=" + [mod."gopkg.in/yaml.v3"] + version = "v3.0.1" + hash = "sha256-FqL9TKYJ0XkNwJFnq9j0VvJ5ZUU1RvH/52h/f5bkYAU=" + [mod."gotest.tools/v3"] + version = "v3.5.1" + hash = "sha256-ps2GEc3P2xvlrU4TCtXz+nLTxyP0RrF7SScz5jUqE5E=" + [mod."launchpad.net/gocheck"] + version = "v0.0.0-20140225173054-000000000087" + hash = "sha256-gDJ3emyS6+PruKHOf9BvukVENNUxzXhfKC4Gs6tQLvk=" From f632cd79aea1a4148cd2650996fc7769bfd37751 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 31 Dec 2024 15:56:27 +0100 Subject: [PATCH 366/562] Add ksoloti --- pkgs/default.nix | 5 +- pkgs/ksoloti/default.nix | 110 +++++++++++++++++++++++++++ pkgs/ksoloti/module.nix | 5 ++ pkgs/modules.nix | 1 + users/jalr/modules/sound/default.nix | 3 +- users/jalr/modules/sound/ksoloti.nix | 7 ++ 6 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 pkgs/ksoloti/default.nix create mode 100644 pkgs/ksoloti/module.nix create mode 100644 users/jalr/modules/sound/ksoloti.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 62b61c9..677507c 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -2,12 +2,15 @@ final: prev: let - inherit (prev) callPackage system; + inherit (prev) callPackage system pkgsCross darwin; poetry2nix = callPackage inputs.poetry2nix { }; in { ariang = callPackage ./ariang { }; asterisk-sounds-de = callPackage ./asterisk-sounds-de { }; + ksoloti = callPackage ./ksoloti { + gcc-arm-embedded = pkgsCross.arm-embedded.buildPackages.gcc; + }; docker-machine-driver-hetzner = callPackage ./docker-machine-driver-hetzner { inherit (inputs.gomod2nix.legacyPackages.${system}) buildGoApplication; }; diff --git a/pkgs/ksoloti/default.nix b/pkgs/ksoloti/default.nix new file mode 100644 index 0000000..54cdb30 --- /dev/null +++ b/pkgs/ksoloti/default.nix @@ -0,0 +1,110 @@ +{ lib +, pkgs +, stdenv +, fetchFromGitHub +, gnumake +, gcc-arm-embedded +, jdk +, libfaketime +, ant +, makeWrapper +, dfu-util +}: + +stdenv.mkDerivation rec { + version = "1.1.0beta"; + pname = "ksoloti"; + + src = fetchFromGitHub { + owner = "ksoloti"; + repo = "ksoloti"; + rev = version; + sha256 = "sha256-RRwar0X2gI0LyM/pNhnlLet06MzrG4z4lm3kCmzWwBc="; + }; + + buildInputs = [ jdk libfaketime ]; + + nativeBuildInputs = [ + ant + gcc-arm-embedded + gnumake + makeWrapper + ]; + + propagatedBuildInputs = [ + dfu-util + gcc-arm-embedded + ]; + + /* + # Hardcode dfu-util path + substituteInPlace "platform_linux/upload_fw_dfu.sh" \ + --replace-fail "/bin/dfu-util" "" + substituteInPlace "platform_linux/upload_fw_dfu.sh" \ + --replace-fail "./dfu-util" "${dfu-util-ksoloti}/bin/dfu-util" + + */ + patchPhase = '' + # Hardcode path to "make" + for f in "firmware/compile_firmware_linux.sh" \ + "firmware/compile_patch_linux.sh"; do + substituteInPlace "$f" \ + --replace "make" "${gnumake}/bin/make" + done + + # Fix build version + substituteInPlace "build.xml" \ + --replace-fail "(git missing)" "${version}" + # Remove build time + substituteInPlace "build.xml" \ + --replace-fail "" "" + substituteInPlace "build.xml" \ + --replace-fail \ + '' \ + '' + substituteInPlace "build.xml" \ + --replace-fail "" "" + substituteInPlace "build.xml" \ + --replace-fail \ + '{line.separator}' \ + '{line.separator} ' + ''; + + buildPhase = '' + ( + find . -exec touch -d '1970-01-01 00:00' {} \; + (cd platform_linux; PATH="${pkgs.gcc-arm-embedded}/bin:$PATH" sh compile_firmware.sh BOARD_AXOLOTI_CORE) + faketime "1970-01-01 00:00:00" ant -Dbuild.runtime=true + ) + ''; + + installPhase = '' + mkdir -p $out/bin $out/share/ksoloti + + cp -r doc firmware chibios platform_linux CMSIS *.txt $out/share/ksoloti/ + install -vD dist/Ksoloti.jar $out/share/ksoloti/ + + patchShebangs $out/share/ksoloti/platform_linux/*.sh + + rm $out/share/ksoloti/platform_linux/bin/dfu-util + ln -s ${dfu-util}/bin/dfu-util $out/share/ksoloti/platform_linux/bin/dfu-util + + makeWrapper ${jdk}/bin/java $out/bin/ksoloti --add-flags "-Dksoloti_release=$out/share/ksoloti -Dksoloti_runtime=$out/share/ksoloti -jar $out/share/ksoloti/Ksoloti.jar" --prefix PATH : ${ + lib.makeBinPath [ + pkgs.gcc-arm-embedded + ] + } + ''; + + meta = with lib; { + homepage = "http://ksoloti.github.io"; + description = '' + Sketching embedded digital audio algorithms. + + To fix permissions of the Ksoloti USB device node, add a similar udev rule to services.udev.extraRules: + SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="0442", OWNER="someuser", GROUP="somegroup" + ''; + license = licenses.gpl3; + maintainers = with maintainers; [ ]; + }; +} diff --git a/pkgs/ksoloti/module.nix b/pkgs/ksoloti/module.nix new file mode 100644 index 0000000..2948be5 --- /dev/null +++ b/pkgs/ksoloti/module.nix @@ -0,0 +1,5 @@ +{ + services.udev.extraRules = '' + SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="0442", OWNER="jalr", GROUP="users" + ''; +} diff --git a/pkgs/modules.nix b/pkgs/modules.nix index cdfda2f..25865fa 100644 --- a/pkgs/modules.nix +++ b/pkgs/modules.nix @@ -3,6 +3,7 @@ { imports = [ ./asterisk-sounds-de/module.nix + ./ksoloti/module.nix ./myintercom-doorbell/module.nix ./pretix-banktool/module.nix ]; diff --git a/users/jalr/modules/sound/default.nix b/users/jalr/modules/sound/default.nix index 21f8976..37008dd 100644 --- a/users/jalr/modules/sound/default.nix +++ b/users/jalr/modules/sound/default.nix @@ -1,9 +1,10 @@ -{ nixosConfig, ... }: +{ nixosConfig, pkgs, ... }: { imports = [ ./audacity.nix ./easyeffects.nix ./pipewire.nix + ./ksoloti.nix ]; } diff --git a/users/jalr/modules/sound/ksoloti.nix b/users/jalr/modules/sound/ksoloti.nix new file mode 100644 index 0000000..3528602 --- /dev/null +++ b/users/jalr/modules/sound/ksoloti.nix @@ -0,0 +1,7 @@ +{ nixosConfig, lib, pkgs, ... }: + +lib.mkIf nixosConfig.jalr.gui.enable { + home.packages = with pkgs; [ + ksoloti + ]; +} From defa57dabdd521df3bba3c28f42001fb77652301 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 4 Feb 2025 23:45:54 +0100 Subject: [PATCH 367/562] Enable GPG for thunderbird --- users/jalr/modules/thunderbird.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/users/jalr/modules/thunderbird.nix b/users/jalr/modules/thunderbird.nix index c2698d0..4a36097 100644 --- a/users/jalr/modules/thunderbird.nix +++ b/users/jalr/modules/thunderbird.nix @@ -2,7 +2,10 @@ { programs.thunderbird = { enable = nixosConfig.jalr.gui.enable; - profiles."default".isDefault = true; + profiles."default" = { + isDefault = true; + withExternalGnupg = true; + }; settings = { "mail.chat.enabled" = false; }; From 371f201c4c2ec58d8e8adb931af2b403ee1d5751 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 6 Feb 2025 10:01:07 +0100 Subject: [PATCH 368/562] Change screen positions --- users/jalr/modules/gui.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/users/jalr/modules/gui.nix b/users/jalr/modules/gui.nix index 4352a9c..b1c6b40 100644 --- a/users/jalr/modules/gui.nix +++ b/users/jalr/modules/gui.nix @@ -50,19 +50,19 @@ lib.mkIf nixosConfig.jalr.gui.enable { { profile.name = "digitaler-dienst"; profile.outputs = [ - (internalDisplay // { position = "0,0"; }) { - criteria = "Lenovo Group Limited L27q-38 URB731YF"; + criteria = "Lenovo Group Limited L27q-35 URB5T16W"; status = "enable"; mode = "2560x1440@59.951Hz"; - position = "2048,0"; + position = "0,0"; } { - criteria = "Lenovo Group Limited L27q-35 URB5T16R"; + criteria = "Lenovo Group Limited L27q-35 URB5T174"; status = "enable"; mode = "2560x1440@59.951Hz"; - position = "4380,0"; + position = "2560,0"; } + (internalDisplay // { position = "5120,0"; }) ]; } ]; From 03c6fa98727f4ea7b8d4b808550e043c2fed48dc Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 8 Feb 2025 20:39:34 +0100 Subject: [PATCH 369/562] Don't open firewall for Avahi instead, use the already configured rule to allow it only on the local network. --- hosts/iron/services/avahi.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/iron/services/avahi.nix b/hosts/iron/services/avahi.nix index 977c3ab..e19be81 100644 --- a/hosts/iron/services/avahi.nix +++ b/hosts/iron/services/avahi.nix @@ -10,6 +10,7 @@ in publish.enable = true; publish.userServices = true; publish.workstation = true; + openFirewall = false; }; networking.firewall.interfaces."${interfaces.lan}".allowedUDPPorts = [ From 934784cab54b1714d0c2bf59a49cd5fe2ecbdfb1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 10 Feb 2025 14:40:41 +0100 Subject: [PATCH 370/562] Use thunderbird-esr package --- users/jalr/modules/thunderbird.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/modules/thunderbird.nix b/users/jalr/modules/thunderbird.nix index 4a36097..8e39247 100644 --- a/users/jalr/modules/thunderbird.nix +++ b/users/jalr/modules/thunderbird.nix @@ -2,6 +2,7 @@ { programs.thunderbird = { enable = nixosConfig.jalr.gui.enable; + package = pkgs.thunderbird-esr; profiles."default" = { isDefault = true; withExternalGnupg = true; From 4897a2cd8af045e3c70a78010324b808877697f0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 10 Feb 2025 14:43:41 +0100 Subject: [PATCH 371/562] Disable zfs trim as it is buggy (causes high sytem load and never completes) --- hosts/iron/configuration.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index 121eedb..e52a1d1 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -232,5 +232,8 @@ with lib; { priority = 1; }; + services.zfs = { + trim.enable = false; + }; }; } From 754f6856c1bb40e8a8fe8f94e4480fd6985a798e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 28 Feb 2025 14:14:49 +0100 Subject: [PATCH 372/562] Revert "Disable banktool" This reverts commit 185b8503ed5ae0efdc9b2a06371bcc8de27e28f4. --- hosts/weinturm-pretix-prod/services/pretix.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/weinturm-pretix-prod/services/pretix.nix b/hosts/weinturm-pretix-prod/services/pretix.nix index 5145484..29edd2b 100644 --- a/hosts/weinturm-pretix-prod/services/pretix.nix +++ b/hosts/weinturm-pretix-prod/services/pretix.nix @@ -59,7 +59,7 @@ in users.users.pretix.extraGroups = [ "redis-pretix" ]; services.pretix-banktool = { - enable = false; + enable = true; days = 14; secretsFile = config.sops.secrets.pretix-banktool-cfg.path; }; From 24466ee811b4294a2d232610d9894a521446985a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 28 Feb 2025 14:19:04 +0100 Subject: [PATCH 373/562] Update bank pin (password) --- hosts/weinturm-pretix-prod/secrets.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hosts/weinturm-pretix-prod/secrets.yaml b/hosts/weinturm-pretix-prod/secrets.yaml index 2fba100..11052e5 100644 --- a/hosts/weinturm-pretix-prod/secrets.yaml +++ b/hosts/weinturm-pretix-prod/secrets.yaml @@ -1,5 +1,5 @@ pretix-cfg: ENC[AES256_GCM,data:sfgKDr9aNOdwlumoltRuD7u1ksykFdEKtzt3MldjQnG0b4iAEspEhjcxqaNvPpXYm8EZKtsLBBQgdd1ifyQgs3k69c/GfzQ/jZ/yQ2OUkCO7U9A=,iv:FADYpPbGEEM/pD6EI85s9wVMv8yMrGJa+miE25XQ+t8=,tag:WJ9LHCNFHSr9RmmUi6hxnw==,type:str] -pretix-banktool-cfg: ENC[AES256_GCM,data:Dl84Wu/za3wXEGlPmuBKONRKhxr44R6Hd8N+Tumy2x4XU3u4sv4t7qIsMfJAqFnBiBW93Fi6xvyoh2q17Ey2cnuTaF2Ix+OTrLqgdvaREWzlYMv0jnHHCDm8SP30g0yf9QS7P0q79A+JmLKAmPTFCtMxF4iDyQqJe/jNjULDI8lOR47QqSwsOJh0gcZrwqGUPrK+Ru01ZsI1NCyiNO3HDy6IfK9oRm9GcI0qU1kA6RiP8NqngyIt2xLHctXdZhjxE35tTfo55OjlBX/twqSYch5PVMUkBbJlYdZ9TH60zeD+4e641g6c/BSPAYUy1knbtXEZ+RE3QU6IHtFhe72dcvurYFwPIOqqjp7gxsQXuLSH0MH4o5UWqOvRvrm8BdbfLoqk7RD//XYmJMmXE3WEZbZtfHPqg5b2wV0/66DlmVTT9ZODlLOGt4WxMYCfU6YlAZdJQ1OYLSvatdN2pR9GkdNVgwu2glK9nEmCjMBytBXOtSZ+4l8gYg9+lQ==,iv:Od3/+WLCp9ney/ZZDzShkVDvLgmduS/xdTVIs4DJv7Q=,tag:7UnV4YlEuotcEi44r6ZuWA==,type:str] +pretix-banktool-cfg: ENC[AES256_GCM,data:qHo4qfjDAe1wwdMa/HH5vgySO1XSBLQBouY8mUFlZiSI2lLCQgjQRzBu0C/p3FPqFkydtz2LEkQ6Cs/Zu0NbYB36CSinISZbGJABaNcF8mGJYKkohXF8GDYRNe7g5gxrKQlHWuPjChzxWRVLEV7VypYXE7Iad2tiiz4ZTxWZr8ylBLIbvCT1lWQU6rN4H6DjdI3gL0wmvHBg027xoelUME/g1bZvvkG3hw94Z8UKrFdZ9/DWqQ9G/VHRk0hVuBW6/b1VWooq3EF/JDEFO2oi7xW/TnwF5YMMkBQGS0b+pxK/rT6ir1DQywfFhSU09nWnRT/jw270QAwk762359e8+jl+p43dp6o+Ll1kzDQ9jbi5e2uXZrBaZGtnjDNLJHEFDJWpHtYmXNRIq4AQs/8cKaYx8uAXOTANE45GUiVpoA+m3clc02ABpBrHBENeKmJw/smGSbUKFnsu6WgigEyme8TxIMqiHghpppTzLDCZYXpBH+2n+eXNX2ovNA==,iv:kihK0wFCwvUUQg5+aKqQ6YNRyJjPvYllh0oVxJnee2w=,tag:InZaflGdiz7lXP2V+ZsyoA==,type:str] sops: kms: [] gcp_kms: [] @@ -15,8 +15,8 @@ sops: MGh3UVh2R05WWDU3SDVFKzdvODRGQVUKo1u58Ra1dhAfBmv3xwLk/6+6/mFPJn0Z FyL7yjU6JMWzR/8FUv5lJAubudiZ8MnuH+10deGvQnT5AxG9fNzi5w== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-03-15T15:46:51Z" - mac: ENC[AES256_GCM,data:W37WHI4w3BgCGuZ+wKtg6lqWxWKxjKuqy8OjpDmz9DTwSyvhVK3zt061Xw+HFDG7kPOKXzEb3Q+C9FjYU1B1V4GbBGHWtrVg0LSLs0KvQ0N+DhLkrbdRwvt/rLinXTgo7j4c/0w/YZQTQBrWEscZ3C2dhuTpFT+htjEFDhQKyhU=,iv:qRaM75MXCSfEfAIf1d2+uN1Sn/nAAHJUtKFAoiIOHBU=,tag:FjxJLH3cIZPLuCQNTlrqJQ==,type:str] + lastmodified: "2025-02-28T13:17:03Z" + mac: ENC[AES256_GCM,data:Ytsc+CdGosiIkIS/Ck6YIYMFgSArM9o6VR9Hx4B1xlWUQV9DfUuJ+5Ev6SuAPfIhXLfBEpbAzmfqZaYq81M+tERQxYXEuOiz9+l/5j9hOTlrfporscz4Jb8wrPDOTj8kTVbWF9K73uB08zla4T+y5N735DBb+YOpztDouoLO1rw=,iv:vu78iCIv6M5vO4mLhlBTRl7cpys4BBsdPWnRUqd+Fmo=,tag:/GlbV2/IhRZuXNkzSVwOMQ==,type:str] pgp: - created_at: "2024-01-31T01:20:41Z" enc: |- @@ -30,4 +30,4 @@ sops: -----END PGP MESSAGE----- fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted - version: 3.8.1 + version: 3.9.4 From 0dbe3fea165240f9ba16d1a6cf14bfcda859e6ab Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 1 Mar 2025 16:05:50 +0100 Subject: [PATCH 374/562] Add raop discover module --- modules/pipewire.nix | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/modules/pipewire.nix b/modules/pipewire.nix index 34f4c7d..1591e95 100644 --- a/modules/pipewire.nix +++ b/modules/pipewire.nix @@ -18,23 +18,31 @@ lib.mkIf config.jalr.gui.enable { enable = true; support32Bit = true; }; - extraConfig.pipewire-pulse."10-snapcast-discover" = { - "context.modules" = [ - { - name = "libpipewire-module-snapcast-discover"; - args = { - stream.rules = [{ - matches = [{ - snapcast.ip = "~.*"; + extraConfig = { + pipewire-pulse."10-snapcast-discover" = { + "context.modules" = [ + { + name = "libpipewire-module-snapcast-discover"; + args = { + stream.rules = [{ + matches = [{ + snapcast.ip = "~.*"; + }]; + actions = { + create-stream = { }; + }; }]; - actions = { - create-stream = { }; - }; - }]; - }; - } - ]; + }; + } + ]; + }; + pipewire."raop-sink" = { + "context.modules" = [ + { name = "libpipewire-module-raop-discover"; args = { }; } + ]; + }; }; + raopOpenFirewall = true; }; environment.systemPackages = with pkgs; [ @@ -53,4 +61,5 @@ lib.mkIf config.jalr.gui.enable { ]; security.rtkit.enable = true; + } From a21c54cfe87d42b9a3f858dadb56e469a58f4ab2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 1 Mar 2025 18:11:46 +0100 Subject: [PATCH 375/562] Add bluetooth proxy --- hosts/iron/services/esphome/devices/wohnungstuer.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hosts/iron/services/esphome/devices/wohnungstuer.yaml b/hosts/iron/services/esphome/devices/wohnungstuer.yaml index 8926b4e..11c0675 100644 --- a/hosts/iron/services/esphome/devices/wohnungstuer.yaml +++ b/hosts/iron/services/esphome/devices/wohnungstuer.yaml @@ -15,6 +15,15 @@ wifi: password: !secret wifi_password_bw domain: .iot.bw.jalr.de +esp32_ble_tracker: + scan_parameters: + active: false + +bluetooth_proxy: + active: true + +xiaomi_ble: + esp32: board: esp32doit-devkit-v1 framework: From af4e6ef214333915a3f476bbc2e8705e5d23e6ad Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 1 Mar 2025 18:33:54 +0100 Subject: [PATCH 376/562] Implement yaml file download --- hosts/iron/services/esphome/devices/.env | 2 ++ hosts/iron/services/esphome/devices/.gitignore | 2 ++ hosts/iron/services/esphome/devices/justfile | 17 +++++++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 hosts/iron/services/esphome/devices/.env create mode 100644 hosts/iron/services/esphome/devices/.gitignore create mode 100644 hosts/iron/services/esphome/devices/justfile diff --git a/hosts/iron/services/esphome/devices/.env b/hosts/iron/services/esphome/devices/.env new file mode 100644 index 0000000..2eee41c --- /dev/null +++ b/hosts/iron/services/esphome/devices/.env @@ -0,0 +1,2 @@ +ESPHOME_HOST="192.168.42.1" +ESPHOME_SECRETS_FILE="esphome_${ESPHOME_HOST}_secrets.yaml" diff --git a/hosts/iron/services/esphome/devices/.gitignore b/hosts/iron/services/esphome/devices/.gitignore new file mode 100644 index 0000000..163bec7 --- /dev/null +++ b/hosts/iron/services/esphome/devices/.gitignore @@ -0,0 +1,2 @@ +/.esphome/ +/secrets.yaml diff --git a/hosts/iron/services/esphome/devices/justfile b/hosts/iron/services/esphome/devices/justfile new file mode 100644 index 0000000..fb628ca --- /dev/null +++ b/hosts/iron/services/esphome/devices/justfile @@ -0,0 +1,17 @@ +import '../../../../../justfile' +set dotenv-load + +download: + rsync \ + -r \ + --rsync-path='sudo rsync' \ + --exclude '/build' \ + --exclude '/.esphome' \ + --exclude '.gitignore' \ + --exclude 'secrets.yaml' \ + 192.168.42.1:/var/lib/esphome/ ./ + +download-secrets: + umask 0077 && ssh 192.168.42.1 sudo cat /run/secrets/esphome > "/dev/shm/${ESPHOME_SECRETS_FILE}" + ln -sf "/dev/shm/${ESPHOME_SECRETS_FILE}" "{{justfile_directory()}}/secrets.yaml" + From d1f2b397ba43b5cf1b8c8dc2977ad615c75ff8ac Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 2 Mar 2025 03:21:03 +0100 Subject: [PATCH 377/562] Add water-bottle --- hosts/iron/secrets.yaml | 8 +- .../esphome/devices/water-bottle.yaml | 238 ++++++++++++++++++ 2 files changed, 242 insertions(+), 4 deletions(-) create mode 100644 hosts/iron/services/esphome/devices/water-bottle.yaml diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 7594642..e6feaa5 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -9,7 +9,7 @@ dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] -esphome: ENC[AES256_GCM,data:/qvYCozy6r5p3mx5QJUTcPF3NOnO0eowN4xAxt7eKbDIFgZ4E6lHOiEbZE+EluRsIiex3G7JvXeuGOG01U95caUjZ18lFQze+VxM31DACzbMB2u5QxKsWnNRABD6JdFM90HCymajEQTrZJWZJ0V6VyeJf6mj7ZYXJGjVyDxzVIRWF+2B4g1zY6211JFhwl2eo6//EamCqTuLYt6XagyiJfJJ3gp4yHF4ehxlU01IwO5OcBUhgWYGMf6y0JqLIkxqryQsl9L+VrWgjgx2fcjMhGA5C4yZ8dLOstSlOAsKYbxqDyKF0PoBf07WTiCcNx9ReW5wdfg/vb2tVXS0i58SrD81/G0p6gExKvnXmgdSU74hvzOaRNIMbRXUq+6ZXxZMJm/HahHpZ9klMWptmyQ/Y9eBiWEW0EflFZkGuIVI3ycn2admcRdF9SGi+dONeshbjdutFUrGfm+WRBD0FU103KwGjtxFFy5dC89PhMkOXFSR903d7Fy0DZ+qEo1LxzYS7prpTZz7LIYEC1H30du9PTWJhFMRSP7PFjmbPKxcG46dNYLh/I6quzHHmsinTO1zkE3/KgjchQcATuHV6t32admJccjsR8R69bcEEyWwixofhauQ35zlMC9jF2Q1GhWosisIQFLalHH1zitdH5K9qE+jh1MvEPh1tHJy/7RL2CMduBNQcGC/Af5T//4S868XknCxrjL1m8f/7As1+Iinu7Pee28vmtDeKPzQmJogqntMOoz9w6R5hERz5N8ch9RWqKU0z6hV5ciUG18PlyU/WWZ4rDaZJeUHM7vae+Y+or1O1PuemjMLHQhClYEGwbS+J93UrXKFsEytEz1s1BiJLpgJxYKzhb4zNFIha9SINtUq6ahHmzkjwtc/h1LDn9kQ/40nAIzUEt+UvUkeKpst+BbUEbAQi4WMU5BARl/Ogvpx2BocfE0GgsPksUbcwjv8y4AOXuHf89nTqVNOj8vyBr0oyQdsDayBQ9qLsp2xun7q9BLYw0BHLjWNwY7zp9vUXX476zcIWxhd1nOcl4Hma8z/GiceLBuMNnWNiou7G7sAWWKQIWSw5Kf6ebaP6uAY7wS0W0MdN90ascHcgZd1EHqluKSqxSPKVgQ1vfQtBh6uIPec12oJzcBxPj0yB4MnH5dsdaMjVUElRdzs8F+0T0SCYZSY+OK2OL8xN1WGW96bH3/+UEQDYHLmXOcsDcNGHHWkPAllArRLS65pDoI2IOFYdJzhdDWI+qVZZsxQf0NeW91ATN7qE/B+MlCIWugBUFOo9mIBrR/+FqUB66FnFvuO7J3Yaz/tHe5UDKJFqxgBVt4JwFHgxnwIjFHiNPbmeXhLJNy0yOhj4CF/Ah9sw1gDtULHMD5TiL/+0TFXaUZV7RqYK6dZtKW85LO3P62SM33Y6/HFlU+aEowfY2ZJKeAuOifbl8FQKFdMr/DY3pz+rJLY6SolMwn2tVq/u1OVfRCVLGTMU9V7nyyN5NfNSaucncqdb1HoybqbXvfE+iFjOkndwkU9aPhvw7ivK8EAeEpaKF3JXdlb01zl9ra8izjLVALCBIpmAJj8a4nP6z+zybxbfGiV20kFTGljvAGQ+G0fRtiH03jR8zdhuVHGkVDbKz8M9X80LM8eDFpaObA76SxtHTlQ7mlnreUQyQF4dEtL8dTDUcf8U1Sm8MkB1FW7vKVaXrSe/4FR9kayVo2GbjZUqzs1tEh2yBIOI4AnPz4ZxlapAiz9+/Msb46XwvXxO76Ax/lbzD9MnNgL3W0CUuCTtp2FG9AOBa60A22Tmk4DTNh6,iv:n/n2dgY5SQb8Z6fo+PROESZY4J4HpCOV/Gau4GcWiFQ=,tag:4vz12dpzqQQeY8GAHLXS9w==,type:str] +esphome: ENC[AES256_GCM,data:tuv07FGh4ubI40nOISNoW86J1dWg+wgvf7+/pYVBx2qUcquGALTPIoXMz+42PSrXliUvb2ZKnPbeU00cMWZ7kffOznjcQxhCRCnVfpgkIdSDurCWgGzblGzbjVjJ2Ph1mnn8QZ33sztarIFiG25eB7tF5iEL2jajxf/90BMcrF1Vb9NwadGS9Wv8ApfkMgnpSLEJwpyTas5womeA5gJV6dP8UH7BbKRmowu9yKMTtlIONuuquzGlhTsNsQMlO9a8V7HO/L6Km93uSnWE+oudID1gzMXmGKE5tuNuo40xtAS1+v73k6fR6/tA9MCHXiyLwsd34iD5FPPbeS0uBk+JQqlIWqF6PZER22OlqEd6aGCn9jHBjENTsyf9N78sbMYKCWxbrWtV1Zk1JBMHyl1R2dApyFWxy4NLq4O2swqyRPe59AMOPXhQbuNrGd0CKx6vvvVkxB66y5VR289PHyUL8SHUMBPvnVb8katVPNK4qBmucmD1LDVx+HipjRFuZtmTrzprtwQ+wrJTUznP4uyW7Qn1vYy6P6UWfp8U70sqRQnvUJCeMHtIEj9lJGaQYiitEtIcdJJOYYXL1tn7YVyRpHWZMqaeAuMNQcI6qpCJKOyl64wXaljNwb30NU3lpBCsgl3EF+hFkRUKrgPsOOtGxlMHVroptWahs9UlxbgjhpcAh+hiw+GHFPGuSZ5VfQO8MhOZlRTBhwdMT5N0JQO66L2bBF3XO5G1WVOG78Y0/dkv8xKZkfwTmmD8+InLcuPVBRukfm7S1HiwVJ5yN0huMcEfo1dfGbvlzI9uTZuoJtxp/PgZVPxyZDnsn7jZLIY3Ln+eUZDZyk5jdLqPsP9+4TY6F5QN7Tw6xTeIp+GaY0ZdY/KQVVNPBN2TvPBylLlisceyD6xfn5m3hkG1CXRIXKfFvsJfUN0LTd1vJiLTLVXqXu5LUo3BpAcE6U4fbliBX3mPoxk1+7edtLVzD99ho1y58To3kQbwuOkyYgse6DTVhjF0p+cxp+aDB5h/jT2/tmMc7YZAeY52cO7cIbkcOOvQzDyAOj028xPTmteOSnYe3MFq1e5HRTbdRUh0BzHzSN0IH+5HXWhKW6k9PG6l4yaMj3qqSw3IyL97KL9+jLeyUer0CoGyGpd6JYq9nS6WlKYu+GN3HbdMF6TBOyRC3oFQG+jIZGlXNeclDjJ5hJTzYAT7ioYU5EQQw9rl2J2TherLcS+61ZXnn3QXxDThgFhnn0Q+ozb/i31DMhQXCNjsN1SUVOyLpmWkr8CZnpiKaF58Kuz8Pvyk7Ih30GlZKZL74XSV8fz222qXMn4IP7Sb+PU4X/LJyz+/Ml+ktzB+Yt9UB9uwzNdwY1b4w1gUJI40ju6bKIlEEqhiATbMuX1Bio6Dt9NZ5v6Z7eD4VlgvSqJng7kO4YPoYdFykDhugpZ4BKyJRLE/MqT6ZI2WApgIhy6U4fPZTQNWtxHsobSUMvFLSdUprh4VQ9Auqjz1nqNAcVIjA5fPK1C1tEOx1KPEJXaqC6et17wpjt5ajLhB5td12XGIsUClKg4G2hYiyisFM0Z2fDbK4tlhFb/BJ7ZLY4zQudXu4FaeIxoD82zmqiyo78dn3KQK7+rhWsoR+wR6i7Tn9HjXevlcqvuU4D8raSgl3RcUeKnvJK5y6olcpJvbsfd0Lr1AH8MqwFuRDqufAZx0xoRZ1FhkK6ik+lc7XQkUsknIyvnn4rxYHP2GP+A1LaE4lyBqiC7xsj6ar1zjr/W0mB4vhpF5dRMHNsK6JXzHmoYYJxfY+lwlsYSbmwRBOyPO71TCPE6us/CuSJrkqiiRjWltuy/+uvzffLvh3Y+6wRC05aSbui0I4WaUGcRsM7nzH3/kO5bek3Nw7mLeTbqLkk+slKcCUfqdftibHiOxb5xxHWlbI33IG6dgLc/vBpyhvePB73fAAw==,iv:At2BvPMxMrsLEBFdTHacejtCwcCSNccHE4TXLyGKK2I=,tag:r7G2LvBJdbqPvgOxx87ofw==,type:str] home-assistant: ENC[AES256_GCM,data:wcFMxDdRCHf/shO9v2WaGgrsa9J2WP62xFs=,iv:9ckeIO62cFZUo8fPyQj445CrJVTooNlwLapM/oTsrkk=,tag:mlfxtXDPsB3T79P9BX9oJQ==,type:str] mqtt-users: home-assistant: ENC[AES256_GCM,data:oIjCw7ZnA5iOBmQdW1jcy3QQnpjT32pY,iv:5HFRkXJBdMXQbjk2ubQs3sEy5qEteiqSe2hrNc8+H40=,tag:7B6yI4oCHanE0JE/gHaKnQ==,type:str] @@ -29,8 +29,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-01-07T22:04:49Z" - mac: ENC[AES256_GCM,data:Hii5uCxSS1GStQO7af++sSbGaRK+WPZjQYNSd0EpB5p5+qbWvvBgmOnAFLqMDkhq0aSHYnrFnGkTGuxNciRYIIvOXTE109YxeloT8PQNSKlMMduyb7iUfeAQVQFTTx3Vs6YVe3Jd7oVztqK+zztgkIOX8uoTzE5CHSmhJkLYLTA=,iv:2W7Al1OgcvA98FqkmlXtdpQiAXybBgxsS5h7VA9JcKs=,tag:ZmrkPN+OtLDm2oeSoWsxqA==,type:str] + lastmodified: "2025-03-01T23:14:53Z" + mac: ENC[AES256_GCM,data:1m+Ml5Vhm87U4xz1kKNZ/4E+RqweUt2ypYh1JTYVHHV3dgySJytkwn0pFZj3RfR+z4r03hrvSuBt0ldWSn8UvGLHsJj8L9AqfDXyPg3SI6uRS6UeAbqZFs5HhNQzkNKwPnZ9KPbXJ8ab8Ck+jSfEcrtPShDOgDp9jTJZ91hTB1c=,iv:6tVJI31180asGh+MMguAeKtD4SY6W/2Pizqjt0SV4v8=,tag:0ghRP8locNjtvpIYL8tDlg==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- @@ -44,4 +44,4 @@ sops: -----END PGP MESSAGE----- fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted - version: 3.9.2 + version: 3.9.4 diff --git a/hosts/iron/services/esphome/devices/water-bottle.yaml b/hosts/iron/services/esphome/devices/water-bottle.yaml new file mode 100644 index 0000000..456b973 --- /dev/null +++ b/hosts/iron/services/esphome/devices/water-bottle.yaml @@ -0,0 +1,238 @@ +substitutions: + tolerance: "10" + minimum_sip: "20" + default_bottle_tare: "198" + +esphome: + name: "water-bottle" + friendly_name: "Water bottle" + +esp32: + board: lolin_s2_mini + variant: ESP32S2 + framework: + type: esp-idf + sdkconfig_options: + CONFIG_ESP_CONSOLE_USB_CDC: y + +logger: + hardware_uart: USB_CDC + +api: + encryption: + key: !secret apikey_water_bottle + on_client_connected: + - light.turn_on: + id: pixels + effect: "scan" + red: 0% + green: 25% + blue: 0% + - delay: 2s + - light.turn_off: + id: pixels + +ota: + - platform: esphome + password: !secret otapass_water_bottle + +wifi: + ssid: !secret wifi_ssid_bw + password: !secret wifi_password_bw + domain: .iot.bw.jalr.de + enable_on_boot: True + fast_connect: True + power_save_mode: none + output_power: 10 + +globals: + - id: volume_when_removed + type: int + restore_value: no + initial_value: "NAN" + - id: bottle_returned + type: bool + restore_value: no + initial_value: "false" + +sensor: + - platform: wifi_signal + name: "WiFi Signal Sensor" + update_interval: 60s + - platform: hx711 + internal: true + id: scale + dout_pin: GPIO16 + clk_pin: GPIO17 + gain: 128 + update_interval: 0.1s + unit_of_measurement: g + filters: + - quantile: + window_size: 10 + send_every: 5 + send_first_at: 5 + quantile: .9 + - calibrate_linear: + - 197155 -> 0 + - 246676 -> 50 + - platform: copy + name: "absolute volume" + id: volume_absolute + icon: "mdi:water" + source_id: scale + filters: + - lambda: "return x - id(bottle_tare).state;" + - clamp: + min_value: 0 + ignore_out_of_range: true + - quantile: + window_size: 5 + send_every: 5 + send_first_at: 5 + quantile: .9 + on_value: + then: + - if: + condition: + lambda: |- + if (id(bottle_returned)) { + id(bottle_returned) = false; + return true; + } + return false; + then: + - lambda: |- + ESP_LOGI("main", "Bottle returned, waiting to settle"); + ESP_LOGI("main", "Volume absolute: %f", id(volume_absolute).state); + - delay: 3s + - lambda: |- + ESP_LOGI("main", "Bottle settled"); + ESP_LOGI("main", "Volume when removed: %d", id(volume_when_removed)); + ESP_LOGI("main", "Volume absolute: %f", id(volume_absolute).state); + if (id(volume_when_removed) > id(volume_absolute).state + ${minimum_sip}) { + ESP_LOGI("main", "Volume total before: %f", id(volume_total).state); + auto call = id(volume_total).make_call(); + call.set_value(id(volume_when_removed) - id(volume_absolute).state + id(volume_total).state); + call.perform(); + ESP_LOGI("main", "Volume total now: %f", id(volume_total).state); + } + - platform: template + name: "Water consumption rate" + id: "volume_total_derivative" + unit_of_measurement: "ml/h" + icon: "mdi:water-check" + lambda: |- + static float last_value = 0; + static float last_time = 0; + float time = (float) millis(); + if (last_time == 0){ + last_value = id(volume_total).state; + last_time = time; + return {}; + } + float change = ( ( id(volume_total).state - last_value ) / ( time - last_time ) ) *1000*60*60; + last_value = id(volume_total).state; + last_time = time; + return change; + filters: + - sliding_window_moving_average: + window_size: 3 + send_every: 2 + - or: + - delta: 0.01 + - heartbeat: 120minutes + - throttle: 30s + +number: + - platform: template + name: "Bottle tare" + id: bottle_tare + icon: mdi:weight-gram + optimistic: true + initial_value: "${default_bottle_tare}" + unit_of_measurement: "g" + step: 1 + min_value: 0 + max_value: 1000 + - platform: template + name: "total volume" + id: volume_total + optimistic: true + icon: "mdi:water" + unit_of_measurement: "ml" + step: 1 + min_value: 0 + max_value: 10000 + +binary_sensor: + - platform: template + name: "Bottle present" + id: bottle_present + lambda: |- + if (id(scale).state > id(bottle_tare).state - ${tolerance}) { + return true; + } else { + return false; + } + on_release: + then: + - lambda: |- + id(volume_when_removed) = id(volume_absolute).state; + ESP_LOGI("main", "Volume absolute: %f ml", id(volume_absolute).state); + ESP_LOGI("main", "Bottle removed with %d ml", id(volume_when_removed)); + - light.turn_on: + id: pixels + effect: "normal_pulse" + red: 75% + green: 0% + blue: 0% + on_press: + then: + - globals.set: + id: bottle_returned + value: "true" + - if: + condition: + lambda: "return id(volume_absolute).state > 250;" + then: + - light.turn_on: + id: pixels + effect: "normal_pulse" + red: 0% + green: 50% + blue: 50% + else: + - light.turn_on: + id: pixels + effect: "normal_pulse" + red: 50% + green: 25% + blue: 0% + - delay: 2s + - light.turn_off: + id: pixels + +e131: + method: multicast + +light: + - platform: esp32_rmt_led_strip + id: pixels + rgb_order: GRB + pin: GPIO12 + num_leds: 8 + rmt_channel: 0 + chipset: ws2812 + effects: + - addressable_scan: + name: scan + move_interval: 20ms + scan_width: 1 + - pulse: + name: slow_pulse + transition_length: 500ms + update_interval: 10s + - pulse: + name: normal_pulse + min_brightness: 20% From b339a6ac5d5b1fc92e5bcdec3d1de0d5d71a1e83 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 12 Mar 2025 22:09:06 +0100 Subject: [PATCH 378/562] Add android ntfy url --- .sops.yaml | 7 +++++++ hosts/copper/secrets.yaml | 32 +++++++++++++++++++++++++++++++ hosts/copper/services/default.nix | 1 + hosts/copper/services/ntfy.nix | 7 +++++++ 4 files changed, 47 insertions(+) create mode 100644 hosts/copper/secrets.yaml create mode 100644 hosts/copper/services/ntfy.nix diff --git a/.sops.yaml b/.sops.yaml index 8284cc4..a331d98 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -6,6 +6,7 @@ keys: - &host_iron age1hx7fdu4mcha7kkxe7yevtvs6xgzgaafgenm3drhvr609wlj94sgqm497je - &host_magnesium age1swv42gad884z2v75kateem6k2za6ltkq6wu90ewqp6dp7gxprawslwz0w0 - &host_weinturm_pretix_prod age1djjxl3lcvzs85nj0met6w8ujsz8pvr6ngmmdwlxfh0k9d5lkrpdqlzzehf + - &host_copper age1rrut5ntrkqmvttvmpa5jcmjhr2pfpyaqgu9dmtx6v07lgjxx5ppsl7e5v3 creation_rules: - path_regex: hosts/aluminium/secrets\.yaml$ key_groups: @@ -37,6 +38,12 @@ creation_rules: - *admin_jalr age: - *host_weinturm_pretix_prod + - path_regex: hosts/copper/secrets\.yaml$ + key_groups: + - pgp: + - *admin_jalr + age: + - *host_copper - path_regex: secrets\.yaml$ key_groups: - pgp: diff --git a/hosts/copper/secrets.yaml b/hosts/copper/secrets.yaml new file mode 100644 index 0000000..5ad148c --- /dev/null +++ b/hosts/copper/secrets.yaml @@ -0,0 +1,32 @@ +ntfy_shiftphone: ENC[AES256_GCM,data:WG/LlELNgEh2BiyrOYLDvYk3AlObSvUYUH8v3Cq9oHOhN1+Iwg==,iv:MVwLBIQjY8Z31V9mXf7Ge/jGb9S7ceLFx2TffcsO+o4=,tag:skeQbBPLYH8D4CPDorJ0fQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1rrut5ntrkqmvttvmpa5jcmjhr2pfpyaqgu9dmtx6v07lgjxx5ppsl7e5v3 + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzbXFqbHJFM0xxL284dWZD + TDkzcGVSRGorRWQvV3h3dkJ6UjNOeUxVcGdRCk5jTkZDeVFORVVWdm1vZm5XUHdk + S0ZBTEdEeDgramZNZm5xK3RkVkkxSDgKLS0tIFZ6dysvVm1YNlJzOVFXZXhrdXBE + dU0reGFSUmRxb0ZlUHgyYlpjU0FOQUEKuOMKvkZcynBGyMHmAYmz13Jy32YKyVK0 + ztCWcXbl9qCe6KtI0yW+t8DLk/PaRrmSrB+2ICTMFqPh7HiBoX+KgQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-03-12T20:36:21Z" + mac: ENC[AES256_GCM,data:BpwQmtqj8NkTNO7cJHMoOeILY4HRcb7OasiCcnXsBwIFvbeDgwj+DMZOeKbitLXwzS5frWhZWg0eBHQ4BZQFjX1K0KReVacH9CblHnSZLxjMg3x6o3upB70YjdmD3KKBisOwfMCjklwk0rKwx0w5vzac3r1nJU+PGtFw1luIiBs=,iv:bYIRVFWVGjwgmaGu6JqvpCa0TIp8idP5Bc5cYV7Bri8=,tag:D2xS1PK9a9Dd1mm8+R9RRA==,type:str] + pgp: + - created_at: "2025-03-12T20:51:07Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + hF4DY/xpNY5WhB0SAQdAhB2C4sQhoL04j1RiWoeNCNSbGxDkrqXP+IffdoY8DWgw + x8aogh0b7CpTplBG/4g/WMVB4N/86uvI+mLYxJMyRb9b0f0bDr5dPpnhk//r/MDg + 0l4B9+hcSzmkwXlKh7L8Ds4cZr/z3RlqnR424KSfKbiaaigYttui5l4xgEEPZE1H + 1yfIJ5lBMgG1HTj3HX5mqM9ocA4HVzIkfPPqrFRAgjZdqeDEbLBT3lItMlvsOwy4 + =kS0b + -----END PGP MESSAGE----- + fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 + unencrypted_suffix: _unencrypted + version: 3.9.4 diff --git a/hosts/copper/services/default.nix b/hosts/copper/services/default.nix index f407703..e865371 100644 --- a/hosts/copper/services/default.nix +++ b/hosts/copper/services/default.nix @@ -1,5 +1,6 @@ { imports = [ + ./ntfy.nix ./webdev.nix ]; } diff --git a/hosts/copper/services/ntfy.nix b/hosts/copper/services/ntfy.nix new file mode 100644 index 0000000..d252d96 --- /dev/null +++ b/hosts/copper/services/ntfy.nix @@ -0,0 +1,7 @@ +{ pkgs, lib, ... }: +{ + sops.secrets.ntfy_shiftphone = { + sopsFile = ../secrets.yaml; + owner = "jalr"; + }; +} From d1f2e8d10b861a56721da0f8b3e63145ea573a61 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Mar 2025 04:10:09 +0100 Subject: [PATCH 379/562] Remove mpd widget --- users/jalr/modules/sway/waybar.nix | 49 ------------------------------ 1 file changed, 49 deletions(-) diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index c851c5f..ecd196c 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -42,7 +42,6 @@ in "custom/redshift" "idle_inhibitor" "backlight" - "mpd" "pulseaudio" "network" "custom/vpn" @@ -119,37 +118,6 @@ in on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl -q set +5%"; on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl -q set 5%-"; }; - mpd = { - server = config.services.mpd.network.listenAddress; - format = "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} – {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) 󰎈"; - format-disconnected = "Disconnected 󰎈"; - format-stopped = "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped 󰎈"; - unknown-tag = "N/A"; - interval = 2; - tooltip-format = "MPD (connected)"; - tooltip-format-disconnected = "MPD (disconnected)"; - on-scroll-up = "${pkgs.mpc_cli}/bin/mpc -q -h ${config.services.mpd.network.listenAddress} volume +2"; - on-scroll-down = "${pkgs.mpc_cli}/bin/mpc -q -h ${config.services.mpd.network.listenAddress} volume -2"; - title-len = 48; - artist-len = 24; - consume-icons = { - on = "󰩫 "; - }; - random-icons = { - off = "󰒞 "; - on = "󰒝 "; - }; - repeat-icons = { - on = "󰑖 "; - }; - single-icons = { - on = "󰑘 "; - }; - state-icons = { - paused = "󰏤 "; - playing = "󰐊 "; - }; - }; pulseaudio = { format = "{volume}% {icon} {format_source}"; format-bluetooth = "{volume}% {icon}󰗾{format_source}"; @@ -419,23 +387,6 @@ in color: @base00; } - #mpd { - background-color: @base0B; - color: @base01; - } - - #mpd.disconnected { - background-color: @base08; - } - - #mpd.stopped { - background-color: @base09; - } - - #mpd.paused { - background-color: @base0A; - } - #custom-redshift { color: @base01; } From a4c4b3ef325ad990cf04cf501f427f1cc60bff76 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Mar 2025 04:10:26 +0100 Subject: [PATCH 380/562] Remove vpn widget --- users/jalr/modules/sway/waybar.nix | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index ecd196c..960af9d 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -44,7 +44,6 @@ in "backlight" "pulseaudio" "network" - "custom/vpn" "memory" "cpu" "temperature" @@ -145,18 +144,6 @@ in tooltip = false; on-click-right = "${config.programs.alacritty.package}/bin/alacritty -e ${pkgs.networkmanager}/bin/nmtui"; }; - "custom/vpn" = { - interval = 10; - exec = pkgs.writeShellScript "vpn-state" '' - ${pkgs.iproute2}/bin/ip -j link \ - | ${pkgs.jq}/bin/jq --unbuffered --compact-output ' - [[.[].ifname | select(. | startswith("mullvad"))][] | split("-")[1] + " 󰌾${thinsp}"] as $conns - | { text: ($conns[0] // ""), class: (if $conns | length > 0 then "connected" else "disconnected" end) }' - ''; - return-type = "json"; - format = "{}"; - tooltip = false; - }; memory = { interval = 2; format = "{:2}% 󰍛 "; @@ -358,11 +345,6 @@ in color: @base01 } - #custom-vpn { - background-color: @base0D; - color: @base01 - } - #network.disconnected { background-color: @base08; } From 3fd75c4991a55a9c8db1a6ac947898985b35210d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Mar 2025 04:10:47 +0100 Subject: [PATCH 381/562] Remove calendar widget --- users/jalr/modules/sway/waybar.nix | 44 ------------------------------ 1 file changed, 44 deletions(-) diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index 960af9d..ad8a8a5 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -49,7 +49,6 @@ in "temperature" "battery" "clock" - "custom/calendar" ]; "sway/workspaces" = { @@ -178,44 +177,6 @@ in format-alt = "{:%Y-%m-%d (%a)}"; tooltip-format = "{:%Y %B}\n{calendar}"; }; - "custom/calendar" = { - interval = 300; - exec = pkgs.writeScript "calendar" /* python */ '' - #!${pkgs.python3}/bin/python3 - import json - import subprocess - - - def khal(args): - completed = subprocess.run(["${pkgs.khal}/bin/khal"] + args, capture_output=True) - assert completed.returncode == 0 - return completed.stdout.decode("utf-8") - - - events_today = khal(["list", "today", "today", "-df", "", "-f", "{title}"]).rstrip().split("\n") - events_2d = khal(["list", "today", "tomorrow", "-df", "{name}, {date}"]).rstrip() - - if len(events_today) == 1 and events_today[0] == "No events": - events_today = [] - - if len(events_today) == 0: - text = "󰃮 " - else: - text = f"{len(events_today)} 󰃶 " - - print( - json.dumps( - { - "class": "active" if len(events_today) > 0 else "", - "text": text, - "tooltip": events_2d, - } - ) - ) - ''; - return-type = "json"; - format = "{}"; - }; }; xdg.configFile."waybar/theme-light.css".text = solarizedColors { @@ -399,11 +360,6 @@ in animation-iteration-count: infinite; animation-direction: alternate; } - - #custom-calendar.active { - background-color: @base07; - color: @base03; - } ''; systemd.user.services.waybar = { From 2b7ce9a5d4a18551e867fc6554cbe104784ed01c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Mar 2025 04:11:45 +0100 Subject: [PATCH 382/562] Implement changing screencast mode for mako --- users/jalr/modules/sway/waybar.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index ad8a8a5..e3ca9d8 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -78,7 +78,7 @@ in deactivated = "󰈉 "; }; }; - "custom/screencast" = { + "custom/screencast" = let makoctl = "${pkgs.mako}/bin/makoctl"; in { exec = pkgs.writeScript "screencast-monitor" /* python */ '' #!${pkgs.python3}/bin/python3 import subprocess @@ -102,8 +102,10 @@ in if active_outputs > 0: print("󱒃") + subprocess.run(["${makoctl}", "mode", "-a" "screencast"], stdout=subprocess.DEVNULL) else: print() + subprocess.run(["${makoctl}", "mode", "-r" "screencast"], stdout=subprocess.DEVNULL) sys.stdout.flush() ''; From 3bfe9a367ef96dc0fd43681ddbd675be0bf4dd06 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Mar 2025 04:17:48 +0100 Subject: [PATCH 383/562] Add do-not-disturb scripts --- users/jalr/modules/default.nix | 1 + .../modules/do-not-disturb/android-set-dnd.py | 26 ++++++++++++++++++ users/jalr/modules/do-not-disturb/default.nix | 27 +++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100755 users/jalr/modules/do-not-disturb/android-set-dnd.py create mode 100644 users/jalr/modules/do-not-disturb/default.nix diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index d0d8f34..f7734d5 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -7,6 +7,7 @@ ./cli ./communication ./direnv.nix + ./do-not-disturb ./dynamic-colors.nix ./firefox ./fish.nix diff --git a/users/jalr/modules/do-not-disturb/android-set-dnd.py b/users/jalr/modules/do-not-disturb/android-set-dnd.py new file mode 100755 index 0000000..0ca4381 --- /dev/null +++ b/users/jalr/modules/do-not-disturb/android-set-dnd.py @@ -0,0 +1,26 @@ +import os +import sys +from urllib import request + + +def read_url(): + try: + with open(os.getenv("NTFY_URL_FILE")) as f: + return f.read() + except FileNotFoundError: + return None + + +def set_android_dnd(active: bool): + url = read_url() + if url is not None: + request.urlopen( + request.Request( + read_url(), method="POST", data=("on" if active else "off").encode() + ) + ) + + +if __name__ == "__main__": + _, state = sys.argv + set_android_dnd(state == "on") diff --git a/users/jalr/modules/do-not-disturb/default.nix b/users/jalr/modules/do-not-disturb/default.nix new file mode 100644 index 0000000..0d3daf2 --- /dev/null +++ b/users/jalr/modules/do-not-disturb/default.nix @@ -0,0 +1,27 @@ +{ nixosConfig, lib, pkgs, ... }: + +let + androidSetDnd = pkgs.writeScript "android-set-dnd" '' + #!${pkgs.python3}/bin/python3 + ${builtins.readFile ./android-set-dnd.py} + ''; + do-not-disturb = pkgs.writeShellScriptBin "dnd" '' + if [[ "$1" != off && "$1" != on ]]; then + echo "USAGE: $0 [on|off]" >&2 + exit 1 + fi + + export NTFY_URL_FILE=/run/secrets/ntfy_shiftphone + ${androidSetDnd} $1 + + if [[ $1 == on ]]; then + makoctl mode -a dnd > /dev/null + else + makoctl mode -r dnd > /dev/null + fi + ''; + +in +lib.mkIf nixosConfig.jalr.gui.enable { + home.packages = [ do-not-disturb ]; +} From e7f35b08fd83df7f7f4adf1528c78c2980c21e61 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Mar 2025 05:00:20 +0100 Subject: [PATCH 384/562] Add pomodoro timer --- pkgs/default.nix | 1 + pkgs/pomodoro-timer/default.nix | 52 +++++ pkgs/pomodoro-timer/pomodorotimer.svg | 274 ++++++++++++++++++++++++++ users/jalr/modules/default.nix | 1 + users/jalr/modules/pomodoro.nix | 69 +++++++ users/jalr/modules/sway/default.nix | 7 + users/jalr/modules/sway/waybar.nix | 32 +++ 7 files changed, 436 insertions(+) create mode 100644 pkgs/pomodoro-timer/default.nix create mode 100644 pkgs/pomodoro-timer/pomodorotimer.svg create mode 100644 users/jalr/modules/pomodoro.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 677507c..d81563a 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -22,6 +22,7 @@ in myintercom-doorbell = callPackage ./myintercom-doorbell { inherit poetry2nix; }; + pomodoro-timer = callPackage ./pomodoro-timer { }; pretix-banktool = callPackage ./pretix-banktool { }; tabbed-box-maker = callPackage ./tabbed-box-maker { }; vesc-firmware = callPackage ./vesc-tool/firmware.nix { }; diff --git a/pkgs/pomodoro-timer/default.nix b/pkgs/pomodoro-timer/default.nix new file mode 100644 index 0000000..839ac12 --- /dev/null +++ b/pkgs/pomodoro-timer/default.nix @@ -0,0 +1,52 @@ +{ lib +, stdenv +, yad +, uair +, gnused +, writeShellScript +, makeDesktopItem +}: + +let + pomodoroTimer = writeShellScript "pomodoro-timer" '' + export PATH=${lib.makeBinPath [yad uair gnused]} + uairctl listen -o yad \ + | yad \ + --title="Pomodoro" \ + --geometry="300x50" \ + --scale \ + --progress \ + --no-buttons \ + --css="* { font-size: 60px;} progress { min-height: 1200px; margin: -100px -8px -6px;}" + ''; +in +stdenv.mkDerivation rec { + pname = "pomodoro-timer"; + version = "1.0.0"; + src = ./pomodorotimer.svg; + dontUnpack = true; + + installPhase = '' + dir=$out/share/icons/hicolor/scalable/apps/ + mkdir -p $dir + cp $src $dir/pomodorotimer.svg + mkdir $out/bin + cp "${pomodoroTimer}" $out/bin/pomodoro-timer + ln -s "${desktopItem}/share/applications" $out/share/ + ''; + + desktopItem = makeDesktopItem { + name = pname; + exec = pname; + icon = "pomodorotimer"; + desktopName = pname; + comment = meta.description; + categories = [ "Utility" ]; + }; + + meta = with lib; { + description = "Pomodoro timer (GUI for uair)"; + maintainers = with maintainers; [ jalr ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/pomodoro-timer/pomodorotimer.svg b/pkgs/pomodoro-timer/pomodorotimer.svg new file mode 100644 index 0000000..b771a33 --- /dev/null +++ b/pkgs/pomodoro-timer/pomodorotimer.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + Pomodoro Timer + + + + + + + image/svg+xml + + + + + Openclipart + + + Pomodoro Timer + 2011-05-03T21:58:11 + The Pomodoro Technique® is a way to get the most out of time management. Develop by Francesco Cirillo. + https://openclipart.org/detail/135631/pomodoro-timer-by-fairhonanth + + + fairhonanth + + + + + management + pomodoro + productivity + techinique + timer + + + + + + + + + + + diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index f7734d5..b72ee3d 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -28,6 +28,7 @@ ./openscad.nix ./ots.nix ./pass.nix + ./pomodoro.nix ./python.nix ./remarkable ./snapclient.nix diff --git a/users/jalr/modules/pomodoro.nix b/users/jalr/modules/pomodoro.nix new file mode 100644 index 0000000..42b1bc3 --- /dev/null +++ b/users/jalr/modules/pomodoro.nix @@ -0,0 +1,69 @@ +{ nixosConfig, lib, pkgs, config, ... }: + +let + tomlFormat = pkgs.formats.toml { }; +in +lib.mkIf nixosConfig.jalr.gui.enable { + home.packages = with pkgs; [ + uair + pomodoro-timer + ]; + + xdg.configFile."uair/uair.toml".source = tomlFormat.generate "uair.toml" { + defaults = { + loop_on_end = true; + paused_state_text = "paused"; + resumed_state_text = "resumed"; + overrides = { + yad = { + format = "{percent}\n#{time}\n"; + }; + json = { + format = ''{"name": "{name}", "percent": {percent}", "time": "{time}", "running": {state}, "total": "{total}"} + ''; + paused_state_text = "false"; + resumed_state_text = "true"; + }; + waybar = { + format = ''{"text": "{name}: {time}", "class": "{state}"} + ''; + paused_state_text = "paused"; + resumed_state_text = "resumed"; + }; + }; + }; + sessions = + let + work-finished = "notify-send 'Pomodoro done! Enjoy your break.'; dnd off"; + break-finished = "notify-send 'Get back to work!'; dnd on"; + in + [ + { name = "Work 1"; duration = "25m"; command = work-finished; } + { name = "Break 1"; duration = "5m"; command = break-finished; } + { name = "Work 2"; duration = "25m"; command = work-finished; } + { name = "Break 2"; duration = "5m"; command = break-finished; } + { name = "Work 3"; duration = "25m"; command = work-finished; } + { name = "Break 3"; duration = "5m"; command = break-finished; } + { name = "Work 4"; duration = "25m"; command = work-finished; } + { name = "Long Break"; duration = "20m"; command = break-finished; } + ]; + }; + + systemd.user.services.uair = { + Unit.Description = "Pomodoro timer"; + Service = { + ExecStart = "${pkgs.uair}/bin/uair"; + NoNewPrivileges = true; + ProtectControlGroups = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX"; + RestrictNamespaces = true; + Type = "simple"; + Environment = [ + "PATH=/etc/profiles/per-user/jalr/bin:/run/current-system/sw/bin/" + ]; + }; + Install.WantedBy = [ "default.target" ]; + }; +} diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index bb16c26..2f3a27a 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -293,6 +293,13 @@ in }; command = "floating enable"; } + { + criteria = { + app_id = "yad"; + title = "Pomodoro"; + }; + command = "floating enable"; + } ]; window.border = 2; diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index e3ca9d8..377f4d2 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -41,6 +41,7 @@ in "custom/screencast" "custom/redshift" "idle_inhibitor" + "custom/pomodoro" "backlight" "pulseaudio" "network" @@ -71,6 +72,32 @@ in format = "󰌵"; tooltip = false; }; + "custom/pomodoro" = let uairctl = "${pkgs.uair}/bin/uairctl"; in { + # We need to remove nul-characters + # See https://github.com/metent/uair/issues/15 + exec = pkgs.writeShellScript "uairctl-without-null-characters" '' + ${uairctl} listen -o waybar | ${pkgs.gnused}/bin/sed --unbuffered 's/\x0//g' + ''; + + on-click = "${uairctl} toggle"; + on-scroll-up = "${uairctl} next"; + on-scroll-down = "${uairctl} prev"; + on-click-middle = "${uairctl} finish"; + menu = "on-click-right"; + /* + menu-actions = { + "work 1" = "${uairctl} jump 0"; + "break 1" = "${uairctl} jump 1"; + "work 2" = "${uairctl} jump 2"; + "break 2" = "${uairctl} jump 3"; + "work 3" = "${uairctl} jump 4"; + "break 3" = "${uairctl} jump 5"; + "work 4" = "${uairctl} jump 6"; + "long break" = "${uairctl} jump 7"; + }; + */ + return-type = "json"; + }; idle_inhibitor = { format = "{icon}"; format-icons = { @@ -362,6 +389,11 @@ in animation-iteration-count: infinite; animation-direction: alternate; } + + #custom-pomodoro.resumed { + color: @base01; + background-color: @base0B; + } ''; systemd.user.services.waybar = { From fc482184878789ef6c87451d5491ae388eda6185 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Mar 2025 05:58:39 +0100 Subject: [PATCH 385/562] Add mako configuration --- users/jalr/modules/sway/default.nix | 3 ++- users/jalr/modules/sway/mako.nix | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 users/jalr/modules/sway/mako.nix diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index 2f3a27a..af4dff4 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -58,10 +58,11 @@ in { imports = lib.optionals nixosConfig.jalr.gui.enable [ ./gammastep.nix + ./mako.nix ./screenshare.nix ./waybar.nix - ./wofi.nix ./wofi-bluetooth.nix + ./wofi.nix ./yubikey-touch-detector.nix ]; } // (lib.mkIf nixosConfig.jalr.gui.enable { diff --git a/users/jalr/modules/sway/mako.nix b/users/jalr/modules/sway/mako.nix new file mode 100644 index 0000000..48d52df --- /dev/null +++ b/users/jalr/modules/sway/mako.nix @@ -0,0 +1,10 @@ +{ + xdg.configFile."mako/config".text = '' + [mode=dnd] + invisible=1 + + [mode=screencast] + icons=0 + format=%a + ''; +} From 3ed8370ebfbeeb16c13cf39c80e74327af788f67 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Mar 2025 05:59:30 +0100 Subject: [PATCH 386/562] Increase screencast indicator animation duration --- users/jalr/modules/sway/waybar.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index 377f4d2..696fc7d 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -384,8 +384,8 @@ in background-color: @base08; color: @base00; animation-name: blink; - animation-duration: 0.5s; - animation-timing-function: cubic-bezier(1, 0, 0, 1); + animation-duration: 1s; + animation-timing-function: ease-in-out; animation-iteration-count: infinite; animation-direction: alternate; } From 2dedde53de6b2ce97d0f668f3512f7a1bbe491f3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Mar 2025 06:01:46 +0100 Subject: [PATCH 387/562] Fix dark mode for pavucontrol --- users/jalr/modules/dynamic-colors.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/users/jalr/modules/dynamic-colors.nix b/users/jalr/modules/dynamic-colors.nix index d28d856..2b1548a 100644 --- a/users/jalr/modules/dynamic-colors.nix +++ b/users/jalr/modules/dynamic-colors.nix @@ -46,6 +46,13 @@ let else null ); } + { + exec = ( + if nixosConfig.jalr.gui.enable + then [ "/usr/bin/env" "gsettings" "set" "org.gnome.desktop.interface" "gtk-theme" "Adwaita-%scheme%" ] + else null + ); + } ]; dynamic-colors = pkgs.writers.writePython3Bin "dynamic-colors" { } '' import json From 7f489b0e5aacad90787c062f3ddfe9001d337f72 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Mar 2025 15:08:28 +0100 Subject: [PATCH 388/562] Add icon to pomodoro timer --- pkgs/pomodoro-timer/default.nix | 12 +++++++++++- users/jalr/modules/pomodoro.nix | 5 +++-- users/jalr/modules/sway/mako.nix | 6 ++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/pkgs/pomodoro-timer/default.nix b/pkgs/pomodoro-timer/default.nix index 839ac12..4af648b 100644 --- a/pkgs/pomodoro-timer/default.nix +++ b/pkgs/pomodoro-timer/default.nix @@ -5,6 +5,7 @@ , gnused , writeShellScript , makeDesktopItem +, imagemagick }: let @@ -27,12 +28,21 @@ stdenv.mkDerivation rec { dontUnpack = true; installPhase = '' + icon_size=64x64 dir=$out/share/icons/hicolor/scalable/apps/ - mkdir -p $dir + mkdir -p \ + $out/share/icons/hicolor/scalable/apps/ \ + $out/share/icons/hicolor/$icon_size/apps/ + cp $src $dir/pomodorotimer.svg mkdir $out/bin cp "${pomodoroTimer}" $out/bin/pomodoro-timer ln -s "${desktopItem}/share/applications" $out/share/ + + ${imagemagick}/bin/convert \ + -size $icon_size \ + $src \ + $out/share/icons/hicolor/$icon_size/apps/pomodorotimer.png ''; desktopItem = makeDesktopItem { diff --git a/users/jalr/modules/pomodoro.nix b/users/jalr/modules/pomodoro.nix index 42b1bc3..85e1b78 100644 --- a/users/jalr/modules/pomodoro.nix +++ b/users/jalr/modules/pomodoro.nix @@ -34,8 +34,9 @@ lib.mkIf nixosConfig.jalr.gui.enable { }; sessions = let - work-finished = "notify-send 'Pomodoro done! Enjoy your break.'; dnd off"; - break-finished = "notify-send 'Get back to work!'; dnd on"; + notify-send = "notify-send --app-name='Pomodoro timer' --icon='pomodorotimer'"; + work-finished = "${notify-send} 'Pomodoro done! Enjoy your break.'; dnd off"; + break-finished = "${notify-send} 'Get back to work!'; dnd on"; in [ { name = "Work 1"; duration = "25m"; command = work-finished; } diff --git a/users/jalr/modules/sway/mako.nix b/users/jalr/modules/sway/mako.nix index 48d52df..767e6b5 100644 --- a/users/jalr/modules/sway/mako.nix +++ b/users/jalr/modules/sway/mako.nix @@ -1,3 +1,5 @@ +{ pkgs, ... }: + { xdg.configFile."mako/config".text = '' [mode=dnd] @@ -6,5 +8,9 @@ [mode=screencast] icons=0 format=%a + + [app-name="Pomodoro timer"] + invisible=0 + icon-path="${pkgs.pomodoro-timer}/share/icons/hicolor" ''; } From 770e354480b78fdeac135e953454d04dd50ae576 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 13 Mar 2025 17:30:31 +0100 Subject: [PATCH 389/562] Add do-not-disturb widget to waybar --- users/jalr/modules/do-not-disturb/default.nix | 2 + users/jalr/modules/sway/waybar.nix | 362 ++++++++++-------- 2 files changed, 195 insertions(+), 169 deletions(-) diff --git a/users/jalr/modules/do-not-disturb/default.nix b/users/jalr/modules/do-not-disturb/default.nix index 0d3daf2..29b0c2f 100644 --- a/users/jalr/modules/do-not-disturb/default.nix +++ b/users/jalr/modules/do-not-disturb/default.nix @@ -6,6 +6,8 @@ let ${builtins.readFile ./android-set-dnd.py} ''; do-not-disturb = pkgs.writeShellScriptBin "dnd" '' + export PATH=${pkgs.lib.makeBinPath [pkgs.mako]} + if [[ "$1" != off && "$1" != on ]]; then echo "USAGE: $0 [on|off]" >&2 exit 1 diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index 696fc7d..a678232 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -22,69 +22,74 @@ let in { # home-manager’s waybar module performs additional checks that are overly strict - xdg.configFile."waybar/config".text = lib.generators.toJSON { } { - layer = "top"; - output = [ - "!HEADLESS-1" - "*" - ]; - position = "top"; - height = 24; + xdg.configFile."waybar/config".text = + let + makoctl = "${pkgs.mako}/bin/makoctl"; + in + lib.generators.toJSON { } { + layer = "top"; + output = [ + "!HEADLESS-1" + "*" + ]; + position = "top"; + height = 24; - modules-center = [ ]; - modules-left = [ - "sway/workspaces" - "sway/mode" - ]; - modules-right = [ - "tray" - "custom/screencast" - "custom/redshift" - "idle_inhibitor" - "custom/pomodoro" - "backlight" - "pulseaudio" - "network" - "memory" - "cpu" - "temperature" - "battery" - "clock" - ]; + modules-center = [ ]; + modules-left = [ + "sway/workspaces" + "sway/mode" + ]; + modules-right = [ + "tray" + "custom/screencast" + "custom/redshift" + "idle_inhibitor" + "custom/pomodoro" + "backlight" + "pulseaudio" + "network" + "memory" + "cpu" + "temperature" + "battery" + "clock" + "custom/dnd" + ]; - "sway/workspaces" = { - disable-scroll = true; - }; - "sway/mode" = { - format = "{}"; - }; + "sway/workspaces" = { + disable-scroll = true; + }; + "sway/mode" = { + format = "{}"; + }; - tray = { - spacing = 5; - }; - "custom/redshift" = { - exec = watchUserUnitState - "gammastep" - { class = "active"; } - { class = "inactive"; }; - on-click = toggleUserUnitState "gammastep"; - return-type = "json"; - format = "󰌵"; - tooltip = false; - }; - "custom/pomodoro" = let uairctl = "${pkgs.uair}/bin/uairctl"; in { - # We need to remove nul-characters - # See https://github.com/metent/uair/issues/15 - exec = pkgs.writeShellScript "uairctl-without-null-characters" '' - ${uairctl} listen -o waybar | ${pkgs.gnused}/bin/sed --unbuffered 's/\x0//g' - ''; + tray = { + spacing = 5; + }; + "custom/redshift" = { + exec = watchUserUnitState + "gammastep" + { class = "active"; } + { class = "inactive"; }; + on-click = toggleUserUnitState "gammastep"; + return-type = "json"; + format = "󰌵"; + tooltip = false; + }; + "custom/pomodoro" = let uairctl = "${pkgs.uair}/bin/uairctl"; in { + # We need to remove nul-characters + # See https://github.com/metent/uair/issues/15 + exec = pkgs.writeShellScript "uairctl-without-null-characters" '' + ${uairctl} listen -o waybar | ${pkgs.gnused}/bin/sed --unbuffered 's/\x0//g' + ''; - on-click = "${uairctl} toggle"; - on-scroll-up = "${uairctl} next"; - on-scroll-down = "${uairctl} prev"; - on-click-middle = "${uairctl} finish"; - menu = "on-click-right"; - /* + on-click = "${uairctl} toggle"; + on-scroll-up = "${uairctl} next"; + on-scroll-down = "${uairctl} prev"; + on-click-middle = "${uairctl} finish"; + menu = "on-click-right"; + /* menu-actions = { "work 1" = "${uairctl} jump 0"; "break 1" = "${uairctl} jump 1"; @@ -95,118 +100,132 @@ in "work 4" = "${uairctl} jump 6"; "long break" = "${uairctl} jump 7"; }; - */ - return-type = "json"; - }; - idle_inhibitor = { - format = "{icon}"; - format-icons = { - activated = "󰈈 "; - deactivated = "󰈉 "; + */ + return-type = "json"; + }; + idle_inhibitor = { + format = "{icon}"; + format-icons = { + activated = "󰈈 "; + deactivated = "󰈉 "; + }; + }; + "custom/screencast" = { + exec = pkgs.writeScript "screencast-monitor" /* python */ '' + #!${pkgs.python3}/bin/python3 + import subprocess + import sys + + active_outputs = 0 + + with subprocess.Popen( + ["${pkgs.coreutils}/bin/stdbuf", "-o0", "${nixosConfig.services.pipewire.package}/bin/pw-link", "-m", "-o", "xdg-desktop-portal-wlr"], + stdout=subprocess.PIPE, + text=True, + ) as proc: + for line in proc.stdout: + action = line.split(" ")[0] + if action == "=" or action == "+": + active_outputs += 1 + elif action == "-": + active_outputs -= 1 + else: + print(f"Invalid action {action} (in line {line})", file=sys.stderr) + + if active_outputs > 0: + print("󱒃") + subprocess.run(["${makoctl}", "mode", "-a" "screencast"], stdout=subprocess.DEVNULL) + else: + print() + subprocess.run(["${makoctl}", "mode", "-r" "screencast"], stdout=subprocess.DEVNULL) + + sys.stdout.flush() + ''; + format = "{}"; + tooltip = false; + }; + backlight = { + format = "{percent}% {icon}"; + format-icons = [ "󰛩" "󱩎" "󱩏" "󱩐" "󱩑" "󱩒" "󱩓" "󱩔" "󱩕" "󱩖" "󰛨" ]; + on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl -q set +5%"; + on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl -q set 5%-"; + }; + pulseaudio = { + format = "{volume}% {icon} {format_source}"; + format-bluetooth = "{volume}% {icon}󰗾{format_source}"; + format-bluetooth-muted = "{icon}󰗿{format_source}"; + format-muted = "󰝟 {format_source}"; + format-source = "{volume}% ${thinsp}"; + format-source-muted = "${thinsp}"; + format-icons = { + car = "󰄋 "; + default = [ "󰕿" "󰖀" "󰕾" ]; + hands-free = "󰋎"; + headphone = "󰋋"; + headset = "󰋎"; + phone = "󰏲"; + portable = "󰏲"; + }; + on-click-right = "${pkgs.pavucontrol}/bin/pavucontrol"; + }; + network = { + format-wifi = "{essid} ({signalStrength}%) 󰖩 "; + format-ethernet = "{ipaddr}/{cidr} 󰈀 "; + format-linked = "{ifname} (No IP) 󰈀 "; + format-disconnected = "Disconnected ⚠ "; + format-alt = "{ifname}: {ipaddr}/{cidr}"; + tooltip = false; + on-click-right = "${config.programs.alacritty.package}/bin/alacritty -e ${pkgs.networkmanager}/bin/nmtui"; + }; + memory = { + interval = 2; + format = "{:2}% 󰍛 "; + }; + cpu = { + interval = 2; + format = "{usage:2}%  "; + tooltip = false; + }; + temperature = { + critical-threshold = 80; + format = "{temperatureC}°C {icon}"; + format-icons = [ "" "" "" "" "" ]; + } // (lib.optionalAttrs (nixosConfig.networking.hostName == "mayushii") { + hwmon-path = "/sys/class/hwmon/hwmon3/temp1_input"; + }); + battery = { + interval = 5; + format = "{capacity}% {icon}"; + format-charging = "{capacity}% "; + format-plugged = "{capacity}% x"; + format-alt = "{time} {icon}"; + format-icons = [ "󰂎" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ]; + states = { + critical = 15; + good = 95; + warning = 30; + }; + }; + clock = { + format = "{:%H:%M %Z}"; + format-alt = "{:%Y-%m-%d (%a)}"; + tooltip-format = "{:%Y %B}\n{calendar}"; + }; + "custom/dnd" = { + exec = pkgs.writeShellScript "waybar-dnd-widget" '' + export PATH=${pkgs.lib.makeBinPath [pkgs.gnugrep]} + if ${makoctl} mode | grep -Fxq 'dnd'; then + echo '{"text": "󰂛", "class": "active"}' + else + echo '{"text": "󰂚", "class": "inactive"}' + fi + ''; + on-click = "/etc/profiles/per-user/jalr/bin/dnd on"; + on-click-right = "/etc/profiles/per-user/jalr/bin/dnd off"; + interval = 10; + return-type = "json"; }; }; - "custom/screencast" = let makoctl = "${pkgs.mako}/bin/makoctl"; in { - exec = pkgs.writeScript "screencast-monitor" /* python */ '' - #!${pkgs.python3}/bin/python3 - import subprocess - import sys - - active_outputs = 0 - - with subprocess.Popen( - ["${pkgs.coreutils}/bin/stdbuf", "-o0", "${nixosConfig.services.pipewire.package}/bin/pw-link", "-m", "-o", "xdg-desktop-portal-wlr"], - stdout=subprocess.PIPE, - text=True, - ) as proc: - for line in proc.stdout: - action = line.split(" ")[0] - if action == "=" or action == "+": - active_outputs += 1 - elif action == "-": - active_outputs -= 1 - else: - print(f"Invalid action {action} (in line {line})", file=sys.stderr) - - if active_outputs > 0: - print("󱒃") - subprocess.run(["${makoctl}", "mode", "-a" "screencast"], stdout=subprocess.DEVNULL) - else: - print() - subprocess.run(["${makoctl}", "mode", "-r" "screencast"], stdout=subprocess.DEVNULL) - - sys.stdout.flush() - ''; - format = "{}"; - tooltip = false; - }; - backlight = { - format = "{percent}% {icon}"; - format-icons = [ "󰛩" "󱩎" "󱩏" "󱩐" "󱩑" "󱩒" "󱩓" "󱩔" "󱩕" "󱩖" "󰛨" ]; - on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl -q set +5%"; - on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl -q set 5%-"; - }; - pulseaudio = { - format = "{volume}% {icon} {format_source}"; - format-bluetooth = "{volume}% {icon}󰗾{format_source}"; - format-bluetooth-muted = "{icon}󰗿{format_source}"; - format-muted = "󰝟 {format_source}"; - format-source = "{volume}% ${thinsp}"; - format-source-muted = "${thinsp}"; - format-icons = { - car = "󰄋 "; - default = [ "󰕿" "󰖀" "󰕾" ]; - hands-free = "󰋎"; - headphone = "󰋋"; - headset = "󰋎"; - phone = "󰏲"; - portable = "󰏲"; - }; - on-click-right = "${pkgs.pavucontrol}/bin/pavucontrol"; - }; - network = { - format-wifi = "{essid} ({signalStrength}%) 󰖩 "; - format-ethernet = "{ipaddr}/{cidr} 󰈀 "; - format-linked = "{ifname} (No IP) 󰈀 "; - format-disconnected = "Disconnected ⚠ "; - format-alt = "{ifname}: {ipaddr}/{cidr}"; - tooltip = false; - on-click-right = "${config.programs.alacritty.package}/bin/alacritty -e ${pkgs.networkmanager}/bin/nmtui"; - }; - memory = { - interval = 2; - format = "{:2}% 󰍛 "; - }; - cpu = { - interval = 2; - format = "{usage:2}%  "; - tooltip = false; - }; - temperature = { - critical-threshold = 80; - format = "{temperatureC}°C {icon}"; - format-icons = [ "" "" "" "" "" ]; - } // (lib.optionalAttrs (nixosConfig.networking.hostName == "mayushii") { - hwmon-path = "/sys/class/hwmon/hwmon3/temp1_input"; - }); - battery = { - interval = 5; - format = "{capacity}% {icon}"; - format-charging = "{capacity}% "; - format-plugged = "{capacity}% x"; - format-alt = "{time} {icon}"; - format-icons = [ "󰂎" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ]; - states = { - critical = 15; - good = 95; - warning = 30; - }; - }; - clock = { - format = "{:%H:%M %Z}"; - format-alt = "{:%Y-%m-%d (%a)}"; - tooltip-format = "{:%Y %B}\n{calendar}"; - }; - }; xdg.configFile."waybar/theme-light.css".text = solarizedColors { base00 = "base3"; @@ -394,6 +413,11 @@ in color: @base01; background-color: @base0B; } + + #custom-dnd.active { + color: @base01; + background-color: @base0B; + } ''; systemd.user.services.waybar = { From 27b349923e7e2f8de072665a84bb1722a46d2798 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 31 Dec 2024 17:46:06 +0100 Subject: [PATCH 390/562] Add illuminanced --- pkgs/default.nix | 1 + pkgs/illuminanced/default.nix | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 pkgs/illuminanced/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index d81563a..5a2fdeb 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -18,6 +18,7 @@ in inherit (inputs.gomod2nix.legacyPackages.${system}) buildGoApplication; }; fpvout = callPackage ./fpvout { }; + illuminanced = callPackage ./illuminanced { }; mute-indicator = callPackage ./mute-indicator { }; myintercom-doorbell = callPackage ./myintercom-doorbell { inherit poetry2nix; diff --git a/pkgs/illuminanced/default.nix b/pkgs/illuminanced/default.nix new file mode 100644 index 0000000..cf27e6f --- /dev/null +++ b/pkgs/illuminanced/default.nix @@ -0,0 +1,18 @@ +{ rustPlatform +, fetchFromGitHub +, pkgs +}: + +rustPlatform.buildRustPackage { + pname = "illuminanced"; + version = "0.1.0"; + + src = fetchFromGitHub { + owner = "mikhail-m1"; + repo = "illuminanced"; + rev = "ee95f97dc1ed197abe3a7c4f3ad45121a077d3eb"; + sha256 = "sha256-dilApolbxgl//2YVbd4ITYVNwfCQQ8LPayqmmW5Jhv8="; + }; + + cargoHash = "sha256-y0Fuzgjz7s9VD/cqMshU1LiytlXskTMZ6dlQsYtAvsk="; +} From 588d69325071a98c954226d28ff85438c1e6ea72 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 18 Mar 2025 01:19:58 +0100 Subject: [PATCH 391/562] Add illuminanced service --- hosts/copper/services/default.nix | 1 + hosts/copper/services/illuminanced.nix | 94 ++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 hosts/copper/services/illuminanced.nix diff --git a/hosts/copper/services/default.nix b/hosts/copper/services/default.nix index e865371..93eb10c 100644 --- a/hosts/copper/services/default.nix +++ b/hosts/copper/services/default.nix @@ -1,5 +1,6 @@ { imports = [ + ./illuminanced.nix ./ntfy.nix ./webdev.nix ]; diff --git a/hosts/copper/services/illuminanced.nix b/hosts/copper/services/illuminanced.nix new file mode 100644 index 0000000..877eaa7 --- /dev/null +++ b/hosts/copper/services/illuminanced.nix @@ -0,0 +1,94 @@ +{ lib, pkgs, ... }: + +let + tomlFormat = pkgs.formats.toml { }; + cfg = { + daemonize = { + log_to = "syslog"; + pid_file = "/run/illuminanced/illuminanced.pid"; + #log_level = "OFF", "ERROR", "WARN", "INFO", "DEBUG", "TRACE" + log_level = "ERROR"; + }; + general = { + check_period_in_seconds = 1; + light_steps = 100; + min_backlight = 20; + step_barrier = 0.1; + max_backlight_file = "/sys/class/backlight/amdgpu_bl1/max_brightness"; + backlight_file = "/sys/class/backlight/amdgpu_bl1/brightness"; + illuminance_file = "/sys/bus/iio/devices/iio:device0/in_illuminance_raw"; + #event_device_mask = "/dev/input/event*"; + #event_device_name = "Asus WMI hotkeys"; + enable_max_brightness_mode = true; + filename_for_sensor_activation = ""; + }; + kalman = { + q = 1; + r = 20; + covariance = 10; + }; + light = { + points_count = 6; + + illuminance_0 = 0; + light_0 = 0; + illuminance_1 = 20; + light_1 = 35; + illuminance_2 = 70; + light_2 = 50; + illuminance_3 = 120; + light_3 = 65; + illuminance_4 = 200; + light_4 = 75; + illuminance_5 = 255; + light_5 = 100; + }; + }; + configFile = tomlFormat.generate "illuminanced.toml" cfg; +in +{ + systemd.services.illuminanced = { + description = "Ambient Light Sensor Daemon"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "exec"; + Restart = "always"; + ExecStart = "${pkgs.illuminanced}/bin/illuminanced -c ${configFile}"; + PIDFile = cfg.daemonize.pid_file; + StandardOutput = "journal"; + BindReadOnlyPaths = [ + "/nix/store" + "/dev/log" + "/run/systemd/journal/socket" + "/run/systemd/journal/stdout" + cfg.general.max_backlight_file + (lib.strings.escape [ ":" ] cfg.general.illuminance_file) + ]; + BindPaths = [ + cfg.general.backlight_file + ]; + CapabilityBoundingSet = null; + IPAddressDeny = "any"; + LockPersonality = true; + PrivateDevices = true; + PrivateTmp = true; + PrivateUsers = true; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "noaccess"; + ProtectSystem = "strict"; + RestrictAddressFamilies = [ ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RootDirectory = "/run/illuminanced"; + RuntimeDirectory = "illuminanced"; + SystemCallArchitectures = "native"; + SystemCallFilter = "@system-service"; + }; + }; +} From d3a3ae6ec118c9a2f32a8b4405b9c70d5b21ee88 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 18 Mar 2025 09:48:59 +0100 Subject: [PATCH 392/562] Rename option --- modules/avahi.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/avahi.nix b/modules/avahi.nix index f97e514..7111a14 100644 --- a/modules/avahi.nix +++ b/modules/avahi.nix @@ -2,5 +2,5 @@ lib.mkIf config.jalr.gui.enable { services.avahi.enable = true; - services.avahi.nssmdns = true; + services.avahi.nssmdns4 = true; } From 1d1829d0ed1e298a97050daaa55ecb1bf8dea9dc Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 19 Mar 2025 17:15:22 +0100 Subject: [PATCH 393/562] Remove vim-puppet --- users/jalr/modules/neovim.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index d1f585b..1e52996 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -113,7 +113,6 @@ in vim-gitgutter vim-indent-guides vim-nix - vim-puppet vim-terraform vim-typoscript ( From ef464facd6fcda874dea69ed39eaf20242161190 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 19 Mar 2025 17:54:05 +0100 Subject: [PATCH 394/562] Move colorscheme to plugin config --- users/jalr/modules/neovim.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index 1e52996..5fcf689 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -9,8 +9,6 @@ in vimAlias = true; defaultEditor = true; extraConfig = '' - colorscheme NeoSolarized - """"""""""""""""" " Swap and undo " set noswapfile @@ -81,7 +79,12 @@ in #Valloric/MatchTagAlways #frankier/neovim-colors-solarized-truecolor-only #nvie/vim-rst-tables - NeoSolarized + { + plugin = NeoSolarized; + config = '' + colorscheme NeoSolarized + ''; + } deoplete-nvim editorconfig-vim jinja-vim From 30188e02d0265ec88f9e2402d88285f1620816f4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 19 Mar 2025 17:55:28 +0100 Subject: [PATCH 395/562] Remove commented plugins --- users/jalr/modules/neovim.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim.nix index 5fcf689..f5675ed 100644 --- a/users/jalr/modules/neovim.nix +++ b/users/jalr/modules/neovim.nix @@ -76,9 +76,6 @@ in ] ++ # nix-env -f '' -qaP -A vimPlugins (with pkgs.vimPlugins; [ - #Valloric/MatchTagAlways - #frankier/neovim-colors-solarized-truecolor-only - #nvie/vim-rst-tables { plugin = NeoSolarized; config = '' From c5291bbf74f075501faa68fd4aa292b01ce8b6b8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 19 Mar 2025 18:07:16 +0100 Subject: [PATCH 396/562] Move neovim to directory --- users/jalr/modules/default.nix | 2 +- users/jalr/modules/{neovim.nix => neovim/default.nix} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename users/jalr/modules/{neovim.nix => neovim/default.nix} (100%) diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index b72ee3d..2d910b0 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -22,7 +22,7 @@ ./mute-indicator.nix ./mycli ./neo.nix - ./neovim.nix + ./neovim ./nix-index.nix ./obs-studio ./openscad.nix diff --git a/users/jalr/modules/neovim.nix b/users/jalr/modules/neovim/default.nix similarity index 100% rename from users/jalr/modules/neovim.nix rename to users/jalr/modules/neovim/default.nix From 1e33e70f5fb6e3051c91dfe249f065bf507c7bdf Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Apr 2025 10:18:57 +0200 Subject: [PATCH 397/562] Add ultisnips and telescope-ultisnips-nvim --- users/jalr/modules/neovim/default.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/users/jalr/modules/neovim/default.nix b/users/jalr/modules/neovim/default.nix index f5675ed..8c9c53d 100644 --- a/users/jalr/modules/neovim/default.nix +++ b/users/jalr/modules/neovim/default.nix @@ -96,6 +96,13 @@ in vim.keymap.set('n', '', 'Telescope buffers') ''; } + { + plugin = telescope-ultisnips-nvim; + type = "lua"; + config = '' + require('telescope').load_extension('ultisnips') + ''; + } nvim-treesitter-parsers.twig { plugin = nvim-treesitter; @@ -104,6 +111,13 @@ in require'nvim-treesitter.configs'.setup { highlight = { enable = true, }, } ''; } + { + plugin = ultisnips; + config = ''; + let g:UltiSnipsSnippetDirectories = [ "UltiSnips" ] + inoremap :Telescope ultisnips + ''; + } { plugin = vim-fluid; config = '' From e8a41265302186ec4b1b926575eb330ae747fab1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 28 Mar 2025 12:10:43 +0100 Subject: [PATCH 398/562] Improve mycli color scheme --- users/jalr/modules/mycli/default.nix | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/users/jalr/modules/mycli/default.nix b/users/jalr/modules/mycli/default.nix index f688679..6495a48 100644 --- a/users/jalr/modules/mycli/default.nix +++ b/users/jalr/modules/mycli/default.nix @@ -107,27 +107,34 @@ let colors = { common = { + "output.header" = "bold ${solarized.green.hex}"; "sql.datatype" = "nobold ${solarized.yellow.hex}"; - "sql.function" = "bg:#FF0000 #0000FF"; - "sql.keyword" = "${solarized.green.hex}"; + "sql.function" = "bold ${solarized.violet.hex}"; + "sql.keyword" = solarized.green.hex; "sql.literal" = solarized.green.hex; "sql.number" = solarized.cyan.hex; "sql.string" = solarized.cyan.hex; + "sql.variable" = solarized.red.hex; + "sql.quoted-schema-object" = solarized.blue.hex; }; light = { "prompt" = "bg:${solarized.blue.hex} ${solarized.base02.hex}"; "selected" = "bg:${solarized.base2.hex} ${solarized.base00.hex}"; + "output.odd-row" = "${solarized.base01.hex}"; + "output.even-row" = "${solarized.base01.hex} bg:${solarized.base2.hex}"; "sql.comment" = "italic ${solarized.base1.hex}"; - "sql.operator" = "${solarized.base02.hex}"; - "sql.punctuation" = "${solarized.base01.hex}"; + "sql.operator" = "bold ${solarized.base02.hex}"; + "sql.punctuation" = "bold ${solarized.base01.hex}"; "sql.symbol" = "${solarized.base01.hex}"; }; dark = { "prompt" = "bg:${solarized.blue.hex} ${solarized.base2.hex}"; "selected" = "bg:${solarized.base02.hex} ${solarized.base0.hex}"; + "output.odd-row" = "${solarized.base1.hex}"; + "output.even-row" = "${solarized.base1.hex} bg:${solarized.base02.hex}"; "sql.comment" = "italic ${solarized.base01.hex}"; - "sql.operator" = "${solarized.base2.hex}"; - "sql.punctuation" = "${solarized.base1.hex}"; + "sql.operator" = "bold ${solarized.base2.hex}"; + "sql.punctuation" = "bold ${solarized.base1.hex}"; "sql.symbol" = "${solarized.base1.hex}"; }; }; From 2232ae4aca6335449e9cd503adfd1382ea5b8043 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 28 Mar 2025 12:10:59 +0100 Subject: [PATCH 399/562] Use `pipe` output format as it produces markdown tables and I often copy&paste output into a markdown-featured messenger :) --- users/jalr/modules/mycli/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/users/jalr/modules/mycli/default.nix b/users/jalr/modules/mycli/default.nix index 6495a48..758eb36 100644 --- a/users/jalr/modules/mycli/default.nix +++ b/users/jalr/modules/mycli/default.nix @@ -43,7 +43,7 @@ let # psql, plain, simple, grid, fancy_grid, pipe, orgtbl, rst, mediawiki, html, # latex, latex_booktabs, textile, moinmoin, jira, vertical, tsv, csv. # Recommended: ascii - table_format = "ascii"; + table_format = "pipe"; # Syntax coloring style. Possible values (many support the "-dark" suffix): # manni, igor, xcode, vim, autumn, vs, rrt, native, perldoc, borland, tango, emacs, From eabbabc417f334627af556a1d6dff40faf9bdc4e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 28 Mar 2025 14:51:01 +0100 Subject: [PATCH 400/562] Add tig --- users/jalr/modules/git.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/modules/git.nix b/users/jalr/modules/git.nix index 83e4b79..da57290 100644 --- a/users/jalr/modules/git.nix +++ b/users/jalr/modules/git.nix @@ -199,5 +199,6 @@ in }; home.packages = with pkgs; [ git-crypt + tig ]; } From 49c95ffc6a91ce9365e98361152bfc43e2a4c19d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 4 Apr 2025 18:38:13 +0200 Subject: [PATCH 401/562] Add debug module --- modules/debug.nix | 16 ++++++++++++++++ modules/default.nix | 1 + 2 files changed, 17 insertions(+) create mode 100644 modules/debug.nix diff --git a/modules/debug.nix b/modules/debug.nix new file mode 100644 index 0000000..9cc70b5 --- /dev/null +++ b/modules/debug.nix @@ -0,0 +1,16 @@ +{ config, lib, ... }: +let + cfg = config.jalr.debug; +in +{ + options.jalr.debug = { + enable = lib.mkEnableOption "debugging helpers, DO NOT USE IN PRODUCTION!"; + }; + + config = lib.mkIf cfg.enable { + services.getty.autologinUser = "root"; + boot.initrd.systemd.emergencyAccess = true; + systemd.enableEmergencyMode = true; + boot.kernelParams = [ "systemd.setenv=SYSTEMD_SULOGIN_FORCE=1" ]; + }; +} diff --git a/modules/default.nix b/modules/default.nix index c009cda..908dfd9 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -21,6 +21,7 @@ ./aws.nix ./bluetooth.nix ./bootloader + ./debug.nix ./dji-goggles.nix ./dns.nix ./fish.nix From 239fbf70e0e157f233fb63feb9c9c6aa134e6937 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 4 Apr 2025 16:43:44 +0200 Subject: [PATCH 402/562] Use file to unlock LUKS from usb media --- hosts/iron/configuration.nix | 57 +++++++++-------- justfile | 10 +-- modules/default.nix | 1 + modules/luksusb.nix | 116 +++++++++++++++++++++++++++++++++++ 4 files changed, 154 insertions(+), 30 deletions(-) create mode 100644 modules/luksusb.nix diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index e52a1d1..f130428 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -1,13 +1,13 @@ { inputs, config, pkgs, lib, ... }: let interfaces = import ./interfaces.nix; - disks = [ - "ata-Samsung_SSD_870_QVO_8TB_S5SSNG0R103837K" - "ata-Samsung_SSD_870_QVO_8TB_S5SSNG0R103838A" - "ata-Samsung_SSD_870_QVO_8TB_S5SSNG0R104926N" - "ata-Samsung_SSD_870_QVO_8TB_S5SSNG0R104934H" - "ata-Samsung_SSD_870_QVO_8TB_S5SSNJ0W206517Y" - ]; + disks = { + slot1 = "ata-Samsung_SSD_870_QVO_8TB_S5SSNG0R103837K"; + slot2 = "ata-Samsung_SSD_870_QVO_8TB_S5SSNG0R103838A"; + slot3 = "ata-Samsung_SSD_870_QVO_8TB_S5SSNG0R104926N"; + slot4 = "ata-Samsung_SSD_870_QVO_8TB_S5SSNG0R104934H"; + slot5 = "ata-Samsung_SSD_870_QVO_8TB_S5SSNJ0W206517Y"; + }; removableEfi = true; devNodes = "/dev/disk/by-id/"; datasets = { @@ -28,7 +28,7 @@ let luksDev = "-part3"; biosBoot = "-part4"; }; - efiSystemPartitions = (map (diskName: diskName + partitionScheme.efiBoot) disks); + efiSystemPartitions = (map (diskName: diskName + partitionScheme.efiBoot) (lib.attrValues disks)); in with lib; { imports = [ @@ -116,6 +116,19 @@ with lib; { ia_pd 1/::/64 ${interfaces.lan}/0/64 ''; + jalr.luksUsbUnlock = { + enable = true; + devices = builtins.mapAttrs + (name: dev: + { + keyPath = "iron.key"; + usbDevice = "by-label/RAM_USB"; + waitForDevice = 10; + } + ) + disks; + }; + boot = { kernel.sysctl = { "net.ipv6.conf.all.forwarding" = 1; @@ -130,20 +143,14 @@ with lib; { "xhci_pci" ]; systemd.enable = true; - luks.devices = lib.listToAttrs ( - map - (dev: { - name = "LUKS-${dev}${partitionScheme.luksDev}"; - value = { - device = "${devNodes}${dev}${partitionScheme.luksDev}"; - allowDiscards = true; - keyFileSize = 4096; - keyFile = "/dev/disk/by-id/usb-jalr_USB_RAM_disk_prototype-01-0:0"; - keyFileTimeout = 60; - }; - }) - disks - ); + luks.devices = builtins.mapAttrs + (name: dev: + { + device = "${devNodes}${dev}${partitionScheme.luksDev}"; + allowDiscards = true; + } + ) + disks; }; supportedFilesystems = [ "zfs" ]; zfs = { @@ -153,13 +160,13 @@ with lib; { loader = { efi = { canTouchEfiVariables = (if removableEfi then false else true); - efiSysMountPoint = ("/boot/efis/" + (head disks) + efiSysMountPoint = ("/boot/efis/" + (head (lib.attrValues disks)) + partitionScheme.efiBoot); }; generationsDir.copyKernels = true; grub = { enable = true; - devices = (map (diskName: devNodes + diskName) disks); + devices = (map (diskName: devNodes + diskName) (attrValues disks)); efiInstallAsRemovable = removableEfi; copyKernels = true; efiSupport = true; @@ -173,7 +180,7 @@ with lib; { (diskName: '' ${pkgs.coreutils-full}/bin/cp -r ${config.boot.loader.efi.efiSysMountPoint}/EFI /boot/efis/${diskName}${partitionScheme.efiBoot} '') - (tail disks))); + (tail (attrValues disks)))); }; }; kernelParams = [ diff --git a/justfile b/justfile index 6186025..d1d2a9a 100644 --- a/justfile +++ b/justfile @@ -1,4 +1,5 @@ -usb_ram_disk := "/dev/disk/by-id/usb-jalr_USB_RAM_disk_prototype-01-0:0" +usb_ram_disk := "/dev/disk/by-label/RAM_USB" +usb_ram_mountpoint := shell("findmnt -n -o TARGET $1 || true", usb_ram_disk) boot: nixos-rebuild boot --flake . --use-remote-sudo @@ -26,9 +27,8 @@ repl: " luks-pass host: - @if [ -b "{{usb_ram_disk}}" ]; then \ - gpg -d hosts/{{host}}/luks-passfile.gpg | sudo dd of={{usb_ram_disk}}; \ + @if [ -d "{{usb_ram_mountpoint}}" ]; then \ + gpg -d hosts/{{host}}/luks-passfile.gpg > "{{usb_ram_mountpoint}}/{{host}}.key"; \ else \ - echo "{{usb_ram_disk}} is not a block device" >&2; \ + echo "Mount point not found. Is the usb device plugged and mounted?" >&2; \ fi - diff --git a/modules/default.nix b/modules/default.nix index 908dfd9..ff6f458 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -32,6 +32,7 @@ ./kvm-switch-enable-screen.nix ./libvirt.nix ./localization.nix + ./luksusb.nix ./mailserver ./matrix ./mobile-network.nix diff --git a/modules/luksusb.nix b/modules/luksusb.nix new file mode 100644 index 0000000..1edb442 --- /dev/null +++ b/modules/luksusb.nix @@ -0,0 +1,116 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.jalr.luksUsbUnlock; +in +{ + options.jalr.luksUsbUnlock = with lib; with lib.types; { + enable = mkEnableOption "unlock LUKS volumes with a USB device on boot"; + devices = mkOption { + default = { }; + example = { + cryptroot = { + keyPath = "/path/to/the/key"; + usbDevice = "by-label/MY_USB"; + }; + }; + type = types.attrsOf (types.submodule { + options = { + keyPath = mkOption { + example = "/mykey.key"; + description = mdDoc '' + Path to the key file inside the USB device's filesystem. + `/` is relative to the device's filesystem root. + ''; + type = types.str; + }; + + usbDevice = mkOption { + example = "by-label/BOOTKEY"; + description = mdDoc '' + Path to the USB device that contains the keys. (Path relative to `/dev/disk/`) + ''; + type = types.str; + }; + + waitForDevice = mkOption { + default = 5; + example = 10; + description = mdDoc '' + How many seconds to wait for the USB device to be detected by the + kernel. + ''; + type = types.ints.unsigned; + }; + }; + }); + }; + }; + config = lib.mkIf cfg.enable + ( + let + makeUsbDevPath = usbDevice: "/dev/disk/" + usbDevice; + makeMountPath = usbDevice: "/key/" + (builtins.hashString "md5" usbDevice); + usbFsType = "vfat"; + + mapAttrsNameValue = f: set: + lib.listToAttrs (map f (lib.attrsToList set)); + in + { + boot.initrd.kernelModules = [ "uas" "usbcore" "usb_storage" "vfat" "nls_cp437" "nls_iso8859_1" ]; + + boot.initrd.systemd.services = + let + makeService = name: { keyPath, usbDevice, waitForDevice }: + let + usbDevPath = makeUsbDevPath usbDevice; + usbMountPath = makeMountPath usbDevice; + in + { + description = "Mount ${name} key"; + wantedBy = [ "cryptsetup.target" ]; + before = [ "systemd-cryptsetup@${name}.service" ]; + after = [ "systemd-modules-load.service" ]; + unitConfig.DefaultDependencies = "no"; + serviceConfig.Type = "oneshot"; + + script = '' + if awk -v mountpoint="${usbMountPath}" '$2==mountpoint {f=1} END {exit !f}' /proc/mounts; then + exit 0 + fi + + attempts=0 + while [ ! -e ${lib.escapeShellArg usbDevPath} ]; do + sleep 1 + if [ $attempts -ge ${toString waitForDevice} ]; then + break; + fi + attempts=$((attempts+1)) + done + + if [ -e ${lib.escapeShellArg usbDevPath} ]; then + mkdir -m0500 -p ${lib.escapeShellArg usbMountPath} + mount -n -t ${lib.escapeShellArg usbFsType} -o ro,fmask=0137,dmask=0027 ${lib.escapeShellArg usbDevPath} ${lib.escapeShellArg usbMountPath} + fi + ''; + }; + in + mapAttrsNameValue + ({ name, value }: { + name = "luksusb-${name}"; + value = makeService name value; + }) + cfg.devices; + + boot.initrd.luks.devices = builtins.mapAttrs + (name: { keyPath, usbDevice, ... }: + let + usbMountPath = makeMountPath usbDevice; + in + { + keyFile = "${usbMountPath}/${keyPath}"; + keyFileTimeout = 1; + }) + cfg.devices; + } + ); +} From c98fdbabb21c56323d8ca0243726d185b927940f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 7 Apr 2025 22:06:35 +0200 Subject: [PATCH 403/562] Enable fstrim service --- hosts/copper/configuration.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index f7c224b..ed1d01a 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -8,6 +8,8 @@ ./services ]; + services.fstrim.enable = true; + networking = { hostName = "copper"; extraHosts = lib.concatStringsSep "\n" ( From 20b548c73dd4bdf8c535502a6d922c5980969337 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 7 Apr 2025 22:05:18 +0200 Subject: [PATCH 404/562] Change btrfs compression mount options --- hosts/copper/disko.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hosts/copper/disko.nix b/hosts/copper/disko.nix index af624e2..1d60f7f 100644 --- a/hosts/copper/disko.nix +++ b/hosts/copper/disko.nix @@ -32,15 +32,15 @@ subvolumes = { "/root" = { mountpoint = "/"; - mountOptions = [ "compress=zstd" "noatime" ]; + mountOptions = [ "compress-force=zstd:1" "noatime" ]; }; "/home" = { mountpoint = "/home"; - mountOptions = [ "compress=zstd" "noatime" "nodev" "nosuid" ]; + mountOptions = [ "compress-force=zstd:1" "noatime" "nodev" "nosuid" ]; }; "/nix" = { mountpoint = "/nix"; - mountOptions = [ "compress=zstd" "noatime" "noatime" "nodev" ]; + mountOptions = [ "compress-force=zstd:1" "noatime" "noatime" "nodev" ]; }; }; }; From 5e8e4671cd58a416e45597fb81d32a286f7618a2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 7 Apr 2025 22:05:47 +0200 Subject: [PATCH 405/562] Enable btrfs snapshots for /home --- hosts/copper/configuration.nix | 21 +++++++++++++++++++++ hosts/copper/disko.nix | 3 +++ 2 files changed, 24 insertions(+) diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index ed1d01a..f69f1ba 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -32,6 +32,27 @@ priority = 1; }; + services.snapper.configs = { + home = { + SUBVOLUME = "/home"; + ALLOW_USERS = [ "jalr" ]; + TIMELINE_CREATE = true; + TIMELINE_CLEANUP = true; + TIMELINE_LIMIT_HOURLY = 12; + TIMELINE_LIMIT_DAILY = 7; + TIMELINE_LIMIT_WEEKLY = 4; + TIMELINE_LIMIT_MONTHLY = 3; + TIMELINE_LIMIT_YEARLY = 0; + BACKGROUND_COMPARISON = "yes"; + NUMBER_CLEANUP = "no"; + NUMBER_MIN_AGE = "1800"; + NUMBER_LIMIT = "100"; + NUMBER_LIMIT_IMPORTANT = "10"; + EMPTY_PRE_POST_CLEANUP = "yes"; + EMPTY_PRE_POST_MIN_AGE = "1800"; + }; + }; + jalr = { bootloader = "lanzaboote"; bluetooth.enable = true; diff --git a/hosts/copper/disko.nix b/hosts/copper/disko.nix index 1d60f7f..bdbbf17 100644 --- a/hosts/copper/disko.nix +++ b/hosts/copper/disko.nix @@ -38,6 +38,9 @@ mountpoint = "/home"; mountOptions = [ "compress-force=zstd:1" "noatime" "nodev" "nosuid" ]; }; + "/home/.snapshots" = { + mountOptions = [ "compress-force=zstd:1" "noatime" "nodev" "nosuid" ]; + }; "/nix" = { mountpoint = "/nix"; mountOptions = [ "compress-force=zstd:1" "noatime" "noatime" "nodev" ]; From d994258dc5357e0e9504c50516c90381b10ec7ae Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 7 Apr 2025 23:23:53 +0200 Subject: [PATCH 406/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/18d0a984cc2bc82cf61df19523a34ad463aa7f54?narHash=sha256-KYOATYEwaKysL3HdHdS5kbQMXvzS4iPJzJrML%2B3TKAo%3D' (2025-01-29) → 'github:nix-community/disko/329d3d7e8bc63dd30c39e14e6076db590a6eabe6?narHash=sha256-ViE7NoFWytYO2uJONTAX35eGsvTYXNHjWALeHAg8OQY%3D' (2025-04-02) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/514283ec89c39ad0079ff2f3b1437404e4cba608?narHash=sha256-tPsqU00FhgdFr0JiQUiBMgPVbl1jbPCY5gbFiJycL3I%3D' (2024-12-08) → 'github:nix-community/gomod2nix/8f3534eb8f6c5c3fce799376dc3b91bae6b11884?narHash=sha256-jMy1XqXqD0/tJprEbUmKilTkvbDY/C0ZGSsJJH4TNCE%3D' (2025-03-17) • Updated input 'home-manager': 'github:nix-community/home-manager/bd65bc3cde04c16755955630b344bc9e35272c56?narHash=sha256-dinzAqCjenWDxuy%2BMqUQq0I4zUSfaCvN9rzuCmgMZJY%3D' (2025-01-08) → 'github:nix-community/home-manager/a9f8b3db211b4609ddd83683f9db89796c7f6ac6?narHash=sha256-2lDQBOmlz9ggPxcS7/GvcVdzXMIiT%2BPpMao6FbLJSr0%3D' (2025-04-04) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/9364dc02281ce2d37a1f55b6e51f7c0f65a75f17?narHash=sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg%3D' (2025-01-21) → 'github:cachix/git-hooks.nix/dcf5072734cb576d2b0c59b2ac44f5050b5eac82?narHash=sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco%3D' (2025-03-22) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/dfad538f751a5aa5d4436d9781ab27a6128ec9d4?narHash=sha256-ZEbOJ9iT72iwqXsiEMbEa8wWjyFvRA9Ugx8utmYbpz4%3D' (2025-01-24) → 'github:nixos/nixos-hardware/de6fc5551121c59c01e2a3d45b277a6d05077bc4?narHash=sha256-b/exDDQSLmENZZgbAEI3qi9yHkuXAXCPbormD8CSJXo%3D' (2025-03-31) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/bff401190a036ff01401d57f3b1a30b311cfdec9?narHash=sha256-l3Tn6TREbT%2BSQNWhol5EIjrdt60MLTKRJobacesN/0w%3D' (2025-01-31) → 'github:nixos/nixpkgs/b6776fe38f7fb784cd7a4a64fb88a4af660b6749?narHash=sha256-E74YMZ/88tuiyPxrnkd43sNL3hhtOhq7PbTR97FynSg%3D' (2025-04-07) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/2b5331b146af2487829bfba45d01cd6904f4cccd?narHash=sha256-k/tJ6wBMWjrdOaQ138AT6Wa/KLIeFOTn4SXZTnYqtm0%3D' (2025-01-31) → 'github:NixOS/nixpkgs/29bdac6ae99f07eeb5f44b1f0499a8bbc86d508b?narHash=sha256-WYm6KLZw5JhrT48h6Vkr2H4eh2j5/nDgN3d0Hj6vd4k%3D' (2025-04-07) • Updated input 'nur': 'github:nix-community/NUR/df289edee9290b9adc0a8f3aa20c702f312f3658?narHash=sha256-meglyu9QhgFeTFp0AQdwYAyUvQ%2B4fRDgVH7PAS4jc7A%3D' (2025-01-31) → 'github:nix-community/NUR/6123b345b32b960842a53c6c330e9575639c5f98?narHash=sha256-eLQt1nwY5TkWltZMhncTFnVIUqlJCNMU8iDOVS0Kpl4%3D' (2025-04-07) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/9d3ae807ebd2981d593cddd0080856873139aa40?narHash=sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9%2BWC4%3D' (2025-01-29) → 'github:nixos/nixpkgs/42a1c966be226125b48c384171c44c651c236c22?narHash=sha256-rpqepOZ8Eo1zg%2BKJeWoq1HAOgoMCDloqv5r2EAa9TSA%3D' (2025-04-05) • Updated input 'poetry2nix': 'github:nix-community/poetry2nix/75d0515332b7ca269f6d7abfd2c44c47a7cbca7b?narHash=sha256-eiCqmKl0BIRiYk5/ZhZozwn4/7Km9CWTbc15Cv%2BVX5k%3D' (2025-01-14) → 'github:nix-community/poetry2nix/ce2369db77f45688172384bbeb962bc6c2ea6f94?narHash=sha256-cX98bUuKuihOaRp8dNV1Mq7u6/CQZWTPth2IJPATBXc%3D' (2025-04-03) • Updated input 'sops-nix': 'github:Mic92/sops-nix/4c1251904d8a08c86ac6bc0d72cc09975e89aef7?narHash=sha256-wkwYJc8cKmmQWUloyS9KwttBnja2ONRuJQDEsmef320%3D' (2025-01-31) → 'github:Mic92/sops-nix/523f58a4faff6c67f5f685bed33a7721e984c304?narHash=sha256-zr2jmWeWyhCD8WmO2aWov2g0WPPuZfcJDKzMJZYGq3Y%3D' (2025-04-06) --- flake.lock | 66 +++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/flake.lock b/flake.lock index 77132b3..25a3022 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1738148035, - "narHash": "sha256-KYOATYEwaKysL3HdHdS5kbQMXvzS4iPJzJrML+3TKAo=", + "lastModified": 1743598667, + "narHash": "sha256-ViE7NoFWytYO2uJONTAX35eGsvTYXNHjWALeHAg8OQY=", "owner": "nix-community", "repo": "disko", - "rev": "18d0a984cc2bc82cf61df19523a34ad463aa7f54", + "rev": "329d3d7e8bc63dd30c39e14e6076db590a6eabe6", "type": "github" }, "original": { @@ -204,11 +204,11 @@ ] }, "locked": { - "lastModified": 1733668782, - "narHash": "sha256-tPsqU00FhgdFr0JiQUiBMgPVbl1jbPCY5gbFiJycL3I=", + "lastModified": 1742209644, + "narHash": "sha256-jMy1XqXqD0/tJprEbUmKilTkvbDY/C0ZGSsJJH4TNCE=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "514283ec89c39ad0079ff2f3b1437404e4cba608", + "rev": "8f3534eb8f6c5c3fce799376dc3b91bae6b11884", "type": "github" }, "original": { @@ -224,11 +224,11 @@ ] }, "locked": { - "lastModified": 1736373539, - "narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=", + "lastModified": 1743808813, + "narHash": "sha256-2lDQBOmlz9ggPxcS7/GvcVdzXMIiT+PpMao6FbLJSr0=", "owner": "nix-community", "repo": "home-manager", - "rev": "bd65bc3cde04c16755955630b344bc9e35272c56", + "rev": "a9f8b3db211b4609ddd83683f9db89796c7f6ac6", "type": "github" }, "original": { @@ -318,11 +318,11 @@ ] }, "locked": { - "lastModified": 1737465171, - "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", + "lastModified": 1742649964, + "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", "type": "github" }, "original": { @@ -334,11 +334,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1737751639, - "narHash": "sha256-ZEbOJ9iT72iwqXsiEMbEa8wWjyFvRA9Ugx8utmYbpz4=", + "lastModified": 1743420942, + "narHash": "sha256-b/exDDQSLmENZZgbAEI3qi9yHkuXAXCPbormD8CSJXo=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "dfad538f751a5aa5d4436d9781ab27a6128ec9d4", + "rev": "de6fc5551121c59c01e2a3d45b277a6d05077bc4", "type": "github" }, "original": { @@ -350,11 +350,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1738329486, - "narHash": "sha256-l3Tn6TREbT+SQNWhol5EIjrdt60MLTKRJobacesN/0w=", + "lastModified": 1744059796, + "narHash": "sha256-E74YMZ/88tuiyPxrnkd43sNL3hhtOhq7PbTR97FynSg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "bff401190a036ff01401d57f3b1a30b311cfdec9", + "rev": "b6776fe38f7fb784cd7a4a64fb88a4af660b6749", "type": "github" }, "original": { @@ -382,11 +382,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1738329037, - "narHash": "sha256-k/tJ6wBMWjrdOaQ138AT6Wa/KLIeFOTn4SXZTnYqtm0=", + "lastModified": 1744060879, + "narHash": "sha256-WYm6KLZw5JhrT48h6Vkr2H4eh2j5/nDgN3d0Hj6vd4k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2b5331b146af2487829bfba45d01cd6904f4cccd", + "rev": "29bdac6ae99f07eeb5f44b1f0499a8bbc86d508b", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1738142207, - "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=", + "lastModified": 1743827369, + "narHash": "sha256-rpqepOZ8Eo1zg+KJeWoq1HAOgoMCDloqv5r2EAa9TSA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9d3ae807ebd2981d593cddd0080856873139aa40", + "rev": "42a1c966be226125b48c384171c44c651c236c22", "type": "github" }, "original": { @@ -419,11 +419,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1738319198, - "narHash": "sha256-meglyu9QhgFeTFp0AQdwYAyUvQ+4fRDgVH7PAS4jc7A=", + "lastModified": 1744057897, + "narHash": "sha256-eLQt1nwY5TkWltZMhncTFnVIUqlJCNMU8iDOVS0Kpl4=", "owner": "nix-community", "repo": "NUR", - "rev": "df289edee9290b9adc0a8f3aa20c702f312f3658", + "rev": "6123b345b32b960842a53c6c330e9575639c5f98", "type": "github" }, "original": { @@ -445,11 +445,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1736884309, - "narHash": "sha256-eiCqmKl0BIRiYk5/ZhZozwn4/7Km9CWTbc15Cv+VX5k=", + "lastModified": 1743690424, + "narHash": "sha256-cX98bUuKuihOaRp8dNV1Mq7u6/CQZWTPth2IJPATBXc=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "75d0515332b7ca269f6d7abfd2c44c47a7cbca7b", + "rev": "ce2369db77f45688172384bbeb962bc6c2ea6f94", "type": "github" }, "original": { @@ -534,11 +534,11 @@ ] }, "locked": { - "lastModified": 1738291974, - "narHash": "sha256-wkwYJc8cKmmQWUloyS9KwttBnja2ONRuJQDEsmef320=", + "lastModified": 1743910657, + "narHash": "sha256-zr2jmWeWyhCD8WmO2aWov2g0WPPuZfcJDKzMJZYGq3Y=", "owner": "Mic92", "repo": "sops-nix", - "rev": "4c1251904d8a08c86ac6bc0d72cc09975e89aef7", + "rev": "523f58a4faff6c67f5f685bed33a7721e984c304", "type": "github" }, "original": { From 7c87ce787671c4d32db901e56e182d894c05a6ba Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 7 Apr 2025 23:27:30 +0200 Subject: [PATCH 407/562] Add ratelimit --- modules/avahi.nix | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/modules/avahi.nix b/modules/avahi.nix index 7111a14..d0653bf 100644 --- a/modules/avahi.nix +++ b/modules/avahi.nix @@ -1,6 +1,15 @@ { config, lib, ... }: lib.mkIf config.jalr.gui.enable { - services.avahi.enable = true; - services.avahi.nssmdns4 = true; + services.avahi = { + enable = true; + nssmdns4 = true; + extraConfig = '' + [server] + ratelimit-interval-usec=500000 + ratelimit-burst=500 + [wide-area] + enable-wide-area=no + ''; + }; } From 7d68ccab85bf1e0755afc44b6b27c3a2f5fa8a6f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 7 Apr 2025 23:29:02 +0200 Subject: [PATCH 408/562] Set download-buffer-size --- modules/nix.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/nix.nix b/modules/nix.nix index 0ae40e8..3135b37 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -24,6 +24,8 @@ # Avoid disk full issues max-free = lib.mkDefault (3000 * 1024 * 1024); min-free = lib.mkDefault (512 * 1024 * 10); + + download-buffer-size = lib.mkDefault (512 * 1024 * 1024); }; gc = { automatic = true; From 464a1847a67f4018c5548a6ef0b7b4f7918363fa Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 8 Apr 2025 21:56:13 +0200 Subject: [PATCH 409/562] Remove smtpd_tls_dh1024_param_file support for parameter "smtpd_tls_dh1024_param_file" will be removed --- modules/mailserver/postfix.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/mailserver/postfix.nix b/modules/mailserver/postfix.nix index 62b7eaa..15d1d72 100644 --- a/modules/mailserver/postfix.nix +++ b/modules/mailserver/postfix.nix @@ -35,7 +35,6 @@ let cfg.cleanHeaders); in lib.mkIf cfg.enable { - security.dhparams.params.postfix = { }; services.postfix = { enable = true; @@ -105,8 +104,6 @@ lib.mkIf cfg.enable { "DHE-RSA-AES256-GCM-SHA384" ]; tls_preempt_cipherlist = "no"; - - smtpd_tls_dh1024_param_file = config.security.dhparams.params.postfix.path; }; # plain/STARTTLS (forced with smtpd_tls_security_level) From dcb50b0970268ef9c3b43a2a710b1f1eee424f38 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Apr 2025 03:26:34 +0200 Subject: [PATCH 410/562] Reinstall magnesium --- .sops.yaml | 2 +- flake.lock | 16 +++ flake.nix | 6 +- hosts/default.nix | 6 +- hosts/magnesium/configuration.nix | 58 +++-------- hosts/magnesium/hardware-configuration.nix | 57 ----------- hosts/magnesium/persistence.nix | 37 +++++++ hosts/magnesium/secrets.yaml | 24 ++--- modules/providers/hetzner-cloud.nix | 108 +++++++++++++++++++++ 9 files changed, 194 insertions(+), 120 deletions(-) delete mode 100644 hosts/magnesium/hardware-configuration.nix create mode 100644 hosts/magnesium/persistence.nix create mode 100644 modules/providers/hetzner-cloud.nix diff --git a/.sops.yaml b/.sops.yaml index a331d98..44b3cd9 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -4,7 +4,7 @@ keys: - &host_aluminium age1ne08hny30vrkejqhh7dcx4ql6dmkx6jw9dqkf3cz7mzvt53njy0qh59w44 - &host_hafnium age1ahnfjspcpwxxk7getcxkj3fypwt37rr6p3xsmp8n2tqqqz8jtg7q2am0et - &host_iron age1hx7fdu4mcha7kkxe7yevtvs6xgzgaafgenm3drhvr609wlj94sgqm497je - - &host_magnesium age1swv42gad884z2v75kateem6k2za6ltkq6wu90ewqp6dp7gxprawslwz0w0 + - &host_magnesium age19qkgfaq08kmyxghet48dq4gxwjuy9zpvuyxys9jkmcqa5634537qlxjcd8 - &host_weinturm_pretix_prod age1djjxl3lcvzs85nj0met6w8ujsz8pvr6ngmmdwlxfh0k9d5lkrpdqlzzehf - &host_copper age1rrut5ntrkqmvttvmpa5jcmjhr2pfpyaqgu9dmtx6v07lgjxx5ppsl7e5v3 creation_rules: diff --git a/flake.lock b/flake.lock index 25a3022..bdf190f 100644 --- a/flake.lock +++ b/flake.lock @@ -238,6 +238,21 @@ "type": "github" } }, + "impermanence": { + "locked": { + "lastModified": 1737831083, + "narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=", + "owner": "nix-community", + "repo": "impermanence", + "rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "impermanence", + "type": "github" + } + }, "krops": { "inputs": { "flake-utils": [ @@ -491,6 +506,7 @@ "flake-utils": "flake-utils", "gomod2nix": "gomod2nix", "home-manager": "home-manager", + "impermanence": "impermanence", "krops": "krops", "lanzaboote": "lanzaboote", "nix-pre-commit-hooks": "nix-pre-commit-hooks", diff --git a/flake.nix b/flake.nix index 870a1bd..e671879 100644 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,8 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.url = "github:nix-community/home-manager/release-24.11"; + impermanence.url = "github:nix-community/impermanence"; + krops.inputs.flake-utils.follows = "flake-utils"; krops.inputs.nixpkgs.follows = "nixpkgs"; krops.url = "github:Mic92/krops"; @@ -107,6 +109,7 @@ command = targetPath: '' nixos-rebuild switch --flake ${targetPath}/config -L --keep-going ''; + force = true; } ) self.nixosConfigurations); @@ -173,9 +176,10 @@ ] ++ [ { nixpkgs.overlays = [ nur.overlays.default ]; } home-manager.nixosModules.home-manager - inputs.sops-nix.nixosModules.sops inputs.disko.nixosModules.disko + inputs.impermanence.nixosModules.impermanence inputs.lanzaboote.nixosModules.lanzaboote + inputs.sops-nix.nixosModules.sops ] ++ extraModules; }) (import ./hosts inputs); diff --git a/hosts/default.nix b/hosts/default.nix index 27f156e..bdb1e83 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -4,7 +4,7 @@ let in { aluminium = { - targetHost = "192.168.0.1"; + targetHost = "jalr-k.duckdns.org"; system = "x86_64-linux"; }; jalr-t520 = { @@ -23,8 +23,8 @@ in targetHost = "jalr-bw.duckdns.org"; }; magnesium = { - system = "aarch64"; - targetHost = "162.55.35.199"; + system = "x86_64-linux"; + targetHost = "magnesium.jalr.de"; }; tin = { system = "x86_64-linux"; diff --git a/hosts/magnesium/configuration.nix b/hosts/magnesium/configuration.nix index cf05901..855b1d1 100644 --- a/hosts/magnesium/configuration.nix +++ b/hosts/magnesium/configuration.nix @@ -1,58 +1,24 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: { imports = [ - ./hardware-configuration.nix - ../../users/jalr + ../../modules/providers/hetzner-cloud.nix ./services + ../../users/jalr + ./persistence.nix ]; networking.hostName = "magnesium"; - services.openssh.enable = true; + + disko.devices.disk.virt.device = "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_60640534"; + security.sudo.wheelNeedsPassword = false; - networking.useDHCP = false; + systemd.network.networks."10-wan".address = [ + "2a01:4f8:c013:bab7::1/64" + ]; - systemd.network = { - enable = true; - networks."10-wan" = { - matchConfig.Name = "enp1s0"; - networkConfig.DHCP = "no"; - address = [ - "162.55.35.199/32" - "2a01:4f8:c012:21ba::/64" - ]; - routes = [ - { - Destination = "172.31.1.1"; - } - { - Gateway = "172.31.1.1"; - GatewayOnLink = true; - } - { - Gateway = "fe80::1"; - } - ]; - }; - }; - - # Use the systemd-boot EFI boot loader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - - jalr = { - bootloader = "systemd-boot"; - uefi.enable = true; - }; - - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It's perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "23.11"; # Did you read the comment? + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + system.stateVersion = "24.11"; } - diff --git a/hosts/magnesium/hardware-configuration.nix b/hosts/magnesium/hardware-configuration.nix deleted file mode 100644 index 2c6ccd7..0000000 --- a/hosts/magnesium/hardware-configuration.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ config, lib, pkgs, modulesPath, ... }: - -{ - imports = - [ - (modulesPath + "/profiles/qemu-guest.nix") - ]; - - boot.initrd.availableKernelModules = [ "xhci_pci" "virtio_pci" "virtio_scsi" "usbhid" "sr_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - fileSystems = { - "/" = { - device = "/dev/disk/by-uuid/45dcac99-1f65-48ab-b5bf-8a1507f0b75a"; - fsType = "btrfs"; - options = [ - "subvol=root" - "compress=zstd" - ]; - }; - "/proc" = { - device = "/proc"; - options = [ "nosuid" "noexec" "nodev" "hidepid=2" ]; - }; - "/home" = { - device = "/dev/disk/by-uuid/45dcac99-1f65-48ab-b5bf-8a1507f0b75a"; - fsType = "btrfs"; - options = [ - "subvol=home" - "compress=zstd" - "nodev" - "nosuid" - ]; - }; - "/nix" = { - device = "/dev/disk/by-uuid/45dcac99-1f65-48ab-b5bf-8a1507f0b75a"; - fsType = "btrfs"; - options = [ - "subvol=nix" - "compress=zstd" - "noatime" - "nodev" - ]; - }; - "/boot" = { - device = "/dev/disk/by-uuid/7836-0C48"; - fsType = "vfat"; - options = [ "nodev" "nosuid" "noexec" ]; - }; - }; - - swapDevices = [ ]; - - nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; -} diff --git a/hosts/magnesium/persistence.nix b/hosts/magnesium/persistence.nix new file mode 100644 index 0000000..5fc03d5 --- /dev/null +++ b/hosts/magnesium/persistence.nix @@ -0,0 +1,37 @@ +{ config, lib, ... }: +{ + boot.initrd.postDeviceCommands = + let + device = config.disko.devices.disk.virt.content.partitions.linux.device; + in + lib.mkAfter '' + mkdir /mnt + mount -t btrfs "${device}" /mnt + btrfs subvolume list -o /mnt/root | cut -f9 -d' ' | while read subvolume; do + btrfs subvolume delete "/mnt/$subvolume" + done + btrfs subvolume delete /mnt/root + btrfs subvolume snapshot /mnt/root-blank /mnt/root + ''; + + services.openssh = { + hostKeys = lib.mkForce [{ + path = "/persist/etc/ssh/ssh_host_ed25519_key"; + type = "ed25519"; + }]; + }; + + services.forgejo.stateDir = "/persist/var/lib/forgejo"; + services.postgresql.dataDir = "/persist/var/lib/postgresql/${config.services.postgresql.package.psqlSchema}"; + + fileSystems."/persist".neededForBoot = true; + environment.persistence."/persist" = { + hideMounts = true; + directories = [ + "/var/lib/acme" + "/var/lib/hedgedoc" + "/var/lib/nixos" + "/var/lib/private/ntfy-sh" + ]; + }; +} diff --git a/hosts/magnesium/secrets.yaml b/hosts/magnesium/secrets.yaml index 23e5d88..317d48e 100644 --- a/hosts/magnesium/secrets.yaml +++ b/hosts/magnesium/secrets.yaml @@ -9,27 +9,27 @@ sops: azure_kv: [] hc_vault: [] age: - - recipient: age1swv42gad884z2v75kateem6k2za6ltkq6wu90ewqp6dp7gxprawslwz0w0 + - recipient: age19qkgfaq08kmyxghet48dq4gxwjuy9zpvuyxys9jkmcqa5634537qlxjcd8 enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNS0svemgzNTVsOEo3cDI5 - QVJ1dDVpK0Zyb3UwTUhWR29RalNPTENiQm1rCjdPbkZBd0hwQ3VvUmRTT2hlZEhp - Snk3cC9OTWZFSFhzMFBoSENMTHB4Qk0KLS0tIEltSEpUWkVmclRKdTA5b09RcGpT - QTBqZDZLeDFLK0k2MHF4Uk1mQTIxRHcKeLHz+lSnHLyTgw2Aq+IVGpIi9X8SQx+Q - bCSPPMPIZsL4VLInuZmcd2n/kEr80fQM2P3/ktW8RnViQjTU+kKbMg== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHMW5lbkRNQS9Gc0VUWndk + VlJiczFVM1dHUGc2QWZnMHVIVGZzdWJKUUJzCngyNGxaR2JFNG9HbG81c1ZNSlQ3 + MlgvMlNYWVduY1diM3g2U3BiL0J3U2sKLS0tIHBscWxMTzVISkE5WW1CZTNYK1ZM + elNwdVlJS2NCWUlXcEZvZWsvZ29FRnMK/qa6Qj1yQc91PWk9tMKSyFkMfYcHIKpQ + jcPmGWbpi2NPL/F0Xz2X/zQQxWzs9uzlS1VH+y8JRe1EPMYJ78NXZw== -----END AGE ENCRYPTED FILE----- lastmodified: "2025-01-11T15:28:59Z" mac: ENC[AES256_GCM,data:1RnyUrbEI2JKpicmA3QV+5ob+vByahMjc4+ZpLbcMyZv/KXn02VP+OQaLm9NgPfpZmSmRgbdPNQAP4f71z/EjcceyANAhnvql3zuYgSXNp5l/IYo5UFZdWgQa14XTGO518969CDLW1zJnlkBtbtLEVlMJiQ/EraV1eNtgCr5UEU=,iv:0fLjboGiejUI9LxHW80ed+/Lf+jlN5UH7tVqfBptq0w=,tag:4Tyrqy9XwQAm0etooVBNZg==,type:str] pgp: - - created_at: "2024-01-31T01:20:03Z" + - created_at: "2025-04-08T22:53:53Z" enc: |- -----BEGIN PGP MESSAGE----- - hF4DY/xpNY5WhB0SAQdAKi5BqRHyG+CaeCKH8KuQWVWS8TbO/Kj38hTzbkBuyF8w - lxCni2VsyI4GDdBwy1jzJpqaqkqCwlzUXh7quHKNjZksHSsb8UTy6aZhDt+sz8Xk - 0l4BM0Dv37SESplctQ4hj8Go48nu3KaYfiE7pyP+HfsZksGn7KTeOWoqC+ET3HX0 - k/w1905xtcxInOalYgCpl2NzowAvKKy1mhzN8+bHW9xJq3ca5nYv0qfT0eFDJE1O - =pqvJ + hF4DY/xpNY5WhB0SAQdAbrDTh/Nvu8ky1ec34AAkKQcTH1G1nDlUCSfobMQsCmAw + XPI7V41rBAY2m6J1P/0oy9cHVfE/LUi4E/yCgNG7YIGdUbb9x29x7A3uoP1NAhE5 + 0l4BZQGZ+GGa69KZ2mOnWhbKfjtOVNDoaxcpgNWHxrtO35c/tNSCxJ2Uj2Q2u3Nj + +SRaHB3tsF8VL85Tn0FEXSWLzL7SfHj78wvaZ/3AxbqdF7WDJkl1hXEnrf2DjBCC + =Gi/Y -----END PGP MESSAGE----- fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted diff --git a/modules/providers/hetzner-cloud.nix b/modules/providers/hetzner-cloud.nix new file mode 100644 index 0000000..3fb1032 --- /dev/null +++ b/modules/providers/hetzner-cloud.nix @@ -0,0 +1,108 @@ +{ config +, pkgs +, modulesPath +, ... +}: +let + cfg = config.disko; +in +{ + imports = [ + (modulesPath + "/profiles/qemu-guest.nix") + ]; + + config = { + networking.useDHCP = false; + + systemd.network = { + enable = true; + networks."10-wan" = { + matchConfig.Name = "enp1s0"; + networkConfig.DHCP = "ipv4"; + routes = [ + { Gateway = "fe80::1"; } + ]; + }; + }; + + boot = { + loader = { + grub.enable = pkgs.hostPlatform.system == "x86_64-linux"; + systemd-boot = { + enable = pkgs.hostPlatform.system == "aarch64-linux"; + configurationLimit = 10; + }; + efi = { + efiSysMountPoint = "/boot"; + canTouchEfiVariables = true; + }; + }; + }; + disko.devices = { + disk = { + virt = { + type = "disk"; + content = { + type = "gpt"; + partitions = { + boot = { + size = "1M"; + type = "EF02"; # for grub MBR + priority = 1; # Needs to be first partition + }; + esp = { + type = "EF00"; + size = "1024M"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "uid=0" "gid=0" "fmask=0077" "dmask=0077" "nodev" "nosuid" "noexec" ]; + }; + }; + linux = { + size = "100%"; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + postCreateHook = + let + device = cfg.devices.disk.virt.content.partitions.linux.device; + in + '' + mountpoint="$(mktemp -d)" + mount "${device}" "$mountpoint" -o subvol=/ + trap 'umount "$mountpoint"; rmdir "$mountpoint"' EXIT + btrfs subvolume snapshot -r $mountpoint/root $mountpoint/root-blank + ''; + subvolumes = { + "/root" = { + mountpoint = "/"; + mountOptions = [ "compress-force=zstd:1" "noatime" ]; + }; + "/home" = { + mountpoint = "/home"; + mountOptions = [ "compress-force=zstd:1" "noatime" "nodev" "nosuid" ]; + }; + "/nix" = { + mountpoint = "/nix"; + mountOptions = [ "compress-force=zstd:1" "noatime" "nodev" ]; + }; + "/log" = { + mountpoint = "/var/log"; + mountOptions = [ "compress-force=zstd:1" "noatime" "nodev" "nosuid" ]; + }; + "/persist" = { + mountpoint = "/persist"; + mountOptions = [ "compress-force=zstd:1" "noatime" "nodev" "nosuid" ]; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; +} From ea30ca33ea972cbad798abc33db7eb5b64a6ebf3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 8 Apr 2025 00:06:34 +0200 Subject: [PATCH 411/562] Add trilium --- hosts/magnesium/persistence.nix | 6 ++++++ hosts/magnesium/ports.nix | 1 + hosts/magnesium/services/default.nix | 1 + hosts/magnesium/services/trilium.nix | 23 +++++++++++++++++++++++ users/jalr/modules/default.nix | 1 + users/jalr/modules/trilium.nix | 6 ++++++ 6 files changed, 38 insertions(+) create mode 100644 hosts/magnesium/services/trilium.nix create mode 100644 users/jalr/modules/trilium.nix diff --git a/hosts/magnesium/persistence.nix b/hosts/magnesium/persistence.nix index 5fc03d5..9746b37 100644 --- a/hosts/magnesium/persistence.nix +++ b/hosts/magnesium/persistence.nix @@ -32,6 +32,12 @@ "/var/lib/hedgedoc" "/var/lib/nixos" "/var/lib/private/ntfy-sh" + { + directory = "/var/lib/trilium"; + user = "trilium"; + group = "trilium"; + mode = "u=rwx,g=rx,o="; + } ]; }; } diff --git a/hosts/magnesium/ports.nix b/hosts/magnesium/ports.nix index a2cc556..8956bca 100644 --- a/hosts/magnesium/ports.nix +++ b/hosts/magnesium/ports.nix @@ -10,5 +10,6 @@ custom-utils.validatePortAttrset { nginx-http.tcp = 80; nginx-https.tcp = 443; ntfy.tcp = 12474; + trilium.tcp = 12783; wireguard-public-ip-tunnel.udp = 51000; } diff --git a/hosts/magnesium/services/default.nix b/hosts/magnesium/services/default.nix index 33736cb..b4fdf50 100644 --- a/hosts/magnesium/services/default.nix +++ b/hosts/magnesium/services/default.nix @@ -6,6 +6,7 @@ ./hedgedoc.nix ./ntfy.nix ./public-ip-tunnel.nix + ./trilium.nix ./webserver.nix ]; } diff --git a/hosts/magnesium/services/trilium.nix b/hosts/magnesium/services/trilium.nix new file mode 100644 index 0000000..0546897 --- /dev/null +++ b/hosts/magnesium/services/trilium.nix @@ -0,0 +1,23 @@ +args@{ config, lib, pkgs, custom-utils, ... }: + +let + ports = import ../ports.nix args; + domain = "notes.jalr.de"; +in +{ + services.trilium-server = { + enable = true; + package = pkgs.master.trilium-next-server; + host = "127.0.0.1"; + port = ports.trilium.tcp; + nginx = { + enable = true; + hostName = domain; + }; + }; + + services.nginx.virtualHosts."${domain}" = { + enableACME = true; + forceSSL = true; + }; +} diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 2d910b0..b0657d1 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -38,6 +38,7 @@ ./thunderbird.nix ./tmux.nix ./tor-browser.nix + ./trilium.nix ./vdirsyncer.nix ./vesc-tool.nix ]; diff --git a/users/jalr/modules/trilium.nix b/users/jalr/modules/trilium.nix new file mode 100644 index 0000000..b219820 --- /dev/null +++ b/users/jalr/modules/trilium.nix @@ -0,0 +1,6 @@ +{ nixosConfig, lib, pkgs, ... }: +lib.mkIf nixosConfig.jalr.gui.enable { + home.packages = with pkgs.master; [ + trilium-next-desktop + ]; +} From 1a0bf8803f977e4325618b7fb0c99902dd2db38f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Apr 2025 10:36:30 +0200 Subject: [PATCH 412/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/329d3d7e8bc63dd30c39e14e6076db590a6eabe6?narHash=sha256-ViE7NoFWytYO2uJONTAX35eGsvTYXNHjWALeHAg8OQY%3D' (2025-04-02) → 'github:nix-community/disko/76c0a6dba345490508f36c1aa3c7ba5b6b460989?narHash=sha256-I2oILRiJ6G%2BBOSjY%2B0dGrTPe080L3pbKpc%2BgCV3Nmyk%3D' (2025-04-08) • Updated input 'home-manager': 'github:nix-community/home-manager/a9f8b3db211b4609ddd83683f9db89796c7f6ac6?narHash=sha256-2lDQBOmlz9ggPxcS7/GvcVdzXMIiT%2BPpMao6FbLJSr0%3D' (2025-04-04) → 'github:nix-community/home-manager/b4e98224ad1336751a2ac7493967a4c9f6d9cb3f?narHash=sha256-t7dFCDl4vIOOUMhEZnJF15aAzkpaup9x4ZRGToDFYWI%3D' (2025-04-08) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/b6776fe38f7fb784cd7a4a64fb88a4af660b6749?narHash=sha256-E74YMZ/88tuiyPxrnkd43sNL3hhtOhq7PbTR97FynSg%3D' (2025-04-07) → 'github:nixos/nixpkgs/60e405b241edb6f0573f3d9f944617fe33ac4a73?narHash=sha256-S9M4HddBCxbbX1CKSyDYgZ8NCVyHcbKnBfoUXeRu2jQ%3D' (2025-04-09) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/29bdac6ae99f07eeb5f44b1f0499a8bbc86d508b?narHash=sha256-WYm6KLZw5JhrT48h6Vkr2H4eh2j5/nDgN3d0Hj6vd4k%3D' (2025-04-07) → 'github:NixOS/nixpkgs/3edf77d2a07e051182310440f299dbb3ca09046a?narHash=sha256-id2VxKm1SVaYLQi/28OMjEsFeaAMGC8KbJxy%2B0h1gUM%3D' (2025-04-09) • Updated input 'nur': 'github:nix-community/NUR/6123b345b32b960842a53c6c330e9575639c5f98?narHash=sha256-eLQt1nwY5TkWltZMhncTFnVIUqlJCNMU8iDOVS0Kpl4%3D' (2025-04-07) → 'github:nix-community/NUR/85dc40ee54ecef0d520af9bbaaeb0e6f1df42495?narHash=sha256-pB/mVkkfjZD98fFHzo9WYzMZOISDMV5m1ua9cO1kRfE%3D' (2025-04-09) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/42a1c966be226125b48c384171c44c651c236c22?narHash=sha256-rpqepOZ8Eo1zg%2BKJeWoq1HAOgoMCDloqv5r2EAa9TSA%3D' (2025-04-05) → 'github:nixos/nixpkgs/c8cd81426f45942bb2906d5ed2fe21d2f19d95b7?narHash=sha256-tzCdyIJj9AjysC3OuKA%2BtMD/kDEDAF9mICPDU7ix0JA%3D' (2025-04-08) • Updated input 'sops-nix': 'github:Mic92/sops-nix/523f58a4faff6c67f5f685bed33a7721e984c304?narHash=sha256-zr2jmWeWyhCD8WmO2aWov2g0WPPuZfcJDKzMJZYGq3Y%3D' (2025-04-06) → 'github:Mic92/sops-nix/69d5a5a4635c27dae5a742f36108beccc506c1ba?narHash=sha256-SR6%2BqjkPjGQG%2B8eM4dCcVtss8r9bre/LAxFMPJpaZeU%3D' (2025-04-08) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index bdf190f..e111536 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1743598667, - "narHash": "sha256-ViE7NoFWytYO2uJONTAX35eGsvTYXNHjWALeHAg8OQY=", + "lastModified": 1744145203, + "narHash": "sha256-I2oILRiJ6G+BOSjY+0dGrTPe080L3pbKpc+gCV3Nmyk=", "owner": "nix-community", "repo": "disko", - "rev": "329d3d7e8bc63dd30c39e14e6076db590a6eabe6", + "rev": "76c0a6dba345490508f36c1aa3c7ba5b6b460989", "type": "github" }, "original": { @@ -224,11 +224,11 @@ ] }, "locked": { - "lastModified": 1743808813, - "narHash": "sha256-2lDQBOmlz9ggPxcS7/GvcVdzXMIiT+PpMao6FbLJSr0=", + "lastModified": 1744117652, + "narHash": "sha256-t7dFCDl4vIOOUMhEZnJF15aAzkpaup9x4ZRGToDFYWI=", "owner": "nix-community", "repo": "home-manager", - "rev": "a9f8b3db211b4609ddd83683f9db89796c7f6ac6", + "rev": "b4e98224ad1336751a2ac7493967a4c9f6d9cb3f", "type": "github" }, "original": { @@ -365,11 +365,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1744059796, - "narHash": "sha256-E74YMZ/88tuiyPxrnkd43sNL3hhtOhq7PbTR97FynSg=", + "lastModified": 1744168086, + "narHash": "sha256-S9M4HddBCxbbX1CKSyDYgZ8NCVyHcbKnBfoUXeRu2jQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b6776fe38f7fb784cd7a4a64fb88a4af660b6749", + "rev": "60e405b241edb6f0573f3d9f944617fe33ac4a73", "type": "github" }, "original": { @@ -397,11 +397,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1744060879, - "narHash": "sha256-WYm6KLZw5JhrT48h6Vkr2H4eh2j5/nDgN3d0Hj6vd4k=", + "lastModified": 1744187498, + "narHash": "sha256-id2VxKm1SVaYLQi/28OMjEsFeaAMGC8KbJxy+0h1gUM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "29bdac6ae99f07eeb5f44b1f0499a8bbc86d508b", + "rev": "3edf77d2a07e051182310440f299dbb3ca09046a", "type": "github" }, "original": { @@ -413,11 +413,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1743827369, - "narHash": "sha256-rpqepOZ8Eo1zg+KJeWoq1HAOgoMCDloqv5r2EAa9TSA=", + "lastModified": 1744098102, + "narHash": "sha256-tzCdyIJj9AjysC3OuKA+tMD/kDEDAF9mICPDU7ix0JA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "42a1c966be226125b48c384171c44c651c236c22", + "rev": "c8cd81426f45942bb2906d5ed2fe21d2f19d95b7", "type": "github" }, "original": { @@ -434,11 +434,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1744057897, - "narHash": "sha256-eLQt1nwY5TkWltZMhncTFnVIUqlJCNMU8iDOVS0Kpl4=", + "lastModified": 1744184848, + "narHash": "sha256-pB/mVkkfjZD98fFHzo9WYzMZOISDMV5m1ua9cO1kRfE=", "owner": "nix-community", "repo": "NUR", - "rev": "6123b345b32b960842a53c6c330e9575639c5f98", + "rev": "85dc40ee54ecef0d520af9bbaaeb0e6f1df42495", "type": "github" }, "original": { @@ -550,11 +550,11 @@ ] }, "locked": { - "lastModified": 1743910657, - "narHash": "sha256-zr2jmWeWyhCD8WmO2aWov2g0WPPuZfcJDKzMJZYGq3Y=", + "lastModified": 1744103455, + "narHash": "sha256-SR6+qjkPjGQG+8eM4dCcVtss8r9bre/LAxFMPJpaZeU=", "owner": "Mic92", "repo": "sops-nix", - "rev": "523f58a4faff6c67f5f685bed33a7721e984c304", + "rev": "69d5a5a4635c27dae5a742f36108beccc506c1ba", "type": "github" }, "original": { From 1cb1cbbd6e501dfa9fa4e6d957b57cd1cdf74c0e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Apr 2025 22:22:44 +0200 Subject: [PATCH 413/562] Remove ariang as it is now part of nixpkgs --- pkgs/ariang/default.nix | 29 ----------------------------- pkgs/default.nix | 1 - 2 files changed, 30 deletions(-) delete mode 100644 pkgs/ariang/default.nix diff --git a/pkgs/ariang/default.nix b/pkgs/ariang/default.nix deleted file mode 100644 index 3d4a4d7..0000000 --- a/pkgs/ariang/default.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ lib -, stdenvNoCC -, fetchurl -, unzip -, pkgs -}: - -stdenvNoCC.mkDerivation rec { - pname = "ariang"; - version = "1.3.4"; - - src = fetchurl { - url = "https://github.com/mayswind/AriaNg/releases/download/${version}/AriaNg-${version}.zip"; - sha256 = "sha256-HYKPbDWOO531LXm4a0XZ3ZjzGom1ZbbkwyyBbp7Dduw="; - }; - - nativeBuildInputs = [ unzip ]; - - unpackPhase = '' - unpackFile $src - ''; - - dontBuild = true; - - installPhase = '' - mkdir $out - cp -r * $out - ''; -} diff --git a/pkgs/default.nix b/pkgs/default.nix index 5a2fdeb..974d6a2 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -6,7 +6,6 @@ let poetry2nix = callPackage inputs.poetry2nix { }; in { - ariang = callPackage ./ariang { }; asterisk-sounds-de = callPackage ./asterisk-sounds-de { }; ksoloti = callPackage ./ksoloti { gcc-arm-embedded = pkgsCross.arm-embedded.buildPackages.gcc; From ee89fbb07229fcd0505ebad2cd75ecc85918be08 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Apr 2025 21:38:11 +0200 Subject: [PATCH 414/562] Remove t520 --- hosts/default.nix | 3 -- hosts/jalr-t520/configuration.nix | 61 ---------------------- hosts/jalr-t520/hardware-configuration.nix | 61 ---------------------- 3 files changed, 125 deletions(-) delete mode 100644 hosts/jalr-t520/configuration.nix delete mode 100644 hosts/jalr-t520/hardware-configuration.nix diff --git a/hosts/default.nix b/hosts/default.nix index bdb1e83..7f460c8 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -7,9 +7,6 @@ in targetHost = "jalr-k.duckdns.org"; system = "x86_64-linux"; }; - jalr-t520 = { - system = "x86_64-linux"; - }; cadmium = { system = "x86_64-linux"; }; diff --git a/hosts/jalr-t520/configuration.nix b/hosts/jalr-t520/configuration.nix deleted file mode 100644 index 9cd08a5..0000000 --- a/hosts/jalr-t520/configuration.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ config, pkgs, ... }: - -{ - imports = [ - ./hardware-configuration.nix - ../../users/jalr - ]; - - networking = { - hostName = "jalr-t520"; - useDHCP = false; - }; - - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - gnome3.adwaita-icon-theme - ]; - - environment.variables.EDITOR = "nvim"; - - programs.mtr.enable = true; - programs.wireshark.enable = true; - - hardware.sane.enable = true; - - services.udisks2.enable = true; - - services.avahi.enable = true; - services.avahi.nssmdns = true; - - services.udev.extraRules = '' - # 16C0:0442 - Axoloti Core - SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0442", MODE:="0666" - # 0483:df11 - Axoloti Core (STM32 microcontroller) in DFU mode - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666" - - # Samsung A5 - SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", GROUP="dialout", MODE="0660" - ''; - - jalr = { - bootloader = "grub2"; - bluetooth.enable = true; - gui.enable = true; - workstation.enable = true; - sdr.enable = true; - libvirt.enable = true; - autologin.enable = true; - autologin.username = "jalr"; - }; - - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "23.11"; # Did you read the comment? - -} diff --git a/hosts/jalr-t520/hardware-configuration.nix b/hosts/jalr-t520/hardware-configuration.nix deleted file mode 100644 index 7de2199..0000000 --- a/hosts/jalr-t520/hardware-configuration.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ lib, pkgs, modulesPath, ... }: - -{ - imports = [ - "${modulesPath}/installer/scan/not-detected.nix" - ]; - - boot = { - initrd = { - availableKernelModules = [ - "aes_generic" - "aesni_intel" - "ahci" - "cryptd" - "ehci_pci" - "firewire_ohci" - "i915" - "sd_mod" - "sdhci_pci" - "usb_storage" - "usbhid" - ]; - kernelModules = [ "dm-snapshot" ]; - luks.devices = { - pvcrypt = { - device = "/dev/disk/by-uuid/3a1a8fec-b028-45c0-8432-7fcbe4615f44"; - preLVM = true; - }; - }; - }; - kernelModules = [ "kvm-intel" ]; - }; - - fileSystems = { - "/" = { - device = "/dev/disk/by-uuid/62e31097-dc6e-4f91-a043-1a6b8a154201"; - fsType = "ext4"; - }; - "/boot" = { - device = "/dev/disk/by-uuid/c4df83d7-8985-47df-b5cd-bf18bd490a50"; - fsType = "ext2"; - options = [ "nodev" "nosuid" "noexec" ]; - }; - }; - - boot.loader.grub.devices = [ "/dev/disk/by-id/ata-INTEL_SSDSC2BB016T4_BTWD531101JM1P6HGN" ]; - - nix.settings.max-jobs = 4; - - hardware.cpu.intel.updateMicrocode = true; - - powerManagement.cpuFreqGovernor = "performance"; - - environment.systemPackages = with pkgs; [ - intel-media-driver - libva - libva-utils - libva1 - ]; - hardware.opengl.extraPackages = lib.singleton pkgs.vaapiIntel; -} From 8ecbdb046370649ed22b6f9be9d1e18a09f00754 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Apr 2025 21:45:38 +0200 Subject: [PATCH 415/562] Remove tin --- hosts/default.nix | 4 -- hosts/tin/configuration.nix | 32 ---------------- hosts/tin/hardware-configuration.nix | 56 ---------------------------- 3 files changed, 92 deletions(-) delete mode 100644 hosts/tin/configuration.nix delete mode 100644 hosts/tin/hardware-configuration.nix diff --git a/hosts/default.nix b/hosts/default.nix index 7f460c8..aa78b0f 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -23,10 +23,6 @@ in system = "x86_64-linux"; targetHost = "magnesium.jalr.de"; }; - tin = { - system = "x86_64-linux"; - targetHost = "tin.lan.bw.jalr.de"; - }; copper = { system = "x86_64-linux"; targetHost = "copper.lan.bw.jalr.de"; diff --git a/hosts/tin/configuration.nix b/hosts/tin/configuration.nix deleted file mode 100644 index 03af0d7..0000000 --- a/hosts/tin/configuration.nix +++ /dev/null @@ -1,32 +0,0 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page, on -# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). - -{ config, lib, pkgs, ... }: - -{ - imports = [ - ./hardware-configuration.nix - ../../users/jalr - ]; - - networking = { - hostName = "tin"; - useDHCP = false; - }; - - system.stateVersion = "23.11"; # Did you read the comment? - - jalr = { - bootloader = "systemd-boot"; - bluetooth.enable = true; - uefi.enable = true; - gui.enable = true; - gui.desktop = "gnome"; - workstation.enable = true; - sdr.enable = false; - #autologin.enable = true; - #autologin.username = "jal"; - }; -} - diff --git a/hosts/tin/hardware-configuration.nix b/hosts/tin/hardware-configuration.nix deleted file mode 100644 index a797e49..0000000 --- a/hosts/tin/hardware-configuration.nix +++ /dev/null @@ -1,56 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - -{ - imports = - [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = - { - device = "/dev/disk/by-uuid/a939bba5-2eb2-4e9f-97f8-7d1604cb3f76"; - fsType = "btrfs"; - options = [ "compress=zstd" "subvol=root" ]; - }; - - fileSystems."/home" = - { - device = "/dev/disk/by-uuid/a939bba5-2eb2-4e9f-97f8-7d1604cb3f76"; - fsType = "btrfs"; - options = [ "compress=zstd" "subvol=home" ]; - }; - - fileSystems."/nix" = - { - device = "/dev/disk/by-uuid/a939bba5-2eb2-4e9f-97f8-7d1604cb3f76"; - fsType = "btrfs"; - options = [ "compress=zstd" "subvol=nix" ]; - }; - - fileSystems."/boot" = - { - device = "/dev/disk/by-uuid/BC71-DDC2"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; - - swapDevices = [ ]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp0s25.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} From 209526d7c0a9a6b57590a47046dc6e66af24bf35 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Apr 2025 20:47:18 +0200 Subject: [PATCH 416/562] Add statix --- flake.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flake.nix b/flake.nix index e671879..f4a0dbe 100644 --- a/flake.nix +++ b/flake.nix @@ -66,6 +66,10 @@ black.enable = true; nixpkgs-fmt.enable = true; shellcheck.enable = true; + statix = { + enable = true; + settings.ignore = [ ".direnv" ]; + }; }; }; }; From 8e8041e4232aa22a3be2aef1fa733d0d3b7dc38b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Apr 2025 21:45:49 +0200 Subject: [PATCH 417/562] Refactoring --- custom-utils/default.nix | 6 +- custom-utils/ports.nix | 6 +- flake.nix | 56 ++- hosts/aluminium/configuration.nix | 21 +- hosts/aluminium/services/asterisk/default.nix | 174 +++---- hosts/aluminium/services/home-assistant.nix | 4 +- hosts/copper/configuration.nix | 44 +- hosts/default.nix | 2 +- hosts/iron/configuration.nix | 16 +- hosts/iron/services/avahi.nix | 10 +- hosts/iron/services/calibre.nix | 38 +- hosts/iron/services/home-assistant.nix | 472 +++++++++--------- hosts/iron/services/public-ip-tunnel.nix | 38 +- hosts/iron/services/radicale.nix | 26 +- hosts/iron/services/remarkable.nix | 4 +- .../iron/services/snapcast/bluetooth-sink.nix | 80 ++- hosts/iron/services/whatsapp.nix | 74 +-- hosts/magnesium/persistence.nix | 19 +- hosts/magnesium/services/hedgedoc.nix | 72 +-- hosts/magnesium/services/public-ip-tunnel.nix | 51 +- .../hardware-configuration.nix | 12 +- .../weinturm-pretix-prod/services/pretix.nix | 118 ++--- modules/bluetooth.nix | 8 +- modules/luksusb.nix | 39 +- modules/mailserver/postfix.nix | 14 +- modules/mailserver/rspamd.nix | 2 +- modules/matrix/default.nix | 4 +- modules/matrix/mautrix-signal.nix | 2 +- modules/matrix/mautrix-whatsapp.nix | 2 +- modules/matrix/synapse.nix | 177 +++---- modules/nix.nix | 2 +- modules/providers/hetzner-cloud.nix | 2 +- modules/qbittorrent/default.nix | 2 +- modules/sway.nix | 18 +- modules/unfree.nix | 4 +- pkgs/default.nix | 2 +- pkgs/myintercom-doorbell/module.nix | 122 ++--- pkgs/wofi-bluetooth/wofi-bluetooth.nix | 4 +- users/jalr/modules/alacritty.nix | 2 +- users/jalr/modules/aws.nix | 4 +- users/jalr/modules/cli/htop.nix | 3 +- users/jalr/modules/dynamic-colors.nix | 10 +- users/jalr/modules/firefox/default.nix | 210 ++++---- users/jalr/modules/fish.nix | 56 ++- users/jalr/modules/gnuradio.nix | 4 +- users/jalr/modules/neovim/default.nix | 185 +++---- users/jalr/modules/obs-studio/default.nix | 2 +- users/jalr/modules/sway/default.nix | 71 +-- users/jalr/modules/sway/waybar.nix | 334 +++++++------ users/jalr/modules/sway/wofi.nix | 152 +++--- users/jalr/modules/thunderbird.nix | 2 +- 51 files changed, 1414 insertions(+), 1368 deletions(-) diff --git a/custom-utils/default.nix b/custom-utils/default.nix index 66a9a15..5db6ecb 100644 --- a/custom-utils/default.nix +++ b/custom-utils/default.nix @@ -8,9 +8,9 @@ let ) ) ); - onlyUniqueItemsInList = (x: lib.lists.length x == lib.lists.length (lib.lists.unique x)); - protocols = (x: lib.lists.unique (lib.flatten (map builtins.attrNames (lib.attrValues x)))); - mkRange = (x: lib.lists.range (builtins.elemAt x 0) (builtins.elemAt x 1)); + onlyUniqueItemsInList = x: lib.lists.length x == lib.lists.length (lib.lists.unique x); + protocols = x: lib.lists.unique (lib.flatten (map builtins.attrNames (lib.attrValues x))); + mkRange = x: lib.lists.range (builtins.elemAt x 0) (builtins.elemAt x 1); validateList = allowed: builtins.all (x: builtins.elem x allowed); in { diff --git a/custom-utils/ports.nix b/custom-utils/ports.nix index 66a9a15..5db6ecb 100644 --- a/custom-utils/ports.nix +++ b/custom-utils/ports.nix @@ -8,9 +8,9 @@ let ) ) ); - onlyUniqueItemsInList = (x: lib.lists.length x == lib.lists.length (lib.lists.unique x)); - protocols = (x: lib.lists.unique (lib.flatten (map builtins.attrNames (lib.attrValues x)))); - mkRange = (x: lib.lists.range (builtins.elemAt x 0) (builtins.elemAt x 1)); + onlyUniqueItemsInList = x: lib.lists.length x == lib.lists.length (lib.lists.unique x); + protocols = x: lib.lists.unique (lib.flatten (map builtins.attrNames (lib.attrValues x))); + mkRange = x: lib.lists.range (builtins.elemAt x 0) (builtins.elemAt x 1); validateList = allowed: builtins.all (x: builtins.elem x allowed); in { diff --git a/flake.nix b/flake.nix index f4a0dbe..fbfe64e 100644 --- a/flake.nix +++ b/flake.nix @@ -5,24 +5,34 @@ flake-utils.url = "github:numtide/flake-utils"; - gomod2nix.inputs.flake-utils.follows = "flake-utils"; - gomod2nix.inputs.nixpkgs.follows = "nixpkgs"; - gomod2nix.url = "github:nix-community/gomod2nix"; + gomod2nix = { + url = "github:nix-community/gomod2nix"; + inputs.flake-utils.follows = "flake-utils"; + inputs.nixpkgs.follows = "nixpkgs"; + }; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; - home-manager.url = "github:nix-community/home-manager/release-24.11"; + home-manager = { + url = "github:nix-community/home-manager/release-24.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; impermanence.url = "github:nix-community/impermanence"; - krops.inputs.flake-utils.follows = "flake-utils"; - krops.inputs.nixpkgs.follows = "nixpkgs"; - krops.url = "github:Mic92/krops"; + krops = { + url = "github:Mic92/krops"; + inputs.flake-utils.follows = "flake-utils"; + inputs.nixpkgs.follows = "nixpkgs"; + }; - lanzaboote.url = "github:nix-community/lanzaboote/v0.4.1"; - lanzaboote.inputs.nixpkgs.follows = "nixpkgs"; + lanzaboote = { + url = "github:nix-community/lanzaboote/v0.4.1"; + inputs.nixpkgs.follows = "nixpkgs"; + }; - nix-pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs"; - nix-pre-commit-hooks.url = "github:cachix/git-hooks.nix/master"; + nix-pre-commit-hooks = { + url = "github:cachix/git-hooks.nix/master"; + inputs.nixpkgs.follows = "nixpkgs"; + }; nixos-hardware.url = "github:nixos/nixos-hardware/master"; @@ -32,12 +42,16 @@ nur.url = "github:nix-community/NUR"; - poetry2nix.inputs.flake-utils.follows = "flake-utils"; - poetry2nix.inputs.nixpkgs.follows = "nixpkgs"; - poetry2nix.url = "github:nix-community/poetry2nix"; + poetry2nix = { + url = "github:nix-community/poetry2nix"; + inputs.flake-utils.follows = "flake-utils"; + inputs.nixpkgs.follows = "nixpkgs"; + }; - sops-nix.inputs.nixpkgs.follows = "nixpkgs"; - sops-nix.url = "github:Mic92/sops-nix"; + sops-nix = { + url = "github:Mic92/sops-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = { self @@ -74,14 +88,14 @@ }; }; devShells.default = pkgs.mkShell { - buildInputs = (with pkgs; [ + buildInputs = with pkgs; [ black just nixpkgs-fmt shellcheck sops ssh-to-age - ]); + ]; shellHook = '' ${self.checks.${system}.pre-commit-check.shellHook} @@ -159,8 +173,8 @@ { _module.args = { - inputs = inputs; - custom-utils = import ./custom-utils { lib = nixpkgs.lib; }; + inherit inputs; + custom-utils = import ./custom-utils { inherit (nixpkgs) lib; }; }; } diff --git a/hosts/aluminium/configuration.nix b/hosts/aluminium/configuration.nix index cdd652a..6b89247 100644 --- a/hosts/aluminium/configuration.nix +++ b/hosts/aluminium/configuration.nix @@ -7,11 +7,11 @@ ./services ]; - networking.hostName = "aluminium"; services.openssh.enable = true; security.sudo.wheelNeedsPassword = false; networking = { + hostName = "aluminium"; useDHCP = false; vlans = { lechner = { @@ -78,6 +78,15 @@ iifname "voice" udp dport 5059 accept ip saddr 217.10.68.150 udp dport 5060 accept ''; + nftables.tables.pppoe = { + family = "ip"; + content = '' + chain clamp { + type filter hook forward priority mangle; + oifname "ppp0" tcp flags syn tcp option maxseg size set rt mtu comment "clamp MSS to Path MTU" + } + ''; + }; }; @@ -116,16 +125,6 @@ }; }; - networking.nftables.tables.pppoe = { - family = "ip"; - content = '' - chain clamp { - type filter hook forward priority mangle; - oifname "ppp0" tcp flags syn tcp option maxseg size set rt mtu comment "clamp MSS to Path MTU" - } - ''; - }; - zramSwap = { enable = true; algorithm = "zstd"; diff --git a/hosts/aluminium/services/asterisk/default.nix b/hosts/aluminium/services/asterisk/default.nix index c6d8cd7..92f945d 100644 --- a/hosts/aluminium/services/asterisk/default.nix +++ b/hosts/aluminium/services/asterisk/default.nix @@ -14,21 +14,6 @@ let voicemail-sounds = pkgs.callPackage ./voicemail-sounds { }; in { - systemd.services.asterisk-voicemail-sounds = { - wantedBy = [ "asterisk.service" ]; - after = [ "asterisk.service" ]; - script = '' - ln -sfn \ - ${voicemail-sounds}/unavail.wav \ - /var/spool/asterisk/voicemail/lechner/876/unavail.wav - ''; - restartTriggers = [ voicemail-sounds ]; - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; - }; - }; - services.asterisk = { enable = true; confFiles = { @@ -169,12 +154,12 @@ in useTheseDefaultConfFiles = [ ]; }; - sops.secrets = (lib.listToAttrs (map + sops.secrets = lib.listToAttrs (map (name: lib.nameValuePair "asterisk-${name}" { sopsFile = ../../secrets.yaml; owner = config.users.users.asterisk.name; }) - secretConfigFiles)); + secretConfigFiles); environment.etc = lib.mapAttrs' (name: _: lib.nameValuePair "asterisk/${name}.conf" @@ -194,84 +179,99 @@ in }; }; - systemd.services."asterisk-reload-endpoint@" = { - description = "Check if asterisk endpoint is identified and reload it when it is not."; - serviceConfig = { - Type = "oneshot"; + systemd.services = { + "asterisk-reload-endpoint@" = { + description = "Check if asterisk endpoint is identified and reload it when it is not."; + serviceConfig = { + Type = "oneshot"; + }; + environment = { + ENDPOINT = "%I"; + }; + script = '' + export PATH=${pkgs.lib.makeBinPath [pkgs.asterisk pkgs.gnused pkgs.gnugrep]} + if ! asterisk -r -x "pjsip show endpoint $ENDPOINT" | sed -n '/^===/,/^\s*ParameterName/{//!p}' | grep -q 'Identify:'; then + asterisk -r -x "module reload res_pjsip_endpoint_identifier_ip.so" + fi + ''; }; - environment = { - ENDPOINT = "%I"; + asterisk-voicemail-sounds = { + wantedBy = [ "asterisk.service" ]; + after = [ "asterisk.service" ]; + script = '' + ln -sfn \ + ${voicemail-sounds}/unavail.wav \ + /var/spool/asterisk/voicemail/lechner/876/unavail.wav + ''; + restartTriggers = [ voicemail-sounds ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; }; - script = '' - export PATH=${pkgs.lib.makeBinPath [pkgs.asterisk pkgs.gnused pkgs.gnugrep]} - if ! asterisk -r -x "pjsip show endpoint $ENDPOINT" | sed -n '/^===/,/^\s*ParameterName/{//!p}' | grep -q 'Identify:'; then - asterisk -r -x "module reload res_pjsip_endpoint_identifier_ip.so" - fi - ''; - }; + "asterisk-voicemail-call@" = { + description = "Check if voicemail exists and place a call to the voicemail application."; + serviceConfig = { + Type = "oneshot"; + }; + scriptArgs = "%I"; + script = '' + export PATH=${pkgs.lib.makeBinPath [pkgs.asterisk pkgs.coreutils pkgs.findutils]} + number="$(echo "$1" | cut -d ':' -f 1)" + user="$(echo "$1" | cut -d ':' -f 2)" + channel="PJSIP/$(echo "$1" | cut -d ':' -f 3)" - systemd.timers.asterisk-reload-endpoint = { - description = "Check if asterisk endpoint is identified and reload it when it is not."; - after = [ "asterisk.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig = { - Persistent = true; - OnCalendar = "*-*-* *:*:00"; - Unit = "asterisk-reload-endpoint@sipgate.service"; + if ! find "/var/spool/asterisk/voicemail/$user/$number/INBOX/" -mindepth 1 -maxdepth 1 | read; then + exit + fi + + callfile="$(mktemp -p /tmp XXXXXXXXXX.call)" + chmod 644 "$callfile" + + cat > "$callfile" << EOF + Channel: $channel + WaitTime: 15 + Application: VoiceMailMain + Data: $number@$user + CallerID: Voicemail + EOF + + mv "$callfile" /var/spool/asterisk/outgoing/ + ''; }; }; - systemd.services."asterisk-voicemail-call@" = { - description = "Check if voicemail exists and place a call to the voicemail application."; - serviceConfig = { - Type = "oneshot"; + systemd.timers = { + asterisk-reload-endpoint = { + description = "Check if asterisk endpoint is identified and reload it when it is not."; + after = [ "asterisk.service" ]; + wantedBy = [ "timers.target" ]; + timerConfig = { + Persistent = true; + OnCalendar = "*-*-* *:*:00"; + Unit = "asterisk-reload-endpoint@sipgate.service"; + }; }; - scriptArgs = "%I"; - script = '' - export PATH=${pkgs.lib.makeBinPath [pkgs.asterisk pkgs.coreutils pkgs.findutils]} - number="$(echo "$1" | cut -d ':' -f 1)" - user="$(echo "$1" | cut -d ':' -f 2)" - channel="PJSIP/$(echo "$1" | cut -d ':' -f 3)" - if ! find "/var/spool/asterisk/voicemail/$user/$number/INBOX/" -mindepth 1 -maxdepth 1 | read; then - exit - fi - - callfile="$(mktemp -p /tmp XXXXXXXXXX.call)" - chmod 644 "$callfile" - - cat > "$callfile" << EOF - Channel: $channel - WaitTime: 15 - Application: VoiceMailMain - Data: $number@$user - CallerID: Voicemail - EOF - - mv "$callfile" /var/spool/asterisk/outgoing/ - ''; - }; - - systemd.timers.asterisk-voicemail-call-10 = { - description = "Check if voicemail exists and place a call to the voicemail application."; - after = [ "asterisk.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig = { - Persistent = true; - OnCalendar = "*-*-* 07..22:00,20,40:00"; - Unit = "asterisk-voicemail-call@876:lechner:10.service"; + asterisk-voicemail-call-10 = { + description = "Check if voicemail exists and place a call to the voicemail application."; + after = [ "asterisk.service" ]; + wantedBy = [ "timers.target" ]; + timerConfig = { + Persistent = true; + OnCalendar = "*-*-* 07..22:00,20,40:00"; + Unit = "asterisk-voicemail-call@876:lechner:10.service"; + }; + }; + asterisk-voicemail-call-11 = { + description = "Check if voicemail exists and place a call to the voicemail application."; + after = [ "asterisk.service" ]; + wantedBy = [ "timers.target" ]; + timerConfig = { + Persistent = true; + OnCalendar = "*-*-* 07..22:00,10,30:50"; + Unit = "asterisk-voicemail-call@876:lechner:11.service"; + }; }; }; - systemd.timers.asterisk-voicemail-call-11 = { - description = "Check if voicemail exists and place a call to the voicemail application."; - after = [ "asterisk.service" ]; - wantedBy = [ "timers.target" ]; - timerConfig = { - Persistent = true; - OnCalendar = "*-*-* 07..22:00,10,30:50"; - Unit = "asterisk-voicemail-call@876:lechner:11.service"; - }; - }; - - #voicemailCallScript } diff --git a/hosts/aluminium/services/home-assistant.nix b/hosts/aluminium/services/home-assistant.nix index 2395ff9..aed7b78 100644 --- a/hosts/aluminium/services/home-assistant.nix +++ b/hosts/aluminium/services/home-assistant.nix @@ -78,8 +78,8 @@ in unit_system = "metric"; time_zone = "Europe/Berlin"; temperature_unit = "C"; - longitude = config.location.longitude; - latitude = config.location.latitude; + inherit (config.location) longitude; + inherit (config.location) latitude; }; default_config = { }; "automation nix" = [ diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index f69f1ba..d6b5718 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -8,8 +8,6 @@ ./services ]; - services.fstrim.enable = true; - networking = { hostName = "copper"; extraHosts = lib.concatStringsSep "\n" ( @@ -32,24 +30,28 @@ priority = 1; }; - services.snapper.configs = { - home = { - SUBVOLUME = "/home"; - ALLOW_USERS = [ "jalr" ]; - TIMELINE_CREATE = true; - TIMELINE_CLEANUP = true; - TIMELINE_LIMIT_HOURLY = 12; - TIMELINE_LIMIT_DAILY = 7; - TIMELINE_LIMIT_WEEKLY = 4; - TIMELINE_LIMIT_MONTHLY = 3; - TIMELINE_LIMIT_YEARLY = 0; - BACKGROUND_COMPARISON = "yes"; - NUMBER_CLEANUP = "no"; - NUMBER_MIN_AGE = "1800"; - NUMBER_LIMIT = "100"; - NUMBER_LIMIT_IMPORTANT = "10"; - EMPTY_PRE_POST_CLEANUP = "yes"; - EMPTY_PRE_POST_MIN_AGE = "1800"; + services = { + fstrim.enable = true; + flatpak.enable = true; + snapper.configs = { + home = { + SUBVOLUME = "/home"; + ALLOW_USERS = [ "jalr" ]; + TIMELINE_CREATE = true; + TIMELINE_CLEANUP = true; + TIMELINE_LIMIT_HOURLY = 12; + TIMELINE_LIMIT_DAILY = 7; + TIMELINE_LIMIT_WEEKLY = 4; + TIMELINE_LIMIT_MONTHLY = 3; + TIMELINE_LIMIT_YEARLY = 0; + BACKGROUND_COMPARISON = "yes"; + NUMBER_CLEANUP = "no"; + NUMBER_MIN_AGE = "1800"; + NUMBER_LIMIT = "100"; + NUMBER_LIMIT_IMPORTANT = "10"; + EMPTY_PRE_POST_CLEANUP = "yes"; + EMPTY_PRE_POST_MIN_AGE = "1800"; + }; }; }; @@ -68,7 +70,5 @@ }; system.stateVersion = "24.05"; - - services.flatpak.enable = true; } diff --git a/hosts/default.nix b/hosts/default.nix index aa78b0f..a23a65f 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -1,4 +1,4 @@ -{ ... }@inputs: +inputs: let hardware = inputs.nixos-hardware.nixosModules; in diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index f130428..ac8ee66 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -28,7 +28,7 @@ let luksDev = "-part3"; biosBoot = "-part4"; }; - efiSystemPartitions = (map (diskName: diskName + partitionScheme.efiBoot) (lib.attrValues disks)); + efiSystemPartitions = map (diskName: diskName + partitionScheme.efiBoot) (lib.attrValues disks); in with lib; { imports = [ @@ -154,19 +154,19 @@ with lib; { }; supportedFilesystems = [ "zfs" ]; zfs = { - devNodes = devNodes; + inherit devNodes; forceImportRoot = false; }; loader = { efi = { - canTouchEfiVariables = (if removableEfi then false else true); - efiSysMountPoint = ("/boot/efis/" + (head (lib.attrValues disks)) - + partitionScheme.efiBoot); + canTouchEfiVariables = if removableEfi then false else true; + efiSysMountPoint = "/boot/efis/" + (head (lib.attrValues disks)) + + partitionScheme.efiBoot; }; generationsDir.copyKernels = true; grub = { enable = true; - devices = (map (diskName: devNodes + diskName) (attrValues disks)); + devices = map (diskName: devNodes + diskName) (attrValues disks); efiInstallAsRemovable = removableEfi; copyKernels = true; efiSupport = true; @@ -176,11 +176,11 @@ with lib; { terminal_input --append serial terminal_output --append serial ''; - extraInstallCommands = (toString (map + extraInstallCommands = toString (map (diskName: '' ${pkgs.coreutils-full}/bin/cp -r ${config.boot.loader.efi.efiSysMountPoint}/EFI /boot/efis/${diskName}${partitionScheme.efiBoot} '') - (tail (attrValues disks)))); + (tail (attrValues disks))); }; }; kernelParams = [ diff --git a/hosts/iron/services/avahi.nix b/hosts/iron/services/avahi.nix index e19be81..6c14bcd 100644 --- a/hosts/iron/services/avahi.nix +++ b/hosts/iron/services/avahi.nix @@ -6,11 +6,13 @@ in services.avahi = { enable = true; allowInterfaces = [ interfaces.lan ]; - publish.domain = true; - publish.enable = true; - publish.userServices = true; - publish.workstation = true; openFirewall = false; + publish = { + domain = true; + enable = true; + userServices = true; + workstation = true; + }; }; networking.firewall.interfaces."${interfaces.lan}".allowedUDPPorts = [ diff --git a/hosts/iron/services/calibre.nix b/hosts/iron/services/calibre.nix index f738170..0f30021 100644 --- a/hosts/iron/services/calibre.nix +++ b/hosts/iron/services/calibre.nix @@ -8,23 +8,29 @@ in sopsFile = ../secrets.yaml; }; - services.calibre-server = { - enable = true; - port = ports.calibre-server.tcp; - host = "127.0.0.1"; - }; - - services.calibre-web = { - enable = true; - user = config.services.calibre-server.user; - group = config.services.calibre-server.group; - listen = { - ip = "127.0.0.1"; - port = ports.calibre-web.tcp; + services = { + calibre-server = { + enable = true; + port = ports.calibre-server.tcp; + host = "127.0.0.1"; + }; + + calibre-web = { + enable = true; + inherit (config.services.calibre-server) user; + inherit (config.services.calibre-server) group; + listen = { + ip = "127.0.0.1"; + port = ports.calibre-web.tcp; + }; + options = { + enableBookUploading = true; + reverseProxyAuth = { + enable = true; + header = "X-Remote-User"; + }; + }; }; - options.enableBookUploading = true; - options.reverseProxyAuth.enable = true; - options.reverseProxyAuth.header = "X-Remote-User"; }; systemd.services.calibre-web = { diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index d2bea9e..1bf6d3e 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -5,256 +5,264 @@ let domain = "hass.jalr.de"; in { - sops.secrets.home-assistant = { - sopsFile = ../secrets.yaml; - owner = "root"; - group = "hass"; - mode = "0640"; - }; - sops.secrets."mqtt-users/home-assistant" = { - sopsFile = ../secrets.yaml; - }; - sops.secrets."mqtt-users/valetudo" = { - sopsFile = ../secrets.yaml; - }; - services.home-assistant = { - enable = true; - lovelaceConfig = { - title = "Home"; - views = [ - { - path = "default_view"; - title = "Home"; - cards = [ - { - title = "Eingang"; - type = "entities"; - entities = [ - { - entity = "light.eingang_deckenleuchte_deckenleuchte"; - name = "Deckenleuchte"; - } - ]; - } - { - name = "Esstisch"; - type = "entities"; - entities = [ - { - entity = "light.yeelight_meteorite_ambient_light"; - name = "Ambient light"; - } - { - entity = "light.yeelight_meteorite_ceiling_light"; - name = "Ceiling light"; - } - { - entity = "light.yeelight_meteorite_night_light"; - name = "Night light"; - } - ]; - } - ]; - } - ]; + sops.secrets = { + home-assistant = { + sopsFile = ../secrets.yaml; + owner = "root"; + group = "hass"; + mode = "0640"; }; - extraComponents = [ - # See https://www.home-assistant.io/integrations - "bthome" - "caldav" - "esphome" - "local_todo" - "openweathermap" - "wyoming" - "xiaomi_ble" - "vlc_telnet" - ]; - customComponents = with pkgs.home-assistant-custom-components; [ - adaptive_lighting - ]; - customLovelaceModules = with pkgs.home-assistant-custom-lovelace-modules; [ - valetudo-map-card - ]; - lovelaceConfigWritable = false; - configWritable = false; - config = { - http = { - server_host = [ "127.0.0.1" ]; - server_port = ports.home-assistant.tcp; - use_x_forwarded_for = true; - trusted_proxies = [ "127.0.0.1" ]; - }; - homeassistant = { - unit_system = "metric"; - time_zone = "Europe/Berlin"; - temperature_unit = "C"; - longitude = config.location.longitude; - latitude = config.location.latitude; - external_url = "https://${domain}/"; - internal_url = "https://${domain}/"; - }; - default_config = { }; - adaptive_lighting = { - lights = [ - "light.yeelight_meteorite_ceiling_light" - "light.eingang_deckenleuchte_deckenleuchte" - "light.led_panel_schreibtisch_panel" - "light.kueche_leiste_led_light" - "light.badspiegel_background_light" - "light.badspiegel_front_light" + "mqtt-users/home-assistant" = { + sopsFile = ../secrets.yaml; + }; + "mqtt-users/valetudo" = { + sopsFile = ../secrets.yaml; + }; + }; + + networking.firewall.interfaces = { + "${interfaces.lan}".allowedTCPPorts = [ ports.mqtt.tcp ]; + iot.allowedTCPPorts = [ ports.mqtt.tcp ]; + }; + + services = { + home-assistant = { + enable = true; + lovelaceConfig = { + title = "Home"; + views = [ + { + path = "default_view"; + title = "Home"; + cards = [ + { + title = "Eingang"; + type = "entities"; + entities = [ + { + entity = "light.eingang_deckenleuchte_deckenleuchte"; + name = "Deckenleuchte"; + } + ]; + } + { + name = "Esstisch"; + type = "entities"; + entities = [ + { + entity = "light.yeelight_meteorite_ambient_light"; + name = "Ambient light"; + } + { + entity = "light.yeelight_meteorite_ceiling_light"; + name = "Ceiling light"; + } + { + entity = "light.yeelight_meteorite_night_light"; + name = "Night light"; + } + ]; + } + ]; + } ]; }; - "automation nix" = [ - { - alias = "Waschmaschine fertig Benachrichtigung"; - trigger = { - platform = "state"; - entity_id = "sensor.waschmaschine_aktueller_vorgang"; - to = "Knitterschutz/Ende"; - }; - action = [ - { - service = "notify.mobile_app_shift6mq"; - data = { - message = "Die Waschmaschine hat das Programm beendet."; - title = "Wäsche fertig"; - }; - } + extraComponents = [ + # See https://www.home-assistant.io/integrations + "bthome" + "caldav" + "esphome" + "local_todo" + "openweathermap" + "wyoming" + "xiaomi_ble" + "vlc_telnet" + ]; + customComponents = with pkgs.home-assistant-custom-components; [ + adaptive_lighting + ]; + customLovelaceModules = with pkgs.home-assistant-custom-lovelace-modules; [ + valetudo-map-card + ]; + lovelaceConfigWritable = false; + configWritable = false; + config = { + http = { + server_host = [ "127.0.0.1" ]; + server_port = ports.home-assistant.tcp; + use_x_forwarded_for = true; + trusted_proxies = [ "127.0.0.1" ]; + }; + homeassistant = { + unit_system = "metric"; + time_zone = "Europe/Berlin"; + temperature_unit = "C"; + inherit (config.location) longitude; + inherit (config.location) latitude; + external_url = "https://${domain}/"; + internal_url = "https://${domain}/"; + }; + default_config = { }; + adaptive_lighting = { + lights = [ + "light.yeelight_meteorite_ceiling_light" + "light.eingang_deckenleuchte_deckenleuchte" + "light.led_panel_schreibtisch_panel" + "light.kueche_leiste_led_light" + "light.badspiegel_background_light" + "light.badspiegel_front_light" ]; - } - ]; - "automation ui" = "!include automations.yaml"; - "scene nix" = [ - ]; - "scene ui" = "!include scenes.yaml"; - bluetooth = { }; - device_tracker = [ - { - platform = "bluetooth_le_tracker"; - } - ]; - "script nix" = [ - { - lights_off_except = { - icon = "mdi:home-lightbulb"; - fields.exclude_lights.description = "Excluded lights as list"; - sequence = [ + }; + "automation nix" = [ + { + alias = "Waschmaschine fertig Benachrichtigung"; + trigger = { + platform = "state"; + entity_id = "sensor.waschmaschine_aktueller_vorgang"; + to = "Knitterschutz/Ende"; + }; + action = [ { - service = "logbook.log"; - data_template = { - entity_id = "script.turn_off_lights"; - name = "Exclude log"; - message = "Turning of all lights except: {{ exclude_lights }}"; + service = "notify.mobile_app_shift6mq"; + data = { + message = "Die Waschmaschine hat das Programm beendet."; + title = "Wäsche fertig"; }; } - { - service = "light.turn_off"; - data_template.entity_id = '' - {{ states.light | rejectattr('entity_id', 'in', exclude_lights) | rejectattr('state', 'in', 'off') | join(',', attribute='entity_id') }} - ''; - } ]; + } + ]; + "automation ui" = "!include automations.yaml"; + "scene nix" = [ + ]; + "scene ui" = "!include scenes.yaml"; + bluetooth = { }; + device_tracker = [ + { + platform = "bluetooth_le_tracker"; + } + ]; + "script nix" = [ + { + lights_off_except = { + icon = "mdi:home-lightbulb"; + fields.exclude_lights.description = "Excluded lights as list"; + sequence = [ + { + service = "logbook.log"; + data_template = { + entity_id = "script.turn_off_lights"; + name = "Exclude log"; + message = "Turning of all lights except: {{ exclude_lights }}"; + }; + } + { + service = "light.turn_off"; + data_template.entity_id = '' + {{ states.light | rejectattr('entity_id', 'in', exclude_lights) | rejectattr('state', 'in', 'off') | join(',', attribute='entity_id') }} + ''; + } + ]; + }; + } + ]; + "script ui" = "!include scripts.yaml"; + calendar = [ + { + platform = "caldav"; + username = "jalr@jalr.de"; + password = "!secret radicale"; + url = "https://cal.jalr.de/radicale"; + } + ]; + mqtt = { }; + media_player = [ + { + platform = "mpd"; + name = "mpd@iron"; + host = "127.0.0.1"; + } + ]; + }; + }; + + mosquitto = { + enable = true; + persistence = true; + listeners = [ + { + port = ports.mqtt.tcp; + users = { + valetudo = { + passwordFile = config.sops.secrets."mqtt-users/valetudo".path; + acl = [ + "readwrite homeassistant/+/donald/#" + "readwrite valetudo/donald/#" + ]; + }; + home-assistant = { + passwordFile = config.sops.secrets."mqtt-users/home-assistant".path; + acl = [ "readwrite #" ]; + }; }; } ]; - "script ui" = "!include scripts.yaml"; - calendar = [ - { - platform = "caldav"; - username = "jalr@jalr.de"; - password = "!secret radicale"; - url = "https://cal.jalr.de/radicale"; - } - ]; - mqtt = { }; - media_player = [ - { - platform = "mpd"; - name = "mpd@iron"; - host = "127.0.0.1"; - } - ]; }; }; - services.mosquitto = { - enable = true; - persistence = true; - listeners = [ - { - port = ports.mqtt.tcp; - users = { - valetudo = { - passwordFile = config.sops.secrets."mqtt-users/valetudo".path; - acl = [ - "readwrite homeassistant/+/donald/#" - "readwrite valetudo/donald/#" - ]; - }; - home-assistant = { - passwordFile = config.sops.secrets."mqtt-users/home-assistant".path; - acl = [ "readwrite #" ]; - }; - }; - } + systemd.services = { + home-assistant.serviceConfig.ExecStartPre = [ + ( + pkgs.writeShellScript "home-assistant-secrets" '' + ln -sf "${config.sops.secrets.home-assistant.path}" "${config.services.home-assistant.configDir}/secrets.yaml" + '' + ) ]; - }; - - systemd.services.hass-vlc = { - script = '' - exec ${pkgs.vlc}/bin/cvlc \ - --no-video \ - -I telnet \ - --telnet-password=vlc \ - --sout='#transcode{acodec=s16le,channels=2,samplerate=48000}:std{access=file,mux=raw,dst=/run/snapserver/hass.fifo}' \ - --aout=none - ''; - wants = [ "snapserver.service" ]; - after = [ "snapserver.service" ]; - serviceConfig = { - BindPaths = [ "/run/snapserver/hass.fifo" ]; - BindReadOnlyPaths = [ "/nix/store" "/etc/ssl/certs" "/etc/static/ssl/certs" ]; - CapabilityBoundingSet = ""; - DynamicUser = "true"; - Group = "snapserver"; - LockPersonality = true; - MemoryDenyWriteExecute = true; - NoNewPrivileges = true; - PrivateDevices = lib.mkForce true; - PrivateUsers = true; - ProcSubset = "pid"; - ProtectClock = true; - ProtectControlGroups = true; - ProtectHome = true; - ProtectHostname = true; - ProtectKernelLogs = true; - ProtectKernelModules = true; - ProtectKernelTunables = true; - ProtectProc = "noaccess"; - ProtectSystem = "strict"; - RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; - RestrictNamespaces = true; - RestrictRealtime = true; - RestrictSUIDSGID = true; - RootDirectory = "/run/hass-vlc"; - RuntimeDirectory = "hass-vlc"; - SystemCallArchitectures = "native"; - SystemCallFilter = [ "@system-service" "~@privileged" ]; + hass-vlc = { + script = '' + exec ${pkgs.vlc}/bin/cvlc \ + --no-video \ + -I telnet \ + --telnet-password=vlc \ + --sout='#transcode{acodec=s16le,channels=2,samplerate=48000}:std{access=file,mux=raw,dst=/run/snapserver/hass.fifo}' \ + --aout=none + ''; + wants = [ "snapserver.service" ]; + after = [ "snapserver.service" ]; + serviceConfig = { + BindPaths = [ "/run/snapserver/hass.fifo" ]; + BindReadOnlyPaths = [ "/nix/store" "/etc/ssl/certs" "/etc/static/ssl/certs" ]; + CapabilityBoundingSet = ""; + DynamicUser = "true"; + Group = "snapserver"; + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateDevices = lib.mkForce true; + PrivateUsers = true; + ProcSubset = "pid"; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "noaccess"; + ProtectSystem = "strict"; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + RootDirectory = "/run/hass-vlc"; + RuntimeDirectory = "hass-vlc"; + SystemCallArchitectures = "native"; + SystemCallFilter = [ "@system-service" "~@privileged" ]; + }; + wantedBy = [ "multi-user.target" ]; }; - wantedBy = [ "multi-user.target" ]; }; - networking.firewall.interfaces."${interfaces.lan}".allowedTCPPorts = [ ports.mqtt.tcp ]; - networking.firewall.interfaces.iot.allowedTCPPorts = [ ports.mqtt.tcp ]; - - systemd.services.home-assistant.serviceConfig.ExecStartPre = [ - ( - pkgs.writeShellScript "home-assistant-secrets" '' - ln -sf "${config.sops.secrets.home-assistant.path}" "${config.services.home-assistant.configDir}/secrets.yaml" - '' - ) - ]; - systemd.tmpfiles.rules = [ "f ${config.services.home-assistant.configDir}/automations.yaml 0755 hass hass" "f ${config.services.home-assistant.configDir}/scenes.yaml 0755 hass hass" diff --git a/hosts/iron/services/public-ip-tunnel.nix b/hosts/iron/services/public-ip-tunnel.nix index 2e1dca8..612b041 100644 --- a/hosts/iron/services/public-ip-tunnel.nix +++ b/hosts/iron/services/public-ip-tunnel.nix @@ -13,27 +13,27 @@ let }; in { - sops.secrets = ( - lib.listToAttrs (map - (name: lib.nameValuePair "wireguard_key_${name}" { - sopsFile = ../secrets.yaml; - }) - [ - "hetzner-ha" - ] - ) + sops.secrets = lib.listToAttrs (map + (name: lib.nameValuePair "wireguard_key_${name}" { + sopsFile = ../secrets.yaml; + }) + [ + "hetzner-ha" + ] ); - networking.iproute2.enable = true; - networking.iproute2.rttablesExtraConfig = '' - ${toString rtTable.id} ${rtTable.name} - ''; - - networking.wireguard.interfaces = { - hetzner-ha = { + networking = { + iproute2 = { + enable = true; + rttablesExtraConfig = '' + ${toString rtTable.id} ${rtTable.name} + ''; + }; + firewall.allowedUDPPorts = [ listenPort ]; + wireguard.interfaces.hetzner-ha = { ips = [ "${externalIp}/32" ]; privateKeyFile = config.sops.secrets.wireguard_key_hetzner-ha.path; - listenPort = listenPort; + inherit listenPort; table = rtTable.name; postSetup = '' ${pkgs.iproute2}/bin/ip rule add from ${externalIp} to 192.168.0.0/16 table main priority 10 @@ -44,7 +44,7 @@ in ${pkgs.iproute2}/bin/ip rule del from ${externalIp} table ${rtTable.name} priority 20 ''; peers = [{ - publicKey = publicKey; + inherit publicKey; endpoint = "${remoteHost}:${toString remotePort}"; persistentKeepalive = 25; allowedIPs = [ @@ -53,6 +53,4 @@ in }]; }; }; - - networking.firewall.allowedUDPPorts = [ listenPort ]; } diff --git a/hosts/iron/services/radicale.nix b/hosts/iron/services/radicale.nix index ec367ce..b41a67d 100644 --- a/hosts/iron/services/radicale.nix +++ b/hosts/iron/services/radicale.nix @@ -14,19 +14,21 @@ in enableACME = true; forceSSL = true; basicAuthFile = config.sops.secrets.radicale-htpasswd.path; - locations."/radicale/" = { - proxyPass = "http://127.0.0.1:${toString ports.radicale.tcp}/"; - recommendedProxySettings = true; - #basicAuthFile = ""; - extraConfig = '' - proxy_set_header X-Script-Name /radicale; - proxy_set_header X-Remote-User $remote_user; - ''; - # proxy_pass_request_headers = on; - # underscores_in_headers = on; + locations = { + "/radicale/" = { + proxyPass = "http://127.0.0.1:${toString ports.radicale.tcp}/"; + recommendedProxySettings = true; + #basicAuthFile = ""; + extraConfig = '' + proxy_set_header X-Script-Name /radicale; + proxy_set_header X-Remote-User $remote_user; + ''; + # proxy_pass_request_headers = on; + # underscores_in_headers = on; + }; + "/.well-known/caldav".return = "301 $scheme://$host:$server_port/radicale"; + "/.well-known/carddav".return = "301 $scheme://$host:$server_port/radicale"; }; - locations."/.well-known/caldav".return = "301 $scheme://$host:$server_port/radicale"; - locations."/.well-known/carddav".return = "301 $scheme://$host:$server_port/radicale"; }; }; diff --git a/hosts/iron/services/remarkable.nix b/hosts/iron/services/remarkable.nix index a7b6cad..b8729ac 100644 --- a/hosts/iron/services/remarkable.nix +++ b/hosts/iron/services/remarkable.nix @@ -3,9 +3,9 @@ let ports = import ../ports.nix args; domain = "rmfakecloud.jalr.de"; cfg = config.services.rmfakecloud; - mkEnvironment = (settings: lib.strings.concatLines ( + mkEnvironment = settings: lib.strings.concatLines ( lib.attrsets.mapAttrsToList (name: value: "export ${name}='${value}'") settings - )); + ); managementScript = pkgs.writeShellScriptBin "rmfakecloud" '' [[ $(id -u) == "rmfakecloud" ]] || exec sudo -u rmfakecloud -- "$0" "$@" set -a diff --git a/hosts/iron/services/snapcast/bluetooth-sink.nix b/hosts/iron/services/snapcast/bluetooth-sink.nix index 77418a4..38cf8e3 100644 --- a/hosts/iron/services/snapcast/bluetooth-sink.nix +++ b/hosts/iron/services/snapcast/bluetooth-sink.nix @@ -24,54 +24,44 @@ services.blueman.enable = true; - systemd.services.bluetooth-auto-pair = { - wantedBy = [ - "bluetooth.service" - ]; - after = [ - "bluetooth.service" - ]; - bindsTo = [ - "bluetooth.service" - ]; - serviceConfig = { - Type = "simple"; - ExecStart = pkgs.writeShellScript "exec-start" '' - ${pkgs.bluez}/bin/bluetoothctl < /dev/null; do - sleep 1 - done + port=5555 + adb connect "$host:$port" - echo "Sleeping..." - sleep 5m + echo "Waiting for WhatsApp" + while ! adb -s "$host:$port" shell -- pgrep com.whatsapp > /dev/null; do + sleep 1 + done - echo "Shutting down Android" - adb -s "$host:$port" shell -- reboot -p - ''; + echo "Sleeping..." + sleep 5m + + echo "Shutting down Android" + adb -s "$host:$port" shell -- reboot -p + ''; + }; }; systemd.timers."whatsapp-${vmName}" = { description = "Start Android VM to run WhatsApp"; diff --git a/hosts/magnesium/persistence.nix b/hosts/magnesium/persistence.nix index 9746b37..ed97650 100644 --- a/hosts/magnesium/persistence.nix +++ b/hosts/magnesium/persistence.nix @@ -2,7 +2,7 @@ { boot.initrd.postDeviceCommands = let - device = config.disko.devices.disk.virt.content.partitions.linux.device; + inherit (config.disko.devices.disk.virt.content.partitions.linux) device; in lib.mkAfter '' mkdir /mnt @@ -14,16 +14,17 @@ btrfs subvolume snapshot /mnt/root-blank /mnt/root ''; - services.openssh = { - hostKeys = lib.mkForce [{ - path = "/persist/etc/ssh/ssh_host_ed25519_key"; - type = "ed25519"; - }]; + services = { + openssh = { + hostKeys = lib.mkForce [{ + path = "/persist/etc/ssh/ssh_host_ed25519_key"; + type = "ed25519"; + }]; + }; + forgejo.stateDir = "/persist/var/lib/forgejo"; + postgresql.dataDir = "/persist/var/lib/postgresql/${config.services.postgresql.package.psqlSchema}"; }; - services.forgejo.stateDir = "/persist/var/lib/forgejo"; - services.postgresql.dataDir = "/persist/var/lib/postgresql/${config.services.postgresql.package.psqlSchema}"; - fileSystems."/persist".neededForBoot = true; environment.persistence."/persist" = { hideMounts = true; diff --git a/hosts/magnesium/services/hedgedoc.nix b/hosts/magnesium/services/hedgedoc.nix index 0963f20..633fbdc 100644 --- a/hosts/magnesium/services/hedgedoc.nix +++ b/hosts/magnesium/services/hedgedoc.nix @@ -10,44 +10,44 @@ in owner = config.systemd.services.hedgedoc.serviceConfig.User; sopsFile = ../secrets.yaml; }; - services.hedgedoc = { - enable = true; - settings = - let - day = 24 * 60 * 60 * 1000; - in - { - domain = domain; - protocolUseSSL = true; - csp.enable = true; - port = ports.hedgedoc.tcp; - db = { - dialect = "postgres"; - host = "/run/postgresql"; - user = "hedgedoc"; - database = "hedgedoc"; + services = { + hedgedoc = { + enable = true; + settings = + let + day = 24 * 60 * 60 * 1000; + in + { + inherit domain; + protocolUseSSL = true; + csp.enable = true; + port = ports.hedgedoc.tcp; + db = { + dialect = "postgres"; + host = "/run/postgresql"; + user = "hedgedoc"; + database = "hedgedoc"; + }; + allowEmailRegister = false; + sessionSecret = config.sops.secrets.hedgedoc-session-secret.path; + sessionLife = 90 * day; }; - allowEmailRegister = false; - sessionSecret = config.sops.secrets.hedgedoc-session-secret.path; - sessionLife = 90 * day; + }; + postgresql = { + enable = true; + ensureDatabases = [ "hedgedoc" ]; + ensureUsers = [{ + name = "hedgedoc"; + ensureDBOwnership = true; + }]; + }; + nginx.virtualHosts."${domain}" = { + enableACME = true; + forceSSL = true; + + locations."/" = { + proxyPass = "http://${cfg.settings.host}:${toString cfg.settings.port}"; }; - }; - - services.postgresql = { - enable = true; - ensureDatabases = [ "hedgedoc" ]; - ensureUsers = [{ - name = "hedgedoc"; - ensureDBOwnership = true; - }]; - }; - - services.nginx.virtualHosts."${domain}" = { - enableACME = true; - forceSSL = true; - - locations."/" = { - proxyPass = "http://${cfg.settings.host}:${toString cfg.settings.port}"; }; }; } diff --git a/hosts/magnesium/services/public-ip-tunnel.nix b/hosts/magnesium/services/public-ip-tunnel.nix index 510fff8..28d917d 100644 --- a/hosts/magnesium/services/public-ip-tunnel.nix +++ b/hosts/magnesium/services/public-ip-tunnel.nix @@ -6,15 +6,13 @@ let publicKey = "GCmQs7upvDYFueEfqD2yJkkOZg3K7YaGluWWzdjsyTo="; in { - sops.secrets = ( - lib.listToAttrs (map - (name: lib.nameValuePair "wireguard_key_${name}" { - sopsFile = ../secrets.yaml; - }) - [ - "hetzner-ha" - ] - ) + sops.secrets = lib.listToAttrs (map + (name: lib.nameValuePair "wireguard_key_${name}" { + sopsFile = ../secrets.yaml; + }) + [ + "hetzner-ha" + ] ); #boot.kernel.sysctl = { @@ -22,24 +20,27 @@ in # "net.ipv4.conf.hetzner-ha.proxy_arp" = 1; # "net.ipv4.conf.enp1s0.proxy_arp" = 1; #}; - networking.interfaces.hetzner-ha.proxyARP = true; - networking.interfaces.enp1s0.proxyARP = true; - networking.wireguard.interfaces = { - hetzner-ha = { - ips = [ ]; - privateKeyFile = config.sops.secrets.wireguard_key_hetzner-ha.path; - listenPort = listenPort; + networking = { + interfaces = { + hetzner-ha.proxyARP = true; + enp1s0.proxyARP = true; + }; + firewall.allowedUDPPorts = [ listenPort ]; + wireguard.interfaces = { + hetzner-ha = { + ips = [ ]; + privateKeyFile = config.sops.secrets.wireguard_key_hetzner-ha.path; + inherit listenPort; - peers = [{ - publicKey = publicKey; - persistentKeepalive = 25; - allowedIPs = [ - "159.69.103.126/32" - ]; - }]; + peers = [{ + inherit publicKey; + persistentKeepalive = 25; + allowedIPs = [ + "159.69.103.126/32" + ]; + }]; + }; }; }; - - networking.firewall.allowedUDPPorts = [ listenPort ]; } diff --git a/hosts/weinturm-pretix-prod/hardware-configuration.nix b/hosts/weinturm-pretix-prod/hardware-configuration.nix index ba13c46..a0ae780 100644 --- a/hosts/weinturm-pretix-prod/hardware-configuration.nix +++ b/hosts/weinturm-pretix-prod/hardware-configuration.nix @@ -2,10 +2,14 @@ { imports = [ (modulesPath + "/profiles/qemu-guest.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "virtio_pci" "virtio_scsi" "usbhid" "sr_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; + boot = { + initrd = { + availableKernelModules = [ "xhci_pci" "virtio_pci" "virtio_scsi" "usbhid" "sr_mod" ]; + kernelModules = [ ]; + }; + kernelModules = [ ]; + extraModulePackages = [ ]; + }; fileSystems = { "/" = { diff --git a/hosts/weinturm-pretix-prod/services/pretix.nix b/hosts/weinturm-pretix-prod/services/pretix.nix index 29edd2b..7fe04d7 100644 --- a/hosts/weinturm-pretix-prod/services/pretix.nix +++ b/hosts/weinturm-pretix-prod/services/pretix.nix @@ -23,67 +23,15 @@ in }; }; - services.pretix = { - enable = true; - settings = { - pretix = { - instance_name = "Digitaler Dienst GmbH"; - url = "https://${domain}"; - registration = false; - password_reset = true; - }; - locale = { - default = "de"; - timezone = "Europe/Berlin"; - }; - mail = { - from = "no-reply@tickets.weinturm-open-air.de"; - }; - redis.location = "unix:///run/redis-pretix/redis.sock?db=0"; - celery.backend = "redis+socket:///run/redis-pretix/redis.sock?virtual_host=2"; - celery.broker = "redis+socket:///run/redis-pretix/redis.sock?virtual_host=1"; - }; - nginx = { - enable = true; - inherit domain; - }; - gunicorn = { - extraArgs = [ - "--workers=${toString gunicornWorkers}" - ]; - }; - }; - # Add user to `redis-pretix` group # to grant access to /run/redis-pretix/redis.sock users.users.pretix.extraGroups = [ "redis-pretix" ]; - services.pretix-banktool = { - enable = true; - days = 14; - secretsFile = config.sops.secrets.pretix-banktool-cfg.path; - }; - networking.firewall.allowedTCPPorts = [ 80 443 ]; - services.nginx = lib.mkIf cfg.nginx.enable { - recommendedGzipSettings = true; - recommendedOptimisation = true; - recommendedProxySettings = true; - recommendedTlsSettings = true; - virtualHosts = { - "${cfg.nginx.domain}" = { - enableACME = true; - forceSSL = true; - kTLS = true; - extraConfig = '' - add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload' always; - more_set_headers Referrer-Policy same-origin; - more_set_headers X-Content-Type-Options nosniff; - ''; - serverAliases = extraDomains; - }; - }; + security.acme = { + acceptTerms = true; + defaults.email = lib.mkForce "helfer@weinturm-open-air.de"; }; jalr.mailserver = { @@ -101,8 +49,62 @@ in spam.enable = false; }; - security.acme = { - acceptTerms = true; - defaults.email = lib.mkForce "helfer@weinturm-open-air.de"; + services = { + pretix = { + enable = true; + settings = { + pretix = { + instance_name = "Digitaler Dienst GmbH"; + url = "https://${domain}"; + registration = false; + password_reset = true; + }; + locale = { + default = "de"; + timezone = "Europe/Berlin"; + }; + mail = { + from = "no-reply@tickets.weinturm-open-air.de"; + }; + redis.location = "unix:///run/redis-pretix/redis.sock?db=0"; + celery.backend = "redis+socket:///run/redis-pretix/redis.sock?virtual_host=2"; + celery.broker = "redis+socket:///run/redis-pretix/redis.sock?virtual_host=1"; + }; + nginx = { + enable = true; + inherit domain; + }; + gunicorn = { + extraArgs = [ + "--workers=${toString gunicornWorkers}" + ]; + }; + }; + + pretix-banktool = { + enable = true; + days = 14; + secretsFile = config.sops.secrets.pretix-banktool-cfg.path; + }; + + nginx = lib.mkIf cfg.nginx.enable { + recommendedGzipSettings = true; + recommendedOptimisation = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + virtualHosts = { + "${cfg.nginx.domain}" = { + enableACME = true; + forceSSL = true; + kTLS = true; + extraConfig = '' + add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload' always; + more_set_headers Referrer-Policy same-origin; + more_set_headers X-Content-Type-Options nosniff; + ''; + serverAliases = extraDomains; + }; + }; + }; }; } diff --git a/modules/bluetooth.nix b/modules/bluetooth.nix index 4b3cf33..6c478b7 100644 --- a/modules/bluetooth.nix +++ b/modules/bluetooth.nix @@ -9,9 +9,11 @@ in }; config = lib.mkIf cfg.bluetooth.enable { hardware.bluetooth.enable = true; - services.blueman.enable = true; - services.ofono.enable = true; - services.upower.enable = true; + services = { + blueman.enable = true; + ofono.enable = true; + upower.enable = true; + }; hardware.bluetooth.settings.General.Experimental = true; # to show battery state }; } diff --git a/modules/luksusb.nix b/modules/luksusb.nix index 1edb442..2015955 100644 --- a/modules/luksusb.nix +++ b/modules/luksusb.nix @@ -45,20 +45,19 @@ in }); }; }; - config = lib.mkIf cfg.enable - ( - let - makeUsbDevPath = usbDevice: "/dev/disk/" + usbDevice; - makeMountPath = usbDevice: "/key/" + (builtins.hashString "md5" usbDevice); - usbFsType = "vfat"; + config = lib.mkIf cfg.enable ( + let + makeUsbDevPath = usbDevice: "/dev/disk/" + usbDevice; + makeMountPath = usbDevice: "/key/" + (builtins.hashString "md5" usbDevice); + usbFsType = "vfat"; - mapAttrsNameValue = f: set: - lib.listToAttrs (map f (lib.attrsToList set)); - in - { - boot.initrd.kernelModules = [ "uas" "usbcore" "usb_storage" "vfat" "nls_cp437" "nls_iso8859_1" ]; - - boot.initrd.systemd.services = + mapAttrsNameValue = f: set: + lib.listToAttrs (map f (lib.attrsToList set)); + in + { + boot.initrd = { + kernelModules = [ "uas" "usbcore" "usb_storage" "vfat" "nls_cp437" "nls_iso8859_1" ]; + systemd.services = let makeService = name: { keyPath, usbDevice, waitForDevice }: let @@ -89,7 +88,12 @@ in if [ -e ${lib.escapeShellArg usbDevPath} ]; then mkdir -m0500 -p ${lib.escapeShellArg usbMountPath} - mount -n -t ${lib.escapeShellArg usbFsType} -o ro,fmask=0137,dmask=0027 ${lib.escapeShellArg usbDevPath} ${lib.escapeShellArg usbMountPath} + mount \ + -n \ + -t ${lib.escapeShellArg usbFsType} \ + -o ro,fmask=0137,dmask=0027 \ + ${lib.escapeShellArg usbDevPath} \ + ${lib.escapeShellArg usbMountPath} fi ''; }; @@ -101,7 +105,7 @@ in }) cfg.devices; - boot.initrd.luks.devices = builtins.mapAttrs + luks.devices = builtins.mapAttrs (name: { keyPath, usbDevice, ... }: let usbMountPath = makeMountPath usbDevice; @@ -111,6 +115,7 @@ in keyFileTimeout = 1; }) cfg.devices; - } - ); + }; + } + ); } diff --git a/modules/mailserver/postfix.nix b/modules/mailserver/postfix.nix index 15d1d72..78ee32b 100644 --- a/modules/mailserver/postfix.nix +++ b/modules/mailserver/postfix.nix @@ -5,26 +5,26 @@ let listToString = lib.concatStringsSep ","; # List of attribute sets with single key-value pair - plainAliases = (lib.flatten + plainAliases = lib.flatten (map ({ address, aliases, ... }: map (alias: { "${alias}" = address; }) (aliases ++ lib.singleton address)) - cfg.users)); + cfg.users); # Attribute set with every alias mapped to a list of receivers - mergedAliases = (lib.attrsets.foldAttrs + mergedAliases = lib.attrsets.foldAttrs (val: col: lib.singleton val ++ col) [ ] - plainAliases); + plainAliases; # Contents of the aliases file - aliasesString = (lib.concatStringsSep + aliasesString = lib.concatStringsSep "\n" (lib.mapAttrsToList (alias: addresses: "${alias} ${listToString addresses}") - mergedAliases)); + mergedAliases); valiases = pkgs.writeText "valiases" aliasesString; @@ -38,7 +38,7 @@ lib.mkIf cfg.enable { services.postfix = { enable = true; - relayPort = cfg.relayPort; + inherit (cfg) relayPort; enableSubmission = false; # plain/STARTTLS (latter is forced in submissionOptions) enableSubmissions = true; # submission with implicit TLS (TCP/465) diff --git a/modules/mailserver/rspamd.nix b/modules/mailserver/rspamd.nix index a7e0992..ee205de 100644 --- a/modules/mailserver/rspamd.nix +++ b/modules/mailserver/rspamd.nix @@ -6,7 +6,7 @@ let # nix shell nixpkgs#rspamd -c \ # rspamadm dkim_keygen -s default -d example.com -b 4096 -k /dev/shm/dkim.key > dkim.txt - dkimEnabledDomains = (lib.filter (d: d.enableDKIM) cfg.domains); + dkimEnabledDomains = lib.filter (d: d.enableDKIM) cfg.domains; dkimSignatureDir = pkgs.stdenvNoCC.mkDerivation { name = "dkim-signatures"; dontUnpack = true; diff --git a/modules/matrix/default.nix b/modules/matrix/default.nix index d237ca5..bbdce2d 100644 --- a/modules/matrix/default.nix +++ b/modules/matrix/default.nix @@ -65,7 +65,7 @@ in type = port; }; settings = mkOption { - type = (pkgs.formats.json { }).type; + inherit ((pkgs.formats.json { })) type; }; }; mautrix-whatsapp = { @@ -75,7 +75,7 @@ in type = port; }; settings = mkOption { - type = (pkgs.formats.json { }).type; + inherit ((pkgs.formats.json { })) type; }; }; }; diff --git a/modules/matrix/mautrix-signal.nix b/modules/matrix/mautrix-signal.nix index d1db25d..09c932e 100644 --- a/modules/matrix/mautrix-signal.nix +++ b/modules/matrix/mautrix-signal.nix @@ -16,7 +16,7 @@ lib.mkIf cfg.mautrix-signal.enable { }; appservice = rec { hostname = "127.0.0.1"; - port = cfg.mautrix-signal.port; + inherit (cfg.mautrix-signal) port; address = "http://${hostname}:${toString port}"; provisioning.shared_secret = "disable"; database = "sqlite:///${dataDir}/mautrix-signal.db"; diff --git a/modules/matrix/mautrix-whatsapp.nix b/modules/matrix/mautrix-whatsapp.nix index aa49668..f365efc 100644 --- a/modules/matrix/mautrix-whatsapp.nix +++ b/modules/matrix/mautrix-whatsapp.nix @@ -15,7 +15,7 @@ lib.mkIf cfg.mautrix-whatsapp.enable { }; appservice = rec { hostname = "127.0.0.1"; - port = cfg.mautrix-whatsapp.port; + inherit (cfg.mautrix-whatsapp) port; address = "http://${hostname}:${toString port}"; provisioning.shared_secret = "disable"; database = { diff --git a/modules/matrix/synapse.nix b/modules/matrix/synapse.nix index d29c4d4..c590b42 100644 --- a/modules/matrix/synapse.nix +++ b/modules/matrix/synapse.nix @@ -4,84 +4,107 @@ let cfg = config.jalr.matrix; in lib.mkIf cfg.enable { - services.matrix-synapse = { - enable = true; + services = { + matrix-synapse = { + enable = true; - settings = { - server_name = cfg.domain; - public_baseurl = "https://${cfg.fqdn}"; + settings = { + server_name = cfg.domain; + public_baseurl = "https://${cfg.fqdn}"; - database.name = "sqlite3"; + database.name = "sqlite3"; - listeners = lib.singleton { - port = cfg.synapse.port; - bind_addresses = [ "127.0.0.1" "::1" ]; - type = "http"; - tls = false; - x_forwarded = true; - resources = lib.singleton { - names = [ "client" "federation" "metrics" ]; - compress = false; + listeners = lib.singleton { + inherit (cfg.synapse) port; + bind_addresses = [ "127.0.0.1" "::1" ]; + type = "http"; + tls = false; + x_forwarded = true; + resources = lib.singleton { + names = [ "client" "federation" "metrics" ]; + compress = false; + }; }; + + turn_uris = [ + "turns:${cfg.turn.host}:5349?transport=udp" + "turns:${cfg.turn.host}:5349?transport=tcp" + "turn:${cfg.turn.host}:3478?transport=udp" + "turn:${cfg.turn.host}:3478?transport=tcp" + ]; + turn_user_lifetime = "1h"; + + enable_metrics = true; + + # adapted from https://github.com/NixOS/nixpkgs/blob/7e10bf4327491a6ebccbe1aaa8e6c6c0aca4663a/nixos/modules/services/misc/matrix-synapse-log_config.yaml + # - set root.level to WARNING instead of INFO + log_config = pkgs.writeText "log_config.yaml" (builtins.toJSON { + version = 1; + + formatters.journal_fmt.format = "%(name)s: [%(request)s] %(message)s"; + + filters.context = { + "()" = "synapse.util.logcontext.LoggingContextFilter"; + request = ""; + }; + + handlers.journal = { + class = "systemd.journal.JournalHandler"; + formatter = "journal_fmt"; + filters = [ "context" ]; + SYSLOG_IDENTIFIER = "synapse"; + }; + + root = { + level = "WARNING"; + handlers = [ "journal" ]; + }; + + disable_existing_loggers = false; + }); + + max_upload_size = "50M"; + + # I’m okay with using matrix.org as trusted key server + suppress_key_server_warning = true; + + # For mautrix-whatsapp backfilling + experimental_features.msc2716_enabled = true; }; - turn_uris = [ - "turns:${cfg.turn.host}:5349?transport=udp" - "turns:${cfg.turn.host}:5349?transport=tcp" - "turn:${cfg.turn.host}:3478?transport=udp" - "turn:${cfg.turn.host}:3478?transport=tcp" + extraConfigFiles = [ + cfg.turn.sharedSecretFile ]; - turn_user_lifetime = "1h"; - - enable_metrics = true; - - # adapted from https://github.com/NixOS/nixpkgs/blob/7e10bf4327491a6ebccbe1aaa8e6c6c0aca4663a/nixos/modules/services/misc/matrix-synapse-log_config.yaml - # - set root.level to WARNING instead of INFO - log_config = pkgs.writeText "log_config.yaml" (builtins.toJSON { - version = 1; - - formatters.journal_fmt.format = "%(name)s: [%(request)s] %(message)s"; - - filters.context = { - "()" = "synapse.util.logcontext.LoggingContextFilter"; - request = ""; - }; - - handlers.journal = { - class = "systemd.journal.JournalHandler"; - formatter = "journal_fmt"; - filters = [ "context" ]; - SYSLOG_IDENTIFIER = "synapse"; - }; - - root = { - level = "WARNING"; - handlers = [ "journal" ]; - }; - - disable_existing_loggers = false; - }); - - max_upload_size = "50M"; - - # I’m okay with using matrix.org as trusted key server - suppress_key_server_warning = true; - - # For mautrix-whatsapp backfilling - experimental_features.msc2716_enabled = true; }; - extraConfigFiles = [ - cfg.turn.sharedSecretFile - ]; + matrix-synapse.settings.app_service_config_files = lib.attrsets.mapAttrsToList + ( + name: value: + "/run/matrix-synapse/app_service_config/${name}.yaml" + ) + cfg.synapse.app_service_config; + + nginx.virtualHosts = { + "${cfg.fqdn}" = { + enableACME = true; + forceSSL = true; + + locations."/_matrix" = + let + listenerCfg = lib.elemAt config.services.matrix-synapse.settings.listeners 0; + in + { + proxyPass = "http://${lib.elemAt listenerCfg.bind_addresses 0}:${toString listenerCfg.port}"; + + extraConfig = '' + client_max_body_size ${config.services.matrix-synapse.settings.max_upload_size}; + ''; + }; + }; + + }; }; - services.matrix-synapse.settings.app_service_config_files = lib.attrsets.mapAttrsToList - ( - name: value: - "/run/matrix-synapse/app_service_config/${name}.yaml" - ) - cfg.synapse.app_service_config; systemd.services.matrix-synapse = { restartTriggers = lib.attrsets.mapAttrsToList ( @@ -109,24 +132,4 @@ lib.mkIf cfg.enable { cfg.synapse.app_service_config; }; }; - - services.nginx.virtualHosts = { - "${cfg.fqdn}" = { - enableACME = true; - forceSSL = true; - - locations."/_matrix" = - let - listenerCfg = (lib.elemAt config.services.matrix-synapse.settings.listeners 0); - in - { - proxyPass = "http://${lib.elemAt listenerCfg.bind_addresses 0}:${toString listenerCfg.port}"; - - extraConfig = '' - client_max_body_size ${config.services.matrix-synapse.settings.max_upload_size}; - ''; - }; - }; - - }; } diff --git a/modules/nix.nix b/modules/nix.nix index 3135b37..689184e 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -45,7 +45,7 @@ (final: prev: { master = import inputs.nixpkgsMaster { inherit system; - config = prev.config; + inherit (prev) config; }; }) ]; diff --git a/modules/providers/hetzner-cloud.nix b/modules/providers/hetzner-cloud.nix index 3fb1032..c1e0b16 100644 --- a/modules/providers/hetzner-cloud.nix +++ b/modules/providers/hetzner-cloud.nix @@ -67,7 +67,7 @@ in extraArgs = [ "-f" ]; postCreateHook = let - device = cfg.devices.disk.virt.content.partitions.linux.device; + inherit (cfg.devices.disk.virt.content.partitions.linux) device; in '' mountpoint="$(mktemp -d)" diff --git a/modules/qbittorrent/default.nix b/modules/qbittorrent/default.nix index 6065479..12771a4 100644 --- a/modules/qbittorrent/default.nix +++ b/modules/qbittorrent/default.nix @@ -49,7 +49,7 @@ in ]; sops.secrets.sturzbach-htpasswd = { - sopsFile = cfg.sopsFile; + inherit (cfg) sopsFile; owner = "nginx"; }; diff --git a/modules/sway.nix b/modules/sway.nix index a840d71..5dda16f 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -1,10 +1,14 @@ { config, lib, pkgs, ... }: lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { - programs.sway = { - enable = true; - xwayland.enable = true; - wrapperFeatures.gtk = true; + programs = { + wshowkeys.enable = true; + dconf.enable = true; + sway = { + enable = true; + xwayland.enable = true; + wrapperFeatures.gtk = true; + }; }; hardware.graphics.enable = true; @@ -19,6 +23,7 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { }]; xdg = { + icons.enable = true; portal = { enable = true; extraPortals = with pkgs; [ @@ -27,13 +32,8 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { ]; xdgOpenUsePortal = true; }; - icons.enable = true; }; - programs.wshowkeys.enable = true; - - programs.dconf.enable = true; - environment.systemPackages = with pkgs; [ adwaita-icon-theme ]; diff --git a/modules/unfree.nix b/modules/unfree.nix index 3394261..e5f3549 100644 --- a/modules/unfree.nix +++ b/modules/unfree.nix @@ -1,8 +1,8 @@ { lib, ... }: { - nixpkgs.config.allowUnfreePredicate = (pkg: lib.elem (lib.getName pkg) [ + nixpkgs.config.allowUnfreePredicate = pkg: lib.elem (lib.getName pkg) [ "unifi-controller" "mongodb" - ]); + ]; } diff --git a/pkgs/default.nix b/pkgs/default.nix index 974d6a2..2671fe0 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,4 +1,4 @@ -{ ... }@inputs: +inputs: final: prev: let diff --git a/pkgs/myintercom-doorbell/module.nix b/pkgs/myintercom-doorbell/module.nix index 066b9ca..3dfefde 100644 --- a/pkgs/myintercom-doorbell/module.nix +++ b/pkgs/myintercom-doorbell/module.nix @@ -84,73 +84,73 @@ in config = lib.mkIf cfg.enable { environment.etc."myintercom-doorbell/settings.json".text = builtins.toJSON { - host = cfg.host; - username = cfg.username; - passwordFile = cfg.passwordFile; + inherit (cfg) host; + inherit (cfg) username; + inherit (cfg) passwordFile; audiosocket = { - address = cfg.audiosocket.address; - port = cfg.audiosocket.port; - uuid = cfg.audiosocket.uuid; + inherit (cfg.audiosocket) address; + inherit (cfg.audiosocket) port; + inherit (cfg.audiosocket) uuid; }; - callerId = cfg.callerId; - dialTime = cfg.dialTime; + inherit (cfg) callerId; + inherit (cfg) dialTime; }; - systemd.services.myintercom-doorbell-poll = { - enable = cfg.enable; - description = "Polls myintercom doorbell ring button status."; - after = [ "asterisk.service" "network.target" ]; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - Type = "simple"; - User = "asterisk"; - # @TODO: Use unstable only until 23.11 is released - ExecStart = "${pkgs.myintercom-doorbell}/bin/myintercom-doorbell-poll"; + systemd.services = { + myintercom-doorbell-poll = { + inherit (cfg) enable; + description = "Polls myintercom doorbell ring button status."; + after = [ "asterisk.service" "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "simple"; + User = "asterisk"; + # @TODO: Use unstable only until 23.11 is released + ExecStart = "${pkgs.myintercom-doorbell}/bin/myintercom-doorbell-poll"; + }; }; - }; - - systemd.services.myintercom-doorbell-audiosocket = { - enable = cfg.enable; - description = "myintercom doorbell AudioSocket for Asterisk"; - requires = [ "asterisk.service" ]; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - Type = "simple"; - DynamicUser = true; - CapabilityBoundingSet = null; - PrivateUsers = true; - ProtectHome = true; - RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; - RestrictNamespaces = true; - SystemCallFilter = "@system-service"; - LoadCredential = "password:${cfg.passwordFile}"; - Environment = [ - "LISTEN_ADDRESS=${cfg.audiosocket.address}" - "LISTEN_PORT=${toString cfg.audiosocket.port}" - "HOST=${cfg.host}" - "USERNAME=${cfg.username}" - "PASSWORD_FILE=%d/password" - ]; - ExecStart = "${pkgs.myintercom-doorbell}/bin/myintercom-doorbell-audiosocket"; + myintercom-doorbell-audiosocket = { + inherit (cfg) enable; + description = "myintercom doorbell AudioSocket for Asterisk"; + requires = [ "asterisk.service" ]; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "simple"; + DynamicUser = true; + CapabilityBoundingSet = null; + PrivateUsers = true; + ProtectHome = true; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; + RestrictNamespaces = true; + SystemCallFilter = "@system-service"; + LoadCredential = "password:${cfg.passwordFile}"; + Environment = [ + "LISTEN_ADDRESS=${cfg.audiosocket.address}" + "LISTEN_PORT=${toString cfg.audiosocket.port}" + "HOST=${cfg.host}" + "USERNAME=${cfg.username}" + "PASSWORD_FILE=%d/password" + ]; + ExecStart = "${pkgs.myintercom-doorbell}/bin/myintercom-doorbell-audiosocket"; + }; }; - }; - - systemd.services.myintercom-doorbell-cam-proxy = { - enable = cfg.cam.enable; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; - description = "Proxies the videostream of myintercom doorbell."; - script = '' - sed "s:__PASSWORD__:$(cat "$PASSWORD_FILE"):" "${mediamtxConfig}" | ${pkgs.master.mediamtx}/bin/mediamtx /dev/stdin - ''; - serviceConfig = { - Type = "simple"; - DynamicUser = true; - LoadCredential = "password:${cfg.passwordFile}"; - Environment = [ - "PASSWORD_FILE=%d/password" - ]; + myintercom-doorbell-cam-proxy = { + inherit (cfg.cam) enable; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + description = "Proxies the videostream of myintercom doorbell."; + script = '' + sed "s:__PASSWORD__:$(cat "$PASSWORD_FILE"):" "${mediamtxConfig}" | ${pkgs.master.mediamtx}/bin/mediamtx /dev/stdin + ''; + serviceConfig = { + Type = "simple"; + DynamicUser = true; + LoadCredential = "password:${cfg.passwordFile}"; + Environment = [ + "PASSWORD_FILE=%d/password" + ]; + }; }; }; }; diff --git a/pkgs/wofi-bluetooth/wofi-bluetooth.nix b/pkgs/wofi-bluetooth/wofi-bluetooth.nix index 1b1cad6..5f6e408 100644 --- a/pkgs/wofi-bluetooth/wofi-bluetooth.nix +++ b/pkgs/wofi-bluetooth/wofi-bluetooth.nix @@ -8,8 +8,8 @@ stdenv.mkDerivation rec { pname = "wofi-bluetooth"; - version = rofi-bluetooth.version; - src = rofi-bluetooth.src; + inherit (rofi-bluetooth) version; + inherit (rofi-bluetooth) src; patches = [ ./wofi-bluetooth.patch ]; diff --git a/users/jalr/modules/alacritty.nix b/users/jalr/modules/alacritty.nix index 77f3b5b..4196df8 100644 --- a/users/jalr/modules/alacritty.nix +++ b/users/jalr/modules/alacritty.nix @@ -128,7 +128,7 @@ in { programs.alacritty = { - enable = nixosConfig.jalr.gui.enable; + inherit (nixosConfig.jalr.gui) enable; }; xdg.configFile = lib.attrsets.mapAttrs' diff --git a/users/jalr/modules/aws.nix b/users/jalr/modules/aws.nix index 85bbd23..c37e6d5 100644 --- a/users/jalr/modules/aws.nix +++ b/users/jalr/modules/aws.nix @@ -1,7 +1,7 @@ { nixosConfig, lib, pkgs, config, ... }: let - xdg = config.xdg; + inherit (config) xdg; in { config = lib.mkIf nixosConfig.jalr.aws.enable { @@ -17,7 +17,7 @@ in xdg.configFile."aws/config".text = lib.generators.toINI { } ( lib.mapAttrs' (name: value: - lib.attrsets.nameValuePair ("profile ${name}") (value) + lib.attrsets.nameValuePair "profile ${name}" value ) nixosConfig.jalr.aws.accounts // diff --git a/users/jalr/modules/cli/htop.nix b/users/jalr/modules/cli/htop.nix index 86dbf6c..cc0b753 100644 --- a/users/jalr/modules/cli/htop.nix +++ b/users/jalr/modules/cli/htop.nix @@ -12,8 +12,7 @@ } // (with config.lib.htop; leftMeters ([ (bar "LeftCPUs") (bar "Memory") - ] ++ lib.lists.optional nixosConfig.zramSwap.enable (bar "Zram") ++ [ - ] ++ lib.lists.optional (!(nixosConfig.swapDevices == [ ])) (bar "Swap") ++ [ + ] ++ lib.lists.optional nixosConfig.zramSwap.enable (bar "Zram") ++ lib.lists.optional (nixosConfig.swapDevices != [ ]) (bar "Swap") ++ [ (bar "DiskIO") ])) // (with config.lib.htop; rightMeters [ (bar "RightCPUs") diff --git a/users/jalr/modules/dynamic-colors.nix b/users/jalr/modules/dynamic-colors.nix index 2b1548a..cb318e0 100644 --- a/users/jalr/modules/dynamic-colors.nix +++ b/users/jalr/modules/dynamic-colors.nix @@ -40,18 +40,16 @@ let target = "myclirc"; } { - exec = ( + exec = if nixosConfig.jalr.gui.enable then [ "/usr/bin/env" "gsettings" "set" "org.gnome.desktop.interface" "color-scheme" "prefer-%scheme%" ] - else null - ); + else null; } { - exec = ( + exec = if nixosConfig.jalr.gui.enable then [ "/usr/bin/env" "gsettings" "set" "org.gnome.desktop.interface" "gtk-theme" "Adwaita-%scheme%" ] - else null - ); + else null; } ]; dynamic-colors = pkgs.writers.writePython3Bin "dynamic-colors" { } '' diff --git a/users/jalr/modules/firefox/default.nix b/users/jalr/modules/firefox/default.nix index aab0eac..db34d62 100644 --- a/users/jalr/modules/firefox/default.nix +++ b/users/jalr/modules/firefox/default.nix @@ -1,7 +1,7 @@ { nixosConfig, pkgs, ... }: { programs.firefox = { - enable = nixosConfig.jalr.gui.enable; + inherit (nixosConfig.jalr.gui) enable; package = pkgs.firefox-esr; policies = { AllowedDomainsForApps = ""; @@ -155,113 +155,115 @@ } ]; */ - SearchEngines.Default = "DuckDuckGo"; - SearchEngines.Remove = [ - "Google" - "Wikipedia (en)" - ]; - SearchEngines.Add = [ - { - Name = "Startpage"; - URLTemplate = "https://www.startpage.com/sp/search"; - Method = "POST"; - PostData = "qadf=none&query={searchTerms}"; - IconURL = "https://www.startpage.com/sp/cdn/favicons/mobile/android-icon-192x192.png"; - Alias = "sp"; - } - { - Name = "DuckDuckGo"; - URLTemplate = "https://duckduckgo.com/?q={searchTerms}"; - Method = "GET"; - IconURL = "https://duckduckgo.com/favicon.ico"; - Alias = "ddg"; - } + SearchEngines = { + Default = "DuckDuckGo"; + Remove = [ + "Google" + "Wikipedia (en)" + ]; + Add = [ + { + Name = "Startpage"; + URLTemplate = "https://www.startpage.com/sp/search"; + Method = "POST"; + PostData = "qadf=none&query={searchTerms}"; + IconURL = "https://www.startpage.com/sp/cdn/favicons/mobile/android-icon-192x192.png"; + Alias = "sp"; + } + { + Name = "DuckDuckGo"; + URLTemplate = "https://duckduckgo.com/?q={searchTerms}"; + Method = "GET"; + IconURL = "https://duckduckgo.com/favicon.ico"; + Alias = "ddg"; + } - # Wikipedia - { - Name = "Wikipedia en"; - URLTemplate = "https://en.wikipedia.org/wiki/Special:Search?search={searchTerms}"; - Method = "GET"; - IconURL = "https://en.wikipedia.org/static/images/icons/wikipedia.png"; - Alias = "wen"; - } - { - Name = "Wikipedia de"; - URLTemplate = "https://de.wikipedia.org/w/index.php?search={searchTerms}"; - Method = "GET"; - IconURL = "https://www.wikipedia.de/img/wikipedia.png"; - Alias = "wde"; - } - { - Name = "Nix Packages"; - URLTemplate = "https://search.nixos.org/packages?query={searchTerms}"; - Method = "GET"; - IconURL = "https://nixos.org/favicon.png"; - Alias = "pkg"; - } - { - Name = "NixOS Options"; - URLTemplate = "https://search.nixos.org/options?query={searchTerms}"; - Method = "GET"; - IconURL = "https://nixos.org/favicon.png"; - Alias = "opt"; - } - { - Name = "Docker images"; - URLTemplate = "https://hub.docker.com/search/?q={searchTerms}"; - Method = "GET"; - IconURL = "https://hub.docker.com/favicon.ico"; - Alias = "docker"; - } - { - Name = "GitHub"; - URLTemplate = "https://github.com/search?q={searchTerms}"; - Method = "GET"; - IconURL = "https://github.githubassets.com/favicons/favicon.svg"; - Alias = "gh"; - } + # Wikipedia + { + Name = "Wikipedia en"; + URLTemplate = "https://en.wikipedia.org/wiki/Special:Search?search={searchTerms}"; + Method = "GET"; + IconURL = "https://en.wikipedia.org/static/images/icons/wikipedia.png"; + Alias = "wen"; + } + { + Name = "Wikipedia de"; + URLTemplate = "https://de.wikipedia.org/w/index.php?search={searchTerms}"; + Method = "GET"; + IconURL = "https://www.wikipedia.de/img/wikipedia.png"; + Alias = "wde"; + } + { + Name = "Nix Packages"; + URLTemplate = "https://search.nixos.org/packages?query={searchTerms}"; + Method = "GET"; + IconURL = "https://nixos.org/favicon.png"; + Alias = "pkg"; + } + { + Name = "NixOS Options"; + URLTemplate = "https://search.nixos.org/options?query={searchTerms}"; + Method = "GET"; + IconURL = "https://nixos.org/favicon.png"; + Alias = "opt"; + } + { + Name = "Docker images"; + URLTemplate = "https://hub.docker.com/search/?q={searchTerms}"; + Method = "GET"; + IconURL = "https://hub.docker.com/favicon.ico"; + Alias = "docker"; + } + { + Name = "GitHub"; + URLTemplate = "https://github.com/search?q={searchTerms}"; + Method = "GET"; + IconURL = "https://github.githubassets.com/favicons/favicon.svg"; + Alias = "gh"; + } - # Shopping - { - Name = "Amazon de"; - URLTemplate = "https://www.amazon.de/s?k={searchTerms}"; - Method = "GET"; - IconURL = "https://www.amazon.de/favicon.ico"; - Alias = "amde"; - } - { - Name = "Ebay de"; - URLTemplate = "https://www.ebay.de/sch/i.html?_nkw={searchTerms}"; - Method = "GET"; - IconURL = "https://pages.ebay.com/favicon.ico"; - Alias = "ebde"; - } + # Shopping + { + Name = "Amazon de"; + URLTemplate = "https://www.amazon.de/s?k={searchTerms}"; + Method = "GET"; + IconURL = "https://www.amazon.de/favicon.ico"; + Alias = "amde"; + } + { + Name = "Ebay de"; + URLTemplate = "https://www.ebay.de/sch/i.html?_nkw={searchTerms}"; + Method = "GET"; + IconURL = "https://pages.ebay.com/favicon.ico"; + Alias = "ebde"; + } - # Dictionary - { - Name = "dict.cc"; - URLTemplate = "https://www.dict.cc/?s={searchTerms}"; - Method = "GET"; - IconURL = "https://www4.dict.cc/img/favicons/favicon4.png"; - Alias = "dcc"; - } - { - Name = "Duden"; - URLTemplate = "https://www.duden.de/suchen/dudenonline/{searchTerms}"; - Method = "GET"; - IconURL = "https://www.duden.de/sites/default/res/apple-touch-icon/180x180.png"; - Alias = "duden"; - } + # Dictionary + { + Name = "dict.cc"; + URLTemplate = "https://www.dict.cc/?s={searchTerms}"; + Method = "GET"; + IconURL = "https://www4.dict.cc/img/favicons/favicon4.png"; + Alias = "dcc"; + } + { + Name = "Duden"; + URLTemplate = "https://www.duden.de/suchen/dudenonline/{searchTerms}"; + Method = "GET"; + IconURL = "https://www.duden.de/sites/default/res/apple-touch-icon/180x180.png"; + Alias = "duden"; + } - # Map - { - Name = "OpenStreetMap"; - URLTemplate = "https://www.openstreetmap.org/search?query={searchTerms}"; - Method = "GET"; - IconURL = "https://www.openstreetmap.org/assets/favicon-194x194-79d3fb0152c735866e64b1d7535d504483cd13c2fad0131a6142bd9629d30de2.png"; - Alias = "osm"; - } - ]; + # Map + { + Name = "OpenStreetMap"; + URLTemplate = "https://www.openstreetmap.org/search?query={searchTerms}"; + Method = "GET"; + IconURL = "https://www.openstreetmap.org/assets/favicon-194x194-79d3fb0152c735866e64b1d7535d504483cd13c2fad0131a6142bd9629d30de2.png"; + Alias = "osm"; + } + ]; + }; }; profiles.default = { id = 0; diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index 0ca1af4..02ff97b 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -169,36 +169,38 @@ }; }; - xdg.configFile."fish/completions/mycli.fish".text = '' - complete -e -c mycli - complete -c mycli -f - complete -c mycli -f -s h -l host -d "Host address of the database." - complete -c mycli -f -s P -l port -d "Port number to use for connection." - complete -c mycli -f -s u -l user -d "User name to connect to the database." - complete -c mycli -f -s S -l socket -d "The socket file to use for connection." - complete -c mycli -f -s p -l pass \ - -l password -d "Password to connect to the database." - complete -c mycli -f -s V -l version -d "Output mycli's version." - complete -c mycli -f -s v -l verbose -d "Verbose output." - complete -c mycli -f -s d -l dsn -d "Use DSN configured into the [alias_dsn] section of myclirc file." - complete -c mycli -f -l list-dsn -d "list of DSN configured into the [alias_dsn] section of myclirc file." + xdg.configFile = { + "fish/completions/mycli.fish".text = '' + complete -e -c mycli + complete -c mycli -f + complete -c mycli -f -s h -l host -d "Host address of the database." + complete -c mycli -f -s P -l port -d "Port number to use for connection." + complete -c mycli -f -s u -l user -d "User name to connect to the database." + complete -c mycli -f -s S -l socket -d "The socket file to use for connection." + complete -c mycli -f -s p -l pass \ + -l password -d "Password to connect to the database." + complete -c mycli -f -s V -l version -d "Output mycli's version." + complete -c mycli -f -s v -l verbose -d "Verbose output." + complete -c mycli -f -s d -l dsn -d "Use DSN configured into the [alias_dsn] section of myclirc file." + complete -c mycli -f -l list-dsn -d "list of DSN configured into the [alias_dsn] section of myclirc file." - complete -c mycli -f -s t -l table -d "Display batch output in table format." - complete -c mycli -f -l csv -d "Display batch output in CSV format." - complete -c mycli -f -l warn \ - -l no-warn -d "Warn before running a destructive query." - complete -c mycli -f -s e -l execute -d "Execute command and quit." + complete -c mycli -f -s t -l table -d "Display batch output in table format." + complete -c mycli -f -l csv -d "Display batch output in CSV format." + complete -c mycli -f -l warn \ + -l no-warn -d "Warn before running a destructive query." + complete -c mycli -f -s e -l execute -d "Execute command and quit." - complete -c mycli -f -s h -l host -r -a '(__fish_print_hostnames)' - complete -c mycli -f -s d -l dsn -r -a '(mycli --list-dsn)' - ''; + complete -c mycli -f -s h -l host -r -a '(__fish_print_hostnames)' + complete -c mycli -f -s d -l dsn -r -a '(mycli --list-dsn)' + ''; - xdg.configFile."fish/completions/myssh.fish".text = '' - complete -c myssh -f -a '(myssh --list)' - ''; + "fish/completions/myssh.fish".text = '' + complete -c myssh -f -a '(myssh --list)' + ''; - xdg.configFile."fish/completions/just.fish".source = pkgs.runCommand "just-fish-completions" { } '' - ${pkgs.just}/bin/just --completions fish > $out - ''; + "fish/completions/just.fish".source = pkgs.runCommand "just-fish-completions" { } '' + ${pkgs.just}/bin/just --completions fish > $out + ''; + }; } diff --git a/users/jalr/modules/gnuradio.nix b/users/jalr/modules/gnuradio.nix index d3bec15..05bb580 100644 --- a/users/jalr/modules/gnuradio.nix +++ b/users/jalr/modules/gnuradio.nix @@ -8,6 +8,6 @@ let pkgs.gnuradio3_8Packages; }; in -(lib.mkIf nixosConfig.jalr.gui.enable { +lib.mkIf nixosConfig.jalr.gui.enable { home.packages = [ gnuradioEnv ]; -}) +} diff --git a/users/jalr/modules/neovim/default.nix b/users/jalr/modules/neovim/default.nix index 8c9c53d..7effe7b 100644 --- a/users/jalr/modules/neovim/default.nix +++ b/users/jalr/modules/neovim/default.nix @@ -139,111 +139,112 @@ in ]); }; - xdg.configFile."nvim/lua/init.lua".text = builtins.concatStringsSep "\n" ( - [ - '' - -- init.lua - -- this configuration applies to servers and workstations - '' - ] ++ lib.optional nixosConfig.jalr.workstation.enable ( - '' - -- this configuration applies to workstations only - -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md - local lsp = require('lspconfig') - '' + - builtins.concatStringsSep "\n" ( - lib.mapAttrsToList - ( - lang: cfg: "lsp.${lang}.setup\n" + lib.generators.toLua { } cfg - ) - { - # C and C++ - ccls = { - cmd = [ "${pkgs.ccls}/bin/ccls" ]; - }; + xdg.configFile = { + "nvim/ftplugin/gitcommit.vim".text = '' + setlocal spell + setlocal colorcolumn=73 + ''; + "nvim/ftplugin/markdown.vim".text = '' + setlocal spell + setlocal colorcolumn=81 + ''; + "nvim/ftplugin/sshconfig.vim".text = '' + setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab + ''; + "nvim/lua/init.lua".text = builtins.concatStringsSep "\n" ( + [ + '' + -- init.lua + -- this configuration applies to servers and workstations + '' + ] ++ lib.optional nixosConfig.jalr.workstation.enable ( + '' + -- this configuration applies to workstations only + -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md + local lsp = require('lspconfig') + '' + + builtins.concatStringsSep "\n" ( + lib.mapAttrsToList + ( + lang: cfg: "lsp.${lang}.setup\n" + lib.generators.toLua { } cfg + ) + { + # C and C++ + ccls = { + cmd = [ "${pkgs.ccls}/bin/ccls" ]; + }; - # Nix - nixd = { - cmd = [ "${pkgs.nixd}/bin/nixd" ]; - }; + # Nix + nixd = { + cmd = [ "${pkgs.nixd}/bin/nixd" ]; + }; - # PHP - phpactor = { - cmd = [ "${pkgs.phpactor}/bin/phpactor" "language-server" ]; - }; + # PHP + phpactor = { + cmd = [ "${pkgs.phpactor}/bin/phpactor" "language-server" ]; + }; - # Python - pylsp = { - cmd = [ "${pkgs.python3Packages.python-lsp-server}/bin/pylsp" ]; - settings = { - # https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md - pylsp = { - plugins = { - flake8 = { - enabled = true; - executable = "${pkgs.python3Packages.flake8}/bin/flake8"; + # Python + pylsp = { + cmd = [ "${pkgs.python3Packages.python-lsp-server}/bin/pylsp" ]; + settings = { + # https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md + pylsp = { + plugins = { + flake8 = { + enabled = true; + executable = "${pkgs.python3Packages.flake8}/bin/flake8"; + }; + jedi_completion = { enabled = true; }; + jedi_definition = { enabled = true; }; + jedi_hover = { enabled = true; }; + jedi_references = { enabled = true; }; + jedi_signature_help = { enabled = true; }; + jedi_symbols = { enabled = true; }; + mccabe = { enabled = true; }; + lsp_signature-nvim = { enabled = true; }; + preload = { enabled = true; }; + pycodestyle = { enabled = true; }; + pyflakes = { enabled = true; }; + rope_completion = { enabled = true; }; + yapf = { enabled = true; }; }; - jedi_completion = { enabled = true; }; - jedi_definition = { enabled = true; }; - jedi_hover = { enabled = true; }; - jedi_references = { enabled = true; }; - jedi_signature_help = { enabled = true; }; - jedi_symbols = { enabled = true; }; - mccabe = { enabled = true; }; - lsp_signature-nvim = { enabled = true; }; - preload = { enabled = true; }; - pycodestyle = { enabled = true; }; - pyflakes = { enabled = true; }; - rope_completion = { enabled = true; }; - yapf = { enabled = true; }; }; }; }; - }; - # Ruby - solargraph = { - cmd = [ "${pkgs.solargraph}/bin/solargraph" "stdio" ]; - }; + # Ruby + solargraph = { + cmd = [ "${pkgs.solargraph}/bin/solargraph" "stdio" ]; + }; - # Rust - rust_analyzer = { - cmd = [ "${pkgs.rust-analyzer}/bin/rust-analyzer" ]; - }; + # Rust + rust_analyzer = { + cmd = [ "${pkgs.rust-analyzer}/bin/rust-analyzer" ]; + }; - # Bash - bashls = { - cmd = [ "${pkgs.nodePackages.bash-language-server}/bin/bash-language-server" "start" ]; - }; + # Bash + bashls = { + cmd = [ "${pkgs.nodePackages.bash-language-server}/bin/bash-language-server" "start" ]; + }; - # Terraform - terraformls = { - cmd = [ "${pkgs.terraform-ls}/bin/terraform-ls" "serve" ]; - }; + # Terraform + terraformls = { + cmd = [ "${pkgs.terraform-ls}/bin/terraform-ls" "serve" ]; + }; - # YAML - yamlls = { - cmd = [ "${pkgs.nodePackages.yaml-language-server}/bin/yaml-language-server" "--stdio" ]; - settings = { - yaml = { - keyOrdering = false; + # YAML + yamlls = { + cmd = [ "${pkgs.nodePackages.yaml-language-server}/bin/yaml-language-server" "--stdio" ]; + settings = { + yaml = { + keyOrdering = false; + }; }; }; - }; - } + } + ) ) - ) - ); - - xdg.configFile."nvim/ftplugin/gitcommit.vim".text = '' - setlocal spell - setlocal colorcolumn=73 - ''; - xdg.configFile."nvim/ftplugin/markdown.vim".text = '' - setlocal spell - setlocal colorcolumn=81 - ''; - xdg.configFile."nvim/ftplugin/sshconfig.vim".text = '' - setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab - ''; + ); + }; } diff --git a/users/jalr/modules/obs-studio/default.nix b/users/jalr/modules/obs-studio/default.nix index 545bcbd..ffd39b3 100644 --- a/users/jalr/modules/obs-studio/default.nix +++ b/users/jalr/modules/obs-studio/default.nix @@ -2,7 +2,7 @@ { programs.obs-studio = { - enable = nixosConfig.jalr.gui.enable; + inherit (nixosConfig.jalr.gui) enable; plugins = with pkgs; [ obs-studio-plugins.wlrobs ]; diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index af4dff4..5139fc9 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -35,7 +35,7 @@ let #gsettings set $gnome_schema gtk-theme 'Dracula' ${pkgs.glib}/bin/gsettings "$@" ''; - matchHostname = (hostname: lib.optionalAttrs (nixosConfig.networking.hostName == hostname)); + matchHostname = hostname: lib.optionalAttrs (nixosConfig.networking.hostName == hostname); resumeTimeTrackingNotification = pkgs.writeShellScript "resume-time-tracking-notification" '' export PATH=${pkgs.lib.makeBinPath [pkgs.timewarrior pkgs.libnotify]} task="$1" @@ -97,19 +97,6 @@ in end ''; - xdg.configFile."sway/light-theme".text = with solarized; '' - client.focused ${base01.hex} ${blue.hex} ${base3.hex} ${blue.hex} ${blue.hex} - client.focused_inactive ${base2.hex} ${base2.hex} ${base01.hex} ${base0.hex} ${base2.hex} - client.unfocused ${base2.hex} ${base3.hex} ${base01.hex} ${base2.hex} ${base2.hex} - client.urgent ${red.hex} ${red.hex} ${base3.hex} ${red.hex} ${red.hex} - ''; - xdg.configFile."sway/dark-theme".text = with solarized; '' - client.focused ${base1.hex} ${blue.hex} ${base03.hex} ${blue.hex} ${blue.hex} - client.focused_inactive ${base02.hex} ${base02.hex} ${base1.hex} ${base03.hex} ${base02.hex} - client.unfocused ${base02.hex} ${base03.hex} ${base1.hex} ${base02.hex} ${base02.hex} - client.urgent ${red.hex} ${red.hex} ${base03.hex} ${red.hex} ${red.hex} - ''; - wayland.windowManager.sway = { enable = true; @@ -379,26 +366,40 @@ in }; }; - xdg.configFile."swaynag/config".text = - let - # adding it to the header doesn’t work since the defaults overwrite it - commonConfig = /* ini */ '' - background=${lib.substring 1 6 solarized.base3.hex} - border-bottom=${lib.substring 1 6 solarized.base2.hex} - border=${lib.substring 1 6 solarized.base2.hex} - button-background=${lib.substring 1 6 solarized.base3.hex} - button-text=${lib.substring 1 6 solarized.base00.hex} - ''; - in - /* ini */ '' - font=Monospace 12 - - [warning] - text=${lib.substring 1 6 solarized.yellow.hex} - ${commonConfig} - - [error] - text=${lib.substring 1 6 solarized.red.hex} - ${commonConfig} + xdg.configFile = { + "sway/light-theme".text = with solarized; '' + client.focused ${base01.hex} ${blue.hex} ${base3.hex} ${blue.hex} ${blue.hex} + client.focused_inactive ${base2.hex} ${base2.hex} ${base01.hex} ${base0.hex} ${base2.hex} + client.unfocused ${base2.hex} ${base3.hex} ${base01.hex} ${base2.hex} ${base2.hex} + client.urgent ${red.hex} ${red.hex} ${base3.hex} ${red.hex} ${red.hex} ''; + "sway/dark-theme".text = with solarized; '' + client.focused ${base1.hex} ${blue.hex} ${base03.hex} ${blue.hex} ${blue.hex} + client.focused_inactive ${base02.hex} ${base02.hex} ${base1.hex} ${base03.hex} ${base02.hex} + client.unfocused ${base02.hex} ${base03.hex} ${base1.hex} ${base02.hex} ${base02.hex} + client.urgent ${red.hex} ${red.hex} ${base03.hex} ${red.hex} ${red.hex} + ''; + "swaynag/config".text = + let + # adding it to the header doesn’t work since the defaults overwrite it + commonConfig = /* ini */ '' + background=${lib.substring 1 6 solarized.base3.hex} + border-bottom=${lib.substring 1 6 solarized.base2.hex} + border=${lib.substring 1 6 solarized.base2.hex} + button-background=${lib.substring 1 6 solarized.base3.hex} + button-text=${lib.substring 1 6 solarized.base00.hex} + ''; + in + /* ini */ '' + font=Monospace 12 + + [warning] + text=${lib.substring 1 6 solarized.yellow.hex} + ${commonConfig} + + [error] + text=${lib.substring 1 6 solarized.red.hex} + ${commonConfig} + ''; + }; }) diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index a678232..7ff5976 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -18,7 +18,7 @@ let thinsp = " "; solarized = import ../solarized.nix; - solarizedColors = (as: lib.strings.concatLines (lib.attrsets.mapAttrsToList (name: value: let color = solarized."${value}".hex; in "@define-color ${name} ${color};") as)); + solarizedColors = as: lib.strings.concatLines (lib.attrsets.mapAttrsToList (name: value: let color = solarized."${value}".hex; in "@define-color ${name} ${color};") as); in { # home-manager’s waybar module performs additional checks that are overly strict @@ -227,198 +227,200 @@ in }; }; - xdg.configFile."waybar/theme-light.css".text = solarizedColors { - base00 = "base3"; - base01 = "base2"; - base02 = "base1"; - base03 = "base0"; - base04 = "base00"; - base05 = "base01"; - base06 = "base02"; - base07 = "base03"; - base08 = "red"; - base09 = "orange"; - base0A = "yellow"; - base0B = "green"; - base0C = "cyan"; - base0D = "blue"; - base0E = "violet"; - base0F = "magenta"; - }; - xdg.configFile."waybar/theme-dark.css".text = solarizedColors { - base00 = "base03"; - base01 = "base02"; - base02 = "base01"; - base03 = "base00"; - base04 = "base0"; - base05 = "base1"; - base06 = "base2"; - base07 = "base3"; - base08 = "red"; - base09 = "orange"; - base0A = "yellow"; - base0B = "green"; - base0C = "cyan"; - base0D = "blue"; - base0E = "violet"; - base0F = "magenta"; - }; - xdg.configFile."waybar/style.css".text = '' - @import "theme.css"; + xdg.configFile = { + "waybar/theme-light.css".text = solarizedColors { + base00 = "base3"; + base01 = "base2"; + base02 = "base1"; + base03 = "base0"; + base04 = "base00"; + base05 = "base01"; + base06 = "base02"; + base07 = "base03"; + base08 = "red"; + base09 = "orange"; + base0A = "yellow"; + base0B = "green"; + base0C = "cyan"; + base0D = "blue"; + base0E = "violet"; + base0F = "magenta"; + }; + "waybar/theme-dark.css".text = solarizedColors { + base00 = "base03"; + base01 = "base02"; + base02 = "base01"; + base03 = "base00"; + base04 = "base0"; + base05 = "base1"; + base06 = "base2"; + base07 = "base3"; + base08 = "red"; + base09 = "orange"; + base0A = "yellow"; + base0B = "green"; + base0C = "cyan"; + base0D = "blue"; + base0E = "violet"; + base0F = "magenta"; + }; + "waybar/style.css".text = '' + @import "theme.css"; - * { - border-radius: 0; - border: none; - font-family: "Iosevka Nerd Font"; - font-size: 14px; - min-height: 0; - transition-property: none; - } + * { + border-radius: 0; + border: none; + font-family: "Iosevka Nerd Font"; + font-size: 14px; + min-height: 0; + transition-property: none; + } - window#waybar { - background-color: @base00; - color: @base04; - } + window#waybar { + background-color: @base00; + color: @base04; + } - #workspaces button { - padding: 0 5px; - background-color: @base00; - color: inherit; - border-bottom: 2px solid transparent; - } + #workspaces button { + padding: 0 5px; + background-color: @base00; + color: inherit; + border-bottom: 2px solid transparent; + } - #workspaces button:hover { - background: @base01; - box-shadow: inherit; - text-shadow: inherit; - } + #workspaces button:hover { + background: @base01; + box-shadow: inherit; + text-shadow: inherit; + } - #workspaces button.focused { - border-bottom: 2px solid @base0B; - } + #workspaces button.focused { + border-bottom: 2px solid @base0B; + } - #workspaces button.urgent { - background-color: @base08; - } + #workspaces button.urgent { + background-color: @base08; + } - #mode { - background-color: @base01; - font-style: italic; - } + #mode { + background-color: @base01; + font-style: italic; + } - /* all modules on the right */ - #waybar > box > box:nth-child(3) > widget > label { - padding: 0 10px; - } + /* all modules on the right */ + #waybar > box > box:nth-child(3) > widget > label { + padding: 0 10px; + } - #battery.charging { - color: @base01; - background-color: @base0B; - } + #battery.charging { + color: @base01; + background-color: @base0B; + } - @keyframes blink { - to { + @keyframes blink { + to { + background-color: @base07; + color: @base03; + } + } + + #battery.critical:not(.charging), + #temperature.critical { + background-color: @base08; + animation-name: blink; + animation-duration: 0.5s; + /* FIXME use nearest neighbor interpolation if possible */ + animation-timing-function: cubic-bezier(1, 0, 0, 1); + animation-iteration-count: infinite; + animation-direction: alternate; + } + + #cpu { + background-color: @base0C; + color: @base01 + } + + #memory { + background-color: @base0A; + color: @base01 + } + + #backlight { background-color: @base07; color: @base03; } - } - #battery.critical:not(.charging), - #temperature.critical { - background-color: @base08; - animation-name: blink; - animation-duration: 0.5s; - /* FIXME use nearest neighbor interpolation if possible */ - animation-timing-function: cubic-bezier(1, 0, 0, 1); - animation-iteration-count: infinite; - animation-direction: alternate; - } + #network { + background-color: @base0E; + color: @base01 + } - #cpu { - background-color: @base0C; - color: @base01 - } + #network.disconnected { + background-color: @base08; + } - #memory { - background-color: @base0A; - color: @base01 - } + #pulseaudio { + background-color: @base07; + color: @base03; + } - #backlight { - background-color: @base07; - color: @base03; - } + #pulseaudio.muted { + background-color: @base00; + color: @base04; + } - #network { - background-color: @base0E; - color: @base01 - } + #temperature { + background-color: @base0F; + color: @base01; + } - #network.disconnected { - background-color: @base08; - } + #idle_inhibitor.activated { + background-color: @base07; + color: @base00; + } - #pulseaudio { - background-color: @base07; - color: @base03; - } + #custom-redshift { + color: @base01; + } - #pulseaudio.muted { - background-color: @base00; - color: @base04; - } + #custom-redshift.active { + background-color: @base08; + } - #temperature { - background-color: @base0F; - color: @base01; - } + #custom-redshift.inactive { + background-color: @base0D; + } - #idle_inhibitor.activated { - background-color: @base07; - color: @base00; - } + #tray { + padding: 0 5px; + } - #custom-redshift { - color: @base01; - } + #custom-notification_inhibitor.active { + background-color: @base07; + color: @base00; + } - #custom-redshift.active { - background-color: @base08; - } + #custom-screencast { + background-color: @base08; + color: @base00; + animation-name: blink; + animation-duration: 1s; + animation-timing-function: ease-in-out; + animation-iteration-count: infinite; + animation-direction: alternate; + } - #custom-redshift.inactive { - background-color: @base0D; - } + #custom-pomodoro.resumed { + color: @base01; + background-color: @base0B; + } - #tray { - padding: 0 5px; - } - - #custom-notification_inhibitor.active { - background-color: @base07; - color: @base00; - } - - #custom-screencast { - background-color: @base08; - color: @base00; - animation-name: blink; - animation-duration: 1s; - animation-timing-function: ease-in-out; - animation-iteration-count: infinite; - animation-direction: alternate; - } - - #custom-pomodoro.resumed { - color: @base01; - background-color: @base0B; - } - - #custom-dnd.active { - color: @base01; - background-color: @base0B; - } - ''; + #custom-dnd.active { + color: @base01; + background-color: @base0B; + } + ''; + }; systemd.user.services.waybar = { Unit = { diff --git a/users/jalr/modules/sway/wofi.nix b/users/jalr/modules/sway/wofi.nix index a5ed905..9180509 100644 --- a/users/jalr/modules/sway/wofi.nix +++ b/users/jalr/modules/sway/wofi.nix @@ -4,86 +4,88 @@ let solarized = import ../solarized.nix; in { - xdg.configFile."wofi/color-light".text = lib.strings.concatLines (map (c: solarized."${c}".hex) [ - "base3" - "base2" - "base1" - "base0" - "base00" - "base01" - "base02" - "base03" - "red" - "orange" - "yellow" - "green" - "cyan" - "blue" - "violet" - "magenta" - ]); - xdg.configFile."wofi/color-dark".text = lib.strings.concatLines (map (c: solarized."${c}".hex) [ - "base03" - "base02" - "base01" - "base00" - "base0" - "base1" - "base2" - "base3" - "red" - "orange" - "yellow" - "green" - "cyan" - "blue" - "violet" - "magenta" - ]); - xdg.configFile."wofi/style.css".text = '' - window { - margin: 0px; - border: 3px solid --wofi-color1; - border-radius: 8px; - background-color: rgba(--wofi-rgb-color0,0.8); - } + xdg.configFile = { + "wofi/color-light".text = lib.strings.concatLines (map (c: solarized."${c}".hex) [ + "base3" + "base2" + "base1" + "base0" + "base00" + "base01" + "base02" + "base03" + "red" + "orange" + "yellow" + "green" + "cyan" + "blue" + "violet" + "magenta" + ]); + "wofi/color-dark".text = lib.strings.concatLines (map (c: solarized."${c}".hex) [ + "base03" + "base02" + "base01" + "base00" + "base0" + "base1" + "base2" + "base3" + "red" + "orange" + "yellow" + "green" + "cyan" + "blue" + "violet" + "magenta" + ]); + "wofi/style.css".text = '' + window { + margin: 0px; + border: 3px solid --wofi-color1; + border-radius: 8px; + background-color: rgba(--wofi-rgb-color0,0.8); + } - #input { - margin: 5px; - border: none; - color: --wofi-color4; - background-color: rgba(--wofi-rgb-color1,0.8); - } + #input { + margin: 5px; + border: none; + color: --wofi-color4; + background-color: rgba(--wofi-rgb-color1,0.8); + } - #inner-box { - margin: 5px; - border: none; - background: none; - } + #inner-box { + margin: 5px; + border: none; + background: none; + } - #outer-box { - margin: 5px; - border: none; - background: none; - } + #outer-box { + margin: 5px; + border: none; + background: none; + } - #scroll { - margin: 0px; - border: none; - } + #scroll { + margin: 0px; + border: none; + } - #text { - margin: 5px; - border: none; - color: --wofi-color4; - } + #text { + margin: 5px; + border: none; + color: --wofi-color4; + } - #entry:selected { - background-color: rgba(--wofi-rgb-color1,0.8); - } + #entry:selected { + background-color: rgba(--wofi-rgb-color1,0.8); + } - #entry:selected #text{ - color: --wofi-color11; - } - ''; + #entry:selected #text{ + color: --wofi-color11; + } + ''; + }; } diff --git a/users/jalr/modules/thunderbird.nix b/users/jalr/modules/thunderbird.nix index 8e39247..e8cd892 100644 --- a/users/jalr/modules/thunderbird.nix +++ b/users/jalr/modules/thunderbird.nix @@ -1,7 +1,7 @@ { nixosConfig, pkgs, ... }: { programs.thunderbird = { - enable = nixosConfig.jalr.gui.enable; + inherit (nixosConfig.jalr.gui) enable; package = pkgs.thunderbird-esr; profiles."default" = { isDefault = true; From eaf3a29871bb491fffd5dfc4d39524361737120b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Apr 2025 21:47:51 +0200 Subject: [PATCH 418/562] Add deadnix --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index fbfe64e..c05fa48 100644 --- a/flake.nix +++ b/flake.nix @@ -78,6 +78,7 @@ src = self; hooks = { black.enable = true; + deadnix.enable = true; nixpkgs-fmt.enable = true; shellcheck.enable = true; statix = { From af5a07ca1920fecc99e7902043237c1c4889faad Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Apr 2025 22:06:45 +0200 Subject: [PATCH 419/562] Add snapserver ports --- hosts/iron/ports.nix | 3 +++ hosts/iron/services/snapcast/snapserver.nix | 3 +++ 2 files changed, 6 insertions(+) diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 10760b1..0d753b8 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -19,6 +19,9 @@ custom-utils.validatePortAttrset { qbittorrent-webui.tcp = 8099; radicale.tcp = 5232; rmfakecloud.tcp = 3000; + snapserver.tcp = 1704; + snapserverTcp.tcp = 1705; + snapserverHttp.tcp = 1780; unifi-http.tcp = 8080; unifi-https.tcp = 8443; wireguard-public-ip-tunnel.udp = 51000; diff --git a/hosts/iron/services/snapcast/snapserver.nix b/hosts/iron/services/snapcast/snapserver.nix index e007634..f1807aa 100644 --- a/hosts/iron/services/snapcast/snapserver.nix +++ b/hosts/iron/services/snapcast/snapserver.nix @@ -6,6 +6,9 @@ in { services.snapserver = { enable = true; + port = ports.snapserver.tcp; + tcp.port = ports.snapserverTcp.tcp; + http.port = ports.snapserverHttp.tcp; streams = { default = { type = "meta"; From 48e71f75f8ca80e57dd8aa7b98258045071a6fab Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Apr 2025 22:44:36 +0200 Subject: [PATCH 420/562] Remove unused code --- custom-utils/default.nix | 2 +- custom-utils/ports.nix | 2 +- flake.nix | 4 +-- hosts/aluminium/configuration.nix | 2 +- hosts/aluminium/hardware-configuration.nix | 2 +- hosts/aluminium/ports.nix | 2 +- hosts/aluminium/services/asterisk/default.nix | 2 +- .../asterisk/voicemail-sounds/default.nix | 2 +- hosts/aluminium/services/dnsmasq.nix | 5 +--- hosts/aluminium/services/doorbell.nix | 2 +- hosts/aluminium/services/esphome/default.nix | 7 +---- hosts/aluminium/services/home-assistant.nix | 2 +- hosts/aluminium/services/nginx.nix | 2 +- hosts/aluminium/services/ntp.nix | 1 - hosts/aluminium/services/unifi-controller.nix | 2 +- hosts/cadmium/configuration.nix | 2 +- hosts/copper/services/ntfy.nix | 1 - hosts/iron/configuration.nix | 24 +++++++--------- hosts/iron/ports.nix | 2 +- hosts/iron/services/avahi.nix | 1 - hosts/iron/services/calibre.nix | 2 +- hosts/iron/services/dnsmasq.nix | 3 +- hosts/iron/services/esphome/default.nix | 7 +---- hosts/iron/services/home-assistant.nix | 2 +- hosts/iron/services/jellyfin.nix | 2 +- hosts/iron/services/mail.nix | 2 +- hosts/iron/services/matrix.nix | 2 +- hosts/iron/services/navidrome.nix | 2 +- hosts/iron/services/nginx.nix | 2 +- hosts/iron/services/ntp.nix | 1 - hosts/iron/services/public-ip-tunnel.nix | 2 +- hosts/iron/services/radicale.nix | 2 +- hosts/iron/services/remarkable.nix | 2 +- hosts/iron/services/snapcast/ledfx.nix | 2 +- hosts/iron/services/snapcast/mopidy.nix | 2 +- hosts/iron/services/snapcast/snapclient.nix | 15 +--------- hosts/iron/services/snapcast/snapserver.nix | 2 +- hosts/iron/services/sturzbach.nix | 2 +- hosts/iron/services/unifi-controller.nix | 2 +- hosts/iron/services/whatsapp.nix | 2 +- hosts/magnesium/configuration.nix | 3 +- hosts/magnesium/ports.nix | 28 +++++++++---------- hosts/magnesium/services/coturn.nix | 14 ++++------ hosts/magnesium/services/forgejo.nix | 4 +-- hosts/magnesium/services/gitlab-runner.nix | 2 +- hosts/magnesium/services/hedgedoc.nix | 4 +-- hosts/magnesium/services/ntfy.nix | 4 +-- hosts/magnesium/services/public-ip-tunnel.nix | 4 +-- hosts/magnesium/services/trilium.nix | 4 +-- hosts/magnesium/services/webserver.nix | 4 +-- .../hardware-configuration.nix | 2 +- hosts/weinturm-pretix-prod/ports.nix | 2 +- .../weinturm-pretix-prod/services/pretix.nix | 2 +- modules/adb.nix | 2 +- modules/aws.nix | 2 +- modules/bootloader/grub2.nix | 2 +- modules/gnome.nix | 2 +- modules/journald.nix | 2 -- modules/kdeconnect.nix | 2 +- modules/localization.nix | 2 +- modules/luksusb.nix | 6 ++-- modules/mailserver/default.nix | 2 +- modules/matrix/default.nix | 4 +-- modules/matrix/mautrix-signal.nix | 2 +- modules/matrix/mautrix-whatsapp.nix | 2 +- modules/matrix/synapse.nix | 5 ++-- modules/networking/default.nix | 1 + modules/networking/ports.nix | 20 +++++++++++++ modules/nix.nix | 2 +- modules/printers/p-touch_p700.nix | 2 -- modules/qbittorrent/default.nix | 2 +- modules/sudo.nix | 1 - modules/udmx.nix | 2 -- pkgs/asterisk-sounds-de/default.nix | 3 +- pkgs/contact-page/default.nix | 2 +- pkgs/default.nix | 4 +-- .../docker-machine-driver-hetzner/default.nix | 8 +++--- pkgs/fpvout/default.nix | 3 +- .../guntamatic.nix | 3 +- pkgs/illuminanced/default.nix | 1 - pkgs/modules.nix | 2 -- pkgs/myintercom-doorbell/default.nix | 6 ++-- pkgs/pretix-banktool/module.nix | 11 -------- users/jalr/default.nix | 2 +- users/jalr/modules/aws.nix | 2 +- users/jalr/modules/cli/default.nix | 2 +- users/jalr/modules/communication/default.nix | 2 -- users/jalr/modules/dynamic-colors.nix | 2 +- users/jalr/modules/git.nix | 2 +- users/jalr/modules/graphics/default.nix | 2 -- users/jalr/modules/mycli/default.nix | 4 +-- users/jalr/modules/neo.nix | 1 - users/jalr/modules/ots.nix | 5 +--- users/jalr/modules/pomodoro.nix | 2 +- users/jalr/modules/remarkable/restream.nix | 2 +- users/jalr/modules/remarkable/rmview.nix | 4 +-- users/jalr/modules/solarized.nix | 2 +- users/jalr/modules/sound/default.nix | 2 -- users/jalr/modules/sway/default.nix | 2 +- .../modules/sway/move-to-output/default.nix | 4 +-- users/jalr/modules/sway/wofi.nix | 2 +- .../modules/sway/yubikey-touch-detector.nix | 2 +- users/jalr/modules/tmux.nix | 1 - users/jalr/modules/vdirsyncer.nix | 21 -------------- 104 files changed, 151 insertions(+), 229 deletions(-) create mode 100644 modules/networking/ports.nix diff --git a/custom-utils/default.nix b/custom-utils/default.nix index 5db6ecb..101f08c 100644 --- a/custom-utils/default.nix +++ b/custom-utils/default.nix @@ -4,7 +4,7 @@ let filterPort = pm: port: ( lib.attrsets.catAttrs port ( lib.attrsets.attrValues ( - lib.attrsets.filterAttrs (n: v: v ? "${port}") pm + lib.attrsets.filterAttrs (_: v: v ? "${port}") pm ) ) ); diff --git a/custom-utils/ports.nix b/custom-utils/ports.nix index 5db6ecb..101f08c 100644 --- a/custom-utils/ports.nix +++ b/custom-utils/ports.nix @@ -4,7 +4,7 @@ let filterPort = pm: port: ( lib.attrsets.catAttrs port ( lib.attrsets.attrValues ( - lib.attrsets.filterAttrs (n: v: v ? "${port}") pm + lib.attrsets.filterAttrs (_: v: v ? "${port}") pm ) ) ); diff --git a/flake.nix b/flake.nix index c05fa48..74808d5 100644 --- a/flake.nix +++ b/flake.nix @@ -56,13 +56,11 @@ outputs = { self , flake-utils - , gomod2nix , home-manager , krops , nix-pre-commit-hooks , nixpkgs , nur - , poetry2nix , ... }@inputs: flake-utils.lib.eachSystem [ "x86_64-linux" @@ -104,7 +102,7 @@ }; apps = lib.mapAttrs - (name: program: { type = "app"; program = toString program; }) + (_: program: { type = "app"; program = toString program; }) (flake-utils.lib.flattenTree { deploy = lib.recurseIntoAttrs (lib.mapAttrs (hostname: machine: diff --git a/hosts/aluminium/configuration.nix b/hosts/aluminium/configuration.nix index 6b89247..43c1b5d 100644 --- a/hosts/aluminium/configuration.nix +++ b/hosts/aluminium/configuration.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, ... }: { imports = [ diff --git a/hosts/aluminium/hardware-configuration.nix b/hosts/aluminium/hardware-configuration.nix index f146835..6b60bb6 100644 --- a/hosts/aluminium/hardware-configuration.nix +++ b/hosts/aluminium/hardware-configuration.nix @@ -1,7 +1,7 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: +{ config, lib, modulesPath, ... }: { imports = diff --git a/hosts/aluminium/ports.nix b/hosts/aluminium/ports.nix index 34bfdaf..f07e09d 100644 --- a/hosts/aluminium/ports.nix +++ b/hosts/aluminium/ports.nix @@ -1,4 +1,4 @@ -{ lib, custom-utils, ... }: +{ custom-utils, ... }: custom-utils.validatePortAttrset { asterisk-rtp = { udp.range = [ 10000 10200 ]; }; diff --git a/hosts/aluminium/services/asterisk/default.nix b/hosts/aluminium/services/asterisk/default.nix index 92f945d..1fe50cb 100644 --- a/hosts/aluminium/services/asterisk/default.nix +++ b/hosts/aluminium/services/asterisk/default.nix @@ -1,4 +1,4 @@ -args@{ config, lib, pkgs, custom-utils, ... }: +args@{ config, lib, pkgs, ... }: let ports = import ../../ports.nix args; diff --git a/hosts/aluminium/services/asterisk/voicemail-sounds/default.nix b/hosts/aluminium/services/asterisk/voicemail-sounds/default.nix index a4a810c..06451f1 100644 --- a/hosts/aluminium/services/asterisk/voicemail-sounds/default.nix +++ b/hosts/aluminium/services/asterisk/voicemail-sounds/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenvNoCC }: +{ stdenvNoCC }: stdenvNoCC.mkDerivation { name = "voicemail-sounds"; diff --git a/hosts/aluminium/services/dnsmasq.nix b/hosts/aluminium/services/dnsmasq.nix index ff4549a..c6ada0d 100644 --- a/hosts/aluminium/services/dnsmasq.nix +++ b/hosts/aluminium/services/dnsmasq.nix @@ -1,8 +1,5 @@ { lib, pkgs, ... }: -let - stateDir = "/var/lib/dnsmasq"; -in { services.dnsmasq = { enable = true; @@ -54,7 +51,7 @@ in "voice" ] ( - interface: { + _: { allowedUDPPorts = [ 53 67 ]; allowedTCPPorts = [ 53 ]; } diff --git a/hosts/aluminium/services/doorbell.nix b/hosts/aluminium/services/doorbell.nix index e2b7229..7d2f45d 100644 --- a/hosts/aluminium/services/doorbell.nix +++ b/hosts/aluminium/services/doorbell.nix @@ -1,4 +1,4 @@ -args@{ config, lib, pkgs, custom-utils, ... }: +args@{ config, ... }: let ports = import ../ports.nix args; diff --git a/hosts/aluminium/services/esphome/default.nix b/hosts/aluminium/services/esphome/default.nix index b64c343..bf8f9bc 100644 --- a/hosts/aluminium/services/esphome/default.nix +++ b/hosts/aluminium/services/esphome/default.nix @@ -1,7 +1,6 @@ -args@{ lib, pkgs, config, custom-utils, ... }: +args@{ lib, pkgs, config, ... }: let ports = import ../../ports.nix args; - cfg = config.services.esphome; cfgdir = pkgs.stdenvNoCC.mkDerivation { name = "esphome-config"; src = ./devices; @@ -11,10 +10,6 @@ let cp -r * $out ''; }; - esphomeParams = - if cfg.enableUnixSocket - then "--socket /run/esphome/esphome.sock" - else "--address ${cfg.address} --port ${toString cfg.port}"; in { sops.secrets.esphome = { diff --git a/hosts/aluminium/services/home-assistant.nix b/hosts/aluminium/services/home-assistant.nix index aed7b78..bab9944 100644 --- a/hosts/aluminium/services/home-assistant.nix +++ b/hosts/aluminium/services/home-assistant.nix @@ -1,4 +1,4 @@ -args@{ lib, pkgs, config, custom-utils, ... }: +args@{ pkgs, config, ... }: let ports = import ../ports.nix args; in diff --git a/hosts/aluminium/services/nginx.nix b/hosts/aluminium/services/nginx.nix index 71bdff2..b2e020e 100644 --- a/hosts/aluminium/services/nginx.nix +++ b/hosts/aluminium/services/nginx.nix @@ -1,4 +1,4 @@ -args@{ pkgs, custom-utils, ... }: +args: let ports = import ../ports.nix args; diff --git a/hosts/aluminium/services/ntp.nix b/hosts/aluminium/services/ntp.nix index aed11f4..45917cf 100644 --- a/hosts/aluminium/services/ntp.nix +++ b/hosts/aluminium/services/ntp.nix @@ -1,4 +1,3 @@ -{ lib, pkgs, ... }: { services.chrony = { enable = true; diff --git a/hosts/aluminium/services/unifi-controller.nix b/hosts/aluminium/services/unifi-controller.nix index 4801621..deeae22 100644 --- a/hosts/aluminium/services/unifi-controller.nix +++ b/hosts/aluminium/services/unifi-controller.nix @@ -1,4 +1,4 @@ -args@{ pkgs, custom-utils, ... }: +args@{ pkgs, ... }: let ports = import ../ports.nix args; diff --git a/hosts/cadmium/configuration.nix b/hosts/cadmium/configuration.nix index 55d51ab..1bb11aa 100644 --- a/hosts/cadmium/configuration.nix +++ b/hosts/cadmium/configuration.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ pkgs, ... }: { imports = [ diff --git a/hosts/copper/services/ntfy.nix b/hosts/copper/services/ntfy.nix index d252d96..7f910c5 100644 --- a/hosts/copper/services/ntfy.nix +++ b/hosts/copper/services/ntfy.nix @@ -1,4 +1,3 @@ -{ pkgs, lib, ... }: { sops.secrets.ntfy_shiftphone = { sopsFile = ../secrets.yaml; diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index ac8ee66..789aca1 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -1,4 +1,4 @@ -{ inputs, config, pkgs, lib, ... }: +{ config, pkgs, lib, ... }: let interfaces = import ./interfaces.nix; disks = { @@ -119,13 +119,11 @@ with lib; { jalr.luksUsbUnlock = { enable = true; devices = builtins.mapAttrs - (name: dev: - { - keyPath = "iron.key"; - usbDevice = "by-label/RAM_USB"; - waitForDevice = 10; - } - ) + (_: _: { + keyPath = "iron.key"; + usbDevice = "by-label/RAM_USB"; + waitForDevice = 10; + }) disks; }; @@ -144,12 +142,10 @@ with lib; { ]; systemd.enable = true; luks.devices = builtins.mapAttrs - (name: dev: - { - device = "${devNodes}${dev}${partitionScheme.luksDev}"; - allowDiscards = true; - } - ) + (_: dev: { + device = "${devNodes}${dev}${partitionScheme.luksDev}"; + allowDiscards = true; + }) disks; }; supportedFilesystems = [ "zfs" ]; diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 0d753b8..9c3a7fc 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -1,4 +1,4 @@ -{ lib, custom-utils, ... }: +{ custom-utils, ... }: custom-utils.validatePortAttrset { calibre-server.tcp = 8081; diff --git a/hosts/iron/services/avahi.nix b/hosts/iron/services/avahi.nix index 6c14bcd..f15827b 100644 --- a/hosts/iron/services/avahi.nix +++ b/hosts/iron/services/avahi.nix @@ -1,4 +1,3 @@ -args@{ lib, pkgs, config, custom-utils, ... }: let interfaces = import ../interfaces.nix; in diff --git a/hosts/iron/services/calibre.nix b/hosts/iron/services/calibre.nix index 0f30021..831cbce 100644 --- a/hosts/iron/services/calibre.nix +++ b/hosts/iron/services/calibre.nix @@ -1,4 +1,4 @@ -args@{ lib, config, pkgs, custom-utils, ... }: +args@{ lib, config, ... }: let ports = import ../ports.nix args; in diff --git a/hosts/iron/services/dnsmasq.nix b/hosts/iron/services/dnsmasq.nix index b277cf4..ea0f6b2 100644 --- a/hosts/iron/services/dnsmasq.nix +++ b/hosts/iron/services/dnsmasq.nix @@ -2,7 +2,6 @@ let interfaces = import ../interfaces.nix; - stateDir = "/var/lib/dnsmasq"; in { services.dnsmasq = { @@ -47,7 +46,7 @@ in "iot" ] ( - interface: { + _: { allowedUDPPorts = [ 53 67 ]; allowedTCPPorts = [ 53 ]; } diff --git a/hosts/iron/services/esphome/default.nix b/hosts/iron/services/esphome/default.nix index 0e81496..b49ec96 100644 --- a/hosts/iron/services/esphome/default.nix +++ b/hosts/iron/services/esphome/default.nix @@ -1,7 +1,6 @@ -args@{ lib, pkgs, config, custom-utils, ... }: +args@{ lib, pkgs, config, ... }: let ports = import ../../ports.nix args; - cfg = config.services.esphome; cfgdir = pkgs.stdenvNoCC.mkDerivation { name = "esphome-config"; src = ./devices; @@ -11,10 +10,6 @@ let cp -r * $out ''; }; - esphomeParams = - if cfg.enableUnixSocket - then "--socket /run/esphome/esphome.sock" - else "--address ${cfg.address} --port ${toString cfg.port}"; in { sops.secrets.esphome = { diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index 1bf6d3e..8901256 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -1,4 +1,4 @@ -args@{ lib, pkgs, config, custom-utils, ... }: +args@{ lib, pkgs, config, ... }: let ports = import ../ports.nix args; interfaces = import ../interfaces.nix; diff --git a/hosts/iron/services/jellyfin.nix b/hosts/iron/services/jellyfin.nix index 01aff39..2f0230f 100644 --- a/hosts/iron/services/jellyfin.nix +++ b/hosts/iron/services/jellyfin.nix @@ -1,4 +1,4 @@ -args@{ lib, pkgs, custom-utils, ... }: +args@{ lib, ... }: let ports = import ../ports.nix args; in diff --git a/hosts/iron/services/mail.nix b/hosts/iron/services/mail.nix index 98b4364..db2c2d2 100644 --- a/hosts/iron/services/mail.nix +++ b/hosts/iron/services/mail.nix @@ -1,4 +1,4 @@ -args@{ config, pkgs, custom-utils, ... }: +args: let ports = import ../ports.nix args; diff --git a/hosts/iron/services/matrix.nix b/hosts/iron/services/matrix.nix index 8cf62b5..4f7dd3d 100644 --- a/hosts/iron/services/matrix.nix +++ b/hosts/iron/services/matrix.nix @@ -1,4 +1,4 @@ -args@{ config, pkgs, custom-utils, ... }: +args@{ config, pkgs, ... }: let ports = import ../ports.nix args; diff --git a/hosts/iron/services/navidrome.nix b/hosts/iron/services/navidrome.nix index f6b87e4..054f38f 100644 --- a/hosts/iron/services/navidrome.nix +++ b/hosts/iron/services/navidrome.nix @@ -1,4 +1,4 @@ -args@{ config, lib, pkgs, utils, custom-utils, ... }: +args@{ config, lib, pkgs, ... }: let ports = import ../ports.nix args; diff --git a/hosts/iron/services/nginx.nix b/hosts/iron/services/nginx.nix index 71bdff2..b2e020e 100644 --- a/hosts/iron/services/nginx.nix +++ b/hosts/iron/services/nginx.nix @@ -1,4 +1,4 @@ -args@{ pkgs, custom-utils, ... }: +args: let ports = import ../ports.nix args; diff --git a/hosts/iron/services/ntp.nix b/hosts/iron/services/ntp.nix index edf7dbf..b10a245 100644 --- a/hosts/iron/services/ntp.nix +++ b/hosts/iron/services/ntp.nix @@ -1,4 +1,3 @@ -{ lib, pkgs, ... }: { services.chrony = { enable = true; diff --git a/hosts/iron/services/public-ip-tunnel.nix b/hosts/iron/services/public-ip-tunnel.nix index 612b041..67ee737 100644 --- a/hosts/iron/services/public-ip-tunnel.nix +++ b/hosts/iron/services/public-ip-tunnel.nix @@ -1,4 +1,4 @@ -args@{ config, lib, pkgs, custom-utils, ... }: +args@{ config, lib, pkgs, ... }: let ports = import ../ports.nix args; diff --git a/hosts/iron/services/radicale.nix b/hosts/iron/services/radicale.nix index b41a67d..7f327b6 100644 --- a/hosts/iron/services/radicale.nix +++ b/hosts/iron/services/radicale.nix @@ -1,4 +1,4 @@ -args@{ config, lib, pkgs, custom-utils, ... }: +args@{ config, ... }: let ports = import ../ports.nix args; diff --git a/hosts/iron/services/remarkable.nix b/hosts/iron/services/remarkable.nix index b8729ac..b3d6938 100644 --- a/hosts/iron/services/remarkable.nix +++ b/hosts/iron/services/remarkable.nix @@ -1,4 +1,4 @@ -args@{ lib, config, pkgs, custom-utils, ... }: +args@{ lib, config, pkgs, ... }: let ports = import ../ports.nix args; domain = "rmfakecloud.jalr.de"; diff --git a/hosts/iron/services/snapcast/ledfx.nix b/hosts/iron/services/snapcast/ledfx.nix index 9f78c71..4a4a3d6 100644 --- a/hosts/iron/services/snapcast/ledfx.nix +++ b/hosts/iron/services/snapcast/ledfx.nix @@ -1,4 +1,4 @@ -args@{ lib, pkgs, config, custom-utils, ... }: +{ pkgs, ... }: let interfaces = import ../../interfaces.nix; in diff --git a/hosts/iron/services/snapcast/mopidy.nix b/hosts/iron/services/snapcast/mopidy.nix index 5b66864..18be1a5 100644 --- a/hosts/iron/services/snapcast/mopidy.nix +++ b/hosts/iron/services/snapcast/mopidy.nix @@ -1,4 +1,4 @@ -args@{ lib, pkgs, config, custom-utils, ... }: +{ lib, pkgs, config, ... }: let interfaces = import ../../interfaces.nix; mopidyConfig = { diff --git a/hosts/iron/services/snapcast/snapclient.nix b/hosts/iron/services/snapcast/snapclient.nix index 8093022..27bb202 100644 --- a/hosts/iron/services/snapcast/snapclient.nix +++ b/hosts/iron/services/snapcast/snapclient.nix @@ -1,19 +1,6 @@ -{ lib, pkgs, ... }: +{ pkgs, ... }: -let hostId = "Wohnzimmer"; -in { - #services.pipewire = { - # enable = true; - # pulse.enable = true; - # alsa.enable = true; - #}; - - #environment.systemPackages = with pkgs; [ - # pulseaudio # pacmd and pactl - # pulsemixer - #]; - systemd.services.snapclient = { enable = true; description = "Snapcast client"; diff --git a/hosts/iron/services/snapcast/snapserver.nix b/hosts/iron/services/snapcast/snapserver.nix index f1807aa..3aa31ff 100644 --- a/hosts/iron/services/snapcast/snapserver.nix +++ b/hosts/iron/services/snapcast/snapserver.nix @@ -1,4 +1,4 @@ -args@{ lib, pkgs, config, custom-utils, ... }: +args@{ lib, pkgs, config, ... }: let ports = import ../../ports.nix args; interfaces = import ../../interfaces.nix; diff --git a/hosts/iron/services/sturzbach.nix b/hosts/iron/services/sturzbach.nix index ea0430a..ce7cbe6 100644 --- a/hosts/iron/services/sturzbach.nix +++ b/hosts/iron/services/sturzbach.nix @@ -1,4 +1,4 @@ -args@{ config, lib, custom-utils, ... }: +args: let ports = import ../ports.nix args; diff --git a/hosts/iron/services/unifi-controller.nix b/hosts/iron/services/unifi-controller.nix index bbd67a8..841fdba 100644 --- a/hosts/iron/services/unifi-controller.nix +++ b/hosts/iron/services/unifi-controller.nix @@ -1,4 +1,4 @@ -args@{ pkgs, custom-utils, ... }: +args@{ pkgs, ... }: let ports = import ../ports.nix args; diff --git a/hosts/iron/services/whatsapp.nix b/hosts/iron/services/whatsapp.nix index 9021758..6ef117c 100644 --- a/hosts/iron/services/whatsapp.nix +++ b/hosts/iron/services/whatsapp.nix @@ -1,4 +1,4 @@ -args@{ config, pkgs, custom-utils, ... }: +args@{ pkgs, ... }: let ports = import ../ports.nix args; diff --git a/hosts/magnesium/configuration.nix b/hosts/magnesium/configuration.nix index 855b1d1..1903e48 100644 --- a/hosts/magnesium/configuration.nix +++ b/hosts/magnesium/configuration.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ lib, ... }: { imports = [ @@ -6,6 +6,7 @@ ./services ../../users/jalr ./persistence.nix + ./ports.nix ]; networking.hostName = "magnesium"; diff --git a/hosts/magnesium/ports.nix b/hosts/magnesium/ports.nix index 8956bca..79e6a0b 100644 --- a/hosts/magnesium/ports.nix +++ b/hosts/magnesium/ports.nix @@ -1,15 +1,15 @@ -{ custom-utils, ... }: - -custom-utils.validatePortAttrset { - coturn-cli.tcp = 5766; - coturn-plain = { tcp = [ 3478 3479 ]; udp = [ 3478 3479 ]; }; - coturn-relay.udp.range = [ 49160 49200 ]; - coturn-tls = { tcp = [ 5349 5350 ]; udp = [ 5349 5350 ]; }; - forgejo-ssh.tcp = 2022; - hedgedoc.tcp = 3000; - nginx-http.tcp = 80; - nginx-https.tcp = 443; - ntfy.tcp = 12474; - trilium.tcp = 12783; - wireguard-public-ip-tunnel.udp = 51000; +{ + config.networking.ports = { + coturn-cli.tcp = 5766; + coturn-plain = { tcp = [ 3478 3479 ]; udp = [ 3478 3479 ]; }; + coturn-relay.udp = { from = 49160; to = 49200; }; + coturn-tls = { tcp = [ 5349 5350 ]; udp = [ 5349 5350 ]; }; + forgejo-ssh.tcp = 2022; + hedgedoc.tcp = 3000; + nginx-http.tcp = 80; + nginx-https.tcp = 443; + ntfy.tcp = 12474; + trilium.tcp = 12783; + wireguard-public-ip-tunnel.udp = 51000; + }; } diff --git a/hosts/magnesium/services/coturn.nix b/hosts/magnesium/services/coturn.nix index a6d3dd6..e48af8b 100644 --- a/hosts/magnesium/services/coturn.nix +++ b/hosts/magnesium/services/coturn.nix @@ -1,9 +1,9 @@ -args@{ config, lib, pkgs, custom-utils, ... }: +{ config, lib, pkgs, ... }: let - ports = import ../ports.nix args; cfg = config.services.coturn; fqdn = "turn.jalr.de"; + ports = config.networking.ports; in { sops.secrets.turn-static-auth-secret = { @@ -22,8 +22,8 @@ in tls-listening-port = builtins.elemAt ports.coturn-tls.tcp 0; alt-tls-listening-port = builtins.elemAt ports.coturn-tls.tcp 1; cli-port = ports.coturn-cli.tcp; - min-port = builtins.elemAt ports.coturn-relay.udp.range 0; - max-port = builtins.elemAt ports.coturn-relay.udp.range 1; + min-port = ports.coturn-relay.udp.from; + max-port = ports.coturn-relay.udp.to; } ) // { enable = true; @@ -108,10 +108,6 @@ in networking.firewall = { allowedTCPPorts = with cfg; [ listening-port alt-listening-port tls-listening-port alt-tls-listening-port ]; allowedUDPPorts = with cfg; [ listening-port alt-listening-port tls-listening-port alt-tls-listening-port ]; - - allowedUDPPortRanges = lib.singleton { - from = builtins.elemAt ports.coturn-relay.udp.range 0; - to = builtins.elemAt ports.coturn-relay.udp.range 1; - }; + allowedUDPPortRanges = lib.singleton ports.coturn-relay.udp; }; } diff --git a/hosts/magnesium/services/forgejo.nix b/hosts/magnesium/services/forgejo.nix index 90d7fb4..459e6e4 100644 --- a/hosts/magnesium/services/forgejo.nix +++ b/hosts/magnesium/services/forgejo.nix @@ -1,8 +1,8 @@ -args@{ config, custom-utils, ... }: +{ config, ... }: let domain = "git.jalr.de"; cfg = config.services.forgejo; - ports = import ../ports.nix args; + ports = config.networking.ports; in { sops.secrets.forgejo-mail = { diff --git a/hosts/magnesium/services/gitlab-runner.nix b/hosts/magnesium/services/gitlab-runner.nix index bc28c9f..24f6c68 100644 --- a/hosts/magnesium/services/gitlab-runner.nix +++ b/hosts/magnesium/services/gitlab-runner.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, pkgs, ... }: { sops.secrets.gitlab-runner_fablab-nea-hcloud-labsync = { diff --git a/hosts/magnesium/services/hedgedoc.nix b/hosts/magnesium/services/hedgedoc.nix index 633fbdc..aa9f1f8 100644 --- a/hosts/magnesium/services/hedgedoc.nix +++ b/hosts/magnesium/services/hedgedoc.nix @@ -1,9 +1,9 @@ -args@{ config, custom-utils, ... }: +{ config, ... }: let domain = "pad.jalr.de"; - ports = import ../ports.nix args; cfg = config.services.hedgedoc; + ports = config.networking.ports; in { sops.secrets.hedgedoc-session-secret = { diff --git a/hosts/magnesium/services/ntfy.nix b/hosts/magnesium/services/ntfy.nix index 4533c26..17848fa 100644 --- a/hosts/magnesium/services/ntfy.nix +++ b/hosts/magnesium/services/ntfy.nix @@ -1,9 +1,9 @@ -args@{ lib, pkgs, config, custom-utils, ... }: +{ config, ... }: let cfg = config.services.ntfy-sh; - ports = import ../ports.nix args; domain = "ntfy.jalr.de"; datadir = "/var/lib/ntfy-sh"; + ports = config.networking.ports; in { # ntfy access --auth-file /var/lib/private/ntfy-sh/user.db '*' 'up*' write-only diff --git a/hosts/magnesium/services/public-ip-tunnel.nix b/hosts/magnesium/services/public-ip-tunnel.nix index 28d917d..80a9800 100644 --- a/hosts/magnesium/services/public-ip-tunnel.nix +++ b/hosts/magnesium/services/public-ip-tunnel.nix @@ -1,9 +1,9 @@ -args@{ config, lib, pkgs, custom-utils, ... }: +{ config, lib, ... }: let - ports = import ../ports.nix args; listenPort = ports.wireguard-public-ip-tunnel.udp; publicKey = "GCmQs7upvDYFueEfqD2yJkkOZg3K7YaGluWWzdjsyTo="; + ports = config.networking.ports; in { sops.secrets = lib.listToAttrs (map diff --git a/hosts/magnesium/services/trilium.nix b/hosts/magnesium/services/trilium.nix index 0546897..964db27 100644 --- a/hosts/magnesium/services/trilium.nix +++ b/hosts/magnesium/services/trilium.nix @@ -1,8 +1,8 @@ -args@{ config, lib, pkgs, custom-utils, ... }: +{ config, pkgs, ... }: let - ports = import ../ports.nix args; domain = "notes.jalr.de"; + ports = config.networking.ports; in { services.trilium-server = { diff --git a/hosts/magnesium/services/webserver.nix b/hosts/magnesium/services/webserver.nix index 8ab2c50..c0aa71f 100644 --- a/hosts/magnesium/services/webserver.nix +++ b/hosts/magnesium/services/webserver.nix @@ -1,9 +1,9 @@ -args@{ config, lib, pkgs, custom-utils, ... }: +{ config, lib, pkgs, ... }: let - ports = import ../ports.nix args; domain = "jalr.de"; matrixDomain = "matrix.jalr.de"; + ports = config.networking.ports; in { networking.firewall.allowedTCPPorts = [ ports.nginx-http.tcp ports.nginx-https.tcp ]; diff --git a/hosts/weinturm-pretix-prod/hardware-configuration.nix b/hosts/weinturm-pretix-prod/hardware-configuration.nix index a0ae780..178664e 100644 --- a/hosts/weinturm-pretix-prod/hardware-configuration.nix +++ b/hosts/weinturm-pretix-prod/hardware-configuration.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, modulesPath, ... }: +{ lib, modulesPath, ... }: { imports = [ (modulesPath + "/profiles/qemu-guest.nix") ]; diff --git a/hosts/weinturm-pretix-prod/ports.nix b/hosts/weinturm-pretix-prod/ports.nix index 5de5641..cabfead 100644 --- a/hosts/weinturm-pretix-prod/ports.nix +++ b/hosts/weinturm-pretix-prod/ports.nix @@ -1,4 +1,4 @@ -{ lib, custom-utils, ... }: +{ custom-utils, ... }: custom-utils.validatePortAttrset { nginx-http.tcp = 80; diff --git a/hosts/weinturm-pretix-prod/services/pretix.nix b/hosts/weinturm-pretix-prod/services/pretix.nix index 7fe04d7..174c68d 100644 --- a/hosts/weinturm-pretix-prod/services/pretix.nix +++ b/hosts/weinturm-pretix-prod/services/pretix.nix @@ -1,4 +1,4 @@ -args@{ config, lib, pkgs, custom-utils, ... }: +args@{ config, lib, ... }: let cfg = config.services.pretix; diff --git a/modules/adb.nix b/modules/adb.nix index 1aae96c..47198c1 100644 --- a/modules/adb.nix +++ b/modules/adb.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: lib.mkIf config.jalr.gui.enable { programs.adb.enable = true; diff --git a/modules/aws.nix b/modules/aws.nix index f94580a..2b6eddb 100644 --- a/modules/aws.nix +++ b/modules/aws.nix @@ -4,7 +4,7 @@ options.jalr.aws = { enable = lib.mkEnableOption "Enable AWS CLI"; accounts = with lib; mkOption { - type = with types; attrsOf (submodule ({ config, name, ... }: { + type = with types; attrsOf (submodule (_: { options = { sso_account_id = mkOption { type = int; diff --git a/modules/bootloader/grub2.nix b/modules/bootloader/grub2.nix index a2ec2ee..2037be7 100644 --- a/modules/bootloader/grub2.nix +++ b/modules/bootloader/grub2.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: lib.mkIf (config.jalr.bootloader == "grub2") { boot.loader.grub = { diff --git a/modules/gnome.nix b/modules/gnome.nix index 1bd91bb..528934b 100644 --- a/modules/gnome.nix +++ b/modules/gnome.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "gnome") { services.xserver = { diff --git a/modules/journald.nix b/modules/journald.nix index c6f1271..e527dc6 100644 --- a/modules/journald.nix +++ b/modules/journald.nix @@ -1,5 +1,3 @@ -{ lib, ... }: - { services.journald.extraConfig = '' MaxRetentionSec=90day diff --git a/modules/kdeconnect.nix b/modules/kdeconnect.nix index 87cbf5d..96b3016 100644 --- a/modules/kdeconnect.nix +++ b/modules/kdeconnect.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let portRange = { diff --git a/modules/localization.nix b/modules/localization.nix index b1a7ea0..0034c23 100644 --- a/modules/localization.nix +++ b/modules/localization.nix @@ -1,4 +1,4 @@ -{ lib, config, pkgs, ... }: +{ config, ... }: { i18n = { defaultLocale = "en_GB.UTF-8"; diff --git a/modules/luksusb.nix b/modules/luksusb.nix index 2015955..315c6a0 100644 --- a/modules/luksusb.nix +++ b/modules/luksusb.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.jalr.luksUsbUnlock; in @@ -59,7 +59,7 @@ in kernelModules = [ "uas" "usbcore" "usb_storage" "vfat" "nls_cp437" "nls_iso8859_1" ]; systemd.services = let - makeService = name: { keyPath, usbDevice, waitForDevice }: + makeService = name: { usbDevice, waitForDevice, ... }: let usbDevPath = makeUsbDevPath usbDevice; usbMountPath = makeMountPath usbDevice; @@ -106,7 +106,7 @@ in cfg.devices; luks.devices = builtins.mapAttrs - (name: { keyPath, usbDevice, ... }: + (_: { keyPath, usbDevice, ... }: let usbMountPath = makeMountPath usbDevice; in diff --git a/modules/mailserver/default.nix b/modules/mailserver/default.nix index 93abbbf..59a8e2c 100644 --- a/modules/mailserver/default.nix +++ b/modules/mailserver/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.jalr.mailserver; in diff --git a/modules/matrix/default.nix b/modules/matrix/default.nix index bbdce2d..4f3c745 100644 --- a/modules/matrix/default.nix +++ b/modules/matrix/default.nix @@ -1,7 +1,5 @@ { config, lib, pkgs, ... }: -let - cfg = config.jalr.matrix; -in + { options.jalr.matrix = with lib; with lib.types; { enable = mkEnableOption "simple matrix server"; diff --git a/modules/matrix/mautrix-signal.nix b/modules/matrix/mautrix-signal.nix index 09c932e..e00ec3a 100644 --- a/modules/matrix/mautrix-signal.nix +++ b/modules/matrix/mautrix-signal.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.jalr.matrix; diff --git a/modules/matrix/mautrix-whatsapp.nix b/modules/matrix/mautrix-whatsapp.nix index f365efc..d4438fe 100644 --- a/modules/matrix/mautrix-whatsapp.nix +++ b/modules/matrix/mautrix-whatsapp.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.jalr.matrix; diff --git a/modules/matrix/synapse.nix b/modules/matrix/synapse.nix index c590b42..f97ddd6 100644 --- a/modules/matrix/synapse.nix +++ b/modules/matrix/synapse.nix @@ -79,7 +79,7 @@ lib.mkIf cfg.enable { matrix-synapse.settings.app_service_config_files = lib.attrsets.mapAttrsToList ( - name: value: + name: _: "/run/matrix-synapse/app_service_config/${name}.yaml" ) cfg.synapse.app_service_config; @@ -108,8 +108,7 @@ lib.mkIf cfg.enable { systemd.services.matrix-synapse = { restartTriggers = lib.attrsets.mapAttrsToList ( - name: value: - "${value}" + _: value: "${value}" ) cfg.synapse.app_service_config; serviceConfig = { diff --git a/modules/networking/default.nix b/modules/networking/default.nix index 065c24b..80cdff2 100644 --- a/modules/networking/default.nix +++ b/modules/networking/default.nix @@ -5,6 +5,7 @@ { imports = [ ./network-manager.nix + ./ports.nix ]; networking.firewall.logRefusedConnections = lib.mkDefault false; diff --git a/modules/networking/ports.nix b/modules/networking/ports.nix new file mode 100644 index 0000000..74293ac --- /dev/null +++ b/modules/networking/ports.nix @@ -0,0 +1,20 @@ +{lib, ...}: + +{ + options.networking.ports = with lib; with lib.types; mkOption { + type = attrsOf (types.submodule { + options = { + tcp = mkOption { + type = oneOf [ port (listOf port) (attrsOf port) (listOf (attrsOf lib.types.port)) ]; + description = "TCP ports"; + default = [ ]; + }; + udp = mkOption { + type = oneOf [ port (listOf port) (attrsOf port) (listOf (attrsOf lib.types.port)) ]; + description = "UDP ports"; + default = [ ]; + }; + }; + }); + }; +} diff --git a/modules/nix.nix b/modules/nix.nix index 689184e..0be49a4 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -42,7 +42,7 @@ nixpkgs.overlays = [ inputs.self.overlays.default - (final: prev: { + (_: prev: { master = import inputs.nixpkgsMaster { inherit system; inherit (prev) config; diff --git a/modules/printers/p-touch_p700.nix b/modules/printers/p-touch_p700.nix index 627ad56..07076b1 100644 --- a/modules/printers/p-touch_p700.nix +++ b/modules/printers/p-touch_p700.nix @@ -1,5 +1,3 @@ -{ config, lib, ... }: - { services.udev.extraRules = '' SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="04f9", ATTR{idProduct}=="2061", OWNER="root", GROUP="users", MODE="660" diff --git a/modules/qbittorrent/default.nix b/modules/qbittorrent/default.nix index 12771a4..9165d4d 100644 --- a/modules/qbittorrent/default.nix +++ b/modules/qbittorrent/default.nix @@ -1,4 +1,4 @@ -{ config, inputs, lib, pkgs, ... }: +{ config, lib, pkgs, ... }: let cfg = config.jalr.qbittorrent; in diff --git a/modules/sudo.nix b/modules/sudo.nix index d47d889..da6577a 100644 --- a/modules/sudo.nix +++ b/modules/sudo.nix @@ -1,4 +1,3 @@ -{ pkgs, inputs, ... }: let commandsWithoutPassword = [ "/run/current-system/sw/bin/systemctl restart tor.service" diff --git a/modules/udmx.nix b/modules/udmx.nix index da8df93..3d7befe 100644 --- a/modules/udmx.nix +++ b/modules/udmx.nix @@ -1,5 +1,3 @@ -{ config, lib, pkgs, ... }: - { services.udev.extraRules = '' # uDMX diff --git a/pkgs/asterisk-sounds-de/default.nix b/pkgs/asterisk-sounds-de/default.nix index ba9a9b0..ca5cad5 100644 --- a/pkgs/asterisk-sounds-de/default.nix +++ b/pkgs/asterisk-sounds-de/default.nix @@ -1,5 +1,4 @@ -{ lib -, stdenvNoCC +{ stdenvNoCC , fetchurl , unzip }: diff --git a/pkgs/contact-page/default.nix b/pkgs/contact-page/default.nix index 1a487ca..170b787 100644 --- a/pkgs/contact-page/default.nix +++ b/pkgs/contact-page/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenvNoCC }: +{ stdenvNoCC }: stdenvNoCC.mkDerivation { name = "jalr-contact"; diff --git a/pkgs/default.nix b/pkgs/default.nix index 2671fe0..2eb4b51 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,8 +1,8 @@ inputs: -final: prev: +_: prev: let - inherit (prev) callPackage system pkgsCross darwin; + inherit (prev) callPackage system pkgsCross; poetry2nix = callPackage inputs.poetry2nix { }; in { diff --git a/pkgs/docker-machine-driver-hetzner/default.nix b/pkgs/docker-machine-driver-hetzner/default.nix index 83cfd12..aa0efa1 100644 --- a/pkgs/docker-machine-driver-hetzner/default.nix +++ b/pkgs/docker-machine-driver-hetzner/default.nix @@ -1,12 +1,12 @@ -{ lib, stdenv, buildGoApplication, fetchFromGitHub }: +{ buildGoApplication, fetchFromGitHub }: buildGoApplication rec { pname = "docker-machine-driver-hetzner"; version = "5.0.1"; src = fetchFromGitHub { - rev = "${version}"; - owner = "JonasProgrammer"; - repo = "docker-machine-driver-hetzner"; + rev = "${version}"; + owner = "JonasProgrammer"; + repo = "docker-machine-driver-hetzner"; sha256 = "sha256-JREn6AzayaHkyhdOTJ8P2H/s/5RaKLe+Qb8GV5dI2pA="; }; modules = ./gomod2nix.toml; diff --git a/pkgs/fpvout/default.nix b/pkgs/fpvout/default.nix index f4090d7..7664f9c 100644 --- a/pkgs/fpvout/default.nix +++ b/pkgs/fpvout/default.nix @@ -1,5 +1,4 @@ -{ lib -, stdenv +{ stdenv , fetchFromGitHub , pkgs }: diff --git a/pkgs/home-assistant-custom-components/guntamatic.nix b/pkgs/home-assistant-custom-components/guntamatic.nix index b7f86bb..8ddb7cd 100644 --- a/pkgs/home-assistant-custom-components/guntamatic.nix +++ b/pkgs/home-assistant-custom-components/guntamatic.nix @@ -1,5 +1,4 @@ -{ lib -, fetchFromGitHub +{ fetchFromGitHub , buildHomeAssistantComponent }: diff --git a/pkgs/illuminanced/default.nix b/pkgs/illuminanced/default.nix index cf27e6f..2683fdc 100644 --- a/pkgs/illuminanced/default.nix +++ b/pkgs/illuminanced/default.nix @@ -1,6 +1,5 @@ { rustPlatform , fetchFromGitHub -, pkgs }: rustPlatform.buildRustPackage { diff --git a/pkgs/modules.nix b/pkgs/modules.nix index 25865fa..8a82e06 100644 --- a/pkgs/modules.nix +++ b/pkgs/modules.nix @@ -1,5 +1,3 @@ -{ pkgs, ... }: - { imports = [ ./asterisk-sounds-de/module.nix diff --git a/pkgs/myintercom-doorbell/default.nix b/pkgs/myintercom-doorbell/default.nix index 9d7fd58..23a4101 100644 --- a/pkgs/myintercom-doorbell/default.nix +++ b/pkgs/myintercom-doorbell/default.nix @@ -1,10 +1,10 @@ -{ lib, python3, poetry2nix }: +{ poetry2nix }: -poetry2nix.mkPoetryApplication rec { +poetry2nix.mkPoetryApplication { pname = "myintercom-audiosocket"; version = "0.0.1"; projectDir = ./.; - overrides = poetry2nix.overrides.withDefaults (final: prev: { + overrides = poetry2nix.overrides.withDefaults (_: prev: { urllib3 = prev.urllib3.override { preferWheel = true; }; diff --git a/pkgs/pretix-banktool/module.nix b/pkgs/pretix-banktool/module.nix index 253a519..9c58157 100644 --- a/pkgs/pretix-banktool/module.nix +++ b/pkgs/pretix-banktool/module.nix @@ -2,17 +2,6 @@ let cfg = config.services.pretix-banktool; - mkTimer = { description, unit, onCalendar }: { - inherit description; - requires = [ "pretix-migrate.service" ]; - after = [ "network.target" ]; - wantedBy = [ "timers.target" ]; - timerConfig = { - Persistent = true; - OnCalendar = onCalendar; - Unit = unit; - }; - }; in { options.services.pretix-banktool = with lib; with lib.types; { diff --git a/users/jalr/default.nix b/users/jalr/default.nix index 93e99b1..d08ba2e 100644 --- a/users/jalr/default.nix +++ b/users/jalr/default.nix @@ -32,7 +32,7 @@ in useUserPackages = true; useGlobalPkgs = true; backupFileExtension = "hm.bak"; - users.jalr = { lib, pkgs, ... }: { + users.jalr = { pkgs, ... }: { imports = [ ./modules ]; config = { home.stateVersion = config.system.stateVersion; diff --git a/users/jalr/modules/aws.nix b/users/jalr/modules/aws.nix index c37e6d5..2e85f92 100644 --- a/users/jalr/modules/aws.nix +++ b/users/jalr/modules/aws.nix @@ -1,4 +1,4 @@ -{ nixosConfig, lib, pkgs, config, ... }: +{ nixosConfig, lib, config, ... }: let inherit (config) xdg; diff --git a/users/jalr/modules/cli/default.nix b/users/jalr/modules/cli/default.nix index 978c846..a0d6ca9 100644 --- a/users/jalr/modules/cli/default.nix +++ b/users/jalr/modules/cli/default.nix @@ -1,4 +1,4 @@ -{ nixosConfig, lib, pkgs, ... }: +{ nixosConfig, pkgs, ... }: { imports = [ ./htop.nix diff --git a/users/jalr/modules/communication/default.nix b/users/jalr/modules/communication/default.nix index 5dc2faf..f461097 100644 --- a/users/jalr/modules/communication/default.nix +++ b/users/jalr/modules/communication/default.nix @@ -1,5 +1,3 @@ -{ nixosConfig, ... }: - { imports = [ ./ferdium.nix diff --git a/users/jalr/modules/dynamic-colors.nix b/users/jalr/modules/dynamic-colors.nix index cb318e0..31e1893 100644 --- a/users/jalr/modules/dynamic-colors.nix +++ b/users/jalr/modules/dynamic-colors.nix @@ -1,4 +1,4 @@ -{ nixosConfig, lib, config, pkgs, ... }: +{ nixosConfig, lib, pkgs, ... }: let loadSwayTheme = pkgs.writeShellScript "load-sway-theme" '' diff --git a/users/jalr/modules/git.nix b/users/jalr/modules/git.nix index da57290..93e9d9f 100644 --- a/users/jalr/modules/git.nix +++ b/users/jalr/modules/git.nix @@ -1,4 +1,4 @@ -{ nixosConfig, pkgs, ... }: +{ pkgs, ... }: let identity.DigitalerDienst = { name = "Jakob Lechner"; diff --git a/users/jalr/modules/graphics/default.nix b/users/jalr/modules/graphics/default.nix index 802e665..3af9b75 100644 --- a/users/jalr/modules/graphics/default.nix +++ b/users/jalr/modules/graphics/default.nix @@ -1,5 +1,3 @@ -{ nixosConfig, ... }: - { imports = [ ./gimp.nix diff --git a/users/jalr/modules/mycli/default.nix b/users/jalr/modules/mycli/default.nix index 758eb36..4f90e9e 100644 --- a/users/jalr/modules/mycli/default.nix +++ b/users/jalr/modules/mycli/default.nix @@ -1,8 +1,8 @@ { lib, pkgs, ... }: let quoteValues = ini: lib.mapAttrs - (section: attrs: - lib.mapAttrs (key: value: if builtins.isString value then ''"${value}"'' else value) attrs + (_: attrs: + lib.mapAttrs (_: value: if builtins.isString value then ''"${value}"'' else value) attrs ) ini; diff --git a/users/jalr/modules/neo.nix b/users/jalr/modules/neo.nix index 48bbb3b..9acef59 100644 --- a/users/jalr/modules/neo.nix +++ b/users/jalr/modules/neo.nix @@ -1,4 +1,3 @@ -{ config, pkgs, ... }: { home.sessionVariables = { XKB_DEFAULT_LAYOUT = "de,de"; diff --git a/users/jalr/modules/ots.nix b/users/jalr/modules/ots.nix index 68369e2..4f3e85c 100644 --- a/users/jalr/modules/ots.nix +++ b/users/jalr/modules/ots.nix @@ -1,8 +1,5 @@ -{ lib, pkgs, ... }: +{ pkgs, ... }: -let - configFile = "ots/ots.json"; -in { home.packages = [ ( diff --git a/users/jalr/modules/pomodoro.nix b/users/jalr/modules/pomodoro.nix index 85e1b78..6df182a 100644 --- a/users/jalr/modules/pomodoro.nix +++ b/users/jalr/modules/pomodoro.nix @@ -1,4 +1,4 @@ -{ nixosConfig, lib, pkgs, config, ... }: +{ nixosConfig, lib, pkgs, ... }: let tomlFormat = pkgs.formats.toml { }; diff --git a/users/jalr/modules/remarkable/restream.nix b/users/jalr/modules/remarkable/restream.nix index f2725f8..6dcbec5 100644 --- a/users/jalr/modules/remarkable/restream.nix +++ b/users/jalr/modules/remarkable/restream.nix @@ -1,4 +1,4 @@ -{ nixosConfig, lib, pkgs, ... }: +{ pkgs, ... }: { home.packages = with pkgs; [ diff --git a/users/jalr/modules/remarkable/rmview.nix b/users/jalr/modules/remarkable/rmview.nix index e87366b..0bf96ed 100644 --- a/users/jalr/modules/remarkable/rmview.nix +++ b/users/jalr/modules/remarkable/rmview.nix @@ -1,4 +1,4 @@ -{ nixosConfig, lib, pkgs, ... }: +{ lib, pkgs, ... }: let config = { @@ -16,7 +16,7 @@ in { home.packages = with pkgs; [ ( - pkgs.writeShellScriptBin "rmview" '' + writeShellScriptBin "rmview" '' export QT_QPA_PLATFORM=xcb exec ${pkgs.rmview}/bin/rmview "$@" '' diff --git a/users/jalr/modules/solarized.nix b/users/jalr/modules/solarized.nix index c814420..5390a31 100644 --- a/users/jalr/modules/solarized.nix +++ b/users/jalr/modules/solarized.nix @@ -1,5 +1,5 @@ builtins.mapAttrs - (name: hex: { + (_: hex: { inherit hex; rgb = builtins.concatStringsSep "," (map (f: toString (builtins.fromTOML "i = 0x${f hex}").i) (map (pos: builtins.substring pos 2) [ 1 3 5 ])); }) diff --git a/users/jalr/modules/sound/default.nix b/users/jalr/modules/sound/default.nix index 37008dd..79ed3c4 100644 --- a/users/jalr/modules/sound/default.nix +++ b/users/jalr/modules/sound/default.nix @@ -1,5 +1,3 @@ -{ nixosConfig, pkgs, ... }: - { imports = [ ./audacity.nix diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index 5139fc9..2d1a004 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -1,4 +1,4 @@ -{ nixosConfig, config, lib, pkgs, stdenv, ... }: +{ nixosConfig, config, lib, pkgs, ... }: let solarized = import ../solarized.nix; diff --git a/users/jalr/modules/sway/move-to-output/default.nix b/users/jalr/modules/sway/move-to-output/default.nix index 4c3fa5e..0daabfe 100644 --- a/users/jalr/modules/sway/move-to-output/default.nix +++ b/users/jalr/modules/sway/move-to-output/default.nix @@ -1,5 +1,5 @@ -{ lib, stdenv, pkgs, writeShellScript, ... }: -stdenv.mkDerivation rec { +{ stdenv, pkgs, ... }: +stdenv.mkDerivation { name = "sway-move-to-output"; phases = "installPhase"; installPhase = '' diff --git a/users/jalr/modules/sway/wofi.nix b/users/jalr/modules/sway/wofi.nix index 9180509..ca8eb9a 100644 --- a/users/jalr/modules/sway/wofi.nix +++ b/users/jalr/modules/sway/wofi.nix @@ -1,4 +1,4 @@ -{ nixosConfig, config, lib, pkgs, ... }: +{ lib, ... }: let solarized = import ../solarized.nix; diff --git a/users/jalr/modules/sway/yubikey-touch-detector.nix b/users/jalr/modules/sway/yubikey-touch-detector.nix index 658f653..0d01b60 100644 --- a/users/jalr/modules/sway/yubikey-touch-detector.nix +++ b/users/jalr/modules/sway/yubikey-touch-detector.nix @@ -1,4 +1,4 @@ -{ nixosConfig, config, lib, pkgs, ... }: +{ pkgs, ... }: { systemd.user.services.yubikey-touch-detector = { diff --git a/users/jalr/modules/tmux.nix b/users/jalr/modules/tmux.nix index a0781e4..c8d4c10 100644 --- a/users/jalr/modules/tmux.nix +++ b/users/jalr/modules/tmux.nix @@ -1,4 +1,3 @@ -{ config, pkgs, ... }: { programs.tmux = { enable = true; diff --git a/users/jalr/modules/vdirsyncer.nix b/users/jalr/modules/vdirsyncer.nix index c8c828d..c853db1 100644 --- a/users/jalr/modules/vdirsyncer.nix +++ b/users/jalr/modules/vdirsyncer.nix @@ -45,27 +45,6 @@ let }; }; - mkWebcalSection = { name, url ? null, urlCommand ? null }: assert url == null -> urlCommand != null; { - "pair calendar_${name}" = { - a = "calendar_${name}_local"; - b = "calendar_${name}_remote"; - collections = null; - }; - - "storage calendar_${name}_local" = { - type = "filesystem"; - path = "${calendarBasePath}/${name}/"; - fileext = ".ics"; - }; - - "storage calendar_${name}_remote" = { - type = "http"; - } // (if urlCommand != null then { - "url.fetch" = fetchCommand urlCommand; - } else { - inherit url; - }); - }; in { home.packages = with pkgs; [ From 6f01431032619f4ea26487041fb2d29298afcade Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 10 Apr 2025 01:13:11 +0200 Subject: [PATCH 421/562] Fix duplicate port check --- custom-utils/default.nix | 30 +---------- custom-utils/ports.nix | 42 +++++++-------- hosts/aluminium/configuration.nix | 1 + hosts/aluminium/ports.nix | 24 +++++---- hosts/aluminium/services/asterisk/default.nix | 19 ++----- hosts/aluminium/services/doorbell.nix | 4 +- hosts/aluminium/services/esphome/default.nix | 4 +- hosts/aluminium/services/home-assistant.nix | 4 +- hosts/aluminium/services/nginx.nix | 4 +- hosts/aluminium/services/unifi-controller.nix | 4 +- hosts/iron/configuration.nix | 1 + hosts/iron/ports.nix | 52 ++++++++++--------- hosts/iron/services/calibre.nix | 4 +- hosts/iron/services/esphome/default.nix | 4 +- hosts/iron/services/home-assistant.nix | 4 +- hosts/iron/services/jellyfin.nix | 4 +- hosts/iron/services/mail.nix | 4 +- hosts/iron/services/matrix.nix | 4 +- hosts/iron/services/navidrome.nix | 4 +- hosts/iron/services/nginx.nix | 4 +- hosts/iron/services/public-ip-tunnel.nix | 4 +- hosts/iron/services/radicale.nix | 4 +- hosts/iron/services/remarkable.nix | 4 +- hosts/iron/services/snapcast/snapserver.nix | 4 +- hosts/iron/services/sturzbach.nix | 4 +- hosts/iron/services/unifi-controller.nix | 4 +- hosts/iron/services/whatsapp.nix | 4 +- hosts/magnesium/ports.nix | 4 +- hosts/magnesium/services/coturn.nix | 2 +- hosts/magnesium/services/forgejo.nix | 2 +- hosts/magnesium/services/hedgedoc.nix | 2 +- hosts/magnesium/services/ntfy.nix | 2 +- hosts/magnesium/services/public-ip-tunnel.nix | 2 +- hosts/magnesium/services/trilium.nix | 2 +- hosts/magnesium/services/webserver.nix | 2 +- hosts/weinturm-pretix-prod/configuration.nix | 1 + hosts/weinturm-pretix-prod/ports.nix | 12 +++-- .../weinturm-pretix-prod/services/pretix.nix | 4 +- modules/networking/ports.nix | 6 +-- 39 files changed, 132 insertions(+), 158 deletions(-) diff --git a/custom-utils/default.nix b/custom-utils/default.nix index 101f08c..9bc4a53 100644 --- a/custom-utils/default.nix +++ b/custom-utils/default.nix @@ -1,33 +1,5 @@ { lib, ... }: -let - filterPort = pm: port: ( - lib.attrsets.catAttrs port ( - lib.attrsets.attrValues ( - lib.attrsets.filterAttrs (_: v: v ? "${port}") pm - ) - ) - ); - onlyUniqueItemsInList = x: lib.lists.length x == lib.lists.length (lib.lists.unique x); - protocols = x: lib.lists.unique (lib.flatten (map builtins.attrNames (lib.attrValues x))); - mkRange = x: lib.lists.range (builtins.elemAt x 0) (builtins.elemAt x 1); - validateList = allowed: builtins.all (x: builtins.elem x allowed); -in { - validatePortAttrset = portmap: - if ! onlyUniqueItemsInList (lib.flatten (map - (x: - if lib.isInt x then x - else if lib.isList x then x - else if lib.isAttrs x then - ( - if ! validateList [ "range" ] (builtins.attrNames x) then builtins.abort "found invalid attribute name" - else if x ? "range" then if lib.lists.length x.range == 2 then mkRange x.range else builtins.abort "range needs a list with exactly two items" - else builtins.abort "found invalid attrset" - ) - else builtins.abort "found invalid entry in portmap" - ) - (filterPort portmap "udp"))) then builtins.abort "Found duplicate ports." - else if ! validateList [ "tcp" "udp" ] (protocols portmap) then builtins.abort "Found invalid protocol." - else portmap; + validatePortAttrset = import ./ports.nix { inherit lib; }; } diff --git a/custom-utils/ports.nix b/custom-utils/ports.nix index 101f08c..a8d1a54 100644 --- a/custom-utils/ports.nix +++ b/custom-utils/ports.nix @@ -9,25 +9,25 @@ let ) ); onlyUniqueItemsInList = x: lib.lists.length x == lib.lists.length (lib.lists.unique x); - protocols = x: lib.lists.unique (lib.flatten (map builtins.attrNames (lib.attrValues x))); - mkRange = x: lib.lists.range (builtins.elemAt x 0) (builtins.elemAt x 1); - validateList = allowed: builtins.all (x: builtins.elem x allowed); + mkRange = { from, to }: (lib.lists.range from to); in -{ - validatePortAttrset = portmap: - if ! onlyUniqueItemsInList (lib.flatten (map - (x: - if lib.isInt x then x - else if lib.isList x then x - else if lib.isAttrs x then - ( - if ! validateList [ "range" ] (builtins.attrNames x) then builtins.abort "found invalid attribute name" - else if x ? "range" then if lib.lists.length x.range == 2 then mkRange x.range else builtins.abort "range needs a list with exactly two items" - else builtins.abort "found invalid attrset" - ) - else builtins.abort "found invalid entry in portmap" - ) - (filterPort portmap "udp"))) then builtins.abort "Found duplicate ports." - else if ! validateList [ "tcp" "udp" ] (protocols portmap) then builtins.abort "Found invalid protocol." - else portmap; -} +portmap: +if builtins.all + ( + proto: + if onlyUniqueItemsInList + ( + lib.flatten ( + map + (x: + if lib.isInt x then x + else if lib.isList x then x + else if lib.isAttrs x then mkRange x + else builtins.abort "found invalid entry in portmap" + ) + (filterPort portmap proto) + ) + ) then true else builtins.abort "Found duplicate ${proto} ports." + ) [ "tcp" "udp" ] +then portmap +else builtins.abort "Found duplicate ports." diff --git a/hosts/aluminium/configuration.nix b/hosts/aluminium/configuration.nix index 43c1b5d..fabaecc 100644 --- a/hosts/aluminium/configuration.nix +++ b/hosts/aluminium/configuration.nix @@ -5,6 +5,7 @@ ./hardware-configuration.nix ../../users/jalr ./services + ./ports.nix ]; services.openssh.enable = true; diff --git a/hosts/aluminium/ports.nix b/hosts/aluminium/ports.nix index f07e09d..f83f360 100644 --- a/hosts/aluminium/ports.nix +++ b/hosts/aluminium/ports.nix @@ -1,14 +1,16 @@ { custom-utils, ... }: -custom-utils.validatePortAttrset { - asterisk-rtp = { udp.range = [ 10000 10200 ]; }; - doorbell-audiosocket.tcp = 9092; - doorbell-webrtc-ice.tcp = 8189; - doorbell-webrtc.tcp = 8889; - esphome.tcp = 6052; - home-assistant.tcp = 8123; - nginx-http.tcp = 80; - nginx-https.tcp = 443; - unifi-inform.tcp = 8080; - unifi-ui.tcp = 8443; +{ + config.networking.ports = custom-utils.validatePortAttrset { + asterisk-rtp.udp = { from = 10000; to = 10200; }; + doorbell-audiosocket.tcp = 9092; + doorbell-webrtc-ice.tcp = 8189; + doorbell-webrtc.tcp = 8889; + esphome.tcp = 6052; + home-assistant.tcp = 8123; + nginx-http.tcp = 80; + nginx-https.tcp = 443; + unifi-inform.tcp = 8080; + unifi-ui.tcp = 8443; + }; } diff --git a/hosts/aluminium/services/asterisk/default.nix b/hosts/aluminium/services/asterisk/default.nix index 1fe50cb..88eee25 100644 --- a/hosts/aluminium/services/asterisk/default.nix +++ b/hosts/aluminium/services/asterisk/default.nix @@ -1,16 +1,12 @@ -args@{ config, lib, pkgs, ... }: +{ config, lib, pkgs, ... }: let - ports = import ../../ports.nix args; + inherit (config.networking) ports; secretConfigFiles = [ "ari" "pjsip" "voicemail" ]; - rtp = { - start = builtins.elemAt ports.asterisk-rtp.udp.range 0; - end = builtins.elemAt ports.asterisk-rtp.udp.range 1; - }; voicemail-sounds = pkgs.callPackage ./voicemail-sounds { }; in { @@ -142,8 +138,8 @@ in ''; "rtp.conf" = '' [general] - rtpstart=${toString rtp.start} - rtpend=${toString rtp.end} + rtpstart=${toString ports.asterisk-rtp.udp.from} + rtpend=${toString ports.asterisk-rtp.udp.to} ''; "dnsmgr.conf" = '' [general] @@ -167,12 +163,7 @@ in (lib.listToAttrs (map (name: lib.nameValuePair name { }) secretConfigFiles)); networking.firewall = { - allowedUDPPortRanges = [ - { - from = rtp.start; - to = rtp.end; - } - ]; + allowedUDPPortRanges = lib.singleton ports.asterisk-rtp.udp; interfaces.voice = { allowedTCPPorts = [ 5060 ]; allowedUDPPorts = [ 5060 ]; diff --git a/hosts/aluminium/services/doorbell.nix b/hosts/aluminium/services/doorbell.nix index 7d2f45d..9d8c5af 100644 --- a/hosts/aluminium/services/doorbell.nix +++ b/hosts/aluminium/services/doorbell.nix @@ -1,7 +1,7 @@ -args@{ config, ... }: +{ config, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; in { sops.secrets.myintercom-doorbell-password = { diff --git a/hosts/aluminium/services/esphome/default.nix b/hosts/aluminium/services/esphome/default.nix index bf8f9bc..144bb06 100644 --- a/hosts/aluminium/services/esphome/default.nix +++ b/hosts/aluminium/services/esphome/default.nix @@ -1,6 +1,6 @@ -args@{ lib, pkgs, config, ... }: +{ lib, pkgs, config, ... }: let - ports = import ../../ports.nix args; + inherit (config.networking) ports; cfgdir = pkgs.stdenvNoCC.mkDerivation { name = "esphome-config"; src = ./devices; diff --git a/hosts/aluminium/services/home-assistant.nix b/hosts/aluminium/services/home-assistant.nix index bab9944..633b210 100644 --- a/hosts/aluminium/services/home-assistant.nix +++ b/hosts/aluminium/services/home-assistant.nix @@ -1,6 +1,6 @@ -args@{ pkgs, config, ... }: +{ pkgs, config, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; in { services.home-assistant = { diff --git a/hosts/aluminium/services/nginx.nix b/hosts/aluminium/services/nginx.nix index b2e020e..6eb78ee 100644 --- a/hosts/aluminium/services/nginx.nix +++ b/hosts/aluminium/services/nginx.nix @@ -1,7 +1,7 @@ -args: +{ config, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; in { services.nginx = { diff --git a/hosts/aluminium/services/unifi-controller.nix b/hosts/aluminium/services/unifi-controller.nix index deeae22..f5a70a9 100644 --- a/hosts/aluminium/services/unifi-controller.nix +++ b/hosts/aluminium/services/unifi-controller.nix @@ -1,7 +1,7 @@ -args@{ pkgs, ... }: +{ config, pkgs, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; in { services.unifi = { diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index 789aca1..3c47261 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -34,6 +34,7 @@ with lib; { imports = [ ../../users/jalr ./services + ./ports.nix ]; config = { system.stateVersion = "23.11"; diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 9c3a7fc..679a355 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -1,28 +1,30 @@ { custom-utils, ... }: -custom-utils.validatePortAttrset { - calibre-server.tcp = 8081; - calibre-web.tcp = 8082; - esphome.tcp = 6052; - home-assistant.tcp = 8123; - jellyfin.tcp = 8096; - matrix-synapse.tcp = 8008; - mautrix-signal.tcp = 29319; - mautrix-whatsapp.tcp = 29318; - mqtt.tcp = 1883; - navidrome.tcp = 4533; - nginx-http.tcp = 80; - nginx-https.tcp = 443; - postfix-relay.tcp = 25; - postfix-submission.tcp = [ 465 ]; - qbittorrent-torrent.tcp = 59832; - qbittorrent-webui.tcp = 8099; - radicale.tcp = 5232; - rmfakecloud.tcp = 3000; - snapserver.tcp = 1704; - snapserverTcp.tcp = 1705; - snapserverHttp.tcp = 1780; - unifi-http.tcp = 8080; - unifi-https.tcp = 8443; - wireguard-public-ip-tunnel.udp = 51000; +{ + config.networking.ports = custom-utils.validatePortAttrset { + calibre-server.tcp = 8081; + calibre-web.tcp = 8082; + esphome.tcp = 6052; + home-assistant.tcp = 8123; + jellyfin.tcp = 8096; + matrix-synapse.tcp = 8008; + mautrix-signal.tcp = 29319; + mautrix-whatsapp.tcp = 29318; + mqtt.tcp = 1883; + navidrome.tcp = 4533; + nginx-http.tcp = 80; + nginx-https.tcp = 443; + postfix-relay.tcp = 25; + postfix-submission.tcp = 465; + qbittorrent-torrent.tcp = 59832; + qbittorrent-webui.tcp = 8099; + radicale.tcp = 5232; + rmfakecloud.tcp = 3000; + snapserver.tcp = 1704; + snapserverTcp.tcp = 1705; + snapserverHttp.tcp = 1780; + unifi-http.tcp = 8080; + unifi-https.tcp = 8443; + wireguard-public-ip-tunnel.udp = 51000; + }; } diff --git a/hosts/iron/services/calibre.nix b/hosts/iron/services/calibre.nix index 831cbce..90f0b83 100644 --- a/hosts/iron/services/calibre.nix +++ b/hosts/iron/services/calibre.nix @@ -1,6 +1,6 @@ -args@{ lib, config, ... }: +{ lib, config, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; in { sops.secrets.calibre-htpasswd = { diff --git a/hosts/iron/services/esphome/default.nix b/hosts/iron/services/esphome/default.nix index b49ec96..cf83681 100644 --- a/hosts/iron/services/esphome/default.nix +++ b/hosts/iron/services/esphome/default.nix @@ -1,6 +1,6 @@ -args@{ lib, pkgs, config, ... }: +{ lib, pkgs, config, ... }: let - ports = import ../../ports.nix args; + inherit (config.networking) ports; cfgdir = pkgs.stdenvNoCC.mkDerivation { name = "esphome-config"; src = ./devices; diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index 8901256..fb520a9 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -1,6 +1,6 @@ -args@{ lib, pkgs, config, ... }: +{ lib, pkgs, config, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; interfaces = import ../interfaces.nix; domain = "hass.jalr.de"; in diff --git a/hosts/iron/services/jellyfin.nix b/hosts/iron/services/jellyfin.nix index 2f0230f..ad5e9a0 100644 --- a/hosts/iron/services/jellyfin.nix +++ b/hosts/iron/services/jellyfin.nix @@ -1,6 +1,6 @@ -args@{ lib, ... }: +{ config, lib, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; in { services.jellyfin = { diff --git a/hosts/iron/services/mail.nix b/hosts/iron/services/mail.nix index db2c2d2..c18aae9 100644 --- a/hosts/iron/services/mail.nix +++ b/hosts/iron/services/mail.nix @@ -1,7 +1,7 @@ -args: +{ config, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; in { #sops.secrets."domain_key_jalr.de" = { diff --git a/hosts/iron/services/matrix.nix b/hosts/iron/services/matrix.nix index 4f7dd3d..f325a9b 100644 --- a/hosts/iron/services/matrix.nix +++ b/hosts/iron/services/matrix.nix @@ -1,7 +1,7 @@ -args@{ config, pkgs, ... }: +{ config, pkgs, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; signalPhoneNumber = "+4915566437153"; signalUser = "jalr"; in diff --git a/hosts/iron/services/navidrome.nix b/hosts/iron/services/navidrome.nix index 054f38f..e36bef4 100644 --- a/hosts/iron/services/navidrome.nix +++ b/hosts/iron/services/navidrome.nix @@ -1,7 +1,7 @@ -args@{ config, lib, pkgs, ... }: +{ config, lib, pkgs, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; settings = { # https://www.navidrome.org/docs/usage/configuration-options/#available-options Address = "127.0.0.1"; diff --git a/hosts/iron/services/nginx.nix b/hosts/iron/services/nginx.nix index b2e020e..6eb78ee 100644 --- a/hosts/iron/services/nginx.nix +++ b/hosts/iron/services/nginx.nix @@ -1,7 +1,7 @@ -args: +{ config, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; in { services.nginx = { diff --git a/hosts/iron/services/public-ip-tunnel.nix b/hosts/iron/services/public-ip-tunnel.nix index 67ee737..92d6f29 100644 --- a/hosts/iron/services/public-ip-tunnel.nix +++ b/hosts/iron/services/public-ip-tunnel.nix @@ -1,7 +1,7 @@ -args@{ config, lib, pkgs, ... }: +{ config, lib, pkgs, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; listenPort = ports.wireguard-public-ip-tunnel.udp; remoteHost = "magnesium.jalr.de"; remotePort = 51000; diff --git a/hosts/iron/services/radicale.nix b/hosts/iron/services/radicale.nix index 7f327b6..f0aa757 100644 --- a/hosts/iron/services/radicale.nix +++ b/hosts/iron/services/radicale.nix @@ -1,7 +1,7 @@ -args@{ config, ... }: +{ config, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; in { sops.secrets.radicale-htpasswd = { diff --git a/hosts/iron/services/remarkable.nix b/hosts/iron/services/remarkable.nix index b3d6938..5080072 100644 --- a/hosts/iron/services/remarkable.nix +++ b/hosts/iron/services/remarkable.nix @@ -1,6 +1,6 @@ -args@{ lib, config, pkgs, ... }: +{ lib, config, pkgs, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; domain = "rmfakecloud.jalr.de"; cfg = config.services.rmfakecloud; mkEnvironment = settings: lib.strings.concatLines ( diff --git a/hosts/iron/services/snapcast/snapserver.nix b/hosts/iron/services/snapcast/snapserver.nix index 3aa31ff..0d44d04 100644 --- a/hosts/iron/services/snapcast/snapserver.nix +++ b/hosts/iron/services/snapcast/snapserver.nix @@ -1,6 +1,6 @@ -args@{ lib, pkgs, config, ... }: +{ lib, pkgs, config, ... }: let - ports = import ../../ports.nix args; + inherit (config.networking) ports; interfaces = import ../../interfaces.nix; in { diff --git a/hosts/iron/services/sturzbach.nix b/hosts/iron/services/sturzbach.nix index ce7cbe6..4f02a9a 100644 --- a/hosts/iron/services/sturzbach.nix +++ b/hosts/iron/services/sturzbach.nix @@ -1,7 +1,7 @@ -args: +{ config, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; in { jalr.qbittorrent = { diff --git a/hosts/iron/services/unifi-controller.nix b/hosts/iron/services/unifi-controller.nix index 841fdba..87144fa 100644 --- a/hosts/iron/services/unifi-controller.nix +++ b/hosts/iron/services/unifi-controller.nix @@ -1,7 +1,7 @@ -args@{ pkgs, ... }: +{ config, pkgs, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; interfaces = import ../interfaces.nix; in { diff --git a/hosts/iron/services/whatsapp.nix b/hosts/iron/services/whatsapp.nix index 6ef117c..19c2dae 100644 --- a/hosts/iron/services/whatsapp.nix +++ b/hosts/iron/services/whatsapp.nix @@ -1,7 +1,7 @@ -args@{ pkgs, ... }: +{ config, pkgs, ... }: let - ports = import ../ports.nix args; + inherit (config.networking) ports; shutdownAndroidVm = pkgs.writeShellScript "shutdown-android-vm" '' set -e export PATH=${pkgs.lib.makeBinPath [pkgs.libvirt pkgs.gnused pkgs.android-tools]} diff --git a/hosts/magnesium/ports.nix b/hosts/magnesium/ports.nix index 79e6a0b..52d3ddf 100644 --- a/hosts/magnesium/ports.nix +++ b/hosts/magnesium/ports.nix @@ -1,5 +1,7 @@ +{ custom-utils, ... }: + { - config.networking.ports = { + config.networking.ports = custom-utils.validatePortAttrset { coturn-cli.tcp = 5766; coturn-plain = { tcp = [ 3478 3479 ]; udp = [ 3478 3479 ]; }; coturn-relay.udp = { from = 49160; to = 49200; }; diff --git a/hosts/magnesium/services/coturn.nix b/hosts/magnesium/services/coturn.nix index e48af8b..d9e8447 100644 --- a/hosts/magnesium/services/coturn.nix +++ b/hosts/magnesium/services/coturn.nix @@ -3,7 +3,7 @@ let cfg = config.services.coturn; fqdn = "turn.jalr.de"; - ports = config.networking.ports; + inherit (config.networking) ports; in { sops.secrets.turn-static-auth-secret = { diff --git a/hosts/magnesium/services/forgejo.nix b/hosts/magnesium/services/forgejo.nix index 459e6e4..98ec795 100644 --- a/hosts/magnesium/services/forgejo.nix +++ b/hosts/magnesium/services/forgejo.nix @@ -2,7 +2,7 @@ let domain = "git.jalr.de"; cfg = config.services.forgejo; - ports = config.networking.ports; + inherit (config.networking) ports; in { sops.secrets.forgejo-mail = { diff --git a/hosts/magnesium/services/hedgedoc.nix b/hosts/magnesium/services/hedgedoc.nix index aa9f1f8..44db703 100644 --- a/hosts/magnesium/services/hedgedoc.nix +++ b/hosts/magnesium/services/hedgedoc.nix @@ -3,7 +3,7 @@ let domain = "pad.jalr.de"; cfg = config.services.hedgedoc; - ports = config.networking.ports; + inherit (config.networking) ports; in { sops.secrets.hedgedoc-session-secret = { diff --git a/hosts/magnesium/services/ntfy.nix b/hosts/magnesium/services/ntfy.nix index 17848fa..16f9129 100644 --- a/hosts/magnesium/services/ntfy.nix +++ b/hosts/magnesium/services/ntfy.nix @@ -3,7 +3,7 @@ let cfg = config.services.ntfy-sh; domain = "ntfy.jalr.de"; datadir = "/var/lib/ntfy-sh"; - ports = config.networking.ports; + inherit (config.networking) ports; in { # ntfy access --auth-file /var/lib/private/ntfy-sh/user.db '*' 'up*' write-only diff --git a/hosts/magnesium/services/public-ip-tunnel.nix b/hosts/magnesium/services/public-ip-tunnel.nix index 80a9800..f8fb289 100644 --- a/hosts/magnesium/services/public-ip-tunnel.nix +++ b/hosts/magnesium/services/public-ip-tunnel.nix @@ -3,7 +3,7 @@ let listenPort = ports.wireguard-public-ip-tunnel.udp; publicKey = "GCmQs7upvDYFueEfqD2yJkkOZg3K7YaGluWWzdjsyTo="; - ports = config.networking.ports; + inherit (config.networking) ports; in { sops.secrets = lib.listToAttrs (map diff --git a/hosts/magnesium/services/trilium.nix b/hosts/magnesium/services/trilium.nix index 964db27..c61c5cf 100644 --- a/hosts/magnesium/services/trilium.nix +++ b/hosts/magnesium/services/trilium.nix @@ -2,7 +2,7 @@ let domain = "notes.jalr.de"; - ports = config.networking.ports; + inherit (config.networking) ports; in { services.trilium-server = { diff --git a/hosts/magnesium/services/webserver.nix b/hosts/magnesium/services/webserver.nix index c0aa71f..a30a098 100644 --- a/hosts/magnesium/services/webserver.nix +++ b/hosts/magnesium/services/webserver.nix @@ -3,7 +3,7 @@ let domain = "jalr.de"; matrixDomain = "matrix.jalr.de"; - ports = config.networking.ports; + inherit (config.networking) ports; in { networking.firewall.allowedTCPPorts = [ ports.nginx-http.tcp ports.nginx-https.tcp ]; diff --git a/hosts/weinturm-pretix-prod/configuration.nix b/hosts/weinturm-pretix-prod/configuration.nix index 694dc1b..774ab83 100644 --- a/hosts/weinturm-pretix-prod/configuration.nix +++ b/hosts/weinturm-pretix-prod/configuration.nix @@ -3,6 +3,7 @@ ./hardware-configuration.nix ../../users/jalr ./services + ./ports.nix ]; networking.hostName = "weinturm-pretix-prod"; diff --git a/hosts/weinturm-pretix-prod/ports.nix b/hosts/weinturm-pretix-prod/ports.nix index cabfead..c41bae4 100644 --- a/hosts/weinturm-pretix-prod/ports.nix +++ b/hosts/weinturm-pretix-prod/ports.nix @@ -1,8 +1,10 @@ { custom-utils, ... }: -custom-utils.validatePortAttrset { - nginx-http.tcp = 80; - nginx-https.tcp = 443; - ports.postfix-relay.tcp = 25; - ports.postfix-submission.tcp = [ 465 ]; +{ + config.networking.ports = custom-utils.validatePortAttrset { + nginx-http.tcp = 80; + nginx-https.tcp = 443; + postfix-relay.tcp = 25; + postfix-submission.tcp = 465; + }; } diff --git a/hosts/weinturm-pretix-prod/services/pretix.nix b/hosts/weinturm-pretix-prod/services/pretix.nix index 174c68d..94fa3ab 100644 --- a/hosts/weinturm-pretix-prod/services/pretix.nix +++ b/hosts/weinturm-pretix-prod/services/pretix.nix @@ -1,8 +1,8 @@ -args@{ config, lib, ... }: +{ config, lib, ... }: let cfg = config.services.pretix; - ports = import ../ports.nix args; + inherit (config.networking) ports; domain = "tickets.weinturm-open-air.de"; extraDomains = [ "tickets.weinturm.jalr.de" diff --git a/modules/networking/ports.nix b/modules/networking/ports.nix index 74293ac..3e656aa 100644 --- a/modules/networking/ports.nix +++ b/modules/networking/ports.nix @@ -1,16 +1,16 @@ -{lib, ...}: +{ lib, ... }: { options.networking.ports = with lib; with lib.types; mkOption { type = attrsOf (types.submodule { options = { tcp = mkOption { - type = oneOf [ port (listOf port) (attrsOf port) (listOf (attrsOf lib.types.port)) ]; + type = oneOf [ port (listOf port) (attrsOf port) ]; description = "TCP ports"; default = [ ]; }; udp = mkOption { - type = oneOf [ port (listOf port) (attrsOf port) (listOf (attrsOf lib.types.port)) ]; + type = oneOf [ port (listOf port) (attrsOf port) ]; description = "UDP ports"; default = [ ]; }; From 7be4097ec940b6df982df1c508b2d25abda3d346 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 10 Apr 2025 01:41:26 +0200 Subject: [PATCH 422/562] Disable ksoloti as it is currently broken --- users/jalr/modules/sound/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/users/jalr/modules/sound/default.nix b/users/jalr/modules/sound/default.nix index 79ed3c4..d5764d3 100644 --- a/users/jalr/modules/sound/default.nix +++ b/users/jalr/modules/sound/default.nix @@ -3,6 +3,6 @@ ./audacity.nix ./easyeffects.nix ./pipewire.nix - ./ksoloti.nix + #./ksoloti.nix ]; } From 5b3ea1819dee6f2a2510bb98218142a90e2c21c1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 10 Apr 2025 01:59:14 +0200 Subject: [PATCH 423/562] Fix browserpass --- users/jalr/modules/firefox/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/users/jalr/modules/firefox/default.nix b/users/jalr/modules/firefox/default.nix index db34d62..411773e 100644 --- a/users/jalr/modules/firefox/default.nix +++ b/users/jalr/modules/firefox/default.nix @@ -2,7 +2,11 @@ { programs.firefox = { inherit (nixosConfig.jalr.gui) enable; - package = pkgs.firefox-esr; + package = pkgs.firefox-esr.override { + nativeMessagingHosts = [ + pkgs.browserpass + ]; + }; policies = { AllowedDomainsForApps = ""; CaptivePortal = false; From d655696ffd4991136b9a636f6d43caf26f7f7c3e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 14 Apr 2025 15:24:10 +0200 Subject: [PATCH 424/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/de6fc5551121c59c01e2a3d45b277a6d05077bc4?narHash=sha256-b/exDDQSLmENZZgbAEI3qi9yHkuXAXCPbormD8CSJXo%3D' (2025-03-31) → 'github:nixos/nixos-hardware/9a049b4a421076d27fee3eec664a18b2066824cb?narHash=sha256-fbWE4Xpw6eH0Q6in%2BymNuDwTkqmFmtxcQEmtRuKDTTk%3D' (2025-04-14) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/60e405b241edb6f0573f3d9f944617fe33ac4a73?narHash=sha256-S9M4HddBCxbbX1CKSyDYgZ8NCVyHcbKnBfoUXeRu2jQ%3D' (2025-04-09) → 'github:nixos/nixpkgs/706209a65a7ca7ea829454dd9c40a80dc3eb0074?narHash=sha256-IY/KgztXwI%2Bs%2BBxG5ek1ayHOJBuDDmNxZmw732k9qw0%3D' (2025-04-14) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/3edf77d2a07e051182310440f299dbb3ca09046a?narHash=sha256-id2VxKm1SVaYLQi/28OMjEsFeaAMGC8KbJxy%2B0h1gUM%3D' (2025-04-09) → 'github:NixOS/nixpkgs/58703017d8a85361b67f02d7efbb8baf02bc1333?narHash=sha256-Np5pgX4m4h7IaCP1BwQPMz2p7XIRvjSfhaO1/IdgyIQ%3D' (2025-04-14) • Updated input 'nur': 'github:nix-community/NUR/85dc40ee54ecef0d520af9bbaaeb0e6f1df42495?narHash=sha256-pB/mVkkfjZD98fFHzo9WYzMZOISDMV5m1ua9cO1kRfE%3D' (2025-04-09) → 'github:nix-community/NUR/91cf72548fc06e8effab92add042cb256b0a5ffa?narHash=sha256-kgJIH0MIyPShPmuCK7jmTL4MHJ14j/xU9ITbm5HaDUw%3D' (2025-04-14) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/c8cd81426f45942bb2906d5ed2fe21d2f19d95b7?narHash=sha256-tzCdyIJj9AjysC3OuKA%2BtMD/kDEDAF9mICPDU7ix0JA%3D' (2025-04-08) → 'github:nixos/nixpkgs/2631b0b7abcea6e640ce31cd78ea58910d31e650?narHash=sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR%2BXhw3kr/3Xd0GPTM%3D' (2025-04-12) • Updated input 'sops-nix': 'github:Mic92/sops-nix/69d5a5a4635c27dae5a742f36108beccc506c1ba?narHash=sha256-SR6%2BqjkPjGQG%2B8eM4dCcVtss8r9bre/LAxFMPJpaZeU%3D' (2025-04-08) → 'github:Mic92/sops-nix/7e147a1ae90f0d4a374938cdc3df3cdaecb9d388?narHash=sha256-lv52pnfiRGp5%2BxkZEgWr56DWiRgkMFXpiGba3eJ3krE%3D' (2025-04-13) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index e111536..5619299 100644 --- a/flake.lock +++ b/flake.lock @@ -349,11 +349,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1743420942, - "narHash": "sha256-b/exDDQSLmENZZgbAEI3qi9yHkuXAXCPbormD8CSJXo=", + "lastModified": 1744633460, + "narHash": "sha256-fbWE4Xpw6eH0Q6in+ymNuDwTkqmFmtxcQEmtRuKDTTk=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "de6fc5551121c59c01e2a3d45b277a6d05077bc4", + "rev": "9a049b4a421076d27fee3eec664a18b2066824cb", "type": "github" }, "original": { @@ -365,11 +365,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1744168086, - "narHash": "sha256-S9M4HddBCxbbX1CKSyDYgZ8NCVyHcbKnBfoUXeRu2jQ=", + "lastModified": 1744636565, + "narHash": "sha256-IY/KgztXwI+s+BxG5ek1ayHOJBuDDmNxZmw732k9qw0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "60e405b241edb6f0573f3d9f944617fe33ac4a73", + "rev": "706209a65a7ca7ea829454dd9c40a80dc3eb0074", "type": "github" }, "original": { @@ -397,11 +397,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1744187498, - "narHash": "sha256-id2VxKm1SVaYLQi/28OMjEsFeaAMGC8KbJxy+0h1gUM=", + "lastModified": 1744636776, + "narHash": "sha256-Np5pgX4m4h7IaCP1BwQPMz2p7XIRvjSfhaO1/IdgyIQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3edf77d2a07e051182310440f299dbb3ca09046a", + "rev": "58703017d8a85361b67f02d7efbb8baf02bc1333", "type": "github" }, "original": { @@ -413,11 +413,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1744098102, - "narHash": "sha256-tzCdyIJj9AjysC3OuKA+tMD/kDEDAF9mICPDU7ix0JA=", + "lastModified": 1744463964, + "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c8cd81426f45942bb2906d5ed2fe21d2f19d95b7", + "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", "type": "github" }, "original": { @@ -434,11 +434,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1744184848, - "narHash": "sha256-pB/mVkkfjZD98fFHzo9WYzMZOISDMV5m1ua9cO1kRfE=", + "lastModified": 1744633454, + "narHash": "sha256-kgJIH0MIyPShPmuCK7jmTL4MHJ14j/xU9ITbm5HaDUw=", "owner": "nix-community", "repo": "NUR", - "rev": "85dc40ee54ecef0d520af9bbaaeb0e6f1df42495", + "rev": "91cf72548fc06e8effab92add042cb256b0a5ffa", "type": "github" }, "original": { @@ -550,11 +550,11 @@ ] }, "locked": { - "lastModified": 1744103455, - "narHash": "sha256-SR6+qjkPjGQG+8eM4dCcVtss8r9bre/LAxFMPJpaZeU=", + "lastModified": 1744518500, + "narHash": "sha256-lv52pnfiRGp5+xkZEgWr56DWiRgkMFXpiGba3eJ3krE=", "owner": "Mic92", "repo": "sops-nix", - "rev": "69d5a5a4635c27dae5a742f36108beccc506c1ba", + "rev": "7e147a1ae90f0d4a374938cdc3df3cdaecb9d388", "type": "github" }, "original": { From 96de741c61bb136080b7186ac4d1b86c6db4a518 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 14 Apr 2025 21:29:36 +0200 Subject: [PATCH 425/562] Use nixos-24.11 branch of nixpkgs --- flake.lock | 8 ++++---- flake.nix | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index 5619299..d95c3a7 100644 --- a/flake.lock +++ b/flake.lock @@ -365,16 +365,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1744636565, - "narHash": "sha256-IY/KgztXwI+s+BxG5ek1ayHOJBuDDmNxZmw732k9qw0=", + "lastModified": 1744440957, + "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "706209a65a7ca7ea829454dd9c40a80dc3eb0074", + "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", "type": "github" }, "original": { "owner": "nixos", - "ref": "release-24.11", + "ref": "nixos-24.11", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 74808d5..d0fd029 100644 --- a/flake.nix +++ b/flake.nix @@ -36,7 +36,7 @@ nixos-hardware.url = "github:nixos/nixos-hardware/master"; - nixpkgs.url = "github:nixos/nixpkgs/release-24.11"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; nixpkgsMaster.url = "github:NixOS/nixpkgs/master"; From 1c0fa7606b156d3477b0d8efd50295c257bd56e3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 15 Apr 2025 12:25:43 +0200 Subject: [PATCH 426/562] Add mealie --- hosts/iron/secrets/mail-users.nix | Bin 1524 -> 1705 bytes hosts/magnesium/persistence.nix | 1 + hosts/magnesium/ports.nix | 1 + hosts/magnesium/secrets.yaml | 7 ++--- hosts/magnesium/services/default.nix | 1 + hosts/magnesium/services/mealie.nix | 37 +++++++++++++++++++++++++++ 6 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 hosts/magnesium/services/mealie.nix diff --git a/hosts/iron/secrets/mail-users.nix b/hosts/iron/secrets/mail-users.nix index 0046b885874d45c973507b8b794424d0d4864c26..bc181b7a1cfffa4a934f24a68ae8e386c7ac7ff5 100644 GIT binary patch literal 1705 zcmZQ@_Y83kiVO&0(EB;{L%-dSeV7$7Ly z?6hC%(Wcl5!OycwZL_Uk%AIt4>Mig@#OqA+=CIpYIhtiilI4F2Pg7+{nZAf4{`(7+AOYUXXSXdZW4q?}ZGlBY(gt3QawXRri*=4! z|5Co?c=xos2VWAiZ5-putm~cz-zO(#_QZc~{6F!^mC11zq6FSV-oN2`E=KRdDU)M8 zj~4gO@OiCk$5?56>%irZIHjC7CxgSbvYu-4eCwok-Zj^E-P89>#%cV=yVf%%Hpc3* zuNFTZl$gpC{L(5?O0n+9)NMf@GKJSz<*aMGIODsnvD^GrHR0y_9Zz0k-dlF&*w$mS zO^`*++mvhC)!<-%)D zoo$%1Sj>9L;dvRwn|TH8jdnEp|KkY0aXaPD&W}0*AN}|BCYj$2%QlHwvG&#Ff4aSX zdef7Hl-%e2yjK)hp*e5g%#y0-F_rmoQ&vnZ7S^2mj>lU1^$~FAhbA?<$&k zRzd81T(w?&|Fdf5JPEz!%*K<}s?Buz#FUh0mw2yk|6caYgnNcRCw=ztH!I+Oy8rO$ zK9juI6J`g0u^hX!ZsNK{EctHn=Pu0Mq*{1q%cB&*$LB7d-@7d|ao6%$lOmUy31)2h z-Scebi=W$eCKe^@_lRXHSA`Z`_vd{RA8YweVUomlzsnobC-4;4hi!PIx#Q97-S3yJ zRBdoP`taSe&ZoI@XD3-4dKjU3sy|>yUz?>~(w3<*mxHeT2n>=9wa|D}HzEIlt>~(w zHoI~bq&)9AzWf+}^PI>HdyOr&zn)?ub1~}nrY~mmo@RvHu9+3$$Li9%&F4 zY3;IF{3-K}>I{M15B|sNBuw9dK0XuLL2hi^*iyrjSP zA5Hr>-%s>tipAq&?4p0KO)76vRWH@J`pNy$HJ@bJn+rMml+!n8-7f$L1glP={~c(>Gc+AD|iJ?;}p5I$XUc9KaGR;=p{6W*FXI`&j z$i=s_{TzQN=CZ!e`g$xXVLF?sbhz4*UsH;vzWN@1PP-viDmV9)=IZdx2Q;mg{dpSg z!d+5)=~2KU?@r-+D;no9G|$Zb75*rbd)m$A%WKnCeO|mpYun|bq~-DZ6fP^p1{ZJm zFO^w8FYm*XLxF||_MDI@z2nuxrq;@qUHayD%H70@C;e`BcSyUHHsr2%`~GQ7+Yy<- zY29ZwhUbP%`|+lGUwPd}|KloeRCg^_o7a}V-}&$t;iLUeq+)Nad&88*8uoVm7E4(> z;~d%bXWU-=;9t|LHQ{%^UU1*+ynV;2GQHlqZVvhs^Ec+6OZ>F=t{2Qw5_;UYCu}zR zkb2TA3xEfdNIpxe*H$iTDbz8_vraP%iRdf$O6I#Rk;;^JAqt5Z|Un}mdUnSzy`+QDD zsX^gXHP_6*$nwf<&pxv`vcKQ+`_isbd$s>RFR<2JInwjHZ)L`$j}v=!Hp)C)=e?6< z{?ff01Qy?%H|PBU{|+2uSvDURR`T6n zGF!a7EB)*iMT?56lLoRnCl;0He6;YhztW+kc+Db7gGo>!uDn|8kIu=-O9L_w2H!N$ zZhCU*-5WcH3yBT}%uEK`CKk;!XSK4Bn>u50UV7)4#r)qCzQnZg zj@Vzj6Gu01)yt4m$x=GOx2y1h*zLx)Ck<0P1KJkG*xa^XmRNE3*{e^_r`_AM{lM>4 zZw}nbDY30ndwM%)S-$WYpIZfwx6gRj+28nS@{CMH6J_Vd`;3d2V+_vk-7+WqUKz#ME!$ts4{xuje&;BCY1L2mzYzwJ-s{3I7&1(J m-2O^BrYTFl>3GerPrM)GHOgzA-8~w-UooX8>G|{j7P8lCH3b3_zG?*)zrLy#`|)S(kF&FX__-Vwo;quD z`h?BvV}I^De(6S0$?jU|oi}Ej_Sw6sZ3TzfMW;EpDy&%@kIw2c`_9&N=61Pk#60K8 z-}&roN~)KZ^vz6m?J|)sa(|a`HRaNbf3MtF>yAI@o)`Q7;`b!8f6ZrumHZY=_h>O{(Olw-N7jfZ2%7IU_ z+ONB8te7ja<71wPt&Y5=ab28YuQ;*ex;4!o7<%u!80-?Z|^r<^|tEBr1|}=FwRt8| zelj~^n4=^*L#lsdW$4FDJuiFxV$Hp{tXI4lrZ2ON{+~`c{n6xtlCRg#Wi3ZS55>D_ z{NB|$F);OOSct^xzcp!>KF|DDo}Xa(A+6eXg(>~pNk&ET2!KD7}izh1a)-6s9(c-x0Of$dHqSIee8wA$o=l3`_P1z_qe{;3WJK>!M)9;9D$XuT% zb@i|E)(6WRr53#Mcp}e~y^(KO&NkKP2*wW|@$g|JeRM{>qPA+E0I7(bjH0S)ZAEJ!`?1l#~nEXP4dPx!uwI(nUi(v?cGu^u=#t z7nfa#LB92Xc_oJci(f*r~ z){|x`X!1T^+jT+d`>gy@`!h>zEUy0(Teg zteOA4=E2rAb{`La++I6{d0wYTish+WFGG?#H*j12{#J0{x17}b{YyFCv{O3+Unrl34NA5 zm!2(Xlufnt(4H`9ev;JGn`}4bB272NO`C8pwzYhwoUU@qqQwi Date: Sun, 29 Dec 2024 22:56:34 +0100 Subject: [PATCH 427/562] Use postgresql as database --- modules/matrix/synapse.nix | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/matrix/synapse.nix b/modules/matrix/synapse.nix index f97ddd6..ea3ecc0 100644 --- a/modules/matrix/synapse.nix +++ b/modules/matrix/synapse.nix @@ -12,7 +12,11 @@ lib.mkIf cfg.enable { server_name = cfg.domain; public_baseurl = "https://${cfg.fqdn}"; - database.name = "sqlite3"; + database = { + name = "psycopg2"; + args.user = "matrix-synapse"; + args.database = "matrix-synapse"; + }; listeners = lib.singleton { inherit (cfg.synapse) port; @@ -103,6 +107,17 @@ lib.mkIf cfg.enable { }; }; + + postgresql = { + enable = true; + ensureDatabases = [ + config.services.matrix-synapse.settings.database.args.database + ]; + ensureUsers = [{ + name = config.services.matrix-synapse.settings.database.args.user; + ensureDBOwnership = true; + }]; + }; }; systemd.services.matrix-synapse = { From 1ad2b57fa04bafe926bd4dd29f7a6db0b49ec6db Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 17 Apr 2025 15:43:58 +0200 Subject: [PATCH 428/562] Add photoprism --- hosts/iron/ports.nix | 3 +- hosts/iron/secrets.yaml | 6 ++- hosts/iron/services/default.nix | 1 + hosts/iron/services/photoprism.nix | 72 ++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 hosts/iron/services/photoprism.nix diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 679a355..1cbc8cf 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -14,6 +14,7 @@ navidrome.tcp = 4533; nginx-http.tcp = 80; nginx-https.tcp = 443; + photoprism.tcp = 2342; postfix-relay.tcp = 25; postfix-submission.tcp = 465; qbittorrent-torrent.tcp = 59832; @@ -21,8 +22,8 @@ radicale.tcp = 5232; rmfakecloud.tcp = 3000; snapserver.tcp = 1704; - snapserverTcp.tcp = 1705; snapserverHttp.tcp = 1780; + snapserverTcp.tcp = 1705; unifi-http.tcp = 8080; unifi-https.tcp = 8443; wireguard-public-ip-tunnel.udp = 51000; diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index e6feaa5..75630e1 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -14,6 +14,8 @@ home-assistant: ENC[AES256_GCM,data:wcFMxDdRCHf/shO9v2WaGgrsa9J2WP62xFs=,iv:9cke mqtt-users: home-assistant: ENC[AES256_GCM,data:oIjCw7ZnA5iOBmQdW1jcy3QQnpjT32pY,iv:5HFRkXJBdMXQbjk2ubQs3sEy5qEteiqSe2hrNc8+H40=,tag:7B6yI4oCHanE0JE/gHaKnQ==,type:str] valetudo: ENC[AES256_GCM,data:+HRz6X+A5dhmx43G99ka0u9VozuzOFWR,iv:SPw5yoiBqN7sBH5EofevacTtu45jmuTPqToKrar0aJ0=,tag:lf+usB/eNNP1yuWW/QyTqQ==,type:str] +photoprism: + oidc-secret: ENC[AES256_GCM,data:XTAiUiGZJfSZHNbz6fePl3iMDdbxFSE7+SQH2ECRFqlo7w8TAhLyNXBxlEfGvu+8vttbKdkEm0r7132Q4ftOtA==,iv:WGsQXolbtRWIq4EDgODWNmkXdOZCsA9A3Fqoo4lJyec=,tag:5zJftwB5If/RZB3hI0Ly8A==,type:str] sops: kms: [] gcp_kms: [] @@ -29,8 +31,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-03-01T23:14:53Z" - mac: ENC[AES256_GCM,data:1m+Ml5Vhm87U4xz1kKNZ/4E+RqweUt2ypYh1JTYVHHV3dgySJytkwn0pFZj3RfR+z4r03hrvSuBt0ldWSn8UvGLHsJj8L9AqfDXyPg3SI6uRS6UeAbqZFs5HhNQzkNKwPnZ9KPbXJ8ab8Ck+jSfEcrtPShDOgDp9jTJZ91hTB1c=,iv:6tVJI31180asGh+MMguAeKtD4SY6W/2Pizqjt0SV4v8=,tag:0ghRP8locNjtvpIYL8tDlg==,type:str] + lastmodified: "2025-04-17T13:32:20Z" + mac: ENC[AES256_GCM,data:5LX+9RdaHlMOd/gwsr9xdQZB2IQee6xx0YxUQ+sXIXe5xH+cgw8vm0Gd1YFjOT9Yf8DZ/51y8XSOMXP/oT36iYGpenb84ZGV+9X3aAT8+PWZxr6eJ8raDTO/sof5r/qVrxHls3Hl2nmKI6UzTZD8PINThIaEdy9mpfxRrrcL/iU=,iv:pkPEWcVAZBq1HfcOMiQEt/2STbFBhSfzyz5lYoALmdI=,tag:7QvzpR/deD5B7Hm0C4ghgw==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index 94f5ccb..15537cd 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -12,6 +12,7 @@ ./navidrome.nix ./nginx.nix ./ntp.nix + ./photoprism.nix ./public-ip-tunnel.nix ./radicale.nix ./remarkable.nix diff --git a/hosts/iron/services/photoprism.nix b/hosts/iron/services/photoprism.nix new file mode 100644 index 0000000..47bbefe --- /dev/null +++ b/hosts/iron/services/photoprism.nix @@ -0,0 +1,72 @@ +{ config, lib, pkgs, ... }: +let + domain = "media.weinturm-open-air.de"; + nextcloudDomain = "cloud.weinturm-open-air.de"; + inherit (config.networking) ports; + cfg = config.services.photoprism; + readSecretWrapper = pkgs.writeShellScriptBin "photoprism" '' + export PHOTOPRISM_OIDC_SECRET=$(cat "$CREDENTIALS_DIRECTORY/PHOTOPRISM_OIDC_SECRET_FILE") + + tagline[0]="Dein Blick. Unser Festival." + tagline[1]="Zeig uns das Festival durch deine Linse!" + tagline[2]="Gemeinsam festgehalten – Festivalmomente von euch für alle." + tagline[3]="Mach’s unvergesslich – lade deine Festivalfotos hoch!" + tagline[4]="Die besten Shots kommen von dir – teile sie hier." + tagline[5]="Jede Perspektive zählt – dein Foto, unser Highlight." + tagline[6]="Klick. Hochladen. Festivalgeschichte schreiben." + tagline[7]="Von der Crowd für die Crowd – Festivalfotos zum Verlieben." + tagline[8]="Dein Beitrag zum Festival-Archiv – jetzt Fotos teilen!" + tagline[9]="Weil kein Moment verloren gehen darf – deine Kamera zählt." + + size=''${#tagline[@]} + index=$(($RANDOM % $size)) + export PHOTOPRISM_SITE_CAPTION="''${tagline[$index]}" + + exec ${pkgs.photoprism}/bin/photoprism "$@" + ''; +in +{ + sops.secrets."photoprism/oidc-secret" = { + sopsFile = ../secrets.yaml; + }; + + systemd.services.photoprism.serviceConfig.LoadCredential = lib.mkForce "PHOTOPRISM_OIDC_SECRET_FILE:${config.sops.secrets."photoprism/oidc-secret".path}"; + + services.photoprism = { + enable = true; + originalsPath = "/weinturm/photoprism"; + port = ports.photoprism.tcp; + package = readSecretWrapper; + settings = { + PHOTOPRISM_SITE_URL = "https://${domain}/"; + PHOTOPRISM_OIDC_URI = "https://${nextcloudDomain}"; + PHOTOPRISM_OIDC_CLIENT = "WnqjmaPJ5c0dY7KaWmvXVVgJYNjztqTKBZ6Wq6bjYXGOwM2Xuzx2WabFlnJVRCSE"; # Client ID from settings + PHOTOPRISM_OIDC_SCOPES = "openid profile email roles"; + PHOTOPRISM_OIDC_PROVIDER = "Nextcloud"; + PHOTOPRISM_OIDC_ICON = "https://${nextcloudDomain}/apps/theming/image/logo"; + PHOTOPRISM_OIDC_REDIRECT = "true"; + PHOTOPRISM_OIDC_REGISTER = "true"; + PHOTOPRISM_OIDC_USERNAME = "preferred_username"; + PHOTOPRISM_OIDC_WEBDAV = "true"; + PHOTOPRISM_ORIGINALS_LIMIT = toString (20 * 1024); # maximum size of media files in MB + PHOTOPRISM_INDEX_SCHEDULE = "@every 4h"; + PHOTOPRISM_DEFAULT_LOCALE = "de"; + PHOTOPRISM_DEFAULT_TIMEZONE = "Europe/Berlin"; + PHOTOPRISM_SITE_TITLE = "Weinturm Medien"; + PHOTOPRISM_SITE_CAPTION = ""; + PHOTOPRISM_SITE_AUTHOR = "Jugend- und Kultur Förderverein e.V."; + }; + }; + + services.nginx.virtualHosts."${domain}" = { + enableACME = true; + forceSSL = true; + + locations = { + "/" = { + proxyPass = "http://127.0.0.1:${toString cfg.port}"; + proxyWebsockets = true; + }; + }; + }; +} From d677595ed833a0e1af3abc0ce8a4eb1039c9ce3c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 17 Apr 2025 21:32:06 +0200 Subject: [PATCH 429/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'home-manager': 'github:nix-community/home-manager/b4e98224ad1336751a2ac7493967a4c9f6d9cb3f?narHash=sha256-t7dFCDl4vIOOUMhEZnJF15aAzkpaup9x4ZRGToDFYWI%3D' (2025-04-08) → 'github:nix-community/home-manager/c61bfe3ae692f42ce688b5865fac9e0de58e1387?narHash=sha256-iyn/WBYDc7OtjSawbegINDe/gIkok888kQxk3aVnkgg%3D' (2025-04-15) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/58703017d8a85361b67f02d7efbb8baf02bc1333?narHash=sha256-Np5pgX4m4h7IaCP1BwQPMz2p7XIRvjSfhaO1/IdgyIQ%3D' (2025-04-14) → 'github:NixOS/nixpkgs/71329e03df9c14ac27774c68536b6b7418a59a9b?narHash=sha256-7vC7GLa4JSL/%2BYtHcQ%2B06c%2BJBctWFSB51YyqUM0l50c%3D' (2025-04-17) • Updated input 'nur': 'github:nix-community/NUR/91cf72548fc06e8effab92add042cb256b0a5ffa?narHash=sha256-kgJIH0MIyPShPmuCK7jmTL4MHJ14j/xU9ITbm5HaDUw%3D' (2025-04-14) → 'github:nix-community/NUR/74f1b9f96f695deab80d45e6a9859f980b072436?narHash=sha256-KzHhtTA54EwiOgxh3Vy81JhoIiQgZRDZlgo85a6K9TE%3D' (2025-04-17) • Updated input 'sops-nix': 'github:Mic92/sops-nix/7e147a1ae90f0d4a374938cdc3df3cdaecb9d388?narHash=sha256-lv52pnfiRGp5%2BxkZEgWr56DWiRgkMFXpiGba3eJ3krE%3D' (2025-04-13) → 'github:Mic92/sops-nix/61154300d945f0b147b30d24ddcafa159148026a?narHash=sha256-pXyanHLUzLNd3MX9vsWG%2B6Z2hTU8niyphWstYEP3/GU%3D' (2025-04-14) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index d95c3a7..77165b3 100644 --- a/flake.lock +++ b/flake.lock @@ -224,11 +224,11 @@ ] }, "locked": { - "lastModified": 1744117652, - "narHash": "sha256-t7dFCDl4vIOOUMhEZnJF15aAzkpaup9x4ZRGToDFYWI=", + "lastModified": 1744743431, + "narHash": "sha256-iyn/WBYDc7OtjSawbegINDe/gIkok888kQxk3aVnkgg=", "owner": "nix-community", "repo": "home-manager", - "rev": "b4e98224ad1336751a2ac7493967a4c9f6d9cb3f", + "rev": "c61bfe3ae692f42ce688b5865fac9e0de58e1387", "type": "github" }, "original": { @@ -397,11 +397,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1744636776, - "narHash": "sha256-Np5pgX4m4h7IaCP1BwQPMz2p7XIRvjSfhaO1/IdgyIQ=", + "lastModified": 1744918147, + "narHash": "sha256-7vC7GLa4JSL/+YtHcQ+06c+JBctWFSB51YyqUM0l50c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "58703017d8a85361b67f02d7efbb8baf02bc1333", + "rev": "71329e03df9c14ac27774c68536b6b7418a59a9b", "type": "github" }, "original": { @@ -434,11 +434,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1744633454, - "narHash": "sha256-kgJIH0MIyPShPmuCK7jmTL4MHJ14j/xU9ITbm5HaDUw=", + "lastModified": 1744917937, + "narHash": "sha256-KzHhtTA54EwiOgxh3Vy81JhoIiQgZRDZlgo85a6K9TE=", "owner": "nix-community", "repo": "NUR", - "rev": "91cf72548fc06e8effab92add042cb256b0a5ffa", + "rev": "74f1b9f96f695deab80d45e6a9859f980b072436", "type": "github" }, "original": { @@ -550,11 +550,11 @@ ] }, "locked": { - "lastModified": 1744518500, - "narHash": "sha256-lv52pnfiRGp5+xkZEgWr56DWiRgkMFXpiGba3eJ3krE=", + "lastModified": 1744669848, + "narHash": "sha256-pXyanHLUzLNd3MX9vsWG+6Z2hTU8niyphWstYEP3/GU=", "owner": "Mic92", "repo": "sops-nix", - "rev": "7e147a1ae90f0d4a374938cdc3df3cdaecb9d388", + "rev": "61154300d945f0b147b30d24ddcafa159148026a", "type": "github" }, "original": { From 5c7a68e74fa30af62b7115b89bce4e5399dc4693 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 18 Apr 2025 02:01:27 +0200 Subject: [PATCH 430/562] Add tandoor --- hosts/magnesium/persistence.nix | 6 +++++ hosts/magnesium/ports.nix | 1 + hosts/magnesium/secrets.yaml | 6 +++-- hosts/magnesium/services/default.nix | 1 + hosts/magnesium/services/tandoor.nix | 37 ++++++++++++++++++++++++++++ 5 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 hosts/magnesium/services/tandoor.nix diff --git a/hosts/magnesium/persistence.nix b/hosts/magnesium/persistence.nix index 5dbd5fc..9d8ef4a 100644 --- a/hosts/magnesium/persistence.nix +++ b/hosts/magnesium/persistence.nix @@ -34,6 +34,12 @@ "/var/lib/nixos" "/var/lib/private/mealie" "/var/lib/private/ntfy-sh" + { + directory = "/var/lib/private/tandoor-recipes"; + user = "tandoor_recipes"; + group = "tandoor_recipes"; + mode = "u=rwx,g=rx,o="; + } { directory = "/var/lib/trilium"; user = "trilium"; diff --git a/hosts/magnesium/ports.nix b/hosts/magnesium/ports.nix index ee689c4..fd74f41 100644 --- a/hosts/magnesium/ports.nix +++ b/hosts/magnesium/ports.nix @@ -12,6 +12,7 @@ nginx-http.tcp = 80; nginx-https.tcp = 443; ntfy.tcp = 12474; + tandoor.tcp = 9001; trilium.tcp = 12783; wireguard-public-ip-tunnel.udp = 51000; }; diff --git a/hosts/magnesium/secrets.yaml b/hosts/magnesium/secrets.yaml index 1187ccd..92851b1 100644 --- a/hosts/magnesium/secrets.yaml +++ b/hosts/magnesium/secrets.yaml @@ -4,6 +4,8 @@ gitlab-runner_fablab-nea-hcloud-labsync: ENC[AES256_GCM,data:+znVO8cQxjDdhch7oUA forgejo-mail: ENC[AES256_GCM,data:eZv9dM0a06wFJaDUZjo=,iv:L32ab5k/AX8HqSACJA5w+WbzLlBijA5++Gcr2SrnYIU=,tag:ddyTXikWTMnxq86IijgyYg==,type:str] hedgedoc-session-secret: ENC[AES256_GCM,data:AYUiUF7R+5C3F5kNRL0R95e1l3Y59tIP388uY0IYCskBhR0H0XMVvyrX/gIM33Twwkc5it+fQtNPNXsbrAnoKQ==,iv:Q6pDEdFplp845/DCHutwni/g7Ch39pTCvfNs4Eh28CQ=,tag:aqVGs3iThmepT7iJusLOMA==,type:str] mealie: ENC[AES256_GCM,data:4LlxJjDstTPZCD7Xyb+0CRkeDafP9a9oMuYDnXznINe+LrfkJGKwQIwP0B3VpeMmZ0Rwe7Tvje0ZWySFGADireb2r7TjDyASAoXJDyNNJ8byRc5Zt77zL2dp/W4xVt8WpQvwsXosjDv3NN6we831wWUrfNtp0g34YLqSU3F/9i7AaU7nVKnQ9QtJRVg5O57nhs/ZXopKOBUdiKAmxcl0hNNdQdaQX6xkDCWrV4432IOckqyqEQyd9KeCURuWeTUgPmTmnt9Cj8KkaQ39fd0LAGRjOBsKo4C4,iv:o5BPW4Wcg4KcFkJHc/mdrO4Rh+1nifxulYkF+iM3LEw=,tag:KXwDr3VHxjeHkyo23SPJgA==,type:str] +tandoor: + secret_key: ENC[AES256_GCM,data:8aVuOBljF+vnEXOzi0r2xUtUGlZM50MuBXK70XW78Q9jNq4ZuRciGabnYwFfknb2/tA=,iv:KN7DwcMH5NN5BgWFgO/V1dfSyiHfAM2wS86atYcBdlQ=,tag:wQA7QL8VqP5d4uBSNQLsnQ==,type:str] sops: kms: [] gcp_kms: [] @@ -19,8 +21,8 @@ sops: elNwdVlJS2NCWUlXcEZvZWsvZ29FRnMK/qa6Qj1yQc91PWk9tMKSyFkMfYcHIKpQ jcPmGWbpi2NPL/F0Xz2X/zQQxWzs9uzlS1VH+y8JRe1EPMYJ78NXZw== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-04-14T23:06:22Z" - mac: ENC[AES256_GCM,data:FSJSzA9xGKH9FBMWHPJwgbltkeRoumgpeFeftsgUWrMcc2O+sldNa/Gl1Pnmz5AwXNT5zRGv/zcnrt3lQMY+1vPrg3+DRrv5fn2OtHIZxN0cz+okqEoE40w7WLUZSyj9IESjlJKOL/nOdXf7EkXL64ZWDAZ6YKYe7JwD5oCGMOM=,iv:xKFdHYTqLCWtJFWIiZjtzJZpG1RZWPdeE1i6PQqYNsk=,tag:DfzN2iDjavGA/uEjLKZotw==,type:str] + lastmodified: "2025-04-17T23:26:44Z" + mac: ENC[AES256_GCM,data:Dl4/6wrIwOsCRK979O9lSKyi4LKAG0CfgTGS3RwNu23MvhhaBNru4P1gPWWu7/YC6ad63Ip/RuVB69A1kUmgrYimZcU6E3iPg7vsqskmTU0caMD54CHemj57EYS7r8tcloBEgkOvM6Vn/Bs1dV1/EKAv9Kr6r4x6xb3UOofDcwM=,iv:pzRSKp3EnUpgMdwLDKrExpEkm+uZbU6/pYkVLbcnjrY=,tag:Z6DIPVcNUa8QihV1lsmUMA==,type:str] pgp: - created_at: "2025-04-08T22:53:53Z" enc: |- diff --git a/hosts/magnesium/services/default.nix b/hosts/magnesium/services/default.nix index 813f30c..9372fbf 100644 --- a/hosts/magnesium/services/default.nix +++ b/hosts/magnesium/services/default.nix @@ -7,6 +7,7 @@ ./mealie.nix ./ntfy.nix ./public-ip-tunnel.nix + ./tandoor.nix ./trilium.nix ./webserver.nix ]; diff --git a/hosts/magnesium/services/tandoor.nix b/hosts/magnesium/services/tandoor.nix new file mode 100644 index 0000000..6577626 --- /dev/null +++ b/hosts/magnesium/services/tandoor.nix @@ -0,0 +1,37 @@ +{ config, ... }: + +let + domain = "tandoor.jalr.de"; + cfg = config.services.tandoor-recipes; + inherit (config.networking) ports; +in +{ + sops.secrets."tandoor/secret_key" = { + sopsFile = ../secrets.yaml; + }; + + services.tandoor-recipes = { + enable = true; + port = ports.tandoor.tcp; + }; + + systemd.services.tandoor-recipes = { + serviceConfig = { + LoadCredential = [ + "secret_key:${config.sops.secrets."tandoor/secret_key".path}" + ]; + Environment = [ + "SECRET_KEY_FILE=%d/secret_key" + ]; + }; + }; + + services.nginx.virtualHosts."${domain}" = { + enableACME = true; + forceSSL = true; + + locations."/" = { + proxyPass = "http://127.0.0.1:${toString cfg.port}"; + }; + }; +} From d7d8afee2c71a4a29f3322565341f942578fb143 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 22 Apr 2025 13:46:24 +0200 Subject: [PATCH 431/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/76c0a6dba345490508f36c1aa3c7ba5b6b460989?narHash=sha256-I2oILRiJ6G%2BBOSjY%2B0dGrTPe080L3pbKpc%2BgCV3Nmyk%3D' (2025-04-08) → 'github:nix-community/disko/1770bf1ae5da05564f86b969ef21c7228cc1a70b?narHash=sha256-0OWgbEKhpMLpk3WQi3ugOwxWW4Y6JVpKiQ%2Bo0nuNzus%3D' (2025-04-21) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/71329e03df9c14ac27774c68536b6b7418a59a9b?narHash=sha256-7vC7GLa4JSL/%2BYtHcQ%2B06c%2BJBctWFSB51YyqUM0l50c%3D' (2025-04-17) → 'github:NixOS/nixpkgs/23ad94e0e3533bed8e028472137a4ccb5f0d6ce1?narHash=sha256-MioQhU84IZRwpKyd/g62nt3Hqe%2B0C6cmHYBe3kjZr60%3D' (2025-04-22) • Updated input 'nur': 'github:nix-community/NUR/74f1b9f96f695deab80d45e6a9859f980b072436?narHash=sha256-KzHhtTA54EwiOgxh3Vy81JhoIiQgZRDZlgo85a6K9TE%3D' (2025-04-17) → 'github:nix-community/NUR/c36e10d7a3bd9d9aff9dd66c065845af6fbc87e9?narHash=sha256-omM4VhdBaJpREkhlJTI8weY5hOvnaKo4Db85xk3mC20%3D' (2025-04-22) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/2631b0b7abcea6e640ce31cd78ea58910d31e650?narHash=sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR%2BXhw3kr/3Xd0GPTM%3D' (2025-04-12) → 'github:nixos/nixpkgs/b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef?narHash=sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU%3D' (2025-04-17) • Updated input 'sops-nix': 'github:Mic92/sops-nix/61154300d945f0b147b30d24ddcafa159148026a?narHash=sha256-pXyanHLUzLNd3MX9vsWG%2B6Z2hTU8niyphWstYEP3/GU%3D' (2025-04-14) → 'github:Mic92/sops-nix/5e3e92b16d6fdf9923425a8d4df7496b2434f39c?narHash=sha256-ePyTpKEJTgX0gvgNQWd7tQYQ3glIkbqcW778RpHlqgA%3D' (2025-04-22) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 77165b3..b6ea168 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1744145203, - "narHash": "sha256-I2oILRiJ6G+BOSjY+0dGrTPe080L3pbKpc+gCV3Nmyk=", + "lastModified": 1745224732, + "narHash": "sha256-0OWgbEKhpMLpk3WQi3ugOwxWW4Y6JVpKiQ+o0nuNzus=", "owner": "nix-community", "repo": "disko", - "rev": "76c0a6dba345490508f36c1aa3c7ba5b6b460989", + "rev": "1770bf1ae5da05564f86b969ef21c7228cc1a70b", "type": "github" }, "original": { @@ -397,11 +397,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1744918147, - "narHash": "sha256-7vC7GLa4JSL/+YtHcQ+06c+JBctWFSB51YyqUM0l50c=", + "lastModified": 1745321490, + "narHash": "sha256-MioQhU84IZRwpKyd/g62nt3Hqe+0C6cmHYBe3kjZr60=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "71329e03df9c14ac27774c68536b6b7418a59a9b", + "rev": "23ad94e0e3533bed8e028472137a4ccb5f0d6ce1", "type": "github" }, "original": { @@ -413,11 +413,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1744463964, - "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", + "lastModified": 1744932701, + "narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", + "rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef", "type": "github" }, "original": { @@ -434,11 +434,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1744917937, - "narHash": "sha256-KzHhtTA54EwiOgxh3Vy81JhoIiQgZRDZlgo85a6K9TE=", + "lastModified": 1745316019, + "narHash": "sha256-omM4VhdBaJpREkhlJTI8weY5hOvnaKo4Db85xk3mC20=", "owner": "nix-community", "repo": "NUR", - "rev": "74f1b9f96f695deab80d45e6a9859f980b072436", + "rev": "c36e10d7a3bd9d9aff9dd66c065845af6fbc87e9", "type": "github" }, "original": { @@ -550,11 +550,11 @@ ] }, "locked": { - "lastModified": 1744669848, - "narHash": "sha256-pXyanHLUzLNd3MX9vsWG+6Z2hTU8niyphWstYEP3/GU=", + "lastModified": 1745310711, + "narHash": "sha256-ePyTpKEJTgX0gvgNQWd7tQYQ3glIkbqcW778RpHlqgA=", "owner": "Mic92", "repo": "sops-nix", - "rev": "61154300d945f0b147b30d24ddcafa159148026a", + "rev": "5e3e92b16d6fdf9923425a8d4df7496b2434f39c", "type": "github" }, "original": { From e967d2a79b62b2c0351bc471304edd233f8669a5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 22 Apr 2025 15:27:46 +0200 Subject: [PATCH 432/562] Change git abbrevs and functions --- users/jalr/modules/git.nix | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/users/jalr/modules/git.nix b/users/jalr/modules/git.nix index 93e9d9f..3cf4007 100644 --- a/users/jalr/modules/git.nix +++ b/users/jalr/modules/git.nix @@ -66,12 +66,10 @@ in gd = "git diff"; gdc = "git diff --cached"; gf = "git fetch"; - ginit = "git init"; gl = "git log"; gpll = "git pull --rebase"; gpsh = "git push"; grb = "git rebase --autostash"; - grbi = "git rebase --autostash --interactive --autosquash refs/remotes/origin/HEAD"; gr = "git restore"; grs = "git restore --staged"; grst = "git reset"; @@ -127,19 +125,28 @@ in end ''; }; - git_pick-commit_merge-base_origin = { + git_pick-commit = { description = "fuzzy find a commit hash"; body = '' - git log --oneline refs/remotes/origin/HEAD..HEAD | ${pkgs.fzf}/bin/fzf --preview='git show (echo {} | cut -d" " -f 1)' --preview-window=top:75% | cut -d" " -f 1 + git log --decorate --oneline --color=always \ + | ${pkgs.fzf}/bin/fzf --ansi --preview='git show --color=always (echo {} | cut -d" " -f 1)' --preview-window=top:75% \ + | cut -d" " -f 1 ''; }; gfix = { description = "git commit --fixup with fuzzy find commmit picker"; body = '' - set commit (git_pick-commit_merge-base_origin) + set commit (git_pick-commit) commandline "git commit --fixup=$commit" ''; }; + gi = { + description = "git interactive rebase with fuzzy find commmit picker"; + body = '' + set commit (git_pick-commit) + commandline "git rebase --autostash --interactive --autosquash $commit" + ''; + }; ".g" = { description = "change directory to repository root"; body = '' From 87a457a44b6142ef9dda8c195af144281ae79edc Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 22 Apr 2025 16:13:38 +0200 Subject: [PATCH 433/562] Change DND keywords --- users/jalr/modules/do-not-disturb/android-set-dnd.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/users/jalr/modules/do-not-disturb/android-set-dnd.py b/users/jalr/modules/do-not-disturb/android-set-dnd.py index 0ca4381..13a7eba 100755 --- a/users/jalr/modules/do-not-disturb/android-set-dnd.py +++ b/users/jalr/modules/do-not-disturb/android-set-dnd.py @@ -16,7 +16,9 @@ def set_android_dnd(active: bool): if url is not None: request.urlopen( request.Request( - read_url(), method="POST", data=("on" if active else "off").encode() + read_url(), + method="POST", + data=("DND on" if active else "DND off").encode(), ) ) From d625c0ecc51f08ca93d0c786d543f2283b47d325 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 22 Apr 2025 18:32:25 +0200 Subject: [PATCH 434/562] Improve DND widget Use Python and update state on click events --- users/jalr/modules/sway/waybar.nix | 53 ++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 14 deletions(-) diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index 7ff5976..bbf1132 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -25,6 +25,7 @@ in xdg.configFile."waybar/config".text = let makoctl = "${pkgs.mako}/bin/makoctl"; + sendSignal = signal: "${pkgs.procps}/bin/pkill -f -SIGRTMIN+${toString signal} waybar"; in lib.generators.toJSON { } { layer = "top"; @@ -211,20 +212,44 @@ in format-alt = "{:%Y-%m-%d (%a)}"; tooltip-format = "{:%Y %B}\n{calendar}"; }; - "custom/dnd" = { - exec = pkgs.writeShellScript "waybar-dnd-widget" '' - export PATH=${pkgs.lib.makeBinPath [pkgs.gnugrep]} - if ${makoctl} mode | grep -Fxq 'dnd'; then - echo '{"text": "󰂛", "class": "active"}' - else - echo '{"text": "󰂚", "class": "inactive"}' - fi - ''; - on-click = "/etc/profiles/per-user/jalr/bin/dnd on"; - on-click-right = "/etc/profiles/per-user/jalr/bin/dnd off"; - interval = 10; - return-type = "json"; - }; + "custom/dnd" = + let + signal = 1; + dndScript = "/etc/profiles/per-user/jalr/bin/dnd"; + in + { + inherit signal; + exec = pkgs.writeScript "waybar-dnd-widget" '' + #!${pkgs.python3}/bin/python3 + + import subprocess + import sys + import time + import json + + while True: + proc = subprocess.Popen(["${makoctl}", "mode"], stdout=subprocess.PIPE, text=True) + modes = [line.rstrip() for line in proc.stdout.readlines()] + + text, class_name = ("󰂛", "active") if 'dnd' in modes else ("󰂚", "inactive") + + print(json.dumps({ + "text": text, + "tooltip": "", + "class": class_name, + "percentage": 0 + })) + + sys.stdout.flush() + + time.sleep(30) + ''; + on-click = "${dndScript} on; ${sendSignal signal}"; + on-click-right = "${dndScript} off; ${sendSignal signal}"; + exec-on-event = true; + return-type = "json"; + restart-interval = 10; + }; }; xdg.configFile = { From 13f4558f8d4bc5cf1fc3ff2b88c18ce39929a4be Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 23 Apr 2025 21:25:56 +0200 Subject: [PATCH 435/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/1770bf1ae5da05564f86b969ef21c7228cc1a70b?narHash=sha256-0OWgbEKhpMLpk3WQi3ugOwxWW4Y6JVpKiQ%2Bo0nuNzus%3D' (2025-04-21) → 'github:nix-community/disko/c5140c6079ff690e85eac0b86e254de16a79a4b7?narHash=sha256-mi6cAjuBztm9gFfpiVo6mAn81cCID6nmDXh5Kmyjwyc%3D' (2025-04-23) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/9a049b4a421076d27fee3eec664a18b2066824cb?narHash=sha256-fbWE4Xpw6eH0Q6in%2BymNuDwTkqmFmtxcQEmtRuKDTTk%3D' (2025-04-14) → 'github:nixos/nixos-hardware/8bf8a2a0822365bd8f44fd1a19d7ed0a1d629d64?narHash=sha256-xmqG4MZArM1JNxPJ33s0MtuBzgnaCO9laARoU3AfP8E%3D' (2025-04-23) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/26d499fc9f1d567283d5d56fcf367edd815dba1d?narHash=sha256-FHlSkNqFmPxPJvy%2B6fNLaNeWnF1lZSgqVCl/eWaJRc4%3D' (2025-04-12) → 'github:nixos/nixpkgs/9684b53175fc6c09581e94cc85f05ab77464c7e3?narHash=sha256-AQ7M9wTa/Pa/kK5pcGTgX/DGqMHyzsyINfN7ktsI7Fo%3D' (2025-04-21) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/23ad94e0e3533bed8e028472137a4ccb5f0d6ce1?narHash=sha256-MioQhU84IZRwpKyd/g62nt3Hqe%2B0C6cmHYBe3kjZr60%3D' (2025-04-22) → 'github:NixOS/nixpkgs/6c679116a4260de3d0a0add76ca844df5a6afde8?narHash=sha256-CiNSRcFcqmGzFil6VBGW9W7m7q2FzJyF9x9a7452iVE%3D' (2025-04-23) • Updated input 'nur': 'github:nix-community/NUR/c36e10d7a3bd9d9aff9dd66c065845af6fbc87e9?narHash=sha256-omM4VhdBaJpREkhlJTI8weY5hOvnaKo4Db85xk3mC20%3D' (2025-04-22) → 'github:nix-community/NUR/6d04ab16a01981326374c50442471130f212c810?narHash=sha256-09%2BKxS%2B8Lxo5E7yi3KfHFT/w6JR9gq6p%2BFr%2BXd%2BarKo%3D' (2025-04-23) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef?narHash=sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU%3D' (2025-04-17) → 'github:nixos/nixpkgs/c11863f1e964833214b767f4a369c6e6a7aba141?narHash=sha256-GfpyMzxwkfgRVN0cTGQSkTC0OHhEkv3Jf6Tcjm//qZ0%3D' (2025-04-21) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index b6ea168..a251082 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1745224732, - "narHash": "sha256-0OWgbEKhpMLpk3WQi3ugOwxWW4Y6JVpKiQ+o0nuNzus=", + "lastModified": 1745369821, + "narHash": "sha256-mi6cAjuBztm9gFfpiVo6mAn81cCID6nmDXh5Kmyjwyc=", "owner": "nix-community", "repo": "disko", - "rev": "1770bf1ae5da05564f86b969ef21c7228cc1a70b", + "rev": "c5140c6079ff690e85eac0b86e254de16a79a4b7", "type": "github" }, "original": { @@ -349,11 +349,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1744633460, - "narHash": "sha256-fbWE4Xpw6eH0Q6in+ymNuDwTkqmFmtxcQEmtRuKDTTk=", + "lastModified": 1745392233, + "narHash": "sha256-xmqG4MZArM1JNxPJ33s0MtuBzgnaCO9laARoU3AfP8E=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "9a049b4a421076d27fee3eec664a18b2066824cb", + "rev": "8bf8a2a0822365bd8f44fd1a19d7ed0a1d629d64", "type": "github" }, "original": { @@ -365,11 +365,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1744440957, - "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", + "lastModified": 1745279238, + "narHash": "sha256-AQ7M9wTa/Pa/kK5pcGTgX/DGqMHyzsyINfN7ktsI7Fo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", + "rev": "9684b53175fc6c09581e94cc85f05ab77464c7e3", "type": "github" }, "original": { @@ -397,11 +397,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1745321490, - "narHash": "sha256-MioQhU84IZRwpKyd/g62nt3Hqe+0C6cmHYBe3kjZr60=", + "lastModified": 1745434646, + "narHash": "sha256-CiNSRcFcqmGzFil6VBGW9W7m7q2FzJyF9x9a7452iVE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "23ad94e0e3533bed8e028472137a4ccb5f0d6ce1", + "rev": "6c679116a4260de3d0a0add76ca844df5a6afde8", "type": "github" }, "original": { @@ -413,11 +413,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1744932701, - "narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=", + "lastModified": 1745234285, + "narHash": "sha256-GfpyMzxwkfgRVN0cTGQSkTC0OHhEkv3Jf6Tcjm//qZ0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef", + "rev": "c11863f1e964833214b767f4a369c6e6a7aba141", "type": "github" }, "original": { @@ -434,11 +434,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1745316019, - "narHash": "sha256-omM4VhdBaJpREkhlJTI8weY5hOvnaKo4Db85xk3mC20=", + "lastModified": 1745434541, + "narHash": "sha256-09+KxS+8Lxo5E7yi3KfHFT/w6JR9gq6p+Fr+Xd+arKo=", "owner": "nix-community", "repo": "NUR", - "rev": "c36e10d7a3bd9d9aff9dd66c065845af6fbc87e9", + "rev": "6d04ab16a01981326374c50442471130f212c810", "type": "github" }, "original": { From afa1e5a46b762bb11f9a1dd3580b2ccf95ac31b6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 26 Apr 2025 17:24:47 +0200 Subject: [PATCH 436/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/c5140c6079ff690e85eac0b86e254de16a79a4b7?narHash=sha256-mi6cAjuBztm9gFfpiVo6mAn81cCID6nmDXh5Kmyjwyc%3D' (2025-04-23) → 'github:nix-community/disko/ca27b88c88948d96feeee9ed814cbd34f53d0d70?narHash=sha256-LqhRwzvIVPEjH0TaPgwzqpyhW6DtCrvz7FnUJDoUZh8%3D' (2025-04-24) • Updated input 'home-manager': 'github:nix-community/home-manager/c61bfe3ae692f42ce688b5865fac9e0de58e1387?narHash=sha256-iyn/WBYDc7OtjSawbegINDe/gIkok888kQxk3aVnkgg%3D' (2025-04-15) → 'github:nix-community/home-manager/dd26f75fb4ec1c731d4b1396eaf4439ce40a91c1?narHash=sha256-eqSo9ugzsqhFgaDFYUZj943nurlX4L6f%2BAW0skJ4W%2BM%3D' (2025-04-25) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/8bf8a2a0822365bd8f44fd1a19d7ed0a1d629d64?narHash=sha256-xmqG4MZArM1JNxPJ33s0MtuBzgnaCO9laARoU3AfP8E%3D' (2025-04-23) → 'github:nixos/nixos-hardware/f7bee55a5e551bd8e7b5b82c9bc559bc50d868d1?narHash=sha256-bUGjvaPVsOfQeTz9/rLTNLDyqbzhl0CQtJJlhFPhIYw%3D' (2025-04-24) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/9684b53175fc6c09581e94cc85f05ab77464c7e3?narHash=sha256-AQ7M9wTa/Pa/kK5pcGTgX/DGqMHyzsyINfN7ktsI7Fo%3D' (2025-04-21) → 'github:nixos/nixpkgs/5630cf13cceac06cefe9fc607e8dfa8fb342dde3?narHash=sha256-FQoi3R0NjQeBAsEOo49b5tbDPcJSMWc3QhhaIi9eddw%3D' (2025-04-24) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/6c679116a4260de3d0a0add76ca844df5a6afde8?narHash=sha256-CiNSRcFcqmGzFil6VBGW9W7m7q2FzJyF9x9a7452iVE%3D' (2025-04-23) → 'github:NixOS/nixpkgs/e36d0d43122a2b8bb04a2f5322978db8d8ddedd2?narHash=sha256-jR0am4wDBXODhhJ2%2BSrsHZSs3loSYWZqEBE%2Btl0PA4Q%3D' (2025-04-26) • Updated input 'nur': 'github:nix-community/NUR/6d04ab16a01981326374c50442471130f212c810?narHash=sha256-09%2BKxS%2B8Lxo5E7yi3KfHFT/w6JR9gq6p%2BFr%2BXd%2BarKo%3D' (2025-04-23) → 'github:nix-community/NUR/34c80a75bf09085cfd04a476389a4162c6154d42?narHash=sha256-%2B3HDClco9BTgWovVMODc0e8Gh3%2BLNTt1EXZW2tJaXjA%3D' (2025-04-26) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/c11863f1e964833214b767f4a369c6e6a7aba141?narHash=sha256-GfpyMzxwkfgRVN0cTGQSkTC0OHhEkv3Jf6Tcjm//qZ0%3D' (2025-04-21) → 'github:nixos/nixpkgs/f771eb401a46846c1aebd20552521b233dd7e18b?narHash=sha256-ITSpPDwvLBZBnPRS2bUcHY3gZSwis/uTe255QgMtTLA%3D' (2025-04-24) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index a251082..8861067 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1745369821, - "narHash": "sha256-mi6cAjuBztm9gFfpiVo6mAn81cCID6nmDXh5Kmyjwyc=", + "lastModified": 1745502102, + "narHash": "sha256-LqhRwzvIVPEjH0TaPgwzqpyhW6DtCrvz7FnUJDoUZh8=", "owner": "nix-community", "repo": "disko", - "rev": "c5140c6079ff690e85eac0b86e254de16a79a4b7", + "rev": "ca27b88c88948d96feeee9ed814cbd34f53d0d70", "type": "github" }, "original": { @@ -224,11 +224,11 @@ ] }, "locked": { - "lastModified": 1744743431, - "narHash": "sha256-iyn/WBYDc7OtjSawbegINDe/gIkok888kQxk3aVnkgg=", + "lastModified": 1745557122, + "narHash": "sha256-eqSo9ugzsqhFgaDFYUZj943nurlX4L6f+AW0skJ4W+M=", "owner": "nix-community", "repo": "home-manager", - "rev": "c61bfe3ae692f42ce688b5865fac9e0de58e1387", + "rev": "dd26f75fb4ec1c731d4b1396eaf4439ce40a91c1", "type": "github" }, "original": { @@ -349,11 +349,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1745392233, - "narHash": "sha256-xmqG4MZArM1JNxPJ33s0MtuBzgnaCO9laARoU3AfP8E=", + "lastModified": 1745503349, + "narHash": "sha256-bUGjvaPVsOfQeTz9/rLTNLDyqbzhl0CQtJJlhFPhIYw=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "8bf8a2a0822365bd8f44fd1a19d7ed0a1d629d64", + "rev": "f7bee55a5e551bd8e7b5b82c9bc559bc50d868d1", "type": "github" }, "original": { @@ -365,11 +365,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1745279238, - "narHash": "sha256-AQ7M9wTa/Pa/kK5pcGTgX/DGqMHyzsyINfN7ktsI7Fo=", + "lastModified": 1745487689, + "narHash": "sha256-FQoi3R0NjQeBAsEOo49b5tbDPcJSMWc3QhhaIi9eddw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9684b53175fc6c09581e94cc85f05ab77464c7e3", + "rev": "5630cf13cceac06cefe9fc607e8dfa8fb342dde3", "type": "github" }, "original": { @@ -397,11 +397,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1745434646, - "narHash": "sha256-CiNSRcFcqmGzFil6VBGW9W7m7q2FzJyF9x9a7452iVE=", + "lastModified": 1745680439, + "narHash": "sha256-jR0am4wDBXODhhJ2+SrsHZSs3loSYWZqEBE+tl0PA4Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6c679116a4260de3d0a0add76ca844df5a6afde8", + "rev": "e36d0d43122a2b8bb04a2f5322978db8d8ddedd2", "type": "github" }, "original": { @@ -413,11 +413,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1745234285, - "narHash": "sha256-GfpyMzxwkfgRVN0cTGQSkTC0OHhEkv3Jf6Tcjm//qZ0=", + "lastModified": 1745526057, + "narHash": "sha256-ITSpPDwvLBZBnPRS2bUcHY3gZSwis/uTe255QgMtTLA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c11863f1e964833214b767f4a369c6e6a7aba141", + "rev": "f771eb401a46846c1aebd20552521b233dd7e18b", "type": "github" }, "original": { @@ -434,11 +434,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1745434541, - "narHash": "sha256-09+KxS+8Lxo5E7yi3KfHFT/w6JR9gq6p+Fr+Xd+arKo=", + "lastModified": 1745672678, + "narHash": "sha256-+3HDClco9BTgWovVMODc0e8Gh3+LNTt1EXZW2tJaXjA=", "owner": "nix-community", "repo": "NUR", - "rev": "6d04ab16a01981326374c50442471130f212c810", + "rev": "34c80a75bf09085cfd04a476389a4162c6154d42", "type": "github" }, "original": { From e5e99a5ce964571933a846c243053a1861b83c3e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 28 Apr 2025 10:30:17 +0200 Subject: [PATCH 437/562] Move openscad to 3d-modeling --- users/jalr/modules/{openscad.nix => 3d-modeling.nix} | 0 users/jalr/modules/default.nix | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename users/jalr/modules/{openscad.nix => 3d-modeling.nix} (100%) diff --git a/users/jalr/modules/openscad.nix b/users/jalr/modules/3d-modeling.nix similarity index 100% rename from users/jalr/modules/openscad.nix rename to users/jalr/modules/3d-modeling.nix diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index b0657d1..b2b2d51 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -1,5 +1,6 @@ { imports = [ + ./3d-modeling.nix ./3d-printing.nix ./alacritty.nix ./ardour.nix @@ -25,7 +26,6 @@ ./neovim ./nix-index.nix ./obs-studio - ./openscad.nix ./ots.nix ./pass.nix ./pomodoro.nix From 399b3da3644c2b2ddb59eae3039c7ed59bb8eb7d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 30 Apr 2025 01:15:35 +0200 Subject: [PATCH 438/562] Add wireguard tunnel for esphome --- hosts/iron/ports.nix | 1 + hosts/iron/secrets.yaml | 6 ++++-- hosts/iron/services/default.nix | 1 + hosts/iron/services/wireguard-esphome.nix | 25 +++++++++++++++++++++++ 4 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 hosts/iron/services/wireguard-esphome.nix diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 1cbc8cf..106b26f 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -27,5 +27,6 @@ unifi-http.tcp = 8080; unifi-https.tcp = 8443; wireguard-public-ip-tunnel.udp = 51000; + wireguard-esphome.udp = 51001; }; } diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 75630e1..90462d7 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -4,6 +4,8 @@ radicale-htpasswd: ENC[AES256_GCM,data:Q0WnleP9I4xozsL/H+5oV3Ag7khfalV40A6ub+DA0 sturzbach-htpasswd: ENC[AES256_GCM,data:qqBwu6mASnRqjy65knU4uIvBNXXgrfcmvWnbmOH4tVQ7vRbpEhe/GQDwAg==,iv:OQnDOzezjajGl35m/u5StQeMRR+1sNDD5u1my1wTngQ=,tag:7zjVRWI1IzZ5iS3sFHLubg==,type:str] navidrome-password-encryption-key: ENC[AES256_GCM,data:ynQsFyGDEBnlWhTlv0mF7mLiXOjijq9ixWWEa1OXsTOYAd74dU0dp3Fo532WtD4fPvIWEf8Y2dYmY7zPVLuydQ==,iv:GJqPVL5OIFPLMcCVOjWvMjyFR4iTXo3uGE8R0keTzG0=,tag:RTERQgYRxBBevlL2H1lIWA==,type:str] wireguard_key_hetzner-ha: ENC[AES256_GCM,data:ak/KpQIHBNRPriJ1IeKYXIp4CcnygRHSj5MzZNnuxQnVunmmtzGu0lBEajA=,iv:aNw3EooT6XE1zC+g37WSJasRCfnNUaKQrYCDBMTxRrg=,tag:KXc70tVFc7xDLlefk1Hzow==,type:str] +wireguard_key: + esphome: ENC[AES256_GCM,data:sMA/a0YsS/9ReJDY6gpIw+nTjkMyhs3GyEy6nA3Fiw2mvBdZCyNg0q8tdy4=,iv:WPVk4BlY7eKTjLuT/Li0oRhA9N16WFBnuuGKFjHIhLQ=,tag:0x3+3+ts2zMg2Q4eqySNnA==,type:str] rspamd-worker-controller: ENC[AES256_GCM,data:7tS8bEr9i5F+YZoj3uPQa6Xd2SCsuC+jE531AbKEmPHNeL3qMyO0pQZ/P1ONaPHTVMOPQHYABihDJcZv0BKW,iv:pFBVi4F661fnYPcCPwuetiGL1H+RAnJiFQhTUqGNwjU=,tag:xQoHIEQpnrMOnXqsH8anxQ==,type:str] dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] @@ -31,8 +33,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-04-17T13:32:20Z" - mac: ENC[AES256_GCM,data:5LX+9RdaHlMOd/gwsr9xdQZB2IQee6xx0YxUQ+sXIXe5xH+cgw8vm0Gd1YFjOT9Yf8DZ/51y8XSOMXP/oT36iYGpenb84ZGV+9X3aAT8+PWZxr6eJ8raDTO/sof5r/qVrxHls3Hl2nmKI6UzTZD8PINThIaEdy9mpfxRrrcL/iU=,iv:pkPEWcVAZBq1HfcOMiQEt/2STbFBhSfzyz5lYoALmdI=,tag:7QvzpR/deD5B7Hm0C4ghgw==,type:str] + lastmodified: "2025-04-29T22:30:28Z" + mac: ENC[AES256_GCM,data:KhGX9o8J+pJpL12eqLdsBS78UazDda8N2a/LaLRu7qgKd6DiifMxF2JsS3+E4k/9eM70SK9j+HWz+1UvDTaAZrg3qK/SdLEdyvW/kzP+IwhGa03OtLL6p764E7B4gvrxOSki5wO8u+nVfF8IEWwvs0xoWRHVr3Vgu0mn5r1j3A4=,iv:p8UPvrRWE8UMneJa6reIaBUyZt/cOtYh3VTvpnGGfYg=,tag:9iuAHXHnyT/XgYqgocoPUA==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index 15537cd..f19a759 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -7,6 +7,7 @@ ./esphome ./home-assistant.nix ./jellyfin.nix + ./wireguard-esphome.nix ./mail.nix ./matrix.nix ./navidrome.nix diff --git a/hosts/iron/services/wireguard-esphome.nix b/hosts/iron/services/wireguard-esphome.nix new file mode 100644 index 0000000..f39f286 --- /dev/null +++ b/hosts/iron/services/wireguard-esphome.nix @@ -0,0 +1,25 @@ +{ config, ... }: + +let + inherit (config.networking) ports; + listenPort = ports.wireguard-esphome.udp; +in +{ + sops.secrets."wireguard_key/esphome" = { + sopsFile = ../secrets.yaml; + }; + + networking = { + firewall.allowedUDPPorts = [ listenPort ]; + wireguard.interfaces.esphome = { + ips = [ "10.20.16.1/30" ]; + privateKeyFile = config.sops.secrets."wireguard_key/esphome".path; + inherit listenPort; + peers = [{ + publicKey = "WM5qDvEF+tInUhzzF5msUwBy8WRyQOuxYX7roNcqNRc="; + persistentKeepalive = 120; + allowedIPs = [ "10.20.16.2" ]; + }]; + }; + }; +} From 391e4dd82549a0726ceb3986227d8cfbda0027d2 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 3 May 2025 00:16:57 +0200 Subject: [PATCH 439/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/ca27b88c88948d96feeee9ed814cbd34f53d0d70?narHash=sha256-LqhRwzvIVPEjH0TaPgwzqpyhW6DtCrvz7FnUJDoUZh8%3D' (2025-04-24) → 'github:nix-community/disko/d0c543d740fad42fe2c035b43c9d41127e073c78?narHash=sha256-hotBG0EJ9VmAHJYF0yhWuTVZpENHvwcJ2SxvIPrXm%2Bg%3D' (2025-04-28) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/8f3534eb8f6c5c3fce799376dc3b91bae6b11884?narHash=sha256-jMy1XqXqD0/tJprEbUmKilTkvbDY/C0ZGSsJJH4TNCE%3D' (2025-03-17) → 'github:nix-community/gomod2nix/2cbd7fdd6eeab65c494cc426e18f4e4d2a5e35c0?narHash=sha256-0YkWCS13jpoo3%2BsX/3kcgdxBNt1VZTmvF%2BFhZb4rFKI%3D' (2025-04-28) • Updated input 'home-manager': 'github:nix-community/home-manager/dd26f75fb4ec1c731d4b1396eaf4439ce40a91c1?narHash=sha256-eqSo9ugzsqhFgaDFYUZj943nurlX4L6f%2BAW0skJ4W%2BM%3D' (2025-04-25) → 'github:nix-community/home-manager/50eee705bbdbac942074a8c120e8194185633675?narHash=sha256-EyXUNSa%2BH%2BYvGVuQJP1nZskXAowxKYp79RNUsNdQTj4%3D' (2025-05-02) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/f7bee55a5e551bd8e7b5b82c9bc559bc50d868d1?narHash=sha256-bUGjvaPVsOfQeTz9/rLTNLDyqbzhl0CQtJJlhFPhIYw%3D' (2025-04-24) → 'github:nixos/nixos-hardware/72081c9fbbef63765ae82bff9727ea79cc86bd5b?narHash=sha256-mmV2oPhQN%2BYF2wmnJzXX8tqgYmUYXUj3uUUBSTmYN5o%3D' (2025-04-29) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/5630cf13cceac06cefe9fc607e8dfa8fb342dde3?narHash=sha256-FQoi3R0NjQeBAsEOo49b5tbDPcJSMWc3QhhaIi9eddw%3D' (2025-04-24) → 'github:nixos/nixpkgs/bf3287dac860542719fe7554e21e686108716879?narHash=sha256-kwaaguGkAqTZ1oK0yXeQ3ayYjs8u/W7eEfrFpFfIDFA%3D' (2025-05-02) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/e36d0d43122a2b8bb04a2f5322978db8d8ddedd2?narHash=sha256-jR0am4wDBXODhhJ2%2BSrsHZSs3loSYWZqEBE%2Btl0PA4Q%3D' (2025-04-26) → 'github:NixOS/nixpkgs/70646658006b726e0c7a664de260e4ceb584602d?narHash=sha256-tSiVRpDjqbnsde086UradYKcuVNwk8nK%2BK4vveZkD9Q%3D' (2025-05-02) • Updated input 'nur': 'github:nix-community/NUR/34c80a75bf09085cfd04a476389a4162c6154d42?narHash=sha256-%2B3HDClco9BTgWovVMODc0e8Gh3%2BLNTt1EXZW2tJaXjA%3D' (2025-04-26) → 'github:nix-community/NUR/3782ea42ee0f05f81bc09a661749b2202e2ac872?narHash=sha256-KVMrnAPsQ5GZFSl9wwvsaZ8kYbuX9dqarzz4YtVKRBk%3D' (2025-05-02) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/f771eb401a46846c1aebd20552521b233dd7e18b?narHash=sha256-ITSpPDwvLBZBnPRS2bUcHY3gZSwis/uTe255QgMtTLA%3D' (2025-04-24) → 'github:nixos/nixpkgs/f02fddb8acef29a8b32f10a335d44828d7825b78?narHash=sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds%2Bhc%3D' (2025-05-01) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 8861067..caea7d1 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1745502102, - "narHash": "sha256-LqhRwzvIVPEjH0TaPgwzqpyhW6DtCrvz7FnUJDoUZh8=", + "lastModified": 1745812220, + "narHash": "sha256-hotBG0EJ9VmAHJYF0yhWuTVZpENHvwcJ2SxvIPrXm+g=", "owner": "nix-community", "repo": "disko", - "rev": "ca27b88c88948d96feeee9ed814cbd34f53d0d70", + "rev": "d0c543d740fad42fe2c035b43c9d41127e073c78", "type": "github" }, "original": { @@ -204,11 +204,11 @@ ] }, "locked": { - "lastModified": 1742209644, - "narHash": "sha256-jMy1XqXqD0/tJprEbUmKilTkvbDY/C0ZGSsJJH4TNCE=", + "lastModified": 1745875161, + "narHash": "sha256-0YkWCS13jpoo3+sX/3kcgdxBNt1VZTmvF+FhZb4rFKI=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "8f3534eb8f6c5c3fce799376dc3b91bae6b11884", + "rev": "2cbd7fdd6eeab65c494cc426e18f4e4d2a5e35c0", "type": "github" }, "original": { @@ -224,11 +224,11 @@ ] }, "locked": { - "lastModified": 1745557122, - "narHash": "sha256-eqSo9ugzsqhFgaDFYUZj943nurlX4L6f+AW0skJ4W+M=", + "lastModified": 1746171682, + "narHash": "sha256-EyXUNSa+H+YvGVuQJP1nZskXAowxKYp79RNUsNdQTj4=", "owner": "nix-community", "repo": "home-manager", - "rev": "dd26f75fb4ec1c731d4b1396eaf4439ce40a91c1", + "rev": "50eee705bbdbac942074a8c120e8194185633675", "type": "github" }, "original": { @@ -349,11 +349,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1745503349, - "narHash": "sha256-bUGjvaPVsOfQeTz9/rLTNLDyqbzhl0CQtJJlhFPhIYw=", + "lastModified": 1745955289, + "narHash": "sha256-mmV2oPhQN+YF2wmnJzXX8tqgYmUYXUj3uUUBSTmYN5o=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "f7bee55a5e551bd8e7b5b82c9bc559bc50d868d1", + "rev": "72081c9fbbef63765ae82bff9727ea79cc86bd5b", "type": "github" }, "original": { @@ -365,11 +365,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1745487689, - "narHash": "sha256-FQoi3R0NjQeBAsEOo49b5tbDPcJSMWc3QhhaIi9eddw=", + "lastModified": 1746183838, + "narHash": "sha256-kwaaguGkAqTZ1oK0yXeQ3ayYjs8u/W7eEfrFpFfIDFA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "5630cf13cceac06cefe9fc607e8dfa8fb342dde3", + "rev": "bf3287dac860542719fe7554e21e686108716879", "type": "github" }, "original": { @@ -397,11 +397,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1745680439, - "narHash": "sha256-jR0am4wDBXODhhJ2+SrsHZSs3loSYWZqEBE+tl0PA4Q=", + "lastModified": 1746223359, + "narHash": "sha256-tSiVRpDjqbnsde086UradYKcuVNwk8nK+K4vveZkD9Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e36d0d43122a2b8bb04a2f5322978db8d8ddedd2", + "rev": "70646658006b726e0c7a664de260e4ceb584602d", "type": "github" }, "original": { @@ -413,11 +413,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1745526057, - "narHash": "sha256-ITSpPDwvLBZBnPRS2bUcHY3gZSwis/uTe255QgMtTLA=", + "lastModified": 1746141548, + "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "f771eb401a46846c1aebd20552521b233dd7e18b", + "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78", "type": "github" }, "original": { @@ -434,11 +434,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1745672678, - "narHash": "sha256-+3HDClco9BTgWovVMODc0e8Gh3+LNTt1EXZW2tJaXjA=", + "lastModified": 1746222382, + "narHash": "sha256-KVMrnAPsQ5GZFSl9wwvsaZ8kYbuX9dqarzz4YtVKRBk=", "owner": "nix-community", "repo": "NUR", - "rev": "34c80a75bf09085cfd04a476389a4162c6154d42", + "rev": "3782ea42ee0f05f81bc09a661749b2202e2ac872", "type": "github" }, "original": { From 2fe63eab34c6e88bd9af9f470c7420a2ea6fdbdc Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 3 May 2025 00:18:51 +0200 Subject: [PATCH 440/562] Remove pretix --- hosts/default.nix | 4 - hosts/weinturm-pretix-prod/configuration.nix | 54 --------- .../hardware-configuration.nix | 64 ---------- hosts/weinturm-pretix-prod/ports.nix | 10 -- hosts/weinturm-pretix-prod/secrets.yaml | 33 ------ .../weinturm-pretix-prod/services/default.nix | 5 - .../weinturm-pretix-prod/services/pretix.nix | 110 ------------------ pkgs/default.nix | 1 - pkgs/modules.nix | 1 - pkgs/pretix-banktool/default.nix | 27 ----- pkgs/pretix-banktool/module.nix | 49 -------- pkgs/pretix-banktool/requirements.patch | 18 --- 12 files changed, 376 deletions(-) delete mode 100644 hosts/weinturm-pretix-prod/configuration.nix delete mode 100644 hosts/weinturm-pretix-prod/hardware-configuration.nix delete mode 100644 hosts/weinturm-pretix-prod/ports.nix delete mode 100644 hosts/weinturm-pretix-prod/secrets.yaml delete mode 100644 hosts/weinturm-pretix-prod/services/default.nix delete mode 100644 hosts/weinturm-pretix-prod/services/pretix.nix delete mode 100644 pkgs/pretix-banktool/default.nix delete mode 100644 pkgs/pretix-banktool/module.nix delete mode 100644 pkgs/pretix-banktool/requirements.patch diff --git a/hosts/default.nix b/hosts/default.nix index a23a65f..63dee24 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -10,10 +10,6 @@ in cadmium = { system = "x86_64-linux"; }; - weinturm-pretix-prod = { - system = "aarch64"; - targetHost = "142.132.185.70"; - }; iron = { system = "x86_64-linux"; #targetHost = "192.168.42.1"; diff --git a/hosts/weinturm-pretix-prod/configuration.nix b/hosts/weinturm-pretix-prod/configuration.nix deleted file mode 100644 index 774ab83..0000000 --- a/hosts/weinturm-pretix-prod/configuration.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ ... }: { - imports = [ - ./hardware-configuration.nix - ../../users/jalr - ./services - ./ports.nix - ]; - - networking.hostName = "weinturm-pretix-prod"; - - networking.useDHCP = false; - - systemd.network = { - enable = true; - networks."10-wan" = { - matchConfig.Name = "enp1s0"; - networkConfig.DHCP = "no"; - address = [ - "142.132.185.70/32" - "2a01:4f8:c012:edd::/64" - ]; - routes = [ - { - Destination = "172.31.1.1"; - } - { - Gateway = "172.31.1.1"; - GatewayOnLink = true; - } - { - Gateway = "fe80::1"; - } - ]; - }; - }; - - zramSwap = { - enable = true; - algorithm = "zstd"; - memoryPercent = 60; - priority = 1; - }; - - security.sudo.wheelNeedsPassword = false; - - services.netdata.enable = true; - - jalr = { - bootloader = "systemd-boot"; - uefi.enable = true; - }; - - system.stateVersion = "24.05"; -} diff --git a/hosts/weinturm-pretix-prod/hardware-configuration.nix b/hosts/weinturm-pretix-prod/hardware-configuration.nix deleted file mode 100644 index 178664e..0000000 --- a/hosts/weinturm-pretix-prod/hardware-configuration.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ lib, modulesPath, ... }: -{ - imports = [ (modulesPath + "/profiles/qemu-guest.nix") ]; - - boot = { - initrd = { - availableKernelModules = [ "xhci_pci" "virtio_pci" "virtio_scsi" "usbhid" "sr_mod" ]; - kernelModules = [ ]; - }; - kernelModules = [ ]; - extraModulePackages = [ ]; - }; - - fileSystems = { - "/" = { - device = "/dev/disk/by-uuid/766739e7-2c5c-4c28-b6ee-4bf9f91e6b1f"; - fsType = "btrfs"; - options = [ - "subvol=root" - "compress=zstd" - ]; - }; - "/proc" = { - device = "/proc"; - options = [ "nosuid" "noexec" "nodev" "hidepid=2" ]; - }; - "/home" = { - device = "/dev/disk/by-uuid/766739e7-2c5c-4c28-b6ee-4bf9f91e6b1f"; - fsType = "btrfs"; - options = [ - "subvol=home" - "compress=zstd" - "nodev" - "nosuid" - ]; - }; - "/nix" = { - device = "/dev/disk/by-uuid/766739e7-2c5c-4c28-b6ee-4bf9f91e6b1f"; - fsType = "btrfs"; - options = [ - "subvol=nix" - "compress=zstd" - "noatime" - "nodev" - ]; - }; - "/boot" = { - device = "/dev/disk/by-uuid/A586-15AC"; - fsType = "vfat"; - options = [ "nodev" "nosuid" "noexec" ]; - }; - }; - - swapDevices = [ ]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp1s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; -} diff --git a/hosts/weinturm-pretix-prod/ports.nix b/hosts/weinturm-pretix-prod/ports.nix deleted file mode 100644 index c41bae4..0000000 --- a/hosts/weinturm-pretix-prod/ports.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ custom-utils, ... }: - -{ - config.networking.ports = custom-utils.validatePortAttrset { - nginx-http.tcp = 80; - nginx-https.tcp = 443; - postfix-relay.tcp = 25; - postfix-submission.tcp = 465; - }; -} diff --git a/hosts/weinturm-pretix-prod/secrets.yaml b/hosts/weinturm-pretix-prod/secrets.yaml deleted file mode 100644 index 11052e5..0000000 --- a/hosts/weinturm-pretix-prod/secrets.yaml +++ /dev/null @@ -1,33 +0,0 @@ -pretix-cfg: ENC[AES256_GCM,data:sfgKDr9aNOdwlumoltRuD7u1ksykFdEKtzt3MldjQnG0b4iAEspEhjcxqaNvPpXYm8EZKtsLBBQgdd1ifyQgs3k69c/GfzQ/jZ/yQ2OUkCO7U9A=,iv:FADYpPbGEEM/pD6EI85s9wVMv8yMrGJa+miE25XQ+t8=,tag:WJ9LHCNFHSr9RmmUi6hxnw==,type:str] -pretix-banktool-cfg: ENC[AES256_GCM,data:qHo4qfjDAe1wwdMa/HH5vgySO1XSBLQBouY8mUFlZiSI2lLCQgjQRzBu0C/p3FPqFkydtz2LEkQ6Cs/Zu0NbYB36CSinISZbGJABaNcF8mGJYKkohXF8GDYRNe7g5gxrKQlHWuPjChzxWRVLEV7VypYXE7Iad2tiiz4ZTxWZr8ylBLIbvCT1lWQU6rN4H6DjdI3gL0wmvHBg027xoelUME/g1bZvvkG3hw94Z8UKrFdZ9/DWqQ9G/VHRk0hVuBW6/b1VWooq3EF/JDEFO2oi7xW/TnwF5YMMkBQGS0b+pxK/rT6ir1DQywfFhSU09nWnRT/jw270QAwk762359e8+jl+p43dp6o+Ll1kzDQ9jbi5e2uXZrBaZGtnjDNLJHEFDJWpHtYmXNRIq4AQs/8cKaYx8uAXOTANE45GUiVpoA+m3clc02ABpBrHBENeKmJw/smGSbUKFnsu6WgigEyme8TxIMqiHghpppTzLDCZYXpBH+2n+eXNX2ovNA==,iv:kihK0wFCwvUUQg5+aKqQ6YNRyJjPvYllh0oVxJnee2w=,tag:InZaflGdiz7lXP2V+ZsyoA==,type:str] -sops: - kms: [] - gcp_kms: [] - azure_kv: [] - hc_vault: [] - age: - - recipient: age1djjxl3lcvzs85nj0met6w8ujsz8pvr6ngmmdwlxfh0k9d5lkrpdqlzzehf - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3MjRZRzI5WDNSYXNNOXBE - enNUdi9aWjRzMlU3THVMcGd2eC9zb0wwMFFZCnRQbUh6L3lxS1FKS2pqdUQ0aHg1 - K3dlNDhSK2VvYjdjRGppNTV5SE8zbUUKLS0tIHN0QldlNXJtRmRLL2c3SEU3eWkr - MGh3UVh2R05WWDU3SDVFKzdvODRGQVUKo1u58Ra1dhAfBmv3xwLk/6+6/mFPJn0Z - FyL7yjU6JMWzR/8FUv5lJAubudiZ8MnuH+10deGvQnT5AxG9fNzi5w== - -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-02-28T13:17:03Z" - mac: ENC[AES256_GCM,data:Ytsc+CdGosiIkIS/Ck6YIYMFgSArM9o6VR9Hx4B1xlWUQV9DfUuJ+5Ev6SuAPfIhXLfBEpbAzmfqZaYq81M+tERQxYXEuOiz9+l/5j9hOTlrfporscz4Jb8wrPDOTj8kTVbWF9K73uB08zla4T+y5N735DBb+YOpztDouoLO1rw=,iv:vu78iCIv6M5vO4mLhlBTRl7cpys4BBsdPWnRUqd+Fmo=,tag:/GlbV2/IhRZuXNkzSVwOMQ==,type:str] - pgp: - - created_at: "2024-01-31T01:20:41Z" - enc: |- - -----BEGIN PGP MESSAGE----- - - hF4DY/xpNY5WhB0SAQdAj+5TReNbi6wBP+ftlrJK9jfrHor2FveQMlmHsfHGkjMw - lGlhoHuDnRbVCWC4ruHGFtOclvw2Kjja7ZWbc+7CX34KREAETN89Jic2tGmQKY9q - 0l4B2gqyXsnrpD/n+gOJlnpZcxlUX0iriO5POEf9czTsFKRFnTdZcAX+7Dgv7Iqn - TkJJLYo64mpV3TPvcj2UlejcANcNV82gDWwIbLdKs2UPdFVJqfpP2z6V5bQCML/y - =4iJS - -----END PGP MESSAGE----- - fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 - unencrypted_suffix: _unencrypted - version: 3.9.4 diff --git a/hosts/weinturm-pretix-prod/services/default.nix b/hosts/weinturm-pretix-prod/services/default.nix deleted file mode 100644 index 731194c..0000000 --- a/hosts/weinturm-pretix-prod/services/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - imports = [ - ./pretix.nix - ]; -} diff --git a/hosts/weinturm-pretix-prod/services/pretix.nix b/hosts/weinturm-pretix-prod/services/pretix.nix deleted file mode 100644 index 94fa3ab..0000000 --- a/hosts/weinturm-pretix-prod/services/pretix.nix +++ /dev/null @@ -1,110 +0,0 @@ -{ config, lib, ... }: - -let - cfg = config.services.pretix; - inherit (config.networking) ports; - domain = "tickets.weinturm-open-air.de"; - extraDomains = [ - "tickets.weinturm.jalr.de" - "tickets.wasted-openair.de" - "oel.wasted-openair.de" - "tickets.buendnis-gegen-rechts-nea.de" - ]; - gunicornWorkers = 4; - secretsFile = ../secrets.yaml; -in -{ - sops.secrets = { - pretix-cfg = { - sopsFile = secretsFile; - }; - pretix-banktool-cfg = { - sopsFile = secretsFile; - }; - }; - - # Add user to `redis-pretix` group - # to grant access to /run/redis-pretix/redis.sock - users.users.pretix.extraGroups = [ "redis-pretix" ]; - - networking.firewall.allowedTCPPorts = [ 80 443 ]; - - security.acme = { - acceptTerms = true; - defaults.email = lib.mkForce "helfer@weinturm-open-air.de"; - }; - - jalr.mailserver = { - enable = true; - fqdn = "tickets.weinturm-open-air.de"; - relayPort = ports.postfix-relay.tcp; - domains = [ - { - domain = "tickets.weinturm-open-air.de"; - enableDKIM = false; - } - ]; - messageSizeLimit = 10 * 1024 * 1024; - users = [ ]; - spam.enable = false; - }; - - services = { - pretix = { - enable = true; - settings = { - pretix = { - instance_name = "Digitaler Dienst GmbH"; - url = "https://${domain}"; - registration = false; - password_reset = true; - }; - locale = { - default = "de"; - timezone = "Europe/Berlin"; - }; - mail = { - from = "no-reply@tickets.weinturm-open-air.de"; - }; - redis.location = "unix:///run/redis-pretix/redis.sock?db=0"; - celery.backend = "redis+socket:///run/redis-pretix/redis.sock?virtual_host=2"; - celery.broker = "redis+socket:///run/redis-pretix/redis.sock?virtual_host=1"; - }; - nginx = { - enable = true; - inherit domain; - }; - gunicorn = { - extraArgs = [ - "--workers=${toString gunicornWorkers}" - ]; - }; - }; - - pretix-banktool = { - enable = true; - days = 14; - secretsFile = config.sops.secrets.pretix-banktool-cfg.path; - }; - - nginx = lib.mkIf cfg.nginx.enable { - recommendedGzipSettings = true; - recommendedOptimisation = true; - recommendedProxySettings = true; - recommendedTlsSettings = true; - virtualHosts = { - "${cfg.nginx.domain}" = { - enableACME = true; - forceSSL = true; - kTLS = true; - extraConfig = '' - add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload' always; - more_set_headers Referrer-Policy same-origin; - more_set_headers X-Content-Type-Options nosniff; - ''; - serverAliases = extraDomains; - }; - }; - }; - }; -} diff --git a/pkgs/default.nix b/pkgs/default.nix index 2eb4b51..5a27c44 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -23,7 +23,6 @@ in inherit poetry2nix; }; pomodoro-timer = callPackage ./pomodoro-timer { }; - pretix-banktool = callPackage ./pretix-banktool { }; tabbed-box-maker = callPackage ./tabbed-box-maker { }; vesc-firmware = callPackage ./vesc-tool/firmware.nix { }; vesc-tool = callPackage ./vesc-tool/tool.nix { }; diff --git a/pkgs/modules.nix b/pkgs/modules.nix index 8a82e06..067cbc4 100644 --- a/pkgs/modules.nix +++ b/pkgs/modules.nix @@ -3,6 +3,5 @@ ./asterisk-sounds-de/module.nix ./ksoloti/module.nix ./myintercom-doorbell/module.nix - ./pretix-banktool/module.nix ]; } diff --git a/pkgs/pretix-banktool/default.nix b/pkgs/pretix-banktool/default.nix deleted file mode 100644 index d685c12..0000000 --- a/pkgs/pretix-banktool/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ python3Packages, fetchFromGitHub }: -python3Packages.buildPythonApplication rec { - name = "pretix-banktool"; - version = "1.0.0"; - - src = fetchFromGitHub { - owner = "pretix"; - repo = "pretix-banktool"; - rev = "v${version}"; - sha256 = "vYHjotx1RujPV53Ei7bXAc3kL/3cwbWQB1T3sQ15MFA="; - }; - - patches = [ - ./requirements.patch - ]; - - buildInputs = with python3Packages; [ - pip - ]; - - propagatedBuildInputs = with python3Packages; [ - click - fints - mt-940 - requests - ]; -} diff --git a/pkgs/pretix-banktool/module.nix b/pkgs/pretix-banktool/module.nix deleted file mode 100644 index 9c58157..0000000 --- a/pkgs/pretix-banktool/module.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ config, lib, pkgs, ... }: - -let - cfg = config.services.pretix-banktool; -in -{ - options.services.pretix-banktool = with lib; with lib.types; { - enable = mkEnableOption "Enable tool to query bank account and sync transaction data to pretix server."; - days = mkOption { - type = types.int; - description = "The timeframe of transaction to fetch from the bank in days."; - }; - secretsFile = mkOption { - type = types.path; - description = '' - Path of file containing secrets for pretix banktool. - ''; - }; - }; - config = { - systemd.services.pretix-banktool = lib.mkIf cfg.enable { - description = "Tool to query bank account and sync transaction data to pretix server."; - serviceConfig = { - Type = "oneshot"; - DynamicUser = true; - CapabilityBoundingSet = null; - PrivateUsers = true; - ProtectHome = true; - RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; - RestrictNamespaces = true; - SystemCallFilter = "@system-service"; - LoadCredential = "config:${cfg.secretsFile}"; - }; - script = "${pkgs.pretix-banktool}/bin/pretix-banktool upload \"$CREDENTIALS_DIRECTORY/config\" --days=${toString cfg.days}"; - }; - - systemd.timers.pretix-banktool = lib.mkIf cfg.enable { - description = "Run tool to query bank account and sync transaction data to pretix server."; - after = [ "network.target" ]; - wantedBy = [ "timers.target" ]; - timerConfig = { - Persistent = true; - OnCalendar = "*-*-* *:00:00"; - Unit = "pretix-banktool.service"; - }; - }; - }; -} - diff --git a/pkgs/pretix-banktool/requirements.patch b/pkgs/pretix-banktool/requirements.patch deleted file mode 100644 index cb78385..0000000 --- a/pkgs/pretix-banktool/requirements.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/setup.py b/setup.py -index 2eba88a..7041acd 100644 ---- a/setup.py -+++ b/setup.py -@@ -19,8 +19,8 @@ setup( - author_email='mail@raphaelmichel.de', - - install_requires=[ -- 'click==6.*', -- 'fints>=3.0.*', -+ 'click>=6,<8.2', -+ 'fints>=3,<4.1', - 'requests', -- 'mt-940>=4.12*', -+ 'mt-940==4.30.0', - ], --- -2.38.3 From 9ead7f27d6fa815f55d83e86b7b74d07cf829007 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 4 May 2025 12:33:11 +0200 Subject: [PATCH 441/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/72081c9fbbef63765ae82bff9727ea79cc86bd5b?narHash=sha256-mmV2oPhQN%2BYF2wmnJzXX8tqgYmUYXUj3uUUBSTmYN5o%3D' (2025-04-29) → 'github:nixos/nixos-hardware/0833dc8bbc4ffa9cf9b0cbfccf1c5ec8632fc66e?narHash=sha256-WjupK5Xpc%2BviJlJWiyPHp/dF4aJItp1BPuFsEdv2/fI%3D' (2025-05-04) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/70646658006b726e0c7a664de260e4ceb584602d?narHash=sha256-tSiVRpDjqbnsde086UradYKcuVNwk8nK%2BK4vveZkD9Q%3D' (2025-05-02) → 'github:NixOS/nixpkgs/669deec73864f9e6c6649b970f79d65bb2eb2c6d?narHash=sha256-WojtaSCqLh86csiJcGLoBUne7HnUi459ge4j9cpXuME%3D' (2025-05-04) • Updated input 'nur': 'github:nix-community/NUR/3782ea42ee0f05f81bc09a661749b2202e2ac872?narHash=sha256-KVMrnAPsQ5GZFSl9wwvsaZ8kYbuX9dqarzz4YtVKRBk%3D' (2025-05-02) → 'github:nix-community/NUR/8ac6c576b34a0b5a0d07231ecea377c3b2c0a9a3?narHash=sha256-5SXSosJhUJOjveIzvFHIjXQ8rHq39zHfDp2fKSWLJkI%3D' (2025-05-04) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/f02fddb8acef29a8b32f10a335d44828d7825b78?narHash=sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds%2Bhc%3D' (2025-05-01) → 'github:nixos/nixpkgs/7a2622e2c0dbad5c4493cb268aba12896e28b008?narHash=sha256-MHmBH2rS8KkRRdoU/feC/dKbdlMkcNkB5mwkuipVHeQ%3D' (2025-05-03) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index caea7d1..ffca378 100644 --- a/flake.lock +++ b/flake.lock @@ -349,11 +349,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1745955289, - "narHash": "sha256-mmV2oPhQN+YF2wmnJzXX8tqgYmUYXUj3uUUBSTmYN5o=", + "lastModified": 1746341346, + "narHash": "sha256-WjupK5Xpc+viJlJWiyPHp/dF4aJItp1BPuFsEdv2/fI=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "72081c9fbbef63765ae82bff9727ea79cc86bd5b", + "rev": "0833dc8bbc4ffa9cf9b0cbfccf1c5ec8632fc66e", "type": "github" }, "original": { @@ -397,11 +397,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1746223359, - "narHash": "sha256-tSiVRpDjqbnsde086UradYKcuVNwk8nK+K4vveZkD9Q=", + "lastModified": 1746353639, + "narHash": "sha256-WojtaSCqLh86csiJcGLoBUne7HnUi459ge4j9cpXuME=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "70646658006b726e0c7a664de260e4ceb584602d", + "rev": "669deec73864f9e6c6649b970f79d65bb2eb2c6d", "type": "github" }, "original": { @@ -413,11 +413,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1746141548, - "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=", + "lastModified": 1746232882, + "narHash": "sha256-MHmBH2rS8KkRRdoU/feC/dKbdlMkcNkB5mwkuipVHeQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78", + "rev": "7a2622e2c0dbad5c4493cb268aba12896e28b008", "type": "github" }, "original": { @@ -434,11 +434,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1746222382, - "narHash": "sha256-KVMrnAPsQ5GZFSl9wwvsaZ8kYbuX9dqarzz4YtVKRBk=", + "lastModified": 1746354383, + "narHash": "sha256-5SXSosJhUJOjveIzvFHIjXQ8rHq39zHfDp2fKSWLJkI=", "owner": "nix-community", "repo": "NUR", - "rev": "3782ea42ee0f05f81bc09a661749b2202e2ac872", + "rev": "8ac6c576b34a0b5a0d07231ecea377c3b2c0a9a3", "type": "github" }, "original": { From 82817c32ef1d6efaf95515478087bb5080600feb Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 7 May 2025 00:51:00 +0200 Subject: [PATCH 442/562] Add REW --- modules/unfree.nix | 3 ++- users/jalr/modules/default.nix | 1 + users/jalr/modules/roomeqwizard.nix | 6 ++++++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 users/jalr/modules/roomeqwizard.nix diff --git a/modules/unfree.nix b/modules/unfree.nix index e5f3549..77e1c81 100644 --- a/modules/unfree.nix +++ b/modules/unfree.nix @@ -2,7 +2,8 @@ { nixpkgs.config.allowUnfreePredicate = pkg: lib.elem (lib.getName pkg) [ - "unifi-controller" "mongodb" + "roomeqwizard" + "unifi-controller" ]; } diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index b2b2d51..82d5fab 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -31,6 +31,7 @@ ./pomodoro.nix ./python.nix ./remarkable + ./roomeqwizard.nix ./snapclient.nix ./sound ./sway diff --git a/users/jalr/modules/roomeqwizard.nix b/users/jalr/modules/roomeqwizard.nix new file mode 100644 index 0000000..42b49aa --- /dev/null +++ b/users/jalr/modules/roomeqwizard.nix @@ -0,0 +1,6 @@ +{ nixosConfig, lib, pkgs, ... }: +lib.mkIf nixosConfig.jalr.gui.enable { + home.packages = with pkgs; [ + roomeqwizard + ]; +} From 8a7765f4e2f9b2e3e177709470e4fe6ed313ea7b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 7 May 2025 00:51:16 +0200 Subject: [PATCH 443/562] Fix media files Let gunicorn deliver the media files. This is a workaround until I figured out how to give nginx the permissions to deliver them. --- hosts/magnesium/services/tandoor.nix | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/hosts/magnesium/services/tandoor.nix b/hosts/magnesium/services/tandoor.nix index 6577626..e573639 100644 --- a/hosts/magnesium/services/tandoor.nix +++ b/hosts/magnesium/services/tandoor.nix @@ -3,6 +3,7 @@ let domain = "tandoor.jalr.de"; cfg = config.services.tandoor-recipes; + #recipesDirectory = "/var/lib/private/tandoor-recipes/recipes"; inherit (config.networking) ports; in { @@ -13,6 +14,9 @@ in services.tandoor-recipes = { enable = true; port = ports.tandoor.tcp; + extraConfig = { + GUNICORN_MEDIA = "1"; + }; }; systemd.services.tandoor-recipes = { @@ -26,12 +30,22 @@ in }; }; + #users.groups.tandoor-recipes.members = [ "nginx" ]; + # https://tandoor.jalr.de/media/recipes/c071286f-60b3-45e9-9ac5-f4bb99703c17_11.jpg + + #systemd.services.nginx.serviceConfig.BindReadOnlyPaths = [ recipesDirectory ]; + #users.groups.tandoor-recipes.members = [ "nginx" ]; + services.nginx.virtualHosts."${domain}" = { enableACME = true; forceSSL = true; - locations."/" = { - proxyPass = "http://127.0.0.1:${toString cfg.port}"; + locations = { + "/" = { + proxyPass = "http://127.0.0.1:${toString cfg.port}"; + proxyWebsockets = true; + }; + #"/media/recipes/".alias = recipesDirectory; }; }; } From 4e7e1578d1399b7897e461d30247d18126020b4e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 9 May 2025 01:52:19 +0200 Subject: [PATCH 444/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/d0c543d740fad42fe2c035b43c9d41127e073c78?narHash=sha256-hotBG0EJ9VmAHJYF0yhWuTVZpENHvwcJ2SxvIPrXm%2Bg%3D' (2025-04-28) → 'github:nix-community/disko/85555d27ded84604ad6657ecca255a03fd878607?narHash=sha256-9R4sOLAK1w3Bq54H3XOJogdc7a6C2bLLmatOQ%2B5pf5w%3D' (2025-05-08) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/dcf5072734cb576d2b0c59b2ac44f5050b5eac82?narHash=sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco%3D' (2025-03-22) → 'github:cachix/git-hooks.nix/fa466640195d38ec97cf0493d6d6882bc4d14969?narHash=sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS%2BnoCWo%3D' (2025-05-06) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/0833dc8bbc4ffa9cf9b0cbfccf1c5ec8632fc66e?narHash=sha256-WjupK5Xpc%2BviJlJWiyPHp/dF4aJItp1BPuFsEdv2/fI%3D' (2025-05-04) → 'github:nixos/nixos-hardware/2ea3ad8a1f26a76f8a8e23fc4f7757c46ef30ee5?narHash=sha256-T9vOxEqI1j1RYugV0b9dgy0AreiZ9yBDKZJYyclF0og%3D' (2025-05-07) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/bf3287dac860542719fe7554e21e686108716879?narHash=sha256-kwaaguGkAqTZ1oK0yXeQ3ayYjs8u/W7eEfrFpFfIDFA%3D' (2025-05-02) → 'github:nixos/nixpkgs/1d3aeb5a193b9ff13f63f4d9cc169fb88129f860?narHash=sha256-QkNoyEf6TbaTW5UZYX0OkwIJ/ZMeKSSoOMnSDPQuol0%3D' (2025-05-06) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/669deec73864f9e6c6649b970f79d65bb2eb2c6d?narHash=sha256-WojtaSCqLh86csiJcGLoBUne7HnUi459ge4j9cpXuME%3D' (2025-05-04) → 'github:NixOS/nixpkgs/963bb20b2cb3591aa5f80772aa3e0fd21539830d?narHash=sha256-gfO4gyPp8FnPVoN01Ob4FFpnEb/3Shaitdu2z/F%2BIJA%3D' (2025-05-08) • Updated input 'nur': 'github:nix-community/NUR/8ac6c576b34a0b5a0d07231ecea377c3b2c0a9a3?narHash=sha256-5SXSosJhUJOjveIzvFHIjXQ8rHq39zHfDp2fKSWLJkI%3D' (2025-05-04) → 'github:nix-community/NUR/d997cc011fd3d6373923f6cf18b3e2296baa234d?narHash=sha256-rea3RjwhTDjq/ovrFU1zISyXbv0uG4ZivFg1vtHnzRA%3D' (2025-05-08) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/7a2622e2c0dbad5c4493cb268aba12896e28b008?narHash=sha256-MHmBH2rS8KkRRdoU/feC/dKbdlMkcNkB5mwkuipVHeQ%3D' (2025-05-03) → 'github:nixos/nixpkgs/8fcc71459655f2486b3da197b8d6a62f595a33d2?narHash=sha256-GYYT5Pc%2BsZZWomgC7EgDSNSfmXd9Jby9nXQ6bAswUCg%3D' (2025-05-07) • Updated input 'sops-nix': 'github:Mic92/sops-nix/5e3e92b16d6fdf9923425a8d4df7496b2434f39c?narHash=sha256-ePyTpKEJTgX0gvgNQWd7tQYQ3glIkbqcW778RpHlqgA%3D' (2025-04-22) → 'github:Mic92/sops-nix/e93ee1d900ad264d65e9701a5c6f895683433386?narHash=sha256-PxrrSFLaC7YuItShxmYbMgSuFFuwxBB%2Bqsl9BZUnRvg%3D' (2025-05-05) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index ffca378..0caa5e7 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1745812220, - "narHash": "sha256-hotBG0EJ9VmAHJYF0yhWuTVZpENHvwcJ2SxvIPrXm+g=", + "lastModified": 1746729224, + "narHash": "sha256-9R4sOLAK1w3Bq54H3XOJogdc7a6C2bLLmatOQ+5pf5w=", "owner": "nix-community", "repo": "disko", - "rev": "d0c543d740fad42fe2c035b43c9d41127e073c78", + "rev": "85555d27ded84604ad6657ecca255a03fd878607", "type": "github" }, "original": { @@ -333,11 +333,11 @@ ] }, "locked": { - "lastModified": 1742649964, - "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "lastModified": 1746537231, + "narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "rev": "fa466640195d38ec97cf0493d6d6882bc4d14969", "type": "github" }, "original": { @@ -349,11 +349,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1746341346, - "narHash": "sha256-WjupK5Xpc+viJlJWiyPHp/dF4aJItp1BPuFsEdv2/fI=", + "lastModified": 1746621361, + "narHash": "sha256-T9vOxEqI1j1RYugV0b9dgy0AreiZ9yBDKZJYyclF0og=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "0833dc8bbc4ffa9cf9b0cbfccf1c5ec8632fc66e", + "rev": "2ea3ad8a1f26a76f8a8e23fc4f7757c46ef30ee5", "type": "github" }, "original": { @@ -365,11 +365,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746183838, - "narHash": "sha256-kwaaguGkAqTZ1oK0yXeQ3ayYjs8u/W7eEfrFpFfIDFA=", + "lastModified": 1746557022, + "narHash": "sha256-QkNoyEf6TbaTW5UZYX0OkwIJ/ZMeKSSoOMnSDPQuol0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "bf3287dac860542719fe7554e21e686108716879", + "rev": "1d3aeb5a193b9ff13f63f4d9cc169fb88129f860", "type": "github" }, "original": { @@ -397,11 +397,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1746353639, - "narHash": "sha256-WojtaSCqLh86csiJcGLoBUne7HnUi459ge4j9cpXuME=", + "lastModified": 1746747219, + "narHash": "sha256-gfO4gyPp8FnPVoN01Ob4FFpnEb/3Shaitdu2z/F+IJA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "669deec73864f9e6c6649b970f79d65bb2eb2c6d", + "rev": "963bb20b2cb3591aa5f80772aa3e0fd21539830d", "type": "github" }, "original": { @@ -413,11 +413,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1746232882, - "narHash": "sha256-MHmBH2rS8KkRRdoU/feC/dKbdlMkcNkB5mwkuipVHeQ=", + "lastModified": 1746592047, + "narHash": "sha256-GYYT5Pc+sZZWomgC7EgDSNSfmXd9Jby9nXQ6bAswUCg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "7a2622e2c0dbad5c4493cb268aba12896e28b008", + "rev": "8fcc71459655f2486b3da197b8d6a62f595a33d2", "type": "github" }, "original": { @@ -434,11 +434,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1746354383, - "narHash": "sha256-5SXSosJhUJOjveIzvFHIjXQ8rHq39zHfDp2fKSWLJkI=", + "lastModified": 1746748039, + "narHash": "sha256-rea3RjwhTDjq/ovrFU1zISyXbv0uG4ZivFg1vtHnzRA=", "owner": "nix-community", "repo": "NUR", - "rev": "8ac6c576b34a0b5a0d07231ecea377c3b2c0a9a3", + "rev": "d997cc011fd3d6373923f6cf18b3e2296baa234d", "type": "github" }, "original": { @@ -550,11 +550,11 @@ ] }, "locked": { - "lastModified": 1745310711, - "narHash": "sha256-ePyTpKEJTgX0gvgNQWd7tQYQ3glIkbqcW778RpHlqgA=", + "lastModified": 1746485181, + "narHash": "sha256-PxrrSFLaC7YuItShxmYbMgSuFFuwxBB+qsl9BZUnRvg=", "owner": "Mic92", "repo": "sops-nix", - "rev": "5e3e92b16d6fdf9923425a8d4df7496b2434f39c", + "rev": "e93ee1d900ad264d65e9701a5c6f895683433386", "type": "github" }, "original": { From 623f793970b4d9b1715ff697ec601b60da1d8827 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 12 May 2025 23:31:04 +0200 Subject: [PATCH 445/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'home-manager': 'github:nix-community/home-manager/50eee705bbdbac942074a8c120e8194185633675?narHash=sha256-EyXUNSa%2BH%2BYvGVuQJP1nZskXAowxKYp79RNUsNdQTj4%3D' (2025-05-02) → 'github:nix-community/home-manager/b4bbdc6fde16fc2051fcde232f6e288cd22007ca?narHash=sha256-D/6rkiC6w2p%2B4SwRiVKrWIeYzun8FBg7NlMKMwQMxO0%3D' (2025-05-12) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/2ea3ad8a1f26a76f8a8e23fc4f7757c46ef30ee5?narHash=sha256-T9vOxEqI1j1RYugV0b9dgy0AreiZ9yBDKZJYyclF0og%3D' (2025-05-07) → 'github:nixos/nixos-hardware/d1d68fe8b00248caaa5b3bbe4984c12b47e0867d?narHash=sha256-dMx20S2molwqJxbmMB4pGjNfgp5H1IOHNa1Eby6xL%2B0%3D' (2025-05-12) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/1d3aeb5a193b9ff13f63f4d9cc169fb88129f860?narHash=sha256-QkNoyEf6TbaTW5UZYX0OkwIJ/ZMeKSSoOMnSDPQuol0%3D' (2025-05-06) → 'github:nixos/nixpkgs/a39ed32a651fdee6842ec930761e31d1f242cb94?narHash=sha256-k9ut1LSfHCr0AW82ttEQzXVCqmyWVA5%2BSHJkS5ID/Jo%3D' (2025-05-11) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/963bb20b2cb3591aa5f80772aa3e0fd21539830d?narHash=sha256-gfO4gyPp8FnPVoN01Ob4FFpnEb/3Shaitdu2z/F%2BIJA%3D' (2025-05-08) → 'github:NixOS/nixpkgs/db8c5bd59837c0e80005f9484c0f3d01816a0a77?narHash=sha256-7MBXSIVYYWJVsbxa5Wyp%2BnZEIu3Q4WkNqQ/CPvGgNDA%3D' (2025-05-12) • Updated input 'nur': 'github:nix-community/NUR/d997cc011fd3d6373923f6cf18b3e2296baa234d?narHash=sha256-rea3RjwhTDjq/ovrFU1zISyXbv0uG4ZivFg1vtHnzRA%3D' (2025-05-08) → 'github:nix-community/NUR/375559ab975135e694d34adb905260badf450773?narHash=sha256-jAOpBBLpq%2BMixGB5/h8Gh/%2B7EA2Rc/U8S01DcVEchIM%3D' (2025-05-12) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/8fcc71459655f2486b3da197b8d6a62f595a33d2?narHash=sha256-GYYT5Pc%2BsZZWomgC7EgDSNSfmXd9Jby9nXQ6bAswUCg%3D' (2025-05-07) → 'github:nixos/nixpkgs/d89fc19e405cb2d55ce7cc114356846a0ee5e956?narHash=sha256-3e%2BAVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ%3D' (2025-05-10) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 0caa5e7..e07c4d5 100644 --- a/flake.lock +++ b/flake.lock @@ -224,11 +224,11 @@ ] }, "locked": { - "lastModified": 1746171682, - "narHash": "sha256-EyXUNSa+H+YvGVuQJP1nZskXAowxKYp79RNUsNdQTj4=", + "lastModified": 1747020534, + "narHash": "sha256-D/6rkiC6w2p+4SwRiVKrWIeYzun8FBg7NlMKMwQMxO0=", "owner": "nix-community", "repo": "home-manager", - "rev": "50eee705bbdbac942074a8c120e8194185633675", + "rev": "b4bbdc6fde16fc2051fcde232f6e288cd22007ca", "type": "github" }, "original": { @@ -349,11 +349,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1746621361, - "narHash": "sha256-T9vOxEqI1j1RYugV0b9dgy0AreiZ9yBDKZJYyclF0og=", + "lastModified": 1747083103, + "narHash": "sha256-dMx20S2molwqJxbmMB4pGjNfgp5H1IOHNa1Eby6xL+0=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "2ea3ad8a1f26a76f8a8e23fc4f7757c46ef30ee5", + "rev": "d1d68fe8b00248caaa5b3bbe4984c12b47e0867d", "type": "github" }, "original": { @@ -365,11 +365,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746557022, - "narHash": "sha256-QkNoyEf6TbaTW5UZYX0OkwIJ/ZMeKSSoOMnSDPQuol0=", + "lastModified": 1746957726, + "narHash": "sha256-k9ut1LSfHCr0AW82ttEQzXVCqmyWVA5+SHJkS5ID/Jo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1d3aeb5a193b9ff13f63f4d9cc169fb88129f860", + "rev": "a39ed32a651fdee6842ec930761e31d1f242cb94", "type": "github" }, "original": { @@ -397,11 +397,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1746747219, - "narHash": "sha256-gfO4gyPp8FnPVoN01Ob4FFpnEb/3Shaitdu2z/F+IJA=", + "lastModified": 1747085072, + "narHash": "sha256-7MBXSIVYYWJVsbxa5Wyp+nZEIu3Q4WkNqQ/CPvGgNDA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "963bb20b2cb3591aa5f80772aa3e0fd21539830d", + "rev": "db8c5bd59837c0e80005f9484c0f3d01816a0a77", "type": "github" }, "original": { @@ -413,11 +413,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1746592047, - "narHash": "sha256-GYYT5Pc+sZZWomgC7EgDSNSfmXd9Jby9nXQ6bAswUCg=", + "lastModified": 1746904237, + "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8fcc71459655f2486b3da197b8d6a62f595a33d2", + "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", "type": "github" }, "original": { @@ -434,11 +434,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1746748039, - "narHash": "sha256-rea3RjwhTDjq/ovrFU1zISyXbv0uG4ZivFg1vtHnzRA=", + "lastModified": 1747084740, + "narHash": "sha256-jAOpBBLpq+MixGB5/h8Gh/+7EA2Rc/U8S01DcVEchIM=", "owner": "nix-community", "repo": "NUR", - "rev": "d997cc011fd3d6373923f6cf18b3e2296baa234d", + "rev": "375559ab975135e694d34adb905260badf450773", "type": "github" }, "original": { From fc508ef08b0a554a189e803eba78de02a70de97c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 19 May 2025 21:56:46 +0200 Subject: [PATCH 446/562] Add NFC reader --- .../esphome/devices/kueche-leiste.yaml | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/hosts/iron/services/esphome/devices/kueche-leiste.yaml b/hosts/iron/services/esphome/devices/kueche-leiste.yaml index 434c137..996c412 100644 --- a/hosts/iron/services/esphome/devices/kueche-leiste.yaml +++ b/hosts/iron/services/esphome/devices/kueche-leiste.yaml @@ -32,7 +32,6 @@ wifi: domain: .iot.bw.jalr.de enable_on_boot: True fast_connect: On - output_power: 8.5 esp32_ble_tracker: scan_parameters: @@ -92,3 +91,26 @@ binary_sensor: - light.toggle: id: led_light internal: True + +spi: + - id: spi_bus_main + clk_pin: GPIO21 + mosi_pin: GPIO10 + miso_pin: GPIO20 + +pn532_spi: + spi_id: spi_bus_main + # FIXME: GPIO9 is a strapping pin + cs_pin: GPIO9 + update_interval: 1s + on_tag: + then: + - homeassistant.tag_scanned: !lambda 'return x;' + - switch.turn_on: buzzer + - delay: 250ms + - switch.turn_off: buzzer + +switch: + - platform: gpio + pin: GPIO7 + id: buzzer From cdad4059fdcc1cc763081e44e588e21828ff370d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 16 May 2025 20:09:36 +0200 Subject: [PATCH 447/562] Bump to 25.05 --- flake.lock | 58 +++++++++++++++++++++++++++--------------------------- flake.nix | 4 ++-- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/flake.lock b/flake.lock index e07c4d5..16c3443 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1746729224, - "narHash": "sha256-9R4sOLAK1w3Bq54H3XOJogdc7a6C2bLLmatOQ+5pf5w=", + "lastModified": 1747621015, + "narHash": "sha256-j0fo1rNxZvmFLMaE945UrbLJZAHTlQmq0/QMgOP4GTs=", "owner": "nix-community", "repo": "disko", - "rev": "85555d27ded84604ad6657ecca255a03fd878607", + "rev": "cec44d77d9dacf0c91d3d51aff128fefabce06ee", "type": "github" }, "original": { @@ -224,16 +224,16 @@ ] }, "locked": { - "lastModified": 1747020534, - "narHash": "sha256-D/6rkiC6w2p+4SwRiVKrWIeYzun8FBg7NlMKMwQMxO0=", + "lastModified": 1747556831, + "narHash": "sha256-Qb84nbYFFk0DzFeqVoHltS2RodAYY5/HZQKE8WnBDsc=", "owner": "nix-community", "repo": "home-manager", - "rev": "b4bbdc6fde16fc2051fcde232f6e288cd22007ca", + "rev": "d0bbd221482c2713cccb80220f3c9d16a6e20a33", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-24.11", + "ref": "release-25.05", "repo": "home-manager", "type": "github" } @@ -333,11 +333,11 @@ ] }, "locked": { - "lastModified": 1746537231, - "narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=", + "lastModified": 1747372754, + "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "fa466640195d38ec97cf0493d6d6882bc4d14969", + "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", "type": "github" }, "original": { @@ -349,11 +349,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1747083103, - "narHash": "sha256-dMx20S2molwqJxbmMB4pGjNfgp5H1IOHNa1Eby6xL+0=", + "lastModified": 1747684167, + "narHash": "sha256-l6jbonaboCBlB8lCjBkrqgh2zEnvt6F3f4dOU/8CLd4=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "d1d68fe8b00248caaa5b3bbe4984c12b47e0867d", + "rev": "e8f38b2c19c0647e39021c3d47172ff5469af8a9", "type": "github" }, "original": { @@ -365,16 +365,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746957726, - "narHash": "sha256-k9ut1LSfHCr0AW82ttEQzXVCqmyWVA5+SHJkS5ID/Jo=", + "lastModified": 1747610100, + "narHash": "sha256-rpR5ZPMkWzcnCcYYo3lScqfuzEw5Uyfh+R0EKZfroAc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a39ed32a651fdee6842ec930761e31d1f242cb94", + "rev": "ca49c4304acf0973078db0a9d200fd2bae75676d", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-24.11", + "ref": "nixos-25.05", "repo": "nixpkgs", "type": "github" } @@ -397,11 +397,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1747085072, - "narHash": "sha256-7MBXSIVYYWJVsbxa5Wyp+nZEIu3Q4WkNqQ/CPvGgNDA=", + "lastModified": 1747684550, + "narHash": "sha256-IT00R92DhZCYbLMJxCdfB/f8Cu777nSJBhRTJ7DBB9A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "db8c5bd59837c0e80005f9484c0f3d01816a0a77", + "rev": "4e7164464b0c6d686680dd4ebb93076e652e9eb0", "type": "github" }, "original": { @@ -413,11 +413,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1746904237, - "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", + "lastModified": 1747542820, + "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", + "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", "type": "github" }, "original": { @@ -434,11 +434,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1747084740, - "narHash": "sha256-jAOpBBLpq+MixGB5/h8Gh/+7EA2Rc/U8S01DcVEchIM=", + "lastModified": 1747683907, + "narHash": "sha256-dgEK4d1QPNFhv0s5s9lpvEWOVBlRZENp7TVh8V8qYDU=", "owner": "nix-community", "repo": "NUR", - "rev": "375559ab975135e694d34adb905260badf450773", + "rev": "64046fedb710701f87e5e86390b4dbe77f1d733b", "type": "github" }, "original": { @@ -550,11 +550,11 @@ ] }, "locked": { - "lastModified": 1746485181, - "narHash": "sha256-PxrrSFLaC7YuItShxmYbMgSuFFuwxBB+qsl9BZUnRvg=", + "lastModified": 1747603214, + "narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=", "owner": "Mic92", "repo": "sops-nix", - "rev": "e93ee1d900ad264d65e9701a5c6f895683433386", + "rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index d0fd029..ee726fe 100644 --- a/flake.nix +++ b/flake.nix @@ -12,7 +12,7 @@ }; home-manager = { - url = "github:nix-community/home-manager/release-24.11"; + url = "github:nix-community/home-manager/release-25.05"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -36,7 +36,7 @@ nixos-hardware.url = "github:nixos/nixos-hardware/master"; - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgsMaster.url = "github:NixOS/nixpkgs/master"; From f42654b9ad3c8a71235bf2140aaba695638d0bf9 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 16 May 2025 20:26:07 +0200 Subject: [PATCH 448/562] Fixes for 25.05 --- hosts/aluminium/services/unifi-controller.nix | 2 +- hosts/iron/services/unifi-controller.nix | 2 +- modules/fonts.nix | 4 +++- modules/mailserver/dovecot.nix | 5 +++-- modules/pipewire.nix | 2 +- users/jalr/modules/firefox/default.nix | 2 +- users/jalr/modules/gnuradio.nix | 4 ++-- 7 files changed, 12 insertions(+), 9 deletions(-) diff --git a/hosts/aluminium/services/unifi-controller.nix b/hosts/aluminium/services/unifi-controller.nix index f5a70a9..ae39578 100644 --- a/hosts/aluminium/services/unifi-controller.nix +++ b/hosts/aluminium/services/unifi-controller.nix @@ -6,7 +6,7 @@ in { services.unifi = { enable = true; - unifiPackage = pkgs.unifi8; + unifiPackage = pkgs.unifi; mongodbPackage = pkgs.mongodb-7_0; }; networking.firewall.interfaces.lechner.allowedTCPPorts = [ diff --git a/hosts/iron/services/unifi-controller.nix b/hosts/iron/services/unifi-controller.nix index 87144fa..f351e4b 100644 --- a/hosts/iron/services/unifi-controller.nix +++ b/hosts/iron/services/unifi-controller.nix @@ -7,7 +7,7 @@ in { services.unifi = { enable = true; - unifiPackage = pkgs.unifi8; + unifiPackage = pkgs.unifi; mongodbPackage = pkgs.mongodb-7_0; }; networking.firewall.interfaces."${interfaces.lan}".allowedTCPPorts = [ diff --git a/modules/fonts.nix b/modules/fonts.nix index eb2cee0..8abb971 100644 --- a/modules/fonts.nix +++ b/modules/fonts.nix @@ -3,7 +3,9 @@ { console.font = "Lat2-Terminus16"; fonts.packages = with pkgs; lib.mkIf config.jalr.gui.enable [ - (nerdfonts.override { fonts = [ "Iosevka" ]; }) + nerd-fonts.iosevka + nerd-fonts.iosevka-term + nerd-fonts.iosevka-term-slab font-awesome powerline-fonts roboto diff --git a/modules/mailserver/dovecot.nix b/modules/mailserver/dovecot.nix index dea0bc5..a2485a5 100644 --- a/modules/mailserver/dovecot.nix +++ b/modules/mailserver/dovecot.nix @@ -13,8 +13,6 @@ lib.mkIf cfg.enable { services.dovecot2 = { enable = true; - modules = with pkgs; [ dovecot_pigeonhole ]; - enableLmtp = true; enablePAM = false; @@ -124,6 +122,9 @@ lib.mkIf cfg.enable { } ''; }; + + environment.systemPackages = [ pkgs.dovecot_pigeonhole ]; + systemd.services.dovecot2 = { wants = [ "acme-finished-${cfg.fqdn}.target" ]; after = [ "acme-finished-${cfg.fqdn}.target" ]; diff --git a/modules/pipewire.nix b/modules/pipewire.nix index 1591e95..3e03a70 100644 --- a/modules/pipewire.nix +++ b/modules/pipewire.nix @@ -1,7 +1,7 @@ { config, lib, pkgs, ... }: lib.mkIf config.jalr.gui.enable { - hardware.pulseaudio.enable = false; + services.pulseaudio.enable = false; # FIXME #hardware.pulseaudio.extraModules = [ pkgs.pulseaudio-modules-bt ]; diff --git a/users/jalr/modules/firefox/default.nix b/users/jalr/modules/firefox/default.nix index 411773e..56186b9 100644 --- a/users/jalr/modules/firefox/default.nix +++ b/users/jalr/modules/firefox/default.nix @@ -272,7 +272,7 @@ profiles.default = { id = 0; isDefault = true; - extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ browserpass darkreader sponsorblock diff --git a/users/jalr/modules/gnuradio.nix b/users/jalr/modules/gnuradio.nix index 05bb580..8a380a7 100644 --- a/users/jalr/modules/gnuradio.nix +++ b/users/jalr/modules/gnuradio.nix @@ -1,11 +1,11 @@ { nixosConfig, lib, pkgs, ... }: let - gnuradioEnv = pkgs.gnuradio3_8.override { + gnuradioEnv = pkgs.gnuradio.override { extraPackages = pkgs.lib.attrVals [ "osmosdr" ] - pkgs.gnuradio3_8Packages; + pkgs.gnuradioPackages; }; in lib.mkIf nixosConfig.jalr.gui.enable { From 58d97a2abb982d236692eaab66c9d3b2e5fe6248 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 19 May 2025 22:23:38 +0200 Subject: [PATCH 449/562] Bump lanzaboote version --- flake.lock | 57 +++++++++++++++++++++++++++++++----------------------- flake.nix | 2 +- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/flake.lock b/flake.lock index 16c3443..629181f 100644 --- a/flake.lock +++ b/flake.lock @@ -2,10 +2,7 @@ "nodes": { "crane": { "inputs": { - "nixpkgs": [ - "lanzaboote", - "nixpkgs" - ] + "nixpkgs": "nixpkgs" }, "locked": { "lastModified": 1717535930, @@ -138,11 +135,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -281,7 +278,6 @@ "crane": "crane", "flake-compat": "flake-compat", "flake-parts": "flake-parts", - "flake-utils": "flake-utils_2", "nixpkgs": [ "nixpkgs" ], @@ -289,16 +285,16 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1718178907, - "narHash": "sha256-eSZyrQ9uoPB9iPQ8Y5H7gAmAgAvCw3InStmU3oEjqsE=", + "lastModified": 1737639419, + "narHash": "sha256-AEEDktApTEZ5PZXNDkry2YV2k6t0dTgLPEmAZbnigXU=", "owner": "nix-community", "repo": "lanzaboote", - "rev": "b627ccd97d0159214cee5c7db1412b75e4be6086", + "rev": "a65905a09e2c43ff63be8c0e86a93712361f871e", "type": "github" }, "original": { "owner": "nix-community", - "ref": "v0.4.1", + "ref": "v0.4.2", "repo": "lanzaboote", "type": "github" } @@ -365,16 +361,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1747610100, - "narHash": "sha256-rpR5ZPMkWzcnCcYYo3lScqfuzEw5Uyfh+R0EKZfroAc=", - "owner": "nixos", + "lastModified": 1747467164, + "narHash": "sha256-JBXbjJ0t6T6BbVc9iPVquQI9XSXCGQJD8c8SgnUquus=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ca49c4304acf0973078db0a9d200fd2bae75676d", + "rev": "3fcbdcfc707e0aa42c541b7743e05820472bdaec", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-25.05", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } @@ -412,6 +408,22 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1747610100, + "narHash": "sha256-rpR5ZPMkWzcnCcYYo3lScqfuzEw5Uyfh+R0EKZfroAc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ca49c4304acf0973078db0a9d200fd2bae75676d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1747542820, "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", @@ -430,7 +442,7 @@ "nur": { "inputs": { "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "treefmt-nix": "treefmt-nix" }, "locked": { @@ -511,7 +523,7 @@ "lanzaboote": "lanzaboote", "nix-pre-commit-hooks": "nix-pre-commit-hooks", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "nixpkgsMaster": "nixpkgsMaster", "nur": "nur", "poetry2nix": "poetry2nix", @@ -520,10 +532,7 @@ }, "rust-overlay": { "inputs": { - "flake-utils": [ - "lanzaboote", - "flake-utils" - ], + "flake-utils": "flake-utils_2", "nixpkgs": [ "lanzaboote", "nixpkgs" diff --git a/flake.nix b/flake.nix index ee726fe..606db08 100644 --- a/flake.nix +++ b/flake.nix @@ -25,7 +25,7 @@ }; lanzaboote = { - url = "github:nix-community/lanzaboote/v0.4.1"; + url = "github:nix-community/lanzaboote/v0.4.2"; inputs.nixpkgs.follows = "nixpkgs"; }; From a6d9c798d7004324ca2584bdb8439ad8cb9d85b6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 19 May 2025 22:43:59 +0200 Subject: [PATCH 450/562] Fix esphome --- hosts/iron/services/esphome/default.nix | 62 ++++++++++++++++++++----- 1 file changed, 51 insertions(+), 11 deletions(-) diff --git a/hosts/iron/services/esphome/default.nix b/hosts/iron/services/esphome/default.nix index cf83681..8e6ce2b 100644 --- a/hosts/iron/services/esphome/default.nix +++ b/hosts/iron/services/esphome/default.nix @@ -1,4 +1,8 @@ -{ lib, pkgs, config, ... }: +{ lib +, pkgs +, config +, ... +}: let inherit (config.networking) ports; cfgdir = pkgs.stdenvNoCC.mkDerivation { @@ -10,6 +14,11 @@ let cp -r * $out ''; }; + cfg = config.services.esphome; + esphomeParams = + if cfg.enableUnixSocket + then "--socket /run/esphome/esphome.sock" + else "--address ${cfg.address} --port ${toString cfg.port}"; in { sops.secrets.esphome = { @@ -26,16 +35,21 @@ in systemd.services.esphome = { environment = { - "PLATFORMIO_CORE_DIR" = lib.mkForce "/tmp/.platformio"; + "PLATFORMIO_CORE_DIR" = lib.mkForce "/var/cache/esphome/.platformio"; }; serviceConfig = { BindReadOnlyPaths = [ "/nix/store" - cfgdir - "%d/secrets.yaml:/var/lib/esphome/secrets.yaml" + "%d/secrets.yaml:/run/esphome/config/secrets.yaml" + "/etc/resolv.conf" + "/etc/ssl" + "/etc/static/ssl" ]; - BindPaths = [ - "/var/lib/esphome" + TemporaryFileSystem = [ + "/var/lib" + ]; + ExecPaths = [ + "-+/var/cache/esphome/.platformio/packages/" ]; DeviceAllow = [ "char-ttyACM rw" @@ -43,15 +57,41 @@ in "char-ttyUSB rw" ]; ExecStartPre = [ - "${pkgs.rsync}/bin/rsync -a --delete --checksum --exclude secrets.yaml --exclude=.esphome --exclude=.platformio --exclude=.gitignore '${cfgdir}/' '/var/lib/esphome/'" + (pkgs.writeShellScript "esphome-exec-start-pre" '' + if ! [ -d "$CACHE_DIRECTORY/.platformio/packages" ]; then + mkdir -p "$CACHE_DIRECTORY/.platformio/packages" + exit 1 + fi + mkdir -p "$CACHE_DIRECTORY/.esphome" + for linked in \ + .esphome \ + .gitignore + do + ln -s "$CACHE_DIRECTORY/$linked" "/run/esphome/config/$linked" + done + ${pkgs.rsync}/bin/rsync \ + -a \ + --delete \ + --checksum \ + --exclude secrets.yaml \ + --exclude=.esphome \ + --exclude=.platformio \ + --exclude=.gitignore \ + '${cfgdir}/' /run/esphome/config/ + '') ]; + ExecStart = lib.mkForce "${cfg.package}/bin/esphome dashboard ${esphomeParams} /run/esphome/config"; LoadCredential = "secrets.yaml:${config.sops.secrets.esphome.path}"; PrivateTmp = true; - RootDirectory = "/run/esphome"; - RuntimeDirectory = "esphome"; - StateDirectory = "esphome"; + RootDirectory = "%t/esphome/chroot"; + RuntimeDirectory = [ + "esphome/chroot" + "esphome/config" + ]; + StateDirectory = lib.mkForce [ ]; + CacheDirectory = "esphome"; SupplementaryGroups = [ "dialout" ]; - WorkingDirectory = lib.mkForce "/tmp"; + WorkingDirectory = lib.mkForce "/run/esphome/config"; }; }; } From d1fc275307eace709fdeca94a510f2d49943ac33 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 19 May 2025 22:46:47 +0200 Subject: [PATCH 451/562] Bump illuminanced version --- pkgs/illuminanced/default.nix | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pkgs/illuminanced/default.nix b/pkgs/illuminanced/default.nix index 2683fdc..3ab99e2 100644 --- a/pkgs/illuminanced/default.nix +++ b/pkgs/illuminanced/default.nix @@ -2,16 +2,19 @@ , fetchFromGitHub }: +let + version = "1.0.2"; +in rustPlatform.buildRustPackage { pname = "illuminanced"; - version = "0.1.0"; + inherit version; src = fetchFromGitHub { owner = "mikhail-m1"; repo = "illuminanced"; - rev = "ee95f97dc1ed197abe3a7c4f3ad45121a077d3eb"; - sha256 = "sha256-dilApolbxgl//2YVbd4ITYVNwfCQQ8LPayqmmW5Jhv8="; + rev = version; + sha256 = "sha256-ZEVma0uj9rsWB+vfUL7w3dHxI/ppBCG23TirGE+RREk="; }; - cargoHash = "sha256-y0Fuzgjz7s9VD/cqMshU1LiytlXskTMZ6dlQsYtAvsk="; + cargoHash = "sha256-kPWoQ6rE4wBjmqQLNPY4UWJt/AOgr+eVKY0ZK7B4K1A="; } From c939f81d8717f09feab024603533c01e340d3557 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 21 May 2025 17:29:08 +0200 Subject: [PATCH 452/562] Fix touch threshold and add filter --- hosts/iron/services/esphome/devices/badspiegel.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hosts/iron/services/esphome/devices/badspiegel.yaml b/hosts/iron/services/esphome/devices/badspiegel.yaml index 74e451a..7f262ed 100644 --- a/hosts/iron/services/esphome/devices/badspiegel.yaml +++ b/hosts/iron/services/esphome/devices/badspiegel.yaml @@ -118,13 +118,17 @@ binary_sensor: - light.toggle: id: front_light internal: true + filters: + settle: 1s # Touch Pad T7 - platform: esp32_touch name: "touch pad GPIO27" pin: GPIO27 - threshold: 1030 + threshold: 1086 on_press: then: - light.toggle: id: background_light internal: true + filters: + settle: 1s From 852d62bbd71b36865e1397bcc7df92341f02e1e7 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 26 May 2025 15:47:22 +0200 Subject: [PATCH 453/562] Use stable package --- hosts/aluminium/services/esphome/default.nix | 2 +- hosts/magnesium/services/trilium.nix | 2 +- modules/qbittorrent/default.nix | 2 +- pkgs/myintercom-doorbell/module.nix | 2 +- users/jalr/modules/fpv.nix | 2 +- users/jalr/modules/trilium.nix | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/hosts/aluminium/services/esphome/default.nix b/hosts/aluminium/services/esphome/default.nix index 144bb06..14d791a 100644 --- a/hosts/aluminium/services/esphome/default.nix +++ b/hosts/aluminium/services/esphome/default.nix @@ -20,7 +20,7 @@ in enable = true; address = "127.0.0.1"; port = ports.esphome.tcp; - package = pkgs.master.esphome; + package = pkgs.esphome; }; systemd.services.esphome = { diff --git a/hosts/magnesium/services/trilium.nix b/hosts/magnesium/services/trilium.nix index c61c5cf..9b7adbf 100644 --- a/hosts/magnesium/services/trilium.nix +++ b/hosts/magnesium/services/trilium.nix @@ -7,7 +7,7 @@ in { services.trilium-server = { enable = true; - package = pkgs.master.trilium-next-server; + package = pkgs.trilium-next-server; host = "127.0.0.1"; port = ports.trilium.tcp; nginx = { diff --git a/modules/qbittorrent/default.nix b/modules/qbittorrent/default.nix index 9165d4d..1c20e70 100644 --- a/modules/qbittorrent/default.nix +++ b/modules/qbittorrent/default.nix @@ -59,7 +59,7 @@ in serviceConfig = { Restart = "always"; - ExecStart = "${pkgs.master.qbittorrent-nox}/bin/qbittorrent-nox --profile=${cfg.configDir} --webui-port=${toString cfg.webuiPort}"; + ExecStart = "${pkgs.qbittorrent-nox}/bin/qbittorrent-nox --profile=${cfg.configDir} --webui-port=${toString cfg.webuiPort}"; User = "qbittorrent"; Group = "qbittorrent"; diff --git a/pkgs/myintercom-doorbell/module.nix b/pkgs/myintercom-doorbell/module.nix index 3dfefde..cddb862 100644 --- a/pkgs/myintercom-doorbell/module.nix +++ b/pkgs/myintercom-doorbell/module.nix @@ -141,7 +141,7 @@ in wantedBy = [ "multi-user.target" ]; description = "Proxies the videostream of myintercom doorbell."; script = '' - sed "s:__PASSWORD__:$(cat "$PASSWORD_FILE"):" "${mediamtxConfig}" | ${pkgs.master.mediamtx}/bin/mediamtx /dev/stdin + sed "s:__PASSWORD__:$(cat "$PASSWORD_FILE"):" "${mediamtxConfig}" | ${pkgs.mediamtx}/bin/mediamtx /dev/stdin ''; serviceConfig = { Type = "simple"; diff --git a/users/jalr/modules/fpv.nix b/users/jalr/modules/fpv.nix index 9cc7d27..b51fb63 100644 --- a/users/jalr/modules/fpv.nix +++ b/users/jalr/modules/fpv.nix @@ -2,7 +2,7 @@ lib.mkIf nixosConfig.jalr.gui.enable { home.packages = with pkgs; [ - master.betaflight-configurator + betaflight-configurator fpvout ]; } diff --git a/users/jalr/modules/trilium.nix b/users/jalr/modules/trilium.nix index b219820..91b6dfe 100644 --- a/users/jalr/modules/trilium.nix +++ b/users/jalr/modules/trilium.nix @@ -1,6 +1,6 @@ { nixosConfig, lib, pkgs, ... }: lib.mkIf nixosConfig.jalr.gui.enable { - home.packages = with pkgs.master; [ + home.packages = with pkgs; [ trilium-next-desktop ]; } From bfa03c0c679dc81ac8847ffc02edd137627f73e4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 26 May 2025 16:45:05 +0200 Subject: [PATCH 454/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/cec44d77d9dacf0c91d3d51aff128fefabce06ee?narHash=sha256-j0fo1rNxZvmFLMaE945UrbLJZAHTlQmq0/QMgOP4GTs%3D' (2025-05-19) → 'github:nix-community/disko/a894f2811e1ee8d10c50560551e50d6ab3c392ba?narHash=sha256-AzlJCKaM4wbEyEpV3I/PUq5mHnib2ryEy32c%2Bqfj6xk%3D' (2025-05-26) • Updated input 'home-manager': 'github:nix-community/home-manager/d0bbd221482c2713cccb80220f3c9d16a6e20a33?narHash=sha256-Qb84nbYFFk0DzFeqVoHltS2RodAYY5/HZQKE8WnBDsc%3D' (2025-05-18) → 'github:nix-community/home-manager/83665c39fa688bd6a1f7c43cf7997a70f6a109f9?narHash=sha256-GaBRgxjWO1bAQa8P2%2BFDxG4ANBVhjnSjBms096qQdxo%3D' (2025-05-26) • Updated input 'lanzaboote/crane': 'github:ipetkov/crane/55e7754ec31dac78980c8be45f8a28e80e370946?narHash=sha256-1hZ/txnbd/RmiBPNUs7i8UQw2N89uAK3UzrGAWdnFfU%3D' (2024-06-04) → 'github:ipetkov/crane/ef80ead953c1b28316cc3f8613904edc2eb90c28?narHash=sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp%2B4cAgkut%2BNNE%3D' (2024-11-08) • Removed input 'lanzaboote/crane/nixpkgs' • Updated input 'lanzaboote/flake-parts': 'github:hercules-ci/flake-parts/2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8?narHash=sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw%3D' (2024-06-01) → 'github:hercules-ci/flake-parts/506278e768c2a08bec68eb62932193e341f55c90?narHash=sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS%2Bb4tfNFCwE%3D' (2024-11-01) • Updated input 'lanzaboote/pre-commit-hooks-nix': 'github:cachix/pre-commit-hooks.nix/cc4d466cb1254af050ff7bdf47f6d404a7c646d1?narHash=sha256-7XfBuLULizXjXfBYy/VV%2BSpYMHreNRHk9nKMsm1bgb4%3D' (2024-06-06) → 'github:cachix/pre-commit-hooks.nix/cd1af27aa85026ac759d5d3fccf650abe7e1bbf0?narHash=sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf%2BInnSMT4jlMU%3D' (2024-11-11) • Updated input 'lanzaboote/pre-commit-hooks-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/614b4613980a522ba49f0d194531beddbb7220d3?narHash=sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84%3D' (2024-03-17) → 'github:NixOS/nixpkgs/d063c1dd113c91ab27959ba540c0d9753409edf3?narHash=sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo%3D' (2024-11-04) • Updated input 'lanzaboote/rust-overlay': 'github:oxalica/rust-overlay/6dc3e45fe4aee36efeed24d64fc68b1f989d5465?narHash=sha256-wqbRwq3i7g5EHIui0bIi84mdqZ/It1AXBSLJ5tafD28%3D' (2024-06-08) → 'github:oxalica/rust-overlay/0be641045af6d8666c11c2c40e45ffc9667839b5?narHash=sha256-Ou7vLETSKwmE/HRQz4cImXXJBr/k9gp4J4z/PF8LzTE%3D' (2024-11-18) • Removed input 'lanzaboote/rust-overlay/flake-utils' • Removed input 'lanzaboote/rust-overlay/flake-utils/systems' • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/e8f38b2c19c0647e39021c3d47172ff5469af8a9?narHash=sha256-l6jbonaboCBlB8lCjBkrqgh2zEnvt6F3f4dOU/8CLd4%3D' (2025-05-19) → 'github:nixos/nixos-hardware/11f2d9ea49c3e964315215d6baa73a8d42672f06?narHash=sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg%3D' (2025-05-22) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/ca49c4304acf0973078db0a9d200fd2bae75676d?narHash=sha256-rpR5ZPMkWzcnCcYYo3lScqfuzEw5Uyfh%2BR0EKZfroAc%3D' (2025-05-18) → 'github:nixos/nixpkgs/7c43f080a7f28b2774f3b3f43234ca11661bf334?narHash=sha256-rqc2RKYTxP3tbjA%2BPB3VMRQNnjesrT0pEofXQTrMsS8%3D' (2025-05-25) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/4e7164464b0c6d686680dd4ebb93076e652e9eb0?narHash=sha256-IT00R92DhZCYbLMJxCdfB/f8Cu777nSJBhRTJ7DBB9A%3D' (2025-05-19) → 'github:NixOS/nixpkgs/c04caae6a2de0731e72ce29020684b28d8bc4c95?narHash=sha256-bW5NeMh0DEwMVrF0vA%2B3PPvIVECuTnQMlqPenPrbrXA%3D' (2025-05-26) • Updated input 'nur': 'github:nix-community/NUR/64046fedb710701f87e5e86390b4dbe77f1d733b?narHash=sha256-dgEK4d1QPNFhv0s5s9lpvEWOVBlRZENp7TVh8V8qYDU%3D' (2025-05-19) → 'github:nix-community/NUR/4767c2d34da23c89d0436a92fae2582b0bcea60e?narHash=sha256-O9bDdixbIShL/uyw3nbRYU2k7vd/gKJGUzye%2BFzPQNE%3D' (2025-05-26) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/292fa7d4f6519c074f0a50394dbbe69859bb6043?narHash=sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw%3D' (2025-05-18) → 'github:nixos/nixpkgs/063f43f2dbdef86376cc29ad646c45c46e93234c?narHash=sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o%3D' (2025-05-23) --- flake.lock | 139 +++++++++++++++++------------------------------------ 1 file changed, 43 insertions(+), 96 deletions(-) diff --git a/flake.lock b/flake.lock index 629181f..cb635b3 100644 --- a/flake.lock +++ b/flake.lock @@ -1,15 +1,12 @@ { "nodes": { "crane": { - "inputs": { - "nixpkgs": "nixpkgs" - }, "locked": { - "lastModified": 1717535930, - "narHash": "sha256-1hZ/txnbd/RmiBPNUs7i8UQw2N89uAK3UzrGAWdnFfU=", + "lastModified": 1731098351, + "narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=", "owner": "ipetkov", "repo": "crane", - "rev": "55e7754ec31dac78980c8be45f8a28e80e370946", + "rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28", "type": "github" }, "original": { @@ -25,11 +22,11 @@ ] }, "locked": { - "lastModified": 1747621015, - "narHash": "sha256-j0fo1rNxZvmFLMaE945UrbLJZAHTlQmq0/QMgOP4GTs=", + "lastModified": 1748225455, + "narHash": "sha256-AzlJCKaM4wbEyEpV3I/PUq5mHnib2ryEy32c+qfj6xk=", "owner": "nix-community", "repo": "disko", - "rev": "cec44d77d9dacf0c91d3d51aff128fefabce06ee", + "rev": "a894f2811e1ee8d10c50560551e50d6ab3c392ba", "type": "github" }, "original": { @@ -78,11 +75,11 @@ ] }, "locked": { - "lastModified": 1717285511, - "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", + "lastModified": 1730504689, + "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", + "rev": "506278e768c2a08bec68eb62932193e341f55c90", "type": "github" }, "original": { @@ -130,24 +127,6 @@ "type": "github" } }, - "flake-utils_2": { - "inputs": { - "systems": "systems_2" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "gitignore": { "inputs": { "nixpkgs": [ @@ -221,11 +200,11 @@ ] }, "locked": { - "lastModified": 1747556831, - "narHash": "sha256-Qb84nbYFFk0DzFeqVoHltS2RodAYY5/HZQKE8WnBDsc=", + "lastModified": 1748226808, + "narHash": "sha256-GaBRgxjWO1bAQa8P2+FDxG4ANBVhjnSjBms096qQdxo=", "owner": "nix-community", "repo": "home-manager", - "rev": "d0bbd221482c2713cccb80220f3c9d16a6e20a33", + "rev": "83665c39fa688bd6a1f7c43cf7997a70f6a109f9", "type": "github" }, "original": { @@ -345,11 +324,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1747684167, - "narHash": "sha256-l6jbonaboCBlB8lCjBkrqgh2zEnvt6F3f4dOU/8CLd4=", + "lastModified": 1747900541, + "narHash": "sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "e8f38b2c19c0647e39021c3d47172ff5469af8a9", + "rev": "11f2d9ea49c3e964315215d6baa73a8d42672f06", "type": "github" }, "original": { @@ -361,43 +340,43 @@ }, "nixpkgs": { "locked": { - "lastModified": 1747467164, - "narHash": "sha256-JBXbjJ0t6T6BbVc9iPVquQI9XSXCGQJD8c8SgnUquus=", - "owner": "NixOS", + "lastModified": 1748162331, + "narHash": "sha256-rqc2RKYTxP3tbjA+PB3VMRQNnjesrT0pEofXQTrMsS8=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "3fcbdcfc707e0aa42c541b7743e05820472bdaec", + "rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "nixos-25.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-stable": { "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "lastModified": 1730741070, + "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.11", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgsMaster": { "locked": { - "lastModified": 1747684550, - "narHash": "sha256-IT00R92DhZCYbLMJxCdfB/f8Cu777nSJBhRTJ7DBB9A=", + "lastModified": 1748270064, + "narHash": "sha256-bW5NeMh0DEwMVrF0vA+3PPvIVECuTnQMlqPenPrbrXA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4e7164464b0c6d686680dd4ebb93076e652e9eb0", + "rev": "c04caae6a2de0731e72ce29020684b28d8bc4c95", "type": "github" }, "original": { @@ -409,27 +388,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1747610100, - "narHash": "sha256-rpR5ZPMkWzcnCcYYo3lScqfuzEw5Uyfh+R0EKZfroAc=", + "lastModified": 1748026106, + "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ca49c4304acf0973078db0a9d200fd2bae75676d", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-25.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1747542820, - "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", + "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", "type": "github" }, "original": { @@ -442,15 +405,15 @@ "nur": { "inputs": { "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_2", "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1747683907, - "narHash": "sha256-dgEK4d1QPNFhv0s5s9lpvEWOVBlRZENp7TVh8V8qYDU=", + "lastModified": 1748265123, + "narHash": "sha256-O9bDdixbIShL/uyw3nbRYU2k7vd/gKJGUzye+FzPQNE=", "owner": "nix-community", "repo": "NUR", - "rev": "64046fedb710701f87e5e86390b4dbe77f1d733b", + "rev": "4767c2d34da23c89d0436a92fae2582b0bcea60e", "type": "github" }, "original": { @@ -468,7 +431,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_3", + "systems": "systems_2", "treefmt-nix": "treefmt-nix_2" }, "locked": { @@ -499,11 +462,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1717664902, - "narHash": "sha256-7XfBuLULizXjXfBYy/VV+SpYMHreNRHk9nKMsm1bgb4=", + "lastModified": 1731363552, + "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "cc4d466cb1254af050ff7bdf47f6d404a7c646d1", + "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0", "type": "github" }, "original": { @@ -523,7 +486,7 @@ "lanzaboote": "lanzaboote", "nix-pre-commit-hooks": "nix-pre-commit-hooks", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "nixpkgsMaster": "nixpkgsMaster", "nur": "nur", "poetry2nix": "poetry2nix", @@ -532,18 +495,17 @@ }, "rust-overlay": { "inputs": { - "flake-utils": "flake-utils_2", "nixpkgs": [ "lanzaboote", "nixpkgs" ] }, "locked": { - "lastModified": 1717813066, - "narHash": "sha256-wqbRwq3i7g5EHIui0bIi84mdqZ/It1AXBSLJ5tafD28=", + "lastModified": 1731897198, + "narHash": "sha256-Ou7vLETSKwmE/HRQz4cImXXJBr/k9gp4J4z/PF8LzTE=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "6dc3e45fe4aee36efeed24d64fc68b1f989d5465", + "rev": "0be641045af6d8666c11c2c40e45ffc9667839b5", "type": "github" }, "original": { @@ -602,21 +564,6 @@ "type": "github" } }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "treefmt-nix": { "inputs": { "nixpkgs": [ From 8288820ffc2ae8f75deee897b4703db4778a7fba Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 26 May 2025 16:36:06 +0200 Subject: [PATCH 455/562] Move asterisk-sounds-de to overlay --- flake.lock | 43 +++++++++++++++++++++++++++++ flake.nix | 12 ++++++++ pkgs/asterisk-sounds-de/default.nix | 22 --------------- pkgs/asterisk-sounds-de/module.nix | 15 ---------- pkgs/default.nix | 1 - pkgs/modules.nix | 1 - 6 files changed, 55 insertions(+), 39 deletions(-) delete mode 100644 pkgs/asterisk-sounds-de/default.nix delete mode 100644 pkgs/asterisk-sounds-de/module.nix diff --git a/flake.lock b/flake.lock index cb635b3..7ac1204 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,31 @@ { "nodes": { + "asterisk-sounds-de": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nix-filter": [ + "nix-filter" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1748284610, + "narHash": "sha256-B3/OOZC0puXbODupPEbdMA6sJP39MzbMCl4j1HvgNfU=", + "ref": "refs/heads/main", + "rev": "6b1c484318727af78a64aee3f46903493dae8259", + "revCount": 1, + "type": "git", + "url": "https://git.jalr.de/jalr/asterisk-sounds-de" + }, + "original": { + "type": "git", + "url": "https://git.jalr.de/jalr/asterisk-sounds-de" + } + }, "crane": { "locked": { "lastModified": 1731098351, @@ -278,6 +304,21 @@ "type": "github" } }, + "nix-filter": { + "locked": { + "lastModified": 1731533336, + "narHash": "sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms=", + "owner": "numtide", + "repo": "nix-filter", + "rev": "f7653272fd234696ae94229839a99b73c9ab7de0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "nix-filter", + "type": "github" + } + }, "nix-github-actions": { "inputs": { "nixpkgs": [ @@ -477,6 +518,7 @@ }, "root": { "inputs": { + "asterisk-sounds-de": "asterisk-sounds-de", "disko": "disko", "flake-utils": "flake-utils", "gomod2nix": "gomod2nix", @@ -484,6 +526,7 @@ "impermanence": "impermanence", "krops": "krops", "lanzaboote": "lanzaboote", + "nix-filter": "nix-filter", "nix-pre-commit-hooks": "nix-pre-commit-hooks", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs", diff --git a/flake.nix b/flake.nix index 606db08..3d0937c 100644 --- a/flake.nix +++ b/flake.nix @@ -5,6 +5,8 @@ flake-utils.url = "github:numtide/flake-utils"; + nix-filter.url = "github:numtide/nix-filter"; + gomod2nix = { url = "github:nix-community/gomod2nix"; inputs.flake-utils.follows = "flake-utils"; @@ -52,6 +54,15 @@ url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; + + asterisk-sounds-de = { + url = "git+https://git.jalr.de/jalr/asterisk-sounds-de"; + inputs = { + flake-utils.follows = "flake-utils"; + nix-filter.follows = "nix-filter"; + nixpkgs.follows = "nixpkgs"; + }; + }; }; outputs = { self @@ -193,6 +204,7 @@ ] ++ [ { nixpkgs.overlays = [ nur.overlays.default ]; } home-manager.nixosModules.home-manager + inputs.asterisk-sounds-de.nixosModules.default inputs.disko.nixosModules.disko inputs.impermanence.nixosModules.impermanence inputs.lanzaboote.nixosModules.lanzaboote diff --git a/pkgs/asterisk-sounds-de/default.nix b/pkgs/asterisk-sounds-de/default.nix deleted file mode 100644 index ca5cad5..0000000 --- a/pkgs/asterisk-sounds-de/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ stdenvNoCC -, fetchurl -, unzip -}: - -stdenvNoCC.mkDerivation rec { - src = fetchurl { - url = "https://www.asterisksounds.org/sites/asterisksounds.org/files/sounds/de/download/asterisk-sounds-core-de-${version}.zip"; - sha256 = "y97xVDBHgnD/Z/DxjKcSNjCXXfiVO+PWUFMbyQpaFLY="; - }; - name = "asterisk-sounds-de"; - version = "2.11.19"; - dontBuild = true; - nativeBuildInputs = [ unzip ]; - unpackPhase = '' - unzip $src - ''; - installPhase = '' - mkdir $out - cp -r * $out - ''; -} diff --git a/pkgs/asterisk-sounds-de/module.nix b/pkgs/asterisk-sounds-de/module.nix deleted file mode 100644 index 0bfbeda..0000000 --- a/pkgs/asterisk-sounds-de/module.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ config, lib, pkgs, ... }: - -let cfg = config; -in -{ - config = lib.mkIf cfg.services.asterisk.enable { - systemd.services.asterisk.preStart = lib.mkMerge [ - (lib.mkAfter '' - sounds_de="/var/lib/asterisk/sounds/de" - [ -L "$sounds_de" ] && rm "$sounds_de" - ln -s "${pkgs.asterisk-sounds-de}/" "$sounds_de" - '') - ]; - }; -} diff --git a/pkgs/default.nix b/pkgs/default.nix index 5a27c44..7222cf4 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -6,7 +6,6 @@ let poetry2nix = callPackage inputs.poetry2nix { }; in { - asterisk-sounds-de = callPackage ./asterisk-sounds-de { }; ksoloti = callPackage ./ksoloti { gcc-arm-embedded = pkgsCross.arm-embedded.buildPackages.gcc; }; diff --git a/pkgs/modules.nix b/pkgs/modules.nix index 067cbc4..195958b 100644 --- a/pkgs/modules.nix +++ b/pkgs/modules.nix @@ -1,6 +1,5 @@ { imports = [ - ./asterisk-sounds-de/module.nix ./ksoloti/module.nix ./myintercom-doorbell/module.nix ]; From 010f2e05dfefc691924b7abfa4a85c37e3d9c01b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 26 May 2025 16:49:14 +0200 Subject: [PATCH 456/562] Add domain `iot.bw.jalr.de` --- modules/dns.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/dns.nix b/modules/dns.nix index 5cbac18..a15d066 100644 --- a/modules/dns.nix +++ b/modules/dns.nix @@ -26,6 +26,7 @@ in server = [ "/iceportal.de/172.18.0.1" "/lab.fablab-nea.de/192.168.94.1" + "/iot.bw.jalr.de/192.168.42.1" "/lan.bw.jalr.de/192.168.42.1" "/lechner.zz/192.168.0.1" "/login.wifionice.de/172.18.0.1" From 63e4acaab211040662b7e5201ffea3b3abb0295c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 26 May 2025 22:00:30 +0200 Subject: [PATCH 457/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/c04caae6a2de0731e72ce29020684b28d8bc4c95?narHash=sha256-bW5NeMh0DEwMVrF0vA%2B3PPvIVECuTnQMlqPenPrbrXA%3D' (2025-05-26) → 'github:NixOS/nixpkgs/cb97c2be9ce0bedbef5169d3defd485a21a34da7?narHash=sha256-DaxlBnIme%2Bcdz05dXZP8NxyAyqvXPHYzOBGfh7L8bhU%3D' (2025-05-26) • Updated input 'nur': 'github:nix-community/NUR/4767c2d34da23c89d0436a92fae2582b0bcea60e?narHash=sha256-O9bDdixbIShL/uyw3nbRYU2k7vd/gKJGUzye%2BFzPQNE%3D' (2025-05-26) → 'github:nix-community/NUR/57a344633301a9f55bc46663e4843a66fbac89e2?narHash=sha256-agITW8EIoypTJGEZi6nu4hzWd%2BiiwZ1vOGpUaaeGFQA%3D' (2025-05-26) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/063f43f2dbdef86376cc29ad646c45c46e93234c?narHash=sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o%3D' (2025-05-23) → 'github:nixos/nixpkgs/62b852f6c6742134ade1abdd2a21685fd617a291?narHash=sha256-R5HJFflOfsP5FBtk%2BzE8FpL8uqE7n62jqOsADvVshhE%3D' (2025-05-25) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 7ac1204..af7d212 100644 --- a/flake.lock +++ b/flake.lock @@ -413,11 +413,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1748270064, - "narHash": "sha256-bW5NeMh0DEwMVrF0vA+3PPvIVECuTnQMlqPenPrbrXA=", + "lastModified": 1748289113, + "narHash": "sha256-DaxlBnIme+cdz05dXZP8NxyAyqvXPHYzOBGfh7L8bhU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c04caae6a2de0731e72ce29020684b28d8bc4c95", + "rev": "cb97c2be9ce0bedbef5169d3defd485a21a34da7", "type": "github" }, "original": { @@ -429,11 +429,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1748026106, - "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", + "lastModified": 1748190013, + "narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", + "rev": "62b852f6c6742134ade1abdd2a21685fd617a291", "type": "github" }, "original": { @@ -450,11 +450,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1748265123, - "narHash": "sha256-O9bDdixbIShL/uyw3nbRYU2k7vd/gKJGUzye+FzPQNE=", + "lastModified": 1748288788, + "narHash": "sha256-agITW8EIoypTJGEZi6nu4hzWd+iiwZ1vOGpUaaeGFQA=", "owner": "nix-community", "repo": "NUR", - "rev": "4767c2d34da23c89d0436a92fae2582b0bcea60e", + "rev": "57a344633301a9f55bc46663e4843a66fbac89e2", "type": "github" }, "original": { From f4cb1b304e59053280e69461042ff6c35328f58b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 27 May 2025 01:13:08 +0200 Subject: [PATCH 458/562] Add it-tools --- hosts/magnesium/services/default.nix | 1 + hosts/magnesium/services/it-tools.nix | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 hosts/magnesium/services/it-tools.nix diff --git a/hosts/magnesium/services/default.nix b/hosts/magnesium/services/default.nix index 9372fbf..c257730 100644 --- a/hosts/magnesium/services/default.nix +++ b/hosts/magnesium/services/default.nix @@ -4,6 +4,7 @@ ./forgejo.nix ./gitlab-runner.nix ./hedgedoc.nix + ./it-tools.nix ./mealie.nix ./ntfy.nix ./public-ip-tunnel.nix diff --git a/hosts/magnesium/services/it-tools.nix b/hosts/magnesium/services/it-tools.nix new file mode 100644 index 0000000..4999bf0 --- /dev/null +++ b/hosts/magnesium/services/it-tools.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: + +let + domain = "tools.jalr.de"; +in +{ + services.nginx.virtualHosts."${domain}" = { + enableACME = true; + forceSSL = true; + root = "${pkgs.it-tools}/lib"; + }; +} From d4d6c7a830c7cd0b005d76f841bc07f0a878ddd3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 27 May 2025 15:10:20 +0200 Subject: [PATCH 459/562] Add esphome module --- hosts/aluminium/services/esphome/default.nix | 59 +++-------- hosts/aluminium/services/esphome/devices/.env | 2 + .../services/esphome/devices/.gitignore | 5 + .../services/esphome/devices/justfile | 1 + hosts/iron/services/esphome/default.nix | 91 ++-------------- hosts/iron/services/esphome/devices/.env | 2 +- hosts/iron/services/esphome/devices/justfile | 18 +--- modules/default.nix | 1 + modules/esphome/default.nix | 100 ++++++++++++++++++ modules/esphome/devices/justfile | 17 +++ 10 files changed, 154 insertions(+), 142 deletions(-) create mode 100644 hosts/aluminium/services/esphome/devices/.env create mode 100644 hosts/aluminium/services/esphome/devices/.gitignore create mode 120000 hosts/aluminium/services/esphome/devices/justfile mode change 100644 => 120000 hosts/iron/services/esphome/devices/justfile create mode 100644 modules/esphome/default.nix create mode 100644 modules/esphome/devices/justfile diff --git a/hosts/aluminium/services/esphome/default.nix b/hosts/aluminium/services/esphome/default.nix index 14d791a..1f4c754 100644 --- a/hosts/aluminium/services/esphome/default.nix +++ b/hosts/aluminium/services/esphome/default.nix @@ -1,57 +1,28 @@ -{ lib, pkgs, config, ... }: +{ pkgs +, config +, ... +}: let inherit (config.networking) ports; - cfgdir = pkgs.stdenvNoCC.mkDerivation { - name = "esphome-config"; - src = ./devices; - dontBuild = true; - installPhase = '' - mkdir $out - cp -r * $out - ''; - }; in { sops.secrets.esphome = { sopsFile = ../../secrets.yaml; + restartUnits = [ config.systemd.services.esphome.name ]; }; - services.esphome = { + jalr.esphome = { enable = true; - address = "127.0.0.1"; port = ports.esphome.tcp; - package = pkgs.esphome; - }; - - systemd.services.esphome = { - environment = { - "PLATFORMIO_CORE_DIR" = lib.mkForce "/tmp/.platformio"; - }; - serviceConfig = { - BindPaths = [ - "/var/lib/esphome" - "/var/lib/private/esphome" - ]; - BindReadOnlyPaths = [ - "/nix/store" - "${cfgdir}" - ]; - DeviceAllow = [ - "char-ttyACM rw" - "char-ttyAMA rw" - "char-ttyUSB rw" - ]; - ExecStartPre = [ - "${pkgs.rsync}/bin/rsync -a --delete --exclude=.esphome --exclude=.platformio --exclude=.gitignore '${cfgdir}/' '/var/lib/esphome/'" - "${pkgs.coreutils}/bin/ln -snf '%d/secrets.yaml' '/var/lib/esphome/secrets.yaml'" - ]; - LoadCredential = "secrets.yaml:${config.sops.secrets.esphome.path}"; - PrivateTmp = true; - RootDirectory = "/run/esphome"; - RuntimeDirectory = "esphome"; - StateDirectory = "esphome"; - SupplementaryGroups = [ "dialout" ]; - WorkingDirectory = lib.mkForce "/tmp"; + secretsFile = config.sops.secrets.esphome.path; + configDir = pkgs.stdenvNoCC.mkDerivation { + name = "esphome-config"; + src = ./devices; + dontBuild = true; + installPhase = '' + mkdir $out + cp -r * $out + ''; }; }; } diff --git a/hosts/aluminium/services/esphome/devices/.env b/hosts/aluminium/services/esphome/devices/.env new file mode 100644 index 0000000..640bd9c --- /dev/null +++ b/hosts/aluminium/services/esphome/devices/.env @@ -0,0 +1,2 @@ +ESPHOME_HOST="jalr-k.duckdns.org" +ESPHOME_SECRETS_FILE="esphome_${ESPHOME_HOST}_secrets.yaml" diff --git a/hosts/aluminium/services/esphome/devices/.gitignore b/hosts/aluminium/services/esphome/devices/.gitignore new file mode 100644 index 0000000..d8b4157 --- /dev/null +++ b/hosts/aluminium/services/esphome/devices/.gitignore @@ -0,0 +1,5 @@ +# Gitignore settings for ESPHome +# This is an example and may include too much for your use-case. +# You can modify this file to suit your needs. +/.esphome/ +/secrets.yaml diff --git a/hosts/aluminium/services/esphome/devices/justfile b/hosts/aluminium/services/esphome/devices/justfile new file mode 120000 index 0000000..68d1c45 --- /dev/null +++ b/hosts/aluminium/services/esphome/devices/justfile @@ -0,0 +1 @@ +../../../../../modules/esphome/devices/justfile \ No newline at end of file diff --git a/hosts/iron/services/esphome/default.nix b/hosts/iron/services/esphome/default.nix index 8e6ce2b..1f4c754 100644 --- a/hosts/iron/services/esphome/default.nix +++ b/hosts/iron/services/esphome/default.nix @@ -1,24 +1,9 @@ -{ lib -, pkgs +{ pkgs , config , ... }: let inherit (config.networking) ports; - cfgdir = pkgs.stdenvNoCC.mkDerivation { - name = "esphome-config"; - src = ./devices; - dontBuild = true; - installPhase = '' - mkdir $out - cp -r * $out - ''; - }; - cfg = config.services.esphome; - esphomeParams = - if cfg.enableUnixSocket - then "--socket /run/esphome/esphome.sock" - else "--address ${cfg.address} --port ${toString cfg.port}"; in { sops.secrets.esphome = { @@ -26,72 +11,18 @@ in restartUnits = [ config.systemd.services.esphome.name ]; }; - services.esphome = { + jalr.esphome = { enable = true; - address = "127.0.0.1"; port = ports.esphome.tcp; - package = pkgs.esphome; - }; - - systemd.services.esphome = { - environment = { - "PLATFORMIO_CORE_DIR" = lib.mkForce "/var/cache/esphome/.platformio"; - }; - serviceConfig = { - BindReadOnlyPaths = [ - "/nix/store" - "%d/secrets.yaml:/run/esphome/config/secrets.yaml" - "/etc/resolv.conf" - "/etc/ssl" - "/etc/static/ssl" - ]; - TemporaryFileSystem = [ - "/var/lib" - ]; - ExecPaths = [ - "-+/var/cache/esphome/.platformio/packages/" - ]; - DeviceAllow = [ - "char-ttyACM rw" - "char-ttyAMA rw" - "char-ttyUSB rw" - ]; - ExecStartPre = [ - (pkgs.writeShellScript "esphome-exec-start-pre" '' - if ! [ -d "$CACHE_DIRECTORY/.platformio/packages" ]; then - mkdir -p "$CACHE_DIRECTORY/.platformio/packages" - exit 1 - fi - mkdir -p "$CACHE_DIRECTORY/.esphome" - for linked in \ - .esphome \ - .gitignore - do - ln -s "$CACHE_DIRECTORY/$linked" "/run/esphome/config/$linked" - done - ${pkgs.rsync}/bin/rsync \ - -a \ - --delete \ - --checksum \ - --exclude secrets.yaml \ - --exclude=.esphome \ - --exclude=.platformio \ - --exclude=.gitignore \ - '${cfgdir}/' /run/esphome/config/ - '') - ]; - ExecStart = lib.mkForce "${cfg.package}/bin/esphome dashboard ${esphomeParams} /run/esphome/config"; - LoadCredential = "secrets.yaml:${config.sops.secrets.esphome.path}"; - PrivateTmp = true; - RootDirectory = "%t/esphome/chroot"; - RuntimeDirectory = [ - "esphome/chroot" - "esphome/config" - ]; - StateDirectory = lib.mkForce [ ]; - CacheDirectory = "esphome"; - SupplementaryGroups = [ "dialout" ]; - WorkingDirectory = lib.mkForce "/run/esphome/config"; + secretsFile = config.sops.secrets.esphome.path; + configDir = pkgs.stdenvNoCC.mkDerivation { + name = "esphome-config"; + src = ./devices; + dontBuild = true; + installPhase = '' + mkdir $out + cp -r * $out + ''; }; }; } diff --git a/hosts/iron/services/esphome/devices/.env b/hosts/iron/services/esphome/devices/.env index 2eee41c..10c24e2 100644 --- a/hosts/iron/services/esphome/devices/.env +++ b/hosts/iron/services/esphome/devices/.env @@ -1,2 +1,2 @@ -ESPHOME_HOST="192.168.42.1" +ESPHOME_HOST="jalr-bw.duckdns.org" ESPHOME_SECRETS_FILE="esphome_${ESPHOME_HOST}_secrets.yaml" diff --git a/hosts/iron/services/esphome/devices/justfile b/hosts/iron/services/esphome/devices/justfile deleted file mode 100644 index fb628ca..0000000 --- a/hosts/iron/services/esphome/devices/justfile +++ /dev/null @@ -1,17 +0,0 @@ -import '../../../../../justfile' -set dotenv-load - -download: - rsync \ - -r \ - --rsync-path='sudo rsync' \ - --exclude '/build' \ - --exclude '/.esphome' \ - --exclude '.gitignore' \ - --exclude 'secrets.yaml' \ - 192.168.42.1:/var/lib/esphome/ ./ - -download-secrets: - umask 0077 && ssh 192.168.42.1 sudo cat /run/secrets/esphome > "/dev/shm/${ESPHOME_SECRETS_FILE}" - ln -sf "/dev/shm/${ESPHOME_SECRETS_FILE}" "{{justfile_directory()}}/secrets.yaml" - diff --git a/hosts/iron/services/esphome/devices/justfile b/hosts/iron/services/esphome/devices/justfile new file mode 120000 index 0000000..68d1c45 --- /dev/null +++ b/hosts/iron/services/esphome/devices/justfile @@ -0,0 +1 @@ +../../../../../modules/esphome/devices/justfile \ No newline at end of file diff --git a/modules/default.nix b/modules/default.nix index ff6f458..80aac79 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -24,6 +24,7 @@ ./debug.nix ./dji-goggles.nix ./dns.nix + ./esphome ./fish.nix ./fonts.nix ./gnome.nix diff --git a/modules/esphome/default.nix b/modules/esphome/default.nix new file mode 100644 index 0000000..9bf4609 --- /dev/null +++ b/modules/esphome/default.nix @@ -0,0 +1,100 @@ +{ lib +, pkgs +, config +, ... +}: +let + cfg = config.jalr.esphome; + esphomeParams = + if config.services.esphome.enableUnixSocket + then "--socket /run/esphome/esphome.sock" + else "--address ${config.services.esphome.address} --port ${toString config.services.esphome.port}"; +in +{ + options.jalr.esphome = with lib; with lib.types; { + enable = mkEnableOption "ESPHome"; + port = mkOption { + description = "TCP port for esphome dashboard."; + type = port; + }; + configDir = mkOption { + type = path; + description = "Location of the device configuration"; + }; + secretsFile = mkOption { + type = path; + description = "Location of the secrets file"; + }; + }; + + config = lib.mkIf cfg.enable { + services.esphome = { + enable = true; + address = "127.0.0.1"; + inherit (cfg) port; + package = pkgs.esphome; + }; + + systemd.services.esphome = { + environment = { + "PLATFORMIO_CORE_DIR" = lib.mkForce "/var/cache/esphome/.platformio"; + }; + serviceConfig = { + BindReadOnlyPaths = [ + "/nix/store" + "%d/secrets.yaml:/run/esphome/config/secrets.yaml" + "/etc/resolv.conf" + "/etc/ssl" + "/etc/static/ssl" + ]; + TemporaryFileSystem = [ + "/var/lib" + ]; + ExecPaths = [ + "-+/var/cache/esphome/.platformio/packages/" + ]; + DeviceAllow = [ + "char-ttyACM rw" + "char-ttyAMA rw" + "char-ttyUSB rw" + ]; + ExecStartPre = [ + (pkgs.writeShellScript "esphome-exec-start-pre" '' + if ! [ -d "$CACHE_DIRECTORY/.platformio/packages" ]; then + mkdir -p "$CACHE_DIRECTORY/.platformio/packages" + exit 1 + fi + mkdir -p "$CACHE_DIRECTORY/.esphome" + for linked in \ + .esphome \ + .gitignore + do + ln -s "$CACHE_DIRECTORY/$linked" "/run/esphome/config/$linked" + done + ${pkgs.rsync}/bin/rsync \ + -a \ + --delete \ + --checksum \ + --exclude secrets.yaml \ + --exclude=.esphome \ + --exclude=.platformio \ + --exclude=.gitignore \ + '${cfg.configDir}/' /run/esphome/config/ + '') + ]; + ExecStart = lib.mkForce "${config.services.esphome.package}/bin/esphome dashboard ${esphomeParams} /run/esphome/config"; + LoadCredential = "secrets.yaml:${cfg.secretsFile}"; + PrivateTmp = true; + RootDirectory = "%t/esphome/chroot"; + RuntimeDirectory = [ + "esphome/chroot" + "esphome/config" + ]; + StateDirectory = lib.mkForce [ ]; + CacheDirectory = "esphome"; + SupplementaryGroups = [ "dialout" ]; + WorkingDirectory = lib.mkForce "/run/esphome/config"; + }; + }; + }; +} diff --git a/modules/esphome/devices/justfile b/modules/esphome/devices/justfile new file mode 100644 index 0000000..2c86b69 --- /dev/null +++ b/modules/esphome/devices/justfile @@ -0,0 +1,17 @@ +import '../../../../../justfile' +set dotenv-load + +download: + rsync \ + -r \ + --rsync-path='sudo rsync' \ + --exclude '/build' \ + --exclude '/.esphome' \ + --exclude '.gitignore' \ + --exclude 'secrets.yaml' \ + ${ESPHOME_HOST}:/var/lib/esphome/ ./ + +download-secrets: + umask 0077 && ssh ${ESPHOME_HOST} sudo cat /run/secrets/esphome > "/dev/shm/${ESPHOME_SECRETS_FILE}" + ln -sf "/dev/shm/${ESPHOME_SECRETS_FILE}" "{{justfile_directory()}}/secrets.yaml" + From 17b417ddb27e11c4c5d2590699f0ef10fce2be5b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 4 Jun 2025 11:00:27 +0200 Subject: [PATCH 460/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/a894f2811e1ee8d10c50560551e50d6ab3c392ba?narHash=sha256-AzlJCKaM4wbEyEpV3I/PUq5mHnib2ryEy32c%2Bqfj6xk%3D' (2025-05-26) → 'github:nix-community/disko/58d6e5a83fff9982d57e0a0a994d4e5c0af441e4?narHash=sha256-/CtyLVfNaFP7PrOPrTEuGOJBIhcBKVQ91KiEbtXJi0A%3D' (2025-06-02) • Updated input 'home-manager': 'github:nix-community/home-manager/83665c39fa688bd6a1f7c43cf7997a70f6a109f9?narHash=sha256-GaBRgxjWO1bAQa8P2%2BFDxG4ANBVhjnSjBms096qQdxo%3D' (2025-05-26) → 'github:nix-community/home-manager/282e1e029cb6ab4811114fc85110613d72771dea?narHash=sha256-RMhjnPKWtCoIIHiuR9QKD7xfsKb3agxzMfJY8V9MOew%3D' (2025-05-31) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/11f2d9ea49c3e964315215d6baa73a8d42672f06?narHash=sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg%3D' (2025-05-22) → 'github:nixos/nixos-hardware/fc7c4714125cfaa19b048e8aaf86b9c53e04d853?narHash=sha256-HEu2gTct7nY0tAPRgBtqYepallryBKR1U8B4v2zEEqA%3D' (2025-06-03) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/7c43f080a7f28b2774f3b3f43234ca11661bf334?narHash=sha256-rqc2RKYTxP3tbjA%2BPB3VMRQNnjesrT0pEofXQTrMsS8%3D' (2025-05-25) → 'github:nixos/nixpkgs/10d7f8d34e5eb9c0f9a0485186c1ca691d2c5922?narHash=sha256-Hb4iMhIbjX45GcrgOp3b8xnyli%2BysRPqAgZ/LZgyT5k%3D' (2025-06-02) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/cb97c2be9ce0bedbef5169d3defd485a21a34da7?narHash=sha256-DaxlBnIme%2Bcdz05dXZP8NxyAyqvXPHYzOBGfh7L8bhU%3D' (2025-05-26) → 'github:NixOS/nixpkgs/adec134fc27c6c2b698125c7ab3c20b864c11e51?narHash=sha256-sM9h84zlsx/r8303N08g1bCeE/EBERT0z%2BaZ%2BcB%2BOy0%3D' (2025-06-04) • Updated input 'nur': 'github:nix-community/NUR/57a344633301a9f55bc46663e4843a66fbac89e2?narHash=sha256-agITW8EIoypTJGEZi6nu4hzWd%2BiiwZ1vOGpUaaeGFQA%3D' (2025-05-26) → 'github:nix-community/NUR/dfd9cec176e90b39f42e0d69e239152cf450ba11?narHash=sha256-j5kx7r5zX8sciGoKKSXU2Zt4JdheomomMad0Napp9zE%3D' (2025-06-04) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/62b852f6c6742134ade1abdd2a21685fd617a291?narHash=sha256-R5HJFflOfsP5FBtk%2BzE8FpL8uqE7n62jqOsADvVshhE%3D' (2025-05-25) → 'github:nixos/nixpkgs/c2a03962b8e24e669fb37b7df10e7c79531ff1a4?narHash=sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj%2BQ%3D' (2025-06-03) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index af7d212..55e660a 100644 --- a/flake.lock +++ b/flake.lock @@ -48,11 +48,11 @@ ] }, "locked": { - "lastModified": 1748225455, - "narHash": "sha256-AzlJCKaM4wbEyEpV3I/PUq5mHnib2ryEy32c+qfj6xk=", + "lastModified": 1748832438, + "narHash": "sha256-/CtyLVfNaFP7PrOPrTEuGOJBIhcBKVQ91KiEbtXJi0A=", "owner": "nix-community", "repo": "disko", - "rev": "a894f2811e1ee8d10c50560551e50d6ab3c392ba", + "rev": "58d6e5a83fff9982d57e0a0a994d4e5c0af441e4", "type": "github" }, "original": { @@ -226,11 +226,11 @@ ] }, "locked": { - "lastModified": 1748226808, - "narHash": "sha256-GaBRgxjWO1bAQa8P2+FDxG4ANBVhjnSjBms096qQdxo=", + "lastModified": 1748665073, + "narHash": "sha256-RMhjnPKWtCoIIHiuR9QKD7xfsKb3agxzMfJY8V9MOew=", "owner": "nix-community", "repo": "home-manager", - "rev": "83665c39fa688bd6a1f7c43cf7997a70f6a109f9", + "rev": "282e1e029cb6ab4811114fc85110613d72771dea", "type": "github" }, "original": { @@ -365,11 +365,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1747900541, - "narHash": "sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg=", + "lastModified": 1748942041, + "narHash": "sha256-HEu2gTct7nY0tAPRgBtqYepallryBKR1U8B4v2zEEqA=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "11f2d9ea49c3e964315215d6baa73a8d42672f06", + "rev": "fc7c4714125cfaa19b048e8aaf86b9c53e04d853", "type": "github" }, "original": { @@ -381,11 +381,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1748162331, - "narHash": "sha256-rqc2RKYTxP3tbjA+PB3VMRQNnjesrT0pEofXQTrMsS8=", + "lastModified": 1748889542, + "narHash": "sha256-Hb4iMhIbjX45GcrgOp3b8xnyli+ysRPqAgZ/LZgyT5k=", "owner": "nixos", "repo": "nixpkgs", - "rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334", + "rev": "10d7f8d34e5eb9c0f9a0485186c1ca691d2c5922", "type": "github" }, "original": { @@ -413,11 +413,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1748289113, - "narHash": "sha256-DaxlBnIme+cdz05dXZP8NxyAyqvXPHYzOBGfh7L8bhU=", + "lastModified": 1749027218, + "narHash": "sha256-sM9h84zlsx/r8303N08g1bCeE/EBERT0z+aZ+cB+Oy0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cb97c2be9ce0bedbef5169d3defd485a21a34da7", + "rev": "adec134fc27c6c2b698125c7ab3c20b864c11e51", "type": "github" }, "original": { @@ -429,11 +429,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1748190013, - "narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=", + "lastModified": 1748929857, + "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", "owner": "nixos", "repo": "nixpkgs", - "rev": "62b852f6c6742134ade1abdd2a21685fd617a291", + "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", "type": "github" }, "original": { @@ -450,11 +450,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1748288788, - "narHash": "sha256-agITW8EIoypTJGEZi6nu4hzWd+iiwZ1vOGpUaaeGFQA=", + "lastModified": 1749027402, + "narHash": "sha256-j5kx7r5zX8sciGoKKSXU2Zt4JdheomomMad0Napp9zE=", "owner": "nix-community", "repo": "NUR", - "rev": "57a344633301a9f55bc46663e4843a66fbac89e2", + "rev": "dfd9cec176e90b39f42e0d69e239152cf450ba11", "type": "github" }, "original": { From 6da10bd93e798eed8d18220c4b6fbd5c5c737146 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 4 Jun 2025 11:21:35 +0200 Subject: [PATCH 461/562] Fix max brightness --- hosts/copper/services/illuminanced.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/copper/services/illuminanced.nix b/hosts/copper/services/illuminanced.nix index 877eaa7..dde4c64 100644 --- a/hosts/copper/services/illuminanced.nix +++ b/hosts/copper/services/illuminanced.nix @@ -41,7 +41,7 @@ let illuminance_4 = 200; light_4 = 75; illuminance_5 = 255; - light_5 = 100; + light_5 = 99; }; }; configFile = tomlFormat.generate "illuminanced.toml" cfg; From add7a875b721315f9945046a9f6071e02ed128fd Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 4 Jun 2025 13:47:32 +0200 Subject: [PATCH 462/562] Use official nix flake for vesc-tool --- flake.lock | 97 +++++++++++++++++++++++++++++++- flake.nix | 8 ++- pkgs/default.nix | 2 - pkgs/vesc-tool/firmware.nix | 44 --------------- pkgs/vesc-tool/tool.nix | 44 --------------- users/jalr/modules/vesc-tool.nix | 6 ++ 6 files changed, 109 insertions(+), 92 deletions(-) delete mode 100644 pkgs/vesc-tool/firmware.nix delete mode 100644 pkgs/vesc-tool/tool.nix diff --git a/flake.lock b/flake.lock index 55e660a..31f18db 100644 --- a/flake.lock +++ b/flake.lock @@ -26,6 +26,23 @@ "url": "https://git.jalr.de/jalr/asterisk-sounds-de" } }, + "bldcSrc": { + "flake": false, + "locked": { + "lastModified": 1733324381, + "narHash": "sha256-ui9N8QSog1G5zyK7yRrD0Xl+Y2CZhvvhBkaJuQZ2qZw=", + "owner": "vedderb", + "repo": "bldc", + "rev": "a0d40e2c5a42c810888d8c379307e6b0a118a125", + "type": "github" + }, + "original": { + "owner": "vedderb", + "ref": "release_6_05", + "repo": "bldc", + "type": "github" + } + }, "crane": { "locked": { "lastModified": 1731098351, @@ -427,6 +444,22 @@ "type": "github" } }, + "nixpkgsOld": { + "locked": { + "lastModified": 1748037224, + "narHash": "sha256-92vihpZr6dwEMV6g98M5kHZIttrWahb9iRPBm1atcPk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f09dede81861f3a83f7f06641ead34f02f37597f", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1748929857, @@ -443,6 +476,22 @@ "type": "github" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1735554305, + "narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nur": { "inputs": { "flake-parts": "flake-parts_2", @@ -533,7 +582,8 @@ "nixpkgsMaster": "nixpkgsMaster", "nur": "nur", "poetry2nix": "poetry2nix", - "sops-nix": "sops-nix" + "sops-nix": "sops-nix", + "vesc-tool": "vesc-tool" } }, "rust-overlay": { @@ -648,6 +698,51 @@ "repo": "treefmt-nix", "type": "github" } + }, + "treefmt-nix_3": { + "inputs": { + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1744961264, + "narHash": "sha256-aRmUh0AMwcbdjJHnytg1e5h5ECcaWtIFQa6d9gI85AI=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "8d404a69efe76146368885110f29a2ca3700bee6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "vesc-tool": { + "inputs": { + "bldcSrc": "bldcSrc", + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgsOld": "nixpkgsOld", + "treefmt-nix": "treefmt-nix_3" + }, + "locked": { + "lastModified": 1748618178, + "narHash": "sha256-SXG7ukrSkNW7SF0VJpSBHR60aAGBVYJ2mFQWhSFuVa0=", + "owner": "vedderb", + "repo": "vesc_tool", + "rev": "b71ad9fcfb088350d5eadeea29292de3e5a06bb8", + "type": "github" + }, + "original": { + "owner": "vedderb", + "ref": "master", + "repo": "vesc_tool", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 3d0937c..1f0eb0b 100644 --- a/flake.nix +++ b/flake.nix @@ -63,6 +63,12 @@ nixpkgs.follows = "nixpkgs"; }; }; + + vesc-tool = { + url = "github:vedderb/vesc_tool/master"; + inputs.flake-utils.follows = "flake-utils"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = { self @@ -202,7 +208,7 @@ }; }) ] ++ [ - { nixpkgs.overlays = [ nur.overlays.default ]; } + { nixpkgs.overlays = [ nur.overlays.default inputs.vesc-tool.overlays.default ]; } home-manager.nixosModules.home-manager inputs.asterisk-sounds-de.nixosModules.default inputs.disko.nixosModules.disko diff --git a/pkgs/default.nix b/pkgs/default.nix index 7222cf4..de3d6d4 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -23,8 +23,6 @@ in }; pomodoro-timer = callPackage ./pomodoro-timer { }; tabbed-box-maker = callPackage ./tabbed-box-maker { }; - vesc-firmware = callPackage ./vesc-tool/firmware.nix { }; - vesc-tool = callPackage ./vesc-tool/tool.nix { }; jalr = prev.recurseIntoAttrs { contact = callPackage ./contact-page { }; }; diff --git a/pkgs/vesc-tool/firmware.nix b/pkgs/vesc-tool/firmware.nix deleted file mode 100644 index dba61cf..0000000 --- a/pkgs/vesc-tool/firmware.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ stdenv -, fetchFromGitHub -, gcc-arm-embedded-7 -, python311 -, writeShellScriptBin -}: - -stdenv.mkDerivation rec { - pname = "vesc-firmware"; - version = "master"; - - src = fetchFromGitHub { - owner = "vedderb"; - repo = "bldc"; - rev = "b6e53d3f28e9fd7a54b266c149abbf8a1c23f80a"; - sha256 = "4Q0sAEglXONL6InlVfwVKtQ2ZXKGhfrVLBevnWyjXZ0="; - fetchSubmodules = true; - }; - - nativeBuildInputs = [ - gcc-arm-embedded-7 - python311 - (writeShellScriptBin "git" '' - if [ "$*" != "rev-parse --short HEAD" ]; then - exit 1 - fi - echo "${src.rev}" - '') - ]; - - buildCommand = '' - cp -r $src bldc - ( - cd bldc - chmod +w . - # print targets: - # make; false - make -j $NIX_BUILD_CORES fw_410 fw_60_mk3 - python package_firmware.py - ) - mkdir -p $out - cp --recursive --target-directory=$out bldc/package/* - ''; -} diff --git a/pkgs/vesc-tool/tool.nix b/pkgs/vesc-tool/tool.nix deleted file mode 100644 index b20d1b2..0000000 --- a/pkgs/vesc-tool/tool.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ stdenv -, fetchFromGitHub -, libsForQt5 -, vesc-firmware -, qt5 -}: - -stdenv.mkDerivation { - pname = "vesc_tool"; - version = "master"; - - src = fetchFromGitHub { - owner = "vedderb"; - repo = "vesc_tool"; - rev = "033c95697ec970413ff5c1dbb1988758563d630b"; - sha256 = "LIIE3Z5eoU6mUXmudbRr1iLA3l7338/CsSK8W/iwgf0="; - fetchSubmodules = true; - }; - - nativeBuildInputs = [ - libsForQt5.qmake - qt5.wrapQtAppsHook - ]; - - propagatedBuildInputs = with qt5; [ - qtconnectivity - qtgamepad - qtlocation - qtquickcontrols2 - qtserialport - ]; - - dontConfigure = true; - - buildPhase = '' - cp -r ${vesc-firmware}/* res/firmwares/ - qmake -config release "CONFIG += release_lin build_platinum" - make clean - make -j $NIX_BUILD_CORES - rm -rf build/lin/obj - mkdir -p $out/bin - cp build/lin/* $out/bin - ''; -} diff --git a/users/jalr/modules/vesc-tool.nix b/users/jalr/modules/vesc-tool.nix index 81ac31d..ec8682c 100644 --- a/users/jalr/modules/vesc-tool.nix +++ b/users/jalr/modules/vesc-tool.nix @@ -2,4 +2,10 @@ lib.mkIf nixosConfig.jalr.gui.enable { home.packages = with pkgs; [ vesc-tool ]; + xdg.dataFile."VESC/firmware".source = pkgs.bldc-fw.override { + fwBoards = [ + "410" + "60_mk3" + ]; + }; } From cabcb060f37cfe004064cfb054d2bb3337ae8210 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 4 Jun 2025 14:42:06 +0200 Subject: [PATCH 463/562] Remove signald service The signald project is unmaintained and has long been incompatible with the official Signal servers. --- modules/matrix/mautrix-signal.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/matrix/mautrix-signal.nix b/modules/matrix/mautrix-signal.nix index e00ec3a..228d4e9 100644 --- a/modules/matrix/mautrix-signal.nix +++ b/modules/matrix/mautrix-signal.nix @@ -43,8 +43,4 @@ lib.mkIf cfg.mautrix-signal.enable { }; } // cfg.mautrix-signal.settings; }; - - services.signald = { - enable = true; - }; } From 0cf7d2437a727efd32424de22fa6f6250eac5a0a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 6 Jun 2025 11:29:11 +0200 Subject: [PATCH 464/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/58d6e5a83fff9982d57e0a0a994d4e5c0af441e4?narHash=sha256-/CtyLVfNaFP7PrOPrTEuGOJBIhcBKVQ91KiEbtXJi0A%3D' (2025-06-02) → 'github:nix-community/disko/17d08c65c241b1d65b3ddf79e3fac1ddc870b0f6?narHash=sha256-W8KiJIrVwmf43JOPbbTu5lzq%2BcmdtRqaNbOsZigjioY%3D' (2025-06-06) • Updated input 'home-manager': 'github:nix-community/home-manager/282e1e029cb6ab4811114fc85110613d72771dea?narHash=sha256-RMhjnPKWtCoIIHiuR9QKD7xfsKb3agxzMfJY8V9MOew%3D' (2025-05-31) → 'github:nix-community/home-manager/7aae0ee71a17b19708b93b3ed448a1a0952bf111?narHash=sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg%3D' (2025-06-05) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/fc7c4714125cfaa19b048e8aaf86b9c53e04d853?narHash=sha256-HEu2gTct7nY0tAPRgBtqYepallryBKR1U8B4v2zEEqA%3D' (2025-06-03) → 'github:nixos/nixos-hardware/4602f7e1d3f197b3cb540d5accf5669121629628?narHash=sha256-W5GKQHgunda/OP9sbKENBZhMBDNu2QahoIPwnsF6CeM%3D' (2025-06-06) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/10d7f8d34e5eb9c0f9a0485186c1ca691d2c5922?narHash=sha256-Hb4iMhIbjX45GcrgOp3b8xnyli%2BysRPqAgZ/LZgyT5k%3D' (2025-06-02) → 'github:nixos/nixpkgs/4792576cb003c994bd7cc1edada3129def20b27d?narHash=sha256-DJcgJMekoxVesl9kKjfLPix2Nbr42i7cpEHJiTnBUwU%3D' (2025-06-05) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/adec134fc27c6c2b698125c7ab3c20b864c11e51?narHash=sha256-sM9h84zlsx/r8303N08g1bCeE/EBERT0z%2BaZ%2BcB%2BOy0%3D' (2025-06-04) → 'github:NixOS/nixpkgs/ebd3748a6b97de45844aa62701b81df35c5c1269?narHash=sha256-LEZbj%2BVD/AR/dWL5ns1gMwzMvp4mLlv4WalxmZTKy5Y%3D' (2025-06-06) • Updated input 'nur': 'github:nix-community/NUR/dfd9cec176e90b39f42e0d69e239152cf450ba11?narHash=sha256-j5kx7r5zX8sciGoKKSXU2Zt4JdheomomMad0Napp9zE%3D' (2025-06-04) → 'github:nix-community/NUR/17efc5275a8f21e2b48f39ecade74cdaff3ba411?narHash=sha256-haiPLogZwEFQTrIarZD92LUK7ScIcMbtEzPlcC988Qk%3D' (2025-06-06) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 31f18db..6c970ea 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1748832438, - "narHash": "sha256-/CtyLVfNaFP7PrOPrTEuGOJBIhcBKVQ91KiEbtXJi0A=", + "lastModified": 1749200714, + "narHash": "sha256-W8KiJIrVwmf43JOPbbTu5lzq+cmdtRqaNbOsZigjioY=", "owner": "nix-community", "repo": "disko", - "rev": "58d6e5a83fff9982d57e0a0a994d4e5c0af441e4", + "rev": "17d08c65c241b1d65b3ddf79e3fac1ddc870b0f6", "type": "github" }, "original": { @@ -243,11 +243,11 @@ ] }, "locked": { - "lastModified": 1748665073, - "narHash": "sha256-RMhjnPKWtCoIIHiuR9QKD7xfsKb3agxzMfJY8V9MOew=", + "lastModified": 1749154018, + "narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=", "owner": "nix-community", "repo": "home-manager", - "rev": "282e1e029cb6ab4811114fc85110613d72771dea", + "rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111", "type": "github" }, "original": { @@ -382,11 +382,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1748942041, - "narHash": "sha256-HEu2gTct7nY0tAPRgBtqYepallryBKR1U8B4v2zEEqA=", + "lastModified": 1749195551, + "narHash": "sha256-W5GKQHgunda/OP9sbKENBZhMBDNu2QahoIPwnsF6CeM=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "fc7c4714125cfaa19b048e8aaf86b9c53e04d853", + "rev": "4602f7e1d3f197b3cb540d5accf5669121629628", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1748889542, - "narHash": "sha256-Hb4iMhIbjX45GcrgOp3b8xnyli+ysRPqAgZ/LZgyT5k=", + "lastModified": 1749086602, + "narHash": "sha256-DJcgJMekoxVesl9kKjfLPix2Nbr42i7cpEHJiTnBUwU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "10d7f8d34e5eb9c0f9a0485186c1ca691d2c5922", + "rev": "4792576cb003c994bd7cc1edada3129def20b27d", "type": "github" }, "original": { @@ -430,11 +430,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1749027218, - "narHash": "sha256-sM9h84zlsx/r8303N08g1bCeE/EBERT0z+aZ+cB+Oy0=", + "lastModified": 1749201760, + "narHash": "sha256-LEZbj+VD/AR/dWL5ns1gMwzMvp4mLlv4WalxmZTKy5Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "adec134fc27c6c2b698125c7ab3c20b864c11e51", + "rev": "ebd3748a6b97de45844aa62701b81df35c5c1269", "type": "github" }, "original": { @@ -499,11 +499,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1749027402, - "narHash": "sha256-j5kx7r5zX8sciGoKKSXU2Zt4JdheomomMad0Napp9zE=", + "lastModified": 1749201010, + "narHash": "sha256-haiPLogZwEFQTrIarZD92LUK7ScIcMbtEzPlcC988Qk=", "owner": "nix-community", "repo": "NUR", - "rev": "dfd9cec176e90b39f42e0d69e239152cf450ba11", + "rev": "17efc5275a8f21e2b48f39ecade74cdaff3ba411", "type": "github" }, "original": { From 6169090c8e8a46855a5c6003a298f57b32904768 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 12 Jun 2025 00:06:08 +0200 Subject: [PATCH 465/562] Rename kitchen ceiling light --- hosts/iron/secrets.yaml | 12 ++++-------- hosts/iron/services/dnsmasq.nix | 2 +- .../{yeelight-meteorite.yaml => kuechentisch.yaml} | 8 ++++---- 3 files changed, 9 insertions(+), 13 deletions(-) rename hosts/iron/services/esphome/devices/{yeelight-meteorite.yaml => kuechentisch.yaml} (92%) diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 90462d7..54e1ca4 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -11,7 +11,7 @@ dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] -esphome: ENC[AES256_GCM,data:tuv07FGh4ubI40nOISNoW86J1dWg+wgvf7+/pYVBx2qUcquGALTPIoXMz+42PSrXliUvb2ZKnPbeU00cMWZ7kffOznjcQxhCRCnVfpgkIdSDurCWgGzblGzbjVjJ2Ph1mnn8QZ33sztarIFiG25eB7tF5iEL2jajxf/90BMcrF1Vb9NwadGS9Wv8ApfkMgnpSLEJwpyTas5womeA5gJV6dP8UH7BbKRmowu9yKMTtlIONuuquzGlhTsNsQMlO9a8V7HO/L6Km93uSnWE+oudID1gzMXmGKE5tuNuo40xtAS1+v73k6fR6/tA9MCHXiyLwsd34iD5FPPbeS0uBk+JQqlIWqF6PZER22OlqEd6aGCn9jHBjENTsyf9N78sbMYKCWxbrWtV1Zk1JBMHyl1R2dApyFWxy4NLq4O2swqyRPe59AMOPXhQbuNrGd0CKx6vvvVkxB66y5VR289PHyUL8SHUMBPvnVb8katVPNK4qBmucmD1LDVx+HipjRFuZtmTrzprtwQ+wrJTUznP4uyW7Qn1vYy6P6UWfp8U70sqRQnvUJCeMHtIEj9lJGaQYiitEtIcdJJOYYXL1tn7YVyRpHWZMqaeAuMNQcI6qpCJKOyl64wXaljNwb30NU3lpBCsgl3EF+hFkRUKrgPsOOtGxlMHVroptWahs9UlxbgjhpcAh+hiw+GHFPGuSZ5VfQO8MhOZlRTBhwdMT5N0JQO66L2bBF3XO5G1WVOG78Y0/dkv8xKZkfwTmmD8+InLcuPVBRukfm7S1HiwVJ5yN0huMcEfo1dfGbvlzI9uTZuoJtxp/PgZVPxyZDnsn7jZLIY3Ln+eUZDZyk5jdLqPsP9+4TY6F5QN7Tw6xTeIp+GaY0ZdY/KQVVNPBN2TvPBylLlisceyD6xfn5m3hkG1CXRIXKfFvsJfUN0LTd1vJiLTLVXqXu5LUo3BpAcE6U4fbliBX3mPoxk1+7edtLVzD99ho1y58To3kQbwuOkyYgse6DTVhjF0p+cxp+aDB5h/jT2/tmMc7YZAeY52cO7cIbkcOOvQzDyAOj028xPTmteOSnYe3MFq1e5HRTbdRUh0BzHzSN0IH+5HXWhKW6k9PG6l4yaMj3qqSw3IyL97KL9+jLeyUer0CoGyGpd6JYq9nS6WlKYu+GN3HbdMF6TBOyRC3oFQG+jIZGlXNeclDjJ5hJTzYAT7ioYU5EQQw9rl2J2TherLcS+61ZXnn3QXxDThgFhnn0Q+ozb/i31DMhQXCNjsN1SUVOyLpmWkr8CZnpiKaF58Kuz8Pvyk7Ih30GlZKZL74XSV8fz222qXMn4IP7Sb+PU4X/LJyz+/Ml+ktzB+Yt9UB9uwzNdwY1b4w1gUJI40ju6bKIlEEqhiATbMuX1Bio6Dt9NZ5v6Z7eD4VlgvSqJng7kO4YPoYdFykDhugpZ4BKyJRLE/MqT6ZI2WApgIhy6U4fPZTQNWtxHsobSUMvFLSdUprh4VQ9Auqjz1nqNAcVIjA5fPK1C1tEOx1KPEJXaqC6et17wpjt5ajLhB5td12XGIsUClKg4G2hYiyisFM0Z2fDbK4tlhFb/BJ7ZLY4zQudXu4FaeIxoD82zmqiyo78dn3KQK7+rhWsoR+wR6i7Tn9HjXevlcqvuU4D8raSgl3RcUeKnvJK5y6olcpJvbsfd0Lr1AH8MqwFuRDqufAZx0xoRZ1FhkK6ik+lc7XQkUsknIyvnn4rxYHP2GP+A1LaE4lyBqiC7xsj6ar1zjr/W0mB4vhpF5dRMHNsK6JXzHmoYYJxfY+lwlsYSbmwRBOyPO71TCPE6us/CuSJrkqiiRjWltuy/+uvzffLvh3Y+6wRC05aSbui0I4WaUGcRsM7nzH3/kO5bek3Nw7mLeTbqLkk+slKcCUfqdftibHiOxb5xxHWlbI33IG6dgLc/vBpyhvePB73fAAw==,iv:At2BvPMxMrsLEBFdTHacejtCwcCSNccHE4TXLyGKK2I=,tag:r7G2LvBJdbqPvgOxx87ofw==,type:str] +esphome: ENC[AES256_GCM,data:LhouDHIP+zenpFZZWQnXBWsHoM3iGVVnmMbRaZP4lFxdYS1U+WalmBkcfIizbYJ47mhvr8DdhR9u9DNAYqyd8zUeq8PkfPpQNXaaluXF2WwesHatsmJ1A1rL+129qKp+6UCNxoqYmZmJa/eGh8BFLCwFNK3nDpkDyO0RadtQgl7gISHjfcOUKTJZY31wQfqrBWzFhJZWtYZbtu47na7GXUrorkvR4BJ768k4okX8EiSn03kGe/mHiNFs7TGctIvLNiX1AFx6HL24R3LTYH3qcIlcmcn4G/Gp9MGmphWw1FMOWcphNV8xVHSlKTseOJWtQZTldXijvxtKKjgYXeIxuQIfxFrplYnMrapgFE6NyqDPw6cfsQNhDVM1ii3xpYTCKtoDfp9WuQKRPPyiK43IPIIDtXducKUlkJR1e32/s+FUlLcIbPfHiIu4QSC0nsi8Umzfek2bJehnHHzneV99V9bFe1lQLfefP1+UvsN2QTD+xnZ9pqRm7OQA++CwC9rFHMNhxmgqwyBmV7RCu+Bwaa+wrig9XOED5Gq5eDBbTADDl9+BQEh01GpyqKAPnO7ig7bv2eeskY+aj5T98z3FsJKd0QWjv/YPUa4YnmVOX1N289iQ5BzGFkSRfVDNU81m8EXHOFmfpGVxFqCjAGeSiv/smd75HVCPrroPQAvudoMU3z1qshf3UBKu4AyS94w8dcAuAy+Kl37RPp4OrmQDSUOxZKy5XZuXvt7a5PXezCkEjVnnSWl2NidHLR1ZqBPnmRGDjLDRzOLfSwuPT6CC5dwLVDNhIQlz4f6lFtaQS5cBWdxyIn2aPUlrqxz7dKJb8YToXDNsKXqG7Glcy2CX+TdLVbNnbEW/5/5RtgrT4Dag/mZPlSod+T44ysClfarW/ONI6p0UfPMePsC/BEnpBmnO824s7D5QiF6bzwgfeWrShQRJvIY0BaRXFBmkkrkIYNPTgptQjs/vUEGKbATyZTWBSvP4fPAdQYIgkTT8YAKthurMq/Vs8XTB0Z/X1XQdE6oT0YTo+mTbI5vCDD2pu2lVxB68G792QXpZkox6SOc7/w3JG8lUHec3vQJICoZUJw3AXn6YpZP723xczhgTslJzaBb+uBJ6CEEBCjrw0zL/oPDWM9aGou7iMkvEoL2EBSsN7qw7WnFX2NOtV0BxmPOjxSe/PtPowcukQWt6yeenLYnUQ2I3zlV7LhcCmTB8O9zpvDQuaO97f7+oZMWXicfwfdAtLr+I0OJvKdfVN+28CbbVNoRkc0yMrg/94nFOrdTIjDoJqWvs9FNEzH93AuraPv+0eVXMtwN/x/msjTTZD2j/RFg6ZgDRVQ3xpORhBkUdy96aP/OBpzQrrIzyLKDVdKr9ytHMhegVr/VAJdkKq8W/FzBpZQ/iZrX8zXRTLw7wOi2X/N5Zxn7ZmlbtdIOExsTAZ9jdMe1RJcMm1uwu8vyOjZosq7hZTvbdDOPor4WB/qwfZviwKcmpfhmnQmbVEzG3wrd2xpfbpw3xXO7bEhkBFqGq81AsDZ4SizszT15ZAVg5wpmLK+wcQl7XgEdDEK2tMCsEOJRscaDNxgLzB98sFdMZPcMTtrGGB5vl0ixlzome2EjACzAfSZAc2KysjlgSZbZRwhD+czpDt8C4X/3wvGLxEkLLwWlTssYJzodX+1MSiOZ6PgkcV4lvxzq+Hu/dgtnAH/Q3y0kyeKJmvFH8h/hX4XRIGhRNcLccVBqs/xTxIdEBrUk8ptXFKNhGtQAsMBbO57gJL113p0uEUHMQnsxlp8Z/VshYGM0UpshzHnSLzz2Jk5F/hem5GI8kwXQwdpZBSdGyk4YesqbEWkLEYlyEZEiCzNaZG/sfnWL68I8I+MMRYxk3Mj55ncNkGhokue3d054zyIfKA8iz9Vtli8jTQyiyF1Ecpbb/kg==,iv:816FQciVd7jqSqfkPJw768hKSGxlL6oKApXrdGb79u8=,tag:zdgDAkLba+pM3WIGWNaPJA==,type:str] home-assistant: ENC[AES256_GCM,data:wcFMxDdRCHf/shO9v2WaGgrsa9J2WP62xFs=,iv:9ckeIO62cFZUo8fPyQj445CrJVTooNlwLapM/oTsrkk=,tag:mlfxtXDPsB3T79P9BX9oJQ==,type:str] mqtt-users: home-assistant: ENC[AES256_GCM,data:oIjCw7ZnA5iOBmQdW1jcy3QQnpjT32pY,iv:5HFRkXJBdMXQbjk2ubQs3sEy5qEteiqSe2hrNc8+H40=,tag:7B6yI4oCHanE0JE/gHaKnQ==,type:str] @@ -19,10 +19,6 @@ mqtt-users: photoprism: oidc-secret: ENC[AES256_GCM,data:XTAiUiGZJfSZHNbz6fePl3iMDdbxFSE7+SQH2ECRFqlo7w8TAhLyNXBxlEfGvu+8vttbKdkEm0r7132Q4ftOtA==,iv:WGsQXolbtRWIq4EDgODWNmkXdOZCsA9A3Fqoo4lJyec=,tag:5zJftwB5If/RZB3hI0Ly8A==,type:str] sops: - kms: [] - gcp_kms: [] - azure_kv: [] - hc_vault: [] age: - recipient: age1hx7fdu4mcha7kkxe7yevtvs6xgzgaafgenm3drhvr609wlj94sgqm497je enc: | @@ -33,8 +29,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-04-29T22:30:28Z" - mac: ENC[AES256_GCM,data:KhGX9o8J+pJpL12eqLdsBS78UazDda8N2a/LaLRu7qgKd6DiifMxF2JsS3+E4k/9eM70SK9j+HWz+1UvDTaAZrg3qK/SdLEdyvW/kzP+IwhGa03OtLL6p764E7B4gvrxOSki5wO8u+nVfF8IEWwvs0xoWRHVr3Vgu0mn5r1j3A4=,iv:p8UPvrRWE8UMneJa6reIaBUyZt/cOtYh3VTvpnGGfYg=,tag:9iuAHXHnyT/XgYqgocoPUA==,type:str] + lastmodified: "2025-06-11T22:17:21Z" + mac: ENC[AES256_GCM,data:l785PSSvzb/C3n6QnUHc+YTKSRLP/FjGzi0EOersLEFd/XGDy0vzPv5RJzE6475zUt9hHko9324z2woficG84CenjB3+IF0GtTtM8654KlLN5C91n06OrInG2hvOp68j6mAg1x9+XS1OBuNLGXEr7Bt0lkqD31JH6NyWqirQ1/4=,iv:Nuurf42iuTmH4bJ790HbGgB3tThA2/EZQ9JOcns5QeA=,tag:Qh9tsPWiYJAIO3cP430ccg==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- @@ -48,4 +44,4 @@ sops: -----END PGP MESSAGE----- fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted - version: 3.9.4 + version: 3.10.2 diff --git a/hosts/iron/services/dnsmasq.nix b/hosts/iron/services/dnsmasq.nix index ea0f6b2..72b5f61 100644 --- a/hosts/iron/services/dnsmasq.nix +++ b/hosts/iron/services/dnsmasq.nix @@ -27,7 +27,7 @@ in no-hosts = true; addn-hosts = "${pkgs.writeText "hosts.dnsmasq" '' 192.168.42.1 aluminium unifi - 10.20.0.10 yeelight-meteorite.iot.bw.jalr.de + 10.20.0.10 kuechentisch.iot.bw.jalr.de 10.20.0.11 led-panel-schreibtisch.iot.bw.jalr.de ''}"; server = [ diff --git a/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml b/hosts/iron/services/esphome/devices/kuechentisch.yaml similarity index 92% rename from hosts/iron/services/esphome/devices/yeelight-meteorite.yaml rename to hosts/iron/services/esphome/devices/kuechentisch.yaml index 54a5f14..5d0f27a 100644 --- a/hosts/iron/services/esphome/devices/yeelight-meteorite.yaml +++ b/hosts/iron/services/esphome/devices/kuechentisch.yaml @@ -1,6 +1,6 @@ esphome: - name: "yeelight-meteorite" - friendly_name: "Yeelight Meteorite" + name: "kuechentisch" + friendly_name: "Küchentisch" on_boot: then: - light.turn_on: @@ -21,11 +21,11 @@ logger: api: encryption: - key: !secret apikey_yeelight_meteorite + key: !secret apikey_kuechentisch ota: - platform: esphome - password: !secret otapass_yeelight_meteorite + password: !secret otapass_kuechentisch wifi: ssid: !secret wifi_ssid_bw From 8452ae93f51324583259d31252e8a454cf24dc08 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 12 Jun 2025 10:28:52 +0200 Subject: [PATCH 466/562] Remove direnv as it is managed in a dedicated module --- users/jalr/modules/cli/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/users/jalr/modules/cli/default.nix b/users/jalr/modules/cli/default.nix index a0d6ca9..e74edaf 100644 --- a/users/jalr/modules/cli/default.nix +++ b/users/jalr/modules/cli/default.nix @@ -16,7 +16,6 @@ ripgrep unzip ] ++ (if ! nixosConfig.jalr.workstation.enable then [ ] else [ - direnv dnsutils screen speedtest-cli From 1755c502f4320c1d98b4e02b1267d45733c2ab2e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 12 Jun 2025 11:15:42 +0200 Subject: [PATCH 467/562] Replace eza with lsd --- users/jalr/modules/cli/default.nix | 5 ++++- users/jalr/modules/fish.nix | 14 +++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/users/jalr/modules/cli/default.nix b/users/jalr/modules/cli/default.nix index e74edaf..641d02b 100644 --- a/users/jalr/modules/cli/default.nix +++ b/users/jalr/modules/cli/default.nix @@ -24,6 +24,9 @@ yt-dlp ]); - programs.eza.enable = true; + programs.lsd = { + enable = true; + enableFishIntegration = false; + }; }; } diff --git a/users/jalr/modules/fish.nix b/users/jalr/modules/fish.nix index 02ff97b..f929e20 100644 --- a/users/jalr/modules/fish.nix +++ b/users/jalr/modules/fish.nix @@ -28,7 +28,7 @@ } ]; shellAliases = { - ls = if config.programs.eza.enable then "eza --git --icons" else "ls --color=auto"; + ls = if config.programs.lsd.enable then "lsd" else "ls --color=auto"; crontab = "crontab -i"; }; @@ -64,12 +64,12 @@ history --merge >/dev/null 2>&1 # fancy tools - if which eza > /dev/null 2>&1 - abbr --add l eza --icons - abbr --add ll 'eza -l --time-style=long-iso --git --icons' - abbr --add la 'eza -la --time-style=long-iso --git --icons' - abbr --add tree 'eza --tree --icons' - abbr --add llt 'eza -s modified -l --icons' + if which lsd > /dev/null 2>&1 + abbr --add l "lsd" + abbr --add ll "lsd -l --date +'%Y-%m-%d %H:%M:%S'" + abbr --add la "lsd -la --date +'%Y-%m-%d %H:%M:%S'" + abbr --add tree "lsd --tree" + abbr --add llt "lsd -l --timesort --date relative -r" else abbr --add l ls abbr --add ll 'ls -l' From 2be0fee327059ddaf3083eaa9d56a0a290f2620d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 12 Jun 2025 11:33:26 +0200 Subject: [PATCH 468/562] Add lsd colorschemes --- users/jalr/modules/cli/default.nix | 5 ----- users/jalr/modules/default.nix | 1 + users/jalr/modules/dynamic-colors.nix | 6 ++++++ users/jalr/modules/lsd/colors-dark.yaml | 27 ++++++++++++++++++++++++ users/jalr/modules/lsd/colors-light.yaml | 27 ++++++++++++++++++++++++ users/jalr/modules/lsd/default.nix | 13 ++++++++++++ 6 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 users/jalr/modules/lsd/colors-dark.yaml create mode 100644 users/jalr/modules/lsd/colors-light.yaml create mode 100644 users/jalr/modules/lsd/default.nix diff --git a/users/jalr/modules/cli/default.nix b/users/jalr/modules/cli/default.nix index 641d02b..13c5f0b 100644 --- a/users/jalr/modules/cli/default.nix +++ b/users/jalr/modules/cli/default.nix @@ -23,10 +23,5 @@ wget yt-dlp ]); - - programs.lsd = { - enable = true; - enableFishIntegration = false; - }; }; } diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 82d5fab..b308841 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -19,6 +19,7 @@ ./gui.nix ./jameica.nix ./kicad.nix + ./lsd ./mpv.nix ./mute-indicator.nix ./mycli diff --git a/users/jalr/modules/dynamic-colors.nix b/users/jalr/modules/dynamic-colors.nix index 31e1893..0113581 100644 --- a/users/jalr/modules/dynamic-colors.nix +++ b/users/jalr/modules/dynamic-colors.nix @@ -51,6 +51,12 @@ let then [ "/usr/bin/env" "gsettings" "set" "org.gnome.desktop.interface" "gtk-theme" "Adwaita-%scheme%" ] else null; } + { + dir = "~/.config/lsd"; + light = "colors-light.yaml"; + dark = "colors-dark.yaml"; + target = "colors.yaml"; + } ]; dynamic-colors = pkgs.writers.writePython3Bin "dynamic-colors" { } '' import json diff --git a/users/jalr/modules/lsd/colors-dark.yaml b/users/jalr/modules/lsd/colors-dark.yaml new file mode 100644 index 0000000..40165eb --- /dev/null +++ b/users/jalr/modules/lsd/colors-dark.yaml @@ -0,0 +1,27 @@ +user: 125 +group: 136 +permission: + read: 166 + write: 64 + exec: 160 + exec-sticky: 125 + no-access: 245 + octal: 37 + acl: 37 + context: 245 +date: + hour-old: 64 + day-old: 136 + older: 240 +size: + none: 160 + small: 61 + medium: 37 + large: 33 +inode: + valid: 64 + invalid: 160 +links: + valid: 61 + invalid: 240 +tree-edge: 245 diff --git a/users/jalr/modules/lsd/colors-light.yaml b/users/jalr/modules/lsd/colors-light.yaml new file mode 100644 index 0000000..bbbbe59 --- /dev/null +++ b/users/jalr/modules/lsd/colors-light.yaml @@ -0,0 +1,27 @@ +user: 125 +group: 136 +permission: + read: 166 + write: 64 + exec: 160 + exec-sticky: 125 + no-access: 234 + octal: 37 + acl: 37 + context: 235 +date: + hour-old: 64 + day-old: 136 + older: 240 +size: + none: 160 + small: 61 + medium: 37 + large: 33 +inode: + valid: 61 + invalid: 160 +links: + valid: 61 + invalid: 235 +tree-edge: 235 diff --git a/users/jalr/modules/lsd/default.nix b/users/jalr/modules/lsd/default.nix new file mode 100644 index 0000000..efb2ea9 --- /dev/null +++ b/users/jalr/modules/lsd/default.nix @@ -0,0 +1,13 @@ +{ lib, nixosConfig, ... }: + +lib.mkIf nixosConfig.jalr.workstation.enable { + programs.lsd = { + enable = true; + enableFishIntegration = false; + settings = { + color.theme = "custom"; + }; + }; + xdg.configFile."lsd/colors-light.yaml".source = ./colors-light.yaml; + xdg.configFile."lsd/colors-dark.yaml".source = ./colors-dark.yaml; +} From 83e5e56a6b6bac13f445a3f5fb6a04a5b93327f8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 12 Jun 2025 11:56:38 +0200 Subject: [PATCH 469/562] Add lsd icon config --- users/jalr/modules/lsd/default.nix | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/users/jalr/modules/lsd/default.nix b/users/jalr/modules/lsd/default.nix index efb2ea9..5547aee 100644 --- a/users/jalr/modules/lsd/default.nix +++ b/users/jalr/modules/lsd/default.nix @@ -7,6 +7,27 @@ lib.mkIf nixosConfig.jalr.workstation.enable { settings = { color.theme = "custom"; }; + icons = { + extension = { + dxf = "📏"; + flac = "🎶"; + json = "🄹"; + md = "📝"; + mp3 = "🎶"; + opus = "🎶"; + scad = "🔩"; + wav = "🎶"; + yaml = "🅈"; + yml = "🅈"; + zip = "📦"; + }; + name = { + ".envrc" = ""; + Justfile = ""; + justfile = ""; + public = "📢"; + }; + }; }; xdg.configFile."lsd/colors-light.yaml".source = ./colors-light.yaml; xdg.configFile."lsd/colors-dark.yaml".source = ./colors-dark.yaml; From 711c0eb0f0757c968c2e156a55b931e7fb43ee89 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 12 Jun 2025 15:01:31 +0200 Subject: [PATCH 470/562] Replace alacritty with wezterm as alacritty doesn't support ligatures. See https://github.com/alacritty/alacritty/issues/50 --- modules/fonts.nix | 1 + users/jalr/modules/alacritty.nix | 158 -------------------------- users/jalr/modules/default.nix | 2 +- users/jalr/modules/dynamic-colors.nix | 6 - users/jalr/modules/sway/default.nix | 12 +- users/jalr/modules/sway/waybar.nix | 2 +- users/jalr/modules/wezterm.nix | 46 ++++++++ 7 files changed, 55 insertions(+), 172 deletions(-) delete mode 100644 users/jalr/modules/alacritty.nix create mode 100644 users/jalr/modules/wezterm.nix diff --git a/modules/fonts.nix b/modules/fonts.nix index 8abb971..2225251 100644 --- a/modules/fonts.nix +++ b/modules/fonts.nix @@ -3,6 +3,7 @@ { console.font = "Lat2-Terminus16"; fonts.packages = with pkgs; lib.mkIf config.jalr.gui.enable [ + nerd-fonts.fira-code nerd-fonts.iosevka nerd-fonts.iosevka-term nerd-fonts.iosevka-term-slab diff --git a/users/jalr/modules/alacritty.nix b/users/jalr/modules/alacritty.nix deleted file mode 100644 index 4196df8..0000000 --- a/users/jalr/modules/alacritty.nix +++ /dev/null @@ -1,158 +0,0 @@ -{ lib, pkgs, nixosConfig, ... }: -let - solarized = import ./solarized.nix; - tomlFormat = pkgs.formats.toml { }; - - colorschemes = { - # https://github.com/alacritty/alacritty/wiki/Color-schemes#solarized - solarized-dark = { - # Default colors - primary = { - background = solarized.base03.hex; - foreground = solarized.base0.hex; - }; - - # Cursor colors - cursor = { - text = solarized.base03.hex; - cursor = solarized.base0.hex; - }; - - # Normal colors - normal = { - black = solarized.base02.hex; - red = solarized.red.hex; - green = solarized.green.hex; - yellow = solarized.yellow.hex; - blue = solarized.blue.hex; - magenta = solarized.magenta.hex; - cyan = solarized.cyan.hex; - white = solarized.base2.hex; - }; - - # Bright colors - bright = { - black = solarized.base03.hex; - red = solarized.orange.hex; - green = solarized.base01.hex; - yellow = solarized.base00.hex; - blue = solarized.base0.hex; - magenta = solarized.violet.hex; - cyan = solarized.base1.hex; - white = solarized.base3.hex; - }; - }; - - solarized-light = { - # Default colors - primary = { - background = solarized.base3.hex; - foreground = solarized.base00.hex; - }; - - # Cursor colors - cursor = { - text = solarized.base3.hex; - cursor = solarized.base00.hex; - }; - - # Normal colors - normal = { - black = solarized.base02.hex; - red = solarized.red.hex; - green = solarized.green.hex; - yellow = solarized.yellow.hex; - blue = solarized.blue.hex; - magenta = solarized.magenta.hex; - cyan = solarized.cyan.hex; - white = solarized.base2.hex; - }; - - # Bright colors - bright = { - black = solarized.base03.hex; - red = solarized.orange.hex; - green = solarized.base01.hex; - yellow = solarized.base00.hex; - blue = solarized.base0.hex; - magenta = solarized.violet.hex; - cyan = solarized.base1.hex; - white = solarized.base3.hex; - }; - }; - }; - commonSettings = { - font = { - normal = { - family = "Inconsolata for Powerline"; - style = "Regular"; - }; - size = 12; - }; - - mouse.hide_when_typing = true; - - keyboard.bindings = [ - { - key = "F1"; - mods = "Control"; - action = "DecreaseFontSize"; - } - { - key = "F2"; - mods = "Control"; - action = "IncreaseFontSize"; - } - ]; - - bell = { - duration = 100; - color = "#000000"; - }; - - window.dynamic_title = true; - - scrolling.history = 100000; - - window.opacity = 0.9; - }; - settings = { - dark = commonSettings // { - colors = colorschemes.solarized-dark; - }; - light = commonSettings // { - colors = colorschemes.solarized-light; - }; - }; -in -{ - - programs.alacritty = { - inherit (nixosConfig.jalr.gui) enable; - }; - - xdg.configFile = lib.attrsets.mapAttrs' - (colorScheme: cfg: - let name = "alacritty-${colorScheme}.toml"; - in - lib.attrsets.nameValuePair "alacritty/${name}" { - source = tomlFormat.generate name cfg; - target = "alacritty/${name}"; - } - ) - settings; - - programs.fish.functions = { - ssh = { - description = "ssh wrapper function"; - wraps = "ssh"; - body = '' - if [ "$TERM" = alacritty ] - TERM=xterm-256color command ssh $argv - else - command ssh $argv - end - ''; - }; - }; -} diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index b308841..76f8f9e 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -2,7 +2,6 @@ imports = [ ./3d-modeling.nix ./3d-printing.nix - ./alacritty.nix ./ardour.nix ./aws.nix ./cli @@ -43,5 +42,6 @@ ./trilium.nix ./vdirsyncer.nix ./vesc-tool.nix + ./wezterm.nix ]; } diff --git a/users/jalr/modules/dynamic-colors.nix b/users/jalr/modules/dynamic-colors.nix index 0113581..c97e9ed 100644 --- a/users/jalr/modules/dynamic-colors.nix +++ b/users/jalr/modules/dynamic-colors.nix @@ -7,12 +7,6 @@ let done < "$1" ''; applicationConfig = [ - { - dir = "~/.config/alacritty"; - light = "alacritty-light.toml"; - dark = "alacritty-dark.toml"; - target = "alacritty.toml"; - } { dir = "~/.config/wofi"; light = "color-light"; diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index 2d1a004..846c1ae 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -3,18 +3,18 @@ let solarized = import ../solarized.nix; terminalEmulator = - pkgs.writeShellScript "alacritty-sway-cwd" '' - this_alacritty_pid="$(${pkgs.sway}/bin/swaymsg -t get_tree | ${pkgs.jq}/bin/jq -e 'recurse(.nodes[]?) | select((.focused==true) and (.app_id=="Alacritty")).pid')" + pkgs.writeShellScript "wezterm-sway-cwd" '' + this_wezterm_pid="$(${pkgs.sway}/bin/swaymsg -t get_tree --raw | ${pkgs.jq}/bin/jq -e 'recurse(.nodes[]?) | select((.focused==true) and (.app_id=="org.wezfurlong.wezterm")).pid')" - if [ "$this_alacritty_pid" ]; then - child_pid="$(pgrep -P "$this_alacritty_pid")" + if [ "$this_wezterm_pid" ]; then + child_pid="$(pgrep -P "$this_wezterm_pid")" cwd="$(readlink /proc/$child_pid/cwd)" fi if [ -e "$cwd" ]; then - exec ${pkgs.alacritty}/bin/alacritty --working-directory "$cwd" + exec ${pkgs.wezterm}/bin/wezterm start --cwd "$cwd" fi - exec ${pkgs.alacritty}/bin/alacritty + exec ${pkgs.wezterm}/bin/wezterm ''; cfg = config.wayland.windowManager.sway.config; wallpaper = pkgs.fetchurl { diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index bbf1132..628e3e8 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -176,7 +176,7 @@ in format-disconnected = "Disconnected ⚠ "; format-alt = "{ifname}: {ipaddr}/{cidr}"; tooltip = false; - on-click-right = "${config.programs.alacritty.package}/bin/alacritty -e ${pkgs.networkmanager}/bin/nmtui"; + on-click-right = "${config.programs.wezterm.package}/bin/wezterm start -e ${pkgs.networkmanager}/bin/nmtui"; }; memory = { interval = 2; diff --git a/users/jalr/modules/wezterm.nix b/users/jalr/modules/wezterm.nix new file mode 100644 index 0000000..be238eb --- /dev/null +++ b/users/jalr/modules/wezterm.nix @@ -0,0 +1,46 @@ +{ config, lib, nixosConfig, ... }: + +let + weztermConfig = { + hide_tab_bar_if_only_one_tab = true; + #color_scheme = "Solarized (dark) (terminal.sexy)"; + #color_scheme = "Solarized (light) (terminal.sexy)"; + font = "FiraCode Nerd Font Mono"; + font_size = 12; + }; +in +{ + programs.wezterm = { + inherit (nixosConfig.jalr.gui) enable; + extraConfig = '' + local wezterm = require 'wezterm' + ${lib.generators.toLua {asBindings=true;} {config=weztermConfig;}} + config.font = wezterm.font(config.font) + + function get_appearance() + if wezterm.gui then + return wezterm.gui.get_appearance() + end + return 'Light' + end + + function scheme_for_appearance(appearance) + if appearance:find 'Dark' then + return 'Builtin Solarized Dark' + else + return 'Builtin Solarized Light' + end + end + + config.color_scheme = scheme_for_appearance(get_appearance()) + + return config + ''; + }; + /* + file = io.open("${config.xdg.configHome}/wezterm/color_scheme.txt", "r") + io.input(file) + config.color_scheme = io.read() + io.close(file) + */ +} From fdd8e63f537705d0baf91792a32b846d764cd7c4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 16 Jun 2025 11:12:05 +0200 Subject: [PATCH 471/562] Add VESC board `60` --- users/jalr/modules/vesc-tool.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/modules/vesc-tool.nix b/users/jalr/modules/vesc-tool.nix index ec8682c..16daa17 100644 --- a/users/jalr/modules/vesc-tool.nix +++ b/users/jalr/modules/vesc-tool.nix @@ -5,6 +5,7 @@ lib.mkIf nixosConfig.jalr.gui.enable { xdg.dataFile."VESC/firmware".source = pkgs.bldc-fw.override { fwBoards = [ "410" + "60" "60_mk3" ]; }; From d340eaf3eb8bc71d35e74140d7cc48f6ec27180e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 16 Jun 2025 11:13:38 +0200 Subject: [PATCH 472/562] Add diagnostic settings --- users/jalr/modules/neovim/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/users/jalr/modules/neovim/default.nix b/users/jalr/modules/neovim/default.nix index 7effe7b..eb1aa52 100644 --- a/users/jalr/modules/neovim/default.nix +++ b/users/jalr/modules/neovim/default.nix @@ -50,6 +50,8 @@ in sign define LspDiagnosticsSignInformation text=🟣 sign define LspDiagnosticsSignHint text=🟢 + nnoremap de lua vim.diagnostic.enable(not vim.diagnostic.is_enabled()) + nnoremap di lua vim.diagnostic.open_float() nnoremap gd lua vim.lsp.buf.definition() nnoremap gi lua vim.lsp.buf.implementation() nnoremap gr lua vim.lsp.buf.references() @@ -162,6 +164,9 @@ in -- this configuration applies to workstations only -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md local lsp = require('lspconfig') + + -- show linter messages + vim.diagnostic.config({ virtual_text = true }) '' + builtins.concatStringsSep "\n" ( lib.mapAttrsToList From 088e35e8d1119cd29667a097c4db4c9fbd9438ad Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 16 Jun 2025 11:14:04 +0200 Subject: [PATCH 473/562] Disable some PHP linter warnings --- users/jalr/modules/neovim/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/users/jalr/modules/neovim/default.nix b/users/jalr/modules/neovim/default.nix index eb1aa52..cab3174 100644 --- a/users/jalr/modules/neovim/default.nix +++ b/users/jalr/modules/neovim/default.nix @@ -187,6 +187,12 @@ in # PHP phpactor = { cmd = [ "${pkgs.phpactor}/bin/phpactor" "language-server" ]; + init_options = { + "language_server.diagnostic_ignore_codes" = [ + "worse.docblock_missing_param" + "worse.docblock_missing_return_type" + ]; + }; }; # Python From f5d847e04a4bd50bccc1e7cf203638225d8381f3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 16 Jun 2025 11:15:39 +0200 Subject: [PATCH 474/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/17d08c65c241b1d65b3ddf79e3fac1ddc870b0f6?narHash=sha256-W8KiJIrVwmf43JOPbbTu5lzq%2BcmdtRqaNbOsZigjioY%3D' (2025-06-06) → 'github:nix-community/disko/7f1857b31522062a6a00f88cbccf86b43acceed1?narHash=sha256-KrC9iOVYIn6ukpVlHbqSA4hYCZ6oDyJKrcLqv4c5v84%3D' (2025-06-16) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/80479b6ec16fefd9c1db3ea13aeb038c60530f46?narHash=sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo%2BbnXU9D9k%3D' (2025-05-16) → 'github:cachix/git-hooks.nix/623c56286de5a3193aa38891a6991b28f9bab056?narHash=sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4%3D' (2025-06-11) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/4602f7e1d3f197b3cb540d5accf5669121629628?narHash=sha256-W5GKQHgunda/OP9sbKENBZhMBDNu2QahoIPwnsF6CeM%3D' (2025-06-06) → 'github:nixos/nixos-hardware/db030f62a449568345372bd62ed8c5be4824fa49?narHash=sha256-lfxhuxAaHlYFGr8yOrAXZqdMt8PrFLzjVqH9v3lQaoY%3D' (2025-06-13) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/4792576cb003c994bd7cc1edada3129def20b27d?narHash=sha256-DJcgJMekoxVesl9kKjfLPix2Nbr42i7cpEHJiTnBUwU%3D' (2025-06-05) → 'github:nixos/nixpkgs/5f4f306bea96741f1588ea4f450b2a2e29f42b98?narHash=sha256-tG5xUn3hFaPpAHYIvr2F88b%2BovcIO5k1HqajFy7ZFPM%3D' (2025-06-13) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/ebd3748a6b97de45844aa62701b81df35c5c1269?narHash=sha256-LEZbj%2BVD/AR/dWL5ns1gMwzMvp4mLlv4WalxmZTKy5Y%3D' (2025-06-06) → 'github:NixOS/nixpkgs/3cbfdb57d81514cc480ab8ba193826156acdea16?narHash=sha256-aA8zF3Tuwgb4sY90fL/P5ko8LwEqY8zXQCvN/EmUoj0%3D' (2025-06-16) • Updated input 'nur': 'github:nix-community/NUR/17efc5275a8f21e2b48f39ecade74cdaff3ba411?narHash=sha256-haiPLogZwEFQTrIarZD92LUK7ScIcMbtEzPlcC988Qk%3D' (2025-06-06) → 'github:nix-community/NUR/e09c24b8347839f2ca0a9fc713c5f4641f50c287?narHash=sha256-IllO59EZ/uROQ8%2BDHm786L0XbZAXPyzQ66fOks7dAOk%3D' (2025-06-16) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/c2a03962b8e24e669fb37b7df10e7c79531ff1a4?narHash=sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj%2BQ%3D' (2025-06-03) → 'github:nixos/nixpkgs/ee930f9755f58096ac6e8ca94a1887e0534e2d81?narHash=sha256-Kh9K4taXbVuaLC0IL%2B9HcfvxsSUx8dPB5s5weJcc9pc%3D' (2025-06-13) • Updated input 'sops-nix': 'github:Mic92/sops-nix/8d215e1c981be3aa37e47aeabd4e61bb069548fd?narHash=sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD%2B9H%2BWc8o%3D' (2025-05-18) → 'github:Mic92/sops-nix/50754dfaa0e24e313c626900d44ef431f3210138?narHash=sha256-VunQzfZFA%2BY6x3wYi2UE4DEQ8qKoAZZCnZPUlSoqC%2BA%3D' (2025-06-10) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/b71ad9fcfb088350d5eadeea29292de3e5a06bb8?narHash=sha256-SXG7ukrSkNW7SF0VJpSBHR60aAGBVYJ2mFQWhSFuVa0%3D' (2025-05-30) → 'github:vedderb/vesc_tool/5ff884fe978f61986e01c1e02bb5b4f793435ed9?narHash=sha256-04bH1SC8YzoKGMGmjOv1xkUCTrMAy2UVn%2BfKa4LWLdc%3D' (2025-06-13) --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index 6c970ea..c000840 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1749200714, - "narHash": "sha256-W8KiJIrVwmf43JOPbbTu5lzq+cmdtRqaNbOsZigjioY=", + "lastModified": 1750040002, + "narHash": "sha256-KrC9iOVYIn6ukpVlHbqSA4hYCZ6oDyJKrcLqv4c5v84=", "owner": "nix-community", "repo": "disko", - "rev": "17d08c65c241b1d65b3ddf79e3fac1ddc870b0f6", + "rev": "7f1857b31522062a6a00f88cbccf86b43acceed1", "type": "github" }, "original": { @@ -366,11 +366,11 @@ ] }, "locked": { - "lastModified": 1747372754, - "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", + "lastModified": 1749636823, + "narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", + "rev": "623c56286de5a3193aa38891a6991b28f9bab056", "type": "github" }, "original": { @@ -382,11 +382,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1749195551, - "narHash": "sha256-W5GKQHgunda/OP9sbKENBZhMBDNu2QahoIPwnsF6CeM=", + "lastModified": 1749832440, + "narHash": "sha256-lfxhuxAaHlYFGr8yOrAXZqdMt8PrFLzjVqH9v3lQaoY=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "4602f7e1d3f197b3cb540d5accf5669121629628", + "rev": "db030f62a449568345372bd62ed8c5be4824fa49", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1749086602, - "narHash": "sha256-DJcgJMekoxVesl9kKjfLPix2Nbr42i7cpEHJiTnBUwU=", + "lastModified": 1749857119, + "narHash": "sha256-tG5xUn3hFaPpAHYIvr2F88b+ovcIO5k1HqajFy7ZFPM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4792576cb003c994bd7cc1edada3129def20b27d", + "rev": "5f4f306bea96741f1588ea4f450b2a2e29f42b98", "type": "github" }, "original": { @@ -430,11 +430,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1749201760, - "narHash": "sha256-LEZbj+VD/AR/dWL5ns1gMwzMvp4mLlv4WalxmZTKy5Y=", + "lastModified": 1750065193, + "narHash": "sha256-aA8zF3Tuwgb4sY90fL/P5ko8LwEqY8zXQCvN/EmUoj0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ebd3748a6b97de45844aa62701b81df35c5c1269", + "rev": "3cbfdb57d81514cc480ab8ba193826156acdea16", "type": "github" }, "original": { @@ -462,11 +462,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1748929857, - "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", + "lastModified": 1749794982, + "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", + "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", "type": "github" }, "original": { @@ -499,11 +499,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1749201010, - "narHash": "sha256-haiPLogZwEFQTrIarZD92LUK7ScIcMbtEzPlcC988Qk=", + "lastModified": 1750064370, + "narHash": "sha256-IllO59EZ/uROQ8+DHm786L0XbZAXPyzQ66fOks7dAOk=", "owner": "nix-community", "repo": "NUR", - "rev": "17efc5275a8f21e2b48f39ecade74cdaff3ba411", + "rev": "e09c24b8347839f2ca0a9fc713c5f4641f50c287", "type": "github" }, "original": { @@ -614,11 +614,11 @@ ] }, "locked": { - "lastModified": 1747603214, - "narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=", + "lastModified": 1749592509, + "narHash": "sha256-VunQzfZFA+Y6x3wYi2UE4DEQ8qKoAZZCnZPUlSoqC+A=", "owner": "Mic92", "repo": "sops-nix", - "rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd", + "rev": "50754dfaa0e24e313c626900d44ef431f3210138", "type": "github" }, "original": { @@ -730,11 +730,11 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1748618178, - "narHash": "sha256-SXG7ukrSkNW7SF0VJpSBHR60aAGBVYJ2mFQWhSFuVa0=", + "lastModified": 1749812120, + "narHash": "sha256-04bH1SC8YzoKGMGmjOv1xkUCTrMAy2UVn+fKa4LWLdc=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "b71ad9fcfb088350d5eadeea29292de3e5a06bb8", + "rev": "5ff884fe978f61986e01c1e02bb5b4f793435ed9", "type": "github" }, "original": { From a7575016a88817dabda5308c2f172fe226c31cc5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 16 Jun 2025 11:52:12 +0200 Subject: [PATCH 475/562] Downgrade tree-style-tab as the current version is incompatible with firefox-esr. --- users/jalr/modules/firefox/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/users/jalr/modules/firefox/default.nix b/users/jalr/modules/firefox/default.nix index 56186b9..a889323 100644 --- a/users/jalr/modules/firefox/default.nix +++ b/users/jalr/modules/firefox/default.nix @@ -276,7 +276,11 @@ browserpass darkreader sponsorblock - tree-style-tab + (tree-style-tab.override { + version = "4.1.6"; + url = "https://addons.mozilla.org/firefox/downloads/file/4488104/tree_style_tab-4.1.6.xpi"; + sha256 = "sha256-X0HC6jzytjBsM+8HmbK48DUihtdN9oCsqLUJqp29csQ="; + }) ublock-origin umatrix violentmonkey From bfe01df3337c932d7d67fbbf8e5b2b0645728558 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 16 Jun 2025 17:16:25 +0200 Subject: [PATCH 476/562] Implement php debugging --- users/jalr/modules/firefox/default.nix | 1 + users/jalr/modules/neovim/default.nix | 68 +++++++++++++++++++++----- 2 files changed, 57 insertions(+), 12 deletions(-) diff --git a/users/jalr/modules/firefox/default.nix b/users/jalr/modules/firefox/default.nix index a889323..af9224b 100644 --- a/users/jalr/modules/firefox/default.nix +++ b/users/jalr/modules/firefox/default.nix @@ -284,6 +284,7 @@ ublock-origin umatrix violentmonkey + xdebug-helper-for-firefox youtube-shorts-block ]; settings = { diff --git a/users/jalr/modules/neovim/default.nix b/users/jalr/modules/neovim/default.nix index cab3174..03b8b0b 100644 --- a/users/jalr/modules/neovim/default.nix +++ b/users/jalr/modules/neovim/default.nix @@ -50,19 +50,27 @@ in sign define LspDiagnosticsSignInformation text=🟣 sign define LspDiagnosticsSignHint text=🟢 - nnoremap de lua vim.diagnostic.enable(not vim.diagnostic.is_enabled()) - nnoremap di lua vim.diagnostic.open_float() - nnoremap gd lua vim.lsp.buf.definition() - nnoremap gi lua vim.lsp.buf.implementation() - nnoremap gr lua vim.lsp.buf.references() - nnoremap gD lua vim.lsp.buf.declaration() - nnoremap ge lua vim.lsp.diagnostic.set_loclist() - nnoremap K lua vim.lsp.buf.hover() - nnoremap f lua vim.lsp.buf.formatting() - nnoremap rn lua vim.lsp.buf.rename() + nnoremap e lua vim.diagnostic.enable(not vim.diagnostic.is_enabled()) + nnoremap i lua vim.diagnostic.open_float() + nnoremap gd lua vim.lsp.buf.definition() + nnoremap gi lua vim.lsp.buf.implementation() + nnoremap gr lua vim.lsp.buf.references() + nnoremap gD lua vim.lsp.buf.declaration() + nnoremap ge lua vim.lsp.diagnostic.set_loclist() + nnoremap K lua vim.lsp.buf.hover() + nnoremap f lua vim.lsp.buf.formatting() + nnoremap rn lua vim.lsp.buf.rename() - nnoremap a lua vim.lsp.buf.code_action() - xmap a lua vim.lsp.buf.range_code_action() + nnoremap dh lua require('dap.ui.widgets').hover() + nnoremap dp lua require('dap.ui.widgets').preview() + nnoremap dc lua require('dap').continue() + nnoremap do lua require('dap').step_over() + nnoremap di lua require('dap').step_into() + nnoremap dn lua require('dap').step_out() + nnoremap b lua require('dap').toggle_breakpoint() + + nnoremap a lua vim.lsp.buf.code_action() + xmap a lua vim.lsp.buf.range_code_action() lua require('init') ''; @@ -84,6 +92,42 @@ in colorscheme NeoSolarized ''; } + { + plugin = nvim-dap; + type = "lua"; + config = '' + local dap = require('dap') + dap.adapters.php = { + type = "executable", + command = "${pkgs.nodejs}/bin/node", + args = { "${pkgs.vscode-extensions.xdebug.php-debug}/share/vscode/extensions/xdebug.php-debug/out/phpDebug.js" } + } + + dap.configurations.php = { + { + type = "php", + request = "launch", + name = "Listen for Xdebug", + port = 9003, + --stopOnEntry = true, + pathMappings = { + ["/app/"] = vim.fn.getcwd().."/", + }, + log = true, + hostname = "0.0.0.0", + } + } + + vim.api.nvim_create_autocmd( + "FileType", { + pattern = "dap-float", + callback = function() + vim.api.nvim_buf_set_keymap(0, "n", "q", "close!", { noremap = true, silent = true }) + end + } + ) + ''; + } deoplete-nvim editorconfig-vim jinja-vim From 3789ace3e76d4eeb3cab935d2a5647c81a6e9474 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 18 Jun 2025 11:11:02 +0200 Subject: [PATCH 477/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/db030f62a449568345372bd62ed8c5be4824fa49?narHash=sha256-lfxhuxAaHlYFGr8yOrAXZqdMt8PrFLzjVqH9v3lQaoY%3D' (2025-06-13) → 'github:nixos/nixos-hardware/61837d2a33ccc1582c5fabb7bf9130d39fee59ad?narHash=sha256-ynqbgIYrg7P1fAKYqe8I/PMiLABBcNDYG9YaAP/d/C4%3D' (2025-06-16) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/5f4f306bea96741f1588ea4f450b2a2e29f42b98?narHash=sha256-tG5xUn3hFaPpAHYIvr2F88b%2BovcIO5k1HqajFy7ZFPM%3D' (2025-06-13) → 'github:nixos/nixpkgs/36ab78dab7da2e4e27911007033713bab534187b?narHash=sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw%3D' (2025-06-17) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/3cbfdb57d81514cc480ab8ba193826156acdea16?narHash=sha256-aA8zF3Tuwgb4sY90fL/P5ko8LwEqY8zXQCvN/EmUoj0%3D' (2025-06-16) → 'github:NixOS/nixpkgs/b95bc4d285032de7842cc8396e55fb21f70f3bce?narHash=sha256-66zezez0HO30aYAyA63%2BHLCA%2BarVAIwFohEeE4nNl9I%3D' (2025-06-18) • Updated input 'nur': 'github:nix-community/NUR/e09c24b8347839f2ca0a9fc713c5f4641f50c287?narHash=sha256-IllO59EZ/uROQ8%2BDHm786L0XbZAXPyzQ66fOks7dAOk%3D' (2025-06-16) → 'github:nix-community/NUR/8d9894966f0c06b8e36f1ed1268ca3f080094302?narHash=sha256-N%2B716O0Wgrs3px24zm8Kvh2W8j6HEdfxw1jHBpSnQvU%3D' (2025-06-18) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/ee930f9755f58096ac6e8ca94a1887e0534e2d81?narHash=sha256-Kh9K4taXbVuaLC0IL%2B9HcfvxsSUx8dPB5s5weJcc9pc%3D' (2025-06-13) → 'github:nixos/nixpkgs/9e83b64f727c88a7711a2c463a7b16eedb69a84c?narHash=sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI%3D' (2025-06-17) • Updated input 'sops-nix': 'github:Mic92/sops-nix/50754dfaa0e24e313c626900d44ef431f3210138?narHash=sha256-VunQzfZFA%2BY6x3wYi2UE4DEQ8qKoAZZCnZPUlSoqC%2BA%3D' (2025-06-10) → 'github:Mic92/sops-nix/77c423a03b9b2b79709ea2cb63336312e78b72e2?narHash=sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M%3D' (2025-06-17) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/5ff884fe978f61986e01c1e02bb5b4f793435ed9?narHash=sha256-04bH1SC8YzoKGMGmjOv1xkUCTrMAy2UVn%2BfKa4LWLdc%3D' (2025-06-13) → 'github:vedderb/vesc_tool/6b979dc7285d6b54850840c4c4d24a06a032b9cb?narHash=sha256-YD%2BSt6iUa6R5Mi6TFRhvsRKGTrp/dBps74/7hlPXjoc%3D' (2025-06-17) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index c000840..2d66daf 100644 --- a/flake.lock +++ b/flake.lock @@ -382,11 +382,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1749832440, - "narHash": "sha256-lfxhuxAaHlYFGr8yOrAXZqdMt8PrFLzjVqH9v3lQaoY=", + "lastModified": 1750083401, + "narHash": "sha256-ynqbgIYrg7P1fAKYqe8I/PMiLABBcNDYG9YaAP/d/C4=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "db030f62a449568345372bd62ed8c5be4824fa49", + "rev": "61837d2a33ccc1582c5fabb7bf9130d39fee59ad", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1749857119, - "narHash": "sha256-tG5xUn3hFaPpAHYIvr2F88b+ovcIO5k1HqajFy7ZFPM=", + "lastModified": 1750133334, + "narHash": "sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "5f4f306bea96741f1588ea4f450b2a2e29f42b98", + "rev": "36ab78dab7da2e4e27911007033713bab534187b", "type": "github" }, "original": { @@ -430,11 +430,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1750065193, - "narHash": "sha256-aA8zF3Tuwgb4sY90fL/P5ko8LwEqY8zXQCvN/EmUoj0=", + "lastModified": 1750237837, + "narHash": "sha256-66zezez0HO30aYAyA63+HLCA+arVAIwFohEeE4nNl9I=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3cbfdb57d81514cc480ab8ba193826156acdea16", + "rev": "b95bc4d285032de7842cc8396e55fb21f70f3bce", "type": "github" }, "original": { @@ -462,11 +462,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1749794982, - "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", + "lastModified": 1750134718, + "narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", + "rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c", "type": "github" }, "original": { @@ -499,11 +499,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1750064370, - "narHash": "sha256-IllO59EZ/uROQ8+DHm786L0XbZAXPyzQ66fOks7dAOk=", + "lastModified": 1750237017, + "narHash": "sha256-N+716O0Wgrs3px24zm8Kvh2W8j6HEdfxw1jHBpSnQvU=", "owner": "nix-community", "repo": "NUR", - "rev": "e09c24b8347839f2ca0a9fc713c5f4641f50c287", + "rev": "8d9894966f0c06b8e36f1ed1268ca3f080094302", "type": "github" }, "original": { @@ -614,11 +614,11 @@ ] }, "locked": { - "lastModified": 1749592509, - "narHash": "sha256-VunQzfZFA+Y6x3wYi2UE4DEQ8qKoAZZCnZPUlSoqC+A=", + "lastModified": 1750119275, + "narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=", "owner": "Mic92", "repo": "sops-nix", - "rev": "50754dfaa0e24e313c626900d44ef431f3210138", + "rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2", "type": "github" }, "original": { @@ -730,11 +730,11 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1749812120, - "narHash": "sha256-04bH1SC8YzoKGMGmjOv1xkUCTrMAy2UVn+fKa4LWLdc=", + "lastModified": 1750175979, + "narHash": "sha256-YD+St6iUa6R5Mi6TFRhvsRKGTrp/dBps74/7hlPXjoc=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "5ff884fe978f61986e01c1e02bb5b4f793435ed9", + "rev": "6b979dc7285d6b54850840c4c4d24a06a032b9cb", "type": "github" }, "original": { From 29525dc308a6485a69986d1bab5928c294d5eb5d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 20 Jun 2025 21:57:39 +0200 Subject: [PATCH 478/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/2cbd7fdd6eeab65c494cc426e18f4e4d2a5e35c0?narHash=sha256-0YkWCS13jpoo3%2BsX/3kcgdxBNt1VZTmvF%2BFhZb4rFKI%3D' (2025-04-28) → 'github:nix-community/gomod2nix/a5f75f563748599d448a4a076816041d7b0fc07e?narHash=sha256-SjpXWEeB%2BUIMzuCAF94PuyAXpJdnBLF45JvI6o4wKIU%3D' (2025-06-19) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/61837d2a33ccc1582c5fabb7bf9130d39fee59ad?narHash=sha256-ynqbgIYrg7P1fAKYqe8I/PMiLABBcNDYG9YaAP/d/C4%3D' (2025-06-16) → 'github:nixos/nixos-hardware/1552a9f4513f3f0ceedcf90320e48d3d47165712?narHash=sha256-vnzzBDbCGvInmfn2ijC4HsIY/3W1CWbwS/YQoFgdgPg%3D' (2025-06-20) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/36ab78dab7da2e4e27911007033713bab534187b?narHash=sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw%3D' (2025-06-17) → 'github:nixos/nixpkgs/9ba04bda9249d5d5e5238303c9755de5a49a79c5?narHash=sha256-H8J4H2XCIMEJ5g6fZ179QfQvsc2dUqhqfBjC8RAHNRY%3D' (2025-06-18) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/b95bc4d285032de7842cc8396e55fb21f70f3bce?narHash=sha256-66zezez0HO30aYAyA63%2BHLCA%2BarVAIwFohEeE4nNl9I%3D' (2025-06-18) → 'github:NixOS/nixpkgs/4fab5e9fe91c7c26c31eb4d936e24737def51508?narHash=sha256-R8L8tE/pxn%2BzEZVHvs2ZY8vCKovr1DZjLl%2B0VkTVTR8%3D' (2025-06-20) • Updated input 'nur': 'github:nix-community/NUR/8d9894966f0c06b8e36f1ed1268ca3f080094302?narHash=sha256-N%2B716O0Wgrs3px24zm8Kvh2W8j6HEdfxw1jHBpSnQvU%3D' (2025-06-18) → 'github:nix-community/NUR/de5be5d9770e5f95d0a2717455a9acb0f7ddec60?narHash=sha256-VVZClU2AbfG0mpczqn91R9h4It/jgjt0EkTGe8GB2DA%3D' (2025-06-20) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/9e83b64f727c88a7711a2c463a7b16eedb69a84c?narHash=sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI%3D' (2025-06-17) → 'github:nixos/nixpkgs/08f22084e6085d19bcfb4be30d1ca76ecb96fe54?narHash=sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50%3D' (2025-06-19) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/6b979dc7285d6b54850840c4c4d24a06a032b9cb?narHash=sha256-YD%2BSt6iUa6R5Mi6TFRhvsRKGTrp/dBps74/7hlPXjoc%3D' (2025-06-17) → 'github:vedderb/vesc_tool/967347297c137b5ec1c3704fe2e7a21958f82f14?narHash=sha256-fNVZaAvptaF99BlTVED4oTX64PguJFFXlzVUSR7wrpU%3D' (2025-06-19) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 2d66daf..0f4a080 100644 --- a/flake.lock +++ b/flake.lock @@ -223,11 +223,11 @@ ] }, "locked": { - "lastModified": 1745875161, - "narHash": "sha256-0YkWCS13jpoo3+sX/3kcgdxBNt1VZTmvF+FhZb4rFKI=", + "lastModified": 1750314194, + "narHash": "sha256-SjpXWEeB+UIMzuCAF94PuyAXpJdnBLF45JvI6o4wKIU=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "2cbd7fdd6eeab65c494cc426e18f4e4d2a5e35c0", + "rev": "a5f75f563748599d448a4a076816041d7b0fc07e", "type": "github" }, "original": { @@ -382,11 +382,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1750083401, - "narHash": "sha256-ynqbgIYrg7P1fAKYqe8I/PMiLABBcNDYG9YaAP/d/C4=", + "lastModified": 1750431636, + "narHash": "sha256-vnzzBDbCGvInmfn2ijC4HsIY/3W1CWbwS/YQoFgdgPg=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "61837d2a33ccc1582c5fabb7bf9130d39fee59ad", + "rev": "1552a9f4513f3f0ceedcf90320e48d3d47165712", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1750133334, - "narHash": "sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw=", + "lastModified": 1750259320, + "narHash": "sha256-H8J4H2XCIMEJ5g6fZ179QfQvsc2dUqhqfBjC8RAHNRY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "36ab78dab7da2e4e27911007033713bab534187b", + "rev": "9ba04bda9249d5d5e5238303c9755de5a49a79c5", "type": "github" }, "original": { @@ -430,11 +430,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1750237837, - "narHash": "sha256-66zezez0HO30aYAyA63+HLCA+arVAIwFohEeE4nNl9I=", + "lastModified": 1750447714, + "narHash": "sha256-R8L8tE/pxn+zEZVHvs2ZY8vCKovr1DZjLl+0VkTVTR8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b95bc4d285032de7842cc8396e55fb21f70f3bce", + "rev": "4fab5e9fe91c7c26c31eb4d936e24737def51508", "type": "github" }, "original": { @@ -462,11 +462,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1750134718, - "narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=", + "lastModified": 1750365781, + "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c", + "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54", "type": "github" }, "original": { @@ -499,11 +499,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1750237017, - "narHash": "sha256-N+716O0Wgrs3px24zm8Kvh2W8j6HEdfxw1jHBpSnQvU=", + "lastModified": 1750448731, + "narHash": "sha256-VVZClU2AbfG0mpczqn91R9h4It/jgjt0EkTGe8GB2DA=", "owner": "nix-community", "repo": "NUR", - "rev": "8d9894966f0c06b8e36f1ed1268ca3f080094302", + "rev": "de5be5d9770e5f95d0a2717455a9acb0f7ddec60", "type": "github" }, "original": { @@ -730,11 +730,11 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1750175979, - "narHash": "sha256-YD+St6iUa6R5Mi6TFRhvsRKGTrp/dBps74/7hlPXjoc=", + "lastModified": 1750336890, + "narHash": "sha256-fNVZaAvptaF99BlTVED4oTX64PguJFFXlzVUSR7wrpU=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "6b979dc7285d6b54850840c4c4d24a06a032b9cb", + "rev": "967347297c137b5ec1c3704fe2e7a21958f82f14", "type": "github" }, "original": { From c24305602751113b7a0d1a24017a7652d7d8859d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 21 Jun 2025 22:32:14 +0200 Subject: [PATCH 479/562] Use greetd to start sway --- modules/sway.nix | 29 ++++++++++++++++++++++++++--- users/jalr/modules/neo.nix | 16 +++++++++++++--- users/jalr/modules/sway/default.nix | 9 --------- 3 files changed, 39 insertions(+), 15 deletions(-) diff --git a/modules/sway.nix b/modules/sway.nix index 5dda16f..286fa6e 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -11,6 +11,29 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { }; }; + services.greetd = { + enable = true; + settings = + let + command = pkgs.writeShellScript "sway-init" '' + systemctl --user import-environment PATH + systemctl --user restart xdg-desktop-portal.service + exec ${pkgs.sway}/bin/sway + ''; + user = "jalr"; + in + { + default_session = { + inherit command; + inherit user; + }; + initial_session = { + inherit command; + inherit user; + }; + }; + }; + hardware.graphics.enable = true; security.polkit.enable = true; @@ -26,9 +49,9 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { icons.enable = true; portal = { enable = true; - extraPortals = with pkgs; [ - xdg-desktop-portal-wlr - xdg-desktop-portal-gtk + wlr.enable = true; + extraPortals = [ + pkgs.xdg-desktop-portal-gtk ]; xdgOpenUsePortal = true; }; diff --git a/users/jalr/modules/neo.nix b/users/jalr/modules/neo.nix index 9acef59..4d668d0 100644 --- a/users/jalr/modules/neo.nix +++ b/users/jalr/modules/neo.nix @@ -1,7 +1,17 @@ +let + xkb_layout = "de,de"; + xkb_variant = "neo,"; + xkb_options = "grp:win_space_toggle"; +in { home.sessionVariables = { - XKB_DEFAULT_LAYOUT = "de,de"; - XKB_DEFAULT_VARIANT = "neo,"; - XKB_DEFAULT_OPTIONS = "grp:win_space_toggle"; + XKB_DEFAULT_LAYOUT = xkb_layout; + XKB_DEFAULT_VARIANT = xkb_variant; + XKB_DEFAULT_OPTIONS = xkb_options; + }; + wayland.windowManager.sway.config.input."type:keyboard" = { + inherit xkb_layout; + inherit xkb_variant; + inherit xkb_options; }; } diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index 846c1ae..2ca9a9d 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -88,15 +88,6 @@ in _JAVA_AWT_WM_NONREPARENTING = "1"; }; - programs.fish.loginShellInit = '' - if [ -z $WAYLAND_DISPLAY ] && [ (tty) = /dev/tty1 ] - export XDG_SESSION_TYPE="wayland" # otherwise set to tty - set -e __HM_SESS_VARS_SOURCED - set -e __NIXOS_SET_ENVIRONMENT_DONE - exec systemd-cat -t sway dbus-run-session sway - end - ''; - wayland.windowManager.sway = { enable = true; From 3d5ac7673b731112cedc2bdcf224c495ced5f414 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 21 Jun 2025 22:59:58 +0200 Subject: [PATCH 480/562] Fix neo layout --- modules/default.nix | 1 + modules/neo.nix | 7 +++++++ users/jalr/modules/default.nix | 1 - users/jalr/modules/neo.nix | 17 ----------------- 4 files changed, 8 insertions(+), 18 deletions(-) create mode 100644 modules/neo.nix delete mode 100644 users/jalr/modules/neo.nix diff --git a/modules/default.nix b/modules/default.nix index 80aac79..f164fb0 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -38,6 +38,7 @@ ./matrix ./mobile-network.nix ./mute-indicator.nix + ./neo.nix ./networking ./nix.nix ./obs.nix diff --git a/modules/neo.nix b/modules/neo.nix new file mode 100644 index 0000000..b9c299c --- /dev/null +++ b/modules/neo.nix @@ -0,0 +1,7 @@ +{ + environment.variables = { + XKB_DEFAULT_LAYOUT = "de,de"; + XKB_DEFAULT_VARIANT = "neo,"; + XKB_DEFAULT_OPTIONS = "grp:win_space_toggle"; + }; +} diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 76f8f9e..ec2e23d 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -22,7 +22,6 @@ ./mpv.nix ./mute-indicator.nix ./mycli - ./neo.nix ./neovim ./nix-index.nix ./obs-studio diff --git a/users/jalr/modules/neo.nix b/users/jalr/modules/neo.nix deleted file mode 100644 index 4d668d0..0000000 --- a/users/jalr/modules/neo.nix +++ /dev/null @@ -1,17 +0,0 @@ -let - xkb_layout = "de,de"; - xkb_variant = "neo,"; - xkb_options = "grp:win_space_toggle"; -in -{ - home.sessionVariables = { - XKB_DEFAULT_LAYOUT = xkb_layout; - XKB_DEFAULT_VARIANT = xkb_variant; - XKB_DEFAULT_OPTIONS = xkb_options; - }; - wayland.windowManager.sway.config.input."type:keyboard" = { - inherit xkb_layout; - inherit xkb_variant; - inherit xkb_options; - }; -} From 06697553a4cb7dfd8d7abf1868b6c43affe78fea Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 1 Jul 2025 10:41:16 +0200 Subject: [PATCH 481/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/7f1857b31522062a6a00f88cbccf86b43acceed1?narHash=sha256-KrC9iOVYIn6ukpVlHbqSA4hYCZ6oDyJKrcLqv4c5v84%3D' (2025-06-16) → 'github:nix-community/disko/83c4da299c1d7d300f8c6fd3a72ac46cb0d59aae?narHash=sha256-Ng9%2Bf0H5/dW%2Bmq/XOKvB9uwvGbsuiiO6HrPdAcVglCs%3D' (2025-06-26) • Updated input 'home-manager': 'github:nix-community/home-manager/7aae0ee71a17b19708b93b3ed448a1a0952bf111?narHash=sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg%3D' (2025-06-05) → 'github:nix-community/home-manager/366f00797b1efb70f2882d3da485e3c10fd3d557?narHash=sha256-Lh3dopA8DdY%2BZoaAJPrtkZOZaFEJGSYjOdAYYgOPgE4%3D' (2025-06-24) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/623c56286de5a3193aa38891a6991b28f9bab056?narHash=sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4%3D' (2025-06-11) → 'github:cachix/git-hooks.nix/16ec914f6fb6f599ce988427d9d94efddf25fe6d?narHash=sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg%3D' (2025-06-24) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/1552a9f4513f3f0ceedcf90320e48d3d47165712?narHash=sha256-vnzzBDbCGvInmfn2ijC4HsIY/3W1CWbwS/YQoFgdgPg%3D' (2025-06-20) → 'github:nixos/nixos-hardware/98236410ea0fe204d0447149537a924fb71a6d4f?narHash=sha256-2m1ceZjbmgrJCZ2PuQZaK4in3gcg3o6rZ7WK6dr5vAA%3D' (2025-06-25) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/9ba04bda9249d5d5e5238303c9755de5a49a79c5?narHash=sha256-H8J4H2XCIMEJ5g6fZ179QfQvsc2dUqhqfBjC8RAHNRY%3D' (2025-06-18) → 'github:nixos/nixpkgs/b43c397f6c213918d6cfe6e3550abfe79b5d1c51?narHash=sha256-1Cu92i1KSPbhPCKxoiVG5qnoRiKTgR5CcGSRyLpOd7Y%3D' (2025-06-29) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/4fab5e9fe91c7c26c31eb4d936e24737def51508?narHash=sha256-R8L8tE/pxn%2BzEZVHvs2ZY8vCKovr1DZjLl%2B0VkTVTR8%3D' (2025-06-20) → 'github:NixOS/nixpkgs/61ac9bb9fdbeaf8e4ac827ef99a9fc06173c697c?narHash=sha256-HzVao4JEHB/DKTFyQGVWfdE3kJGElBs96dtEa%2BLO73o%3D' (2025-07-01) • Updated input 'nur': 'github:nix-community/NUR/de5be5d9770e5f95d0a2717455a9acb0f7ddec60?narHash=sha256-VVZClU2AbfG0mpczqn91R9h4It/jgjt0EkTGe8GB2DA%3D' (2025-06-20) → 'github:nix-community/NUR/93d91108dd5ca22a3d470b376c7b5c44e1d6d2bb?narHash=sha256-w0dc97DRw%2BdJ1EKnFBZrvsipQq7BGH7iW6MqiSA2Hmc%3D' (2025-07-01) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/08f22084e6085d19bcfb4be30d1ca76ecb96fe54?narHash=sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50%3D' (2025-06-19) → 'github:nixos/nixpkgs/3016b4b15d13f3089db8a41ef937b13a9e33a8df?narHash=sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU%2Btt4YY%3D' (2025-06-30) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/967347297c137b5ec1c3704fe2e7a21958f82f14?narHash=sha256-fNVZaAvptaF99BlTVED4oTX64PguJFFXlzVUSR7wrpU%3D' (2025-06-19) → 'github:vedderb/vesc_tool/f11ea3ed5ee76b25814ececb29d4f445adbd3b62?narHash=sha256-Scxy0YafhihzLA6EZu13tzmAKWQqzvB0q1bc6ey5oEA%3D' (2025-06-30) --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index 0f4a080..3036660 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1750040002, - "narHash": "sha256-KrC9iOVYIn6ukpVlHbqSA4hYCZ6oDyJKrcLqv4c5v84=", + "lastModified": 1750903843, + "narHash": "sha256-Ng9+f0H5/dW+mq/XOKvB9uwvGbsuiiO6HrPdAcVglCs=", "owner": "nix-community", "repo": "disko", - "rev": "7f1857b31522062a6a00f88cbccf86b43acceed1", + "rev": "83c4da299c1d7d300f8c6fd3a72ac46cb0d59aae", "type": "github" }, "original": { @@ -243,11 +243,11 @@ ] }, "locked": { - "lastModified": 1749154018, - "narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=", + "lastModified": 1750792728, + "narHash": "sha256-Lh3dopA8DdY+ZoaAJPrtkZOZaFEJGSYjOdAYYgOPgE4=", "owner": "nix-community", "repo": "home-manager", - "rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111", + "rev": "366f00797b1efb70f2882d3da485e3c10fd3d557", "type": "github" }, "original": { @@ -366,11 +366,11 @@ ] }, "locked": { - "lastModified": 1749636823, - "narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=", + "lastModified": 1750779888, + "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "623c56286de5a3193aa38891a6991b28f9bab056", + "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", "type": "github" }, "original": { @@ -382,11 +382,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1750431636, - "narHash": "sha256-vnzzBDbCGvInmfn2ijC4HsIY/3W1CWbwS/YQoFgdgPg=", + "lastModified": 1750837715, + "narHash": "sha256-2m1ceZjbmgrJCZ2PuQZaK4in3gcg3o6rZ7WK6dr5vAA=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "1552a9f4513f3f0ceedcf90320e48d3d47165712", + "rev": "98236410ea0fe204d0447149537a924fb71a6d4f", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1750259320, - "narHash": "sha256-H8J4H2XCIMEJ5g6fZ179QfQvsc2dUqhqfBjC8RAHNRY=", + "lastModified": 1751211869, + "narHash": "sha256-1Cu92i1KSPbhPCKxoiVG5qnoRiKTgR5CcGSRyLpOd7Y=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9ba04bda9249d5d5e5238303c9755de5a49a79c5", + "rev": "b43c397f6c213918d6cfe6e3550abfe79b5d1c51", "type": "github" }, "original": { @@ -430,11 +430,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1750447714, - "narHash": "sha256-R8L8tE/pxn+zEZVHvs2ZY8vCKovr1DZjLl+0VkTVTR8=", + "lastModified": 1751358783, + "narHash": "sha256-HzVao4JEHB/DKTFyQGVWfdE3kJGElBs96dtEa+LO73o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4fab5e9fe91c7c26c31eb4d936e24737def51508", + "rev": "61ac9bb9fdbeaf8e4ac827ef99a9fc06173c697c", "type": "github" }, "original": { @@ -462,11 +462,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1750365781, - "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=", + "lastModified": 1751271578, + "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54", + "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df", "type": "github" }, "original": { @@ -499,11 +499,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1750448731, - "narHash": "sha256-VVZClU2AbfG0mpczqn91R9h4It/jgjt0EkTGe8GB2DA=", + "lastModified": 1751355827, + "narHash": "sha256-w0dc97DRw+dJ1EKnFBZrvsipQq7BGH7iW6MqiSA2Hmc=", "owner": "nix-community", "repo": "NUR", - "rev": "de5be5d9770e5f95d0a2717455a9acb0f7ddec60", + "rev": "93d91108dd5ca22a3d470b376c7b5c44e1d6d2bb", "type": "github" }, "original": { @@ -730,11 +730,11 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1750336890, - "narHash": "sha256-fNVZaAvptaF99BlTVED4oTX64PguJFFXlzVUSR7wrpU=", + "lastModified": 1751295902, + "narHash": "sha256-Scxy0YafhihzLA6EZu13tzmAKWQqzvB0q1bc6ey5oEA=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "967347297c137b5ec1c3704fe2e7a21958f82f14", + "rev": "f11ea3ed5ee76b25814ececb29d4f445adbd3b62", "type": "github" }, "original": { From 0bd1a5c684b2c243faa84d792289db084bbd7a2e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 3 Jul 2025 11:05:51 +0200 Subject: [PATCH 482/562] Add pace --- users/jalr/modules/default.nix | 1 + users/jalr/modules/pace.nix | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 users/jalr/modules/pace.nix diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index ec2e23d..0d9f98e 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -26,6 +26,7 @@ ./nix-index.nix ./obs-studio ./ots.nix + ./pace.nix ./pass.nix ./pomodoro.nix ./python.nix diff --git a/users/jalr/modules/pace.nix b/users/jalr/modules/pace.nix new file mode 100644 index 0000000..0a0b43f --- /dev/null +++ b/users/jalr/modules/pace.nix @@ -0,0 +1,28 @@ +{ config, nixosConfig, lib, pkgs, ... }: + + +let + tomlFormat = pkgs.formats.toml { }; +in +lib.mkIf nixosConfig.jalr.gui.enable { + home.packages = with pkgs; [ + pace + ]; + + home.sessionVariables.PACE_HOME = "${config.xdg.configHome}/pace"; + + xdg.configFile."pace/pace.toml".source = tomlFormat.generate "pace.toml" { + general = { + path = "${config.home.homeDirectory}/.local/share/pace/activities/activities.pace.toml"; + storage-kind = "file"; + category-separator = "::"; + default-priority = "medium"; + most-recent-count = 9; + default-time-zone = "${nixosConfig.time.timeZone}"; + }; + }; + + programs.fish.interactiveShellInit = lib.mkAfter '' + ${pkgs.pace}/bin/pace setup completions fish | source + ''; +} From 43575b6f565b13f51a418d6c7207bfcd4b18de2e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Jul 2025 11:29:30 +0200 Subject: [PATCH 483/562] Remove ix.dnsbl.manitu.net the service is no longer available --- modules/mailserver/postfix.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/mailserver/postfix.nix b/modules/mailserver/postfix.nix index 78ee32b..e813dcb 100644 --- a/modules/mailserver/postfix.nix +++ b/modules/mailserver/postfix.nix @@ -69,13 +69,11 @@ lib.mkIf cfg.enable { smtpd_recipient_restrictions = listToString [ "reject_non_fqdn_recipient" - "reject_rbl_client ix.dnsbl.manitu.net" "reject_unknown_recipient_domain" "reject_unverified_recipient" ]; smtpd_client_restrictions = listToString [ - "reject_rbl_client ix.dnsbl.manitu.net" "reject_unknown_client_hostname" ]; From cd5dbe56ffb8fcc10e0372a070686a87499fd296 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Jul 2025 11:31:16 +0200 Subject: [PATCH 484/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/83c4da299c1d7d300f8c6fd3a72ac46cb0d59aae?narHash=sha256-Ng9%2Bf0H5/dW%2Bmq/XOKvB9uwvGbsuiiO6HrPdAcVglCs%3D' (2025-06-26) → 'github:nix-community/disko/16b74a1e304197248a1bc663280f2548dbfcae3c?narHash=sha256-U/OQFplExOR1jazZY4KkaQkJqOl59xlh21HP9mI79Vc%3D' (2025-07-07) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/a5f75f563748599d448a4a076816041d7b0fc07e?narHash=sha256-SjpXWEeB%2BUIMzuCAF94PuyAXpJdnBLF45JvI6o4wKIU%3D' (2025-06-19) → 'github:nix-community/gomod2nix/664ad7a2df4623037e315e4094346bff5c44e9ee?narHash=sha256-/GTdqFzFw/Y9DSNAfzvzyCMlKjUyRKMPO%2BapIuaTU4A%3D' (2025-07-05) • Updated input 'home-manager': 'github:nix-community/home-manager/366f00797b1efb70f2882d3da485e3c10fd3d557?narHash=sha256-Lh3dopA8DdY%2BZoaAJPrtkZOZaFEJGSYjOdAYYgOPgE4%3D' (2025-06-24) → 'github:nix-community/home-manager/9b0873b46c9f9e4b7aa01eb634952c206af53068?narHash=sha256-kllkNbIqQi3VplgTMeGzuh1t8Gk8TauvkTRt93Km%2BtQ%3D' (2025-07-06) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/98236410ea0fe204d0447149537a924fb71a6d4f?narHash=sha256-2m1ceZjbmgrJCZ2PuQZaK4in3gcg3o6rZ7WK6dr5vAA%3D' (2025-06-25) → 'github:nixos/nixos-hardware/7ced9122cff2163c6a0212b8d1ec8c33a1660806?narHash=sha256-gATnkOe37eeVwKKYCsL%2BOnS2gU4MmLuZFzzWCtaKLI8%3D' (2025-07-09) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/b43c397f6c213918d6cfe6e3550abfe79b5d1c51?narHash=sha256-1Cu92i1KSPbhPCKxoiVG5qnoRiKTgR5CcGSRyLpOd7Y%3D' (2025-06-29) → 'github:nixos/nixpkgs/88983d4b665fb491861005137ce2b11a9f89f203?narHash=sha256-7orTnNqkGGru8Je6Un6mq1T8YVVU/O5kyW4%2Bf9C1mZQ%3D' (2025-07-08) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/61ac9bb9fdbeaf8e4ac827ef99a9fc06173c697c?narHash=sha256-HzVao4JEHB/DKTFyQGVWfdE3kJGElBs96dtEa%2BLO73o%3D' (2025-07-01) → 'github:NixOS/nixpkgs/9c399d69b9ab8224d270a6f30c76e54780151c8d?narHash=sha256-21rMyl%2B7RDkn1qAx6B3xc0dsFOGGVxcWnvhdPpg8IHs%3D' (2025-07-09) • Updated input 'nur': 'github:nix-community/NUR/93d91108dd5ca22a3d470b376c7b5c44e1d6d2bb?narHash=sha256-w0dc97DRw%2BdJ1EKnFBZrvsipQq7BGH7iW6MqiSA2Hmc%3D' (2025-07-01) → 'github:nix-community/NUR/64185b1642f23c6340e3ebd52eabccfadfb78cfb?narHash=sha256-cquBxPthNijnDaoX6Pj5V0jQ5BhoqJOJ/DdGzeJ0xyg%3D' (2025-07-09) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/3016b4b15d13f3089db8a41ef937b13a9e33a8df?narHash=sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU%2Btt4YY%3D' (2025-06-30) → 'github:nixos/nixpkgs/1fd8bada0b6117e6c7eb54aad5813023eed37ccb?narHash=sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo%3D' (2025-07-06) • Removed input 'nur/treefmt-nix' • Removed input 'nur/treefmt-nix/nixpkgs' • Updated input 'sops-nix': 'github:Mic92/sops-nix/77c423a03b9b2b79709ea2cb63336312e78b72e2?narHash=sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M%3D' (2025-06-17) → 'github:Mic92/sops-nix/3633fc4acf03f43b260244d94c71e9e14a2f6e0d?narHash=sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA%3D' (2025-07-04) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/f11ea3ed5ee76b25814ececb29d4f445adbd3b62?narHash=sha256-Scxy0YafhihzLA6EZu13tzmAKWQqzvB0q1bc6ey5oEA%3D' (2025-06-30) → 'github:vedderb/vesc_tool/588d2fe1c7bd2d0fdff25bff5a606ec7c71f6d60?narHash=sha256-PPgnbZexrN4TTowoDN03pPwDsEKsKG/EG5RGpuTQixY%3D' (2025-07-06) --- flake.lock | 90 +++++++++++++++++++++--------------------------------- 1 file changed, 34 insertions(+), 56 deletions(-) diff --git a/flake.lock b/flake.lock index 3036660..6f8fedc 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1750903843, - "narHash": "sha256-Ng9+f0H5/dW+mq/XOKvB9uwvGbsuiiO6HrPdAcVglCs=", + "lastModified": 1751854533, + "narHash": "sha256-U/OQFplExOR1jazZY4KkaQkJqOl59xlh21HP9mI79Vc=", "owner": "nix-community", "repo": "disko", - "rev": "83c4da299c1d7d300f8c6fd3a72ac46cb0d59aae", + "rev": "16b74a1e304197248a1bc663280f2548dbfcae3c", "type": "github" }, "original": { @@ -223,11 +223,11 @@ ] }, "locked": { - "lastModified": 1750314194, - "narHash": "sha256-SjpXWEeB+UIMzuCAF94PuyAXpJdnBLF45JvI6o4wKIU=", + "lastModified": 1751702058, + "narHash": "sha256-/GTdqFzFw/Y9DSNAfzvzyCMlKjUyRKMPO+apIuaTU4A=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "a5f75f563748599d448a4a076816041d7b0fc07e", + "rev": "664ad7a2df4623037e315e4094346bff5c44e9ee", "type": "github" }, "original": { @@ -243,11 +243,11 @@ ] }, "locked": { - "lastModified": 1750792728, - "narHash": "sha256-Lh3dopA8DdY+ZoaAJPrtkZOZaFEJGSYjOdAYYgOPgE4=", + "lastModified": 1751810233, + "narHash": "sha256-kllkNbIqQi3VplgTMeGzuh1t8Gk8TauvkTRt93Km+tQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "366f00797b1efb70f2882d3da485e3c10fd3d557", + "rev": "9b0873b46c9f9e4b7aa01eb634952c206af53068", "type": "github" }, "original": { @@ -382,11 +382,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1750837715, - "narHash": "sha256-2m1ceZjbmgrJCZ2PuQZaK4in3gcg3o6rZ7WK6dr5vAA=", + "lastModified": 1752048960, + "narHash": "sha256-gATnkOe37eeVwKKYCsL+OnS2gU4MmLuZFzzWCtaKLI8=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "98236410ea0fe204d0447149537a924fb71a6d4f", + "rev": "7ced9122cff2163c6a0212b8d1ec8c33a1660806", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751211869, - "narHash": "sha256-1Cu92i1KSPbhPCKxoiVG5qnoRiKTgR5CcGSRyLpOd7Y=", + "lastModified": 1751943650, + "narHash": "sha256-7orTnNqkGGru8Je6Un6mq1T8YVVU/O5kyW4+f9C1mZQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b43c397f6c213918d6cfe6e3550abfe79b5d1c51", + "rev": "88983d4b665fb491861005137ce2b11a9f89f203", "type": "github" }, "original": { @@ -430,11 +430,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1751358783, - "narHash": "sha256-HzVao4JEHB/DKTFyQGVWfdE3kJGElBs96dtEa+LO73o=", + "lastModified": 1752053200, + "narHash": "sha256-21rMyl+7RDkn1qAx6B3xc0dsFOGGVxcWnvhdPpg8IHs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "61ac9bb9fdbeaf8e4ac827ef99a9fc06173c697c", + "rev": "9c399d69b9ab8224d270a6f30c76e54780151c8d", "type": "github" }, "original": { @@ -462,11 +462,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1751271578, - "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", + "lastModified": 1751792365, + "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df", + "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", "type": "github" }, "original": { @@ -495,15 +495,14 @@ "nur": { "inputs": { "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_2", - "treefmt-nix": "treefmt-nix" + "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1751355827, - "narHash": "sha256-w0dc97DRw+dJ1EKnFBZrvsipQq7BGH7iW6MqiSA2Hmc=", + "lastModified": 1752047019, + "narHash": "sha256-cquBxPthNijnDaoX6Pj5V0jQ5BhoqJOJ/DdGzeJ0xyg=", "owner": "nix-community", "repo": "NUR", - "rev": "93d91108dd5ca22a3d470b376c7b5c44e1d6d2bb", + "rev": "64185b1642f23c6340e3ebd52eabccfadfb78cfb", "type": "github" }, "original": { @@ -522,7 +521,7 @@ "nixpkgs" ], "systems": "systems_2", - "treefmt-nix": "treefmt-nix_2" + "treefmt-nix": "treefmt-nix" }, "locked": { "lastModified": 1743690424, @@ -614,11 +613,11 @@ ] }, "locked": { - "lastModified": 1750119275, - "narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=", + "lastModified": 1751606940, + "narHash": "sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA=", "owner": "Mic92", "repo": "sops-nix", - "rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2", + "rev": "3633fc4acf03f43b260244d94c71e9e14a2f6e0d", "type": "github" }, "original": { @@ -658,27 +657,6 @@ } }, "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "nur", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733222881, - "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "49717b5af6f80172275d47a418c9719a31a78b53", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "treefmt-nix_2": { "inputs": { "nixpkgs": [ "poetry2nix", @@ -699,7 +677,7 @@ "type": "github" } }, - "treefmt-nix_3": { + "treefmt-nix_2": { "inputs": { "nixpkgs": "nixpkgs_3" }, @@ -727,14 +705,14 @@ "nixpkgs" ], "nixpkgsOld": "nixpkgsOld", - "treefmt-nix": "treefmt-nix_3" + "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1751295902, - "narHash": "sha256-Scxy0YafhihzLA6EZu13tzmAKWQqzvB0q1bc6ey5oEA=", + "lastModified": 1751799568, + "narHash": "sha256-PPgnbZexrN4TTowoDN03pPwDsEKsKG/EG5RGpuTQixY=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "f11ea3ed5ee76b25814ececb29d4f445adbd3b62", + "rev": "588d2fe1c7bd2d0fdff25bff5a606ec7c71f6d60", "type": "github" }, "original": { From 7ef4d38552e174da094159b56c7ad2da02dd6f57 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 9 Jul 2025 17:44:57 +0200 Subject: [PATCH 485/562] Add `sshtunnel` dependency to mycli Without this package, mycli doesn't support ssh tunnels. --- users/jalr/modules/mycli/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/users/jalr/modules/mycli/default.nix b/users/jalr/modules/mycli/default.nix index 4f90e9e..e023039 100644 --- a/users/jalr/modules/mycli/default.nix +++ b/users/jalr/modules/mycli/default.nix @@ -141,7 +141,9 @@ let in { home.packages = [ - pkgs.mycli + (pkgs.mycli.overridePythonAttrs (old: { + dependencies = old.dependencies ++ [ pkgs.python3Packages.sshtunnel ]; + })) (pkgs.stdenv.mkDerivation { name = "myssh"; propagatedBuildInputs = [ From b11e07cfb1b5952aa35ef5d88526c0e2de14e3a1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sat, 12 Jul 2025 18:13:36 +0200 Subject: [PATCH 486/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/16b74a1e304197248a1bc663280f2548dbfcae3c?narHash=sha256-U/OQFplExOR1jazZY4KkaQkJqOl59xlh21HP9mI79Vc%3D' (2025-07-07) → 'github:nix-community/disko/79264292b7e3482e5702932949de9cbb69fedf6d?narHash=sha256-7LYDxKxZgBQ8LZUuolAQ8UkIB%2Bjb4A2UmiR%2BkzY9CLI%3D' (2025-07-10) • Updated input 'home-manager': 'github:nix-community/home-manager/9b0873b46c9f9e4b7aa01eb634952c206af53068?narHash=sha256-kllkNbIqQi3VplgTMeGzuh1t8Gk8TauvkTRt93Km%2BtQ%3D' (2025-07-06) → 'github:nix-community/home-manager/c6a01e54af81b381695db796a43360bf6db5702f?narHash=sha256-aRY1cYOdVdXdNjcL/Twpa27CknO7pVHxooPsBizDraE%3D' (2025-07-11) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/88983d4b665fb491861005137ce2b11a9f89f203?narHash=sha256-7orTnNqkGGru8Je6Un6mq1T8YVVU/O5kyW4%2Bf9C1mZQ%3D' (2025-07-08) → 'github:nixos/nixpkgs/10e687235226880ed5e9f33f1ffa71fe60f2638a?narHash=sha256-3MxxkU8ZXMHXcbFz7UE4M6qnIPTYGcE/7EMqlZNnVDE%3D' (2025-07-10) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/9c399d69b9ab8224d270a6f30c76e54780151c8d?narHash=sha256-21rMyl%2B7RDkn1qAx6B3xc0dsFOGGVxcWnvhdPpg8IHs%3D' (2025-07-09) → 'github:NixOS/nixpkgs/aca3b8acd1f6bc0d0e5a16acb34e054fb033bfd1?narHash=sha256-mthHgsgpRZ%2BVwS%2BAcDyoHs25QqOZBHZtrr8BJ52QvV8%3D' (2025-07-12) • Updated input 'nur': 'github:nix-community/NUR/64185b1642f23c6340e3ebd52eabccfadfb78cfb?narHash=sha256-cquBxPthNijnDaoX6Pj5V0jQ5BhoqJOJ/DdGzeJ0xyg%3D' (2025-07-09) → 'github:nix-community/NUR/304496677413ac5c05202a250e20047a516e4bc6?narHash=sha256-SwESoXWEUc9pUqSkRp8V3%2B3ht7sQHUey3BdtpJuW5xA%3D' (2025-07-12) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/1fd8bada0b6117e6c7eb54aad5813023eed37ccb?narHash=sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo%3D' (2025-07-06) → 'github:nixos/nixpkgs/9807714d6944a957c2e036f84b0ff8caf9930bc0?narHash=sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X%2BxgOL0%3D' (2025-07-08) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 6f8fedc..9813d12 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1751854533, - "narHash": "sha256-U/OQFplExOR1jazZY4KkaQkJqOl59xlh21HP9mI79Vc=", + "lastModified": 1752113600, + "narHash": "sha256-7LYDxKxZgBQ8LZUuolAQ8UkIB+jb4A2UmiR+kzY9CLI=", "owner": "nix-community", "repo": "disko", - "rev": "16b74a1e304197248a1bc663280f2548dbfcae3c", + "rev": "79264292b7e3482e5702932949de9cbb69fedf6d", "type": "github" }, "original": { @@ -243,11 +243,11 @@ ] }, "locked": { - "lastModified": 1751810233, - "narHash": "sha256-kllkNbIqQi3VplgTMeGzuh1t8Gk8TauvkTRt93Km+tQ=", + "lastModified": 1752208517, + "narHash": "sha256-aRY1cYOdVdXdNjcL/Twpa27CknO7pVHxooPsBizDraE=", "owner": "nix-community", "repo": "home-manager", - "rev": "9b0873b46c9f9e4b7aa01eb634952c206af53068", + "rev": "c6a01e54af81b381695db796a43360bf6db5702f", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751943650, - "narHash": "sha256-7orTnNqkGGru8Je6Un6mq1T8YVVU/O5kyW4+f9C1mZQ=", + "lastModified": 1752162966, + "narHash": "sha256-3MxxkU8ZXMHXcbFz7UE4M6qnIPTYGcE/7EMqlZNnVDE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "88983d4b665fb491861005137ce2b11a9f89f203", + "rev": "10e687235226880ed5e9f33f1ffa71fe60f2638a", "type": "github" }, "original": { @@ -430,11 +430,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1752053200, - "narHash": "sha256-21rMyl+7RDkn1qAx6B3xc0dsFOGGVxcWnvhdPpg8IHs=", + "lastModified": 1752336159, + "narHash": "sha256-mthHgsgpRZ+VwS+AcDyoHs25QqOZBHZtrr8BJ52QvV8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9c399d69b9ab8224d270a6f30c76e54780151c8d", + "rev": "aca3b8acd1f6bc0d0e5a16acb34e054fb033bfd1", "type": "github" }, "original": { @@ -462,11 +462,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1751792365, - "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", + "lastModified": 1751984180, + "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", + "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", "type": "github" }, "original": { @@ -498,11 +498,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1752047019, - "narHash": "sha256-cquBxPthNijnDaoX6Pj5V0jQ5BhoqJOJ/DdGzeJ0xyg=", + "lastModified": 1752331499, + "narHash": "sha256-SwESoXWEUc9pUqSkRp8V3+3ht7sQHUey3BdtpJuW5xA=", "owner": "nix-community", "repo": "NUR", - "rev": "64185b1642f23c6340e3ebd52eabccfadfb78cfb", + "rev": "304496677413ac5c05202a250e20047a516e4bc6", "type": "github" }, "original": { From 8e842387181ecdbc895ceedf408caa752d1ca499 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 13 Jul 2025 18:06:03 +0200 Subject: [PATCH 487/562] Update dependencies --- pkgs/myintercom-doorbell/default.nix | 5 ----- pkgs/myintercom-doorbell/poetry.lock | 22 +++++++++++----------- pkgs/myintercom-doorbell/pyproject.toml | 4 ++-- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/pkgs/myintercom-doorbell/default.nix b/pkgs/myintercom-doorbell/default.nix index 23a4101..37b3711 100644 --- a/pkgs/myintercom-doorbell/default.nix +++ b/pkgs/myintercom-doorbell/default.nix @@ -4,9 +4,4 @@ poetry2nix.mkPoetryApplication { pname = "myintercom-audiosocket"; version = "0.0.1"; projectDir = ./.; - overrides = poetry2nix.overrides.withDefaults (_: prev: { - urllib3 = prev.urllib3.override { - preferWheel = true; - }; - }); } diff --git a/pkgs/myintercom-doorbell/poetry.lock b/pkgs/myintercom-doorbell/poetry.lock index 818c966..0ce0d9b 100644 --- a/pkgs/myintercom-doorbell/poetry.lock +++ b/pkgs/myintercom-doorbell/poetry.lock @@ -1,24 +1,24 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "urllib3" -version = "2.0.7" +version = "2.5.0" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, - {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, + {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, + {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [metadata] -lock-version = "2.0" -python-versions = "^3.10" -content-hash = "cb8f26af67979881c24e243af0719b405141855256ced72c73b222b6c03d2bb8" +lock-version = "2.1" +python-versions = "^3.12" +content-hash = "a2502d4bca34c8c9ddc7579666a62dc15d3573a0240075cb566922a1d031831e" diff --git a/pkgs/myintercom-doorbell/pyproject.toml b/pkgs/myintercom-doorbell/pyproject.toml index 6a7878f..3a57dc6 100644 --- a/pkgs/myintercom-doorbell/pyproject.toml +++ b/pkgs/myintercom-doorbell/pyproject.toml @@ -7,8 +7,8 @@ readme = "README.md" packages = [{include = "myintercom_doorbell"}] [tool.poetry.dependencies] -python = "^3.10" -urllib3 = "^2.0.7" +python = "^3.12" +urllib3 = "^2.5.0" [tool.poetry.scripts] myintercom-doorbell-audiosocket = "myintercom_doorbell.myintercom_audiosocket:main" From e39cac2ba9d5ab7b52dd87f1041cc63c8d1429f9 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 14 Jul 2025 11:44:13 +0200 Subject: [PATCH 488/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'home-manager': 'github:nix-community/home-manager/c6a01e54af81b381695db796a43360bf6db5702f?narHash=sha256-aRY1cYOdVdXdNjcL/Twpa27CknO7pVHxooPsBizDraE%3D' (2025-07-11) → 'github:nix-community/home-manager/c26266790678863cce8e7460fdbf0d80991b1906?narHash=sha256-ReX0NG6nIAEtQQjLqeu1vUU2jjZuMlpymNtb4VQYeus%3D' (2025-07-13) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/10e687235226880ed5e9f33f1ffa71fe60f2638a?narHash=sha256-3MxxkU8ZXMHXcbFz7UE4M6qnIPTYGcE/7EMqlZNnVDE%3D' (2025-07-10) → 'github:nixos/nixpkgs/650e572363c091045cdbc5b36b0f4c1f614d3058?narHash=sha256-pzrVLKRQNPrii06Rm09Q0i0dq3wt2t2pciT/GNq5EZQ%3D' (2025-07-12) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/aca3b8acd1f6bc0d0e5a16acb34e054fb033bfd1?narHash=sha256-mthHgsgpRZ%2BVwS%2BAcDyoHs25QqOZBHZtrr8BJ52QvV8%3D' (2025-07-12) → 'github:NixOS/nixpkgs/dd2290ee7f441ab85bb45ac4fd7e6c39c8da3f6f?narHash=sha256-Ww1Y9zlrII4xQfpeT1H/yo6VZ1HHvQEzpDGFbwDJVIE%3D' (2025-07-14) • Updated input 'nur': 'github:nix-community/NUR/304496677413ac5c05202a250e20047a516e4bc6?narHash=sha256-SwESoXWEUc9pUqSkRp8V3%2B3ht7sQHUey3BdtpJuW5xA%3D' (2025-07-12) → 'github:nix-community/NUR/5b1910b8032e7adc6137e2f1a1e230e25e42ddce?narHash=sha256-HRm5gqtYWtk1rM3qzx0yFVqV1QlkOIBcLQM%2BRrthht8%3D' (2025-07-14) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/588d2fe1c7bd2d0fdff25bff5a606ec7c71f6d60?narHash=sha256-PPgnbZexrN4TTowoDN03pPwDsEKsKG/EG5RGpuTQixY%3D' (2025-07-06) → 'github:vedderb/vesc_tool/3d9bf42df4ed617a4ceb026bfebcc0f6deb5de5a?narHash=sha256-8br%2BrIBimcsccy6LZXdzjEeJC67655Ute8wCFKkFAq8%3D' (2025-07-13) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 9813d12..6363692 100644 --- a/flake.lock +++ b/flake.lock @@ -243,11 +243,11 @@ ] }, "locked": { - "lastModified": 1752208517, - "narHash": "sha256-aRY1cYOdVdXdNjcL/Twpa27CknO7pVHxooPsBizDraE=", + "lastModified": 1752391422, + "narHash": "sha256-ReX0NG6nIAEtQQjLqeu1vUU2jjZuMlpymNtb4VQYeus=", "owner": "nix-community", "repo": "home-manager", - "rev": "c6a01e54af81b381695db796a43360bf6db5702f", + "rev": "c26266790678863cce8e7460fdbf0d80991b1906", "type": "github" }, "original": { @@ -398,11 +398,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1752162966, - "narHash": "sha256-3MxxkU8ZXMHXcbFz7UE4M6qnIPTYGcE/7EMqlZNnVDE=", + "lastModified": 1752308619, + "narHash": "sha256-pzrVLKRQNPrii06Rm09Q0i0dq3wt2t2pciT/GNq5EZQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "10e687235226880ed5e9f33f1ffa71fe60f2638a", + "rev": "650e572363c091045cdbc5b36b0f4c1f614d3058", "type": "github" }, "original": { @@ -430,11 +430,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1752336159, - "narHash": "sha256-mthHgsgpRZ+VwS+AcDyoHs25QqOZBHZtrr8BJ52QvV8=", + "lastModified": 1752485623, + "narHash": "sha256-Ww1Y9zlrII4xQfpeT1H/yo6VZ1HHvQEzpDGFbwDJVIE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "aca3b8acd1f6bc0d0e5a16acb34e054fb033bfd1", + "rev": "dd2290ee7f441ab85bb45ac4fd7e6c39c8da3f6f", "type": "github" }, "original": { @@ -498,11 +498,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1752331499, - "narHash": "sha256-SwESoXWEUc9pUqSkRp8V3+3ht7sQHUey3BdtpJuW5xA=", + "lastModified": 1752483337, + "narHash": "sha256-HRm5gqtYWtk1rM3qzx0yFVqV1QlkOIBcLQM+Rrthht8=", "owner": "nix-community", "repo": "NUR", - "rev": "304496677413ac5c05202a250e20047a516e4bc6", + "rev": "5b1910b8032e7adc6137e2f1a1e230e25e42ddce", "type": "github" }, "original": { @@ -708,11 +708,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1751799568, - "narHash": "sha256-PPgnbZexrN4TTowoDN03pPwDsEKsKG/EG5RGpuTQixY=", + "lastModified": 1752412464, + "narHash": "sha256-8br+rIBimcsccy6LZXdzjEeJC67655Ute8wCFKkFAq8=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "588d2fe1c7bd2d0fdff25bff5a606ec7c71f6d60", + "rev": "3d9bf42df4ed617a4ceb026bfebcc0f6deb5de5a", "type": "github" }, "original": { From 8b994f1ed0567dd13a114e42d4bd8bbea8cba9b7 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 14 Jul 2025 12:01:45 +0200 Subject: [PATCH 489/562] Add gg-chatmix --- flake.lock | 21 +++++++++++++++++++++ flake.nix | 6 ++++++ modules/default.nix | 1 + modules/steelseries-nova-pro.nix | 7 +++++++ 4 files changed, 35 insertions(+) create mode 100644 modules/steelseries-nova-pro.nix diff --git a/flake.lock b/flake.lock index 6363692..81107dc 100644 --- a/flake.lock +++ b/flake.lock @@ -170,6 +170,26 @@ "type": "github" } }, + "gg-chatmix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1748177977, + "narHash": "sha256-xC/dOrDrZoQhUfVotj/z14iTwGlE80OqSl9S5zkevdA=", + "owner": "nilathedragon", + "repo": "gg-chatmix", + "rev": "1dadaa51794042c20ddc52d52479e8a156bd235b", + "type": "github" + }, + "original": { + "owner": "nilathedragon", + "repo": "gg-chatmix", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -569,6 +589,7 @@ "asterisk-sounds-de": "asterisk-sounds-de", "disko": "disko", "flake-utils": "flake-utils", + "gg-chatmix": "gg-chatmix", "gomod2nix": "gomod2nix", "home-manager": "home-manager", "impermanence": "impermanence", diff --git a/flake.nix b/flake.nix index 1f0eb0b..962d334 100644 --- a/flake.nix +++ b/flake.nix @@ -7,6 +7,11 @@ nix-filter.url = "github:numtide/nix-filter"; + gg-chatmix = { + url = "github:nilathedragon/gg-chatmix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + gomod2nix = { url = "github:nix-community/gomod2nix"; inputs.flake-utils.follows = "flake-utils"; @@ -215,6 +220,7 @@ inputs.impermanence.nixosModules.impermanence inputs.lanzaboote.nixosModules.lanzaboote inputs.sops-nix.nixosModules.sops + inputs.gg-chatmix.nixosModule ] ++ extraModules; }) (import ./hosts inputs); diff --git a/modules/default.nix b/modules/default.nix index f164fb0..ce090f5 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -49,6 +49,7 @@ ./remarkable.nix ./sdr.nix ./sshd.nix + ./steelseries-nova-pro.nix ./sudo.nix ./sway.nix ./udmx.nix diff --git a/modules/steelseries-nova-pro.nix b/modules/steelseries-nova-pro.nix new file mode 100644 index 0000000..d432dca --- /dev/null +++ b/modules/steelseries-nova-pro.nix @@ -0,0 +1,7 @@ +{ lib, config, ... }: + +lib.mkIf config.jalr.gui.enable { + services.gg-chatmix = { + enable = true; + }; +} From 6e4c7c462b97a8671db36f75ae0e546e174d8fad Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 14 Jul 2025 13:34:21 +0200 Subject: [PATCH 490/562] Disable raop-sink Disable it to prevent auto-loading the module. This should prevent messing up the Spotify stream at the office. --- modules/pipewire.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/pipewire.nix b/modules/pipewire.nix index 3e03a70..29e1845 100644 --- a/modules/pipewire.nix +++ b/modules/pipewire.nix @@ -36,11 +36,13 @@ lib.mkIf config.jalr.gui.enable { } ]; }; + /* pipewire."raop-sink" = { "context.modules" = [ { name = "libpipewire-module-raop-discover"; args = { }; } ]; }; + */ }; raopOpenFirewall = true; }; From 6ac6d3f89d92ea8eff6144bfac4d814a14ee82e3 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 17 Jul 2025 03:13:52 +0200 Subject: [PATCH 491/562] Add git as system package This should fix error: executing 'git': No such file or directory The error occurs sometimes for flake inputs. --- modules/nix.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/nix.nix b/modules/nix.nix index 0be49a4..eb8f9b4 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -52,5 +52,6 @@ environment.systemPackages = with pkgs; [ cached-nix-shell + git ]; } From e7d50d0b1155ded9acebd07268fd7599fbb015e6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 18 Jul 2025 00:38:23 +0200 Subject: [PATCH 492/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/79264292b7e3482e5702932949de9cbb69fedf6d?narHash=sha256-7LYDxKxZgBQ8LZUuolAQ8UkIB%2Bjb4A2UmiR%2BkzY9CLI%3D' (2025-07-10) → 'github:nix-community/disko/d5ad4485e6f2edcc06751df65c5e16572877db88?narHash=sha256-PkaR0qmyP9q/MDN3uYa%2BRLeBA0PjvEQiM0rTDDBXkL8%3D' (2025-07-17) • Updated input 'home-manager': 'github:nix-community/home-manager/c26266790678863cce8e7460fdbf0d80991b1906?narHash=sha256-ReX0NG6nIAEtQQjLqeu1vUU2jjZuMlpymNtb4VQYeus%3D' (2025-07-13) → 'github:nix-community/home-manager/c718918222bdb104397762dea67e6b397a7927fe?narHash=sha256-5dn97vIYxn6VozKePOQSDxVCsrl38nDdMJXx86KIJH0%3D' (2025-07-17) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/7ced9122cff2163c6a0212b8d1ec8c33a1660806?narHash=sha256-gATnkOe37eeVwKKYCsL%2BOnS2gU4MmLuZFzzWCtaKLI8%3D' (2025-07-09) → 'github:nixos/nixos-hardware/d1bfa8f6ccfb5c383e1eba609c1eb67ca24ed153?narHash=sha256-P8J72psdc/rWliIvp8jUpoQ6qRDlVzgSDDlgkaXQ0Fw%3D' (2025-07-16) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/650e572363c091045cdbc5b36b0f4c1f614d3058?narHash=sha256-pzrVLKRQNPrii06Rm09Q0i0dq3wt2t2pciT/GNq5EZQ%3D' (2025-07-12) → 'github:nixos/nixpkgs/32a4e87942101f1c9f9865e04dc3ddb175f5f32e?narHash=sha256-f3pO%2B9lg66mV7IMmmIqG4PL3223TYMlnlw%2Bpnpelbss%3D' (2025-07-15) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/dd2290ee7f441ab85bb45ac4fd7e6c39c8da3f6f?narHash=sha256-Ww1Y9zlrII4xQfpeT1H/yo6VZ1HHvQEzpDGFbwDJVIE%3D' (2025-07-14) → 'github:NixOS/nixpkgs/0f16a997d7712bc6d706c0cbfc42e536d3cdb4f4?narHash=sha256-xrHo3fAEwaNYAiO2rv46bqCrD1i6KqRwRy8X8VmIcP4%3D' (2025-07-17) • Updated input 'nur': 'github:nix-community/NUR/5b1910b8032e7adc6137e2f1a1e230e25e42ddce?narHash=sha256-HRm5gqtYWtk1rM3qzx0yFVqV1QlkOIBcLQM%2BRrthht8%3D' (2025-07-14) → 'github:nix-community/NUR/3c776e8afa33406dfe24292fb70d4e259d4dd40e?narHash=sha256-9rtLCBqhNaz97bC%2BMOSUqwN/QUimVG3D/5O8HKhNIeU%3D' (2025-07-17) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/9807714d6944a957c2e036f84b0ff8caf9930bc0?narHash=sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X%2BxgOL0%3D' (2025-07-08) → 'github:nixos/nixpkgs/62e0f05ede1da0d54515d4ea8ce9c733f12d9f08?narHash=sha256-JHQbm%2BOcGp32wAsXTE/FLYGNpb%2B4GLi5oTvCxwSoBOA%3D' (2025-07-14) • Updated input 'sops-nix': 'github:Mic92/sops-nix/3633fc4acf03f43b260244d94c71e9e14a2f6e0d?narHash=sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA%3D' (2025-07-04) → 'github:Mic92/sops-nix/2c8def626f54708a9c38a5861866660395bb3461?narHash=sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U%3D' (2025-07-15) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/3d9bf42df4ed617a4ceb026bfebcc0f6deb5de5a?narHash=sha256-8br%2BrIBimcsccy6LZXdzjEeJC67655Ute8wCFKkFAq8%3D' (2025-07-13) → 'github:vedderb/vesc_tool/16f6216c87b04db5e68071a840e3398e20ad1aad?narHash=sha256-L3d52lZpZlteZSHgSDFd%2BQ6BD24BiLH4KjBFD4Sasp4%3D' (2025-07-14) --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index 81107dc..96c19fc 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1752113600, - "narHash": "sha256-7LYDxKxZgBQ8LZUuolAQ8UkIB+jb4A2UmiR+kzY9CLI=", + "lastModified": 1752718651, + "narHash": "sha256-PkaR0qmyP9q/MDN3uYa+RLeBA0PjvEQiM0rTDDBXkL8=", "owner": "nix-community", "repo": "disko", - "rev": "79264292b7e3482e5702932949de9cbb69fedf6d", + "rev": "d5ad4485e6f2edcc06751df65c5e16572877db88", "type": "github" }, "original": { @@ -263,11 +263,11 @@ ] }, "locked": { - "lastModified": 1752391422, - "narHash": "sha256-ReX0NG6nIAEtQQjLqeu1vUU2jjZuMlpymNtb4VQYeus=", + "lastModified": 1752780124, + "narHash": "sha256-5dn97vIYxn6VozKePOQSDxVCsrl38nDdMJXx86KIJH0=", "owner": "nix-community", "repo": "home-manager", - "rev": "c26266790678863cce8e7460fdbf0d80991b1906", + "rev": "c718918222bdb104397762dea67e6b397a7927fe", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1752048960, - "narHash": "sha256-gATnkOe37eeVwKKYCsL+OnS2gU4MmLuZFzzWCtaKLI8=", + "lastModified": 1752666637, + "narHash": "sha256-P8J72psdc/rWliIvp8jUpoQ6qRDlVzgSDDlgkaXQ0Fw=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "7ced9122cff2163c6a0212b8d1ec8c33a1660806", + "rev": "d1bfa8f6ccfb5c383e1eba609c1eb67ca24ed153", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1752308619, - "narHash": "sha256-pzrVLKRQNPrii06Rm09Q0i0dq3wt2t2pciT/GNq5EZQ=", + "lastModified": 1752620740, + "narHash": "sha256-f3pO+9lg66mV7IMmmIqG4PL3223TYMlnlw+pnpelbss=", "owner": "nixos", "repo": "nixpkgs", - "rev": "650e572363c091045cdbc5b36b0f4c1f614d3058", + "rev": "32a4e87942101f1c9f9865e04dc3ddb175f5f32e", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1752485623, - "narHash": "sha256-Ww1Y9zlrII4xQfpeT1H/yo6VZ1HHvQEzpDGFbwDJVIE=", + "lastModified": 1752791821, + "narHash": "sha256-xrHo3fAEwaNYAiO2rv46bqCrD1i6KqRwRy8X8VmIcP4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dd2290ee7f441ab85bb45ac4fd7e6c39c8da3f6f", + "rev": "0f16a997d7712bc6d706c0cbfc42e536d3cdb4f4", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1751984180, - "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", + "lastModified": 1752480373, + "narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", + "rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1752483337, - "narHash": "sha256-HRm5gqtYWtk1rM3qzx0yFVqV1QlkOIBcLQM+Rrthht8=", + "lastModified": 1752790148, + "narHash": "sha256-9rtLCBqhNaz97bC+MOSUqwN/QUimVG3D/5O8HKhNIeU=", "owner": "nix-community", "repo": "NUR", - "rev": "5b1910b8032e7adc6137e2f1a1e230e25e42ddce", + "rev": "3c776e8afa33406dfe24292fb70d4e259d4dd40e", "type": "github" }, "original": { @@ -634,11 +634,11 @@ ] }, "locked": { - "lastModified": 1751606940, - "narHash": "sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA=", + "lastModified": 1752544651, + "narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=", "owner": "Mic92", "repo": "sops-nix", - "rev": "3633fc4acf03f43b260244d94c71e9e14a2f6e0d", + "rev": "2c8def626f54708a9c38a5861866660395bb3461", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1752412464, - "narHash": "sha256-8br+rIBimcsccy6LZXdzjEeJC67655Ute8wCFKkFAq8=", + "lastModified": 1752512246, + "narHash": "sha256-L3d52lZpZlteZSHgSDFd+Q6BD24BiLH4KjBFD4Sasp4=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "3d9bf42df4ed617a4ceb026bfebcc0f6deb5de5a", + "rev": "16f6216c87b04db5e68071a840e3398e20ad1aad", "type": "github" }, "original": { From ecec4e9e592cf858403d701d1e3e4361e2dc2273 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 18 Jul 2025 10:34:49 +0200 Subject: [PATCH 493/562] Add basic logging for powerUp and powerDown --- hosts/copper/services/default.nix | 1 + hosts/copper/services/timelog.nix | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 hosts/copper/services/timelog.nix diff --git a/hosts/copper/services/default.nix b/hosts/copper/services/default.nix index 93eb10c..663c3a8 100644 --- a/hosts/copper/services/default.nix +++ b/hosts/copper/services/default.nix @@ -2,6 +2,7 @@ imports = [ ./illuminanced.nix ./ntfy.nix + ./timelog.nix ./webdev.nix ]; } diff --git a/hosts/copper/services/timelog.nix b/hosts/copper/services/timelog.nix new file mode 100644 index 0000000..3343897 --- /dev/null +++ b/hosts/copper/services/timelog.nix @@ -0,0 +1,10 @@ +{ + powerManagement = { + powerUpCommands = '' + echo "timelog: powerUp" + ''; + powerDownCommands = '' + echo "timelog: powerDown" + ''; + }; +} From 1a809b4fb8ca532caaa37d62e8c64b722f6dcb5d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 18 Jul 2025 10:36:43 +0200 Subject: [PATCH 494/562] Add Weinturm it mailbox --- users/jalr/default.nix | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/users/jalr/default.nix b/users/jalr/default.nix index d08ba2e..ac85cd2 100644 --- a/users/jalr/default.nix +++ b/users/jalr/default.nix @@ -174,6 +174,31 @@ in profiles = [ "default" ]; }; }; + "Weinturm Open Air - IT" = { + userName = "it@weinturm-open-air.de"; + address = "it@weinturm-open-air.de"; + realName = "Weinturm Open Air IT"; + imap = { + host = "mail.agenturserver.de"; + port = 143; + tls = { + enable = true; + useStartTls = true; + }; + }; + smtp = { + host = "mail.agenturserver.de"; + port = 587; + tls = { + enable = true; + useStartTls = true; + }; + }; + thunderbird = { + enable = true; + profiles = [ "default" ]; + }; + }; }; }; }; From 5bebf82b82716bd30bbf827ac2dfd4f28150a1b1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 22 Jul 2025 10:54:32 +0200 Subject: [PATCH 495/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/d5ad4485e6f2edcc06751df65c5e16572877db88?narHash=sha256-PkaR0qmyP9q/MDN3uYa%2BRLeBA0PjvEQiM0rTDDBXkL8%3D' (2025-07-17) → 'github:nix-community/disko/545aba02960caa78a31bd9a8709a0ad4b6320a5c?narHash=sha256-7lrVrE0jSvZHrxEzvnfHFE/Wkk9DDqb%2BmYCodI5uuB8%3D' (2025-07-21) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/664ad7a2df4623037e315e4094346bff5c44e9ee?narHash=sha256-/GTdqFzFw/Y9DSNAfzvzyCMlKjUyRKMPO%2BapIuaTU4A%3D' (2025-07-05) → 'github:nix-community/gomod2nix/be828766411cad04c194c8f714d46aa2b2596362?narHash=sha256-MaaWYgN/nia7xJcOYLBtPk%2BcFo7X2zEM1d9xIGPQrLU%3D' (2025-07-21) • Updated input 'home-manager': 'github:nix-community/home-manager/c718918222bdb104397762dea67e6b397a7927fe?narHash=sha256-5dn97vIYxn6VozKePOQSDxVCsrl38nDdMJXx86KIJH0%3D' (2025-07-17) → 'github:nix-community/home-manager/adf195f021a8cbb0c317f75b52e96c82616526f9?narHash=sha256-KerePGJYX47ex6OY3CWsid4AltO2gDtQROunYJ0eCEE%3D' (2025-07-20) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/d1bfa8f6ccfb5c383e1eba609c1eb67ca24ed153?narHash=sha256-P8J72psdc/rWliIvp8jUpoQ6qRDlVzgSDDlgkaXQ0Fw%3D' (2025-07-16) → 'github:nixos/nixos-hardware/cc66fddc6cb04ab479a1bb062f4d4da27c936a22?narHash=sha256-nFxE8lk9JvGelxClCmwuJYftbHqwnc01dRN4DVLUroM%3D' (2025-07-21) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/32a4e87942101f1c9f9865e04dc3ddb175f5f32e?narHash=sha256-f3pO%2B9lg66mV7IMmmIqG4PL3223TYMlnlw%2Bpnpelbss%3D' (2025-07-15) → 'github:nixos/nixpkgs/a14f718bc528ad298bd95a18a9ac9a7d7c0ef8e5?narHash=sha256-%2BxNQQqqCx47sbSbwwj/aQL5Xrv6wlgiIU/yKWVAtnc4%3D' (2025-07-20) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/0f16a997d7712bc6d706c0cbfc42e536d3cdb4f4?narHash=sha256-xrHo3fAEwaNYAiO2rv46bqCrD1i6KqRwRy8X8VmIcP4%3D' (2025-07-17) → 'github:NixOS/nixpkgs/22cad72fc0492622974af5ca560952e878ba184f?narHash=sha256-TEjnWl8148gEUi8CljOyhb5StLfFkpZQmAPmEI7HTnE%3D' (2025-07-22) • Updated input 'nur': 'github:nix-community/NUR/3c776e8afa33406dfe24292fb70d4e259d4dd40e?narHash=sha256-9rtLCBqhNaz97bC%2BMOSUqwN/QUimVG3D/5O8HKhNIeU%3D' (2025-07-17) → 'github:nix-community/NUR/690f8c0102a674b35ac4e919bb34a8ef10d0e84c?narHash=sha256-ftWDv9eUl0cNsJfhwx7RrIZvtUt0SH3LoGsBZfGyWDw%3D' (2025-07-22) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/62e0f05ede1da0d54515d4ea8ce9c733f12d9f08?narHash=sha256-JHQbm%2BOcGp32wAsXTE/FLYGNpb%2B4GLi5oTvCxwSoBOA%3D' (2025-07-14) → 'github:nixos/nixpkgs/c87b95e25065c028d31a94f06a62927d18763fdf?narHash=sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc%3D' (2025-07-19) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 96c19fc..dc3bd38 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1752718651, - "narHash": "sha256-PkaR0qmyP9q/MDN3uYa+RLeBA0PjvEQiM0rTDDBXkL8=", + "lastModified": 1753140376, + "narHash": "sha256-7lrVrE0jSvZHrxEzvnfHFE/Wkk9DDqb+mYCodI5uuB8=", "owner": "nix-community", "repo": "disko", - "rev": "d5ad4485e6f2edcc06751df65c5e16572877db88", + "rev": "545aba02960caa78a31bd9a8709a0ad4b6320a5c", "type": "github" }, "original": { @@ -243,11 +243,11 @@ ] }, "locked": { - "lastModified": 1751702058, - "narHash": "sha256-/GTdqFzFw/Y9DSNAfzvzyCMlKjUyRKMPO+apIuaTU4A=", + "lastModified": 1753096219, + "narHash": "sha256-MaaWYgN/nia7xJcOYLBtPk+cFo7X2zEM1d9xIGPQrLU=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "664ad7a2df4623037e315e4094346bff5c44e9ee", + "rev": "be828766411cad04c194c8f714d46aa2b2596362", "type": "github" }, "original": { @@ -263,11 +263,11 @@ ] }, "locked": { - "lastModified": 1752780124, - "narHash": "sha256-5dn97vIYxn6VozKePOQSDxVCsrl38nDdMJXx86KIJH0=", + "lastModified": 1753055804, + "narHash": "sha256-KerePGJYX47ex6OY3CWsid4AltO2gDtQROunYJ0eCEE=", "owner": "nix-community", "repo": "home-manager", - "rev": "c718918222bdb104397762dea67e6b397a7927fe", + "rev": "adf195f021a8cbb0c317f75b52e96c82616526f9", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1752666637, - "narHash": "sha256-P8J72psdc/rWliIvp8jUpoQ6qRDlVzgSDDlgkaXQ0Fw=", + "lastModified": 1753122741, + "narHash": "sha256-nFxE8lk9JvGelxClCmwuJYftbHqwnc01dRN4DVLUroM=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "d1bfa8f6ccfb5c383e1eba609c1eb67ca24ed153", + "rev": "cc66fddc6cb04ab479a1bb062f4d4da27c936a22", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1752620740, - "narHash": "sha256-f3pO+9lg66mV7IMmmIqG4PL3223TYMlnlw+pnpelbss=", + "lastModified": 1752995727, + "narHash": "sha256-+xNQQqqCx47sbSbwwj/aQL5Xrv6wlgiIU/yKWVAtnc4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "32a4e87942101f1c9f9865e04dc3ddb175f5f32e", + "rev": "a14f718bc528ad298bd95a18a9ac9a7d7c0ef8e5", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1752791821, - "narHash": "sha256-xrHo3fAEwaNYAiO2rv46bqCrD1i6KqRwRy8X8VmIcP4=", + "lastModified": 1753174360, + "narHash": "sha256-TEjnWl8148gEUi8CljOyhb5StLfFkpZQmAPmEI7HTnE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0f16a997d7712bc6d706c0cbfc42e536d3cdb4f4", + "rev": "22cad72fc0492622974af5ca560952e878ba184f", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1752480373, - "narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=", + "lastModified": 1752950548, + "narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08", + "rev": "c87b95e25065c028d31a94f06a62927d18763fdf", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1752790148, - "narHash": "sha256-9rtLCBqhNaz97bC+MOSUqwN/QUimVG3D/5O8HKhNIeU=", + "lastModified": 1753166477, + "narHash": "sha256-ftWDv9eUl0cNsJfhwx7RrIZvtUt0SH3LoGsBZfGyWDw=", "owner": "nix-community", "repo": "NUR", - "rev": "3c776e8afa33406dfe24292fb70d4e259d4dd40e", + "rev": "690f8c0102a674b35ac4e919bb34a8ef10d0e84c", "type": "github" }, "original": { From f2413ad11687841d745750424c8f0ffb8f8f79a4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 23 Jul 2025 21:33:41 +0200 Subject: [PATCH 496/562] Add treestyletab.css --- users/jalr/modules/firefox/default.nix | 2 ++ users/jalr/modules/firefox/treestyletab.css | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 users/jalr/modules/firefox/treestyletab.css diff --git a/users/jalr/modules/firefox/default.nix b/users/jalr/modules/firefox/default.nix index af9224b..62b3eb5 100644 --- a/users/jalr/modules/firefox/default.nix +++ b/users/jalr/modules/firefox/default.nix @@ -380,4 +380,6 @@ enable = true; browsers = [ "firefox" ]; }; + + xdg.configFile."treestyletab.css".source = ./treestyletab.css; } diff --git a/users/jalr/modules/firefox/treestyletab.css b/users/jalr/modules/firefox/treestyletab.css new file mode 100644 index 0000000..b5b430a --- /dev/null +++ b/users/jalr/modules/firefox/treestyletab.css @@ -0,0 +1,17 @@ +@media (prefers-color-scheme: light) { + tab-item:not(.active):not(.bundled-active):not(.highlighted), + #background { + --toolbar-non-lwt-bgcolor: ThreeDShadow; + --toolbar-non-lwt-textcolor: ButtonText; + } +} + +@media (prefers-color-scheme: dark) { + #tabbar { + background-color: var(--in-content-page-background); + } +} + +tab-item.coloredTabsHue0 tab-item-substance { + background: transparent; +} From 6525b69c43aad47aa90d018e0c9d08ad51a8fa26 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 28 Jul 2025 10:04:27 +0200 Subject: [PATCH 497/562] Add tio --- users/jalr/modules/cli/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/modules/cli/default.nix b/users/jalr/modules/cli/default.nix index 13c5f0b..5ab60f5 100644 --- a/users/jalr/modules/cli/default.nix +++ b/users/jalr/modules/cli/default.nix @@ -14,6 +14,7 @@ lsof ncdu ripgrep + tio unzip ] ++ (if ! nixosConfig.jalr.workstation.enable then [ ] else [ dnsutils From ae3c4634160d6dbdca5e616a4d81d04a07e5b7e6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 28 Jul 2025 10:05:35 +0200 Subject: [PATCH 498/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'home-manager': 'github:nix-community/home-manager/adf195f021a8cbb0c317f75b52e96c82616526f9?narHash=sha256-KerePGJYX47ex6OY3CWsid4AltO2gDtQROunYJ0eCEE%3D' (2025-07-20) → 'github:nix-community/home-manager/fc3add429f21450359369af74c2375cb34a2d204?narHash=sha256-oV695RvbAE4%2BR9pcsT9shmp6zE/%2BIZe6evHWX63f2Qg%3D' (2025-07-27) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/a14f718bc528ad298bd95a18a9ac9a7d7c0ef8e5?narHash=sha256-%2BxNQQqqCx47sbSbwwj/aQL5Xrv6wlgiIU/yKWVAtnc4%3D' (2025-07-20) → 'github:nixos/nixpkgs/3ff0e34b1383648053bba8ed03f201d3466f90c9?narHash=sha256-CdX2Rtvp5I8HGu9swBmYuq%2BILwRxpXdJwlpg8jvN4tU%3D' (2025-07-24) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/22cad72fc0492622974af5ca560952e878ba184f?narHash=sha256-TEjnWl8148gEUi8CljOyhb5StLfFkpZQmAPmEI7HTnE%3D' (2025-07-22) → 'github:NixOS/nixpkgs/2014a8b27a90ef142462b5dfabc8e73bb95bec8b?narHash=sha256-vbjK4COEWyg8xX6GjyVEGZVIodA3DWyeqxnObyfqzas%3D' (2025-07-28) • Updated input 'nur': 'github:nix-community/NUR/690f8c0102a674b35ac4e919bb34a8ef10d0e84c?narHash=sha256-ftWDv9eUl0cNsJfhwx7RrIZvtUt0SH3LoGsBZfGyWDw%3D' (2025-07-22) → 'github:nix-community/NUR/0ca9aba7c440a77873111b7a52913cfaac5ddb08?narHash=sha256-OEqqcfz%2BDny%2BIWxTg/gGyf4Pr21TevNHFKxuVVo4NLs%3D' (2025-07-28) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/c87b95e25065c028d31a94f06a62927d18763fdf?narHash=sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc%3D' (2025-07-19) → 'github:nixos/nixpkgs/7fd36ee82c0275fb545775cc5e4d30542899511d?narHash=sha256-9h7%2B4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ%2BSJjk%3D' (2025-07-25) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index dc3bd38..4dfbdd9 100644 --- a/flake.lock +++ b/flake.lock @@ -263,11 +263,11 @@ ] }, "locked": { - "lastModified": 1753055804, - "narHash": "sha256-KerePGJYX47ex6OY3CWsid4AltO2gDtQROunYJ0eCEE=", + "lastModified": 1753592768, + "narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=", "owner": "nix-community", "repo": "home-manager", - "rev": "adf195f021a8cbb0c317f75b52e96c82616526f9", + "rev": "fc3add429f21450359369af74c2375cb34a2d204", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1752995727, - "narHash": "sha256-+xNQQqqCx47sbSbwwj/aQL5Xrv6wlgiIU/yKWVAtnc4=", + "lastModified": 1753345091, + "narHash": "sha256-CdX2Rtvp5I8HGu9swBmYuq+ILwRxpXdJwlpg8jvN4tU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a14f718bc528ad298bd95a18a9ac9a7d7c0ef8e5", + "rev": "3ff0e34b1383648053bba8ed03f201d3466f90c9", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1753174360, - "narHash": "sha256-TEjnWl8148gEUi8CljOyhb5StLfFkpZQmAPmEI7HTnE=", + "lastModified": 1753689080, + "narHash": "sha256-vbjK4COEWyg8xX6GjyVEGZVIodA3DWyeqxnObyfqzas=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "22cad72fc0492622974af5ca560952e878ba184f", + "rev": "2014a8b27a90ef142462b5dfabc8e73bb95bec8b", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1752950548, - "narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=", + "lastModified": 1753429684, + "narHash": "sha256-9h7+4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ+SJjk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c87b95e25065c028d31a94f06a62927d18763fdf", + "rev": "7fd36ee82c0275fb545775cc5e4d30542899511d", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1753166477, - "narHash": "sha256-ftWDv9eUl0cNsJfhwx7RrIZvtUt0SH3LoGsBZfGyWDw=", + "lastModified": 1753686169, + "narHash": "sha256-OEqqcfz+Dny+IWxTg/gGyf4Pr21TevNHFKxuVVo4NLs=", "owner": "nix-community", "repo": "NUR", - "rev": "690f8c0102a674b35ac4e919bb34a8ef10d0e84c", + "rev": "0ca9aba7c440a77873111b7a52913cfaac5ddb08", "type": "github" }, "original": { From c1d55914ddba8c5c0c1fc5f155da15e8d98ea6ab Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 30 Jul 2025 20:56:53 +0200 Subject: [PATCH 499/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:nixos/nixpkgs/3ff0e34b1383648053bba8ed03f201d3466f90c9?narHash=sha256-CdX2Rtvp5I8HGu9swBmYuq%2BILwRxpXdJwlpg8jvN4tU%3D' (2025-07-24) → 'github:nixos/nixpkgs/1f08a4df998e21f4e8be8fb6fbf61d11a1a5076a?narHash=sha256-%2BjkEZxs7bfOKfBIk430K%2BtK9IvXlwzqQQnppC2ZKFj4%3D' (2025-07-29) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/2014a8b27a90ef142462b5dfabc8e73bb95bec8b?narHash=sha256-vbjK4COEWyg8xX6GjyVEGZVIodA3DWyeqxnObyfqzas%3D' (2025-07-28) → 'github:NixOS/nixpkgs/eedcb0398ca492b960103c0f6413eae0d0947ac9?narHash=sha256-dMMuPj1ENyknnVt7m90uQAq26PH4j/Fs1qZ9y/Zu%2B44%3D' (2025-07-30) • Updated input 'nur': 'github:nix-community/NUR/0ca9aba7c440a77873111b7a52913cfaac5ddb08?narHash=sha256-OEqqcfz%2BDny%2BIWxTg/gGyf4Pr21TevNHFKxuVVo4NLs%3D' (2025-07-28) → 'github:nix-community/NUR/3ae985f54bc999536cee4f6a7e4802a7402c6551?narHash=sha256-2YJ6A3BIxCoFfGL6mNv%2B0ZyrgN3ZxiHFQwrKTd993zk%3D' (2025-07-30) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/7fd36ee82c0275fb545775cc5e4d30542899511d?narHash=sha256-9h7%2B4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ%2BSJjk%3D' (2025-07-25) → 'github:nixos/nixpkgs/dc9637876d0dcc8c9e5e22986b857632effeb727?narHash=sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM%3D' (2025-07-28) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/16f6216c87b04db5e68071a840e3398e20ad1aad?narHash=sha256-L3d52lZpZlteZSHgSDFd%2BQ6BD24BiLH4KjBFD4Sasp4%3D' (2025-07-14) → 'github:vedderb/vesc_tool/f3b8c6f8c7b31420b0981448e6abb4bd5ddedbaa?narHash=sha256-r6Sxa8a2DNseWZ86vp/Wm22qP9KM7%2BZpkyRtQ1xh2hE%3D' (2025-07-30) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 4dfbdd9..f4ba2e6 100644 --- a/flake.lock +++ b/flake.lock @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1753345091, - "narHash": "sha256-CdX2Rtvp5I8HGu9swBmYuq+ILwRxpXdJwlpg8jvN4tU=", + "lastModified": 1753749649, + "narHash": "sha256-+jkEZxs7bfOKfBIk430K+tK9IvXlwzqQQnppC2ZKFj4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3ff0e34b1383648053bba8ed03f201d3466f90c9", + "rev": "1f08a4df998e21f4e8be8fb6fbf61d11a1a5076a", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1753689080, - "narHash": "sha256-vbjK4COEWyg8xX6GjyVEGZVIodA3DWyeqxnObyfqzas=", + "lastModified": 1753901792, + "narHash": "sha256-dMMuPj1ENyknnVt7m90uQAq26PH4j/Fs1qZ9y/Zu+44=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2014a8b27a90ef142462b5dfabc8e73bb95bec8b", + "rev": "eedcb0398ca492b960103c0f6413eae0d0947ac9", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1753429684, - "narHash": "sha256-9h7+4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ+SJjk=", + "lastModified": 1753694789, + "narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "7fd36ee82c0275fb545775cc5e4d30542899511d", + "rev": "dc9637876d0dcc8c9e5e22986b857632effeb727", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1753686169, - "narHash": "sha256-OEqqcfz+Dny+IWxTg/gGyf4Pr21TevNHFKxuVVo4NLs=", + "lastModified": 1753901181, + "narHash": "sha256-2YJ6A3BIxCoFfGL6mNv+0ZyrgN3ZxiHFQwrKTd993zk=", "owner": "nix-community", "repo": "NUR", - "rev": "0ca9aba7c440a77873111b7a52913cfaac5ddb08", + "rev": "3ae985f54bc999536cee4f6a7e4802a7402c6551", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1752512246, - "narHash": "sha256-L3d52lZpZlteZSHgSDFd+Q6BD24BiLH4KjBFD4Sasp4=", + "lastModified": 1753857766, + "narHash": "sha256-r6Sxa8a2DNseWZ86vp/Wm22qP9KM7+ZpkyRtQ1xh2hE=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "16f6216c87b04db5e68071a840e3398e20ad1aad", + "rev": "f3b8c6f8c7b31420b0981448e6abb4bd5ddedbaa", "type": "github" }, "original": { From cad6f04d73e610f9d95f1627a0868469eac3ff6e Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 30 Jul 2025 23:41:40 +0200 Subject: [PATCH 500/562] Use boolean to enable/disable sway and gnome --- hosts/cadmium/configuration.nix | 5 ++++- hosts/copper/configuration.nix | 5 ++++- modules/default.nix | 7 ++----- modules/gnome.nix | 2 +- modules/sway.nix | 4 ++-- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/hosts/cadmium/configuration.nix b/hosts/cadmium/configuration.nix index 1bb11aa..620fd71 100644 --- a/hosts/cadmium/configuration.nix +++ b/hosts/cadmium/configuration.nix @@ -47,7 +47,10 @@ bootloader = "systemd-boot"; bluetooth.enable = true; uefi.enable = true; - gui.enable = true; + gui = { + enable = true; + sway.enable = true; + }; workstation.enable = true; sdr.enable = true; libvirt.enable = true; diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index d6b5718..bcca713 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -59,7 +59,10 @@ bootloader = "lanzaboote"; bluetooth.enable = true; uefi.enable = true; - gui.enable = true; + gui = { + enable = true; + sway.enable = true; + }; workstation.enable = true; sdr.enable = true; libvirt.enable = true; diff --git a/modules/default.nix b/modules/default.nix index ce090f5..7e5f2aa 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -4,11 +4,8 @@ options.jalr = { gui = { enable = lib.mkEnableOption "GUI"; - desktop = lib.mkOption { - type = lib.types.nullOr (lib.types.enum [ "sway" "gnome" ]); - default = "sway"; - description = "Desktop environment to install"; - }; + sway.enable = lib.mkEnableOption "sway"; + gnome.enable = lib.mkEnableOption "gnome"; }; workstation.enable = lib.mkEnableOption "Workstation"; }; diff --git a/modules/gnome.nix b/modules/gnome.nix index 528934b..1ad2995 100644 --- a/modules/gnome.nix +++ b/modules/gnome.nix @@ -1,6 +1,6 @@ { config, lib, ... }: -lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "gnome") { +lib.mkIf (config.jalr.gui.enable && config.jalr.gui.gnome.enable) { services.xserver = { enable = true; desktopManager.gnome.enable = true; diff --git a/modules/sway.nix b/modules/sway.nix index 286fa6e..0d12723 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -1,6 +1,6 @@ { config, lib, pkgs, ... }: -lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { +lib.mkIf (config.jalr.gui.enable && config.jalr.gui.sway.enable) { programs = { wshowkeys.enable = true; dconf.enable = true; @@ -17,7 +17,7 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.desktop == "sway") { let command = pkgs.writeShellScript "sway-init" '' systemctl --user import-environment PATH - systemctl --user restart xdg-desktop-portal.service + #systemctl --user restart xdg-desktop-portal.service exec ${pkgs.sway}/bin/sway ''; user = "jalr"; From 17eb4d26f06637119f0495b69a638d65d5106085 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 5 Aug 2025 00:21:08 +0200 Subject: [PATCH 501/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/be828766411cad04c194c8f714d46aa2b2596362?narHash=sha256-MaaWYgN/nia7xJcOYLBtPk%2BcFo7X2zEM1d9xIGPQrLU%3D' (2025-07-21) → 'github:nix-community/gomod2nix/7f963246a71626c7fc70b431a315c4388a0c95cf?narHash=sha256-YVoIFDCDpYuU3riaDEJ3xiGdPOtsx4sR5eTzHTytPV8%3D' (2025-08-01) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/cc66fddc6cb04ab479a1bb062f4d4da27c936a22?narHash=sha256-nFxE8lk9JvGelxClCmwuJYftbHqwnc01dRN4DVLUroM%3D' (2025-07-21) → 'github:nixos/nixos-hardware/9368056b73efb46eb14fd4667b99e0f81b805f28?narHash=sha256-Ry1gd1BQrNVJJfT11cpVP0FY8XFMx4DJV2IDp01CH9w%3D' (2025-08-04) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/1f08a4df998e21f4e8be8fb6fbf61d11a1a5076a?narHash=sha256-%2BjkEZxs7bfOKfBIk430K%2BtK9IvXlwzqQQnppC2ZKFj4%3D' (2025-07-29) → 'github:nixos/nixpkgs/ce01daebf8489ba97bd1609d185ea276efdeb121?narHash=sha256-1ziydHSiDuSnaiPzCQh1mRFBsM2d2yRX9I%2B5OPGEmIE%3D' (2025-08-04) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/eedcb0398ca492b960103c0f6413eae0d0947ac9?narHash=sha256-dMMuPj1ENyknnVt7m90uQAq26PH4j/Fs1qZ9y/Zu%2B44%3D' (2025-07-30) → 'github:NixOS/nixpkgs/cab778239e705082fe97bb4990e0d24c50924c04?narHash=sha256-lgmUyVQL9tSnvvIvBp7x1euhkkCho7n3TMzgjdvgPoU%3D' (2025-08-04) • Updated input 'nur': 'github:nix-community/NUR/3ae985f54bc999536cee4f6a7e4802a7402c6551?narHash=sha256-2YJ6A3BIxCoFfGL6mNv%2B0ZyrgN3ZxiHFQwrKTd993zk%3D' (2025-07-30) → 'github:nix-community/NUR/d2ef31d5f3c8741ef3b337805d4af02a861cce1c?narHash=sha256-tuWDY%2BoOimmLLcF/TYbnng4TdotWuRaSzh5Sy%2BbIzUQ%3D' (2025-08-04) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/dc9637876d0dcc8c9e5e22986b857632effeb727?narHash=sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM%3D' (2025-07-28) → 'github:nixos/nixpkgs/5b09dc45f24cf32316283e62aec81ffee3c3e376?narHash=sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY%3D' (2025-08-03) • Updated input 'sops-nix': 'github:Mic92/sops-nix/2c8def626f54708a9c38a5861866660395bb3461?narHash=sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U%3D' (2025-07-15) → 'github:Mic92/sops-nix/49021900e69812ba7ddb9e40f9170218a7eca9f4?narHash=sha256-glPK8DF329/dXtosV7YSzRlF4n35WDjaVwdOMEoEXHA%3D' (2025-08-04) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index f4ba2e6..9c827fb 100644 --- a/flake.lock +++ b/flake.lock @@ -243,11 +243,11 @@ ] }, "locked": { - "lastModified": 1753096219, - "narHash": "sha256-MaaWYgN/nia7xJcOYLBtPk+cFo7X2zEM1d9xIGPQrLU=", + "lastModified": 1754078208, + "narHash": "sha256-YVoIFDCDpYuU3riaDEJ3xiGdPOtsx4sR5eTzHTytPV8=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "be828766411cad04c194c8f714d46aa2b2596362", + "rev": "7f963246a71626c7fc70b431a315c4388a0c95cf", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1753122741, - "narHash": "sha256-nFxE8lk9JvGelxClCmwuJYftbHqwnc01dRN4DVLUroM=", + "lastModified": 1754316476, + "narHash": "sha256-Ry1gd1BQrNVJJfT11cpVP0FY8XFMx4DJV2IDp01CH9w=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "cc66fddc6cb04ab479a1bb062f4d4da27c936a22", + "rev": "9368056b73efb46eb14fd4667b99e0f81b805f28", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1753749649, - "narHash": "sha256-+jkEZxs7bfOKfBIk430K+tK9IvXlwzqQQnppC2ZKFj4=", + "lastModified": 1754292888, + "narHash": "sha256-1ziydHSiDuSnaiPzCQh1mRFBsM2d2yRX9I+5OPGEmIE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1f08a4df998e21f4e8be8fb6fbf61d11a1a5076a", + "rev": "ce01daebf8489ba97bd1609d185ea276efdeb121", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1753901792, - "narHash": "sha256-dMMuPj1ENyknnVt7m90uQAq26PH4j/Fs1qZ9y/Zu+44=", + "lastModified": 1754340878, + "narHash": "sha256-lgmUyVQL9tSnvvIvBp7x1euhkkCho7n3TMzgjdvgPoU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eedcb0398ca492b960103c0f6413eae0d0947ac9", + "rev": "cab778239e705082fe97bb4990e0d24c50924c04", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1753694789, - "narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=", + "lastModified": 1754214453, + "narHash": "sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "dc9637876d0dcc8c9e5e22986b857632effeb727", + "rev": "5b09dc45f24cf32316283e62aec81ffee3c3e376", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1753901181, - "narHash": "sha256-2YJ6A3BIxCoFfGL6mNv+0ZyrgN3ZxiHFQwrKTd993zk=", + "lastModified": 1754344239, + "narHash": "sha256-tuWDY+oOimmLLcF/TYbnng4TdotWuRaSzh5Sy+bIzUQ=", "owner": "nix-community", "repo": "NUR", - "rev": "3ae985f54bc999536cee4f6a7e4802a7402c6551", + "rev": "d2ef31d5f3c8741ef3b337805d4af02a861cce1c", "type": "github" }, "original": { @@ -634,11 +634,11 @@ ] }, "locked": { - "lastModified": 1752544651, - "narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=", + "lastModified": 1754328224, + "narHash": "sha256-glPK8DF329/dXtosV7YSzRlF4n35WDjaVwdOMEoEXHA=", "owner": "Mic92", "repo": "sops-nix", - "rev": "2c8def626f54708a9c38a5861866660395bb3461", + "rev": "49021900e69812ba7ddb9e40f9170218a7eca9f4", "type": "github" }, "original": { From 527689d088ecb06783ab31d3eec58cc90945b117 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 5 Aug 2025 01:33:58 +0200 Subject: [PATCH 502/562] Fix cvlc fixes "cannot execute: required file not found" --- hosts/iron/services/home-assistant.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index fb520a9..e85e3a7 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -231,7 +231,7 @@ in after = [ "snapserver.service" ]; serviceConfig = { BindPaths = [ "/run/snapserver/hass.fifo" ]; - BindReadOnlyPaths = [ "/nix/store" "/etc/ssl/certs" "/etc/static/ssl/certs" ]; + BindReadOnlyPaths = [ "/nix/store" "/etc/ssl/certs" "/etc/static/ssl/certs" "/bin/sh" ]; CapabilityBoundingSet = ""; DynamicUser = "true"; Group = "snapserver"; From 602cd350b9009c84a729fe3d64a7cd4c1e2d0009 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 6 Aug 2025 00:40:04 +0200 Subject: [PATCH 503/562] Add mousepad --- users/jalr/modules/gui.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/modules/gui.nix b/users/jalr/modules/gui.nix index b1c6b40..d4d17cd 100644 --- a/users/jalr/modules/gui.nix +++ b/users/jalr/modules/gui.nix @@ -16,6 +16,7 @@ lib.mkIf nixosConfig.jalr.gui.enable { supersonic-wayland vlc xdg-utils + xfce.mousepad ]; services.kanshi = From 6414b7b79d45e40dbbe8ad8a09be9c4983d27ea6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 5 Aug 2025 00:19:26 +0200 Subject: [PATCH 504/562] Add host jalr-t520 --- hosts/default.nix | 3 ++ hosts/jalr-t520/configuration.nix | 39 +++++++++++++++++++ hosts/jalr-t520/disko.nix | 65 +++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 hosts/jalr-t520/configuration.nix create mode 100644 hosts/jalr-t520/disko.nix diff --git a/hosts/default.nix b/hosts/default.nix index 63dee24..357302f 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -7,6 +7,9 @@ in targetHost = "jalr-k.duckdns.org"; system = "x86_64-linux"; }; + jalr-t520 = { + system = "x86_64-linux"; + }; cadmium = { system = "x86_64-linux"; }; diff --git a/hosts/jalr-t520/configuration.nix b/hosts/jalr-t520/configuration.nix new file mode 100644 index 0000000..2d23e72 --- /dev/null +++ b/hosts/jalr-t520/configuration.nix @@ -0,0 +1,39 @@ +{ lib, pkgs, ... }: + +{ + imports = [ + ./disko.nix + ../../users/jalr + ]; + + networking = { + hostName = "jalr-t520"; + useDHCP = false; + }; + + jalr = { + bootloader = "systemd-boot"; + bluetooth.enable = true; + gui = { + enable = true; + sway.enable = true; + gnome.enable = true; + }; + workstation.enable = true; + }; + + hardware.cpu.intel.updateMicrocode = true; + + powerManagement.cpuFreqGovernor = "performance"; + + environment.systemPackages = with pkgs; [ + intel-media-driver + libva + libva-utils + libva1 + ]; + + hardware.graphics.extraPackages = lib.singleton pkgs.vaapiIntel; + + system.stateVersion = "25.05"; +} diff --git a/hosts/jalr-t520/disko.nix b/hosts/jalr-t520/disko.nix new file mode 100644 index 0000000..e75beca --- /dev/null +++ b/hosts/jalr-t520/disko.nix @@ -0,0 +1,65 @@ +{ config, ... }: +let + cfg = config.disko; +in +{ + disko.devices = { + disk = { + system = { + type = "disk"; + device = "/dev/disk/by-id/ata-Samsung_SSD_850_EVO_120GB_S21UNSAG200527E"; + content = { + type = "gpt"; + partitions = { + esp = { + type = "EF00"; + size = "1024M"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "uid=0" "gid=0" "fmask=0077" "dmask=0077" "nodev" "nosuid" "noexec" ]; + }; + }; + nixos = { + size = "100%"; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + subvolumes = { + "/root" = { + mountpoint = "/"; + mountOptions = [ "compress-force=zstd:1" "noatime" ]; + }; + "/home" = { + mountpoint = "/home"; + mountOptions = [ "compress-force=zstd:1" "noatime" "nodev" "nosuid" ]; + }; + "/home/.snapshots" = { + mountOptions = [ "compress-force=zstd:1" "noatime" "nodev" "nosuid" ]; + }; + "/nix" = { + mountpoint = "/nix"; + mountOptions = [ "compress-force=zstd:1" "noatime" "noatime" "nodev" ]; + }; + }; + postCreateHook = + let + inherit (cfg.devices.disk.system.content.partitions.nixos) device; + in + '' + mountpoint="$(mktemp -d)" + mount "${device}" "$mountpoint" -o subvol=/ + trap 'umount "$mountpoint"; rmdir "$mountpoint"' EXIT + btrfs subvolume snapshot -r $mountpoint/root $mountpoint/root-blank + ''; + }; + }; + }; + }; + }; + }; + }; +} + + From 69e05f65992f0516c42735a8044b790fe13530ba Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 6 Aug 2025 01:17:57 +0200 Subject: [PATCH 505/562] Fix wifi --- hosts/jalr-t520/configuration.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hosts/jalr-t520/configuration.nix b/hosts/jalr-t520/configuration.nix index 2d23e72..e10957b 100644 --- a/hosts/jalr-t520/configuration.nix +++ b/hosts/jalr-t520/configuration.nix @@ -22,7 +22,10 @@ workstation.enable = true; }; - hardware.cpu.intel.updateMicrocode = true; + hardware = { + cpu.intel.updateMicrocode = true; + firmware = [ pkgs.linux-firmware ]; + }; powerManagement.cpuFreqGovernor = "performance"; From 464a4a9be8a765e85552bf989dbec7be4050cf01 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 6 Aug 2025 02:58:45 +0200 Subject: [PATCH 506/562] Fix keyboard layout for gdm --- modules/gnome.nix | 20 ++++++++++++++++++++ modules/sway.nix | 4 +++- users/jalr/modules/dconf.nix | 15 +++++++++++++++ users/jalr/modules/default.nix | 1 + users/jalr/modules/sway/default.nix | 6 ++++++ 5 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 users/jalr/modules/dconf.nix diff --git a/modules/gnome.nix b/modules/gnome.nix index 1ad2995..1a6b784 100644 --- a/modules/gnome.nix +++ b/modules/gnome.nix @@ -8,5 +8,25 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.gnome.enable) { enable = true; autoSuspend = false; }; + exportConfiguration = true; }; + + /* + programs.dconf = { + enable = true; + profiles = { + user.databases = [{ + settings = with lib.gvariant; { + "org/gnome/desktop/input-sources" = { + sources = [ + (mkTuple [ "xkb" "de" ]) + (mkTuple [ "xkb" "de+neo" ]) + (mkTuple [ "xkb" "us" ]) + ]; + }; + }; + }]; + }; + }; + */ } diff --git a/modules/sway.nix b/modules/sway.nix index 0d12723..dbd37fe 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -1,6 +1,8 @@ { config, lib, pkgs, ... }: lib.mkIf (config.jalr.gui.enable && config.jalr.gui.sway.enable) { + services.displayManager.sessionPackages = [ pkgs.sway ]; + programs = { wshowkeys.enable = true; dconf.enable = true; @@ -12,7 +14,7 @@ lib.mkIf (config.jalr.gui.enable && config.jalr.gui.sway.enable) { }; services.greetd = { - enable = true; + enable = !config.jalr.gui.gnome.enable; settings = let command = pkgs.writeShellScript "sway-init" '' diff --git a/users/jalr/modules/dconf.nix b/users/jalr/modules/dconf.nix new file mode 100644 index 0000000..eed759c --- /dev/null +++ b/users/jalr/modules/dconf.nix @@ -0,0 +1,15 @@ +{ lib, nixosConfig, ... }: + +lib.mkIf nixosConfig.jalr.gui.enable { + dconf.settings = { + "org/gnome/desktop/input-sources" = { + xkb-options = [ "grp:win_space_toggle" ]; + show-all-sources = true; + sources = [ + (lib.hm.gvariant.mkTuple [ "xkb" "de" ]) + (lib.hm.gvariant.mkTuple [ "xkb" "de+neo" ]) + (lib.hm.gvariant.mkTuple [ "xkb" "us" ]) + ]; + }; + }; +} diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 0d9f98e..93aa653 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -6,6 +6,7 @@ ./aws.nix ./cli ./communication + ./dconf.nix ./direnv.nix ./do-not-disturb ./dynamic-colors.nix diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index 2ca9a9d..2202b71 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -101,6 +101,12 @@ in terminal = "${terminalEmulator}"; menu = "${pkgs.wofi}/bin/wofi --allow-images --show drun --color=$HOME/.config/wofi/color"; + input."type:keyboard" = { + xkb_layout = "de,de,us"; + xkb_variant = "neo,,"; + xkb_options = "grp:win_space_toggle"; + }; + output = { "*".bg = "${wallpaper} fill"; } // matchHostname "copper" { From 396066b51a8c70a2e9a73e838710d510475cd6d6 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 6 Aug 2025 03:06:33 +0200 Subject: [PATCH 507/562] Add libreoffice --- users/jalr/modules/gui.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/users/jalr/modules/gui.nix b/users/jalr/modules/gui.nix index d4d17cd..4bc6762 100644 --- a/users/jalr/modules/gui.nix +++ b/users/jalr/modules/gui.nix @@ -10,6 +10,7 @@ lib.mkIf nixosConfig.jalr.gui.enable { evince exiftool geeqie + libreoffice-qt6-fresh mpv networkmanagerapplet streamlink From bbf6b56b258939a031d7dd789d48082b3c99b1cb Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 6 Aug 2025 03:41:49 +0200 Subject: [PATCH 508/562] Add zram --- hosts/magnesium/configuration.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hosts/magnesium/configuration.nix b/hosts/magnesium/configuration.nix index 1903e48..626f0b8 100644 --- a/hosts/magnesium/configuration.nix +++ b/hosts/magnesium/configuration.nix @@ -21,5 +21,12 @@ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + zramSwap = { + enable = true; + algorithm = "zstd"; + memoryPercent = 60; + priority = 1; + }; + system.stateVersion = "24.11"; } From 0a3c725259b9a5af5401e416cfa4c6a20e094678 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 19 Aug 2025 12:13:06 +0200 Subject: [PATCH 509/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/545aba02960caa78a31bd9a8709a0ad4b6320a5c?narHash=sha256-7lrVrE0jSvZHrxEzvnfHFE/Wkk9DDqb%2BmYCodI5uuB8%3D' (2025-07-21) → 'github:nix-community/disko/4073ff2f481f9ef3501678ff479ed81402caae6d?narHash=sha256-bU4nqi3IpsUZJeyS8Jk85ytlX61i4b0KCxXX9YcOgVc%3D' (2025-08-18) • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/7f963246a71626c7fc70b431a315c4388a0c95cf?narHash=sha256-YVoIFDCDpYuU3riaDEJ3xiGdPOtsx4sR5eTzHTytPV8%3D' (2025-08-01) → 'github:nix-community/gomod2nix/4212d75925019d716ea6ca525e9cd7b47e7cb27a?narHash=sha256-pmoZQXlCbOO/kEJuvKrE8Z03MM%2B5YMvcYFy0W7M/ZNU%3D' (2025-08-18) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/16ec914f6fb6f599ce988427d9d94efddf25fe6d?narHash=sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg%3D' (2025-06-24) → 'github:cachix/git-hooks.nix/4b04db83821b819bbbe32ed0a025b31e7971f22e?narHash=sha256-I0Ok1OGDwc1jPd8cs2VvAYZsHriUVFGIUqW%2B7uSsOUM%3D' (2025-08-17) • Updated input 'nix-pre-commit-hooks/flake-compat': 'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33?narHash=sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U%3D' (2023-10-04) → 'github:edolstra/flake-compat/9100a0f413b0c601e0533d1d94ffd501ce2e7885?narHash=sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX%2BfjA8Xf8PUmqCY%3D' (2025-05-12) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/9368056b73efb46eb14fd4667b99e0f81b805f28?narHash=sha256-Ry1gd1BQrNVJJfT11cpVP0FY8XFMx4DJV2IDp01CH9w%3D' (2025-08-04) → 'github:nixos/nixos-hardware/3dac8a872557e0ca8c083cdcfc2f218d18e113b0?narHash=sha256-aJHFJWP9AuI8jUGzI77LYcSlkA9wJnOIg4ZqftwNGXA%3D' (2025-08-16) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/ce01daebf8489ba97bd1609d185ea276efdeb121?narHash=sha256-1ziydHSiDuSnaiPzCQh1mRFBsM2d2yRX9I%2B5OPGEmIE%3D' (2025-08-04) → 'github:nixos/nixpkgs/48f4c982de68d966421d2b6f1ddbeb6227cc5ceb?narHash=sha256-axUoWcm4cNQ36jOlnkD9D40LTfSQgk8ExfHSRm3rTtg%3D' (2025-08-17) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/cab778239e705082fe97bb4990e0d24c50924c04?narHash=sha256-lgmUyVQL9tSnvvIvBp7x1euhkkCho7n3TMzgjdvgPoU%3D' (2025-08-04) → 'github:NixOS/nixpkgs/bc51535691dc401aa18c465956226471eb02b1a2?narHash=sha256-CLbMmrlmAeha%2Bsruk2L5GhCy19C2XuXFUOw1Tg5E%2B6s%3D' (2025-08-19) • Updated input 'nur': 'github:nix-community/NUR/d2ef31d5f3c8741ef3b337805d4af02a861cce1c?narHash=sha256-tuWDY%2BoOimmLLcF/TYbnng4TdotWuRaSzh5Sy%2BbIzUQ%3D' (2025-08-04) → 'github:nix-community/NUR/bf9b3a8dd0bb5d78e440cd5b4f0646b581abce79?narHash=sha256-EBXB%2BUp0CL%2BTwt6gHyrk1x7p3g8AZ6vUExFzJor9D8Y%3D' (2025-08-19) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/5b09dc45f24cf32316283e62aec81ffee3c3e376?narHash=sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY%3D' (2025-08-03) → 'github:nixos/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c?narHash=sha256-wNO3%2BKs2jZJ4nTHMuks%2BcxAiVBGNuEBXsT29Bz6HASo%3D' (2025-08-14) • Updated input 'sops-nix': 'github:Mic92/sops-nix/49021900e69812ba7ddb9e40f9170218a7eca9f4?narHash=sha256-glPK8DF329/dXtosV7YSzRlF4n35WDjaVwdOMEoEXHA%3D' (2025-08-04) → 'github:Mic92/sops-nix/3223c7a92724b5d804e9988c6b447a0d09017d48?narHash=sha256-t%2Bvoe2961vCgrzPFtZxha0/kmFSHFobzF00sT8p9h0U%3D' (2025-08-12) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/f3b8c6f8c7b31420b0981448e6abb4bd5ddedbaa?narHash=sha256-r6Sxa8a2DNseWZ86vp/Wm22qP9KM7%2BZpkyRtQ1xh2hE%3D' (2025-07-30) → 'github:vedderb/vesc_tool/2ea98099a050881540f80090225b70b6c89255dc?narHash=sha256-AirM4TV3BXbZcgUGIpQF9TKmr9RH0ALzgg8B6pya/Nw%3D' (2025-08-19) --- flake.lock | 66 +++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/flake.lock b/flake.lock index 9c827fb..3bfdb41 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1753140376, - "narHash": "sha256-7lrVrE0jSvZHrxEzvnfHFE/Wkk9DDqb+mYCodI5uuB8=", + "lastModified": 1755519972, + "narHash": "sha256-bU4nqi3IpsUZJeyS8Jk85ytlX61i4b0KCxXX9YcOgVc=", "owner": "nix-community", "repo": "disko", - "rev": "545aba02960caa78a31bd9a8709a0ad4b6320a5c", + "rev": "4073ff2f481f9ef3501678ff479ed81402caae6d", "type": "github" }, "original": { @@ -97,11 +97,11 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -243,11 +243,11 @@ ] }, "locked": { - "lastModified": 1754078208, - "narHash": "sha256-YVoIFDCDpYuU3riaDEJ3xiGdPOtsx4sR5eTzHTytPV8=", + "lastModified": 1755527833, + "narHash": "sha256-pmoZQXlCbOO/kEJuvKrE8Z03MM+5YMvcYFy0W7M/ZNU=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "7f963246a71626c7fc70b431a315c4388a0c95cf", + "rev": "4212d75925019d716ea6ca525e9cd7b47e7cb27a", "type": "github" }, "original": { @@ -386,11 +386,11 @@ ] }, "locked": { - "lastModified": 1750779888, - "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", + "lastModified": 1755446520, + "narHash": "sha256-I0Ok1OGDwc1jPd8cs2VvAYZsHriUVFGIUqW+7uSsOUM=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", + "rev": "4b04db83821b819bbbe32ed0a025b31e7971f22e", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1754316476, - "narHash": "sha256-Ry1gd1BQrNVJJfT11cpVP0FY8XFMx4DJV2IDp01CH9w=", + "lastModified": 1755330281, + "narHash": "sha256-aJHFJWP9AuI8jUGzI77LYcSlkA9wJnOIg4ZqftwNGXA=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "9368056b73efb46eb14fd4667b99e0f81b805f28", + "rev": "3dac8a872557e0ca8c083cdcfc2f218d18e113b0", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1754292888, - "narHash": "sha256-1ziydHSiDuSnaiPzCQh1mRFBsM2d2yRX9I+5OPGEmIE=", + "lastModified": 1755471983, + "narHash": "sha256-axUoWcm4cNQ36jOlnkD9D40LTfSQgk8ExfHSRm3rTtg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ce01daebf8489ba97bd1609d185ea276efdeb121", + "rev": "48f4c982de68d966421d2b6f1ddbeb6227cc5ceb", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1754340878, - "narHash": "sha256-lgmUyVQL9tSnvvIvBp7x1euhkkCho7n3TMzgjdvgPoU=", + "lastModified": 1755597911, + "narHash": "sha256-CLbMmrlmAeha+sruk2L5GhCy19C2XuXFUOw1Tg5E+6s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cab778239e705082fe97bb4990e0d24c50924c04", + "rev": "bc51535691dc401aa18c465956226471eb02b1a2", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1754214453, - "narHash": "sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY=", + "lastModified": 1755186698, + "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "5b09dc45f24cf32316283e62aec81ffee3c3e376", + "rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1754344239, - "narHash": "sha256-tuWDY+oOimmLLcF/TYbnng4TdotWuRaSzh5Sy+bIzUQ=", + "lastModified": 1755595965, + "narHash": "sha256-EBXB+Up0CL+Twt6gHyrk1x7p3g8AZ6vUExFzJor9D8Y=", "owner": "nix-community", "repo": "NUR", - "rev": "d2ef31d5f3c8741ef3b337805d4af02a861cce1c", + "rev": "bf9b3a8dd0bb5d78e440cd5b4f0646b581abce79", "type": "github" }, "original": { @@ -634,11 +634,11 @@ ] }, "locked": { - "lastModified": 1754328224, - "narHash": "sha256-glPK8DF329/dXtosV7YSzRlF4n35WDjaVwdOMEoEXHA=", + "lastModified": 1754988908, + "narHash": "sha256-t+voe2961vCgrzPFtZxha0/kmFSHFobzF00sT8p9h0U=", "owner": "Mic92", "repo": "sops-nix", - "rev": "49021900e69812ba7ddb9e40f9170218a7eca9f4", + "rev": "3223c7a92724b5d804e9988c6b447a0d09017d48", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1753857766, - "narHash": "sha256-r6Sxa8a2DNseWZ86vp/Wm22qP9KM7+ZpkyRtQ1xh2hE=", + "lastModified": 1755597682, + "narHash": "sha256-AirM4TV3BXbZcgUGIpQF9TKmr9RH0ALzgg8B6pya/Nw=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "f3b8c6f8c7b31420b0981448e6abb4bd5ddedbaa", + "rev": "2ea98099a050881540f80090225b70b6c89255dc", "type": "github" }, "original": { From eab585ed7284864a690e8fa3787805d98930a949 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 25 Aug 2025 09:53:57 +0200 Subject: [PATCH 510/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/4212d75925019d716ea6ca525e9cd7b47e7cb27a?narHash=sha256-pmoZQXlCbOO/kEJuvKrE8Z03MM%2B5YMvcYFy0W7M/ZNU%3D' (2025-08-18) → 'github:nix-community/gomod2nix/47d628dc3b506bd28632e47280c6b89d3496909d?narHash=sha256-JeuGh9kA1SPL70fnvpLxkIkCWpTjtoPaus3jzvdna0k%3D' (2025-08-24) • Updated input 'home-manager': 'github:nix-community/home-manager/fc3add429f21450359369af74c2375cb34a2d204?narHash=sha256-oV695RvbAE4%2BR9pcsT9shmp6zE/%2BIZe6evHWX63f2Qg%3D' (2025-07-27) → 'github:nix-community/home-manager/4a44fb9f7555da362af9d499817084f4288a957f?narHash=sha256-OILVkfhRCm8u18IZ2DKR8gz8CVZM2ZcJmQBXmjFLIfk%3D' (2025-08-23) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/4b04db83821b819bbbe32ed0a025b31e7971f22e?narHash=sha256-I0Ok1OGDwc1jPd8cs2VvAYZsHriUVFGIUqW%2B7uSsOUM%3D' (2025-08-17) → 'github:cachix/git-hooks.nix/e891a93b193fcaf2fc8012d890dc7f0befe86ec2?narHash=sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs%3D' (2025-08-23) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/48f4c982de68d966421d2b6f1ddbeb6227cc5ceb?narHash=sha256-axUoWcm4cNQ36jOlnkD9D40LTfSQgk8ExfHSRm3rTtg%3D' (2025-08-17) → 'github:nixos/nixpkgs/b1b3291469652d5a2edb0becc4ef0246fff97a7c?narHash=sha256-wY1%2B2JPH0ZZC4BQefoZw/k%2B3%2BDowFyfOxv17CN/idKs%3D' (2025-08-23) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/bc51535691dc401aa18c465956226471eb02b1a2?narHash=sha256-CLbMmrlmAeha%2Bsruk2L5GhCy19C2XuXFUOw1Tg5E%2B6s%3D' (2025-08-19) → 'github:NixOS/nixpkgs/636d8f84870a72791b550396f4679807a46bad11?narHash=sha256-zYTlTgPpfDUwSn/%2By/rK8PZkGmkQRcpq0c1c8UEg65U%3D' (2025-08-25) • Updated input 'nur': 'github:nix-community/NUR/bf9b3a8dd0bb5d78e440cd5b4f0646b581abce79?narHash=sha256-EBXB%2BUp0CL%2BTwt6gHyrk1x7p3g8AZ6vUExFzJor9D8Y%3D' (2025-08-19) → 'github:nix-community/NUR/d964bd8bda87256ac8c7a9caf5fcee3be533a485?narHash=sha256-1RpPxbLUm8DCbYiiDTxU2ra0OmdcI6jUl6k3sDgP8so%3D' (2025-08-25) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/fbcf476f790d8a217c3eab4e12033dc4a0f6d23c?narHash=sha256-wNO3%2BKs2jZJ4nTHMuks%2BcxAiVBGNuEBXsT29Bz6HASo%3D' (2025-08-14) → 'github:nixos/nixpkgs/20075955deac2583bb12f07151c2df830ef346b4?narHash=sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs%2BStOp19xNsbqdOg%3D' (2025-08-19) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/2ea98099a050881540f80090225b70b6c89255dc?narHash=sha256-AirM4TV3BXbZcgUGIpQF9TKmr9RH0ALzgg8B6pya/Nw%3D' (2025-08-19) → 'github:vedderb/vesc_tool/629731f5af483a8d3c737aebc7f0135c77da5677?narHash=sha256-P1EU5FwcvM%2BaFUzw/Zsld3OOyWXVKsCzB7aYToXjCP8%3D' (2025-08-21) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 3bfdb41..6f08063 100644 --- a/flake.lock +++ b/flake.lock @@ -243,11 +243,11 @@ ] }, "locked": { - "lastModified": 1755527833, - "narHash": "sha256-pmoZQXlCbOO/kEJuvKrE8Z03MM+5YMvcYFy0W7M/ZNU=", + "lastModified": 1756047880, + "narHash": "sha256-JeuGh9kA1SPL70fnvpLxkIkCWpTjtoPaus3jzvdna0k=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "4212d75925019d716ea6ca525e9cd7b47e7cb27a", + "rev": "47d628dc3b506bd28632e47280c6b89d3496909d", "type": "github" }, "original": { @@ -263,11 +263,11 @@ ] }, "locked": { - "lastModified": 1753592768, - "narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=", + "lastModified": 1755928099, + "narHash": "sha256-OILVkfhRCm8u18IZ2DKR8gz8CVZM2ZcJmQBXmjFLIfk=", "owner": "nix-community", "repo": "home-manager", - "rev": "fc3add429f21450359369af74c2375cb34a2d204", + "rev": "4a44fb9f7555da362af9d499817084f4288a957f", "type": "github" }, "original": { @@ -386,11 +386,11 @@ ] }, "locked": { - "lastModified": 1755446520, - "narHash": "sha256-I0Ok1OGDwc1jPd8cs2VvAYZsHriUVFGIUqW+7uSsOUM=", + "lastModified": 1755960406, + "narHash": "sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "4b04db83821b819bbbe32ed0a025b31e7971f22e", + "rev": "e891a93b193fcaf2fc8012d890dc7f0befe86ec2", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1755471983, - "narHash": "sha256-axUoWcm4cNQ36jOlnkD9D40LTfSQgk8ExfHSRm3rTtg=", + "lastModified": 1755922037, + "narHash": "sha256-wY1+2JPH0ZZC4BQefoZw/k+3+DowFyfOxv17CN/idKs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "48f4c982de68d966421d2b6f1ddbeb6227cc5ceb", + "rev": "b1b3291469652d5a2edb0becc4ef0246fff97a7c", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1755597911, - "narHash": "sha256-CLbMmrlmAeha+sruk2L5GhCy19C2XuXFUOw1Tg5E+6s=", + "lastModified": 1756107416, + "narHash": "sha256-zYTlTgPpfDUwSn/+y/rK8PZkGmkQRcpq0c1c8UEg65U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bc51535691dc401aa18c465956226471eb02b1a2", + "rev": "636d8f84870a72791b550396f4679807a46bad11", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1755186698, - "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", + "lastModified": 1755615617, + "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c", + "rev": "20075955deac2583bb12f07151c2df830ef346b4", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1755595965, - "narHash": "sha256-EBXB+Up0CL+Twt6gHyrk1x7p3g8AZ6vUExFzJor9D8Y=", + "lastModified": 1756107954, + "narHash": "sha256-1RpPxbLUm8DCbYiiDTxU2ra0OmdcI6jUl6k3sDgP8so=", "owner": "nix-community", "repo": "NUR", - "rev": "bf9b3a8dd0bb5d78e440cd5b4f0646b581abce79", + "rev": "d964bd8bda87256ac8c7a9caf5fcee3be533a485", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1755597682, - "narHash": "sha256-AirM4TV3BXbZcgUGIpQF9TKmr9RH0ALzgg8B6pya/Nw=", + "lastModified": 1755793161, + "narHash": "sha256-P1EU5FwcvM+aFUzw/Zsld3OOyWXVKsCzB7aYToXjCP8=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "2ea98099a050881540f80090225b70b6c89255dc", + "rev": "629731f5af483a8d3c737aebc7f0135c77da5677", "type": "github" }, "original": { From 67ed5ed1e013321df9d17199348e10084dc7de72 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 28 Aug 2025 17:54:17 +0200 Subject: [PATCH 511/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/4073ff2f481f9ef3501678ff479ed81402caae6d?narHash=sha256-bU4nqi3IpsUZJeyS8Jk85ytlX61i4b0KCxXX9YcOgVc%3D' (2025-08-18) → 'github:nix-community/disko/bafad29f89e83b2d861b493aa23034ea16595560?narHash=sha256-iv8xVtmLMNLWFcDM/HcAPLRGONyTRpzL9NS09RnryRM%3D' (2025-08-25) • Updated input 'home-manager': 'github:nix-community/home-manager/4a44fb9f7555da362af9d499817084f4288a957f?narHash=sha256-OILVkfhRCm8u18IZ2DKR8gz8CVZM2ZcJmQBXmjFLIfk%3D' (2025-08-23) → 'github:nix-community/home-manager/54b2879ce622d44415e727905925e21b8f833a98?narHash=sha256-aAZNbGcWrVRZgWgkQbkabSGcDVRDMgON4BipMy69gvI%3D' (2025-08-26) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/3dac8a872557e0ca8c083cdcfc2f218d18e113b0?narHash=sha256-aJHFJWP9AuI8jUGzI77LYcSlkA9wJnOIg4ZqftwNGXA%3D' (2025-08-16) → 'github:nixos/nixos-hardware/a65b650d6981e23edd1afa1f01eb942f19cdcbb7?narHash=sha256-9bHzrVbjAudbO8q4vYFBWlEkDam31fsz0J7GB8k4AsI%3D' (2025-08-26) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/b1b3291469652d5a2edb0becc4ef0246fff97a7c?narHash=sha256-wY1%2B2JPH0ZZC4BQefoZw/k%2B3%2BDowFyfOxv17CN/idKs%3D' (2025-08-23) → 'github:nixos/nixpkgs/4e7667a90c167f7a81d906e5a75cba4ad8bee620?narHash=sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo%3D' (2025-08-26) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/636d8f84870a72791b550396f4679807a46bad11?narHash=sha256-zYTlTgPpfDUwSn/%2By/rK8PZkGmkQRcpq0c1c8UEg65U%3D' (2025-08-25) → 'github:NixOS/nixpkgs/a9eab3607519584fcb6422b3c732d0d17383dfd8?narHash=sha256-zvTg8vcLxDP1W7wLO772X2dn%2BslXWjxsIuYucTNUIpM%3D' (2025-08-28) • Updated input 'nur': 'github:nix-community/NUR/d964bd8bda87256ac8c7a9caf5fcee3be533a485?narHash=sha256-1RpPxbLUm8DCbYiiDTxU2ra0OmdcI6jUl6k3sDgP8so%3D' (2025-08-25) → 'github:nix-community/NUR/09f4740f899b695cd483fda85ed0e8f61a2e48cc?narHash=sha256-NS6%2B7f2wGsBtn/8a1xMwMkbMPOqJGhhojVDze/VQpvI%3D' (2025-08-28) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/20075955deac2583bb12f07151c2df830ef346b4?narHash=sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs%2BStOp19xNsbqdOg%3D' (2025-08-19) → 'github:nixos/nixpkgs/8a6d5427d99ec71c64f0b93d45778c889005d9c2?narHash=sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM%3D' (2025-08-27) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 6f08063..2f5cd06 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1755519972, - "narHash": "sha256-bU4nqi3IpsUZJeyS8Jk85ytlX61i4b0KCxXX9YcOgVc=", + "lastModified": 1756115622, + "narHash": "sha256-iv8xVtmLMNLWFcDM/HcAPLRGONyTRpzL9NS09RnryRM=", "owner": "nix-community", "repo": "disko", - "rev": "4073ff2f481f9ef3501678ff479ed81402caae6d", + "rev": "bafad29f89e83b2d861b493aa23034ea16595560", "type": "github" }, "original": { @@ -263,11 +263,11 @@ ] }, "locked": { - "lastModified": 1755928099, - "narHash": "sha256-OILVkfhRCm8u18IZ2DKR8gz8CVZM2ZcJmQBXmjFLIfk=", + "lastModified": 1756245065, + "narHash": "sha256-aAZNbGcWrVRZgWgkQbkabSGcDVRDMgON4BipMy69gvI=", "owner": "nix-community", "repo": "home-manager", - "rev": "4a44fb9f7555da362af9d499817084f4288a957f", + "rev": "54b2879ce622d44415e727905925e21b8f833a98", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1755330281, - "narHash": "sha256-aJHFJWP9AuI8jUGzI77LYcSlkA9wJnOIg4ZqftwNGXA=", + "lastModified": 1756245047, + "narHash": "sha256-9bHzrVbjAudbO8q4vYFBWlEkDam31fsz0J7GB8k4AsI=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "3dac8a872557e0ca8c083cdcfc2f218d18e113b0", + "rev": "a65b650d6981e23edd1afa1f01eb942f19cdcbb7", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1755922037, - "narHash": "sha256-wY1+2JPH0ZZC4BQefoZw/k+3+DowFyfOxv17CN/idKs=", + "lastModified": 1756217674, + "narHash": "sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b1b3291469652d5a2edb0becc4ef0246fff97a7c", + "rev": "4e7667a90c167f7a81d906e5a75cba4ad8bee620", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1756107416, - "narHash": "sha256-zYTlTgPpfDUwSn/+y/rK8PZkGmkQRcpq0c1c8UEg65U=", + "lastModified": 1756396397, + "narHash": "sha256-zvTg8vcLxDP1W7wLO772X2dn+slXWjxsIuYucTNUIpM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "636d8f84870a72791b550396f4679807a46bad11", + "rev": "a9eab3607519584fcb6422b3c732d0d17383dfd8", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1755615617, - "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", + "lastModified": 1756266583, + "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "20075955deac2583bb12f07151c2df830ef346b4", + "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1756107954, - "narHash": "sha256-1RpPxbLUm8DCbYiiDTxU2ra0OmdcI6jUl6k3sDgP8so=", + "lastModified": 1756395612, + "narHash": "sha256-NS6+7f2wGsBtn/8a1xMwMkbMPOqJGhhojVDze/VQpvI=", "owner": "nix-community", "repo": "NUR", - "rev": "d964bd8bda87256ac8c7a9caf5fcee3be533a485", + "rev": "09f4740f899b695cd483fda85ed0e8f61a2e48cc", "type": "github" }, "original": { From 87685a41452d6af280de718a30af096f3bf45bb0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 1 Sep 2025 10:15:27 +0200 Subject: [PATCH 512/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'home-manager': 'github:nix-community/home-manager/54b2879ce622d44415e727905925e21b8f833a98?narHash=sha256-aAZNbGcWrVRZgWgkQbkabSGcDVRDMgON4BipMy69gvI%3D' (2025-08-26) → 'github:nix-community/home-manager/07fc025fe10487dd80f2ec694f1cd790e752d0e8?narHash=sha256-Xd1vOeY9ccDf5VtVK12yM0FS6qqvfUop8UQlxEB%2BgTQ%3D' (2025-08-31) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/4e7667a90c167f7a81d906e5a75cba4ad8bee620?narHash=sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo%3D' (2025-08-26) → 'github:nixos/nixpkgs/b4c2c57c31e68544982226d07e4719a2d86302a8?narHash=sha256-aGnd4AHIYCWQKChAkHPpX%2BYYCt7pA6y2LFFA/s8q0wQ%3D' (2025-08-31) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/a9eab3607519584fcb6422b3c732d0d17383dfd8?narHash=sha256-zvTg8vcLxDP1W7wLO772X2dn%2BslXWjxsIuYucTNUIpM%3D' (2025-08-28) → 'github:NixOS/nixpkgs/2c774e13d1909ce5caaf837ac8ece10a604e54ae?narHash=sha256-%2BaQzkZ8a8xoHCK%2BBmMd8I2F4L6W1FFr8wswtc9O/N9A%3D' (2025-09-01) • Updated input 'nur': 'github:nix-community/NUR/09f4740f899b695cd483fda85ed0e8f61a2e48cc?narHash=sha256-NS6%2B7f2wGsBtn/8a1xMwMkbMPOqJGhhojVDze/VQpvI%3D' (2025-08-28) → 'github:nix-community/NUR/effb8c7ab9fbfba86d31703a6101469489ab9df8?narHash=sha256-JsqhycxNEPDtfDtqGFSdslmbN7t9rClj/wxDWhrUAoM%3D' (2025-09-01) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/8a6d5427d99ec71c64f0b93d45778c889005d9c2?narHash=sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM%3D' (2025-08-27) → 'github:nixos/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa?narHash=sha256-tlOn88coG5fzdyqz6R93SQL5Gpq%2Bm/DsWpekNFhqPQk%3D' (2025-08-30) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/629731f5af483a8d3c737aebc7f0135c77da5677?narHash=sha256-P1EU5FwcvM%2BaFUzw/Zsld3OOyWXVKsCzB7aYToXjCP8%3D' (2025-08-21) → 'github:vedderb/vesc_tool/3d3d6e23634033c04cbf3afedf8b324360ebc34d?narHash=sha256-EYUpnHxOfOZNvXEk/6vAI/EbvovfHtwwxJ2XJ%2BNPYVU%3D' (2025-08-31) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 2f5cd06..0926efa 100644 --- a/flake.lock +++ b/flake.lock @@ -263,11 +263,11 @@ ] }, "locked": { - "lastModified": 1756245065, - "narHash": "sha256-aAZNbGcWrVRZgWgkQbkabSGcDVRDMgON4BipMy69gvI=", + "lastModified": 1756679287, + "narHash": "sha256-Xd1vOeY9ccDf5VtVK12yM0FS6qqvfUop8UQlxEB+gTQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "54b2879ce622d44415e727905925e21b8f833a98", + "rev": "07fc025fe10487dd80f2ec694f1cd790e752d0e8", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1756217674, - "narHash": "sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo=", + "lastModified": 1756617294, + "narHash": "sha256-aGnd4AHIYCWQKChAkHPpX+YYCt7pA6y2LFFA/s8q0wQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4e7667a90c167f7a81d906e5a75cba4ad8bee620", + "rev": "b4c2c57c31e68544982226d07e4719a2d86302a8", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1756396397, - "narHash": "sha256-zvTg8vcLxDP1W7wLO772X2dn+slXWjxsIuYucTNUIpM=", + "lastModified": 1756714484, + "narHash": "sha256-+aQzkZ8a8xoHCK+BmMd8I2F4L6W1FFr8wswtc9O/N9A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a9eab3607519584fcb6422b3c732d0d17383dfd8", + "rev": "2c774e13d1909ce5caaf837ac8ece10a604e54ae", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1756266583, - "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1756395612, - "narHash": "sha256-NS6+7f2wGsBtn/8a1xMwMkbMPOqJGhhojVDze/VQpvI=", + "lastModified": 1756709961, + "narHash": "sha256-JsqhycxNEPDtfDtqGFSdslmbN7t9rClj/wxDWhrUAoM=", "owner": "nix-community", "repo": "NUR", - "rev": "09f4740f899b695cd483fda85ed0e8f61a2e48cc", + "rev": "effb8c7ab9fbfba86d31703a6101469489ab9df8", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1755793161, - "narHash": "sha256-P1EU5FwcvM+aFUzw/Zsld3OOyWXVKsCzB7aYToXjCP8=", + "lastModified": 1756650442, + "narHash": "sha256-EYUpnHxOfOZNvXEk/6vAI/EbvovfHtwwxJ2XJ+NPYVU=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "629731f5af483a8d3c737aebc7f0135c77da5677", + "rev": "3d3d6e23634033c04cbf3afedf8b324360ebc34d", "type": "github" }, "original": { From 6b9c9dba92250b7fc654ade5692e4b3ce89d9f66 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 1 Sep 2025 10:14:30 +0200 Subject: [PATCH 513/562] Add ddev --- users/jalr/modules/ddev.nix | 6 ++++++ users/jalr/modules/default.nix | 1 + 2 files changed, 7 insertions(+) create mode 100644 users/jalr/modules/ddev.nix diff --git a/users/jalr/modules/ddev.nix b/users/jalr/modules/ddev.nix new file mode 100644 index 0000000..2e154d2 --- /dev/null +++ b/users/jalr/modules/ddev.nix @@ -0,0 +1,6 @@ +{ nixosConfig, lib, pkgs, ... }: +lib.mkIf nixosConfig.jalr.gui.enable { + home.packages = [ + pkgs.master.ddev + ]; +} diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 93aa653..30ed808 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -7,6 +7,7 @@ ./cli ./communication ./dconf.nix + ./ddev.nix ./direnv.nix ./do-not-disturb ./dynamic-colors.nix From 8cec9745da2acb03dc338674bf4a29828ee5ef3a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 1 Sep 2025 16:06:04 +0200 Subject: [PATCH 514/562] Add sops defaults --- flake.nix | 86 ++++++++++++------- hosts/aluminium/configuration.nix | 3 - hosts/aluminium/services/asterisk/default.nix | 1 - hosts/aluminium/services/doorbell.nix | 5 +- hosts/aluminium/services/dyndns.nix | 3 - hosts/aluminium/services/esphome/default.nix | 5 +- hosts/copper/services/ntfy.nix | 5 +- hosts/iron/services/calibre.nix | 5 +- hosts/iron/services/dyndns.nix | 3 - hosts/iron/services/esphome/default.nix | 5 +- hosts/iron/services/home-assistant.nix | 17 +--- hosts/iron/services/mail.nix | 5 +- hosts/iron/services/matrix.nix | 7 +- hosts/iron/services/navidrome.nix | 3 - hosts/iron/services/photoprism.nix | 4 - hosts/iron/services/public-ip-tunnel.nix | 11 +-- hosts/iron/services/radicale.nix | 5 +- hosts/iron/services/remarkable.nix | 1 - hosts/iron/services/swingmusic.nix | 4 + hosts/iron/services/wireguard-esphome.nix | 4 - hosts/magnesium/services/coturn.nix | 5 +- hosts/magnesium/services/forgejo.nix | 5 +- hosts/magnesium/services/gitlab-runner.nix | 3 - hosts/magnesium/services/hedgedoc.nix | 5 +- hosts/magnesium/services/mealie.nix | 4 - hosts/magnesium/services/public-ip-tunnel.nix | 11 +-- hosts/magnesium/services/tandoor.nix | 4 - 27 files changed, 75 insertions(+), 144 deletions(-) create mode 100644 hosts/iron/services/swingmusic.nix diff --git a/flake.nix b/flake.nix index 962d334..9495ad5 100644 --- a/flake.nix +++ b/flake.nix @@ -187,41 +187,63 @@ inherit system; specialArgs = { inherit self system; }; - modules = [ - (./hosts + "/${hostname}/configuration.nix") + modules = + let + hostDir = ./hosts + "/${hostname}"; + in + [ + (hostDir + "/configuration.nix") - ./modules + ./modules - { - _module.args = { - inherit inputs; - custom-utils = import ./custom-utils { inherit (nixpkgs) lib; }; - }; - } - - # deployment settings - ({ lib, ... }: { - options.deployment = { - targetHost = lib.mkOption { - type = lib.types.str; - readOnly = true; - internal = true; + { + _module.args = { + inherit inputs; + custom-utils = import ./custom-utils { inherit (nixpkgs) lib; }; }; - }; - config.deployment = { - inherit targetHost; - }; - }) - ] ++ [ - { nixpkgs.overlays = [ nur.overlays.default inputs.vesc-tool.overlays.default ]; } - home-manager.nixosModules.home-manager - inputs.asterisk-sounds-de.nixosModules.default - inputs.disko.nixosModules.disko - inputs.impermanence.nixosModules.impermanence - inputs.lanzaboote.nixosModules.lanzaboote - inputs.sops-nix.nixosModules.sops - inputs.gg-chatmix.nixosModule - ] ++ extraModules; + } + + # deployment settings + ({ lib, ... }: { + options.deployment = { + targetHost = lib.mkOption { + type = lib.types.str; + readOnly = true; + internal = true; + }; + }; + config.deployment = { + inherit targetHost; + }; + }) + + # sops settings + ({ lib, config, pkgs, ... }: + { + sops.defaultSopsFile = hostDir + "/secrets.yaml"; + sops.secrets = + let + secretFile = config.sops.defaultSopsFile; + getSecrets = file: builtins.fromJSON (builtins.readFile (pkgs.runCommandNoCC "secretKeys" { } ''${pkgs.yq-go}/bin/yq -o json '[del .sops | .. | select(tag != "!!seq" and tag != "!!map") | path | join("/")]' ${file} > $out'')); + secretNames = getSecrets secretFile; + secrets = + if builtins.pathExists secretFile then + lib.listToAttrs (builtins.map (name: lib.nameValuePair name { }) secretNames) + else + { }; + in + secrets; + }) + ] ++ [ + { nixpkgs.overlays = [ nur.overlays.default inputs.vesc-tool.overlays.default ]; } + home-manager.nixosModules.home-manager + inputs.asterisk-sounds-de.nixosModules.default + inputs.disko.nixosModules.disko + inputs.impermanence.nixosModules.impermanence + inputs.lanzaboote.nixosModules.lanzaboote + inputs.sops-nix.nixosModules.sops + inputs.gg-chatmix.nixosModule + ] ++ extraModules; }) (import ./hosts inputs); }; diff --git a/hosts/aluminium/configuration.nix b/hosts/aluminium/configuration.nix index fabaecc..3dfd6a3 100644 --- a/hosts/aluminium/configuration.nix +++ b/hosts/aluminium/configuration.nix @@ -91,9 +91,6 @@ }; - sops.secrets.pap-secrets = { - sopsFile = ./secrets.yaml; - }; environment.etc."ppp/pap-secrets".source = config.sops.secrets.pap-secrets.path; services.pppd = { enable = true; diff --git a/hosts/aluminium/services/asterisk/default.nix b/hosts/aluminium/services/asterisk/default.nix index 88eee25..463ac5e 100644 --- a/hosts/aluminium/services/asterisk/default.nix +++ b/hosts/aluminium/services/asterisk/default.nix @@ -152,7 +152,6 @@ in sops.secrets = lib.listToAttrs (map (name: lib.nameValuePair "asterisk-${name}" { - sopsFile = ../../secrets.yaml; owner = config.users.users.asterisk.name; }) secretConfigFiles); diff --git a/hosts/aluminium/services/doorbell.nix b/hosts/aluminium/services/doorbell.nix index 9d8c5af..01190f4 100644 --- a/hosts/aluminium/services/doorbell.nix +++ b/hosts/aluminium/services/doorbell.nix @@ -4,10 +4,7 @@ let inherit (config.networking) ports; in { - sops.secrets.myintercom-doorbell-password = { - sopsFile = ../secrets.yaml; - owner = "asterisk"; - }; + sops.secrets.myintercom-doorbell-password.owner = "asterisk"; services.myintercom-doorbell = { enable = true; host = "sprechanlage.lan.kbh.jalr.de"; diff --git a/hosts/aluminium/services/dyndns.nix b/hosts/aluminium/services/dyndns.nix index bbcdb34..ae3362a 100644 --- a/hosts/aluminium/services/dyndns.nix +++ b/hosts/aluminium/services/dyndns.nix @@ -1,8 +1,5 @@ { config, pkgs, ... }: { - sops.secrets.duckdns-secret = { - sopsFile = ../secrets.yaml; - }; services.ddclient = { enable = true; interval = "1min"; diff --git a/hosts/aluminium/services/esphome/default.nix b/hosts/aluminium/services/esphome/default.nix index 1f4c754..4e63710 100644 --- a/hosts/aluminium/services/esphome/default.nix +++ b/hosts/aluminium/services/esphome/default.nix @@ -6,10 +6,7 @@ let inherit (config.networking) ports; in { - sops.secrets.esphome = { - sopsFile = ../../secrets.yaml; - restartUnits = [ config.systemd.services.esphome.name ]; - }; + sops.secrets.esphome.restartUnits = [ config.systemd.services.esphome.name ]; jalr.esphome = { enable = true; diff --git a/hosts/copper/services/ntfy.nix b/hosts/copper/services/ntfy.nix index 7f910c5..e3e7665 100644 --- a/hosts/copper/services/ntfy.nix +++ b/hosts/copper/services/ntfy.nix @@ -1,6 +1,3 @@ { - sops.secrets.ntfy_shiftphone = { - sopsFile = ../secrets.yaml; - owner = "jalr"; - }; + sops.secrets.ntfy_shiftphone.owner = "jalr"; } diff --git a/hosts/iron/services/calibre.nix b/hosts/iron/services/calibre.nix index 90f0b83..816da0b 100644 --- a/hosts/iron/services/calibre.nix +++ b/hosts/iron/services/calibre.nix @@ -3,10 +3,7 @@ let inherit (config.networking) ports; in { - sops.secrets.calibre-htpasswd = { - owner = "nginx"; - sopsFile = ../secrets.yaml; - }; + sops.secrets.calibre-htpasswd.owner = "nginx"; services = { calibre-server = { diff --git a/hosts/iron/services/dyndns.nix b/hosts/iron/services/dyndns.nix index 6f6e206..e68e465 100644 --- a/hosts/iron/services/dyndns.nix +++ b/hosts/iron/services/dyndns.nix @@ -3,9 +3,6 @@ let interfaces = import ../interfaces.nix; in { - sops.secrets.duckdns-secret = { - sopsFile = ../secrets.yaml; - }; services.ddclient = { enable = true; interval = "1min"; diff --git a/hosts/iron/services/esphome/default.nix b/hosts/iron/services/esphome/default.nix index 1f4c754..4e63710 100644 --- a/hosts/iron/services/esphome/default.nix +++ b/hosts/iron/services/esphome/default.nix @@ -6,10 +6,7 @@ let inherit (config.networking) ports; in { - sops.secrets.esphome = { - sopsFile = ../../secrets.yaml; - restartUnits = [ config.systemd.services.esphome.name ]; - }; + sops.secrets.esphome.restartUnits = [ config.systemd.services.esphome.name ]; jalr.esphome = { enable = true; diff --git a/hosts/iron/services/home-assistant.nix b/hosts/iron/services/home-assistant.nix index e85e3a7..d62f792 100644 --- a/hosts/iron/services/home-assistant.nix +++ b/hosts/iron/services/home-assistant.nix @@ -5,19 +5,10 @@ let domain = "hass.jalr.de"; in { - sops.secrets = { - home-assistant = { - sopsFile = ../secrets.yaml; - owner = "root"; - group = "hass"; - mode = "0640"; - }; - "mqtt-users/home-assistant" = { - sopsFile = ../secrets.yaml; - }; - "mqtt-users/valetudo" = { - sopsFile = ../secrets.yaml; - }; + sops.secrets.home-assistant = { + owner = "root"; + group = "hass"; + mode = "0640"; }; networking.firewall.interfaces = { diff --git a/hosts/iron/services/mail.nix b/hosts/iron/services/mail.nix index c18aae9..fbe802e 100644 --- a/hosts/iron/services/mail.nix +++ b/hosts/iron/services/mail.nix @@ -4,10 +4,7 @@ let inherit (config.networking) ports; in { - #sops.secrets."domain_key_jalr.de" = { - # sopsFile = ../secrets.yaml; - # owner = "rspamd"; - #}; + #sops.secrets."domain_key_jalr.de".owner = "rspamd"; jalr = { mailserver = { enable = true; diff --git a/hosts/iron/services/matrix.nix b/hosts/iron/services/matrix.nix index f325a9b..aa050d9 100644 --- a/hosts/iron/services/matrix.nix +++ b/hosts/iron/services/matrix.nix @@ -6,12 +6,7 @@ let signalUser = "jalr"; in { - sops.secrets = { - synapse-turn-shared-secret = { - owner = "matrix-synapse"; - sopsFile = ../secrets.yaml; - }; - }; + sops.secrets.synapse-turn-shared-secret.owner = "matrix-synapse"; jalr.matrix = { enable = true; fqdn = "matrix.jalr.de"; diff --git a/hosts/iron/services/navidrome.nix b/hosts/iron/services/navidrome.nix index e36bef4..d001dfb 100644 --- a/hosts/iron/services/navidrome.nix +++ b/hosts/iron/services/navidrome.nix @@ -30,9 +30,6 @@ in LoadCredential = "PasswordEncryptionKey:${passwordEncryptionKeyFile}"; }; }; - sops.secrets.navidrome-password-encryption-key = { - sopsFile = ../secrets.yaml; - }; services.nginx.virtualHosts."navidrome.jalr.de" = { enableACME = true; forceSSL = true; diff --git a/hosts/iron/services/photoprism.nix b/hosts/iron/services/photoprism.nix index 47bbefe..b4dfb05 100644 --- a/hosts/iron/services/photoprism.nix +++ b/hosts/iron/services/photoprism.nix @@ -26,10 +26,6 @@ let ''; in { - sops.secrets."photoprism/oidc-secret" = { - sopsFile = ../secrets.yaml; - }; - systemd.services.photoprism.serviceConfig.LoadCredential = lib.mkForce "PHOTOPRISM_OIDC_SECRET_FILE:${config.sops.secrets."photoprism/oidc-secret".path}"; services.photoprism = { diff --git a/hosts/iron/services/public-ip-tunnel.nix b/hosts/iron/services/public-ip-tunnel.nix index 92d6f29..4f17dde 100644 --- a/hosts/iron/services/public-ip-tunnel.nix +++ b/hosts/iron/services/public-ip-tunnel.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, pkgs, ... }: let inherit (config.networking) ports; @@ -13,15 +13,6 @@ let }; in { - sops.secrets = lib.listToAttrs (map - (name: lib.nameValuePair "wireguard_key_${name}" { - sopsFile = ../secrets.yaml; - }) - [ - "hetzner-ha" - ] - ); - networking = { iproute2 = { enable = true; diff --git a/hosts/iron/services/radicale.nix b/hosts/iron/services/radicale.nix index f0aa757..d6cb95d 100644 --- a/hosts/iron/services/radicale.nix +++ b/hosts/iron/services/radicale.nix @@ -4,10 +4,7 @@ let inherit (config.networking) ports; in { - sops.secrets.radicale-htpasswd = { - owner = "nginx"; - sopsFile = ../secrets.yaml; - }; + sops.secrets.radicale-htpasswd.owner = "nginx"; services.nginx.virtualHosts = { "cal.jalr.de" = { diff --git a/hosts/iron/services/remarkable.nix b/hosts/iron/services/remarkable.nix index 5080072..dc38c83 100644 --- a/hosts/iron/services/remarkable.nix +++ b/hosts/iron/services/remarkable.nix @@ -16,7 +16,6 @@ let in { sops.secrets.rmfakecloud = { - sopsFile = ../secrets.yaml; owner = "root"; group = "root"; mode = "0400"; diff --git a/hosts/iron/services/swingmusic.nix b/hosts/iron/services/swingmusic.nix new file mode 100644 index 0000000..a05f1e2 --- /dev/null +++ b/hosts/iron/services/swingmusic.nix @@ -0,0 +1,4 @@ +{ pkgs, ... }: +{ + environment.systemPackages = [ pkgs.swingmusic ]; +} diff --git a/hosts/iron/services/wireguard-esphome.nix b/hosts/iron/services/wireguard-esphome.nix index f39f286..db8fca9 100644 --- a/hosts/iron/services/wireguard-esphome.nix +++ b/hosts/iron/services/wireguard-esphome.nix @@ -5,10 +5,6 @@ let listenPort = ports.wireguard-esphome.udp; in { - sops.secrets."wireguard_key/esphome" = { - sopsFile = ../secrets.yaml; - }; - networking = { firewall.allowedUDPPorts = [ listenPort ]; wireguard.interfaces.esphome = { diff --git a/hosts/magnesium/services/coturn.nix b/hosts/magnesium/services/coturn.nix index d9e8447..bfd6e4a 100644 --- a/hosts/magnesium/services/coturn.nix +++ b/hosts/magnesium/services/coturn.nix @@ -6,10 +6,7 @@ let inherit (config.networking) ports; in { - sops.secrets.turn-static-auth-secret = { - owner = "turnserver"; - sopsFile = ../secrets.yaml; - }; + sops.secrets.turn-static-auth-secret.owner = "turnserver"; services.coturn = ( if ports.coturn-plain.tcp != ports.coturn-plain.udp then builtins.abort "coturn: plain TCP and UDP ports must match." diff --git a/hosts/magnesium/services/forgejo.nix b/hosts/magnesium/services/forgejo.nix index 98ec795..4484e16 100644 --- a/hosts/magnesium/services/forgejo.nix +++ b/hosts/magnesium/services/forgejo.nix @@ -5,10 +5,7 @@ let inherit (config.networking) ports; in { - sops.secrets.forgejo-mail = { - owner = cfg.user; - sopsFile = ../secrets.yaml; - }; + sops.secrets.forgejo-mail.owner = cfg.user; services.forgejo = { enable = true; lfs.enable = true; diff --git a/hosts/magnesium/services/gitlab-runner.nix b/hosts/magnesium/services/gitlab-runner.nix index 24f6c68..ad17690 100644 --- a/hosts/magnesium/services/gitlab-runner.nix +++ b/hosts/magnesium/services/gitlab-runner.nix @@ -1,9 +1,6 @@ { config, pkgs, ... }: { - sops.secrets.gitlab-runner_fablab-nea-hcloud-labsync = { - sopsFile = ../secrets.yaml; - }; services.gitlab-runner = { enable = true; extraPackages = [ diff --git a/hosts/magnesium/services/hedgedoc.nix b/hosts/magnesium/services/hedgedoc.nix index 44db703..d9ee1b8 100644 --- a/hosts/magnesium/services/hedgedoc.nix +++ b/hosts/magnesium/services/hedgedoc.nix @@ -6,10 +6,7 @@ let inherit (config.networking) ports; in { - sops.secrets.hedgedoc-session-secret = { - owner = config.systemd.services.hedgedoc.serviceConfig.User; - sopsFile = ../secrets.yaml; - }; + sops.secrets.hedgedoc-session-secret.owner = config.systemd.services.hedgedoc.serviceConfig.User; services = { hedgedoc = { enable = true; diff --git a/hosts/magnesium/services/mealie.nix b/hosts/magnesium/services/mealie.nix index 5448534..a60f80e 100644 --- a/hosts/magnesium/services/mealie.nix +++ b/hosts/magnesium/services/mealie.nix @@ -5,10 +5,6 @@ let cfg = config.services.mealie; in { - sops.secrets.mealie = { - sopsFile = ../secrets.yaml; - }; - services.mealie = { enable = true; credentialsFile = config.sops.secrets.mealie.path; diff --git a/hosts/magnesium/services/public-ip-tunnel.nix b/hosts/magnesium/services/public-ip-tunnel.nix index f8fb289..1dee818 100644 --- a/hosts/magnesium/services/public-ip-tunnel.nix +++ b/hosts/magnesium/services/public-ip-tunnel.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, ... }: let listenPort = ports.wireguard-public-ip-tunnel.udp; @@ -6,15 +6,6 @@ let inherit (config.networking) ports; in { - sops.secrets = lib.listToAttrs (map - (name: lib.nameValuePair "wireguard_key_${name}" { - sopsFile = ../secrets.yaml; - }) - [ - "hetzner-ha" - ] - ); - #boot.kernel.sysctl = { # "net.ipv4.conf.all.forwarding" = 1; # "net.ipv4.conf.hetzner-ha.proxy_arp" = 1; diff --git a/hosts/magnesium/services/tandoor.nix b/hosts/magnesium/services/tandoor.nix index e573639..1127cd2 100644 --- a/hosts/magnesium/services/tandoor.nix +++ b/hosts/magnesium/services/tandoor.nix @@ -7,10 +7,6 @@ let inherit (config.networking) ports; in { - sops.secrets."tandoor/secret_key" = { - sopsFile = ../secrets.yaml; - }; - services.tandoor-recipes = { enable = true; port = ports.tandoor.tcp; From 23222c0c3466d76e37d1abb03aa5c7248ae0a5be Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 2 Sep 2025 00:31:38 +0200 Subject: [PATCH 515/562] Rework sturzbach service --- hosts/iron/configuration.nix | 4 +- hosts/iron/services/jellyfin.nix | 2 +- hosts/iron/services/sturzbach.nix | 67 ++++++++++++++++++++-- modules/default.nix | 1 - modules/qbittorrent/default.nix | 94 ------------------------------- 5 files changed, 65 insertions(+), 103 deletions(-) delete mode 100644 modules/qbittorrent/default.nix diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index 3c47261..99560b7 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -18,8 +18,8 @@ let "rpool/nixos/home" = "/home"; "rpool/nixos/root" = "/"; "rpool/nixos/var/lib" = "/var/lib"; - "rpool/nixos/var/lib/qbittorrent" = "/var/lib/qbittorrent"; - "rpool/nixos/var/lib/qbittorrent/downloads" = "/var/lib/qbittorrent/downloads"; + "rpool/nixos/var/lib/qBittorrent" = "/var/lib/qBittorrent"; + "rpool/nixos/var/lib/qBittorrent/downloads" = "/var/lib/qBittorrent/downloads"; "rpool/nixos/var/log" = "/var/log"; }; partitionScheme = { diff --git a/hosts/iron/services/jellyfin.nix b/hosts/iron/services/jellyfin.nix index ad5e9a0..f5d642f 100644 --- a/hosts/iron/services/jellyfin.nix +++ b/hosts/iron/services/jellyfin.nix @@ -17,7 +17,7 @@ in "/nix/store" "/filebitch/pub/Filme" "/filebitch/pub/Serien" - "/var/lib/qbittorrent/downloads" + "/var/lib/qBittorrent/downloads" ]; CapabilityBoundingSet = ""; #IPAddressAllow = "localhost"; diff --git a/hosts/iron/services/sturzbach.nix b/hosts/iron/services/sturzbach.nix index 4f02a9a..7498fe0 100644 --- a/hosts/iron/services/sturzbach.nix +++ b/hosts/iron/services/sturzbach.nix @@ -2,15 +2,72 @@ let inherit (config.networking) ports; + interfaces = import ../interfaces.nix; + domain = "sturzbach.jalr.de"; + cfg = config.services.qbittorrent; in { - jalr.qbittorrent = { - enable = true; - downloadDir = "/sturzbach"; - fqdn = "sturzbach.jalr.de"; - webuiPort = ports.qbittorrent-webui.tcp; + sops.secrets.sturzbach-htpasswd = { + owner = "nginx"; }; + networking.firewall = { allowedTCPPorts = [ ports.qbittorrent-torrent.tcp ]; }; + + systemd.services.qbittorrent.serviceConfig = { + # Increase number of open file descriptors (default: 1024) + LimitNOFILE = 65536; + }; + + services = { + qbittorrent = { + enable = true; + torrentingPort = ports.qbittorrent-torrent.tcp; + webuiPort = ports.qbittorrent-webui.tcp; + serverConfig = { + Network.PortForwardingEnabled = false; + Preferences.WebUI = { + Address = "127.0.0.1"; + LocalHostAuth = false; + SecureCookie = true; + ServerDomains = domain; + SessionTimeout = 24 * 60 * 60; + UseUPnP = false; + }; + BitTorrent.Session = { + DHTEnabled = false; + LSDEnabled = false; + PeXEnabled = false; + MaxActiveDownloads = 5; + MaxActiveTorrents = 10000; + MaxActiveUploads = 10000; + TempPath = "${cfg.profileDir}/downloads/incomplete"; + TorrentContentLayout = "Subfolder"; + AddTorrentStopped = false; + AnnounceToAllTiers = false; + DefaultSavePath = "${cfg.profileDir}/downloads"; + DisableAutoTMMByDefault = false; + Interface = interfaces.wan; + InterfaceAddress = "0.0.0.0"; + InterfaceName = interfaces.wan; + QueueingSystemEnabled = true; + ReannounceWhenAddressChanged = false; + }; + }; + }; + nginx.virtualHosts."${domain}" = { + enableACME = true; + forceSSL = true; + + basicAuthFile = config.sops.secrets.sturzbach-htpasswd.path; + + locations = { + "/" = { + proxyPass = "http://127.0.0.1:${toString config.services.qbittorrent.webuiPort}"; + proxyWebsockets = true; + }; + }; + }; + }; } diff --git a/modules/default.nix b/modules/default.nix index 7e5f2aa..49b9b9d 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -42,7 +42,6 @@ ./pipewire.nix ./podman.nix ./printers - ./qbittorrent ./remarkable.nix ./sdr.nix ./sshd.nix diff --git a/modules/qbittorrent/default.nix b/modules/qbittorrent/default.nix deleted file mode 100644 index 1c20e70..0000000 --- a/modules/qbittorrent/default.nix +++ /dev/null @@ -1,94 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.jalr.qbittorrent; -in -{ - options.jalr.qbittorrent = { - enable = lib.mkEnableOption "the qbittorrent service"; - homeDir = lib.mkOption { - type = lib.types.path; - default = "/var/lib/qbittorrent"; - }; - configDir = lib.mkOption { - type = lib.types.path; - default = "${cfg.homeDir}/config"; - }; - downloadDir = lib.mkOption { - type = lib.types.path; - default = "${cfg.homeDir}/download"; - }; - webuiPort = lib.mkOption { - type = lib.types.int; - default = 8099; - }; - sopsFile = lib.mkOption { - type = lib.types.path; - default = ../../hosts/${config.networking.hostName}/secrets.yaml; - description = '' - The sops secret file that includes the htpasswd file. - ''; - }; - fqdn = lib.mkOption { - type = lib.types.str; - description = "The fqdn nginx should listen on. It must not be used for anything else."; - }; - }; - - config = lib.mkIf cfg.enable - { - users.users.qbittorrent = { - group = "qbittorrent"; - home = cfg.homeDir; - isSystemUser = true; - }; - users.groups.qbittorrent = { }; - - systemd.tmpfiles.rules = [ - "d '${cfg.downloadDir}' 0775 qbittorrent users - -" - "d '${cfg.homeDir}' 0771 qbittorrent qbittorrent - -" - ]; - - sops.secrets.sturzbach-htpasswd = { - inherit (cfg) sopsFile; - owner = "nginx"; - }; - - systemd.services.qbittorrent = { - description = "qBittorrent Service"; - wantedBy = [ "multi-user.target" ]; - - serviceConfig = { - Restart = "always"; - ExecStart = "${pkgs.qbittorrent-nox}/bin/qbittorrent-nox --profile=${cfg.configDir} --webui-port=${toString cfg.webuiPort}"; - User = "qbittorrent"; - Group = "qbittorrent"; - - # Increase number of open file descriptors (default: 1024) - LimitNOFILE = 65536; - - # systemd-analyze --no-pager security qbittorrent.service - CapabilityBoundingSet = null; - PrivateDevices = true; - PrivateTmp = true; - PrivateUsers = true; - ProtectHome = true; - RestrictNamespaces = true; - SystemCallFilter = "@system-service"; - }; - }; - - services.nginx.virtualHosts."${cfg.fqdn}" = { - enableACME = lib.mkDefault true; - forceSSL = lib.mkDefault true; - - basicAuthFile = config.sops.secrets.sturzbach-htpasswd.path; - - locations = { - "/" = { - proxyPass = "http://127.0.0.1:${toString cfg.webuiPort}"; - proxyWebsockets = true; - }; - }; - }; - }; -} From 60d004592ab096564be161ce4c935155e9aaafb7 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 2 Sep 2025 12:08:49 +0200 Subject: [PATCH 516/562] Remove unneeded `rec` --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 9495ad5..9b37084 100644 --- a/flake.nix +++ b/flake.nix @@ -183,7 +183,7 @@ , extraModules ? [ ] , targetHost ? hostname , nixpkgs ? inputs.nixpkgs - }: nixpkgs.lib.nixosSystem rec { + }: nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit self system; }; From e2e135718d61853ca6314b9448b80fae18bfcd07 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 3 Sep 2025 21:37:31 +0200 Subject: [PATCH 517/562] Exclude .envrc from pre-commit checks --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index 9b37084..d56e73d 100644 --- a/flake.nix +++ b/flake.nix @@ -106,6 +106,7 @@ settings.ignore = [ ".direnv" ]; }; }; + excludes = [ ".envrc" ]; }; }; devShells.default = pkgs.mkShell { From 0405c345e2b02b2fd920e864e96f6979c3a409b5 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 3 Sep 2025 21:37:54 +0200 Subject: [PATCH 518/562] Add nix-cache --- nix-cache/.envrc | 1 + nix-cache/.gitignore | 1 + nix-cache/Dockerfile | 5 +++++ nix-cache/entrypoint.sh | 12 ++++++++++++ nix-cache/fly.toml | 22 ++++++++++++++++++++++ nix-cache/server.toml | 29 +++++++++++++++++++++++++++++ nix-cache/shell.nix | 10 ++++++++++ 7 files changed, 80 insertions(+) create mode 100644 nix-cache/.envrc create mode 100644 nix-cache/.gitignore create mode 100644 nix-cache/Dockerfile create mode 100755 nix-cache/entrypoint.sh create mode 100644 nix-cache/fly.toml create mode 100644 nix-cache/server.toml create mode 100644 nix-cache/shell.nix diff --git a/nix-cache/.envrc b/nix-cache/.envrc new file mode 100644 index 0000000..1d953f4 --- /dev/null +++ b/nix-cache/.envrc @@ -0,0 +1 @@ +use nix diff --git a/nix-cache/.gitignore b/nix-cache/.gitignore new file mode 100644 index 0000000..29963da --- /dev/null +++ b/nix-cache/.gitignore @@ -0,0 +1 @@ +/.direnv/ diff --git a/nix-cache/Dockerfile b/nix-cache/Dockerfile new file mode 100644 index 0000000..6fdf7db --- /dev/null +++ b/nix-cache/Dockerfile @@ -0,0 +1,5 @@ +FROM ghcr.io/zhaofengli/attic:latest +COPY ./entrypoint.sh /entrypoint.sh +COPY ./server.toml /attic/server.toml.tmpl +EXPOSE 8080 +ENTRYPOINT ["/entrypoint.sh"] diff --git a/nix-cache/entrypoint.sh b/nix-cache/entrypoint.sh new file mode 100755 index 0000000..4d42ee8 --- /dev/null +++ b/nix-cache/entrypoint.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +sed \ + -e "s/!!POSTGRES_PASSWORD!!/${POSTGRES_PASSWORD}/g" \ + /attic/server.toml.tmpl \ + > /run/server.toml + +exec /bin/atticd \ + -f /run/server.toml \ + --mode monolithic diff --git a/nix-cache/fly.toml b/nix-cache/fly.toml new file mode 100644 index 0000000..0d92357 --- /dev/null +++ b/nix-cache/fly.toml @@ -0,0 +1,22 @@ +# fly.toml app configuration file generated for jalr-attic on 2025-09-03T19:29:39+02:00 +# +# See https://fly.io/docs/reference/configuration/ for information about how to use this file. +# + +app = 'jalr-attic' +primary_region = 'fra' +swap_size_mb = 256 + +[build] + +[http_service] + internal_port = 8080 + force_https = true + auto_stop_machines = 'stop' + auto_start_machines = true + min_machines_running = 0 + processes = ['app'] + +[[vm]] + size = 'shared-cpu-1x' + memory = '512mb' diff --git a/nix-cache/server.toml b/nix-cache/server.toml new file mode 100644 index 0000000..3f520d7 --- /dev/null +++ b/nix-cache/server.toml @@ -0,0 +1,29 @@ +listen = "[::]:8080" + +[database] +url = "postgresql://neondb_owner:!!POSTGRES_PASSWORD!!@ep-raspy-snow-aggvse7u-pooler.c-2.eu-central-1.aws.neon.tech/neondb?sslmode=require&channel_binding=require" + +[storage] +bucket = "jalr-attic" +type = "s3" +region = "auto" +endpoint = "https://1b34998519526958a742d40d38834033.eu.r2.cloudflarestorage.com" + +#[storage.credentials] +#access_key_id = "" # AWS_ACCESS_KEY_ID +#secret_access_key = "" # AWS_SECRET_ACCESS_KEY + +[chunking] +nar-size-threshold = 65536 +min-size = 16384 +avg-size = 65536 +max-size = 262144 + +[compression] +type = "zstd" + +[garbage-collection] +interval = "12 hours" + +#[jwt.signing] +#token-hs256-secret-base64 = "" # ATTIC_SERVER_TOKEN_HS256_SECRET_BASE64 diff --git a/nix-cache/shell.nix b/nix-cache/shell.nix new file mode 100644 index 0000000..92b44a1 --- /dev/null +++ b/nix-cache/shell.nix @@ -0,0 +1,10 @@ +with import { }; + +mkShellNoCC { + buildInputs = [ + flyctl + ]; + shellHook = '' + export FLY_ACCESS_TOKEN=$(pass show private/services/fly.io/app-jalr-attic) + ''; +} From 9c14b1a151eaa752f1fce82d5b6920caf11e7810 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 7 Sep 2025 14:31:48 +0200 Subject: [PATCH 519/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/bafad29f89e83b2d861b493aa23034ea16595560?narHash=sha256-iv8xVtmLMNLWFcDM/HcAPLRGONyTRpzL9NS09RnryRM%3D' (2025-08-25) → 'github:nix-community/disko/a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1?narHash=sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8%3D' (2025-09-01) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/e891a93b193fcaf2fc8012d890dc7f0befe86ec2?narHash=sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs%3D' (2025-08-23) → 'github:cachix/git-hooks.nix/ab82ab08d6bf74085bd328de2a8722c12d97bd9d?narHash=sha256-E9spYi9lxm2f1zWQLQ7xQt8Xs2nWgr1T4QM7ZjLFphM%3D' (2025-09-07) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/a65b650d6981e23edd1afa1f01eb942f19cdcbb7?narHash=sha256-9bHzrVbjAudbO8q4vYFBWlEkDam31fsz0J7GB8k4AsI%3D' (2025-08-26) → 'github:nixos/nixos-hardware/11b2a10c7be726321bb854403fdeec391e798bf0?narHash=sha256-PtT7ix43ss8PONJ1VJw3f6t2yAoGH%2Bq462Sn8lrmWmk%3D' (2025-09-05) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/b4c2c57c31e68544982226d07e4719a2d86302a8?narHash=sha256-aGnd4AHIYCWQKChAkHPpX%2BYYCt7pA6y2LFFA/s8q0wQ%3D' (2025-08-31) → 'github:nixos/nixpkgs/fe83bbdde2ccdc2cb9573aa846abe8363f79a97a?narHash=sha256-PLoSjHRa2bUbi1x9HoXgTx2AiuzNXs54c8omhadyvp0%3D' (2025-09-04) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/2c774e13d1909ce5caaf837ac8ece10a604e54ae?narHash=sha256-%2BaQzkZ8a8xoHCK%2BBmMd8I2F4L6W1FFr8wswtc9O/N9A%3D' (2025-09-01) → 'github:NixOS/nixpkgs/790c37312111a3a809f2b97a8b527c8fcee2771a?narHash=sha256-hpUJdFtnHQoAEbOmrmlUkt0rGq4OmxU79EmjD%2BubWtE%3D' (2025-09-07) • Updated input 'nur': 'github:nix-community/NUR/effb8c7ab9fbfba86d31703a6101469489ab9df8?narHash=sha256-JsqhycxNEPDtfDtqGFSdslmbN7t9rClj/wxDWhrUAoM%3D' (2025-09-01) → 'github:nix-community/NUR/d244f159840581aa186a134a307e201c615591d2?narHash=sha256-tGGjRl5x6e0sYwVCCveWwLSH5b0ntaFDxjfSyrz4%2BEk%3D' (2025-09-07) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/d7600c775f877cd87b4f5a831c28aa94137377aa?narHash=sha256-tlOn88coG5fzdyqz6R93SQL5Gpq%2Bm/DsWpekNFhqPQk%3D' (2025-08-30) → 'github:nixos/nixpkgs/8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9?narHash=sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4%3D' (2025-09-05) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/3d3d6e23634033c04cbf3afedf8b324360ebc34d?narHash=sha256-EYUpnHxOfOZNvXEk/6vAI/EbvovfHtwwxJ2XJ%2BNPYVU%3D' (2025-08-31) → 'github:vedderb/vesc_tool/6b739f6de8c2b189359e92d53d638b8cbe6a31ee?narHash=sha256-EC7BTIW80OS6KonSpcldYJeF9xxlwt05nTQleLELaW4%3D' (2025-09-05) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 0926efa..6e32d83 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1756115622, - "narHash": "sha256-iv8xVtmLMNLWFcDM/HcAPLRGONyTRpzL9NS09RnryRM=", + "lastModified": 1756733629, + "narHash": "sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8=", "owner": "nix-community", "repo": "disko", - "rev": "bafad29f89e83b2d861b493aa23034ea16595560", + "rev": "a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1", "type": "github" }, "original": { @@ -386,11 +386,11 @@ ] }, "locked": { - "lastModified": 1755960406, - "narHash": "sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs=", + "lastModified": 1757239681, + "narHash": "sha256-E9spYi9lxm2f1zWQLQ7xQt8Xs2nWgr1T4QM7ZjLFphM=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "e891a93b193fcaf2fc8012d890dc7f0befe86ec2", + "rev": "ab82ab08d6bf74085bd328de2a8722c12d97bd9d", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1756245047, - "narHash": "sha256-9bHzrVbjAudbO8q4vYFBWlEkDam31fsz0J7GB8k4AsI=", + "lastModified": 1757103352, + "narHash": "sha256-PtT7ix43ss8PONJ1VJw3f6t2yAoGH+q462Sn8lrmWmk=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "a65b650d6981e23edd1afa1f01eb942f19cdcbb7", + "rev": "11b2a10c7be726321bb854403fdeec391e798bf0", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1756617294, - "narHash": "sha256-aGnd4AHIYCWQKChAkHPpX+YYCt7pA6y2LFFA/s8q0wQ=", + "lastModified": 1757020766, + "narHash": "sha256-PLoSjHRa2bUbi1x9HoXgTx2AiuzNXs54c8omhadyvp0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b4c2c57c31e68544982226d07e4719a2d86302a8", + "rev": "fe83bbdde2ccdc2cb9573aa846abe8363f79a97a", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1756714484, - "narHash": "sha256-+aQzkZ8a8xoHCK+BmMd8I2F4L6W1FFr8wswtc9O/N9A=", + "lastModified": 1757246538, + "narHash": "sha256-hpUJdFtnHQoAEbOmrmlUkt0rGq4OmxU79EmjD+ubWtE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2c774e13d1909ce5caaf837ac8ece10a604e54ae", + "rev": "790c37312111a3a809f2b97a8b527c8fcee2771a", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1756542300, - "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "lastModified": 1757068644, + "narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1756709961, - "narHash": "sha256-JsqhycxNEPDtfDtqGFSdslmbN7t9rClj/wxDWhrUAoM=", + "lastModified": 1757246002, + "narHash": "sha256-tGGjRl5x6e0sYwVCCveWwLSH5b0ntaFDxjfSyrz4+Ek=", "owner": "nix-community", "repo": "NUR", - "rev": "effb8c7ab9fbfba86d31703a6101469489ab9df8", + "rev": "d244f159840581aa186a134a307e201c615591d2", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1756650442, - "narHash": "sha256-EYUpnHxOfOZNvXEk/6vAI/EbvovfHtwwxJ2XJ+NPYVU=", + "lastModified": 1757087969, + "narHash": "sha256-EC7BTIW80OS6KonSpcldYJeF9xxlwt05nTQleLELaW4=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "3d3d6e23634033c04cbf3afedf8b324360ebc34d", + "rev": "6b739f6de8c2b189359e92d53d638b8cbe6a31ee", "type": "github" }, "original": { From 724cc97ef9d28c02b0cf0f92e974c673992f1593 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 9 Sep 2025 10:29:34 +0200 Subject: [PATCH 520/562] Add fixes for Framework laptop --- hosts/copper/configuration.nix | 1 + hosts/copper/framework-fixes.nix | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 hosts/copper/framework-fixes.nix diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index bcca713..db715e2 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -6,6 +6,7 @@ ./disko.nix ../../users/jalr ./services + ./framework-fixes.nix ]; networking = { diff --git a/hosts/copper/framework-fixes.nix b/hosts/copper/framework-fixes.nix new file mode 100644 index 0000000..f1463d2 --- /dev/null +++ b/hosts/copper/framework-fixes.nix @@ -0,0 +1,14 @@ +{ pkgs, ... }: + +{ + boot.extraModprobeConfig = '' + options cfg80211 ieee80211_regdom="DE" + options mt7921_common disable_clc=1 + options mt7921e disable_aspm=Y + ''; + hardware.firmware = [ pkgs.wireless-regdb ]; + + services.udev.extraRules = '' + ACTION=="add", SUBSYSTEM=="pci", ATTR{power/wakeup}="disabled" + ''; +} From 3b2fd03f48744b66a283128800854d249a9fbc8b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 9 Sep 2025 10:31:09 +0200 Subject: [PATCH 521/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1?narHash=sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8%3D' (2025-09-01) → 'github:nix-community/disko/c8a0e78d86b12ea67be6ed0f7cae7f9bfabae75a?narHash=sha256-XH33B1X888Xc/xEXhF1RPq/kzKElM0D5C9N6YdvOvIc%3D' (2025-09-07) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/fe83bbdde2ccdc2cb9573aa846abe8363f79a97a?narHash=sha256-PLoSjHRa2bUbi1x9HoXgTx2AiuzNXs54c8omhadyvp0%3D' (2025-09-04) → 'github:nixos/nixpkgs/9d1fa9fa266631335618373f8faad570df6f9ede?narHash=sha256-fRnT%2BbwP1sB6ne7BLw4aXkVYjr%2BQCZZ%2Be4MhbokHyd4%3D' (2025-09-08) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/790c37312111a3a809f2b97a8b527c8fcee2771a?narHash=sha256-hpUJdFtnHQoAEbOmrmlUkt0rGq4OmxU79EmjD%2BubWtE%3D' (2025-09-07) → 'github:NixOS/nixpkgs/64ec29c1be38568eff50a2c487034cdfb64e441d?narHash=sha256-MK%2B/YmpTZpQrhJ0KfknCGNU0HZlLYITDqOCawZnyj9w%3D' (2025-09-09) • Updated input 'nur': 'github:nix-community/NUR/d244f159840581aa186a134a307e201c615591d2?narHash=sha256-tGGjRl5x6e0sYwVCCveWwLSH5b0ntaFDxjfSyrz4%2BEk%3D' (2025-09-07) → 'github:nix-community/NUR/cca9d1592e280f66f5f840c0b5cc66d37fbd7e91?narHash=sha256-ZsSUkHMkjHoFnxqeXYApZUg/WIm3bBjGuRuvF4vmpQA%3D' (2025-09-09) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/6b739f6de8c2b189359e92d53d638b8cbe6a31ee?narHash=sha256-EC7BTIW80OS6KonSpcldYJeF9xxlwt05nTQleLELaW4%3D' (2025-09-05) → 'github:vedderb/vesc_tool/b822025bd2da9aeb834b10c5934f90843389765a?narHash=sha256-TxDUlvxEPZgZIepyiAffgLbrPmkv2Bz%2BQzxO8%2BrTViQ%3D' (2025-09-08) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 6e32d83..7ea0c1f 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1756733629, - "narHash": "sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8=", + "lastModified": 1757255839, + "narHash": "sha256-XH33B1X888Xc/xEXhF1RPq/kzKElM0D5C9N6YdvOvIc=", "owner": "nix-community", "repo": "disko", - "rev": "a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1", + "rev": "c8a0e78d86b12ea67be6ed0f7cae7f9bfabae75a", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1757020766, - "narHash": "sha256-PLoSjHRa2bUbi1x9HoXgTx2AiuzNXs54c8omhadyvp0=", + "lastModified": 1757341549, + "narHash": "sha256-fRnT+bwP1sB6ne7BLw4aXkVYjr+QCZZ+e4MhbokHyd4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "fe83bbdde2ccdc2cb9573aa846abe8363f79a97a", + "rev": "9d1fa9fa266631335618373f8faad570df6f9ede", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1757246538, - "narHash": "sha256-hpUJdFtnHQoAEbOmrmlUkt0rGq4OmxU79EmjD+ubWtE=", + "lastModified": 1757406392, + "narHash": "sha256-MK+/YmpTZpQrhJ0KfknCGNU0HZlLYITDqOCawZnyj9w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "790c37312111a3a809f2b97a8b527c8fcee2771a", + "rev": "64ec29c1be38568eff50a2c487034cdfb64e441d", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1757246002, - "narHash": "sha256-tGGjRl5x6e0sYwVCCveWwLSH5b0ntaFDxjfSyrz4+Ek=", + "lastModified": 1757399382, + "narHash": "sha256-ZsSUkHMkjHoFnxqeXYApZUg/WIm3bBjGuRuvF4vmpQA=", "owner": "nix-community", "repo": "NUR", - "rev": "d244f159840581aa186a134a307e201c615591d2", + "rev": "cca9d1592e280f66f5f840c0b5cc66d37fbd7e91", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1757087969, - "narHash": "sha256-EC7BTIW80OS6KonSpcldYJeF9xxlwt05nTQleLELaW4=", + "lastModified": 1757351078, + "narHash": "sha256-TxDUlvxEPZgZIepyiAffgLbrPmkv2Bz+QzxO8+rTViQ=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "6b739f6de8c2b189359e92d53d638b8cbe6a31ee", + "rev": "b822025bd2da9aeb834b10c5934f90843389765a", "type": "github" }, "original": { From 9e0374b9d0d122d01f8a6235dcfdb30ce4040ab8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 9 Sep 2025 12:38:14 +0200 Subject: [PATCH 522/562] Add udev module --- hosts/cadmium/configuration.nix | 1 - hosts/copper/configuration.nix | 1 - modules/default.nix | 4 +--- modules/dji-goggles.nix | 6 ------ modules/printers/default.nix | 1 - modules/printers/p-touch_p700.nix | 5 ----- modules/sdr.nix | 19 ------------------- modules/udev.nix | 22 ++++++++++++++++++++++ modules/udmx.nix | 6 ------ 9 files changed, 23 insertions(+), 42 deletions(-) delete mode 100644 modules/dji-goggles.nix delete mode 100644 modules/printers/p-touch_p700.nix delete mode 100644 modules/sdr.nix create mode 100644 modules/udev.nix delete mode 100644 modules/udmx.nix diff --git a/hosts/cadmium/configuration.nix b/hosts/cadmium/configuration.nix index 620fd71..32c1151 100644 --- a/hosts/cadmium/configuration.nix +++ b/hosts/cadmium/configuration.nix @@ -52,7 +52,6 @@ sway.enable = true; }; workstation.enable = true; - sdr.enable = true; libvirt.enable = true; autologin.enable = true; autologin.username = "jalr"; diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index db715e2..d36934a 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -65,7 +65,6 @@ sway.enable = true; }; workstation.enable = true; - sdr.enable = true; libvirt.enable = true; autologin = { enable = true; diff --git a/modules/default.nix b/modules/default.nix index 49b9b9d..ac459f1 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -19,7 +19,6 @@ ./bluetooth.nix ./bootloader ./debug.nix - ./dji-goggles.nix ./dns.nix ./esphome ./fish.nix @@ -43,12 +42,11 @@ ./podman.nix ./printers ./remarkable.nix - ./sdr.nix ./sshd.nix ./steelseries-nova-pro.nix ./sudo.nix ./sway.nix - ./udmx.nix + ./udev.nix ./uefi.nix ./unfree.nix ./upgrade-diff.nix diff --git a/modules/dji-goggles.nix b/modules/dji-goggles.nix deleted file mode 100644 index 951482a..0000000 --- a/modules/dji-goggles.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - services.udev.extraRules = '' - # DJI Goggles - SUBSYSTEM=="usb", ATTR{idVendor}=="2ca3", ATTR{idProduct}=="001f", MODE="0660", GROUP="plugdev" - ''; -} diff --git a/modules/printers/default.nix b/modules/printers/default.nix index 8692599..b207377 100644 --- a/modules/printers/default.nix +++ b/modules/printers/default.nix @@ -3,7 +3,6 @@ { imports = [ ./hl3172cdw.nix - ./p-touch_p700.nix ]; config = lib.mkIf config.jalr.gui.enable { # install virtual pdf printer diff --git a/modules/printers/p-touch_p700.nix b/modules/printers/p-touch_p700.nix deleted file mode 100644 index 07076b1..0000000 --- a/modules/printers/p-touch_p700.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - services.udev.extraRules = '' - SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="04f9", ATTR{idProduct}=="2061", OWNER="root", GROUP="users", MODE="660" - ''; -} diff --git a/modules/sdr.nix b/modules/sdr.nix deleted file mode 100644 index a0b7686..0000000 --- a/modules/sdr.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ config, lib, pkgs, ... }: - -let - cfg = config.jalr; -in -{ - options.jalr = { - sdr = { - enable = pkgs.lib.mkEnableOption "Enable software defined radio"; - }; - }; - config = lib.mkIf cfg.sdr.enable { - services.udev.extraRules = '' - # rad10 - SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="cc15", GROUP="users", MODE="0660" - SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6089", GROUP="users", MODE="0660" - ''; - }; -} diff --git a/modules/udev.nix b/modules/udev.nix new file mode 100644 index 0000000..dc3a7e3 --- /dev/null +++ b/modules/udev.nix @@ -0,0 +1,22 @@ +let + usbDeviceRules = [ + # rad10 + { vendor = "1d50"; product = "cc15"; group = "users"; mode = "0660"; } + { vendor = "1d50"; product = "6089"; group = "users"; mode = "0660"; } + + # DJI Goggles + { vendor = "2ca3"; product = "001f"; group = "plugdev"; mode = "0660"; } + + # uDMX + { vendor = "16c0"; product = "05dc"; group = "users"; mode = "0660"; } + + # Brother P-touch P700 + { vendor = "04f9"; product = "2061"; group = "users"; mode = "0660"; } + ]; + + mkUsbRule = rule: + ''SUBSYSTEM=="usb", ATTR{idVendor}=="${rule.vendor}", ATTR{idProduct}=="${rule.product}", GROUP="${rule.group}", MODE="${rule.mode}"''; +in +{ + services.udev.extraRules = builtins.concatStringsSep "\n" (map mkUsbRule usbDeviceRules); +} diff --git a/modules/udmx.nix b/modules/udmx.nix deleted file mode 100644 index 3d7befe..0000000 --- a/modules/udmx.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - services.udev.extraRules = '' - # uDMX - SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", GROUP="users", MODE="0660" - ''; -} From 15b3a138b5ddfb4237f63b42d833d0a0e59fd5b8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 10 Sep 2025 20:00:54 +0200 Subject: [PATCH 523/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/c8a0e78d86b12ea67be6ed0f7cae7f9bfabae75a?narHash=sha256-XH33B1X888Xc/xEXhF1RPq/kzKElM0D5C9N6YdvOvIc%3D' (2025-09-07) → 'github:nix-community/disko/146f45bee02b8bd88812cfce6ffc0f933788875a?narHash=sha256-7lVWL5bC6xBIMWWDal41LlGAG%2B9u2zUorqo3QCUL4p4%3D' (2025-09-10) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/9d1fa9fa266631335618373f8faad570df6f9ede?narHash=sha256-fRnT%2BbwP1sB6ne7BLw4aXkVYjr%2BQCZZ%2Be4MhbokHyd4%3D' (2025-09-08) → 'github:nixos/nixpkgs/d179d77c139e0a3f5c416477f7747e9d6b7ec315?narHash=sha256-aSgK4BLNFFGvDTNKPeB28lVXYqVn8RdyXDNAvgGq%2Bk0%3D' (2025-09-09) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/64ec29c1be38568eff50a2c487034cdfb64e441d?narHash=sha256-MK%2B/YmpTZpQrhJ0KfknCGNU0HZlLYITDqOCawZnyj9w%3D' (2025-09-09) → 'github:NixOS/nixpkgs/9f0eb3375efd8b1db6e65ff599efbe679e16fe6f?narHash=sha256-tYTEkKUuGV3yiCvYReq/jehSodJH02FG7m06I9LESrI%3D' (2025-09-10) • Updated input 'nur': 'github:nix-community/NUR/cca9d1592e280f66f5f840c0b5cc66d37fbd7e91?narHash=sha256-ZsSUkHMkjHoFnxqeXYApZUg/WIm3bBjGuRuvF4vmpQA%3D' (2025-09-09) → 'github:nix-community/NUR/8c3d56d5eb01a6c8f79baeec9d91f1f5159836ec?narHash=sha256-5HaMkE%2B5un3cEGC%2B%2BHxYK%2BI3kbCd3i58KQTJfLTyqns%3D' (2025-09-10) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9?narHash=sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4%3D' (2025-09-05) → 'github:nixos/nixpkgs/b599843bad24621dcaa5ab60dac98f9b0eb1cabe?narHash=sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL%2Bnma8o%3D' (2025-09-08) • Updated input 'sops-nix': 'github:Mic92/sops-nix/3223c7a92724b5d804e9988c6b447a0d09017d48?narHash=sha256-t%2Bvoe2961vCgrzPFtZxha0/kmFSHFobzF00sT8p9h0U%3D' (2025-08-12) → 'github:Mic92/sops-nix/0bf793823386187dff101ee2a9d4ed26de8bbf8c?narHash=sha256-S9F6bHUBh%2BCFEUalv/qxNImRapCxvSnOzWBUZgK1zDU%3D' (2025-09-10) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 7ea0c1f..6c5673b 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1757255839, - "narHash": "sha256-XH33B1X888Xc/xEXhF1RPq/kzKElM0D5C9N6YdvOvIc=", + "lastModified": 1757508292, + "narHash": "sha256-7lVWL5bC6xBIMWWDal41LlGAG+9u2zUorqo3QCUL4p4=", "owner": "nix-community", "repo": "disko", - "rev": "c8a0e78d86b12ea67be6ed0f7cae7f9bfabae75a", + "rev": "146f45bee02b8bd88812cfce6ffc0f933788875a", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1757341549, - "narHash": "sha256-fRnT+bwP1sB6ne7BLw4aXkVYjr+QCZZ+e4MhbokHyd4=", + "lastModified": 1757408970, + "narHash": "sha256-aSgK4BLNFFGvDTNKPeB28lVXYqVn8RdyXDNAvgGq+k0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9d1fa9fa266631335618373f8faad570df6f9ede", + "rev": "d179d77c139e0a3f5c416477f7747e9d6b7ec315", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1757406392, - "narHash": "sha256-MK+/YmpTZpQrhJ0KfknCGNU0HZlLYITDqOCawZnyj9w=", + "lastModified": 1757525990, + "narHash": "sha256-tYTEkKUuGV3yiCvYReq/jehSodJH02FG7m06I9LESrI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "64ec29c1be38568eff50a2c487034cdfb64e441d", + "rev": "9f0eb3375efd8b1db6e65ff599efbe679e16fe6f", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1757068644, - "narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=", + "lastModified": 1757347588, + "narHash": "sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL+nma8o=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9", + "rev": "b599843bad24621dcaa5ab60dac98f9b0eb1cabe", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1757399382, - "narHash": "sha256-ZsSUkHMkjHoFnxqeXYApZUg/WIm3bBjGuRuvF4vmpQA=", + "lastModified": 1757526419, + "narHash": "sha256-5HaMkE+5un3cEGC++HxYK+I3kbCd3i58KQTJfLTyqns=", "owner": "nix-community", "repo": "NUR", - "rev": "cca9d1592e280f66f5f840c0b5cc66d37fbd7e91", + "rev": "8c3d56d5eb01a6c8f79baeec9d91f1f5159836ec", "type": "github" }, "original": { @@ -634,11 +634,11 @@ ] }, "locked": { - "lastModified": 1754988908, - "narHash": "sha256-t+voe2961vCgrzPFtZxha0/kmFSHFobzF00sT8p9h0U=", + "lastModified": 1757503115, + "narHash": "sha256-S9F6bHUBh+CFEUalv/qxNImRapCxvSnOzWBUZgK1zDU=", "owner": "Mic92", "repo": "sops-nix", - "rev": "3223c7a92724b5d804e9988c6b447a0d09017d48", + "rev": "0bf793823386187dff101ee2a9d4ed26de8bbf8c", "type": "github" }, "original": { From ef80b04f507ea4767b69324065be5ba9e542780b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 15 Sep 2025 12:42:16 +0200 Subject: [PATCH 524/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'home-manager': 'github:nix-community/home-manager/07fc025fe10487dd80f2ec694f1cd790e752d0e8?narHash=sha256-Xd1vOeY9ccDf5VtVK12yM0FS6qqvfUop8UQlxEB%2BgTQ%3D' (2025-08-31) → 'github:nix-community/home-manager/f21d9167782c086a33ad53e2311854a8f13c281e?narHash=sha256-K6PEI5PYY94TVMH0mX3MbZNYFme7oNRKml/85BpRRAo%3D' (2025-09-14) • Updated input 'nix-filter': 'github:numtide/nix-filter/f7653272fd234696ae94229839a99b73c9ab7de0?narHash=sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms%3D' (2024-11-13) → 'github:numtide/nix-filter/59c44d1909c72441144b93cf0f054be7fe764de5?narHash=sha256-%2BcCxYIh2UNalTz364p%2BQYmWHs0P%2B6wDhiWR4jDIKQIU%3D' (2025-09-14) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/ab82ab08d6bf74085bd328de2a8722c12d97bd9d?narHash=sha256-E9spYi9lxm2f1zWQLQ7xQt8Xs2nWgr1T4QM7ZjLFphM%3D' (2025-09-07) → 'github:cachix/git-hooks.nix/b084b2c2b6bc23e83bbfe583b03664eb0b18c411?narHash=sha256-tJ7A8mID3ct69n9WCvZ3PzIIl3rXTdptn/lZmqSS95U%3D' (2025-09-11) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/11b2a10c7be726321bb854403fdeec391e798bf0?narHash=sha256-PtT7ix43ss8PONJ1VJw3f6t2yAoGH%2Bq462Sn8lrmWmk%3D' (2025-09-05) → 'github:nixos/nixos-hardware/4c38a024fa32e61db2be8573e5282b15d9733a79?narHash=sha256-NfiTk59huy/YK9H4W4wVwRYyiP2u86QqROM5KK4f5F4%3D' (2025-09-14) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/d179d77c139e0a3f5c416477f7747e9d6b7ec315?narHash=sha256-aSgK4BLNFFGvDTNKPeB28lVXYqVn8RdyXDNAvgGq%2Bk0%3D' (2025-09-09) → 'github:nixos/nixpkgs/9a094440e02a699be5c57453a092a8baf569bdad?narHash=sha256-Vp9K5ol6h0J90jG7Rm4RWZsCB3x7v5VPx588TQ1dkfs%3D' (2025-09-14) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/9f0eb3375efd8b1db6e65ff599efbe679e16fe6f?narHash=sha256-tYTEkKUuGV3yiCvYReq/jehSodJH02FG7m06I9LESrI%3D' (2025-09-10) → 'github:NixOS/nixpkgs/434ed09bd161bb1058612038479dc34863c3f106?narHash=sha256-D44RIPMw71krFXsk9af22YbwBhHpLWCDbncFokHWs5c%3D' (2025-09-15) • Updated input 'nur': 'github:nix-community/NUR/8c3d56d5eb01a6c8f79baeec9d91f1f5159836ec?narHash=sha256-5HaMkE%2B5un3cEGC%2B%2BHxYK%2BI3kbCd3i58KQTJfLTyqns%3D' (2025-09-10) → 'github:nix-community/NUR/0f5e4ecbdfd50a2deb75f344a03e5cfa22b97bcb?narHash=sha256-hYGtHXTQ6eQPZWXKGxZWNrraP0j2p69B9EFIKNRC65E%3D' (2025-09-15) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/b599843bad24621dcaa5ab60dac98f9b0eb1cabe?narHash=sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL%2Bnma8o%3D' (2025-09-08) → 'github:nixos/nixpkgs/c23193b943c6c689d70ee98ce3128239ed9e32d1?narHash=sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820%3D' (2025-09-13) • Updated input 'sops-nix': 'github:Mic92/sops-nix/0bf793823386187dff101ee2a9d4ed26de8bbf8c?narHash=sha256-S9F6bHUBh%2BCFEUalv/qxNImRapCxvSnOzWBUZgK1zDU%3D' (2025-09-10) → 'github:Mic92/sops-nix/ee6f91c1c11acf7957d94a130de77561ec24b8ab?narHash=sha256-TumOaykhZO8SOs/faz6GQhqkOcFLoQvESLSF1cJ4mZc%3D' (2025-09-14) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/b822025bd2da9aeb834b10c5934f90843389765a?narHash=sha256-TxDUlvxEPZgZIepyiAffgLbrPmkv2Bz%2BQzxO8%2BrTViQ%3D' (2025-09-08) → 'github:vedderb/vesc_tool/467e44ede9bd89fd87a075b00156455eba96fb19?narHash=sha256-xXBzVuKmkre9bHB/0f3c9ZvX41P1qWqap0Q%2BWHh1cqQ%3D' (2025-09-14) --- flake.lock | 60 +++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/flake.lock b/flake.lock index 6c5673b..25ecc01 100644 --- a/flake.lock +++ b/flake.lock @@ -263,11 +263,11 @@ ] }, "locked": { - "lastModified": 1756679287, - "narHash": "sha256-Xd1vOeY9ccDf5VtVK12yM0FS6qqvfUop8UQlxEB+gTQ=", + "lastModified": 1757808926, + "narHash": "sha256-K6PEI5PYY94TVMH0mX3MbZNYFme7oNRKml/85BpRRAo=", "owner": "nix-community", "repo": "home-manager", - "rev": "07fc025fe10487dd80f2ec694f1cd790e752d0e8", + "rev": "f21d9167782c086a33ad53e2311854a8f13c281e", "type": "github" }, "original": { @@ -343,11 +343,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1731533336, - "narHash": "sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms=", + "lastModified": 1757882181, + "narHash": "sha256-+cCxYIh2UNalTz364p+QYmWHs0P+6wDhiWR4jDIKQIU=", "owner": "numtide", "repo": "nix-filter", - "rev": "f7653272fd234696ae94229839a99b73c9ab7de0", + "rev": "59c44d1909c72441144b93cf0f054be7fe764de5", "type": "github" }, "original": { @@ -386,11 +386,11 @@ ] }, "locked": { - "lastModified": 1757239681, - "narHash": "sha256-E9spYi9lxm2f1zWQLQ7xQt8Xs2nWgr1T4QM7ZjLFphM=", + "lastModified": 1757588530, + "narHash": "sha256-tJ7A8mID3ct69n9WCvZ3PzIIl3rXTdptn/lZmqSS95U=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "ab82ab08d6bf74085bd328de2a8722c12d97bd9d", + "rev": "b084b2c2b6bc23e83bbfe583b03664eb0b18c411", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1757103352, - "narHash": "sha256-PtT7ix43ss8PONJ1VJw3f6t2yAoGH+q462Sn8lrmWmk=", + "lastModified": 1757891025, + "narHash": "sha256-NfiTk59huy/YK9H4W4wVwRYyiP2u86QqROM5KK4f5F4=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "11b2a10c7be726321bb854403fdeec391e798bf0", + "rev": "4c38a024fa32e61db2be8573e5282b15d9733a79", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1757408970, - "narHash": "sha256-aSgK4BLNFFGvDTNKPeB28lVXYqVn8RdyXDNAvgGq+k0=", + "lastModified": 1757810152, + "narHash": "sha256-Vp9K5ol6h0J90jG7Rm4RWZsCB3x7v5VPx588TQ1dkfs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d179d77c139e0a3f5c416477f7747e9d6b7ec315", + "rev": "9a094440e02a699be5c57453a092a8baf569bdad", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1757525990, - "narHash": "sha256-tYTEkKUuGV3yiCvYReq/jehSodJH02FG7m06I9LESrI=", + "lastModified": 1757932657, + "narHash": "sha256-D44RIPMw71krFXsk9af22YbwBhHpLWCDbncFokHWs5c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9f0eb3375efd8b1db6e65ff599efbe679e16fe6f", + "rev": "434ed09bd161bb1058612038479dc34863c3f106", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1757347588, - "narHash": "sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL+nma8o=", + "lastModified": 1757745802, + "narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b599843bad24621dcaa5ab60dac98f9b0eb1cabe", + "rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1757526419, - "narHash": "sha256-5HaMkE+5un3cEGC++HxYK+I3kbCd3i58KQTJfLTyqns=", + "lastModified": 1757931984, + "narHash": "sha256-hYGtHXTQ6eQPZWXKGxZWNrraP0j2p69B9EFIKNRC65E=", "owner": "nix-community", "repo": "NUR", - "rev": "8c3d56d5eb01a6c8f79baeec9d91f1f5159836ec", + "rev": "0f5e4ecbdfd50a2deb75f344a03e5cfa22b97bcb", "type": "github" }, "original": { @@ -634,11 +634,11 @@ ] }, "locked": { - "lastModified": 1757503115, - "narHash": "sha256-S9F6bHUBh+CFEUalv/qxNImRapCxvSnOzWBUZgK1zDU=", + "lastModified": 1757847158, + "narHash": "sha256-TumOaykhZO8SOs/faz6GQhqkOcFLoQvESLSF1cJ4mZc=", "owner": "Mic92", "repo": "sops-nix", - "rev": "0bf793823386187dff101ee2a9d4ed26de8bbf8c", + "rev": "ee6f91c1c11acf7957d94a130de77561ec24b8ab", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1757351078, - "narHash": "sha256-TxDUlvxEPZgZIepyiAffgLbrPmkv2Bz+QzxO8+rTViQ=", + "lastModified": 1757831065, + "narHash": "sha256-xXBzVuKmkre9bHB/0f3c9ZvX41P1qWqap0Q+WHh1cqQ=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "b822025bd2da9aeb834b10c5934f90843389765a", + "rev": "467e44ede9bd89fd87a075b00156455eba96fb19", "type": "github" }, "original": { From 3b89194a8ae538ac705cbadb958b15486ee9210a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 15 Sep 2025 18:14:10 +0200 Subject: [PATCH 525/562] Bump stateVersion --- hosts/iron/configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index 99560b7..cdf307b 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -37,7 +37,7 @@ with lib; { ./ports.nix ]; config = { - system.stateVersion = "23.11"; + system.stateVersion = "25.05"; security.sudo.wheelNeedsPassword = false; From d7483490cd044aff33358f02d7ab28546f0706d0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 15 Sep 2025 18:13:23 +0200 Subject: [PATCH 526/562] Add prometheus for home network --- hosts/iron/ports.nix | 1 + hosts/iron/secrets.yaml | 8 +- hosts/iron/services/default.nix | 5 +- hosts/iron/services/prometheus.nix | 207 ++++++++++++++++++ hosts/iron/services/unifi-controller.nix | 17 -- .../services/unifi-controller/default.nix | 35 +++ .../services/unifi-controller/unpoller.nix | 22 ++ pkgs/default.nix | 3 + pkgs/vodafone-station-exporter/default.nix | 12 + pkgs/vodafone-station-exporter/gomod2nix.toml | 42 ++++ 10 files changed, 331 insertions(+), 21 deletions(-) create mode 100644 hosts/iron/services/prometheus.nix delete mode 100644 hosts/iron/services/unifi-controller.nix create mode 100644 hosts/iron/services/unifi-controller/default.nix create mode 100644 hosts/iron/services/unifi-controller/unpoller.nix create mode 100644 pkgs/vodafone-station-exporter/default.nix create mode 100644 pkgs/vodafone-station-exporter/gomod2nix.toml diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 106b26f..317909d 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -28,5 +28,6 @@ unifi-https.tcp = 8443; wireguard-public-ip-tunnel.udp = 51000; wireguard-esphome.udp = 51001; + prometheus-vodafone-station-exporter.tcp = 9420; }; } diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 54e1ca4..a866030 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -18,6 +18,10 @@ mqtt-users: valetudo: ENC[AES256_GCM,data:+HRz6X+A5dhmx43G99ka0u9VozuzOFWR,iv:SPw5yoiBqN7sBH5EofevacTtu45jmuTPqToKrar0aJ0=,tag:lf+usB/eNNP1yuWW/QyTqQ==,type:str] photoprism: oidc-secret: ENC[AES256_GCM,data:XTAiUiGZJfSZHNbz6fePl3iMDdbxFSE7+SQH2ECRFqlo7w8TAhLyNXBxlEfGvu+8vttbKdkEm0r7132Q4ftOtA==,iv:WGsQXolbtRWIq4EDgODWNmkXdOZCsA9A3Fqoo4lJyec=,tag:5zJftwB5If/RZB3hI0Ly8A==,type:str] +prometheus: + exporters: + vodafone-station: ENC[AES256_GCM,data:eaFqYEuK3UU=,iv:BauymCkvj33TmZLyii367uVEc4Iq4GGcik4nbyT9Fpk=,tag:poB+qh5tAdv/dEt3WN6yVw==,type:str] + unpoller: ENC[AES256_GCM,data:WI1oUKHW4ef4pBk+mGM=,iv:C1LykPf1/ypUmy3ZCQzjfSjkpxhUukDNnfJnZLp2CJg=,tag:mSnZJKl9IHcx7I7GpFherw==,type:str] sops: age: - recipient: age1hx7fdu4mcha7kkxe7yevtvs6xgzgaafgenm3drhvr609wlj94sgqm497je @@ -29,8 +33,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-06-11T22:17:21Z" - mac: ENC[AES256_GCM,data:l785PSSvzb/C3n6QnUHc+YTKSRLP/FjGzi0EOersLEFd/XGDy0vzPv5RJzE6475zUt9hHko9324z2woficG84CenjB3+IF0GtTtM8654KlLN5C91n06OrInG2hvOp68j6mAg1x9+XS1OBuNLGXEr7Bt0lkqD31JH6NyWqirQ1/4=,iv:Nuurf42iuTmH4bJ790HbGgB3tThA2/EZQ9JOcns5QeA=,tag:Qh9tsPWiYJAIO3cP430ccg==,type:str] + lastmodified: "2025-09-15T15:29:31Z" + mac: ENC[AES256_GCM,data:7clDIKf/lRxXaYpiJS8+j8MzUvPTZmf20M4xM2sto+DSh2h/rJTvQanbg4/2yNVmLCX6FZ6USJb7bqg7aBw7Yv7RMoEio/HO6BtKNcHiLLiCW0dXkIROO4s5rc1S/nwtSFpifhgN2KrjXyBq+PVFk61on7K861zimsHev/KmDKk=,iv:9S1KONQWBMJBQElvAQ+NAOn15BrN0IkIyjedwSUm7oY=,tag:Kc8N8F5rz0EVIHseT1x0Kw==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index f19a759..4a10130 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -7,20 +7,21 @@ ./esphome ./home-assistant.nix ./jellyfin.nix - ./wireguard-esphome.nix ./mail.nix ./matrix.nix ./navidrome.nix ./nginx.nix ./ntp.nix ./photoprism.nix + ./prometheus.nix ./public-ip-tunnel.nix ./radicale.nix ./remarkable.nix ./snapcast ./sturzbach.nix ./tts.nix - ./unifi-controller.nix + ./unifi-controller ./whatsapp.nix + ./wireguard-esphome.nix ]; } diff --git a/hosts/iron/services/prometheus.nix b/hosts/iron/services/prometheus.nix new file mode 100644 index 0000000..5d571bc --- /dev/null +++ b/hosts/iron/services/prometheus.nix @@ -0,0 +1,207 @@ +{ config +, lib +, pkgs +, ... +}: +let + #domain = ""; + cfg = config.services.prometheus; + mkStaticTargets = targets: lib.singleton { inherit targets; }; + inherit (config.networking) ports; + blackboxRelabelConfig = [ + { + source_labels = [ "__address__" ]; + target_label = "__param_target"; + } + { + source_labels = [ "__param_target" ]; + target_label = "instance"; + } + { + target_label = "__address__"; + replacement = with config.services.prometheus.exporters.blackbox; "${listenAddress}:${toString port}"; + } + ]; +in +{ + #sops.secrets.prometheus-htpasswd = { + # owner = "nginx"; + # sopsFile = ../secrets.yaml; + #}; + + services.prometheus = { + enable = true; + listenAddress = "127.0.0.1"; + #webExternalUrl = "https://${domain}"; + globalConfig = { + scrape_interval = "15s"; + evaluation_interval = "15s"; + }; + extraFlags = [ + "--storage.tsdb.retention.time=90d" + "--web.enable-admin-api" + ]; + scrapeConfigs = [ + { + job_name = "node"; + static_configs = [ + { + targets = with config.services.prometheus.exporters.node; [ + "${listenAddress}:${toString port}" + ]; + } + ]; + relabel_configs = [ + { + source_labels = [ "__address__" ]; + target_label = "instance"; + replacement = config.networking.hostName; + } + ]; + } + { + job_name = "vodafone_station"; + static_configs = mkStaticTargets [ + "127.0.0.1:${toString ports.prometheus-vodafone-station-exporter.tcp}" + ]; + } + { + job_name = "unifi"; + static_configs = mkStaticTargets [ + "${cfg.exporters.unpoller.listenAddress}:${toString cfg.exporters.unpoller.port}" + ]; + } + { + job_name = "blackbox"; + metrics_path = "/probe"; + params.module = [ "http_2xx" ]; + static_configs = [ + { + targets = [ + "https://c58r0l3wtmqltl4y.myfritz.net:44919/" + ]; + } + ]; + relabel_configs = blackboxRelabelConfig; + } + { + job_name = "internet_ip4"; + static_configs = mkStaticTargets [ "1.1.1.1" "8.8.8.8" ]; + metrics_path = "/probe"; + params.module = [ "icmp_ip4" ]; + relabel_configs = blackboxRelabelConfig; + } + { + job_name = "internet_ip6"; + static_configs = mkStaticTargets [ "2606:4700:4700::1111" "2001:4860:4860::8888" ]; + metrics_path = "/probe"; + params.module = [ "icmp_ip6" ]; + relabel_configs = blackboxRelabelConfig; + } + ]; + + exporters = { + node.enable = true; + + blackbox = { + enable = true; + listenAddress = "127.0.0.1"; + + # https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md + configFile = pkgs.writeText "prometheus-blackbox-config" (builtins.toJSON { + modules = { + icmp_ip4 = { + prober = "icmp"; + timeout = "5s"; + icmp = { + ip_protocol_fallback = false; + preferred_ip_protocol = "ip4"; + }; + }; + icmp_ip6 = { + prober = "icmp"; + timeout = "5s"; + icmp = { + ip_protocol_fallback = false; + preferred_ip_protocol = "ip6"; + }; + }; + http_2xx = { + prober = "http"; + timeout = "5s"; + http = { + valid_http_versions = [ "HTTP/1.1" "HTTP/2.0" ]; + valid_status_codes = [ ]; # Defaults to 2xx + method = "GET"; + follow_redirects = true; + fail_if_ssl = false; + fail_if_not_ssl = true; + tls_config = { + insecure_skip_verify = false; + }; + preferred_ip_protocol = "ip4"; # defaults to "ip6" + ip_protocol_fallback = false; # no fallback to "ip6" + }; + }; + }; + }); + }; + }; + }; + + /* + */ + # + + systemd.services.prometheus-vodafone-station-exporter = + let + unitName = "prometheus-vodafone-station-exporter"; + in + { + enable = true; + description = "Prometheus Vodafone Station exporter"; + wants = [ "network.target" ]; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + BindReadOnlyPaths = [ + "/nix/store" + "/etc/resolv.conf" + ]; + DynamicUser = "yes"; + ExecStart = lib.strings.concatStringsSep " " [ + "${pkgs.vodafone-station-exporter}/bin/vodafone-station-exporter" + "-web.listen-address" + "127.0.0.1:${toString ports.prometheus-vodafone-station-exporter.tcp}" + "-vodafone.station-url" + "http://192.168.100.1" + "-vodafone.station-password-file" + "\${CREDENTIALS_DIRECTORY}/password" + ]; + LoadCredential = "password:${config.sops.secrets."prometheus/exporters/vodafone-station".path}"; + NoNewPrivileges = true; + PrivateTmp = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX"; + RestrictNamespaces = true; + RootDirectory = "%t/${unitName}"; + RuntimeDirectory = [ unitName ]; + }; + }; + + /* + services.nginx.virtualHosts."${domain}" = { + enableACME = true; + forceSSL = true; + + #basicAuthFile = config.sops.secrets.prometheus-htpasswd.path; + + locations = { + "/".proxyPass = "http://${cfg.listenAddress}:${toString cfg.port}"; + }; + }; + */ +} diff --git a/hosts/iron/services/unifi-controller.nix b/hosts/iron/services/unifi-controller.nix deleted file mode 100644 index f351e4b..0000000 --- a/hosts/iron/services/unifi-controller.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ config, pkgs, ... }: - -let - inherit (config.networking) ports; - interfaces = import ../interfaces.nix; -in -{ - services.unifi = { - enable = true; - unifiPackage = pkgs.unifi; - mongodbPackage = pkgs.mongodb-7_0; - }; - networking.firewall.interfaces."${interfaces.lan}".allowedTCPPorts = [ - ports.unifi-http.tcp - ports.unifi-https.tcp - ]; -} diff --git a/hosts/iron/services/unifi-controller/default.nix b/hosts/iron/services/unifi-controller/default.nix new file mode 100644 index 0000000..c9e7a2c --- /dev/null +++ b/hosts/iron/services/unifi-controller/default.nix @@ -0,0 +1,35 @@ +{ config, ... }: + +let + inherit (config.networking) ports; + interfaces = import ../../interfaces.nix; + #domain = "unifi.weinturm.de"; +in +{ + imports = [ + ./unpoller.nix + ]; + + services.unifi.enable = true; + + networking.firewall.interfaces."${interfaces.lan}".allowedTCPPorts = [ + ports.unifi-http.tcp + ports.unifi-https.tcp + ]; + + /* + services.nginx.virtualHosts = { + "${domain}" = { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "https://127.0.0.1:8443"; + recommendedProxySettings = true; + extraConfig = '' + proxy_ssl_verify off; + ''; + }; + }; + }; + */ +} diff --git a/hosts/iron/services/unifi-controller/unpoller.nix b/hosts/iron/services/unifi-controller/unpoller.nix new file mode 100644 index 0000000..9305ca5 --- /dev/null +++ b/hosts/iron/services/unifi-controller/unpoller.nix @@ -0,0 +1,22 @@ +{ config, ... }: + +{ + sops.secrets."prometheus/exporters/unpoller" = { + owner = config.services.prometheus.exporters.unpoller.user; + sopsFile = ../../secrets.yaml; + }; + + services.prometheus.exporters.unpoller = { + enable = true; + controllers = [ + { + user = "unpoller"; + url = "https://127.0.0.1:8443"; + pass = config.sops.secrets."prometheus/exporters/unpoller".path; + verify_ssl = false; + hash_pii = true; + } + ]; + log.prometheusErrors = true; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index de3d6d4..898812b 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -34,4 +34,7 @@ in vim-fluid = callPackage ./vim-fluid { inherit (prev.vimUtils) buildVimPlugin; }; vim-typoscript = callPackage ./vim-typoscript { inherit (prev.vimUtils) buildVimPlugin; }; }; + vodafone-station-exporter = callPackage ./vodafone-station-exporter { + inherit (inputs.gomod2nix.legacyPackages.${system}) buildGoApplication; + }; } diff --git a/pkgs/vodafone-station-exporter/default.nix b/pkgs/vodafone-station-exporter/default.nix new file mode 100644 index 0000000..9a80e97 --- /dev/null +++ b/pkgs/vodafone-station-exporter/default.nix @@ -0,0 +1,12 @@ +{ buildGoApplication, fetchgit }: + +buildGoApplication { + pname = "vodafone-station-exporter"; + version = "0.0.1"; + src = fetchgit { + url = "https://git.jalr.de/jalr/vodafone-station-exporter"; + rev = "808564b940c3570e3b32ce60657bf83fda75ec3c"; + hash = "sha256-A3Behy8Q7bhYXoGUsZXzIAQd/dTXH4d4wd+FDYuD7tE="; + }; + modules = ./gomod2nix.toml; +} diff --git a/pkgs/vodafone-station-exporter/gomod2nix.toml b/pkgs/vodafone-station-exporter/gomod2nix.toml new file mode 100644 index 0000000..293cd7e --- /dev/null +++ b/pkgs/vodafone-station-exporter/gomod2nix.toml @@ -0,0 +1,42 @@ +schema = 3 + +[mod] + [mod."github.com/beorn7/perks"] + version = "v1.0.1" + hash = "sha256-h75GUqfwJKngCJQVE5Ao5wnO3cfKD9lSIteoLp/3xJ4=" + [mod."github.com/cespare/xxhash/v2"] + version = "v2.3.0" + hash = "sha256-7hRlwSR+fos1kx4VZmJ/7snR7zHh8ZFKX+qqqqGcQpY=" + [mod."github.com/kr/text"] + version = "v0.2.0" + hash = "sha256-fadcWxZOORv44oak3jTxm6YcITcFxdGt4bpn869HxUE=" + [mod."github.com/munnerz/goautoneg"] + version = "v0.0.0-20191010083416-a7dc8b61c822" + hash = "sha256-79URDDFenmGc9JZu+5AXHToMrtTREHb3BC84b/gym9Q=" + [mod."github.com/prometheus/client_golang"] + version = "v1.23.2" + hash = "sha256-3GD4fBFa1tJu8MS4TNP6r2re2eViUE+kWUaieIOQXCg=" + [mod."github.com/prometheus/client_model"] + version = "v0.6.2" + hash = "sha256-q6Fh6v8iNJN9ypD47LjWmx66YITa3FyRjZMRsuRTFeQ=" + [mod."github.com/prometheus/common"] + version = "v0.66.1" + hash = "sha256-bqHPaV9IV70itx63wqwgy2PtxMN0sn5ThVxDmiD7+Tk=" + [mod."github.com/prometheus/procfs"] + version = "v0.16.1" + hash = "sha256-OBCvKlLW2obct35p0L9Q+1ZrxZjpTmbgHMP2rng9hpo=" + [mod."go.yaml.in/yaml/v2"] + version = "v2.4.2" + hash = "sha256-oC8RWdf1zbMYCtmR0ATy/kCkhIwPR9UqFZSMOKLVF/A=" + [mod."golang.org/x/crypto"] + version = "v0.42.0" + hash = "sha256-qa6cGxZUhVnbkpVzfvLGQQsl/NCqNceJp9SIx5vkyiI=" + [mod."golang.org/x/exp"] + version = "v0.0.0-20250911091902-df9299821621" + hash = "sha256-cSDirFex900mrckzB3fe18hW2Vk4/y4xKvlUWq3yoDA=" + [mod."golang.org/x/sys"] + version = "v0.36.0" + hash = "sha256-9h4SHGnlJzmTENUp6226hC8fQ73QrQC3D85NNMxLuXg=" + [mod."google.golang.org/protobuf"] + version = "v1.36.8" + hash = "sha256-yZN8ZON0b5HjUNUSubHst7zbvnMsOzd81tDPYQRtPgM=" From dfb70c1287fe13afc24fa8ed3686c61511422ad9 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 15 Sep 2025 22:34:23 +0200 Subject: [PATCH 527/562] Allow ports needed for pixiecore --- hosts/copper/configuration.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/copper/configuration.nix b/hosts/copper/configuration.nix index d36934a..841d390 100644 --- a/hosts/copper/configuration.nix +++ b/hosts/copper/configuration.nix @@ -20,8 +20,8 @@ #"192.0.2.1" = ["example.com"]; } ); - firewall.interfaces.virbr0.allowedTCPPorts = [ 53 ]; - firewall.interfaces.virbr0.allowedUDPPorts = [ 53 67 ]; + firewall.interfaces.virbr0.allowedTCPPorts = [ 53 64172 ]; + firewall.interfaces.virbr0.allowedUDPPorts = [ 53 67 69 4011 ]; }; zramSwap = { From 6da5cb8a2615236341cbc2109312a911de66829f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 16 Sep 2025 09:55:18 +0200 Subject: [PATCH 528/562] Refactor rules --- hosts/iron/services/public-ip-tunnel.nix | 47 +++++++++++++----------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/hosts/iron/services/public-ip-tunnel.nix b/hosts/iron/services/public-ip-tunnel.nix index 4f17dde..d6b4fcc 100644 --- a/hosts/iron/services/public-ip-tunnel.nix +++ b/hosts/iron/services/public-ip-tunnel.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, lib, ... }: let inherit (config.networking) ports; @@ -21,27 +21,30 @@ in ''; }; firewall.allowedUDPPorts = [ listenPort ]; - wireguard.interfaces.hetzner-ha = { - ips = [ "${externalIp}/32" ]; - privateKeyFile = config.sops.secrets.wireguard_key_hetzner-ha.path; - inherit listenPort; - table = rtTable.name; - postSetup = '' - ${pkgs.iproute2}/bin/ip rule add from ${externalIp} to 192.168.0.0/16 table main priority 10 - ${pkgs.iproute2}/bin/ip rule add from ${externalIp} table ${rtTable.name} priority 20 - ''; - postShutdown = '' - ${pkgs.iproute2}/bin/ip rule del from ${externalIp} to 192.168.0.0/16 table main priority 10 - ${pkgs.iproute2}/bin/ip rule del from ${externalIp} table ${rtTable.name} priority 20 - ''; - peers = [{ - inherit publicKey; - endpoint = "${remoteHost}:${toString remotePort}"; - persistentKeepalive = 25; - allowedIPs = [ - "0.0.0.0/0" + wireguard.interfaces.hetzner-ha = + let + addRule = rule: "ip rule add " + rule; + deleteRule = rule: "ip rule delete " + rule; + rules = [ + "from ${externalIp} to 192.168.0.0/16 table main priority 10" + "from ${externalIp} table ${rtTable.name} priority 20" ]; - }]; - }; + in + { + ips = [ "${externalIp}/32" ]; + privateKeyFile = config.sops.secrets.wireguard_key_hetzner-ha.path; + inherit listenPort; + table = rtTable.name; + postSetup = lib.concatLines (map addRule rules); + postShutdown = lib.concatLines (map deleteRule rules); + peers = [{ + inherit publicKey; + endpoint = "${remoteHost}:${toString remotePort}"; + persistentKeepalive = 25; + allowedIPs = [ + "0.0.0.0/0" + ]; + }]; + }; }; } From 3deb1898cf528d7fe975aa65d1bc8295f606753a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 16 Sep 2025 11:16:10 +0200 Subject: [PATCH 529/562] Replace ddclient with godns --- hosts/aluminium/services/dyndns.nix | 57 ++++++++++++++++-------- hosts/iron/services/dyndns.nix | 69 +++++++++++++++++++++-------- 2 files changed, 89 insertions(+), 37 deletions(-) diff --git a/hosts/aluminium/services/dyndns.nix b/hosts/aluminium/services/dyndns.nix index ae3362a..546cb07 100644 --- a/hosts/aluminium/services/dyndns.nix +++ b/hosts/aluminium/services/dyndns.nix @@ -1,21 +1,42 @@ -{ config, pkgs, ... }: +{ config, lib, pkgs, ... }: +let + mkService = config: + lib.mapAttrs' + (name: cfg: lib.nameValuePair "godns-${name}" ( + let + config = cfg.settings // { + login_token_file = "$CREDENTIALS_DIRECTORY/login_token"; + }; + configFile = (pkgs.formats.yaml { }).generate "config.yaml" config; + in + { + description = "GoDNS service"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + serviceConfig = { + DynamicUser = true; + ExecStart = "${lib.getExe pkgs.godns} -c ${configFile}"; + LoadCredential = "login_token:${cfg.tokenPath}"; + Restart = "always"; + RestartSec = "2s"; + }; + } + )) + config; +in { - services.ddclient = { - enable = true; - interval = "1min"; - protocol = "duckdns"; - server = "www.duckdns.org"; - username = "nouser"; - passwordFile = config.sops.secrets.duckdns-secret.path; - domains = [ "jalr-k" ]; - usev4 = "ifv4, ifv4=ppp0"; - package = pkgs.ddclient.overrideAttrs (p: rec { - nativeBuildInputs = p.nativeBuildInputs ++ [ pkgs.makeWrapper ]; - wrapperPath = pkgs.lib.makeBinPath [ pkgs.iproute2 ]; - postFixup = '' - wrapProgram $out/bin/ddclient \ - --prefix PATH : "${wrapperPath}" - ''; - }); + systemd.services = mkService { + ip4 = { + tokenPath = config.sops.secrets.duckdns-secret.path; + settings = { + provider = "DuckDNS"; + domains = [{ domain_name = "www.duckdns.org"; sub_domains = [ "jalr-k" ]; }]; + resolver = "8.8.8.8"; + ip_interface = "ppp0"; + ip_urls = [ "" ]; + ip_type = "IPv4"; + interval = 60; + }; + }; }; } diff --git a/hosts/iron/services/dyndns.nix b/hosts/iron/services/dyndns.nix index e68e465..e53e235 100644 --- a/hosts/iron/services/dyndns.nix +++ b/hosts/iron/services/dyndns.nix @@ -1,25 +1,56 @@ -{ config, pkgs, ... }: +{ config, lib, pkgs, ... }: let interfaces = import ../interfaces.nix; + + mkService = config: + lib.mapAttrs' + (name: cfg: lib.nameValuePair "godns-${name}" ( + let + config = cfg.settings // { + login_token_file = "$CREDENTIALS_DIRECTORY/login_token"; + }; + configFile = (pkgs.formats.yaml { }).generate "config.yaml" config; + in + { + description = "GoDNS service"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + serviceConfig = { + DynamicUser = true; + ExecStart = "${lib.getExe pkgs.godns} -c ${configFile}"; + LoadCredential = "login_token:${cfg.tokenPath}"; + Restart = "always"; + RestartSec = "2s"; + }; + } + )) + config; in { - services.ddclient = { - enable = true; - interval = "1min"; - protocol = "duckdns"; - server = "www.duckdns.org"; - username = "nouser"; - passwordFile = config.sops.secrets.duckdns-secret.path; - domains = [ "jalr-bw" ]; - usev4 = "ifv4, ifv4=${interfaces.wan}"; - usev6 = "ifv6, ifv6=${interfaces.wan}"; - package = pkgs.ddclient.overrideAttrs (p: rec { - nativeBuildInputs = p.nativeBuildInputs ++ [ pkgs.makeWrapper ]; - wrapperPath = pkgs.lib.makeBinPath [ pkgs.iproute2 ]; - postFixup = '' - wrapProgram $out/bin/ddclient \ - --prefix PATH : "${wrapperPath}" - ''; - }); + systemd.services = mkService { + ip4 = { + tokenPath = config.sops.secrets.duckdns-secret.path; + settings = { + provider = "DuckDNS"; + domains = [{ domain_name = "www.duckdns.org"; sub_domains = [ "jalr-bw" ]; }]; + resolver = "8.8.8.8"; + ip_interface = interfaces.wan; + ip_urls = [ "" ]; + ip_type = "IPv4"; + interval = 60; + }; + }; + ip6 = { + tokenPath = config.sops.secrets.duckdns-secret.path; + settings = { + provider = "DuckDNS"; + domains = [{ domain_name = "www.duckdns.org"; sub_domains = [ "jalr-bw" ]; }]; + resolver = "2001:4860:4860::8888"; + ip_interface = interfaces.lan; + ip_urls = [ "" ]; + ip_type = "IPv6"; + interval = 60; + }; + }; }; } From ee83d51dd23946572c06017d7ac02f541fe5c274 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 17 Sep 2025 00:19:30 +0200 Subject: [PATCH 530/562] Use vesc only on copper --- users/jalr/modules/vesc-tool.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/users/jalr/modules/vesc-tool.nix b/users/jalr/modules/vesc-tool.nix index 16daa17..3b5d90b 100644 --- a/users/jalr/modules/vesc-tool.nix +++ b/users/jalr/modules/vesc-tool.nix @@ -1,6 +1,6 @@ { nixosConfig, lib, pkgs, ... }: -lib.mkIf nixosConfig.jalr.gui.enable { +lib.mkIf (nixosConfig.jalr.gui.enable && nixosConfig.networking.hostName == "copper") { home.packages = with pkgs; [ vesc-tool ]; xdg.dataFile."VESC/firmware".source = pkgs.bldc-fw.override { fwBoards = [ From e7860f8f9203ffdbc7fe4e8ff28327ccce2e8021 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 17 Sep 2025 21:42:24 +0200 Subject: [PATCH 531/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/b084b2c2b6bc23e83bbfe583b03664eb0b18c411?narHash=sha256-tJ7A8mID3ct69n9WCvZ3PzIIl3rXTdptn/lZmqSS95U%3D' (2025-09-11) → 'github:cachix/git-hooks.nix/54df955a695a84cd47d4a43e08e1feaf90b1fd9b?narHash=sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo%3D' (2025-09-17) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/4c38a024fa32e61db2be8573e5282b15d9733a79?narHash=sha256-NfiTk59huy/YK9H4W4wVwRYyiP2u86QqROM5KK4f5F4%3D' (2025-09-14) → 'github:nixos/nixos-hardware/67a709cfe5d0643dafd798b0b613ed579de8be05?narHash=sha256-w6cDExPBqbq7fTLo4dZ1ozDGeq3yV6dSN4n/sAaS6OM%3D' (2025-09-15) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/9a094440e02a699be5c57453a092a8baf569bdad?narHash=sha256-Vp9K5ol6h0J90jG7Rm4RWZsCB3x7v5VPx588TQ1dkfs%3D' (2025-09-14) → 'github:nixos/nixpkgs/e9b7f2ff62b35f711568b1f0866243c7c302028d?narHash=sha256-uLwwHFCZnT1c3N3biVe/0hCkag2GSrf9%2BM56%2BOkf%2BWY%3D' (2025-09-17) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/434ed09bd161bb1058612038479dc34863c3f106?narHash=sha256-D44RIPMw71krFXsk9af22YbwBhHpLWCDbncFokHWs5c%3D' (2025-09-15) → 'github:NixOS/nixpkgs/24d7757b06ccd2ab95ad9661e8461f1a84c29f88?narHash=sha256-%2BZA/6rNgzgn8U05eexkdme2eTDbW5MpRTrqpg2Sc2cE%3D' (2025-09-17) • Updated input 'nur': 'github:nix-community/NUR/0f5e4ecbdfd50a2deb75f344a03e5cfa22b97bcb?narHash=sha256-hYGtHXTQ6eQPZWXKGxZWNrraP0j2p69B9EFIKNRC65E%3D' (2025-09-15) → 'github:nix-community/NUR/32b846c44f3af23fe35a5169e072764ee9116eb8?narHash=sha256-8OL31Mu6nHWJbzNar/1SQcUcil7lU0o7r3dGycydKr8%3D' (2025-09-17) • Updated input 'sops-nix': 'github:Mic92/sops-nix/ee6f91c1c11acf7957d94a130de77561ec24b8ab?narHash=sha256-TumOaykhZO8SOs/faz6GQhqkOcFLoQvESLSF1cJ4mZc%3D' (2025-09-14) → 'github:Mic92/sops-nix/f77d4cfa075c3de66fc9976b80e0c4fc69e2c139?narHash=sha256-HYnwlbY6RE5xVd5rh0bYw77pnD8lOgbT4mlrfjgNZ0c%3D' (2025-09-16) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 25ecc01..e3df689 100644 --- a/flake.lock +++ b/flake.lock @@ -386,11 +386,11 @@ ] }, "locked": { - "lastModified": 1757588530, - "narHash": "sha256-tJ7A8mID3ct69n9WCvZ3PzIIl3rXTdptn/lZmqSS95U=", + "lastModified": 1758108966, + "narHash": "sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "b084b2c2b6bc23e83bbfe583b03664eb0b18c411", + "rev": "54df955a695a84cd47d4a43e08e1feaf90b1fd9b", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1757891025, - "narHash": "sha256-NfiTk59huy/YK9H4W4wVwRYyiP2u86QqROM5KK4f5F4=", + "lastModified": 1757943327, + "narHash": "sha256-w6cDExPBqbq7fTLo4dZ1ozDGeq3yV6dSN4n/sAaS6OM=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "4c38a024fa32e61db2be8573e5282b15d9733a79", + "rev": "67a709cfe5d0643dafd798b0b613ed579de8be05", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1757810152, - "narHash": "sha256-Vp9K5ol6h0J90jG7Rm4RWZsCB3x7v5VPx588TQ1dkfs=", + "lastModified": 1758070117, + "narHash": "sha256-uLwwHFCZnT1c3N3biVe/0hCkag2GSrf9+M56+Okf+WY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9a094440e02a699be5c57453a092a8baf569bdad", + "rev": "e9b7f2ff62b35f711568b1f0866243c7c302028d", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1757932657, - "narHash": "sha256-D44RIPMw71krFXsk9af22YbwBhHpLWCDbncFokHWs5c=", + "lastModified": 1758137774, + "narHash": "sha256-+ZA/6rNgzgn8U05eexkdme2eTDbW5MpRTrqpg2Sc2cE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "434ed09bd161bb1058612038479dc34863c3f106", + "rev": "24d7757b06ccd2ab95ad9661e8461f1a84c29f88", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1757931984, - "narHash": "sha256-hYGtHXTQ6eQPZWXKGxZWNrraP0j2p69B9EFIKNRC65E=", + "lastModified": 1758137232, + "narHash": "sha256-8OL31Mu6nHWJbzNar/1SQcUcil7lU0o7r3dGycydKr8=", "owner": "nix-community", "repo": "NUR", - "rev": "0f5e4ecbdfd50a2deb75f344a03e5cfa22b97bcb", + "rev": "32b846c44f3af23fe35a5169e072764ee9116eb8", "type": "github" }, "original": { @@ -634,11 +634,11 @@ ] }, "locked": { - "lastModified": 1757847158, - "narHash": "sha256-TumOaykhZO8SOs/faz6GQhqkOcFLoQvESLSF1cJ4mZc=", + "lastModified": 1758007585, + "narHash": "sha256-HYnwlbY6RE5xVd5rh0bYw77pnD8lOgbT4mlrfjgNZ0c=", "owner": "Mic92", "repo": "sops-nix", - "rev": "ee6f91c1c11acf7957d94a130de77561ec24b8ab", + "rev": "f77d4cfa075c3de66fc9976b80e0c4fc69e2c139", "type": "github" }, "original": { From 3e59ed36dcaeced370dcac4cff816b3763c1ff4f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 22 Sep 2025 11:05:47 +0200 Subject: [PATCH 532/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/146f45bee02b8bd88812cfce6ffc0f933788875a?narHash=sha256-7lVWL5bC6xBIMWWDal41LlGAG%2B9u2zUorqo3QCUL4p4%3D' (2025-09-10) → 'github:nix-community/disko/67ff9807dd148e704baadbd4fd783b54282ca627?narHash=sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU%3D' (2025-09-19) • Updated input 'home-manager': 'github:nix-community/home-manager/f21d9167782c086a33ad53e2311854a8f13c281e?narHash=sha256-K6PEI5PYY94TVMH0mX3MbZNYFme7oNRKml/85BpRRAo%3D' (2025-09-14) → 'github:nix-community/home-manager/3b955f5f0a942f9f60cdc9cacb7844335d0f21c3?narHash=sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA%3D' (2025-09-21) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/e9b7f2ff62b35f711568b1f0866243c7c302028d?narHash=sha256-uLwwHFCZnT1c3N3biVe/0hCkag2GSrf9%2BM56%2BOkf%2BWY%3D' (2025-09-17) → 'github:nixos/nixpkgs/b2a3852bd078e68dd2b3dfa8c00c67af1f0a7d20?narHash=sha256-afXE7AJ7MY6wY1pg/Y6UPHNYPy5GtUKeBkrZZ/gC71E%3D' (2025-09-20) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/24d7757b06ccd2ab95ad9661e8461f1a84c29f88?narHash=sha256-%2BZA/6rNgzgn8U05eexkdme2eTDbW5MpRTrqpg2Sc2cE%3D' (2025-09-17) → 'github:NixOS/nixpkgs/5ae8f56b82f8abd42c13b5f11de89f5346afec5e?narHash=sha256-OL0/5FQQc06oiF/l90H0/lVz7wvC7QR3Yptpizckr3Y%3D' (2025-09-22) • Updated input 'nur': 'github:nix-community/NUR/32b846c44f3af23fe35a5169e072764ee9116eb8?narHash=sha256-8OL31Mu6nHWJbzNar/1SQcUcil7lU0o7r3dGycydKr8%3D' (2025-09-17) → 'github:nix-community/NUR/79e546908e49b0a824a7ac4827f8563452b002e7?narHash=sha256-L6Bl4No41Ohag4/Ty0IMDE5EP56TPOfU2YaDLt59iFY%3D' (2025-09-22) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/c23193b943c6c689d70ee98ce3128239ed9e32d1?narHash=sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820%3D' (2025-09-13) → 'github:nixos/nixpkgs/8eaee110344796db060382e15d3af0a9fc396e0e?narHash=sha256-iCGWf/LTy%2BaY0zFu8q12lK8KuZp7yvdhStehhyX1v8w%3D' (2025-09-19) • Updated input 'sops-nix': 'github:Mic92/sops-nix/f77d4cfa075c3de66fc9976b80e0c4fc69e2c139?narHash=sha256-HYnwlbY6RE5xVd5rh0bYw77pnD8lOgbT4mlrfjgNZ0c%3D' (2025-09-16) → 'github:Mic92/sops-nix/e0fdaea3c31646e252a60b42d0ed8eafdb289762?narHash=sha256-L3N8zV6wsViXiD8i3WFyrvjDdz76g3tXKEdZ4FkgQ%2BY%3D' (2025-09-21) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/467e44ede9bd89fd87a075b00156455eba96fb19?narHash=sha256-xXBzVuKmkre9bHB/0f3c9ZvX41P1qWqap0Q%2BWHh1cqQ%3D' (2025-09-14) → 'github:vedderb/vesc_tool/9dab0663d4d47067c30ec4ca6aee074e6e69060b?narHash=sha256-VtvAfGNKgBuxnxdatFt6LMXu682NensmioggVl%2BJmRY%3D' (2025-09-19) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index e3df689..0eb145c 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1757508292, - "narHash": "sha256-7lVWL5bC6xBIMWWDal41LlGAG+9u2zUorqo3QCUL4p4=", + "lastModified": 1758287904, + "narHash": "sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU=", "owner": "nix-community", "repo": "disko", - "rev": "146f45bee02b8bd88812cfce6ffc0f933788875a", + "rev": "67ff9807dd148e704baadbd4fd783b54282ca627", "type": "github" }, "original": { @@ -263,11 +263,11 @@ ] }, "locked": { - "lastModified": 1757808926, - "narHash": "sha256-K6PEI5PYY94TVMH0mX3MbZNYFme7oNRKml/85BpRRAo=", + "lastModified": 1758463745, + "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=", "owner": "nix-community", "repo": "home-manager", - "rev": "f21d9167782c086a33ad53e2311854a8f13c281e", + "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1758070117, - "narHash": "sha256-uLwwHFCZnT1c3N3biVe/0hCkag2GSrf9+M56+Okf+WY=", + "lastModified": 1758346548, + "narHash": "sha256-afXE7AJ7MY6wY1pg/Y6UPHNYPy5GtUKeBkrZZ/gC71E=", "owner": "nixos", "repo": "nixpkgs", - "rev": "e9b7f2ff62b35f711568b1f0866243c7c302028d", + "rev": "b2a3852bd078e68dd2b3dfa8c00c67af1f0a7d20", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1758137774, - "narHash": "sha256-+ZA/6rNgzgn8U05eexkdme2eTDbW5MpRTrqpg2Sc2cE=", + "lastModified": 1758531531, + "narHash": "sha256-OL0/5FQQc06oiF/l90H0/lVz7wvC7QR3Yptpizckr3Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "24d7757b06ccd2ab95ad9661e8461f1a84c29f88", + "rev": "5ae8f56b82f8abd42c13b5f11de89f5346afec5e", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1757745802, - "narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=", + "lastModified": 1758277210, + "narHash": "sha256-iCGWf/LTy+aY0zFu8q12lK8KuZp7yvdhStehhyX1v8w=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1", + "rev": "8eaee110344796db060382e15d3af0a9fc396e0e", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1758137232, - "narHash": "sha256-8OL31Mu6nHWJbzNar/1SQcUcil7lU0o7r3dGycydKr8=", + "lastModified": 1758531197, + "narHash": "sha256-L6Bl4No41Ohag4/Ty0IMDE5EP56TPOfU2YaDLt59iFY=", "owner": "nix-community", "repo": "NUR", - "rev": "32b846c44f3af23fe35a5169e072764ee9116eb8", + "rev": "79e546908e49b0a824a7ac4827f8563452b002e7", "type": "github" }, "original": { @@ -634,11 +634,11 @@ ] }, "locked": { - "lastModified": 1758007585, - "narHash": "sha256-HYnwlbY6RE5xVd5rh0bYw77pnD8lOgbT4mlrfjgNZ0c=", + "lastModified": 1758425756, + "narHash": "sha256-L3N8zV6wsViXiD8i3WFyrvjDdz76g3tXKEdZ4FkgQ+Y=", "owner": "Mic92", "repo": "sops-nix", - "rev": "f77d4cfa075c3de66fc9976b80e0c4fc69e2c139", + "rev": "e0fdaea3c31646e252a60b42d0ed8eafdb289762", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1757831065, - "narHash": "sha256-xXBzVuKmkre9bHB/0f3c9ZvX41P1qWqap0Q+WHh1cqQ=", + "lastModified": 1758279410, + "narHash": "sha256-VtvAfGNKgBuxnxdatFt6LMXu682NensmioggVl+JmRY=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "467e44ede9bd89fd87a075b00156455eba96fb19", + "rev": "9dab0663d4d47067c30ec4ca6aee074e6e69060b", "type": "github" }, "original": { From 30cb9dd369fd8504edebcf9d4a3f21ed92ae225a Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 22 Sep 2025 22:51:19 +0200 Subject: [PATCH 533/562] Add TvProxy --- .gitattributes | 2 ++ hosts/iron/ports.nix | 5 +++-- hosts/iron/secrets.yaml | 5 +++-- hosts/iron/services/default.nix | 1 + hosts/iron/services/tvproxy.nix | Bin 0 -> 793 bytes 5 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 hosts/iron/services/tvproxy.nix diff --git a/.gitattributes b/.gitattributes index bd72c2c..eea1737 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,5 @@ **/secrets/** filter=git-crypt diff=git-crypt **/secrets.yaml diff=sops *.wav filter=lfs diff=lfs merge=lfs -text + +hosts/iron/services/tvproxy.nix filter=git-crypt diff=git-crypt diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 317909d..2b2b495 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -17,6 +17,7 @@ photoprism.tcp = 2342; postfix-relay.tcp = 25; postfix-submission.tcp = 465; + prometheus-vodafone-station-exporter.tcp = 9420; qbittorrent-torrent.tcp = 59832; qbittorrent-webui.tcp = 8099; radicale.tcp = 5232; @@ -24,10 +25,10 @@ snapserver.tcp = 1704; snapserverHttp.tcp = 1780; snapserverTcp.tcp = 1705; + tvproxy.tcp = 64321; unifi-http.tcp = 8080; unifi-https.tcp = 8443; - wireguard-public-ip-tunnel.udp = 51000; wireguard-esphome.udp = 51001; - prometheus-vodafone-station-exporter.tcp = 9420; + wireguard-public-ip-tunnel.udp = 51000; }; } diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index a866030..583c361 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -22,6 +22,7 @@ prometheus: exporters: vodafone-station: ENC[AES256_GCM,data:eaFqYEuK3UU=,iv:BauymCkvj33TmZLyii367uVEc4Iq4GGcik4nbyT9Fpk=,tag:poB+qh5tAdv/dEt3WN6yVw==,type:str] unpoller: ENC[AES256_GCM,data:WI1oUKHW4ef4pBk+mGM=,iv:C1LykPf1/ypUmy3ZCQzjfSjkpxhUukDNnfJnZLp2CJg=,tag:mSnZJKl9IHcx7I7GpFherw==,type:str] +tvproxy: ENC[AES256_GCM,data:MbXEmgerpUiwDgcUKF2y1+Cc+d43sKPfGGTEkvNoZFFS4rzDWw4Udg==,iv:ZDsfSb3HK008e7/J/61iqVRafIzKbtPEdhH7ixo9lSY=,tag:3JbJ+2DJKQ9G2ui6VuWbOw==,type:str] sops: age: - recipient: age1hx7fdu4mcha7kkxe7yevtvs6xgzgaafgenm3drhvr609wlj94sgqm497je @@ -33,8 +34,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-09-15T15:29:31Z" - mac: ENC[AES256_GCM,data:7clDIKf/lRxXaYpiJS8+j8MzUvPTZmf20M4xM2sto+DSh2h/rJTvQanbg4/2yNVmLCX6FZ6USJb7bqg7aBw7Yv7RMoEio/HO6BtKNcHiLLiCW0dXkIROO4s5rc1S/nwtSFpifhgN2KrjXyBq+PVFk61on7K861zimsHev/KmDKk=,iv:9S1KONQWBMJBQElvAQ+NAOn15BrN0IkIyjedwSUm7oY=,tag:Kc8N8F5rz0EVIHseT1x0Kw==,type:str] + lastmodified: "2025-09-22T14:14:39Z" + mac: ENC[AES256_GCM,data:e0GijBvhWBIRXjm1lghrF4uHrE3+45ZfgQ/l2xrUv2lx6OC4xp+vjdlzJEDEAmWyRhIDvUYZ2lXrFKu/uwH4X/6vphNvSCJdr0F5/7Rrh84CCF++xrMG/hDztAoMKlhmkYpjmhvMt6sjVRxXo/ij2q3NlC7HN+ZEVkqMwVuFTyk=,iv:4Aske7FpYG5XJweeggTJvjy9SdfPYJ0h/a+rOxHL4jY=,tag:rBC4A0ZWn4JBw+3R7VB8wQ==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index 4a10130..331bfd0 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -20,6 +20,7 @@ ./snapcast ./sturzbach.nix ./tts.nix + ./tvproxy.nix ./unifi-controller ./whatsapp.nix ./wireguard-esphome.nix diff --git a/hosts/iron/services/tvproxy.nix b/hosts/iron/services/tvproxy.nix new file mode 100644 index 0000000000000000000000000000000000000000..ac8a293003b6ad374938c4213a6c3a7486a1bd88 GIT binary patch literal 793 zcmZQ@_Y83kiVO&0aIg6pXUOpDLeRIskRmFore**r@Vl3mv? zzC)H_p3FD-`^(OE23};GUcE2CyF^dp-qs5dSDLm=4lfYfvom+YA9jAF3APT-f0hNL z3UlubdMaveF5Yr-t5EC5rWFP50k8gj*0F0}ARQO-g=zo89TR49eLH{R>hr?N<4R{@ zcl3U9UjN87CM<=)N$}f`IS-q>-##;%KWS2GtdUy#qKvEajd;xF*Ibs))JZrKRTKU+ zdi7ubaQ_COhdhd2g&{&r%WK?=YIn3OFU&e{x_e6_`@cz>>^?H|iynA$MmOQB{W-=z zr{5kCe|)upXE&!|;(u!fgI@|}St&L>Tc__xO$f`~P@c2oT)x8kiLyL?nnH>nRo7?n zo^)CL&C~Oh*%!yshi0d_47E7t7@fTv%2Oyd#pi?a+Ew0%(yR9`-#YbxnbjQcFn)Ha zsaG~fXILb?ozL~|c1C8LU!q&6S!31|b-jDvYnh(pH-)pmK7W^G=Lenxe;pruv;O{I zmT&x%GA_f_$A1OS+ZLwq%HDbPy_GYh)4lbT)tv6k6FBp1iYsqXexmo>+*Om><}LlH zb1c?6ulC;Cu#g9zHdNeB);jHS{$}Yk56OV#62~r_zI@$gtE$u6v&$!yM2LUp4a{e~ z?sz4uutq2{@J+{we3iU;3$2bMwjbKHMCa6oIA6QN#*f$jJ3oKbhpk5v__pd@$Z|#c}DxI^wgsQfw)oU*7!XI1<#x=dezjktLgns7xxXcIJ=i17wai(x=gya} Lo{mc&^XBUSKF5g* literal 0 HcmV?d00001 From 55da954dbd563f8de50e894283c217c216e10a44 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 23 Sep 2025 21:38:53 +0200 Subject: [PATCH 534/562] Add Rules for Raspberry Pi Pico and WCH Link --- modules/udev.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/udev.nix b/modules/udev.nix index dc3a7e3..908a711 100644 --- a/modules/udev.nix +++ b/modules/udev.nix @@ -12,6 +12,15 @@ let # Brother P-touch P700 { vendor = "04f9"; product = "2061"; group = "users"; mode = "0660"; } + + # RP2040 in BOOTSEL mode + { vendor = "2e8a"; product = "0003"; group = "users"; mode = "0660"; } + + # RP2350 in BOOTSEL mode + { vendor = "2e8a"; product = "000f"; group = "users"; mode = "0660"; } + + # WCH Link (CMSIS-DAP compatible adapter) + { vendor = "1a86"; product = "8010"; group = "plugdev"; mode = "0660"; } ]; mkUsbRule = rule: From 0128856c8eaed45d19ccedce2f998325ececd0b0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 29 Sep 2025 13:48:31 +0200 Subject: [PATCH 535/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/67a709cfe5d0643dafd798b0b613ed579de8be05?narHash=sha256-w6cDExPBqbq7fTLo4dZ1ozDGeq3yV6dSN4n/sAaS6OM%3D' (2025-09-15) → 'github:nixos/nixos-hardware/170ff93c860b2a9868ed1e1102d4e52cb3d934e1?narHash=sha256-6CFdj7Xs616t1W4jLDH7IohAAvl5Dyib3qEv/Uqw1rk%3D' (2025-09-23) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/b2a3852bd078e68dd2b3dfa8c00c67af1f0a7d20?narHash=sha256-afXE7AJ7MY6wY1pg/Y6UPHNYPy5GtUKeBkrZZ/gC71E%3D' (2025-09-20) → 'github:nixos/nixpkgs/25e53aa156d47bad5082ff7618f5feb1f5e02d01?narHash=sha256-F8WmEwFoHsnix7rt290R0rFXNJiMbClMZyIC/e%2BHYf0%3D' (2025-09-25) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/5ae8f56b82f8abd42c13b5f11de89f5346afec5e?narHash=sha256-OL0/5FQQc06oiF/l90H0/lVz7wvC7QR3Yptpizckr3Y%3D' (2025-09-22) → 'github:NixOS/nixpkgs/1913e602e8813cf11a97496a5f27a1ec5a155e31?narHash=sha256-nlrZS5AfCXsYCh16zU46yZmDBzqutMhIJB9eV4djn%2B0%3D' (2025-09-29) • Updated input 'nur': 'github:nix-community/NUR/79e546908e49b0a824a7ac4827f8563452b002e7?narHash=sha256-L6Bl4No41Ohag4/Ty0IMDE5EP56TPOfU2YaDLt59iFY%3D' (2025-09-22) → 'github:nix-community/NUR/660590c6a1e82e6940eadb77b37f70dd878e8633?narHash=sha256-DjFjObnO5IQWx11lzQvcQW7CsK7ltLNnvMcodoCA7r4%3D' (2025-09-29) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/8eaee110344796db060382e15d3af0a9fc396e0e?narHash=sha256-iCGWf/LTy%2BaY0zFu8q12lK8KuZp7yvdhStehhyX1v8w%3D' (2025-09-19) → 'github:nixos/nixpkgs/e9f00bd893984bc8ce46c895c3bf7cac95331127?narHash=sha256-0m27AKv6ka%2Bq270dw48KflE0LwQYrO7Fm4/2//KCVWg%3D' (2025-09-28) • Updated input 'sops-nix': 'github:Mic92/sops-nix/e0fdaea3c31646e252a60b42d0ed8eafdb289762?narHash=sha256-L3N8zV6wsViXiD8i3WFyrvjDdz76g3tXKEdZ4FkgQ%2BY%3D' (2025-09-21) → 'github:Mic92/sops-nix/9ac51832c70f2ff34fcc97b05fa74b4a78317f9e?narHash=sha256-53VP3BqMXJqD1He1WADTFyUnpta3mie56H7nC59tSic%3D' (2025-09-28) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/9dab0663d4d47067c30ec4ca6aee074e6e69060b?narHash=sha256-VtvAfGNKgBuxnxdatFt6LMXu682NensmioggVl%2BJmRY%3D' (2025-09-19) → 'github:vedderb/vesc_tool/e8aa8ce856c7da7a88337ddbefde6a4b789bfa8f?narHash=sha256-mY2sXocI%2Bk3Hky%2BTavQlko2UuOm1q7Tu%2B5Xz2wIQ6Wk%3D' (2025-09-23) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 0eb145c..eeb951c 100644 --- a/flake.lock +++ b/flake.lock @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1757943327, - "narHash": "sha256-w6cDExPBqbq7fTLo4dZ1ozDGeq3yV6dSN4n/sAaS6OM=", + "lastModified": 1758663926, + "narHash": "sha256-6CFdj7Xs616t1W4jLDH7IohAAvl5Dyib3qEv/Uqw1rk=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "67a709cfe5d0643dafd798b0b613ed579de8be05", + "rev": "170ff93c860b2a9868ed1e1102d4e52cb3d934e1", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1758346548, - "narHash": "sha256-afXE7AJ7MY6wY1pg/Y6UPHNYPy5GtUKeBkrZZ/gC71E=", + "lastModified": 1758791193, + "narHash": "sha256-F8WmEwFoHsnix7rt290R0rFXNJiMbClMZyIC/e+HYf0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b2a3852bd078e68dd2b3dfa8c00c67af1f0a7d20", + "rev": "25e53aa156d47bad5082ff7618f5feb1f5e02d01", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1758531531, - "narHash": "sha256-OL0/5FQQc06oiF/l90H0/lVz7wvC7QR3Yptpizckr3Y=", + "lastModified": 1759146238, + "narHash": "sha256-nlrZS5AfCXsYCh16zU46yZmDBzqutMhIJB9eV4djn+0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5ae8f56b82f8abd42c13b5f11de89f5346afec5e", + "rev": "1913e602e8813cf11a97496a5f27a1ec5a155e31", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1758277210, - "narHash": "sha256-iCGWf/LTy+aY0zFu8q12lK8KuZp7yvdhStehhyX1v8w=", + "lastModified": 1759036355, + "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8eaee110344796db060382e15d3af0a9fc396e0e", + "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1758531197, - "narHash": "sha256-L6Bl4No41Ohag4/Ty0IMDE5EP56TPOfU2YaDLt59iFY=", + "lastModified": 1759146291, + "narHash": "sha256-DjFjObnO5IQWx11lzQvcQW7CsK7ltLNnvMcodoCA7r4=", "owner": "nix-community", "repo": "NUR", - "rev": "79e546908e49b0a824a7ac4827f8563452b002e7", + "rev": "660590c6a1e82e6940eadb77b37f70dd878e8633", "type": "github" }, "original": { @@ -634,11 +634,11 @@ ] }, "locked": { - "lastModified": 1758425756, - "narHash": "sha256-L3N8zV6wsViXiD8i3WFyrvjDdz76g3tXKEdZ4FkgQ+Y=", + "lastModified": 1759030640, + "narHash": "sha256-53VP3BqMXJqD1He1WADTFyUnpta3mie56H7nC59tSic=", "owner": "Mic92", "repo": "sops-nix", - "rev": "e0fdaea3c31646e252a60b42d0ed8eafdb289762", + "rev": "9ac51832c70f2ff34fcc97b05fa74b4a78317f9e", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1758279410, - "narHash": "sha256-VtvAfGNKgBuxnxdatFt6LMXu682NensmioggVl+JmRY=", + "lastModified": 1758620006, + "narHash": "sha256-mY2sXocI+k3Hky+TavQlko2UuOm1q7Tu+5Xz2wIQ6Wk=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "9dab0663d4d47067c30ec4ca6aee074e6e69060b", + "rev": "e8aa8ce856c7da7a88337ddbefde6a4b789bfa8f", "type": "github" }, "original": { From 508a7b539cdbd7f3b5efd488cad0954cd65a9b26 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 1 Oct 2025 11:08:15 +0200 Subject: [PATCH 536/562] Add shroombox --- hosts/iron/secrets.yaml | 6 +- .../services/esphome/devices/shroombox.yaml | 128 ++++++++++++++++++ 2 files changed, 131 insertions(+), 3 deletions(-) create mode 100644 hosts/iron/services/esphome/devices/shroombox.yaml diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 583c361..90e5c61 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -11,7 +11,7 @@ dkim-keys: jalr.de.default: ENC[AES256_GCM,data:mnApsYKXYGtUAHddccmNmU9yZQtekDkTiTXbJ0UJxC0rFxzQCtGsinQslIROJdNUxsxciR1ilNzxawzjJD7AaWJbcAq2TYObGJJOQZBif7t/XEN/rIxEmnAFmdeAyrSONmFb9DiEn59m6DpsU+/9Y+hnc/uwwbzueO34WHJnTqmmsxFVNQZfGR+cbSckHS3wZrfjZSKKzCRt+9DU/xxJ4voyowXLO77w00LHVkyU5liwONi0v2XJ+QeP/jIMmJeKjujZcH+qvUm/kukijqyWKGrZoAYPC2cBlL/UrNECuVdSLMXvr4KBDDTCRZCSMRgUPJ0TAfpQPTPitKJ/0igK7qQl9n/6hckY7VyP8KDS7J7G2Z2XVxfZrAR4X/7ya9B2kneVr2CNx3w954EdTcV1/lD7rcKRjKynyl3ddf8gxJFJ21k1ybo2RLnftGCRVq25qNwhyfjU8x5c7AEs+YTPDrcnmxZ/Ui276eLwpMj61oZzTp8QQhiBVwS/+ruRLC+78pu2gb1gBF/Oo3nuvQD1SOpCRikLVewCYDvfXj/hrjo+oCsjTOj+9tWRcRAEDVlhkXWCMuPXDYrdt3HrIWbQuP8NW1ezd1Ll0r1ujjtPJeSwdd8cVcUSBIoA5gU+eXnYjFaSx9BZ+sIfKqG//W3S+aBYDqAEK/z4N5q66sReb5mtSQYfbZuIZDmox9bwNMG3tJmQX0lJZgEIiuJ5/ef4ra0sj9JsRFldmIn9KUmjW9OlIwzQ42cNNvQSMD/6haNiYsE6TPzVylJ/B2kNu9Qh5FfpCIPtVORv2BAGoNvZlyhjyEiXBEZ4x2hx1l5cBwGOaGhoJ0p+1wqn2zDalIBaEFjbBVdIB6DPC6/lccvpqSwF7HvW2ugyYhW+u92vgic71/BsI4i0OlsJV18gU/zVg0Yj8SK69kEwm4wkJTrkM/I4+kkUIc5OiSAknRfjOFJc0etkh3nO34xpHLOkSv9DrKfXSAGmGZtCLtVL5LGdZeCd/g6EK0JJh6bd9Gu9koSJVq5vjdDJJFf+sgk39TCvHAvk8k1/FgdK5jMJ+pR8heJtP8G96ay3DFVm5hpbjuNKqfBvbf2rkyV6++ywRFnAQGPUiMn9g6Q4F5Ks7CC1D0Ubl7b3dCUk6BDi8rHjxy9QS0/25Yz9cF0bFd6XQDfblnyRLMi9aB36M9Vp38Oh5aB16MyvNUHzcxpaAak0yknE6OuuEMBPQZgFVADCITfy9eUXl2FoXrMWEnBO78GybQ+cV8nhynn5t0U+3koMy2E8ju5kiEofQxXylys3Q76iKRRUbQqFkh/ndWtJVVfGNpi1GrUr1w1YZM0hBY9FqqeBjf7ckj+9BdiwWJ0XauuR70o7odm02mydk1/T3Hfzt3OE5nHIXnVbum9KyPx8wXj9qc6JGFm558pQOcRUgGUi+EzGoGckkoLx4Onl+XeGysW5sXP9dbYgMBug0Tjmdo9xkoBti6znDnN/zh93bbzWITNvxMgVs8zSWEhlM0c7F02UeUXSekbTFue5FOaMdYObMvPeb53jAKBOYLr34GVFvucJhKajIaNzDvfiI6fGCMxcSsWk+P3co7gdbRlWYZELsKDu2scktZsHr/gRwRiDZXAWOLiWZL4jswQ1vXSFXJgdblEV//hr2DwsAtCAsyFcgO/LGq30xi3xNqHTkUZXo6cZYSb6EVaIywMCI5ySEnTLAp/xedySANHuo8yyVqyLxkDPI7CnnSS7JcnQF3K5z+NZ0KnIpc1ewGupOhS0fKj31XxUkoSsHEY/iWJPLNA8+4VsBkADnGdkYXHTvy/yAGV6w1k1qtjiWhDAGcE9/o6NOHctYm3cx8CVsLpve/WFUaCkGgjWJdC8XP92xsUQoE6PENn6ZzFaqGHs7hgQqE1kBcEj8N5WkEqkoMo82giHE33iYoVUdkjOTkV4iDGEqyjg1BoM0GedR2A832LseDkP7u4DjIAQfpIDu7PaeiDh7xWkPRwIMV0oDTakXTdPkPGdgFikzTaxkTzRlpCbQuV769eITqVT04kJDp7+0Rb6dtjeXc0Ennv68wZSiyrlmXbrJntg7g1wrebq28q9NMIZETAPugfK6wNDu/Iw1q1kZn2ELo6xaDlcIxHDcpzK7e2VAYYuP1k3sYnSLU3oeq54j3/yS2z1me5FEqWlPOCrjdnLkE3/GjbeMsYo2YTYJEUEd2ncacSCoXUaUoxpBnjRYcHLRUV+6jy7Amp0/52rAPzSeVlBzc+SdNiKLYA2UQ74WrMU596Gkhw1SD8jSM5QqSBhH9sL+oE4GjhjLhstMUPdkNgiwxXDTZLKcIyjN1cn+RSmvNA2KXMH6MoXrkqSkJ9u2s0QAhla51zR/LZwWbzwGOO0dkh3rwh2x+pcCfuzvlk3lYr/x5XOF2k1n8yvehXY5zIX8nk6djjLbvAzzSr/yalS7R0WYIc6CjzoUl3qz+PlneMfKHcaX00hkOlIub/ZFQf1RE+JzZxi0qQq4M8Nt1XRKGDeS448Z6znDpedStUH29krZcnjMtyLmPX7ETTsjr3HLpCOd7MQ2K1rfhmvh5BtJkn1KSUf94puZbkLH7X+WnWN0hsc+KbSXnYZvqwJ8G0/7ptp/Q+wGljqhjv+HhOeA3NUwANv1xWgbiymVIlxCodXtQwn8mxS+jxSvslGwOnyUkTT76IbFbv/IpW6PNvj/xqwOqey8a/4WCGcqs403Y7TKQ+xCflG6K3tL7U5UbMnMgXTeZvoK+DooS2eIepF2WB5XqTuOZJV2OQ6GHfaBMjXN9iGVNLi6XgkbpmcMLQ4TZq+dVmgleJb14IaTFD3n74OfmbcT9lmRfPRJEpFEMNeL3ghH54P2a91zJFASgE7x+Uv2cGcmKFtMbyc/rrhH1F/Ixlv/R37huFo1T2dPMEZ/1ouuPpbUQ5oz/JlOWw3NOxd0O6oG0x9Xib+9KxSFOusLWcFEgx70jrBQKj8s2Jj+W0gZYv+BJtPMPY0KAkRj1amt4Fd6ZrPOEXJ392EHSAEv5jssO5ba52OHKA+QkYvPPL04rwkxSAQiTl57scnEj2WEIP+Lz0/qsMnwF+3rWuz856doJZcXX+U9iuzBCaYQqA1P3BojAYhEHnXBPeolHOA3BmhT9E2TJsZ6P9SQ+GaqyLm0i4vRXGlArlkLwRBs9EZv/l4DT8q0YHha53O4rhRzGJZKAOO252Dpha1YN7+FubYGAZjaUT5O0R/7xSPrGyBejddtM8asW8+NClAn4Y6xvj1IgUg6VRpEy7ZIpZEQ+UyDWt0A4nsipaz2NyZKZ5Vxza2v1qZDdYODK8nm/zj7fR/JykaNVEVj7ceTSHdaQlajfeEWWTs92msIBcqPUXqlaR005hoVvXm+WCnzIMIXLGiyRKRsAPIDYh2hGCtvfXLSq5TYm3bnGAImL0KW3Yllt1qSqSbOYsvm5QfDmTrrccvtSLGRj0rOU3Z8f4WXjf+1YgxjZ9h8fKL+LKA8x1S6M8fl0JVGBIAU8Xe8c4+r2F1VcygJp7h+0v8o8GudM6in4djAdeMLWBgXid7r0q744joFucP56opwYQp3Lu0oFEo0omS6Rh9yPfOjdGBU2eUdjcCNXXuEJD9yHSyebviSAvDw/KH1AxYSWYnjMWACCfcbOlXf3ej7PuQgq5MdFwF7+QawXm0john4YusUon4/0fqd/IFLd6oHYYesxcFdm1jN6DeS4SAqRgeEPuEWDFERgXjLHBxl5Xdi5n+NOR3Vc7ziJ9j9/CA1DKdwmsFBBDcVKMnr2FibXpN5WsSdlBng0L2zhkL22wRH9xbz8Xk5shN20/EHoxHB5HJvwfOgHIC7ooWKOUUuNTZH43+gVN+wzRzlMfiF4X71Edw+lTnQRp6Lh03M2k9do6JPoX2+UU0h6mOYiAFkhHKzCmK3DY12c4Smx+qLJNbUGhoMgthu/WnXObm0Hr+myCooTYSVNTJx6vVjI3GZtMcat2o8B9k38u/Y5/FxqTYmyXhROwS4v3W5fXwTAaxBqQy6Xj5s4V37omBBh/Z9a43nc2VlT7dKR1wIvNB/gqhiYyYrVMtYMJqGLkeCbu50LUWT4qXyR8uaqbZTVjyJCQRxZd6fd3Zfe9wIeYe3N5qKIXkFD3n1U2Q/EyRfb3TpiA+eYkAtl6JGK0vpeWpN5M2LJ3/V79e3cIG7B7/p6BrRxKxHDnBZcu57KKaN8XM+v2KTz7XdF8bjgeu1V/B9WoBwnpzCM+3s5ffNceuUcb2gJgRAUpZvcSDLYy+9aluGU2Tvsm49fCzr851p3VSEJepgPpnvuq874AX/MbPvqidF8Y21Kss1RUbl5wrlq5IihKdM+xCSq6mjvtSPVHRvw==,iv:2NBiTTW9slOH9BvM+kVbMB/+8EiS/Dc/eaqrtiwn4HY=,tag:0rc2+ZWy9XZYE7RK/oSo3g==,type:str] synapse-turn-shared-secret: ENC[AES256_GCM,data:Q1XRds3Zud1kYkvD6s9WUzP+kNDNsxB5SHd6oCAaLCHhHhYENSAYTZOF+rGjCPNyKFL0e/A=,iv:zScRQrz+pXHNUh/BGOaV+TVnDR3wu1Z/UO1zXarKwtA=,tag:ckpVziE+yb0FjctcT7tAkg==,type:str] rmfakecloud: ENC[AES256_GCM,data:ktKBKb6cRv1VF8tRvXIpxIy9hPinVPKK05mgvYzz18PEdcrCLpldm5xf7ffHtY5XzDOAMXDCiz6x4xyv7071frrF0spOEPnIzVhxwG8H2Ck=,iv:qJdHjv0RziAs4G9UGeRwGQ4GE5kaObJWpIYWpRKhr9c=,tag:PXgvU1hZK/gvWGyFJaHekg==,type:str] -esphome: ENC[AES256_GCM,data:LhouDHIP+zenpFZZWQnXBWsHoM3iGVVnmMbRaZP4lFxdYS1U+WalmBkcfIizbYJ47mhvr8DdhR9u9DNAYqyd8zUeq8PkfPpQNXaaluXF2WwesHatsmJ1A1rL+129qKp+6UCNxoqYmZmJa/eGh8BFLCwFNK3nDpkDyO0RadtQgl7gISHjfcOUKTJZY31wQfqrBWzFhJZWtYZbtu47na7GXUrorkvR4BJ768k4okX8EiSn03kGe/mHiNFs7TGctIvLNiX1AFx6HL24R3LTYH3qcIlcmcn4G/Gp9MGmphWw1FMOWcphNV8xVHSlKTseOJWtQZTldXijvxtKKjgYXeIxuQIfxFrplYnMrapgFE6NyqDPw6cfsQNhDVM1ii3xpYTCKtoDfp9WuQKRPPyiK43IPIIDtXducKUlkJR1e32/s+FUlLcIbPfHiIu4QSC0nsi8Umzfek2bJehnHHzneV99V9bFe1lQLfefP1+UvsN2QTD+xnZ9pqRm7OQA++CwC9rFHMNhxmgqwyBmV7RCu+Bwaa+wrig9XOED5Gq5eDBbTADDl9+BQEh01GpyqKAPnO7ig7bv2eeskY+aj5T98z3FsJKd0QWjv/YPUa4YnmVOX1N289iQ5BzGFkSRfVDNU81m8EXHOFmfpGVxFqCjAGeSiv/smd75HVCPrroPQAvudoMU3z1qshf3UBKu4AyS94w8dcAuAy+Kl37RPp4OrmQDSUOxZKy5XZuXvt7a5PXezCkEjVnnSWl2NidHLR1ZqBPnmRGDjLDRzOLfSwuPT6CC5dwLVDNhIQlz4f6lFtaQS5cBWdxyIn2aPUlrqxz7dKJb8YToXDNsKXqG7Glcy2CX+TdLVbNnbEW/5/5RtgrT4Dag/mZPlSod+T44ysClfarW/ONI6p0UfPMePsC/BEnpBmnO824s7D5QiF6bzwgfeWrShQRJvIY0BaRXFBmkkrkIYNPTgptQjs/vUEGKbATyZTWBSvP4fPAdQYIgkTT8YAKthurMq/Vs8XTB0Z/X1XQdE6oT0YTo+mTbI5vCDD2pu2lVxB68G792QXpZkox6SOc7/w3JG8lUHec3vQJICoZUJw3AXn6YpZP723xczhgTslJzaBb+uBJ6CEEBCjrw0zL/oPDWM9aGou7iMkvEoL2EBSsN7qw7WnFX2NOtV0BxmPOjxSe/PtPowcukQWt6yeenLYnUQ2I3zlV7LhcCmTB8O9zpvDQuaO97f7+oZMWXicfwfdAtLr+I0OJvKdfVN+28CbbVNoRkc0yMrg/94nFOrdTIjDoJqWvs9FNEzH93AuraPv+0eVXMtwN/x/msjTTZD2j/RFg6ZgDRVQ3xpORhBkUdy96aP/OBpzQrrIzyLKDVdKr9ytHMhegVr/VAJdkKq8W/FzBpZQ/iZrX8zXRTLw7wOi2X/N5Zxn7ZmlbtdIOExsTAZ9jdMe1RJcMm1uwu8vyOjZosq7hZTvbdDOPor4WB/qwfZviwKcmpfhmnQmbVEzG3wrd2xpfbpw3xXO7bEhkBFqGq81AsDZ4SizszT15ZAVg5wpmLK+wcQl7XgEdDEK2tMCsEOJRscaDNxgLzB98sFdMZPcMTtrGGB5vl0ixlzome2EjACzAfSZAc2KysjlgSZbZRwhD+czpDt8C4X/3wvGLxEkLLwWlTssYJzodX+1MSiOZ6PgkcV4lvxzq+Hu/dgtnAH/Q3y0kyeKJmvFH8h/hX4XRIGhRNcLccVBqs/xTxIdEBrUk8ptXFKNhGtQAsMBbO57gJL113p0uEUHMQnsxlp8Z/VshYGM0UpshzHnSLzz2Jk5F/hem5GI8kwXQwdpZBSdGyk4YesqbEWkLEYlyEZEiCzNaZG/sfnWL68I8I+MMRYxk3Mj55ncNkGhokue3d054zyIfKA8iz9Vtli8jTQyiyF1Ecpbb/kg==,iv:816FQciVd7jqSqfkPJw768hKSGxlL6oKApXrdGb79u8=,tag:zdgDAkLba+pM3WIGWNaPJA==,type:str] +esphome: ENC[AES256_GCM,data:SPZ/4GqNuz3Lk0Jor815jWaw9YYiIS/u79qmdjd9eNhPUiT4PpM7gQJHLwa/KHbjYAHBICVd5dAFdBsZ5UsYww6bTZcEjM+aDcSXvrXE7NKUdYwrKfOeGdsIX/l79AlNfaPma1+3dDULj6/5ElXZJFsuurMWaWc+KLOUTBTMNRwylW1pxShywz40wqxtTQmFBLhIbk/yYLfJMuFaPnctoJnW6cutbzw/fwSitAvYEq9Ch2ZOkujOOTP/NlDAsxxBV6tFJj7UnJtGJ9lucJ7BURU0eb3Bp3K3ef1XgiyTtp0g4m2EdN/XTzzA6fI4/Vhf6giDvrbXxSM5pPTbY4fjv5cpKROaHS58il24OA0S7zccFY8XoXkl2QjiJrNnsJvNrfxn21i+LFWKCC1CMZbfEMkg+FNjzrp6nkr/kpjOlEet7umhlkxXdEUSjUBmb7luig55ICSxCH5yzRD8TwsP4fhjQgAQ8C+5fojQ/YH3VkFboY4sS5mkamDeUJ94pLy3GcfKPB5I/qipi5kUxEo7AvvxK2PHNM/0VC3S/23StQwkrH2+mrU5mo4+ngutoxyegSaqJzMJZ6KORPbDo9ETxehwWGZTuP+kpjT8Sz3J0A1LxCZwQsbXJMpABWkg2c3URJZYS/1q1o+16PocE9mbPthiayrBETss6zsYB7xYjaRMN74C1yuEL/55xRqqlrNgfk/svW4XTNRl+zkRfyxz1awWEa4zSpbqSTZT5M97uxuSHwWW64dOb7lCxfVZtpBuEMTN2iITUYWfNnyv3Ipgv2AN3vZUoYiehS8Vlv+j0SHrTAjLqUv/opTNB02PMpE9wWKsOiktDQ6VwbPkd/k9xCPqdaT4fN/yinji+91BkgeaNgyu3KRTnaQlFOxmYzQAoPHwhZSwT+s0/rOPP4wtKIUkI2IcMjEWd8nw0PEo9J/wqzZxcFZ8VKSJofrVMmo0nQF4BK0/86KXOTk2bo/5HaXE4d2s6xc3qhyGnWdWUjm1X8CLoVNx49EsVRhrJKkqrvgFH0P26qNno4m7KWtzZGt/e/e3B4+TeaVgFS5o7IY8hcnIslsbic9DW/rSAxkXdumgvumRHHtBf0WA89K84/Qhs0Ufx4z9ijZdojqTX4rRPpIpV79jaJmjS72adUjnVWMMdQWyW7Y7e0Cp0u7dcbhl1T2S8QRMsJiIOv8syiUFEy8krC7R8Lf7/kZca1MYohEud/QeNsIWq0FfpyYN/vGMoTZ0Hn5npuXap5HVlmSoPX8Bve+tgR3ZFBpTS+/uXhJ70v93IXBt0fWe5tNl518Di8k5h6xAp/8Rl9EJdUuKjVnpto8bO8LIefOQLpeTo282ykPlqxsaEimeasExNAMyi/dzX9SKuSr9D5zKzU8/0zhUA+lhKtwkUkBuxeaeqF1mlffWyjVhL/3/il9Xd7kTT461889AOKt20BH1rzqVQcUiLgoi79r4kIDs2MJE8QU+Ne3fcaP+DCvjjfiTGQ+0icZvVmgKYRpJaD7MsQWN0LvzoqbkIlXrSJprsDt9JNX4IOp6egh5bxAMwZM2V7uCF/WRDXSlHYa6XJId6fY7PMAhDsTYuD4/glFzeD121yajoeyb71AgoKy62mvgExe6nnzh6qNEAQEX8bl+L6sVtwzdYpvc3j0PXbtbEs7zwncyhphj0EOag0N3E236Ck3fW6EWIKkqg7qTBDdXrCKgv7BKl6aYIDQiaUP2hwlqpegklTRkfOrAP0tOYps9DCKGa+Bm6fK2ekG/b8OCPQdp72PtyNv5vumzaV2L6v+nc/0+5VsjL66CdJ9tvwIR9NxUC6M7pp3gMQMyxW95rj4JxZkW8f8r6EU33rQJtNeeo45Uorp3l466s//GoEmcRNO08VcFJaEdd8rocm9dsexd+0QNN9xQVDOwF+KgJAUJi+Qygvzcy+nVibow2sRUPGai6/rbNBPrVEKjfHck+s794XjVGXPAoAMk7SsNKrjSpvEHws0dnC3Faa3PA8UKZalOzmNi6A1ngK/wn5SAQ/LfXRDY/oTJa4ND/C8vJfzywR8=,iv:3nnHepX48XKuKQzO4zHcGj0VNQR2edmQ2DqvAJi5W6M=,tag:UJHGnWXrwCUgyRMGc16Ntg==,type:str] home-assistant: ENC[AES256_GCM,data:wcFMxDdRCHf/shO9v2WaGgrsa9J2WP62xFs=,iv:9ckeIO62cFZUo8fPyQj445CrJVTooNlwLapM/oTsrkk=,tag:mlfxtXDPsB3T79P9BX9oJQ==,type:str] mqtt-users: home-assistant: ENC[AES256_GCM,data:oIjCw7ZnA5iOBmQdW1jcy3QQnpjT32pY,iv:5HFRkXJBdMXQbjk2ubQs3sEy5qEteiqSe2hrNc8+H40=,tag:7B6yI4oCHanE0JE/gHaKnQ==,type:str] @@ -34,8 +34,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-09-22T14:14:39Z" - mac: ENC[AES256_GCM,data:e0GijBvhWBIRXjm1lghrF4uHrE3+45ZfgQ/l2xrUv2lx6OC4xp+vjdlzJEDEAmWyRhIDvUYZ2lXrFKu/uwH4X/6vphNvSCJdr0F5/7Rrh84CCF++xrMG/hDztAoMKlhmkYpjmhvMt6sjVRxXo/ij2q3NlC7HN+ZEVkqMwVuFTyk=,iv:4Aske7FpYG5XJweeggTJvjy9SdfPYJ0h/a+rOxHL4jY=,tag:rBC4A0ZWn4JBw+3R7VB8wQ==,type:str] + lastmodified: "2025-09-23T17:32:09Z" + mac: ENC[AES256_GCM,data:D4I6ayuLKBIxvEQopWXYHB/2fojEPn3oARU+9AiOrqX35Ue5BXZc08dmz+0J+RHjX5dA78xG6FGI3x4TtGeBwkMHeXwwwzRBuLDoGBGVngwLKvf21To6051A201EFqV7RKa5L8WruaJoeNLylH1K1B4nOrpv7G/81yCdpjmctQ0=,iv:QChpkOanDVj0PHykmA1MvDAYwiWawEmZ3h0s40U9joA=,tag:WluhQpBonORXgA9i01kTpw==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- diff --git a/hosts/iron/services/esphome/devices/shroombox.yaml b/hosts/iron/services/esphome/devices/shroombox.yaml new file mode 100644 index 0000000..4f4de46 --- /dev/null +++ b/hosts/iron/services/esphome/devices/shroombox.yaml @@ -0,0 +1,128 @@ +esphome: + name: "shroombox" + friendly_name: "shroombox" + +esp32: + board: esp-wrover-kit + +api: + encryption: + key: !secret apikey_shroombox + +ota: + - platform: esphome + password: !secret otapass_shroombox + +ethernet: + type: LAN8720 + mdc_pin: GPIO23 + mdio_pin: GPIO18 + clk_mode: GPIO0_IN + phy_addr: 1 + power_pin: GPIO16 + +logger: + +i2c: + sda: GPIO4 + scl: GPIO14 + scan: true + +sensor: + - platform: scd30 + id: scd30_sensor + co2: + name: "Shroombox CO2" + accuracy_decimals: 1 + temperature: + name: "Shroombox Temperature" + accuracy_decimals: 2 + humidity: + name: "Shroombox Humidity" + accuracy_decimals: 1 + id: humidity + address: 0x61 + update_interval: 5s + automatic_self_calibration: false + + - platform: hx711 + name: "Water tank weight" + dout_pin: GPIO32 + clk_pin: GPIO33 + gain: 128 + update_interval: 5s + filters: + - calibrate_linear: + - -35884 -> 0 + - 334800 -> 887 + unit_of_measurement: g + - platform: pulse_counter + pin: + number: GPIO36 + #mode: INPUT_PULLUP + mode: INPUT + unit_of_measurement: 'RPM' + id: fan_rpm + name: Fan Speed + accuracy_decimals: 0 + +output: + - platform: ledc + id: fan_duty + pin: GPIO15 + frequency: "25000 Hz" + min_power: 10% + max_power: 100% + zero_means_zero: true + +fan: + - platform: speed + output: fan_duty + name: "Fan" + id: fan1 + +switch: + - platform: gpio + pin: GPIO2 + id: humidifier + name: "Humidifier" + +number: + - platform: template + name: "CO2 calibration value" + optimistic: true + min_value: 350 + max_value: 4500 + step: 1 + id: co2_cal + icon: "mdi:molecule-co2" + entity_category: "config" + +button: + - platform: template + name: "SCD30 Force manual calibration" + entity_category: "config" + on_press: + then: + - scd30.force_recalibration_with_reference: + value: !lambda 'return id(co2_cal).state;' + +climate: + - platform: thermostat + name: "Humidistat" + sensor: humidity + min_idle_time: 20s + min_heating_off_time: 60s + min_heating_run_time: 60s + visual: + min_temperature: 0 + max_temperature: 100 + preset: + - name: default + mode: heat + default_target_temperature_low: 80 + + heat_action: + - switch.turn_on: humidifier + idle_action: + - switch.turn_off: humidifier From 7bbf0e9f8977720f1b931952d0a0ebf871585b99 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 5 Oct 2025 23:33:27 +0200 Subject: [PATCH 537/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/54df955a695a84cd47d4a43e08e1feaf90b1fd9b?narHash=sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo%3D' (2025-09-17) → 'github:cachix/git-hooks.nix/cfc9f7bb163ad8542029d303e599c0f7eee09835?narHash=sha256-PTod9NG%2Bi3XbbnBKMl/e5uHDBYpwIWivQ3gOWSEuIEM%3D' (2025-10-03) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/170ff93c860b2a9868ed1e1102d4e52cb3d934e1?narHash=sha256-6CFdj7Xs616t1W4jLDH7IohAAvl5Dyib3qEv/Uqw1rk%3D' (2025-09-23) → 'github:nixos/nixos-hardware/3441b5242af7577230a78ffb03542add264179ab?narHash=sha256-spZegilADH0q5OngM86u6NmXxduCNv5eX9vCiUPhOYc%3D' (2025-10-04) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/25e53aa156d47bad5082ff7618f5feb1f5e02d01?narHash=sha256-F8WmEwFoHsnix7rt290R0rFXNJiMbClMZyIC/e%2BHYf0%3D' (2025-09-25) → 'github:nixos/nixpkgs/3bcc93c5f7a4b30335d31f21e2f1281cba68c318?narHash=sha256-YWo57PL7mGZU7D4WeKFMiW4ex/O6ZolUS6UNBHTZfkI%3D' (2025-10-04) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/1913e602e8813cf11a97496a5f27a1ec5a155e31?narHash=sha256-nlrZS5AfCXsYCh16zU46yZmDBzqutMhIJB9eV4djn%2B0%3D' (2025-09-29) → 'github:NixOS/nixpkgs/f0a05ce889294b1c1e02377b086b9931554f5bf3?narHash=sha256-Fvh/nZ7x/msSPPPJXfEoCqgW9NIUQLSCJCCLr8bVMos%3D' (2025-10-05) • Updated input 'nur': 'github:nix-community/NUR/660590c6a1e82e6940eadb77b37f70dd878e8633?narHash=sha256-DjFjObnO5IQWx11lzQvcQW7CsK7ltLNnvMcodoCA7r4%3D' (2025-09-29) → 'github:nix-community/NUR/dce08ba6904fcaad93c17ab65cf6b3e5dfc2d301?narHash=sha256-GkGJdNkR9gnVQt9OXwhGrD72EpK185jNVT7qoCh/3q4%3D' (2025-10-05) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/e9f00bd893984bc8ce46c895c3bf7cac95331127?narHash=sha256-0m27AKv6ka%2Bq270dw48KflE0LwQYrO7Fm4/2//KCVWg%3D' (2025-09-28) → 'github:nixos/nixpkgs/7df7ff7d8e00218376575f0acdcc5d66741351ee?narHash=sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs%3D' (2025-10-02) • Updated input 'sops-nix': 'github:Mic92/sops-nix/9ac51832c70f2ff34fcc97b05fa74b4a78317f9e?narHash=sha256-53VP3BqMXJqD1He1WADTFyUnpta3mie56H7nC59tSic%3D' (2025-09-28) → 'github:Mic92/sops-nix/6e5a38e08a2c31ae687504196a230ae00ea95133?narHash=sha256-UvzKi02LMFP74csFfwLPAZ0mrE7k6EiYaKecplyX9Qk%3D' (2025-10-05) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/e8aa8ce856c7da7a88337ddbefde6a4b789bfa8f?narHash=sha256-mY2sXocI%2Bk3Hky%2BTavQlko2UuOm1q7Tu%2B5Xz2wIQ6Wk%3D' (2025-09-23) → 'github:vedderb/vesc_tool/1f32af09ac21bd2bbb2e3a8b4148d1892636f8d9?narHash=sha256-v7P%2B2TVd0ZU6LFlBM0hg75bSRvnneefJZJ%2BAmzCf4Uk%3D' (2025-10-05) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index eeb951c..29dc015 100644 --- a/flake.lock +++ b/flake.lock @@ -386,11 +386,11 @@ ] }, "locked": { - "lastModified": 1758108966, - "narHash": "sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo=", + "lastModified": 1759523803, + "narHash": "sha256-PTod9NG+i3XbbnBKMl/e5uHDBYpwIWivQ3gOWSEuIEM=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "54df955a695a84cd47d4a43e08e1feaf90b1fd9b", + "rev": "cfc9f7bb163ad8542029d303e599c0f7eee09835", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1758663926, - "narHash": "sha256-6CFdj7Xs616t1W4jLDH7IohAAvl5Dyib3qEv/Uqw1rk=", + "lastModified": 1759582739, + "narHash": "sha256-spZegilADH0q5OngM86u6NmXxduCNv5eX9vCiUPhOYc=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "170ff93c860b2a9868ed1e1102d4e52cb3d934e1", + "rev": "3441b5242af7577230a78ffb03542add264179ab", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1758791193, - "narHash": "sha256-F8WmEwFoHsnix7rt290R0rFXNJiMbClMZyIC/e+HYf0=", + "lastModified": 1759580034, + "narHash": "sha256-YWo57PL7mGZU7D4WeKFMiW4ex/O6ZolUS6UNBHTZfkI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "25e53aa156d47bad5082ff7618f5feb1f5e02d01", + "rev": "3bcc93c5f7a4b30335d31f21e2f1281cba68c318", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1759146238, - "narHash": "sha256-nlrZS5AfCXsYCh16zU46yZmDBzqutMhIJB9eV4djn+0=", + "lastModified": 1759699079, + "narHash": "sha256-Fvh/nZ7x/msSPPPJXfEoCqgW9NIUQLSCJCCLr8bVMos=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1913e602e8813cf11a97496a5f27a1ec5a155e31", + "rev": "f0a05ce889294b1c1e02377b086b9931554f5bf3", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1759036355, - "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", + "lastModified": 1759381078, + "narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", + "rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1759146291, - "narHash": "sha256-DjFjObnO5IQWx11lzQvcQW7CsK7ltLNnvMcodoCA7r4=", + "lastModified": 1759696599, + "narHash": "sha256-GkGJdNkR9gnVQt9OXwhGrD72EpK185jNVT7qoCh/3q4=", "owner": "nix-community", "repo": "NUR", - "rev": "660590c6a1e82e6940eadb77b37f70dd878e8633", + "rev": "dce08ba6904fcaad93c17ab65cf6b3e5dfc2d301", "type": "github" }, "original": { @@ -634,11 +634,11 @@ ] }, "locked": { - "lastModified": 1759030640, - "narHash": "sha256-53VP3BqMXJqD1He1WADTFyUnpta3mie56H7nC59tSic=", + "lastModified": 1759635238, + "narHash": "sha256-UvzKi02LMFP74csFfwLPAZ0mrE7k6EiYaKecplyX9Qk=", "owner": "Mic92", "repo": "sops-nix", - "rev": "9ac51832c70f2ff34fcc97b05fa74b4a78317f9e", + "rev": "6e5a38e08a2c31ae687504196a230ae00ea95133", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1758620006, - "narHash": "sha256-mY2sXocI+k3Hky+TavQlko2UuOm1q7Tu+5Xz2wIQ6Wk=", + "lastModified": 1759670864, + "narHash": "sha256-v7P+2TVd0ZU6LFlBM0hg75bSRvnneefJZJ+AmzCf4Uk=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "e8aa8ce856c7da7a88337ddbefde6a4b789bfa8f", + "rev": "1f32af09ac21bd2bbb2e3a8b4148d1892636f8d9", "type": "github" }, "original": { From 6cd80f64f55f260d09ec8dac87a83af3f4a2fb99 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 6 Oct 2025 15:27:56 +0200 Subject: [PATCH 538/562] Migrate deprecated mautrix configs --- modules/matrix/mautrix-signal.nix | 5 ++++- modules/matrix/mautrix-whatsapp.nix | 22 +++++++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/modules/matrix/mautrix-signal.nix b/modules/matrix/mautrix-signal.nix index 228d4e9..e4b50d1 100644 --- a/modules/matrix/mautrix-signal.nix +++ b/modules/matrix/mautrix-signal.nix @@ -14,12 +14,15 @@ lib.mkIf cfg.mautrix-signal.enable { address = synapseCfg.public_baseurl; domain = synapseCfg.server_name; }; + database = { + type = "sqlite3-fk-wal"; + uri = "file:${dataDir}/mautrix-signal.db?_txlock=immediate"; + }; appservice = rec { hostname = "127.0.0.1"; inherit (cfg.mautrix-signal) port; address = "http://${hostname}:${toString port}"; provisioning.shared_secret = "disable"; - database = "sqlite:///${dataDir}/mautrix-signal.db"; }; bridge = { encryption = { diff --git a/modules/matrix/mautrix-whatsapp.nix b/modules/matrix/mautrix-whatsapp.nix index d4438fe..7225227 100644 --- a/modules/matrix/mautrix-whatsapp.nix +++ b/modules/matrix/mautrix-whatsapp.nix @@ -8,20 +8,20 @@ lib.mkIf cfg.mautrix-whatsapp.enable { services.mautrix-whatsapp = { enable = true; registerToSynapse = true; - settings = { + settings = lib.mkForce ({ homeserver = { address = synapseCfg.public_baseurl; domain = synapseCfg.server_name; }; + database = { + type = "sqlite3-fk-wal"; + uri = "file:/var/lib/mautrix-whatsapp/mautrix-whatsapp.db?_txlock=immediate"; + }; appservice = rec { hostname = "127.0.0.1"; inherit (cfg.mautrix-whatsapp) port; address = "http://${hostname}:${toString port}"; provisioning.shared_secret = "disable"; - database = { - type = "sqlite3"; - uri = "/var/lib/mautrix-whatsapp/mautrix-whatsapp.db"; - }; id = "whatsapp"; bot = { username = "whatsappbot"; @@ -46,9 +46,17 @@ lib.mkIf cfg.mautrix-whatsapp.enable { relay.enable = false; }; logging = { - print_level = "info"; file_name_format = null; + min_level = "info"; + print_level = "info"; + writers = [ + { + format = "pretty-colored"; + time_format = " "; + type = "stdout"; + } + ]; }; - } // cfg.mautrix-whatsapp.settings; + } // cfg.mautrix-whatsapp.settings); }; } From 50dedefe791655d04464d13927775f0ed2dfa211 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 6 Oct 2025 16:53:34 +0200 Subject: [PATCH 539/562] Add ro bind mounts for CA certificates --- hosts/iron/services/jellyfin.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hosts/iron/services/jellyfin.nix b/hosts/iron/services/jellyfin.nix index f5d642f..0842575 100644 --- a/hosts/iron/services/jellyfin.nix +++ b/hosts/iron/services/jellyfin.nix @@ -14,9 +14,12 @@ in "/var/lib/jellyfin" ]; BindReadOnlyPaths = [ - "/nix/store" + "/etc/resolv.conf" + "/etc/ssl" + "/etc/static/ssl" "/filebitch/pub/Filme" "/filebitch/pub/Serien" + "/nix/store" "/var/lib/qBittorrent/downloads" ]; CapabilityBoundingSet = ""; From ab489e3bd8a98b4f692165290b144ad21f89d745 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 6 Oct 2025 20:31:08 +0200 Subject: [PATCH 540/562] Add rar2fs mount service --- hosts/iron/services/default.nix | 2 +- .../{jellyfin.nix => jellyfin/default.nix} | 4 + hosts/iron/services/jellyfin/rar2fs.nix | 62 ++++++++++ hosts/iron/services/jellyfin/rar2fs_mounts.py | 112 ++++++++++++++++++ modules/unfree.nix | 2 + 5 files changed, 181 insertions(+), 1 deletion(-) rename hosts/iron/services/{jellyfin.nix => jellyfin/default.nix} (98%) create mode 100644 hosts/iron/services/jellyfin/rar2fs.nix create mode 100644 hosts/iron/services/jellyfin/rar2fs_mounts.py diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index 331bfd0..6c0e206 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -6,7 +6,7 @@ ./dyndns.nix ./esphome ./home-assistant.nix - ./jellyfin.nix + ./jellyfin ./mail.nix ./matrix.nix ./navidrome.nix diff --git a/hosts/iron/services/jellyfin.nix b/hosts/iron/services/jellyfin/default.nix similarity index 98% rename from hosts/iron/services/jellyfin.nix rename to hosts/iron/services/jellyfin/default.nix index 0842575..1da1106 100644 --- a/hosts/iron/services/jellyfin.nix +++ b/hosts/iron/services/jellyfin/default.nix @@ -3,6 +3,10 @@ let inherit (config.networking) ports; in { + imports = [ + ./rar2fs.nix + ]; + services.jellyfin = { enable = true; }; diff --git a/hosts/iron/services/jellyfin/rar2fs.nix b/hosts/iron/services/jellyfin/rar2fs.nix new file mode 100644 index 0000000..dc634cf --- /dev/null +++ b/hosts/iron/services/jellyfin/rar2fs.nix @@ -0,0 +1,62 @@ +{ lib, pkgs, ... }: + +let + rar2fs = pkgs.rar2fs.override { unrar = pkgs.unrar_6; }; + rar2fs_mounts = pkgs.writeScriptBin "rar2fs_mounts" (lib.strings.concatLines [ + "#!${pkgs.python3}/bin/python" + (builtins.readFile ./rar2fs_mounts.py) + ]); + rar_path = "/var/lib/qBittorrent/downloads"; + mount_path = "/run/jellyfin/rar2fs"; +in +{ + programs.fuse = { + userAllowOther = true; + mountMax = 1000; + }; + + environment.systemPackages = [ + rar2fs + ]; + + systemd.services.jellyfin-rar2fs = { + after = [ "jellyfin.service" ]; + wantedBy = [ "multi-user.target" ]; + path = [ rar2fs "/run/wrappers/bin" ]; + environment.USER = "jellyfin"; + serviceConfig = { + AmbientCapabilities = "CAP_SYS_ADMIN CAP_SETUID CAP_SETGID"; + CapabilityBoundingSet = "CAP_SYS_ADMIN CAP_SETUID CAP_SETGID"; + DeviceAllow = "/dev/fuse rw"; + ExecStart = "${rar2fs_mounts}/bin/rar2fs_mounts ${rar_path} ${mount_path}"; + Group = "jellyfin"; + IPAddressDeny = "any"; + LockPersonality = true; + NoNewPrivileges = "no"; + PrivateDevices = false; + PrivateMounts = false; + PrivateTmp = false; + PrivateUsers = false; + ProtectClock = true; + ProtectControlGroups = false; # implies MountAPIVFS + ProtectHome = false; + ProtectHostname = true; + ProtectKernelLogs = false; + ProtectKernelModules = false; + ProtectKernelTunables = false; # implies MountAPIVFS + #ProtectProc = "noaccess"; # implies MountAPIVFS + ProtectSystem = false; + RestrictAddressFamilies = "none"; + RestrictNamespaces = true; + RestrictRealtime = true; + SystemCallArchitectures = "native"; + SystemCallFilter = [ + "@system-service" + "@mount" + "@setuid" + "umount2" + ]; + User = "jellyfin"; + }; + }; +} diff --git a/hosts/iron/services/jellyfin/rar2fs_mounts.py b/hosts/iron/services/jellyfin/rar2fs_mounts.py new file mode 100644 index 0000000..aacbf38 --- /dev/null +++ b/hosts/iron/services/jellyfin/rar2fs_mounts.py @@ -0,0 +1,112 @@ +from pathlib import Path +import argparse +import errno +import os +import signal +import subprocess +import sys +import time + + +mounts = {} + + +class RarMount: + process = None + + @property + def mountpoint(self): + result = self.mount_root / self.rar_file.relative_to(self.rar_root).parent + return result + + def __init__(self, mount_root: str, rar_file: Path, rar_root: Path): + self.mount_root = mount_root + self.rar_file = rar_file + self.rar_root = rar_root + + os.makedirs(self.mountpoint, exist_ok=True) + + print(f"Mounting '{self.rar_file}' at '{self.mountpoint}'") + self.process = subprocess.Popen( + [ + "rar2fs", + "-f", + "-o", + "auto_unmount", + "-o", + "allow_other", + "--no-inherit-perm", + self.rar_file, + self.mountpoint, + ] + ) + + def __del__(self): + if self.process: + self.process.terminate() + self.process.communicate() + + for i in range(10): + try: + os.rmdir(self.mountpoint) + except FileNotFoundError: + pass + except OSError as ex: + # if ex.errno == errno.ENOEMPTY: + # break + if ex.errno == errno.EBUSY: + time.sleep(1) + raise + else: + break + + for dir in self.mountpoint.relative_to(self.mount_root).parents: + try: + os.rmdir(self.mount_root.joinpath(dir)) + except OSError as ex: + pass + + +def signal_handler(sig, frame): + for rar_file, mount in mounts.items(): + del mount + + sys.exit(0) + + +def parse_args(): + parser = argparse.ArgumentParser( + description="Recursively globs a path containing rar files and mounts them under a given mount path." + ) + + parser.add_argument("rar_path", type=Path, help="Path to the RAR directory") + + parser.add_argument("mount_path", type=Path, help="Path to the mount directory") + + return parser.parse_args() + + +def main(): + args = parse_args() + + if not args.rar_path.is_dir(): + parser.error(f"RAR path '{args.rar_path}' is not a valid directory.") + + signal.signal(signal.SIGINT, signal_handler) + + for rar_file in args.rar_path.rglob("*.rar"): + if rar_file in mounts: + continue + if len(rar_file.parts) >= 2 and rar_file.parts[-2].lower() in ["subs", "proof"]: + continue + + mounts[rar_file] = RarMount(args.mount_path, rar_file, args.rar_path) + + while True: + time.sleep(600) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/modules/unfree.nix b/modules/unfree.nix index 77e1c81..a24df1c 100644 --- a/modules/unfree.nix +++ b/modules/unfree.nix @@ -3,7 +3,9 @@ { nixpkgs.config.allowUnfreePredicate = pkg: lib.elem (lib.getName pkg) [ "mongodb" + "rar2fs" "roomeqwizard" "unifi-controller" + "unrar" ]; } From fc8ab454b7b8e5b33062c2f04abd6b9e580334d1 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 10 Oct 2025 11:02:09 +0200 Subject: [PATCH 541/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'gomod2nix': 'github:nix-community/gomod2nix/47d628dc3b506bd28632e47280c6b89d3496909d?narHash=sha256-JeuGh9kA1SPL70fnvpLxkIkCWpTjtoPaus3jzvdna0k%3D' (2025-08-24) → 'github:nix-community/gomod2nix/7f8d7438f5870eb167abaf2c39eea3d2302019d1?narHash=sha256-pDyrtUQyeP1lVTMIYqJtftzDtsXEZaJjYy9ZQ/SGhL8%3D' (2025-10-09) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/3441b5242af7577230a78ffb03542add264179ab?narHash=sha256-spZegilADH0q5OngM86u6NmXxduCNv5eX9vCiUPhOYc%3D' (2025-10-04) → 'github:nixos/nixos-hardware/d232c6f9ccad3af6d1b66f7feccece66f9aec61a?narHash=sha256-KwyyrQAdX1wD9HVhxotGxbSNdrVm4RGxAkbMKP6uSvE%3D' (2025-10-09) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/3bcc93c5f7a4b30335d31f21e2f1281cba68c318?narHash=sha256-YWo57PL7mGZU7D4WeKFMiW4ex/O6ZolUS6UNBHTZfkI%3D' (2025-10-04) → 'github:nixos/nixpkgs/20c4598c84a671783f741e02bf05cbfaf4907cff?narHash=sha256-a0%2Bh02lyP2KwSNrZz4wLJTu9ikujNsTWIC874Bv7IJ0%3D' (2025-10-06) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/f0a05ce889294b1c1e02377b086b9931554f5bf3?narHash=sha256-Fvh/nZ7x/msSPPPJXfEoCqgW9NIUQLSCJCCLr8bVMos%3D' (2025-10-05) → 'github:NixOS/nixpkgs/5b3275f79e9e0d8c29a7e2819ab6eddbe5cca66b?narHash=sha256-S%2BeueXZ1NyYh1JbM1OsPXl8lSkhldEj2EBuoJtjq%2BU8%3D' (2025-10-10) • Updated input 'nur': 'github:nix-community/NUR/dce08ba6904fcaad93c17ab65cf6b3e5dfc2d301?narHash=sha256-GkGJdNkR9gnVQt9OXwhGrD72EpK185jNVT7qoCh/3q4%3D' (2025-10-05) → 'github:nix-community/NUR/c84cfd2c38e5802149b7dd619f2d0eba522d0bc3?narHash=sha256-9IcKohgoH2WXYBcccqjTO0BnKMsHlDiEphyg7IQPaWg%3D' (2025-10-10) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/7df7ff7d8e00218376575f0acdcc5d66741351ee?narHash=sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs%3D' (2025-10-02) → 'github:nixos/nixpkgs/c9b6fb798541223bbb396d287d16f43520250518?narHash=sha256-vgPm2xjOmKdZ0xKA6yLXPJpjOtQPHfaZDRtH%2B47XEBo%3D' (2025-10-07) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/1f32af09ac21bd2bbb2e3a8b4148d1892636f8d9?narHash=sha256-v7P%2B2TVd0ZU6LFlBM0hg75bSRvnneefJZJ%2BAmzCf4Uk%3D' (2025-10-05) → 'github:vedderb/vesc_tool/cc9e1b48aa80628c06f5008727c3b6d6ea8fa93e?narHash=sha256-tdljAU7bb3/P4mEa6ezS7htB1U8O4%2BTAMU4KB2JEWUY%3D' (2025-10-08) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 29dc015..d032928 100644 --- a/flake.lock +++ b/flake.lock @@ -243,11 +243,11 @@ ] }, "locked": { - "lastModified": 1756047880, - "narHash": "sha256-JeuGh9kA1SPL70fnvpLxkIkCWpTjtoPaus3jzvdna0k=", + "lastModified": 1759991118, + "narHash": "sha256-pDyrtUQyeP1lVTMIYqJtftzDtsXEZaJjYy9ZQ/SGhL8=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "47d628dc3b506bd28632e47280c6b89d3496909d", + "rev": "7f8d7438f5870eb167abaf2c39eea3d2302019d1", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1759582739, - "narHash": "sha256-spZegilADH0q5OngM86u6NmXxduCNv5eX9vCiUPhOYc=", + "lastModified": 1760053573, + "narHash": "sha256-KwyyrQAdX1wD9HVhxotGxbSNdrVm4RGxAkbMKP6uSvE=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "3441b5242af7577230a78ffb03542add264179ab", + "rev": "d232c6f9ccad3af6d1b66f7feccece66f9aec61a", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1759580034, - "narHash": "sha256-YWo57PL7mGZU7D4WeKFMiW4ex/O6ZolUS6UNBHTZfkI=", + "lastModified": 1759735786, + "narHash": "sha256-a0+h02lyP2KwSNrZz4wLJTu9ikujNsTWIC874Bv7IJ0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3bcc93c5f7a4b30335d31f21e2f1281cba68c318", + "rev": "20c4598c84a671783f741e02bf05cbfaf4907cff", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1759699079, - "narHash": "sha256-Fvh/nZ7x/msSPPPJXfEoCqgW9NIUQLSCJCCLr8bVMos=", + "lastModified": 1760086576, + "narHash": "sha256-S+eueXZ1NyYh1JbM1OsPXl8lSkhldEj2EBuoJtjq+U8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f0a05ce889294b1c1e02377b086b9931554f5bf3", + "rev": "5b3275f79e9e0d8c29a7e2819ab6eddbe5cca66b", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1759381078, - "narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=", + "lastModified": 1759831965, + "narHash": "sha256-vgPm2xjOmKdZ0xKA6yLXPJpjOtQPHfaZDRtH+47XEBo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee", + "rev": "c9b6fb798541223bbb396d287d16f43520250518", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1759696599, - "narHash": "sha256-GkGJdNkR9gnVQt9OXwhGrD72EpK185jNVT7qoCh/3q4=", + "lastModified": 1760083541, + "narHash": "sha256-9IcKohgoH2WXYBcccqjTO0BnKMsHlDiEphyg7IQPaWg=", "owner": "nix-community", "repo": "NUR", - "rev": "dce08ba6904fcaad93c17ab65cf6b3e5dfc2d301", + "rev": "c84cfd2c38e5802149b7dd619f2d0eba522d0bc3", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1759670864, - "narHash": "sha256-v7P+2TVd0ZU6LFlBM0hg75bSRvnneefJZJ+AmzCf4Uk=", + "lastModified": 1759909745, + "narHash": "sha256-tdljAU7bb3/P4mEa6ezS7htB1U8O4+TAMU4KB2JEWUY=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "1f32af09ac21bd2bbb2e3a8b4148d1892636f8d9", + "rev": "cc9e1b48aa80628c06f5008727c3b6d6ea8fa93e", "type": "github" }, "original": { From 81724a93e9892325077b13a0afbe47d02d917c9c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Sun, 12 Oct 2025 03:19:03 +0200 Subject: [PATCH 542/562] Add BROFLIX logo --- hosts/iron/services/jellyfin/broflix.svg | 57 ++++++++++++++++++++++++ hosts/iron/services/jellyfin/default.nix | 25 ++++++++++- 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 hosts/iron/services/jellyfin/broflix.svg diff --git a/hosts/iron/services/jellyfin/broflix.svg b/hosts/iron/services/jellyfin/broflix.svg new file mode 100644 index 0000000..7653de9 --- /dev/null +++ b/hosts/iron/services/jellyfin/broflix.svg @@ -0,0 +1,57 @@ + + + + + + + + + unrar and chill + + diff --git a/hosts/iron/services/jellyfin/default.nix b/hosts/iron/services/jellyfin/default.nix index 1da1106..f5c31ab 100644 --- a/hosts/iron/services/jellyfin/default.nix +++ b/hosts/iron/services/jellyfin/default.nix @@ -1,6 +1,20 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let inherit (config.networking) ports; + logoPng = pkgs.stdenvNoCC.mkDerivation { + name = "broflix.png"; + src = ./broflix.svg; + dontBuild = true; + dontUnpack = true; + installPhase = '' + export PATH="$PATH:${pkgs.lib.makeBinPath [pkgs.imagemagick]}" + convert \ + -background transparent \ + $src \ + -resize 1302x \ + $out + ''; + }; in { imports = [ @@ -76,6 +90,15 @@ in proxy_set_header X-Forwarded-Host $http_host; proxy_buffering off; } + location = /web/broflix.svg { + alias ${./broflix.svg}; + } + location = /web/assets/img/banner-light.png { + alias ${logoPng}; + } + location = /web/assets/img/banner-dark.png { + alias ${logoPng}; + } location = /web/ { proxy_pass http://127.0.0.1:${toString ports.jellyfin.tcp}/web/index.html; proxy_set_header Host $host; From c23cd959e322c684fc42eb5a3da7da2b55e1178d Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 2 Oct 2025 11:50:06 +0200 Subject: [PATCH 543/562] Add pipewire to iron --- hosts/iron/services/snapcast/alsa.nix | 6 ---- .../iron/services/snapcast/bluetooth-sink.nix | 24 +++++++++++---- hosts/iron/services/snapcast/default.nix | 15 +++++++++- hosts/iron/services/snapcast/ledfx.nix | 29 +++++++++++++++++-- hosts/iron/services/snapcast/snapclient.nix | 5 ++-- 5 files changed, 61 insertions(+), 18 deletions(-) delete mode 100644 hosts/iron/services/snapcast/alsa.nix diff --git a/hosts/iron/services/snapcast/alsa.nix b/hosts/iron/services/snapcast/alsa.nix deleted file mode 100644 index 1b8566e..0000000 --- a/hosts/iron/services/snapcast/alsa.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - boot.kernelModules = [ "snd-aloop" ]; - boot.extraModprobeConfig = '' - options snd-aloop id=ledfx,bluetooth enable=1,1 pcm_substreams=2,2 - ''; -} diff --git a/hosts/iron/services/snapcast/bluetooth-sink.nix b/hosts/iron/services/snapcast/bluetooth-sink.nix index 38cf8e3..43db142 100644 --- a/hosts/iron/services/snapcast/bluetooth-sink.nix +++ b/hosts/iron/services/snapcast/bluetooth-sink.nix @@ -1,7 +1,11 @@ { pkgs, ... }: { environment.systemPackages = with pkgs; [ - bluez-alsa + #bluez-alsa + bluez + bluez-tools + pipewire + wireplumber ]; hardware.bluetooth = { @@ -18,11 +22,17 @@ FastConnectable = "true"; # Allow repairing of existing devices JustWorksRepairing = "always"; + # to show battery state + Experimental = true; }; }; }; - services.blueman.enable = true; + services = { + blueman.enable = true; + ofono.enable = true; + upower.enable = true; + }; systemd.services = { bluetooth-auto-pair = { @@ -45,7 +55,8 @@ Restart = "on-failure"; }; }; - bluealsa-aplay = { + /* + bluealsa-aplay = { wantedBy = [ "multi-user.target" ]; serviceConfig = { DynamicUser = true; @@ -54,14 +65,15 @@ Restart = "on-failure"; SupplementaryGroups = [ "audio" ]; }; - }; - bluealsa-a2dp = { + }; + bluealsa-a2dp = { wantedBy = [ "multi-user.target" ]; serviceConfig = { Type = "simple"; ExecStart = "${pkgs.bluez-alsa}/bin/bluealsa -p a2dp-sink"; Restart = "on-failure"; }; - }; + }; + */ }; } diff --git a/hosts/iron/services/snapcast/default.nix b/hosts/iron/services/snapcast/default.nix index 803531e..496bb63 100644 --- a/hosts/iron/services/snapcast/default.nix +++ b/hosts/iron/services/snapcast/default.nix @@ -1,10 +1,23 @@ +{ pkgs, ... }: + { imports = [ - ./alsa.nix ./bluetooth-sink.nix ./ledfx.nix ./mopidy.nix ./snapclient.nix ./snapserver.nix ]; + + services.pipewire = { + enable = true; + systemWide = true; + audio.enable = true; + pulse.enable = true; + alsa.enable = true; + }; + + environment.systemPackages = [ pkgs.pulseaudio ]; + + users.users.jalr.extraGroups = [ "pipewire" ]; } diff --git a/hosts/iron/services/snapcast/ledfx.nix b/hosts/iron/services/snapcast/ledfx.nix index 4a4a3d6..d7db19d 100644 --- a/hosts/iron/services/snapcast/ledfx.nix +++ b/hosts/iron/services/snapcast/ledfx.nix @@ -7,6 +7,29 @@ in 8888 ]; + + services.pipewire.extraConfig.pipewire."10-ledfx-loop" = { + "context.modules" = [ + { + name = "libpipewire-module-loopback"; + args = { + "audio.position" = [ "FL,FR" ]; + "capture.props" = { + "media.class" = "Audio/Sink"; + "node.name" = "ledfx.input"; + "node.description" = "ledfx capture"; + }; + "playback.props" = { + "media.class" = "Audio/Source"; + "node.name" = "ledfx.output"; + "node.passive" = true; + }; + }; + } + ]; + }; + + systemd.services.snapclient-ledfx = { enable = true; description = "Snapcast client"; @@ -15,8 +38,8 @@ in wantedBy = [ "multi-user.target" ]; serviceConfig = { DynamicUser = "yes"; - ExecStart = "${pkgs.snapcast}/bin/snapclient --host 127.0.0.1 --hostID ledfx -i 2 --player alsa -s ledfx"; - Group = "audio"; + ExecStart = "${pkgs.snapcast}/bin/snapclient --host 127.0.0.1 --hostID ledfx -i 2 --player pulse -s ledfx.input"; + Group = "pipewire"; NoNewPrivileges = true; ProtectControlGroups = true; ProtectHome = true; @@ -37,7 +60,7 @@ in serviceConfig = { DynamicUser = "yes"; ExecStart = "${pkgs.ledfx}/bin/ledfx --host 0.0.0.0 -p 8888 -c %S/ledfx"; - Group = "audio"; + Group = "pipewire"; NoNewPrivileges = true; ProtectControlGroups = true; ProtectHome = true; diff --git a/hosts/iron/services/snapcast/snapclient.nix b/hosts/iron/services/snapcast/snapclient.nix index 27bb202..b0c4687 100644 --- a/hosts/iron/services/snapcast/snapclient.nix +++ b/hosts/iron/services/snapcast/snapclient.nix @@ -7,10 +7,11 @@ wants = [ "network.target" "sound.target" ]; after = [ "network.target" "sound.target" ]; wantedBy = [ "multi-user.target" ]; + environment.PULSE_SERVER = "unix:/run/pulse/native"; serviceConfig = { DynamicUser = "yes"; - ExecStart = "${pkgs.snapcast}/bin/snapclient --host 127.0.0.1 -s DAC"; - Group = "audio"; + ExecStart = "${pkgs.snapcast}/bin/snapclient --host 127.0.0.1 --player pulse -s alsa_output.usb-Burr-Brown_from_TI_USB_Audio_DAC-00.analog-stereo"; + Group = "pipewire"; NoNewPrivileges = true; ProtectControlGroups = true; ProtectHome = true; From 1baad7a328619447b4689d2e3de6a0dc1a7ec82c Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 23 Oct 2025 10:00:02 +0200 Subject: [PATCH 544/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/67ff9807dd148e704baadbd4fd783b54282ca627?narHash=sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU%3D' (2025-09-19) → 'github:nix-community/disko/3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5?narHash=sha256-y7UhnWlER8r776JsySqsbTUh2Txf7K30smfHlqdaIQw%3D' (2025-10-17) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/cfc9f7bb163ad8542029d303e599c0f7eee09835?narHash=sha256-PTod9NG%2Bi3XbbnBKMl/e5uHDBYpwIWivQ3gOWSEuIEM%3D' (2025-10-03) → 'github:cachix/git-hooks.nix/ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37?narHash=sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc%3D' (2025-10-17) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/d232c6f9ccad3af6d1b66f7feccece66f9aec61a?narHash=sha256-KwyyrQAdX1wD9HVhxotGxbSNdrVm4RGxAkbMKP6uSvE%3D' (2025-10-09) → 'github:nixos/nixos-hardware/d6645c340ef7d821602fd2cd199e8d1eed10afbc?narHash=sha256-2m1S4jl%2BGEDtlt2QqeHil8Ny456dcGSKJAM7q3j/BFU%3D' (2025-10-20) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/20c4598c84a671783f741e02bf05cbfaf4907cff?narHash=sha256-a0%2Bh02lyP2KwSNrZz4wLJTu9ikujNsTWIC874Bv7IJ0%3D' (2025-10-06) → 'github:nixos/nixpkgs/481cf557888e05d3128a76f14c76397b7d7cc869?narHash=sha256-G/iC4t/9j/52i/nm%2B0/4ybBmAF4hzR8CNHC75qEhjHo%3D' (2025-10-21) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/5b3275f79e9e0d8c29a7e2819ab6eddbe5cca66b?narHash=sha256-S%2BeueXZ1NyYh1JbM1OsPXl8lSkhldEj2EBuoJtjq%2BU8%3D' (2025-10-10) → 'github:NixOS/nixpkgs/d05426b82736631cf0a4dc8bceef1e52a4326dd7?narHash=sha256-XS7PTk22esg%2BHHg5OSF6%2BjgR6X/2WbzHj1CC8aS0x9E%3D' (2025-10-23) • Updated input 'nur': 'github:nix-community/NUR/c84cfd2c38e5802149b7dd619f2d0eba522d0bc3?narHash=sha256-9IcKohgoH2WXYBcccqjTO0BnKMsHlDiEphyg7IQPaWg%3D' (2025-10-10) → 'github:nix-community/NUR/1d182e3ee8a3a55dc50ff907877294652606a152?narHash=sha256-YF83M84JXliUtQjVsOeXMOtZNnhmTRd9YwH8aVUu1Io%3D' (2025-10-23) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/c9b6fb798541223bbb396d287d16f43520250518?narHash=sha256-vgPm2xjOmKdZ0xKA6yLXPJpjOtQPHfaZDRtH%2B47XEBo%3D' (2025-10-07) → 'github:nixos/nixpkgs/01f116e4df6a15f4ccdffb1bcd41096869fb385c?narHash=sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d%2BdAiC3H%2BCDle4%3D' (2025-10-22) • Updated input 'sops-nix': 'github:Mic92/sops-nix/6e5a38e08a2c31ae687504196a230ae00ea95133?narHash=sha256-UvzKi02LMFP74csFfwLPAZ0mrE7k6EiYaKecplyX9Qk%3D' (2025-10-05) → 'github:Mic92/sops-nix/5a7d18b5c55642df5c432aadb757140edfeb70b3?narHash=sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY%3D' (2025-10-20) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/cc9e1b48aa80628c06f5008727c3b6d6ea8fa93e?narHash=sha256-tdljAU7bb3/P4mEa6ezS7htB1U8O4%2BTAMU4KB2JEWUY%3D' (2025-10-08) → 'github:vedderb/vesc_tool/8a6de0dda75e62681e7252a1512f34a5f4e70640?narHash=sha256-%2Bvk8SRGknwg5Q8y/R4oHkiLxe2SDQDYGj8jK7Xaeu6c%3D' (2025-10-17) --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index d032928..a706fcc 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1758287904, - "narHash": "sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU=", + "lastModified": 1760701190, + "narHash": "sha256-y7UhnWlER8r776JsySqsbTUh2Txf7K30smfHlqdaIQw=", "owner": "nix-community", "repo": "disko", - "rev": "67ff9807dd148e704baadbd4fd783b54282ca627", + "rev": "3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5", "type": "github" }, "original": { @@ -386,11 +386,11 @@ ] }, "locked": { - "lastModified": 1759523803, - "narHash": "sha256-PTod9NG+i3XbbnBKMl/e5uHDBYpwIWivQ3gOWSEuIEM=", + "lastModified": 1760663237, + "narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "cfc9f7bb163ad8542029d303e599c0f7eee09835", + "rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1760053573, - "narHash": "sha256-KwyyrQAdX1wD9HVhxotGxbSNdrVm4RGxAkbMKP6uSvE=", + "lastModified": 1760958188, + "narHash": "sha256-2m1S4jl+GEDtlt2QqeHil8Ny456dcGSKJAM7q3j/BFU=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "d232c6f9ccad3af6d1b66f7feccece66f9aec61a", + "rev": "d6645c340ef7d821602fd2cd199e8d1eed10afbc", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1759735786, - "narHash": "sha256-a0+h02lyP2KwSNrZz4wLJTu9ikujNsTWIC874Bv7IJ0=", + "lastModified": 1761016216, + "narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "20c4598c84a671783f741e02bf05cbfaf4907cff", + "rev": "481cf557888e05d3128a76f14c76397b7d7cc869", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1760086576, - "narHash": "sha256-S+eueXZ1NyYh1JbM1OsPXl8lSkhldEj2EBuoJtjq+U8=", + "lastModified": 1761206094, + "narHash": "sha256-XS7PTk22esg+HHg5OSF6+jgR6X/2WbzHj1CC8aS0x9E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5b3275f79e9e0d8c29a7e2819ab6eddbe5cca66b", + "rev": "d05426b82736631cf0a4dc8bceef1e52a4326dd7", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1759831965, - "narHash": "sha256-vgPm2xjOmKdZ0xKA6yLXPJpjOtQPHfaZDRtH+47XEBo=", + "lastModified": 1761114652, + "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c9b6fb798541223bbb396d287d16f43520250518", + "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1760083541, - "narHash": "sha256-9IcKohgoH2WXYBcccqjTO0BnKMsHlDiEphyg7IQPaWg=", + "lastModified": 1761205534, + "narHash": "sha256-YF83M84JXliUtQjVsOeXMOtZNnhmTRd9YwH8aVUu1Io=", "owner": "nix-community", "repo": "NUR", - "rev": "c84cfd2c38e5802149b7dd619f2d0eba522d0bc3", + "rev": "1d182e3ee8a3a55dc50ff907877294652606a152", "type": "github" }, "original": { @@ -634,11 +634,11 @@ ] }, "locked": { - "lastModified": 1759635238, - "narHash": "sha256-UvzKi02LMFP74csFfwLPAZ0mrE7k6EiYaKecplyX9Qk=", + "lastModified": 1760998189, + "narHash": "sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY=", "owner": "Mic92", "repo": "sops-nix", - "rev": "6e5a38e08a2c31ae687504196a230ae00ea95133", + "rev": "5a7d18b5c55642df5c432aadb757140edfeb70b3", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1759909745, - "narHash": "sha256-tdljAU7bb3/P4mEa6ezS7htB1U8O4+TAMU4KB2JEWUY=", + "lastModified": 1760697314, + "narHash": "sha256-+vk8SRGknwg5Q8y/R4oHkiLxe2SDQDYGj8jK7Xaeu6c=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "cc9e1b48aa80628c06f5008727c3b6d6ea8fa93e", + "rev": "8a6de0dda75e62681e7252a1512f34a5f4e70640", "type": "github" }, "original": { From 0a2a569682b7ed3c0f6c31121cc8281221b79160 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 Oct 2025 12:01:58 +0200 Subject: [PATCH 545/562] Remove gnused it is not required --- pkgs/pomodoro-timer/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/pomodoro-timer/default.nix b/pkgs/pomodoro-timer/default.nix index 4af648b..a3638f8 100644 --- a/pkgs/pomodoro-timer/default.nix +++ b/pkgs/pomodoro-timer/default.nix @@ -2,7 +2,6 @@ , stdenv , yad , uair -, gnused , writeShellScript , makeDesktopItem , imagemagick @@ -10,7 +9,7 @@ let pomodoroTimer = writeShellScript "pomodoro-timer" '' - export PATH=${lib.makeBinPath [yad uair gnused]} + export PATH=${lib.makeBinPath [yad uair]} uairctl listen -o yad \ | yad \ --title="Pomodoro" \ From c9a956bc6331257768473f7e8426472fa7822bb0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 Oct 2025 17:38:34 +0200 Subject: [PATCH 546/562] Rework solarized --- users/jalr/modules/solarized.nix | 87 +++++++++++---- users/jalr/modules/sway/default.nix | 69 ++++++------ users/jalr/modules/sway/waybar.nix | 44 ++------ users/jalr/modules/sway/wofi.nix | 157 ++++++++++++++-------------- 4 files changed, 186 insertions(+), 171 deletions(-) diff --git a/users/jalr/modules/solarized.nix b/users/jalr/modules/solarized.nix index 5390a31..baa2547 100644 --- a/users/jalr/modules/solarized.nix +++ b/users/jalr/modules/solarized.nix @@ -1,23 +1,68 @@ -builtins.mapAttrs - (_: hex: { - inherit hex; - rgb = builtins.concatStringsSep "," (map (f: toString (builtins.fromTOML "i = 0x${f hex}").i) (map (pos: builtins.substring pos 2) [ 1 3 5 ])); - }) +let + colors = { + base00 = "#657b83"; + base01 = "#586e75"; + base02 = "#073642"; + base03 = "#002b36"; + base0 = "#839496"; + base1 = "#93a1a1"; + base2 = "#eee8d5"; + base3 = "#fdf6e3"; + blue = "#268bd2"; + cyan = "#2aa198"; + green = "#859900"; + magenta = "#d33682"; + orange = "#cb4b16"; + red = "#dc322f"; + violet = "#6c71c4"; + yellow = "#b58900"; + }; + common = { + base08 = colors.red; + base09 = colors.orange; + base0A = colors.yellow; + base0B = colors.green; + base0C = colors.cyan; + base0D = colors.blue; + base0E = colors.violet; + base0F = colors.magenta; + }; + light = common // { + base00 = colors.base3; + base01 = colors.base2; + base02 = colors.base1; + base03 = colors.base0; + base04 = colors.base00; + base05 = colors.base01; + base06 = colors.base02; + base07 = colors.base03; + }; + dark = common // { + base00 = colors.base03; + base01 = colors.base02; + base02 = colors.base01; + base03 = colors.base00; + base04 = colors.base0; + base05 = colors.base1; + base06 = colors.base2; + base07 = colors.base3; + }; + toRgb = hex: builtins.concatStringsSep "," ( + map + ( + f: toString (builtins.fromTOML "i = 0x${f hex}").i + ) + ( + map (pos: builtins.substring pos 2) [ 1 3 5 ] + ) + ); + makeScheme = colors: { + hex = colors; + rgb = builtins.mapAttrs (_: hex: (toRgb hex)) colors; + }; +in { - base00 = "#657b83"; - base01 = "#586e75"; - base02 = "#073642"; - base03 = "#002b36"; - base0 = "#839496"; - base1 = "#93a1a1"; - base2 = "#eee8d5"; - base3 = "#fdf6e3"; - blue = "#268bd2"; - cyan = "#2aa198"; - green = "#859900"; - magenta = "#d33682"; - orange = "#cb4b16"; - red = "#dc322f"; - violet = "#6c71c4"; - yellow = "#b58900"; + inherit colors; + light = makeScheme light; + dark = makeScheme dark; } diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index 2202b71..2d7bb71 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -363,40 +363,39 @@ in }; }; - xdg.configFile = { - "sway/light-theme".text = with solarized; '' - client.focused ${base01.hex} ${blue.hex} ${base3.hex} ${blue.hex} ${blue.hex} - client.focused_inactive ${base2.hex} ${base2.hex} ${base01.hex} ${base0.hex} ${base2.hex} - client.unfocused ${base2.hex} ${base3.hex} ${base01.hex} ${base2.hex} ${base2.hex} - client.urgent ${red.hex} ${red.hex} ${base3.hex} ${red.hex} ${red.hex} - ''; - "sway/dark-theme".text = with solarized; '' - client.focused ${base1.hex} ${blue.hex} ${base03.hex} ${blue.hex} ${blue.hex} - client.focused_inactive ${base02.hex} ${base02.hex} ${base1.hex} ${base03.hex} ${base02.hex} - client.unfocused ${base02.hex} ${base03.hex} ${base1.hex} ${base02.hex} ${base02.hex} - client.urgent ${red.hex} ${red.hex} ${base03.hex} ${red.hex} ${red.hex} - ''; - "swaynag/config".text = - let - # adding it to the header doesn’t work since the defaults overwrite it - commonConfig = /* ini */ '' - background=${lib.substring 1 6 solarized.base3.hex} - border-bottom=${lib.substring 1 6 solarized.base2.hex} - border=${lib.substring 1 6 solarized.base2.hex} - button-background=${lib.substring 1 6 solarized.base3.hex} - button-text=${lib.substring 1 6 solarized.base00.hex} - ''; - in - /* ini */ '' - font=Monospace 12 - - [warning] - text=${lib.substring 1 6 solarized.yellow.hex} - ${commonConfig} - - [error] - text=${lib.substring 1 6 solarized.red.hex} - ${commonConfig} + xdg.configFile = + let + makeTheme = scheme: '' + client.focused ${scheme.base05} ${scheme.base0D} ${scheme.base00} ${scheme.base0D} ${scheme.base0D} + client.focused_inactive ${scheme.base01} ${scheme.base01} ${scheme.base05} ${scheme.base03} ${scheme.base01} + client.unfocused ${scheme.base01} ${scheme.base00} ${scheme.base05} ${scheme.base01} ${scheme.base01} + client.urgent ${scheme.base08} ${scheme.base08} ${scheme.base00} ${scheme.base08} ${scheme.base08} ''; - }; + in + { + "sway/light-theme".text = makeTheme solarized.light.hex; + "sway/dark-theme".text = makeTheme solarized.dark.hex; + "swaynag/config".text = + let + # adding it to the header doesn’t work since the defaults overwrite it + commonConfig = /* ini */ '' + background=${lib.substring 1 6 solarized.colors.base3} + border-bottom=${lib.substring 1 6 solarized.colors.base2} + border=${lib.substring 1 6 solarized.colors.base2} + button-background=${lib.substring 1 6 solarized.colors.base3} + button-text=${lib.substring 1 6 solarized.colors.base00} + ''; + in + /* ini */ '' + font=Monospace 12 + + [warning] + text=${lib.substring 1 6 solarized.colors.yellow} + ${commonConfig} + + [error] + text=${lib.substring 1 6 solarized.colors.red} + ${commonConfig} + ''; + }; }) diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index 628e3e8..b30d1ae 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -18,7 +18,11 @@ let thinsp = " "; solarized = import ../solarized.nix; - solarizedColors = as: lib.strings.concatLines (lib.attrsets.mapAttrsToList (name: value: let color = solarized."${value}".hex; in "@define-color ${name} ${color};") as); + solarizedColors = lib.attrsets.mapAttrsToList (name: color: "@define-color ${name} ${color};"); + themeCss = { + light = lib.strings.concatLines (solarizedColors solarized.light.hex); + dark = lib.strings.concatLines (solarizedColors solarized.dark.hex); + }; in { # home-manager’s waybar module performs additional checks that are overly strict @@ -253,42 +257,8 @@ in }; xdg.configFile = { - "waybar/theme-light.css".text = solarizedColors { - base00 = "base3"; - base01 = "base2"; - base02 = "base1"; - base03 = "base0"; - base04 = "base00"; - base05 = "base01"; - base06 = "base02"; - base07 = "base03"; - base08 = "red"; - base09 = "orange"; - base0A = "yellow"; - base0B = "green"; - base0C = "cyan"; - base0D = "blue"; - base0E = "violet"; - base0F = "magenta"; - }; - "waybar/theme-dark.css".text = solarizedColors { - base00 = "base03"; - base01 = "base02"; - base02 = "base01"; - base03 = "base00"; - base04 = "base0"; - base05 = "base1"; - base06 = "base2"; - base07 = "base3"; - base08 = "red"; - base09 = "orange"; - base0A = "yellow"; - base0B = "green"; - base0C = "cyan"; - base0D = "blue"; - base0E = "violet"; - base0F = "magenta"; - }; + "waybar/theme-light.css".text = themeCss.light; + "waybar/theme-dark.css".text = themeCss.dark; "waybar/style.css".text = '' @import "theme.css"; diff --git a/users/jalr/modules/sway/wofi.nix b/users/jalr/modules/sway/wofi.nix index ca8eb9a..44d2914 100644 --- a/users/jalr/modules/sway/wofi.nix +++ b/users/jalr/modules/sway/wofi.nix @@ -1,91 +1,92 @@ { lib, ... }: let - solarized = import ../solarized.nix; + inherit (import ../solarized.nix) colors; in { - xdg.configFile = { - "wofi/color-light".text = lib.strings.concatLines (map (c: solarized."${c}".hex) [ - "base3" - "base2" - "base1" - "base0" - "base00" - "base01" - "base02" - "base03" - "red" - "orange" - "yellow" - "green" - "cyan" - "blue" - "violet" - "magenta" - ]); - "wofi/color-dark".text = lib.strings.concatLines (map (c: solarized."${c}".hex) [ - "base03" - "base02" - "base01" - "base00" - "base0" - "base1" - "base2" - "base3" - "red" - "orange" - "yellow" - "green" - "cyan" - "blue" - "violet" - "magenta" - ]); - "wofi/style.css".text = '' - window { - margin: 0px; - border: 3px solid --wofi-color1; - border-radius: 8px; - background-color: rgba(--wofi-rgb-color0,0.8); - } + xdg.configFile = + let + commonColors = with colors; [ + red + orange + yellow + green + cyan + blue + violet + magenta + ]; + in + { + "wofi/color-light".text = with colors; lib.strings.concatLines ( + [ + base3 + base2 + base1 + base0 + base00 + base01 + base02 + base03 + ] ++ commonColors + ); + "wofi/color-dark".text = with colors; lib.strings.concatLines ( + with colors; [ + base03 + base02 + base01 + base00 + base0 + base1 + base2 + base3 + ] ++ commonColors + ); + "wofi/style.css".text = '' + window { + margin: 0px; + border: 3px solid --wofi-color1; + border-radius: 8px; + background-color: rgba(--wofi-rgb-color0,0.8); + } - #input { - margin: 5px; - border: none; - color: --wofi-color4; - background-color: rgba(--wofi-rgb-color1,0.8); - } + #input { + margin: 5px; + border: none; + color: --wofi-color4; + background-color: rgba(--wofi-rgb-color1,0.8); + } - #inner-box { - margin: 5px; - border: none; - background: none; - } + #inner-box { + margin: 5px; + border: none; + background: none; + } - #outer-box { - margin: 5px; - border: none; - background: none; - } + #outer-box { + margin: 5px; + border: none; + background: none; + } - #scroll { - margin: 0px; - border: none; - } + #scroll { + margin: 0px; + border: none; + } - #text { - margin: 5px; - border: none; - color: --wofi-color4; - } + #text { + margin: 5px; + border: none; + color: --wofi-color4; + } - #entry:selected { - background-color: rgba(--wofi-rgb-color1,0.8); - } + #entry:selected { + background-color: rgba(--wofi-rgb-color1,0.8); + } - #entry:selected #text{ - color: --wofi-color11; - } - ''; - }; + #entry:selected #text{ + color: --wofi-color11; + } + ''; + }; } From be924e6c873c00c73b5baf86bfefe16ce96b0f93 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 Oct 2025 20:57:34 +0200 Subject: [PATCH 547/562] Replace pavucontrol with mixxc --- users/jalr/modules/default.nix | 1 + users/jalr/modules/mixxc/default.nix | 10 ++ users/jalr/modules/mixxc/style.css | 224 +++++++++++++++++++++++++++ users/jalr/modules/sway/default.nix | 1 + users/jalr/modules/sway/waybar.nix | 2 +- 5 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 users/jalr/modules/mixxc/default.nix create mode 100644 users/jalr/modules/mixxc/style.css diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 30ed808..0b32c3e 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -21,6 +21,7 @@ ./jameica.nix ./kicad.nix ./lsd + ./mixxc ./mpv.nix ./mute-indicator.nix ./mycli diff --git a/users/jalr/modules/mixxc/default.nix b/users/jalr/modules/mixxc/default.nix new file mode 100644 index 0000000..efde8d1 --- /dev/null +++ b/users/jalr/modules/mixxc/default.nix @@ -0,0 +1,10 @@ +{ nixosConfig, lib, pkgs, ... }: + +lib.mkIf nixosConfig.jalr.gui.enable { + home.packages = with pkgs; [ + mixxc + ]; + xdg.configFile = { + "mixxc/style.css".source = ./style.css; + }; +} diff --git a/users/jalr/modules/mixxc/style.css b/users/jalr/modules/mixxc/style.css new file mode 100644 index 0000000..33dbf39 --- /dev/null +++ b/users/jalr/modules/mixxc/style.css @@ -0,0 +1,224 @@ +.side { + $hide: false; + + .output { + transition: background 750ms; + padding: 5px; + + &.master { + transition: background 0ms; + } + + &.master:hover { + } + + .icon { + -gtk-icon-style: symbolic; + -gtk-icon-size: 16px; + } + } + + @if $hide { + min-height: 0; + min-width: 0; + + .output { + padding: 0; + + .icon { + -gtk-icon-style: symbolic; + -gtk-icon-size: 0; + } + } + } +} + +.main { + margin: 20px; +} + +.client { + $hide-name: false; + $hide-description: false; + + font-family: 'Iosevka Nerd Font'; + font-size: 1.2em; + + .icon { + -gtk-icon-style: symbolic; + } + + @if $hide-name { + .name { + font-size: 0; + } + } + + @if $hide-description { + .description { + font-size: 0; + } + } + + scale { + trough { + /* Slider Bar */ + border-radius: 10px; + + slider { + /* Slider Knob */ + padding: 0; + + border: none; + border-radius: 2px; + + transition-duration: 400ms; + } + + highlight { + /* Slider Bar Filled */ + border: none; + border-radius: 10px; + + margin: 2px; + + transition: background-image 300ms; + } + + fill { + /* Slider Peak */ + background: none; + + border-radius: 10px; + + margin: 0px; + } + } + } + + scale:active { + trough slider { + /* Slider Knob */ + transform: scale(1.1); + } + } +} + +.client.horizontal { + &.new { + animation: client-add-horizontal 300ms ease; + } + + &.removed { + animation: client-remove-horizontal 300ms ease; + } + + .icon { + padding-right: 13px; + + -gtk-icon-size: 16px; + } + + .volume { + /* Numeric Volume Level */ + padding-left: 22px; + padding-bottom: 3px; + } + + scale { + trough { + /* Slider Bar */ + min-height: 6px; + + slider { + /* Slider Knob */ + min-height: 21px; + min-width: 9px; + + margin-top: -7px; + margin-bottom: -7px; + } + } + } + +} + +@keyframes client-add-horizontal { + from { + transform: translateX(-200px); + opacity: 0; + } + to { + opacity: 1; + } +} + +@keyframes client-remove-horizontal { + from { + opacity: 1; + } + to { + transform: translateX(-200px); + opacity: 0; + } +} + +.client.vertical { + &.new { + animation: client-add-vertical 300ms ease; + } + + &.removed { + animation: client-remove-vertical 300ms ease; + } + + .icon { + padding-bottom: 5px; + + -gtk-icon-size: 20px; + } + + .volume { + /* Numeric Volume Level */ + padding-top: 10px; + } + + scale { + trough { + /* Slider Bar */ + min-width: 4px; + + margin-top: 10px; + + slider { + /* Slider Knob */ + margin-left: -7px; + margin-right: -7px; + + min-height: 6px; + min-width: 14px; + } + } + } +} + +@keyframes client-add-vertical { + from { + transform: translateY(200px); + opacity: 0; + } + to { + opacity: 1; + } +} + +@keyframes client-remove-vertical { + from { + opacity: 1; + } + to { + transform: translateY(200px); + opacity: 0; + } +} + diff --git a/users/jalr/modules/sway/default.nix b/users/jalr/modules/sway/default.nix index 2d7bb71..7e4e764 100644 --- a/users/jalr/modules/sway/default.nix +++ b/users/jalr/modules/sway/default.nix @@ -234,6 +234,7 @@ in "XF86AudioMute" = "exec pactl set-source-mute alsa_input.usb-BEHRINGER_UMC202HD_192k-00.HiFi__umc202hd_mono_in_U192k_0_1__source toggle"; "${cfg.modifier}+l" = "exec ${lockScreen}"; + "${cfg.modifier}+v" = "exec GSK_RENDERER=cairo GTK_USE_PORTAL=0 ${pkgs.mixxc}/bin/mixxc -A"; }; bars = [ ]; # managed as systemd user unit diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index b30d1ae..a275d36 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -171,7 +171,7 @@ in phone = "󰏲"; portable = "󰏲"; }; - on-click-right = "${pkgs.pavucontrol}/bin/pavucontrol"; + on-click-right = "GSK_RENDERER=cairo GTK_USE_PORTAL=0 ${pkgs.mixxc}/bin/mixxc -A -a t -a r"; }; network = { format-wifi = "{essid} ({signalStrength}%) 󰖩 "; From 8c72e2ed3ab9fe49947a0f8c4f75bd3ba957e34f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 Oct 2025 23:00:06 +0200 Subject: [PATCH 548/562] fixup! Rework solarized --- users/jalr/modules/mycli/default.nix | 68 +++++++++++++++------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/users/jalr/modules/mycli/default.nix b/users/jalr/modules/mycli/default.nix index e023039..844102b 100644 --- a/users/jalr/modules/mycli/default.nix +++ b/users/jalr/modules/mycli/default.nix @@ -105,39 +105,43 @@ let }; }; - colors = { - common = { - "output.header" = "bold ${solarized.green.hex}"; - "sql.datatype" = "nobold ${solarized.yellow.hex}"; - "sql.function" = "bold ${solarized.violet.hex}"; - "sql.keyword" = solarized.green.hex; - "sql.literal" = solarized.green.hex; - "sql.number" = solarized.cyan.hex; - "sql.string" = solarized.cyan.hex; - "sql.variable" = solarized.red.hex; - "sql.quoted-schema-object" = solarized.blue.hex; + colors = + let + c = solarized.colors; + in + { + common = { + "output.header" = "bold ${c.green}"; + "sql.datatype" = "nobold ${c.yellow}"; + "sql.function" = "bold ${c.violet}"; + "sql.keyword" = c.green; + "sql.literal" = c.green; + "sql.number" = c.cyan; + "sql.string" = c.cyan; + "sql.variable" = c.red; + "sql.quoted-schema-object" = c.blue; + }; + light = { + "prompt" = "bg:${c.blue} ${c.base02}"; + "selected" = "bg:${c.base2} ${c.base00}"; + "output.odd-row" = "${c.base01}"; + "output.even-row" = "${c.base01} bg:${c.base2}"; + "sql.comment" = "italic ${c.base1}"; + "sql.operator" = "bold ${c.base02}"; + "sql.punctuation" = "bold ${c.base01}"; + "sql.symbol" = "${c.base01}"; + }; + dark = { + "prompt" = "bg:${c.blue} ${c.base2}"; + "selected" = "bg:${c.base02} ${c.base0}"; + "output.odd-row" = "${c.base1}"; + "output.even-row" = "${c.base1} bg:${c.base02}"; + "sql.comment" = "italic ${c.base01}"; + "sql.operator" = "bold ${c.base2}"; + "sql.punctuation" = "bold ${c.base1}"; + "sql.symbol" = "${c.base1}"; + }; }; - light = { - "prompt" = "bg:${solarized.blue.hex} ${solarized.base02.hex}"; - "selected" = "bg:${solarized.base2.hex} ${solarized.base00.hex}"; - "output.odd-row" = "${solarized.base01.hex}"; - "output.even-row" = "${solarized.base01.hex} bg:${solarized.base2.hex}"; - "sql.comment" = "italic ${solarized.base1.hex}"; - "sql.operator" = "bold ${solarized.base02.hex}"; - "sql.punctuation" = "bold ${solarized.base01.hex}"; - "sql.symbol" = "${solarized.base01.hex}"; - }; - dark = { - "prompt" = "bg:${solarized.blue.hex} ${solarized.base2.hex}"; - "selected" = "bg:${solarized.base02.hex} ${solarized.base0.hex}"; - "output.odd-row" = "${solarized.base1.hex}"; - "output.even-row" = "${solarized.base1.hex} bg:${solarized.base02.hex}"; - "sql.comment" = "italic ${solarized.base01.hex}"; - "sql.operator" = "bold ${solarized.base2.hex}"; - "sql.punctuation" = "bold ${solarized.base1.hex}"; - "sql.symbol" = "${solarized.base1.hex}"; - }; - }; in { home.packages = [ From d4a2f6df35118ccdb8ed9249c5c5cdf528a22ce4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 24 Oct 2025 23:03:29 +0200 Subject: [PATCH 549/562] Add freetube --- users/jalr/modules/default.nix | 1 + users/jalr/modules/freetube.nix | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 users/jalr/modules/freetube.nix diff --git a/users/jalr/modules/default.nix b/users/jalr/modules/default.nix index 0b32c3e..f97916b 100644 --- a/users/jalr/modules/default.nix +++ b/users/jalr/modules/default.nix @@ -14,6 +14,7 @@ ./firefox ./fish.nix ./fpv.nix + ./freetube.nix ./git.nix ./gnuradio.nix ./graphics diff --git a/users/jalr/modules/freetube.nix b/users/jalr/modules/freetube.nix new file mode 100644 index 0000000..3c45d96 --- /dev/null +++ b/users/jalr/modules/freetube.nix @@ -0,0 +1,7 @@ +{ nixosConfig, ... }: + +{ + programs.freetube = { + inherit (nixosConfig.jalr.gui) enable; + }; +} From 30c2bb63a07f894be1c9451862561f58cb69fee4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 27 Oct 2025 23:04:54 +0100 Subject: [PATCH 550/562] Decrease brightness control steps to 1% --- users/jalr/modules/sway/waybar.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/users/jalr/modules/sway/waybar.nix b/users/jalr/modules/sway/waybar.nix index a275d36..c507ce9 100644 --- a/users/jalr/modules/sway/waybar.nix +++ b/users/jalr/modules/sway/waybar.nix @@ -152,8 +152,8 @@ in backlight = { format = "{percent}% {icon}"; format-icons = [ "󰛩" "󱩎" "󱩏" "󱩐" "󱩑" "󱩒" "󱩓" "󱩔" "󱩕" "󱩖" "󰛨" ]; - on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl -q set +5%"; - on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl -q set 5%-"; + on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl -q set +1%"; + on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl -q set 1%-"; }; pulseaudio = { format = "{volume}% {icon} {format_source}"; From bd4ee7054ed5b15ab7b072de2c5a171ab740addf Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 27 Oct 2025 23:06:02 +0100 Subject: [PATCH 551/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:nixos/nixpkgs/481cf557888e05d3128a76f14c76397b7d7cc869?narHash=sha256-G/iC4t/9j/52i/nm%2B0/4ybBmAF4hzR8CNHC75qEhjHo%3D' (2025-10-21) → 'github:nixos/nixpkgs/78e34d1667d32d8a0ffc3eba4591ff256e80576e?narHash=sha256-vY2OLVg5ZTobdroQKQQSipSIkHlxOTrIF1fsMzPh8w8%3D' (2025-10-26) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/d05426b82736631cf0a4dc8bceef1e52a4326dd7?narHash=sha256-XS7PTk22esg%2BHHg5OSF6%2BjgR6X/2WbzHj1CC8aS0x9E%3D' (2025-10-23) → 'github:NixOS/nixpkgs/8865b77677eb576ce1dbcb90b7a1ae95a774a6cd?narHash=sha256-rIne9pcxSoaLCxcyICguhH3SUzE9lep464L7zRGBbZk%3D' (2025-10-27) • Updated input 'nur': 'github:nix-community/NUR/1d182e3ee8a3a55dc50ff907877294652606a152?narHash=sha256-YF83M84JXliUtQjVsOeXMOtZNnhmTRd9YwH8aVUu1Io%3D' (2025-10-23) → 'github:nix-community/NUR/378c5c7b0b2471b59b71e42b229ea5e68050235d?narHash=sha256-0UtnyehKLys0HWhctZEjKN7zDe%2BML0HCDdqdfHk221o%3D' (2025-10-27) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/01f116e4df6a15f4ccdffb1bcd41096869fb385c?narHash=sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d%2BdAiC3H%2BCDle4%3D' (2025-10-22) → 'github:nixos/nixpkgs/6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce?narHash=sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c%3D' (2025-10-25) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index a706fcc..6771af6 100644 --- a/flake.lock +++ b/flake.lock @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1761016216, - "narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=", + "lastModified": 1761468971, + "narHash": "sha256-vY2OLVg5ZTobdroQKQQSipSIkHlxOTrIF1fsMzPh8w8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "481cf557888e05d3128a76f14c76397b7d7cc869", + "rev": "78e34d1667d32d8a0ffc3eba4591ff256e80576e", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1761206094, - "narHash": "sha256-XS7PTk22esg+HHg5OSF6+jgR6X/2WbzHj1CC8aS0x9E=", + "lastModified": 1761601585, + "narHash": "sha256-rIne9pcxSoaLCxcyICguhH3SUzE9lep464L7zRGBbZk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d05426b82736631cf0a4dc8bceef1e52a4326dd7", + "rev": "8865b77677eb576ce1dbcb90b7a1ae95a774a6cd", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1761114652, - "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", + "lastModified": 1761373498, + "narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=", "owner": "nixos", "repo": "nixpkgs", - "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", + "rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1761205534, - "narHash": "sha256-YF83M84JXliUtQjVsOeXMOtZNnhmTRd9YwH8aVUu1Io=", + "lastModified": 1761601325, + "narHash": "sha256-0UtnyehKLys0HWhctZEjKN7zDe+ML0HCDdqdfHk221o=", "owner": "nix-community", "repo": "NUR", - "rev": "1d182e3ee8a3a55dc50ff907877294652606a152", + "rev": "378c5c7b0b2471b59b71e42b229ea5e68050235d", "type": "github" }, "original": { From e199dc603b56d010162f5dc2a214ca90381842e8 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 Oct 2025 04:04:44 +0100 Subject: [PATCH 552/562] Enable hardware-accelerated transcoding --- hosts/iron/configuration.nix | 10 +++++++++- hosts/iron/services/jellyfin/default.nix | 6 +++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/hosts/iron/configuration.nix b/hosts/iron/configuration.nix index cdf307b..57a422a 100644 --- a/hosts/iron/configuration.nix +++ b/hosts/iron/configuration.nix @@ -218,7 +218,15 @@ with lib; { }; }; - hardware.enableRedistributableFirmware = true; + hardware = { + enableRedistributableFirmware = true; + graphics = { + enable = true; + extraPackages = [ + pkgs.intel-vaapi-driver + ]; + }; + }; virtualisation.containers.storage.settings = { storage = { diff --git a/hosts/iron/services/jellyfin/default.nix b/hosts/iron/services/jellyfin/default.nix index f5c31ab..eb4e918 100644 --- a/hosts/iron/services/jellyfin/default.nix +++ b/hosts/iron/services/jellyfin/default.nix @@ -24,10 +24,12 @@ in services.jellyfin = { enable = true; }; + systemd.services.jellyfin = { serviceConfig = { ###MemoryDenyWriteExecute = true; BindPaths = [ + "/dev/dri/renderD128" "/var/cache/jellyfin" "/var/lib/jellyfin" ]; @@ -38,13 +40,15 @@ in "/filebitch/pub/Filme" "/filebitch/pub/Serien" "/nix/store" + "/run/opengl-driver" "/var/lib/qBittorrent/downloads" ]; CapabilityBoundingSet = ""; + DeviceAllow = "/dev/dri/renderD128 rw"; #IPAddressAllow = "localhost"; #IPAddressDeny = "any"; LockPersonality = true; - PrivateDevices = lib.mkForce true; + PrivateDevices = false; PrivateUsers = true; ProtectClock = true; ProtectControlGroups = true; From d139988fa9d8526a2c653f860dc14fbf56e555ac Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 28 Oct 2025 21:06:14 +0100 Subject: [PATCH 553/562] Use nightly build of Jameica as VoP is not available in a stable release yet. --- users/jalr/modules/jameica.nix | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/users/jalr/modules/jameica.nix b/users/jalr/modules/jameica.nix index d9472e0..e50c86e 100644 --- a/users/jalr/modules/jameica.nix +++ b/users/jalr/modules/jameica.nix @@ -1,6 +1,16 @@ { nixosConfig, lib, pkgs, ... }: lib.mkIf nixosConfig.jalr.gui.enable { - home.packages = with pkgs; [ - jameica + home.packages = [ + ( + pkgs.jameica.overrideAttrs (_: { + version = "2.11.0-nightly"; + src = pkgs.fetchFromGitHub { + owner = "willuhn"; + repo = "jameica"; + rev = "e51bffc0e42907cbd802a644ab52810e0a36fff8"; + hash = "sha256-0KcT52dh/tJSX6q+uKkRybz33jKnYRTNDo1BftwJLAc="; + }; + }) + ) ]; } From 5cb7783a167c359f8f4becb50c54a2bf1e67ea38 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Wed, 29 Oct 2025 14:07:06 +0100 Subject: [PATCH 554/562] Use avahi-daemon release candidate Let's see if this fixes the high CPU load issues. --- modules/avahi.nix | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/modules/avahi.nix b/modules/avahi.nix index d0653bf..c12bd75 100644 --- a/modules/avahi.nix +++ b/modules/avahi.nix @@ -1,8 +1,35 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: lib.mkIf config.jalr.gui.enable { services.avahi = { enable = true; + package = + let + xmltoman = pkgs.xmltoman.overrideAttrs (_: { + nativeBuildInputs = [ + pkgs.installShellFiles + ]; + buildInputs = [ + (pkgs.perl.withPackages (pl: [ + pl.XMLParser + ])) + ]; + }); + in + pkgs.avahi.overrideAttrs (o: rec { + version = "0.9-rc2"; + src = pkgs.fetchurl { + url = "https://github.com/avahi/avahi/archive/refs/tags/v${version}.tar.gz"; + sha256 = "sha256-9k7+1qlyz5LLLfs1q/aqkXPWK4Q7FYUML0CvdqQjj4o="; + }; + patches = [ ]; + buildInputs = o.buildInputs ++ [ pkgs.systemdLibs ]; + nativeBuildInputs = o.nativeBuildInputs ++ [ xmltoman ]; + installFlags = [ + "runstatedir=${placeholder "out"}/run" + "sysconfdir=${placeholder "out"}/etc" + ]; + }); nssmdns4 = true; extraConfig = '' [server] From 5de772dbd5a782279016db41dce38e9ad2b97819 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 3 Nov 2025 20:13:04 +0100 Subject: [PATCH 555/562] Use package from master --- modules/esphome/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/esphome/default.nix b/modules/esphome/default.nix index 9bf4609..4edf71e 100644 --- a/modules/esphome/default.nix +++ b/modules/esphome/default.nix @@ -32,7 +32,7 @@ in enable = true; address = "127.0.0.1"; inherit (cfg) port; - package = pkgs.esphome; + package = pkgs.master.esphome; }; systemd.services.esphome = { From d2e08e999c4c22ba1306a6c53e605b77473eba70 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 3 Nov 2025 20:13:18 +0100 Subject: [PATCH 556/562] Use package from master --- hosts/iron/services/snapcast/ledfx.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/iron/services/snapcast/ledfx.nix b/hosts/iron/services/snapcast/ledfx.nix index d7db19d..99ee625 100644 --- a/hosts/iron/services/snapcast/ledfx.nix +++ b/hosts/iron/services/snapcast/ledfx.nix @@ -59,7 +59,7 @@ in wantedBy = [ "multi-user.target" ]; serviceConfig = { DynamicUser = "yes"; - ExecStart = "${pkgs.ledfx}/bin/ledfx --host 0.0.0.0 -p 8888 -c %S/ledfx"; + ExecStart = "${pkgs.master.ledfx}/bin/ledfx --host 0.0.0.0 -p 8888 -c %S/ledfx"; Group = "pipewire"; NoNewPrivileges = true; ProtectControlGroups = true; From 4bf2bd792559878c9d42de4fe1568ad60b76f3d9 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Mon, 3 Nov 2025 20:13:37 +0100 Subject: [PATCH 557/562] Use package from master --- modules/pipewire.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/pipewire.nix b/modules/pipewire.nix index 29e1845..ea97fb6 100644 --- a/modules/pipewire.nix +++ b/modules/pipewire.nix @@ -8,6 +8,7 @@ lib.mkIf config.jalr.gui.enable { services.pipewire = { enable = true; + package = pkgs.master.pipewire; pulse = { enable = true; }; From c7222d950098a8eb00f51ab58805b9b2d575742b Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Fri, 7 Nov 2025 15:10:36 +0100 Subject: [PATCH 558/562] Add Grafana to iron --- hosts/iron/ports.nix | 1 + hosts/iron/secrets.yaml | 8 +- hosts/iron/services/default.nix | 1 + hosts/iron/services/grafana.nix | 146 ++++++++++++++++++++++++++++++++ 4 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 hosts/iron/services/grafana.nix diff --git a/hosts/iron/ports.nix b/hosts/iron/ports.nix index 2b2b495..7a60b1f 100644 --- a/hosts/iron/ports.nix +++ b/hosts/iron/ports.nix @@ -5,6 +5,7 @@ calibre-server.tcp = 8081; calibre-web.tcp = 8082; esphome.tcp = 6052; + grafana.tcp = 3001; home-assistant.tcp = 8123; jellyfin.tcp = 8096; matrix-synapse.tcp = 8008; diff --git a/hosts/iron/secrets.yaml b/hosts/iron/secrets.yaml index 90e5c61..3a51f2f 100644 --- a/hosts/iron/secrets.yaml +++ b/hosts/iron/secrets.yaml @@ -23,6 +23,8 @@ prometheus: vodafone-station: ENC[AES256_GCM,data:eaFqYEuK3UU=,iv:BauymCkvj33TmZLyii367uVEc4Iq4GGcik4nbyT9Fpk=,tag:poB+qh5tAdv/dEt3WN6yVw==,type:str] unpoller: ENC[AES256_GCM,data:WI1oUKHW4ef4pBk+mGM=,iv:C1LykPf1/ypUmy3ZCQzjfSjkpxhUukDNnfJnZLp2CJg=,tag:mSnZJKl9IHcx7I7GpFherw==,type:str] tvproxy: ENC[AES256_GCM,data:MbXEmgerpUiwDgcUKF2y1+Cc+d43sKPfGGTEkvNoZFFS4rzDWw4Udg==,iv:ZDsfSb3HK008e7/J/61iqVRafIzKbtPEdhH7ixo9lSY=,tag:3JbJ+2DJKQ9G2ui6VuWbOw==,type:str] +grafana: + secret-key: ENC[AES256_GCM,data:RX0ox0r3Jwm9DMIfBnsL7ydarlrYSVBjbVXbooHR1Ms=,iv:l8Aud8VyGtz3dNARh6s8/Y6MBtc4xj1Wu/LLJv1e+KA=,tag:+7TFyRPhBS1Tvn2JLBEeAQ==,type:str] sops: age: - recipient: age1hx7fdu4mcha7kkxe7yevtvs6xgzgaafgenm3drhvr609wlj94sgqm497je @@ -34,8 +36,8 @@ sops: SU1USkxFUUY2NVhmUHBhZkdrNDR1Q0kKiXIicInELRjDR3tuyA+lnXeCcd9lYvbV GnBRGPM7BNO/6AA7HhAei48Kt+XE6+jQX66yTXyviKhK7Lpjrlb2YQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-09-23T17:32:09Z" - mac: ENC[AES256_GCM,data:D4I6ayuLKBIxvEQopWXYHB/2fojEPn3oARU+9AiOrqX35Ue5BXZc08dmz+0J+RHjX5dA78xG6FGI3x4TtGeBwkMHeXwwwzRBuLDoGBGVngwLKvf21To6051A201EFqV7RKa5L8WruaJoeNLylH1K1B4nOrpv7G/81yCdpjmctQ0=,iv:QChpkOanDVj0PHykmA1MvDAYwiWawEmZ3h0s40U9joA=,tag:WluhQpBonORXgA9i01kTpw==,type:str] + lastmodified: "2025-11-04T17:52:25Z" + mac: ENC[AES256_GCM,data:/q98uwoYJsPRLlWxxDn7gJQ0jRxlAfVxEmUw8ayP8gIkWzGN1DCR0jx2LFlSlWEuaPScThw5IhGxbBlBxX2wV952MC7tEoHAAMvMJberG1a6do8zSvotDHocdXVlyj4jJZhQvjUVAmeVsYBY3oRwOHdzis0JO5IW0hxgs3x+xoQ=,iv:9BR0ws9ZzukjxLpPjvl73B3RmLA+c9e7F3AVk5l0SGc=,tag:OJ/iGy/Umlj/82EtZxjLSg==,type:str] pgp: - created_at: "2024-01-31T01:20:30Z" enc: |- @@ -49,4 +51,4 @@ sops: -----END PGP MESSAGE----- fp: 3044E71E3DEFF49B586CF5809BF4FCCB90854DA9 unencrypted_suffix: _unencrypted - version: 3.10.2 + version: 3.11.0 diff --git a/hosts/iron/services/default.nix b/hosts/iron/services/default.nix index 6c0e206..29cd267 100644 --- a/hosts/iron/services/default.nix +++ b/hosts/iron/services/default.nix @@ -5,6 +5,7 @@ ./dnsmasq.nix ./dyndns.nix ./esphome + ./grafana.nix ./home-assistant.nix ./jellyfin ./mail.nix diff --git a/hosts/iron/services/grafana.nix b/hosts/iron/services/grafana.nix new file mode 100644 index 0000000..15e1571 --- /dev/null +++ b/hosts/iron/services/grafana.nix @@ -0,0 +1,146 @@ +{ config +, lib +, pkgs +, ... +}: +let + inherit (config.networking) ports; + domain = "grafana.jalr.de"; + cfg = config.services.grafana; +in +{ + sops.secrets = { + "grafana/secret-key" = { + sopsFile = ../secrets.yaml; + owner = config.systemd.services.grafana.serviceConfig.User; + }; + }; + + services.grafana = { + enable = true; + settings = { + server = { + inherit domain; + root_url = "https://%(domain)s"; + http_addr = "127.0.0.1"; + http_port = ports.grafana.tcp; + }; + security = { + content_security_policy = true; + cookie_samesite = "strict"; + cookie_secure = true; + secret_key = "$__file{${config.sops.secrets."grafana/secret-key".path}}"; + strict_transport_security = true; + strict_transport_security_preload = true; + strict_transport_security_subdomains = true; + }; + analytics = { + reporting_enabled = false; + check_for_updates = false; + check_for_plugin_updates = false; + }; + }; + provision = { + datasources.settings = { + apiVersion = 1; + datasources = with config.services.prometheus; + ( + lib.lists.optional enable { + name = "Prometheus"; + type = "prometheus"; + url = "http://${listenAddress}:${toString port}"; + orgId = 1; + } + ) + ++ (with config.services.prometheus.alertmanager; ( + lib.lists.optional enable { + name = "Alertmanager"; + type = "alertmanager"; + url = "http://${listenAddress}:${toString port}"; + orgId = 1; + } + )); + deleteDatasources = [ + { + name = "Prometheus"; + orgId = 1; + } + { + name = "Alertmanager"; + orgId = 1; + } + ]; + }; + + dashboards.settings.providers = + let + # https://grafana.com/grafana/dashboards/ + fetchDashboard = + { name + , hash + , id + , version + , + }: + pkgs.fetchurl { + inherit name hash; + url = "https://grafana.com/api/dashboards/${toString id}/revisions/${toString version}/download"; + recursiveHash = true; + postFetch = '' + mv "$out" temp + mkdir -p "$out" + mv temp "$out/${name}.json"; + ''; + }; + dashboard = name: fetchArgs: { + inherit name; + options.path = fetchDashboard fetchArgs; + }; + in + [ + (dashboard "Node Exporter Full" + { + name = "node-exporter-full"; + hash = "sha256-QTHG9ioy7E8U8O8x/qFabOxK2qBjlGlzuEvwYKug0CQ="; + id = 1860; + version = 36; + }) + (dashboard "Node Exporter" + { + name = "node-exporter"; + hash = "sha256-2xgE0m3SUFiux501uCVb4aH3zGfapW/SmfxRsFC/514="; + id = 13978; + version = 2; + }) + (dashboard "AlertManager" + { + name = "alertmanager"; + hash = "sha256-Yvw0DGQJpqBYNzE4ES/x7ZAYF7iJ4SUNBKB+sJRuGBw="; + id = 9578; + version = 4; + }) + ]; + }; + }; + services.nginx.virtualHosts = { + "${domain}" = { + enableACME = true; + forceSSL = true; + + locations."/" = { + proxyPass = "http://${cfg.settings.server.http_addr}:${toString cfg.settings.server.http_port}"; + proxyWebsockets = true; + recommendedProxySettings = true; + }; + }; + }; + + environment.persistence."/persist".directories = [ + { + directory = "/var/lib/grafana"; + user = "grafana"; + group = "grafana"; + mode = "u=rwx,g=,o="; + } + ]; +} From 9dafacebda649da986892c6adca31a907b6138bd Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 11 Nov 2025 19:34:02 +0100 Subject: [PATCH 559/562] Add BLE sniffer to Wireshark --- modules/default.nix | 2 +- modules/wireshark.nix | 7 - modules/wireshark/default.nix | 23 + .../extcap/SnifferAPI/CaptureFiles.py | 91 ++ .../wireshark/extcap/SnifferAPI/Devices.py | 143 +++ .../wireshark/extcap/SnifferAPI/Exceptions.py | 60 ++ .../wireshark/extcap/SnifferAPI/Filelock.py | 69 ++ modules/wireshark/extcap/SnifferAPI/Logger.py | 207 +++++ .../extcap/SnifferAPI/Notifications.py | 90 ++ modules/wireshark/extcap/SnifferAPI/Packet.py | 583 ++++++++++++ modules/wireshark/extcap/SnifferAPI/Pcap.py | 79 ++ .../wireshark/extcap/SnifferAPI/Sniffer.py | 248 +++++ .../extcap/SnifferAPI/SnifferCollector.py | 283 ++++++ modules/wireshark/extcap/SnifferAPI/Types.py | 90 ++ modules/wireshark/extcap/SnifferAPI/UART.py | 233 +++++ .../wireshark/extcap/SnifferAPI/__init__.py | 0 .../wireshark/extcap/SnifferAPI/version.py | 38 + modules/wireshark/extcap/nrf_sniffer_ble.py | 854 ++++++++++++++++++ 18 files changed, 3092 insertions(+), 8 deletions(-) delete mode 100644 modules/wireshark.nix create mode 100644 modules/wireshark/default.nix create mode 100644 modules/wireshark/extcap/SnifferAPI/CaptureFiles.py create mode 100644 modules/wireshark/extcap/SnifferAPI/Devices.py create mode 100644 modules/wireshark/extcap/SnifferAPI/Exceptions.py create mode 100644 modules/wireshark/extcap/SnifferAPI/Filelock.py create mode 100644 modules/wireshark/extcap/SnifferAPI/Logger.py create mode 100644 modules/wireshark/extcap/SnifferAPI/Notifications.py create mode 100644 modules/wireshark/extcap/SnifferAPI/Packet.py create mode 100644 modules/wireshark/extcap/SnifferAPI/Pcap.py create mode 100644 modules/wireshark/extcap/SnifferAPI/Sniffer.py create mode 100644 modules/wireshark/extcap/SnifferAPI/SnifferCollector.py create mode 100644 modules/wireshark/extcap/SnifferAPI/Types.py create mode 100644 modules/wireshark/extcap/SnifferAPI/UART.py create mode 100644 modules/wireshark/extcap/SnifferAPI/__init__.py create mode 100644 modules/wireshark/extcap/SnifferAPI/version.py create mode 100644 modules/wireshark/extcap/nrf_sniffer_ble.py diff --git a/modules/default.nix b/modules/default.nix index ac459f1..cd6a1cf 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -50,7 +50,7 @@ ./uefi.nix ./unfree.nix ./upgrade-diff.nix - ./wireshark.nix + ./wireshark ./yubikey-gpg.nix ]; diff --git a/modules/wireshark.nix b/modules/wireshark.nix deleted file mode 100644 index 878f649..0000000 --- a/modules/wireshark.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, lib, pkgs, ... }: -lib.mkIf config.jalr.gui.enable { - programs.wireshark = { - enable = true; - package = pkgs.wireshark; - }; -} diff --git a/modules/wireshark/default.nix b/modules/wireshark/default.nix new file mode 100644 index 0000000..6c1b0c0 --- /dev/null +++ b/modules/wireshark/default.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, ... }: +let + extcap = ./extcap; + pythonWithPackages = pkgs.python3.withPackages (pp: with pp; [ + pyserial + psutil + ]); + nrf_sniffer_ble = pkgs.writeShellScript "nrf_sniffer_ble" '' + script_path=$(dirname `which $0`) + + exec ${pythonWithPackages}/bin/python3 $script_path/nrf_sniffer_ble.py "$@" + ''; +in +lib.mkIf config.jalr.gui.enable { + programs.wireshark = { + enable = true; + package = pkgs.wireshark.overrideAttrs (o: { + postInstall = '' + cp -r ${extcap}/* ${nrf_sniffer_ble} $out/lib/wireshark/extcap + '' + o.postInstall; + }); + }; +} diff --git a/modules/wireshark/extcap/SnifferAPI/CaptureFiles.py b/modules/wireshark/extcap/SnifferAPI/CaptureFiles.py new file mode 100644 index 0000000..f5cf6cb --- /dev/null +++ b/modules/wireshark/extcap/SnifferAPI/CaptureFiles.py @@ -0,0 +1,91 @@ +# Copyright (c) Nordic Semiconductor ASA +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form, except as embedded into a Nordic +# Semiconductor ASA integrated circuit in a product or a software update for +# such product, must reproduce the above copyright notice, this list of +# conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of Nordic Semiconductor ASA nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# 4. This software, with or without modification, must only be used with a +# Nordic Semiconductor ASA integrated circuit. +# +# 5. Any software provided in binary form under this license must not be reverse +# engineered, decompiled, modified and/or disassembled. +# +# THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +import time, os, logging +from . import Logger +from . import Pcap + + +DEFAULT_CAPTURE_FILE_DIR = Logger.DEFAULT_LOG_FILE_DIR +DEFAULT_CAPTURE_FILE_NAME = "capture.pcap" + + +def get_capture_file_path(capture_file_path=None): + default_path = os.path.join(DEFAULT_CAPTURE_FILE_DIR, DEFAULT_CAPTURE_FILE_NAME) + if capture_file_path is None: + return default_path + if os.path.splitext(capture_file_path)[1] != ".pcap": + return default_path + return os.path.abspath(capture_file_path) + + +class CaptureFileHandler: + def __init__(self, capture_file_path=None, clear=False): + filename = get_capture_file_path(capture_file_path) + if not os.path.isdir(os.path.dirname(filename)): + os.makedirs(os.path.dirname(filename)) + self.filename = filename + self.backupFilename = self.filename+".1" + if not os.path.isfile(self.filename): + self.startNewFile() + elif os.path.getsize(self.filename) > 20000000: + self.doRollover() + if clear: + #clear file + self.startNewFile() + + def startNewFile(self): + with open(self.filename, "wb") as f: + f.write(Pcap.get_global_header()) + + def doRollover(self): + try: + os.remove(self.backupFilename) + except: + logging.exception("capture file rollover remove backup failed") + try: + os.rename(self.filename, self.backupFilename) + self.startNewFile() + except: + logging.exception("capture file rollover failed") + + def writePacket(self, packet): + with open(self.filename, "ab") as f: + packet = Pcap.create_packet( + bytes([packet.boardId] + packet.getList()), + packet.time) + f.write(packet) diff --git a/modules/wireshark/extcap/SnifferAPI/Devices.py b/modules/wireshark/extcap/SnifferAPI/Devices.py new file mode 100644 index 0000000..8ea3c0e --- /dev/null +++ b/modules/wireshark/extcap/SnifferAPI/Devices.py @@ -0,0 +1,143 @@ +# Copyright (c) 2017, Nordic Semiconductor ASA +# +# Copyright (c) Nordic Semiconductor ASA +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form, except as embedded into a Nordic +# Semiconductor ASA integrated circuit in a product or a software update for +# such product, must reproduce the above copyright notice, this list of +# conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of Nordic Semiconductor ASA nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# 4. This software, with or without modification, must only be used with a +# Nordic Semiconductor ASA integrated circuit. +# +# 5. Any software provided in binary form under this license must not be reverse +# engineered, decompiled, modified and/or disassembled. +# +# THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from . import Notifications +import logging, threading + +class DeviceList(Notifications.Notifier): + def __init__(self, *args, **kwargs): + Notifications.Notifier.__init__(self, *args, **kwargs) + logging.info("args: " + str(args)) + logging.info("kwargs: " + str(kwargs)) + self._deviceListLock = threading.RLock() + with self._deviceListLock: + self.devices = [] + + def __len__(self): + return len(self.devices) + + def __repr__(self): + return "Sniffer Device List: "+str(self.asList()) + + def clear(self): + logging.info("Clearing") + with self._deviceListLock: + self.devices = [] + self.notify("DEVICES_CLEARED") + + def appendOrUpdate(self, newDevice): + with self._deviceListLock: + existingDevice = self.find(newDevice) + + # Add device to the list of devices being displayed, but only if CRC is OK + if existingDevice == None: + self.append(newDevice) + else: + updated = False + if (newDevice.name != "\"\"") and (existingDevice.name == "\"\""): + existingDevice.name = newDevice.name + updated = True + + if (newDevice.RSSI != 0 and (existingDevice.RSSI < (newDevice.RSSI - 5)) or (existingDevice.RSSI > (newDevice.RSSI+2))): + existingDevice.RSSI = newDevice.RSSI + updated = True + + if updated: + self.notify("DEVICE_UPDATED", existingDevice) + + def append(self, device): + self.devices.append(device) + self.notify("DEVICE_ADDED", device) + + def find(self, id): + if type(id) == list: + for dev in self.devices: + if dev.address == id: + return dev + elif type(id) == int: + return self.devices[id] + elif type(id) == str: + for dev in self.devices: + if dev.name in [id, '"'+id+'"']: + return dev + elif id.__class__.__name__ == "Device": + return self.find(id.address) + return None + + def remove(self, id): + if type(id) == list: #address + device = self.devices.pop(self.devices.index(self.find(id))) + elif type(id) == int: + device = self.devices.pop(id) + elif type(id) == Device: + device = self.devices.pop(self.devices.index(self.find(id.address))) + self.notify("DEVICE_REMOVED", device) + + def index(self, device): + index = 0 + for dev in self.devices: + if dev.address == device.address: + return index + index += 1 + return None + + def setFollowed(self, device): + if device in self.devices: + for dev in self.devices: + dev.followed = False + device.followed = True + self.notify("DEVICE_FOLLOWED", device) + + def asList(self): + return self.devices[:] + +class Device: + def __init__(self, address, name, RSSI): + self.address = address + self.name = name + self.RSSI = RSSI + self.followed = False + + def __repr__(self): + return 'Bluetooth LE device "'+self.name+'" ('+str(self.address)+')' + +def listToString(list): + str = "" + for i in list: + str+=chr(i) + return str diff --git a/modules/wireshark/extcap/SnifferAPI/Exceptions.py b/modules/wireshark/extcap/SnifferAPI/Exceptions.py new file mode 100644 index 0000000..f3ab20c --- /dev/null +++ b/modules/wireshark/extcap/SnifferAPI/Exceptions.py @@ -0,0 +1,60 @@ +# Copyright (c) Nordic Semiconductor ASA +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form, except as embedded into a Nordic +# Semiconductor ASA integrated circuit in a product or a software update for +# such product, must reproduce the above copyright notice, this list of +# conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of Nordic Semiconductor ASA nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# 4. This software, with or without modification, must only be used with a +# Nordic Semiconductor ASA integrated circuit. +# +# 5. Any software provided in binary form under this license must not be reverse +# engineered, decompiled, modified and/or disassembled. +# +# THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +class SnifferTimeout(Exception): + pass + +class UARTPacketError(Exception): + pass + +class LockedException(Exception): + def __init__(self, message): + self.message = message + +class InvalidPacketException(Exception): + pass + +class InvalidAdvChannel(Exception): + pass + +# Internal Use +class SnifferWatchDogTimeout(SnifferTimeout): + pass + +# Internal Use +class ExitCodeException(Exception): + pass diff --git a/modules/wireshark/extcap/SnifferAPI/Filelock.py b/modules/wireshark/extcap/SnifferAPI/Filelock.py new file mode 100644 index 0000000..5570942 --- /dev/null +++ b/modules/wireshark/extcap/SnifferAPI/Filelock.py @@ -0,0 +1,69 @@ +import os +import logging +from sys import platform + +if platform == 'linux': + import psutil + +from . import Exceptions + +# Lock file management. +# ref: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch05s09.html +# +# Stored in /var/lock: +# The naming convention which must be used is "LCK.." followed by the base name of the device. +# For example, to lock /dev/ttyS0 the file "LCK..ttyS0" would be created. +# HDB UUCP lock file format: +# process identifier (PID) as a ten byte ASCII decimal number, with a trailing newline + +def lockpid(lockfile): + if (os.path.isfile(lockfile)): + with open(lockfile) as fd: + lockpid = fd.read() + + try: + return int(lockpid) + except: + logging.info("Lockfile is invalid. Overriding it..") + os.remove(lockfile) + return 0 + + return 0 + +def lock(port): + if platform != 'linux': + return + + tty = os.path.basename(port) + lockfile = os.path.join( + '/run', + 'user', + f'{os.getuid()}', + f'{tty}.lock' + ) + + lockedpid = lockpid(lockfile) + if lockedpid: + if lockedpid == os.getpid(): + return + + if psutil.pid_exists(lockedpid): + raise Exceptions.LockedException(f"Device {port} is locked") + else: + logging.info("Lockfile is stale. Overriding it..") + os.remove(lockfile) + + fd = open(lockfile, 'w') + with open(lockfile, 'w') as fd: + fd.write(f'{os.getpid():10}') + +def unlock(port): + if platform != 'linux': + return + + tty = os.path.basename(port) + lockfile = f'/var/lock/LCK..{tty}' + + lockedpid = lockpid(lockfile) + if lockedpid == os.getpid(): + os.remove(lockfile) diff --git a/modules/wireshark/extcap/SnifferAPI/Logger.py b/modules/wireshark/extcap/SnifferAPI/Logger.py new file mode 100644 index 0000000..cbb1e7c --- /dev/null +++ b/modules/wireshark/extcap/SnifferAPI/Logger.py @@ -0,0 +1,207 @@ +# Copyright (c) Nordic Semiconductor ASA +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form, except as embedded into a Nordic +# Semiconductor ASA integrated circuit in a product or a software update for +# such product, must reproduce the above copyright notice, this list of +# conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of Nordic Semiconductor ASA nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# 4. This software, with or without modification, must only be used with a +# Nordic Semiconductor ASA integrated circuit. +# +# 5. Any software provided in binary form under this license must not be reverse +# engineered, decompiled, modified and/or disassembled. +# +# THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +import time, os, logging, traceback, threading +import logging.handlers as logHandlers + +################################################################# +# This file contains the logger. To log a line, simply write # +# 'logging.[level]("whatever you want to log")' # +# [level] is one of {info, debug, warning, error, critical, # +# exception} # +# See python logging documentation # +# As long as Logger.initLogger has been called beforehand, this # +# will result in the line being appended to the log file # +################################################################# + +appdata = os.getenv('appdata') +if appdata: + DEFAULT_LOG_FILE_DIR = os.path.join(appdata, 'Nordic Semiconductor', 'Sniffer', 'logs') +else: + DEFAULT_LOG_FILE_DIR = "/tmp/logs" + +DEFAULT_LOG_FILE_NAME = "log.txt" + +logFileName = None +logHandler = None +logHandlerArray = [] +logFlusher = None + +myMaxBytes = 1000000 + + +def setLogFileName(log_file_path): + global logFileName + logFileName = os.path.abspath(log_file_path) + + +# Ensure that the directory we are writing the log file to exists. +# Create our logfile, and write the timestamp in the first line. +def initLogger(): + try: + global logFileName + if logFileName is None: + logFileName = os.path.join(DEFAULT_LOG_FILE_DIR, DEFAULT_LOG_FILE_NAME) + + # First, make sure that the directory exists + if not os.path.isdir(os.path.dirname(logFileName)): + os.makedirs(os.path.dirname(logFileName)) + + # If the file does not exist, create it, and save the timestamp + if not os.path.isfile(logFileName): + with open(logFileName, "w") as f: + f.write(str(time.time()) + str(os.linesep)) + + global logFlusher + global logHandlerArray + + logHandler = MyRotatingFileHandler(logFileName, mode='a', maxBytes=myMaxBytes, backupCount=3) + logFormatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s', datefmt='%d-%b-%Y %H:%M:%S (%z)') + logHandler.setFormatter(logFormatter) + logger = logging.getLogger() + logger.addHandler(logHandler) + logger.setLevel(logging.INFO) + logFlusher = LogFlusher(logHandler) + logHandlerArray.append(logHandler) + except: + print("LOGGING FAILED") + print(traceback.format_exc()) + raise + + +def shutdownLogger(): + if logFlusher is not None: + logFlusher.stop() + logging.shutdown() + + +# Clear the log (typically after it has been sent on email) +def clearLog(): + try: + logHandler.doRollover() + except: + print("LOGGING FAILED") + raise + + +# Returns the timestamp residing on the first line of the logfile. Used for checking the time of creation +def getTimestamp(): + try: + with open(logFileName, "r") as f: + f.seek(0) + return f.readline() + except: + print("LOGGING FAILED") + + +def addTimestamp(): + try: + with open(logFileName, "a") as f: + f.write(str(time.time()) + os.linesep) + except: + print("LOGGING FAILED") + + +# Returns the entire content of the logfile. Used when sending emails +def readAll(): + try: + text = "" + with open(logFileName, "r") as f: + text = f.read() + return text + except: + print("LOGGING FAILED") + + +def addLogHandler(logHandler): + global logHandlerArray + logger = logging.getLogger() + logger.addHandler(logHandler) + logger.setLevel(logging.INFO) + logHandlerArray.append(logHandler) + +def removeLogHandler(logHandler): + global logHandlerArray + logger = logging.getLogger() + logger.removeHandler(logHandler) + logHandlerArray.remove(logHandler) + + +class MyRotatingFileHandler(logHandlers.RotatingFileHandler): + def doRollover(self): + try: + logHandlers.RotatingFileHandler.doRollover(self) + addTimestamp() + self.maxBytes = myMaxBytes + except: + # There have been permissions issues with the log files. + self.maxBytes += int(myMaxBytes / 2) + + +class LogFlusher(threading.Thread): + def __init__(self, logHandler): + threading.Thread.__init__(self) + + self.daemon = True + self.handler = logHandler + self.exit = threading.Event() + + self.start() + + def run(self): + while True: + if self.exit.wait(10): + try: + self.doFlush() + except AttributeError as e: + print(e) + break + self.doFlush() + + def doFlush(self): + self.handler.flush() + os.fsync(self.handler.stream.fileno()) + + def stop(self): + self.exit.set() + + +if __name__ == '__main__': + initLogger() + for i in range(50): + logging.info("test log no. " + str(i)) + print("test log no. ", i) diff --git a/modules/wireshark/extcap/SnifferAPI/Notifications.py b/modules/wireshark/extcap/SnifferAPI/Notifications.py new file mode 100644 index 0000000..d9fd8e4 --- /dev/null +++ b/modules/wireshark/extcap/SnifferAPI/Notifications.py @@ -0,0 +1,90 @@ +# Copyright (c) Nordic Semiconductor ASA +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form, except as embedded into a Nordic +# Semiconductor ASA integrated circuit in a product or a software update for +# such product, must reproduce the above copyright notice, this list of +# conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of Nordic Semiconductor ASA nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# 4. This software, with or without modification, must only be used with a +# Nordic Semiconductor ASA integrated circuit. +# +# 5. Any software provided in binary form under this license must not be reverse +# engineered, decompiled, modified and/or disassembled. +# +# THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +import threading, logging + +class Notification(): + def __init__(self, key, msg = None): + if type(key) is not str: + raise TypeError("Invalid notification key: "+str(key)) + self.key = key + self.msg = msg + + def __repr__(self): + return "Notification (key: %s, msg: %s)" % (str(self.key), str(self.msg)) + +class Notifier(): + def __init__(self, callbacks = [], **kwargs): + self.callbacks = {} + self.callbackLock = threading.RLock() + + for callback in callbacks: + self.subscribe(*callback) + + def clearCallbacks(self): + with self.callbackLock: + self.callbacks.clear() + + def subscribe(self, key, callback): + with self.callbackLock: + if callback not in self.getCallbacks(key): + self.getCallbacks(key).append(callback) + + def unSubscribe(self, key, callback): + with self.callbackLock: + if callback in self.getCallbacks(key): + self.getCallbacks(key).remove(callback) + + def getCallbacks(self, key): + with self.callbackLock: + if key not in self.callbacks: + self.callbacks[key] = [] + return self.callbacks[key] + + def notify(self, key = None, msg = None, notification = None): + with self.callbackLock: + if notification == None: + notification = Notification(key,msg) + + for callback in self.getCallbacks(notification.key): + callback(notification) + + for callback in self.getCallbacks("*"): + callback(notification) + + def passOnNotification(self, notification): + self.notify(notification = notification) diff --git a/modules/wireshark/extcap/SnifferAPI/Packet.py b/modules/wireshark/extcap/SnifferAPI/Packet.py new file mode 100644 index 0000000..ddac78d --- /dev/null +++ b/modules/wireshark/extcap/SnifferAPI/Packet.py @@ -0,0 +1,583 @@ +# Copyright (c) Nordic Semiconductor ASA +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form, except as embedded into a Nordic +# Semiconductor ASA integrated circuit in a product or a software update for +# such product, must reproduce the above copyright notice, this list of +# conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of Nordic Semiconductor ASA nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# 4. This software, with or without modification, must only be used with a +# Nordic Semiconductor ASA integrated circuit. +# +# 5. Any software provided in binary form under this license must not be reverse +# engineered, decompiled, modified and/or disassembled. +# +# THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from . import UART, Exceptions, Notifications +import time, logging, os, sys, serial +from .Types import * + +ADV_ACCESS_ADDRESS = [0xD6, 0xBE, 0x89, 0x8E] + +SYNCWORD_POS = 0 +PAYLOAD_LEN_POS_V1 = 1 +PAYLOAD_LEN_POS = 0 +PROTOVER_POS = PAYLOAD_LEN_POS+2 +PACKETCOUNTER_POS = PROTOVER_POS+1 +ID_POS = PACKETCOUNTER_POS+2 + +BLE_HEADER_LEN_POS = ID_POS+1 +FLAGS_POS = BLE_HEADER_LEN_POS+1 +CHANNEL_POS = FLAGS_POS+1 +RSSI_POS = CHANNEL_POS+1 +EVENTCOUNTER_POS = RSSI_POS+1 +TIMESTAMP_POS = EVENTCOUNTER_POS+2 +BLEPACKET_POS = TIMESTAMP_POS+4 +TXADD_POS = BLEPACKET_POS + 4 +TXADD_MSK = 0x40 +PAYLOAD_POS = BLE_HEADER_LEN_POS + +HEADER_LENGTH = 6 +BLE_HEADER_LENGTH = 10 + +VALID_ADV_CHANS = [37, 38, 39] + +PACKET_COUNTER_CAP = 2**16 + + +class PacketReader(Notifications.Notifier): + def __init__(self, portnum=None, callbacks=[], baudrate=None): + Notifications.Notifier.__init__(self, callbacks) + self.portnum = portnum + try: + self.uart = UART.Uart(portnum, baudrate) + except serial.SerialException as e: + logging.exception("Error opening UART %s" % str(e)) + self.uart = UART.Uart() + self.packetCounter = 0 + self.lastReceivedPacketCounter = 0 + self.lastReceivedPacket = None + self.lastReceivedTimestampPacket = None + self.supportedProtocolVersion = PROTOVER_V3 + + def setup(self): + pass + + def doExit(self): + # This method will always join the Uart worker thread + self.uart.close() + # Clear method references to avoid uncollectable cyclic references + self.clearCallbacks() + + # This function takes a byte list, encode it in SLIP protocol and return the encoded byte list + def encodeToSLIP(self, byteList): + tempSLIPBuffer = [] + tempSLIPBuffer.append(SLIP_START) + for i in byteList: + if i == SLIP_START: + tempSLIPBuffer.append(SLIP_ESC) + tempSLIPBuffer.append(SLIP_ESC_START) + elif i == SLIP_END: + tempSLIPBuffer.append(SLIP_ESC) + tempSLIPBuffer.append(SLIP_ESC_END) + elif i == SLIP_ESC: + tempSLIPBuffer.append(SLIP_ESC) + tempSLIPBuffer.append(SLIP_ESC_ESC) + else: + tempSLIPBuffer.append(i) + tempSLIPBuffer.append(SLIP_END) + return tempSLIPBuffer + + # This function uses getSerialByte() function to get SLIP encoded bytes from the serial port and return a decoded byte list + # Based on https://github.com/mehdix/pyslip/ + def decodeFromSLIP(self, timeout=None, complete_timeout=None): + dataBuffer = [] + startOfPacket = False + endOfPacket = False + + if complete_timeout is not None: + time_start = time.time() + + while not startOfPacket and (complete_timeout is None or (time.time() - time_start < complete_timeout)): + res = self.getSerialByte(timeout) + startOfPacket = (res == SLIP_START) + + while not endOfPacket and (complete_timeout is None or (time.time() - time_start < complete_timeout)): + serialByte = self.getSerialByte(timeout) + if serialByte == SLIP_END: + endOfPacket = True + elif serialByte == SLIP_ESC: + serialByte = self.getSerialByte(timeout) + if serialByte == SLIP_ESC_START: + dataBuffer.append(SLIP_START) + elif serialByte == SLIP_ESC_END: + dataBuffer.append(SLIP_END) + elif serialByte == SLIP_ESC_ESC: + dataBuffer.append(SLIP_ESC) + else: + dataBuffer.append(SLIP_END) + else: + dataBuffer.append(serialByte) + if not endOfPacket: + raise Exceptions.UARTPacketError("Exceeded max timeout of %f seconds." % complete_timeout) + return dataBuffer + + # This function read byte chuncks from the serial port and return one byte at a time + # Based on https://github.com/mehdix/pyslip/ + def getSerialByte(self, timeout=None): + serialByte = self.uart.readByte(timeout) + if serialByte is None: + raise Exceptions.SnifferTimeout("Packet read timed out.") + return serialByte + + def handlePacketHistory(self, packet): + # Reads and validates packet counter + if self.lastReceivedPacket is not None \ + and packet.packetCounter != (self.lastReceivedPacket.packetCounter + 1) % PACKET_COUNTER_CAP \ + and self.lastReceivedPacket.packetCounter != 0: + + logging.info("gap in packets, between " + str(self.lastReceivedPacket.packetCounter) + " and " + + str(packet.packetCounter) + " packet before: " + str(self.lastReceivedPacket.packetList) + + " packet after: " + str(packet.packetList)) + + self.lastReceivedPacket = packet + if packet.id in [EVENT_PACKET_DATA_PDU, EVENT_PACKET_ADV_PDU]: + self.lastReceivedTimestampPacket = packet + + def getPacketTime(self, packet): + ble_payload_length = self.lastReceivedPacket.payloadLength - BLE_HEADER_LENGTH + + if packet.phy == PHY_1M: + return 8 * (1 + ble_payload_length) + elif packet.phy == PHY_2M: + return 4 * (2 + ble_payload_length) + elif packet.phy == PHY_CODED: + # blePacket is not assigned if not packet is "OK" (CRC error) + ci = packet.packetList[BLEPACKET_POS + 4] + fec2_block_len = ble_payload_length - 4 - 1 + fec1_block_us = 80 + 256 + 16 + 24 + if ci == PHY_CODED_CI_S8: + return fec1_block_us + 64 * fec2_block_len + 24 + elif ci == PHY_CODED_CI_S2: + return fec1_block_us + 16 * fec2_block_len + 6 + # Unknown PHY or Coding Indicator + return 0 + + def convertPacketListProtoVer2(self, packet): + # Convert to version 2 + packet.packetList[PROTOVER_POS] = 2 + + # Convert to common packet ID + if packet.packetList[ID_POS] == EVENT_PACKET_ADV_PDU: + packet.packetList[ID_POS] = EVENT_PACKET_DATA_PDU + + if packet.packetList[ID_POS] != EVENT_PACKET_DATA_PDU: + # These types do not have a timestamp + return + + # Convert time-stamp to End to Start delta + time_delta = 0 + if self.lastReceivedTimestampPacket is not None and self.lastReceivedTimestampPacket.valid: + time_delta = (packet.timestamp - + (self.lastReceivedTimestampPacket.timestamp + + self.getPacketTime(self.lastReceivedTimestampPacket))) + + time_delta = toLittleEndian(time_delta, 4) + packet.packetList[TIMESTAMP_POS ] = time_delta[0] + packet.packetList[TIMESTAMP_POS+1] = time_delta[1] + packet.packetList[TIMESTAMP_POS+2] = time_delta[2] + packet.packetList[TIMESTAMP_POS+3] = time_delta[3] + + + def handlePacketCompatibility(self, packet): + if self.supportedProtocolVersion == PROTOVER_V2 and packet.packetList[PROTOVER_POS] > PROTOVER_V2: + self.convertPacketListProtoVer2(packet) + + def setSupportedProtocolVersion(self, supportedProtocolVersion): + if (supportedProtocolVersion != PROTOVER_V3): + logging.info("Using packet compatibility, converting packets to protocol version %d", supportedProtocolVersion) + self.supportedProtocolVersion = supportedProtocolVersion + + def getPacket(self, timeout=None): + packetList = [] + try: + packetList = self.decodeFromSLIP(timeout) + except Exceptions.UARTPacketError: # FIXME: This is never thrown... + logging.exception("") + return None + else: + packet = Packet(packetList) + if packet.valid: + self.handlePacketCompatibility(packet) + self.handlePacketHistory(packet) + return packet + + def sendPacket(self, id, payload): + packetList = [HEADER_LENGTH] + [len(payload)] + [PROTOVER_V1] + toLittleEndian(self.packetCounter, 2) + [id] + payload + packetList = self.encodeToSLIP(packetList) + self.packetCounter += 1 + self.uart.writeList(packetList) + + def sendScan(self, findScanRsp = False, findAux = False, scanCoded = False): + flags0 = findScanRsp | (findAux << 1) | (scanCoded << 2) + self.sendPacket(REQ_SCAN_CONT, [flags0]) + logging.info("Scan flags: %s" % bin(flags0)) + + def sendFollow(self, addr, followOnlyAdvertisements = False, followOnlyLegacy = False, followCoded = False): + flags0 = followOnlyAdvertisements | (followOnlyLegacy << 1) | (followCoded << 2) + logging.info("Follow flags: %s" % bin(flags0)) + self.sendPacket(REQ_FOLLOW, addr + [flags0]) + + def sendPingReq(self): + self.sendPacket(PING_REQ, []) + + def getBytes(self, value, size): + if (len(value) < size): + value = [0] * (size - len(value)) + value + else: + value = value[:size] + + return value + + def sendTK(self, TK): + TK = self.getBytes(TK, 16) + self.sendPacket(SET_TEMPORARY_KEY, TK) + logging.info("Sent TK to sniffer: " + str(TK)) + + def sendPrivateKey(self, pk): + pk = self.getBytes(pk, 32) + self.sendPacket(SET_PRIVATE_KEY, pk) + logging.info("Sent private key to sniffer: " + str(pk)) + + def sendLegacyLTK(self, ltk): + ltk = self.getBytes(ltk, 16) + self.sendPacket(SET_LEGACY_LONG_TERM_KEY, ltk) + logging.info("Sent Legacy LTK to sniffer: " + str(ltk)) + + def sendSCLTK(self, ltk): + ltk = self.getBytes(ltk, 16) + self.sendPacket(SET_SC_LONG_TERM_KEY, ltk) + logging.info("Sent SC LTK to sniffer: " + str(ltk)) + + def sendIRK(self, irk): + irk = self.getBytes(irk, 16) + self.sendPacket(SET_IDENTITY_RESOLVING_KEY, irk) + logging.info("Sent IRK to sniffer: " + str(irk)) + + def sendSwitchBaudRate(self, newBaudRate): + self.sendPacket(SWITCH_BAUD_RATE_REQ, toLittleEndian(newBaudRate, 4)) + + def switchBaudRate(self, newBaudRate): + self.uart.switchBaudRate(newBaudRate) + + def sendHopSequence(self, hopSequence): + for chan in hopSequence: + if chan not in VALID_ADV_CHANS: + raise Exceptions.InvalidAdvChannel("%s is not an adv channel" % str(chan)) + payload = [len(hopSequence)] + hopSequence + [37]*(3-len(hopSequence)) + self.sendPacket(SET_ADV_CHANNEL_HOP_SEQ, payload) + self.notify("NEW_ADV_HOP_SEQ", {"hopSequence":hopSequence}) + + def sendVersionReq(self): + self.sendPacket(REQ_VERSION, []) + + def sendTimestampReq(self): + self.sendPacket(REQ_TIMESTAMP, []) + + def sendGoIdle(self): + self.sendPacket(GO_IDLE, []) + + +class Packet: + def __init__(self, packetList): + try: + if not packetList: + raise Exceptions.InvalidPacketException("packet list not valid: %s" % str(packetList)) + + self.protover = packetList[PROTOVER_POS] + + if self.protover > PROTOVER_V3: + logging.exception("Unsupported protocol version %s" % str(self.protover)) + raise RuntimeError("Unsupported protocol version %s" % str(self.protover)) + + self.packetCounter = parseLittleEndian(packetList[PACKETCOUNTER_POS:PACKETCOUNTER_POS + 2]) + self.id = packetList[ID_POS] + + if int(self.protover) == PROTOVER_V1: + self.payloadLength = packetList[PAYLOAD_LEN_POS_V1] + else: + self.payloadLength = parseLittleEndian(packetList[PAYLOAD_LEN_POS:PAYLOAD_LEN_POS + 2]) + + self.packetList = packetList + self.readPayload(packetList) + + except Exceptions.InvalidPacketException as e: + logging.error("Invalid packet: %s" % str(e)) + self.OK = False + self.valid = False + except Exception as e: + logging.exception("packet creation error %s" %str(e)) + logging.info("packetList: " + str(packetList)) + self.OK = False + self.valid = False + + def __repr__(self): + return "UART packet, type: "+str(self.id)+", PC: "+str(self.packetCounter) + + def readPayload(self, packetList): + self.blePacket = None + self.OK = False + + if not self.validatePacketList(packetList): + raise Exceptions.InvalidPacketException("packet list not valid: %s" % str(packetList)) + else: + self.valid = True + + self.payload = packetList[PAYLOAD_POS:PAYLOAD_POS+self.payloadLength] + + if self.id == EVENT_PACKET_ADV_PDU or self.id == EVENT_PACKET_DATA_PDU: + try: + self.bleHeaderLength = packetList[BLE_HEADER_LEN_POS] + if self.bleHeaderLength == BLE_HEADER_LENGTH: + self.flags = packetList[FLAGS_POS] + self.readFlags() + self.channel = packetList[CHANNEL_POS] + self.rawRSSI = packetList[RSSI_POS] + self.RSSI = -self.rawRSSI + self.eventCounter = parseLittleEndian(packetList[EVENTCOUNTER_POS:EVENTCOUNTER_POS+2]) + + self.timestamp = parseLittleEndian(packetList[TIMESTAMP_POS:TIMESTAMP_POS+4]) + + # The hardware adds a padding byte which isn't sent on air. + # We remove it, and update the payload length in the packet list. + if self.phy == PHY_CODED: + self.packetList.pop(BLEPACKET_POS+6+1) + else: + self.packetList.pop(BLEPACKET_POS+6) + self.payloadLength -= 1 + if self.protover >= PROTOVER_V2: + # Write updated payload length back to the packet list. + payloadLength = toLittleEndian(self.payloadLength, 2) + packetList[PAYLOAD_LEN_POS ] = payloadLength[0] + packetList[PAYLOAD_LEN_POS+1] = payloadLength[1] + else: # PROTOVER_V1 + packetList[PAYLOAD_LEN_POS_V1] = self.payloadLength + else: + logging.info("Invalid BLE Header Length " + str(packetList)) + self.valid = False + + if self.OK: + try: + if self.protover >= PROTOVER_V3: + packet_type = (PACKET_TYPE_ADVERTISING + if self.id == EVENT_PACKET_ADV_PDU else + PACKET_TYPE_DATA) + else: + packet_type = (PACKET_TYPE_ADVERTISING + if packetList[BLEPACKET_POS : BLEPACKET_POS + 4] == ADV_ACCESS_ADDRESS else + PACKET_TYPE_DATA) + + self.blePacket = BlePacket(packet_type, packetList[BLEPACKET_POS:], self.phy) + except Exception as e: + logging.exception("blePacket error %s" % str(e)) + except Exception as e: + # malformed packet + logging.exception("packet error %s" % str(e)) + self.OK = False + elif self.id == PING_RESP: + if self.protover < PROTOVER_V3: + self.version = parseLittleEndian(packetList[PAYLOAD_POS:PAYLOAD_POS+2]) + elif self.id == RESP_VERSION: + self.version = ''.join([chr(i) for i in packetList[PAYLOAD_POS:]]) + elif self.id == RESP_TIMESTAMP: + self.timestamp = parseLittleEndian(packetList[PAYLOAD_POS:PAYLOAD_POS+4]) + elif self.id == SWITCH_BAUD_RATE_RESP or self.id == SWITCH_BAUD_RATE_REQ: + self.baudRate = parseLittleEndian(packetList[PAYLOAD_POS:PAYLOAD_POS+4]) + else: + logging.info("Unknown packet ID") + + def readFlags(self): + self.crcOK = not not (self.flags & 1) + self.direction = not not (self.flags & 2) + self.encrypted = not not (self.flags & 4) + self.micOK = not not (self.flags & 8) + self.phy = (self.flags >> 4) & 7 + self.OK = self.crcOK and (self.micOK or not self.encrypted) + + def getList(self): + return self.packetList + + def validatePacketList(self, packetList): + try: + if (self.payloadLength + HEADER_LENGTH) == len(packetList): + return True + else: + return False + except: + logging.exception("Invalid packet: %s" % str(packetList)) + return False + +class BlePacket(): + def __init__(self, type, packetList, phy): + self.type = type + + offset = 0 + offset = self.extractAccessAddress(packetList, offset) + offset = self.extractFormat(packetList, phy, offset) + + if self.type == PACKET_TYPE_ADVERTISING: + offset = self.extractAdvHeader(packetList, offset) + else: + offset = self.extractConnHeader(packetList, offset) + + offset = self.extractLength(packetList, offset) + self.payload = packetList[offset:] + + if self.type == PACKET_TYPE_ADVERTISING: + offset = self.extractAddresses(packetList, offset) + self.extractName(packetList, offset) + + + def __repr__(self): + return "BLE packet, AAddr: "+str(self.accessAddress) + + def extractAccessAddress(self, packetList, offset): + self.accessAddress = packetList[offset:offset+4] + return offset + 4 + + def extractFormat(self, packetList, phy, offset): + self.coded = phy == PHY_CODED + if self.coded: + self.codingIndicator = packetList[offset] & 3 + return offset + 1 + + return offset + + def extractAdvHeader(self, packetList, offset): + self.advType = packetList[offset] & 15 + self.txAddrType = (packetList[offset] >> 6) & 1 + if self.advType in [1, 3, 5]: + self.rxAddrType = (packetList[offset] << 7) & 1 + elif self.advType == 7: + flags = packetList[offset + 2] + if flags & 0x02: + self.rxAddrType = (packetList[offset] << 7) & 1 + return offset + 1 + + def extractConnHeader(self, packetList, offset): + self.llid = packetList[offset] & 3 + self.sn = (packetList[offset] >> 2) & 1 + self.nesn = (packetList[offset] >> 3) & 1 + self.md = (packetList[offset] >> 4) & 1 + return offset + 1 + + def extractAddresses(self, packetList, offset): + addr = None + scanAddr = None + + if self.advType in [0, 1, 2, 4, 6]: + addr = packetList[offset:offset+6] + addr.reverse() + addr += [self.txAddrType] + offset += 6 + + if self.advType in [3, 5]: + scanAddr = packetList[offset:offset+6] + scanAddr.reverse() + scanAddr += [self.txAddrType] + offset += 6 + addr = packetList[offset:offset+6] + addr.reverse() + addr += [self.rxAddrType] + offset += 6 + + if self.advType == 1: + scanAddr = packetList[offset:offset+6] + scanAddr.reverse() + scanAddr += [self.rxAddrType] + offset += 6 + + if self.advType == 7: + ext_header_len = packetList[offset] & 0x3f + offset += 1 + + ext_header_offset = offset + flags = packetList[offset] + ext_header_offset += 1 + + if flags & 0x01: + addr = packetList[ext_header_offset:ext_header_offset+6] + addr.reverse() + addr += [self.txAddrType] + ext_header_offset += 6 + + if flags & 0x02: + scanAddr = packetList[ext_header_offset:ext_header_offset+6] + scanAddr.reverse() + scanAddr += [self.rxAddrType] + ext_header_offset += 6 + + offset += ext_header_len + + self.advAddress = addr + self.scanAddress = scanAddr + return offset + + def extractName(self, packetList, offset): + name = "" + if self.advType in [0, 2, 4, 6, 7]: + i = offset + while i < len(packetList): + length = packetList[i] + if (i+length+1) > len(packetList) or length == 0: + break + type = packetList[i+1] + if type == 8 or type == 9: + nameList = packetList[i+2:i+length+1] + name = "" + for j in nameList: + name += chr(j) + i += (length+1) + name = '"'+name+'"' + elif (self.advType == 1): + name = "[ADV_DIRECT_IND]" + + self.name = name + + def extractLength(self, packetList, offset): + self.length = packetList[offset] + return offset + 1 + +def parseLittleEndian(list): + total = 0 + for i in range(len(list)): + total+=(list[i] << (8*i)) + return total + +def toLittleEndian(value, size): + list = [0]*size + for i in range(size): + list[i] = (value >> (i*8)) % 256 + return list + diff --git a/modules/wireshark/extcap/SnifferAPI/Pcap.py b/modules/wireshark/extcap/SnifferAPI/Pcap.py new file mode 100644 index 0000000..63cbe41 --- /dev/null +++ b/modules/wireshark/extcap/SnifferAPI/Pcap.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 + +# Copyright (c) Nordic Semiconductor ASA +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form, except as embedded into a Nordic +# Semiconductor ASA integrated circuit in a product or a software update for +# such product, must reproduce the above copyright notice, this list of +# conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of Nordic Semiconductor ASA nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# 4. This software, with or without modification, must only be used with a +# Nordic Semiconductor ASA integrated circuit. +# +# 5. Any software provided in binary form under this license must not be reverse +# engineered, decompiled, modified and/or disassembled. +# +# THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +import struct + + +# See: +# - https://github.com/pcapng/pcapng +# - https://www.tcpdump.org/linktypes/LINKTYPE_NORDIC_BLE.html +PACKET_HEADER = struct.Struct("= PROTOVER_V3: + if self._last_time is None: + # Timestamp from Host + packet.time = time.time() + else: + # Timestamp using reference and packet timestamp diff + if packet.timestamp < self._last_timestamp: + time_diff = (1 << 32) - (self._last_timestamp - packet.timestamp) + else: + time_diff = (packet.timestamp - self._last_timestamp) + + packet.time = self._last_time + (time_diff / 1_000_000) + + self._last_time = packet.time + self._last_timestamp = packet.timestamp + else: + # Timestamp from Host + packet.time = time.time() + + self._appendPacket(packet) + + self.notify("NEW_BLE_PACKET", {"packet": packet}) + self._captureHandler.writePacket(packet) + + self._nProcessedPackets += 1 + if packet.OK: + try: + if packet.blePacket.type == PACKET_TYPE_ADVERTISING: + + if self.state == STATE_FOLLOWING and packet.blePacket.advType == 5: + self._connectionAccessAddress = packet.blePacket.accessAddress + + if self.state == STATE_FOLLOWING and packet.blePacket.advType == 4: + newDevice = Devices.Device(address=packet.blePacket.advAddress, name=packet.blePacket.name, RSSI=packet.RSSI) + self._devices.appendOrUpdate(newDevice) + + if self.state == STATE_SCANNING: + if (packet.blePacket.advType in [0, 1, 2, 4, 6, 7] and + packet.blePacket.advAddress != None and + packet.crcOK and + not packet.direction + ): + newDevice = Devices.Device(address=packet.blePacket.advAddress, name=packet.blePacket.name, RSSI=packet.RSSI) + self._devices.appendOrUpdate(newDevice) + + except Exception as e: + logging.exception("packet processing error %s" % str(e)) + self.notify("PACKET_PROCESSING_ERROR", {"errorString": str(e)}) + + def _continuouslyPipe(self): + while not self._exit: + try: + packet = self._packetReader.getPacket(timeout=12) + if packet == None or not packet.valid: + raise Exceptions.InvalidPacketException("") + except Exceptions.SnifferTimeout as e: + logging.info(str(e)) + packet = None + except (SerialException, ValueError): + logging.exception("UART read error") + logging.error("Lost contact with sniffer hardware.") + self._doExit() + except Exceptions.InvalidPacketException: + pass + else: + if packet.id == EVENT_PACKET_DATA_PDU or packet.id == EVENT_PACKET_ADV_PDU: + self._processBLEPacket(packet) + elif packet.id == EVENT_FOLLOW: + # This packet has no value for the user. + pass + elif packet.id == EVENT_CONNECT: + self._connectEventPacketCounterValue = packet.packetCounter + self._inConnection = True + # copy it because packets are eventually deleted + self._currentConnectRequest = copy.copy(self._findPacketByPacketCounter(self._connectEventPacketCounterValue-1)) + elif packet.id == EVENT_DISCONNECT: + if self._inConnection: + self._packetsInLastConnection = packet.packetCounter - self._connectEventPacketCounterValue + self._inConnection = False + elif packet.id == SWITCH_BAUD_RATE_RESP and self._switchingBaudRate: + self._switchingBaudRate = False + if (packet.baudRate == self._proposedBaudRate): + self._packetReader.switchBaudRate(self._proposedBaudRate) + else: + self._switchBaudRate(packet.baudRate) + elif packet.id == PING_RESP: + if hasattr(packet, 'version'): + versions = { 1116: '3.1.0', + 1115: '3.0.0', + 1114: '2.0.0', + 1113: '2.0.0-beta-3', + 1112: '2.0.0-beta-1' } + self._fwversion = versions.get(packet.version, 'SVN rev: %d' % packet.version) + logging.info("Firmware version %s" % self._fwversion) + elif packet.id == RESP_VERSION: + self._fwversion = packet.version + logging.info("Firmware version %s" % self._fwversion) + elif packet.id == RESP_TIMESTAMP: + # Use current time as timestamp reference + self._last_time = time.time() + self._last_timestamp = packet.timestamp + + lt = time.localtime(self._last_time) + usecs = int((self._last_time - int(self._last_time)) * 1_000_000) + logging.info(f'Firmware timestamp {self._last_timestamp} reference: ' + f'{time.strftime("%b %d %Y %X", lt)}.{usecs} {time.strftime("%Z", lt)}') + else: + logging.info("Unknown packet ID") + + def _findPacketByPacketCounter(self, packetCounterValue): + with self._packetListLock: + for i in range(-1, -1-len(self._packets), -1): + # iterate backwards through packets + if self._packets[i].packetCounter == packetCounterValue: + return self._packets[i] + return None + + def _startScanning(self, findScanRsp = False, findAux = False, scanCoded = False): + logging.info("starting scan") + + if self.state == STATE_FOLLOWING: + logging.info("Stopped sniffing device") + + self._setState(STATE_SCANNING) + self._packetReader.sendScan(findScanRsp, findAux, scanCoded) + self._packetReader.sendTK([0]) + + def _doExit(self): + self._exit = True + self.notify("APP_EXIT") + self._packetReader.doExit() + # Clear method references to avoid uncollectable cyclic references + self.clearCallbacks() + self._devices.clearCallbacks() + + def _startFollowing(self, device, followOnlyAdvertisements = False, followOnlyLegacy = False, followCoded = False): + self._devices.setFollowed(device) + logging.info("Sniffing device " + str(self._devices.index(device)) + ' - "'+device.name+'"') + self._packetReader.sendFollow(device.address, followOnlyAdvertisements, followOnlyLegacy, followCoded) + self._setState(STATE_FOLLOWING) + + def _clearDevices(self): + self._devices.clear() + + def _appendPacket(self, packet): + with self._packetListLock: + if len(self._packets) > 100000: + self._packets = self._packets[20000:] + self._packets.append(packet) + + def _getPackets(self, number = -1): + with self._packetListLock: + returnList = self._packets[0:number] + self._packets = self._packets[number:] + return returnList + + def _clearPackets(self): + with self._packetListLock: + del self._packets[:] diff --git a/modules/wireshark/extcap/SnifferAPI/Types.py b/modules/wireshark/extcap/SnifferAPI/Types.py new file mode 100644 index 0000000..d8a9b1e --- /dev/null +++ b/modules/wireshark/extcap/SnifferAPI/Types.py @@ -0,0 +1,90 @@ +# Copyright (c) Nordic Semiconductor ASA +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form, except as embedded into a Nordic +# Semiconductor ASA integrated circuit in a product or a software update for +# such product, must reproduce the above copyright notice, this list of +# conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of Nordic Semiconductor ASA nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# 4. This software, with or without modification, must only be used with a +# Nordic Semiconductor ASA integrated circuit. +# +# 5. Any software provided in binary form under this license must not be reverse +# engineered, decompiled, modified and/or disassembled. +# +# THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +SLIP_START = 0xAB +SLIP_END = 0xBC +SLIP_ESC = 0xCD +SLIP_ESC_START = SLIP_START + 1 +SLIP_ESC_END = SLIP_END + 1 +SLIP_ESC_ESC = SLIP_ESC + 1 + +PROTOVER_V3 = 3 +PROTOVER_V2 = 2 +PROTOVER_V1 = 1 + +# UART protocol packet codes (see sniffer_uart_protocol.pdf) +REQ_FOLLOW = 0x00 +EVENT_FOLLOW = 0x01 +EVENT_PACKET_ADV_PDU = 0x02 +EVENT_CONNECT = 0x05 +EVENT_PACKET_DATA_PDU = 0x06 +REQ_SCAN_CONT = 0x07 +EVENT_DISCONNECT = 0x09 +SET_TEMPORARY_KEY = 0x0C +PING_REQ = 0x0D +PING_RESP = 0x0E +SWITCH_BAUD_RATE_REQ = 0x13 +SWITCH_BAUD_RATE_RESP = 0x14 +SET_ADV_CHANNEL_HOP_SEQ = 0x17 +SET_PRIVATE_KEY = 0x18 +SET_LEGACY_LONG_TERM_KEY = 0x19 +SET_SC_LONG_TERM_KEY = 0x1A +REQ_VERSION = 0x1B +RESP_VERSION = 0x1C +REQ_TIMESTAMP = 0x1D +RESP_TIMESTAMP = 0x1E +SET_IDENTITY_RESOLVING_KEY= 0x1F +GO_IDLE = 0xFE + +PACKET_TYPE_UNKNOWN = 0x00 +PACKET_TYPE_ADVERTISING = 0x01 +PACKET_TYPE_DATA = 0x02 + +ADV_TYPE_ADV_IND = 0x0 +ADV_TYPE_ADV_DIRECT_IND = 0x1 +ADV_TYPE_ADV_NONCONN_IND = 0x2 +ADV_TYPE_ADV_SCAN_IND = 0x6 +ADV_TYPE_SCAN_REQ = 0x3 +ADV_TYPE_SCAN_RSP = 0x4 +ADV_TYPE_CONNECT_REQ = 0x5 +ADV_TYPE_ADV_EXT_IND = 0x7 + +PHY_1M = 0 +PHY_2M = 1 +PHY_CODED = 2 + +PHY_CODED_CI_S8 = 0 +PHY_CODED_CI_S2 = 1 diff --git a/modules/wireshark/extcap/SnifferAPI/UART.py b/modules/wireshark/extcap/SnifferAPI/UART.py new file mode 100644 index 0000000..76038f6 --- /dev/null +++ b/modules/wireshark/extcap/SnifferAPI/UART.py @@ -0,0 +1,233 @@ +# Copyright (c) Nordic Semiconductor ASA +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form, except as embedded into a Nordic +# Semiconductor ASA integrated circuit in a product or a software update for +# such product, must reproduce the above copyright notice, this list of +# conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of Nordic Semiconductor ASA nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# 4. This software, with or without modification, must only be used with a +# Nordic Semiconductor ASA integrated circuit. +# +# 5. Any software provided in binary form under this license must not be reverse +# engineered, decompiled, modified and/or disassembled. +# +# THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import collections +import logging +import serial +from threading import Thread, Event + +import serial.tools.list_ports as list_ports + +from . import Exceptions +from . import Packet +from . import Filelock + +import os +if os.name == "posix": + import termios + +SNIFFER_OLD_DEFAULT_BAUDRATE = 460800 +# Baudrates that should be tried (add more if required) +SNIFFER_BAUDRATES = [1000000, 460800] + + +def find_sniffer(write_data=False): + open_ports = list_ports.comports() + + sniffers = [] + for port in [x.device for x in open_ports]: + for rate in SNIFFER_BAUDRATES: + reader = None + l_errors = [serial.SerialException, ValueError, Exceptions.LockedException, OSError] + if os.name == 'posix': + l_errors.append(termios.error) + try: + reader = Packet.PacketReader(portnum=port, baudrate=rate) + try: + if write_data: + reader.sendPingReq() + _ = reader.decodeFromSLIP(0.1, complete_timeout=0.1) + else: + _ = reader.decodeFromSLIP(0.3, complete_timeout=0.3) + + # FIXME: Should add the baud rate here, but that will be a breaking change + sniffers.append(port) + break + except (Exceptions.SnifferTimeout, Exceptions.UARTPacketError): + pass + except tuple(l_errors): + continue + finally: + if reader is not None: + reader.doExit() + return sniffers + + +def find_sniffer_baudrates(port, write_data=False): + for rate in SNIFFER_BAUDRATES: + reader = None + try: + reader = Packet.PacketReader(portnum=port, baudrate=rate) + try: + if write_data: + reader.sendPingReq() + _ = reader.decodeFromSLIP(0.1, complete_timeout=0.1) + else: + _ = reader.decodeFromSLIP(0.3, complete_timeout=0.3) + + # TODO: possibly include additional rates based on protocol version + return {"default": rate, "other": []} + except (Exceptions.SnifferTimeout, Exceptions.UARTPacketError): + pass + finally: + if reader is not None: + reader.doExit() + return None + + +class Uart: + def __init__(self, portnum=None, baudrate=None): + self.ser = None + try: + if baudrate is not None and baudrate not in SNIFFER_BAUDRATES: + raise Exception("Invalid baudrate: " + str(baudrate)) + + logging.info('Opening serial port {}'.format(portnum)) + + self.portnum = portnum + if self.portnum: + Filelock.lock(portnum) + + self.ser = serial.Serial( + port=portnum, + baudrate=9600, + rtscts=True, + exclusive=True + ) + self.ser.baudrate = baudrate + + except Exception: + if self.ser: + self.ser.close() + self.ser = None + raise + + self.read_queue = collections.deque() + self.read_queue_has_data = Event() + + self.worker_thread = Thread(target=self._read_worker) + self.reading = True + self.worker_thread.setDaemon(True) + self.worker_thread.start() + + def _read_worker(self): + self.ser.reset_input_buffer() + while self.reading: + try: + # Read any data available, or wait for at least one byte + data_read = self.ser.read(self.ser.in_waiting or 1) + #logging.info('type: {}'.format(data_read.__class__)) + self._read_queue_extend(data_read) + except serial.SerialException as e: + logging.info("Unable to read UART: %s" % e) + self.reading = False + return + + def close(self): + if self.ser: + logging.info("closing UART") + self.reading = False + # Wake any threads waiting on the queue + self.read_queue_has_data.set() + if hasattr(self.ser, "cancel_read"): + self.ser.cancel_read() + self.worker_thread.join() + self.ser.close() + else: + self.ser.close() + self.worker_thread.join() + self.ser = None + + if self.portnum: + Filelock.unlock(self.portnum) + + def __del__(self): + self.close() + + def switchBaudRate(self, newBaudRate): + self.ser.baudrate = newBaudRate + + def readByte(self, timeout=None): + r = self._read_queue_get(timeout) + return r + + def writeList(self, array): + try: + self.ser.write(array) + except serial.SerialTimeoutException: + logging.info("Got write timeout, ignoring error") + + except serial.SerialException as e: + self.ser.close() + raise e + + def _read_queue_extend(self, data): + if len(data) > 0: + self.read_queue.extend(data) + self.read_queue_has_data.set() + + def _read_queue_get(self, timeout=None): + data = None + if self.read_queue_has_data.wait(timeout): + self.read_queue_has_data.clear() + try: + data = self.read_queue.popleft() + except IndexError: + # This will happen when the class is destroyed + return None + if len(self.read_queue) > 0: + self.read_queue_has_data.set() + return data + + +def list_serial_ports(): + # Scan for available ports. + return list_ports.comports() + +if __name__ == "__main__": + import time + t_start = time.time() + s = find_sniffer() + tn = time.time() + print(s) + print("find_sniffer took %f seconds" % (tn - t_start)) + for p in s: + t = time.time() + print(find_sniffer_baudrates(p)) + tn = time.time() + print("find_sniffer_baudrate took %f seconds" % (tn - t)) + tn = time.time() + print("total runtime %f" % (tn - t_start)) diff --git a/modules/wireshark/extcap/SnifferAPI/__init__.py b/modules/wireshark/extcap/SnifferAPI/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/modules/wireshark/extcap/SnifferAPI/version.py b/modules/wireshark/extcap/SnifferAPI/version.py new file mode 100644 index 0000000..75cccf5 --- /dev/null +++ b/modules/wireshark/extcap/SnifferAPI/version.py @@ -0,0 +1,38 @@ +# Copyright (c) Nordic Semiconductor ASA +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form, except as embedded into a Nordic +# Semiconductor ASA integrated circuit in a product or a software update for +# such product, must reproduce the above copyright notice, this list of +# conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of Nordic Semiconductor ASA nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# 4. This software, with or without modification, must only be used with a +# Nordic Semiconductor ASA integrated circuit. +# +# 5. Any software provided in binary form under this license must not be reverse +# engineered, decompiled, modified and/or disassembled. +# +# THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +VERSION_STRING = "4.1.1" + diff --git a/modules/wireshark/extcap/nrf_sniffer_ble.py b/modules/wireshark/extcap/nrf_sniffer_ble.py new file mode 100644 index 0000000..f8212a1 --- /dev/null +++ b/modules/wireshark/extcap/nrf_sniffer_ble.py @@ -0,0 +1,854 @@ +#!/usr/bin/env python3 + +# Copyright (c) Nordic Semiconductor ASA +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form, except as embedded into a Nordic +# Semiconductor ASA integrated circuit in a product or a software update for +# such product, must reproduce the above copyright notice, this list of +# conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of Nordic Semiconductor ASA nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# 4. This software, with or without modification, must only be used with a +# Nordic Semiconductor ASA integrated circuit. +# +# 5. Any software provided in binary form under this license must not be reverse +# engineered, decompiled, modified and/or disassembled. +# +# THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +""" +Wireshark extcap wrapper for the nRF Sniffer for Bluetooth LE by Nordic Semiconductor. +""" + +import os +import sys +import argparse +import re +import time +import struct +import logging + +from SnifferAPI import Logger +try: + import serial +except ImportError: + Logger.initLogger() + logging.error(f'pyserial not found, please run: "{sys.executable} -m pip install -r requirements.txt" and retry') + sys.exit(f'pyserial not found, please run: "{sys.executable} -m pip install -r requirements.txt" and retry') + +from SnifferAPI import Sniffer, UART, Devices, Pcap, Exceptions + +ERROR_USAGE = 0 +ERROR_ARG = 1 +ERROR_INTERFACE = 2 +ERROR_FIFO = 3 +ERROR_INTERNAL = 4 + +CTRL_CMD_INIT = 0 +CTRL_CMD_SET = 1 +CTRL_CMD_ADD = 2 +CTRL_CMD_REMOVE = 3 +CTRL_CMD_ENABLE = 4 +CTRL_CMD_DISABLE = 5 +CTRL_CMD_STATUSBAR = 6 +CTRL_CMD_INFO_MSG = 7 +CTRL_CMD_WARN_MSG = 8 +CTRL_CMD_ERROR_MSG = 9 + +CTRL_ARG_DEVICE = 0 +CTRL_ARG_KEY_TYPE = 1 +CTRL_ARG_KEY_VAL = 2 +CTRL_ARG_ADVHOP = 3 +CTRL_ARG_HELP = 4 +CTRL_ARG_RESTORE = 5 +CTRL_ARG_LOG = 6 +CTRL_ARG_DEVICE_CLEAR = 7 +CTRL_ARG_NONE = 255 + +CTRL_KEY_TYPE_PASSKEY = 0 +CTRL_KEY_TYPE_OOB = 1 +CTRL_KEY_TYPE_LEGACY_LTK = 2 +CTRL_KEY_TYPE_SC_LTK = 3 +CTRL_KEY_TYPE_DH_PRIVATE_KEY = 4 +CTRL_KEY_TYPE_IRK = 5 +CTRL_KEY_TYPE_ADD_ADDR = 6 +CTRL_KEY_TYPE_FOLLOW_ADDR = 7 + +fn_capture = None +fn_ctrl_in = None +fn_ctrl_out = None + +extcap_log_handler = None +extcap_version = None + +# Wireshark nRF Sniffer for Bluetooth LE Toolbar will always cache the last used key and adv hop and send +# this when starting a capture. To ensure that the key and adv hop is always shown correctly +# in the Toolbar, even if the user has changed it but not applied it, we send the last used +# key and adv hop back as a default value. +last_used_key_type = CTRL_KEY_TYPE_PASSKEY +last_used_key_val = "" +last_used_advhop = "37,38,39" + +zero_addr = "[00,00,00,00,00,00,0]" + +# While searching for a selected Device we must not write packets to the pipe until +# the device is found to avoid getting advertising packets from other devices. +write_new_packets = False + +# The RSSI capture filter value given from Wireshark. +rssi_filter = 0 + +# The RSSI filtering is not on when in follow mode. +in_follow_mode = False + +# nRF Sniffer for Bluetooth LE interface option to only capture advertising packets +capture_only_advertising = False +capture_only_legacy_advertising = False +capture_scan_response = True +capture_scan_aux_pointer = True +capture_coded = False + +def extcap_config(interface): + """List configuration for the given interface""" + print("arg {number=0}{call=--only-advertising}{display=Only advertising packets}" + "{tooltip=The sniffer will only capture advertising packets from the selected device}{type=boolflag}{save=true}") + print("arg {number=1}{call=--only-legacy-advertising}{display=Only legacy advertising packets}" + "{tooltip=The sniffer will only capture legacy advertising packets from the selected device}{type=boolflag}{save=true}") + print("arg {number=2}{call=--scan-follow-rsp}{display=Find scan response data}" + "{tooltip=The sniffer will follow scan requests and scan responses in scan mode}{type=boolflag}{default=true}{save=true}") + print("arg {number=3}{call=--scan-follow-aux}{display=Find auxiliary pointer data}" + "{tooltip=The sniffer will follow aux pointers in scan mode}{type=boolflag}{default=true}{save=true}") + print("arg {number=3}{call=--coded}{display=Scan and follow devices on LE Coded PHY}" + "{tooltip=Scan for devices and follow advertiser on LE Coded PHY}{type=boolflag}{default=false}{save=true}") + +def extcap_dlts(interface): + """List DLTs for the given interface""" + print("dlt {number=272}{name=NORDIC_BLE}{display=nRF Sniffer for Bluetooth LE}") + + +def get_baud_rates(interface): + if not hasattr(serial, "__version__") or not serial.__version__.startswith('3.'): + raise RuntimeError("Too old version of python 'serial' Library. Version 3 required.") + return UART.find_sniffer_baudrates(interface) + + +def get_interfaces(): + if not hasattr(serial, "__version__") or not serial.__version__.startswith('3.'): + raise RuntimeError("Too old version of python 'serial' Library. Version 3 required.") + + devices = UART.find_sniffer() + return devices + + +def extcap_interfaces(): + """List available interfaces to capture from""" + print("extcap {version=%s}{display=nRF Sniffer for Bluetooth LE}" + "{help=https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Sniffer-for-Bluetooth-LE}" + % Sniffer.VERSION_STRING) + + for interface_port in get_interfaces(): + if sys.platform == 'win32': + print("interface {value=%s-%s}{display=nRF Sniffer for Bluetooth LE %s}" % (interface_port, extcap_version, interface_port)) + else: + print("interface {value=%s-%s}{display=nRF Sniffer for Bluetooth LE}" % (interface_port, extcap_version)) + + print("control {number=%d}{type=selector}{display=Device}{tooltip=Device list}" % CTRL_ARG_DEVICE) + print("control {number=%d}{type=selector}{display=Key}{tooltip=}" % CTRL_ARG_KEY_TYPE) + print("control {number=%d}{type=string}{display=Value}" + "{tooltip=6 digit passkey or 16 or 32 bytes encryption key in hexadecimal starting with '0x', big endian format." + "If the entered key is shorter than 16 or 32 bytes, it will be zero-padded in front'}" + "{validation=\\b^(([0-9]{6})|(0x[0-9a-fA-F]{1,64})|([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2}) (public|random))$\\b}" % CTRL_ARG_KEY_VAL) + print("control {number=%d}{type=string}{display=Adv Hop}" + "{default=37,38,39}" + "{tooltip=Advertising channel hop sequence. " + "Change the order in which the sniffer switches advertising channels. " + "Valid channels are 37, 38 and 39 separated by comma.}" + r"{validation=^\s*((37|38|39)\s*,\s*){0,2}(37|38|39){1}\s*$}{required=true}" % CTRL_ARG_ADVHOP) + print("control {number=%d}{type=button}{display=Clear}{tooltop=Clear or remove device from Device list}" % CTRL_ARG_DEVICE_CLEAR) + print("control {number=%d}{type=button}{role=help}{display=Help}{tooltip=Access user guide (launches browser)}" % CTRL_ARG_HELP) + print("control {number=%d}{type=button}{role=restore}{display=Defaults}{tooltip=Resets the user interface and clears the log file}" % CTRL_ARG_RESTORE) + print("control {number=%d}{type=button}{role=logger}{display=Log}{tooltip=Log per interface}" % CTRL_ARG_LOG) + + print("value {control=%d}{value= }{display=All advertising devices}{default=true}" % CTRL_ARG_DEVICE) + print("value {control=%d}{value=%s}{display=Follow IRK}" % (CTRL_ARG_DEVICE, zero_addr)) + + print("value {control=%d}{value=%d}{display=Legacy Passkey}{default=true}" % (CTRL_ARG_KEY_TYPE, CTRL_KEY_TYPE_PASSKEY)) + print("value {control=%d}{value=%d}{display=Legacy OOB data}" % (CTRL_ARG_KEY_TYPE, CTRL_KEY_TYPE_OOB)) + print("value {control=%d}{value=%d}{display=Legacy LTK}" % (CTRL_ARG_KEY_TYPE, CTRL_KEY_TYPE_LEGACY_LTK)) + print("value {control=%d}{value=%d}{display=SC LTK}" % (CTRL_ARG_KEY_TYPE, CTRL_KEY_TYPE_SC_LTK)) + print("value {control=%d}{value=%d}{display=SC Private Key}" % (CTRL_ARG_KEY_TYPE, CTRL_KEY_TYPE_DH_PRIVATE_KEY)) + print("value {control=%d}{value=%d}{display=IRK}" % (CTRL_ARG_KEY_TYPE, CTRL_KEY_TYPE_IRK)) + print("value {control=%d}{value=%d}{display=Add LE address}" % (CTRL_ARG_KEY_TYPE, CTRL_KEY_TYPE_ADD_ADDR)) + print("value {control=%d}{value=%d}{display=Follow LE address}" % (CTRL_ARG_KEY_TYPE, CTRL_KEY_TYPE_FOLLOW_ADDR)) + + +def string_address(address): + """Make a string representation of the address""" + if len(address) < 7: + return None + + addr_string = '' + + for i in range(5): + addr_string += (format(address[i], '02x') + ':') + addr_string += format(address[5], '02x') + ' ' + + if address[6]: + addr_string += ' random ' + else: + addr_string += ' public ' + + return addr_string + + +def control_read(): + """Read a message from the control channel""" + header = fn_ctrl_in.read(6) + if not header: + # Ref. https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects: + # > If the end of the file has been reached, f.read() will return an + # > empty string ('') + return None, None, None + + _, _, length, arg, typ = struct.unpack('>sBHBB', header) + + payload = bytearray() + if length > 2: + payload = fn_ctrl_in.read(length - 2) + + return arg, typ, payload + +def control_write(arg, typ, message): + """Write the message to the control channel""" + + if not fn_ctrl_out: + # No control out has been opened + return + + packet = bytearray() + packet += struct.pack('>BBHBB', ord('T'), 0, len(message) + 2, arg, typ) + packet += message.encode('utf-8') + + fn_ctrl_out.write(packet) + + +def capture_write(message): + """Write the message to the capture pipe""" + fn_capture.write(message) + fn_capture.flush() + + +def new_packet(notification): + """A new Bluetooth LE packet has arrived""" + if write_new_packets == True: + packet = notification.msg["packet"] + + if rssi_filter == 0 or in_follow_mode == True or packet.RSSI > rssi_filter: + p = bytes([packet.boardId] + packet.getList()) + capture_write(Pcap.create_packet(p, packet.time)) + + +def device_added(notification): + """A device is added or updated""" + device = notification.msg + + # Only add devices matching RSSI filter + if rssi_filter == 0 or device.RSSI > rssi_filter: + # Extcap selector uses \0 character to separate value and display value, + # therefore the display value cannot contain the \0 character as this + # would lead to truncation of the display value. + display = (device.name.replace('\0', '\\0') + + (" " + str(device.RSSI) + " dBm " if device.RSSI != 0 else " ") + + string_address(device.address)) + + message = str(device.address) + '\0' + display + + control_write(CTRL_ARG_DEVICE, CTRL_CMD_ADD, message) + + +def device_removed(notification): + """A device is removed""" + device = notification.msg + display = device.name + " " + string_address(device.address) + + message = "" + message += str(device.address) + + control_write(CTRL_ARG_DEVICE, CTRL_CMD_REMOVE, message) + logging.info("Removed: " + display) + +def devices_cleared(notification): + """Devices have been cleared""" + message = "" + control_write(CTRL_ARG_DEVICE, CTRL_CMD_REMOVE, message) + + control_write(CTRL_ARG_DEVICE, CTRL_CMD_ADD, " " + '\0' + "All advertising devices") + control_write(CTRL_ARG_DEVICE, CTRL_CMD_ADD, zero_addr + '\0' + "Follow IRK") + control_write(CTRL_ARG_DEVICE, CTRL_CMD_SET, " ") + +def handle_control_command(sniffer, arg, typ, payload): + """Handle command from control channel""" + global last_used_key_type + + if arg == CTRL_ARG_DEVICE: + if payload == b' ': + scan_for_devices(sniffer) + else: + values = payload + values = values.replace(b'[', b'') + values = values.replace(b']', b'') + device_address = values.split(b',') + + logging.info('follow_device: {}'.format(device_address)) + for i in range(6): + device_address[i] = int(device_address[i]) + + device_address[6] = 1 if device_address[6] == b' 1' else 0 + + device = Devices.Device(address=device_address, name='""', RSSI=0) + + follow_device(sniffer, device) + + elif arg == CTRL_ARG_DEVICE_CLEAR: + clear_devices(sniffer) + elif arg == CTRL_ARG_KEY_TYPE: + last_used_key_type = int(payload.decode('utf-8')) + elif arg == CTRL_ARG_KEY_VAL: + set_key_value(sniffer, payload) + elif arg == CTRL_ARG_ADVHOP: + set_advhop(sniffer, payload) + + +def control_read_initial_values(sniffer): + """Read initial control values""" + initialized = False + + while not initialized: + arg, typ, payload = control_read() + if typ == CTRL_CMD_INIT: + initialized = True + else: + handle_control_command(sniffer, arg, typ, payload) + + +def control_write_defaults(): + """Write default control values""" + control_write(CTRL_ARG_KEY_TYPE, CTRL_CMD_SET, str(last_used_key_type)) + control_write(CTRL_ARG_KEY_VAL, CTRL_CMD_SET, last_used_key_val) + control_write(CTRL_ARG_ADVHOP, CTRL_CMD_SET, last_used_advhop) + + +def scan_for_devices(sniffer): + """Start scanning for advertising devices""" + global in_follow_mode + if sniffer.state == 2: + log = "Scanning all advertising devices" + logging.info(log) + sniffer.scan(capture_scan_response, capture_scan_aux_pointer, capture_coded) + + in_follow_mode = False + + +def clear_devices(sniffer): + """Clear the advertising devices list""" + global in_follow_mode + + sniffer.clearDevices() + scan_for_devices(sniffer) + + in_follow_mode = False + + +def follow_device(sniffer, device): + """Follow the selected device""" + global write_new_packets, in_follow_mode + + sniffer.follow(device, capture_only_advertising, capture_only_legacy_advertising, capture_coded) + time.sleep(.1) + + in_follow_mode = True + logging.info("Following " + string_address(device.address)) + + +def set_key_value(sniffer, payload): + """Send key value to device""" + global last_used_key_val + + payload = payload.decode('utf-8') + last_used_key_val = payload + + if (last_used_key_type == CTRL_KEY_TYPE_PASSKEY): + if re.match("^[0-9]{6}$", payload): + set_passkey(sniffer, payload) + else: + logging.info("Invalid key value: " + str(payload)) + elif (last_used_key_type == CTRL_KEY_TYPE_OOB): + if re.match("^0[xX][0-9A-Za-z]{1,32}$", payload): + set_OOB(sniffer, payload[2:]) + else: + logging.info("Invalid key value: " + str(payload)) + elif (last_used_key_type == CTRL_KEY_TYPE_DH_PRIVATE_KEY): + if (re.match("^0[xX][0-9A-Za-z]{1,64}$", payload)): + set_dh_private_key(sniffer, payload[2:]) + else: + logging.info("Invalid key value: " + str(payload)) + elif (last_used_key_type == CTRL_KEY_TYPE_LEGACY_LTK): + if (re.match("^0[xX][0-9A-Za-z]{1,32}$", payload)): + set_legacy_ltk(sniffer, payload[2:]) + else: + logging.info("Invalid key value: " + str(payload)) + elif (last_used_key_type == CTRL_KEY_TYPE_SC_LTK): + if (re.match("^0[xX][0-9A-Za-z]{1,32}$", payload)): + set_sc_ltk(sniffer, payload[2:]) + else: + logging.info("Invalid key value: " + str(payload)) + elif (last_used_key_type == CTRL_KEY_TYPE_IRK): + if (re.match("^0[xX][0-9A-Za-z]{1,32}$", payload)): + set_irk(sniffer, payload[2:]) + else: + logging.info("Invalid key value: " + str(payload)) + elif (last_used_key_type == CTRL_KEY_TYPE_ADD_ADDR): + if (re.match("^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2}) (public|random)$", payload)): + add_address(sniffer, payload) + else: + logging.info("Invalid key value: " + str(payload)) + elif (last_used_key_type == CTRL_KEY_TYPE_FOLLOW_ADDR): + if (re.match("^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2}) (public|random)$", payload)): + follow_address(sniffer, payload) + else: + logging.info("Invalid key value: " + str(payload)) + else: + logging.info("Invalid key type: " + str(last_used_key_type)) + +def parse_hex(value): + if len(value) % 2 != 0: + value = '0' + value + + a = list(value) + return [int(x + y, 16) for x,y in zip(a[::2], a[1::2])] + +def set_passkey(sniffer, payload): + """Send passkey to device""" + passkey = [] + logging.info("Setting Passkey: " + payload) + init_payload = int(payload, 10) + if len(payload) >= 6: + passkey = [] + passkey += [(init_payload >> 16) & 0xFF] + passkey += [(init_payload >> 8) & 0xFF] + passkey += [(init_payload >> 0) & 0xFF] + + sniffer.sendTK(passkey) + +def set_OOB(sniffer, payload): + """Send OOB to device""" + logging.info("Setting OOB data: " + payload) + sniffer.sendTK(parse_hex(payload)) + +def set_dh_private_key(sniffer, payload): + """Send Diffie-Hellman private key to device""" + logging.info("Setting DH private key: " + payload) + sniffer.sendPrivateKey(parse_hex(payload)) + +def set_legacy_ltk(sniffer, payload): + """Send Legacy Long Term Key (LTK) to device""" + logging.info("Setting Legacy LTK: " + payload) + sniffer.sendLegacyLTK(parse_hex(payload)) + +def set_sc_ltk(sniffer, payload): + """Send LE secure connections Long Term Key (LTK) to device""" + logging.info("Setting SC LTK: " + payload) + sniffer.sendSCLTK(parse_hex(payload)) + +def set_irk(sniffer, payload): + """Send Identity Resolving Key (IRK) to device""" + logging.info("Setting IRK: " + payload) + sniffer.sendIRK(parse_hex(payload)) + +def add_address(sniffer, payload): + """Add LE address to device list""" + logging.info("Adding LE address: " + payload) + + (addr,addr_type) = payload.split(' ') + device = [int(a, 16) for a in addr.split(":")] + + device.append(1 if addr_type == "random" else 0) + + new_device = Devices.Device(address=device, name='""', RSSI=0) + sniffer.addDevice(new_device) + +def follow_address(sniffer, payload): + """Add LE address to device list""" + logging.info("Adding LE address: " + payload) + + (addr,addr_type) = payload.split(' ') + device = [int(a, 16) for a in addr.split(":")] + + device.append(1 if addr_type == "random" else 0) + + new_device = Devices.Device(address=device, name='""', RSSI=0) + sniffer.addDevice(new_device) + + control_write(CTRL_ARG_DEVICE, CTRL_CMD_SET, f"{new_device.address}") + follow_device(sniffer, new_device) + +def set_advhop(sniffer, payload): + """Set advertising channel hop sequence""" + global last_used_advhop + + payload = payload.decode('utf-8') + + last_used_advhop = payload + + hops = [int(channel) for channel in payload.split(',')] + + sniffer.setAdvHopSequence(hops) + + log = "AdvHopSequence: " + str(hops) + logging.info(log) + + +def control_loop(sniffer): + """Main loop reading control messages""" + arg_read = CTRL_ARG_NONE + while arg_read is not None: + arg_read, typ, payload = control_read() + handle_control_command(sniffer, arg_read, typ, payload) + + +def error_interface_not_found(interface, fifo): + log = "nRF Sniffer for Bluetooth LE could not find interface: " + interface + control_write(CTRL_ARG_NONE, CTRL_CMD_ERROR_MSG, log) + extcap_close_fifo(fifo) + sys.exit(ERROR_INTERFACE) + + +def validate_interface(interface, fifo): + """Check if interface exists""" + if sys.platform != 'win32' and not os.path.exists(interface): + error_interface_not_found(interface, fifo) + + +def get_default_baudrate(interface, fifo): + """Return the baud rate that interface is running at, or exit if the board is not found""" + rates = get_baud_rates(interface) + if rates is None: + error_interface_not_found(interface, fifo) + return rates["default"] + +def get_supported_protocol_version(extcap_version): + """Return the maximum supported Packet Protocol Version""" + if extcap_version == 'None': + return 2 + + (major, minor) = extcap_version.split('.') + + major = int(major) + minor = int(minor) + + if major > 3 or (major == 3 and minor >= 4): + return 3 + else: + return 2 + +def setup_extcap_log_handler(): + """Add the a handler that emits log messages through the extcap control out channel""" + global extcap_log_handler + extcap_log_handler = ExtcapLoggerHandler() + Logger.addLogHandler(extcap_log_handler) + control_write(CTRL_ARG_LOG, CTRL_CMD_SET, "") + + +def teardown_extcap_log_handler(): + """Remove and reset the extcap log handler""" + global extcap_log_handler + if extcap_log_handler: + Logger.removeLogHandler(extcap_log_handler) + extcap_log_handler = None + + +def sniffer_capture(interface, baudrate, fifo, control_in, control_out): + """Start the sniffer to capture packets""" + global fn_capture, fn_ctrl_in, fn_ctrl_out, write_new_packets, extcap_log_handler + + try: + fn_capture = open(fifo, 'wb', 0) + + if control_out is not None: + fn_ctrl_out = open(control_out, 'wb', 0) + setup_extcap_log_handler() + + if control_in is not None: + fn_ctrl_in = open(control_in, 'rb', 0) + + logging.info("Log started at %s", time.strftime("%c")) + + interface, extcap_version = interface.split('-') + logging.info("Extcap version %s", str(extcap_version)) + + capture_write(Pcap.get_global_header()) + validate_interface(interface, fifo) + if baudrate is None: + baudrate = get_default_baudrate(interface, fifo) + + sniffer = Sniffer.Sniffer(interface, baudrate) + sniffer.subscribe("NEW_BLE_PACKET", new_packet) + sniffer.subscribe("DEVICE_ADDED", device_added) + sniffer.subscribe("DEVICE_UPDATED", device_added) + sniffer.subscribe("DEVICE_REMOVED", device_removed) + sniffer.subscribe("DEVICES_CLEARED", devices_cleared) + sniffer.setAdvHopSequence([37, 38, 39]) + sniffer.setSupportedProtocolVersion(get_supported_protocol_version(extcap_version)) + logging.info("Sniffer created") + + logging.info("Software version: %s" % sniffer.swversion) + sniffer.getFirmwareVersion() + sniffer.getTimestamp() + sniffer.start() + logging.info("sniffer started") + sniffer.scan(capture_scan_response, capture_scan_aux_pointer, capture_coded) + logging.info("scanning started") + + if fn_ctrl_in is not None and fn_ctrl_out is not None: + # First read initial control values + control_read_initial_values(sniffer) + + # Then write default values + control_write_defaults() + logging.info("defaults written") + + # Start receiving packets + write_new_packets = True + + # Start the control loop + logging.info("control loop") + control_loop(sniffer) + logging.info("exiting control loop") + + else: + logging.info("") + # Start receiving packets + write_new_packets = True + while True: + # Wait for keyboardinterrupt + pass + + except Exceptions.LockedException as e: + logging.info('{}'.format(e.message)) + + except OSError: + # We'll get OSError=22 when/if wireshark kills the pipe(s) on capture + # stop. + pass + + finally: + # The first thing we should do is to tear down the extcap log handler. + # This might already have triggered an OSError, or we will trigger one + # by attempting to log at this point. + teardown_extcap_log_handler() + + # Safe to use logging again. + logging.info("Tearing down") + + sniffer.doExit() + if fn_capture is not None and not fn_capture.closed: + fn_capture.close() + + if fn_ctrl_in is not None and not fn_ctrl_in.closed: + fn_ctrl_in.close() + + if fn_ctrl_out is not None and not fn_ctrl_out.closed: + fn_ctrl_out.close() + + fn_capture = None + fn_ctrl_out = None + fn_ctrl_in = None + + logging.info("Exiting") + + +def extcap_close_fifo(fifo): + """"Close extcap fifo""" + if not os.path.exists(fifo): + print("FIFO does not exist!", file=sys.stderr) + return + + # This is apparently needed to workaround an issue on Windows/macOS + # where the message cannot be read. (really?) + fh = open(fifo, 'wb', 0) + fh.close() + + +class ExtcapLoggerHandler(logging.Handler): + """Handler used to display all logging messages in extcap""" + + def emit(self, record): + """Send log message to extcap""" + message = record.message.replace('\0', '\\0') + log_message = f"{record.levelname}: {message}\n" + control_write(CTRL_ARG_LOG, CTRL_CMD_ADD, log_message) + + +def parse_capture_filter(capture_filter): + """"Parse given capture filter""" + global rssi_filter + m = re.search(r"^\s*rssi\s*(>=?)\s*(-?[0-9]+)\s*$", capture_filter, re.IGNORECASE) + if m: + rssi_filter = int(m.group(2)) + if rssi_filter > -10 or rssi_filter < -256: + print("Illegal RSSI value, must be between -10 and -256") + # Handle >= by modifying the threshold, since comparisons are always done with + # the > operator + if m.group(1) == '>=': + rssi_filter = rssi_filter - 1 + else: + print("Filter syntax: \"RSSI >= -value\"") + +import atexit + +@atexit.register +def goodbye(): + logging.info("Exiting PID {}".format(os.getpid())) + + +if __name__ == '__main__': + + # Capture options + parser = argparse.ArgumentParser(description="Nordic Semiconductor nRF Sniffer for Bluetooth LE extcap plugin") + + # Extcap Arguments + parser.add_argument("--capture", + help="Start the capture", + action="store_true") + + parser.add_argument("--extcap-interfaces", + help="List available interfaces to capture from", + action="store_true") + + parser.add_argument("--extcap-interface", + help="The interface to capture from") + + parser.add_argument("--extcap-dlts", + help="List DLTs for the given interface", + action="store_true") + + parser.add_argument("--extcap-config", + help="List configurations for the given interface", + action="store_true") + + parser.add_argument("--extcap-capture-filter", + help="Used together with capture to provide a capture filter") + + parser.add_argument("--fifo", + help="Use together with capture to provide the fifo to dump data to") + + parser.add_argument("--extcap-control-in", + help="Used together with capture to get control messages from toolbar") + + parser.add_argument("--extcap-control-out", + help="Used together with capture to send control messages to toolbar") + + parser.add_argument("--extcap-version", + help="Set extcap supported version") + + # Interface Arguments + parser.add_argument("--device", help="Device", default="") + parser.add_argument("--baudrate", type=int, help="The sniffer baud rate") + parser.add_argument("--only-advertising", help="Only advertising packets", action="store_true") + parser.add_argument("--only-legacy-advertising", help="Only legacy advertising packets", action="store_true") + parser.add_argument("--scan-follow-rsp", help="Find scan response data ", action="store_true") + parser.add_argument("--scan-follow-aux", help="Find auxiliary pointer data", action="store_true") + parser.add_argument("--coded", help="Scan and follow on LE Coded PHY", action="store_true") + + logging.info("Started PID {}".format(os.getpid())) + + try: + args, unknown = parser.parse_known_args() + logging.info(args) + + except argparse.ArgumentError as exc: + print("%s" % exc, file=sys.stderr) + fifo_found = False + fifo = "" + for arg in sys.argv: + if arg == "--fifo" or arg == "--extcap-fifo": + fifo_found = True + elif fifo_found: + fifo = arg + break + extcap_close_fifo(fifo) + sys.exit(ERROR_ARG) + + if len(sys.argv) <= 1: + parser.exit("No arguments given!") + + if args.extcap_version: + extcap_version = args.extcap_version + + if args.extcap_capture_filter: + parse_capture_filter(args.extcap_capture_filter) + if args.extcap_interface and len(sys.argv) == 5: + sys.exit(0) + + if not args.extcap_interfaces and args.extcap_interface is None: + parser.exit("An interface must be provided or the selection must be displayed") + + if args.extcap_interfaces or args.extcap_interface is None: + extcap_interfaces() + sys.exit(0) + + if len(unknown) > 0: + print("Sniffer %d unknown arguments given" % len(unknown)) + logging.info("Sniffer %d unknown arguments given" % len(unknown)) + + interface = args.extcap_interface + + capture_only_advertising = args.only_advertising + capture_only_legacy_advertising = args.only_legacy_advertising + capture_scan_response = args.scan_follow_rsp + capture_scan_aux_pointer = args.scan_follow_aux + capture_coded = args.coded + + if args.extcap_config: + extcap_config(interface) + elif args.extcap_dlts: + extcap_dlts(interface) + elif args.capture: + if args.fifo is None: + parser.print_help() + sys.exit(ERROR_FIFO) + try: + logging.info('sniffer capture') + sniffer_capture(interface, args.baudrate, args.fifo, args.extcap_control_in, args.extcap_control_out) + except KeyboardInterrupt: + pass + except Exception as e: + import traceback + logging.info(traceback.format_exc()) + logging.info('internal error: {}'.format(repr(e))) + sys.exit(ERROR_INTERNAL) + else: + parser.print_help() + sys.exit(ERROR_USAGE) + logging.info('main exit PID {}'.format(os.getpid())) From cc301951fca3034993f374aac8b3505336002dfa Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 11 Nov 2025 19:34:40 +0100 Subject: [PATCH 560/562] Apply black --- .../extcap/SnifferAPI/CaptureFiles.py | 8 +- .../wireshark/extcap/SnifferAPI/Devices.py | 21 +- .../wireshark/extcap/SnifferAPI/Exceptions.py | 6 + .../wireshark/extcap/SnifferAPI/Filelock.py | 26 +- modules/wireshark/extcap/SnifferAPI/Logger.py | 17 +- .../extcap/SnifferAPI/Notifications.py | 18 +- modules/wireshark/extcap/SnifferAPI/Packet.py | 250 ++++++---- modules/wireshark/extcap/SnifferAPI/Pcap.py | 29 +- .../wireshark/extcap/SnifferAPI/Sniffer.py | 42 +- .../extcap/SnifferAPI/SnifferCollector.py | 113 +++-- modules/wireshark/extcap/SnifferAPI/Types.py | 90 ++-- modules/wireshark/extcap/SnifferAPI/UART.py | 21 +- .../wireshark/extcap/SnifferAPI/version.py | 1 - modules/wireshark/extcap/nrf_sniffer_ble.py | 429 ++++++++++++------ 14 files changed, 684 insertions(+), 387 deletions(-) diff --git a/modules/wireshark/extcap/SnifferAPI/CaptureFiles.py b/modules/wireshark/extcap/SnifferAPI/CaptureFiles.py index f5cf6cb..8c218e5 100644 --- a/modules/wireshark/extcap/SnifferAPI/CaptureFiles.py +++ b/modules/wireshark/extcap/SnifferAPI/CaptureFiles.py @@ -59,13 +59,13 @@ class CaptureFileHandler: if not os.path.isdir(os.path.dirname(filename)): os.makedirs(os.path.dirname(filename)) self.filename = filename - self.backupFilename = self.filename+".1" + self.backupFilename = self.filename + ".1" if not os.path.isfile(self.filename): self.startNewFile() elif os.path.getsize(self.filename) > 20000000: self.doRollover() if clear: - #clear file + # clear file self.startNewFile() def startNewFile(self): @@ -86,6 +86,6 @@ class CaptureFileHandler: def writePacket(self, packet): with open(self.filename, "ab") as f: packet = Pcap.create_packet( - bytes([packet.boardId] + packet.getList()), - packet.time) + bytes([packet.boardId] + packet.getList()), packet.time + ) f.write(packet) diff --git a/modules/wireshark/extcap/SnifferAPI/Devices.py b/modules/wireshark/extcap/SnifferAPI/Devices.py index 8ea3c0e..61ac961 100644 --- a/modules/wireshark/extcap/SnifferAPI/Devices.py +++ b/modules/wireshark/extcap/SnifferAPI/Devices.py @@ -39,6 +39,7 @@ from . import Notifications import logging, threading + class DeviceList(Notifications.Notifier): def __init__(self, *args, **kwargs): Notifications.Notifier.__init__(self, *args, **kwargs) @@ -52,7 +53,7 @@ class DeviceList(Notifications.Notifier): return len(self.devices) def __repr__(self): - return "Sniffer Device List: "+str(self.asList()) + return "Sniffer Device List: " + str(self.asList()) def clear(self): logging.info("Clearing") @@ -69,11 +70,15 @@ class DeviceList(Notifications.Notifier): self.append(newDevice) else: updated = False - if (newDevice.name != "\"\"") and (existingDevice.name == "\"\""): + if (newDevice.name != '""') and (existingDevice.name == '""'): existingDevice.name = newDevice.name updated = True - if (newDevice.RSSI != 0 and (existingDevice.RSSI < (newDevice.RSSI - 5)) or (existingDevice.RSSI > (newDevice.RSSI+2))): + if ( + newDevice.RSSI != 0 + and (existingDevice.RSSI < (newDevice.RSSI - 5)) + or (existingDevice.RSSI > (newDevice.RSSI + 2)) + ): existingDevice.RSSI = newDevice.RSSI updated = True @@ -93,14 +98,14 @@ class DeviceList(Notifications.Notifier): return self.devices[id] elif type(id) == str: for dev in self.devices: - if dev.name in [id, '"'+id+'"']: + if dev.name in [id, '"' + id + '"']: return dev elif id.__class__.__name__ == "Device": return self.find(id.address) return None def remove(self, id): - if type(id) == list: #address + if type(id) == list: # address device = self.devices.pop(self.devices.index(self.find(id))) elif type(id) == int: device = self.devices.pop(id) @@ -126,6 +131,7 @@ class DeviceList(Notifications.Notifier): def asList(self): return self.devices[:] + class Device: def __init__(self, address, name, RSSI): self.address = address @@ -134,10 +140,11 @@ class Device: self.followed = False def __repr__(self): - return 'Bluetooth LE device "'+self.name+'" ('+str(self.address)+')' + return 'Bluetooth LE device "' + self.name + '" (' + str(self.address) + ")" + def listToString(list): str = "" for i in list: - str+=chr(i) + str += chr(i) return str diff --git a/modules/wireshark/extcap/SnifferAPI/Exceptions.py b/modules/wireshark/extcap/SnifferAPI/Exceptions.py index f3ab20c..86f356a 100644 --- a/modules/wireshark/extcap/SnifferAPI/Exceptions.py +++ b/modules/wireshark/extcap/SnifferAPI/Exceptions.py @@ -38,23 +38,29 @@ class SnifferTimeout(Exception): pass + class UARTPacketError(Exception): pass + class LockedException(Exception): def __init__(self, message): self.message = message + class InvalidPacketException(Exception): pass + class InvalidAdvChannel(Exception): pass + # Internal Use class SnifferWatchDogTimeout(SnifferTimeout): pass + # Internal Use class ExitCodeException(Exception): pass diff --git a/modules/wireshark/extcap/SnifferAPI/Filelock.py b/modules/wireshark/extcap/SnifferAPI/Filelock.py index 5570942..7bf21b5 100644 --- a/modules/wireshark/extcap/SnifferAPI/Filelock.py +++ b/modules/wireshark/extcap/SnifferAPI/Filelock.py @@ -2,7 +2,7 @@ import os import logging from sys import platform -if platform == 'linux': +if platform == "linux": import psutil from . import Exceptions @@ -16,8 +16,9 @@ from . import Exceptions # HDB UUCP lock file format: # process identifier (PID) as a ten byte ASCII decimal number, with a trailing newline + def lockpid(lockfile): - if (os.path.isfile(lockfile)): + if os.path.isfile(lockfile): with open(lockfile) as fd: lockpid = fd.read() @@ -30,17 +31,13 @@ def lockpid(lockfile): return 0 + def lock(port): - if platform != 'linux': + if platform != "linux": return tty = os.path.basename(port) - lockfile = os.path.join( - '/run', - 'user', - f'{os.getuid()}', - f'{tty}.lock' - ) + lockfile = os.path.join("/run", "user", f"{os.getuid()}", f"{tty}.lock") lockedpid = lockpid(lockfile) if lockedpid: @@ -53,16 +50,17 @@ def lock(port): logging.info("Lockfile is stale. Overriding it..") os.remove(lockfile) - fd = open(lockfile, 'w') - with open(lockfile, 'w') as fd: - fd.write(f'{os.getpid():10}') + fd = open(lockfile, "w") + with open(lockfile, "w") as fd: + fd.write(f"{os.getpid():10}") + def unlock(port): - if platform != 'linux': + if platform != "linux": return tty = os.path.basename(port) - lockfile = f'/var/lock/LCK..{tty}' + lockfile = f"/var/lock/LCK..{tty}" lockedpid = lockpid(lockfile) if lockedpid == os.getpid(): diff --git a/modules/wireshark/extcap/SnifferAPI/Logger.py b/modules/wireshark/extcap/SnifferAPI/Logger.py index cbb1e7c..228a0f1 100644 --- a/modules/wireshark/extcap/SnifferAPI/Logger.py +++ b/modules/wireshark/extcap/SnifferAPI/Logger.py @@ -48,9 +48,11 @@ import logging.handlers as logHandlers # will result in the line being appended to the log file # ################################################################# -appdata = os.getenv('appdata') +appdata = os.getenv("appdata") if appdata: - DEFAULT_LOG_FILE_DIR = os.path.join(appdata, 'Nordic Semiconductor', 'Sniffer', 'logs') + DEFAULT_LOG_FILE_DIR = os.path.join( + appdata, "Nordic Semiconductor", "Sniffer", "logs" + ) else: DEFAULT_LOG_FILE_DIR = "/tmp/logs" @@ -89,8 +91,12 @@ def initLogger(): global logFlusher global logHandlerArray - logHandler = MyRotatingFileHandler(logFileName, mode='a', maxBytes=myMaxBytes, backupCount=3) - logFormatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s', datefmt='%d-%b-%Y %H:%M:%S (%z)') + logHandler = MyRotatingFileHandler( + logFileName, mode="a", maxBytes=myMaxBytes, backupCount=3 + ) + logFormatter = logging.Formatter( + "%(asctime)s %(levelname)s: %(message)s", datefmt="%d-%b-%Y %H:%M:%S (%z)" + ) logHandler.setFormatter(logFormatter) logger = logging.getLogger() logger.addHandler(logHandler) @@ -154,6 +160,7 @@ def addLogHandler(logHandler): logger.setLevel(logging.INFO) logHandlerArray.append(logHandler) + def removeLogHandler(logHandler): global logHandlerArray logger = logging.getLogger() @@ -200,7 +207,7 @@ class LogFlusher(threading.Thread): self.exit.set() -if __name__ == '__main__': +if __name__ == "__main__": initLogger() for i in range(50): logging.info("test log no. " + str(i)) diff --git a/modules/wireshark/extcap/SnifferAPI/Notifications.py b/modules/wireshark/extcap/SnifferAPI/Notifications.py index d9fd8e4..b7cba37 100644 --- a/modules/wireshark/extcap/SnifferAPI/Notifications.py +++ b/modules/wireshark/extcap/SnifferAPI/Notifications.py @@ -37,18 +37,20 @@ import threading, logging -class Notification(): - def __init__(self, key, msg = None): + +class Notification: + def __init__(self, key, msg=None): if type(key) is not str: - raise TypeError("Invalid notification key: "+str(key)) + raise TypeError("Invalid notification key: " + str(key)) self.key = key self.msg = msg def __repr__(self): return "Notification (key: %s, msg: %s)" % (str(self.key), str(self.msg)) -class Notifier(): - def __init__(self, callbacks = [], **kwargs): + +class Notifier: + def __init__(self, callbacks=[], **kwargs): self.callbacks = {} self.callbackLock = threading.RLock() @@ -75,10 +77,10 @@ class Notifier(): self.callbacks[key] = [] return self.callbacks[key] - def notify(self, key = None, msg = None, notification = None): + def notify(self, key=None, msg=None, notification=None): with self.callbackLock: if notification == None: - notification = Notification(key,msg) + notification = Notification(key, msg) for callback in self.getCallbacks(notification.key): callback(notification) @@ -87,4 +89,4 @@ class Notifier(): callback(notification) def passOnNotification(self, notification): - self.notify(notification = notification) + self.notify(notification=notification) diff --git a/modules/wireshark/extcap/SnifferAPI/Packet.py b/modules/wireshark/extcap/SnifferAPI/Packet.py index ddac78d..bc4abd9 100644 --- a/modules/wireshark/extcap/SnifferAPI/Packet.py +++ b/modules/wireshark/extcap/SnifferAPI/Packet.py @@ -43,17 +43,17 @@ ADV_ACCESS_ADDRESS = [0xD6, 0xBE, 0x89, 0x8E] SYNCWORD_POS = 0 PAYLOAD_LEN_POS_V1 = 1 PAYLOAD_LEN_POS = 0 -PROTOVER_POS = PAYLOAD_LEN_POS+2 -PACKETCOUNTER_POS = PROTOVER_POS+1 -ID_POS = PACKETCOUNTER_POS+2 +PROTOVER_POS = PAYLOAD_LEN_POS + 2 +PACKETCOUNTER_POS = PROTOVER_POS + 1 +ID_POS = PACKETCOUNTER_POS + 2 -BLE_HEADER_LEN_POS = ID_POS+1 -FLAGS_POS = BLE_HEADER_LEN_POS+1 -CHANNEL_POS = FLAGS_POS+1 -RSSI_POS = CHANNEL_POS+1 -EVENTCOUNTER_POS = RSSI_POS+1 -TIMESTAMP_POS = EVENTCOUNTER_POS+2 -BLEPACKET_POS = TIMESTAMP_POS+4 +BLE_HEADER_LEN_POS = ID_POS + 1 +FLAGS_POS = BLE_HEADER_LEN_POS + 1 +CHANNEL_POS = FLAGS_POS + 1 +RSSI_POS = CHANNEL_POS + 1 +EVENTCOUNTER_POS = RSSI_POS + 1 +TIMESTAMP_POS = EVENTCOUNTER_POS + 2 +BLEPACKET_POS = TIMESTAMP_POS + 4 TXADD_POS = BLEPACKET_POS + 4 TXADD_MSK = 0x40 PAYLOAD_POS = BLE_HEADER_LEN_POS @@ -109,7 +109,7 @@ class PacketReader(Notifications.Notifier): tempSLIPBuffer.append(SLIP_END) return tempSLIPBuffer - # This function uses getSerialByte() function to get SLIP encoded bytes from the serial port and return a decoded byte list + # This function uses getSerialByte() function to get SLIP encoded bytes from the serial port and return a decoded byte list # Based on https://github.com/mehdix/pyslip/ def decodeFromSLIP(self, timeout=None, complete_timeout=None): dataBuffer = [] @@ -119,11 +119,15 @@ class PacketReader(Notifications.Notifier): if complete_timeout is not None: time_start = time.time() - while not startOfPacket and (complete_timeout is None or (time.time() - time_start < complete_timeout)): + while not startOfPacket and ( + complete_timeout is None or (time.time() - time_start < complete_timeout) + ): res = self.getSerialByte(timeout) - startOfPacket = (res == SLIP_START) + startOfPacket = res == SLIP_START - while not endOfPacket and (complete_timeout is None or (time.time() - time_start < complete_timeout)): + while not endOfPacket and ( + complete_timeout is None or (time.time() - time_start < complete_timeout) + ): serialByte = self.getSerialByte(timeout) if serialByte == SLIP_END: endOfPacket = True @@ -138,9 +142,11 @@ class PacketReader(Notifications.Notifier): else: dataBuffer.append(SLIP_END) else: - dataBuffer.append(serialByte) + dataBuffer.append(serialByte) if not endOfPacket: - raise Exceptions.UARTPacketError("Exceeded max timeout of %f seconds." % complete_timeout) + raise Exceptions.UARTPacketError( + "Exceeded max timeout of %f seconds." % complete_timeout + ) return dataBuffer # This function read byte chuncks from the serial port and return one byte at a time @@ -153,13 +159,23 @@ class PacketReader(Notifications.Notifier): def handlePacketHistory(self, packet): # Reads and validates packet counter - if self.lastReceivedPacket is not None \ - and packet.packetCounter != (self.lastReceivedPacket.packetCounter + 1) % PACKET_COUNTER_CAP \ - and self.lastReceivedPacket.packetCounter != 0: + if ( + self.lastReceivedPacket is not None + and packet.packetCounter + != (self.lastReceivedPacket.packetCounter + 1) % PACKET_COUNTER_CAP + and self.lastReceivedPacket.packetCounter != 0 + ): - logging.info("gap in packets, between " + str(self.lastReceivedPacket.packetCounter) + " and " - + str(packet.packetCounter) + " packet before: " + str(self.lastReceivedPacket.packetList) - + " packet after: " + str(packet.packetList)) + logging.info( + "gap in packets, between " + + str(self.lastReceivedPacket.packetCounter) + + " and " + + str(packet.packetCounter) + + " packet before: " + + str(self.lastReceivedPacket.packetList) + + " packet after: " + + str(packet.packetList) + ) self.lastReceivedPacket = packet if packet.id in [EVENT_PACKET_DATA_PDU, EVENT_PACKET_ADV_PDU]: @@ -198,25 +214,34 @@ class PacketReader(Notifications.Notifier): # Convert time-stamp to End to Start delta time_delta = 0 - if self.lastReceivedTimestampPacket is not None and self.lastReceivedTimestampPacket.valid: - time_delta = (packet.timestamp - - (self.lastReceivedTimestampPacket.timestamp + - self.getPacketTime(self.lastReceivedTimestampPacket))) + if ( + self.lastReceivedTimestampPacket is not None + and self.lastReceivedTimestampPacket.valid + ): + time_delta = packet.timestamp - ( + self.lastReceivedTimestampPacket.timestamp + + self.getPacketTime(self.lastReceivedTimestampPacket) + ) time_delta = toLittleEndian(time_delta, 4) - packet.packetList[TIMESTAMP_POS ] = time_delta[0] - packet.packetList[TIMESTAMP_POS+1] = time_delta[1] - packet.packetList[TIMESTAMP_POS+2] = time_delta[2] - packet.packetList[TIMESTAMP_POS+3] = time_delta[3] - + packet.packetList[TIMESTAMP_POS] = time_delta[0] + packet.packetList[TIMESTAMP_POS + 1] = time_delta[1] + packet.packetList[TIMESTAMP_POS + 2] = time_delta[2] + packet.packetList[TIMESTAMP_POS + 3] = time_delta[3] def handlePacketCompatibility(self, packet): - if self.supportedProtocolVersion == PROTOVER_V2 and packet.packetList[PROTOVER_POS] > PROTOVER_V2: + if ( + self.supportedProtocolVersion == PROTOVER_V2 + and packet.packetList[PROTOVER_POS] > PROTOVER_V2 + ): self.convertPacketListProtoVer2(packet) def setSupportedProtocolVersion(self, supportedProtocolVersion): - if (supportedProtocolVersion != PROTOVER_V3): - logging.info("Using packet compatibility, converting packets to protocol version %d", supportedProtocolVersion) + if supportedProtocolVersion != PROTOVER_V3: + logging.info( + "Using packet compatibility, converting packets to protocol version %d", + supportedProtocolVersion, + ) self.supportedProtocolVersion = supportedProtocolVersion def getPacket(self, timeout=None): @@ -234,17 +259,30 @@ class PacketReader(Notifications.Notifier): return packet def sendPacket(self, id, payload): - packetList = [HEADER_LENGTH] + [len(payload)] + [PROTOVER_V1] + toLittleEndian(self.packetCounter, 2) + [id] + payload + packetList = ( + [HEADER_LENGTH] + + [len(payload)] + + [PROTOVER_V1] + + toLittleEndian(self.packetCounter, 2) + + [id] + + payload + ) packetList = self.encodeToSLIP(packetList) self.packetCounter += 1 self.uart.writeList(packetList) - def sendScan(self, findScanRsp = False, findAux = False, scanCoded = False): + def sendScan(self, findScanRsp=False, findAux=False, scanCoded=False): flags0 = findScanRsp | (findAux << 1) | (scanCoded << 2) self.sendPacket(REQ_SCAN_CONT, [flags0]) logging.info("Scan flags: %s" % bin(flags0)) - def sendFollow(self, addr, followOnlyAdvertisements = False, followOnlyLegacy = False, followCoded = False): + def sendFollow( + self, + addr, + followOnlyAdvertisements=False, + followOnlyLegacy=False, + followCoded=False, + ): flags0 = followOnlyAdvertisements | (followOnlyLegacy << 1) | (followCoded << 2) logging.info("Follow flags: %s" % bin(flags0)) self.sendPacket(REQ_FOLLOW, addr + [flags0]) @@ -253,7 +291,7 @@ class PacketReader(Notifications.Notifier): self.sendPacket(PING_REQ, []) def getBytes(self, value, size): - if (len(value) < size): + if len(value) < size: value = [0] * (size - len(value)) + value else: value = value[:size] @@ -294,10 +332,12 @@ class PacketReader(Notifications.Notifier): def sendHopSequence(self, hopSequence): for chan in hopSequence: if chan not in VALID_ADV_CHANS: - raise Exceptions.InvalidAdvChannel("%s is not an adv channel" % str(chan)) - payload = [len(hopSequence)] + hopSequence + [37]*(3-len(hopSequence)) + raise Exceptions.InvalidAdvChannel( + "%s is not an adv channel" % str(chan) + ) + payload = [len(hopSequence)] + hopSequence + [37] * (3 - len(hopSequence)) self.sendPacket(SET_ADV_CHANNEL_HOP_SEQ, payload) - self.notify("NEW_ADV_HOP_SEQ", {"hopSequence":hopSequence}) + self.notify("NEW_ADV_HOP_SEQ", {"hopSequence": hopSequence}) def sendVersionReq(self): self.sendPacket(REQ_VERSION, []) @@ -313,21 +353,31 @@ class Packet: def __init__(self, packetList): try: if not packetList: - raise Exceptions.InvalidPacketException("packet list not valid: %s" % str(packetList)) + raise Exceptions.InvalidPacketException( + "packet list not valid: %s" % str(packetList) + ) self.protover = packetList[PROTOVER_POS] if self.protover > PROTOVER_V3: - logging.exception("Unsupported protocol version %s" % str(self.protover)) - raise RuntimeError("Unsupported protocol version %s" % str(self.protover)) + logging.exception( + "Unsupported protocol version %s" % str(self.protover) + ) + raise RuntimeError( + "Unsupported protocol version %s" % str(self.protover) + ) - self.packetCounter = parseLittleEndian(packetList[PACKETCOUNTER_POS:PACKETCOUNTER_POS + 2]) + self.packetCounter = parseLittleEndian( + packetList[PACKETCOUNTER_POS : PACKETCOUNTER_POS + 2] + ) self.id = packetList[ID_POS] if int(self.protover) == PROTOVER_V1: self.payloadLength = packetList[PAYLOAD_LEN_POS_V1] else: - self.payloadLength = parseLittleEndian(packetList[PAYLOAD_LEN_POS:PAYLOAD_LEN_POS + 2]) + self.payloadLength = parseLittleEndian( + packetList[PAYLOAD_LEN_POS : PAYLOAD_LEN_POS + 2] + ) self.packetList = packetList self.readPayload(packetList) @@ -337,24 +387,26 @@ class Packet: self.OK = False self.valid = False except Exception as e: - logging.exception("packet creation error %s" %str(e)) + logging.exception("packet creation error %s" % str(e)) logging.info("packetList: " + str(packetList)) self.OK = False self.valid = False def __repr__(self): - return "UART packet, type: "+str(self.id)+", PC: "+str(self.packetCounter) + return "UART packet, type: " + str(self.id) + ", PC: " + str(self.packetCounter) def readPayload(self, packetList): self.blePacket = None self.OK = False if not self.validatePacketList(packetList): - raise Exceptions.InvalidPacketException("packet list not valid: %s" % str(packetList)) + raise Exceptions.InvalidPacketException( + "packet list not valid: %s" % str(packetList) + ) else: self.valid = True - self.payload = packetList[PAYLOAD_POS:PAYLOAD_POS+self.payloadLength] + self.payload = packetList[PAYLOAD_POS : PAYLOAD_POS + self.payloadLength] if self.id == EVENT_PACKET_ADV_PDU or self.id == EVENT_PACKET_DATA_PDU: try: @@ -365,23 +417,27 @@ class Packet: self.channel = packetList[CHANNEL_POS] self.rawRSSI = packetList[RSSI_POS] self.RSSI = -self.rawRSSI - self.eventCounter = parseLittleEndian(packetList[EVENTCOUNTER_POS:EVENTCOUNTER_POS+2]) + self.eventCounter = parseLittleEndian( + packetList[EVENTCOUNTER_POS : EVENTCOUNTER_POS + 2] + ) - self.timestamp = parseLittleEndian(packetList[TIMESTAMP_POS:TIMESTAMP_POS+4]) + self.timestamp = parseLittleEndian( + packetList[TIMESTAMP_POS : TIMESTAMP_POS + 4] + ) # The hardware adds a padding byte which isn't sent on air. # We remove it, and update the payload length in the packet list. if self.phy == PHY_CODED: - self.packetList.pop(BLEPACKET_POS+6+1) + self.packetList.pop(BLEPACKET_POS + 6 + 1) else: - self.packetList.pop(BLEPACKET_POS+6) + self.packetList.pop(BLEPACKET_POS + 6) self.payloadLength -= 1 if self.protover >= PROTOVER_V2: # Write updated payload length back to the packet list. payloadLength = toLittleEndian(self.payloadLength, 2) - packetList[PAYLOAD_LEN_POS ] = payloadLength[0] - packetList[PAYLOAD_LEN_POS+1] = payloadLength[1] - else: # PROTOVER_V1 + packetList[PAYLOAD_LEN_POS] = payloadLength[0] + packetList[PAYLOAD_LEN_POS + 1] = payloadLength[1] + else: # PROTOVER_V1 packetList[PAYLOAD_LEN_POS_V1] = self.payloadLength else: logging.info("Invalid BLE Header Length " + str(packetList)) @@ -390,15 +446,22 @@ class Packet: if self.OK: try: if self.protover >= PROTOVER_V3: - packet_type = (PACKET_TYPE_ADVERTISING - if self.id == EVENT_PACKET_ADV_PDU else - PACKET_TYPE_DATA) + packet_type = ( + PACKET_TYPE_ADVERTISING + if self.id == EVENT_PACKET_ADV_PDU + else PACKET_TYPE_DATA + ) else: - packet_type = (PACKET_TYPE_ADVERTISING - if packetList[BLEPACKET_POS : BLEPACKET_POS + 4] == ADV_ACCESS_ADDRESS else - PACKET_TYPE_DATA) + packet_type = ( + PACKET_TYPE_ADVERTISING + if packetList[BLEPACKET_POS : BLEPACKET_POS + 4] + == ADV_ACCESS_ADDRESS + else PACKET_TYPE_DATA + ) - self.blePacket = BlePacket(packet_type, packetList[BLEPACKET_POS:], self.phy) + self.blePacket = BlePacket( + packet_type, packetList[BLEPACKET_POS:], self.phy + ) except Exception as e: logging.exception("blePacket error %s" % str(e)) except Exception as e: @@ -407,13 +470,17 @@ class Packet: self.OK = False elif self.id == PING_RESP: if self.protover < PROTOVER_V3: - self.version = parseLittleEndian(packetList[PAYLOAD_POS:PAYLOAD_POS+2]) + self.version = parseLittleEndian( + packetList[PAYLOAD_POS : PAYLOAD_POS + 2] + ) elif self.id == RESP_VERSION: - self.version = ''.join([chr(i) for i in packetList[PAYLOAD_POS:]]) + self.version = "".join([chr(i) for i in packetList[PAYLOAD_POS:]]) elif self.id == RESP_TIMESTAMP: - self.timestamp = parseLittleEndian(packetList[PAYLOAD_POS:PAYLOAD_POS+4]) + self.timestamp = parseLittleEndian( + packetList[PAYLOAD_POS : PAYLOAD_POS + 4] + ) elif self.id == SWITCH_BAUD_RATE_RESP or self.id == SWITCH_BAUD_RATE_REQ: - self.baudRate = parseLittleEndian(packetList[PAYLOAD_POS:PAYLOAD_POS+4]) + self.baudRate = parseLittleEndian(packetList[PAYLOAD_POS : PAYLOAD_POS + 4]) else: logging.info("Unknown packet ID") @@ -438,7 +505,8 @@ class Packet: logging.exception("Invalid packet: %s" % str(packetList)) return False -class BlePacket(): + +class BlePacket: def __init__(self, type, packetList, phy): self.type = type @@ -458,12 +526,11 @@ class BlePacket(): offset = self.extractAddresses(packetList, offset) self.extractName(packetList, offset) - def __repr__(self): - return "BLE packet, AAddr: "+str(self.accessAddress) + return "BLE packet, AAddr: " + str(self.accessAddress) def extractAccessAddress(self, packetList, offset): - self.accessAddress = packetList[offset:offset+4] + self.accessAddress = packetList[offset : offset + 4] return offset + 4 def extractFormat(self, packetList, phy, offset): @@ -497,29 +564,29 @@ class BlePacket(): scanAddr = None if self.advType in [0, 1, 2, 4, 6]: - addr = packetList[offset:offset+6] + addr = packetList[offset : offset + 6] addr.reverse() addr += [self.txAddrType] offset += 6 if self.advType in [3, 5]: - scanAddr = packetList[offset:offset+6] + scanAddr = packetList[offset : offset + 6] scanAddr.reverse() scanAddr += [self.txAddrType] offset += 6 - addr = packetList[offset:offset+6] + addr = packetList[offset : offset + 6] addr.reverse() addr += [self.rxAddrType] offset += 6 if self.advType == 1: - scanAddr = packetList[offset:offset+6] + scanAddr = packetList[offset : offset + 6] scanAddr.reverse() scanAddr += [self.rxAddrType] offset += 6 if self.advType == 7: - ext_header_len = packetList[offset] & 0x3f + ext_header_len = packetList[offset] & 0x3F offset += 1 ext_header_offset = offset @@ -527,13 +594,13 @@ class BlePacket(): ext_header_offset += 1 if flags & 0x01: - addr = packetList[ext_header_offset:ext_header_offset+6] + addr = packetList[ext_header_offset : ext_header_offset + 6] addr.reverse() addr += [self.txAddrType] ext_header_offset += 6 if flags & 0x02: - scanAddr = packetList[ext_header_offset:ext_header_offset+6] + scanAddr = packetList[ext_header_offset : ext_header_offset + 6] scanAddr.reverse() scanAddr += [self.rxAddrType] ext_header_offset += 6 @@ -550,17 +617,17 @@ class BlePacket(): i = offset while i < len(packetList): length = packetList[i] - if (i+length+1) > len(packetList) or length == 0: + if (i + length + 1) > len(packetList) or length == 0: break - type = packetList[i+1] + type = packetList[i + 1] if type == 8 or type == 9: - nameList = packetList[i+2:i+length+1] + nameList = packetList[i + 2 : i + length + 1] name = "" for j in nameList: name += chr(j) - i += (length+1) - name = '"'+name+'"' - elif (self.advType == 1): + i += length + 1 + name = '"' + name + '"' + elif self.advType == 1: name = "[ADV_DIRECT_IND]" self.name = name @@ -569,15 +636,16 @@ class BlePacket(): self.length = packetList[offset] return offset + 1 + def parseLittleEndian(list): total = 0 for i in range(len(list)): - total+=(list[i] << (8*i)) + total += list[i] << (8 * i) return total -def toLittleEndian(value, size): - list = [0]*size - for i in range(size): - list[i] = (value >> (i*8)) % 256 - return list +def toLittleEndian(value, size): + list = [0] * size + for i in range(size): + list[i] = (value >> (i * 8)) % 256 + return list diff --git a/modules/wireshark/extcap/SnifferAPI/Pcap.py b/modules/wireshark/extcap/SnifferAPI/Pcap.py index 63cbe41..8b0445a 100644 --- a/modules/wireshark/extcap/SnifferAPI/Pcap.py +++ b/modules/wireshark/extcap/SnifferAPI/Pcap.py @@ -44,14 +44,16 @@ import struct # - https://github.com/pcapng/pcapng # - https://www.tcpdump.org/linktypes/LINKTYPE_NORDIC_BLE.html PACKET_HEADER = struct.Struct(" empty string ('') return None, None, None - _, _, length, arg, typ = struct.unpack('>sBHBB', header) + _, _, length, arg, typ = struct.unpack(">sBHBB", header) payload = bytearray() if length > 2: @@ -239,6 +321,7 @@ def control_read(): return arg, typ, payload + def control_write(arg, typ, message): """Write the message to the control channel""" @@ -247,8 +330,8 @@ def control_write(arg, typ, message): return packet = bytearray() - packet += struct.pack('>BBHBB', ord('T'), 0, len(message) + 2, arg, typ) - packet += message.encode('utf-8') + packet += struct.pack(">BBHBB", ord("T"), 0, len(message) + 2, arg, typ) + packet += message.encode("utf-8") fn_ctrl_out.write(packet) @@ -278,11 +361,13 @@ def device_added(notification): # Extcap selector uses \0 character to separate value and display value, # therefore the display value cannot contain the \0 character as this # would lead to truncation of the display value. - display = (device.name.replace('\0', '\\0') + - (" " + str(device.RSSI) + " dBm " if device.RSSI != 0 else " ") + - string_address(device.address)) + display = ( + device.name.replace("\0", "\\0") + + (" " + str(device.RSSI) + " dBm " if device.RSSI != 0 else " ") + + string_address(device.address) + ) - message = str(device.address) + '\0' + display + message = str(device.address) + "\0" + display control_write(CTRL_ARG_DEVICE, CTRL_CMD_ADD, message) @@ -298,33 +383,35 @@ def device_removed(notification): control_write(CTRL_ARG_DEVICE, CTRL_CMD_REMOVE, message) logging.info("Removed: " + display) + def devices_cleared(notification): """Devices have been cleared""" message = "" control_write(CTRL_ARG_DEVICE, CTRL_CMD_REMOVE, message) - control_write(CTRL_ARG_DEVICE, CTRL_CMD_ADD, " " + '\0' + "All advertising devices") - control_write(CTRL_ARG_DEVICE, CTRL_CMD_ADD, zero_addr + '\0' + "Follow IRK") + control_write(CTRL_ARG_DEVICE, CTRL_CMD_ADD, " " + "\0" + "All advertising devices") + control_write(CTRL_ARG_DEVICE, CTRL_CMD_ADD, zero_addr + "\0" + "Follow IRK") control_write(CTRL_ARG_DEVICE, CTRL_CMD_SET, " ") + def handle_control_command(sniffer, arg, typ, payload): """Handle command from control channel""" global last_used_key_type if arg == CTRL_ARG_DEVICE: - if payload == b' ': + if payload == b" ": scan_for_devices(sniffer) else: values = payload - values = values.replace(b'[', b'') - values = values.replace(b']', b'') - device_address = values.split(b',') + values = values.replace(b"[", b"") + values = values.replace(b"]", b"") + device_address = values.split(b",") - logging.info('follow_device: {}'.format(device_address)) + logging.info("follow_device: {}".format(device_address)) for i in range(6): device_address[i] = int(device_address[i]) - device_address[6] = 1 if device_address[6] == b' 1' else 0 + device_address[6] = 1 if device_address[6] == b" 1" else 0 device = Devices.Device(address=device_address, name='""', RSSI=0) @@ -333,7 +420,7 @@ def handle_control_command(sniffer, arg, typ, payload): elif arg == CTRL_ARG_DEVICE_CLEAR: clear_devices(sniffer) elif arg == CTRL_ARG_KEY_TYPE: - last_used_key_type = int(payload.decode('utf-8')) + last_used_key_type = int(payload.decode("utf-8")) elif arg == CTRL_ARG_KEY_VAL: set_key_value(sniffer, payload) elif arg == CTRL_ARG_ADVHOP: @@ -384,8 +471,10 @@ def follow_device(sniffer, device): """Follow the selected device""" global write_new_packets, in_follow_mode - sniffer.follow(device, capture_only_advertising, capture_only_legacy_advertising, capture_coded) - time.sleep(.1) + sniffer.follow( + device, capture_only_advertising, capture_only_legacy_advertising, capture_coded + ) + time.sleep(0.1) in_follow_mode = True logging.info("Following " + string_address(device.address)) @@ -395,58 +484,64 @@ def set_key_value(sniffer, payload): """Send key value to device""" global last_used_key_val - payload = payload.decode('utf-8') + payload = payload.decode("utf-8") last_used_key_val = payload - if (last_used_key_type == CTRL_KEY_TYPE_PASSKEY): + if last_used_key_type == CTRL_KEY_TYPE_PASSKEY: if re.match("^[0-9]{6}$", payload): set_passkey(sniffer, payload) else: logging.info("Invalid key value: " + str(payload)) - elif (last_used_key_type == CTRL_KEY_TYPE_OOB): + elif last_used_key_type == CTRL_KEY_TYPE_OOB: if re.match("^0[xX][0-9A-Za-z]{1,32}$", payload): set_OOB(sniffer, payload[2:]) else: logging.info("Invalid key value: " + str(payload)) - elif (last_used_key_type == CTRL_KEY_TYPE_DH_PRIVATE_KEY): - if (re.match("^0[xX][0-9A-Za-z]{1,64}$", payload)): + elif last_used_key_type == CTRL_KEY_TYPE_DH_PRIVATE_KEY: + if re.match("^0[xX][0-9A-Za-z]{1,64}$", payload): set_dh_private_key(sniffer, payload[2:]) else: logging.info("Invalid key value: " + str(payload)) - elif (last_used_key_type == CTRL_KEY_TYPE_LEGACY_LTK): - if (re.match("^0[xX][0-9A-Za-z]{1,32}$", payload)): + elif last_used_key_type == CTRL_KEY_TYPE_LEGACY_LTK: + if re.match("^0[xX][0-9A-Za-z]{1,32}$", payload): set_legacy_ltk(sniffer, payload[2:]) else: logging.info("Invalid key value: " + str(payload)) - elif (last_used_key_type == CTRL_KEY_TYPE_SC_LTK): - if (re.match("^0[xX][0-9A-Za-z]{1,32}$", payload)): + elif last_used_key_type == CTRL_KEY_TYPE_SC_LTK: + if re.match("^0[xX][0-9A-Za-z]{1,32}$", payload): set_sc_ltk(sniffer, payload[2:]) else: logging.info("Invalid key value: " + str(payload)) - elif (last_used_key_type == CTRL_KEY_TYPE_IRK): - if (re.match("^0[xX][0-9A-Za-z]{1,32}$", payload)): + elif last_used_key_type == CTRL_KEY_TYPE_IRK: + if re.match("^0[xX][0-9A-Za-z]{1,32}$", payload): set_irk(sniffer, payload[2:]) else: logging.info("Invalid key value: " + str(payload)) - elif (last_used_key_type == CTRL_KEY_TYPE_ADD_ADDR): - if (re.match("^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2}) (public|random)$", payload)): + elif last_used_key_type == CTRL_KEY_TYPE_ADD_ADDR: + if re.match( + "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2}) (public|random)$", payload + ): add_address(sniffer, payload) else: logging.info("Invalid key value: " + str(payload)) - elif (last_used_key_type == CTRL_KEY_TYPE_FOLLOW_ADDR): - if (re.match("^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2}) (public|random)$", payload)): + elif last_used_key_type == CTRL_KEY_TYPE_FOLLOW_ADDR: + if re.match( + "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2}) (public|random)$", payload + ): follow_address(sniffer, payload) else: logging.info("Invalid key value: " + str(payload)) else: logging.info("Invalid key type: " + str(last_used_key_type)) -def parse_hex(value): - if len(value) % 2 != 0: - value = '0' + value - a = list(value) - return [int(x + y, 16) for x,y in zip(a[::2], a[1::2])] +def parse_hex(value): + if len(value) % 2 != 0: + value = "0" + value + + a = list(value) + return [int(x + y, 16) for x, y in zip(a[::2], a[1::2])] + def set_passkey(sniffer, payload): """Send passkey to device""" @@ -461,36 +556,42 @@ def set_passkey(sniffer, payload): sniffer.sendTK(passkey) + def set_OOB(sniffer, payload): """Send OOB to device""" logging.info("Setting OOB data: " + payload) sniffer.sendTK(parse_hex(payload)) + def set_dh_private_key(sniffer, payload): """Send Diffie-Hellman private key to device""" logging.info("Setting DH private key: " + payload) sniffer.sendPrivateKey(parse_hex(payload)) + def set_legacy_ltk(sniffer, payload): """Send Legacy Long Term Key (LTK) to device""" logging.info("Setting Legacy LTK: " + payload) sniffer.sendLegacyLTK(parse_hex(payload)) + def set_sc_ltk(sniffer, payload): """Send LE secure connections Long Term Key (LTK) to device""" logging.info("Setting SC LTK: " + payload) sniffer.sendSCLTK(parse_hex(payload)) + def set_irk(sniffer, payload): """Send Identity Resolving Key (IRK) to device""" logging.info("Setting IRK: " + payload) sniffer.sendIRK(parse_hex(payload)) + def add_address(sniffer, payload): """Add LE address to device list""" logging.info("Adding LE address: " + payload) - (addr,addr_type) = payload.split(' ') + (addr, addr_type) = payload.split(" ") device = [int(a, 16) for a in addr.split(":")] device.append(1 if addr_type == "random" else 0) @@ -498,11 +599,12 @@ def add_address(sniffer, payload): new_device = Devices.Device(address=device, name='""', RSSI=0) sniffer.addDevice(new_device) + def follow_address(sniffer, payload): """Add LE address to device list""" logging.info("Adding LE address: " + payload) - (addr,addr_type) = payload.split(' ') + (addr, addr_type) = payload.split(" ") device = [int(a, 16) for a in addr.split(":")] device.append(1 if addr_type == "random" else 0) @@ -513,15 +615,16 @@ def follow_address(sniffer, payload): control_write(CTRL_ARG_DEVICE, CTRL_CMD_SET, f"{new_device.address}") follow_device(sniffer, new_device) + def set_advhop(sniffer, payload): """Set advertising channel hop sequence""" global last_used_advhop - payload = payload.decode('utf-8') + payload = payload.decode("utf-8") last_used_advhop = payload - hops = [int(channel) for channel in payload.split(',')] + hops = [int(channel) for channel in payload.split(",")] sniffer.setAdvHopSequence(hops) @@ -546,7 +649,7 @@ def error_interface_not_found(interface, fifo): def validate_interface(interface, fifo): """Check if interface exists""" - if sys.platform != 'win32' and not os.path.exists(interface): + if sys.platform != "win32" and not os.path.exists(interface): error_interface_not_found(interface, fifo) @@ -557,12 +660,13 @@ def get_default_baudrate(interface, fifo): error_interface_not_found(interface, fifo) return rates["default"] + def get_supported_protocol_version(extcap_version): """Return the maximum supported Packet Protocol Version""" - if extcap_version == 'None': + if extcap_version == "None": return 2 - (major, minor) = extcap_version.split('.') + (major, minor) = extcap_version.split(".") major = int(major) minor = int(minor) @@ -572,6 +676,7 @@ def get_supported_protocol_version(extcap_version): else: return 2 + def setup_extcap_log_handler(): """Add the a handler that emits log messages through the extcap control out channel""" global extcap_log_handler @@ -593,18 +698,18 @@ def sniffer_capture(interface, baudrate, fifo, control_in, control_out): global fn_capture, fn_ctrl_in, fn_ctrl_out, write_new_packets, extcap_log_handler try: - fn_capture = open(fifo, 'wb', 0) + fn_capture = open(fifo, "wb", 0) if control_out is not None: - fn_ctrl_out = open(control_out, 'wb', 0) + fn_ctrl_out = open(control_out, "wb", 0) setup_extcap_log_handler() if control_in is not None: - fn_ctrl_in = open(control_in, 'rb', 0) + fn_ctrl_in = open(control_in, "rb", 0) logging.info("Log started at %s", time.strftime("%c")) - interface, extcap_version = interface.split('-') + interface, extcap_version = interface.split("-") logging.info("Extcap version %s", str(extcap_version)) capture_write(Pcap.get_global_header()) @@ -619,7 +724,9 @@ def sniffer_capture(interface, baudrate, fifo, control_in, control_out): sniffer.subscribe("DEVICE_REMOVED", device_removed) sniffer.subscribe("DEVICES_CLEARED", devices_cleared) sniffer.setAdvHopSequence([37, 38, 39]) - sniffer.setSupportedProtocolVersion(get_supported_protocol_version(extcap_version)) + sniffer.setSupportedProtocolVersion( + get_supported_protocol_version(extcap_version) + ) logging.info("Sniffer created") logging.info("Software version: %s" % sniffer.swversion) @@ -655,7 +762,7 @@ def sniffer_capture(interface, baudrate, fifo, control_in, control_out): pass except Exceptions.LockedException as e: - logging.info('{}'.format(e.message)) + logging.info("{}".format(e.message)) except OSError: # We'll get OSError=22 when/if wireshark kills the pipe(s) on capture @@ -689,14 +796,14 @@ def sniffer_capture(interface, baudrate, fifo, control_in, control_out): def extcap_close_fifo(fifo): - """"Close extcap fifo""" + """ "Close extcap fifo""" if not os.path.exists(fifo): print("FIFO does not exist!", file=sys.stderr) return # This is apparently needed to workaround an issue on Windows/macOS # where the message cannot be read. (really?) - fh = open(fifo, 'wb', 0) + fh = open(fifo, "wb", 0) fh.close() @@ -705,13 +812,13 @@ class ExtcapLoggerHandler(logging.Handler): def emit(self, record): """Send log message to extcap""" - message = record.message.replace('\0', '\\0') + message = record.message.replace("\0", "\\0") log_message = f"{record.levelname}: {message}\n" control_write(CTRL_ARG_LOG, CTRL_CMD_ADD, log_message) def parse_capture_filter(capture_filter): - """"Parse given capture filter""" + """ "Parse given capture filter""" global rssi_filter m = re.search(r"^\s*rssi\s*(>=?)\s*(-?[0-9]+)\s*$", capture_filter, re.IGNORECASE) if m: @@ -720,66 +827,89 @@ def parse_capture_filter(capture_filter): print("Illegal RSSI value, must be between -10 and -256") # Handle >= by modifying the threshold, since comparisons are always done with # the > operator - if m.group(1) == '>=': + if m.group(1) == ">=": rssi_filter = rssi_filter - 1 else: - print("Filter syntax: \"RSSI >= -value\"") + print('Filter syntax: "RSSI >= -value"') + import atexit + @atexit.register def goodbye(): - logging.info("Exiting PID {}".format(os.getpid())) + logging.info("Exiting PID {}".format(os.getpid())) -if __name__ == '__main__': +if __name__ == "__main__": # Capture options - parser = argparse.ArgumentParser(description="Nordic Semiconductor nRF Sniffer for Bluetooth LE extcap plugin") + parser = argparse.ArgumentParser( + description="Nordic Semiconductor nRF Sniffer for Bluetooth LE extcap plugin" + ) # Extcap Arguments - parser.add_argument("--capture", - help="Start the capture", - action="store_true") + parser.add_argument("--capture", help="Start the capture", action="store_true") - parser.add_argument("--extcap-interfaces", - help="List available interfaces to capture from", - action="store_true") + parser.add_argument( + "--extcap-interfaces", + help="List available interfaces to capture from", + action="store_true", + ) - parser.add_argument("--extcap-interface", - help="The interface to capture from") + parser.add_argument("--extcap-interface", help="The interface to capture from") - parser.add_argument("--extcap-dlts", - help="List DLTs for the given interface", - action="store_true") + parser.add_argument( + "--extcap-dlts", help="List DLTs for the given interface", action="store_true" + ) - parser.add_argument("--extcap-config", - help="List configurations for the given interface", - action="store_true") + parser.add_argument( + "--extcap-config", + help="List configurations for the given interface", + action="store_true", + ) - parser.add_argument("--extcap-capture-filter", - help="Used together with capture to provide a capture filter") + parser.add_argument( + "--extcap-capture-filter", + help="Used together with capture to provide a capture filter", + ) - parser.add_argument("--fifo", - help="Use together with capture to provide the fifo to dump data to") + parser.add_argument( + "--fifo", help="Use together with capture to provide the fifo to dump data to" + ) - parser.add_argument("--extcap-control-in", - help="Used together with capture to get control messages from toolbar") + parser.add_argument( + "--extcap-control-in", + help="Used together with capture to get control messages from toolbar", + ) - parser.add_argument("--extcap-control-out", - help="Used together with capture to send control messages to toolbar") + parser.add_argument( + "--extcap-control-out", + help="Used together with capture to send control messages to toolbar", + ) - parser.add_argument("--extcap-version", - help="Set extcap supported version") + parser.add_argument("--extcap-version", help="Set extcap supported version") # Interface Arguments parser.add_argument("--device", help="Device", default="") parser.add_argument("--baudrate", type=int, help="The sniffer baud rate") - parser.add_argument("--only-advertising", help="Only advertising packets", action="store_true") - parser.add_argument("--only-legacy-advertising", help="Only legacy advertising packets", action="store_true") - parser.add_argument("--scan-follow-rsp", help="Find scan response data ", action="store_true") - parser.add_argument("--scan-follow-aux", help="Find auxiliary pointer data", action="store_true") - parser.add_argument("--coded", help="Scan and follow on LE Coded PHY", action="store_true") + parser.add_argument( + "--only-advertising", help="Only advertising packets", action="store_true" + ) + parser.add_argument( + "--only-legacy-advertising", + help="Only legacy advertising packets", + action="store_true", + ) + parser.add_argument( + "--scan-follow-rsp", help="Find scan response data ", action="store_true" + ) + parser.add_argument( + "--scan-follow-aux", help="Find auxiliary pointer data", action="store_true" + ) + parser.add_argument( + "--coded", help="Scan and follow on LE Coded PHY", action="store_true" + ) logging.info("Started PID {}".format(os.getpid())) @@ -839,16 +969,23 @@ if __name__ == '__main__': parser.print_help() sys.exit(ERROR_FIFO) try: - logging.info('sniffer capture') - sniffer_capture(interface, args.baudrate, args.fifo, args.extcap_control_in, args.extcap_control_out) + logging.info("sniffer capture") + sniffer_capture( + interface, + args.baudrate, + args.fifo, + args.extcap_control_in, + args.extcap_control_out, + ) except KeyboardInterrupt: pass except Exception as e: import traceback + logging.info(traceback.format_exc()) - logging.info('internal error: {}'.format(repr(e))) + logging.info("internal error: {}".format(repr(e))) sys.exit(ERROR_INTERNAL) else: parser.print_help() sys.exit(ERROR_USAGE) - logging.info('main exit PID {}'.format(os.getpid())) + logging.info("main exit PID {}".format(os.getpid())) From 9f528e2f6f4a6abed89e3847d5f98a71d1e92b56 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 18 Nov 2025 14:49:18 +0100 Subject: [PATCH 561/562] Fix rule to send mails from ipv4 only --- hosts/iron/services/mail.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/iron/services/mail.nix b/hosts/iron/services/mail.nix index fbe802e..c5d855e 100644 --- a/hosts/iron/services/mail.nix +++ b/hosts/iron/services/mail.nix @@ -29,7 +29,7 @@ in smtp_bind_address = "159.69.103.126"; smtp_bind_address_enforce = true; }; - masterConfig.smtp_inet.args = [ + masterConfig.smtp.args = [ "-o" "inet_protocols=ipv4" ]; From 8a0b56982a7e5782b34a868a26093370c3529ef4 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Tue, 18 Nov 2025 14:59:08 +0100 Subject: [PATCH 562/562] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5?narHash=sha256-y7UhnWlER8r776JsySqsbTUh2Txf7K30smfHlqdaIQw%3D' (2025-10-17) → 'github:nix-community/disko/af087d076d3860760b3323f6b583f4d828c1ac17?narHash=sha256-TtcPgPmp2f0FAnc%2BDMEw4ardEgv1SGNR3/WFGH0N19M%3D' (2025-11-04) • Updated input 'nix-pre-commit-hooks': 'github:cachix/git-hooks.nix/ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37?narHash=sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc%3D' (2025-10-17) → 'github:cachix/git-hooks.nix/7275fa67fbbb75891c16d9dee7d88e58aea2d761?narHash=sha256-YG19IyrTdnVn0l3DvcUYm85u3PaqBt6tI6VvolcuHnA%3D' (2025-11-16) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/d6645c340ef7d821602fd2cd199e8d1eed10afbc?narHash=sha256-2m1S4jl%2BGEDtlt2QqeHil8Ny456dcGSKJAM7q3j/BFU%3D' (2025-10-20) → 'github:nixos/nixos-hardware/899dc449bc6428b9ee6b3b8f771ca2b0ef945ab9?narHash=sha256-BWWnUUT01lPwCWUvS0p6Px5UOBFeXJ8jR%2BZdLX8IbrU%3D' (2025-11-11) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/78e34d1667d32d8a0ffc3eba4591ff256e80576e?narHash=sha256-vY2OLVg5ZTobdroQKQQSipSIkHlxOTrIF1fsMzPh8w8%3D' (2025-10-26) → 'github:nixos/nixpkgs/4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c?narHash=sha256-LBVOyaH6NFzQ3X/c6vfMZ9k4SV2ofhpxeL9YnhHNJQQ%3D' (2025-11-16) • Updated input 'nixpkgsMaster': 'github:NixOS/nixpkgs/8865b77677eb576ce1dbcb90b7a1ae95a774a6cd?narHash=sha256-rIne9pcxSoaLCxcyICguhH3SUzE9lep464L7zRGBbZk%3D' (2025-10-27) → 'github:NixOS/nixpkgs/15901670689a6f338ebd2a9436b947ec189463a3?narHash=sha256-NzmsN8hRIn/9rJvZH3vPirBrOJJfeSfvPr4%2BfeeK7LY%3D' (2025-11-18) • Updated input 'nur': 'github:nix-community/NUR/378c5c7b0b2471b59b71e42b229ea5e68050235d?narHash=sha256-0UtnyehKLys0HWhctZEjKN7zDe%2BML0HCDdqdfHk221o%3D' (2025-10-27) → 'github:nix-community/NUR/4c584dcedf9aa3394e9730e62693515a0e47674b?narHash=sha256-B1ua1UtkPuMwT8o4nOR7yNP5yz10usMcNnxwHpGtLck%3D' (2025-11-18) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce?narHash=sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c%3D' (2025-10-25) → 'github:nixos/nixpkgs/50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a?narHash=sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c%2Bi7novT85Uk%3D' (2025-11-16) • Updated input 'sops-nix': 'github:Mic92/sops-nix/5a7d18b5c55642df5c432aadb757140edfeb70b3?narHash=sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY%3D' (2025-10-20) → 'github:Mic92/sops-nix/3f66a7fb9626a9a9c077612ef10a0ce396286c7d?narHash=sha256-n5xDOeNN%2BsmocQp3EMIc11IzBlR9wvvTIJZeL0g33Fs%3D' (2025-11-17) • Updated input 'vesc-tool': 'github:vedderb/vesc_tool/8a6de0dda75e62681e7252a1512f34a5f4e70640?narHash=sha256-%2Bvk8SRGknwg5Q8y/R4oHkiLxe2SDQDYGj8jK7Xaeu6c%3D' (2025-10-17) → 'github:vedderb/vesc_tool/6a75051ce9742d97f14addd5d175ac516effb3c6?narHash=sha256-j%2BAZQYOuZ0X33p76LsZu4/NZl1Ccu6kkwPKC5HpIn1Y%3D' (2025-11-12) --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index 6771af6..7c92712 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1760701190, - "narHash": "sha256-y7UhnWlER8r776JsySqsbTUh2Txf7K30smfHlqdaIQw=", + "lastModified": 1762276996, + "narHash": "sha256-TtcPgPmp2f0FAnc+DMEw4ardEgv1SGNR3/WFGH0N19M=", "owner": "nix-community", "repo": "disko", - "rev": "3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5", + "rev": "af087d076d3860760b3323f6b583f4d828c1ac17", "type": "github" }, "original": { @@ -386,11 +386,11 @@ ] }, "locked": { - "lastModified": 1760663237, - "narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=", + "lastModified": 1763319842, + "narHash": "sha256-YG19IyrTdnVn0l3DvcUYm85u3PaqBt6tI6VvolcuHnA=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37", + "rev": "7275fa67fbbb75891c16d9dee7d88e58aea2d761", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1760958188, - "narHash": "sha256-2m1S4jl+GEDtlt2QqeHil8Ny456dcGSKJAM7q3j/BFU=", + "lastModified": 1762847253, + "narHash": "sha256-BWWnUUT01lPwCWUvS0p6Px5UOBFeXJ8jR+ZdLX8IbrU=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "d6645c340ef7d821602fd2cd199e8d1eed10afbc", + "rev": "899dc449bc6428b9ee6b3b8f771ca2b0ef945ab9", "type": "github" }, "original": { @@ -418,11 +418,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1761468971, - "narHash": "sha256-vY2OLVg5ZTobdroQKQQSipSIkHlxOTrIF1fsMzPh8w8=", + "lastModified": 1763334038, + "narHash": "sha256-LBVOyaH6NFzQ3X/c6vfMZ9k4SV2ofhpxeL9YnhHNJQQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "78e34d1667d32d8a0ffc3eba4591ff256e80576e", + "rev": "4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgsMaster": { "locked": { - "lastModified": 1761601585, - "narHash": "sha256-rIne9pcxSoaLCxcyICguhH3SUzE9lep464L7zRGBbZk=", + "lastModified": 1763473525, + "narHash": "sha256-NzmsN8hRIn/9rJvZH3vPirBrOJJfeSfvPr4+feeK7LY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8865b77677eb576ce1dbcb90b7a1ae95a774a6cd", + "rev": "15901670689a6f338ebd2a9436b947ec189463a3", "type": "github" }, "original": { @@ -482,11 +482,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1761373498, - "narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=", + "lastModified": 1763283776, + "narHash": "sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c+i7novT85Uk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce", + "rev": "50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a", "type": "github" }, "original": { @@ -518,11 +518,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1761601325, - "narHash": "sha256-0UtnyehKLys0HWhctZEjKN7zDe+ML0HCDdqdfHk221o=", + "lastModified": 1763471545, + "narHash": "sha256-B1ua1UtkPuMwT8o4nOR7yNP5yz10usMcNnxwHpGtLck=", "owner": "nix-community", "repo": "NUR", - "rev": "378c5c7b0b2471b59b71e42b229ea5e68050235d", + "rev": "4c584dcedf9aa3394e9730e62693515a0e47674b", "type": "github" }, "original": { @@ -634,11 +634,11 @@ ] }, "locked": { - "lastModified": 1760998189, - "narHash": "sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY=", + "lastModified": 1763417348, + "narHash": "sha256-n5xDOeNN+smocQp3EMIc11IzBlR9wvvTIJZeL0g33Fs=", "owner": "Mic92", "repo": "sops-nix", - "rev": "5a7d18b5c55642df5c432aadb757140edfeb70b3", + "rev": "3f66a7fb9626a9a9c077612ef10a0ce396286c7d", "type": "github" }, "original": { @@ -729,11 +729,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1760697314, - "narHash": "sha256-+vk8SRGknwg5Q8y/R4oHkiLxe2SDQDYGj8jK7Xaeu6c=", + "lastModified": 1762968599, + "narHash": "sha256-j+AZQYOuZ0X33p76LsZu4/NZl1Ccu6kkwPKC5HpIn1Y=", "owner": "vedderb", "repo": "vesc_tool", - "rev": "8a6de0dda75e62681e7252a1512f34a5f4e70640", + "rev": "6a75051ce9742d97f14addd5d175ac516effb3c6", "type": "github" }, "original": {