diff --git a/machines/universedesktop/desktop/displaymanager.nix b/machines/universedesktop/desktop/displaymanager.nix index 50c41e9..334bf66 100644 --- a/machines/universedesktop/desktop/displaymanager.nix +++ b/machines/universedesktop/desktop/displaymanager.nix @@ -1,5 +1,9 @@ { config, pkgs, lib, ... }: let - + empttyConf = pkgs.writeText "emptty-config" '' + TTY_NUMBER=7 + + WAYLAND_SESSIONS_PATH="${config.services.xserver.displayManager.sessionData.desktops}/share/wayland-sessions" + ''; in { imports = [ ./dwl.nix @@ -11,11 +15,27 @@ in { }; systemd.services.display-manager = { enable = true; + path = [pkgs.dwl]; serviceConfig = { - EnvironmentFile=${./emptty.conf}; + EnvironmentFile = empttyConf; Type="idle"; TTYPath="/dev/tty7"; TTYReset="yes"; + SendSIGHUP="yes"; + KillMode="process"; }; }; + + environment.etc."emptty/conf".source = empttyConf; + + services.displayManager.sessionPackages = [ pkgs.dwl ]; + + security.pam.services = { + emptty.text = '' + auth substack sshd + account include sshd + password substack sshd + session include sshd + ''; + }; } diff --git a/machines/universedesktop/desktop/dwl.nix b/machines/universedesktop/desktop/dwl.nix index dcac406..18d0319 100644 --- a/machines/universedesktop/desktop/dwl.nix +++ b/machines/universedesktop/desktop/dwl.nix @@ -1,4 +1,14 @@ -{ config, pkgs, lib, ... }: { +{ config, pkgs, lib, ... }: let + dwl-startup = pkgs.writeScript "dwl-startup.sh" '' + #!${pkgs.bash}/bin/bash + ${pkgs.yambar}/bin/yambar + ''; + + launch_emacs = pkgs.writeScript "emacsclient-or-start" '' + #!${pkgs.bash}/bin/bash + emacsclient --create-frame --alternate-editor="" + ''; +in { imports = [ ./wayland.nix ]; @@ -7,11 +17,32 @@ (final: prev: { dwl = prev.dwl.overrideAttrs (old: { postPatch = '' - termcmd=${pkgs.foot}/bin/foot - menucmd=${pkgs.bemenu}/bin/bemenu + export termcmd=${pkgs.foot}/bin/foot + export editcmd=${launch_emacs} + export menucmd=${pkgs.fuzzel}/bin/fuzzel substituteAll ${./dwl/config.def.h} ./config.def.h ''; + postInstall = '' + sed -i "s#Exec=dwl#Exec=dwl -s ${dwl-startup}#" $out/share/wayland-sessions/dwl.desktop + chmod ugo+x $out/share/wayland-sessions/dwl.desktop + ''; + passthru.providedSessions = ["dwl"]; }); }) ]; + + environment.sessionVariables = { + NIXOS_OZONE_WL=1; + WLR_NO_HARDWARE_CURSORS=1; + SDL_VIDEODRIVER="wayland"; + QT_QPA_PLATFORM="wayland-egl"; + QT_WAYLAND_DISABLE_WINDOW_DECORATIONS="1"; + __JAVA_AWT_WM_NONREPARENTING=1; + }; + + environment.systemPackages = with pkgs; [ + dwl + yambar + foot + ]; } diff --git a/machines/universedesktop/desktop/dwl/config.def.h b/machines/universedesktop/desktop/dwl/config.def.h index 7feea53..ed7afeb 100644 --- a/machines/universedesktop/desktop/dwl/config.def.h +++ b/machines/universedesktop/desktop/dwl/config.def.h @@ -38,10 +38,10 @@ static const Layout layouts[] = { /* monitors */ /* NOTE: ALWAYS add a fallback rule, even if you are completely sure it won't be used */ static const MonitorRule monrules[] = { - /* name mfact nmaster scale layout rotate/reflect x y */ - { "eDP-1", 0.5f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, 0, 0 }, - { "eDP-1", 0.5f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, 2560, 0 }, - { "eDP-1", 0.5f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, 2560+3440, 0 }, + /* name mfact nmaster scale layout rotate/reflect x y */ + { "DP-3", 0.5f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, 0, 0 }, + { "DP-2", 0.5f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, 2560, 0 }, + { "HDMI-A-1", 0.5f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, 2560+3440, 0 }, /* defaults */ { NULL, 0.55f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 }, }; @@ -102,7 +102,7 @@ LIBINPUT_CONFIG_TAP_MAP_LMR -- 1/2/3 finger tap maps to left/middle/right static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TAP_MAP_LRM; /* If you want to use the windows key for MODKEY, use WLR_MODIFIER_LOGO */ -#define MODKEY WLR_MODIFIER_ALT +#define MODKEY WLR_MODIFIER_LOGO #define TAGKEYS(KEY,SKEY,TAG) \ { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ @@ -115,20 +115,22 @@ static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TA /* commands */ static const char *termcmd[] = { "@termcmd@", NULL }; +static const char *editcmd[] = { "@editcmd@", NULL }; static const char *menucmd[] = { "@menucmd@", NULL }; static const Key keys[] = { /* Note that Shift changes certain key codes: c -> C, 2 -> at, etc. */ /* modifier key function argument */ - { MODKEY, XKB_KEY_p, spawn, {.v = menucmd} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = termcmd} }, + { MODKEY, XKB_KEY_r, spawn, {.v = menucmd} }, + { MODKEY, XKB_KEY_Return, spawn, {.v = termcmd} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = editcmd} }, { MODKEY, XKB_KEY_j, focusstack, {.i = +1} }, { MODKEY, XKB_KEY_k, focusstack, {.i = -1} }, { MODKEY, XKB_KEY_i, incnmaster, {.i = +1} }, { MODKEY, XKB_KEY_d, incnmaster, {.i = -1} }, { MODKEY, XKB_KEY_h, setmfact, {.f = -0.05f} }, { MODKEY, XKB_KEY_l, setmfact, {.f = +0.05f} }, - { MODKEY, XKB_KEY_Return, zoom, {0} }, + { MODKEY, XKB_KEY_z, zoom, {0} }, { MODKEY, XKB_KEY_Tab, view, {0} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_C, killclient, {0} }, { MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} }, @@ -136,7 +138,7 @@ static const Key keys[] = { { MODKEY, XKB_KEY_m, setlayout, {.v = &layouts[2]} }, { MODKEY, XKB_KEY_space, setlayout, {0} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} }, - { MODKEY, XKB_KEY_e, togglefullscreen, {0} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_F, togglefullscreen, {0} }, { MODKEY, XKB_KEY_0, view, {.ui = ~0} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} }, { MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} }, diff --git a/machines/universedesktop/desktop/wayland.nix b/machines/universedesktop/desktop/wayland.nix index 126d0b3..aacadac 100644 --- a/machines/universedesktop/desktop/wayland.nix +++ b/machines/universedesktop/desktop/wayland.nix @@ -7,8 +7,24 @@ nvidia = { modesetting.enable = true; - powerManagement.enable = true; + powerManagement.enable = false; + powerManagement.finegrained = false; + nvidiaSettings = true; open = false; + package = let + rcu_patch = pkgs.fetchpatch { + url = "https://github.com/gentoo/gentoo/raw/c64caf53/x11-drivers/nvidia-drivers/files/nvidia-drivers-470.223.02-gpl-pfn_valid.patch"; + hash = "sha256-eZiQQp2S/asE7MfGvfe6dA/kdCvek9SYa/FFGp24dVg="; + }; + in config.boot.kernelPackages.nvidiaPackages.mkDriver { + version = "535.154.05"; + sha256_64bit = "sha256-fpUGXKprgt6SYRDxSCemGXLrEsIA6GOinp+0eGbqqJg="; + sha256_aarch64 = "sha256-G0/GiObf/BZMkzzET8HQjdIcvCSqB1uhsinro2HLK9k="; + openSha256 = "sha256-wvRdHguGLxS0mR06P5Qi++pDJBCF8pJ8hr4T8O6TJIo="; + settingsSha256 = "sha256-9wqoDEWY4I7weWW05F4igj1Gj9wjHsREFMztfEmqm10="; + persistencedSha256 = "sha256-d0Q3Lk80JqkS1B54Mahu2yY/WocOqFFbZVBh+ToGhaE="; + patches = [ rcu_patch ]; + }; }; }; programs.xwayland.enable = true;