about summary refs log tree commit diff
path: root/nixosConfigurations/eonwe/default.nix
blob: f07aad3822831a0ec8bfdd030837283feba4e1eb (plain) (blame)
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
{
  config,
  lib,
  pkgs,
  this,
  ...
}:
with lib; {
  nixfiles.modules = {
    wireguard.client.enable = true;

    syncthing.enable = true;

    openssh.server.enable = true;

    games = {
      lutris.enable = true;
      minecraft.client.enable = true;
      steam.enable = true;
    };
    android.enable = true;
    bluetooth.enable = true;
    discord.enable = true;
    libvirtd.enable = true;
    qutebrowser.enable = true;
  };

  hm.programs = {
    # NOTE This produces very poor performance even though RX 6750 XT should
    # handle VA-API hardware decoding for all major formats (including AV1) just
    # fine.
    firefox.profiles.default.settings."media.ffmpeg.vaapi.enabled" = false;

    # Mostly just placebo. :^)
    mpv.config = {
      hwdec = "vdpau";
      vo = "gpu";
      profile = "gpu-hq";
    };
  };

  # Usually stuff that is going to be compiled on this machine is going to have
  # parallelisation support enabled, so we will make sure that all cores are
  # utilised and limit the job queue to one.
  nix.extraOptions = ''
    keep-going = true
    max-jobs = 1
    cores = 32
  '';

  boot = {
    # Silence benign MCE errors:
    # ```
    # mce: [Hardware Error]: CPU 1: Machine Check: 0 Bank 29: ffffffffffffffff
    # mce: [Hardware Error]: TSC 0 MISC ff1fffffffffffff SYND ffffffffffffffff IPID ffffffffffffffff
    # mce: [Hardware Error]: PROCESSOR 2:a60f12 TIME 1669988017 SOCKET 0 APIC 2 microcode a601201
    # ```
    kernelParams = ["mce=nobootlog"];

    # The boot drive is Samsung SSD 980 PRO 2TB.
    initrd.kernelModules = ["nvme"];
  };

  # TODO Immutable `/' shire on ZFS datasets and snapshots.
  #
  # Opt-in:
  # - /etc/NetworkManager
  # - /etc/ssh
  # - /home
  # - /var/lib/bluetooth
  # - /var/lib/iwd
  # - /var/lib/log
  #
  # Investigate:
  # - /var/lib/NetworkManager
  # - /var/lib/cni
  # - /var/lib/containers
  # - /var/lib/qemu

  fileSystems = {
    "/boot" = {
      device = "/dev/disk/by-uuid/FF1E-9CFD";
      fsType = "vfat";
    };

    "/" = {
      device = "/dev/disk/by-uuid/20276c1b-7e46-430b-b741-2f4aeb76bc51";
      fsType = "xfs";
      options = ["noatime"];
    };
  };

  # No swap space is declared here because the system already has 128Gb of RAM. :^)
  # I've only manage to hit around 100Gb mark when running large
  # computations/compiling something big. Pretty sure that a hefty chunk of it
  # was just residual cache and it wouldn't make me get to OOM situations.
}

Consider giving Nix/NixOS a try! <3