This commit is contained in:
2026-02-23 00:52:39 +01:00
parent 5b19dec3c3
commit 3b6f4c7f28
6 changed files with 265 additions and 0 deletions

View File

@@ -0,0 +1,132 @@
{
pkgs,
lib,
inputs,
...
}:
{
imports = [
./hardware-configuration.nix
inputs.self.nixosModules.vm-guest
inputs.self.nixosModules.desktop
inputs.self.nixosModules.zsh
];
vm-guest.enable = true;
desktop.enable = true;
zsh.enable = true;
programs.labwc.enable = true;
# labwc stacking compositor with auto-login
services.greetd =
let
labwc-session = pkgs.writeShellScript "labwc-session" ''
export XDG_SESSION_TYPE=wayland
export XDG_CURRENT_DESKTOP=labwc:wlroots
# software renderer for qemu virtio-vga
export WLR_RENDERER=pixman
export WLR_DRM_NO_ATOMIC=1
exec ${pkgs.labwc}/bin/labwc
'';
in
{
enable = true;
settings = {
default_session = {
command = labwc-session;
user = "gorazd";
};
initial_session = {
command = labwc-session;
user = "gorazd";
};
};
};
users = {
groups.gorazd = {
gid = 1000;
};
users.gorazd = {
group = "gorazd";
uid = 1000;
isNormalUser = true;
home = "/home/gorazd";
createHome = true;
password = "sandbox";
extraGroups = [
"wheel"
"users"
];
};
};
# 9p mounts for host files
fileSystems."/home/gorazd/projects" = {
device = "projects";
fsType = "9p";
options = [
"trans=virtio"
"version=9p2000.L"
"msize=65536"
"nofail"
];
};
fileSystems."/mnt/host-claude" = {
device = "hostclaude";
fsType = "9p";
options = [
"trans=virtio"
"version=9p2000.L"
"msize=65536"
"nofail"
];
};
fileSystems."/mnt/host-home" = {
device = "hosthome";
fsType = "9p";
options = [
"trans=virtio"
"version=9p2000.L"
"msize=65536"
"nofail"
"ro"
];
};
# pre-auth claude-code from host config
systemd.services.claude-auth = {
description = "Copy claude-code credentials from host mount";
after = [
"mnt-host\\x2dclaude.mount"
"mnt-host\\x2dhome.mount"
];
requires = [
"mnt-host\\x2dclaude.mount"
"mnt-host\\x2dhome.mount"
];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = pkgs.writeShellScript "claude-auth" ''
mkdir -p /home/gorazd/.claude
cp -a /mnt/host-claude/. /home/gorazd/.claude/
cp /mnt/host-home/.claude.json /home/gorazd/.claude.json || true
chown -R gorazd:gorazd /home/gorazd/.claude /home/gorazd/.claude.json
'';
};
};
environment.systemPackages = with pkgs; [
claude-code
labwc
sfwbar
foot
firefox
];
system.stateVersion = "25.11";
}