Compare commits
No commits in common. "269bda650d21c26a7ceda3a451d218a8be56647d" and "962f1cf7969a604d4ea6bc951a958b70fe3d79ee" have entirely different histories.
269bda650d
...
962f1cf796
7 changed files with 31 additions and 100 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1 @@
|
||||||
result/
|
result/
|
||||||
target/
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,58 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.snowhawk.pipewire-controller;
|
|
||||||
|
|
||||||
pipewire-controller =
|
|
||||||
let
|
|
||||||
mpv = lib.getExe pkgs.mpv;
|
|
||||||
pamixer = lib.getExe pkgs.pamixer;
|
|
||||||
in
|
|
||||||
pkgs.writers.writeRustBin "pipewire-controller" { } ''
|
|
||||||
use std::{process::Command, str};
|
|
||||||
|
|
||||||
const MUTE_AUDIO: &str = "${../audio/discord-mute.mp3}";
|
|
||||||
const UNMUTE_AUDIO: &str = "${../audio/discord-unmute.mp3}";
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
let mute_status = Command::new("${pamixer}")
|
|
||||||
.args(["--default-source", "--get-mute"])
|
|
||||||
.output()
|
|
||||||
.expect("Unable to get mute status from pamixer")
|
|
||||||
.stdout;
|
|
||||||
|
|
||||||
let mute_status = str::from_utf8(&mute_status[..]).expect("pamixer output wasn't a string");
|
|
||||||
|
|
||||||
if mute_status == "false" {
|
|
||||||
Command::new("${pamixer}")
|
|
||||||
.args(["--default-source", "--mute"])
|
|
||||||
.output()
|
|
||||||
.expect("Unable to mute via pamixer");
|
|
||||||
|
|
||||||
Command::new("${mpv}")
|
|
||||||
.args(["--no-video", MUTE_AUDIO])
|
|
||||||
.output()
|
|
||||||
.expect("Unable to play audio via mpv");
|
|
||||||
} else {
|
|
||||||
Command::new("${pamixer}")
|
|
||||||
.args(["--default-source", "--unmute"])
|
|
||||||
.output()
|
|
||||||
.expect("Unable to mute via pamixer");
|
|
||||||
|
|
||||||
Command::new("${mpv}")
|
|
||||||
.args(["--no-video", UNMUTE_AUDIO])
|
|
||||||
.output()
|
|
||||||
.expect("Unable to play audio via mpv");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.snowhawk.pipewire-controller = {
|
|
||||||
enable = lib.mkEnableOption "pipewire-controller home-manager module";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
home.packages = [ pipewire-controller ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -2,6 +2,14 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.snowhawk.playerctl;
|
cfg = config.snowhawk.playerctl;
|
||||||
|
|
||||||
|
keybindingsStr = lib.concatStringsSep "\n" (lib.mapAttrsToList
|
||||||
|
(hotkey: command:
|
||||||
|
lib.optionalString (command != null) ''
|
||||||
|
${hotkey}
|
||||||
|
${command}
|
||||||
|
'')
|
||||||
|
config.services.sxhkd.keybindings);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.snowhawk.playerctl = {
|
options.snowhawk.playerctl = {
|
||||||
|
@ -19,14 +27,30 @@ in
|
||||||
playerctl
|
playerctl
|
||||||
];
|
];
|
||||||
|
|
||||||
snowhawk.sxhkd.enable = lib.mkDefault true;
|
systemd.user.services.sxhkd = {
|
||||||
|
Unit = {
|
||||||
|
Description = "sxhkd service";
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
Type = "exec";
|
||||||
|
ExecStart = "${pkgs.sxhkd}/bin/sxhkd";
|
||||||
|
};
|
||||||
|
Install.WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
services.sxhkd.keybindings =
|
xdg.configFile."sxhkd/sxhkdrc".text = keybindingsStr;
|
||||||
let playerctl = "${pkgs.playerctl}/bin/playerctl";
|
|
||||||
in {
|
services.sxhkd =
|
||||||
"XF86AudioPlay" = "${playerctl} play-pause";
|
let
|
||||||
"XF86AudioPrev" = "${playerctl} previous";
|
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
||||||
"XF86AudioNext" = "${playerctl} next";
|
in
|
||||||
|
{
|
||||||
|
keybindings = {
|
||||||
|
"XF86AudioPlay" = "${playerctl} play-pause";
|
||||||
|
"XF86AudioPrev" = "${playerctl} previous";
|
||||||
|
"XF86AudioNext" = "${playerctl} next";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.snowhawk.sxhkd;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.snowhawk.sxhkd = {
|
|
||||||
enable = lib.mkEnableOption "custom sxhkd home-manager module";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
systemd.user.services.sxhkd = {
|
|
||||||
Unit = {
|
|
||||||
Description = "sxhkd service";
|
|
||||||
PartOf = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Type = "exec";
|
|
||||||
ExecStart = "${pkgs.sxhkd}/bin/sxhkd";
|
|
||||||
};
|
|
||||||
Install.WantedBy = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."sxhkd/sxhkdrc".text =
|
|
||||||
lib.concatStringsSep "\n" (lib.mapAttrsToList
|
|
||||||
(hotkey: command:
|
|
||||||
lib.optionalString (command != null) ''
|
|
||||||
${hotkey}
|
|
||||||
${command}
|
|
||||||
'')
|
|
||||||
config.services.sxhkd.keybindings);
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -14,7 +14,6 @@
|
||||||
playerctl.enable = true;
|
playerctl.enable = true;
|
||||||
alacritty.enable = true;
|
alacritty.enable = true;
|
||||||
defaultPrograms.enable = true;
|
defaultPrograms.enable = true;
|
||||||
pipewire-controller.enable = true;
|
|
||||||
|
|
||||||
# Games
|
# Games
|
||||||
xivlauncher.enable = true;
|
xivlauncher.enable = true;
|
||||||
|
|
Loading…
Reference in a new issue