aboutsummaryrefslogtreecommitdiffstats
path: root/hosts
diff options
context:
space:
mode:
Diffstat (limited to 'hosts')
-rw-r--r--hosts/apzu/default.nix126
-rw-r--r--hosts/by-name/apzu/configuration.nix61
-rw-r--r--hosts/by-name/apzu/hardware.nix (renamed from hosts/apzu/hardware.nix)20
-rw-r--r--hosts/by-name/tiamat/configuration.nix77
-rw-r--r--hosts/by-name/tiamat/hardware.nix (renamed from hosts/tiamat/hardware.nix)13
-rw-r--r--hosts/by-name/tiamat/legacy-disk-module/fstrim.nix51
-rw-r--r--hosts/by-name/tiamat/legacy-disk-module/hibernate.nix55
-rw-r--r--hosts/by-name/tiamat/legacy-disk-module/module.nix159
-rw-r--r--hosts/default.nix64
-rw-r--r--hosts/hostinfo.toml10
-rw-r--r--hosts/tiamat/default.nix139
11 files changed, 507 insertions, 268 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..e238882d
--- /dev/null
+++ b/hosts/by-name/apzu/configuration.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>.
+{...}: {
+ imports = [
+ ./hardware.nix
+ ];
+
+ soispha = {
+ bluetooth.enable = true;
+
+ laptop = {
+ backlight = "intel_backlight";
+ enable = true;
+ };
+
+ impermanence.directories = [
+ "/var/log"
+ ];
+
+ programs = {
+ ly.batteryName = "BAT0";
+ river.init = {
+ mappings = {
+ layout = "dvorak-modified";
+ };
+ screenSetupCode = {};
+ };
+ };
+
+ locale.enable = true;
+ networking = {
+ enable = true;
+ hostName = "apzu";
+ mode = "NetworkManager";
+ };
+
+ services = {
+ unison.foreign.address = "tiamat.fritz.box";
+ upower.enable = true;
+ };
+
+ 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..d037473a 100644
--- a/hosts/apzu/hardware.nix
+++ b/hosts/by-name/apzu/hardware.nix
@@ -1,16 +1,26 @@
+# 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 = {
+ boot.enableIsoEntry = true;
+
disks = {
enable = true;
disk = "/dev/disk/by-id/nvme-INTEL_SSDPEKNU512GZH_PHKA1481032A512A_1";
ssd = true;
swap = {
- uuid = "c94cd20a-dd3c-436f-9841-6fe92e5c8719";
- resumeOffset = "533760";
+ ram_size = "16G";
};
};
@@ -23,6 +33,12 @@
boot = {
kernelModules = ["kvm-intel" "rtw89"];
+ kernelParams = [
+ # Use the newer experimental xe driver
+ # "i915.force_probe=!9a49"
+ # "xe.force_probe=9a49"
+ ];
+
initrd.availableKernelModules = ["xhci_pci" "vmd" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"];
};
}
diff --git a/hosts/by-name/tiamat/configuration.nix b/hosts/by-name/tiamat/configuration.nix
new file mode 100644
index 00000000..baa9215a
--- /dev/null
+++ b/hosts/by-name/tiamat/configuration.nix
@@ -0,0 +1,77 @@
+# 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,
+ system,
+ 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..f2a5cec6 100644
--- a/hosts/tiamat/hardware.nix
+++ b/hosts/by-name/tiamat/hardware.nix
@@ -1,6 +1,16 @@
+# 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?
+ ./legacy-disk-module/module.nix
];
soispha = {
@@ -11,7 +21,8 @@
enableFlashing = true;
};
};
-
+ };
+ legacy.soispha = {
disks = {
enable = true;
disk = "/dev/disk/by-id/nvme-CT1000P5SSD8_21032C857568";
diff --git a/hosts/by-name/tiamat/legacy-disk-module/fstrim.nix b/hosts/by-name/tiamat/legacy-disk-module/fstrim.nix
new file mode 100644
index 00000000..0fbb6c83
--- /dev/null
+++ b/hosts/by-name/tiamat/legacy-disk-module/fstrim.nix
@@ -0,0 +1,51 @@
+# 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>.
+{
+ pkgs,
+ lib,
+ cfg,
+}: {
+ timers.fstrim = lib.mkIf cfg.ssd {
+ wantedBy = ["timers.target"];
+ wants = ["fstrim.service"];
+ unitConfig = {
+ Description = "Discard unused blocks once a week";
+ Documentation = "man:fstrim";
+ ConditionVirtualization = "!container";
+ ConditionPathExists = "!/etc/initrd-release";
+ };
+ timerConfig = {
+ OnCalendar = "weekly";
+ AccuracySec = "1h";
+ Persistent = "true";
+ RandomizedDelaySec = "6000";
+ };
+ };
+ services.fstrim = lib.mkIf cfg.ssd {
+ wantedBy = lib.mkForce [];
+ unitConfig = {
+ Description = "Discard unused blocks on filesystems from /etc/fstab";
+ Documentation = "man:fstrim(8)";
+ ConditionVirtualization = "!container";
+ };
+ serviceConfig = {
+ Type = "oneshot";
+ ExecStart = "${pkgs.util-linux}/bin/fstrim --listed-in /etc/fstab:/proc/self/mountinfo --verbose --quiet-unsupported";
+ PrivateDevices = "no";
+ PrivateNetwork = "yes";
+ PrivateUsers = "no";
+ ProtectKernelTunables = "yes";
+ ProtectKernelModules = "yes";
+ ProtectControlGroups = "yes";
+ MemoryDenyWriteExecute = "yes";
+ SystemCallFilter = "@default @file-system @basic-io @system-service";
+ };
+ };
+}
diff --git a/hosts/by-name/tiamat/legacy-disk-module/hibernate.nix b/hosts/by-name/tiamat/legacy-disk-module/hibernate.nix
new file mode 100644
index 00000000..d3f8fe8b
--- /dev/null
+++ b/hosts/by-name/tiamat/legacy-disk-module/hibernate.nix
@@ -0,0 +1,55 @@
+# 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>.
+{pkgs}: {
+ services = {
+ hibernate-preparation = {
+ wantedBy = ["systemd-hibernate.service"];
+ unitConfig = {
+ Description = "Enable swap file and disable zram before hibernate";
+ Before = "systemd-hibernate.service";
+ };
+ serviceConfig = {
+ Type = "oneshot";
+ User = "root";
+ ExecStart = "${pkgs.bash}/bin/bash -c \"${pkgs.util-linux}/bin/swapon /swap/swapfile && ${pkgs.util-linux}/bin/swapoff /dev/zram0\"";
+ };
+ };
+
+ hibernate-resume = {
+ wantedBy = ["systemd-hibernate.service"];
+ unitConfig = {
+ Description = "Disable swap after resuming from hibernation";
+ After = "hibernate.target";
+ };
+ serviceConfig = {
+ Type = "oneshot";
+ User = "root";
+ ExecStart = "${pkgs.util-linux}/bin/swapoff /swap/swapfile";
+ };
+ };
+ # swapoff-start = {
+ # wantedBy = ["multi-user.target"];
+ # unitConfig = {
+ # Description = "Disable hardware swap after booting";
+ # };
+ # serviceConfig = {
+ # Type = "oneshot";
+ # User = "root";
+ # ExecStart = "${pkgs.util-linux}/bin/swapoff /swap/swapfile";
+ # };
+ # };
+ systemd-hibernate.serviceConfig.Environment = "SYSTEMD_BYPASS_HIBERNATION_MEMORY_CHECK=1";
+ systemd-logind.serviceConfig.Environment = "SYSTEMD_BYPASS_HIBERNATION_MEMORY_CHECK=1";
+ };
+
+ sleep.settings.Sleep = {
+ HibernateDelaySec = "10m";
+ };
+}
diff --git a/hosts/by-name/tiamat/legacy-disk-module/module.nix b/hosts/by-name/tiamat/legacy-disk-module/module.nix
new file mode 100644
index 00000000..955d2026
--- /dev/null
+++ b/hosts/by-name/tiamat/legacy-disk-module/module.nix
@@ -0,0 +1,159 @@
+# 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>.
+{
+ config,
+ lib,
+ pkgs,
+ modules,
+ ...
+}: let
+ # FIXME: The iso redeploy requires a bigger efi partition <2024-05-12>
+ cfg = config.legacy.soispha.disks;
+ defaultMountOptions = [
+ "compress=zstd:3" # This saves disk space, at a performance cost
+ "noatime" # should have some performance upsides, and I don't use it anyways
+ "lazytime" # make time changes in memory
+ ];
+in {
+ options.legacy.soispha.disks = {
+ enable = lib.mkEnableOption "disk setup with disko";
+
+ disk = lib.mkOption {
+ type = lib.types.path;
+ example = lib.literalExpression "/dev/disk/by-uuid/0442cb6d-f13a-4635-b487-fa76189774c5";
+ description = "The disk used for installing the OS.";
+ };
+
+ ssd = lib.mkEnableOption "ssd specific improvements, like trim";
+
+ swap = {
+ uuid = lib.mkOption {
+ type = lib.types.str;
+ example = lib.literalExpression "d1d20ae7-3d8a-44da-86da-677dbbb10c89";
+ description = "The uuid of the swapfile";
+ };
+ resumeOffset = lib.mkOption {
+ type = lib.types.str;
+ example = lib.literalExpression "134324224";
+ description = "The resume offset of the swapfile";
+ };
+ };
+ };
+
+ imports = [
+ modules.disko.nixosModules.default
+ ];
+
+ config = lib.mkIf cfg.enable {
+ systemd = lib.recursiveUpdate (import ./hibernate.nix {inherit pkgs;}) (import ./fstrim.nix {inherit pkgs lib cfg;});
+
+ disko.devices = {
+ disk = {
+ main = {
+ device = cfg.disk;
+ content = {
+ type = "gpt";
+ partitions = {
+ root = {
+ size = "100%";
+ name = "root";
+ content = {
+ type = "luks";
+ name = "nixos";
+ extraOpenArgs = ["--allow-discards"];
+ content = {
+ type = "btrfs";
+ extraArgs = ["-f" "--label nixos"]; # Override existing partitions
+ subvolumes = {
+ "nix" = {
+ mountpoint = "/nix";
+ mountOptions = defaultMountOptions;
+ };
+ "persistent-storage" = {
+ mountpoint = "/srv";
+ mountOptions = defaultMountOptions;
+ };
+ "persistent-storage@snapshots" = {
+ mountpoint = "/srv/.snapshots";
+ mountOptions = defaultMountOptions;
+ };
+ "swap" = {
+ mountpoint = "/swap";
+ mountOptions = [
+ "noatime" # should have some performance upsides, and I don't use it anyways
+ "lazytime" # make time changes in memory
+ ];
+ };
+ };
+ };
+ };
+ };
+ boot = {
+ type = "EF00";
+ size = "512M";
+ name = "boot";
+ content = {
+ type = "filesystem";
+ format = "vfat";
+ mountpoint = "/boot";
+ };
+ };
+ };
+ };
+ };
+ };
+ nodev = {
+ "/" = {
+ fsType = "tmpfs";
+ mountOptions = ["defaults" "size=25%" "mode=0755"];
+ };
+ "/tmp" = {
+ fsType = "tmpfs";
+ mountOptions = ["defaults" "size=50%" "mode=0755"];
+ };
+ "/nix/var/nix/b" = {
+ fsType = "tmpfs";
+ mountOptions = [
+ "defaults"
+ "noswap" # Otherwise, we might run into io-based slowdowns
+ "size=80%"
+ "mode=0755"
+ ];
+ };
+ };
+ };
+ fileSystems = {
+ "/srv" = {
+ neededForBoot = true;
+ };
+ "/swap" = {
+ neededForBoot = true;
+ };
+ };
+ swapDevices = [
+ #{
+ # device = "/swap/swapfile";
+ # priority = 1; # lower than zramSwap, just in case
+ # # size = 2048; # TODO: can nixos create a btrfs swapfile correctly?
+ #}
+ ];
+ zramSwap = {
+ enable = true;
+ priority = 10; # needs to be higher than hardware-swap
+ };
+ boot = {
+ kernelParams = [
+ "resume_offset=${cfg.swap.resumeOffset}"
+ "zswap.enabled=0" # zswap and zram are not really compatible
+ ];
+ resumeDevice = "/dev/disk/by-uuid/${cfg.swap.uuid}";
+ };
+ };
+}
diff --git a/hosts/default.nix b/hosts/default.nix
new file mode 100644
index 00000000..fc18d556
--- /dev/null
+++ b/hosts/default.nix
@@ -0,0 +1,64 @@
+# 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,
+ sources,
+ nixpkgs,
+ system,
+ openPRsNixpkgs,
+ packageSets,
+ libraries,
+ modules,
+ externalDependencies,
+ externalBinaries,
+}: let
+ hosts = libraries.extra.mkByName {
+ useShards = false;
+ baseDirectory = ./by-name;
+ fileName = "configuration.nix";
+ };
+
+ generateHost = _: path:
+ nixpkgs.lib.nixosSystem {
+ specialArgs = {
+ inherit
+ self
+ libraries
+ modules
+ ;
+ };
+ modules = [
+ {
+ _module.args = {
+ inherit
+ sources
+ # 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";
-}