infrastructure/modules/nixos/openwebrx.nix

48 lines
1,019 B
Nix

{
config,
lib,
...
}: let
inherit (lib.options) mkOption;
inherit (lib.modules) mkIf mkOptionDefault mkForce;
inherit (lib.trivial) mapNullable;
cfg = config.services.openwebrx;
in {
options.services.openwebrx = with lib.types; {
port = mkOption {
type = port;
default = 8073;
readOnly = true;
};
dataDir = mkOption {
type = path;
default = "/var/lib/openwebrx";
readOnly = true;
};
user = mkOption {
type = nullOr str;
default = null;
};
group = mkOption {
type = nullOr str;
};
};
config = {
services.openwebrx = {
group = mkOptionDefault (mapNullable (user: config.users.users.${user}.group) cfg.user);
};
systemd.services.openwebrx = mkIf cfg.enable {
serviceConfig = mkIf (cfg.user != null) {
DynamicUser = mkForce false;
User = cfg.user;
Group = cfg.group;
};
};
environment.systemPackages = mkIf cfg.enable [
cfg.package
];
};
}