1{
2 pkgs,
3 config,
4 lib,
5 ...
6}: {
7 imports = [./gnome];
8
9 options.myNixOS.desktop.enable = lib.mkOption {
10 default =
11 config.myNixOS.desktop.gnome.enable or config.myNixOS.desktop.hyprland.enable
12 or config.myNixOS.desktop.kde.enable;
13 description = "Desktop environment configuration.";
14 type = lib.types.bool;
15 };
16
17 config = lib.mkIf config.myNixOS.desktop.enable {
18 boot = {
19 consoleLogLevel = 0;
20 initrd.verbose = false;
21 plymouth.enable = true;
22 };
23
24 environment = {
25 sessionVariables.NIXOS_OZONE_WL = "1";
26
27 # stem darkening for prettier fonts
28 variables = {
29 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";
30 QT_NO_SYNTHESIZED_BOLD = 1;
31 };
32 };
33
34 # other font settings
35 fonts = {
36 fontconfig = {
37 enable = true;
38 includeUserConf = false;
39 useEmbeddedBitmaps = true;
40 subpixel = {
41 lcdfilter = "none";
42 rgba = "none";
43 };
44 antialias = true;
45 hinting = {
46 enable = true;
47 style = "slight";
48 autohint = false;
49 };
50 };
51
52 packages = with pkgs; [
53 noto-fonts
54 noto-fonts-cjk-sans
55 noto-fonts-emoji
56 noto-fonts-color-emoji
57 nerd-fonts.jetbrains-mono
58 ];
59 };
60
61 home-manager.sharedModules = [
62 {
63 config.myHome.desktop.enable = true;
64 }
65 ];
66
67 programs.system-config-printer.enable = true;
68
69 services = {
70 avahi = {
71 enable = true;
72 nssmdns4 = true;
73 openFirewall = true;
74
75 publish = {
76 enable = true;
77 addresses = true;
78 userServices = true;
79 workstation = true;
80 };
81 };
82
83 gnome.gnome-keyring.enable = true;
84 gvfs.enable = true; # Mount, trash, etc.
85 libinput.enable = true;
86
87 pipewire = {
88 enable = true;
89
90 alsa = {
91 enable = true;
92 support32Bit = true;
93 };
94
95 pulse.enable = true;
96 };
97
98 printing.enable = false;
99
100 pulseaudio = {
101 support32Bit = true;
102 };
103
104 system-config-printer.enable = true;
105
106 xserver = {
107 enable = true;
108 excludePackages = with pkgs; [xterm];
109 };
110 };
111
112 system.nixos.tags = ["desktop"];
113 };
114}