Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

treewide: add application testbeds #612

Merged
merged 13 commits into from
Dec 29, 2024
18 changes: 18 additions & 0 deletions modules/alacritty/testbed.nix
Original file line number Diff line number Diff line change
@@ -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;
};
}];
}
13 changes: 13 additions & 0 deletions modules/chromium/testbed.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{ pkgs, ... }:

let package = pkgs.chromium;

in {
stylix.testbed.application = {
enable = true;
name = "chromium-browser";
inherit package;
};

environment.systemPackages = [ package ];
}
18 changes: 18 additions & 0 deletions modules/emacs/testbed.nix
Original file line number Diff line number Diff line change
@@ -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;
};
}];
}
21 changes: 21 additions & 0 deletions modules/firefox/testbed.nix
Original file line number Diff line number Diff line change
@@ -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" ];
}];
}
18 changes: 18 additions & 0 deletions modules/foot/testbed.nix
Original file line number Diff line number Diff line change
@@ -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;
};
}];
}
13 changes: 13 additions & 0 deletions modules/gedit/testbed.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{ pkgs, ... }:

let package = pkgs.gedit;

in {
stylix.testbed.application = {
enable = true;
name = "org.gnome.gedit";
inherit package;
};

environment.systemPackages = [ package ];
}
18 changes: 18 additions & 0 deletions modules/kitty/testbed.nix
Original file line number Diff line number Diff line change
@@ -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;
};
}];
}
18 changes: 18 additions & 0 deletions modules/qutebrowser/testbed.nix
Original file line number Diff line number Diff line change
@@ -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;
};
}];
}
13 changes: 13 additions & 0 deletions modules/vesktop/testbed.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{ pkgs, ... }:

let package = pkgs.vesktop;

in {
stylix.testbed.application = {
enable = true;
name = "vesktop";
inherit package;
};

environment.systemPackages = [ package ];
}
19 changes: 19 additions & 0 deletions modules/vscode/testbed.nix
Original file line number Diff line number Diff line change
@@ -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;
};
}];
}
18 changes: 18 additions & 0 deletions modules/wezterm/testbed.nix
Original file line number Diff line number Diff line change
@@ -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;
};
}];
}
18 changes: 18 additions & 0 deletions modules/zathura/testbed.nix
Original file line number Diff line number Diff line change
@@ -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;
};
}];
}
57 changes: 57 additions & 0 deletions stylix/testbed.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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: _:
Expand All @@ -47,6 +103,7 @@ let

modules = [
commonModule
applicationModule
inputs.self.nixosModules.stylix
inputs.home-manager.nixosModules.home-manager
testbed.module
Expand Down
Loading