From 8a35410a28d346622936cb9f3f9d2592d71a6a9f Mon Sep 17 00:00:00 2001 From: Flameopathic <64027365+Flameopathic@users.noreply.github.com> Date: Tue, 29 Apr 2025 13:59:16 -0400 Subject: [PATCH] treewide: add stylix.testbed.ui.{command,application} options (#1110) Link: https://github.com/danth/stylix/pull/1110 Reviewed-by: NAHO <90870942+trueNAHO@users.noreply.github.com> Reviewed-by: awwpotato --- modules/alacritty/testbeds/default.nix | 3 +- modules/cavalier/testbeds/default.nix | 3 +- modules/chromium/testbeds/default.nix | 3 +- modules/discord/testbeds/vencord.nix | 3 +- modules/discord/testbeds/vesktop.nix | 3 +- modules/emacs/testbeds/default.nix | 3 +- modules/firefox/testbeds/default.nix | 3 +- modules/firefox/testbeds/gnome-theme.nix | 3 +- modules/foot/testbeds/default.nix | 3 +- modules/gedit/testbeds/default.nix | 3 +- modules/ghostty/testbeds/default.nix | 3 +- modules/glance/testbeds/default.nix | 3 +- .../gnome-text-editor/testbeds/default.nix | 3 +- modules/halloy/testbeds/default.nix | 3 +- modules/kitty/testbeds/default.nix | 3 +- modules/mpv/testbeds/default.nix | 3 +- modules/mpv/testbeds/modernz.nix | 3 +- modules/mpv/testbeds/uosc.nix | 3 +- modules/qutebrowser/testbeds/default.nix | 3 +- modules/vscode/testbeds/default.nix | 3 +- modules/wezterm/testbeds/default.nix | 3 +- modules/yazi/testbeds/default.nix | 3 +- modules/zathura/testbeds/default.nix | 3 +- stylix/testbed.nix | 122 +++++++++++++----- 24 files changed, 112 insertions(+), 79 deletions(-) diff --git a/modules/alacritty/testbeds/default.nix b/modules/alacritty/testbeds/default.nix index 0f01d604..5e74d1e5 100644 --- a/modules/alacritty/testbeds/default.nix +++ b/modules/alacritty/testbeds/default.nix @@ -4,8 +4,7 @@ let package = pkgs.alacritty; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "Alacritty"; inherit package; }; diff --git a/modules/cavalier/testbeds/default.nix b/modules/cavalier/testbeds/default.nix index 0f4ef7c1..e1a49d85 100644 --- a/modules/cavalier/testbeds/default.nix +++ b/modules/cavalier/testbeds/default.nix @@ -4,8 +4,7 @@ let package = pkgs.cavalier; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "org.nickvision.cavalier"; inherit package; }; diff --git a/modules/chromium/testbeds/default.nix b/modules/chromium/testbeds/default.nix index 10720caf..272b496b 100644 --- a/modules/chromium/testbeds/default.nix +++ b/modules/chromium/testbeds/default.nix @@ -4,8 +4,7 @@ let package = pkgs.chromium; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "chromium-browser"; inherit package; }; diff --git a/modules/discord/testbeds/vencord.nix b/modules/discord/testbeds/vencord.nix index 1fcaef05..f090acfd 100644 --- a/modules/discord/testbeds/vencord.nix +++ b/modules/discord/testbeds/vencord.nix @@ -6,8 +6,7 @@ let }; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "discord"; inherit package; }; diff --git a/modules/discord/testbeds/vesktop.nix b/modules/discord/testbeds/vesktop.nix index 9c6f2d64..086131cd 100644 --- a/modules/discord/testbeds/vesktop.nix +++ b/modules/discord/testbeds/vesktop.nix @@ -4,8 +4,7 @@ let package = pkgs.vesktop; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "vesktop"; inherit package; }; diff --git a/modules/emacs/testbeds/default.nix b/modules/emacs/testbeds/default.nix index 648def64..6e198e22 100644 --- a/modules/emacs/testbeds/default.nix +++ b/modules/emacs/testbeds/default.nix @@ -4,8 +4,7 @@ let package = pkgs.emacs; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "emacs"; inherit package; }; diff --git a/modules/firefox/testbeds/default.nix b/modules/firefox/testbeds/default.nix index 760d5154..14ff7c87 100644 --- a/modules/firefox/testbeds/default.nix +++ b/modules/firefox/testbeds/default.nix @@ -5,8 +5,7 @@ let profileName = "stylix"; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "firefox"; inherit package; }; diff --git a/modules/firefox/testbeds/gnome-theme.nix b/modules/firefox/testbeds/gnome-theme.nix index 415b43e7..8a3a2285 100644 --- a/modules/firefox/testbeds/gnome-theme.nix +++ b/modules/firefox/testbeds/gnome-theme.nix @@ -5,8 +5,7 @@ let profileName = "stylix"; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "firefox"; inherit package; }; diff --git a/modules/foot/testbeds/default.nix b/modules/foot/testbeds/default.nix index 8ca6e5db..5060f5bc 100644 --- a/modules/foot/testbeds/default.nix +++ b/modules/foot/testbeds/default.nix @@ -4,8 +4,7 @@ let package = pkgs.foot; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "foot"; inherit package; }; diff --git a/modules/gedit/testbeds/default.nix b/modules/gedit/testbeds/default.nix index b645b9b4..aeb7fb99 100644 --- a/modules/gedit/testbeds/default.nix +++ b/modules/gedit/testbeds/default.nix @@ -4,8 +4,7 @@ let package = pkgs.gedit; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "org.gnome.gedit"; inherit package; }; diff --git a/modules/ghostty/testbeds/default.nix b/modules/ghostty/testbeds/default.nix index e004e60b..24cdf8d9 100644 --- a/modules/ghostty/testbeds/default.nix +++ b/modules/ghostty/testbeds/default.nix @@ -3,8 +3,7 @@ let package = pkgs.ghostty; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "com.mitchellh.ghostty"; inherit package; }; diff --git a/modules/glance/testbeds/default.nix b/modules/glance/testbeds/default.nix index 5ee0f4c1..77e743c5 100644 --- a/modules/glance/testbeds/default.nix +++ b/modules/glance/testbeds/default.nix @@ -9,8 +9,7 @@ let port = 1234; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "firefox"; inherit package; }; diff --git a/modules/gnome-text-editor/testbeds/default.nix b/modules/gnome-text-editor/testbeds/default.nix index 7837790c..ad102919 100644 --- a/modules/gnome-text-editor/testbeds/default.nix +++ b/modules/gnome-text-editor/testbeds/default.nix @@ -4,8 +4,7 @@ let package = pkgs.gnome-text-editor; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "org.gnome.TextEditor"; inherit package; }; diff --git a/modules/halloy/testbeds/default.nix b/modules/halloy/testbeds/default.nix index 2c781b00..d74fcd09 100644 --- a/modules/halloy/testbeds/default.nix +++ b/modules/halloy/testbeds/default.nix @@ -4,8 +4,7 @@ let package = pkgs.halloy; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "org.squidowl.halloy"; inherit package; }; diff --git a/modules/kitty/testbeds/default.nix b/modules/kitty/testbeds/default.nix index 04a89e5b..7f8f08ff 100644 --- a/modules/kitty/testbeds/default.nix +++ b/modules/kitty/testbeds/default.nix @@ -4,8 +4,7 @@ let package = pkgs.kitty; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "kitty"; inherit package; }; diff --git a/modules/mpv/testbeds/default.nix b/modules/mpv/testbeds/default.nix index ae1ff164..46580bef 100644 --- a/modules/mpv/testbeds/default.nix +++ b/modules/mpv/testbeds/default.nix @@ -3,8 +3,7 @@ let package = pkgs.mpv; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "mpv"; inherit package; }; diff --git a/modules/mpv/testbeds/modernz.nix b/modules/mpv/testbeds/modernz.nix index 2c00fce1..fa6a7af6 100644 --- a/modules/mpv/testbeds/modernz.nix +++ b/modules/mpv/testbeds/modernz.nix @@ -3,8 +3,7 @@ let package = pkgs.mpv; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "mpv"; inherit package; }; diff --git a/modules/mpv/testbeds/uosc.nix b/modules/mpv/testbeds/uosc.nix index 5f2cda35..25420857 100644 --- a/modules/mpv/testbeds/uosc.nix +++ b/modules/mpv/testbeds/uosc.nix @@ -3,8 +3,7 @@ let package = pkgs.mpv; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "mpv"; inherit package; }; diff --git a/modules/qutebrowser/testbeds/default.nix b/modules/qutebrowser/testbeds/default.nix index 6c26a935..27558204 100644 --- a/modules/qutebrowser/testbeds/default.nix +++ b/modules/qutebrowser/testbeds/default.nix @@ -4,8 +4,7 @@ let package = pkgs.qutebrowser; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "org.qutebrowser.qutebrowser"; inherit package; }; diff --git a/modules/vscode/testbeds/default.nix b/modules/vscode/testbeds/default.nix index 9384638a..a17909eb 100644 --- a/modules/vscode/testbeds/default.nix +++ b/modules/vscode/testbeds/default.nix @@ -5,8 +5,7 @@ let package = pkgs.vscodium; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "codium"; inherit package; }; diff --git a/modules/wezterm/testbeds/default.nix b/modules/wezterm/testbeds/default.nix index 90d236a2..e8b9b57d 100644 --- a/modules/wezterm/testbeds/default.nix +++ b/modules/wezterm/testbeds/default.nix @@ -4,8 +4,7 @@ let package = pkgs.wezterm; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "org.wezfurlong.wezterm"; inherit package; }; diff --git a/modules/yazi/testbeds/default.nix b/modules/yazi/testbeds/default.nix index 9372b316..d08bd53d 100644 --- a/modules/yazi/testbeds/default.nix +++ b/modules/yazi/testbeds/default.nix @@ -5,8 +5,7 @@ let in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "yazi"; inherit package; }; diff --git a/modules/zathura/testbeds/default.nix b/modules/zathura/testbeds/default.nix index b82d5080..362eb8da 100644 --- a/modules/zathura/testbeds/default.nix +++ b/modules/zathura/testbeds/default.nix @@ -4,8 +4,7 @@ let package = pkgs.zathura; in { - stylix.testbed.application = { - enable = true; + stylix.testbed.ui.application = { name = "org.pwmt.zathura"; inherit package; }; diff --git a/stylix/testbed.nix b/stylix/testbed.nix index 5117b17a..4c1512b6 100644 --- a/stylix/testbed.nix +++ b/stylix/testbed.nix @@ -40,39 +40,82 @@ let applicationModule = { config, lib, ... }: { - options.stylix.testbed.application = { - enable = lib.mkOption { - type = lib.types.bool; - default = false; - description = '' - Whether to enable a standard configuration for testing individual - applications. + options.stylix.testbed.ui = lib.mkOption { + type = lib.types.nullOr ( + lib.types.submodule { + options = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Whether to enable a standard configuration for testing graphical + applications. - This will automatically log in as the `${username}` user, then launch - the application from its desktop entry. + This will automatically log in as the `${username}` user and launch + an application or command. - This is currently based on GNOME, but the specific desktop environment - used may change in the future. - ''; - }; + This is currently based on GNOME, but the specific desktop environment + used may change in the future. + ''; + }; + application = lib.mkOption { + description = '' + Options defining an application to be launched using its provided + `.desktop` entry. + ''; + type = lib.types.nullOr ( + lib.types.submodule { + options = { + name = lib.mkOption { + type = lib.types.str; + description = '' + The name of the desktop entry for the application, without the + `.desktop` extension. + ''; + }; - name = lib.mkOption { - type = lib.types.str; - description = '' - The name of the desktop entry for the application, without the - `.desktop` extension. - ''; - }; - - package = lib.mkOption { - type = lib.types.package; - description = '' - The application being tested. - ''; - }; + package = lib.mkOption { + type = lib.types.package; + description = '' + The package providing the binary and desktop entry of the + application being tested. + ''; + }; + }; + } + ); + default = null; + }; + command = lib.mkOption { + type = lib.types.nullOr ( + lib.types.submodule { + options = { + text = lib.mkOption { + type = lib.types.str; + description = '' + The command which will be run once the graphical environment has + loaded. + ''; + }; + useTerminal = lib.mkOption { + type = lib.types.bool; + description = '' + Whether or not to spawn a terminal when running the command. + ''; + default = false; + }; + }; + } + ); + default = null; + }; + }; + } + ); + default = null; }; - config = lib.mkIf config.stylix.testbed.application.enable { + config = lib.mkIf (config.stylix.testbed.ui != null) { services.xserver = { enable = true; displayManager.gdm.enable = true; @@ -87,11 +130,24 @@ let # Disable the GNOME tutorial which pops up on first login. environment.gnome.excludePackages = [ pkgs.gnome-tour ]; - environment.systemPackages = [ - (pkgs.makeAutostartItem { - inherit (config.stylix.testbed.application) name package; - }) - ]; + # for use when application is set + environment.systemPackages = + lib.optional (config.stylix.testbed.ui.command != null) ( + pkgs.makeAutostartItem { + name = "stylix-testbed"; + package = pkgs.makeDesktopItem { + name = "stylix-testbed"; + desktopName = "stylix-testbed"; + exec = config.stylix.testbed.ui.command.text; + terminal = config.stylix.testbed.ui.command.useTerminal; + }; + } + ) + ++ lib.optional (config.stylix.testbed.ui.application != null) ( + pkgs.makeAutostartItem { + inherit (config.stylix.testbed.ui.application) name package; + } + ); }; };