about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2023-01-05 04:22:04 +0300
committerAzat Bahawi <azat@bahawi.net>2023-01-05 04:22:04 +0300
commit5e81e4814d6da25ce8531baf0bc2d23da7fc26b3 (patch)
treecd887f80d9f98d42db556b4a42bcb8d5faa91c84
parent2022-12-17 (diff)
2023-01-05
-rw-r--r--flake.lock122
-rw-r--r--flake.nix25
-rw-r--r--modules/darwin/emacs.nix8
-rw-r--r--modules/nixfiles/common/nix/default.nix5
-rw-r--r--modules/nixfiles/discord.nix22
-rw-r--r--modules/nixfiles/emacs/default.nix4
-rw-r--r--modules/nixfiles/emacs/doom/init.el26
-rw-r--r--modules/nixos/common/networking.nix186
-rw-r--r--modules/nixos/common/nix.nix3
-rw-r--r--modules/nixos/discord.nix2
-rw-r--r--modules/nixos/emacs.nix2
-rw-r--r--modules/nixos/games/minecraft.nix4
-rw-r--r--modules/nixos/libvirtd.nix8
-rw-r--r--modules/nixos/matrix/default.nix8
-rw-r--r--modules/nixos/profiles/dev/default.nix4
-rw-r--r--modules/nixos/profiles/headful.nix5
-rw-r--r--nixosConfigurations/default.nix1
-rw-r--r--nixosConfigurations/eonwe/default.nix49
-rw-r--r--nixosConfigurations/iso/default.nix3
-rw-r--r--nixosConfigurations/manwe/default.nix4
-rw-r--r--nixosConfigurations/melian/default.nix34
-rw-r--r--nixosConfigurations/varda/default.nix4
-rw-r--r--nixosConfigurations/yavanna/default.nix16
23 files changed, 305 insertions, 240 deletions
diff --git a/flake.lock b/flake.lock
index 6d8862f..17afe17 100644
--- a/flake.lock
+++ b/flake.lock
@@ -299,11 +299,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1671049694,
-        "narHash": "sha256-APJajoa7Q4i8LFOHoiyU3G5nJ3Xv2IiI2qY9i0pJnlw=",
+        "lastModified": 1672673185,
+        "narHash": "sha256-wnEJOjhwgoSHFnBQfGHkPefuUSvTegRYed6BUOguk9g=",
         "owner": "dwarfmaster",
         "repo": "arkenfox-nixos",
-        "rev": "99028aef3e9dfa3dc44e51e0d7296cf93d910af8",
+        "rev": "b46b140fe8631e4bc26f80d04477691df2d84af2",
         "type": "github"
       },
       "original": {
@@ -353,11 +353,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1671196037,
-        "narHash": "sha256-2+J98SeczFWonbqFLMEAQC7vZEe6I2gM17XYvEmG52I=",
+        "lastModified": 1672753581,
+        "narHash": "sha256-EIi2tqHoje5cE9WqH23ZghW28NOOWSUM7tcxKE1U9KI=",
         "owner": "LnL7",
         "repo": "nix-darwin",
-        "rev": "adb8ac0453c8b2c40f5bffb578453dbaee838952",
+        "rev": "3db1d870b04b13411f56ab1a50cd32b001f56433",
         "type": "github"
       },
       "original": {
@@ -434,11 +434,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1671268121,
-        "narHash": "sha256-LIOLFw5m2mYDjMo7eBB/cxYjhEqBnvQ8dpZvTjR6+Lo=",
+        "lastModified": 1672852603,
+        "narHash": "sha256-i5QlHEHG/T4Pp150a6cZe76EcgW/IePPiaRGcIyTBrE=",
         "owner": "nix-community",
         "repo": "emacs-overlay",
-        "rev": "249d14bdd55995eea2e0c9cfed8a230525faebde",
+        "rev": "ed0045366fc3bcc7ecd3dccdbf66c2cfa979fe18",
         "type": "github"
       },
       "original": {
@@ -642,11 +642,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1671209729,
-        "narHash": "sha256-zxn1eA/rMi2DOx43V7q87bGaDzvL7CMVY/Ti7lJ92DQ=",
+        "lastModified": 1672780900,
+        "narHash": "sha256-DxuSn6BdkZapIbg76xzYx1KhVPEZeBexMkt1q/sMVPA=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "7d55a72d4c1df694e87a41a7e6c9a7b6e9a40ca3",
+        "rev": "54245e1820caabd8a0b53ce4d47e4d0fefe04cd4",
         "type": "github"
       },
       "original": {
@@ -656,6 +656,22 @@
         "type": "github"
       }
     },
+    "libnbtplusplus": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1650031308,
+        "narHash": "sha256-TvVOjkUobYJD9itQYueELJX3wmecvEdCbJ0FinW2mL4=",
+        "owner": "PrismLauncher",
+        "repo": "libnbtplusplus",
+        "rev": "2203af7eeb48c45398139b583615134efd8d407f",
+        "type": "github"
+      },
+      "original": {
+        "owner": "PrismLauncher",
+        "repo": "libnbtplusplus",
+        "type": "github"
+      }
+    },
     "master": {
       "flake": false,
       "locked": {
@@ -709,11 +725,11 @@
         "ws-butler": "ws-butler"
       },
       "locked": {
-        "lastModified": 1671154105,
-        "narHash": "sha256-OI6M2/Kcd1bJuodxV6rV5KtDJMUeewsqKy1B2PLNVys=",
+        "lastModified": 1671758850,
+        "narHash": "sha256-B6us/CLIIPJRJgjn/hVp7N07j90kil4HmjUVj8TBhKE=",
         "owner": "nix-community",
         "repo": "nix-doom-emacs",
-        "rev": "2150fd40b2110bbd11dcb62fa5f307ec345b0fb0",
+        "rev": "85a48dbec84e9c26785b58fecdefa1cfc580aea7",
         "type": "github"
       },
       "original": {
@@ -741,11 +757,11 @@
     },
     "nixos-hardware": {
       "locked": {
-        "lastModified": 1671228065,
-        "narHash": "sha256-Az/ig9LVL5xdqtyl4/CVKJIH1G7sP/9Ott2XnNyie0E=",
+        "lastModified": 1672644464,
+        "narHash": "sha256-RYlvRMcQNT7FDoDkViijQBHg9g+blsB+U6AvL/gAsPI=",
         "owner": "NixOS",
         "repo": "nixos-hardware",
-        "rev": "e462a4baf75eeac639b4942481759de08a3bc94e",
+        "rev": "ca29e25c39b8e117d4d76a81f1e229824a9b3a26",
         "type": "github"
       },
       "original": {
@@ -757,11 +773,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1671249438,
-        "narHash": "sha256-5e+CcnbZA3/i2BRXbnzRS52Ly67MUNdZR+Zpbb2C65k=",
+        "lastModified": 1672756850,
+        "narHash": "sha256-Smbq3+fitwA13qsTMeaaurv09/KVbZfW7m7lINwzDGA=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "067bfc6c90a301572cec7da48f09c447a9a8eae0",
+        "rev": "298add347c2bbce14020fcb54051f517c391196b",
         "type": "github"
       },
       "original": {
@@ -773,11 +789,11 @@
     },
     "nixpkgs-master": {
       "locked": {
-        "lastModified": 1671282610,
-        "narHash": "sha256-B8qHrJjsu2rv2BPlj7EkM0H+ZJvVucaiCOIp5191+xc=",
+        "lastModified": 1672874841,
+        "narHash": "sha256-CKr3mOiSYm8H5bg7q1hb0TE9tDHSmqZPNzVAfNmmazE=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "b43f29bdc27e3f14ba0416a2a8492a3f35e6cd58",
+        "rev": "62f7bf5a13149097694e84cff1e928a97a39741b",
         "type": "github"
       },
       "original": {
@@ -789,11 +805,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1671282711,
-        "narHash": "sha256-DJknmGMZPIMlJnLqP99A+dZiWOirRVeCZrQK8kn1nug=",
+        "lastModified": 1672844754,
+        "narHash": "sha256-o26WabuHABQsaHxxmIrR3AQRqDFUEdLckLXkVCpIjSU=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "8ac4d14fc64c39707e98421e84ed6a7160c06ecd",
+        "rev": "e9ade2c8240e00a4784fac282a502efff2786bdc",
         "type": "github"
       },
       "original": {
@@ -855,11 +871,11 @@
     },
     "nur": {
       "locked": {
-        "lastModified": 1671251299,
-        "narHash": "sha256-QFslNMb6xQdgEoHmbZ+YjyXysCPsiU2dOPpjWp68dYg=",
+        "lastModified": 1672875891,
+        "narHash": "sha256-5A4e/Uc6aWQmMsYnMOffLg766weMfCakxo2AnQXrJco=",
         "owner": "nix-community",
         "repo": "NUR",
-        "rev": "ca8e5a3c87bd533b1c0b0b4195b1191ad23c1c66",
+        "rev": "e14930ece703757a928cb62327d4157bb30a7a90",
         "type": "github"
       },
       "original": {
@@ -949,6 +965,31 @@
         "type": "github"
       }
     },
+    "pollymc": {
+      "inputs": {
+        "flake-compat": [
+          "flake-compat"
+        ],
+        "libnbtplusplus": "libnbtplusplus",
+        "nixpkgs": [
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1671576765,
+        "narHash": "sha256-L6o9OK560Tkkfj18y7SD10E9BewDqa73tDZ+N1DSn4A=",
+        "owner": "fn2006",
+        "repo": "PollyMC",
+        "rev": "689a653cc476241220a8758dcbbc3b197e2aa156",
+        "type": "github"
+      },
+      "original": {
+        "owner": "fn2006",
+        "ref": "6.1",
+        "repo": "PollyMC",
+        "type": "github"
+      }
+    },
     "pre-commit-hooks": {
       "inputs": {
         "flake-compat": [
@@ -966,11 +1007,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1671180323,
-        "narHash": "sha256-qAE390OdYvzSMe58HLpoMZ7llPlp+zIy84pXPnuXqCo=",
+        "lastModified": 1672734157,
+        "narHash": "sha256-uwUBnv0bN1SO4QVIo8KUx/jxRYCy7cW8kzZa+Qsrw9k=",
         "owner": "cachix",
         "repo": "pre-commit-hooks.nix",
-        "rev": "a49fc91a606dbbb7a916c56bc09776fc67b5c121",
+        "rev": "d0ce0a861260493c6c21f16f59d25076f73cb931",
         "type": "github"
       },
       "original": {
@@ -1016,6 +1057,7 @@
         "nmap-vulners": "nmap-vulners",
         "nmap-vulscan": "nmap-vulscan",
         "nur": "nur",
+        "pollymc": "pollymc",
         "pre-commit-hooks": "pre-commit-hooks",
         "simple-nixos-mailserver": "simple-nixos-mailserver",
         "xmonad-ng": "xmonad-ng"
@@ -1043,7 +1085,7 @@
         "nixpkgs": [
           "nixpkgs"
         ],
-        "nixpkgs-22_05": [
+        "nixpkgs-22_11": [
           "nixpkgs-stable"
         ],
         "utils": [
@@ -1051,11 +1093,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1669807829,
-        "narHash": "sha256-rgQ8MYV1UD4Ynw0wzfl9hatgsV5GV7X6eM6ioSPKzls=",
+        "lastModified": 1671659164,
+        "narHash": "sha256-DbpT+v1POwFOInbrDL+vMbYV3mVbTkMxmJ5j50QnOcA=",
         "owner": "simple-nixos-mailserver",
         "repo": "nixos-mailserver",
-        "rev": "694e7d34f60028f4877517e1c7c73c9527fad400",
+        "rev": "bc667fb6afc45f6cc2d118ab77658faf2227cffd",
         "type": "gitlab"
       },
       "original": {
@@ -1084,11 +1126,11 @@
     "ts-fold": {
       "flake": false,
       "locked": {
-        "lastModified": 1670681486,
-        "narHash": "sha256-Ss1FWOq51+0FQpQWXPiSWHmNYU6NurUvI2wAjOGV/kA=",
+        "lastModified": 1671426601,
+        "narHash": "sha256-NrvSK+olbi4P+9q5KOomNHGgmrRtI9cW9ZqkdU4n0Sc=",
         "owner": "jcs-elpa",
         "repo": "ts-fold",
-        "rev": "85db0117ead108213cc2a4210f72746d8ad8d20a",
+        "rev": "a64f5252a66253852bef1c627cea9e39928e6392",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index e5c1e17..ba845a4 100644
--- a/flake.nix
+++ b/flake.nix
@@ -109,6 +109,9 @@
     #   };
     # };
 
+    # NOTE This[1] is annoying.
+    #
+    # [1]: https://github.com/NixOS/nix/pull/6983#issuecomment-1234335417
     # nix-minecraft-servers = {
     #   type = "github";
     #   owner = "jyooru";
@@ -120,16 +123,16 @@
     #   };
     # };
 
-    # pollymc = {
-    #   type = "github";
-    #   owner = "fn2006";
-    #   repo = "PollyMC";
-    #   ref = "5.2";
-    #   inputs = {
-    #     flake-compat.follows = "flake-compat";
-    #     nixpkgs.follows = "nixpkgs";
-    #   };
-    # };
+    pollymc = {
+      type = "github";
+      owner = "fn2006";
+      repo = "PollyMC";
+      ref = "6.1";
+      inputs = {
+        flake-compat.follows = "flake-compat";
+        nixpkgs.follows = "nixpkgs";
+      };
+    };
 
     dns-nix = {
       type = "github";
@@ -148,7 +151,7 @@
       repo = "nixos-mailserver";
       ref = "master";
       inputs = {
-        nixpkgs-22_05.follows = "nixpkgs-stable";
+        nixpkgs-22_11.follows = "nixpkgs-stable";
         nixpkgs.follows = "nixpkgs";
         utils.follows = "flake-utils";
       };
diff --git a/modules/darwin/emacs.nix b/modules/darwin/emacs.nix
index 02bfb83..fd32276 100644
--- a/modules/darwin/emacs.nix
+++ b/modules/darwin/emacs.nix
@@ -7,9 +7,9 @@ with lib; let
   cfg = config.nixfiles.modules.emacs;
 in {
   config = mkIf cfg.enable {
-    # services.emacs = {
-    #   enable = true;
-    #   package = config.hm.programs.doom-emacs.package;
-    # };
+    services.emacs = {
+      enable = false; # TODO Figure out how to use this.
+      inherit (config.hm.programs.doom-emacs) package;
+    };
   };
 }
diff --git a/modules/nixfiles/common/nix/default.nix b/modules/nixfiles/common/nix/default.nix
index aeb25bd..436ce15 100644
--- a/modules/nixfiles/common/nix/default.nix
+++ b/modules/nixfiles/common/nix/default.nix
@@ -29,14 +29,12 @@ with lib; {
   in {
     # https://github.com/NixOS/nix/blob/master/src/libutil/experimental-features.cc
     extraOptions = ''
-      max-jobs = auto
       warn-dirty = false
       flake-registry = ${inputs.flake-registry}/flake-registry.json
       extra-experimental-features = ca-derivations
       extra-experimental-features = flakes
       extra-experimental-features = nix-command
       extra-experimental-features = recursive-nix
-      keep-going = true
       keep-derivations = ${
         if this.isHeadful
         then "true"
@@ -120,9 +118,8 @@ with lib; {
         tor-browser = tor-browser-bundle-bin;
       }))
     emacs-overlay.overlay
-    # nil.overlays.default
     nur.overlay
-    # pollymc.overlay
+    # nil.overlays.default
   ];
 
   environment.systemPackages = with pkgs;
diff --git a/modules/nixfiles/discord.nix b/modules/nixfiles/discord.nix
deleted file mode 100644
index 190b5fc..0000000
--- a/modules/nixfiles/discord.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-with lib; let
-  cfg = config.nixfiles.modules.discord;
-in {
-  options.nixfiles.modules.discord.enable =
-    mkEnableOption "Steam runtime";
-
-  config = mkIf cfg.enable {
-    nixfiles.modules.common.nix.allowedUnfreePackages = ["discord"];
-
-    hm.home.packages = with pkgs; [
-      (discord.override {
-        withOpenASAR = true;
-      })
-    ];
-  };
-}
diff --git a/modules/nixfiles/emacs/default.nix b/modules/nixfiles/emacs/default.nix
index 933a32e..499dd59 100644
--- a/modules/nixfiles/emacs/default.nix
+++ b/modules/nixfiles/emacs/default.nix
@@ -59,7 +59,7 @@ in {
             gotests # :lang go
             graphviz # :lang (org +roam2) :lang plantuml
             haskell-language-server # :lang (haskell +lsp)
-            haskellPackages.brittany # :lang haskell :editor format
+            # haskellPackages.brittany # :lang haskell :editor format # FIXME Dependency marked as broken.
             haskellPackages.cabal-fmt # :lang haskell :editor format
             haskellPackages.cabal-install # :lang haskell
             haskellPackages.hoogle # :lang haskell
@@ -105,7 +105,7 @@ in {
 
           (setq custom-file (file-name-concat doom-emacs-dir "custom.el"))
 
-          Font must be set to n+2 because otherwise it looks too small.
+          ;; Font must be set to n+2 because otherwise it looks too small.
           (setq doom-font (font-spec :family "${config.fontScheme.monospaceFont.family}"
                                      :size ${toString (config.fontScheme.monospaceFont.size + 2)})
                 doom-unicode-font doom-font)
diff --git a/modules/nixfiles/emacs/doom/init.el b/modules/nixfiles/emacs/doom/init.el
index efb831e..4d7dd66 100644
--- a/modules/nixfiles/emacs/doom/init.el
+++ b/modules/nixfiles/emacs/doom/init.el
@@ -13,7 +13,7 @@
        ;; doom-dashboard
        ;; doom-quit
        hl-todo
-       ;; indent-guides
+       indent-guides
        ;; ligatures
        ;; modeline
        ;; nav-flash
@@ -25,7 +25,7 @@
        (vc-gutter +diff-hl +pretty)
        window-select
        workspaces
-       ;; zen
+       zen
 
        :editor
        (evil +everywhere)
@@ -58,10 +58,10 @@
        ;; grammar
 
        :tools
-       ;; ansible
+       ansible
        (debugger +lsp)
        direnv
-       ;; (docker +lsp)
+       (docker +lsp)
        editorconfig
        (eval +overlay)
        (lookup +dictionary +offline)
@@ -75,14 +75,15 @@
        ;; upload
 
        :os
-       (tty +osc)
+       (:if IS-MAC macos)
+       ;; (tty +osc)
 
        :lang
        (cc +lsp +tree-sitter)
-       ;; (common-lisp +lsp +tree-sitter)
-       ;; (csharp +lsp +tree-sitter)
+       (common-lisp +lsp +tree-sitter)
+       (csharp +lsp +tree-sitter)
        data
-       ;; (dhall +lsp +tree-sitter)
+       (dhall +lsp +tree-sitter)
        (emacs-lisp +lsp +tree-sitter)
        (go +lsp +tree-sitter)
        ;; graphql
@@ -90,17 +91,18 @@
        (java +lsp +tree-sitter)
        (javascript +lsp +tree-sitter)
        json
+       (kotlin +lsp +tree-sitter)
        (latex +lsp +tree-sittter)
-       ;; (lua +lsp +tree-sitter)
+       (lua +lsp +tree-sitter)
        (markdown +lsp +tree-sitter)
        (nix +lsp)
        (org +pandoc +roam2)
        plantuml
        (python +lsp +tree-sitter)
-       ;; (racket +lsp +tree-sitter)
+       (racket +lsp +tree-sitter)
        ;; rst
-       ;; (rust +lsp +tree-sitter)
-       ;; (scheme +lsp +tree-sitter +racket)
+       (rust +lsp +tree-sitter)
+       (scheme +lsp +tree-sitter +racket)
        (sh +lsp +tree-sitter)
        web
        yaml
diff --git a/modules/nixos/common/networking.nix b/modules/nixos/common/networking.nix
index 6109933..0c44159 100644
--- a/modules/nixos/common/networking.nix
+++ b/modules/nixos/common/networking.nix
@@ -5,104 +5,118 @@
   this,
   ...
 }:
-with lib; {
-  # TODO Support multiple interfaces and IP addresses.
-  networking = mkMerge [
-    {
-      domain = my.domain.shire;
+with lib; let
+  cfg = config.nixfiles.modules.common.networking;
+in {
+  options.nixfiles.modules.common.networking.onlyDefault =
+    mkEnableOption "custom networking settings";
 
-      hostName = this.hostname;
-      hostId = substring 0 8 (builtins.hashString "md5" this.hostname);
+  config = mkIf (!cfg.onlyDefault) {
+    # TODO Support multiple interfaces and IP addresses.
+    networking = mkMerge [
+      {
+        domain = my.domain.shire;
 
-      # Remove default hostname mappings. This is required at least by the current
-      # implementation of the montoring module.
-      hosts = {
-        "127.0.0.2" = mkForce [];
-        "::1" = mkForce [];
-      };
+        hostName = this.hostname;
+        hostId = substring 0 8 (builtins.hashString "md5" this.hostname);
 
-      nameservers = mkDefault dns.const.quad9.default;
+        # Remove default hostname mappings. This is required at least by the current
+        # implementation of the montoring module.
+        hosts = {
+          "127.0.0.2" = mkForce [];
+          "::1" = mkForce [];
+        };
 
-      useDHCP = false;
+        nameservers = mkDefault dns.const.quad9.default;
 
-      firewall = {
-        enable = true;
+        useDHCP = false;
 
-        rejectPackets = false;
+        firewall = {
+          enable = true;
 
-        allowPing = true;
-        pingLimit = "--limit 1/minute --limit-burst 5";
+          rejectPackets = false;
 
-        logRefusedConnections = false;
-        logRefusedPackets = false;
-        logRefusedUnicastsOnly = false;
-        logReversePathDrops = false;
-      };
-    }
-    (let
-      interface = "eth0"; # This assumes `usePredictableInterfaceNames` is false.
-    in
-      mkIf (hasAttr "ipv4" this && hasAttr "ipv6" this) {
-        usePredictableInterfaceNames = false; # NOTE This can break something!
-        interfaces.${interface} = {
-          ipv4.addresses = with this.ipv4;
-            optional (isString address && isInt prefixLength) {
-              inherit address prefixLength;
-            };
+          allowPing = true;
+          pingLimit = "--limit 1/minute --limit-burst 5";
 
-          ipv6.addresses = with this.ipv6;
-            optional (isString address && isInt prefixLength) {
-              inherit address prefixLength;
-            };
+          logRefusedConnections = false;
+          logRefusedPackets = false;
+          logRefusedUnicastsOnly = false;
+          logReversePathDrops = false;
         };
-        defaultGateway = with this.ipv4;
-          mkIf (isString gatewayAddress) {
-            inherit interface;
-            address = gatewayAddress;
-          };
-        defaultGateway6 = with this.ipv6;
-          mkIf (isString gatewayAddress) {
-            inherit interface;
-            address = gatewayAddress;
+      }
+      (let
+        interface = "eth0"; # This assumes `usePredictableInterfaceNames` is false.
+      in
+        mkIf (hasAttr "ipv4" this && hasAttr "ipv6" this) {
+          usePredictableInterfaceNames = false; # NOTE This can break something!
+          interfaces.${interface} = {
+            ipv4.addresses = with this.ipv4;
+              optional (isString address && isInt prefixLength) {
+                inherit address prefixLength;
+              };
+
+            ipv6.addresses = with this.ipv6;
+              optional (isString address && isInt prefixLength) {
+                inherit address prefixLength;
+              };
           };
-      })
-    (mkIf this.isHeadful {
-      interfaces = {
-        eth0.useDHCP = mkDefault true;
-        wlan0.useDHCP = mkDefault true;
-      };
+          defaultGateway = with this.ipv4;
+            mkIf (isString gatewayAddress) {
+              inherit interface;
+              address = gatewayAddress;
+            };
+          defaultGateway6 = with this.ipv6;
+            mkIf (isString gatewayAddress) {
+              inherit interface;
+              address = gatewayAddress;
+            };
+        })
+      (mkIf this.isHeadful {
+        interfaces = {
+          eth0.useDHCP = mkDefault true;
+          wlan0.useDHCP = mkDefault true;
+        };
 
-      networkmanager = {
-        enable = mkDefault true;
-        wifi.backend = "iwd";
-      };
+        networkmanager = {
+          enable = mkDefault true;
+          wifi.backend = "iwd";
+        };
 
-      wireless = {
-        enable = false;
-        iwd.enable = mkDefault true;
-        userControlled.enable = true;
-        allowAuxiliaryImperativeNetworks = true;
-      };
-    })
-  ];
+        wireless = {
+          enable = false;
+          iwd.enable = mkDefault true;
+          userControlled.enable = true;
+          allowAuxiliaryImperativeNetworks = true;
+        };
+      })
+    ];
 
-  environment.shellAliases = listToAttrs (map
-    ({
-      name,
-      value,
-    }:
-      nameValuePair name "${pkgs.iproute2}/bin/${value}") [
-      {
-        name = "bridge";
-        value = "bridge -color=always";
-      }
-      {
-        name = "ip";
-        value = "ip -color=always";
-      }
-      {
-        name = "tc";
-        value = "tc -color=always";
-      }
-    ]);
+    environment = {
+      shellAliases = listToAttrs (map
+        ({
+          name,
+          value,
+        }:
+          nameValuePair name "${pkgs.iproute2}/bin/${value}") [
+          {
+            name = "bridge";
+            value = "bridge -color=always";
+          }
+          {
+            name = "ip";
+            value = "ip -color=always";
+          }
+          {
+            name = "tc";
+            value = "tc -color=always";
+          }
+        ]);
+
+      systemPackages = with pkgs; [
+        ethtool
+        nethogs
+      ];
+    };
+  };
 }
diff --git a/modules/nixos/common/nix.nix b/modules/nixos/common/nix.nix
index 07136a0..71f62fd 100644
--- a/modules/nixos/common/nix.nix
+++ b/modules/nixos/common/nix.nix
@@ -22,8 +22,9 @@ in {
 
       overlays = with inputs; [
         agenix.overlay
-        # nix-minecraft-servers.overlays.default
+        pollymc.overlay
         xmonad-ng.overlays.default
+        # nix-minecraft-servers.overlays.default
       ];
     };
 
diff --git a/modules/nixos/discord.nix b/modules/nixos/discord.nix
index 190b5fc..69ab525 100644
--- a/modules/nixos/discord.nix
+++ b/modules/nixos/discord.nix
@@ -15,7 +15,7 @@ in {
 
     hm.home.packages = with pkgs; [
       (discord.override {
-        withOpenASAR = true;
+        withOpenASAR = false; # This doesnt work.
       })
     ];
   };
diff --git a/modules/nixos/emacs.nix b/modules/nixos/emacs.nix
index 800d411..2db8120 100644
--- a/modules/nixos/emacs.nix
+++ b/modules/nixos/emacs.nix
@@ -17,7 +17,7 @@ in {
     nixfiles.modules.x11.enable = true;
 
     hm = {
-      programs.doom-emacs.extraConfig = ''
+      programs.doom-emacs.extraConfig = mkAfter ''
         (appendq! auth-sources '("${config.secrets.authinfo.path}"))
       '';
 
diff --git a/modules/nixos/games/minecraft.nix b/modules/nixos/games/minecraft.nix
index e53f9eb..7b21195 100644
--- a/modules/nixos/games/minecraft.nix
+++ b/modules/nixos/games/minecraft.nix
@@ -22,7 +22,7 @@ in {
 
   config = mkMerge [
     (mkIf cfg.client.enable {
-      hm.home.packages = with pkgs; [pollymc];
+      hm.home.packages = with pkgs; [prismlauncher];
     })
     (mkIf cfg.server.enable {
       # Configurations, opslist, whitelist and plugins are managed imperatively.
@@ -31,7 +31,7 @@ in {
         enable = true;
         eula = true;
 
-        package = pkgs.minecraftServers.purpur_1_19_2;
+        package = pkgs.minecraftServers.purpur_1_19_3;
 
         # TODO Make a PR fixing trailing whitespace on this.
         jvmOpts =
diff --git a/modules/nixos/libvirtd.nix b/modules/nixos/libvirtd.nix
index ae8b336..58dfc50 100644
--- a/modules/nixos/libvirtd.nix
+++ b/modules/nixos/libvirtd.nix
@@ -10,6 +10,12 @@ in {
   options.nixfiles.modules.libvirtd.enable = mkEnableOption "libvirtd";
 
   config = mkIf cfg.enable {
+    hm.home.packages = with pkgs; [
+      qemu-utils
+      quickemu
+      virt-manager
+    ];
+
     virtualisation.libvirtd = {
       enable = true;
 
@@ -37,8 +43,6 @@ in {
       };
     };
 
-    environment.systemPackages = with pkgs; [virt-manager qemu-utils];
-
     my.extraGroups = ["libvirtd"];
   };
 }
diff --git a/modules/nixos/matrix/default.nix b/modules/nixos/matrix/default.nix
index bd221c4..879243e 100644
--- a/modules/nixos/matrix/default.nix
+++ b/modules/nixos/matrix/default.nix
@@ -1 +1,7 @@
-_: {imports = [./dendrite.nix ./element.nix ./synapse.nix];}
+_: {
+  imports = [
+    ./dendrite.nix
+    ./element.nix
+    ./synapse.nix
+  ];
+}
diff --git a/modules/nixos/profiles/dev/default.nix b/modules/nixos/profiles/dev/default.nix
index 83d41c0..8cb2356 100644
--- a/modules/nixos/profiles/dev/default.nix
+++ b/modules/nixos/profiles/dev/default.nix
@@ -8,6 +8,10 @@
 with lib; let
   cfg = config.nixfiles.modules.profiles.dev.default;
 in {
+  imports = [
+    ./containers.nix
+  ];
+
   config = mkIf cfg.enable {
     hm.home.language = {
       collate = "C";
diff --git a/modules/nixos/profiles/headful.nix b/modules/nixos/profiles/headful.nix
index d15f004..2d37b47 100644
--- a/modules/nixos/profiles/headful.nix
+++ b/modules/nixos/profiles/headful.nix
@@ -77,10 +77,7 @@ in {
       psd.enable = true;
     };
 
-    environment.systemPackages = with pkgs; [
-      ethtool
-      nethogs
-    ];
+    environment.systemPackages = with pkgs; [lm_sensors];
 
     my.extraGroups = ["audio" "video" "input"];
   };
diff --git a/nixosConfigurations/default.nix b/nixosConfigurations/default.nix
index 1ca634a..fe998cd 100644
--- a/nixosConfigurations/default.nix
+++ b/nixosConfigurations/default.nix
@@ -69,6 +69,7 @@ in
     # A beefy desktop: 7950x/rx6750xt/128GB.
     eonwe.modules = with inputs; [
       nixos-hardware.nixosModules.common-cpu-amd
+      nixos-hardware.nixosModules.common-cpu-amd-pstate
       nixos-hardware.nixosModules.common-gpu-amd
       nixos-hardware.nixosModules.common-pc-ssd
       nixpkgs.nixosModules.notDetected
diff --git a/nixosConfigurations/eonwe/default.nix b/nixosConfigurations/eonwe/default.nix
index a867837..f07aad3 100644
--- a/nixosConfigurations/eonwe/default.nix
+++ b/nixosConfigurations/eonwe/default.nix
@@ -15,6 +15,7 @@ with lib; {
 
     games = {
       lutris.enable = true;
+      minecraft.client.enable = true;
       steam.enable = true;
     };
     android.enable = true;
@@ -25,8 +26,12 @@ with lib; {
   };
 
   hm.programs = {
-    firefox.profiles.default.settings."media.ffmpeg.vaapi.enabled" = true;
+    # 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";
@@ -34,6 +39,15 @@ with lib; {
     };
   };
 
+  # 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:
     # ```
@@ -43,16 +57,26 @@ with lib; {
     # ```
     kernelParams = ["mce=nobootlog"];
 
-    initrd.availableKernelModules = [
-      "ahci"
-      "nvme"
-      "sd_mod"
-      "usb_storage"
-      "usbhid"
-      "xhci_pci"
-    ];
+    # 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";
@@ -66,7 +90,8 @@ with lib; {
     };
   };
 
-  # No swap space is declared here because the system already has 128Gb of RAM.
-  # I didn't manage to even hit 100Gb mark even when running large
-  # computations/compiling something big.
+  # 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.
 }
diff --git a/nixosConfigurations/iso/default.nix b/nixosConfigurations/iso/default.nix
index e435d0b..914fea9 100644
--- a/nixosConfigurations/iso/default.nix
+++ b/nixosConfigurations/iso/default.nix
@@ -7,6 +7,7 @@ with lib; {
   secrets = mkForce {};
 
   nixfiles.modules = {
+    common.networking.onlyDefault = true;
     git.client.enable = true;
     openssh = {
       client.enable = true;
@@ -21,7 +22,5 @@ with lib; {
 
   services.getty.autologinUser = mkForce my.username;
 
-  environment.noXlibs = false;
-
   nixpkgs.config.allowBroken = true;
 }
diff --git a/nixosConfigurations/manwe/default.nix b/nixosConfigurations/manwe/default.nix
index b8dd324..a079579 100644
--- a/nixosConfigurations/manwe/default.nix
+++ b/nixosConfigurations/manwe/default.nix
@@ -52,10 +52,6 @@ with lib; {
     };
 
     initrd.availableKernelModules = [
-      "ata_piix"
-      "sd_mod"
-      "sr_mod"
-      "uhci_hcd"
       "virtio_pci"
       "virtio_scsi"
     ];
diff --git a/nixosConfigurations/melian/default.nix b/nixosConfigurations/melian/default.nix
index 3ba854c..d7563d7 100644
--- a/nixosConfigurations/melian/default.nix
+++ b/nixosConfigurations/melian/default.nix
@@ -13,6 +13,8 @@ with lib; {
     bluetooth.enable = true;
 
     throttled.enable = true;
+
+    android.enable = true;
   };
 
   hardware.trackpoint = {
@@ -26,13 +28,17 @@ with lib; {
   in {
     enable = true;
 
-    # This fixes an issue with not being able to suspend or wake up from suspend
-    # due to a kernel bug[1].
+    # This fixes an issue with not being able to suspend or wake up from
+    # suspend due to a kernel bug[1] which is still not fixed.
+    #
+    # I guess this can also be fixed differently[2], which does look a lot nicer
+    # but I just can't bother.
     #
     # [1]: https://bbs.archlinux.org/viewtopic.php?id=270964
     # [1]: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/522998
     # [1]: https://bugs.launchpad.net/ubuntu/+source/pm-utils/+bug/562484/comments/3
     # [1]: https://gist.github.com/ioggstream/8f380d398aef989ac455b93b92d42048
+    # [2]: https://linrunner.de/tlp/settings/runtimepm.html
     powerDownCommands = "${modprobe} -r xhci_pci";
     powerUpCommands = "${modprobe} xhci_pci";
   };
@@ -40,7 +46,6 @@ with lib; {
   services = {
     thinkfan = {
       enable = true;
-
       settings = {
         sensors = [
           {
@@ -52,7 +57,7 @@ with lib; {
         fans = [{tpacpi = "/proc/acpi/ibm/fan";}];
         levels = [
           ["level auto" 0 50]
-          ["level disengaged" 50 32767]
+          ["level disengaged" 50 32767] # This could annoy some people but IDGAF.
         ];
       };
     };
@@ -60,23 +65,10 @@ with lib; {
     fwupd.enable = true;
   };
 
-  boot = {
-    initrd = {
-      availableKernelModules = [
-        "ahci"
-        "nvme"
-        "sd_mod"
-        "usb_storage"
-        "usbhid"
-        "xhci_pci"
-      ];
-
-      luks.devices."root" = {
-        device = "/dev/disk/by-uuid/c1b46f24-eec0-47d2-a142-75ddfd7bb218";
-        allowDiscards = true;
-        bypassWorkqueues = true;
-      };
-    };
+  boot.initrd.luks.devices."root" = {
+    device = "/dev/disk/by-uuid/c1b46f24-eec0-47d2-a142-75ddfd7bb218";
+    allowDiscards = true;
+    bypassWorkqueues = true;
   };
 
   fileSystems = {
diff --git a/nixosConfigurations/varda/default.nix b/nixosConfigurations/varda/default.nix
index 5e0914e..f08194e 100644
--- a/nixosConfigurations/varda/default.nix
+++ b/nixosConfigurations/varda/default.nix
@@ -26,10 +26,6 @@ with lib; {
     };
 
     initrd.availableKernelModules = [
-      "ata_piix"
-      "sd_mod"
-      "sr_mod"
-      "uhci_hcd"
       "virtio_pci"
       "virtio_scsi"
     ];
diff --git a/nixosConfigurations/yavanna/default.nix b/nixosConfigurations/yavanna/default.nix
index e3172a6..d347c61 100644
--- a/nixosConfigurations/yavanna/default.nix
+++ b/nixosConfigurations/yavanna/default.nix
@@ -20,10 +20,18 @@ with lib; {
       device = "/dev/sda";
     };
 
-    initrd = {
-      availableKernelModules = ["uhci_hcd" "ahci"];
-      kernelModules = ["nvme"];
-    };
+    # NOTE This is probably not required, but I cannot test this out without
+    # risking "bricking" my VPS because Kimsufi/OVH doesn't provide a console
+    # access. This configuration was generated via nixos-infect[1] and at the
+    # time I didn't bother to test for loaded kernel modules and just left the
+    # automatically (IIRC) generated `hardware-configuration.nix' as is.
+    #
+    # There's, however, no indication that any NVME drives are being used and,
+    # as the matter of fact, the VPS itself is KVM-shire, so... I'm still not
+    # going to risk it.
+    #
+    # [1]: https://github.com/elitak/nixos-infect
+    initrd.availableKernelModules = ["nvme"];
   };
 
   fileSystems."/" = {

Consider giving Nix/NixOS a try! <3