114 lines
2.8 KiB
Nix
114 lines
2.8 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.gnome-system-custom;
|
|
# Import gvariant for dconf types
|
|
mkTuple = lib.gvariant.mkTuple;
|
|
mkUint32 = lib.gvariant.mkUint32;
|
|
mkEmptyArray = lib.gvariant.mkEmptyArray;
|
|
in
|
|
|
|
{
|
|
options.gnome-system-custom = {
|
|
enableDisplayManager = mkOption {
|
|
type = types.bool;
|
|
default = true;
|
|
description = "Enable GDM display manager";
|
|
};
|
|
};
|
|
|
|
config = {
|
|
# GNOME Desktop Environment
|
|
services.xserver.enable = true;
|
|
services.displayManager.gdm.enable = mkIf cfg.enableDisplayManager true;
|
|
services.desktopManager.gnome.enable = true;
|
|
|
|
# Keyboard layout
|
|
services.xserver.xkb = {
|
|
layout = "us";
|
|
options = "";
|
|
};
|
|
|
|
# Exclude unwanted GNOME default packages
|
|
environment.gnome.excludePackages = with pkgs; [
|
|
gnome-tour
|
|
gnome-console # terminal (using Ghostty instead)
|
|
gnome-text-editor # text editor (using Neovim instead)
|
|
gnome-connections # remote desktop client
|
|
gnome-font-viewer # font viewer
|
|
seahorse # passwords and keys
|
|
baobab # disk usage analyzer
|
|
gnome-disk-utility # disks
|
|
gnome-logs # logs viewer
|
|
gnome-system-monitor # system monitor
|
|
decibels # audio player
|
|
epiphany # GNOME web browser
|
|
file-roller # archive manager
|
|
geary # GNOME email client
|
|
gnome-music
|
|
gnome-photos
|
|
gnome-maps
|
|
gnome-weather
|
|
gnome-contacts
|
|
gnome-clocks
|
|
gnome-calculator
|
|
gnome-calendar
|
|
gnome-characters
|
|
simple-scan
|
|
snapshot # camera
|
|
totem # video player
|
|
yelp # help viewer
|
|
nautilus # file manager (using Thunar instead)
|
|
];
|
|
|
|
# XDG portal for proper desktop integration
|
|
xdg.portal = {
|
|
enable = true;
|
|
extraPortals = with pkgs; [
|
|
xdg-desktop-portal-gnome
|
|
xdg-desktop-portal-gtk
|
|
];
|
|
};
|
|
|
|
# Touchpad configuration
|
|
services.libinput = {
|
|
enable = true;
|
|
touchpad = {
|
|
naturalScrolling = true;
|
|
tapping = false;
|
|
};
|
|
};
|
|
|
|
# Input method configuration for GNOME
|
|
i18n.inputMethod = {
|
|
enable = true;
|
|
type = "ibus";
|
|
ibus.engines = with pkgs.ibus-engines; [
|
|
libpinyin
|
|
];
|
|
};
|
|
|
|
# GNOME dconf settings
|
|
programs.dconf.profiles.user.databases = [{
|
|
settings = {
|
|
"org/gnome/settings-daemon/plugins/power" = {
|
|
sleep-inactive-ac-type = "nothing";
|
|
};
|
|
"org/gnome/desktop/a11y/applications" = {
|
|
screen-keyboard-enabled = false;
|
|
};
|
|
"org/gnome/desktop/peripherals/mouse" = {
|
|
accel-profile = "flat";
|
|
};
|
|
};
|
|
}];
|
|
|
|
# System packages for GNOME
|
|
environment.systemPackages = with pkgs; [
|
|
hicolor-icon-theme # Fallback icon theme
|
|
];
|
|
|
|
};
|
|
}
|