diff --git a/doc/src/testbeds.md b/doc/src/testbeds.md index 9a20adb6f..9bd23c665 100644 --- a/doc/src/testbeds.md +++ b/doc/src/testbeds.md @@ -36,13 +36,12 @@ uses. graphical environments. - `command` takes a command to be run once the graphical environment has loaded - - `text` takes the string of the command - - `useTerminal` takes a boolean which determines whether the command - should be run in a terminal - - `application` takes a desktop application to be run once the graphical - environment has loaded. If one of its suboptions is set, all must be. - - `name` takes the string name of the desktop application - - `package` takes the package which provides the `.desktop` file + - `packages` are forwarded to `environment.systemPackages` + - `terminal` takes a boolean which determines whether the command should + be run in a terminal, defaulting to `false` + - `text` takes the string of the command, which is deduced from + `config.stylix.testbed.ui.command.packages` when it contains one + package. ### Home Manager diff --git a/modules/alacritty/testbeds/alacritty.nix b/modules/alacritty/testbeds/alacritty.nix index 3f35ba7d5..39ae98189 100644 --- a/modules/alacritty/testbeds/alacritty.nix +++ b/modules/alacritty/testbeds/alacritty.nix @@ -1,17 +1,8 @@ -{ lib, pkgs, ... }: -let - package = pkgs.alacritty; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "Alacritty"; - inherit package; - }; + stylix.testbed.ui.command.text = "alacritty"; home-manager.sharedModules = lib.singleton { - programs.alacritty = { - enable = true; - inherit package; - }; + programs.alacritty.enable = true; }; } diff --git a/modules/ashell/testbeds/ashell.nix b/modules/ashell/testbeds/ashell.nix index 474e51ea5..314b44ab3 100644 --- a/modules/ashell/testbeds/ashell.nix +++ b/modules/ashell/testbeds/ashell.nix @@ -1,8 +1,8 @@ { lib, ... }: { stylix.testbed.ui = { - graphicalEnvironment = "hyprland"; command.text = "ashell"; + graphicalEnvironment = "hyprland"; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/bat/testbeds/bat.nix b/modules/bat/testbeds/bat.nix index b7b0f17f4..73f463c20 100644 --- a/modules/bat/testbeds/bat.nix +++ b/modules/bat/testbeds/bat.nix @@ -1,10 +1,11 @@ -{ lib, pkgs, ... }: -let - package = pkgs.bat; -in +{ lib, ... }: { - environment = { - loginShellInit = "${lib.getExe package} flake-parts/flake.nix"; - systemPackages = [ package ]; + stylix.testbed.ui.command = { + terminal = true; + text = "bat flake-parts/flake.nix"; + }; + + home-manager.sharedModules = lib.singleton { + programs.bat.enable = true; }; } diff --git a/modules/blender/testbeds/blender.nix b/modules/blender/testbeds/blender.nix index 0b335abf6..043d44d65 100644 --- a/modules/blender/testbeds/blender.nix +++ b/modules/blender/testbeds/blender.nix @@ -1,12 +1,4 @@ { pkgs, ... }: -let - package = pkgs.blender; -in { - stylix.testbed.ui.application = { - name = "blender"; - inherit package; - }; - - environment.systemPackages = [ package ]; + stylix.testbed.ui.command.packages = [ pkgs.blender ]; } diff --git a/modules/bspwm/testbeds/bspwm.nix b/modules/bspwm/testbeds/bspwm.nix index 3c687c1e2..f7bbd39c3 100644 --- a/modules/bspwm/testbeds/bspwm.nix +++ b/modules/bspwm/testbeds/bspwm.nix @@ -1,12 +1,7 @@ { pkgs, ... }: { stylix.testbed.ui = { + command.packages = [ pkgs.kitty ]; graphicalEnvironment = "bspwm"; - - # We need something to open a window so that we can check the window borders - application = { - name = "kitty"; - package = pkgs.kitty; - }; }; } diff --git a/modules/btop/testbeds/btop.nix b/modules/btop/testbeds/btop.nix index 4072523f5..9b19a1c1a 100644 --- a/modules/btop/testbeds/btop.nix +++ b/modules/btop/testbeds/btop.nix @@ -1,8 +1,8 @@ -{ lib, pkgs, ... }: +{ lib, ... }: { stylix.testbed.ui.command = { - text = lib.getExe pkgs.btop; - useTerminal = true; + terminal = true; + text = "btop"; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/cava/testbeds/cava-rainbow.nix b/modules/cava/testbeds/cava-rainbow.nix index b70f86299..a12c1637e 100644 --- a/modules/cava/testbeds/cava-rainbow.nix +++ b/modules/cava/testbeds/cava-rainbow.nix @@ -1,11 +1,9 @@ { lib, pkgs, ... }: { stylix.testbed.ui.command = { - text = '' - ${lib.getExe' pkgs.alsa-utils "aplay"} /dev/urandom & - ${lib.getExe pkgs.cava} - ''; - useTerminal = true; + packages = [ pkgs.alsa-utils ]; + terminal = true; + text = "aplay /dev/urandom & cava"; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/cava/testbeds/cava.nix b/modules/cava/testbeds/cava.nix index a8d5d1b8f..38fc31f41 100644 --- a/modules/cava/testbeds/cava.nix +++ b/modules/cava/testbeds/cava.nix @@ -1,11 +1,9 @@ { lib, pkgs, ... }: { stylix.testbed.ui.command = { - text = '' - ${lib.getExe' pkgs.alsa-utils "aplay"} /dev/urandom & - ${lib.getExe pkgs.cava} - ''; - useTerminal = true; + packages = [ pkgs.alsa-utils ]; + terminal = true; + text = "aplay /dev/urandom & cava"; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/cavalier/testbeds/cavalier.nix b/modules/cavalier/testbeds/cavalier.nix index 6469c00ae..16a4120fa 100644 --- a/modules/cavalier/testbeds/cavalier.nix +++ b/modules/cavalier/testbeds/cavalier.nix @@ -1,17 +1,8 @@ { lib, pkgs, ... }: -let - package = pkgs.cavalier; -in { - stylix.testbed.ui.application = { - name = "org.nickvision.cavalier"; - inherit package; - }; + stylix.testbed.ui.command.text = pkgs.cavalier.meta.mainProgram; home-manager.sharedModules = lib.singleton { - programs.cavalier = { - enable = true; - inherit package; - }; + programs.cavalier.enable = true; }; } diff --git a/modules/chromium/testbeds/chromium.nix b/modules/chromium/testbeds/chromium.nix index 02d5043ed..5db9ed6da 100644 --- a/modules/chromium/testbeds/chromium.nix +++ b/modules/chromium/testbeds/chromium.nix @@ -1,12 +1,8 @@ -{ pkgs, ... }: -let - package = pkgs.chromium; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "chromium-browser"; - inherit package; - }; + stylix.testbed.ui.command.text = "chromium"; - environment.systemPackages = [ package ]; + home-manager.sharedModules = lib.singleton { + programs.chromium.enable = true; + }; } diff --git a/modules/discord/testbeds/vencord.nix b/modules/discord/testbeds/vencord.nix index 151777495..f3e3338d6 100644 --- a/modules/discord/testbeds/vencord.nix +++ b/modules/discord/testbeds/vencord.nix @@ -1,24 +1,14 @@ { lib, pkgs, ... }: -let - package = pkgs.discord.override { - withVencord = true; - }; -in { - stylix.testbed = { - # Discord is not available on arm64. - enable = lib.meta.availableOn pkgs.stdenv.hostPlatform package; - - ui.application = { - name = "discord"; - inherit package; + stylix.testbed = + let + package = pkgs.discord.override { withVencord = true; }; + in + { + enable = lib.meta.availableOn pkgs.stdenv.hostPlatform package; + ui.command.packages = [ package ]; }; - }; - environment.systemPackages = [ package ]; nixpkgs.config.allowUnfreePredicate = - pkg: - builtins.elem (lib.getName pkg) [ - "discord" - ]; + pkg: builtins.elem (lib.getName pkg) [ "discord" ]; } diff --git a/modules/discord/testbeds/vesktop.nix b/modules/discord/testbeds/vesktop.nix index 464845409..1724edbde 100644 --- a/modules/discord/testbeds/vesktop.nix +++ b/modules/discord/testbeds/vesktop.nix @@ -1,17 +1,8 @@ -{ pkgs, lib, ... }: -let - package = pkgs.vesktop; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "vesktop"; - inherit package; - }; + stylix.testbed.ui.command.text = "vesktop"; home-manager.sharedModules = lib.singleton { - programs.vesktop = { - enable = true; - inherit package; - }; + programs.vesktop.enable = true; }; } diff --git a/modules/emacs/testbeds/emacs.nix b/modules/emacs/testbeds/emacs.nix index 6693970c6..0974563e0 100644 --- a/modules/emacs/testbeds/emacs.nix +++ b/modules/emacs/testbeds/emacs.nix @@ -1,11 +1,8 @@ -{ lib, pkgs, ... }: +{ lib, ... }: { stylix.testbed.ui.command.text = "emacs flake-parts/flake.nix"; home-manager.sharedModules = lib.singleton { - programs.emacs = { - enable = true; - package = pkgs.emacs; - }; + programs.emacs.enable = true; }; } diff --git a/modules/eog/testbeds/eog.nix b/modules/eog/testbeds/eog.nix index e99c811e8..f4a693ef8 100644 --- a/modules/eog/testbeds/eog.nix +++ b/modules/eog/testbeds/eog.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, ... }: +{ pkgs, ... }: { - stylix.testbed.ui.command.text = lib.getExe pkgs.eog; + stylix.testbed.ui.command.packages = [ pkgs.eog ]; } diff --git a/modules/firefox/testbeds/firefox-gnome-theme.nix b/modules/firefox/testbeds/firefox-gnome-theme.nix index 8acfa81e8..cd8e6c4c0 100644 --- a/modules/firefox/testbeds/firefox-gnome-theme.nix +++ b/modules/firefox/testbeds/firefox-gnome-theme.nix @@ -1,24 +1,20 @@ -{ lib, pkgs, ... }: -let - package = pkgs.firefox; - profileName = "stylix"; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "firefox"; - inherit package; - }; + stylix.testbed.ui.command.text = "firefox"; - home-manager.sharedModules = lib.singleton { - programs.firefox = { - enable = true; - inherit package; - profiles.${profileName}.isDefault = true; - }; + home-manager.sharedModules = + let + profileName = "stylix"; + in + lib.singleton { + programs.firefox = { + enable = true; + profiles.${profileName}.isDefault = true; + }; - stylix.targets.firefox = { - profileNames = [ profileName ]; - firefoxGnomeTheme.enable = true; + stylix.targets.firefox = { + profileNames = [ profileName ]; + firefoxGnomeTheme.enable = true; + }; }; - }; } diff --git a/modules/firefox/testbeds/firefox.nix b/modules/firefox/testbeds/firefox.nix index 3a22d587e..4251cb03c 100644 --- a/modules/firefox/testbeds/firefox.nix +++ b/modules/firefox/testbeds/firefox.nix @@ -1,21 +1,17 @@ -{ lib, pkgs, ... }: -let - package = pkgs.firefox; - profileName = "stylix"; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "firefox"; - inherit package; - }; + stylix.testbed.ui.command.text = "firefox"; - home-manager.sharedModules = lib.singleton { - programs.firefox = { - enable = true; - inherit package; - profiles.${profileName}.isDefault = true; - }; + home-manager.sharedModules = + let + profileName = "stylix"; + in + lib.singleton { + programs.firefox = { + enable = true; + profiles.${profileName}.isDefault = true; + }; - stylix.targets.firefox.profileNames = [ profileName ]; - }; + stylix.targets.firefox.profileNames = [ profileName ]; + }; } diff --git a/modules/fish/testbeds/fish-hm.nix b/modules/fish/testbeds/fish-hm.nix index 692a0bd92..1795d57b0 100644 --- a/modules/fish/testbeds/fish-hm.nix +++ b/modules/fish/testbeds/fish-hm.nix @@ -1,8 +1,8 @@ { lib, ... }: { stylix.testbed.ui.command = { + terminal = true; text = "fish"; - useTerminal = true; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/fish/testbeds/fish-nixos.nix b/modules/fish/testbeds/fish-nixos.nix index 3e5ad85a2..5dfc84cdb 100644 --- a/modules/fish/testbeds/fish-nixos.nix +++ b/modules/fish/testbeds/fish-nixos.nix @@ -1,7 +1,7 @@ { stylix.testbed.ui.command = { + terminal = true; text = "fish"; - useTerminal = true; }; programs.fish.enable = true; diff --git a/modules/foliate/testbeds/foliate.nix b/modules/foliate/testbeds/foliate.nix index 549faf928..5aa842ac1 100644 --- a/modules/foliate/testbeds/foliate.nix +++ b/modules/foliate/testbeds/foliate.nix @@ -1,17 +1,8 @@ -{ lib, pkgs, ... }: -let - package = pkgs.foliate; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "com.github.johnfactotum.Foliate"; - inherit package; - }; + stylix.testbed.ui.command.text = "foliate"; home-manager.sharedModules = lib.singleton { - programs.foliate = { - enable = true; - inherit package; - }; + programs.foliate.enable = true; }; } diff --git a/modules/foot/testbeds/foot.nix b/modules/foot/testbeds/foot.nix index 6e306c9c6..04e7821cf 100644 --- a/modules/foot/testbeds/foot.nix +++ b/modules/foot/testbeds/foot.nix @@ -1,17 +1,8 @@ -{ lib, pkgs, ... }: -let - package = pkgs.foot; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "foot"; - inherit package; - }; + stylix.testbed.ui.command.text = "foot"; home-manager.sharedModules = lib.singleton { - programs.foot = { - enable = true; - inherit package; - }; + programs.foot.enable = true; }; } diff --git a/modules/fuzzel/testbeds/fuzzel.nix b/modules/fuzzel/testbeds/fuzzel.nix index c371e7914..16e8d986a 100644 --- a/modules/fuzzel/testbeds/fuzzel.nix +++ b/modules/fuzzel/testbeds/fuzzel.nix @@ -1,8 +1,8 @@ { lib, ... }: { stylix.testbed.ui = { - graphicalEnvironment = "hyprland"; command.text = "fuzzel"; + graphicalEnvironment = "hyprland"; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/fzf/testbeds/fzf.nix b/modules/fzf/testbeds/fzf.nix index d17f32b28..f86c45315 100644 --- a/modules/fzf/testbeds/fzf.nix +++ b/modules/fzf/testbeds/fzf.nix @@ -1,8 +1,8 @@ -{ lib, pkgs, ... }: +{ lib, ... }: { stylix.testbed.ui.command = { - text = lib.getExe pkgs.fzf; - useTerminal = true; + terminal = true; + text = "fzf"; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/gedit/testbeds/gedit.nix b/modules/gedit/testbeds/gedit.nix index 3d988d607..98270cc37 100644 --- a/modules/gedit/testbeds/gedit.nix +++ b/modules/gedit/testbeds/gedit.nix @@ -1,5 +1,7 @@ { pkgs, ... }: { - stylix.testbed.ui.command.text = "gedit flake-parts/flake.nix"; - environment.systemPackages = [ pkgs.gedit ]; + stylix.testbed.ui.command = { + packages = [ pkgs.gedit ]; + text = "gedit flake-parts/flake.nix"; + }; } diff --git a/modules/ghostty/testbeds/ghostty.nix b/modules/ghostty/testbeds/ghostty.nix index 24cdf8d90..da191d123 100644 --- a/modules/ghostty/testbeds/ghostty.nix +++ b/modules/ghostty/testbeds/ghostty.nix @@ -1,17 +1,8 @@ -{ lib, pkgs, ... }: -let - package = pkgs.ghostty; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "com.mitchellh.ghostty"; - inherit package; - }; + stylix.testbed.ui.command.text = "ghostty"; home-manager.sharedModules = lib.singleton { - programs.ghostty = { - enable = true; - inherit package; - }; + programs.ghostty.enable = true; }; } diff --git a/modules/glance/testbeds/glance-hm.nix b/modules/glance/testbeds/glance-hm.nix index 264e2057e..9153d66e9 100644 --- a/modules/glance/testbeds/glance-hm.nix +++ b/modules/glance/testbeds/glance-hm.nix @@ -1,24 +1,17 @@ { lib, pkgs, ... }: let host = "127.0.0.1"; - - package = pkgs.wrapFirefox pkgs.firefox-unwrapped { - extraPolicies.OverrideFirstRunPage = "http://${host}:${toString port}"; - }; - port = 1234; in { - stylix.testbed.ui.application = { - name = "firefox"; - inherit package; - }; + stylix.testbed.ui.command.packages = lib.singleton ( + pkgs.wrapFirefox pkgs.firefox-unwrapped { + extraPolicies.OverrideFirstRunPage = "http://${host}:${toString port}"; + } + ); home-manager.sharedModules = lib.singleton { - programs.firefox = { - enable = true; - inherit package; - }; + programs.firefox.enable = true; services.glance = { enable = true; diff --git a/modules/glance/testbeds/glance-nixos.nix b/modules/glance/testbeds/glance-nixos.nix index ca39b2048..831231819 100644 --- a/modules/glance/testbeds/glance-nixos.nix +++ b/modules/glance/testbeds/glance-nixos.nix @@ -1,23 +1,16 @@ { lib, pkgs, ... }: let host = "127.0.0.1"; - - package = pkgs.wrapFirefox pkgs.firefox-unwrapped { - extraPolicies.OverrideFirstRunPage = "http://${host}:${toString port}"; - }; - port = 1234; in { - stylix.testbed.ui.application = { - name = "firefox"; - inherit package; - }; + stylix.testbed.ui.command.packages = lib.singleton ( + pkgs.wrapFirefox pkgs.firefox-unwrapped { + extraPolicies.OverrideFirstRunPage = "http://${host}:${toString port}"; + } + ); - programs.firefox = { - enable = true; - inherit package; - }; + programs.firefox.enable = true; services.glance = { enable = true; diff --git a/modules/gnome-text-editor/testbeds/gnome-text-editor.nix b/modules/gnome-text-editor/testbeds/gnome-text-editor.nix index 2022e2b20..6b3a08a52 100644 --- a/modules/gnome-text-editor/testbeds/gnome-text-editor.nix +++ b/modules/gnome-text-editor/testbeds/gnome-text-editor.nix @@ -1,5 +1,7 @@ { pkgs, ... }: { - stylix.testbed.ui.command.text = "gnome-text-editor flake-parts/flake.nix"; - environment.systemPackages = [ pkgs.gnome-text-editor ]; + stylix.testbed.ui.command = { + packages = [ pkgs.gnome-text-editor ]; + text = "gnome-text-editor flake-parts/flake.nix"; + }; } diff --git a/modules/halloy/testbeds/halloy.nix b/modules/halloy/testbeds/halloy.nix index 7ec264577..387d7f893 100644 --- a/modules/halloy/testbeds/halloy.nix +++ b/modules/halloy/testbeds/halloy.nix @@ -1,23 +1,15 @@ -{ pkgs, lib, ... }: -let - package = pkgs.halloy; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "org.squidowl.halloy"; - inherit package; - }; + stylix.testbed.ui.command.text = "halloy"; home-manager.sharedModules = lib.singleton { programs.halloy = { enable = true; - inherit package; - settings = { - servers.liberachat = { - nickname = "stylix-testbed"; - server = "irc.libera.chat"; - channels = [ "#halloy" ]; - }; + + settings.servers.liberachat = { + channels = [ "#halloy" ]; + nickname = "stylix-testbed"; + server = "irc.libera.chat"; }; }; }; diff --git a/modules/helix/testbeds/helix.nix b/modules/helix/testbeds/helix.nix index ddbe26f02..e5f9562be 100644 --- a/modules/helix/testbeds/helix.nix +++ b/modules/helix/testbeds/helix.nix @@ -1,8 +1,8 @@ { lib, ... }: { stylix.testbed.ui.command = { + terminal = true; text = "hx flake-parts/flake.nix"; - useTerminal = true; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/hyprland/testbeds/hyprland.nix b/modules/hyprland/testbeds/hyprland.nix index fd828867c..ecc571631 100644 --- a/modules/hyprland/testbeds/hyprland.nix +++ b/modules/hyprland/testbeds/hyprland.nix @@ -1,12 +1,7 @@ { pkgs, ... }: { stylix.testbed.ui = { + command.packages = [ pkgs.kitty ]; graphicalEnvironment = "hyprland"; - - # We need something to open a window so that we can check the window borders - application = { - name = "kitty"; - package = pkgs.kitty; - }; }; } diff --git a/modules/kde/testbeds/kde.nix b/modules/kde/testbeds/kde.nix index c9b8493b7..dc596fbd8 100644 --- a/modules/kde/testbeds/kde.nix +++ b/modules/kde/testbeds/kde.nix @@ -1,10 +1,9 @@ +{ lib, pkgs, ... }: { - lib, - ... -}: -{ - config = { - stylix.testbed.ui.graphicalEnvironment = "kde"; - services.displayManager.autoLogin.enable = lib.mkForce false; + stylix.testbed.ui = { + command.packages = [ pkgs.kitty ]; + graphicalEnvironment = "kde"; }; + + services.displayManager.autoLogin.enable = lib.mkForce false; } diff --git a/modules/kitty/testbeds/kitty.nix b/modules/kitty/testbeds/kitty.nix index 3173d4664..cbfc0b787 100644 --- a/modules/kitty/testbeds/kitty.nix +++ b/modules/kitty/testbeds/kitty.nix @@ -1,17 +1,8 @@ -{ lib, pkgs, ... }: -let - package = pkgs.kitty; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "kitty"; - inherit package; - }; + stylix.testbed.ui.command.text = "kitty"; home-manager.sharedModules = lib.singleton { - programs.kitty = { - enable = true; - inherit package; - }; + programs.kitty.enable = true; }; } diff --git a/modules/lazygit/testbeds/lazygit.nix b/modules/lazygit/testbeds/lazygit.nix index f734be61d..578c72fde 100644 --- a/modules/lazygit/testbeds/lazygit.nix +++ b/modules/lazygit/testbeds/lazygit.nix @@ -1,11 +1,8 @@ -{ lib, pkgs, ... }: +{ lib, ... }: { stylix.testbed.ui.command = { - text = '' - ${lib.getExe pkgs.git} init - ${lib.getExe pkgs.lazygit} - ''; - useTerminal = true; + terminal = true; + text = "git init && lazygit"; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/micro/testbeds/micro.nix b/modules/micro/testbeds/micro.nix index 5a7222903..39dbfc395 100644 --- a/modules/micro/testbeds/micro.nix +++ b/modules/micro/testbeds/micro.nix @@ -1,8 +1,8 @@ -{ lib, pkgs, ... }: +{ lib, ... }: { stylix.testbed.ui.command = { - text = "${lib.getExe pkgs.micro} flake-parts/flake.nix"; - useTerminal = true; + terminal = true; + text = "micro flake-parts/flake.nix"; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/mpv/testbeds/mpv-modernz.nix b/modules/mpv/testbeds/mpv-modernz.nix index fa6a7af64..d93952c32 100644 --- a/modules/mpv/testbeds/mpv-modernz.nix +++ b/modules/mpv/testbeds/mpv-modernz.nix @@ -1,17 +1,10 @@ { lib, pkgs, ... }: -let - package = pkgs.mpv; -in { - stylix.testbed.ui.application = { - name = "mpv"; - inherit package; - }; + stylix.testbed.ui.command.text = "mpv"; home-manager.sharedModules = lib.singleton { programs.mpv = { enable = true; - inherit package; scripts = [ pkgs.mpvScripts.modernz ]; }; }; diff --git a/modules/mpv/testbeds/mpv-uosc.nix b/modules/mpv/testbeds/mpv-uosc.nix index 254208577..24edf0485 100644 --- a/modules/mpv/testbeds/mpv-uosc.nix +++ b/modules/mpv/testbeds/mpv-uosc.nix @@ -1,17 +1,10 @@ { lib, pkgs, ... }: -let - package = pkgs.mpv; -in { - stylix.testbed.ui.application = { - name = "mpv"; - inherit package; - }; + stylix.testbed.ui.command.text = "mpv"; home-manager.sharedModules = lib.singleton { programs.mpv = { enable = true; - inherit package; scripts = [ pkgs.mpvScripts.uosc ]; }; }; diff --git a/modules/mpv/testbeds/mpv.nix b/modules/mpv/testbeds/mpv.nix index 46580bef4..09827fc06 100644 --- a/modules/mpv/testbeds/mpv.nix +++ b/modules/mpv/testbeds/mpv.nix @@ -1,17 +1,8 @@ -{ lib, pkgs, ... }: -let - package = pkgs.mpv; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "mpv"; - inherit package; - }; + stylix.testbed.ui.command.text = "mpv"; home-manager.sharedModules = lib.singleton { - programs.mpv = { - enable = true; - inherit package; - }; + programs.mpv.enable = true; }; } diff --git a/modules/ncspot/testbeds/ncspot.nix b/modules/ncspot/testbeds/ncspot.nix index 157abb61f..d76933b52 100644 --- a/modules/ncspot/testbeds/ncspot.nix +++ b/modules/ncspot/testbeds/ncspot.nix @@ -1,9 +1,10 @@ -{ pkgs, lib, ... }: +{ lib, ... }: { stylix.testbed.ui.command = { - text = lib.getExe pkgs.ncspot; - useTerminal = true; + terminal = true; + text = "ncspot"; }; + home-manager.sharedModules = lib.singleton { programs.ncspot.enable = true; }; diff --git a/modules/neovim/testbeds/neovide.nix b/modules/neovim/testbeds/neovide.nix index bbbabc6bb..8c946f519 100644 --- a/modules/neovim/testbeds/neovide.nix +++ b/modules/neovim/testbeds/neovide.nix @@ -1,13 +1,10 @@ -{ lib, pkgs, ... }: +{ lib, ... }: { stylix.testbed.ui.command.text = "neovide flake-parts/flake.nix"; home-manager.sharedModules = lib.singleton { programs = { - neovide = { - enable = true; - package = pkgs.neovide; - }; + neovide.enable = true; neovim.enable = true; }; }; diff --git a/modules/neovim/testbeds/neovim.nix b/modules/neovim/testbeds/neovim.nix index 823f1db7a..51bb05ab0 100644 --- a/modules/neovim/testbeds/neovim.nix +++ b/modules/neovim/testbeds/neovim.nix @@ -1,8 +1,8 @@ { lib, ... }: { stylix.testbed.ui.command = { + terminal = true; text = "nvim flake-parts/flake.nix"; - useTerminal = true; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/neovim/testbeds/nixvim.nix b/modules/neovim/testbeds/nixvim.nix index adc2364a0..0e45e71cb 100644 --- a/modules/neovim/testbeds/nixvim.nix +++ b/modules/neovim/testbeds/nixvim.nix @@ -1,7 +1,7 @@ { stylix.testbed.ui.command = { + terminal = true; text = "nvim flake-parts/flake.nix"; - useTerminal = true; }; programs.nixvim.enable = true; diff --git a/modules/neovim/testbeds/nvf.nix b/modules/neovim/testbeds/nvf.nix index 9bfd5e748..5b65a11b1 100644 --- a/modules/neovim/testbeds/nvf.nix +++ b/modules/neovim/testbeds/nvf.nix @@ -1,7 +1,7 @@ { stylix.testbed.ui.command = { + terminal = true; text = "nvim flake-parts/flake.nix"; - useTerminal = true; }; programs.nvf.enable = true; diff --git a/modules/neovim/testbeds/vim.nix b/modules/neovim/testbeds/vim.nix index 3bc449308..3eabe4be1 100644 --- a/modules/neovim/testbeds/vim.nix +++ b/modules/neovim/testbeds/vim.nix @@ -1,8 +1,8 @@ -{ lib, pkgs, ... }: +{ lib, ... }: { stylix.testbed.ui.command = { - text = "${lib.getExe pkgs.vim} flake-parts/flake.nix"; - useTerminal = true; + terminal = true; + text = "vim flake-parts/flake.nix"; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/nushell/testbeds/nushell.nix b/modules/nushell/testbeds/nushell.nix index b045f270c..1802629f0 100644 --- a/modules/nushell/testbeds/nushell.nix +++ b/modules/nushell/testbeds/nushell.nix @@ -1,8 +1,8 @@ { lib, ... }: { stylix.testbed.ui.command = { + terminal = true; text = "nu"; - useTerminal = true; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/qutebrowser/testbeds/qutebrowser.nix b/modules/qutebrowser/testbeds/qutebrowser.nix index e113de4be..7a18a77b9 100644 --- a/modules/qutebrowser/testbeds/qutebrowser.nix +++ b/modules/qutebrowser/testbeds/qutebrowser.nix @@ -1,17 +1,8 @@ -{ lib, pkgs, ... }: -let - package = pkgs.qutebrowser; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "org.qutebrowser.qutebrowser"; - inherit package; - }; + stylix.testbed.ui.command.text = "qutebrowser"; home-manager.sharedModules = lib.singleton { - programs.qutebrowser = { - enable = true; - inherit package; - }; + programs.qutebrowser.enable = true; }; } diff --git a/modules/rio/testbeds/rio.nix b/modules/rio/testbeds/rio.nix index 0f67e868f..82e4c8d23 100644 --- a/modules/rio/testbeds/rio.nix +++ b/modules/rio/testbeds/rio.nix @@ -1,17 +1,8 @@ -{ lib, pkgs, ... }: -let - package = pkgs.rio; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "rio"; - inherit package; - }; + stylix.testbed.ui.command.text = "rio"; home-manager.sharedModules = lib.singleton { - programs.rio = { - enable = true; - inherit package; - }; + programs.rio.enable = true; }; } diff --git a/modules/spicetify/testbeds/spicetify.nix b/modules/spicetify/testbeds/spicetify.nix index d5673f991..dfed52c94 100644 --- a/modules/spicetify/testbeds/spicetify.nix +++ b/modules/spicetify/testbeds/spicetify.nix @@ -1,24 +1,12 @@ -{ - lib, - pkgs, - config, - ... -}: +{ lib, pkgs, ... }: { stylix.testbed = { - # Spotify is not available on arm64. enable = lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.spotify; - - ui.command = { - text = lib.getExe config.programs.spicetify.spicedSpotify; - }; + ui.command.text = "spotify"; }; - programs.spicetify.enable = true; - nixpkgs.config.allowUnfreePredicate = - pkg: - builtins.elem (lib.getName pkg) [ - "spotify" - ]; + pkg: builtins.elem (lib.getName pkg) [ "spotify" ]; + + programs.spicetify.enable = true; } diff --git a/modules/starship/testbeds/starship.nix b/modules/starship/testbeds/starship.nix index 985de6293..b61008a60 100644 --- a/modules/starship/testbeds/starship.nix +++ b/modules/starship/testbeds/starship.nix @@ -1,21 +1,18 @@ -{ lib, pkgs, ... }: +{ lib, ... }: { stylix.testbed.ui.command = { - text = lib.getExe pkgs.bashInteractive; - useTerminal = true; + terminal = true; + text = "bash"; }; home-manager.sharedModules = lib.singleton { programs = { + bash.enable = true; + starship = { enable = true; - package = pkgs.starship; enableBashIntegration = true; }; - bash = { - enable = true; - package = pkgs.bashInteractive; - }; }; }; } diff --git a/modules/sxiv/testbeds/sxiv.nix b/modules/sxiv/testbeds/sxiv.nix index 28d545081..a670ba673 100644 --- a/modules/sxiv/testbeds/sxiv.nix +++ b/modules/sxiv/testbeds/sxiv.nix @@ -1,17 +1,17 @@ -{ lib, pkgs, ... }: -let - package = pkgs.nsxiv; -in +{ pkgs, ... }: { - stylix.testbed.ui.command.text = '' - # Xresources isn't loaded by default, so we force it - ${lib.getExe pkgs.xorg.xrdb} ~/.Xresources + stylix.testbed.ui.command = { + packages = with pkgs; [ + nsxiv + xorg.xrdb + ]; - ${lib.getExe package} \ - "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - ''; + text = '' + # Xresources isn't loaded by default, so we force it + xrdb ~/.Xresources - home-manager.sharedModules = lib.singleton { - home.packages = [ package ]; + nsxiv \ + "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg" + ''; }; } diff --git a/modules/tmux/testbeds/tmux.nix b/modules/tmux/testbeds/tmux.nix index fe9581ae0..b5d5b68fa 100644 --- a/modules/tmux/testbeds/tmux.nix +++ b/modules/tmux/testbeds/tmux.nix @@ -1,9 +1,10 @@ -{ pkgs, lib, ... }: +{ lib, ... }: { stylix.testbed.ui.command = { - text = lib.getExe pkgs.tmux; - useTerminal = true; + terminal = true; + text = "tmux"; }; + home-manager.sharedModules = lib.singleton { programs.tmux.enable = true; }; diff --git a/modules/waybar/testbeds/waybar.nix b/modules/waybar/testbeds/waybar.nix index 454c9c564..4713df5a2 100644 --- a/modules/waybar/testbeds/waybar.nix +++ b/modules/waybar/testbeds/waybar.nix @@ -1,22 +1,25 @@ { lib, ... }: { stylix.testbed.ui = { - graphicalEnvironment = "hyprland"; command.text = "waybar"; + graphicalEnvironment = "hyprland"; }; home-manager.sharedModules = lib.singleton { programs.waybar = { enable = true; + settings = lib.singleton { modules-left = [ "hyprland/workspaces" "hyprland/submap" "custom/media" ]; + modules-center = [ "hyprland/window" ]; + modules-right = [ "mpd" "idle_inhibitor" diff --git a/modules/wayprompt/testbeds/wayprompt.nix b/modules/wayprompt/testbeds/wayprompt.nix index c3067a76e..8cf18a2dd 100644 --- a/modules/wayprompt/testbeds/wayprompt.nix +++ b/modules/wayprompt/testbeds/wayprompt.nix @@ -1,8 +1,7 @@ { lib, ... }: { - stylix.testbed = { - ui.graphicalEnvironment = "hyprland"; - ui.command.text = '' + stylix.testbed.ui = { + command.text = '' wayprompt \ --get-pin \ --title "Wayprompt stylix test" \ @@ -11,6 +10,8 @@ --button-not-ok "Not okay" \ --button-cancel "Cancel" ''; + + graphicalEnvironment = "hyprland"; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/wezterm/testbeds/wezterm.nix b/modules/wezterm/testbeds/wezterm.nix index 7d8da2bd0..719fc16c6 100644 --- a/modules/wezterm/testbeds/wezterm.nix +++ b/modules/wezterm/testbeds/wezterm.nix @@ -1,17 +1,8 @@ -{ lib, pkgs, ... }: -let - package = pkgs.wezterm; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "org.wezfurlong.wezterm"; - inherit package; - }; + stylix.testbed.ui.command.text = "wezterm"; home-manager.sharedModules = lib.singleton { - programs.wezterm = { - enable = true; - inherit package; - }; + programs.wezterm.enable = true; }; } diff --git a/modules/wofi/testbeds/wofi.nix b/modules/wofi/testbeds/wofi.nix index dda49929f..132ea34a7 100644 --- a/modules/wofi/testbeds/wofi.nix +++ b/modules/wofi/testbeds/wofi.nix @@ -1,15 +1,8 @@ -{ lib, pkgs, ... }: -let - package = pkgs.wofi; -in +{ lib, ... }: { - stylix.testbed.ui.command.text = - "${lib.getExe package} --allow-images --show drun"; + stylix.testbed.ui.command.text = "wofi --allow-images --show drun"; home-manager.sharedModules = lib.singleton { - programs.wofi = { - enable = true; - inherit package; - }; + programs.wofi.enable = true; }; } diff --git a/modules/yazi/testbeds/yazi.nix b/modules/yazi/testbeds/yazi.nix index b0eafb91d..6eb57a374 100644 --- a/modules/yazi/testbeds/yazi.nix +++ b/modules/yazi/testbeds/yazi.nix @@ -1,21 +1,8 @@ -{ lib, pkgs, ... }: -let - package = pkgs.yazi; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "yazi"; - inherit package; - }; + stylix.testbed.ui.command.text = "yazi"; home-manager.sharedModules = lib.singleton { - programs.yazi = { - enable = true; - inherit package; - }; - - home.packages = [ - pkgs.nerd-fonts.fira-mono - ]; + programs.yazi.enable = true; }; } diff --git a/modules/zathura/testbeds/zathura.nix b/modules/zathura/testbeds/zathura.nix index 6c1ca6a43..c442d7145 100644 --- a/modules/zathura/testbeds/zathura.nix +++ b/modules/zathura/testbeds/zathura.nix @@ -1,17 +1,8 @@ -{ lib, pkgs, ... }: -let - package = pkgs.zathura; -in +{ lib, ... }: { - stylix.testbed.ui.application = { - name = "org.pwmt.zathura"; - inherit package; - }; + stylix.testbed.ui.command.text = "zathura"; home-manager.sharedModules = lib.singleton { - programs.zathura = { - enable = true; - inherit package; - }; + programs.zathura.enable = true; }; } diff --git a/modules/zed/testbeds/zed.nix b/modules/zed/testbeds/zed.nix index 6a31fd14e..b611f94b2 100644 --- a/modules/zed/testbeds/zed.nix +++ b/modules/zed/testbeds/zed.nix @@ -1,8 +1,6 @@ -{ lib, pkgs, ... }: +{ lib, ... }: { - stylix.testbed.ui.command = { - text = "${lib.getExe pkgs.zed-editor} flake-parts/flake.nix"; - }; + stylix.testbed.ui.command.text = "zeditor flake-parts/flake.nix"; home-manager.sharedModules = lib.singleton { programs.zed-editor.enable = true; diff --git a/modules/zellij/testbeds/zellij.nix b/modules/zellij/testbeds/zellij.nix index 40ff609ca..b6f5fb414 100644 --- a/modules/zellij/testbeds/zellij.nix +++ b/modules/zellij/testbeds/zellij.nix @@ -1,8 +1,8 @@ { lib, ... }: { stylix.testbed.ui.command = { + terminal = true; text = "zellij"; - useTerminal = true; }; home-manager.sharedModules = lib.singleton { diff --git a/modules/zen-browser/testbeds/zen-browser.nix b/modules/zen-browser/testbeds/zen-browser.nix index 118aedc34..602a316da 100644 --- a/modules/zen-browser/testbeds/zen-browser.nix +++ b/modules/zen-browser/testbeds/zen-browser.nix @@ -8,8 +8,10 @@ in home-manager.sharedModules = lib.singleton { programs.zen-browser = { enable = true; + profiles.${profileName} = { isDefault = true; + settings = { "app.normandy.first_run" = false; "zen.welcome-screen.seen" = true; diff --git a/stylix/testbed/modules/application.nix b/stylix/testbed/modules/application.nix index bab7e5eb0..f4ca76fb7 100644 --- a/stylix/testbed/modules/application.nix +++ b/stylix/testbed/modules/application.nix @@ -15,15 +15,16 @@ in enable = lib.mkOption { type = lib.types.bool; default = false; + example = true; description = '' Whether to enable a standard configuration for testing graphical applications. - This will automatically log in as the `${user.username}` user and launch - an application or command. + This will automatically log in as the `${user.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. ''; }; graphicalEnvironment = lib.mkOption { @@ -33,51 +34,34 @@ in default = "gnome"; description = "The graphical environment to use."; }; - application = lib.mkOption { - description = '' - Options defining an application to be launched using its provided - `.desktop` entry. - ''; + command = lib.mkOption { type = lib.types.nullOr ( lib.types.submodule { options = { - name = lib.mkOption { - type = lib.types.str; + packages = lib.mkOption { + type = lib.types.listOf lib.types.package; description = '' - The name of the desktop entry for the application, without the - `.desktop` extension. + Packages forwarded to `environment.systemPackages`. ''; + default = [ ]; }; - - package = lib.mkOption { - type = lib.types.package; + terminal = lib.mkOption { + type = lib.types.bool; description = '' - The package providing the binary and desktop entry of the - application being tested. + Whether to spawn a terminal when running the command. ''; + default = false; + example = true; }; - }; - } - ); - 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. + The command which will be run once the graphical + environment has loaded, which is deduced from + `config.stylix.testbed.ui.command.packages` when it + contains one package. ''; - }; - useTerminal = lib.mkOption { - type = lib.types.bool; - description = '' - Whether or not to spawn a terminal when running the command. - ''; - default = false; + default = ""; }; }; } @@ -97,46 +81,77 @@ in user = user.username; }; - # 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 = toString ( - pkgs.writeShellScript "startup" config.stylix.testbed.ui.command.text - ); - terminal = config.stylix.testbed.ui.command.useTerminal; - }; - } - ) - ++ lib.optional config.stylix.testbed.ui.sendNotifications ( - pkgs.makeAutostartItem { - name = "stylix-notification-check"; - package = pkgs.makeDesktopItem { - name = "stylix-notification-check"; - desktopName = "stylix-notification-check"; - terminal = false; - exec = pkgs.writeShellScript "stylix-send-notifications" ( + builtins.concatMap + ( + { + condition, + name, + text, + packages ? [ ], + terminal ? false, + }: + let + application = pkgs.writeShellApplication { + text = + if text != "" then + text + else if builtins.length packages != 1 then + throw "text cannot be deduced from packages: ${ + lib.generators.toPretty { } packages + }" + else + (builtins.head packages).meta.mainProgram; + + name = name'; + runtimeInputs = packages; + }; + + autostartItem = pkgs.makeAutostartItem { + name = name'; + package = desktopItem; + }; + + desktopItem = pkgs.makeDesktopItem { + inherit terminal; + + desktopName = name'; + exec = lib.getExe application; + name = name'; + }; + + name' = "stylix-testbed" + lib.optionalString (name != "") "-${name}"; + in + lib.optionals condition ( + [ + application + autostartItem + desktopItem + ] + ++ packages + ) + ) + [ + { + inherit (config.stylix.testbed.ui.command) packages terminal text; + + condition = config.stylix.testbed.ui.command != null; + name = ""; + } + { + condition = config.stylix.testbed.ui.sendNotifications; + name = "notification"; + packages = [ pkgs.libnotify ]; + + text = lib.concatMapStringsSep " && " - ( - urgency: "${lib.getExe pkgs.libnotify} --urgency ${urgency} ${urgency} urgency" - ) + (urgency: "notify-send --urgency ${urgency} ${urgency} urgency") [ "low" "normal" "critical" - ] - ); - }; - } - ) - ++ lib.optional (config.stylix.testbed.ui.application != null) ( - pkgs.makeAutostartItem { - inherit (config.stylix.testbed.ui.application) name package; - } - ); + ]; + } + ]; }; }