From eb6f347055769a23967dda70cdc8b46f7d247ab9 Mon Sep 17 00:00:00 2001 From: oneorseveralcats <170012754+oneorseveralcats@users.noreply.github.com> Date: Sat, 28 Mar 2026 01:42:43 -0400 Subject: [PATCH] aria2: add systemd service --- modules/programs/aria2.nix | 19 ++++++++++++++++++ tests/modules/programs/aria2/default.nix | 4 ++++ tests/modules/programs/aria2/systemd.nix | 25 ++++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 tests/modules/programs/aria2/systemd.nix diff --git a/modules/programs/aria2.nix b/modules/programs/aria2.nix index 4b3e8fae..f28259d4 100644 --- a/modules/programs/aria2.nix +++ b/modules/programs/aria2.nix @@ -44,6 +44,8 @@ in } ''; }; + + systemd.enable = lib.mkEnableOption "Aria2 systemd integration"; }; config = lib.mkIf cfg.enable { @@ -52,5 +54,22 @@ in xdg.configFile."aria2/aria2.conf" = lib.mkIf (cfg.settings != { }) { source = keyValueFormat.generate "aria2.conf" cfg.settings; }; + + systemd.user.services.aria2 = lib.mkIf cfg.systemd.enable { + Unit = { + Description = "Aria2c daemon"; + Documentation = "man:aria2c(1)"; + X-Restart-Triggers = lib.mkIf (cfg.settings != { }) [ + "${config.xdg.configFile."aria2/aria2.conf".source}" + ]; + }; + + Service = { + ExecStart = "${lib.getExe cfg.package} --enable-rpc"; + Restart = "on-failure"; + }; + + Install.WantedBy = [ "default.target" ]; + }; }; } diff --git a/tests/modules/programs/aria2/default.nix b/tests/modules/programs/aria2/default.nix index 678f9477..422cf945 100644 --- a/tests/modules/programs/aria2/default.nix +++ b/tests/modules/programs/aria2/default.nix @@ -1,4 +1,8 @@ +{ lib, pkgs, ... }: { aria2-disabled = ./disabled.nix; aria2-settings = ./settings.nix; } +// lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux { + aria2-systemd = ./systemd.nix; +} diff --git a/tests/modules/programs/aria2/systemd.nix b/tests/modules/programs/aria2/systemd.nix new file mode 100644 index 00000000..266dfbc8 --- /dev/null +++ b/tests/modules/programs/aria2/systemd.nix @@ -0,0 +1,25 @@ +{ config, ... }: +{ + programs.aria2 = { + enable = true; + package = config.lib.test.mkStubPackage { outPath = "@aria2@"; }; + systemd.enable = true; + }; + + nmt.script = '' + assertFileContent \ + home-files/.config/systemd/user/aria2.service \ + ${builtins.toFile "aria2.service" '' + [Install] + WantedBy=default.target + + [Service] + ExecStart=@aria2@/bin/dummy --enable-rpc + Restart=on-failure + + [Unit] + Description=Aria2c daemon + Documentation=man:aria2c(1) + ''} + ''; +}