{ 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 = 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" input type:keyboard { xkb_layout "us,us" xkb_variant "dvp," xkb_options "compose:caps,grp:win_space_toggle" } output eDP-1 scale 1.5 ''} ''; }); }; # 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"; }; users.users.greeter = { home = "/var/lib/greeter"; createHome = true; }; }; }