summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flake.lock6
-rw-r--r--kartei/makefu/default.nix12
-rw-r--r--kartei/makefu/retiolum/savarcast.pub8
-rw-r--r--kartei/makefu/retiolum/savarcast_ed25519.pub1
-rw-r--r--kartei/makefu/wiregrill/savarcast.pub1
-rw-r--r--kartei/makefu/wiregrill/telex.pub2
-rw-r--r--kartei/palo/default.nix81
-rw-r--r--krebs/1systems/puyak/config.nix4
-rw-r--r--krebs/1systems/puyak/net.nix2
-rw-r--r--krebs/2configs/news-host.nix3
-rw-r--r--krebs/2configs/shack/esphome.nix7
-rw-r--r--krebs/2configs/shack/glados/default.nix13
-rw-r--r--krebs/2configs/shack/glados/zigbee-quirks/__init__.py0
-rw-r--r--krebs/2configs/shack/glados/zigbee-quirks/ts011f_power_monitoring.py96
-rw-r--r--krebs/2configs/shack/glados/zigbee.nix5
-rw-r--r--krebs/3modules/git.nix10
-rw-r--r--krebs/3modules/zones.nix3
-rw-r--r--krebs/5pkgs/haskell/hack.nix21
-rw-r--r--krebs/5pkgs/simple/cabal-read.nix39
-rw-r--r--krebs/5pkgs/simple/krebs-pages/fixtures/index.html2
20 files changed, 212 insertions, 104 deletions
diff --git a/flake.lock b/flake.lock
index 9a05f5a3c..faadbeea2 100644
--- a/flake.lock
+++ b/flake.lock
@@ -18,11 +18,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1707956935,
- "narHash": "sha256-ZL2TrjVsiFNKOYwYQozpbvQSwvtV/3Me7Zwhmdsfyu4=",
+ "lastModified": 1715447595,
+ "narHash": "sha256-VsVAUQOj/cS1LCOmMjAGeRksXIAdPnFIjCQ0XLkCsT0=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "a4d4fe8c5002202493e87ec8dbc91335ff55552c",
+ "rev": "062ca2a9370a27a35c524dc82d540e6e9824b652",
"type": "github"
},
"original": {
diff --git a/kartei/makefu/default.nix b/kartei/makefu/default.nix
index f215f1fcb..d6134cd8d 100644
--- a/kartei/makefu/default.nix
+++ b/kartei/makefu/default.nix
@@ -96,6 +96,16 @@ in {
retiolum.ip4.addr = "10.243.0.212";
};
};
+ savarcast = rec {
+ nets = {
+ retiolum.ip4 = {
+ addr = "10.243.136.238";
+ };
+ retiolum.aliases = [
+ "sava.r"
+ ];
+ };
+ };
x = {
syncthing.id = "OA36OF6-JEFCUJQ-OEYVTMH-DPCACQI-3AJRE5G-BFVMOUG-RPYJQE3-4ZCUWA5";
nets = {
@@ -127,6 +137,7 @@ in {
aliases = [
"omo.r"
"dcpp.omo.r"
+ "hass.omo.r"
"backup.makefu.r"
"torrent.omo.r"
"music.omo.r"
@@ -239,6 +250,7 @@ in {
ul.work.euer IN A ${nets.internet.ip4.addr}
music.euer IN A ${nets.internet.ip4.addr}
ntfy.euer IN A ${nets.internet.ip4.addr}
+ paper.euer IN A ${nets.internet.ip4.addr}
'';
};
nets = rec {
diff --git a/kartei/makefu/retiolum/savarcast.pub b/kartei/makefu/retiolum/savarcast.pub
new file mode 100644
index 000000000..65da0d5f9
--- /dev/null
+++ b/kartei/makefu/retiolum/savarcast.pub
@@ -0,0 +1,8 @@
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAvxhCwL7g+p3rp2aelJHKHowLLcDZVqZnsuViW5jzQ5kQuDB6Rc7f
+IiUXXzg6/BL2o7jUW1gRrHbiVy7360HxsTwQvV8j0/s+UsCQCybWclGE2NlsjCUM
+xi/zTn/R523o43J4t6L7ohDlJVBCPMVJu5ZWVIlMAWSHI45WFu9JAyKOZJnPEYQb
+eyw8P93ztZyijoRTV1SEYK9FiSsfmNgGIqPlE6QPE1S+oR6j+718WSrmQjcBO8uO
+cbj4ZPEgokYRF+WH4m9fPfkTWH6qQ1idqiWZfeUR2TfLLDQ+zDpJpoXlXk/JOqMu
+7kdx3dfuiulI93pUDVeGXh0YCyTmVvavdQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/kartei/makefu/retiolum/savarcast_ed25519.pub b/kartei/makefu/retiolum/savarcast_ed25519.pub
new file mode 100644
index 000000000..e08b7f1b7
--- /dev/null
+++ b/kartei/makefu/retiolum/savarcast_ed25519.pub
@@ -0,0 +1 @@
+Ed25519PublicKey = s/m2cdP6VguKTzTFLdoHMG7t4+94NNT/+ZHYcmSxSVP
diff --git a/kartei/makefu/wiregrill/savarcast.pub b/kartei/makefu/wiregrill/savarcast.pub
new file mode 100644
index 000000000..f6153f5f8
--- /dev/null
+++ b/kartei/makefu/wiregrill/savarcast.pub
@@ -0,0 +1 @@
+mM/QKHTnLlC5qyClRY9WZKg3TK4F+WpLIKRtjCmCCHM=
diff --git a/kartei/makefu/wiregrill/telex.pub b/kartei/makefu/wiregrill/telex.pub
index 12a42177e..4a5f666cc 100644
--- a/kartei/makefu/wiregrill/telex.pub
+++ b/kartei/makefu/wiregrill/telex.pub
@@ -1 +1 @@
-T7Cr80dBbtPFCPdz4OS7whDlQJzn2Orclq5rLVtD+Ds=
+yAKvxTvcEVdn+MeKsmptZkR3XSEue+wSyLxwcjBYxxo=
diff --git a/kartei/palo/default.nix b/kartei/palo/default.nix
index 6004c42ce..bdb61ec5d 100644
--- a/kartei/palo/default.nix
+++ b/kartei/palo/default.nix
@@ -18,53 +18,78 @@ let
in
{
hosts = mapAttrs hostDefaults {
- sol = {
+ chungus = {
owner = config.krebs.users.palo;
nets = {
retiolum = {
tinc.port = 720;
- aliases = [ "sol.r" ];
+ aliases = [ "chungus.r" ];
tinc.pubkey = ''
-----BEGIN RSA PUBLIC KEY-----
- MIICCgKCAgEAxrvdMSAcOJXM1TbIIDZ+zPojrcRG3RVMfPC2/0DasRpBFSuS+L60
- mQEs0l0ptAL6Sbr4+9gfaHkdETfYpeKB4Q4lCPahMq88YfTyB1f3tEOqW3vP22nC
- Z+Yf+W/sTLWVRoDoS/Eok6wS95R1IQ74vr37YXdbJTD/eeX6sAJkn2I2RV5PD6Bu
- lHsMuunAj+PyhAgqb2P393h7FN4exL0xM6UbHbgsd9OSp5qKTjZE3jeOyWmounK1
- 7n+8pyRjI0VE47ontnj/GANwpsxRFFtRGmG/S5KhUBXMv7wZr/vaVETRphAu+KhT
- NqdclmGkQlB/YBodzJID7C21Zz4b33kcn12TU3nc6AL5u9j3sU2sEu/22fAZBWLV
- yOZ9l/Qe4aJkIbdL70Gvp9G8m7+M4vkdM+e/nA5cZT0N9ArI2D5ltJRd7VLVzxef
- Y0t/bS9bVOcNt2Sgd81Ubg0OmF2paHGGboAAMqXhf3afwCMyXcDsP6sgPXOIEu7Q
- hjuo5rg6Fu8eK9edAAQ2afl52GiFUawzjHbjGANwVyea1JTQ3uR6eBtxGOEaYpkr
- vbl75CxLwE0YA0L3VwhJTNLMVldTrUi2M76QedjzyePkJHMijHT5+0nqTlsmjcNg
- uv89Mh9shNKdqulfGjTAFyKjTCuUe/rCprJ5CeZWBaEuQKYkcZuMkJsCAwEAAQ==
+ MIICCgKCAgEAv/6TryKLg/fy14ZRnJht9fQIrzwJW5UikQGjd0Au9ITau1AtoAhO
+ 6/xgdR4ME8EFckVrmjLoFuZNjVQUOyUJcX6OEX+Fl8veyUn+osgLA9jw4TVpi/DM
+ JIb7tNd+OkBbthLu5CiLiBwc+BX1dfSYhUxzxshSIrZ8jln6hUH6hWwi6C0GNfg0
+ CBEBjUft31pTGyr/bQUIBsCWDb7+R6UD2wLxXbo1zSAlitNiXoKSA2NvXTbFC4J2
+ HpxnhTLlJx8dkwjHn00RGUUrfh8Io/qFdjBEfCmynE+Q6v7a/eJdKxIyAtrzLFBz
+ 07cG9kM+/H+ldIF1PMqMI/QMbc12HG96/saVfCkTA8Xh+H+9abWfsvrYrQngdahX
+ Ubw52yV1lRA+grlzRFmjHyE6iaxlwzJ90Aq5BnnlxpK/P/FKCtd36x1RbhE+rBZO
+ VR3ENQRmNowakXdgc+0uS8N5naZIrmO+ficMyBI+Z+CrR0GuDPn++gN833D6KOrs
+ NeCHN5C9zi56nDBcS6KLtYWj/Amo5ZEokWqTAB/zCJu+rVACoS7fi3/6pj9fyNaz
+ BPEOPKGwROFNq+Bn9jh2jdVmZlO/h+wL8FuxyxaduxWzrZTDo+Pj2iHr1l8cr2VU
+ i7zdL3jS4LqE693FHCQE8DufSowa0soYe2+dbalVmKsnt5u9mKuAoj0CAwEAAQ==
-----END RSA PUBLIC KEY-----
'';
- tinc.pubkey_ed25519 = "qCJvjlNz5YNOz5IEiwGaoK3InSVCL76uNl+xVBUa/AP";
+ tinc.pubkey_ed25519 = "iOJzv56xCoUaqbIe3DfjIqB7In6ZWFbr2DT2jvdLYsM";
};
};
};
- centauri = {
+ cream = {
owner = config.krebs.users.palo;
nets = {
retiolum = {
tinc.port = 720;
- aliases = [ "centauri.r" ];
+ aliases = [ "cream.r" ];
tinc.pubkey = ''
-----BEGIN RSA PUBLIC KEY-----
- MIICCgKCAgEAxrvdMSAcOJXM1TbIIDZ+zPojrcRG3RVMfPC2/0DasRpBFSuS+L60
- mQEs0l0ptAL6Sbr4+9gfaHkdETfYpeKB4Q4lCPahMq88YfTyB1f3tEOqW3vP22nC
- Z+Yf+W/sTLWVRoDoS/Eok6wS95R1IQ74vr37YXdbJTD/eeX6sAJkn2I2RV5PD6Bu
- lHsMuunAj+PyhAgqb2P393h7FN4exL0xM6UbHbgsd9OSp5qKTjZE3jeOyWmounK1
- 7n+8pyRjI0VE47ontnj/GANwpsxRFFtRGmG/S5KhUBXMv7wZr/vaVETRphAu+KhT
- NqdclmGkQlB/YBodzJID7C21Zz4b33kcn12TU3nc6AL5u9j3sU2sEu/22fAZBWLV
- yOZ9l/Qe4aJkIbdL70Gvp9G8m7+M4vkdM+e/nA5cZT0N9ArI2D5ltJRd7VLVzxef
- Y0t/bS9bVOcNt2Sgd81Ubg0OmF2paHGGboAAMqXhf3afwCMyXcDsP6sgPXOIEu7Q
- hjuo5rg6Fu8eK9edAAQ2afl52GiFUawzjHbjGANwVyea1JTQ3uR6eBtxGOEaYpkr
- vbl75CxLwE0YA0L3VwhJTNLMVldTrUi2M76QedjzyePkJHMijHT5+0nqTlsmjcNg
- uv89Mh9shNKdqulfGjTAFyKjTCuUe/rCprJ5CeZWBaEuQKYkcZuMkJsCAwEAAQ==
+ MIICCgKCAgEAxqrCGJriL5L1ehBf7CrdpL6Ao/ssyj5ZoPdlTP47WtBRahQcp8e0
+ xWkAACyiSW2rdvK9hBE4Z7cXHenm8obABl69Q6rLdkxIOM7GBK08cX7ZZrRAdyA1
+ Bp9FQWoeHZFq4zBayp889HjPgauglguVlPiXaxh5NhqQkKX4Bkcp4f+OtBMvV0Uf
+ kf80J5pknliV/I85VDt0Ofyuuvot9p4GAegeaGaTgIpMrbGvqdpnB+ZiI9lFylCf
+ tubRvrX1TsaqrWzFu8B2XL6ZXGCY0IrJXs7P0RsG9OysCK7N9WPVrpX+zGFSCCk+
+ 3UuKan9AFVOWA72Jj+glIU2i2d3D+Re8kvNmLCQ9GCM2c8Gy+r38UPN1/WTEe7az
+ 94ivkczOgg4tIzMCN2JuAYLtoy3JK46Bbexk3i9KgtX5acNrKilQBDKHktqr0oJ8
+ Bz53kFP/X7oY+0RIPePL9OPQu8LRyFXeWeuQQUBgqDmttoWBtHEO6vicKFgwN0bl
+ 5J6urUJQYC7aabfYO4aDfgVSRr7cELZkbIsx6Lkj5bOrraaJ2pS5H3QGSBUFifAq
+ mUdKKkBsYltKe8BsqKvQEysT3cGaGlkeP5OaKHN4qG7hGvLk71YjrYlWlIswdMAp
+ D2UgJ5/fcDswSAnFBlLYIqQwC7vMLoqTZPkQ0AN/DxHJCuXfRoU2vhkCAwEAAQ==
-----END RSA PUBLIC KEY-----
'';
- tinc.pubkey_ed25519 = "qCJvjlNz5YNOz5IEiwGaoK3InSVCL76uNl+xVBUa/AP";
+ tinc.pubkey_ed25519 = "lkvs1E4lCXt+Q7lvg/vU2JQyDfqseYo68Ecbb/Hg8YA";
+ };
+ };
+ };
+ cherry = {
+ owner = config.krebs.users.palo;
+ nets = {
+ retiolum = {
+ tinc.port = 720;
+ aliases = [ "cherry.r" ];
+ tinc.pubkey = ''
+ -----BEGIN RSA PUBLIC KEY-----
+ MIICCgKCAgEAuDU2RZX+Hwa0sI/ZjnPd/gBLFs/KsS8SE18GEB8X/EH5D11qvRGi
+ myAYbHdx5hWbFuJ6GyUL/k99y0vV3VI+IGLyZ3FmVUdPF5fK495+qas68GzBMwhw
+ FilessbI1UvBjUITIpVibDW4jSt5ex5SeGSm7ZGpamVFNe442SYgL48V5B3nDRrf
+ jdfwxXuBW5iYi7wxuUncfVkFHrh/HNhOQhqHDhWIlgckymsGMszz0sPNfZZOVw8g
+ 7OA0c4Pduc140icyTaNQzNQZ4KipeZpjUXWn2oGP9ZIb3AiB07BZv3b2x6NrHucW
+ vWKtRkpBOMtYrIhVSuGE3MYHSCxrCR+e4moeeTUjpI5hPe9qtRwagKgchq3sxwWq
+ p1FfT3zEjZKT2tYRu3w/DWgOize+HvF8GDFTNAcp6APUsyE3mTJkpgsAfG8Lkq+f
+ RbrtEOqqqwKCz7IgJDnRSVHlaLP8v3LarhTVIqCkgveyd7wd9bh8fvpWc8fdnWXw
+ +WnIOj+KFxLIGr2xReRPbfi9SRnwTtt0E+oXEPC2tUrcWXGNMeiBmVUGH66pRnFP
+ wzMBn1q4GzqlG2TVsbXL6Nbzw8caDKH3MGPUUxikJXUODk7PtnQ9TThlsg8xdMGr
+ JCrPwL32VNXwXhxJ9vgxaXIfxIanye45j8lxwdnMkx5laULGWVq53bECAwEAAQ==
+ -----END RSA PUBLIC KEY-----
+ '';
+ tinc.pubkey_ed25519 = "QvtcXLmAviX/uv0FPrFak1WV+U2WwyO5dGciRlPB2lG";
};
};
};
diff --git a/krebs/1systems/puyak/config.nix b/krebs/1systems/puyak/config.nix
index 60c1c941a..d3891af82 100644
--- a/krebs/1systems/puyak/config.nix
+++ b/krebs/1systems/puyak/config.nix
@@ -1,4 +1,4 @@
-{ config, pkgs, ... }:
+{ config, pkgs, lib, ... }:
{
imports = [
./net.nix
@@ -73,6 +73,7 @@
# hass.shack
<stockholm/krebs/2configs/shack/glados>
+ <stockholm/krebs/2configs/shack/esphome.nix>
# connect to git.shackspace.de as group runner for rz
<stockholm/krebs/2configs/shack/gitlab-runner.nix>
@@ -170,4 +171,5 @@
isNormalUser = true;
shell = "/run/current-system/sw/bin/zsh";
};
+ system.stateVersion = lib.mkForce "24.05";
}
diff --git a/krebs/1systems/puyak/net.nix b/krebs/1systems/puyak/net.nix
index 59b22b380..fe2fd238e 100644
--- a/krebs/1systems/puyak/net.nix
+++ b/krebs/1systems/puyak/net.nix
@@ -14,7 +14,7 @@ in {
interfaces."${ext-if}".ipv4.addresses = [
{
address = shack-ip;
- prefixLength = 22;
+ prefixLength = 20;
}
];
diff --git a/krebs/2configs/news-host.nix b/krebs/2configs/news-host.nix
index 81922ef87..9b8627d61 100644
--- a/krebs/2configs/news-host.nix
+++ b/krebs/2configs/news-host.nix
@@ -1,5 +1,6 @@
-{ config, ... }:
+{ config,lib, ... }:
{
+ nixpkgs.config.allowUnfree = true; # "consul-1.18.0"
krebs.sync-containers3.containers.news = {
sshKey = "${config.krebs.secret.directory}/news.sync.key";
};
diff --git a/krebs/2configs/shack/esphome.nix b/krebs/2configs/shack/esphome.nix
new file mode 100644
index 000000000..b6bcbce3e
--- /dev/null
+++ b/krebs/2configs/shack/esphome.nix
@@ -0,0 +1,7 @@
+{
+ services.esphome = {
+ enable = true;
+ address = "0.0.0.0";
+ openFirewall = true;
+ };
+}
diff --git a/krebs/2configs/shack/glados/default.nix b/krebs/2configs/shack/glados/default.nix
index 236b5000d..e8ed18f0d 100644
--- a/krebs/2configs/shack/glados/default.nix
+++ b/krebs/2configs/shack/glados/default.nix
@@ -3,29 +3,26 @@ let
kodi-host = "192.168.8.11";
confdir = "/var/lib/homeassistant-docker";
in {
- imports = [
- ];
+ imports = [ ./zigbee.nix ];
- # networking.firewall.allowedTCPPorts = [ 8123 ];
+ networking.firewall.allowedTCPPorts = [ 8123 ];
virtualisation.oci-containers.containers.hass = {
image = "homeassistant/home-assistant:latest";
environment = {
TZ = "Europe/Berlin";
- # TODO create unique users
- PUID = toString config.users.users.news_container.uid;
- PGID = toString config.users.groups.news_container.gid;
UMASK = "007";
};
- extraOptions = ["--net=host" ];
+ extraOptions = ["--net=host" "--device=/dev/zigbee" ];
volumes = [
"${confdir}:/config"
+ "${./zigbee-quirks}:/quirks"
#"${confdir}/docker-run:/etc/services.d/home-assistant/run:"
];
};
systemd.tmpfiles.rules = [
#"f ${confdir}/docker-run 0770 kiosk kiosk - -"
# TODO:
- "d ${confdir} 0770 news_container news_container - -"
+ "d ${confdir} 0770 root root - -"
];
services.nginx.virtualHosts."hass.shack" = {
diff --git a/krebs/2configs/shack/glados/zigbee-quirks/__init__.py b/krebs/2configs/shack/glados/zigbee-quirks/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/krebs/2configs/shack/glados/zigbee-quirks/__init__.py
diff --git a/krebs/2configs/shack/glados/zigbee-quirks/ts011f_power_monitoring.py b/krebs/2configs/shack/glados/zigbee-quirks/ts011f_power_monitoring.py
new file mode 100644
index 000000000..b520fe947
--- /dev/null
+++ b/krebs/2configs/shack/glados/zigbee-quirks/ts011f_power_monitoring.py
@@ -0,0 +1,96 @@
+"""TS011F plug."""
+
+from zigpy.profiles import zgp, zha
+from zigpy.quirks import CustomDevice
+from zigpy.zcl.clusters.general import (
+ Basic,
+ GreenPowerProxy,
+ Groups,
+ Identify,
+ OnOff,
+ Ota,
+ Scenes,
+ Time,
+)
+from zigpy.zcl.clusters.homeautomation import ElectricalMeasurement
+from zigpy.zcl.clusters.lightlink import LightLink
+from zigpy.zcl.clusters.measurement import TemperatureMeasurement
+from zigpy.zcl.clusters.smartenergy import Metering
+
+from zhaquirks.const import (
+ DEVICE_TYPE,
+ ENDPOINTS,
+ INPUT_CLUSTERS,
+ MODEL,
+ MODELS_INFO,
+ OUTPUT_CLUSTERS,
+ PROFILE_ID,
+)
+from zhaquirks.quirk_ids import TUYA_PLUG_ONOFF
+from zhaquirks.tuya import (
+ EnchantedDevice,
+ TuyaNewManufCluster,
+ TuyaZB1888Cluster,
+ TuyaZBE000Cluster,
+ TuyaZBElectricalMeasurement,
+ TuyaZBExternalSwitchTypeCluster,
+ TuyaZBMeteringCluster,
+ TuyaZBMeteringClusterWithUnit,
+ TuyaZBOnOffAttributeCluster,
+)
+
+class Plug_v2l(EnchantedDevice):
+ """Another TS011F Tuya plug. First one using this definition is _TZ3000_okaz9tjs."""
+
+ quirk_id = TUYA_PLUG_ONOFF
+
+ signature = {
+ MODEL: "TS011F",
+ ENDPOINTS: {
+ # "profile_id": 260,
+ # "device_type": "0x0100",
+ # "in_clusters": ["0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0702", "0x0b04", "0xe001"],
+ # "in_clusters": ["0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x000a", "0x0702", "0x0b04", "0x1000", "0xe000", "0xe001"],
+ # "out_clusters": []
+ 1: {
+ PROFILE_ID: zha.PROFILE_ID,
+ DEVICE_TYPE: zha.DeviceType.ON_OFF_LIGHT,
+ INPUT_CLUSTERS: [
+ Basic.cluster_id,
+ Identify.cluster_id,
+ Groups.cluster_id,
+ Scenes.cluster_id,
+ OnOff.cluster_id,
+ Time.cluster_id,
+ Metering.cluster_id,
+ ElectricalMeasurement.cluster_id,
+ LightLink.cluster_id,
+ TuyaZBE000Cluster.cluster_id,
+ TuyaZBExternalSwitchTypeCluster.cluster_id,
+ ],
+ OUTPUT_CLUSTERS: [],
+ },
+ },
+ }
+ replacement = {
+ ENDPOINTS: {
+ 1: {
+ PROFILE_ID: zha.PROFILE_ID,
+ DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
+ INPUT_CLUSTERS: [
+ Basic.cluster_id,
+ Identify.cluster_id,
+ Groups.cluster_id,
+ Scenes.cluster_id,
+ TuyaZBOnOffAttributeCluster,
+ Time.cluster_id,
+ TuyaZBMeteringClusterWithUnit,
+ TuyaZBElectricalMeasurement,
+ LightLink.cluster_id,
+ TuyaZBE000Cluster.cluster_id,
+ TuyaZBExternalSwitchTypeCluster,
+ ],
+ OUTPUT_CLUSTERS: [],
+ },
+ },
+ }
diff --git a/krebs/2configs/shack/glados/zigbee.nix b/krebs/2configs/shack/glados/zigbee.nix
new file mode 100644
index 000000000..a8967cc37
--- /dev/null
+++ b/krebs/2configs/shack/glados/zigbee.nix
@@ -0,0 +1,5 @@
+{
+ services.udev.extraRules = ''
+ SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="zigbee", MODE="0666"
+ '';
+}
diff --git a/krebs/3modules/git.nix b/krebs/3modules/git.nix
index 347a2c32b..961b217e1 100644
--- a/krebs/3modules/git.nix
+++ b/krebs/3modules/git.nix
@@ -468,6 +468,16 @@ let
include ${pkgs.nginx}/conf/fastcgi_params;
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param GIT_PROJECT_ROOT ${cfg.dataDir};
+ fastcgi_param HOME ${pkgs.write "git-http-backend.home" {
+ "/.gitconfig".text = /* ini */ ''
+ [safe]
+ directory = .
+ ${concatMapStrings
+ (repo: "directory = ${cfg.dataDir}/${repo.name}\n")
+ (attrValues cfg.repos)
+ }
+ '';
+ }};
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME ${pkgs.git}/bin/git-http-backend;
fastcgi_pass unix:${config.services.fcgiwrap.socketAddress};
diff --git a/krebs/3modules/zones.nix b/krebs/3modules/zones.nix
index 7a9cf5be1..51e559d88 100644
--- a/krebs/3modules/zones.nix
+++ b/krebs/3modules/zones.nix
@@ -21,6 +21,9 @@ with lib; {
panda NS panda
panda A 130.61.237.100
+
+ xkey A 217.197.83.17
+ xkey AAAA 2a0a:4580:5011::1
'';
};
};
diff --git a/krebs/5pkgs/haskell/hack.nix b/krebs/5pkgs/haskell/hack.nix
deleted file mode 100644
index df3343818..000000000
--- a/krebs/5pkgs/haskell/hack.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ mkDerivation, base, blessings, containers, data-default, fetchgit
-, lens, lib, mtl, old-locale, process, scanner, time, unix, zippers
-}:
-mkDerivation {
- pname = "hack";
- version = "1.0.1";
- src = fetchgit {
- url = "https://cgit.krebsco.de/hack";
- sha256 = "0ry5ikn89ij512qvk1xhdhfz4s8a6b9yawgx6lxgnw5jkiyjd7ka";
- rev = "f3ea150aca5cc86878fa10bc5b1f0918fc154e2a";
- fetchSubmodules = true;
- };
- isLibrary = true;
- isExecutable = true;
- libraryHaskellDepends = [ base ];
- executableHaskellDepends = [
- base blessings containers data-default lens mtl old-locale process
- scanner time unix zippers
- ];
- license = lib.licenses.mit;
-}
diff --git a/krebs/5pkgs/simple/cabal-read.nix b/krebs/5pkgs/simple/cabal-read.nix
deleted file mode 100644
index 03b42ef2c..000000000
--- a/krebs/5pkgs/simple/cabal-read.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ writeHaskellPackage }:
-
-# Because `sed -n 's/.*\<ghc-options:\s\+\(.*\)/\1/p'` is too simple.
-writeHaskellPackage "cabal-read" {
- executables.ghc-options = {
- extra-depends = ["Cabal"];
- text = /* haskell */ ''
- {-# LANGUAGE CPP #-}
- module Main (main) where
- import Data.List
- import Data.Maybe
- import Distribution.Compiler
- import Distribution.PackageDescription.Parsec
- import Distribution.Types.BuildInfo
- import Distribution.Types.CondTree
- import Distribution.Types.Executable
- import Distribution.Types.GenericPackageDescription
- import Distribution.Types.UnqualComponentName
- import Distribution.Verbosity
- import System.Environment
- main :: IO ()
- main = do
- [path, name] <- getArgs
-
- desc <- readGenericPackageDescription normal path
-
- case lookup (mkUnqualComponentName name) (condExecutables desc) of
- Just exe ->
- putStrLn . intercalate " " . fromMaybe [] . lookup GHC
- #if MIN_VERSION_Cabal(3,0,0)
- . perCompilerFlavorToList
- #endif
- . options . buildInfo . condTreeData $ exe
-
- Nothing ->
- error ("executable " <> name <> " not found in " <> path)
- '';
- };
-}
diff --git a/krebs/5pkgs/simple/krebs-pages/fixtures/index.html b/krebs/5pkgs/simple/krebs-pages/fixtures/index.html
index 68b2cbad6..040580520 100644
--- a/krebs/5pkgs/simple/krebs-pages/fixtures/index.html
+++ b/krebs/5pkgs/simple/krebs-pages/fixtures/index.html
@@ -26,7 +26,7 @@
<body>
<p><a href='https://cgit.krebsco.de/krops/about/'>krops</a></p>
<p><a href='https://github.com/krebs/cholerab/blob/master/thesauron.adoc'>Thesauron</a></p>
- <p><a href='https://nixos.wiki/'>Project: The new NixOS wiki</a></p>
+ <p><a href='https://wiki.nixos.org/'>Project: The new NixOS wiki</a></p>
<p><a target="_blank" href="https://www.amazon.de/?&_encoding=UTF8&tag=krebscode06-21&linkCode=ur2&linkId=d4430b368b8aceeca92101cd4a4cdd1d&camp=1638&creative=6742">Go through this amazon affiliate link and generate krebsgold</a><img src="//ir-de.amazon-adsystem.com/e/ir?t=krebscode06-21&l=ur2&o=3" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
<p> <a href="https://s.click.aliexpress.com/e/_A5luNt" target="_parent">Go through this aliexpress affiliate link and generate krebsgold</a></p>