Personal Nix setup
at main 2.1 kB view raw
1{ lib, config, pkgs, user, ... } @ inputs: 2 3with lib; 4let 5 inherit (import ../../lib/theme.nix inputs) cursorTheme defaultFont iconTheme gtkTheme kvantumTheme; 6 cfg = config.modules.desktop; 7in { 8 options.modules.desktop.session = { 9 enable = mkOption { 10 default = cfg.enable; 11 example = true; 12 description = "Whether to enable session and desktop environment."; 13 type = types.bool; 14 }; 15 }; 16 17 config = mkIf cfg.session.enable { 18 users.users."${user}".extraGroups = [ "video" ]; 19 20 boot = { 21 plymouth.enable = true; 22 initrd.verbose = mkDefault false; 23 consoleLogLevel = 0; 24 }; 25 26 environment.sessionVariables = { 27 GSK_RENDERER = mkDefault "ngl"; 28 QT_QPA_PLATFORM = mkDefault "wayland;xcb"; 29 GDK_BACKEND = mkDefault "wayland,x11,*"; 30 SDL_VIDEODRIVER = mkDefault "wayland,x11"; 31 NIXOS_OZONE_WL = mkDefault "1"; 32 }; 33 34 services = { 35 greetd = { 36 enable = true; 37 settings = { 38 terminal.vt = 1; 39 default_session.command = let 40 hyprConfig = pkgs.writeTextFile { 41 name = "hyprland-greeter.conf"; 42 text = '' 43 source=${toString cfg.hyprland.configFile} 44 exec-once = ${getExe config.programs.regreet.package}; hyprctl dispatch exit 45 animations { 46 enabled = false 47 } 48 ''; 49 }; 50 in escapeShellArgs [ 51 "${pkgs.dbus}/bin/dbus-run-session" 52 "${getExe pkgs.hyprland}" 53 "-c" (toString hyprConfig) 54 ]; 55 }; 56 }; 57 upower.enable = true; 58 gvfs.enable = true; 59 logind.settings.Login = { 60 powerKey = "suspend"; 61 powerKeyLongPress = "poweroff"; 62 lidSwitch = "suspend"; 63 }; 64 }; 65 66 programs = { 67 regreet = { 68 enable = true; 69 inherit cursorTheme iconTheme; 70 font = defaultFont; 71 theme = gtkTheme; 72 settings.GTK.application_prefer_dark_theme = true; 73 }; 74 }; 75 76 security.polkit.enable = true; 77 }; 78}