From d7660303f7a03b80b4ce32673a81c14fccd12d07 Mon Sep 17 00:00:00 2001 From: Christoph Hollizeck Date: Mon, 8 Dec 2025 19:17:11 +0100 Subject: [PATCH 1/2] nixberry: homeassistant config --- modules/hosts/loptland/nginx.nix | 2 +- modules/hosts/nixberry/default.nix | 1 + modules/hosts/nixberry/homeassistant.nix | 228 ++++++++++++++++++++--- 3 files changed, 208 insertions(+), 23 deletions(-) diff --git a/modules/hosts/loptland/nginx.nix b/modules/hosts/loptland/nginx.nix index 99215ff..0ceda04 100644 --- a/modules/hosts/loptland/nginx.nix +++ b/modules/hosts/loptland/nginx.nix @@ -46,7 +46,7 @@ proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; ''; - proxyPass = "http://100.86.23.74:8123"; + proxyPass = "http://nixberry:8123"; }; }; diff --git a/modules/hosts/nixberry/default.nix b/modules/hosts/nixberry/default.nix index 490e496..f0faca4 100644 --- a/modules/hosts/nixberry/default.nix +++ b/modules/hosts/nixberry/default.nix @@ -46,6 +46,7 @@ topLevel: { # System modules base server + bluetooth cholli root diff --git a/modules/hosts/nixberry/homeassistant.nix b/modules/hosts/nixberry/homeassistant.nix index bdfe215..9df3dca 100644 --- a/modules/hosts/nixberry/homeassistant.nix +++ b/modules/hosts/nixberry/homeassistant.nix @@ -48,28 +48,6 @@ mobile_app = ""; recorder = ""; - lovelace = { - # mode = "yaml"; - resources = [ - { - url = "/local/nixos-lovelace-modules/vacuum-card.js"; - type = "module"; - } - { - url = "/local/nixos-lovelace-modules/bubble-card.js"; - type = "module"; - } - { - url = "/local/nixos-lovelace-modules/clock-weather-card.js"; - type = "module"; - } - { - url = "/local/nixos-lovelace-modules/mushroom.js"; - type = "module"; - } - ]; - }; - http = { use_x_forwarded_for = true; trusted_proxies = [ @@ -77,6 +55,212 @@ ]; }; }; + + lovelaceConfigWritable = true; + lovelaceConfig = [ + { + tile = "main-dashboard"; + views = [ + { + title = "Home"; + sections = [ + { + type = "grid"; + cards = [ + { + type = "map"; + entities = [ + { entity = "person.christoph_hollizeck"; } + { entity = "person.kuralay_aman"; } + { entity = "zone.home"; } + ]; + theme_mode = "auto"; + grid_options = { + columns = "full"; + rows = 6; + }; + } + { + show_current = true; + show_forecast = true; + type = "weather-forecast"; + entity = "weather.forecast_home"; + forecast_type = "hourly"; + forecast_slots = 5; + } + { + display_order = "duedate_asc"; + type = "todo-list"; + entity = "todo.shopping_list"; + title = "Shopping List"; + hide_completed = true; + } + ]; + } + ]; + badges = [ + { + type = "entity"; + show_name = true; + show_state = true; + show_icon = true; + entity = "person.christoph_hollizeck"; + name = { + type = "entity"; + }; + show_entity_picture = true; + } + { + type = "entity"; + show_name = true; + show_state = true; + show_icon = true; + entity = "person.kuralay_aman"; + show_entity_picture = true; + } + ]; + header = { + layout = "center"; + badges_position = "bottom"; + badges_wrap = "scroll"; + card = { + type = "markdown"; + text_only = true; + content = "# Hello {{ user }}\n"; + }; + }; + } + { + type = "sections"; + max_columns = 2; + title = "living-room"; + path = "living-room"; + sections = [ + { + type = "grid"; + cards = [ + { + type = "history-graph"; + entities = [ { entity = "sensor.living_room_temperature"; } ]; + title = "Temperature"; + } + ]; + } + { + type = "grid"; + cards = [ + { + type = "history-graph"; + entities = [ { entity = "sensor.living_room_humidity"; } ]; + title = "Humidity"; + } + ]; + } + ]; + cards = [ ]; + } + { + type = "sections"; + max_columns = 3; + title = "kitchen"; + path = "kitchen"; + sections = [ + { + type = "grid"; + cards = [ + { + type = "thermostat"; + entity = "climate.kueche_radiator"; + } + ]; + } + { + type = "grid"; + cards = [ + { + type = "custom:vacuum-card"; + entity = "vacuum.sl60d"; + } + ]; + } + { + type = "grid"; + cards = [ + { + type = "glance"; + entities = [ + { + entity = "switch.kettle_socket_1"; + name = { + type = "device"; + }; + show_last_changed = true; + } + { entity = "sensor.kettle_total_energy"; } + ]; + } + { + show_name = true; + show_icon = true; + show_state = true; + type = "glance"; + entities = [ + { + entity = "switch.shelf_socket_1"; + show_last_changed = true; + name = { + type = "device"; + }; + } + { entity = "sensor.shelf_total_energy"; } + ]; + state_color = true; + } + ]; + } + ]; + } + { + type = "sections"; + max_columns = 3; + title = "bedroom"; + path = "bedroom"; + sections = [ + { + type = "grid"; + cards = [ + { + type = "thermostat"; + entity = "climate.bedroom_radiator"; + } + ]; + } + { + type = "grid"; + cards = [ + { + type = "history-graph"; + entities = [ { entity = "sensor.bedroom_temperature"; } ]; + title = "Temperature"; + } + ]; + } + { + type = "grid"; + cards = [ + { + type = "history-graph"; + entities = [ { entity = "sensor.bedroom_humidity"; } ]; + title = "Humidity"; + } + ]; + } + ]; + } + ]; + + } + ]; openFirewall = true; }; }; From 4db5df937eeeb4f7f6d2335b1a7559090e37a239 Mon Sep 17 00:00:00 2001 From: Christoph Hollizeck Date: Mon, 8 Dec 2025 19:17:37 +0100 Subject: [PATCH 2/2] yggdrasil: automount nixberry share --- modules/hosts/yggdrasil/default.nix | 24 +++++++++++++++--------- secrets/secrets.yaml | 6 ++++-- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/modules/hosts/yggdrasil/default.nix b/modules/hosts/yggdrasil/default.nix index f6b36ce..b627bff 100644 --- a/modules/hosts/yggdrasil/default.nix +++ b/modules/hosts/yggdrasil/default.nix @@ -63,8 +63,21 @@ topLevel: { root ]; + sops.secrets = { + "remotebuild/private-key" = { + sopsFile = ../../../secrets/secrets.yaml; + owner = "cholli"; + mode = "0400"; + }; + + "cholli/private-key" = { + sopsFile = ../../../secrets/secrets.yaml; + mode = "0600"; + }; + }; + fileSystems."/mnt/pi_share" = { - device = "cholli@nixberry:/storage/"; + device = "cholli@192.168.178.2:/storage/"; fsType = "sshfs"; options = [ @@ -76,17 +89,10 @@ topLevel: { # SSH options "reconnect" # handle connection drops "ServerAliveInterval=15" # keep connections alive + "IdentityFile=${config.sops.secrets."cholli/private-key".path}" ]; }; - sops.secrets = { - "remotebuild/private-key" = { - sopsFile = ../../../secrets/secrets.yaml; - owner = "cholli"; - mode = "0400"; - }; - }; - nix = { distributedBuilds = true; settings.builders-use-substitutes = true; diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml index e46596b..970b646 100644 --- a/secrets/secrets.yaml +++ b/secrets/secrets.yaml @@ -3,6 +3,8 @@ samba: cholli: ENC[AES256_GCM,data:x2fZ8VcSAcelCj9/Tjp2I1KNeLo=,iv:66Je1+TL6jtnC+LZS3747yq/c6zI4FwlBXH1BjIFeDk=,tag:+vujtFcdKTcsyBisC/UyNA==,type:str] remotebuild: private-key: ENC[AES256_GCM,data:kLF+Mo5EIS5mu8be0nDVRTAb7mzt6dtEL56aG4mV2BxLRcyUZXs7eCbj7j7sOpjqz0k8m+1lHAouvNjyzxANeH10/R3Fy3GZqeWtgJSOEQE3biZaD3dqz0e3Gv3ib/Y0yNYTafosCmn6CmPIsVfiE/dfS1oM2Ksrf/AQ3ufPKIdV0h+p5SK6LnhpBqxgIf7s3MFbBzR+iEgxn1jnmCLaoVqNXhO2tmQqgmRHyh2kHruFj9ZwUi6mWDBie7zX7qlOt/m9p5QN/v5KWn4CfMDWzMlSTYdjEd6lUlP8UC35MJafVT59ioF+ueqePhr4DyDR7d+Cg6Z/iNHWiSH1z17p4Rxt3D4IAverqcd1i8c92C8S4NJKvtWRyfMgZMB3/iG2ZqrLcJXlxrZZKZ9X5B+y5a0Ljb+Vg00V68ktFISt7vAsK79Qy/QjHCotXY0uugkeaGnxS1qhig5tmXdxD+OKk/cJt0kqYEyUFKVQf9unr6xaD2IuOkFKyp/fYhU5LfS0uiAt99ENrfNrIRdHAsUvgWW6Sq7qSVmjkLfU,iv:mlYWlmFT0Ybmn26Spqri5E9zRkrBweV6bWvvByLnIvs=,tag:tdB7dw+GMnr5/8fXoem10w==,type:str] +cholli: + private-key: ENC[AES256_GCM,data:RN/SV4FLyA8KgDfZb4pcN0lsTolpXEaTmTN0WKQ+rzeYiHKKCOqPswnABEcTylgkQk+E2Jup0O7jeNlvcLd5tnVW+K/a+rmGTlyCaLcZE69JjCPvnA+p4ionwkhKHc/jdvZ8YkO5B4I6rnGanBXs3g5WbHjZ4jfLW71hR4IAjXAj5BVGhZiWjViAEfsyIqISXzqPwcbvW6mfJPN5QOP7V+oCTrJVkUPxYrVetrooNgf2/n67qumkRT3RQF12h05zLLdOFWVVX0na5iX/M4Ajl7XTOsA6OnqkDLwRd43QYW29Mu7OYwVlPAsf/qv096cYDKY8lAa6EXgiBi89i4fDjWZ27D7/C/TDbbewCjlZ2dm/T/A9YT9lg7BLBBGywnWm0Xjjt2lNsf+0YEuBxl7IQOU4/pmhMllT5HBomYsBwIdqv+yujVbRd9UW/lelBZftfKxJv5GAkhTENcLchHb/ZlE4Z4n0xELtKx0kgahjhO2C6R2mj3vd1KXP6YFWZkcaYEmq,iv:QiORyyu8SOxn1co8wUySpVU24GkyN19DaYWXpxgApgI=,tag:kzs1tjlmBrN86pCECVMfjg==,type:str] sops: age: - recipient: age1pc92kl38mfr0j68dxww7tpzvqp3lpw6lwfylj6hn2k3rf4rddgtsjxdx47 @@ -41,7 +43,7 @@ sops: SzFFeFVFcVBzWWRIajQrSHhjTzR6U1kKml6XZjf2DeNqfLazpCU3qXN0ak+kIbM6 7wuEOmWZCTD++CI/Fdb/TjgAJeJ7u3Dtd1I4+xi0f/9BEL4+mwFxWA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-12-04T08:42:30Z" - mac: ENC[AES256_GCM,data:xXdrF1yI19G06GMmL9ZpOVIQGTN0uYpru5weMyFnvSc6Igt+GLznht9V4qIRHLW8gRhd+sfSfNvXptn0FbS9HdI5MfIDTvLLC1nVRVtvPPcWiYPKo5lqiFnCh5HV/3UBNVO+7Wz1/m1JtXEptc1cYhpx2JmFPSvH9dQXedGSgec=,iv:iyc2s2CNYNL1XsryV0a5hQN3Woc5bCjrVtfH7bLDVoo=,tag:4B03cEYJstryEJwHxWhrDw==,type:str] + lastmodified: "2025-12-05T08:30:43Z" + mac: ENC[AES256_GCM,data:LTyEkbTw+SVqAqpB2Zl8slxMM18OOIY3R76iPySkhhtUfwnki7fMExjuniq7tsMJfT4Ssp2jvSsNERsxbhxs/96OnH/CQtDva7N64yW3AM7nn5Ha6vb82YeNWcq2+aEqt1l2AF1Kva6lFzBz4tWT6lfHpfEQonpAOdLxT55dspo=,iv:dTnvZOKZUPYYGKqWS6TbrQMOJnzSCrBcZ0Tul56Da2c=,tag:32HcHZhjLHvov+Rb+cNkcw==,type:str] unencrypted_suffix: _unencrypted version: 3.11.0