diff --git a/modules/alacritty/testbed.nix b/modules/alacritty/testbed.nix new file mode 100644 index 00000000..acc8d81c --- /dev/null +++ b/modules/alacritty/testbed.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: + +let package = pkgs.alacritty; + +in { + stylix.testbed.application = { + enable = true; + name = "Alacritty"; + inherit package; + }; + + home-manager.sharedModules = [{ + programs.alacritty = { + enable = true; + inherit package; + }; + }]; +} \ No newline at end of file diff --git a/modules/chromium/testbed.nix b/modules/chromium/testbed.nix new file mode 100644 index 00000000..31475acd --- /dev/null +++ b/modules/chromium/testbed.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +let package = pkgs.chromium; + +in { + stylix.testbed.application = { + enable = true; + name = "chromium-browser"; + inherit package; + }; + + environment.systemPackages = [ package ]; +} \ No newline at end of file diff --git a/modules/emacs/testbed.nix b/modules/emacs/testbed.nix new file mode 100644 index 00000000..c8812d56 --- /dev/null +++ b/modules/emacs/testbed.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: + +let package = pkgs.emacs; + +in { + stylix.testbed.application = { + enable = true; + name = "emacs"; + inherit package; + }; + + home-manager.sharedModules = [{ + programs.emacs = { + enable = true; + inherit package; + }; + }]; +} \ No newline at end of file diff --git a/modules/firefox/testbed.nix b/modules/firefox/testbed.nix new file mode 100644 index 00000000..770c5901 --- /dev/null +++ b/modules/firefox/testbed.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: + +let package = pkgs.firefox; + +in { + stylix.testbed.application = { + enable = true; + name = "firefox"; + inherit package; + }; + + home-manager.sharedModules = [{ + programs.firefox = { + enable = true; + inherit package; + profiles.stylix.isDefault = true; + }; + + stylix.targets.firefox.profileNames = [ "stylix" ]; + }]; +} diff --git a/modules/foot/testbed.nix b/modules/foot/testbed.nix new file mode 100644 index 00000000..da75cb2e --- /dev/null +++ b/modules/foot/testbed.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: + +let package = pkgs.foot; + +in { + stylix.testbed.application = { + enable = true; + name = "org.codeberg.dnkl.foot"; + inherit package; + }; + + home-manager.sharedModules = [{ + programs.foot = { + enable = true; + inherit package; + }; + }]; +} \ No newline at end of file diff --git a/modules/gedit/testbed.nix b/modules/gedit/testbed.nix new file mode 100644 index 00000000..c645a31d --- /dev/null +++ b/modules/gedit/testbed.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +let package = pkgs.gedit; + +in { + stylix.testbed.application = { + enable = true; + name = "org.gnome.gedit"; + inherit package; + }; + + environment.systemPackages = [ package ]; +} \ No newline at end of file diff --git a/modules/kitty/testbed.nix b/modules/kitty/testbed.nix new file mode 100644 index 00000000..225ccd62 --- /dev/null +++ b/modules/kitty/testbed.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: + +let package = pkgs.kitty; + +in { + stylix.testbed.application = { + enable = true; + name = "kitty"; + inherit package; + }; + + home-manager.sharedModules = [{ + programs.kitty = { + enable = true; + inherit package; + }; + }]; +} \ No newline at end of file diff --git a/modules/qutebrowser/testbed.nix b/modules/qutebrowser/testbed.nix new file mode 100644 index 00000000..08b3e89e --- /dev/null +++ b/modules/qutebrowser/testbed.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: + +let package = pkgs.qutebrowser; + +in { + stylix.testbed.application = { + enable = true; + name = "org.qutebrowser.qutebrowser"; + inherit package; + }; + + home-manager.sharedModules = [{ + programs.qutebrowser = { + enable = true; + inherit package; + }; + }]; +} \ No newline at end of file diff --git a/modules/vesktop/testbed.nix b/modules/vesktop/testbed.nix new file mode 100644 index 00000000..68b8c3e0 --- /dev/null +++ b/modules/vesktop/testbed.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +let package = pkgs.vesktop; + +in { + stylix.testbed.application = { + enable = true; + name = "vesktop"; + inherit package; + }; + + environment.systemPackages = [ package ]; +} \ No newline at end of file diff --git a/modules/vscode/testbed.nix b/modules/vscode/testbed.nix new file mode 100644 index 00000000..671fa52d --- /dev/null +++ b/modules/vscode/testbed.nix @@ -0,0 +1,19 @@ +{ pkgs, ... }: + +# We are using VSCodium because VSCode is an unfree package +let package = pkgs.vscodium; + +in { + stylix.testbed.application = { + enable = true; + name = "codium"; + inherit package; + }; + + home-manager.sharedModules = [{ + programs.vscode = { + enable = true; + inherit package; + }; + }]; +} \ No newline at end of file diff --git a/modules/wezterm/testbed.nix b/modules/wezterm/testbed.nix new file mode 100644 index 00000000..6c7f45f2 --- /dev/null +++ b/modules/wezterm/testbed.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: + +let package = pkgs.wezterm; + +in { + stylix.testbed.application = { + enable = true; + name = "org.wezfurlong.wezterm"; + inherit package; + }; + + home-manager.sharedModules = [{ + programs.wezterm = { + enable = true; + inherit package; + }; + }]; +} \ No newline at end of file diff --git a/modules/zathura/testbed.nix b/modules/zathura/testbed.nix new file mode 100644 index 00000000..7e61e507 --- /dev/null +++ b/modules/zathura/testbed.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: + +let package = pkgs.zathura; + +in { + stylix.testbed.application = { + enable = true; + name = "org.pwmt.zathura"; + inherit package; + }; + + home-manager.sharedModules = [{ + programs.zathura = { + enable = true; + inherit package; + }; + }]; +} \ No newline at end of file diff --git a/stylix/testbed.nix b/stylix/testbed.nix index c5b7c1ae..7fc73837 100644 --- a/stylix/testbed.nix +++ b/stylix/testbed.nix @@ -25,6 +25,62 @@ 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. + + This will automatically log in as the `${username}` user, then launch + the application from its desktop entry. + + This is currently based on GNOME, but the specific desktop environment + used may change in the future. + ''; + }; + + 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. + ''; + }; + }; + + config = lib.mkIf config.stylix.testbed.application.enable { + services.xserver = { + enable = true; + displayManager.gdm.enable = true; + desktopManager.gnome.enable = true; + }; + + services.displayManager.autoLogin = { + enable = true; + user = username; + }; + + # 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; + }) + ]; + }; + }; + autoload = builtins.concatLists (lib.mapAttrsToList (name: _: @@ -47,6 +103,7 @@ let modules = [ commonModule + applicationModule inputs.self.nixosModules.stylix inputs.home-manager.nixosModules.home-manager testbed.module