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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
# Minimal niri desktop for enzo — deliberately separate from ../../profiles/desktop.nix
# so the laptop can grow on its own terms. Add to it (or switch to the shared
# profile) whenever you want more.
{ pkgs, ... }:
{
# --- Session / login ---
programs.niri.enable = true;
programs.dconf.enable = true;
services.greetd = {
enable = true;
settings.default_session = {
command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd niri-session";
user = "greeter";
};
};
# Let tuigreet write its cache (for --remember).
systemd.services.greetd.serviceConfig = {
Type = "idle";
StandardInput = "tty";
StandardOutput = "tty";
StandardError = "journal";
TTYReset = true;
TTYVHangup = true;
TTYVTDisallocate = true;
};
# --- Graphics ---
hardware.graphics.enable = true;
# --- Audio (playback only; no rtkit/jack — enzo isn't for recording).
# If you ever hear dropouts under load, add: security.rtkit.enable = true;
services.pulseaudio.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
# --- Fonts (minimal) ---
# TODO move to common
fonts = {
enableDefaultPackages = true;
packages = with pkgs; [
noto-fonts
nerd-fonts.symbols-only
adwaita-fonts
];
fontconfig = {
enable = true;
defaultFonts = {
monospace = [ "Adwaita Mono" ];
};
};
};
environment.sessionVariables = {
XCURSOR_THEME = "Adwaita";
XCURSOR_SIZE = "24";
};
# Cursor theme referenced by XCURSOR_THEME / niri's xcursor-theme. Without this
# package the Adwaita cursor files aren't on disk, so named shapes (e.g. the
# link "pointer"/hand) fail to load and the cursor never changes on hover.
environment.systemPackages = [ pkgs.adwaita-icon-theme ];
# --- User: groups + niri essentials ---
users.users.hwebs.extraGroups = [
"audio"
"input"
];
# Firefox with declarative customizations: dark chrome, blank home/new-tab,
# and toolbars stripped via userChrome.css. Settings here are authoritative on
# each rebuild; anything not listed stays adjustable in the UI.
programs.firefox = {
enable = true;
profiles.default = {
isDefault = true;
settings = {
# Dark theme (UI chrome + toolbars)
"ui.systemUsesDarkTheme" = 1;
"browser.theme.content-theme" = 0;
"browser.theme.toolbar-theme" = 0;
# Blank home page + blank new tab
"browser.startup.homepage" = "about:blank";
"browser.startup.page" = 0; # 0 = blank on startup
"browser.newtabpage.enabled" = false;
# Required for userChrome.css below to load
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
};
# Toolbar removal. Tweak/uncomment to taste.
userChrome = ''
/* Bookmarks toolbar */
#PersonalToolbar { visibility: collapse !important; }
/* Whole nav + tab strip (uncomment for a truly chromeless window) */
/* #navigator-toolbox { visibility: collapse !important; } */
'';
};
};
users.users.hwebs.packages = with pkgs; [
ghostty # terminal
fuzzel # launcher
swaybg # wallpaper
xwayland-satellite # run X11 apps under niri
mako # notifications
libnotify # notify-send
yambar # text status bar
gnupg # gpg
pinentry-gnome3 # passphrase prompt for the gpg agent
];
# --- GPG ---
# Agent + a GTK pinentry (works under niri). enableSSHSupport is left off so
# gpg-agent doesn't hijack the ssh-agent socket for your existing SSH key;
# turn it on only if you sign in via a GPG auth subkey.
programs.gnupg.agent.enable = true;
# --- Console / greeter font (HiDPI panel) ---
# The eDP panel is high-density, so the kernel VT and tuigreet render with a
# tiny 8x16 font. A large Terminus bitmap font makes the TTY and the greeter
# legible; earlySetup applies it from initrd so it's big from the first frame.
# Sizes: ter-v{16,18,20,22,24,28,32}n — bump/drop to taste.
console = {
earlySetup = true;
packages = [ pkgs.terminus_font ];
font = "ter-v32n";
};
}
|