Greetd: Difference between revisions
imported>CrunchyFlakes m Remove "-c sway" from gtkgreet startup option as that functionality is already provided by the specified "greetv/environments" file. |
imported>CrunchyFlakes m Remove "-c sway" from gtkgreet startup, because that functionality is already provided by specified "greetd/environments" file. |
||
Line 9: | Line 9: | ||
swayConfig = pkgs.writeText "greetd-sway-config" '' | swayConfig = pkgs.writeText "greetd-sway-config" '' | ||
# `-l` activates layer-shell mode. Notice that `swaymsg exit` will run after gtkgreet. | # `-l` activates layer-shell mode. Notice that `swaymsg exit` will run after gtkgreet. | ||
exec "${pkgs.greetd.gtkgreet}/bin/gtkgreet -l | exec "${pkgs.greetd.gtkgreet}/bin/gtkgreet -l; swaymsg exit" | ||
bindsym Mod4+shift+e exec swaynag \ | bindsym Mod4+shift+e exec swaynag \ | ||
-t warning \ | -t warning \ |
Revision as of 09:41, 21 March 2023
greetd is a minimal login manager.
Usage
Using this configuration, greetd will use the greeter gtkgreet
, asking for user, password and which session to start as defined in the /etc/greetd/environments
file:
/etc/nixos/configuration.nix
{ config, lib, pkgs, ... }:
let
swayConfig = pkgs.writeText "greetd-sway-config" ''
# `-l` activates layer-shell mode. Notice that `swaymsg exit` will run after gtkgreet.
exec "${pkgs.greetd.gtkgreet}/bin/gtkgreet -l; swaymsg exit"
bindsym Mod4+shift+e exec swaynag \
-t warning \
-m 'What do you want to do?' \
-b 'Poweroff' 'systemctl poweroff' \
-b 'Reboot' 'systemctl reboot'
'';
in
{
services.greetd = {
enable = true;
settings = {
default_session = {
command = "${pkgs.sway}/bin/sway --config ${swayConfig}";
};
};
};
environment.etc."greetd/environments".text = ''
sway
fish
bash
startxfce4
'';
}
In this minimal example, the Wayland compositor Sway automatically gets executed by the user myuser
after successfull boot, no password required:
/etc/nixos/configuration.nix
services.greetd = {
enable = true;
settings = rec {
initial_session = {
command = "${pkgs.sway}/bin/sway";
user = "myuser";
};
default_session = initial_session;
};
};
initial_session
is executed automatically. If you just define default_session
, greetd will ask for a password and execute command
with user myuser
.