From 13b66648fd36165d7604f3de2d970e5643865068 Mon Sep 17 00:00:00 2001 From: Jan-Bulthuis Date: Thu, 17 Apr 2025 02:17:38 +0200 Subject: [PATCH] Added wprs desktop entries --- user-modules/default.nix | 1 + user-modules/wprs/default.nix | 83 +++++++++++++++++++++++++++++++++++ users/jan.nix | 12 ++++- 3 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 user-modules/wprs/default.nix diff --git a/user-modules/default.nix b/user-modules/default.nix index 16635cf..6ce7e68 100644 --- a/user-modules/default.nix +++ b/user-modules/default.nix @@ -31,6 +31,7 @@ ./terminal/foot/default.nix ./vscode/default.nix ./whatsapp/default.nix + ./wprs/default.nix ./winbox/default.nix ./zathura/default.nix diff --git a/user-modules/wprs/default.nix b/user-modules/wprs/default.nix new file mode 100644 index 0000000..58139d9 --- /dev/null +++ b/user-modules/wprs/default.nix @@ -0,0 +1,83 @@ +{ + lib, + config, + pkgs, + ... +}: + +with lib; +let + cfg = config.modules.wprs; + + wprsHostConfigurationModule = types.submodule { + options = { + name = mkOption { + type = types.str; + description = "Command name."; + }; + command = mkOption { + type = types.str; + description = "Command to run."; + }; + }; + }; +in +{ + options.modules.wprs = { + enable = mkEnableOption "Enable wprs"; + hosts = mkOption { + type = types.attrsOf (types.listOf wprsHostConfigurationModule); + default = { }; + description = "wprs commands to add as desktop files"; + }; + }; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + wprs + ]; + + xdg.desktopEntries = ( + listToAttrs ( + map + (entry: { + name = "wprs${ + builtins.substring 0 12 (builtins.hashString "sha256" "${entry.name} (${entry.comment})") + }"; + value = entry // { + type = "Application"; + terminal = false; + genericName = entry.comment; + }; + }) + ( + concatMap ( + entry: + let + host = entry.name; + commands = entry.value; + hostEntries = [ + { + name = "Attach"; + comment = host; + exec = "wprs --pulseaudio-forwarding False ${host} attach"; + } + { + name = "Detach"; + comment = host; + exec = "wprs ${host} detach"; + } + ]; + commandEntries = map (command: { + name = "${command.name}"; + comment = host; + exec = "wprs --pulseaudio-forwarding False ${host} run \"${command.command}\""; + }) commands; + in + (hostEntries ++ commandEntries) + ) (attrsToList cfg.hosts) + ) + ) + ); + }; +} diff --git a/users/jan.nix b/users/jan.nix index bc2cc4d..a51331d 100644 --- a/users/jan.nix +++ b/users/jan.nix @@ -24,7 +24,6 @@ inkscape ente-auth bitwarden - wprs ]; # desktop.development = "river-light"; @@ -345,6 +344,17 @@ eduvpn.enable = true; keyring.enable = true; scripts.enable = true; + wprs = { + enable = true; + hosts = { + "mixer@10.20.60.251" = [ + { + name = "Carla"; + command = "carla -platform wayland"; + } + ]; + }; + }; # Development neovim.enable = true;