105 lines
2.2 KiB
Nix
105 lines
2.2 KiB
Nix
{ lib, config, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.roles.desktop;
|
|
|
|
basePackages = with pkgs; [
|
|
brightnessctl
|
|
];
|
|
|
|
x11BasePackages = with pkgs; [
|
|
|
|
];
|
|
|
|
x11OnlyPackages = with pkgs; [
|
|
emacs
|
|
];
|
|
|
|
waylandBasePackages = with pkgs; [
|
|
grim
|
|
slurp
|
|
wl-clipboard
|
|
mako
|
|
];
|
|
|
|
waylandOnlyPackages = with pkgs; [
|
|
emacs-gtk
|
|
];
|
|
in
|
|
{
|
|
options.roles.desktop = {
|
|
enable = mkEnableOption "Enable the desktop role";
|
|
x11Only = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
};
|
|
};
|
|
|
|
config =
|
|
{
|
|
services.xserver.xkb = {
|
|
layout = "us";
|
|
variant = "";
|
|
options = "caps:escape";
|
|
};
|
|
services.xserver.enable = true;
|
|
|
|
services.displayManager.sddm = {
|
|
enable = true;
|
|
wayland.enable = !cfg.x11Only;
|
|
};
|
|
services.desktopManager.plasma6.enable = true;
|
|
|
|
services.xserver.windowManager.i3 = {
|
|
enable = true;
|
|
extraPackages = with pkgs; [
|
|
dmenu
|
|
i3status
|
|
i3lock
|
|
];
|
|
};
|
|
programs.dconf.enable = true;
|
|
services.gnome.gnome-keyring.enable = true;
|
|
|
|
programs.sway = mkIf (!cfg.x11Only) {
|
|
enable = true;
|
|
wrapperFeatures.gtk = true;
|
|
};
|
|
programs.light.enable = mkIf (!cfg.x11Only) true;
|
|
|
|
programs.kdeconnect.enable = true;
|
|
programs.java.enable = true;
|
|
programs.steam = {
|
|
enable = true;
|
|
remotePlay.openFirewall = true;
|
|
localNetworkGameTransfers.openFirewall = true;
|
|
#package = pkgs.steam.override {
|
|
#withJava = true;
|
|
#withPrimus = true;
|
|
#extraPkgs = pkgs: [ bumblebee glxinfo ];
|
|
#};
|
|
};
|
|
services.sunshine = {
|
|
enable = true;
|
|
autoStart = true;
|
|
capSysAdmin = true;
|
|
openFirewall = true;
|
|
};
|
|
|
|
virtualisation.docker.enable = true;
|
|
users.extraGroups.docker.members = [ "johno" ];
|
|
|
|
environment.systemPackages = with pkgs; mkMerge [
|
|
basePackages
|
|
x11BasePackages
|
|
(mkIf cfg.x11Only x11OnlyPackages)
|
|
# TODO: Do we need a "wayland only" mode?
|
|
(mkIf (!cfg.x11Only) waylandBasePackages)
|
|
(mkIf (!cfg.x11Only) waylandOnlyPackages)
|
|
];
|
|
};
|
|
|
|
}
|