This commit is contained in:
2026-02-22 16:46:50 +00:00
parent 598306c57e
commit 79c70eea54

View File

@@ -24,47 +24,72 @@
}; };
}; };
systemd.user.services = systemd.user.services =
lib.mkIf settings.virtual_audio_devices { let
pw-discordaudio-virtual-device = { mergedSet = lib.mergeAttrsList [
Install = { (
WantedBy = [ "hyprland-session.target" ]; let
}; set = lib.mkIf settings.virtual_audio_devices {
Service = { pw-discordaudio-virtual-device = {
ExecStart = "${pkgs.writeShellScript "discord_audio_virt_device" '' Unit = {
#!/run/current-system/sw/bin/bash Description = "OBS daemon";
pw-loopback -m '[ FL FR]' --capture-props='media.class=Audio/Sink node.name=DiscordSink' -n DiscordSink After = [ "hyprland-session.target" ];
''}"; };
}; Install = {
}; WantedBy = [ "hyprland-session.target" ];
pw-gameaudio-virtual-device = { };
Install = { Service = {
WantedBy = [ "hyprland-session.target" ]; ExecStart = "${pkgs.writeShellScript "discord_audio_virt_device" ''
}; pw-loopback -m '[ FL FR]' --capture-props='media.class=Audio/Sink node.name=DiscordSink' -n DiscordSink
Service = { ''}";
ExecStart = "${pkgs.writeShellScript "game_audio_virt_device" '' Restart = "on-failure";
#!/run/current-system/sw/bin/bash RestartSec = "5s";
pw-loopback -m '[ FL FR]' --capture-props='media.class=Audio/Sink node.name=GameAudioSink' -n GameAudioSink };
''}"; };
}; pw-gameaudio-virtual-device = {
}; Unit = {
} Description = "OBS daemon";
// pkgs.lib.mkIf settings.autostart { After = [ "hyprland-session.target" ];
obs-autostart = { };
Unit = { Install = {
Description = "OBS daemon"; WantedBy = [ "hyprland-session.target" ];
After = [ "hyprland-session.target" ]; };
}; Service = {
Install = { ExecStart = "${pkgs.writeShellScript "game_audio_virt_device" ''
WantedBy = [ "default.target" ]; pw-loopback -m '[ FL FR]' --capture-props='media.class=Audio/Sink node.name=GameAudioSink' -n GameAudioSink
}; ''}";
Service = { Restart = "on-failure";
# wait for hyprland to start RestartSec = "5s";
ExecStart = "${config.programs.obs-studio.finalPackage}/bin/obs --startreplaybuffer"; };
Restart = "on-failure"; };
RestartSec = "5s"; };
}; in
}; set
}; )
(
let
set = lib.mkIf settings.autostart {
obs-autostart = {
Unit = {
Description = "OBS daemon";
After = [ "hyprland-session.target" ];
};
Install = {
WantedBy = [ "default.target" ];
};
Service = {
# wait for hyprland to start
ExecStart = "${config.programs.obs-studio.finalPackage}/bin/obs --startreplaybuffer";
Restart = "on-failure";
RestartSec = "5s";
};
};
};
in
set
)
];
in
mergedSet;
}; };
}; };
} }