nixpkgs/nixos/modules/programs/sway.nix

71 lines
1.7 KiB
Nix
Raw Normal View History

2017-10-17 16:09:42 +02:00
{ config, pkgs, lib, ... }:
with lib;
2017-10-25 18:35:00 +02:00
let
cfg = config.programs.sway;
sway = pkgs.sway;
swayWrapped = pkgs.writeScriptBin "sway" ''
#! ${pkgs.stdenv.shell}
${cfg.extraSessionCommands}
PATH="${sway}/bin:$PATH"
exec ${pkgs.dbus.dbus-launch} --exit-with-session "${sway}/bin/sway"
'';
swayJoined = pkgs.symlinkJoin {
name = "sway-wrapped";
paths = [ swayWrapped sway ];
};
in
2017-10-17 16:09:42 +02:00
{
2017-10-25 18:35:00 +02:00
options.programs.sway = {
enable = mkEnableOption "sway";
extraSessionCommands = mkOption {
default = "";
type = types.lines;
example = ''
export XKB_DEFAULT_LAYOUT=us,ru
export XKB_DEFAULT_OPTIONS=grp:alt_shift_toggle,
export QT_QPA_PLATFORM=wayland
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
'';
description = ''
Shell commands executed just before sway is started.
'';
};
2017-10-17 16:09:42 +02:00
2017-10-25 18:35:00 +02:00
extraPackages = mkOption {
type = with types; listOf package;
default = with pkgs; [ ];
example = literalExample ''
with pkgs; [
i3status
xwayland j4-dmenu-desktop dunst
qt5.qtwayland
imagemagick
]
'';
description = ''
Extra packages to be installed system wide.
'';
};
};
config = mkIf cfg.enable {
environment.systemPackages = [ swayJoined ] ++ cfg.extraPackages;
2017-10-17 16:09:42 +02:00
security.wrappers.sway = {
2017-10-25 18:35:00 +02:00
source = "${swayJoined}/bin/sway";
2017-10-17 16:09:42 +02:00
capabilities = "cap_sys_ptrace,cap_sys_tty_config=eip";
owner = "root";
group = "sway";
permissions = "u+rx,g+rx";
};
users.extraGroups.sway = {};
2017-10-25 18:35:00 +02:00
hardware.opengl.enable = mkDefault true;
fonts.enableDefaultFonts = mkDefault true;
2017-10-17 16:09:42 +02:00
};
}