about summary refs log tree commit diff stats
path: root/hosts/by-name/tiamat
diff options
context:
space:
mode:
Diffstat (limited to 'hosts/by-name/tiamat')
-rw-r--r--hosts/by-name/tiamat/configuration.nix157
-rw-r--r--hosts/by-name/tiamat/hardware.nix45
2 files changed, 202 insertions, 0 deletions
diff --git a/hosts/by-name/tiamat/configuration.nix b/hosts/by-name/tiamat/configuration.nix
new file mode 100644
index 00000000..3e7349ce
--- /dev/null
+++ b/hosts/by-name/tiamat/configuration.nix
@@ -0,0 +1,157 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+{
+  lib,
+  pkgs,
+  system,
+  libraries,
+  externalBinaries,
+  ...
+}: {
+  imports = [
+    ./hardware.nix
+  ];
+
+  soispha = {
+    bluetooth = {enable = true;};
+    networking = {
+      enable = true;
+      hostName = "tiamat";
+      mode = "systemd-networkd";
+    };
+    nixpkgs = {
+      enable = true;
+      systemName = "x86_64-linux";
+    };
+
+    # TODO: Hard-code all the uids/gids <2025-05-13>
+    impermanence.directories = [
+      "/var/lib/nixos"
+      "/var/log"
+    ];
+
+    services = {
+      unison.foreign.address = "apzu.fritz.box";
+    };
+    programs = {
+      river = {
+        unicodeInput.enable = true;
+        init = {
+          mappings = {
+            layout = "us";
+            keymap = let
+              map = key: "<Alt+Ctrl+Meta+Shift-${key}>";
+            in
+              (lib.mapAttrs' (name: value: lib.nameValuePair (map name) value) {
+                # Movement
+                "A" = {command = ["exit"];};
+                "B" = {command = ["close"];};
+
+                "C" = {command = ["focus-view" "previous"];};
+                "D" = {command = ["focus-view" "next"];};
+
+                "E" = {command = ["swap" "previous"];};
+                "F" = {command = ["swap" "next"];};
+
+                "G" = {command = ["zoom"];};
+
+                "H" = {command = ["toggle-fullscreen"];};
+                "I" = {command = ["toggle-float"];};
+
+                "J" = {command = ["send-to-output" "next"];};
+
+                "K" = {command = ["spawn" "${lib.getExe pkgs.alacritty}"];};
+                "L" = {command = ["spawn" "${lib.getExe pkgs.screenshot_persistent}"];};
+
+                # Audio
+                # "M" = {command = ["spawn" "video-pause toggle"]; modes = ["normal" "locked"]; };
+                "N" = {
+                  command = ["spawn" "${lib.getExe pkgs.mpc} toggle"];
+                  modes = ["normal" "locked"];
+                };
+
+                # Launcher
+                "O" = {command = ["spawn" "${lib.getExe pkgs.rofi} -show combi -modes combi -combi-modes 'window,drun,run' -show-icons"];};
+                "P" = {command = ["spawn" "${lib.getExe pkgs.tskm} open select"];};
+                "Q" = {command = ["spawn" "${lib.getExe pkgs.keepassxc}"];};
+                # "R" = {command = ["spawn" "nheko"];};
+                "S" = {command = ["spawn" "${lib.getExe pkgs.signal-desktop}"];};
+                "T" = {command = ["spawn" "${lib.getExe pkgs.lock}"];};
+
+                "U" = {command = ["focus-output" "next"];};
+                "V" = {command = ["focus-previous-tags"];};
+                "W" = {command = ["send-to-previous-tags"];};
+                # "X" = {command = ["spawn" "bemenu-run"];};
+                # "Y" = {command = ["spawn" "bemenu-run"];};
+
+                # Toggle all tags
+                "0" = {command = ["set-focused-tags" "${builtins.toString ((libraries.base.pow 2 32) - 1)}"];};
+
+                # Support Unicode input
+                "Z" = {command = ["spawn" "${lib.getExe externalBinaries.qmk_firmware.packages.${system}.qmk_unicode_type} 106 65377"];};
+              })
+              // ({
+                  # TODO: add toggle-focus mapping
+
+                  # Toggle all tags
+                  "<Alt+Ctrl+Shift-0>" = {
+                    command = [
+                      "set-view-tags"
+                      "${builtins.toString
+                        ((libraries.base.pow 2 32) - 1)}"
+                    ];
+                  };
+
+                  # Mouse
+                  "<Meta-<MOUSE_LEFT>>" = {
+                    command = ["move-view"];
+                    map_mode = "MapMouse";
+                  };
+                  "<Meta-<MOUSE_RIGHT>>" = {
+                    command = ["resize-view"];
+                    map_mode = "MapMouse";
+                  };
+                }
+                // (
+                  builtins.foldl' (acc: elem: acc // elem) {} (
+                    builtins.map (index: let
+                      num = builtins.toString index;
+                      index2tag = input: builtins.toString (libraries.base.pow 2 (input - 1));
+                    in {
+                      "${map num}" = {command = ["set-focused-tags" (index2tag index)];};
+                      "<Alt+Ctrl+Shift-${num}>" = {command = ["set-view-tags" (index2tag index)];};
+                      # "<Super+Shift+Ctrl-${num}>" = {command = ["toggle-view-tags" (index2tag index)];};
+                    }) (builtins.genList (i: i + 1) 9)
+                  )
+                ));
+          };
+          screenSetupCode = {
+            "DP-2" = {pos = "2560,0";};
+            "DP-1" = {
+              scale = "1.5";
+              pos = "0,0";
+            };
+          };
+        };
+      };
+    };
+    locale = {
+      enable = true;
+      keyMap = "us";
+    };
+    users = {
+      enable = true;
+      enableDeprecatedPlugdev = true;
+      hashedPassword = "$y$jFT$qi3wS9njrMl2y55b3NOBI0$j40Qt6AAkMSfZ82KPhqMaUaPztWtPps1wOqaXaF/L.6";
+    };
+  };
+
+  system.stateVersion = "23.05";
+}
diff --git a/hosts/by-name/tiamat/hardware.nix b/hosts/by-name/tiamat/hardware.nix
new file mode 100644
index 00000000..2b18a662
--- /dev/null
+++ b/hosts/by-name/tiamat/hardware.nix
@@ -0,0 +1,45 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+{modulesPath, ...}: {
+  imports = [
+    (modulesPath + "/installer/scan/not-detected.nix") # TODO: is this necessary?
+  ];
+
+  soispha = {
+    hardware = {
+      enable = true;
+      cpuType = "amd";
+      moonlander = {
+        enableFlashing = true;
+      };
+    };
+
+    disks = {
+      enable = true;
+      disk = "/dev/disk/by-id/nvme-CT1000P5SSD8_21032C857568";
+      ssd = true;
+      swap = {
+        uuid = "057b5041-6fee-4739-84a9-ade8f0f51519";
+        resumeOffset = "533760";
+      };
+    };
+  };
+
+  boot = {
+    kernelModules = ["kvm-amd"];
+
+    kernelParams = [
+      # Avoid loosing the Bluetooth controller to a sleep, from which it never wakes again
+      "btusb.enable_autosuspend=n"
+    ];
+
+    initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"];
+  };
+}