main
1{
2 desktop,
3 config,
4 pkgs,
5 lib,
6 ...
7}:
8{
9 imports = [
10 (./. + "/${desktop}.nix")
11
12 ../programs/nix-ld.nix
13 ../services/pipewire.nix
14 ../hardware/yubikey.nix
15 ];
16 # Enable Plymouth and surpress some logs by default.
17 boot = {
18 initrd.systemd.enable = true;
19 plymouth.enable = true;
20 kernelParams = [
21 # The 'splash' arg is included by the plymouth option
22 "quiet"
23 "loglevel=3"
24 "rd.udev.log_priority=3"
25 "vt.global_cursor_default=0"
26 ];
27 };
28
29 hardware.graphics.enable = true;
30
31 # Enable location services
32 location.provider = "geoclue2";
33
34 environment.systemPackages = with pkgs; [
35 bat # cat
36 cyme # lsusb
37 dig
38 eza # ls
39 fd # find
40 duf # df
41 ripgrep
42 desktop-file-utils
43 ];
44
45 fonts = {
46 fontDir.enable = true;
47 enableGhostscriptFonts = true;
48 packages = with pkgs; [
49 # cascadia-code
50 corefonts
51 dejavu_fonts
52 # emojione
53 feh
54 # fira
55 # fira-code
56 # fira-code-symbols
57 # fira-mono
58 font-awesome
59 go-font
60 hack-font
61 # inconsolata
62 jetbrains-mono
63 liberation_ttf
64 monaspace
65 nerd-fonts.jetbrains-mono
66 nerd-fonts.monaspace
67 # nerd-fonts.inconsolata
68 # nerd-fonts.fira-code
69 # nerd-fonts.fira-mono
70 # nerd-fonts.caskaydia-cove
71 # nerd-fonts.caskaydia-mono
72 nerd-fonts.overpass
73 nerd-fonts.ubuntu
74 nerd-fonts.ubuntu-mono
75 nerd-fonts.ubuntu-sans
76 noto-fonts
77 noto-fonts-cjk-sans
78 noto-fonts-color-emoji
79 overpass
80 symbola
81 twemoji-color-font
82 ubuntu-classic
83 unifont
84 recursive
85 # Maple Mono (Ligature TTF unhinted)
86 maple-mono.truetype
87 # Maple Mono NF (Ligature unhinted)
88 maple-mono.NF-unhinted
89 # Maple Mono NF CN (Ligature unhinted)
90 maple-mono.NF-CN-unhinted
91 ];
92
93 # Use fonts specified by user rather than default ones
94 enableDefaultPackages = false;
95
96 # TODO configure thoses
97 # fontconfig = {
98 # enable = true;
99 # defaultFonts = {
100 # serif = [
101 # "${theme.fonts.default.name}"
102 # "${theme.fonts.emoji.name}"
103 # ];
104 # sansSerif = [
105 # "${theme.fonts.default.name}"
106 # "${theme.fonts.emoji.name}"
107 # ];
108 # monospace = [ "${theme.fonts.monospace.name}" ];
109 # emoji = [ "${theme.fonts.emoji.name}" ];
110 # };
111 # };
112 };
113
114 services = {
115 envfs.enable = true;
116 power-profiles-daemon.enable = true;
117 upower.enable = true;
118 udisks2.enable = true;
119
120 # Make `/run/user/X` larger0
121 logind.settings.Login = {
122 RuntimeDirectorySize = "20%";
123 };
124 };
125
126 # Clear out user's download weekly
127 systemd.tmpfiles.rules =
128 let
129 mkTmpDirs = n: u: [
130 "d ${u.home}/desktop 0755 ${n} ${u.group} -"
131 "d ${u.home}/desktop/downloads 0700 ${n} ${u.group} 7d"
132 ];
133 in
134 lib.concatLists (
135 lib.mapAttrsToList mkTmpDirs (lib.filterAttrs (_: u: u.isNormalUser) config.users.extraUsers)
136 );
137}