mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-04-30 01:22:06 -04:00
108 lines
3.1 KiB
Nix
108 lines
3.1 KiB
Nix
{
|
|
self,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
homeManagerNixosModule =
|
|
(fetchTarball {
|
|
url = "https://github.com/nix-community/home-manager/archive/e82d4a4ecd18363aa2054cbaa3e32e4134c3dbf4.tar.gz";
|
|
sha256 = "sha256-ZTYDofOM3/PJhRF1EuBh6uibm+DmkhU7Wor6mMN7YTc=";
|
|
})
|
|
+ "/nixos";
|
|
in
|
|
pkgs.testers.runNixOSTest {
|
|
name = "dms-home-manager-module";
|
|
|
|
nodes.machine = {
|
|
...
|
|
}: {
|
|
imports = [
|
|
homeManagerNixosModule
|
|
];
|
|
|
|
users.users.danklinux = {
|
|
isNormalUser = true;
|
|
createHome = true;
|
|
home = "/home/danklinux";
|
|
extraGroups = [ "wheel" ];
|
|
};
|
|
|
|
home-manager.useGlobalPkgs = true;
|
|
home-manager.useUserPackages = true;
|
|
|
|
home-manager.users.danklinux = {
|
|
pkgs,
|
|
...
|
|
}: {
|
|
imports = [
|
|
self.homeModules.dank-material-shell
|
|
];
|
|
|
|
home.username = "danklinux";
|
|
home.homeDirectory = "/home/danklinux";
|
|
home.stateVersion = "25.11";
|
|
|
|
programs.dank-material-shell = {
|
|
enable = true;
|
|
systemd = {
|
|
enable = true;
|
|
target = "default.target";
|
|
};
|
|
|
|
settings = {
|
|
theme = "integration-test";
|
|
};
|
|
|
|
clipboardSettings = {
|
|
maxItems = 10;
|
|
};
|
|
|
|
session = {
|
|
startedFrom = "nixos-test";
|
|
};
|
|
|
|
plugins.TestPlugin = {
|
|
enable = true;
|
|
src = pkgs.runCommand "dms-test-plugin" { } ''
|
|
mkdir -p "$out"
|
|
echo plugin > "$out/plugin.txt"
|
|
'';
|
|
settings = {
|
|
enabled = true;
|
|
source = "test";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
system.stateVersion = "25.11";
|
|
};
|
|
|
|
testScript = ''
|
|
import json
|
|
|
|
machine.wait_for_unit("multi-user.target")
|
|
|
|
machine.succeed("su -- danklinux -c 'command -v dms'")
|
|
machine.succeed("su -- danklinux -c 'test -f ~/.config/DankMaterialShell/settings.json'")
|
|
machine.succeed("su -- danklinux -c 'test -f ~/.config/DankMaterialShell/clsettings.json'")
|
|
machine.succeed("su -- danklinux -c 'test -f ~/.config/DankMaterialShell/plugin_settings.json'")
|
|
machine.succeed("su -- danklinux -c 'test -e ~/.config/DankMaterialShell/plugins/TestPlugin'")
|
|
machine.succeed("su -- danklinux -c 'test -f ~/.local/state/DankMaterialShell/session.json'")
|
|
|
|
settings = json.loads(machine.succeed("su -- danklinux -c 'cat ~/.config/DankMaterialShell/settings.json'"))
|
|
clipboard = json.loads(machine.succeed("su -- danklinux -c 'cat ~/.config/DankMaterialShell/clsettings.json'"))
|
|
session = json.loads(machine.succeed("su -- danklinux -c 'cat ~/.local/state/DankMaterialShell/session.json'"))
|
|
plugins = json.loads(machine.succeed("su -- danklinux -c 'cat ~/.config/DankMaterialShell/plugin_settings.json'"))
|
|
doctor = json.loads(machine.succeed("su -- danklinux -c 'dms doctor --json'"))
|
|
|
|
t.assertEqual(settings["theme"], "integration-test")
|
|
t.assertEqual(clipboard["maxItems"], 10)
|
|
t.assertEqual(session["startedFrom"], "nixos-test")
|
|
t.assertTrue(plugins["TestPlugin"]["enabled"])
|
|
t.assertEqual(plugins["TestPlugin"]["source"], "test")
|
|
t.assertIsInstance(doctor.get("results"), list)
|
|
'';
|
|
}
|