From dfc016b15482638d1c05e4d9e141fb18209a160c Mon Sep 17 00:00:00 2001 From: Sebastian <sebastian@sebastians-site.de> Date: Fri, 28 Feb 2025 19:22:11 +0100 Subject: [PATCH] Added updates for DMR ids --- MMDVMHost/module.nix | 55 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/MMDVMHost/module.nix b/MMDVMHost/module.nix index 0e72c94..da7ba44 100644 --- a/MMDVMHost/module.nix +++ b/MMDVMHost/module.nix @@ -40,6 +40,10 @@ in default = "/dev/ttyUSB0"; }; + dmr-id-url = mkOption { + type = types.str; + default = "https://database.radioid.net/static/user.csv"; + }; }; @@ -67,6 +71,10 @@ in RuntimeDirectory = "MMDVMHost"; }; script = '' + if [ ! -e /var/lib/mmdvm/DMRIds.dat ]; then + touch /var/lib/mmdvm/DMRIds.dat + fi + if [ ! -e /var/lib/mmdvm/firmware-version ]; then touch /var/lib/mmdvm/firmware-version fi @@ -78,6 +86,53 @@ in exec ${cfg.host_package}/bin/MMDVMHost ${cfg.config-file} ''; }; + + systemd.paths.mmdvm_dmr_ids = { + after = [ "mmdvm_host.service" ]; + wantedBy = [ "multi-user.target" ]; + pathConfig = { + PathModified = "/var/lib/mmdvm/DMRIds.dat"; + Unit = "mmdvm_host_restart.service"; + }; + }; + + systemd.services.mmdvm_host_restart = { + wantedBy = [ "multi-user.target" ]; + description = "MMDVMHost restart service"; + serviceConfig = { + Type = "oneshot"; + }; + script = '' + ${pkgs.systemd}/bin/systemctl restart "mmdvm_host.service" + ''; + }; + + systemd.services.dmr_id_update = { + wants = [ "network.target" ]; + after = [ "network.target" ]; + description = "Update DMR ids"; + startAt = "02:00:00"; + serviceConfig = { + Type = "oneshot"; + User = cfg.user; + Group = cfg.group; + }; + + script = '' + ${pkgs.curl}/bin/curl "${cfg.dmr-id-url}" | \ + ${pkgs.gnused}/bin/sed -e 's/\t//g' | ${pkgs.gawk}/bin/awk -F"," '/,/{gsub(/ /, "", $2); printf "%s\t%s\t%s\n", $1, $2, $3}' | \ + ${pkgs.gnused}/bin/sed -e 's/\(.\) .*/\1/g' > /var/lib/mmdvm/DMRIds.tmp + + NUMOFLINES=$(${pkgs.coreutils}/bin/wc -l /var/lib/mmdvm/DMRIds.tmp | ${pkgs.gawk}/bin/awk '{print $1}') + if [ $NUMOFLINES -gt 1 ] + then + mv /var/lib/mmdvm//DMRIds.tmp /var/lib/mmdvm/DMRIds.dat + else + rm /var/lib/mmdvm//DMRIds.tmp + fi + ''; + }; + }; }