diff --git a/flake.nix b/flake.nix index 67d3ffd..b9293df 100644 --- a/flake.nix +++ b/flake.nix @@ -95,6 +95,9 @@ ./system/configuration.nix ./system/secrets.nix ./system/specialisation.nix + ./system/greetd.nix + { login-manager.greetd.enable = desktop == "sway" || desktop == "hyprland"; } + inputs.agenix.nixosModules.default inputs.hyprland.nixosModules.default inputs.dzgui-nix.nixosModules.default @@ -109,7 +112,7 @@ # arguments to home.nix home-manager.extraSpecialArgs = { inherit inputs; }; } - ] ++ lib.optional (desktop == "sway") ./system/sway.nix + ] ++ lib.optional (desktop == "gnome") ./system/gnome.nix ++ lib.optional (desktop == "kde") ./system/kde.nix; in diff --git a/system/greetd.nix b/system/greetd.nix new file mode 100644 index 0000000..72b82c1 --- /dev/null +++ b/system/greetd.nix @@ -0,0 +1,86 @@ +{ lib, pkgs, config, ... }: +let + inherit (pkgs.uservars) key accent font theme desktop; + + cfg = config.login-manager.greetd; +in +{ + options.login-manager.greetd = { + enable = lib.mkEnableOption "Use greetd as login manager"; + }; + + config = lib.mkIf cfg.enable { + + # Enable the X11 windowing system. + services.xserver.enable = false; + + # enable sway window manager + programs.sway = { + enable = true; + wrapperFeatures.gtk = true; + }; + + services.dbus.enable = true; + programs.wshowkeys.enable = true; + xdg.portal = { + enable = true; + wlr.enable = true; + # Always pick the first monitor, this is fine since I only ever use a single monitor + wlr.settings.screencast.chooser_type = "none"; + # gtk portal needed to make gtk apps happy + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + }; + services.greetd = + let + greetd_main_script = pkgs.writeShellScriptBin "main" '' + ${pkgs.dbus-sway-environment}/bin/dbus-sway-environment + export XDG_CURRENT_DESKTOP=sway GTK_THEME="${theme.gtk_theme}" XCURSOR_THEME="${theme.cursor_theme}" + ${pkgs.greetd.gtkgreet}/bin/gtkgreet -l -c ${desktop} + swaymsg exit + ''; + swayConfig = pkgs.writeText "greetd-sway-config" '' + # `-l` activates layer-shell mode. Notice that `swaymsg exit` will run after gtkgreet. + exec "${greetd_main_script}/bin/main" + bindsym Mod4+shift+e exec swaynag \ + -t warning \ + -m 'What do you want to do?' \ + -b 'Poweroff' 'systemctl poweroff' \ + -b 'Reboot' 'systemctl reboot' + input "*" { + repeat_delay 200 + repeat_rate 30 + xkb_layout us(colemak) + xkb_numlock enabled + xkb_options lv3:lsgt_switch,grp:shifts_toggle + } + ''; + in + { + enable = true; + settings = { + initial_session = { + command = "${pkgs.sway}/bin/sway"; + user = "lelgenio"; + }; + default_session = { + command = "${pkgs.sway}/bin/sway --config ${swayConfig}"; + }; + }; + }; + environment.systemPackages = with pkgs; [ + sway + swaylock + swayidle + + wayland + pkgs.xdg-desktop-portal + pkgs.xdg-desktop-portal-wlr + + ## Theme + capitaine-cursors + bibata-cursors + orchis_theme_compact + papirus_red + ]; + }; +} diff --git a/system/sway.nix b/system/sway.nix deleted file mode 100644 index db3ed7a..0000000 --- a/system/sway.nix +++ /dev/null @@ -1,77 +0,0 @@ -{ pkgs, ... }: -let - inherit (pkgs.uservars) key accent font theme; -in -{ - - # Enable the X11 windowing system. - services.xserver.enable = false; - - # enable sway window manager - programs.sway = { - enable = true; - wrapperFeatures.gtk = true; - }; - services.dbus.enable = true; - programs.wshowkeys.enable = true; - xdg.portal = { - enable = true; - wlr.enable = true; - # Always pick the first monitor, this is fine since I only ever use a single monitor - wlr.settings.screencast.chooser_type = "none"; - # gtk portal needed to make gtk apps happy - extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; - }; - services.greetd = - let - greetd_main_script = pkgs.writeShellScriptBin "main" '' - ${pkgs.dbus-sway-environment}/bin/dbus-sway-environment - export XDG_CURRENT_DESKTOP=sway GTK_THEME="${theme.gtk_theme}" XCURSOR_THEME="${theme.cursor_theme}" - ${pkgs.greetd.gtkgreet}/bin/gtkgreet -l -c sway - swaymsg exit - ''; - swayConfig = pkgs.writeText "greetd-sway-config" '' - # `-l` activates layer-shell mode. Notice that `swaymsg exit` will run after gtkgreet. - exec "${greetd_main_script}/bin/main" - bindsym Mod4+shift+e exec swaynag \ - -t warning \ - -m 'What do you want to do?' \ - -b 'Poweroff' 'systemctl poweroff' \ - -b 'Reboot' 'systemctl reboot' - input "*" { - repeat_delay 200 - repeat_rate 30 - xkb_layout us(colemak) - xkb_numlock enabled - xkb_options lv3:lsgt_switch,grp:shifts_toggle - } - ''; - in - { - enable = true; - settings = { - initial_session = { - command = "${pkgs.sway}/bin/sway"; - user = "lelgenio"; - }; - default_session = { - command = "${pkgs.sway}/bin/sway --config ${swayConfig}"; - }; - }; - }; - environment.systemPackages = with pkgs; [ - sway - swaylock - swayidle - - wayland - pkgs.xdg-desktop-portal - pkgs.xdg-desktop-portal-wlr - - ## Theme - capitaine-cursors - bibata-cursors - orchis_theme_compact - papirus_red - ]; -}