1
0
Fork 0
nix-configuration/modules/services/duplicacy-web.nix

58 lines
1.4 KiB
Nix
Raw Normal View History

{
pkgs,
config,
lib,
...
}:
2024-02-29 09:53:34 -05:00
let
cfg = config.aux.system.services.duplicacy-web;
duplicacy-web = pkgs.callPackage ../../packages/duplicacy-web.nix { inherit pkgs lib; };
2024-02-29 09:53:34 -05:00
in
2024-08-02 17:55:48 -04:00
{
options = {
aux.system.services.duplicacy-web = {
2024-08-02 17:55:48 -04:00
enable = lib.mkEnableOption "Enables duplicacy-web";
autostart = lib.mkOption {
default = true;
2024-08-02 17:55:48 -04:00
type = lib.types.bool;
description = "Whether to auto-start duplicacy-web on boot";
};
2024-02-29 09:53:34 -05:00
2024-08-02 17:55:48 -04:00
environment = lib.mkOption {
default = "";
2024-08-02 17:55:48 -04:00
type = lib.types.str;
description = "Environment where duplicacy-web stores its config files";
};
};
};
2024-02-29 09:53:34 -05:00
config = lib.mkIf cfg.enable {
nixpkgs.config.allowUnfree = true;
environment.systemPackages = [ duplicacy-web ];
2024-02-29 09:53:34 -05:00
networking.firewall.allowedTCPPorts = [ 3875 ];
2024-02-29 09:53:34 -05:00
# Install systemd service.
systemd.services.duplicacy-web = {
enable = true;
wants = [ "network-online.target" ];
after = [
"syslog.target"
"network-online.target"
];
description = "Start the Duplicacy backup service and web UI";
serviceConfig = {
Type = "simple";
ExecStart = ''${duplicacy-web}/duplicacy-web'';
Restart = "on-failure";
RestartSrc = 10;
KillMode = "process";
};
environment = {
HOME = cfg.environment;
};
} // lib.optionalAttrs (!cfg.autostart) { wantedBy = lib.mkForce [ ]; };
};
2024-02-29 09:53:34 -05:00
}