feat: agb de février

This commit is contained in:
sinavir 2025-03-19 21:31:43 +01:00
parent 11aa457273
commit 8ca9a8c889
No known key found for this signature in database
10 changed files with 61 additions and 168 deletions

View file

@ -14,23 +14,11 @@
./users.nix
];
nix.settings.substituters = lib.mkForce [];
# nix.settings.substituters = lib.mkForce [];
networking.hostName = "agb01"; # Define your hostname.
environment.systemPackages = [
(pkgs.writeShellApplication {
name = "run-gw";
runtimeInputs = [
pkgs.curl
(pkgs.python3.withPackages (ps: [
ps.pyjecteur
ps.colour
ps.requests
]))
];
text = "curl -s -n https://agb.hackens.org/api/sse | python ${./script.py}";
})
];
services.openssh.enable = true;
@ -50,5 +38,5 @@
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "unstable"; # Did you read the comment?
system.stateVersion = "25.05"; # Did you read the comment?
}

View file

@ -23,10 +23,9 @@
};
"10-wifi" = {
name = "wlan0";
networkConfig.DHCPServer = "yes";
address = [
"192.168.55.1/24"
];
DHCP = "yes";
networkConfig = {
};
};
};
netdevs = {
@ -65,7 +64,7 @@
content = ''
chain postrouting {
type nat hook postrouting priority 100;
ip saddr 192.168.55.0/24 masquerade
oifname "wlan0" masquerade;
}
'';
};
@ -74,25 +73,13 @@
firewall.allowedUDPPorts = [ 67 ];
};
services.hostapd = {
networking.wireless = {
#userControlled.enable = true;
enable = true;
radios.wlan0 = {
# countryCode = "FR";
wifi4.enable = false;
wifi5.enable = false;
channel = 7; # ACS doesn't work
networks.wlan0 = {
settings = {
ieee80211w = 0;
wmm_enabled = false;
};
ssid = "agb - wifi";
logLevel = 0;
authentication = {
mode = "wpa2-sha1";
wpaPasswordFile = pkgs.writeText "psk" "azertyuiop"; # TODO : secret
};
};
};
networks."WLED-AGB".psk = "lateteatoto";
extraConfig = ''
country=FR
'';
};
}

View file

@ -1,105 +0,0 @@
#!/nix/store/q1p072dnnx7fh7qfcavkmpwn3rgf2xh1-python3-3.12.5-env/bin/python
import json
import logging
import sys
import requests
from colour import Color
from pyjecteur.fixtures import Blinder, LedBar48Ch, Tradi, Wash, Lyre
from pyjecteur.lights import Universe
from pyjecteur.widget import Widget
if False: # True: # True:
logging.basicConfig(level=logging.DEBUG)
else:
logging.basicConfig(level=logging.INFO)
w = Widget("/dev/ttyUSB0")
DIM = {
"blinder": 0.1,
"led_tub": 0.3,
"spot": 0.3,
}
u = Universe(w)
def strToProj(s):
match s:
case "spot":
return Tradi()
case "led_tub":
return LedBar48Ch()
case "blinder":
return LedBar48Ch()
r = requests.get("https://agb.hackens.org/api-docs/patch.json")
patch = r.json()
lights = {}
update = {}
current_addr = 0
for k, v in patch["lights"].items():
lights[k] = strToProj(v["kind"])
u.register(lights[k], v["channels"][0]*3)
print(v["kind"], v["channels"])
# update dmx since some params are set before
lights[k].update_dmx()
logging.info(
f"Light {k} of kind {v['kind']} is at DMX{v['channels'][0]*3+1} (PLS convention)"
)
for i, chan in enumerate(v["channels"]):
update[chan] = (k, i) # put the light name
current_addr += lights[k].address_size
l = Lyre()
u.register(l, 489)
def update_light(address, red, green, blue):
if address not in update:
return
light, chan = update[address]
kind = patch["lights"][light]["kind"]
r, g, b = red * DIM[kind] / 255, (green * DIM[kind]) / 255, (blue * DIM[kind]) / 255
match kind:
case "blinder":
lights[light].colors[chan] = Color(rgb=(r, g, b))
case "led_tub":
lights[light].colors[chan] = Color(rgb=(r, g, b))
case "spot":
lights[light].color = Color(rgb=(r, g, b))
def run():
logging.info("Started")
bump = False
bump_color = None
for line in sys.stdin:
logging.debug(line)
if line.startswith("data:"):
dataStr = line[5:]
logging.info(f"Received: {dataStr}")
data = json.loads(dataStr)
if data["type"] == "Color":
if data["address"] == 90:
r, g, b = data["value"]["red"] /255, data["value"]["green"] /255, data["value"]["blue"] /255
w.color = Color(rgb = (r, g, b))
else:
update_light(data["address"], **data["value"])
else:
l.pan = data["pan"]
l.tilt = data["tilt"]
l.dimmer = data["focus"]
l.color = data["white_button"] *7 + 3
run()

View file

@ -1,11 +1,17 @@
age-encryption.org/v1
-> ssh-ed25519 5rrg4g Q11014nLdGOukZJV5enI4qoAqDrysWAxYtRN7VTSnTA
oEK2C8A28KrNh4WNcGGQNB9/3ADNHgGxTzOegL49TT8
-> ssh-ed25519 JGx7Ng NH6IB+2tB8fyvE81GF7p8SflY7HH2R3uvx9xC/5HFyQ
4x0x1L0wv6+k04ESLIy+qY/RhVCWtOeyETo1FkAK+8A
-> ssh-ed25519 kXobKQ 7J0f+l8+/mNQ7q8nW0jcg2LqGDARN1K63IJttdQ7JQw
SfFDS4HgjYkp+vGmCwy0c5GIqqWcc4m7mRVQmcsW/pM
-> ssh-ed25519 OZDL4Q M3Lztf8lPH4G7a+QPMY32u3UyhcHMoC08ZRV5UE6Gmo
Kc7116r+3+xa2qRSe22lctbTd/a133tVZzLkWt0XI6k
--- lsOrVi/OJ6AxtmEbB67VKvlFlDnt+sdv1TucqWqGk2w
õnDÜg4ܲ¯*ßM<C39F>!ÙY¿™hA<68>š6‡IÝbFgö{3¢*7d¤¤¦A¬:¼×Ȫ á“±½}ÀˆÝ+lu·¨9Þê
-> ssh-ed25519 ZIo4kw 1xAL0ZXu3ubwC6HK4dETN1LgtpvNFf9nH/NQQ1+s1AA
NQUXZwkejiWJXEImndmxAsL65dKZixXQ3F8Fa5doVC8
-> ssh-ed25519 9/PCvA zo5Ct5tIQjFYykwbTRyTHxnLlaCk/oMVLUqYKK6ry24
g4ayvGtSZNA/80uhGpxDXeBU8F32sKPVBAWQ2qC/cr0
-> ssh-ed25519 JGx7Ng 0ro2us2J17krgJp09P3+ArhZuQMPt6K8SQxGGb91XVc
4wrK0+G8LkwitDcZ/WWslENOhv4Mu9JeVPivyuIm9TA
-> ssh-ed25519 kXobKQ bwvhd2LjCYYxrtQh5ZR4OgjTi/KlFQMEOOboMv0G5SE
U+vrBW9PIpUU9bivT1PWYYT+6bri1oFmrXFQ/D4nBxo
-> ssh-ed25519 mrEzvA AB1zH2mbuo2JE9H8mIXdMewxADp2A5udQTPtw2dKTGA
97zv5MreXIfFPVvpch41AkLoU/iMxSaHLLhQcq2wkcg
-> x[6Bx[-grease +n6t(` ^E,
kWd3Ro0LFVRTOV7umHCVJUFGRPfnITYvAG48m1OnrWNSqA2jWEU2VlO+mxixLFyt
7ghhls3oKf7ZT7ObwKAP
--- T8kROJrmL/+d4npmEtunYpe2tWx22uFh+IwK5v5mQHw
峴弁堥<E5BC81>唥A\,H闉)en'卿拏譍B鯛u攃2
D臟覐deT砽;铎噰髷S夋暫腵麗艬襼<E889AC>2v<1F>

View file

@ -66,6 +66,7 @@
export JWT_SECRET=$(cat $CREDENTIALS_DIRECTORY/jwt_secret)
export BK_FILE="$STATE_DIRECTORY/data.json"
export BIND_TCP="10.10.10.1:1235"
export WLED_ENDPOINT="http://4.3.2.1/json"
export RUST_LOG=debug
${pkgs.ragb-backend}/bin/ragb-backend
'';

View file

@ -22,6 +22,10 @@
Destination = "10.10.10.0/24";
Scope = "link";
}
{
Gateway = "10.10.10.5";
Destination = "4.3.2.0/24";
}
];
};
};
@ -55,6 +59,7 @@
# agb01
AllowedIPs = [
"10.10.10.5/32"
"4.3.2.0/24"
];
PublicKey = lib.trim (builtins.readFile ../../wg-keys/agb01.pub);
}

View file

@ -43,6 +43,7 @@ let
url = repository.url;
rev = revision;
# hash = hash;
allRefs = true;
};
mkPyPiSource =

View file

@ -8,9 +8,9 @@
"repo": "agenix"
},
"branch": "main",
"revision": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
"url": "https://github.com/ryantm/agenix/archive/f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41.tar.gz",
"hash": "1x8nd8hvsq6mvzig122vprwigsr3z2skanig65haqswn7z7amsvg"
"revision": "e600439ec4c273cf11e06fe4d9d906fb98fa097c",
"url": "https://github.com/ryantm/agenix/archive/e600439ec4c273cf11e06fe4d9d906fb98fa097c.tar.gz",
"hash": "006ngydiykjgqs85cl19h9klq8kaqm5zs0ng51dnwy7nzgqxzsdr"
},
"disko": {
"type": "Git",
@ -20,9 +20,9 @@
"repo": "disko"
},
"branch": "master",
"revision": "6c5ba9ec9d470c1ca29e7735762c9c366e28f7f5",
"url": "https://github.com/nix-community/disko/archive/6c5ba9ec9d470c1ca29e7735762c9c366e28f7f5.tar.gz",
"hash": "0l0qlwv5qxi58crv45xz9rwfz9hbdp99z70j60jri28ic89lfvpd"
"revision": "0d8c6ad4a43906d14abd5c60e0ffe7b587b213de",
"url": "https://github.com/nix-community/disko/archive/0d8c6ad4a43906d14abd5c60e0ffe7b587b213de.tar.gz",
"hash": "0mwnd7vfyd2wqbrvlpjgxng83fp97lg1ihzzx9ipbj5c9l0bjgjm"
},
"djangonix": {
"type": "Git",
@ -58,9 +58,9 @@
"repo": "nixpkgs"
},
"branch": "nixos-unstable",
"revision": "06cf0e1da4208d3766d898b7fdab6513366d45b9",
"url": "https://github.com/NixOS/nixpkgs/archive/06cf0e1da4208d3766d898b7fdab6513366d45b9.tar.gz",
"hash": "0l68zz8mn2kvp9wvc6rgw7dns8vkl7w9y6z92blvgn1wnm9ib6ab"
"revision": "b6eaf97c6960d97350c584de1b6dcff03c9daf42",
"url": "https://github.com/NixOS/nixpkgs/archive/b6eaf97c6960d97350c584de1b6dcff03c9daf42.tar.gz",
"hash": "0aics7ak6d6gd2fz12yq7hgs2gs8izlpmf6imhbr9amywgk1l72g"
},
"ragb": {
"type": "Git",
@ -68,10 +68,10 @@
"type": "Git",
"url": "https://git.dgnum.eu/HackENS/ragb"
},
"branch": "main",
"revision": "ddfbbe50e385db3ffbf1dd1bf7ffb6102c968bf5",
"branch": "wled_fork",
"revision": "3e5b18677f4e37e8278c43f8fb9066d45dbdaa6e",
"url": null,
"hash": "00zz65qc1yzxlff65qv6818bhnqdbjnwcz00w34hiz0597ancdx0"
"hash": "0isk56kgs8iiap2a5hl3vgy5nvqayayig45vqvn6h1c41clypmqr"
}
},
"version": 3

View file

@ -1,13 +1,23 @@
{ lib
, rustPlatform
, src
, pkg-config
, openssl
}:
rustPlatform.buildRustPackage {
pname = "ragb-backend";
version = "0.3";
version = "0.4";
src = src + "/backend";
cargoHash = "sha256-lyYCXjmsm12xYHk30g5PDBpQb10xaB6zpoEi2xpjeiM=";
nativeBuildInputs = [
pkg-config
];
buildInputs = [
openssl
];
cargoHash = "sha256-Nl/FX9d0DbGWf1U6yo9YWCYxIkQQXzxG8tNLETdZ/jc=";
}

View file

@ -1 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO2OaboCujXWTaLuIB6+Elrkf6IzFRJTnSZhaIhjinta
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILVMaMJZ9sNAgrMCOnYWB6FPbvb0+hQleIqCMfAyandl