diff --git a/hosts/gerg-desktop/Windows.xml b/hosts/gerg-desktop/Windows.xml
index bb7d48b..637dcd7 100644
--- a/hosts/gerg-desktop/Windows.xml
+++ b/hosts/gerg-desktop/Windows.xml
@@ -177,10 +177,19 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
@@ -208,8 +217,6 @@
-
-
diff --git a/hosts/gerg-desktop/main.nix b/hosts/gerg-desktop/main.nix
index 77bdfbc..4381372 100644
--- a/hosts/gerg-desktop/main.nix
+++ b/hosts/gerg-desktop/main.nix
@@ -3,9 +3,6 @@
{
local = {
remoteBuild.isBuilder = true;
- X11Programs = {
- sxhkd.enable = true;
- };
DE.dwm.enable = true;
DM = {
lightdm.enable = true;
@@ -73,6 +70,9 @@
nix-index
element-desktop
webcord
+ # QMK configuration
+ via
+ qmk
;
inherit (nvim-flake.packages) neovim;
inherit fmt;
@@ -103,7 +103,11 @@
};
};
- services.udev.packages = [ pkgs.android-udev-rules ];
+ services.udev.packages = [
+ pkgs.android-udev-rules
+ pkgs.via
+ pkgs.qmk-udev-rules
+ ];
programs.adb.enable = true;
networking = {
diff --git a/hosts/gerg-desktop/vfio.nix b/hosts/gerg-desktop/vfio.nix
index c6c775e..769018e 100644
--- a/hosts/gerg-desktop/vfio.nix
+++ b/hosts/gerg-desktop/vfio.nix
@@ -145,11 +145,9 @@ in
'';
- systemd.tmpfiles.settings."vfio" = {
- "/etc/Xorg/active.conf"."L".argument = "/etc/Xorg/2_mon.conf";
- "/var/lib/libvirt/qemu/Windows.xml"."L+".argument = toString ./Windows.xml;
- "/var/lib/libvirt/hooks/qemu"."L+".argument = lib.getExe (
- pkgs.writeShellApplication {
+ systemd.tmpfiles.rules =
+ let
+ qemuHook = pkgs.writeShellApplication {
name = "qemu-hook";
runtimeInputs = [
@@ -157,11 +155,12 @@ in
pkgs.systemd
pkgs.kmod
];
+
text = ''
GUEST_NAME="$1"
OPERATION="$2"
- if [ "$GUEST_NAME" == "Windows" ]; then
+ if [ "$GUEST_NAME" != "Windows" ]; then
exit 0
fi
@@ -190,9 +189,14 @@ in
rm /etc/Xorg/ONE_MONITOR
systemctl start display-manager.service
fi
+
'';
- }
- );
- };
+ };
+ in
+ [
+ "L /etc/Xorg/active.conf - - - - /etc/Xorg/2_mon.conf"
+ "L+ /var/lib/libvirt/hooks/qemu - - - - ${lib.getExe qemuHook}"
+ "L+ /var/lib/libvirt/qemu/Windows.xml - - - - ${./Windows.xml}"
+ ];
_file = ./vfio.nix;
}
diff --git a/modules/DE/dwm.nix b/modules/DE/dwm.nix
index 16f6285..fcd8772 100644
--- a/modules/DE/dwm.nix
+++ b/modules/DE/dwm.nix
@@ -14,9 +14,10 @@
enable = true;
displayManager = {
sessionCommands = ''
- ${lib.getExe pkgs.feh} --bg-center "${self.packages.images}/recursion.png"
- ${lib.getExe pkgs.numlockx}
- ${lib.getExe pkgs.picom} &
+ feh --bg-center "${self.packages.images}/recursion.png"
+ numlockx
+ picom &
+ sxhkd &
'';
defaultSession = "none+dwm";
};
@@ -43,8 +44,56 @@
}
];
};
- environment.systemPackages = builtins.attrValues {
- inherit (suckless.packages) dmenu dwm st;
+ environment = {
+ systemPackages = builtins.attrValues {
+ inherit (suckless.packages) dmenu dwm st;
+ inherit (pkgs)
+ maim
+ playerctl
+ xclip
+ alsa-utils
+ feh
+ numlockx
+ picom
+ ;
+ sxhkd = pkgs.symlinkJoin {
+ name = "sxhkd";
+ nativeBuildInputs = [ pkgs.makeBinaryWrapper ];
+ paths = [ pkgs.sxhkd ];
+ postBuild = ''
+ wrapProgram $out/bin/sxhkd \
+ --add-flags "-c /etc/sxhkd/sxhkdrc"
+ '';
+ };
+ };
+ etc."sxhkd/sxhkdrc".text = ''
+ XF86AudioPlay
+ playerctl play-pause
+ XF86AudioPause
+ playerctl play-pause
+ XF86AudioStop
+ playerctl stop
+ XF86AudioNext
+ playerctl next
+ XF86AudioPrev
+ playerctl previous
+ XF86AudioRaiseVolume
+ amixer sset Master 1%+
+ XF86AudioLowerVolume
+ amixer sset Master 1%-
+ XF86AudioMute
+ amixer sset Master toggle
+ Print
+ maim $HOME/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
+ Print + shift
+ maim | xclip -selection clipboard -t image/png
+ super + Print
+ maim -s $HOME/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
+ super + Print + shift
+ maim -s | xclip -selection clipboard -t image/png
+ super + ctrl + r
+ pkill -usr1 -x sxhkd
+ '';
};
};
_file = ./dwm.nix;
diff --git a/modules/X11.nix b/modules/X11.nix
index 5058794..442605d 100644
--- a/modules/X11.nix
+++ b/modules/X11.nix
@@ -1,74 +1,14 @@
_:
+{ pkgs, lib, ... }:
{
- config,
- pkgs,
- lib,
- ...
-}:
-let
- cfg = config.local.X11Programs;
-in
-{
- options.local.X11Programs = {
- sxhkd.enable = lib.mkEnableOption "";
+ services.xserver = {
+ tty = lib.mkDefault 1;
+ exportConfiguration = true;
+ layout = "us";
+ libinput.enable = true;
+ xautolock.enable = false;
+ excludePackages = [ pkgs.xterm ];
+ desktopManager.xterm.enable = false;
};
- config = lib.mkMerge [
- {
- services.xserver = {
- tty = lib.mkDefault 1;
- exportConfiguration = true;
- layout = "us";
- libinput.enable = true;
- xautolock.enable = false;
- excludePackages = [ pkgs.xterm ];
- desktopManager.xterm.enable = false;
- };
- }
- (
- let
- configFile = pkgs.writeText "sxhkdrc" ''
- XF86AudioPlay
- playerctl play-pause
- XF86AudioPause
- playerctl play-pause
- XF86AudioStop
- playerctl stop
- XF86AudioNext
- playerctl next
- XF86AudioPrev
- playerctl previous
- XF86AudioRaiseVolume
- amixer sset Master 40+
- XF86AudioLowerVolume
- amixer sset Master 40-
- XF86AudioMute
- amixer sset Master toggle
- XF86MonBrightnessUp
- brightnessctl s 20+
- XF86MonBrightnessDown
- brightnessctl s 20-
- Print
- maim $HOME/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
- Print + shift
- maim | xclip -selection clipboard -t image/png
- super + Print
- maim -s $HOME/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
- super + Print + shift
- maim -s | xclip -selection clipboard -t image/png
- '';
- in
- lib.mkIf cfg.sxhkd.enable {
- environment.systemPackages = [
- pkgs.maim # screenshooter
- pkgs.brightnessctl # brightness control for laptop
- pkgs.playerctl # music control
- pkgs.xclip
- ];
- services.xserver.displayManager.sessionCommands = ''
- ${lib.getExe' pkgs.sxhkd "sxhkd"} -c ${configFile} &
- '';
- }
- )
- ];
_file = ./X11.nix;
}