{
  pkgs,
  lib,
  config,
  options,
  ...
}:
let
  cfg = config.lyte.desktop;
in
{
  options = {
    lyte = {
      desktop = {
        enable = lib.mkEnableOption "Enable my default desktop configuration and applications";
      };
    };
  };
  config = lib.mkIf cfg.enable {
    services.xserver.desktopManager.gnome.enable = true;
    environment.systemPackages = [ pkgs.wl-clipboard ];

    fonts.packages = [
      (
        # allow nixpkgs 24.11 and unstable to both work
        if builtins.hasAttr "nerd-fonts" pkgs then
          (pkgs.nerd-fonts.symbols-only)
        else
          (pkgs.nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
      )
      pkgs.iosevkaLyteTerm
    ];

    xdg.portal.enable = true;

    hardware =
      if builtins.hasAttr "graphics" options.hardware then
        {
          graphics = {
            enable = true;
            # enable32Bit = true;
            /*
              driSupport32Bit = true;
              driSupport = true;
            */
          };
        }
      else
        {
          opengl = {
            enable = true;
            # driSupport32Bit = true;
            driSupport = true;
          };
        };

    services.flatpak.enable = true;
    programs.appimage.binfmt = true;
    services.printing.enable = true;
    programs.virt-manager.enable = config.virtualisation.libvirtd.enable;
  };
}