about summary refs log tree commit diff stats
path: root/hosts
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--hosts/apzu/default.nix126
-rw-r--r--hosts/by-name/apzu/configuration.nix66
-rw-r--r--hosts/by-name/apzu/hardware.nix (renamed from hosts/apzu/hardware.nix)9
-rw-r--r--hosts/by-name/tiamat/configuration.nix79
-rw-r--r--hosts/by-name/tiamat/hardware.nix (renamed from hosts/tiamat/hardware.nix)9
-rw-r--r--hosts/default.nix61
-rw-r--r--hosts/hostinfo.toml10
-rw-r--r--hosts/tiamat/default.nix139
8 files changed, 234 insertions, 265 deletions
diff --git a/hosts/apzu/default.nix b/hosts/apzu/default.nix
deleted file mode 100644
index 133342c3..00000000
--- a/hosts/apzu/default.nix
+++ /dev/null
@@ -1,126 +0,0 @@
-{
-  lib,
-  pkgs,
-  baseLib,
-  ...
-}: {
-  imports = [
-    ./hardware.nix
-  ];
-
-  soispha = {
-    services.backup = {
-      # Apzu should be regularly synced with Tiamat, which performs updates.
-      enable = false;
-    };
-    bluetooth.enable = true;
-
-    laptop = {
-      backlight = "intel_backlight";
-      enable = true;
-    };
-    programs = {
-      yambar = {
-        laptop = true;
-        backlight = "intel_backlight";
-      };
-      river.init = {
-        mappings = {
-          layout = "dvorak-modified";
-          keymap =
-            {
-              # Focus change
-              "<Meta-T>" = {command = ["focus-view" "next"];};
-              "<Meta-N>" = {command = ["focus-view" "previous"];};
-              "<Meta+Ctrl-T>" = {command = ["focus-output" "next"];};
-              "<Meta+Ctrl-N>" = {command = ["focus-output" "previous"];};
-
-              # Standard programs
-              "<Meta-<ENTER>>" = {command = ["spawn" "${lib.getExe pkgs.alacritty}"];};
-              "<Meta+Shift-q>" = {command = ["exit"];};
-              "<Meta-L>" = {command = ["spawn" "${lib.getExe pkgs.lock}"];};
-
-              # Screenshot
-              "<PRINTSCREEN>" = {command = ["spawn" "${lib.getExe pkgs.screenshot_persistent}"];};
-
-              # Audio
-              "<MEDIA_RAISEVOLUME>" = {
-                command = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%+"];
-                modes = ["normal" "locked"];
-              };
-              "<MEDIA_LOWERVOLUME>" = {
-                command = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%-"];
-                modes = ["normal" "locked"];
-              };
-              "<MEDIA_MUTEVOLUME>" = {
-                command = ["spawn" "${lib.getExe pkgs.mpc} toggle"];
-                modes = ["normal" "locked"];
-              };
-
-              # Launcher
-              "<Meta-R>" = {command = ["spawn" "${lib.getExe pkgs.rofi} -show combi -modes combi -combi-modes 'window, drun, run' -show-icons"];};
-              "<Meta-<F1>>" = {command = ["spawn" "${lib.getExe pkgs.tskm} open select"];};
-              "<Meta-<F2>>" = {command = ["spawn" "${lib.getExe pkgs.keepassxc}"];};
-              "<Meta-<F3>>" = {command = ["spawn" "${lib.getExe pkgs.signal-desktop}"];};
-              # "<Meta-<F4>>" = {command = ["spawn" "${lib.getExe pkgs.steam}"];};
-
-              # Client
-              "<Meta-f>" = {command = ["toggle-fullscreen"];};
-              "<Meta+Shift-c>" = {command = ["close"];};
-              "<Meta+Ctrl- >" = {command = ["toggle-float"];};
-              "<Meta+Ctrl-<ENTER>>" = {command = ["zoom"];};
-              "<Meta-o>" = {command = ["send-to-output" "next"];};
-              "<Meta+Shift-T>" = {command = ["swap" "next"];};
-              "<Meta+Shift-N>" = {command = ["swap" "previous"];};
-
-              # Toggle all tags
-              "<Meta-0>" = {command = ["set-focused-tags" (builtins.toString ((baseLib.pow 2 32) - 1))];};
-              "<Meta+Shift-0>" = {command = ["set-view-tags" (builtins.toString ((baseLib.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 (baseLib.pow 2 (input - 1));
-                in {
-                  "<Meta-${num}>" = {command = ["set-focused-tags" (index2tag index)];};
-                  "<Meta+Shift-${num}>" = {command = ["set-view-tags" (index2tag index)];};
-                  "<Meta+Shift+Ctrl-${num}>" = {command = ["toggle-view-tags" (index2tag index)];};
-                }) (builtins.genList (i: i + 1) 9)
-              )
-            );
-        };
-        screenSetupCode = {};
-      };
-    };
-
-    locale.enable = true;
-    networking = {
-      enable = true;
-      hostName = "apzu";
-      mode = "NetworkManager";
-    };
-    services.unison.foreign.address = "tiamat.fritz.box";
-    nixpkgs = {
-      enable = true;
-      systemName = "x86_64-linux";
-    };
-    users = {
-      enable = true;
-      enableDeprecatedPlugdev = true;
-      hashedPassword = "$y$jFT$3qI9MYLDHPUdGKsVa8skV0$TOjX0SFHWuj52zd7/kmkNtG5EqQwYcqv0FKXWbLaro6";
-    };
-  };
-
-  system.stateVersion = "23.05";
-}
diff --git a/hosts/by-name/apzu/configuration.nix b/hosts/by-name/apzu/configuration.nix
new file mode 100644
index 00000000..4464011e
--- /dev/null
+++ b/hosts/by-name/apzu/configuration.nix
@@ -0,0 +1,66 @@
+# 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,
+  baseLib,
+  ...
+}: {
+  imports = [
+    ./hardware.nix
+  ];
+
+  soispha = {
+    bluetooth.enable = true;
+
+    laptop = {
+      backlight = "intel_backlight";
+      enable = true;
+    };
+
+    # TODO: Hard-code all the uids/gids <2025-05-13>
+    impermanence.directories = [
+      "/var/lib/nixos"
+      "/var/log"
+    ];
+
+    programs = {
+      yambar = {
+        laptop = true;
+        backlight = "intel_backlight";
+      };
+      river.init = {
+        mappings = {
+          layout = "dvorak-modified";
+        };
+        screenSetupCode = {};
+      };
+    };
+
+    locale.enable = true;
+    networking = {
+      enable = true;
+      hostName = "apzu";
+      mode = "NetworkManager";
+    };
+    services.unison.foreign.address = "tiamat.fritz.box";
+    nixpkgs = {
+      enable = true;
+      systemName = "x86_64-linux";
+    };
+    users = {
+      enable = true;
+      enableDeprecatedPlugdev = true;
+      hashedPassword = "$y$jFT$3qI9MYLDHPUdGKsVa8skV0$TOjX0SFHWuj52zd7/kmkNtG5EqQwYcqv0FKXWbLaro6";
+    };
+  };
+
+  system.stateVersion = "23.05";
+}
diff --git a/hosts/apzu/hardware.nix b/hosts/by-name/apzu/hardware.nix
index ae204baa..8d481fa6 100644
--- a/hosts/apzu/hardware.nix
+++ b/hosts/by-name/apzu/hardware.nix
@@ -1,3 +1,12 @@
+# 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?
diff --git a/hosts/by-name/tiamat/configuration.nix b/hosts/by-name/tiamat/configuration.nix
new file mode 100644
index 00000000..18393543
--- /dev/null
+++ b/hosts/by-name/tiamat/configuration.nix
@@ -0,0 +1,79 @@
+# 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 = {
+              # Support Unicode input
+              "<Alt+Ctrl+Meta+Shift-Z>" = [
+                "spawn"
+                "${lib.getExe externalBinaries.qmk_firmware.packages.${system}.qmk_unicode_type} 106 65377"
+              ];
+            };
+          };
+          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/tiamat/hardware.nix b/hosts/by-name/tiamat/hardware.nix
index 97600848..2b18a662 100644
--- a/hosts/tiamat/hardware.nix
+++ b/hosts/by-name/tiamat/hardware.nix
@@ -1,3 +1,12 @@
+# 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?
diff --git a/hosts/default.nix b/hosts/default.nix
new file mode 100644
index 00000000..64768074
--- /dev/null
+++ b/hosts/default.nix
@@ -0,0 +1,61 @@
+# 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>.
+{
+  self,
+  system,
+  openPRsNixpkgs,
+  packageSets,
+  libraries,
+  modules,
+  externalDependencies,
+  externalBinaries,
+}: let
+  hosts = libraries.extra.mkByName {
+    useShards = false;
+    baseDirectory = ./by-name;
+    fileName = "configuration.nix";
+  };
+
+  generateHost = _: path:
+    self.inputs.nixpkgs.lib.nixosSystem {
+      specialArgs = {
+        inherit
+          libraries
+          modules
+          self
+          ;
+      };
+      modules = [
+        {
+          _module.args = {
+            inherit
+              # extra package sources
+              openPRsNixpkgs
+              packageSets
+              # extra information
+              system
+              # nix registry
+              externalDependencies
+              # bins
+              # TODO: Integrate these into `pkgs/by-name` <2024-05-22>
+              externalBinaries
+              ;
+          };
+        }
+        path
+
+        ../modules
+        ../modules/common
+      ];
+    };
+
+  generatedHosts = builtins.mapAttrs generateHost hosts;
+in
+  generatedHosts
diff --git a/hosts/hostinfo.toml b/hosts/hostinfo.toml
index b51c0501..c2523a3a 100644
--- a/hosts/hostinfo.toml
+++ b/hosts/hostinfo.toml
@@ -1,3 +1,13 @@
+# 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>.
+
 [Tiamat]
 description = "This is my main desktop"
 
diff --git a/hosts/tiamat/default.nix b/hosts/tiamat/default.nix
deleted file mode 100644
index 470f88cb..00000000
--- a/hosts/tiamat/default.nix
+++ /dev/null
@@ -1,139 +0,0 @@
-{
-  lib,
-  pkgs,
-  baseLib,
-  qmk_firmware,
-  system,
-  ...
-}: {
-  imports = [
-    ./hardware.nix
-  ];
-
-  soispha = {
-    bluetooth = {enable = true;};
-    networking = {
-      enable = true;
-      hostName = "tiamat";
-      mode = "systemd-networkd";
-    };
-    nixpkgs = {
-      enable = true;
-      systemName = "x86_64-linux";
-    };
-    services = {
-      backup = {
-        backupDiskUuid = "c06ce163-2955-4388-b212-dfec4448fcf4";
-        enable = true;
-      };
-      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 ((baseLib.pow 2 32) - 1)}"];};
-
-                # Support Unicode input
-                "Z" = {command = ["spawn" "${lib.getExe 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 ((baseLib.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 (baseLib.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";
-}