Luke Granger-Brown
0372f4b848
Now there's an assertion which requires either isNormalUser or isSystemUser, so we set one of them for all the users we have already.
35 lines
1.2 KiB
Nix
35 lines
1.2 KiB
Nix
{ depot, pkgs, ... }:
|
|
let
|
|
service = {
|
|
wantedBy = [ "ts3musicbot.target" ];
|
|
partOf = [ "ts3musicbot.target" ];
|
|
};
|
|
audioService = service // {
|
|
after = [ "ts3musicbot-pulseaudio.service" ];
|
|
bindsTo = [ "ts3musicbot-pulseaudio.service" ];
|
|
};
|
|
in
|
|
{
|
|
users.users.ts3musicbot = {
|
|
isNormalUser = true;
|
|
group = "nogroup";
|
|
createHome = true;
|
|
home = "/var/lib/ts3musicbot";
|
|
};
|
|
|
|
systemd.targets.ts3musicbot = {
|
|
wantedBy = [ "multi-user.target" ];
|
|
};
|
|
systemd.services.ts3musicbot-pulseaudio = service // {
|
|
serviceConfig.ExecStart = "${pkgs.pulseaudio}/bin/pulseaudio --start --daemonize=false --load=\"module-null-sink sink_name=Loop\" --load=\"module-null-sink sink_name=The Void\" --load=\"module-native-protocol-unix\"";
|
|
serviceConfig.User = "ts3musicbot";
|
|
};
|
|
systemd.services.ts3musicbot-spotifyd = audioService // {
|
|
serviceConfig.ExecStart = "${pkgs.spotifyd}/bin/spotifyd --no-daemon --config-path ${depot.ops.secrets.spotifyd}";
|
|
serviceConfig.User = "ts3musicbot";
|
|
};
|
|
systemd.services.ts3musicbot-teamspeak = audioService // {
|
|
serviceConfig.ExecStart = "${pkgs.xvfb_run}/bin/xvfb-run -d -s \"-screen 0 1280x1024x24\" ${pkgs.teamspeak_client}/bin/ts3client";
|
|
serviceConfig.User = "ts3musicbot";
|
|
};
|
|
}
|