From 14d4d05acc235ab7033316d16530783c90e95faa Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Fri, 5 Sep 2025 23:31:35 +0200 Subject: ... --- hosts/sif/greetd/default.nix | 123 +++++++++++++++++++++++++++++-------------- 1 file changed, 83 insertions(+), 40 deletions(-) (limited to 'hosts/sif/greetd/default.nix') diff --git a/hosts/sif/greetd/default.nix b/hosts/sif/greetd/default.nix index 37ca13c5..081b6346 100644 --- a/hosts/sif/greetd/default.nix +++ b/hosts/sif/greetd/default.nix @@ -1,49 +1,92 @@ -{ pkgs, ... }: -{ +{ config, pkgs, lib, flakeInputs, ... }: + +let + gkleenConfig = config.home-manager.users."gkleen"; + toIni = lib.generators.toINI { + mkKeyValue = + key: value: + let + value' = if lib.isBool value then lib.boolToString value else toString value; + in + "${lib.escape [ "=" ] key}=${value'}"; + }; + toDconfIni = let + gvariant = import (flakeInputs.home-manager + "/modules/lib/gvariant.nix") { inherit lib; }; + mkIniKeyValue = key: value: "${key}=${toString (gvariant.mkValue value)}"; + in lib.generators.toINI { mkKeyValue = mkIniKeyValue; }; +in { config = { services.greetd = { enable = true; - # settings.default_session.command = let - # cfg = config.programs.regreet; - # in pkgs.writeShellScript "greeter" '' - # modprobe -r nvidia_drm + settings.default_session.command = lib.getExe (pkgs.writeShellApplication { + name = "sway"; + runtimeInputs = [ pkgs.sway pkgs.fontconfig ]; + runtimeEnv = { + XDG_DATA_DIRS = lib.makeSearchPath "share" [ + pkgs.equilux-theme pkgs.paper-icon-theme pkgs.fira + ]; + QT_PLUGIN_PATH = lib.makeSearchPath (pkgs.qt6.qtbase.qtPluginPrefix) [ + pkgs.qt6Packages.qtbase + ]; + QML2_IMPORT_PATH = lib.makeSearchPath (pkgs.qt6.qtbase.qtQmlPrefix) [ + pkgs.qt6Packages.qtbase + ]; + QT_QPA_PLATFORMTHEME = "gtk3"; + XDG_CONFIG_DIR = pkgs.symlinkJoin { + name = "config"; + paths = [ + (pkgs.writeTextDir "gtk-3.0/settings.ini" (toIni { + Settings = { + gtk-font-name = "Fira Sans 10"; + gtk-theme-name = "Equilux-compact"; + gtk-icon-theme-name = "Paper-Mono-Dark"; + }; + })) + ]; + }; + # XDG_CACHE_HOME = "/var/cache/greetd/greeter"; + # XDG_CONFIG_HOME = "/var/cache/greetd/greeter/config"; + }; + text = '' + exec &>/tmp/sway-$$.log + + unset MANAGERPID SYSTEMD_EXEC_PID + + # ${lib.getExe' pkgs.coreutils "mkdir"} -p ''${XDG_CONFIG_HOME}/dconf + ${lib.getExe pkgs.dconf} load / < ${pkgs.writeText "dconf.ini" (toDconfIni { + "org/gnome/desktop/interface" = { + "color-scheme" = "prefer-dark"; + "font-name" = "Fira Sans 10"; + "gtk-theme" = "Equilux-compact"; + "icon-theme" = "Paper-Mono-Dark"; + }; + })} + + exec sway --unsupported-gpu --config ${pkgs.writeText "sway-config" '' + exec "${lib.getExe' config.systemd.package "systemctl"} --user import-environment {,WAYLAND_}DISPLAY SWAYSOCK; ${lib.getExe gkleenConfig.programs.quickshell.package} --path ${gkleenConfig.xdg.configFile."quickshell".source}/displaymanager.qml; swaymsg exit" - # exec ${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${lib.getExe cfg.package} - # ''; + input type:keyboard { + xkb_layout "us,us" + xkb_variant "dvp," + xkb_options "compose:caps,grp:win_space_toggle" + } + + output eDP-1 scale 1.5 + ''} + ''; + }); }; - systemd.services.greetd.environment = { - XKB_DEFAULT_LAYOUT = "us,us"; - XKB_DEFAULT_VARIANT = "dvp,"; - XKB_DEFAULT_OPTIONS = "compose:caps,grp:win_space_toggle"; + + # security.pam.services.greetd.fprintAuth = false; + + systemd.services.greetd.serviceConfig = { + ExecStartPre = ''${lib.getExe' pkgs.coreutils "install"} -d -o greeter -g greeter -m 0700 ''${CACHE_DIRECTORY}/greeter''; + # CacheDirectory = "greetd"; }; - programs.regreet = { - enable = true; - theme = { - package = pkgs.equilux-theme; - name = "Equilux-compact"; - }; - iconTheme = { - package = pkgs.paper-icon-theme; - name = "Paper-Mono-Dark"; - }; - font = { - package = pkgs.fira; - name = "Fira Sans"; - # size = 6; - }; - cageArgs = [ "-s" "-m" "last" ]; - settings = { - GTK.application_prefer_dark_theme = true; - widget.clock.format = "%F %H:%M:%S%:z"; - background = { - path = pkgs.runCommand "wallpaper.png" { - buildInputs = with pkgs; [ imagemagick ]; - } '' - magick ${./wallpaper.png} -filter Gaussian -resize 6.25% -define filter:sigma=2.5 -resize 1600% "$out" - ''; - fit = "Cover"; - }; - }; + + users.users.greeter = { + home = "/var/lib/greeter"; + createHome = true; }; }; } -- cgit v1.2.3