75 lines
2.1 KiB
Nix
75 lines
2.1 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.numbus-computer.packages.desktop;
|
|
in
|
|
|
|
{
|
|
options.numbus-computer.packages.desktop = {
|
|
gnome = {
|
|
enable = mkEnableOption "Wether to enable the GNOME desktop environment.";
|
|
|
|
extensions = mkOption {
|
|
type = types.listOf types.str ;
|
|
default = [];
|
|
example = [ "dash-to-dock" "caffeine" "clipboard-history" "appindicator-support" ];
|
|
description = "Extensions to add to the Gnome desktop environment to improve your experience.";
|
|
};
|
|
};
|
|
kde_plasma = {
|
|
enable = mkEnableOption "Wether to enable the KDE Plasma desktop environment.";
|
|
};
|
|
hyprland = {
|
|
enable = mkEnableOption "Wether to enable the hyprland desktop environment.";
|
|
};
|
|
};
|
|
|
|
config = mkMerge [
|
|
# GNOME
|
|
(mkIf (cfg.gnome.enable == true) {
|
|
services.xserver.enable = false;
|
|
services.displayManager.gdm.enable = true;
|
|
services.desktopManager.gnome.enable = true;
|
|
services.gnome.core-apps.enable = false;
|
|
services.gnome.core-developer-tools.enable = false;
|
|
services.gnome.games.enable = false;
|
|
environment.gnome.excludePackages = with pkgs; [ gnome-tour gnome-user-docs ];
|
|
})
|
|
|
|
# GNOME extensions
|
|
(mkIf (cfg.gnome.enable == true && cfg.desktop.gnome.extensions != [ ]) {
|
|
environment.systemPackages = map (ext: pkgs.gnomeExtensions.${ext}) cfg.desktop.gnome.extensions;
|
|
})
|
|
|
|
# KDE Plasma
|
|
(mkIf (cfg.kde_plasma.enable == true) {
|
|
services = {
|
|
desktopManager.plasma6.enable = true;
|
|
displayManager.sddm.enable = true;
|
|
displayManager.sddm.wayland.enable = true;
|
|
};
|
|
environment.systemPackages = with pkgs; [
|
|
kdePackages.discover
|
|
kdePackages.kcalc
|
|
kdePackages.kcharselect
|
|
kdePackages.kclock
|
|
kdePackages.kcolorchooser
|
|
kdePackages.kolourpaint
|
|
kdePackages.sddm-kcm
|
|
kdiff3
|
|
wayland-utils
|
|
wl-clipboard
|
|
];
|
|
})
|
|
|
|
# Hyprland
|
|
(mkIf (cfg.hyprland.enable == true) {
|
|
programs.hyprland.enable = true;
|
|
environment.systemPackages = [
|
|
pkgs.kitty
|
|
];
|
|
})
|
|
];
|
|
} |