2022-01-07 17:44:30 +01:00
|
|
|
{ pkgs, lib, config, options, ... }:
|
2022-01-11 16:08:21 +01:00
|
|
|
let
|
|
|
|
inherit (lib)
|
|
|
|
mkEnableOption
|
|
|
|
mkIf
|
|
|
|
optional
|
|
|
|
;
|
|
|
|
in
|
2021-04-16 21:33:48 +02:00
|
|
|
{
|
2022-01-07 17:44:30 +01:00
|
|
|
options.my.gui = {
|
2022-01-11 16:08:21 +01:00
|
|
|
enable = mkEnableOption "System has some kind of screen attached";
|
|
|
|
isNvidia = mkEnableOption "System a NVIDIA GPU";
|
2022-01-07 17:44:30 +01:00
|
|
|
};
|
2021-06-01 14:28:20 +02:00
|
|
|
|
2022-01-11 16:08:21 +01:00
|
|
|
config = mkIf config.my.gui.enable {
|
2022-01-07 17:44:30 +01:00
|
|
|
my.displayManager.sddm.enable = true;
|
|
|
|
|
|
|
|
services = {
|
|
|
|
xserver = {
|
|
|
|
enable = true;
|
|
|
|
# NOTE: could use `mkOptionDefault` but this feels more explicit
|
2022-01-11 16:37:28 +01:00
|
|
|
videoDrivers = if config.my.gui.isNvidia then [ "nvidia" ]
|
|
|
|
else options.services.xserver.videoDrivers.default;
|
2022-01-07 17:44:30 +01:00
|
|
|
windowManager.i3.enable = true;
|
|
|
|
layout = "fr";
|
|
|
|
xkbVariant = "us";
|
|
|
|
libinput.enable = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2022-01-11 16:08:21 +01:00
|
|
|
environment.systemPackages = builtins.attrValues {
|
|
|
|
inherit (pkgs)
|
|
|
|
element-desktop
|
|
|
|
feh
|
|
|
|
firefox
|
|
|
|
ffmpeg
|
|
|
|
gimp
|
|
|
|
imagemagick
|
|
|
|
mpv
|
|
|
|
obs-studio
|
|
|
|
pavucontrol
|
|
|
|
slack
|
|
|
|
spotify
|
|
|
|
tdesktop
|
|
|
|
teams
|
|
|
|
thunderbird
|
|
|
|
virt-manager
|
|
|
|
zathura
|
|
|
|
;
|
2021-04-18 14:46:12 +02:00
|
|
|
|
2022-01-11 16:08:21 +01:00
|
|
|
inherit (pkgs.gnome) nautilus;
|
|
|
|
|
|
|
|
inherit (pkgs.unstable) discord;
|
|
|
|
};
|
2021-04-19 16:07:38 +02:00
|
|
|
|
2022-01-07 17:20:57 +01:00
|
|
|
networking.networkmanager.enable = true;
|
|
|
|
programs.nm-applet.enable = true;
|
|
|
|
programs.steam.enable = true;
|
|
|
|
|
|
|
|
# NOTE: needed for home emacs configuration
|
|
|
|
nixpkgs.config.input-fonts.acceptLicense = true;
|
|
|
|
};
|
2021-04-16 21:33:48 +02:00
|
|
|
}
|