diff options
Diffstat (limited to 'hosts/by-name/tiamat')
-rw-r--r-- | hosts/by-name/tiamat/configuration.nix | 157 | ||||
-rw-r--r-- | hosts/by-name/tiamat/hardware.nix | 45 |
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"]; + }; +} |