From 416de183067b939899813ca1a612ba26a28c9ab6 Mon Sep 17 00:00:00 2001 From: Michael Goldberger Date: Fri, 22 Aug 2025 14:31:43 -0400 Subject: [PATCH] modules/clipboard: add pbcopy clipboard provider --- modules/clipboard.nix | 16 +++++++++++----- tests/test-sources/modules/clipboard.nix | 7 +++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/modules/clipboard.nix b/modules/clipboard.nix index f0949f1f..192d813a 100644 --- a/modules/clipboard.nix +++ b/modules/clipboard.nix @@ -24,14 +24,20 @@ in type = lib.types.submodule { options = lib.mapAttrs - (name: packageName: { - enable = lib.mkEnableOption name; - package = lib.mkPackageOption pkgs packageName { }; - }) + ( + name: packageName: + { + enable = lib.mkEnableOption name; + } + // lib.optionalAttrs (packageName != null) { + package = lib.mkPackageOption pkgs packageName { }; + } + ) { wl-copy = "wl-clipboard"; xclip = "xclip"; xsel = "xsel"; + pbcopy = null; }; }; default = { }; @@ -47,7 +53,7 @@ in opts.clipboard = lib.mkIf (cfg.register != null) cfg.register; extraPackages = lib.mapAttrsToList (n: v: v.package) ( - lib.filterAttrs (n: v: v.enable) cfg.providers + lib.filterAttrs (n: v: v.enable && v ? package) cfg.providers ); }; } diff --git a/tests/test-sources/modules/clipboard.nix b/tests/test-sources/modules/clipboard.nix index fe2bbfa8..88cf028b 100644 --- a/tests/test-sources/modules/clipboard.nix +++ b/tests/test-sources/modules/clipboard.nix @@ -27,4 +27,11 @@ providers.wl-copy.enable = pkgs.stdenv.hostPlatform.isLinux; }; }; + + example-with-builtin = { + clipboard = { + # pbcopy is only available on darwin, and is built-in + providers.pbcopy.enable = pkgs.stdenv.hostPlatform.isDarwin; + }; + }; }