1{
2 pkgs,
3 config,
4 lib,
5 ...
6}: {
7 imports = [
8 ./gnome
9 ./plasma
10 ];
11
12 options.myNixOS.desktop.enable = lib.mkOption {
13 default =
14 config.myNixOS.desktop.gnome.enable or config.myNixOS.desktop.hyprland.enable
15 or config.myNixOS.desktop.kde.enable;
16 description = "Desktop environment configuration.";
17 type = lib.types.bool;
18 };
19
20 config = lib.mkIf config.myNixOS.desktop.enable {
21 boot = {
22 consoleLogLevel = 0;
23 initrd.verbose = false;
24 plymouth.enable = true;
25 };
26
27 environment = {
28 sessionVariables.NIXOS_OZONE_WL = "1";
29
30 # stem darkening for prettier fonts
31 variables = {
32 FREETYPE_PROPERTIES = "autofitter:no-stem-darkening=0 autofitter:darkening-parameters=500,0,1000,500,2500,500,4000,0 cff:no-stem-darkening=0 type1:no-stem-darkening=0 t1cid:no-stem-darkening=0";
33 QT_NO_SYNTHESIZED_BOLD = 1;
34 };
35 };
36
37 # other font settings
38 fonts = {
39 fontconfig = {
40 enable = true;
41 includeUserConf = true;
42 subpixel = {
43 lcdfilter = "none";
44 rgba = "none";
45 };
46 antialias = true;
47 hinting = {
48 enable = true;
49 style = "slight";
50 autohint = false;
51 };
52
53 # have i told you how much i despise fontconfig. literally zero reason to pick bitmap fonts over noto fonts but it always does.
54 localConf = ''
55 <?xml version="1.0"?>
56 <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
57 <fontconfig>
58 <description>Reject bitmap fonts except bitmap emoji fonts</description>
59 <!-- Reject bitmap fonts -->
60 <selectfont>
61 <rejectfont>
62 <pattern>
63 <patelt name="outline"><bool>false</bool></patelt>
64 <patelt name="scalable"><bool>false</bool></patelt>
65 </pattern>
66 </rejectfont>
67 </selectfont>
68 </fontconfig>
69 '';
70 };
71
72 packages = with pkgs; [
73 noto-fonts
74 noto-fonts-cjk-sans
75 noto-fonts-emoji
76 noto-fonts-color-emoji
77 nerd-fonts.jetbrains-mono
78 ];
79 };
80
81 home-manager.sharedModules = [
82 {
83 config.myHome.desktop.enable = true;
84 }
85 ];
86
87 programs.system-config-printer.enable = true;
88
89 services = {
90 avahi = {
91 enable = true;
92 nssmdns4 = true;
93 openFirewall = true;
94
95 publish = {
96 enable = true;
97 addresses = true;
98 userServices = true;
99 workstation = true;
100 };
101 };
102
103 gnome.gnome-keyring.enable = true;
104 gvfs.enable = true; # Mount, trash, etc.
105 libinput.enable = true;
106
107 pipewire = {
108 enable = true;
109
110 alsa = {
111 enable = true;
112 support32Bit = true;
113 };
114
115 pulse.enable = true;
116 };
117
118 printing.enable = false;
119
120 pulseaudio = {
121 support32Bit = true;
122 };
123
124 system-config-printer.enable = true;
125
126 xserver = {
127 enable = true;
128 excludePackages = with pkgs; [xterm];
129 };
130 };
131
132 system.nixos.tags = ["desktop"];
133 };
134}