summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/audio/jack-on-pulse.nix
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2017-05-12 11:31:46 +0200
committermakefu <github@syntax-fehler.de>2017-05-12 11:31:46 +0200
commit7a7612fb4d32349ba0ad87531845e65a8ee54deb (patch)
tree160e28adc19280598e59c065aeb06a6c1fe67066 /makefu/2configs/audio/jack-on-pulse.nix
parentf65349a3bcf315a0e89db63772c1a164352c6693 (diff)
m 2 audio: init
Diffstat (limited to 'makefu/2configs/audio/jack-on-pulse.nix')
-rw-r--r--makefu/2configs/audio/jack-on-pulse.nix45
1 files changed, 45 insertions, 0 deletions
diff --git a/makefu/2configs/audio/jack-on-pulse.nix b/makefu/2configs/audio/jack-on-pulse.nix
new file mode 100644
index 000000000..09d03ea9f
--- /dev/null
+++ b/makefu/2configs/audio/jack-on-pulse.nix
@@ -0,0 +1,45 @@
+{ config, pkgs, ... }:
+let
+ pulse = pkgs.pulseaudioFull;
+ user = config.makefu.gui.user;
+in
+{
+ sound.enable = true;
+ hardware.pulseaudio = {
+ enable = true;
+ package = pulse;
+ };
+
+ environment.systemPackages = with pkgs; [ jack2Full ];
+ # from http://anderspapitto.com/posts/2015-11-26-overtone-on-nixos-with-jack-and-pulseaudio.html
+
+ systemd.services = {
+ jackdbus = {
+ description = "Runs jack, and points pulseaudio at it";
+ serviceConfig = {
+ User = user;
+ Type = "oneshot";
+ ExecStart = pkgs.writeScript "start_jack.sh" ''
+ #! ${pkgs.bash}/bin/bash
+ . ${config.system.build.setEnvironment}
+ sleep 5 # wait for the gui to load
+
+ ${pkgs.jack2Full}/bin/jack_control start
+ sleep 3 # give some time for sources/sinks to be created
+
+ ${pulse}/bin/pacmd set-default-sink jack_out
+ ${pulse}/bin/pacmd set-default-source jack_in
+ '';
+ ExecStop = pkgs.writeScript "stop_jack.sh" ''
+ #! ${pkgs.bash}/bin/bash
+ . ${config.system.build.setEnvironment}
+
+ ${pkgs.jack2Full}/bin/jack_control stop
+ '';
+ RemainAfterExit = true;
+ };
+ after = [ "display-manager.service" "sound.target" ];
+ wantedBy = [ "multi-user.target" ];
+ };
+ };
+}