{ options, config, lib, pkgs, ... }: with lib; with lib.plusultra; let cfg = config.plusultra.gui; in { options.plusultra.gui = with types; { enable = mkBoolOpt false "Whether or not to enable a GUI."; }; config = mkIf cfg.enable { services = { gnome.tracker-miners.enable = lib.mkForce false; flatpak.enable = true; xserver = { layout = "de+us"; xkbVariant = "nodeadkeys"; enable = true; displayManager.gdm.enable = true; desktopManager.gnome.enable = true; }; # Enable CUPS to print documents. printing.enable = true; pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; # If you want to use JACK applications, uncomment this #jack.enable = true; # use the example session manager (no others are packaged yet so this is enabled by default, # no need to redefine it in your config for now) #media-session.enable = true; }; dbus.packages = [ pkgs.gcr ]; udev.packages = [ pkgs.libu2f-host pkgs.yubikey-personalization ]; dbus.implementation = "broker"; keybase.enable = true; kbfs.enable = false; }; #security.pam.p11.control = "sufficient"; #security.pam.p11.control = "required"; #security.pam.p11.enable = true; # services.fprintd.enable = true; #security.pam.yubico.enable = true; #security.pam.yubico.control = "sufficient"; #security.pam.yubico.mode = "challenge-response"; #services.pcscd.enable = true; #security.tpm2.pkcs11.enable = true; # Enable sound with pipewire. sound.enable = true; hardware.pulseaudio.enable = false; security.rtkit.enable = true; programs.gnupg.agent = { enable = true; enableSSHSupport = true; enableBrowserSocket = true; }; environment.systemPackages = with pkgs; [ bat cachix cardpeek ccache clang clippy dive file firefox gh git gnome.gnome-software gnomeExtensions.appindicator gnomeExtensions.dash-to-panel gnomeExtensions.hibernate-status-button gnomeExtensions.vitals gnupg go jetbrains-toolbox jq kbfs keybase keybase-gui libu2f-host mosh mosh nixpkgs-fmt opensc pasystray pcsctools pinentry-gnome pkg-config ripgrep slack spotify statix thunderbird tmux vim wl-clipboard yubikey-personalization yubikey-manager-qt zellij rustup ]; #----=[ Fonts ]=----# fonts = { enableDefaultPackages = false; packages = with pkgs; [ noto-fonts-emoji liberation_ttf freefont_ttf (nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "JetBrainsMono" ]; }) ]; fontconfig = { enable = true; defaultFonts = { serif = [ "Liberation" ]; sansSerif = [ "Liberation" ]; monospace = [ "JetBrainsMono" ]; emoji = [ "Noto Color Emoji" ]; }; }; }; # remote desktop networking.firewall.allowedTCPPorts = [ 3389 ]; }; }