Compare commits
36 Commits
152efb84da
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 2fc972ac8a | |||
| b47affa65a | |||
|
|
9f3ad51a33 | ||
|
|
6deda3b619 | ||
|
|
a1bcccca09 | ||
|
|
3e5f6d6862 | ||
| f51c362086 | |||
|
|
a158d401ae | ||
|
|
95842b22f0 | ||
|
|
3977227889 | ||
|
|
cb8ef87229 | ||
|
|
44b3459d49 | ||
|
|
c59ac2ccb6 | ||
|
|
1767debfd8 | ||
|
|
95f08a258e | ||
|
|
c5ba5d4164 | ||
|
|
004eb3c29c | ||
|
|
616d357a59 | ||
|
|
d4481923a8 | ||
|
|
246f65190e | ||
|
|
b6df62a875 | ||
|
|
8d81a1d6e1 | ||
|
|
7368968fd5 | ||
|
|
9a719479bc | ||
|
|
38922cd526 | ||
|
|
26e7fffbd1 | ||
|
|
9792f86548 | ||
|
|
dd9fa58c5c | ||
|
|
db620cd22a | ||
|
|
dab3a37b0a | ||
|
|
74b1825d4d | ||
|
|
c3abeb846d | ||
|
|
d676b6dc1e | ||
|
|
86fffbd512 | ||
|
|
1b5f695f40 | ||
|
|
9491c0356d |
175
flake.lock
generated
175
flake.lock
generated
@@ -25,7 +25,7 @@
|
|||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"napalm": "napalm",
|
"napalm": "napalm",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs-stable"
|
||||||
],
|
],
|
||||||
"pyproject-build-systems": "pyproject-build-systems",
|
"pyproject-build-systems": "pyproject-build-systems",
|
||||||
"pyproject-nix": "pyproject-nix",
|
"pyproject-nix": "pyproject-nix",
|
||||||
@@ -33,11 +33,11 @@
|
|||||||
"uv2nix": "uv2nix"
|
"uv2nix": "uv2nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774079362,
|
"lastModified": 1776085803,
|
||||||
"narHash": "sha256-HkoEWTxU5gNigcnhIa3GXukHqC5xGmgVaLICGUKlpdo=",
|
"narHash": "sha256-JvvWVbXJYSY8qOReMbAOD4lxcN2cjKV6lg/jLz8CEuY=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "authentik-nix",
|
"repo": "authentik-nix",
|
||||||
"rev": "1f279763d8b4a9138c01f1021f53e09bc2c54eb9",
|
"rev": "4370b561c8bafb59773ce3a518506bcf1161dbdb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -49,16 +49,16 @@
|
|||||||
"authentik-src": {
|
"authentik-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772567399,
|
"lastModified": 1775573258,
|
||||||
"narHash": "sha256-0Vpf1hj9C8r+rhrCgwoNazpQ+mwgjdjDhuoKCxYQFWw=",
|
"narHash": "sha256-Xq7JGI/8ppIydIuWd9KRJKUrh7UpeniwvZ4NAtXbYJ4=",
|
||||||
"owner": "goauthentik",
|
"owner": "goauthentik",
|
||||||
"repo": "authentik",
|
"repo": "authentik",
|
||||||
"rev": "0dccbd4193c45c581e9fb7cd89df0c1487510f1f",
|
"rev": "5249546862986202b901c2afd860992ec48c6ef6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "goauthentik",
|
"owner": "goauthentik",
|
||||||
"ref": "version/2026.2.1",
|
"ref": "version/2026.2.2",
|
||||||
"repo": "authentik",
|
"repo": "authentik",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -151,11 +151,11 @@
|
|||||||
"cachyos-kernel": {
|
"cachyos-kernel": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775145950,
|
"lastModified": 1776183001,
|
||||||
"narHash": "sha256-AfVja9nvYHm0BHbuTvn+K8rKfLmPl5QjoiNecp9HOJU=",
|
"narHash": "sha256-lvLKB5dTqjO1S/YonS9ZyWemEjO6QXtN4D76rYEYy4s=",
|
||||||
"owner": "CachyOS",
|
"owner": "CachyOS",
|
||||||
"repo": "linux-cachyos",
|
"repo": "linux-cachyos",
|
||||||
"rev": "b91624f68ceaf5394ef1571f60290dca6ba22b45",
|
"rev": "4224303b6d7a50dd1cc3ffa78864050cc9536eec",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -167,11 +167,11 @@
|
|||||||
"cachyos-kernel-patches": {
|
"cachyos-kernel-patches": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775157685,
|
"lastModified": 1776355454,
|
||||||
"narHash": "sha256-g8HgH7gADoEnrBN30BK3pz7+M2pT/p3xtfRFEuEov5w=",
|
"narHash": "sha256-b9Hc0sTxjEzDbphzS9yQqxVha/7bsPIs2cQQQvaG45E=",
|
||||||
"owner": "CachyOS",
|
"owner": "CachyOS",
|
||||||
"repo": "kernel-patches",
|
"repo": "kernel-patches",
|
||||||
"rev": "c1ba300617a12d257b5721572b9bbe28efae182f",
|
"rev": "b5e029226df5cc30c103651072d49a7af2878202",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -584,11 +584,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775457580,
|
"lastModified": 1776454077,
|
||||||
"narHash": "sha256-ikws/ssAmG20AGrEwBuwspwPlkubJu34mB+Uz2fJBJs=",
|
"narHash": "sha256-7zSUFWsU0+jlD7WB3YAxQ84Z/iJurA5hKPm8EfEyGJk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "5de7dbd151b0bd65d45785553d4a22d832733ffc",
|
"rev": "565e5349208fe7d0831ef959103c9bafbeac0681",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -604,11 +604,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775457580,
|
"lastModified": 1776454077,
|
||||||
"narHash": "sha256-ikws/ssAmG20AGrEwBuwspwPlkubJu34mB+Uz2fJBJs=",
|
"narHash": "sha256-7zSUFWsU0+jlD7WB3YAxQ84Z/iJurA5hKPm8EfEyGJk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "5de7dbd151b0bd65d45785553d4a22d832733ffc",
|
"rev": "565e5349208fe7d0831ef959103c9bafbeac0681",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -658,11 +658,11 @@
|
|||||||
"homebrew-cask": {
|
"homebrew-cask": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775484338,
|
"lastModified": 1776469040,
|
||||||
"narHash": "sha256-ylzTIrXzlCDjz9R3WxFkqqZuPboaVB/W5utc00R3wR4=",
|
"narHash": "sha256-IX5UflSmiXkJnRUCNjzBl4/HMw0NMLQqsfdwA4l0kyU=",
|
||||||
"owner": "homebrew",
|
"owner": "homebrew",
|
||||||
"repo": "homebrew-cask",
|
"repo": "homebrew-cask",
|
||||||
"rev": "fdc3c0fbd192076460dfd1d188ef45d68305397c",
|
"rev": "906ff3d493d3e9f50ceb5041fcc14bcfe3d63ff1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -674,11 +674,11 @@
|
|||||||
"homebrew-core": {
|
"homebrew-core": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775481683,
|
"lastModified": 1776461416,
|
||||||
"narHash": "sha256-3PHpmYBLRXoe6r5Bx5H8jri4gW1410Uk8H8ssDS8BOA=",
|
"narHash": "sha256-AqxPJs6cy7ZwsS2ovNuLxUJM+2kgnEi4ECXitf6nb18=",
|
||||||
"owner": "homebrew",
|
"owner": "homebrew",
|
||||||
"repo": "homebrew-core",
|
"repo": "homebrew-core",
|
||||||
"rev": "f43fd25bcd80d6af26670239676b830351a50144",
|
"rev": "2aab2c98676928d65d72ce7fc2abd5c7f3634319",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -714,11 +714,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775287496,
|
"lastModified": 1776428236,
|
||||||
"narHash": "sha256-tCBlt+RP85MLrMYntro/YvG7NWktbmFiyItGBo85Tf8=",
|
"narHash": "sha256-+0SyQglnT2xUiyY07155G+O7aUWISELwqtTnfURufRU=",
|
||||||
"owner": "Jovian-Experiments",
|
"owner": "Jovian-Experiments",
|
||||||
"repo": "Jovian-NixOS",
|
"repo": "Jovian-NixOS",
|
||||||
"rev": "0a7a3feb77606db451aa10287ad4c4c8f85922f8",
|
"rev": "eac78fc379ca47f7e21be8539c405e5fb489a857",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -757,11 +757,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775501721,
|
"lastModified": 1776442631,
|
||||||
"narHash": "sha256-IU2KcBvb8tulQ8NKz3OXujzOdeWXXv63sNDTjo8gPu4=",
|
"narHash": "sha256-8AXOo0Yhbi3jpQFe4Ql+0HZDz/p708GdrbZVepNjITo=",
|
||||||
"owner": "ggml-org",
|
"owner": "ggml-org",
|
||||||
"repo": "llama.cpp",
|
"repo": "llama.cpp",
|
||||||
"rev": "2e1f0a889e19a3922db57452268f4574c35c36e5",
|
"rev": "45cac7ca703fb9085eae62b9121fca01d20177f6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -825,11 +825,11 @@
|
|||||||
"nixpkgs": "nixpkgs_4"
|
"nixpkgs": "nixpkgs_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775239578,
|
"lastModified": 1776386586,
|
||||||
"narHash": "sha256-MKJmDHlaxwBcnfCUEA89AwKOOONjOjbjHNNWdSdg5RA=",
|
"narHash": "sha256-eVAUaL/6n8mnmBiPpEVW1NDNVSKLWhYVfycG+P0SvWU=",
|
||||||
"owner": "xddxdd",
|
"owner": "xddxdd",
|
||||||
"repo": "nix-cachyos-kernel",
|
"repo": "nix-cachyos-kernel",
|
||||||
"rev": "beaf7a533ae106c2681de2624da94707f9857f1f",
|
"rev": "c65c3faf90ae07bae101c15ef502f0bcb06c5d74",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -886,11 +886,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775365369,
|
"lastModified": 1775970782,
|
||||||
"narHash": "sha256-DgH5mveLoau20CuTnaU5RXZWgFQWn56onQ4Du2CqYoI=",
|
"narHash": "sha256-7jt9Vpm48Yy5yAWigYpde+HxtYEpEuyzIQJF4VYehhk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "cef5cf82671e749ac87d69aadecbb75967e6f6c3",
|
"rev": "bedba5989b04614fc598af9633033b95a937933f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -943,11 +943,11 @@
|
|||||||
"nixpkgs": "nixpkgs_7"
|
"nixpkgs": "nixpkgs_7"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775444751,
|
"lastModified": 1776396489,
|
||||||
"narHash": "sha256-7rAvWDPdSyeul4E0uKuVezJMN69tutpNGpujOODAX10=",
|
"narHash": "sha256-lF3GX4VvQzff/5gpu5WytHKd2GQXJDrWChmK+JNNRO4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-vscode-extensions",
|
"repo": "nix-vscode-extensions",
|
||||||
"rev": "ed33cc3b1eabe6c04af158dd7155c4198b6679fe",
|
"rev": "64839596bff67e8280a2fcd829a858d88530aa6f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -962,11 +962,11 @@
|
|||||||
"nixpkgs": "nixpkgs_8"
|
"nixpkgs": "nixpkgs_8"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774264319,
|
"lastModified": 1776370524,
|
||||||
"narHash": "sha256-aAsO35YtqIdvBhCIKZ0a+OcC8wB0H1+mAoPKBY0jxeQ=",
|
"narHash": "sha256-0Gt5qnjNkIZJdOBfu2u47zgyhYL3WmgUrguUhGSxUdk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixos-apple-silicon",
|
"repo": "nixos-apple-silicon",
|
||||||
"rev": "9fe29a63b23005acfcd1324a9e78b6241226cdb1",
|
"rev": "f9f0650b45e31b3f6c3e2a0405fa198a286e2741",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -977,11 +977,11 @@
|
|||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775203647,
|
"lastModified": 1775490113,
|
||||||
"narHash": "sha256-6MWaMLXK9QMndI94CIxeiPafi3wuO+imCtK9tfhsZdw=",
|
"narHash": "sha256-2ZBhDNZZwYkRmefK5XLOusCJHnoeKkoN95hoSGgMxWM=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "80afbd13eea0b7c4ac188de949e1711b31c2b5f0",
|
"rev": "c775c2772ba56e906cbeb4e0b2db19079ef11ff7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1049,22 +1049,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-otbr": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1766776257,
|
|
||||||
"narHash": "sha256-MG9DnzBn6TdAztaMPVhW9sjYj2bi9Jcux0F0fJ6LeO4=",
|
|
||||||
"owner": "mrene",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "0c4c97066d555b7d27a0a56ee400130ec51f02ee",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "mrene",
|
|
||||||
"ref": "openthread-border-router",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751048012,
|
"lastModified": 1751048012,
|
||||||
@@ -1083,11 +1067,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-stable_2": {
|
"nixpkgs-stable_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775305101,
|
"lastModified": 1776221942,
|
||||||
"narHash": "sha256-/74n1oQPtKG52Yw41cbToxspxHbYz6O3vi+XEw16Qe8=",
|
"narHash": "sha256-FbQAeVNi7G4v3QCSThrSAAvzQTmrmyDLiHNPvTF2qFM=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "36a601196c4ebf49e035270e10b2d103fe39076b",
|
"rev": "1766437c5509f444c1b15331e82b8b6a9b967000",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1099,27 +1083,27 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775036866,
|
"lastModified": 1776447299,
|
||||||
"narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=",
|
"narHash": "sha256-fhkbQptSg6w3CG4TCxalK6UZkj4+Afsi+6p0PuofJ48=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6201e203d09599479a3b3450ed24fa81537ebc4e",
|
"rev": "2c1b4e855f7cded41541747173c697b53c63de9b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable-small",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_10": {
|
"nixpkgs_10": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775126147,
|
"lastModified": 1775888245,
|
||||||
"narHash": "sha256-J0dZU4atgcfo4QvM9D92uQ0Oe1eLTxBVXjJzdEMQpD0=",
|
"narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "8d8c1fa5b412c223ffa47410867813290cdedfef",
|
"rev": "13043924aaa7375ce482ebe2494338e058282925",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1163,11 +1147,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775231746,
|
"lastModified": 1776311487,
|
||||||
"narHash": "sha256-EFaDQ0rnuSjKfC/DUKHS4toV4rEBuWhSgyX2Yy0kp00=",
|
"narHash": "sha256-9U8bL9X/0R9cZD3Uc/mN37AWvv5dB4WQqqjLRAxQfas=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "0eac666efaa8a9afea2821f9efc7921b4ef39b4e",
|
"rev": "cc1e0e027707ad53dddae39d3b3e992262c7d8c7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1243,16 +1227,16 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_9": {
|
"nixpkgs_9": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775036866,
|
"lastModified": 1776447299,
|
||||||
"narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=",
|
"narHash": "sha256-fhkbQptSg6w3CG4TCxalK6UZkj4+Afsi+6p0PuofJ48=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6201e203d09599479a3b3450ed24fa81537ebc4e",
|
"rev": "2c1b4e855f7cded41541747173c697b53c63de9b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable-small",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -1292,11 +1276,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774915545,
|
"lastModified": 1775856943,
|
||||||
"narHash": "sha256-COT4l/+ZddGBvrDVfPf7MEOJxV8EDKame6/aRnNIKcY=",
|
"narHash": "sha256-b7Mp7P+q2Md5AGt4rjHfMcBykzMumFTen10ST++AuTU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "plasma-manager",
|
"repo": "plasma-manager",
|
||||||
"rev": "f3177b3c69fb3f03201098d7fe8ab6422cce7fc1",
|
"rev": "a524a6160e6df89f7673ba293cf7d78b559eb1a5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1337,11 +1321,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775036584,
|
"lastModified": 1775585728,
|
||||||
"narHash": "sha256-zW0lyy7ZNNT/x8JhzFHBsP2IPx7ATZIPai4FJj12BgU=",
|
"narHash": "sha256-8Psjt+TWvE4thRKktJsXfR6PA/fWWsZ04DVaY6PUhr4=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "pre-commit-hooks.nix",
|
"repo": "pre-commit-hooks.nix",
|
||||||
"rev": "4e0eb042b67d863b1b34b3f64d52ceb9cd926735",
|
"rev": "580633fa3fe5fc0379905986543fd7495481913d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1424,7 +1408,6 @@
|
|||||||
"nixos-apple-silicon": "nixos-apple-silicon",
|
"nixos-apple-silicon": "nixos-apple-silicon",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs_9",
|
"nixpkgs": "nixpkgs_9",
|
||||||
"nixpkgs-otbr": "nixpkgs-otbr",
|
|
||||||
"nixpkgs-stable": "nixpkgs-stable_2",
|
"nixpkgs-stable": "nixpkgs-stable_2",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"plasma-manager": "plasma-manager",
|
"plasma-manager": "plasma-manager",
|
||||||
@@ -1505,11 +1488,11 @@
|
|||||||
"nixpkgs": "nixpkgs_10"
|
"nixpkgs": "nixpkgs_10"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775365543,
|
"lastModified": 1776119890,
|
||||||
"narHash": "sha256-f50qrK0WwZ9z5EdaMGWOTtALgSF7yb7XwuE7LjCuDmw=",
|
"narHash": "sha256-Zm6bxLNnEOYuS/SzrAGsYuXSwk3cbkRQZY0fJnk8a5M=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "a4ee2de76efb759fe8d4868c33dec9937897916f",
|
"rev": "d4971dd58c6627bfee52a1ad4237637c0a2fb0cd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1561,11 +1544,11 @@
|
|||||||
"tinted-zed": "tinted-zed"
|
"tinted-zed": "tinted-zed"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775429060,
|
"lastModified": 1776170745,
|
||||||
"narHash": "sha256-wbFF5cRxQOCzL/wHOKYm21t5AHPH2Lfp0mVPCOAvEoc=",
|
"narHash": "sha256-Tl1aZVP5EIlT+k0+iAKH018GLHJpLz3hhJ0LNQOWxCc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "d27951a6539951d87f75cf0a7cda8a3a24016019",
|
"rev": "e3861617645a43c9bbefde1aa6ac54dd0a44bfa9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1712,11 +1695,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775125835,
|
"lastModified": 1775636079,
|
||||||
"narHash": "sha256-2qYcPgzFhnQWchHo0SlqLHrXpux5i6ay6UHA+v2iH4U=",
|
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "75925962939880974e3ab417879daffcba36c4a3",
|
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
{
|
{
|
||||||
inputs = rec {
|
inputs = rec {
|
||||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable-small";
|
||||||
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11";
|
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11";
|
||||||
|
|
||||||
# Fork required: openthread-border-router is not yet in nixpkgs-unstable.
|
|
||||||
# Used by modules/nixos/homeassistant/services/thread/default.nix
|
|
||||||
nixpkgs-otbr.url = "github:mrene/nixpkgs/openthread-border-router";
|
|
||||||
|
|
||||||
home-manager-unstable = {
|
home-manager-unstable = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||||
@@ -47,7 +43,7 @@
|
|||||||
|
|
||||||
authentik-nix = {
|
authentik-nix = {
|
||||||
url = "github:nix-community/authentik-nix";
|
url = "github:nix-community/authentik-nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs-stable";
|
||||||
};
|
};
|
||||||
|
|
||||||
disko = {
|
disko = {
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ in
|
|||||||
jq
|
jq
|
||||||
]
|
]
|
||||||
++ (with pkgs.${namespace}; [
|
++ (with pkgs.${namespace}; [
|
||||||
|
hueforge
|
||||||
moondeck-buddy
|
moondeck-buddy
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
@@ -37,7 +38,7 @@ in
|
|||||||
${namespace} = {
|
${namespace} = {
|
||||||
sops.enable = true;
|
sops.enable = true;
|
||||||
programs.opencode = enabled;
|
programs.opencode = enabled;
|
||||||
# desktop.plasma = enabled;
|
desktop.plasma = enabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
@@ -83,11 +84,14 @@ in
|
|||||||
viAlias = true;
|
viAlias = true;
|
||||||
vimAlias = true;
|
vimAlias = true;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
|
withRuby = false;
|
||||||
|
withPython3 = true;
|
||||||
plugins = [
|
plugins = [
|
||||||
pkgs.vimPlugins.nvim-tree-lua
|
pkgs.vimPlugins.nvim-tree-lua
|
||||||
{
|
{
|
||||||
plugin = pkgs.vimPlugins.vim-startify;
|
plugin = pkgs.vimPlugins.vim-startify;
|
||||||
config = "let g:startify_change_to_vcs_root = 0";
|
config = "let g:startify_change_to_vcs_root = 0";
|
||||||
|
type = "lua";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ in
|
|||||||
ryujinx.enable = true; # Switch (ryubing fork)
|
ryujinx.enable = true; # Switch (ryubing fork)
|
||||||
yuzu.enable = true; # Switch (eden fork)
|
yuzu.enable = true; # Switch (eden fork)
|
||||||
dolphin-emu.enable = true; # GameCube / Wii
|
dolphin-emu.enable = true; # GameCube / Wii
|
||||||
cemu.enable = true; # Wii U
|
cemu.enable = false; # Wii U
|
||||||
melonDS.enable = true; # DS
|
melonDS.enable = true; # DS
|
||||||
citra.enable = true; # 3DS (azahar fork)
|
citra.enable = true; # 3DS (azahar fork)
|
||||||
mgba.enable = true; # Game Boy / GBC
|
mgba.enable = true; # Game Boy / GBC
|
||||||
|
|||||||
@@ -188,7 +188,7 @@ in
|
|||||||
virt-manager
|
virt-manager
|
||||||
vorta
|
vorta
|
||||||
waydroid-helper
|
waydroid-helper
|
||||||
# winboat
|
winboat
|
||||||
]
|
]
|
||||||
++ (with pkgs.${namespace}; [
|
++ (with pkgs.${namespace}; [
|
||||||
discord-krisp
|
discord-krisp
|
||||||
|
|||||||
@@ -179,6 +179,8 @@
|
|||||||
otbr = 8880;
|
otbr = 8880;
|
||||||
otbrRest = 8881;
|
otbrRest = 8881;
|
||||||
esphome = 6052;
|
esphome = 6052;
|
||||||
|
zigbee2mqtt = 8080;
|
||||||
|
govee2mqtt = 4002;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -25,24 +25,28 @@ in
|
|||||||
programs.plasma = {
|
programs.plasma = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
workspace = {
|
configFile.kded5rc = {
|
||||||
colorScheme = "BreezeDark";
|
"Module-gtkconfig"."autoload" = false;
|
||||||
cursor = {
|
|
||||||
theme = "breeze_cursors";
|
|
||||||
size = 24;
|
|
||||||
};
|
|
||||||
iconTheme = "breeze-dark";
|
|
||||||
theme = "breeze-dark";
|
|
||||||
lookAndFeel = "org.kde.breezedark.desktop";
|
|
||||||
# Explicitly set Breeze to prevent QT_STYLE_OVERRIDE=kvantum (set by
|
|
||||||
# Stylix's qt6ct target) from being picked up by KWin/plasmashell, which
|
|
||||||
# would cause a fatal "module kvantum is not installed" QML error and
|
|
||||||
# leave the desktop blank.
|
|
||||||
widgetStyle = "Breeze";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# input.mice and input.touchpads require device-specific vendorId/productId
|
# workspace = {
|
||||||
# identifiers — configure those per-host in the home config instead.
|
# colorScheme = "BreezeDark";
|
||||||
|
# cursor = {
|
||||||
|
# theme = "breeze_cursors";
|
||||||
|
# size = 24;
|
||||||
|
# };
|
||||||
|
# iconTheme = "breeze-dark";
|
||||||
|
# theme = "breeze-dark";
|
||||||
|
# lookAndFeel = "org.kde.breezedark.desktop";
|
||||||
|
# # Explicitly set Breeze to prevent QT_STYLE_OVERRIDE=kvantum (set by
|
||||||
|
# # Stylix's qt6ct target) from being picked up by KWin/plasmashell, which
|
||||||
|
# # would cause a fatal "module kvantum is not installed" QML error and
|
||||||
|
# # leave the desktop blank.
|
||||||
|
# widgetStyle = "Breeze";
|
||||||
|
# };
|
||||||
|
|
||||||
|
# # input.mice and input.touchpads require device-specific vendorId/productId
|
||||||
|
# # identifiers — configure those per-host in the home config instead.
|
||||||
|
|
||||||
kscreenlocker = {
|
kscreenlocker = {
|
||||||
autoLock = true;
|
autoLock = true;
|
||||||
@@ -67,20 +71,20 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
panels = [
|
# panels = [
|
||||||
{
|
# {
|
||||||
location = "bottom";
|
# location = "bottom";
|
||||||
floating = true;
|
# floating = true;
|
||||||
height = 44;
|
# height = 44;
|
||||||
widgets = [
|
# widgets = [
|
||||||
"org.kde.plasma.kickoff"
|
# "org.kde.plasma.kickoff"
|
||||||
"org.kde.plasma.icontasks"
|
# "org.kde.plasma.icontasks"
|
||||||
"org.kde.plasma.marginsseparator"
|
# "org.kde.plasma.marginsseparator"
|
||||||
"org.kde.plasma.systemtray"
|
# "org.kde.plasma.systemtray"
|
||||||
"org.kde.plasma.digitalclock"
|
# "org.kde.plasma.digitalclock"
|
||||||
];
|
# ];
|
||||||
}
|
# }
|
||||||
];
|
# ];
|
||||||
|
|
||||||
shortcuts = {
|
shortcuts = {
|
||||||
kwin = {
|
kwin = {
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ in
|
|||||||
baseURL = "http://${net.hosts.nas.lan}:${toString net.ports.nas.llamaCpp}/v1";
|
baseURL = "http://${net.hosts.nas.lan}:${toString net.ports.nas.llamaCpp}/v1";
|
||||||
};
|
};
|
||||||
models = {
|
models = {
|
||||||
Qwen3-Coder-Next-Q4_0 = {
|
"gemma-4-26B-A4B-it-UD-Q8_K_XL" = {
|
||||||
name = "Qwen3 Coder (local)";
|
name = "Gemma 4 26B-A4B (local)";
|
||||||
modalities = {
|
modalities = {
|
||||||
input = [
|
input = [
|
||||||
"image"
|
"image"
|
||||||
@@ -47,8 +47,8 @@ in
|
|||||||
output = [ "text" ];
|
output = [ "text" ];
|
||||||
};
|
};
|
||||||
limit = {
|
limit = {
|
||||||
context = 131072;
|
context = 32768;
|
||||||
output = 32768;
|
output = 8192;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -35,6 +35,10 @@ in
|
|||||||
enable = true;
|
enable = true;
|
||||||
wayland.enable = cfg.wayland.enable;
|
wayland.enable = cfg.wayland.enable;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Required for Bluetooth D-Bus policy (allows WirePlumber/PipeWire
|
||||||
|
# to communicate with bluetoothd on the system bus).
|
||||||
|
blueman.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.portal.extraPortals = [ ];
|
xdg.portal.extraPortals = [ ];
|
||||||
|
|||||||
202
modules/nixos/homeassistant/services/esphome/bedroom.yaml
Normal file
202
modules/nixos/homeassistant/services/esphome/bedroom.yaml
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
############################################################
|
||||||
|
# SmartDisplay – Bedroom
|
||||||
|
# Tiles: Lights | Lamp | Fan | Air Purifier | Closet | BedJet
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
substitutions:
|
||||||
|
|
||||||
|
DIRECT_ACTIONS: "true"
|
||||||
|
ROOM_NAME: "Bedroom"
|
||||||
|
TIME_24H: "false"
|
||||||
|
|
||||||
|
# ── TILE 1 – Bedroom Lights (group) ─────────────────────
|
||||||
|
TILE1_ENTITY: "light.bedroom_lights"
|
||||||
|
TILE1_STATE_ENTITY: "light.bedroom_light_1"
|
||||||
|
TILE1_TITLE: "Lights"
|
||||||
|
TILE1_ICON: "\U000F0769"
|
||||||
|
TILE1_TYPE: "light"
|
||||||
|
TILE1_TAP_ACTION: "toggle"
|
||||||
|
TILE1_LONGPRESS: "auto"
|
||||||
|
TILE1_VALUE_MODE: "auto"
|
||||||
|
TILE1_LABEL_OFF: "Off"
|
||||||
|
TILE1_LABEL_ON: "On"
|
||||||
|
TILE1_CIRCLE_ACTIVE_COLOR: "0xFEC600"
|
||||||
|
TILE1_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE1_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_ICON_DISABLED_COLOR: "0xFEC600"
|
||||||
|
TILE1_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE1_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE1_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE1_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE1_TAP_SERVICE: ""
|
||||||
|
TILE1_TAP_PARAM_KEY: ""
|
||||||
|
TILE1_TAP_PARAM_VAL: ""
|
||||||
|
TILE1_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 2 – Bedroom Lamp ────────────────────────────────
|
||||||
|
TILE2_ENTITY: "light.bedroom_lamp"
|
||||||
|
TILE2_STATE_ENTITY: "light.bedroom_lamp"
|
||||||
|
TILE2_TITLE: "Lamp"
|
||||||
|
TILE2_ICON: "\U000F06B5"
|
||||||
|
TILE2_TYPE: "light"
|
||||||
|
TILE2_TAP_ACTION: "auto"
|
||||||
|
TILE2_LONGPRESS: "auto"
|
||||||
|
TILE2_VALUE_MODE: "auto"
|
||||||
|
TILE2_LABEL_OFF: "Off"
|
||||||
|
TILE2_LABEL_ON: "On"
|
||||||
|
TILE2_CIRCLE_ACTIVE_COLOR: "0xFEC600"
|
||||||
|
TILE2_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE2_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_ICON_DISABLED_COLOR: "0xFEC600"
|
||||||
|
TILE2_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE2_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE2_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE2_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE2_TAP_SERVICE: ""
|
||||||
|
TILE2_TAP_PARAM_KEY: ""
|
||||||
|
TILE2_TAP_PARAM_VAL: ""
|
||||||
|
TILE2_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 3 – Bedroom Fan ─────────────────────────────────
|
||||||
|
TILE3_ENTITY: "fan.bedroom_fan"
|
||||||
|
TILE3_STATE_ENTITY: "fan.bedroom_fan"
|
||||||
|
TILE3_TITLE: "Bedroom Fan"
|
||||||
|
TILE3_ICON: "\U000F0210"
|
||||||
|
TILE3_TYPE: "fan"
|
||||||
|
TILE3_TAP_ACTION: "fan_toggle_preset"
|
||||||
|
TILE3_LONGPRESS: "auto"
|
||||||
|
TILE3_VALUE_MODE: "auto"
|
||||||
|
TILE3_LABEL_OFF: "Off"
|
||||||
|
TILE3_LABEL_ON: "On"
|
||||||
|
TILE3_CIRCLE_ACTIVE_COLOR: "0x00C5EC"
|
||||||
|
TILE3_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE3_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_ICON_DISABLED_COLOR: "0x00C5EC"
|
||||||
|
TILE3_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE3_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE3_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE3_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE3_TAP_SERVICE: "fan.toggle"
|
||||||
|
TILE3_TAP_PARAM_KEY: ""
|
||||||
|
TILE3_TAP_PARAM_VAL: ""
|
||||||
|
TILE3_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 4 – Air Purifier ────────────────────────────────
|
||||||
|
TILE4_ENTITY: "fan.bedroom_air_purifier"
|
||||||
|
TILE4_STATE_ENTITY: "fan.bedroom_air_purifier"
|
||||||
|
TILE4_TITLE: "Air Purifier"
|
||||||
|
TILE4_ICON: "\U000F0D43"
|
||||||
|
TILE4_TYPE: "fan"
|
||||||
|
TILE4_TAP_ACTION: "fan_toggle_preset"
|
||||||
|
TILE4_LONGPRESS: "auto"
|
||||||
|
TILE4_VALUE_MODE: "auto"
|
||||||
|
TILE4_LABEL_OFF: "Off"
|
||||||
|
TILE4_LABEL_ON: "On"
|
||||||
|
TILE4_CIRCLE_ACTIVE_COLOR: "0x00C5EC"
|
||||||
|
TILE4_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE4_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_ICON_DISABLED_COLOR: "0x00C5EC"
|
||||||
|
TILE4_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE4_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE4_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE4_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE4_TAP_SERVICE: "fan.toggle"
|
||||||
|
TILE4_TAP_PARAM_KEY: "preset_mode"
|
||||||
|
TILE4_TAP_PARAM_VAL: "auto"
|
||||||
|
TILE4_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 5 – Front Closet Lights ────────────────────────
|
||||||
|
TILE5_ENTITY: "light.front_closet_lights"
|
||||||
|
TILE5_STATE_ENTITY: "light.front_closet_light_1"
|
||||||
|
TILE5_TITLE: "Closet"
|
||||||
|
TILE5_ICON: "\U000F1051"
|
||||||
|
TILE5_TYPE: "light"
|
||||||
|
TILE5_TAP_ACTION: "toggle"
|
||||||
|
TILE5_LONGPRESS: "none"
|
||||||
|
TILE5_VALUE_MODE: "auto"
|
||||||
|
TILE5_LABEL_OFF: "Off"
|
||||||
|
TILE5_LABEL_ON: "On"
|
||||||
|
TILE5_CIRCLE_ACTIVE_COLOR: "0xFEC600"
|
||||||
|
TILE5_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE5_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_ICON_DISABLED_COLOR: "0xFEC600"
|
||||||
|
TILE5_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE5_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE5_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE5_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE5_TAP_SERVICE: ""
|
||||||
|
TILE5_TAP_PARAM_KEY: ""
|
||||||
|
TILE5_TAP_PARAM_VAL: ""
|
||||||
|
TILE5_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 6 – BedJet ─────────────────────────────────────
|
||||||
|
TILE6_ENTITY: "fan.bedjet_dbbf_c222"
|
||||||
|
TILE6_STATE_ENTITY: "fan.bedjet_dbbf_c222"
|
||||||
|
TILE6_TITLE: "BedJet"
|
||||||
|
TILE6_ICON: "\U000F07E4"
|
||||||
|
TILE6_TYPE: "fan"
|
||||||
|
TILE6_TAP_ACTION: "toggle"
|
||||||
|
TILE6_LONGPRESS: "auto"
|
||||||
|
TILE6_VALUE_MODE: "percentage"
|
||||||
|
TILE6_LABEL_OFF: "Off"
|
||||||
|
TILE6_LABEL_ON: "On"
|
||||||
|
TILE6_CIRCLE_ACTIVE_COLOR: "0xFF6B35"
|
||||||
|
TILE6_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE6_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_ICON_DISABLED_COLOR: "0xFF6B35"
|
||||||
|
TILE6_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE6_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE6_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE6_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE6_TAP_SERVICE: "fan.toggle"
|
||||||
|
TILE6_TAP_PARAM_KEY: ""
|
||||||
|
TILE6_TAP_PARAM_VAL: ""
|
||||||
|
TILE6_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
packages:
|
||||||
|
hw: !include cyd-base-hw.yaml
|
||||||
|
ui: !include cyd-base-ui.yaml
|
||||||
|
|
||||||
|
esphome:
|
||||||
|
name: bedroom-display
|
||||||
|
friendly_name: BedroomDisplay
|
||||||
|
on_boot:
|
||||||
|
priority: 600
|
||||||
|
then:
|
||||||
|
- script.execute: ui_refresh
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
logger:
|
||||||
|
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: !secret api_encryption_key
|
||||||
|
|
||||||
|
ota:
|
||||||
|
- platform: esphome
|
||||||
|
password: !secret ota_password
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
ap:
|
||||||
|
ssid: "BedroomDisplay Fallback"
|
||||||
|
password: !secret ota_password
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
306
modules/nixos/homeassistant/services/esphome/cyd-base-hw.yaml
Normal file
306
modules/nixos/homeassistant/services/esphome/cyd-base-hw.yaml
Normal file
@@ -0,0 +1,306 @@
|
|||||||
|
############################################################
|
||||||
|
# CYD Base – Hardware layer
|
||||||
|
# ESP32-2432S028 (Cheap Yellow Display)
|
||||||
|
# Include via: packages: !include cyd-base-hw.yaml
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
time:
|
||||||
|
- platform: homeassistant
|
||||||
|
id: homeassistant_time
|
||||||
|
on_time:
|
||||||
|
- seconds: 0
|
||||||
|
minutes: /1
|
||||||
|
then:
|
||||||
|
- script.execute: ui_refresh
|
||||||
|
|
||||||
|
globals:
|
||||||
|
- id: active_entity
|
||||||
|
type: std::string
|
||||||
|
restore_value: no
|
||||||
|
- id: active_control_kind
|
||||||
|
type: std::string
|
||||||
|
restore_value: no
|
||||||
|
- id: active_value_suffix
|
||||||
|
type: std::string
|
||||||
|
restore_value: no
|
||||||
|
- id: overlay_slider_bg_color
|
||||||
|
type: uint32_t
|
||||||
|
restore_value: no
|
||||||
|
initial_value: '0x939391'
|
||||||
|
- id: overlay_slider_fill_color
|
||||||
|
type: uint32_t
|
||||||
|
restore_value: no
|
||||||
|
initial_value: '0xFEC600'
|
||||||
|
|
||||||
|
font:
|
||||||
|
- file: "gfonts://Roboto@500"
|
||||||
|
id: time_label
|
||||||
|
size: 18
|
||||||
|
bpp: 4
|
||||||
|
glyphs: ['0','1','2','3','4','5','6','7','8','9',':',' ','A','M','P']
|
||||||
|
|
||||||
|
- file: "gfonts://Roboto@500"
|
||||||
|
id: headline
|
||||||
|
size: 18
|
||||||
|
bpp: 4
|
||||||
|
glyphs: ['&','@','!',',','.','?','"','%','(',')','+','-','_',':','°',
|
||||||
|
'0','1','2','3','4','5','6','7','8','9',
|
||||||
|
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
|
||||||
|
' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
|
||||||
|
'ä','ö','ü','Ä','Ö','Ü','ß','/']
|
||||||
|
|
||||||
|
- file: "gfonts://Roboto@700"
|
||||||
|
id: label
|
||||||
|
size: 11
|
||||||
|
bpp: 4
|
||||||
|
glyphs: ['&','@','!',',','.','?','"','%','(',')','+','-','_',':','°',
|
||||||
|
'0','1','2','3','4','5','6','7','8','9',
|
||||||
|
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
|
||||||
|
' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
|
||||||
|
'ä','ö','ü','Ä','Ö','Ü','ß','/']
|
||||||
|
|
||||||
|
- file: "gfonts://Roboto@400"
|
||||||
|
id: sublabel
|
||||||
|
size: 11
|
||||||
|
bpp: 4
|
||||||
|
glyphs: ['&','@','!',',','.','?','"','%','(',')','+','-','_',':','°',
|
||||||
|
'0','1','2','3','4','5','6','7','8','9',
|
||||||
|
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
|
||||||
|
' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
|
||||||
|
'ä','ö','ü','Ä','Ö','Ü','ß','/','…']
|
||||||
|
|
||||||
|
- file: "gfonts://Roboto@400"
|
||||||
|
id: sublabel_big
|
||||||
|
size: 14
|
||||||
|
bpp: 4
|
||||||
|
glyphs: ['&','@','!',',','.','?','"','%','(',')','+','-','_',':','°',
|
||||||
|
'0','1','2','3','4','5','6','7','8','9',
|
||||||
|
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
|
||||||
|
' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
|
||||||
|
'ä','ö','ü','Ä','Ö','Ü','ß','/','…']
|
||||||
|
|
||||||
|
- file: 'fonts/materialdesignicons-webfont.ttf'
|
||||||
|
id: materialdesign_icons
|
||||||
|
size: 28
|
||||||
|
glyphs:
|
||||||
|
- "${TILE1_ICON}"
|
||||||
|
- "${TILE2_ICON}"
|
||||||
|
- "${TILE3_ICON}"
|
||||||
|
- "${TILE4_ICON}"
|
||||||
|
- "${TILE5_ICON}"
|
||||||
|
- "${TILE6_ICON}"
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: wifi_signal
|
||||||
|
name: "Wifi Signal"
|
||||||
|
update_interval: 600s
|
||||||
|
- platform: uptime
|
||||||
|
name: "Uptime"
|
||||||
|
id: uptime_s
|
||||||
|
update_interval: 15s
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile1_brightness
|
||||||
|
entity_id: ${TILE1_ENTITY}
|
||||||
|
attribute: brightness
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile1_percentage
|
||||||
|
entity_id: ${TILE1_ENTITY}
|
||||||
|
attribute: percentage
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile2_brightness
|
||||||
|
entity_id: ${TILE2_ENTITY}
|
||||||
|
attribute: brightness
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile2_percentage
|
||||||
|
entity_id: ${TILE2_ENTITY}
|
||||||
|
attribute: percentage
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile3_brightness
|
||||||
|
entity_id: ${TILE3_ENTITY}
|
||||||
|
attribute: brightness
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile3_percentage
|
||||||
|
entity_id: ${TILE3_ENTITY}
|
||||||
|
attribute: percentage
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile4_brightness
|
||||||
|
entity_id: ${TILE4_ENTITY}
|
||||||
|
attribute: brightness
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile4_percentage
|
||||||
|
entity_id: ${TILE4_ENTITY}
|
||||||
|
attribute: percentage
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile5_brightness
|
||||||
|
entity_id: ${TILE5_ENTITY}
|
||||||
|
attribute: brightness
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile5_percentage
|
||||||
|
entity_id: ${TILE5_ENTITY}
|
||||||
|
attribute: percentage
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile6_brightness
|
||||||
|
entity_id: ${TILE6_ENTITY}
|
||||||
|
attribute: brightness
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile6_percentage
|
||||||
|
entity_id: ${TILE6_ENTITY}
|
||||||
|
attribute: percentage
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- platform: status
|
||||||
|
name: "Node Status"
|
||||||
|
id: system_status
|
||||||
|
- platform: homeassistant
|
||||||
|
id: ha_state_tile1
|
||||||
|
entity_id: ${TILE1_STATE_ENTITY}
|
||||||
|
on_state: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: ha_state_tile2
|
||||||
|
entity_id: ${TILE2_STATE_ENTITY}
|
||||||
|
on_state: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: ha_state_tile3
|
||||||
|
entity_id: ${TILE3_STATE_ENTITY}
|
||||||
|
on_state: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: ha_state_tile4
|
||||||
|
entity_id: ${TILE4_STATE_ENTITY}
|
||||||
|
on_state: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: ha_state_tile5
|
||||||
|
entity_id: ${TILE5_STATE_ENTITY}
|
||||||
|
on_state: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: ha_state_tile6
|
||||||
|
entity_id: ${TILE6_STATE_ENTITY}
|
||||||
|
on_state: { then: [ script.execute: ui_refresh ] }
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: template
|
||||||
|
id: smartdisplay_action
|
||||||
|
name: "${ROOM_NAME} Action"
|
||||||
|
icon: mdi:gesture-tap-button
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile1_preset
|
||||||
|
entity_id: ${TILE1_ENTITY}
|
||||||
|
attribute: preset_mode
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile2_preset
|
||||||
|
entity_id: ${TILE2_ENTITY}
|
||||||
|
attribute: preset_mode
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile3_preset
|
||||||
|
entity_id: ${TILE3_ENTITY}
|
||||||
|
attribute: preset_mode
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile4_preset
|
||||||
|
entity_id: ${TILE4_ENTITY}
|
||||||
|
attribute: preset_mode
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile5_preset
|
||||||
|
entity_id: ${TILE5_ENTITY}
|
||||||
|
attribute: preset_mode
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
- platform: homeassistant
|
||||||
|
id: tile6_preset
|
||||||
|
entity_id: ${TILE6_ENTITY}
|
||||||
|
attribute: preset_mode
|
||||||
|
on_value: { then: [ script.execute: ui_refresh ] }
|
||||||
|
|
||||||
|
switch:
|
||||||
|
- platform: restart
|
||||||
|
name: "Restart"
|
||||||
|
|
||||||
|
spi:
|
||||||
|
- id: lcd
|
||||||
|
clk_pin: GPIO14
|
||||||
|
mosi_pin: GPIO13
|
||||||
|
miso_pin: GPIO12
|
||||||
|
- id: my_touchscreen
|
||||||
|
clk_pin: GPIO25
|
||||||
|
mosi_pin: GPIO32
|
||||||
|
miso_pin: GPIO39
|
||||||
|
|
||||||
|
output:
|
||||||
|
- platform: ledc
|
||||||
|
pin: GPIO21
|
||||||
|
id: gpio_backlight_pwm
|
||||||
|
- platform: ledc
|
||||||
|
id: output_red
|
||||||
|
pin: GPIO4
|
||||||
|
inverted: true
|
||||||
|
- platform: ledc
|
||||||
|
id: output_green
|
||||||
|
pin: GPIO16
|
||||||
|
inverted: true
|
||||||
|
- platform: ledc
|
||||||
|
id: output_blue
|
||||||
|
pin: GPIO17
|
||||||
|
inverted: true
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: monochromatic
|
||||||
|
output: gpio_backlight_pwm
|
||||||
|
name: "Power Display Backlight"
|
||||||
|
id: back_light
|
||||||
|
restore_mode: ALWAYS_ON
|
||||||
|
- platform: rgb
|
||||||
|
name: LED
|
||||||
|
red: output_red
|
||||||
|
id: led
|
||||||
|
green: output_green
|
||||||
|
blue: output_blue
|
||||||
|
restore_mode: ALWAYS_OFF
|
||||||
|
|
||||||
|
touchscreen:
|
||||||
|
platform: xpt2046
|
||||||
|
id: ts_touch
|
||||||
|
spi_id: my_touchscreen
|
||||||
|
cs_pin: 33
|
||||||
|
interrupt_pin: 36
|
||||||
|
update_interval: 20ms
|
||||||
|
threshold: 300
|
||||||
|
calibration:
|
||||||
|
x_min: 280
|
||||||
|
x_max: 3860
|
||||||
|
y_min: 340
|
||||||
|
y_max: 3860
|
||||||
|
transform:
|
||||||
|
swap_xy: true
|
||||||
|
mirror_x: true
|
||||||
|
mirror_y: true
|
||||||
|
|
||||||
|
display:
|
||||||
|
- platform: ili9xxx
|
||||||
|
id: my_display
|
||||||
|
spi_id: lcd
|
||||||
|
model: ILI9341
|
||||||
|
cs_pin: 15
|
||||||
|
dc_pin: 2
|
||||||
|
invert_colors: false
|
||||||
|
update_interval: never
|
||||||
|
auto_clear_enabled: false
|
||||||
|
transform:
|
||||||
|
swap_xy: false
|
||||||
|
mirror_x: true
|
||||||
|
mirror_y: false
|
||||||
|
dimensions:
|
||||||
|
width: 320
|
||||||
|
height: 240
|
||||||
1077
modules/nixos/homeassistant/services/esphome/cyd-base-ui.yaml
Normal file
1077
modules/nixos/homeassistant/services/esphome/cyd-base-ui.yaml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -13,7 +13,10 @@ in
|
|||||||
virtualisation.oci-containers.containers.esphome = {
|
virtualisation.oci-containers.containers.esphome = {
|
||||||
autoStart = true;
|
autoStart = true;
|
||||||
image = "ghcr.io/esphome/esphome";
|
image = "ghcr.io/esphome/esphome";
|
||||||
ports = [ "6052:6052" ];
|
# host networking is required for mDNS (multicast UDP) to work so that
|
||||||
|
# ESPHome can discover devices via <name>.local and perform OTA updates
|
||||||
|
# without needing to know device IPs in advance.
|
||||||
|
extraOptions = [ "--network=host" ];
|
||||||
devices = [
|
devices = [
|
||||||
"/dev/ttyUSB0"
|
"/dev/ttyUSB0"
|
||||||
];
|
];
|
||||||
|
|||||||
207
modules/nixos/homeassistant/services/esphome/home-like.yaml
Normal file
207
modules/nixos/homeassistant/services/esphome/home-like.yaml
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
############################################################
|
||||||
|
# SmartDisplay – iOS Home app–inspired Tiles UI
|
||||||
|
# Target device: ESP32-2432S028 / Cheap Yellow Display (CYD)
|
||||||
|
#
|
||||||
|
# Edit the substitutions below, then flash.
|
||||||
|
# All shared hardware/UI logic lives in:
|
||||||
|
# cyd-base-hw.yaml – sensors, fonts, SPI, display, touch
|
||||||
|
# cyd-base-ui.yaml – LVGL layout, scripts
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
substitutions:
|
||||||
|
|
||||||
|
DIRECT_ACTIONS: "true"
|
||||||
|
ROOM_NAME: "Bedroom"
|
||||||
|
TIME_24H: "false"
|
||||||
|
|
||||||
|
# ── TILE 1 ──────────────────────────────────────────────
|
||||||
|
TILE1_ENTITY: "light.bedroom_lights"
|
||||||
|
TILE1_STATE_ENTITY: "light.bedroom_light_1"
|
||||||
|
TILE1_TITLE: "Lights"
|
||||||
|
TILE1_ICON: "\U000F0769"
|
||||||
|
TILE1_TYPE: "light"
|
||||||
|
TILE1_TAP_ACTION: "toggle"
|
||||||
|
TILE1_LONGPRESS: "auto"
|
||||||
|
TILE1_VALUE_MODE: "auto"
|
||||||
|
TILE1_LABEL_OFF: "Off"
|
||||||
|
TILE1_LABEL_ON: "On"
|
||||||
|
TILE1_CIRCLE_ACTIVE_COLOR: "0xFEC600"
|
||||||
|
TILE1_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE1_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_ICON_DISABLED_COLOR: "0xFEC600"
|
||||||
|
TILE1_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE1_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE1_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE1_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE1_TAP_SERVICE: ""
|
||||||
|
TILE1_TAP_PARAM_KEY: ""
|
||||||
|
TILE1_TAP_PARAM_VAL: ""
|
||||||
|
TILE1_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 2 ──────────────────────────────────────────────
|
||||||
|
TILE2_ENTITY: "light.bedroom_lamp"
|
||||||
|
TILE2_STATE_ENTITY: "light.bedroom_lamp"
|
||||||
|
TILE2_TITLE: "Lamp"
|
||||||
|
TILE2_ICON: "\U000F06B5"
|
||||||
|
TILE2_TYPE: "light"
|
||||||
|
TILE2_TAP_ACTION: "auto"
|
||||||
|
TILE2_LONGPRESS: "auto"
|
||||||
|
TILE2_VALUE_MODE: "auto"
|
||||||
|
TILE2_LABEL_OFF: "Off"
|
||||||
|
TILE2_LABEL_ON: "On"
|
||||||
|
TILE2_CIRCLE_ACTIVE_COLOR: "0xFEC600"
|
||||||
|
TILE2_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE2_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_ICON_DISABLED_COLOR: "0xFEC600"
|
||||||
|
TILE2_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE2_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE2_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE2_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE2_TAP_SERVICE: ""
|
||||||
|
TILE2_TAP_PARAM_KEY: ""
|
||||||
|
TILE2_TAP_PARAM_VAL: ""
|
||||||
|
TILE2_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 3 ──────────────────────────────────────────────
|
||||||
|
TILE3_ENTITY: "light.living_room_lights"
|
||||||
|
TILE3_STATE_ENTITY: "light.living_room_lights"
|
||||||
|
TILE3_TITLE: "Living Room"
|
||||||
|
TILE3_ICON: "\U000F08DD"
|
||||||
|
TILE3_TYPE: "light"
|
||||||
|
TILE3_TAP_ACTION: "auto"
|
||||||
|
TILE3_LONGPRESS: "auto"
|
||||||
|
TILE3_VALUE_MODE: "auto"
|
||||||
|
TILE3_LABEL_OFF: "Off"
|
||||||
|
TILE3_LABEL_ON: "On"
|
||||||
|
TILE3_CIRCLE_ACTIVE_COLOR: "0xFEC600"
|
||||||
|
TILE3_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE3_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_ICON_DISABLED_COLOR: "0xFEC600"
|
||||||
|
TILE3_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE3_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE3_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE3_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE3_TAP_SERVICE: ""
|
||||||
|
TILE3_TAP_PARAM_KEY: ""
|
||||||
|
TILE3_TAP_PARAM_VAL: ""
|
||||||
|
TILE3_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 4 ──────────────────────────────────────────────
|
||||||
|
TILE4_ENTITY: "switch.closet_lights"
|
||||||
|
TILE4_STATE_ENTITY: "switch.closet_lights"
|
||||||
|
TILE4_TITLE: "Closet Lights"
|
||||||
|
TILE4_ICON: "\U000F1051"
|
||||||
|
TILE4_TYPE: "light"
|
||||||
|
TILE4_TAP_ACTION: "auto"
|
||||||
|
TILE4_LONGPRESS: "auto"
|
||||||
|
TILE4_VALUE_MODE: "auto"
|
||||||
|
TILE4_LABEL_OFF: "Off"
|
||||||
|
TILE4_LABEL_ON: "On"
|
||||||
|
TILE4_CIRCLE_ACTIVE_COLOR: "0xFEC600"
|
||||||
|
TILE4_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE4_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_ICON_DISABLED_COLOR: "0xFEC600"
|
||||||
|
TILE4_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE4_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE4_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE4_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE4_TAP_SERVICE: ""
|
||||||
|
TILE4_TAP_PARAM_KEY: ""
|
||||||
|
TILE4_TAP_PARAM_VAL: ""
|
||||||
|
TILE4_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 5 ──────────────────────────────────────────────
|
||||||
|
TILE5_ENTITY: "fan.bedroom_fan"
|
||||||
|
TILE5_STATE_ENTITY: "fan.bedroom_fan"
|
||||||
|
TILE5_TITLE: "Bedroom Fan"
|
||||||
|
TILE5_ICON: "\U000F0210"
|
||||||
|
TILE5_TYPE: "fan"
|
||||||
|
TILE5_TAP_ACTION: "auto"
|
||||||
|
TILE5_LONGPRESS: "auto"
|
||||||
|
TILE5_VALUE_MODE: "auto"
|
||||||
|
TILE5_LABEL_OFF: "Off"
|
||||||
|
TILE5_LABEL_ON: "On"
|
||||||
|
TILE5_CIRCLE_ACTIVE_COLOR: "0xFEC600"
|
||||||
|
TILE5_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE5_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_ICON_DISABLED_COLOR: "0xFEC600"
|
||||||
|
TILE5_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE5_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE5_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE5_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE5_TAP_SERVICE: ""
|
||||||
|
TILE5_TAP_PARAM_KEY: ""
|
||||||
|
TILE5_TAP_PARAM_VAL: ""
|
||||||
|
TILE5_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 6 ──────────────────────────────────────────────
|
||||||
|
TILE6_ENTITY: "fan.bedroom_air_purifier"
|
||||||
|
TILE6_STATE_ENTITY: "fan.bedroom_air_purifier"
|
||||||
|
TILE6_TITLE: "Air Purifier"
|
||||||
|
TILE6_ICON: "\U000F0D43"
|
||||||
|
TILE6_TYPE: "fan"
|
||||||
|
TILE6_TAP_ACTION: "fan_toggle_preset"
|
||||||
|
TILE6_LONGPRESS: "auto"
|
||||||
|
TILE6_VALUE_MODE: "auto"
|
||||||
|
TILE6_LABEL_OFF: "Off"
|
||||||
|
TILE6_LABEL_ON: "On"
|
||||||
|
TILE6_CIRCLE_ACTIVE_COLOR: "0x00C5EC"
|
||||||
|
TILE6_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE6_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_ICON_DISABLED_COLOR: "0x00C5EC"
|
||||||
|
TILE6_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE6_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE6_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE6_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE6_TAP_SERVICE: "fan.toggle"
|
||||||
|
TILE6_TAP_PARAM_KEY: "preset_mode"
|
||||||
|
TILE6_TAP_PARAM_VAL: "Auto"
|
||||||
|
TILE6_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
packages:
|
||||||
|
hw: !include cyd-base-hw.yaml
|
||||||
|
ui: !include cyd-base-ui.yaml
|
||||||
|
|
||||||
|
esphome:
|
||||||
|
name: smartdisplay
|
||||||
|
friendly_name: SmartDisplay
|
||||||
|
on_boot:
|
||||||
|
priority: 600
|
||||||
|
then:
|
||||||
|
- script.execute: ui_refresh
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
logger:
|
||||||
|
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: !secret api_encryption_key
|
||||||
|
|
||||||
|
ota:
|
||||||
|
- platform: esphome
|
||||||
|
password: !secret ota_password
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
ap:
|
||||||
|
ssid: "Smartdisplay Fallback"
|
||||||
|
password: !secret ota_password
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
202
modules/nixos/homeassistant/services/esphome/living-room.yaml
Normal file
202
modules/nixos/homeassistant/services/esphome/living-room.yaml
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
############################################################
|
||||||
|
# SmartDisplay – Living Room
|
||||||
|
# Tiles: Lights | Air Purifier | Vacuum | TV | Speaker | Closet
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
substitutions:
|
||||||
|
|
||||||
|
DIRECT_ACTIONS: "true"
|
||||||
|
ROOM_NAME: "Living Room"
|
||||||
|
TIME_24H: "false"
|
||||||
|
|
||||||
|
# ── TILE 1 – Living Room Lights ──────────────────────────
|
||||||
|
TILE1_ENTITY: "light.living_room_lights"
|
||||||
|
TILE1_STATE_ENTITY: "light.living_room_light_1"
|
||||||
|
TILE1_TITLE: "Lights"
|
||||||
|
TILE1_ICON: "\U000F08DD"
|
||||||
|
TILE1_TYPE: "light"
|
||||||
|
TILE1_TAP_ACTION: "toggle"
|
||||||
|
TILE1_LONGPRESS: "auto"
|
||||||
|
TILE1_VALUE_MODE: "auto"
|
||||||
|
TILE1_LABEL_OFF: "Off"
|
||||||
|
TILE1_LABEL_ON: "On"
|
||||||
|
TILE1_CIRCLE_ACTIVE_COLOR: "0xFEC600"
|
||||||
|
TILE1_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE1_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_ICON_DISABLED_COLOR: "0xFEC600"
|
||||||
|
TILE1_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE1_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE1_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE1_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE1_TAP_SERVICE: ""
|
||||||
|
TILE1_TAP_PARAM_KEY: ""
|
||||||
|
TILE1_TAP_PARAM_VAL: ""
|
||||||
|
TILE1_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 2 – Living Room Air Purifier ───────────────────
|
||||||
|
TILE2_ENTITY: "fan.living_room_air_purifier"
|
||||||
|
TILE2_STATE_ENTITY: "fan.living_room_air_purifier"
|
||||||
|
TILE2_TITLE: "Air Purifier"
|
||||||
|
TILE2_ICON: "\U000F0D43"
|
||||||
|
TILE2_TYPE: "fan"
|
||||||
|
TILE2_TAP_ACTION: "fan_toggle_preset"
|
||||||
|
TILE2_LONGPRESS: "auto"
|
||||||
|
TILE2_VALUE_MODE: "auto"
|
||||||
|
TILE2_LABEL_OFF: "Off"
|
||||||
|
TILE2_LABEL_ON: "On"
|
||||||
|
TILE2_CIRCLE_ACTIVE_COLOR: "0x00C5EC"
|
||||||
|
TILE2_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE2_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_ICON_DISABLED_COLOR: "0x00C5EC"
|
||||||
|
TILE2_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE2_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE2_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE2_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE2_TAP_SERVICE: "fan.toggle"
|
||||||
|
TILE2_TAP_PARAM_KEY: "preset_mode"
|
||||||
|
TILE2_TAP_PARAM_VAL: "auto"
|
||||||
|
TILE2_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 3 – Garbage Goober (vacuum) ────────────────────
|
||||||
|
TILE3_ENTITY: "vacuum.garbage_goober"
|
||||||
|
TILE3_STATE_ENTITY: "binary_sensor.garbage_goober_cleaning"
|
||||||
|
TILE3_TITLE: "Vacuum"
|
||||||
|
TILE3_ICON: "\U000F09A8"
|
||||||
|
TILE3_TYPE: "switch"
|
||||||
|
TILE3_TAP_ACTION: "custom"
|
||||||
|
TILE3_LONGPRESS: "none"
|
||||||
|
TILE3_VALUE_MODE: "text"
|
||||||
|
TILE3_LABEL_OFF: "Docked"
|
||||||
|
TILE3_LABEL_ON: "Cleaning"
|
||||||
|
TILE3_CIRCLE_ACTIVE_COLOR: "0x43A047"
|
||||||
|
TILE3_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE3_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_ICON_DISABLED_COLOR: "0x43A047"
|
||||||
|
TILE3_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE3_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE3_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE3_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE3_TAP_SERVICE: "vacuum.start_pause"
|
||||||
|
TILE3_TAP_PARAM_KEY: ""
|
||||||
|
TILE3_TAP_PARAM_VAL: ""
|
||||||
|
TILE3_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 4 – TV (remote) ────────────────────────────────
|
||||||
|
TILE4_ENTITY: "remote.living_room"
|
||||||
|
TILE4_STATE_ENTITY: "remote.living_room"
|
||||||
|
TILE4_TITLE: "TV"
|
||||||
|
TILE4_ICON: "\U000F0502"
|
||||||
|
TILE4_TYPE: "switch"
|
||||||
|
TILE4_TAP_ACTION: "custom"
|
||||||
|
TILE4_LONGPRESS: "none"
|
||||||
|
TILE4_VALUE_MODE: "text"
|
||||||
|
TILE4_LABEL_OFF: "Off"
|
||||||
|
TILE4_LABEL_ON: "On"
|
||||||
|
TILE4_CIRCLE_ACTIVE_COLOR: "0x1565C0"
|
||||||
|
TILE4_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE4_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_ICON_DISABLED_COLOR: "0x1565C0"
|
||||||
|
TILE4_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE4_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE4_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE4_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE4_TAP_SERVICE: "remote.toggle"
|
||||||
|
TILE4_TAP_PARAM_KEY: ""
|
||||||
|
TILE4_TAP_PARAM_VAL: ""
|
||||||
|
TILE4_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 5 – Living Room Speaker ────────────────────────
|
||||||
|
TILE5_ENTITY: "media_player.living_room_speaker"
|
||||||
|
TILE5_STATE_ENTITY: "media_player.living_room_speaker"
|
||||||
|
TILE5_TITLE: "Speaker"
|
||||||
|
TILE5_ICON: "\U000F04C3"
|
||||||
|
TILE5_TYPE: "switch"
|
||||||
|
TILE5_TAP_ACTION: "custom"
|
||||||
|
TILE5_LONGPRESS: "none"
|
||||||
|
TILE5_VALUE_MODE: "text"
|
||||||
|
TILE5_LABEL_OFF: "Off"
|
||||||
|
TILE5_LABEL_ON: "Playing"
|
||||||
|
TILE5_CIRCLE_ACTIVE_COLOR: "0x8E24AA"
|
||||||
|
TILE5_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE5_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_ICON_DISABLED_COLOR: "0x8E24AA"
|
||||||
|
TILE5_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE5_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE5_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE5_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE5_TAP_SERVICE: "media_player.toggle"
|
||||||
|
TILE5_TAP_PARAM_KEY: ""
|
||||||
|
TILE5_TAP_PARAM_VAL: ""
|
||||||
|
TILE5_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 6 – Front Closet Lights ────────────────────────
|
||||||
|
TILE6_ENTITY: "light.front_closet_lights"
|
||||||
|
TILE6_STATE_ENTITY: "light.front_closet_light_1"
|
||||||
|
TILE6_TITLE: "Closet"
|
||||||
|
TILE6_ICON: "\U000F1051"
|
||||||
|
TILE6_TYPE: "light"
|
||||||
|
TILE6_TAP_ACTION: "toggle"
|
||||||
|
TILE6_LONGPRESS: "none"
|
||||||
|
TILE6_VALUE_MODE: "auto"
|
||||||
|
TILE6_LABEL_OFF: "Off"
|
||||||
|
TILE6_LABEL_ON: "On"
|
||||||
|
TILE6_CIRCLE_ACTIVE_COLOR: "0xFEC600"
|
||||||
|
TILE6_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE6_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_ICON_DISABLED_COLOR: "0xFEC600"
|
||||||
|
TILE6_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE6_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE6_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE6_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE6_TAP_SERVICE: ""
|
||||||
|
TILE6_TAP_PARAM_KEY: ""
|
||||||
|
TILE6_TAP_PARAM_VAL: ""
|
||||||
|
TILE6_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
packages:
|
||||||
|
hw: !include cyd-base-hw.yaml
|
||||||
|
ui: !include cyd-base-ui.yaml
|
||||||
|
|
||||||
|
esphome:
|
||||||
|
name: livingroom-display
|
||||||
|
friendly_name: LivingroomDisplay
|
||||||
|
on_boot:
|
||||||
|
priority: 600
|
||||||
|
then:
|
||||||
|
- script.execute: ui_refresh
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
logger:
|
||||||
|
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: !secret api_encryption_key
|
||||||
|
|
||||||
|
ota:
|
||||||
|
- platform: esphome
|
||||||
|
password: !secret ota_password
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
ap:
|
||||||
|
ssid: "LivingroomDisplay Fallback"
|
||||||
|
password: !secret ota_password
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
202
modules/nixos/homeassistant/services/esphome/pets.yaml
Normal file
202
modules/nixos/homeassistant/services/esphome/pets.yaml
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
############################################################
|
||||||
|
# SmartDisplay – Pets
|
||||||
|
# Tiles: Joey Feed | Luci Feed | Litter Box | Fountain | Vacuum | Ftn Reset
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
substitutions:
|
||||||
|
|
||||||
|
DIRECT_ACTIONS: "true"
|
||||||
|
ROOM_NAME: "Pets"
|
||||||
|
TIME_24H: "false"
|
||||||
|
|
||||||
|
# ── TILE 1 – Joey Smart Feeder (manual feed) ─────────────
|
||||||
|
TILE1_ENTITY: "button.joey_smart_feeder_manual_feed"
|
||||||
|
TILE1_STATE_ENTITY: "binary_sensor.joey_smart_feeder_low_food"
|
||||||
|
TILE1_TITLE: "Joey Feed"
|
||||||
|
TILE1_ICON: "\U000F009A"
|
||||||
|
TILE1_TYPE: "script"
|
||||||
|
TILE1_TAP_ACTION: "custom"
|
||||||
|
TILE1_LONGPRESS: "none"
|
||||||
|
TILE1_VALUE_MODE: "text"
|
||||||
|
TILE1_LABEL_OFF: "Ready"
|
||||||
|
TILE1_LABEL_ON: "Fed"
|
||||||
|
TILE1_CIRCLE_ACTIVE_COLOR: "0xF4A820"
|
||||||
|
TILE1_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE1_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_ICON_DISABLED_COLOR: "0xF4A820"
|
||||||
|
TILE1_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE1_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE1_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE1_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE1_TAP_SERVICE: "button.press"
|
||||||
|
TILE1_TAP_PARAM_KEY: ""
|
||||||
|
TILE1_TAP_PARAM_VAL: ""
|
||||||
|
TILE1_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 2 – Luci Smart Feeder (manual feed) ─────────────
|
||||||
|
TILE2_ENTITY: "button.luci_smart_feeder_manual_feed"
|
||||||
|
TILE2_STATE_ENTITY: "binary_sensor.luci_smart_feeder_low_food"
|
||||||
|
TILE2_TITLE: "Luci Feed"
|
||||||
|
TILE2_ICON: "\U000F1114"
|
||||||
|
TILE2_TYPE: "script"
|
||||||
|
TILE2_TAP_ACTION: "custom"
|
||||||
|
TILE2_LONGPRESS: "none"
|
||||||
|
TILE2_VALUE_MODE: "text"
|
||||||
|
TILE2_LABEL_OFF: "Ready"
|
||||||
|
TILE2_LABEL_ON: "Fed"
|
||||||
|
TILE2_CIRCLE_ACTIVE_COLOR: "0xEC407A"
|
||||||
|
TILE2_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE2_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_ICON_DISABLED_COLOR: "0xEC407A"
|
||||||
|
TILE2_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE2_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE2_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE2_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE2_TAP_SERVICE: "button.press"
|
||||||
|
TILE2_TAP_PARAM_KEY: ""
|
||||||
|
TILE2_TAP_PARAM_VAL: ""
|
||||||
|
TILE2_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 3 – Litter-Robot 4 ──────────────────────────────
|
||||||
|
TILE3_ENTITY: "vacuum.litter_robot_4_litter_box"
|
||||||
|
TILE3_STATE_ENTITY: "binary_sensor.litter_robot_4_is_cleaning"
|
||||||
|
TILE3_TITLE: "Litter Box"
|
||||||
|
TILE3_ICON: "\U000F054D"
|
||||||
|
TILE3_TYPE: "switch"
|
||||||
|
TILE3_TAP_ACTION: "custom"
|
||||||
|
TILE3_LONGPRESS: "none"
|
||||||
|
TILE3_VALUE_MODE: "text"
|
||||||
|
TILE3_LABEL_OFF: "Docked"
|
||||||
|
TILE3_LABEL_ON: "Cycling"
|
||||||
|
TILE3_CIRCLE_ACTIVE_COLOR: "0x43A047"
|
||||||
|
TILE3_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE3_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_ICON_DISABLED_COLOR: "0x43A047"
|
||||||
|
TILE3_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE3_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE3_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE3_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE3_TAP_SERVICE: "vacuum.start"
|
||||||
|
TILE3_TAP_PARAM_KEY: ""
|
||||||
|
TILE3_TAP_PARAM_VAL: ""
|
||||||
|
TILE3_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 4 – Pet Fountain ────────────────────────────────
|
||||||
|
TILE4_ENTITY: "switch.dockstream_smart_rfid_fountain_wi_fi"
|
||||||
|
TILE4_STATE_ENTITY: "binary_sensor.dockstream_smart_rfid_fountain_indicator"
|
||||||
|
TILE4_TITLE: "Fountain"
|
||||||
|
TILE4_ICON: "\U000F0765"
|
||||||
|
TILE4_TYPE: "switch"
|
||||||
|
TILE4_TAP_ACTION: "toggle"
|
||||||
|
TILE4_LONGPRESS: "none"
|
||||||
|
TILE4_VALUE_MODE: "text"
|
||||||
|
TILE4_LABEL_OFF: "Off"
|
||||||
|
TILE4_LABEL_ON: "On"
|
||||||
|
TILE4_CIRCLE_ACTIVE_COLOR: "0x039BE5"
|
||||||
|
TILE4_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE4_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_ICON_DISABLED_COLOR: "0x039BE5"
|
||||||
|
TILE4_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE4_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE4_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE4_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE4_TAP_SERVICE: ""
|
||||||
|
TILE4_TAP_PARAM_KEY: ""
|
||||||
|
TILE4_TAP_PARAM_VAL: ""
|
||||||
|
TILE4_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 5 – Garbage Goober (vacuum) ────────────────────
|
||||||
|
TILE5_ENTITY: "vacuum.garbage_goober"
|
||||||
|
TILE5_STATE_ENTITY: "binary_sensor.garbage_goober_cleaning"
|
||||||
|
TILE5_TITLE: "Vacuum"
|
||||||
|
TILE5_ICON: "\U000F09A8"
|
||||||
|
TILE5_TYPE: "switch"
|
||||||
|
TILE5_TAP_ACTION: "custom"
|
||||||
|
TILE5_LONGPRESS: "none"
|
||||||
|
TILE5_VALUE_MODE: "text"
|
||||||
|
TILE5_LABEL_OFF: "Docked"
|
||||||
|
TILE5_LABEL_ON: "Cleaning"
|
||||||
|
TILE5_CIRCLE_ACTIVE_COLOR: "0x6D4C41"
|
||||||
|
TILE5_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE5_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_ICON_DISABLED_COLOR: "0x6D4C41"
|
||||||
|
TILE5_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE5_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE5_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE5_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE5_TAP_SERVICE: "vacuum.start_pause"
|
||||||
|
TILE5_TAP_PARAM_KEY: ""
|
||||||
|
TILE5_TAP_PARAM_VAL: ""
|
||||||
|
TILE5_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 6 – Fountain Cleaning Reset ────────────────────
|
||||||
|
TILE6_ENTITY: "button.dockstream_smart_rfid_fountain_cleaning_reset"
|
||||||
|
TILE6_STATE_ENTITY: "binary_sensor.dockstream_smart_rfid_fountain_wi_fi"
|
||||||
|
TILE6_TITLE: "Ftn. Reset"
|
||||||
|
TILE6_ICON: "\U000F0ECC"
|
||||||
|
TILE6_TYPE: "script"
|
||||||
|
TILE6_TAP_ACTION: "custom"
|
||||||
|
TILE6_LONGPRESS: "none"
|
||||||
|
TILE6_VALUE_MODE: "text"
|
||||||
|
TILE6_LABEL_OFF: "Offline"
|
||||||
|
TILE6_LABEL_ON: "Online"
|
||||||
|
TILE6_CIRCLE_ACTIVE_COLOR: "0x039BE5"
|
||||||
|
TILE6_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE6_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_ICON_DISABLED_COLOR: "0x039BE5"
|
||||||
|
TILE6_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE6_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE6_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE6_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE6_TAP_SERVICE: "button.press"
|
||||||
|
TILE6_TAP_PARAM_KEY: ""
|
||||||
|
TILE6_TAP_PARAM_VAL: ""
|
||||||
|
TILE6_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
packages:
|
||||||
|
hw: !include cyd-base-hw.yaml
|
||||||
|
ui: !include cyd-base-ui.yaml
|
||||||
|
|
||||||
|
esphome:
|
||||||
|
name: pets-display
|
||||||
|
friendly_name: PetsDisplay
|
||||||
|
on_boot:
|
||||||
|
priority: 600
|
||||||
|
then:
|
||||||
|
- script.execute: ui_refresh
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
logger:
|
||||||
|
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: !secret api_encryption_key
|
||||||
|
|
||||||
|
ota:
|
||||||
|
- platform: esphome
|
||||||
|
password: !secret ota_password
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
ap:
|
||||||
|
ssid: "PetsDisplay Fallback"
|
||||||
|
password: !secret ota_password
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
202
modules/nixos/homeassistant/services/esphome/printer.yaml
Normal file
202
modules/nixos/homeassistant/services/esphome/printer.yaml
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
############################################################
|
||||||
|
# SmartDisplay – 3D Printer (Bambu P1P)
|
||||||
|
# Tiles: Status | Chamber Light | Pause | Cooling Fan | AMS | Stop
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
substitutions:
|
||||||
|
|
||||||
|
DIRECT_ACTIONS: "true"
|
||||||
|
ROOM_NAME: "Printer"
|
||||||
|
TIME_24H: "false"
|
||||||
|
|
||||||
|
# ── TILE 1 – P1P Online / Force Refresh ─────────────────
|
||||||
|
TILE1_ENTITY: "button.p1p_01s00c371400147_force_refresh_data"
|
||||||
|
TILE1_STATE_ENTITY: "binary_sensor.p1p_01s00c371400147_online"
|
||||||
|
TILE1_TITLE: "P1P Status"
|
||||||
|
TILE1_ICON: "\U000F08F5"
|
||||||
|
TILE1_TYPE: "script"
|
||||||
|
TILE1_TAP_ACTION: "custom"
|
||||||
|
TILE1_LONGPRESS: "none"
|
||||||
|
TILE1_VALUE_MODE: "text"
|
||||||
|
TILE1_LABEL_OFF: "Offline"
|
||||||
|
TILE1_LABEL_ON: "Online"
|
||||||
|
TILE1_CIRCLE_ACTIVE_COLOR: "0x43A047"
|
||||||
|
TILE1_CIRCLE_DISABLED_COLOR: "0xE53935"
|
||||||
|
TILE1_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_ICON_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE1_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE1_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE1_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE1_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE1_TAP_SERVICE: "button.press"
|
||||||
|
TILE1_TAP_PARAM_KEY: ""
|
||||||
|
TILE1_TAP_PARAM_VAL: ""
|
||||||
|
TILE1_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 2 – Chamber Light ───────────────────────────────
|
||||||
|
TILE2_ENTITY: "light.p1p_01s00c371400147_chamber_light"
|
||||||
|
TILE2_STATE_ENTITY: "light.p1p_01s00c371400147_chamber_light"
|
||||||
|
TILE2_TITLE: "Chamber"
|
||||||
|
TILE2_ICON: "\U000F0A02"
|
||||||
|
TILE2_TYPE: "light"
|
||||||
|
TILE2_TAP_ACTION: "toggle"
|
||||||
|
TILE2_LONGPRESS: "none"
|
||||||
|
TILE2_VALUE_MODE: "text"
|
||||||
|
TILE2_LABEL_OFF: "Off"
|
||||||
|
TILE2_LABEL_ON: "On"
|
||||||
|
TILE2_CIRCLE_ACTIVE_COLOR: "0xFEC600"
|
||||||
|
TILE2_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE2_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_ICON_DISABLED_COLOR: "0xFEC600"
|
||||||
|
TILE2_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE2_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE2_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE2_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE2_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE2_TAP_SERVICE: ""
|
||||||
|
TILE2_TAP_PARAM_KEY: ""
|
||||||
|
TILE2_TAP_PARAM_VAL: ""
|
||||||
|
TILE2_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 3 – Pause Printing ──────────────────────────────
|
||||||
|
TILE3_ENTITY: "button.p1p_01s00c371400147_pause_printing"
|
||||||
|
TILE3_STATE_ENTITY: "binary_sensor.p1p_01s00c371400147_print_error"
|
||||||
|
TILE3_TITLE: "Pause"
|
||||||
|
TILE3_ICON: "\U000F03E4"
|
||||||
|
TILE3_TYPE: "script"
|
||||||
|
TILE3_TAP_ACTION: "custom"
|
||||||
|
TILE3_LONGPRESS: "none"
|
||||||
|
TILE3_VALUE_MODE: "text"
|
||||||
|
TILE3_LABEL_OFF: "Idle"
|
||||||
|
TILE3_LABEL_ON: "Error"
|
||||||
|
TILE3_CIRCLE_ACTIVE_COLOR: "0xE53935"
|
||||||
|
TILE3_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE3_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_ICON_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE3_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE3_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE3_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE3_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE3_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE3_TAP_SERVICE: "button.press"
|
||||||
|
TILE3_TAP_PARAM_KEY: ""
|
||||||
|
TILE3_TAP_PARAM_VAL: ""
|
||||||
|
TILE3_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 4 – Cooling Fan ────────────────────────────────
|
||||||
|
TILE4_ENTITY: "fan.p1p_01s00c371400147_cooling_fan"
|
||||||
|
TILE4_STATE_ENTITY: "fan.p1p_01s00c371400147_cooling_fan"
|
||||||
|
TILE4_TITLE: "Cooling"
|
||||||
|
TILE4_ICON: "\U000F0210"
|
||||||
|
TILE4_TYPE: "fan"
|
||||||
|
TILE4_TAP_ACTION: "toggle"
|
||||||
|
TILE4_LONGPRESS: "auto"
|
||||||
|
TILE4_VALUE_MODE: "percentage"
|
||||||
|
TILE4_LABEL_OFF: "Off"
|
||||||
|
TILE4_LABEL_ON: "On"
|
||||||
|
TILE4_CIRCLE_ACTIVE_COLOR: "0x00C5EC"
|
||||||
|
TILE4_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE4_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_ICON_DISABLED_COLOR: "0x00C5EC"
|
||||||
|
TILE4_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE4_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE4_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE4_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE4_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE4_TAP_SERVICE: "fan.toggle"
|
||||||
|
TILE4_TAP_PARAM_KEY: ""
|
||||||
|
TILE4_TAP_PARAM_VAL: ""
|
||||||
|
TILE4_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 5 – AMS 1 Active ───────────────────────────────
|
||||||
|
TILE5_ENTITY: "button.p1p_01s00c371400147_force_refresh_data"
|
||||||
|
TILE5_STATE_ENTITY: "binary_sensor.p1p_01s00c371400147_ams_1_active"
|
||||||
|
TILE5_TITLE: "AMS"
|
||||||
|
TILE5_ICON: "\U000F01AE"
|
||||||
|
TILE5_TYPE: "script"
|
||||||
|
TILE5_TAP_ACTION: "custom"
|
||||||
|
TILE5_LONGPRESS: "none"
|
||||||
|
TILE5_VALUE_MODE: "text"
|
||||||
|
TILE5_LABEL_OFF: "Idle"
|
||||||
|
TILE5_LABEL_ON: "Active"
|
||||||
|
TILE5_CIRCLE_ACTIVE_COLOR: "0x8E24AA"
|
||||||
|
TILE5_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE5_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_ICON_DISABLED_COLOR: "0x8E24AA"
|
||||||
|
TILE5_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE5_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE5_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE5_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE5_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE5_TAP_SERVICE: "button.press"
|
||||||
|
TILE5_TAP_PARAM_KEY: ""
|
||||||
|
TILE5_TAP_PARAM_VAL: ""
|
||||||
|
TILE5_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
# ── TILE 6 – Stop Printing (red accent) ─────────────────
|
||||||
|
TILE6_ENTITY: "button.p1p_01s00c371400147_stop_printing"
|
||||||
|
TILE6_STATE_ENTITY: "binary_sensor.p1p_01s00c371400147_online"
|
||||||
|
TILE6_TITLE: "Stop"
|
||||||
|
TILE6_ICON: "\U000F04DB"
|
||||||
|
TILE6_TYPE: "script"
|
||||||
|
TILE6_TAP_ACTION: "custom"
|
||||||
|
TILE6_LONGPRESS: "none"
|
||||||
|
TILE6_VALUE_MODE: "text"
|
||||||
|
TILE6_LABEL_OFF: "Offline"
|
||||||
|
TILE6_LABEL_ON: "Ready"
|
||||||
|
TILE6_CIRCLE_ACTIVE_COLOR: "0xE53935"
|
||||||
|
TILE6_CIRCLE_DISABLED_COLOR: "0x7B7B6F"
|
||||||
|
TILE6_ICON_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_ICON_DISABLED_COLOR: "0xE53935"
|
||||||
|
TILE6_BG_ACTIVE_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_BG_DISABLED_COLOR: "0x3a3a3a"
|
||||||
|
TILE6_TITLE_ACTIVE_COLOR: "0x000000"
|
||||||
|
TILE6_TITLE_DISABLED_COLOR: "0xFFFFFF"
|
||||||
|
TILE6_VALUE_ACTIVE_COLOR: "0x7A7A7C"
|
||||||
|
TILE6_VALUE_DISABLED_COLOR: "0xD9D9D9"
|
||||||
|
TILE6_TAP_SERVICE: "button.press"
|
||||||
|
TILE6_TAP_PARAM_KEY: ""
|
||||||
|
TILE6_TAP_PARAM_VAL: ""
|
||||||
|
TILE6_LONGPRESS_OFF_VALUE: "0"
|
||||||
|
|
||||||
|
packages:
|
||||||
|
hw: !include cyd-base-hw.yaml
|
||||||
|
ui: !include cyd-base-ui.yaml
|
||||||
|
|
||||||
|
esphome:
|
||||||
|
name: printer-display
|
||||||
|
friendly_name: PrinterDisplay
|
||||||
|
on_boot:
|
||||||
|
priority: 600
|
||||||
|
then:
|
||||||
|
- script.execute: ui_refresh
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
logger:
|
||||||
|
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: !secret api_encryption_key
|
||||||
|
|
||||||
|
ota:
|
||||||
|
- platform: esphome
|
||||||
|
password: !secret ota_password
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
ap:
|
||||||
|
ssid: "PrinterDisplay Fallback"
|
||||||
|
password: !secret ota_password
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
@@ -11,10 +11,6 @@ let
|
|||||||
name = "otbr";
|
name = "otbr";
|
||||||
cfg = config.${namespace}.services.${name};
|
cfg = config.${namespace}.services.${name};
|
||||||
|
|
||||||
otbrPackage =
|
|
||||||
pkgs.callPackage "${inputs.nixpkgs-otbr}/pkgs/by-name/op/openthread-border-router/package.nix"
|
|
||||||
{ };
|
|
||||||
|
|
||||||
otbrConfig = lib.${namespace}.mkModule {
|
otbrConfig = lib.${namespace}.mkModule {
|
||||||
inherit config name;
|
inherit config name;
|
||||||
description = "Openthread border router";
|
description = "Openthread border router";
|
||||||
@@ -24,8 +20,9 @@ let
|
|||||||
moduleConfig = {
|
moduleConfig = {
|
||||||
services.openthread-border-router = {
|
services.openthread-border-router = {
|
||||||
enable = true;
|
enable = true;
|
||||||
backboneInterface = "enp2s0";
|
backboneInterfaces = [
|
||||||
package = otbrPackage;
|
"enp2s0"
|
||||||
|
];
|
||||||
rest = {
|
rest = {
|
||||||
inherit (cfg) listenAddress;
|
inherit (cfg) listenAddress;
|
||||||
listenPort = cfg.restPort;
|
listenPort = cfg.restPort;
|
||||||
@@ -45,7 +42,6 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
"${inputs.nixpkgs-otbr}/nixos/modules/services/home-automation/openthread-border-router.nix"
|
|
||||||
otbrConfig
|
otbrConfig
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,15 +15,39 @@ let
|
|||||||
description = "Actual Personal Finance Planner";
|
description = "Actual Personal Finance Planner";
|
||||||
options = { };
|
options = { };
|
||||||
moduleConfig = {
|
moduleConfig = {
|
||||||
|
sops = {
|
||||||
|
secrets = {
|
||||||
|
"jallen-nas/actual/client-id" = {
|
||||||
|
sopsFile = lib.snowfall.fs.get-file "secrets/nas-secrets.yaml";
|
||||||
|
owner = "actual";
|
||||||
|
restartUnits = [ "actual.service" ];
|
||||||
|
};
|
||||||
|
"jallen-nas/actual/client-secret" = {
|
||||||
|
sopsFile = lib.snowfall.fs.get-file "secrets/nas-secrets.yaml";
|
||||||
|
owner = "actual";
|
||||||
|
restartUnits = [ "actual.service" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
services.actual = {
|
services.actual = {
|
||||||
inherit (cfg) openFirewall;
|
inherit (cfg) openFirewall;
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
inherit (cfg) port;
|
inherit (cfg) port;
|
||||||
trustedProxies = [ config.${namespace}.network.ipv4.address ];
|
trustedProxies = [
|
||||||
|
config.${namespace}.network.ipv4.address
|
||||||
|
"10.0.1.4"
|
||||||
|
];
|
||||||
serverFiles = "${cfg.configDir}/${name}/server-files";
|
serverFiles = "${cfg.configDir}/${name}/server-files";
|
||||||
userFiles = "${cfg.configDir}/${name}/user-files";
|
userFiles = "${cfg.configDir}/${name}/user-files";
|
||||||
dataDir = "${cfg.configDir}/${name}";
|
dataDir = "${cfg.configDir}/${name}";
|
||||||
|
openId = {
|
||||||
|
discoveryURL = "https://authentik.mjallen.dev/application/o/actual/.well-known/openid-configuration";
|
||||||
|
client_id._secret = config.sops.secrets."jallen-nas/actual/client-id".path;
|
||||||
|
client_secret._secret = config.sops.secrets."jallen-nas/actual/client-secret".path;
|
||||||
|
server_hostname = "https://actual.mjallen.dev";
|
||||||
|
authMethod = "openid";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -13,14 +13,14 @@ let
|
|||||||
|
|
||||||
cfg = config.${namespace}.services.ai;
|
cfg = config.${namespace}.services.ai;
|
||||||
|
|
||||||
ntfyModelFailScript = pkgs.writeShellScript "update-qwen-model-notify-failure" ''
|
ntfyModelFailScript = pkgs.writeShellScript "update-gemma-model-notify-failure" ''
|
||||||
HOST="$(${pkgs.hostname}/bin/hostname)"
|
HOST="$(${pkgs.hostname}/bin/hostname)"
|
||||||
${pkgs.curl}/bin/curl -sf \
|
${pkgs.curl}/bin/curl -sf \
|
||||||
--user "$NTFY_USER:$NTFY_PASSWORD" \
|
--user "$NTFY_USER:$NTFY_PASSWORD" \
|
||||||
-H "Title: Qwen model update FAILED on $HOST" \
|
-H "Title: Gemma model update FAILED on $HOST" \
|
||||||
-H "Priority: high" \
|
-H "Priority: high" \
|
||||||
-H "Tags: rotating_light,robot_face" \
|
-H "Tags: rotating_light,robot_face" \
|
||||||
-d "The daily update-qwen-model job failed. Check: journalctl -u update-qwen-model.service" \
|
-d "The daily update-gemma-model job failed. Check: journalctl -u update-gemma-model.service" \
|
||||||
"https://ntfy.mjallen.dev/builds" || true
|
"https://ntfy.mjallen.dev/builds" || true
|
||||||
'';
|
'';
|
||||||
|
|
||||||
@@ -30,10 +30,7 @@ let
|
|||||||
description = "AI Services";
|
description = "AI Services";
|
||||||
options = {
|
options = {
|
||||||
llama-cpp = {
|
llama-cpp = {
|
||||||
model =
|
model = mkOpt types.str "gemma-4-26B-A4B-it-UD-Q8_K_XL" "";
|
||||||
mkOpt types.str
|
|
||||||
"models--unsloth--gemma-4-26B-A4B-it-GGUF/snapshots/b8654b48d979f2853b7a81d6541ca64eea7dc3c5/gemma-4-26B-A4B-it-UD-Q8_K_XL"
|
|
||||||
"";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
moduleConfig = {
|
moduleConfig = {
|
||||||
@@ -59,21 +56,17 @@ let
|
|||||||
model = "${cfg.configDir}/llama-cpp/models/${cfg.llama-cpp.model}.gguf";
|
model = "${cfg.configDir}/llama-cpp/models/${cfg.llama-cpp.model}.gguf";
|
||||||
package = inputs.llama-cpp.packages.${system}.rocm;
|
package = inputs.llama-cpp.packages.${system}.rocm;
|
||||||
extraFlags = [
|
extraFlags = [
|
||||||
"--fit"
|
|
||||||
"on"
|
|
||||||
"--seed"
|
|
||||||
"3407"
|
|
||||||
"--temp"
|
|
||||||
"0.7"
|
|
||||||
"--top-p"
|
|
||||||
"0.9"
|
|
||||||
"--min-p"
|
|
||||||
"0.05"
|
|
||||||
"--top-k"
|
|
||||||
"30"
|
|
||||||
"--jinja"
|
"--jinja"
|
||||||
|
"--chat-template-kwargs"
|
||||||
|
"{\"enable_thinking\":true}"
|
||||||
|
"--temp"
|
||||||
|
"1.0"
|
||||||
|
"--top-p"
|
||||||
|
"0.95"
|
||||||
|
"--top-k"
|
||||||
|
"64"
|
||||||
"--ctx-size"
|
"--ctx-size"
|
||||||
"131072"
|
"32768"
|
||||||
"--threads"
|
"--threads"
|
||||||
"8"
|
"8"
|
||||||
"--batch-size"
|
"--batch-size"
|
||||||
@@ -81,7 +74,7 @@ let
|
|||||||
"--gpu-layers"
|
"--gpu-layers"
|
||||||
"999"
|
"999"
|
||||||
"--flash-attn"
|
"--flash-attn"
|
||||||
"auto"
|
"on"
|
||||||
"--mlock"
|
"--mlock"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
@@ -120,16 +113,16 @@ let
|
|||||||
# Systemd service for automatic model updates
|
# Systemd service for automatic model updates
|
||||||
systemd = {
|
systemd = {
|
||||||
services = {
|
services = {
|
||||||
update-qwen-model = {
|
update-gemma-model = {
|
||||||
description = "Update Qwen3-Coder-Next model from HuggingFace";
|
description = "Update Gemma 4 model from HuggingFace";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStart = "${pkgs.writeShellScript "update-qwen-model" ''
|
ExecStart = "${pkgs.writeShellScript "update-gemma-model" ''
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
MODEL_DIR="${cfg.configDir}/llama-cpp/models"
|
MODEL_DIR="${cfg.configDir}/llama-cpp/models"
|
||||||
MODEL_NAME="${cfg.llama-cpp.model}.gguf"
|
MODEL_NAME="${cfg.llama-cpp.model}.gguf"
|
||||||
REPO_ID="unsloth/Qwen3-Coder-Next-GGUF"
|
REPO_ID="unsloth/gemma-4-26B-A4B-it-GGUF"
|
||||||
|
|
||||||
# Create model directory if it doesn't exist
|
# Create model directory if it doesn't exist
|
||||||
mkdir -p "$MODEL_DIR"
|
mkdir -p "$MODEL_DIR"
|
||||||
@@ -147,13 +140,13 @@ let
|
|||||||
Group = "jallen-nas";
|
Group = "jallen-nas";
|
||||||
EnvironmentFile = [ config.sops.templates."ntfy.env".path ];
|
EnvironmentFile = [ config.sops.templates."ntfy.env".path ];
|
||||||
};
|
};
|
||||||
unitConfig.OnFailure = "update-qwen-model-notify-failure.service";
|
unitConfig.OnFailure = "update-gemma-model-notify-failure.service";
|
||||||
# Run daily at 3 AM
|
# Run daily at 3 AM
|
||||||
startAt = "*-*-* 03:00:00";
|
startAt = "*-*-* 03:00:00";
|
||||||
};
|
};
|
||||||
|
|
||||||
update-qwen-model-notify-failure = {
|
update-gemma-model-notify-failure = {
|
||||||
description = "Notify ntfy on update-qwen-model failure";
|
description = "Notify ntfy on update-gemma-model failure";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStart = "${ntfyModelFailScript}";
|
ExecStart = "${ntfyModelFailScript}";
|
||||||
@@ -163,8 +156,8 @@ let
|
|||||||
|
|
||||||
# Ensure model is available before llama-cpp starts
|
# Ensure model is available before llama-cpp starts
|
||||||
llama-cpp = {
|
llama-cpp = {
|
||||||
after = [ "update-qwen-model.service" ];
|
after = [ "update-gemma-model.service" ];
|
||||||
wants = [ "update-qwen-model.service" ];
|
wants = [ "update-gemma-model.service" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ let
|
|||||||
name = "node-exporter-full.json";
|
name = "node-exporter-full.json";
|
||||||
path = patchDashboard "node-exporter-full.json" (pkgs.fetchurl {
|
path = patchDashboard "node-exporter-full.json" (pkgs.fetchurl {
|
||||||
url = "https://grafana.com/api/dashboards/1860/revisions/latest/download";
|
url = "https://grafana.com/api/dashboards/1860/revisions/latest/download";
|
||||||
sha256 = "sha256-IeQ72CZhtckDEihcVLhAFuSs77uWsZSENsdomSrWTHo=";
|
sha256 = "sha256-GExrdAnzBtp1Ul13cvcZRbEM6iOtFrXXjEaY6g6lGYY=";
|
||||||
}) "ds_prometheus";
|
}) "ds_prometheus";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -147,8 +147,18 @@ let
|
|||||||
# "Service has no ExecStart=, ExecStop=, or SuccessAction=. Refusing."
|
# "Service has no ExecStart=, ExecStop=, or SuccessAction=. Refusing."
|
||||||
nextcloud = lib.mkForce { };
|
nextcloud = lib.mkForce { };
|
||||||
nextcloud-setup = {
|
nextcloud-setup = {
|
||||||
after = [ "postgresql.service" ];
|
# Also require the NAS bcachefs mount so that ExecStartPre can create
|
||||||
requires = [ "postgresql.service" ];
|
# the store-apps and config directories on the actual NAS filesystem.
|
||||||
|
# Without this, the dirs are created on the root tmpfs overlay before
|
||||||
|
# the mount comes up, and the real NAS store-apps path never exists.
|
||||||
|
after = [
|
||||||
|
"postgresql.service"
|
||||||
|
"media-nas-main.mount"
|
||||||
|
];
|
||||||
|
requires = [
|
||||||
|
"postgresql.service"
|
||||||
|
"media-nas-main.mount"
|
||||||
|
];
|
||||||
serviceConfig =
|
serviceConfig =
|
||||||
let
|
let
|
||||||
# Extract the override.config.php store-path from the already-evaluated
|
# Extract the override.config.php store-path from the already-evaluated
|
||||||
@@ -235,8 +245,46 @@ let
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
nextcloud-update-db = {
|
nextcloud-update-db = {
|
||||||
|
after = [
|
||||||
|
"postgresql.service"
|
||||||
|
"media-nas-main.mount"
|
||||||
|
];
|
||||||
|
requires = [
|
||||||
|
"postgresql.service"
|
||||||
|
"media-nas-main.mount"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
nextcloud-cron = {
|
||||||
|
after = [ "media-nas-main.mount" ];
|
||||||
|
requires = [ "media-nas-main.mount" ];
|
||||||
|
};
|
||||||
|
phpfpm-nextcloud = {
|
||||||
|
after = [ "media-nas-main.mount" ];
|
||||||
|
requires = [ "media-nas-main.mount" ];
|
||||||
|
};
|
||||||
|
# One-shot repair for the oc_filecache_extended duplicate key constraint
|
||||||
|
# violation that causes nextcloud-cron to fail with:
|
||||||
|
# "duplicate key value violates unique constraint oc_filecache_extended_pkey"
|
||||||
|
# Runs as the postgres user before nextcloud-setup so that the DB is clean
|
||||||
|
# before Nextcloud starts. Idempotent: only removes rows whose fileid does
|
||||||
|
# not exist in oc_filecache (true orphans). Remove this service once the
|
||||||
|
# underlying Nextcloud bug is fixed and a clean run confirms cron succeeds.
|
||||||
|
nextcloud-repair-filecache = {
|
||||||
|
description = "Repair orphan rows in oc_filecache_extended";
|
||||||
|
wantedBy = [ "nextcloud-setup.service" ];
|
||||||
|
before = [ "nextcloud-setup.service" ];
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.service" ];
|
||||||
requires = [ "postgresql.service" ];
|
requires = [ "postgresql.service" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "postgres";
|
||||||
|
ExecStart = pkgs.writeShellScript "nextcloud-repair-filecache" ''
|
||||||
|
${pkgs.postgresql}/bin/psql -d nextcloud -c "
|
||||||
|
DELETE FROM oc_filecache_extended
|
||||||
|
WHERE fileid NOT IN (SELECT fileid FROM oc_filecache);
|
||||||
|
"
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -60,6 +60,11 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
systemd.services."podman-${cfg.name}".unitConfig.RequiresMountsFor = [
|
||||||
|
cfg.configPath
|
||||||
|
cfg.dataPath
|
||||||
|
];
|
||||||
|
|
||||||
virtualisation.oci-containers.containers."${cfg.name}" = {
|
virtualisation.oci-containers.containers."${cfg.name}" = {
|
||||||
inherit (cfg) autoStart image;
|
inherit (cfg) autoStart image;
|
||||||
ports = [ "${cfg.httpPort}:9200" ];
|
ports = [ "${cfg.httpPort}:9200" ];
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ in
|
|||||||
nil
|
nil
|
||||||
nix-output-monitor
|
nix-output-monitor
|
||||||
nixos-anywhere
|
nixos-anywhere
|
||||||
qemu
|
|
||||||
udisks2
|
udisks2
|
||||||
unzip
|
unzip
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ in
|
|||||||
|
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"dialout"
|
"dialout"
|
||||||
|
"uucp"
|
||||||
"wheel"
|
"wheel"
|
||||||
"keys"
|
"keys"
|
||||||
"networkmanager"
|
"networkmanager"
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
{ lib, ... }:
|
{ lib, pkgs, ... }:
|
||||||
{
|
{
|
||||||
# Virtualisation configuration
|
# Virtualisation configuration
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
libvirtd.enable = lib.mkDefault true;
|
libvirtd = {
|
||||||
|
enable = lib.mkForce false;
|
||||||
|
package = pkgs.stable.libvirt;
|
||||||
|
qemu.package = pkgs.stable.qemu;
|
||||||
|
};
|
||||||
podman.enable = lib.mkDefault true;
|
podman.enable = lib.mkDefault true;
|
||||||
waydroid.enable = lib.mkDefault false;
|
waydroid.enable = lib.mkDefault false;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,125 +0,0 @@
|
|||||||
{ ... }:
|
|
||||||
_final: prev: {
|
|
||||||
home-assistant = prev.home-assistant.override {
|
|
||||||
packageOverrides = _self: super: {
|
|
||||||
nice-go = super.nice-go.overridePythonAttrs (_old: {
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
cfn-lint = super.cfn-lint.overridePythonAttrs (_old: {
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
aiobotocore = super.aiobotocore.overridePythonAttrs (_old: {
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
connect-box = super.connect-box.overridePythonAttrs (_old: {
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
motionblindsble = super.motionblindsble.overridePythonAttrs (_old: {
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
pyinsteon = super.pyinsteon.overridePythonAttrs (_old: {
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
psnawp = super.psnawp.overridePythonAttrs (old: {
|
|
||||||
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ super.pythonRelaxDepsHook ];
|
|
||||||
pythonRelaxDeps = [ "pycountry" ];
|
|
||||||
});
|
|
||||||
radios = super.radios.overridePythonAttrs (old: {
|
|
||||||
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ super.pythonRelaxDepsHook ];
|
|
||||||
pythonRelaxDeps = [ "pycountry" ];
|
|
||||||
});
|
|
||||||
|
|
||||||
# Several packages are gated behind pythonAtLeast "3.13" or "3.14" guards
|
|
||||||
# in nixpkgs, but are required as transitive dependencies of HA components
|
|
||||||
# when using availableComponents. Override them all to allow Python 3.14
|
|
||||||
# until upstream catches up.
|
|
||||||
aiounittest = super.aiounittest.overridePythonAttrs (_old: {
|
|
||||||
disabled = false;
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
# aiokef tests rely on asyncio.get_event_loop() auto-creating a loop,
|
|
||||||
# which was removed in Python 3.10+.
|
|
||||||
aiokef = super.aiokef.overridePythonAttrs (_old: {
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
# pyads 3.5.1 adopted a src/ layout; the nixpkgs patchPhase references
|
|
||||||
# the old flat path, and setup.py always tries to compile adslib from
|
|
||||||
# source via make. Skip the compile step by making platform_is_unix()
|
|
||||||
# return False, pre-place the nixpkgs adslib.so in src/ so the wheel
|
|
||||||
# installs it, and disable the import check since pyads searches sys.path
|
|
||||||
# for adslib.so at import time (requires the real ADS hardware library).
|
|
||||||
pyads = super.pyads.overridePythonAttrs (old: {
|
|
||||||
patchPhase = ''
|
|
||||||
substituteInPlace setup.py \
|
|
||||||
--replace-fail "sys.platform.startswith(\"linux\") or sys.platform.startswith(\"darwin\")" \
|
|
||||||
"False"
|
|
||||||
'';
|
|
||||||
preBuild = ''
|
|
||||||
mkdir -p src
|
|
||||||
cp ${builtins.head old.buildInputs}/lib/adslib.so src/adslib.so
|
|
||||||
'';
|
|
||||||
doCheck = false;
|
|
||||||
pythonImportsCheck = [ ];
|
|
||||||
});
|
|
||||||
apischema = super.apischema.overridePythonAttrs (_old: {
|
|
||||||
disabled = false;
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
aws-sam-translator = super.aws-sam-translator.overridePythonAttrs (_old: {
|
|
||||||
# https://github.com/aws/serverless-application-model/issues/3831
|
|
||||||
disabled = false;
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
# future uses lib2to3 in past.translation, which was removed in Python 3.14.
|
|
||||||
# That module is only needed for Python 2→3 source translation at runtime,
|
|
||||||
# which HA components don't use. Drop past.translation from the import check.
|
|
||||||
future = super.future.overridePythonAttrs (_old: {
|
|
||||||
disabled = false;
|
|
||||||
pythonImportsCheck = [
|
|
||||||
"future.builtins"
|
|
||||||
"future.moves"
|
|
||||||
"future.standard_library"
|
|
||||||
"past.builtins"
|
|
||||||
];
|
|
||||||
});
|
|
||||||
raincloudy = super.raincloudy.overridePythonAttrs (_old: {
|
|
||||||
disabled = false;
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
reactivex = super.reactivex.overridePythonAttrs (_old: {
|
|
||||||
disabled = false;
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
|
|
||||||
# Several packages are marked broken due to version constraints on upstream
|
|
||||||
# deps that have been bumped in nixpkgs (pysnmp 7.x, xmltodict 1.x).
|
|
||||||
# They work fine at runtime for HA's usage.
|
|
||||||
# aio-georss-client is marked broken because xmltodict >= 1.0 changed how
|
|
||||||
# namespace-annotated XML elements are returned (dict instead of string),
|
|
||||||
# which breaks _process_coordinates. The GDACS integration is not used here
|
|
||||||
# and the package installs fine; skip tests to unblock the build.
|
|
||||||
aio-georss-client = super.aio-georss-client.overridePythonAttrs (_old: {
|
|
||||||
meta = (super.aio-georss-client.meta or { }) // {
|
|
||||||
broken = false;
|
|
||||||
};
|
|
||||||
doCheck = false;
|
|
||||||
});
|
|
||||||
atenpdu = super.atenpdu.overridePythonAttrs (_old: {
|
|
||||||
meta = (super.atenpdu.meta or { }) // {
|
|
||||||
broken = false;
|
|
||||||
};
|
|
||||||
nativeBuildInputs = (_old.nativeBuildInputs or [ ]) ++ [ super.pythonRelaxDepsHook ];
|
|
||||||
pythonRelaxDeps = [ "async-timeout" ];
|
|
||||||
});
|
|
||||||
bimmer-connected = super.bimmer-connected.overridePythonAttrs (old: {
|
|
||||||
meta = (old.meta or { }) // {
|
|
||||||
broken = false;
|
|
||||||
};
|
|
||||||
doCheck = false;
|
|
||||||
# pillow is an optional dep (China market only) but the runtime dep check
|
|
||||||
# flags it as missing; add it to propagatedBuildInputs to satisfy it.
|
|
||||||
propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ super.pillow ];
|
|
||||||
});
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -36,7 +36,7 @@ let
|
|||||||
in
|
in
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "bcachefs-tools";
|
pname = "bcachefs-tools";
|
||||||
version = "1.37.2";
|
version = "1.37.5";
|
||||||
|
|
||||||
src = sources.bcachefs-tools;
|
src = sources.bcachefs-tools;
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,11 @@
|
|||||||
"bcachefs-tools": {
|
"bcachefs-tools": {
|
||||||
"fetcher": "git",
|
"fetcher": "git",
|
||||||
"url": "https://github.com/koverstreet/bcachefs-tools",
|
"url": "https://github.com/koverstreet/bcachefs-tools",
|
||||||
"rev": "v1.37.4",
|
"rev": "v1.37.5",
|
||||||
"hash": "sha256-VlljE+xoKg6GryVuebUA1v9x2shMBUb7veCtD68MBJw="
|
"hash": "sha256-x/hpOTvLYyNIsC8ZM0zmTwL8GsiqaTg0ZjQNiS7Y2Wo="
|
||||||
},
|
},
|
||||||
"cargoDeps": {
|
"cargoDeps": {
|
||||||
"hash": "sha256-t6ghsIRJFR2Kqism4tdizhnJ8qcE2ZZwH6c3nYogHlo="
|
"hash": "sha256-+9vy+StbFxN+2sNrObLUhvn0BhPZLW6zXuw0uUbaRmw="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4
packages/homeassistant/ha-icloud3/version.json
Executable file → Normal file
4
packages/homeassistant/ha-icloud3/version.json
Executable file → Normal file
@@ -8,8 +8,8 @@
|
|||||||
"fetcher": "github",
|
"fetcher": "github",
|
||||||
"owner": "gcobb321",
|
"owner": "gcobb321",
|
||||||
"repo": "icloud3",
|
"repo": "icloud3",
|
||||||
"tag": "v3.3.4.4",
|
"tag": "v3.4.3",
|
||||||
"hash": "sha256-B63iY4OC00PGXx/3aq/rkiO0xK11hXz66KaglwmgxIk="
|
"hash": "sha256-+4ImHtlUgcgdbVTJbow5m6x79esvjbCrtNvIQHI7/f8="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4
packages/homeassistant/ha-local-llm/version.json
Executable file → Normal file
4
packages/homeassistant/ha-local-llm/version.json
Executable file → Normal file
@@ -8,8 +8,8 @@
|
|||||||
"fetcher": "github",
|
"fetcher": "github",
|
||||||
"owner": "acon96",
|
"owner": "acon96",
|
||||||
"repo": "home-llm",
|
"repo": "home-llm",
|
||||||
"tag": "v0.4.6",
|
"tag": "v0.4.7",
|
||||||
"hash": "sha256-QmpyqNRhmnqFNiKPHm8GKuvZhbuYWDLck3eFC9MlIKQ="
|
"hash": "sha256-0ORVgQndUH4aHZLXZ4FjhlxrH0OSo2MLn+Dyf3sw6Tk="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4
packages/homeassistant/ha-nanokvm/version.json
Executable file → Normal file
4
packages/homeassistant/ha-nanokvm/version.json
Executable file → Normal file
@@ -8,8 +8,8 @@
|
|||||||
"fetcher": "github",
|
"fetcher": "github",
|
||||||
"owner": "Wouter0100",
|
"owner": "Wouter0100",
|
||||||
"repo": "homeassistant-nanokvm",
|
"repo": "homeassistant-nanokvm",
|
||||||
"rev": "bdd2ca39d8050e4b38bb7917ee4034f2fcd49471",
|
"hash": "sha256-oDxnSd1genH3F5SB3hXopb/GcWnN3nm5VMm8M/83QZ0=",
|
||||||
"hash": "sha256-S6g9mfPEixqeGQkXVK8PZJ/dnEC5ThKtbELAIAhCANM="
|
"tag": "v1.1.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notes": {
|
"notes": {
|
||||||
|
|||||||
4
packages/homeassistant/ha-openhasp/version.json
Executable file → Normal file
4
packages/homeassistant/ha-openhasp/version.json
Executable file → Normal file
@@ -8,8 +8,8 @@
|
|||||||
"fetcher": "github",
|
"fetcher": "github",
|
||||||
"owner": "HASwitchPlate",
|
"owner": "HASwitchPlate",
|
||||||
"repo": "openHASP-custom-component",
|
"repo": "openHASP-custom-component",
|
||||||
"tag": "0.7.8",
|
"tag": "0.7.9",
|
||||||
"hash": "sha256-5h1EqwpnsmWexqB3J/X4OcN9bfBYUxGxLF1Hrmoi5LY="
|
"hash": "sha256-UEIFrpX4eEs/c7b+mH9oz+USZ/bN7ypSpFHRQshpuws="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
packages/hueforge/HueForge_Linux_v0.9.3.1.AppImage
Executable file
BIN
packages/hueforge/HueForge_Linux_v0.9.3.1.AppImage
Executable file
Binary file not shown.
32
packages/hueforge/default.nix
Normal file
32
packages/hueforge/default.nix
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
writeShellScriptBin,
|
||||||
|
appimage-run
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
src = ./HueForge_Linux_v0.9.3.1.AppImage;
|
||||||
|
wrapperScript = writeShellScriptBin "hueforge" ''
|
||||||
|
exec ${appimage-run}/bin/appimage-run ${src} "$@"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
inherit src;
|
||||||
|
pname = "hueforge";
|
||||||
|
version = "0.9.3.1";
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
dontConfigure = true;
|
||||||
|
dontPatch = true;
|
||||||
|
dontFixup = true;
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out/{share,bin}
|
||||||
|
|
||||||
|
cp $src $out/share/HueForge_Linux_v0.9.3.1.AppImage
|
||||||
|
cp ${wrapperScript}/bin/hueforge $out/bin/hueforge
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
}
|
||||||
14
packages/proton-cachyos/version.json
Executable file → Normal file
14
packages/proton-cachyos/version.json
Executable file → Normal file
@@ -18,19 +18,19 @@
|
|||||||
"cachyos": {
|
"cachyos": {
|
||||||
"variables": {
|
"variables": {
|
||||||
"base": "10.0",
|
"base": "10.0",
|
||||||
"release": "20260324",
|
"release": "20260410",
|
||||||
"tarballSuffix": "-x86_64.tar.xz"
|
"tarballSuffix": "-x86_64.tar.xz"
|
||||||
},
|
},
|
||||||
"sources": {
|
"sources": {
|
||||||
"proton": {
|
"proton": {
|
||||||
"hash": "sha256-vswYkpHuXj/YqfjCj+x779SSOsoOCEeZfr99pi1Mfj0="
|
"hash": "sha256-7ahXvl7PuqZnV9VUjVXCZiXrUMfDyieqL4tDe2Et+N4="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cachyos-v2": {
|
"cachyos-v2": {
|
||||||
"variables": {
|
"variables": {
|
||||||
"base": "10.0",
|
"base": "10.0",
|
||||||
"release": "20260227",
|
"release": "20260410",
|
||||||
"tarballSuffix": "-x86_64_v2.tar.xz"
|
"tarballSuffix": "-x86_64_v2.tar.xz"
|
||||||
},
|
},
|
||||||
"sources": {
|
"sources": {
|
||||||
@@ -42,24 +42,24 @@
|
|||||||
"cachyos-v3": {
|
"cachyos-v3": {
|
||||||
"variables": {
|
"variables": {
|
||||||
"base": "10.0",
|
"base": "10.0",
|
||||||
"release": "20260324",
|
"release": "20260410",
|
||||||
"tarballSuffix": "-x86_64_v3.tar.xz"
|
"tarballSuffix": "-x86_64_v3.tar.xz"
|
||||||
},
|
},
|
||||||
"sources": {
|
"sources": {
|
||||||
"proton": {
|
"proton": {
|
||||||
"hash": "sha256-158b49/TPuYD4kRC9YCd/obVjv1JUBpDIsjjeUP/RRw="
|
"hash": "sha256-vJipf1yacr98lu7IkoZCg/563fvCp1x/8Nolyoj23SI="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cachyos-v4": {
|
"cachyos-v4": {
|
||||||
"variables": {
|
"variables": {
|
||||||
"base": "10.0",
|
"base": "10.0",
|
||||||
"release": "20260324",
|
"release": "20260410",
|
||||||
"tarballSuffix": "-x86_64_v4.tar.xz"
|
"tarballSuffix": "-x86_64_v4.tar.xz"
|
||||||
},
|
},
|
||||||
"sources": {
|
"sources": {
|
||||||
"proton": {
|
"proton": {
|
||||||
"hash": "sha256-qHNpSh2VneqiwLRYqjR/YRV6HPj1L51u13xNu70tyBw="
|
"hash": "sha256-pF5K89iZO35+9qnUBCDL5SmLp331stcKbEml4Fi+E3Q="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -25,12 +25,12 @@
|
|||||||
},
|
},
|
||||||
"unstable": {
|
"unstable": {
|
||||||
"variables": {
|
"variables": {
|
||||||
"modDirVersion": "7.0.0-rc7"
|
"modDirVersion": "7.0.0"
|
||||||
},
|
},
|
||||||
"sources": {
|
"sources": {
|
||||||
"unstable": {
|
"unstable": {
|
||||||
"rev": "8771a522e74c97a183b0a3a98ae9c2a3160c3cbb",
|
"rev": "bb31e96fee23a474a0504a15097d7ee55bed678e",
|
||||||
"hash": "sha256-M48A581MdEDZr/sPq8VFAH5ij8GfBJYcQct0HDxEHnw="
|
"hash": "sha256-NtuSVG/uFfxOXOocE/OnYCyYjp3ROU2xgx/C3IbTFyk="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4
packages/raspberrypi/raspberrypi-utils/version.json
Executable file → Normal file
4
packages/raspberrypi/raspberrypi-utils/version.json
Executable file → Normal file
@@ -5,8 +5,8 @@
|
|||||||
"fetcher": "github",
|
"fetcher": "github",
|
||||||
"owner": "raspberrypi",
|
"owner": "raspberrypi",
|
||||||
"repo": "utils",
|
"repo": "utils",
|
||||||
"rev": "0504cf3ba3eb31fd00ae8df4358b48d700ffcd16",
|
"rev": "d74d6da1c20a300e5fec7827fe75b5d1b2a337ff",
|
||||||
"hash": "sha256-sPt/i2+IAs+a2nkIcbNAUrBMpJuRoBD9kU86RfIarxQ="
|
"hash": "sha256-ZaNKVXU6xlOg8Q0ngm2KW5BuWa3smCtExZZh4REltPg="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
desktop:
|
desktop:
|
||||||
matt_password: ENC[AES256_GCM,data:wmcn47H15fVRhzLwuw5rATFIjKblT0TNY+K2abT6WAF89M4sATGqpRCB7p21CCXjAGM9HSY/E5EfPoKFFh6qYe6D9ykvvWTB0g==,iv:IIG0IotGRXrEYNq0PjOt0gI0TJIWBieI16RCYCyKS6w=,tag:6+QvPuK7wo5o1x1p0dz8/A==,type:str]
|
matt_password: ENC[AES256_GCM,data:tUSbFsXgxAGsLwQTUHx1uIOfZ//XB61wWjKsv9PjAI8NIPR9+q0VMeD/2H2plY3T2nq22qaRoIjntJBW0rvp8wNk8qz7E6D4zA==,iv:D8RQoYxZkUhdTx9F/imXyug5f5yUGUAPZ3hs73cHQC4=,tag:/zGNL5w/ugRrQB2VNHk4YA==,type:str]
|
||||||
hass_token: ENC[AES256_GCM,data:xex09ibizTRtqY4hdeXDnuBfpUUKn+cBeaPJkHeBNzO3nbMGXdaW5WXOc07ea/ANPj1Qz2U/npjzG41AUHVUSVeOK4e/FkrPsMPzTH0TiPURPJr/XPaOTCzoA+ryL1NPFc3sTIbX+wSVRtNQr7Jm59IIyfLv/wdd4De7RnhD+kyNLBDXnT9kPFJKfp4WcxcgmiJZGFPby6+U/c4gT3Z5hG0NzwmtLcur4VI79q+4RIoQYVb0A1oH,iv:2P766cm+rJ+8cWzYRV2tgmzoVWbX0gJe71aNQVoGNp4=,tag:8DusTheWmAIiDcKepS4Anw==,type:str]
|
hass_token: ENC[AES256_GCM,data:xex09ibizTRtqY4hdeXDnuBfpUUKn+cBeaPJkHeBNzO3nbMGXdaW5WXOc07ea/ANPj1Qz2U/npjzG41AUHVUSVeOK4e/FkrPsMPzTH0TiPURPJr/XPaOTCzoA+ryL1NPFc3sTIbX+wSVRtNQr7Jm59IIyfLv/wdd4De7RnhD+kyNLBDXnT9kPFJKfp4WcxcgmiJZGFPby6+U/c4gT3Z5hG0NzwmtLcur4VI79q+4RIoQYVb0A1oH,iv:2P766cm+rJ+8cWzYRV2tgmzoVWbX0gJe71aNQVoGNp4=,tag:8DusTheWmAIiDcKepS4Anw==,type:str]
|
||||||
restic:
|
restic:
|
||||||
user: ENC[AES256_GCM,data:IoDWBPg=,iv:Am5YWSr6qhQZumY/BUUgtL131q/gsk3OpSLFjPpYu8c=,tag:3fhkAZdukXbppH9BLUVSfA==,type:str]
|
user: ENC[AES256_GCM,data:IoDWBPg=,iv:Am5YWSr6qhQZumY/BUUgtL131q/gsk3OpSLFjPpYu8c=,tag:3fhkAZdukXbppH9BLUVSfA==,type:str]
|
||||||
@@ -164,8 +164,8 @@ sops:
|
|||||||
STU1bkRXNVRsYkJac0RPOVpZTmJCaW8KS9zUt1QpP0k38LQ6OMCkL7Ee3r/fZsWp
|
STU1bkRXNVRsYkJac0RPOVpZTmJCaW8KS9zUt1QpP0k38LQ6OMCkL7Ee3r/fZsWp
|
||||||
hfISSv9uO1uEmgRHtXSRaElQmOmGgcZB7oqSJvY3SJHxENPiCK4cDw==
|
hfISSv9uO1uEmgRHtXSRaElQmOmGgcZB7oqSJvY3SJHxENPiCK4cDw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-03-24T18:20:10Z"
|
lastmodified: "2026-04-20T20:42:20Z"
|
||||||
mac: ENC[AES256_GCM,data:X+n7XWuSM7fKBwimjhavlb4ZBHqS2C5U01HchnQ2WNJDCqg4rebCP08Fvv2WZOCUexS+Xp1W3C43vHmC51SMPB/8R/mABPDviC5B4HjGjp+WEET1jcoZtO7EZ5zCJwxAuIC4U5JrZQA89Uq64urJ1ggKhlt4Vv6cYpq3WYBNQ6s=,iv:GM4uRui5PjYH30zwani5uA5EYQbI5frUVXwsYk5Acoc=,tag:myVURZ7H7328/UrDnV/naA==,type:str]
|
mac: ENC[AES256_GCM,data:Yq81rBHKX+bBa1KC3EPBRHTB9GS50jvz/b11RWllOZnxy3wF5IeDp6oe86ysc9lHF4Onng6vo1rXJ+ikOz/i8zDFsdCmis8oijIQCWtguhFdvmH2q6cxJ72m4xjq3Gxx4hJUFA5PcZrh/hYv4IvvjlkwrDIh6XrIsFh0+ZlVUfg=,iv:m4maSSNkYeCnEeimTQCnkad/C6HkpYVe3Nokf4MZ3zg=,tag:WziqkCq7oR0uIXe/+/Ve4w==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-02-06T15:34:29Z"
|
- created_at: "2026-02-06T15:34:29Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
@@ -188,4 +188,4 @@ sops:
|
|||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: CBCB9B18A6B8930B0B6ABFD1CCB8CBEB30633684
|
fp: CBCB9B18A6B8930B0B6ABFD1CCB8CBEB30633684
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.12.1
|
version: 3.12.2
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
jallen-nas:
|
jallen-nas:
|
||||||
admin_password: ENC[AES256_GCM,data:0XUblR800UyliA8JfYUZbncDRxiU6eoTaf3i80+OCwJ/31oBhSqj9OtgYeRg3IyURwik1Nk/609IuHjIhly3mgTjOD6Hpzxpag==,iv:0yO3z8ItHRQFeI9JOnFTKhKVHi5u9cMtpglFRlkvYLE=,tag:iUd79iWAJQ9iqP0qolSwfA==,type:str]
|
admin_password: ENC[AES256_GCM,data:DF5CY1l8AI1W7JybX/QjkS1hPxUd8YzWMW2OtD4wvAAykIxd4YRUDI+RJUv+vfDOsPxJnBDPg7Zu2SHxLMvrrtks2L1vhLBm4Q==,iv:VvPiMgddSjy8KqDK2kA/F9tYLGCiARM68ttjCtP3vBM=,tag:pCbYXEK3+G8Ka+ogRlqhFw==,type:str]
|
||||||
nas_pool: ENC[AES256_GCM,data:LBiUC/5qMFUnWUWYZgRPrGopdPd6oWB0+xe1S+GiOMtSIsBH34ZoE8U/v1HmxR17mt0x169xq7iXAQZTCZ/Vd8KGmecTK7hC+H6kmSUcwsuoPiVyoSPdet3Zb716eXGWmnSD6QlReUpq6xiCqOwKUkgNgRtkdc92PAEcmbrw1tfooxTesxB3n9pSCXAkwsPxJWl7nLrCZIf6wOZci/TiwFJf534/YPKIz8q5JxX+E+VeQ4NNRfZxn4EqlMDgmNcEcuHdflqTNAlDmREqhN0XNREUaFveQ01T5sFb6XHorEHpUlKIzDpMV4LKjZQMZax4T+6nbGpUa5kf/Gr3xeOpMpTGNir1bM8oPQGP/Iz9u4AjGP56+JYcqUBcxG1wwNFIqBrrC+Bf7vdjGxgMClwW5AbMtGXwE9y+dSM9MMkj8kiaK1zWZfyIqRBheXtXUhPIjJSR8fmnVtKW358E7ynC9R14AsA3qxpxEc4+VmF7cJEzjStP//FRSuUFRlvgIcGBfncvt0b+ecEk8WostYAMHhqpyHtW2hG5orv6qFupLz0VCBbFLqlIEMG1d/EfjulGqWN4fGIhlAGpssvuo8r/9bOz4efTwODnKJqX5YfOPhFDAJZzj7pgFgAjf8/xAgelAU1yR3nlj2PR9itEAApY0L0FvnC4fEMBqlpINM8gGeNcfTraIYo7bqVhOT5sVOXmru+nRoyG1I01rJ1lQpis5Kqt+HWGa43fi81dtTm7kj/4bOPSPrJimIOD37O3GRlbiiGIhy/Ta/iVqzRsYeUZOyIQT+IjZ4pX5tgJ/AxASVzdRd9GluexPdUGVDb9Kjf7mo7aYsXyWDBP7ZoXDQGHndrlTlrQreDLgcwCXo1hHEn9YkIUfYpBd5Th7LJrsaNWXH838S+9sDqSCGdVPVcH0HC8x5T5Uo3Jb833uaQjtaXsSaAgaRkcEtAHz4LO5kKii3AgP0vA,iv:ny8qQhSrfokW3iS0KXtCVYgtvj07c25jfEUCIExD7eI=,tag:QD8C37p3gUJr42NHiL7PHw==,type:str]
|
nas_pool: ENC[AES256_GCM,data:LBiUC/5qMFUnWUWYZgRPrGopdPd6oWB0+xe1S+GiOMtSIsBH34ZoE8U/v1HmxR17mt0x169xq7iXAQZTCZ/Vd8KGmecTK7hC+H6kmSUcwsuoPiVyoSPdet3Zb716eXGWmnSD6QlReUpq6xiCqOwKUkgNgRtkdc92PAEcmbrw1tfooxTesxB3n9pSCXAkwsPxJWl7nLrCZIf6wOZci/TiwFJf534/YPKIz8q5JxX+E+VeQ4NNRfZxn4EqlMDgmNcEcuHdflqTNAlDmREqhN0XNREUaFveQ01T5sFb6XHorEHpUlKIzDpMV4LKjZQMZax4T+6nbGpUa5kf/Gr3xeOpMpTGNir1bM8oPQGP/Iz9u4AjGP56+JYcqUBcxG1wwNFIqBrrC+Bf7vdjGxgMClwW5AbMtGXwE9y+dSM9MMkj8kiaK1zWZfyIqRBheXtXUhPIjJSR8fmnVtKW358E7ynC9R14AsA3qxpxEc4+VmF7cJEzjStP//FRSuUFRlvgIcGBfncvt0b+ecEk8WostYAMHhqpyHtW2hG5orv6qFupLz0VCBbFLqlIEMG1d/EfjulGqWN4fGIhlAGpssvuo8r/9bOz4efTwODnKJqX5YfOPhFDAJZzj7pgFgAjf8/xAgelAU1yR3nlj2PR9itEAApY0L0FvnC4fEMBqlpINM8gGeNcfTraIYo7bqVhOT5sVOXmru+nRoyG1I01rJ1lQpis5Kqt+HWGa43fi81dtTm7kj/4bOPSPrJimIOD37O3GRlbiiGIhy/Ta/iVqzRsYeUZOyIQT+IjZ4pX5tgJ/AxASVzdRd9GluexPdUGVDb9Kjf7mo7aYsXyWDBP7ZoXDQGHndrlTlrQreDLgcwCXo1hHEn9YkIUfYpBd5Th7LJrsaNWXH838S+9sDqSCGdVPVcH0HC8x5T5Uo3Jb833uaQjtaXsSaAgaRkcEtAHz4LO5kKii3AgP0vA,iv:ny8qQhSrfokW3iS0KXtCVYgtvj07c25jfEUCIExD7eI=,tag:QD8C37p3gUJr42NHiL7PHw==,type:str]
|
||||||
ups_password: ENC[AES256_GCM,data:tYuJ9nU3E2/Ko6Y=,iv:lQq+g68lKCp1rmPvS/84xGIXHxD9zY5zZrrjEJlY8Hs=,tag:p6McEr+sXGAQyMAz1Kaxfw==,type:str]
|
ups_password: ENC[AES256_GCM,data:tYuJ9nU3E2/Ko6Y=,iv:lQq+g68lKCp1rmPvS/84xGIXHxD9zY5zZrrjEJlY8Hs=,tag:p6McEr+sXGAQyMAz1Kaxfw==,type:str]
|
||||||
authentik-env: ENC[AES256_GCM,data:PhHiiDJuKx/LKbJR6wx0HknqAs+fnAilA2HsMHwl0N3CMQ0pa+qKEB9x0a16Jr0yC9F4OKD7k98Q4wHbQWuE8IORB9CaiWVQzwJEaFvQ1wdv0wtHC23Aq5ppUPG941xArpF40/64vLYYa8w5Q1wxQr6xeg4VZwpSahIRAa6tB4eMAgopl4QeXGMskaPrL7A9Eu6lXt5LQJkCEFRuyL1XX5W33/l0HYeovgevhqTcbRmOLiG8r4XOihQDUtVWIhW8X3iDlCsgNEgxJE2s+7UuqwetvHpLCQMEyPfITx6FMI6vw8+raLTwQC7fDWXyqjWIJ3/xds7DTcBjJZMj72S6tggX0QLDfnrtjIG0iVNmbRDE2Cv96VJVdV6B381B2XKYx1EThjgucxbmp2Gz4+dpGu3O+rNxlfd9VR7KDA1FH2ddPr8JMhRpeBYbYpxCfuKqgKgfBqvxdI7lV2/alsqLZ3RdzRxi3mCilrldnKEw9YzEJEh0UU2L9J2bP8GJWpyfQsSGnNjpGL3k877e7R0NrKle7ertp2NZKccrKCXyYDGbfERrfmtN2ebaWZXmtbj9Hf/PZBQyXa8onf85QeuY5574pvm8+TZRGorhuMyKi/19lOuEgrAayDM8lQZUDW/QWmU3qf8dO4LAbE7HpzJfv0nEgnKbqVUrV4wcgHYPWNSCFLfdW8eVISgIgZBNA/FD836fwBTCwB91jfWI8g9yrK0l+fvk7RL7Spz7XoK/YIELhojoS6LLr/1wgP2atekDaUBMKw==,iv:w6M8cm+5eCkGPJiD0NkBgZuIVjYPUd9d1yp95y/BwyQ=,tag:SgOpa23x395CefA9zvI5GA==,type:str]
|
authentik-env: ENC[AES256_GCM,data:PhHiiDJuKx/LKbJR6wx0HknqAs+fnAilA2HsMHwl0N3CMQ0pa+qKEB9x0a16Jr0yC9F4OKD7k98Q4wHbQWuE8IORB9CaiWVQzwJEaFvQ1wdv0wtHC23Aq5ppUPG941xArpF40/64vLYYa8w5Q1wxQr6xeg4VZwpSahIRAa6tB4eMAgopl4QeXGMskaPrL7A9Eu6lXt5LQJkCEFRuyL1XX5W33/l0HYeovgevhqTcbRmOLiG8r4XOihQDUtVWIhW8X3iDlCsgNEgxJE2s+7UuqwetvHpLCQMEyPfITx6FMI6vw8+raLTwQC7fDWXyqjWIJ3/xds7DTcBjJZMj72S6tggX0QLDfnrtjIG0iVNmbRDE2Cv96VJVdV6B381B2XKYx1EThjgucxbmp2Gz4+dpGu3O+rNxlfd9VR7KDA1FH2ddPr8JMhRpeBYbYpxCfuKqgKgfBqvxdI7lV2/alsqLZ3RdzRxi3mCilrldnKEw9YzEJEh0UU2L9J2bP8GJWpyfQsSGnNjpGL3k877e7R0NrKle7ertp2NZKccrKCXyYDGbfERrfmtN2ebaWZXmtbj9Hf/PZBQyXa8onf85QeuY5574pvm8+TZRGorhuMyKi/19lOuEgrAayDM8lQZUDW/QWmU3qf8dO4LAbE7HpzJfv0nEgnKbqVUrV4wcgHYPWNSCFLfdW8eVISgIgZBNA/FD836fwBTCwB91jfWI8g9yrK0l+fvk7RL7Spz7XoK/YIELhojoS6LLr/1wgP2atekDaUBMKw==,iv:w6M8cm+5eCkGPJiD0NkBgZuIVjYPUd9d1yp95y/BwyQ=,tag:SgOpa23x395CefA9zvI5GA==,type:str]
|
||||||
@@ -101,6 +101,9 @@ jallen-nas:
|
|||||||
secret-key: ENC[AES256_GCM,data:dPHXEAKGrbbM36uH3W4yzm3GmJI=,iv:yHMAMJ8w+uoH/IvLSbxyQm6dEml0MWvwfRIIVHmc6LE=,tag:AyDLS20gUH4gupRGrtGReQ==,type:str]
|
secret-key: ENC[AES256_GCM,data:dPHXEAKGrbbM36uH3W4yzm3GmJI=,iv:yHMAMJ8w+uoH/IvLSbxyQm6dEml0MWvwfRIIVHmc6LE=,tag:AyDLS20gUH4gupRGrtGReQ==,type:str]
|
||||||
kavita:
|
kavita:
|
||||||
token: ENC[AES256_GCM,data:XurnehEZ/jCn+lxtTyty3WkDb17nQ7X3dIIys8O1l17gNzBMyqCLuzQaKLvqAV13PIaGBRTSnlNe7hDs5XYsI2nyL/l0ptPPXgKGEujEtTL8ei0rxTAYnA==,iv:Guinyj+EQNSUE+z+yu3HTF+leoxk7LWXBX/HGcLEki4=,tag:hfkgnjFAwUEVXtDT5HFJTg==,type:str]
|
token: ENC[AES256_GCM,data:XurnehEZ/jCn+lxtTyty3WkDb17nQ7X3dIIys8O1l17gNzBMyqCLuzQaKLvqAV13PIaGBRTSnlNe7hDs5XYsI2nyL/l0ptPPXgKGEujEtTL8ei0rxTAYnA==,iv:Guinyj+EQNSUE+z+yu3HTF+leoxk7LWXBX/HGcLEki4=,tag:hfkgnjFAwUEVXtDT5HFJTg==,type:str]
|
||||||
|
actual:
|
||||||
|
client-id: ENC[AES256_GCM,data:bgImXku1RYZADFOPGKScHyC07iB6NRO+OfL477Fmxvp2/MGdahhjXQ==,iv:PsAomwKXxJjHEDrkIuzOAoyxhmKM9Yqmj3xVYx8iUns=,tag:nPd9+jPqcc06DqVb+bg79Q==,type:str]
|
||||||
|
client-secret: ENC[AES256_GCM,data:PN5RA3gd5NM8m8FbpeJR5SROU9BaE78jTDHBBrVTkXZQq+7HQ6Tq9X6YDv755qwES2WOZyWohAlPSGBJ7/z1NY2dzDhBJTekVXKDpWYpVZhk3AlaT/XjaFP6HNRyAHjBUjLvp1hgCC/QcipzSjfVYdRduRV5b5nMhbz+AITlo6w=,iv:MpgHI1bmd4fS1MILDtmTeFShi61M/dqQsalmTnxT4q8=,tag:+lTfIfRIy7MxFRQu06GtgQ==,type:str]
|
||||||
sops:
|
sops:
|
||||||
shamir_threshold: 1
|
shamir_threshold: 1
|
||||||
age:
|
age:
|
||||||
@@ -248,8 +251,8 @@ sops:
|
|||||||
L0gwQm5takNjMkVGNzVlSStJYlUwWDAKP8QA3rRUHYbyyhPC/k0Eq2EIKfjyc7Co
|
L0gwQm5takNjMkVGNzVlSStJYlUwWDAKP8QA3rRUHYbyyhPC/k0Eq2EIKfjyc7Co
|
||||||
7BkHH3msC6h9g42BB5iIYe6KQ+UGxMQBFvp+qSB27jaIfajN5MP0BA==
|
7BkHH3msC6h9g42BB5iIYe6KQ+UGxMQBFvp+qSB27jaIfajN5MP0BA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-04-08T20:48:03Z"
|
lastmodified: "2026-04-20T20:42:04Z"
|
||||||
mac: ENC[AES256_GCM,data:iwAX9cd47lppnht7Tvu5lHxuMLrZ9GMAQpcAyZC+GkFV6P+Kkda1lxphuMKkntEeSkEbjG1Ca29bkhKQ1M7HxPnmV2ORIYqHz15ZQXcGnKyW5cj2mSn9skPlTjMY8VzN8LHhHWWba54EzG6b6fsKuYhtnZZiQWnXS4bZQeRxPB4=,iv:QaNu/kEXCkuSQ+METVL5pag1JrYLZoPeUyl4dnlzTew=,tag:7G7a6vTORnb+PFT8VdB9cg==,type:str]
|
mac: ENC[AES256_GCM,data:yVJD3kRCPtd0ZMXHwjIemI6R0pe7KvU8CAB3/1MWQrUN3sdQ7L+K04GhQA50R9eDu9fHmrUJqyhrxlZT5txm8pf9wBTAGZ/jdtCHbsFzOKZDMDs/HW8zMxvStSZvb9I2GiaIgXSbVajVovEEpJeGJi7GRm48L90bD1m/IkzogIw=,iv:hzYuxHyr1mCeQbOkOk7A6V1TMIDfc+0kcuNh3yViqug=,tag:gveOHBvJD87eVtRHQy+SMQ==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-02-06T15:34:30Z"
|
- created_at: "2026-02-06T15:34:30Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#ENC[AES256_GCM,data:HkOno2ohMSLs46g=,iv:7KHzoElBP/GMIVubcIBya42SoFKVyt/+YRIxkgRE3Cw=,tag:U87dYHrKu/qqbLf5r7XEiA==,type:comment]
|
#ENC[AES256_GCM,data:HkOno2ohMSLs46g=,iv:7KHzoElBP/GMIVubcIBya42SoFKVyt/+YRIxkgRE3Cw=,tag:U87dYHrKu/qqbLf5r7XEiA==,type:comment]
|
||||||
wifi: ENC[AES256_GCM,data:Rs+4Km4DogO7XatA,iv:JUv9HkNWsv/l4Fli5sFeUeYuWG1Yju95G59FJ/Q5W50=,tag:gRFCG4d5OBMRx1QayRV8Zg==,type:str]
|
wifi: ENC[AES256_GCM,data:Rs+4Km4DogO7XatA,iv:JUv9HkNWsv/l4Fli5sFeUeYuWG1Yju95G59FJ/Q5W50=,tag:gRFCG4d5OBMRx1QayRV8Zg==,type:str]
|
||||||
matt_password: ENC[AES256_GCM,data:/8utn5xMoWIxXitfg2kFZCQwbqqn6rH7Pt5KYeTyGintjg5jF8T9eqdqrBGlqMdKh/YjUTwZZg4/PkNG9/gqk86pjaUtg+8C6w==,iv:BDbThvyXmzB9eKfuK0V2eR8p20g7rOOTOA3AYNCM6TI=,tag:KvIKOLFW9NMmQy97QWRfQA==,type:str]
|
matt_password: ENC[AES256_GCM,data:TRuRbBo+QaBiUG7cetztALUFtkcEtrOjFcwyfRS/HNC7uwE/FwKooms7mOuGyNOAw7ezNEX4dHQ/1ylAgyXq4wdFxlJiYLrqVQ==,iv:Q01NVgWwGR/rdJ1IbFgU8HodMtz2Vb62wMpH+qbXNFk=,tag:IBC+fHoDUwWD64ItUGvRGw==,type:str]
|
||||||
admin_password: ENC[AES256_GCM,data:aGyn1Tm+2ld3BqXN3U1RQkew13Ln0Y3+xYiIUjErmq8Y/AkR65bhEHpVKx6lT2AZNG7bTPM0QTGd5vloD4QdrtAMv5eye6GFHg==,iv:EYLqDoqK/4tzdg+YTywpeCg0kullQEyD6mKTJMTXYB4=,tag:GJnZqZj2Lnx4YoQ+ApUBBw==,type:str]
|
admin_password: ENC[AES256_GCM,data:uMAyZptUy49T7sei6nctqR7E/eo36pd8hG5s6lND/0AsCp4m+ZUCYwqi7U7+sDrtmCaZZ6mUJKecrHcaXOVWIQwr0zXvCVZ+zw==,iv:f9j1WnhMNTc7t1LUdhCpp+TIF8s1dvn7HuX/bLD+GM4=,tag:Duymo3XHcX3frKRnnCeiuA==,type:str]
|
||||||
github-token: ENC[AES256_GCM,data:FAuwS/j5kd/NvOVdwa+ROWgMZCjyOjDbIMoU11KkaUOVhnztZyLGCA==,iv:+EvAvf7cUpljLHaxVkBRloZsAYcKjceJHinUU47PCRI=,tag:p0irO6vnt5nr4sZIq9B8gA==,type:str]
|
github-token: ENC[AES256_GCM,data:FAuwS/j5kd/NvOVdwa+ROWgMZCjyOjDbIMoU11KkaUOVhnztZyLGCA==,iv:+EvAvf7cUpljLHaxVkBRloZsAYcKjceJHinUU47PCRI=,tag:p0irO6vnt5nr4sZIq9B8gA==,type:str]
|
||||||
gmail-smtp-password: ENC[AES256_GCM,data:zksDTEkRhkXA74ujBBWvGwm5sQ==,iv:uhJ6gxmaqmjAkhsJqmBy6FJPpCSAFDMlhxl1ynZAgoQ=,tag:Qrp5jPkfoC28xwARlWzT2g==,type:str]
|
gmail-smtp-password: ENC[AES256_GCM,data:zksDTEkRhkXA74ujBBWvGwm5sQ==,iv:uhJ6gxmaqmjAkhsJqmBy6FJPpCSAFDMlhxl1ynZAgoQ=,tag:Qrp5jPkfoC28xwARlWzT2g==,type:str]
|
||||||
disk-key: ENC[AES256_GCM,data:cJdjG1gWYT4V0idae0nZl0j9FoEQuMW5PhQer2s8t4piv2mE8XM64W92MJyhi2aNtZ3cJ9h5PSW49zLeUWXIPGJNAvwRyWVc0O+T96jlZqtFlYBYLVh4tXdpXmxvq7IhB+sR2rY7qpcJEtCyUR8Mc7uzPZLQhuicwOjYuThhMdq73v3Re4taiL358U4DsLGhaQaGVoZ/RVRqT40F0ByxZto+JbwFGJBjQJlBhxE0b5pge93hQJcyY0LiI0Ctkv43gR5pnkHpXlM5TqZvzJLQVkG+N9IaRg0fPBnTyR8IaTi6ZAqBTY9byMPbfRsMgwY/FdGCkBguLNBt8a8P4TzzKo8CwcBcSOcCMKh+tzBwIAOxFb3H6lgLiKutA5wxgOrJ1tADvPxjEOjPx3zXVZA1jzsqtH4p6s5XDKJVhSoT08gI6DN7ILhBG9v8+NDeBj8ENFkMxDnbFrEyBt2j1fwq5s2/SmioN407KVi8Jd7SqQBEcp2WHFkrc95nJTyDer0J34jVUPVtVaqmLAPlzKWr9VZyrDJbl4stwz/pjstxtDfx4urxNYn6fhs3vigU6JFrE3sVN4MMosgvDxyqiMM44Qc6V6XO1GDJxKUo9kP8CGNvLpsMZSY9ZSjQaxMUNqXfySCry3AsOZolo6XUtbEk3YGGVAiJoiUE9aogdh++zRVYi+s2pzwf8BYGK2OB+C8ojSTRtcjsTCacWlV4cCnkpC5hpQ7KBycg8hYEm3bTjMuKcqsSTl8TUgwk4gq2cq2ZqvTWE7AHcgLGiFcT4/vm05rdS8j+nq5XprBUAwcvhR+wHtgU/HcJr939hp/45ZVI5a2DtcbhFOnrX+W/TZsUHdw+pxzau4JUfMI5COc3ntD0IOwP8c/dH+DOYeI6KToV8judUnIyMKnJrXBRpGoLa9kmbslUpw2oZSnQo1jBB1rQqLiQmbjA3nybAunmgrnaMtZcZZBX,iv:Y2rQMzIP4iA4YTRReMhIaG6aKTnlQjBl/eVdxg9gipM=,tag:m9KlqWLIxQ5065DBB8u0rw==,type:str]
|
disk-key: ENC[AES256_GCM,data:cJdjG1gWYT4V0idae0nZl0j9FoEQuMW5PhQer2s8t4piv2mE8XM64W92MJyhi2aNtZ3cJ9h5PSW49zLeUWXIPGJNAvwRyWVc0O+T96jlZqtFlYBYLVh4tXdpXmxvq7IhB+sR2rY7qpcJEtCyUR8Mc7uzPZLQhuicwOjYuThhMdq73v3Re4taiL358U4DsLGhaQaGVoZ/RVRqT40F0ByxZto+JbwFGJBjQJlBhxE0b5pge93hQJcyY0LiI0Ctkv43gR5pnkHpXlM5TqZvzJLQVkG+N9IaRg0fPBnTyR8IaTi6ZAqBTY9byMPbfRsMgwY/FdGCkBguLNBt8a8P4TzzKo8CwcBcSOcCMKh+tzBwIAOxFb3H6lgLiKutA5wxgOrJ1tADvPxjEOjPx3zXVZA1jzsqtH4p6s5XDKJVhSoT08gI6DN7ILhBG9v8+NDeBj8ENFkMxDnbFrEyBt2j1fwq5s2/SmioN407KVi8Jd7SqQBEcp2WHFkrc95nJTyDer0J34jVUPVtVaqmLAPlzKWr9VZyrDJbl4stwz/pjstxtDfx4urxNYn6fhs3vigU6JFrE3sVN4MMosgvDxyqiMM44Qc6V6XO1GDJxKUo9kP8CGNvLpsMZSY9ZSjQaxMUNqXfySCry3AsOZolo6XUtbEk3YGGVAiJoiUE9aogdh++zRVYi+s2pzwf8BYGK2OB+C8ojSTRtcjsTCacWlV4cCnkpC5hpQ7KBycg8hYEm3bTjMuKcqsSTl8TUgwk4gq2cq2ZqvTWE7AHcgLGiFcT4/vm05rdS8j+nq5XprBUAwcvhR+wHtgU/HcJr939hp/45ZVI5a2DtcbhFOnrX+W/TZsUHdw+pxzau4JUfMI5COc3ntD0IOwP8c/dH+DOYeI6KToV8judUnIyMKnJrXBRpGoLa9kmbslUpw2oZSnQo1jBB1rQqLiQmbjA3nybAunmgrnaMtZcZZBX,iv:Y2rQMzIP4iA4YTRReMhIaG6aKTnlQjBl/eVdxg9gipM=,tag:m9KlqWLIxQ5065DBB8u0rw==,type:str]
|
||||||
@@ -168,8 +168,8 @@ sops:
|
|||||||
WkVDSy9QZEVUSVhOOGRuenlHemMvdFUKeW9NARHwoqUDh53y3U3YNOJWBadHXc/S
|
WkVDSy9QZEVUSVhOOGRuenlHemMvdFUKeW9NARHwoqUDh53y3U3YNOJWBadHXc/S
|
||||||
moz8UPSyq7mavU80Xn5ccvFUfOoC6fPttFQ42F04pj9XTdRF64vvRw==
|
moz8UPSyq7mavU80Xn5ccvFUfOoC6fPttFQ42F04pj9XTdRF64vvRw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-03-27T00:26:37Z"
|
lastmodified: "2026-04-20T20:41:44Z"
|
||||||
mac: ENC[AES256_GCM,data:ZybGxm3W2H0B5dO6lp0kWr3ebWbrBg4QzQ82q2GMBJg2YD3zFFaRZEz4MgaNAcp5AYEBwCYDfDoHEhFIZYU262ZmpXY7bk6tlg3x6xE+4FhgYNoz7mm9SLaLmyBRS3yKbtDbYOpvF1kBigyc417nVCeyvkolgkmG+otrGn1ciQA=,iv:BmAp5Fo9ioRPmT05ZA3ZxPeUkLLF7Yi+of1c8aGwEmI=,tag:HGsrrz1QMog5dw9wQKFc+w==,type:str]
|
mac: ENC[AES256_GCM,data:ep6ie6DCVnsOiTm/2x/yXsA/5kDmIj7m1nNiAZT/1ZYpZan8NQb8zBohdzvAmEoyf0c0nTNH50lG9OBuYLWfLI/AWjN6Rr69irq+BNB+2zqiZPgtnB7fxUS/tWdi9/zEe8U2Sk4l6eoNi+I3ThEjlAb4lMEjmcszyTfVEbadCRQ=,iv:ydqNDIgokJqvk9BOHMQS7DkVeX+a4tg57wGwF0xQ5Ro=,tag:ERzqVHSvqlRX3qeQk7mXvQ==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-03-24T14:06:52Z"
|
- created_at: "2026-03-24T14:06:52Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
|
|||||||
@@ -27,6 +27,25 @@
|
|||||||
setupAsahiSound = true;
|
setupAsahiSound = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Workaround for Apple BCM Bluetooth firmware not sending completion ACKs.
|
||||||
|
# Without this, WirePlumber spams "Missing completion reports for packet:
|
||||||
|
# Bluetooth adapter firmware bug?" and audio over BT is unreliable.
|
||||||
|
hardware.bluetooth.settings = {
|
||||||
|
Policy = {
|
||||||
|
AutoEnable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.pipewire.wireplumber.extraConfig = {
|
||||||
|
"51-bluetooth-apple-fix" = {
|
||||||
|
"monitor.bluez.properties" = {
|
||||||
|
"bluez5.msbc-support" = false;
|
||||||
|
"bluez5.sbc-xq-support" = false;
|
||||||
|
"bluez5.hw-offload-sco" = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
${namespace} = {
|
${namespace} = {
|
||||||
headless.enable = false;
|
headless.enable = false;
|
||||||
|
|
||||||
@@ -107,7 +126,7 @@
|
|||||||
nixpkgs.config.allowUnsupportedSystem = true;
|
nixpkgs.config.allowUnsupportedSystem = true;
|
||||||
|
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
libvirtd.enable = true;
|
libvirtd.enable = false;
|
||||||
# efi = {
|
# efi = {
|
||||||
# OVMF = (pkgs.OVMF.override {
|
# OVMF = (pkgs.OVMF.override {
|
||||||
# secureBoot = true;
|
# secureBoot = true;
|
||||||
|
|||||||
@@ -56,6 +56,90 @@ in
|
|||||||
ra_allow_slaac = false;
|
ra_allow_slaac = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
filtering = {
|
||||||
|
rewrites = [
|
||||||
|
{
|
||||||
|
domain = "actual.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "adguard.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "cache.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "chat.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "code.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "esphome.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "grafana.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "govee2mqtt.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "manyfold.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "orca.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "sabnzbd.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "sonarr.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "orca.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "paperless-ai.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "tunarr.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "zigbee2mqtt.mjallen.dev";
|
||||||
|
answer = "10.0.1.4";
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
kernel = pkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-zen4;
|
kernel = pkgs.linuxPackages_latest;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# Configure bootloader with lanzaboot and secureboot
|
# Configure bootloader with lanzaboot and secureboot
|
||||||
|
|||||||
@@ -3,12 +3,13 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-zen4;
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
boot = {
|
boot = {
|
||||||
inherit kernelPackages;
|
inherit kernelPackages;
|
||||||
|
|
||||||
|
# https://github.com/artmoty-dev/n5pro-jmb585-fix
|
||||||
kernelParams = [ "amd_iommu=on" ];
|
kernelParams = [ "amd_iommu=on" ];
|
||||||
|
|
||||||
initrd = {
|
initrd = {
|
||||||
|
|||||||
@@ -361,7 +361,7 @@ in
|
|||||||
# Configure programs
|
# Configure programs
|
||||||
programs = {
|
programs = {
|
||||||
kdeconnect.enable = lib.mkForce false;
|
kdeconnect.enable = lib.mkForce false;
|
||||||
virt-manager.enable = true;
|
virt-manager.enable = config.virtualisation.libvirtd.enable;
|
||||||
steam.gamescopeSession.enable = lib.mkForce false;
|
steam.gamescopeSession.enable = lib.mkForce false;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
kernel = pkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-zen4;
|
kernel = pkgs.linuxPackages_latest;
|
||||||
pkgsVersion = pkgs; # .unstable;
|
pkgsVersion = pkgs; # .unstable;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-x86_64-v4;
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,70 @@ in
|
|||||||
subdomain = "otbr";
|
subdomain = "otbr";
|
||||||
upstream = "http://127.0.0.1:${toString net.ports.nuc.otbr}";
|
upstream = "http://127.0.0.1:${toString net.ports.nuc.otbr}";
|
||||||
};
|
};
|
||||||
|
actual = {
|
||||||
|
subdomain = "actual";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.actual}";
|
||||||
|
};
|
||||||
|
cache = {
|
||||||
|
subdomain = "cache";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.attic}";
|
||||||
|
};
|
||||||
|
manyfold = {
|
||||||
|
subdomain = "manyfold";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.manyfold}";
|
||||||
|
};
|
||||||
|
chat = {
|
||||||
|
subdomain = "chat";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.llamaCpp}";
|
||||||
|
};
|
||||||
|
grafana = {
|
||||||
|
subdomain = "grafana";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.grafana}";
|
||||||
|
};
|
||||||
|
orca = {
|
||||||
|
subdomain = "orca";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.orcaSlicer}";
|
||||||
|
};
|
||||||
|
sabnzbd = {
|
||||||
|
subdomain = "sabnzbd";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.sabnzbd}";
|
||||||
|
};
|
||||||
|
sonarr = {
|
||||||
|
subdomain = "sonarr";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.sonarr}";
|
||||||
|
};
|
||||||
|
radarr = {
|
||||||
|
subdomain = "radarr";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.radarr}";
|
||||||
|
};
|
||||||
|
tunarr = {
|
||||||
|
subdomain = "tunarr";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.tunarr}";
|
||||||
|
};
|
||||||
|
unmanic = {
|
||||||
|
subdomain = "unmanic";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.unmanic}";
|
||||||
|
};
|
||||||
|
code = {
|
||||||
|
subdomain = "code";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.codeServer}";
|
||||||
|
};
|
||||||
|
adguard = {
|
||||||
|
subdomain = "adguard";
|
||||||
|
upstream = "http://${net.hosts.pi5.lan}:${toString net.ports.pi5.adguard}";
|
||||||
|
};
|
||||||
|
zigbee2mqtt = {
|
||||||
|
subdomain = "zigbee2mqtt";
|
||||||
|
upstream = "http://${net.hosts.nuc.lan}:${toString net.ports.nuc.zigbee2mqtt}";
|
||||||
|
};
|
||||||
|
govee2mqtt = {
|
||||||
|
subdomain = "govee2mqtt";
|
||||||
|
upstream = "http://${net.hosts.nuc.lan}:${toString net.ports.nuc.govee2mqtt}";
|
||||||
|
};
|
||||||
|
paperlessAi = {
|
||||||
|
subdomain = "paperless-ai";
|
||||||
|
upstream = "http://${net.hosts.nas.lan}:${toString net.ports.nas.paperlessAi}";
|
||||||
|
};
|
||||||
# hass is currently proxied by the NAS Caddy (modules/nixos/services/caddy).
|
# hass is currently proxied by the NAS Caddy (modules/nixos/services/caddy).
|
||||||
# To migrate it here, remove the @hass block from that module and add:
|
# To migrate it here, remove the @hass block from that module and add:
|
||||||
# hass = {
|
# hass = {
|
||||||
|
|||||||
Reference in New Issue
Block a user