1{
2 config,
3 lib,
4 ...
5}: {
6 options.myNixOS.profiles.server.enable = lib.mkEnableOption "server optimizations";
7 config = lib.mkIf config.myNixOS.profiles.server.enable {
8 boot.kernel.sysctl = {
9 # Improved file monitoring
10 "fs.file-max" = lib.mkDefault 2097152;
11 "fs.inotify.max_user_instances" = lib.mkOverride 100 8192;
12 "fs.inotify.max_user_watches" = lib.mkOverride 100 524288;
13 };
14
15 documentation = {
16 enable = false;
17 nixos.enable = false;
18 };
19
20 services = {
21 bpftune.enable = true;
22
23 journald = {
24 storage = "volatile";
25 extraConfig = "SystemMaxUse=32M\nRuntimeMaxUse=32M";
26 };
27
28 timesyncd.enable = true;
29 };
30
31 system.nixos.tags = ["server"];
32
33 systemd = {
34 coredump.enable = false;
35 enableEmergencyMode = false;
36
37 oomd = {
38 enable = true;
39 enableRootSlice = true;
40 enableSystemSlice = true;
41 enableUserSlices = true;
42 };
43 };
44
45 zramSwap = {
46 enable = lib.mkDefault true;
47 algorithm = lib.mkDefault "zstd";
48 priority = lib.mkDefault 100;
49 memoryPercent = lib.mkDefault 100;
50 };
51
52 myNixOS.services.fail2ban.enable = true;
53 };
54}