nixos/services/desktop.nix
2019-09-23 23:33:22 +02:00

63 lines
1.8 KiB
Nix

{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.machine;
ifelse = a: b: c: if a then b else c;
in mkIf (elem "desktop" cfg.services) {
programs.sway = mkIf (elem "sway" cfg.desktop.wms) # (import ./desktop/sway.nix { inherit pkgs; });
{
enable = true;
extraPackages = with pkgs; [
file i3status dmenu
qt5.qtwayland
grim slurp
swaylock
swayidle
light
mako
wl-clipboard
wf-recorder
];
extraSessionCommands = ''
export GDK_BACKEND=wayland
export CLUTTER_BACKEND=wayland
export SDL_VIDEODRIVER=wayland
# needs qt5.qtwayland in systemPackages
export QT_QPA_PLATFORM=wayland-egl
export QT_WAYLAND_FORCE_DPI=physical
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
# Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly:
export _JAVA_AWT_WM_NONREPARENTING=1
'';
};
services.gvfs.enable = true;
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.gnome3.gvfs}/lib/gio/modules" ];
services.xserver = {
enable = !(elem "sway" cfg.desktop.wms);
layout = "de";
videoDrivers = [ "intel" ];
windowManager = mkIf (cfg.desktop.wms != []) {
i3 = mkIf (elem "i3" cfg.desktop.wms) (import ./desktop/i3.nix { inherit pkgs; });
default = elemAt cfg.desktop.wms 0;
};
# add switch for Lilim
multitouch = {
enable = true;
invertScroll = true;
};
libinput = {
enable = true;
tapping = true;
disableWhileTyping = false;
naturalScrolling = false;
horizontalScrolling = true;
};
# Still waiting for streamlined dpi settings... will write a propper solution once it's done >.<
# see https://github.com/NixOS/nixpkgs/pull/25892
dpi = ifelse (cfg.hostName == "Lilim") 192 null;
};
}