at master 2.2 kB view raw
1{ pkgs, lib, ... }: 2 3{ 4 name = "zenohd"; 5 meta.maintainers = [ lib.maintainers.markuskowa ]; 6 7 nodes = { 8 router = 9 { 10 pkgs, 11 config, 12 ... 13 }: 14 { 15 networking.firewall.allowedTCPPorts = [ 16 7447 # zenohd default port 17 config.services.zenohd.settings.plugins.mqtt.port 18 config.services.zenohd.settings.plugins.webserver.http_port 19 ]; 20 21 services.zenohd = { 22 enable = true; 23 24 plugins = with pkgs; [ 25 zenoh-plugin-mqtt 26 zenoh-plugin-webserver 27 ]; 28 29 backends = with pkgs; [ 30 zenoh-backend-filesystem 31 zenoh-backend-rocksdb 32 ]; 33 34 settings = { 35 plugins = { 36 mqtt = { 37 port = 1883; 38 allow = ".*"; 39 }; 40 webserver.http_port = 8000; 41 storage_manager = { 42 volumes = { 43 fs = { }; 44 rocksdb = { }; 45 }; 46 storages = { 47 mem = { 48 key_expr = "mem/**"; 49 volume = "memory"; 50 }; 51 fs = { 52 key_expr = "fs/**"; 53 volume = { 54 id = "fs"; 55 dir = "zenoh-fs"; 56 strip_prefix = "fs"; 57 }; 58 }; 59 rocksdb = { 60 key_expr = "rocksdb/**"; 61 volume = { 62 id = "rocksdb"; 63 dir = "zenoh-rocksdb"; 64 strip_prefix = "rocksdb"; 65 create_db = true; 66 }; 67 }; 68 }; 69 }; 70 }; 71 }; 72 }; 73 }; 74 75 client = { 76 environment.systemPackages = [ 77 pkgs.mosquitto 78 ]; 79 }; 80 }; 81 82 testScript = '' 83 router.wait_for_unit("zenohd.service") 84 client.wait_for_unit("multi-user.target") 85 86 for be in ["fs", "rocksdb", "mem" ]: 87 client.succeed(f"mosquitto_pub -h router -t {be}/test -m hello") 88 client.succeed(f"curl router:8000/{be}/test | grep hello") 89 ''; 90}