diff --git a/module.nix b/module.nix index ca42d40..a0d5576 100644 --- a/module.nix +++ b/module.nix @@ -14,6 +14,12 @@ in { The package implementing disconic ''; }; + user = mkOption { + type = types.str; + default = "yrmos"; + description = "Service user that will run the daemon."; + }; + subsonicUrl = mkOption { type = types.str; description = "Subsonic library base API URL"; @@ -30,6 +36,10 @@ in { type = types.path; description = "File path containing discord token"; }; + discordGuild = mkOption { + type = types.str; + description = "Your server's guild ID, to auto-register commands"; + }; extraArgs = mkOption { type = types.listOf types.str; default = [ ]; @@ -41,13 +51,27 @@ in { systemd.services.disconic = { description = "Disconic, a Discord Subsonic Bot"; wantedBy = [ "multi-user.target" ]; - serviceConfig.ExecStart = lib.escapeShellArgs ([ - (lib.getExe cfg.package) - "--subsonic-url=${cfg.subsonicUrl}" - "--subsonic-user=${cfg.subsonicUser}" - "--subsonic-password=$(cat ${cfg.subsonicPasswordFile})" - "--discord-token=$(cat ${cfg.discordTokenFile}" - ] ++ cfg.extraArgs); + serviceConfig = { + Restart = "always"; + User = cfg.user; + ExecStart = lib.escapeShellArgs ([ + (lib.getExe cfg.package) + "--subsonic-url=${cfg.subsonicUrl}" + "--subsonic-user=${cfg.subsonicUser}" + "--subsonic-password=$(cat ${cfg.subsonicPasswordFile})" + "--discord-token=$(cat ${cfg.discordTokenFile})" + "--discord-guild=${cfg.discordGuild}" + ] ++ cfg.extraArgs); + }; + }; + + users = { + users.${cfg.user} = { + description = "disconic service user"; + isSystemUser = true; + group = cfg.user; + }; + groups.${cfg.user} = { }; }; }; }