nixos/reticulum.nix

72 lines
No EOL
1.8 KiB
Nix

{ config, pkgs, lib, ... }:
{
environment.systemPackages = [
pkgs.python3Packages.rns
pkgs.python3Packages.lxmf
];
environment.etc."reticulum-config".text = ''
[reticulum]
enable_transport = True
share_instance = Yes
[interfaces]
[[Private Backbone]]
type = BackboneInterface
enabled = yes
mode = gateway
listen_ip = 0.0.0.0
port = 25515
network_name = reudynet
passphrase = makbrojojo3
'';
users.users.reticulum = {
isSystemUser = true;
group = "reticulum";
description = "Reticulum daemon user";
home = "/var/lib/reticulum";
createHome = true;
};
users.groups.reticulum = {};
systemd.services.rnsd = {
description = "Reticulum Network Stack daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
preStart = ''
mkdir -p /var/lib/reticulum/.reticulum
cp /etc/reticulum-config /var/lib/reticulum/.reticulum/config
chmod 600 /var/lib/reticulum/.reticulum/config
'';
serviceConfig = {
Type = "simple";
User = "reticulum";
ExecStart = "${pkgs.python3Packages.rns}/bin/rnsd";
Restart = "on-failure";
RestartSec = "5s";
Environment = "HOME=/var/lib/reticulum";
StateDirectory = "reticulum";
};
};
systemd.services.lxmd = {
description = "LXMF Propagation Node daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "rnsd.service" ];
requires = [ "rnsd.service" ];
serviceConfig = {
Type = "simple";
User = "reticulum";
ExecStart = "${pkgs.python3Packages.lxmf}/bin/lxmd -p";
Restart = "on-failure";
RestartSec = "5s";
Environment = "HOME=/var/lib/reticulum";
StateDirectory = "reticulum";
};
};
networking.firewall.allowedTCPPorts = [ 25515 ];
}