diff --git a/ops/nixos/clouvider-fra01/default.nix b/ops/nixos/clouvider-fra01/default.nix index b90742cd92..abef47919e 100644 --- a/ops/nixos/clouvider-fra01/default.nix +++ b/ops/nixos/clouvider-fra01/default.nix @@ -32,6 +32,7 @@ in { imports = [ ../lib/zfs.nix ../lib/bgp.nix + ../lib/ts3spotifybot.nix ]; boot.initrd.availableKernelModules = [ diff --git a/ops/nixos/lib/ts3spotifybot.nix b/ops/nixos/lib/ts3spotifybot.nix new file mode 100644 index 0000000000..b61ba246dd --- /dev/null +++ b/ops/nixos/lib/ts3spotifybot.nix @@ -0,0 +1,33 @@ +{ depot, pkgs, ... }: +let + service = { + wantedBy = [ "ts3musicbot.target" ]; + partOf = [ "ts3musicbot.target" ]; + }; + audioService = service // { + after = [ "ts3musicbot-pulseaudio.service" ]; + bindsTo = [ "ts3musicbot-pulseaudio.service" ]; + }; +in +{ + users.users.ts3musicbot = { + 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"; + }; +}