infrastructure/common/modules/gnome/default.nix
2024-09-12 10:26:45 +02:00

91 lines
2.2 KiB
Nix

{
config,
pkgs,
lib,
...
}:
with lib;
let
cfg = config.services.v.gnome;
in
{
options.services.v.gnome = {
enable = mkEnableOption "v.gnome";
hm = mkOption {
type = types.bool;
default = true;
description = ''
Whether to enable home manager integration to set default dconf values
'';
};
auto-unlock-keyring = mkOption {
type = types.bool;
default = true;
description = ''
Whether to automatically unlock the keyring upon login.
This is mostly useful if you are logging in using a fingerprint
or FIDO device and the keyring does not automatically get unlocked.
Make sure you have enrolled you password into the keyring unlocker.
'';
};
};
config = mkIf cfg.enable {
services = {
xserver = {
enable = true;
excludePackages = [ pkgs.xterm ];
# Configure keymap in X11
xkb = {
layout = "us";
variant = "altgr-intl";
};
# Enable the GNOME Desktop Environment.
displayManager.gdm.enable = lib.mkDefault true;
desktopManager.gnome.enable = true;
};
udev.packages = with pkgs; [ gnome-settings-daemon ];
dbus.enable = true;
udisks2.enable = true;
};
services.gnome-autounlock-keyring.enable = cfg.auto-unlock-keyring;
# Add Home-manager dconf stuff
home-manager.sharedModules = mkIf cfg.hm [ ./hm.nix ];
environment.gnome.excludePackages =
(with pkgs; [
gnome-photos
gnome-tour
gnome-connections
gnome-calendar
epiphany # web browser
geary # email reader
simple-scan # document scanner
totem # video player
gnome-terminal
gnome-contacts
atomix # puzzle game
gnome-maps
gedit # text editor
gnome-music
gnome-clocks
iagno # go game
tali # poker game
hitori # sudoku game
gnome-notes
gnome-weather
]);
# Services required for gnome
programs.dconf.enable = true;
# Extra gnome packages
environment.systemPackages = with pkgs; [
gnome-tweaks
gnome-boxes
];
};
}