Greetd: Difference between revisions

From NixOS Wiki
imported>Onny
Add further configuration example
imported>Equirosa
m fix small typo
Line 36: Line 36:
</nowiki>}}
</nowiki>}}


In this minimal example, the Wayland compository [[Sway]] automatically gets executed by the user <code>myuser</code> after successfull boot, no password required:
In this minimal example, the Wayland compositor [[Sway]] automatically gets executed by the user <code>myuser</code> after successfull boot, no password required:


{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>

Revision as of 05:58, 6 June 2022

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 -c sway; 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.