system/greetd: add basic regreet profile
This commit is contained in:
parent
22e4bad354
commit
b3494606f7
@ -1,9 +1,9 @@
|
|||||||
{ pkgs, config, lib, options, ... }:
|
{ pkgs, config, lib, options, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.nixfiles.programs.greetd;
|
cfg = config.nixfiles.programs.greetd;
|
||||||
inherit (lib.types) bool enum nullOr str path listOf;
|
inherit (lib) types optional optionals escapeShellArg escapeShellArgs;
|
||||||
|
inherit (types) bool enum nullOr str path listOf;
|
||||||
inherit (builtins) isNull;
|
inherit (builtins) isNull;
|
||||||
inherit (lib) optional optionals;
|
|
||||||
optionalsSet = val: optionals (!(isNull val));
|
optionalsSet = val: optionals (!(isNull val));
|
||||||
optionalSet = val: optional (!(isNull val));
|
optionalSet = val: optional (!(isNull val));
|
||||||
sessions = config.services.displayManager.sessionData.desktops;
|
sessions = config.services.displayManager.sessionData.desktops;
|
||||||
@ -13,6 +13,12 @@ let
|
|||||||
loginwrap=pkgs.writeShellScriptBin "loginwrap" ''
|
loginwrap=pkgs.writeShellScriptBin "loginwrap" ''
|
||||||
exec "$SHELL" -lc 'exec "$@"' "login-wrapper" "$@"
|
exec "$SHELL" -lc 'exec "$@"' "login-wrapper" "$@"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
mkPresetOption = x: lib.mkOption {
|
||||||
|
description = "${x} greetd configuration";
|
||||||
|
type = bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
@ -57,7 +63,29 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nixfiles.programs.greetd.presets.${cfg.preset}.enable = true;
|
|
||||||
|
# regreet config (it is configured through an upstream module; the only
|
||||||
|
# greetd-specific config set is default_session, so we can configure it
|
||||||
|
# here instead of above.)
|
||||||
|
programs.regreet = let
|
||||||
|
# lets us use wlr-randr
|
||||||
|
wrapperPackage = pkgs.writeShellScriptBin "regreet-wrapper" ''
|
||||||
|
${cfg.settings.graphicalInit}
|
||||||
|
|
||||||
|
exec ${escapeShellArg (lib.getExe pkgs.greetd.regreet)} "$@"
|
||||||
|
'';
|
||||||
|
in lib.mkIf cfg.presets.regreet.enable {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
package = wrapperPackage;
|
||||||
|
};
|
||||||
|
|
||||||
|
# self config
|
||||||
|
nixfiles.programs.greetd = {
|
||||||
|
presets.${cfg.preset}.enable = true;
|
||||||
|
settings.graphicalInit = lib.optionalString (cfg.settings.randr != null) ''
|
||||||
|
${lib.getExe pkgs.wlr-randr} ${escapeShellArgs cfg.settings.randr}
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
options.nixfiles.programs.greetd = {
|
options.nixfiles.programs.greetd = {
|
||||||
@ -66,7 +94,7 @@ in
|
|||||||
preset = lib.mkOption {
|
preset = lib.mkOption {
|
||||||
description = "greetd configuration to enable (shorthand for presets.<preset>.enable)";
|
description = "greetd configuration to enable (shorthand for presets.<preset>.enable)";
|
||||||
type = enum (lib.mapAttrsToList (name: value: name) options.nixfiles.programs.greetd.presets);
|
type = enum (lib.mapAttrsToList (name: value: name) options.nixfiles.programs.greetd.presets);
|
||||||
default = "tuigreet";
|
default = "regreet";
|
||||||
};
|
};
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
@ -94,6 +122,20 @@ in
|
|||||||
default = null;
|
default = null;
|
||||||
example = [ "Hyprland" ];
|
example = [ "Hyprland" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
graphicalInit = lib.mkOption {
|
||||||
|
description = "Commands to run upon initialization of a graphical greeter.";
|
||||||
|
type = lib.types.lines;
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
randr = lib.mkOption {
|
||||||
|
description = "Options to pass to wlr-randr";
|
||||||
|
type = nullOr (listOf str);
|
||||||
|
default = null;
|
||||||
|
example = [ "--output" "HDMI-A-3" "--off" ];
|
||||||
|
};
|
||||||
|
|
||||||
loginShell = lib.mkOption {
|
loginShell = lib.mkOption {
|
||||||
description = "Wrap in login shell to source .profile/.zshenv/etc. (if configurable).";
|
description = "Wrap in login shell to source .profile/.zshenv/etc. (if configurable).";
|
||||||
type = bool;
|
type = bool;
|
||||||
@ -135,10 +177,8 @@ in
|
|||||||
example = true;
|
example = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
presets.tuigreet.enable = lib.mkOption {
|
|
||||||
description = "tuigreet greetd configuration";
|
presets.regreet.enable = mkPresetOption "regreet";
|
||||||
type = bool;
|
presets.tuigreet.enable = mkPresetOption "tuigreet";
|
||||||
default = false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user