From abb00c97a1a299f9c7be47d1f6ea8b80246d3a53 Mon Sep 17 00:00:00 2001
From: notohh <github@notohh.dev>
Date: Wed, 17 Apr 2024 20:29:26 -0400
Subject: [PATCH] wayland: init regreet

---
 home/wayland/default.nix         | 15 +------
 home/wayland/services/greetd.nix | 76 ++++++++++++++++++++++++++++++--
 2 files changed, 75 insertions(+), 16 deletions(-)

diff --git a/home/wayland/default.nix b/home/wayland/default.nix
index af9a378..84f761a 100644
--- a/home/wayland/default.nix
+++ b/home/wayland/default.nix
@@ -1,23 +1,12 @@
 {
   pkgs,
+  config,
   inputs,
   ...
-}: let
-  dbus-hyprland-environment = pkgs.writeTextFile {
-    name = "dbus-hyprland-environment";
-    destination = "/bin/dbus-hyprland-environment";
-    executable = true;
-    text = ''
-      dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=hyprland
-      systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
-      systemctl --user start pipewire wireplumber pipewire-media-session xdg-desktop-portal xdg-desktop-portal-hyprland
-    '';
-  };
-in {
+}: {
   imports = [./services/greetd.nix];
   environment = {
     systemPackages = with pkgs; [
-      dbus-hyprland-environment
       wayland
       glib
       grim
diff --git a/home/wayland/services/greetd.nix b/home/wayland/services/greetd.nix
index 3dd2144..a052737 100644
--- a/home/wayland/services/greetd.nix
+++ b/home/wayland/services/greetd.nix
@@ -1,12 +1,82 @@
-_: {
+{
+  pkgs,
+  inputs,
+  lib,
+  ...
+}: let
+  hyprlandGreetdConf = pkgs.writeText "hyprland-greetd-conf.conf" ''
+
+    monitor = HDMI-A-1,disable
+    monitor = DP-1,disable
+    monitor = DP-2,2560x1440@144, 0x0, auto
+    monitor = DP-3,disable
+
+    env = LIBVA_DRIVER_NAME,nvidia
+    env = XDG_SESSION_TYPE,wayland
+    env = GBM_BACKEND,nvidia-drm
+    env = __GLX_VENDOR_LIBRARY_NAME,nvidia
+    env = WLR_NO_HARDWARE_CURSORS,1
+
+    exec-once = ${pkgs.dbus}/bin/dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE
+    exec-once = ${lib.getExe pkgs.greetd.regreet}; hyprctl dispatch exit
+    exec-once = systemctl --user restart xdg-desktop-portal xdg-desktop-portal-hyprland
+
+    windowrulev2 = fullscreen, title:^regreet$
+    windowrulev2 = move 0 0, title:^regreet$
+
+    $mainMod = SUPER
+    bind = $mainMod, Q, exec, reboot
+
+    input {
+      kb_layout = us
+      follow_mouse = 1
+      sensitivity = -0.5
+      force_no_accel = true
+    }
+
+    animations {
+      enabled = false
+      first_launch_animation = false
+    }
+
+    misc {
+      disable_hyprland_logo = true
+      disable_splash_rendering = true
+    }
+
+  '';
+in {
   services.greetd = {
     enable = true;
     settings = rec {
       initial_session = {
-        command = "Hyprland";
-        user = "notoh";
+        command = "${lib.getExe inputs.hyprland.packages.${pkgs.system}.default} --config ${hyprlandGreetdConf}";
+        user = "greeter";
       };
       default_session = initial_session;
     };
   };
+  programs.regreet = {
+    enable = true;
+    settings = {
+      background.path = "/etc/greetd/frieren.png";
+      env = {
+        SESSION_DIRS = "/etc/greetd/environments";
+      };
+      terminal = {
+        vt = 1;
+      };
+      commands = {
+        reboot = ["systemctl" "reboot"];
+        poweroff = ["systemctl" "poweroff"];
+      };
+      GTK = {
+        application_prefer_dark_theme = true;
+        theme_name = "Tokyonight-Dark-BL";
+        icon_theme_name = "Papirus-Dark";
+        cursor_theme_name = "Bibata-Modern-Classic";
+        font_name = "Noto Sans 11";
+      };
+    };
+  };
 }