From 267cf91e0340076e1057cb14930fa8437f591b5a Mon Sep 17 00:00:00 2001 From: Daniel Thwaites Date: Mon, 22 Apr 2024 14:37:29 +0100 Subject: [PATCH] doc: add documentation for testbeds (#347) Co-authored-by: NAHO <90870942+trueNAHO@users.noreply.github.com> --- docs/src/SUMMARY.md | 1 + docs/src/testbed-gnome-dark.png | Bin 0 -> 31453 bytes docs/src/testbeds.md | 83 ++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 docs/src/testbed-gnome-dark.png create mode 100644 docs/src/testbeds.md diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md index 46f8b062..02181792 100644 --- a/docs/src/SUMMARY.md +++ b/docs/src/SUMMARY.md @@ -15,4 +15,5 @@ - [Contributing](contributing.md) - [Adding modules](modules.md) +- [Testbeds](testbeds.md) - [Style guide](styling.md) diff --git a/docs/src/testbed-gnome-dark.png b/docs/src/testbed-gnome-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc5c4abc6514e2be3e41d5f3d3b9eb36698d8d3 GIT binary patch literal 31453 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/src/testbeds.md b/docs/src/testbeds.md new file mode 100644 index 00000000..d362ec48 --- /dev/null +++ b/docs/src/testbeds.md @@ -0,0 +1,83 @@ +# Testbeds + +Stylix provides a suite of virtual machines which can be used to test and +preview themes without installing the target to your live system. + +These can be particularly helpful for: + +- Working on targets before the login screen, since you can avoid closing + your editor to see the result. +- Developing for a different desktop environment than the one you normally use. +- Reducing the risk of breaking your system while reviewing pull requests. + +Testbeds are also built by GitHub Actions for every pull request. This is less +beneficial compared to running them yourself, since it cannot visually check +the theme, however it can catch build failures which may have been missed +otherwise. + +## Creation + +New testbeds are defined by creating a file called `testbed.nix` within the +folder for the corresponding target. This file will automatically be loaded +as a NixOS module, with options such as `stylix.image` already defined. +The module should include any options necessary to install the target and +any supporting software - for example, a window manager. + +If the target can only be used through Home Manager, you can write a +Home Manager module within the NixOS module using the following format: + +```nix +{ + home-manager.sharedModules = [{ + # Write Home Manager options here + }]; +} +``` + +Using `home-manager.sharedModules` is preferred over `home-manager.users.guest` +since it allows us to easily change the username or add additional users in +the future. + +Once the module is complete, use `git add` to track the file, then the new +packages will be [available to use](#usage). + +## Usage + +You can list the available testbeds by running this command from anywhere +within the repository: + +```console +user@host:~$ nix flake show +github:danth/stylix +└───packages + └───x86_64-linux + ├───docs: package 'stylix-book' + ├───palette-generator: package 'palette-generator' + ├───testbed-gnome-dark: package 'testbed-gnome-dark' + ├───testbed-gnome-light: package 'testbed-gnome-light' + ├───testbed-kde-dark: package 'testbed-kde-dark' + └───testbed-kde-light: package 'testbed-kde-light' +``` + +(This has been edited down to only the relevant parts.) + +To start a testbed, each of which is named in the format +`testbed-«target»-«polarity»`, run the following command: + +```console +user@host:~$ nix run .#testbed-«target»-«polarity» +``` + +Any package with a name not fitting the given format is not a testbed, +and may behave differently with this command, or not work at all. + +Once the virtual machine starts, a window should open, similar to the screenshot +below. The contents of the virtual machine will vary depending on the target you +selected earlier. + +![GDM login screen with a dark background color and showing a guest user](testbed-gnome-dark.png) + +If the testbed includes a login screen, the guest user should log in +automatically when selected. Depending on the software used, you may still be +presented with a password prompt - in which case you can leave it blank and +proceed by pressing enter.