133 lines
2.7 KiB
Nix
133 lines
2.7 KiB
Nix
{
|
|
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";
|
|
}
|