nix/modules/desktop/default.nix

132 lines
4.1 KiB
Nix

{
config,
lib,
pkgs,
...
}:
{
imports = [
./applications.nix
./fonts.nix
./games.nix
./nautilus.nix
];
options.bchmnn = {
gui = {
enable = lib.mkEnableOption "gui";
greeter = {
enable = lib.mkEnableOption "greeter";
};
flavour = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ "sway" ];
example = [
"sway"
"i3"
];
description = ''
The flavour (WM) for your system to use
'';
};
};
};
config = lib.mkIf (config.bchmnn.gui.enable && config.bchmnn.gui.flavour != [ ]) {
environment.pathsToLink = [ "/libexec" ]; # links /libexec from derivations to /run/current-system/sw
programs.sway.enable = builtins.elem "sway" config.bchmnn.gui.flavour;
services.xserver.windowManager.i3.enable = builtins.elem "i3" config.bchmnn.gui.flavour;
services.libinput.enable = true;
services.xserver = {
enable = (
builtins.elem "i3" config.bchmnn.gui.flavour || builtins.elem "gnome" config.bchmnn.gui.flavour
);
desktopManager.gnome.enable = builtins.elem "gnome" config.bchmnn.gui.flavour;
displayManager = {
gdm.enable = builtins.elem "gnome" config.bchmnn.gui.flavour;
startx.enable = builtins.elem "i3" config.bchmnn.gui.flavour;
};
};
environment.systemPackages = [
(pkgs.writeShellScriptBin "sway-run" ''
export WLR_NO_HARDWARE_CURSORS=1
exec ${pkgs.sway}/bin/sway "$@"
'')
];
environment = {
etc = {
"greetd/environments".text = (lib.strings.concatLines config.bchmnn.gui.flavour);
"greetd/kanshi-config".text = ''
profile nomad {
output "LVDS-1" enable
}
profile iroh {
output "DP-3" enable mode 2560x1440 position 0,0
output "DP-2" enable mode 2560x1440 position 2560,0
output "DP-1" enable mode 2560x1440 position 5120,0
}
profile station {
output "LVDS-1" disable
output "Dell Inc. DELL U2515H 9X2VY5490XUL" enable mode 1920x1080 position 0,0
output "Dell Inc. DELL U2515H 9X2VY5C7138L" enable mode 1920x1080 position 1920,0
output "HJW VGA TO HDMI 0x00000100" enable mode 1920x1080 position 3840,0
}
'';
"greetd/sway-config".text = ''
exec "${pkgs.kanshi}/bin/kanshi --config /etc/greetd/kanshi-config"
exec "${pkgs.greetd.gtkgreet}/bin/gtkgreet -l; 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'
include /etc/sway/config.d/*
'';
};
};
services.greetd = {
enable = config.bchmnn.gui.greeter.enable;
settings = {
default_session = {
command =
"sway-run --config /etc/greetd/sway-config"
+ lib.optionalString config.bchmnn.nvidia.enable " --unsupported-gpu";
};
};
};
# TODO workaround to get swaylock accepting pw
# https://github.com/NixOS/nixpkgs/issues/158025
security.pam.services = lib.mkIf (lib.elem "sway" config.bchmnn.gui.flavour) { swaylock = { }; };
xdg.portal = {
enable = true;
wlr.enable = true;
config.common.default = "*";
extraPortals = lib.optionals (lib.elem "sway" config.bchmnn.gui.flavour) [
pkgs.xdg-desktop-portal-wlr
];
};
environment.sessionVariables.GST_PLUGIN_SYSTEM_PATH_1_0 =
lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0"
(
with pkgs.gst_all_1;
[
gst-plugins-base
gst-plugins-good
gst-plugins-bad
gst-plugins-ugly
]
);
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
environment.variables =
lib.mkIf (builtins.elem pkgs.intel-media-driver config.hardware.opengl.extraPackages)
{ LIBVA_DRIVER_NAME = "iHD"; };
};
}