blob: 368022e1f97c1dc857aa58efe4e5c210cf3117a6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# kusanagi-only desktop extras. The shared niri/dark/audio/firefox base comes
# from ../../profiles/desktop.nix (imported in ./default.nix); this file holds
# the workstation's GNOME session, printing/scanning, pro-audio, richer fonts,
# and cursor theme. (Hardware-specific audio/NAS/server config lives in
# ./default.nix.)
{ pkgs, ... }:
{
# --- X11 + GNOME (alongside the niri session) ---
services.xserver.enable = true;
services.xserver.xkb = {
layout = "us";
variant = "";
};
services.displayManager.gdm.enable = false;
services.desktopManager.gnome.enable = true;
# --- Printing / discovery / disks ---
services.printing = {
enable = true;
drivers = with pkgs; [ gutenprint ];
};
# mDNS: printer discovery, and resolves kusanagi's *.local NAS names.
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
# prevent auto-mounting optical disks
services.udisks2.enable = true;
# --- Pro audio (extends the shared pipewire base) ---
security.rtkit.enable = true;
services.pipewire = {
alsa.support32Bit = true;
jack.enable = true;
wireplumber.enable = true;
};
# --- GPG: forward the ssh-agent socket (workstation signs/auths via GPG) ---
programs.gnupg.agent.enableSSHSupport = true;
# --- Graphics: 32-bit for Steam/Wine ---
hardware.graphics.enable32Bit = true;
# --- Fonts: workstation extras + defaults (base packages from shared) ---
fonts = {
packages = with pkgs; [
noto-fonts-cjk-sans
noto-fonts-cjk-serif
inter
ibm-plex
public-sans
];
fontconfig = {
defaultFonts = {
monospace = [
"Berkeley Mono"
"Liberation Mono"
"Symbols Nerd Font"
];
sansSerif = [
"Liberation Sans"
"Noto Sans"
];
serif = [ "Liberation Serif" ];
emoji = [ "Nerd Font Symbols Only" ];
};
# Force ui-sans-serif and system-ui to resolve correctly
localConf = ''
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<alias>
<family>system-ui</family>
<prefer>
<family>Liberation Sans</family>
</prefer>
</alias>
<alias>
<family>ui-sans-serif</family>
<prefer>
<family>Liberation Sans</family>
</prefer>
</alias>
</fontconfig>
'';
};
fontDir.enable = true;
};
# --- Cursor / renderer ---
environment.sessionVariables = {
GSK_RENDERER = "gl";
XCURSOR_THEME = "Bibata-Modern-Classic";
XCURSOR_SIZE = "24";
HYPRCURSOR_THEME = "Bibata-Modern-Classic";
HYPRCURSOR_SIZE = "24";
};
# --- User: desktop groups (niri essentials + printing). Hardware groups
# (cdrom/optical/sg/scanner) stay in ./default.nix. ---
users.users.henz.extraGroups = [
"audio"
"lp"
"input"
];
# --- Desktop tools specific to kusanagi (shared ones come from the profile) ---
environment.systemPackages = with pkgs; [
waybar
networkmanagerapplet
];
}
|