aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/generic.nix4
-rw-r--r--pkgs/default.nix7
-rw-r--r--pkgs/patches/0001-wpctl-Add-get-volume-command-and-functionality.patch123
-rw-r--r--pkgs/patches/0002-wpctl-allow-modifying-volume-levels-using-percentage.patch118
4 files changed, 3 insertions, 249 deletions
diff --git a/nixos/modules/generic.nix b/nixos/modules/generic.nix
index b8b2a6e..8d34a16 100644
--- a/nixos/modules/generic.nix
+++ b/nixos/modules/generic.nix
@@ -9,7 +9,9 @@ with lib;
nix = {
extraOptions = "experimental-features = nix-command flakes";
- autoOptimiseStore = true;
+ settings = {
+ auto-optimise-store = true;
+ };
registry = {
personal.to = {
type = "git";
diff --git a/pkgs/default.nix b/pkgs/default.nix
index 7d3a169..4ac6ec4 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -6,13 +6,6 @@ let
personalpkgs = with pkgs; {
- wireplumber = nixpkgs.wireplumber.overrideAttrs (oldAttrs: {
- patches = [
- ./patches/0001-wpctl-Add-get-volume-command-and-functionality.patch
- ./patches/0002-wpctl-allow-modifying-volume-levels-using-percentage.patch
- ];
- });
-
luks-hw-password = callPackage ./luks-hw-password { };
delft-icon-theme = callPackage ./theme/delft-icon-theme.nix { };
diff --git a/pkgs/patches/0001-wpctl-Add-get-volume-command-and-functionality.patch b/pkgs/patches/0001-wpctl-Add-get-volume-command-and-functionality.patch
deleted file mode 100644
index 4bae05f..0000000
--- a/pkgs/patches/0001-wpctl-Add-get-volume-command-and-functionality.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From c44a369a14a13045462018e55595f1e2d83e1d6b Mon Sep 17 00:00:00 2001
-From: Varnit Singh <varnitcls@gmail.com>
-Date: Wed, 8 Jun 2022 09:18:34 +0000
-Subject: [PATCH 1/2] wpctl: Add get-volume command and functionality
-
----
- src/tools/wpctl.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 86 insertions(+)
-
-diff --git a/src/tools/wpctl.c b/src/tools/wpctl.c
-index ca5ea01..9f7c6bb 100644
---- a/src/tools/wpctl.c
-+++ b/src/tools/wpctl.c
-@@ -47,6 +47,10 @@ static struct {
- gboolean is_pid;
- } set_volume;
-
-+ struct {
-+ guint64 id;
-+ } get_volume;
-+
- struct {
- guint64 id;
- guint mute;
-@@ -471,6 +475,78 @@ status_run (WpCtl * self)
- g_main_loop_quit (self->loop);
- }
-
-+/* get-volume */
-+
-+static gboolean
-+get_volume_parse_positional (gint argc, gchar ** argv, GError **error)
-+{
-+ if (argc < 3) {
-+ g_set_error (error, wpctl_error_domain_quark(), 0,
-+ "ID is required");
-+ return FALSE;
-+ } else {
-+ return parse_id (true, false, argv[2], &cmdline.get_volume.id, error);
-+ }
-+}
-+
-+static gboolean
-+get_volume_prepare (WpCtl * self, GError ** error)
-+{
-+ wp_object_manager_add_interest (self->om, WP_TYPE_NODE, NULL);
-+ wp_object_manager_request_object_features (self->om, WP_TYPE_GLOBAL_PROXY,
-+ WP_PIPEWIRE_OBJECT_FEATURES_MINIMAL);
-+ return TRUE;
-+}
-+
-+static void
-+do_print_volume (WpCtl * self, WpPipewireObject *proxy)
-+{
-+ g_autoptr (WpPlugin) mixer_api = wp_plugin_find (self->core, "mixer-api");
-+ GVariant *variant = NULL;
-+ gboolean mute = FALSE;
-+ gdouble volume = 1.0;
-+ guint32 id = wp_proxy_get_bound_id (WP_PROXY (proxy));
-+
-+ g_signal_emit_by_name (mixer_api, "get-volume", id, &variant);
-+ if (!variant) {
-+ fprintf (stderr, "Node %d does not support volume\n", id);
-+ return;
-+ }
-+ g_variant_lookup (variant, "volume", "d", &volume);
-+ g_variant_lookup (variant, "mute", "b", &mute);
-+ g_clear_pointer (&variant, g_variant_unref);
-+
-+ printf ("Volume: %.2f%s", volume, mute ? " [MUTED]\n" : "\n");
-+}
-+
-+static void
-+get_volume_run (WpCtl * self)
-+{
-+ g_autoptr (WpPlugin) def_nodes_api = NULL;
-+ g_autoptr (GError) error = NULL;
-+ g_autoptr (WpPipewireObject) proxy = NULL;
-+ guint32 id;
-+
-+ def_nodes_api = wp_plugin_find (self->core, "default-nodes-api");
-+
-+ if (!translate_id (def_nodes_api, cmdline.get_volume.id, &id, &error)) {
-+ fprintf(stderr, "Translate ID error: %s\n\n", error->message);
-+ goto out;
-+ }
-+
-+ proxy = wp_object_manager_lookup (self->om, WP_TYPE_GLOBAL_PROXY,
-+ WP_CONSTRAINT_TYPE_G_PROPERTY, "bound-id", "=u", id, NULL);
-+ if (!proxy) {
-+ fprintf (stderr, "Node '%d' not found\n", id);
-+ goto out;
-+ }
-+
-+ do_print_volume (self, proxy);
-+
-+out:
-+ g_main_loop_quit (self->loop);
-+}
-+
- /* inspect */
-
- static gboolean
-@@ -1150,6 +1226,16 @@ static const struct subcommand {
- .prepare = status_prepare,
- .run = status_run,
- },
-+ {
-+ .name = "get-volume",
-+ .positional_args = "ID",
-+ .summary = "Displays volume information about the specified node in PipeWire",
-+ .description = NULL,
-+ .entries = { { NULL } },
-+ .parse_positional = get_volume_parse_positional,
-+ .prepare = get_volume_prepare,
-+ .run = get_volume_run,
-+ },
- {
- .name = "inspect",
- .positional_args = "ID",
---
-2.36.1
-
diff --git a/pkgs/patches/0002-wpctl-allow-modifying-volume-levels-using-percentage.patch b/pkgs/patches/0002-wpctl-allow-modifying-volume-levels-using-percentage.patch
deleted file mode 100644
index 9e51797..0000000
--- a/pkgs/patches/0002-wpctl-allow-modifying-volume-levels-using-percentage.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 43d8753c5ef4cbd4d2f6558182b290d083644521 Mon Sep 17 00:00:00 2001
-From: Varnit Singh <varnitcls@gmail.com>
-Date: Wed, 8 Jun 2022 09:25:45 +0000
-Subject: [PATCH 2/2] wpctl: allow modifying volume levels using
- percentage/step amount.
-
----
- src/tools/wpctl.c | 63 ++++++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 59 insertions(+), 4 deletions(-)
-
-diff --git a/src/tools/wpctl.c b/src/tools/wpctl.c
-index 9f7c6bb..0f5bc8c 100644
---- a/src/tools/wpctl.c
-+++ b/src/tools/wpctl.c
-@@ -45,6 +45,7 @@ static struct {
- guint64 id;
- gfloat volume;
- gboolean is_pid;
-+ gchar type;
- } set_volume;
-
- struct {
-@@ -846,11 +847,38 @@ set_volume_parse_positional (gint argc, gchar ** argv, GError **error)
- {
- if (argc < 4) {
- g_set_error (error, wpctl_error_domain_quark(), 0,
-- "ID and VOL are required");
-+ "ID and VOL[%%][-/+] are required");
-+ return FALSE;
-+ }
-+
-+ GRegex *regex = g_regex_new ("^(\\d*\\.?\\d*)(%?)([-+]?)$", 0, 0, NULL);
-+ GMatchInfo *info = NULL;
-+
-+ if (g_regex_match(regex, argv[3], 0, &info)) {
-+ cmdline.set_volume.volume = strtof(g_match_info_fetch(info, 1), NULL);
-+ cmdline.set_volume.type = 'a';
-+
-+ if (g_strcmp0(g_match_info_fetch(info, 2), "%") == 0) {
-+ cmdline.set_volume.type = 'p';
-+ }
-+
-+ if (g_strcmp0(g_match_info_fetch(info, 3), "-") == 0) {
-+ cmdline.set_volume.volume = -(cmdline.set_volume.volume);
-+ if (cmdline.set_volume.type != 'p') {
-+ cmdline.set_volume.type = 's';
-+ }
-+ } else if (g_strcmp0(g_match_info_fetch(info, 3), "+") == 0 && cmdline.set_volume.type != 'p') {
-+ cmdline.set_volume.type = 's';
-+ }
-+ g_match_info_free (info);
-+ g_regex_unref (regex);
-+ } else {
-+ g_regex_unref (regex);
-+ g_set_error (error, wpctl_error_domain_quark(), 0,
-+ "Invalid volume argument. See wpctl set-volume --help");
- return FALSE;
- }
-
-- cmdline.set_volume.volume = strtof (argv[3], NULL);
- return parse_id (!cmdline.set_volume.is_pid, false, argv[2],
- &cmdline.set_volume.id, error);
- }
-@@ -874,6 +902,7 @@ do_set_volume (WpCtl * self, WpPipewireObject *proxy)
- g_autoptr (GError) error = NULL;
- GVariant *variant = NULL;
- gboolean res = FALSE;
-+ gdouble curr_volume = 1.0;
- guint32 id = wp_proxy_get_bound_id (WP_PROXY (proxy));
-
- if (WP_IS_ENDPOINT (proxy)) {
-@@ -885,6 +914,27 @@ do_set_volume (WpCtl * self, WpPipewireObject *proxy)
- id = atoi (str);
- }
-
-+ g_signal_emit_by_name (mixer_api, "get-volume", id, &variant);
-+ if (!variant) {
-+ fprintf (stderr, "Node %d does not support volume\n", id);
-+ g_clear_pointer (&variant, g_variant_unref);
-+ return FALSE;
-+ }
-+ g_variant_lookup (variant, "volume", "d", &curr_volume);
-+ g_clear_pointer (&variant, g_variant_unref);
-+
-+ if (cmdline.set_volume.type == 'a') {
-+ cmdline.set_volume.volume = cmdline.set_volume.volume;
-+ } else if (cmdline.set_volume.type == 's') {
-+ cmdline.set_volume.volume = (cmdline.set_volume.volume + curr_volume);
-+ } else if (cmdline.set_volume.type == 'p') {
-+ gfloat delta = (cmdline.set_volume.volume) * (curr_volume);
-+ cmdline.set_volume.volume = (curr_volume + delta);
-+ }
-+ if (cmdline.set_volume.volume < 0) {
-+ cmdline.set_volume.volume = 0.0;
-+ }
-+
- g_variant_builder_add (&b, "{sv}", "volume",
- g_variant_new_double (cmdline.set_volume.volume));
- variant = g_variant_builder_end (&b);
-@@ -1266,8 +1316,13 @@ static const struct subcommand {
- },
- {
- .name = "set-volume",
-- .positional_args = "ID VOL",
-- .summary = "Sets the volume of ID to VOL (floating point, 1.0 is 100%%)",
-+ .positional_args = "ID VOL[%%][-/+]",
-+ .summary = "Sets the volume of ID from specified argument. "
-+ "(floating point, 1.0 is 100%%)\n VOL%%[-/+] - "
-+ "Step up/down volume by specified percent (Example:"
-+ " 0.5%%+)\n VOL[-/+] - Step up/down volume by"
-+ " specified value (Example: 0.5+)\n VOL - Set "
-+ "volume as the specified value (Example: 0.5)",
- .description = NULL,
- .entries = {
- { "pid", 'p', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE,
---
-2.36.1
-