diff options
Diffstat (limited to 'hosts')
| -rw-r--r-- | hosts/apzu/default.nix | 126 | ||||
| -rw-r--r-- | hosts/by-name/apzu/configuration.nix | 61 | ||||
| -rw-r--r-- | hosts/by-name/apzu/hardware.nix (renamed from hosts/apzu/hardware.nix) | 20 | ||||
| -rw-r--r-- | hosts/by-name/tiamat/configuration.nix | 77 | ||||
| -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.nix | 51 | ||||
| -rw-r--r-- | hosts/by-name/tiamat/legacy-disk-module/hibernate.nix | 55 | ||||
| -rw-r--r-- | hosts/by-name/tiamat/legacy-disk-module/module.nix | 159 | ||||
| -rw-r--r-- | hosts/default.nix | 64 | ||||
| -rw-r--r-- | hosts/hostinfo.toml | 10 | ||||
| -rw-r--r-- | hosts/tiamat/default.nix | 139 |
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"; -} |
