feat: implement the managed Hyprland desktop with Kitty and stable updates

This commit is contained in:
Coding Agent
2026-09-05 05:32:34 +00:00
parent 366d19a6b5
commit cb003093c2
17 changed files with 1177 additions and 95 deletions
+63
View File
@@ -0,0 +1,63 @@
# Disposable graphical audit. Test credentials/autologin NEVER reach the host.
{ pkgs, inputs }:
pkgs.testers.runNixOSTest {
name = "development-desktop";
node.pkgsReadOnly = false;
node.specialArgs = { inherit inputs; };
requiredFeatures.kvm = false;
qemu.package = pkgs.qemu;
qemu.forceAccel = false;
nodes.machine = { pkgs, ... }: {
imports = [
inputs.home-manager.nixosModules.home-manager
./users.nix
./tools.nix
./network.nix
./neovim.nix
./desktop.nix
./apps.nix
./workstation.nix
];
system.stateVersion = "26.05";
virtualisation = {
memorySize = 6144;
cores = 4;
resolution = {
x = 1920;
y = 1080;
};
qemu.options = [
"-vga none"
"-device virtio-gpu-pci,xres=1920,yres=1080"
];
};
environment.sessionVariables.LIBGL_ALWAYS_SOFTWARE = "1";
environment.systemPackages = [ pkgs.python3 ];
users.users.dev.hashedPasswordFile = toString (
pkgs.runCommand "test-only-password-hash" { nativeBuildInputs = [ pkgs.mkpasswd ]; } ''
mkpasswd --method=sha-512 --salt=nixostest desktop-test > "$out"
''
);
services.greetd.settings.initial_session = {
user = "dev";
command = "${pkgs.uwsm}/bin/uwsm start -e -D Hyprland hyprland.desktop";
};
services.pipewire.extraConfig.pipewire."99-test-audio"."context.objects" = [
{
factory = "adapter";
args = {
"factory.name" = "support.null-audio-sink";
"node.name" = "test-speakers";
"node.description" = "Test speakers";
"media.class" = "Audio/Sink";
"audio.position" = [
"FL"
"FR"
];
};
}
];
};
testScript = builtins.readFile ./desktop-test.py;
}