nixpkgs/nixos/modules/programs/oblogout.nix

177 lines
3.7 KiB
Nix
Raw Normal View History

2016-10-23 11:45:30 +02:00
# Global configuration for oblogout.
{ config, lib, pkgs, ... }:
with lib;
let cfg = config.programs.oblogout;
in
{
###### interface
options = {
programs.oblogout = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to install OBLogout and create <filename>/etc/oblogout.conf</filename>.
See <filename>${pkgs.oblogout}/share/doc/README</filename>.
'';
};
opacity = mkOption {
type = types.int;
default = 70;
description = ''
Opacity percentage of Cairo rendered backgrounds.
2016-10-23 11:45:30 +02:00
'';
};
bgcolor = mkOption {
type = types.str;
default = "black";
description = ''
Colour name or hex code (#ffffff) of the background color.
2016-10-23 11:45:30 +02:00
'';
};
buttontheme = mkOption {
type = types.str;
default = "simplistic";
description = ''
Icon theme for the buttons, must be in the themes folder of
the package, or in
<filename>~/.themes/&lt;name&gt;/oblogout/</filename>.
2016-10-23 11:45:30 +02:00
'';
};
buttons = mkOption {
type = types.str;
default = "cancel, logout, restart, shutdown, suspend, hibernate";
description = ''
List and order of buttons to show.
2016-10-23 11:45:30 +02:00
'';
};
cancel = mkOption {
type = types.str;
default = "Escape";
description = ''
Cancel logout/shutdown shortcut.
2016-10-23 11:45:30 +02:00
'';
};
shutdown = mkOption {
type = types.str;
default = "S";
description = ''
Shutdown shortcut.
2016-10-23 11:45:30 +02:00
'';
};
restart = mkOption {
type = types.str;
default = "R";
description = ''
Restart shortcut.
2016-10-23 11:45:30 +02:00
'';
};
suspend = mkOption {
type = types.str;
default = "U";
description = ''
Suspend shortcut.
2016-10-23 11:45:30 +02:00
'';
};
logout = mkOption {
type = types.str;
default = "L";
description = ''
Logout shortcut.
2016-10-23 11:45:30 +02:00
'';
};
lock = mkOption {
type = types.str;
default = "K";
description = ''
Lock session shortcut.
2016-10-23 11:45:30 +02:00
'';
};
hibernate = mkOption {
type = types.str;
default = "H";
description = ''
Hibernate shortcut.
2016-10-23 11:45:30 +02:00
'';
};
clogout = mkOption {
type = types.str;
default = "openbox --exit";
description = ''
Command to logout.
2016-10-23 11:45:30 +02:00
'';
};
clock = mkOption {
type = types.str;
default = "";
description = ''
Command to lock screen.
2016-10-23 11:45:30 +02:00
'';
};
cswitchuser = mkOption {
type = types.str;
default = "";
description = ''
Command to switch user.
2016-10-23 11:45:30 +02:00
'';
};
};
};
###### implementation
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.oblogout ];
environment.etc."oblogout.conf".text = ''
[settings]
usehal = false
[looks]
opacity = ${toString cfg.opacity}
bgcolor = ${cfg.bgcolor}
buttontheme = ${cfg.buttontheme}
buttons = ${cfg.buttons}
[shortcuts]
cancel = ${cfg.cancel}
shutdown = ${cfg.shutdown}
restart = ${cfg.restart}
suspend = ${cfg.suspend}
logout = ${cfg.logout}
lock = ${cfg.lock}
hibernate = ${cfg.hibernate}
[commands]
shutdown = systemctl poweroff
restart = systemctl reboot
suspend = systemctl suspend
hibernate = systemctl hibernate
logout = ${cfg.clogout}
lock = ${cfg.clock}
switchuser = ${cfg.cswitchuser}
'';
};
}