about summary refs log tree commit diff
path: root/nixos/modules/services/x11/desktop-managers
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/services/x11/desktop-managers')
-rw-r--r--nixos/modules/services/x11/desktop-managers/budgie.nix258
-rw-r--r--nixos/modules/services/x11/desktop-managers/cde.nix73
-rw-r--r--nixos/modules/services/x11/desktop-managers/cinnamon.nix257
-rw-r--r--nixos/modules/services/x11/desktop-managers/deepin.nix228
-rw-r--r--nixos/modules/services/x11/desktop-managers/default.nix89
-rw-r--r--nixos/modules/services/x11/desktop-managers/enlightenment.nix124
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome.md185
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome.nix500
-rw-r--r--nixos/modules/services/x11/desktop-managers/kodi.nix35
-rw-r--r--nixos/modules/services/x11/desktop-managers/lumina.nix46
-rw-r--r--nixos/modules/services/x11/desktop-managers/lxqt.nix80
-rw-r--r--nixos/modules/services/x11/desktop-managers/mate.nix110
-rw-r--r--nixos/modules/services/x11/desktop-managers/none.nix46
-rw-r--r--nixos/modules/services/x11/desktop-managers/pantheon.md83
-rw-r--r--nixos/modules/services/x11/desktop-managers/pantheon.nix331
-rw-r--r--nixos/modules/services/x11/desktop-managers/phosh.nix230
-rw-r--r--nixos/modules/services/x11/desktop-managers/plasma5.nix568
-rw-r--r--nixos/modules/services/x11/desktop-managers/retroarch.nix36
-rw-r--r--nixos/modules/services/x11/desktop-managers/surf-display.nix128
-rw-r--r--nixos/modules/services/x11/desktop-managers/xfce.nix185
-rw-r--r--nixos/modules/services/x11/desktop-managers/xterm.nix38
21 files changed, 0 insertions, 3630 deletions
diff --git a/nixos/modules/services/x11/desktop-managers/budgie.nix b/nixos/modules/services/x11/desktop-managers/budgie.nix
deleted file mode 100644
index b4e739029335..000000000000
--- a/nixos/modules/services/x11/desktop-managers/budgie.nix
+++ /dev/null
@@ -1,258 +0,0 @@
-{ lib, pkgs, config, utils, ... }:
-
-let
-  inherit (lib) concatMapStrings literalExpression mkDefault mkEnableOption mkIf mkOption types;
-
-  cfg = config.services.xserver.desktopManager.budgie;
-
-  nixos-background-light = pkgs.nixos-artwork.wallpapers.nineish;
-  nixos-background-dark = pkgs.nixos-artwork.wallpapers.nineish-dark-gray;
-
-  nixos-gsettings-overrides = pkgs.budgie.budgie-gsettings-overrides.override {
-    inherit (cfg) extraGSettingsOverrides extraGSettingsOverridePackages;
-    inherit nixos-background-dark nixos-background-light;
-  };
-
-  nixos-background-info = pkgs.writeTextFile {
-    name = "nixos-background-info";
-    text = ''
-      <?xml version="1.0"?>
-      <!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
-      <wallpapers>
-        <wallpaper deleted="false">
-          <name>Nineish</name>
-          <filename>${nixos-background-light.gnomeFilePath}</filename>
-          <options>zoom</options>
-          <shade_type>solid</shade_type>
-          <pcolor>#d1dcf8</pcolor>
-          <scolor>#e3ebfe</scolor>
-        </wallpaper>
-        <wallpaper deleted="false">
-          <name>Nineish Dark Gray</name>
-          <filename>${nixos-background-dark.gnomeFilePath}</filename>
-          <options>zoom</options>
-          <shade_type>solid</shade_type>
-          <pcolor>#151515</pcolor>
-          <scolor>#262626</scolor>
-        </wallpaper>
-      </wallpapers>
-    '';
-    destination = "/share/gnome-background-properties/nixos.xml";
-  };
-
-  budgie-control-center = pkgs.budgie.budgie-control-center.override {
-    enableSshSocket = config.services.openssh.startWhenNeeded;
-  };
-
-  notExcluded = pkg: (!(lib.elem pkg config.environment.budgie.excludePackages));
-in {
-  meta.maintainers = lib.teams.budgie.members;
-
-  options = {
-    services.xserver.desktopManager.budgie = {
-      enable = mkEnableOption "the Budgie desktop";
-
-      sessionPath = mkOption {
-        description = ''
-          Additional list of packages to be added to the session search path.
-          Useful for GSettings-conditional autostart.
-
-          Note that this should be a last resort; patching the package is preferred (see GPaste).
-        '';
-        type = types.listOf types.package;
-        default = [];
-        example = literalExpression "[ pkgs.gnome.gpaste ]";
-      };
-
-      extraGSettingsOverrides = mkOption {
-        description = "Additional GSettings overrides.";
-        type = types.lines;
-        default = "";
-      };
-
-      extraGSettingsOverridePackages = mkOption {
-        description = "List of packages for which GSettings are overridden.";
-        type = types.listOf types.path;
-        default = [];
-      };
-
-      extraPlugins = mkOption {
-        description = "Extra plugins for the Budgie desktop";
-        type = types.listOf types.package;
-        default = [];
-        example = literalExpression "[ pkgs.budgiePlugins.budgie-analogue-clock-applet ]";
-      };
-    };
-
-    environment.budgie.excludePackages = mkOption {
-      description = "Which packages Budgie should exclude from the default environment.";
-      type = types.listOf types.package;
-      default = [];
-      example = literalExpression "[ pkgs.mate-terminal ]";
-    };
-  };
-
-  config = mkIf cfg.enable {
-    services.displayManager.sessionPackages = with pkgs; [
-      budgie.budgie-desktop
-    ];
-
-    services.xserver.displayManager.lightdm.greeters.slick = {
-      enable = mkDefault true;
-      theme = mkDefault { name = "Qogir"; package = pkgs.qogir-theme; };
-      iconTheme = mkDefault { name = "Qogir"; package = pkgs.qogir-icon-theme; };
-      cursorTheme = mkDefault { name = "Qogir"; package = pkgs.qogir-icon-theme; };
-    };
-
-    services.xserver.desktopManager.budgie.sessionPath = [ pkgs.budgie.budgie-desktop-view ];
-
-    environment.extraInit = ''
-      ${concatMapStrings (p: ''
-        if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
-          export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
-        fi
-        if [ -d "${p}/lib/girepository-1.0" ]; then
-          export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
-          export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
-        fi
-      '') cfg.sessionPath}
-    '';
-
-    environment.systemPackages = with pkgs;
-      [
-        # Budgie Desktop.
-        budgie.budgie-backgrounds
-        budgie-control-center
-        (budgie.budgie-desktop-with-plugins.override { plugins = cfg.extraPlugins; })
-        budgie.budgie-desktop-view
-        budgie.budgie-screensaver
-        budgie.budgie-session
-
-        # Required by Budgie Menu.
-        gnome-menus
-
-        # Required by Budgie Control Center.
-        gnome.zenity
-
-        # Provides `gsettings`.
-        glib
-
-        # Update user directories.
-        xdg-user-dirs
-      ]
-      ++ lib.optional config.networking.networkmanager.enable pkgs.networkmanagerapplet
-      ++ (utils.removePackagesByName [
-          cinnamon.nemo
-          mate.eom
-          mate.pluma
-          mate.atril
-          mate.engrampa
-          mate.mate-calc
-          mate.mate-system-monitor
-          vlc
-
-          # Desktop themes.
-          qogir-theme
-          qogir-icon-theme
-          nixos-background-info
-
-          # Default settings.
-          nixos-gsettings-overrides
-        ] config.environment.budgie.excludePackages)
-      ++ cfg.sessionPath;
-
-    # Both budgie-desktop-view and nemo defaults to this emulator.
-    programs.gnome-terminal.enable = mkDefault (notExcluded pkgs.gnome.gnome-terminal);
-
-    # Fonts.
-    fonts.packages = [
-      pkgs.noto-fonts
-      pkgs.hack-font
-    ];
-    fonts.fontconfig.defaultFonts = {
-      sansSerif = mkDefault ["Noto Sans"];
-      monospace = mkDefault ["Hack"];
-    };
-
-    # Qt application style.
-    qt = {
-      enable = mkDefault true;
-      style = mkDefault "gtk2";
-      platformTheme = mkDefault "gtk2";
-    };
-
-    environment.pathsToLink = [
-      "/share" # TODO: https://github.com/NixOS/nixpkgs/issues/47173
-    ];
-
-    # GSettings overrides.
-    environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
-
-    # Required by Budgie Desktop.
-    services.xserver.updateDbusEnvironment = true;
-    programs.dconf.enable = true;
-
-    # Required by Budgie Screensaver.
-    security.pam.services.budgie-screensaver = {};
-
-    # Required by Budgie's Polkit Dialog.
-    security.polkit.enable = mkDefault true;
-
-    # Required by Budgie Panel plugins and/or Budgie Control Center panels.
-    networking.networkmanager.enable = mkDefault true; # for BCC's Network panel.
-    programs.nm-applet.enable = config.networking.networkmanager.enable; # Budgie has no Network applet.
-    programs.nm-applet.indicator = true; # Budgie uses AppIndicators.
-
-    hardware.bluetooth.enable = mkDefault true; # for Budgie's Status Indicator and BCC's Bluetooth panel.
-    hardware.pulseaudio.enable = mkDefault true; # for Budgie's Status Indicator and BCC's Sound panel.
-
-    xdg.portal.enable = mkDefault true; # for BCC's Applications panel.
-    xdg.portal.extraPortals = with pkgs; [
-      xdg-desktop-portal-gtk # provides a XDG Portals implementation.
-    ];
-    xdg.portal.configPackages = mkDefault [ pkgs.budgie.budgie-desktop ];
-
-    services.geoclue2.enable = mkDefault true; # for BCC's Privacy > Location Services panel.
-    services.upower.enable = config.powerManagement.enable; # for Budgie's Status Indicator and BCC's Power panel.
-    services.libinput.enable = mkDefault true; # for BCC's Mouse panel.
-    services.colord.enable = mkDefault true; # for BCC's Color panel.
-    services.gnome.at-spi2-core.enable = mkDefault true; # for BCC's A11y panel.
-    services.accounts-daemon.enable = mkDefault true; # for BCC's Users panel.
-    services.udisks2.enable = mkDefault true; # for BCC's Details panel.
-
-    # For BCC's Online Accounts panel.
-    services.gnome.gnome-online-accounts.enable = mkDefault true;
-    services.gnome.gnome-online-miners.enable = true;
-
-    # For BCC's Printers panel.
-    services.printing.enable = mkDefault true;
-    services.system-config-printer.enable = config.services.printing.enable;
-
-    # For BCC's Sharing panel.
-    services.dleyna-renderer.enable = mkDefault true;
-    services.dleyna-server.enable = mkDefault true;
-    services.gnome.gnome-user-share.enable = mkDefault true;
-    services.gnome.rygel.enable = mkDefault true;
-
-    # Other default services.
-    services.gnome.evolution-data-server.enable = mkDefault true;
-    services.gnome.glib-networking.enable = mkDefault true;
-    services.gnome.gnome-keyring.enable = mkDefault true;
-    services.gnome.gnome-settings-daemon.enable = mkDefault true;
-    services.gvfs.enable = mkDefault true;
-
-    # Register packages for DBus.
-    services.dbus.packages = [
-      budgie-control-center
-    ];
-
-    # Register packages for udev.
-    services.udev.packages = with pkgs; [
-      budgie.magpie
-    ];
-
-    # Shell integration for MATE Terminal.
-    programs.bash.vteIntegration = true;
-    programs.zsh.vteIntegration = true;
-  };
-}
diff --git a/nixos/modules/services/x11/desktop-managers/cde.nix b/nixos/modules/services/x11/desktop-managers/cde.nix
deleted file mode 100644
index ae9a8ce22392..000000000000
--- a/nixos/modules/services/x11/desktop-managers/cde.nix
+++ /dev/null
@@ -1,73 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
-  xcfg = config.services.xserver;
-  cfg = xcfg.desktopManager.cde;
-in {
-  options.services.xserver.desktopManager.cde = {
-    enable = mkEnableOption "Common Desktop Environment";
-
-    extraPackages = mkOption {
-      type = with types; listOf package;
-      default = with pkgs.xorg; [
-        xclock bitmap xlsfonts xfd xrefresh xload xwininfo xdpyinfo xwd xwud
-      ];
-      defaultText = literalExpression ''
-        with pkgs.xorg; [
-          xclock bitmap xlsfonts xfd xrefresh xload xwininfo xdpyinfo xwd xwud
-        ]
-      '';
-      description = ''
-        Extra packages to be installed system wide.
-      '';
-    };
-  };
-
-  config = mkIf (xcfg.enable && cfg.enable) {
-    environment.systemPackages = cfg.extraPackages;
-
-    services.rpcbind.enable = true;
-
-    services.xinetd.enable = true;
-    services.xinetd.services = [
-      {
-        name = "cmsd";
-        protocol = "udp";
-        user = "root";
-        server = "${pkgs.cdesktopenv}/bin/rpc.cmsd";
-        extraConfig = ''
-          type  = RPC UNLISTED
-          rpc_number  = 100068
-          rpc_version = 2-5
-          only_from   = 127.0.0.1/0
-        '';
-      }
-    ];
-
-    users.groups.mail = {};
-    security.wrappers = {
-      dtmail = {
-        setgid = true;
-        owner = "root";
-        group = "mail";
-        source = "${pkgs.cdesktopenv}/bin/dtmail";
-      };
-    };
-
-    system.activationScripts.setup-cde = ''
-      mkdir -p /var/dt/{tmp,appconfig/appmanager}
-      chmod a+w+t /var/dt/{tmp,appconfig/appmanager}
-    '';
-
-    services.xserver.desktopManager.session = [
-    { name = "CDE";
-      start = ''
-        exec ${pkgs.cdesktopenv}/bin/Xsession
-      '';
-    }];
-  };
-
-  meta.maintainers = [ ];
-}
diff --git a/nixos/modules/services/x11/desktop-managers/cinnamon.nix b/nixos/modules/services/x11/desktop-managers/cinnamon.nix
deleted file mode 100644
index 2e0eef67c0b3..000000000000
--- a/nixos/modules/services/x11/desktop-managers/cinnamon.nix
+++ /dev/null
@@ -1,257 +0,0 @@
-{ config, lib, pkgs, utils, ... }:
-
-with lib;
-
-let
-
-  cfg = config.services.xserver.desktopManager.cinnamon;
-  serviceCfg = config.services.cinnamon;
-
-  nixos-gsettings-overrides = pkgs.cinnamon.cinnamon-gsettings-overrides.override {
-    extraGSettingsOverridePackages = cfg.extraGSettingsOverridePackages;
-    extraGSettingsOverrides = cfg.extraGSettingsOverrides;
-  };
-
-  notExcluded = pkg: (!(lib.elem pkg config.environment.cinnamon.excludePackages));
-in
-
-{
-  options = {
-    services.cinnamon = {
-      apps.enable = mkEnableOption "Cinnamon default applications";
-    };
-
-    services.xserver.desktopManager.cinnamon = {
-      enable = mkEnableOption "the cinnamon desktop manager";
-
-      sessionPath = mkOption {
-        default = [];
-        type = types.listOf types.package;
-        example = literalExpression "[ pkgs.gnome.gpaste ]";
-        description = ''
-          Additional list of packages to be added to the session search path.
-          Useful for GSettings-conditional autostart.
-
-          Note that this should be a last resort; patching the package is preferred (see GPaste).
-        '';
-      };
-
-      extraGSettingsOverrides = mkOption {
-        default = "";
-        type = types.lines;
-        description = "Additional gsettings overrides.";
-      };
-
-      extraGSettingsOverridePackages = mkOption {
-        default = [];
-        type = types.listOf types.path;
-        description = "List of packages for which gsettings are overridden.";
-      };
-    };
-
-    environment.cinnamon.excludePackages = mkOption {
-      default = [];
-      example = literalExpression "[ pkgs.cinnamon.blueberry ]";
-      type = types.listOf types.package;
-      description = "Which packages cinnamon should exclude from the default environment";
-    };
-
-  };
-
-  config = mkMerge [
-    (mkIf cfg.enable {
-      services.displayManager.sessionPackages = [ pkgs.cinnamon.cinnamon-common ];
-
-      services.xserver.displayManager.lightdm.greeters.slick = {
-        enable = mkDefault true;
-
-        # Taken from mint-artwork.gschema.override
-        theme = mkIf (notExcluded pkgs.cinnamon.mint-themes) {
-          name = mkDefault "Mint-Y-Aqua";
-          package = mkDefault pkgs.cinnamon.mint-themes;
-        };
-        iconTheme = mkIf (notExcluded pkgs.cinnamon.mint-y-icons) {
-          name = mkDefault "Mint-Y-Sand";
-          package = mkDefault pkgs.cinnamon.mint-y-icons;
-        };
-        cursorTheme = mkIf (notExcluded pkgs.cinnamon.mint-cursor-themes) {
-          name = mkDefault "Bibata-Modern-Classic";
-          package = mkDefault pkgs.cinnamon.mint-cursor-themes;
-        };
-      };
-
-      # Have to take care of GDM + Cinnamon on Wayland users
-      environment.extraInit = ''
-        ${concatMapStrings (p: ''
-          if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
-            export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
-          fi
-
-          if [ -d "${p}/lib/girepository-1.0" ]; then
-            export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
-            export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
-          fi
-        '') cfg.sessionPath}
-      '';
-
-      # Default services
-      services.blueman.enable = mkDefault (notExcluded pkgs.blueman);
-      hardware.bluetooth.enable = mkDefault true;
-      hardware.pulseaudio.enable = mkDefault true;
-      security.polkit.enable = true;
-      services.accounts-daemon.enable = true;
-      services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
-      services.dbus.packages = with pkgs.cinnamon; [
-        cinnamon-common
-        cinnamon-screensaver
-        nemo-with-extensions
-        xapp
-      ];
-      services.cinnamon.apps.enable = mkDefault true;
-      services.gnome.evolution-data-server.enable = true;
-      services.gnome.glib-networking.enable = true;
-      services.gnome.gnome-keyring.enable = true;
-      services.gvfs.enable = true;
-      services.switcherooControl.enable = mkDefault true; # xapp-gpu-offload-helper
-      services.touchegg.enable = mkDefault true;
-      services.udisks2.enable = true;
-      services.upower.enable = mkDefault config.powerManagement.enable;
-      services.libinput.enable = mkDefault true;
-      services.xserver.updateDbusEnvironment = true;
-      networking.networkmanager.enable = mkDefault true;
-
-      # Enable colord server
-      services.colord.enable = true;
-
-      # Enable dconf
-      programs.dconf.enable = true;
-
-      # Enable org.a11y.Bus
-      services.gnome.at-spi2-core.enable = true;
-
-      # Fix lockscreen
-      security.pam.services = {
-        cinnamon-screensaver = {};
-      };
-
-      environment.systemPackages = with pkgs.cinnamon // pkgs; ([
-        desktop-file-utils
-
-        # common-files
-        cinnamon-common
-        cinnamon-session
-        cinnamon-desktop
-        cinnamon-menus
-        cinnamon-translations
-
-        # utils needed by some scripts
-        killall
-
-        # session requirements
-        cinnamon-screensaver
-        # cinnamon-killer-daemon: provided by cinnamon-common
-        networkmanagerapplet # session requirement - also nm-applet not needed
-
-        # For a polkit authentication agent
-        polkit_gnome
-
-        # packages
-        nemo-with-extensions
-        gnome-online-accounts-gtk
-        cinnamon-control-center
-        cinnamon-settings-daemon
-        libgnomekbd
-
-        # theme
-        gnome.adwaita-icon-theme
-        gnome.gnome-themes-extra
-        gtk3.out
-
-        # other
-        glib # for gsettings
-        xdg-user-dirs
-      ] ++ utils.removePackagesByName [
-        # accessibility
-        onboard
-        orca
-
-        # theme
-        sound-theme-freedesktop
-        nixos-artwork.wallpapers.simple-dark-gray
-        mint-artwork
-        mint-cursor-themes
-        mint-l-icons
-        mint-l-theme
-        mint-themes
-        mint-x-icons
-        mint-y-icons
-        xapp # provides some xapp-* icons
-      ] config.environment.cinnamon.excludePackages);
-
-      xdg.mime.enable = true;
-      xdg.icons.enable = true;
-
-      xdg.portal.enable = true;
-      xdg.portal.extraPortals = [
-        pkgs.xdg-desktop-portal-xapp
-        (pkgs.xdg-desktop-portal-gtk.override {
-          # Do not build portals that we already have.
-          buildPortalsInGnome = false;
-        })
-      ];
-
-      xdg.portal.configPackages = mkDefault [ pkgs.cinnamon.cinnamon-common ];
-
-      # Override GSettings schemas
-      environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
-
-      environment.pathsToLink = [
-        # FIXME: modules should link subdirs of `/share` rather than relying on this
-        "/share" # TODO: https://github.com/NixOS/nixpkgs/issues/47173
-      ];
-
-      # Shell integration for VTE terminals
-      programs.bash.vteIntegration = mkDefault true;
-      programs.zsh.vteIntegration = mkDefault true;
-
-      # Qt application style
-      qt = {
-        enable = mkDefault true;
-        style = mkDefault "gtk2";
-        platformTheme = mkDefault "gtk2";
-      };
-
-      # Default Fonts
-      fonts.packages = with pkgs; [
-        dejavu_fonts # Default monospace font in LMDE 6+
-        ubuntu_font_family # required for default theme
-      ];
-    })
-
-    (mkIf serviceCfg.apps.enable {
-      programs.geary.enable = mkDefault (notExcluded pkgs.gnome.geary);
-      programs.gnome-disks.enable = mkDefault (notExcluded pkgs.gnome.gnome-disk-utility);
-      programs.gnome-terminal.enable = mkDefault (notExcluded pkgs.gnome.gnome-terminal);
-      programs.file-roller.enable = mkDefault (notExcluded pkgs.gnome.file-roller);
-
-      environment.systemPackages = with pkgs // pkgs.gnome // pkgs.cinnamon; utils.removePackagesByName [
-        # cinnamon team apps
-        bulky
-        warpinator
-
-        # cinnamon xapp
-        xviewer
-        xreader
-        xed-editor
-        xplayer
-        pix
-
-        # external apps shipped with linux-mint
-        hexchat
-        gnome-calculator
-        gnome-calendar
-        gnome-screenshot
-      ] config.environment.cinnamon.excludePackages;
-    })
-  ];
-}
diff --git a/nixos/modules/services/x11/desktop-managers/deepin.nix b/nixos/modules/services/x11/desktop-managers/deepin.nix
deleted file mode 100644
index 30bd14adb419..000000000000
--- a/nixos/modules/services/x11/desktop-managers/deepin.nix
+++ /dev/null
@@ -1,228 +0,0 @@
-{ config, lib, pkgs, utils, ... }:
-
-with lib;
-
-let
-  xcfg = config.services.xserver;
-  cfg = xcfg.desktopManager.deepin;
-
-  nixos-gsettings-overrides = pkgs.deepin.dde-gsettings-schemas.override {
-    extraGSettingsOverridePackages = cfg.extraGSettingsOverridePackages;
-    extraGSettingsOverrides = cfg.extraGSettingsOverrides;
-  };
-in
-{
-  options = {
-
-    services.xserver.desktopManager.deepin = {
-      enable = mkEnableOption "Deepin desktop manager";
-      extraGSettingsOverrides = mkOption {
-        default = "";
-        type = types.lines;
-        description = "Additional gsettings overrides.";
-      };
-      extraGSettingsOverridePackages = mkOption {
-        default = [ ];
-        type = types.listOf types.path;
-        description = "List of packages for which gsettings are overridden.";
-      };
-    };
-
-    environment.deepin.excludePackages = mkOption {
-      default = [ ];
-      type = types.listOf types.package;
-      description = "List of default packages to exclude from the configuration";
-    };
-
-  };
-
-  config = mkIf cfg.enable
-    {
-      services.displayManager.sessionPackages = [ pkgs.deepin.dde-session ];
-      services.displayManager.defaultSession = mkDefault "dde-x11";
-
-      # Update the DBus activation environment after launching the desktop manager.
-      services.xserver.displayManager.sessionCommands = ''
-        ${lib.getBin pkgs.dbus}/bin/dbus-update-activation-environment --systemd --all
-      '';
-
-      hardware.bluetooth.enable = mkDefault true;
-      hardware.pulseaudio.enable = mkDefault true;
-      security.polkit.enable = true;
-
-      services.deepin.dde-daemon.enable = mkForce true;
-      services.deepin.dde-api.enable = mkForce true;
-      services.deepin.app-services.enable = mkForce true;
-
-      services.colord.enable = mkDefault true;
-      services.accounts-daemon.enable = mkDefault true;
-      services.gvfs.enable = mkDefault true;
-      services.gnome.glib-networking.enable = mkDefault true;
-      services.gnome.gnome-keyring.enable = mkDefault true;
-      services.bamf.enable = mkDefault true;
-
-      services.libinput.enable = mkDefault true;
-      services.udisks2.enable = true;
-      services.upower.enable = mkDefault config.powerManagement.enable;
-      networking.networkmanager.enable = mkDefault true;
-      programs.dconf.enable = mkDefault true;
-      programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-qt;
-
-      fonts.packages = with pkgs; [ noto-fonts ];
-      xdg.mime.enable = true;
-      xdg.menus.enable = true;
-      xdg.icons.enable = true;
-      xdg.portal.enable = mkDefault true;
-      xdg.portal.extraPortals = mkDefault [
-        (pkgs.xdg-desktop-portal-gtk.override {
-          buildPortalsInGnome = false;
-        })
-      ];
-
-      # https://github.com/NixOS/nixpkgs/pull/247766#issuecomment-1722839259
-      xdg.portal.config.deepin.default = mkDefault [ "gtk" ];
-
-      environment.sessionVariables = {
-        NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
-        DDE_POLKIT_AGENT_PLUGINS_DIRS = [ "${pkgs.deepin.dpa-ext-gnomekeyring}/lib/polkit-1-dde/plugins" ];
-      };
-
-      environment.pathsToLink = [
-        "/lib/dde-dock/plugins"
-        "/lib/dde-control-center"
-        "/lib/dde-session-shell"
-        "/lib/dde-file-manager"
-        "/share/backgrounds"
-        "/share/wallpapers"
-        "/share/dde-daemon"
-        "/share/dsg"
-        "/share/deepin-themes"
-        "/share/deepin"
-      ];
-
-      environment.etc = {
-        "deepin-installer.conf".text = ''
-          system_info_vendor_name="Copyright (c) 2003-2023 NixOS contributors"
-        '';
-      };
-
-      systemd.tmpfiles.rules = [
-        "d /var/lib/AccountsService 0775 root root - -"
-        "C /var/lib/AccountsService/icons 0775 root root - ${pkgs.deepin.dde-account-faces}/var/lib/AccountsService/icons"
-      ];
-
-      security.pam.services.dde-lock.text = ''
-        # original at {dde-session-shell}/etc/pam.d/dde-lock
-        auth      substack      login
-        account   include       login
-        password  substack      login
-        session   include       login
-      '';
-
-      environment.systemPackages = with pkgs; with deepin;
-        let
-          requiredPackages = [
-            pciutils # for dtkcore/startdde
-            xdotool # for dde-daemon
-            glib # for gsettings program / gdbus
-            gtk3 # for gtk-launch program
-            xdg-user-dirs # Update user dirs
-            util-linux # runuser
-            polkit_gnome
-            librsvg # dde-api use rsvg-convert
-            lshw # for dtkcore
-            libsForQt5.kde-gtk-config # deepin-api/gtk-thumbnailer need
-            libsForQt5.kglobalaccel
-            xsettingsd # lightdm-deepin-greeter
-            dtkcommon
-            dtkcore
-            dtkgui
-            dtkwidget
-            dtkdeclarative
-            qt5platform-plugins
-            deepin-pw-check
-            deepin-turbo
-
-            dde-account-faces
-            deepin-icon-theme
-            deepin-desktop-theme
-            deepin-sound-theme
-            deepin-gtk-theme
-            deepin-wallpapers
-            deepin-desktop-base
-
-            startdde
-            dde-dock
-            dde-launchpad
-            dde-session-ui
-            dde-session-shell
-            dde-file-manager
-            dde-control-center
-            dde-network-core
-            dde-clipboard
-            dde-calendar
-            dde-polkit-agent
-            dpa-ext-gnomekeyring
-            deepin-desktop-schemas
-            deepin-terminal
-            deepin-kwin
-            dde-session
-            dde-widgets
-            dde-appearance
-            dde-application-manager
-            deepin-service-manager
-          ];
-          optionalPackages = [
-            onboard # dde-dock plugin
-            deepin-calculator
-            deepin-compressor
-            deepin-editor
-            deepin-picker
-            deepin-draw
-            deepin-music
-            deepin-movie-reborn
-            deepin-system-monitor
-            deepin-shortcut-viewer
-            # freeimage has knownVulnerabilties, don't install packages using freeiamge by default
-            # deepin-album
-            # deepin-camera
-            # deepin-image-viewer
-            # deepin-screen-recorder
-          ];
-        in
-        requiredPackages
-        ++ utils.removePackagesByName optionalPackages config.environment.deepin.excludePackages;
-
-      services.dbus.packages = with pkgs.deepin; [
-        dde-dock
-        dde-launchpad
-        dde-session-ui
-        dde-session-shell
-        dde-file-manager
-        dde-control-center
-        dde-calendar
-        dde-clipboard
-        deepin-kwin
-        deepin-pw-check
-        dde-widgets
-        dde-session
-        dde-appearance
-        dde-application-manager
-        deepin-service-manager
-      ];
-
-      systemd.packages = with pkgs.deepin; [
-        dde-launchpad
-        dde-file-manager
-        dde-calendar
-        dde-clipboard
-        deepin-kwin
-        dde-appearance
-        dde-widgets
-        dde-session
-        dde-application-manager
-        deepin-service-manager
-      ];
-    };
-}
-
diff --git a/nixos/modules/services/x11/desktop-managers/default.nix b/nixos/modules/services/x11/desktop-managers/default.nix
deleted file mode 100644
index 42e66e86e1a3..000000000000
--- a/nixos/modules/services/x11/desktop-managers/default.nix
+++ /dev/null
@@ -1,89 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-let
-  inherit (lib) mkOption types;
-
-  xcfg = config.services.xserver;
-  cfg = xcfg.desktopManager;
-
-  # If desktop manager `d' isn't capable of setting a background and
-  # the xserver is enabled, `feh' or `xsetroot' are used as a fallback.
-  needBGCond = d: ! (d ? bgSupport && d.bgSupport) && xcfg.enable;
-
-in
-
-{
-  # Note: the order in which desktop manager modules are imported here
-  # determines the default: later modules (if enabled) are preferred.
-  # E.g., if Plasma 5 is enabled, it supersedes xterm.
-  imports = [
-    ./none.nix ./xterm.nix ./phosh.nix ./xfce.nix ./plasma5.nix ../../desktop-managers/plasma6.nix ./lumina.nix
-    ./lxqt.nix ./enlightenment.nix ./gnome.nix ./retroarch.nix ./kodi.nix
-    ./mate.nix ./pantheon.nix ./surf-display.nix ./cde.nix
-    ./cinnamon.nix ./budgie.nix ./deepin.nix ../../desktop-managers/lomiri.nix
-  ];
-
-  options = {
-
-    services.xserver.desktopManager = {
-
-      wallpaper = {
-        mode = mkOption {
-          type = types.enum [ "center" "fill" "max" "scale" "tile" ];
-          default = "scale";
-          example = "fill";
-          description = ''
-            The file {file}`~/.background-image` is used as a background image.
-            This option specifies the placement of this image onto your desktop.
-
-            Possible values:
-            `center`: Center the image on the background. If it is too small, it will be surrounded by a black border.
-            `fill`: Like `scale`, but preserves aspect ratio by zooming the image until it fits. Either a horizontal or a vertical part of the image will be cut off.
-            `max`: Like `fill`, but scale the image to the maximum size that fits the screen with black borders on one side.
-            `scale`: Fit the file into the background without repeating it, cutting off stuff or using borders. But the aspect ratio is not preserved either.
-            `tile`: Tile (repeat) the image in case it is too small for the screen.
-          '';
-        };
-
-        combineScreens = mkOption {
-          type = types.bool;
-          default = false;
-          description = ''
-            When set to `true` the wallpaper will stretch across all screens.
-            When set to `false` the wallpaper is duplicated to all screens.
-          '';
-        };
-      };
-
-      session = mkOption {
-        internal = true;
-        default = [];
-        example = lib.singleton
-          { name = "kde";
-            bgSupport = true;
-            start = "...";
-          };
-        description = ''
-          Internal option used to add some common line to desktop manager
-          scripts before forwarding the value to the
-          `displayManager`.
-        '';
-        apply = map (d: d // {
-          manage = "desktop";
-          start = d.start
-          # literal newline to ensure d.start's last line is not appended to
-          + lib.optionalString (needBGCond d) ''
-
-            if [ -e $HOME/.background-image ]; then
-              ${pkgs.feh}/bin/feh --bg-${cfg.wallpaper.mode} ${lib.optionalString cfg.wallpaper.combineScreens "--no-xinerama"} $HOME/.background-image
-            fi
-          '';
-        });
-      };
-
-    };
-
-  };
-
-  config.services.xserver.displayManager.session = cfg.session;
-}
diff --git a/nixos/modules/services/x11/desktop-managers/enlightenment.nix b/nixos/modules/services/x11/desktop-managers/enlightenment.nix
deleted file mode 100644
index 0a341ba133d3..000000000000
--- a/nixos/modules/services/x11/desktop-managers/enlightenment.nix
+++ /dev/null
@@ -1,124 +0,0 @@
-{ config, pkgs, lib, ... }:
-
-with lib;
-
-let
-
-  e = pkgs.enlightenment;
-  xcfg = config.services.xserver;
-  cfg = xcfg.desktopManager.enlightenment;
-  GST_PLUGIN_PATH = lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" [
-    pkgs.gst_all_1.gst-plugins-base
-    pkgs.gst_all_1.gst-plugins-good
-    pkgs.gst_all_1.gst-plugins-bad
-    pkgs.gst_all_1.gst-libav ];
-
-in
-
-{
-  meta = {
-    maintainers = teams.enlightenment.members;
-  };
-
-  imports = [
-    (mkRenamedOptionModule [ "services" "xserver" "desktopManager" "e19" "enable" ] [ "services" "xserver" "desktopManager" "enlightenment" "enable" ])
-  ];
-
-  options = {
-
-    services.xserver.desktopManager.enlightenment.enable = mkOption {
-      type = types.bool;
-      default = false;
-      description = "Enable the Enlightenment desktop environment.";
-    };
-
-  };
-
-  config = mkIf cfg.enable {
-
-    environment.systemPackages = with pkgs; [
-      enlightenment.econnman
-      enlightenment.efl
-      enlightenment.enlightenment
-      enlightenment.ecrire
-      enlightenment.ephoto
-      enlightenment.rage
-      enlightenment.terminology
-      xorg.xcursorthemes
-    ];
-
-    environment.pathsToLink = [
-      "/etc/enlightenment"
-      "/share/enlightenment"
-      "/share/elementary"
-      "/share/locale"
-    ];
-
-    services.displayManager.sessionPackages = [ pkgs.enlightenment.enlightenment ];
-
-    services.xserver.displayManager.sessionCommands = ''
-      if test "$XDG_CURRENT_DESKTOP" = "Enlightenment"; then
-        export GST_PLUGIN_PATH="${GST_PLUGIN_PATH}"
-
-        # make available for D-BUS user services
-        #export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}:${config.system.path}/share:${e.efl}/share
-
-        # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
-        ${pkgs.xdg-user-dirs}/bin/xdg-user-dirs-update
-      fi
-    '';
-
-    # Wrappers for programs installed by enlightenment that should be setuid
-    security.wrappers = {
-      enlightenment_ckpasswd =
-        { setuid = true;
-          owner = "root";
-          group = "root";
-          source = "${pkgs.enlightenment.enlightenment}/lib/enlightenment/utils/enlightenment_ckpasswd";
-        };
-      enlightenment_sys =
-        { setuid = true;
-          owner = "root";
-          group = "root";
-          source = "${pkgs.enlightenment.enlightenment}/lib/enlightenment/utils/enlightenment_sys";
-        };
-      enlightenment_system =
-        { setuid = true;
-          owner = "root";
-          group = "root";
-          source = "${pkgs.enlightenment.enlightenment}/lib/enlightenment/utils/enlightenment_system";
-        };
-    };
-
-    environment.etc."X11/xkb".source = xcfg.xkb.dir;
-
-    fonts.packages = [ pkgs.dejavu_fonts pkgs.ubuntu_font_family ];
-
-    services.udisks2.enable = true;
-    services.upower.enable = config.powerManagement.enable;
-    services.libinput.enable = mkDefault true;
-
-    services.dbus.packages = [ e.efl ];
-
-    systemd.user.services.efreet =
-      { enable = true;
-        description = "org.enlightenment.Efreet";
-        serviceConfig =
-          { ExecStart = "${e.efl}/bin/efreetd";
-            StandardOutput = "null";
-          };
-      };
-
-    systemd.user.services.ethumb =
-      { enable = true;
-        description = "org.enlightenment.Ethumb";
-        serviceConfig =
-          { ExecStart = "${e.efl}/bin/ethumbd";
-            StandardOutput = "null";
-          };
-      };
-
-
-  };
-
-}
diff --git a/nixos/modules/services/x11/desktop-managers/gnome.md b/nixos/modules/services/x11/desktop-managers/gnome.md
deleted file mode 100644
index 2b4bd06df04f..000000000000
--- a/nixos/modules/services/x11/desktop-managers/gnome.md
+++ /dev/null
@@ -1,185 +0,0 @@
-# GNOME Desktop {#chap-gnome}
-
-GNOME provides a simple, yet full-featured desktop environment with a focus on productivity. Its Mutter compositor supports both Wayland and X server, and the GNOME Shell user interface is fully customizable by extensions.
-
-## Enabling GNOME {#sec-gnome-enable}
-
-All of the core apps, optional apps, games, and core developer tools from GNOME are available.
-
-To enable the GNOME desktop use:
-
-```nix
-{
-  services.xserver.desktopManager.gnome.enable = true;
-  services.xserver.displayManager.gdm.enable = true;
-}
-```
-
-::: {.note}
-While it is not strictly necessary to use GDM as the display manager with GNOME, it is recommended, as some features such as screen lock [might not work](#sec-gnome-faq-can-i-use-lightdm-with-gnome) without it.
-:::
-
-The default applications used in NixOS are very minimal, inspired by the defaults used in [gnome-build-meta](https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/40.0/elements/core/meta-gnome-core-utilities.bst).
-
-### GNOME without the apps {#sec-gnome-without-the-apps}
-
-If you’d like to only use the GNOME desktop and not the apps, you can disable them with:
-
-```nix
-{
-  services.gnome.core-utilities.enable = false;
-}
-```
-
-and none of them will be installed.
-
-If you’d only like to omit a subset of the core utilities, you can use
-[](#opt-environment.gnome.excludePackages).
-Note that this mechanism can only exclude core utilities, games and core developer tools.
-
-### Disabling GNOME services {#sec-gnome-disabling-services}
-
-It is also possible to disable many of the [core services](https://github.com/NixOS/nixpkgs/blob/b8ec4fd2a4edc4e30d02ba7b1a2cc1358f3db1d5/nixos/modules/services/x11/desktop-managers/gnome.nix#L329-L348). For example, if you do not need indexing files, you can disable Tracker with:
-
-```nix
-{
-  services.gnome.tracker-miners.enable = false;
-  services.gnome.tracker.enable = false;
-}
-```
-
-Note, however, that doing so is not supported and might break some applications. Notably, GNOME Music cannot work without Tracker.
-
-### GNOME games {#sec-gnome-games}
-
-You can install all of the GNOME games with:
-
-```nix
-{
-  services.gnome.games.enable = true;
-}
-```
-
-### GNOME core developer tools {#sec-gnome-core-developer-tools}
-
-You can install GNOME core developer tools with:
-
-```nix
-{
-  services.gnome.core-developer-tools.enable = true;
-}
-```
-
-## Enabling GNOME Flashback {#sec-gnome-enable-flashback}
-
-GNOME Flashback provides a desktop environment based on the classic GNOME 2 architecture. You can enable the default GNOME Flashback session, which uses the Metacity window manager, with:
-
-```nix
-{
-  services.xserver.desktopManager.gnome.flashback.enableMetacity = true;
-}
-```
-
-It is also possible to create custom sessions that replace Metacity with a different window manager using [](#opt-services.xserver.desktopManager.gnome.flashback.customSessions).
-
-The following example uses `xmonad` window manager:
-
-```nix
-{
-  services.xserver.desktopManager.gnome.flashback.customSessions = [
-    {
-      wmName = "xmonad";
-      wmLabel = "XMonad";
-      wmCommand = "${pkgs.haskellPackages.xmonad}/bin/xmonad";
-      enableGnomePanel = false;
-    }
-  ];
-}
-```
-
-## Icons and GTK Themes {#sec-gnome-icons-and-gtk-themes}
-
-Icon themes and GTK themes don’t require any special option to install in NixOS.
-
-You can add them to [](#opt-environment.systemPackages) and switch to them with GNOME Tweaks.
-If you’d like to do this manually in dconf, change the values of the following keys:
-
-```
-/org/gnome/desktop/interface/gtk-theme
-/org/gnome/desktop/interface/icon-theme
-```
-
-in `dconf-editor`
-
-## Shell Extensions {#sec-gnome-shell-extensions}
-
-Most Shell extensions are packaged under the `gnomeExtensions` attribute.
-Some packages that include Shell extensions, like `gnome.gpaste`, don’t have their extension decoupled under this attribute.
-
-You can install them like any other package:
-
-```nix
-{
-  environment.systemPackages = [
-    gnomeExtensions.dash-to-dock
-    gnomeExtensions.gsconnect
-    gnomeExtensions.mpris-indicator-button
-  ];
-}
-```
-
-Unfortunately, we lack a way for these to be managed in a completely declarative way.
-So you have to enable them manually with an Extensions application.
-It is possible to use a [GSettings override](#sec-gnome-gsettings-overrides) for this on `org.gnome.shell.enabled-extensions`, but that will only influence the default value.
-
-## GSettings Overrides {#sec-gnome-gsettings-overrides}
-
-Majority of software building on the GNOME platform use GLib’s [GSettings](https://developer.gnome.org/gio/unstable/GSettings.html) system to manage runtime configuration. For our purposes, the system consists of XML schemas describing the individual configuration options, stored in the package, and a settings backend, where the values of the settings are stored. On NixOS, like on most Linux distributions, dconf database is used as the backend.
-
-[GSettings vendor overrides](https://developer.gnome.org/gio/unstable/GSettings.html#id-1.4.19.2.9.25) can be used to adjust the default values for settings of the GNOME desktop and apps by replacing the default values specified in the XML schemas. Using overrides will allow you to pre-seed user settings before you even start the session.
-
-::: {.warning}
-Overrides really only change the default values for GSettings keys so if you or an application changes the setting value, the value set by the override will be ignored. Until [NixOS’s dconf module implements changing values](https://github.com/NixOS/nixpkgs/issues/54150), you will either need to keep that in mind and clear the setting from the backend using `dconf reset` command when that happens, or use the [module from home-manager](https://nix-community.github.io/home-manager/options.html#opt-dconf.settings).
-:::
-
-You can override the default GSettings values using the
-[](#opt-services.xserver.desktopManager.gnome.extraGSettingsOverrides) option.
-
-Take note that whatever packages you want to override GSettings for, you need to add them to
-[](#opt-services.xserver.desktopManager.gnome.extraGSettingsOverridePackages).
-
-You can use `dconf-editor` tool to explore which GSettings you can set.
-
-### Example {#sec-gnome-gsettings-overrides-example}
-
-```nix
-{
-  services.xserver.desktopManager.gnome = {
-    extraGSettingsOverrides = ''
-      # Change default background
-      [org.gnome.desktop.background]
-      picture-uri='file://${pkgs.nixos-artwork.wallpapers.mosaic-blue.gnomeFilePath}'
-
-      # Favorite apps in gnome-shell
-      [org.gnome.shell]
-      favorite-apps=['org.gnome.Console.desktop', 'org.gnome.Nautilus.desktop']
-    '';
-
-    extraGSettingsOverridePackages = [
-      pkgs.gsettings-desktop-schemas # for org.gnome.desktop
-      pkgs.gnome.gnome-shell # for org.gnome.shell
-    ];
-  };
-}
-```
-
-## Frequently Asked Questions {#sec-gnome-faq}
-
-### Can I use LightDM with GNOME? {#sec-gnome-faq-can-i-use-lightdm-with-gnome}
-
-Yes you can, and any other display-manager in NixOS.
-
-However, it doesn’t work correctly for the Wayland session of GNOME Shell yet, and
-won’t be able to lock your screen.
-
-See [this issue.](https://github.com/NixOS/nixpkgs/issues/56342)
diff --git a/nixos/modules/services/x11/desktop-managers/gnome.nix b/nixos/modules/services/x11/desktop-managers/gnome.nix
deleted file mode 100644
index fe50d930b5af..000000000000
--- a/nixos/modules/services/x11/desktop-managers/gnome.nix
+++ /dev/null
@@ -1,500 +0,0 @@
-{ config, lib, pkgs, utils, ... }:
-
-let
-  inherit (lib) mkOption types mkDefault mkEnableOption literalExpression;
-
-  cfg = config.services.xserver.desktopManager.gnome;
-  serviceCfg = config.services.gnome;
-
-  # Prioritize nautilus by default when opening directories
-  mimeAppsList = pkgs.writeTextFile {
-    name = "gnome-mimeapps";
-    destination = "/share/applications/mimeapps.list";
-    text = ''
-      [Default Applications]
-      inode/directory=nautilus.desktop;org.gnome.Nautilus.desktop
-    '';
-  };
-
-  defaultFavoriteAppsOverride = ''
-    [org.gnome.shell]
-    favorite-apps=[ 'org.gnome.Epiphany.desktop', 'org.gnome.Geary.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop' ]
-  '';
-
-  nixos-background-light = pkgs.nixos-artwork.wallpapers.simple-blue;
-  nixos-background-dark = pkgs.nixos-artwork.wallpapers.simple-dark-gray;
-
-  # TODO: Having https://github.com/NixOS/nixpkgs/issues/54150 would supersede this
-  nixos-gsettings-desktop-schemas = pkgs.gnome.nixos-gsettings-overrides.override {
-    inherit (cfg) extraGSettingsOverrides extraGSettingsOverridePackages favoriteAppsOverride;
-    inherit flashbackEnabled nixos-background-dark nixos-background-light;
-  };
-
-  nixos-background-info = pkgs.writeTextFile rec {
-    name = "nixos-background-info";
-    text = ''
-      <?xml version="1.0"?>
-      <!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
-      <wallpapers>
-        <wallpaper deleted="false">
-          <name>Blobs</name>
-          <filename>${nixos-background-light.gnomeFilePath}</filename>
-          <filename-dark>${nixos-background-dark.gnomeFilePath}</filename-dark>
-          <options>zoom</options>
-          <shade_type>solid</shade_type>
-          <pcolor>#3a4ba0</pcolor>
-          <scolor>#2f302f</scolor>
-        </wallpaper>
-      </wallpapers>
-    '';
-    destination = "/share/gnome-background-properties/nixos.xml";
-  };
-
-  flashbackEnabled = cfg.flashback.enableMetacity || lib.length cfg.flashback.customSessions > 0;
-  flashbackWms = lib.optional cfg.flashback.enableMetacity {
-    wmName = "metacity";
-    wmLabel = "Metacity";
-    wmCommand = "${pkgs.gnome.metacity}/bin/metacity";
-    enableGnomePanel = true;
-  } ++ cfg.flashback.customSessions;
-
-  notExcluded = pkg: mkDefault (!(lib.elem pkg config.environment.gnome.excludePackages));
-
-in
-
-{
-
-  meta = {
-    doc = ./gnome.md;
-    maintainers = lib.teams.gnome.members;
-  };
-
-  options = {
-
-    services.gnome = {
-      core-os-services.enable = mkEnableOption "essential services for GNOME3";
-      core-shell.enable = mkEnableOption "GNOME Shell services";
-      core-utilities.enable = mkEnableOption "GNOME core utilities";
-      core-developer-tools.enable = mkEnableOption "GNOME core developer tools";
-      games.enable = mkEnableOption "GNOME games";
-    };
-
-    services.xserver.desktopManager.gnome = {
-      enable = mkOption {
-        type = types.bool;
-        default = false;
-        description = "Enable GNOME desktop manager.";
-      };
-
-      sessionPath = mkOption {
-        default = [];
-        type = types.listOf types.package;
-        example = literalExpression "[ pkgs.gnome.gpaste ]";
-        description = ''
-          Additional list of packages to be added to the session search path.
-          Useful for GNOME Shell extensions or GSettings-conditional autostart.
-
-          Note that this should be a last resort; patching the package is preferred (see GPaste).
-        '';
-      };
-
-      favoriteAppsOverride = mkOption {
-        internal = true; # this is messy
-        default = defaultFavoriteAppsOverride;
-        type = types.lines;
-        example = literalExpression ''
-          '''
-            [org.gnome.shell]
-            favorite-apps=[ 'firefox.desktop', 'org.gnome.Calendar.desktop' ]
-          '''
-        '';
-        description = "List of desktop files to put as favorite apps into gnome-shell. These need to be installed somehow globally.";
-      };
-
-      extraGSettingsOverrides = mkOption {
-        default = "";
-        type = types.lines;
-        description = "Additional gsettings overrides.";
-      };
-
-      extraGSettingsOverridePackages = mkOption {
-        default = [];
-        type = types.listOf types.path;
-        description = "List of packages for which gsettings are overridden.";
-      };
-
-      debug = mkEnableOption "gnome-session debug messages";
-
-      flashback = {
-        enableMetacity = mkEnableOption "the standard GNOME Flashback session with Metacity";
-
-        customSessions = mkOption {
-          type = types.listOf (types.submodule {
-            options = {
-              wmName = mkOption {
-                type = types.strMatching "[a-zA-Z0-9_-]+";
-                description = "A unique identifier for the window manager.";
-                example = "xmonad";
-              };
-
-              wmLabel = mkOption {
-                type = types.str;
-                description = "The name of the window manager to show in the session chooser.";
-                example = "XMonad";
-              };
-
-              wmCommand = mkOption {
-                type = types.str;
-                description = "The executable of the window manager to use.";
-                example = literalExpression ''"''${pkgs.haskellPackages.xmonad}/bin/xmonad"'';
-              };
-
-              enableGnomePanel = mkOption {
-                type = types.bool;
-                default = true;
-                example = false;
-                description = "Whether to enable the GNOME panel in this session.";
-              };
-            };
-          });
-          default = [];
-          description = "Other GNOME Flashback sessions to enable.";
-        };
-
-        panelModulePackages = mkOption {
-          default = [ pkgs.gnome.gnome-applets ];
-          defaultText = literalExpression "[ pkgs.gnome.gnome-applets ]";
-          type = types.listOf types.package;
-          description = ''
-            Packages containing modules that should be made available to `gnome-panel` (usually for applets).
-
-            If you're packaging something to use here, please install the modules in `$out/lib/gnome-panel/modules`.
-          '';
-        };
-      };
-    };
-
-    environment.gnome.excludePackages = mkOption {
-      default = [];
-      example = literalExpression "[ pkgs.gnome.totem ]";
-      type = types.listOf types.package;
-      description = "Which packages gnome should exclude from the default environment";
-    };
-
-  };
-
-  config = lib.mkMerge [
-    (lib.mkIf (cfg.enable || flashbackEnabled) {
-      # Seed our configuration into nixos-generate-config
-      system.nixos-generate-config.desktopConfiguration = [''
-        # Enable the GNOME Desktop Environment.
-        services.xserver.displayManager.gdm.enable = true;
-        services.xserver.desktopManager.gnome.enable = true;
-      ''];
-
-      services.gnome.core-os-services.enable = true;
-      services.gnome.core-shell.enable = true;
-      services.gnome.core-utilities.enable = mkDefault true;
-
-      services.displayManager.sessionPackages = [ pkgs.gnome.gnome-session.sessions ];
-
-      environment.extraInit = ''
-        ${lib.concatMapStrings (p: ''
-          if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
-            export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
-          fi
-
-          if [ -d "${p}/lib/girepository-1.0" ]; then
-            export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
-            export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
-          fi
-        '') cfg.sessionPath}
-      '';
-
-      environment.systemPackages = cfg.sessionPath;
-
-      environment.sessionVariables.GNOME_SESSION_DEBUG = lib.mkIf cfg.debug "1";
-
-      # Override GSettings schemas
-      environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
-    })
-
-    (lib.mkIf flashbackEnabled {
-      services.displayManager.sessionPackages =
-        let
-          wmNames = map (wm: wm.wmName) flashbackWms;
-          namesAreUnique = lib.unique wmNames == wmNames;
-        in
-          assert (lib.assertMsg namesAreUnique "Flashback WM names must be unique.");
-          map
-            (wm:
-              pkgs.gnome.gnome-flashback.mkSessionForWm {
-                inherit (wm) wmName wmLabel wmCommand;
-              }
-            ) flashbackWms;
-
-      security.pam.services.gnome-flashback = {
-        enableGnomeKeyring = true;
-      };
-
-      systemd.packages = with pkgs.gnome; [
-        gnome-flashback
-      ] ++ map gnome-flashback.mkSystemdTargetForWm flashbackWms;
-
-      environment.systemPackages = with pkgs.gnome; [
-        gnome-flashback
-        (gnome-panel-with-modules.override {
-          panelModulePackages = cfg.flashback.panelModulePackages;
-        })
-      ]
-      # For /share/applications/${wmName}.desktop
-      ++ (map (wm: gnome-flashback.mkWmApplication { inherit (wm) wmName wmLabel wmCommand; }) flashbackWms)
-      # For /share/gnome-session/sessions/gnome-flashback-${wmName}.session
-      ++ (map (wm: gnome-flashback.mkGnomeSession { inherit (wm) wmName wmLabel enableGnomePanel; }) flashbackWms);
-    })
-
-    (lib.mkIf serviceCfg.core-os-services.enable {
-      hardware.bluetooth.enable = mkDefault true;
-      hardware.pulseaudio.enable = mkDefault true;
-      programs.dconf.enable = true;
-      security.polkit.enable = true;
-      services.accounts-daemon.enable = true;
-      services.dleyna-renderer.enable = mkDefault true;
-      services.dleyna-server.enable = mkDefault true;
-      services.power-profiles-daemon.enable = mkDefault true;
-      services.gnome.at-spi2-core.enable = true;
-      services.gnome.evolution-data-server.enable = true;
-      services.gnome.gnome-keyring.enable = true;
-      services.gnome.gnome-online-accounts.enable = mkDefault true;
-      services.gnome.gnome-online-miners.enable = true;
-      services.gnome.tracker-miners.enable = mkDefault true;
-      services.gnome.tracker.enable = mkDefault true;
-      services.hardware.bolt.enable = mkDefault true;
-      # TODO: Enable once #177946 is resolved
-      # services.packagekit.enable = mkDefault true;
-      services.udisks2.enable = true;
-      services.upower.enable = config.powerManagement.enable;
-      services.libinput.enable = mkDefault true; # for controlling touchpad settings via gnome control center
-
-      # Explicitly enabled since GNOME will be severely broken without these.
-      xdg.mime.enable = true;
-      xdg.icons.enable = true;
-
-      xdg.portal.enable = true;
-      xdg.portal.extraPortals = [
-        pkgs.xdg-desktop-portal-gnome
-        (pkgs.xdg-desktop-portal-gtk.override {
-          # Do not build portals that we already have.
-          buildPortalsInGnome = false;
-        })
-      ];
-      xdg.portal.configPackages = mkDefault [ pkgs.gnome.gnome-session ];
-
-      networking.networkmanager.enable = mkDefault true;
-
-      services.xserver.updateDbusEnvironment = true;
-
-      # gnome has a custom alert theme but it still
-      # inherits from the freedesktop theme.
-      environment.systemPackages = with pkgs; [
-        sound-theme-freedesktop
-      ];
-
-      # Needed for themes and backgrounds
-      environment.pathsToLink = [
-        "/share" # TODO: https://github.com/NixOS/nixpkgs/issues/47173
-      ];
-    })
-
-    (lib.mkIf serviceCfg.core-shell.enable {
-      services.xserver.desktopManager.gnome.sessionPath =
-        let
-          mandatoryPackages = [
-            pkgs.gnome.gnome-shell
-          ];
-          optionalPackages = [
-            pkgs.gnome.gnome-shell-extensions
-          ];
-        in
-        mandatoryPackages
-        ++ utils.removePackagesByName optionalPackages config.environment.gnome.excludePackages;
-
-      services.colord.enable = mkDefault true;
-      services.gnome.glib-networking.enable = true;
-      services.gnome.gnome-browser-connector.enable = mkDefault true;
-      services.gnome.gnome-initial-setup.enable = mkDefault true;
-      services.gnome.gnome-remote-desktop.enable = mkDefault true;
-      services.gnome.gnome-settings-daemon.enable = true;
-      services.gnome.gnome-user-share.enable = mkDefault true;
-      services.gnome.rygel.enable = mkDefault true;
-      services.gvfs.enable = true;
-      services.system-config-printer.enable = (lib.mkIf config.services.printing.enable (mkDefault true));
-
-      systemd.packages = with pkgs.gnome; [
-        gnome-session
-        gnome-shell
-      ];
-
-      services.udev.packages = with pkgs.gnome; [
-        # Force enable KMS modifiers for devices that require them.
-        # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1443
-        mutter
-      ];
-
-      services.avahi.enable = mkDefault true;
-
-      services.geoclue2.enable = mkDefault true;
-      services.geoclue2.enableDemoAgent = false; # GNOME has its own geoclue agent
-
-      services.geoclue2.appConfig.gnome-datetime-panel = {
-        isAllowed = true;
-        isSystem = true;
-      };
-      services.geoclue2.appConfig.gnome-color-panel = {
-        isAllowed = true;
-        isSystem = true;
-      };
-      services.geoclue2.appConfig."org.gnome.Shell" = {
-        isAllowed = true;
-        isSystem = true;
-      };
-
-      fonts.packages = with pkgs; [
-        cantarell-fonts
-        dejavu_fonts
-        source-code-pro # Default monospace font in 3.32
-        source-sans
-      ];
-
-      # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-38/elements/core/meta-gnome-core-shell.bst
-      environment.systemPackages =
-        let
-          mandatoryPackages = with pkgs.gnome; [
-            gnome-shell
-          ];
-          optionalPackages = with pkgs.gnome; [
-            adwaita-icon-theme
-            nixos-background-info
-            gnome-backgrounds
-            gnome-bluetooth
-            gnome-color-manager
-            gnome-control-center
-            gnome-shell-extensions
-            pkgs.gnome-tour # GNOME Shell detects the .desktop file on first log-in.
-            pkgs.gnome-user-docs
-            pkgs.orca
-            pkgs.glib # for gsettings program
-            pkgs.gnome-menus
-            pkgs.gtk3.out # for gtk-launch program
-            pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
-          ];
-        in
-        mandatoryPackages
-        ++ utils.removePackagesByName optionalPackages config.environment.gnome.excludePackages;
-    })
-
-    # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/gnome-45/elements/core/meta-gnome-core-utilities.bst
-    (lib.mkIf serviceCfg.core-utilities.enable {
-      environment.systemPackages =
-        with pkgs.gnome;
-        utils.removePackagesByName
-          ([
-            baobab
-            epiphany
-            pkgs.gnome-text-editor
-            gnome-calculator
-            gnome-calendar
-            gnome-characters
-            gnome-clocks
-            pkgs.gnome-console
-            gnome-contacts
-            gnome-font-viewer
-            gnome-logs
-            gnome-maps
-            gnome-music
-            gnome-system-monitor
-            gnome-weather
-            pkgs.loupe
-            nautilus
-            pkgs.gnome-connections
-            simple-scan
-            pkgs.snapshot
-            totem
-            yelp
-          ] ++ lib.optionals config.services.flatpak.enable [
-            # Since PackageKit Nix support is not there yet,
-            # only install gnome-software if flatpak is enabled.
-            gnome-software
-          ])
-          config.environment.gnome.excludePackages;
-
-      # Enable default program modules
-      # Since some of these have a corresponding package, we only
-      # enable that program module if the package hasn't been excluded
-      # through `environment.gnome.excludePackages`
-      programs.evince.enable = notExcluded pkgs.gnome.evince;
-      programs.file-roller.enable = notExcluded pkgs.gnome.file-roller;
-      programs.geary.enable = notExcluded pkgs.gnome.geary;
-      programs.gnome-disks.enable = notExcluded pkgs.gnome.gnome-disk-utility;
-      programs.seahorse.enable = notExcluded pkgs.gnome.seahorse;
-      services.gnome.sushi.enable = notExcluded pkgs.gnome.sushi;
-
-      # VTE shell integration for gnome-console
-      programs.bash.vteIntegration = mkDefault true;
-      programs.zsh.vteIntegration = mkDefault true;
-
-      # Let nautilus find extensions
-      # TODO: Create nautilus-with-extensions package
-      environment.sessionVariables.NAUTILUS_4_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-4";
-
-      # Override default mimeapps for nautilus
-      environment.sessionVariables.XDG_DATA_DIRS = [ "${mimeAppsList}/share" ];
-
-      environment.pathsToLink = [
-        "/share/nautilus-python/extensions"
-      ];
-    })
-
-    (lib.mkIf serviceCfg.games.enable {
-      environment.systemPackages = with pkgs.gnome; utils.removePackagesByName [
-        aisleriot
-        atomix
-        five-or-more
-        four-in-a-row
-        pkgs.gnome-2048
-        gnome-chess
-        gnome-klotski
-        gnome-mahjongg
-        gnome-mines
-        gnome-nibbles
-        gnome-robots
-        gnome-sudoku
-        gnome-taquin
-        gnome-tetravex
-        hitori
-        iagno
-        lightsoff
-        quadrapassel
-        swell-foop
-        tali
-      ] config.environment.gnome.excludePackages;
-    })
-
-    # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/3.38.0/elements/core/meta-gnome-core-developer-tools.bst
-    (lib.mkIf serviceCfg.core-developer-tools.enable {
-      environment.systemPackages = with pkgs.gnome; utils.removePackagesByName [
-        dconf-editor
-        devhelp
-        pkgs.gnome-builder
-        # boxes would make sense in this option, however
-        # it doesn't function well enough to be included
-        # in default configurations.
-        # https://github.com/NixOS/nixpkgs/issues/60908
-        /* gnome-boxes */
-      ] config.environment.gnome.excludePackages;
-
-      services.sysprof.enable = notExcluded pkgs.sysprof;
-    })
-  ];
-
-}
diff --git a/nixos/modules/services/x11/desktop-managers/kodi.nix b/nixos/modules/services/x11/desktop-managers/kodi.nix
deleted file mode 100644
index b7c0af210b14..000000000000
--- a/nixos/modules/services/x11/desktop-managers/kodi.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
-  cfg = config.services.xserver.desktopManager.kodi;
-in
-
-{
-  options = {
-    services.xserver.desktopManager.kodi = {
-      enable = mkOption {
-        type = types.bool;
-        default = false;
-        description = "Enable the kodi multimedia center.";
-      };
-
-      package = mkPackageOption pkgs "kodi" {
-        example = "kodi.withPackages (p: with p; [ jellyfin pvr-iptvsimple vfs-sftp ])";
-      };
-    };
-  };
-
-  config = mkIf cfg.enable {
-    services.xserver.desktopManager.session = [{
-      name = "kodi";
-      start = ''
-        LIRC_SOCKET_PATH=/run/lirc/lircd ${cfg.package}/bin/kodi --standalone &
-        waitPID=$!
-      '';
-    }];
-
-    environment.systemPackages = [ cfg.package ];
-  };
-}
diff --git a/nixos/modules/services/x11/desktop-managers/lumina.nix b/nixos/modules/services/x11/desktop-managers/lumina.nix
deleted file mode 100644
index 72411e8fcb5e..000000000000
--- a/nixos/modules/services/x11/desktop-managers/lumina.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
-
-  xcfg = config.services.xserver;
-  cfg = xcfg.desktopManager.lumina;
-
-in
-
-{
-  meta = {
-    maintainers = teams.lumina.members;
-  };
-
-  options = {
-
-    services.xserver.desktopManager.lumina.enable = mkOption {
-      type = types.bool;
-      default = false;
-      description = "Enable the Lumina desktop manager";
-    };
-
-  };
-
-
-  config = mkIf cfg.enable {
-
-    services.displayManager.sessionPackages = [
-      pkgs.lumina.lumina
-    ];
-
-    environment.systemPackages =
-      pkgs.lumina.preRequisitePackages ++
-      pkgs.lumina.corePackages;
-
-    # Link some extra directories in /run/current-system/software/share
-    environment.pathsToLink = [
-      "/share/lumina"
-      # FIXME: modules should link subdirs of `/share` rather than relying on this
-      "/share"
-    ];
-
-  };
-}
diff --git a/nixos/modules/services/x11/desktop-managers/lxqt.nix b/nixos/modules/services/x11/desktop-managers/lxqt.nix
deleted file mode 100644
index ac86c385bcc8..000000000000
--- a/nixos/modules/services/x11/desktop-managers/lxqt.nix
+++ /dev/null
@@ -1,80 +0,0 @@
-{ config, lib, pkgs, utils, ... }:
-
-with lib;
-
-let
-  xcfg = config.services.xserver;
-  cfg = xcfg.desktopManager.lxqt;
-
-in
-
-{
-  meta = {
-    maintainers = teams.lxqt.members;
-  };
-
-  options = {
-
-    services.xserver.desktopManager.lxqt.enable = mkOption {
-      type = types.bool;
-      default = false;
-      description = "Enable the LXQt desktop manager";
-    };
-
-    environment.lxqt.excludePackages = mkOption {
-      default = [];
-      example = literalExpression "[ pkgs.lxqt.qterminal ]";
-      type = types.listOf types.package;
-      description = "Which LXQt packages to exclude from the default environment";
-    };
-
-  };
-
-  config = mkIf cfg.enable {
-
-    services.xserver.desktopManager.session = singleton {
-      name = "lxqt";
-      bgSupport = true;
-      start = ''
-        # Upstream installs default configuration files in
-        # $prefix/share/lxqt instead of $prefix/etc/xdg, (arguably)
-        # giving distributors freedom to ship custom default
-        # configuration files more easily. In order to let the session
-        # manager find them the share subdirectory is added to the
-        # XDG_CONFIG_DIRS environment variable.
-        #
-        # For an explanation see
-        # https://github.com/lxqt/lxqt/issues/1521#issuecomment-405097453
-        #
-        export XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS''${XDG_CONFIG_DIRS:+:}${config.system.path}/share
-
-        exec ${pkgs.lxqt.lxqt-session}/bin/startlxqt
-      '';
-    };
-
-    environment.systemPackages =
-      pkgs.lxqt.preRequisitePackages ++
-      pkgs.lxqt.corePackages ++
-      (utils.removePackagesByName
-        pkgs.lxqt.optionalPackages
-        config.environment.lxqt.excludePackages);
-
-    # Link some extra directories in /run/current-system/software/share
-    environment.pathsToLink = [ "/share" ];
-
-    programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-qt;
-
-    # virtual file systems support for PCManFM-QT
-    services.gvfs.enable = true;
-
-    services.upower.enable = config.powerManagement.enable;
-
-    services.libinput.enable = mkDefault true;
-
-    xdg.portal.lxqt.enable = mkDefault true;
-
-    # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050804
-    xdg.portal.config.lxqt.default = mkDefault [ "lxqt" "gtk" ];
-  };
-
-}
diff --git a/nixos/modules/services/x11/desktop-managers/mate.nix b/nixos/modules/services/x11/desktop-managers/mate.nix
deleted file mode 100644
index 19235be4aa8d..000000000000
--- a/nixos/modules/services/x11/desktop-managers/mate.nix
+++ /dev/null
@@ -1,110 +0,0 @@
-{ config, lib, pkgs, utils, ... }:
-
-with lib;
-
-let
-
-  xcfg = config.services.xserver;
-  cfg = xcfg.desktopManager.mate;
-
-in
-
-{
-  options = {
-
-    services.xserver.desktopManager.mate = {
-      enable = mkOption {
-        type = types.bool;
-        default = false;
-        description = "Enable the MATE desktop environment";
-      };
-
-      debug = mkEnableOption "mate-session debug messages";
-
-      extraPanelApplets = mkOption {
-        default = [ ];
-        example = literalExpression "with pkgs.mate; [ mate-applets ]";
-        type = types.listOf types.package;
-        description = "Extra applets to add to mate-panel.";
-      };
-
-      extraCajaExtensions = mkOption {
-        default = [ ];
-        example = lib.literalExpression "with pkgs.mate; [ caja-extensions ]";
-        type = types.listOf types.package;
-        description = "Extra extensions to add to caja.";
-      };
-
-      enableWaylandSession = mkEnableOption "MATE Wayland session";
-    };
-
-    environment.mate.excludePackages = mkOption {
-      default = [];
-      example = literalExpression "[ pkgs.mate.mate-terminal pkgs.mate.pluma ]";
-      type = types.listOf types.package;
-      description = "Which MATE packages to exclude from the default environment";
-    };
-
-  };
-
-  config = mkMerge [
-    (mkIf (cfg.enable || cfg.enableWaylandSession) {
-      services.displayManager.sessionPackages = [
-        pkgs.mate.mate-session-manager
-      ];
-
-      # Debugging
-      environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1";
-
-      environment.systemPackages = utils.removePackagesByName
-        (pkgs.mate.basePackages ++
-        pkgs.mate.extraPackages ++
-        [
-          (pkgs.mate.caja-with-extensions.override {
-            extensions = cfg.extraCajaExtensions;
-          })
-          (pkgs.mate.mate-panel-with-applets.override {
-            applets = cfg.extraPanelApplets;
-          })
-          pkgs.desktop-file-utils
-          pkgs.glib
-          pkgs.gtk3.out
-          pkgs.shared-mime-info
-          pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
-          pkgs.yelp # for 'Contents' in 'Help' menus
-        ])
-        config.environment.mate.excludePackages;
-
-      programs.dconf.enable = true;
-      # Shell integration for VTE terminals
-      programs.bash.vteIntegration = mkDefault true;
-      programs.zsh.vteIntegration = mkDefault true;
-
-      # Mate uses this for printing
-      programs.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
-
-      services.gnome.at-spi2-core.enable = true;
-      services.gnome.glib-networking.enable = true;
-      services.gnome.gnome-keyring.enable = true;
-      services.udev.packages = [ pkgs.mate.mate-settings-daemon ];
-      services.gvfs.enable = true;
-      services.upower.enable = config.powerManagement.enable;
-      services.libinput.enable = mkDefault true;
-
-      security.pam.services.mate-screensaver.unixAuth = true;
-
-      xdg.portal.configPackages = mkDefault [ pkgs.mate.mate-desktop ];
-
-      environment.pathsToLink = [ "/share" ];
-    })
-    (mkIf cfg.enableWaylandSession {
-      programs.wayfire.enable = true;
-      programs.wayfire.plugins = [ pkgs.wayfirePlugins.firedecor ];
-
-      environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${pkgs.mate.mate-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
-
-      environment.systemPackages = [ pkgs.mate.mate-wayland-session ];
-      services.displayManager.sessionPackages = [ pkgs.mate.mate-wayland-session ];
-    })
-  ];
-}
diff --git a/nixos/modules/services/x11/desktop-managers/none.nix b/nixos/modules/services/x11/desktop-managers/none.nix
deleted file mode 100644
index f5b5e3104101..000000000000
--- a/nixos/modules/services/x11/desktop-managers/none.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ config, lib, pkgs, ... }:
-with lib;
-let
-  runXdgAutostart = config.services.xserver.desktopManager.runXdgAutostartIfNone;
-in
-{
-  options = {
-    services.xserver.desktopManager.runXdgAutostartIfNone = mkOption {
-      type = types.bool;
-      default = false;
-      description = ''
-        Whether to run XDG autostart files for sessions without a desktop manager
-        (with only a window manager), these sessions usually don't handle XDG
-        autostart files by default.
-
-        Some services like {option}`i18n.inputMethod` and
-        {option}`service.earlyoom` use XDG autostart files to start.
-        If this option is not set to `true` and you are using
-        a window manager without a desktop manager, you need to manually start
-        them or running `dex` somewhere.
-      '';
-    };
-  };
-
-  config = mkMerge [
-    {
-      services.xserver.desktopManager.session = [
-        {
-          name = "none";
-          start = optionalString runXdgAutostart ''
-            /run/current-system/systemd/bin/systemctl --user start xdg-autostart-if-no-desktop-manager.target
-          '';
-        }
-      ];
-    }
-    (mkIf runXdgAutostart {
-      systemd.user.targets.xdg-autostart-if-no-desktop-manager = {
-        description = "Run XDG autostart files";
-        # From `plasma-workspace`, `share/systemd/user/plasma-workspace@.target`.
-        requires = [ "xdg-desktop-autostart.target" "graphical-session.target" ];
-        before = [ "xdg-desktop-autostart.target" "graphical-session.target" ];
-        bindsTo = [ "graphical-session.target" ];
-      };
-    })
-  ];
-}
diff --git a/nixos/modules/services/x11/desktop-managers/pantheon.md b/nixos/modules/services/x11/desktop-managers/pantheon.md
deleted file mode 100644
index ce251ec2d394..000000000000
--- a/nixos/modules/services/x11/desktop-managers/pantheon.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# Pantheon Desktop {#chap-pantheon}
-
-Pantheon is the desktop environment created for the elementary OS distribution. It is written from scratch in Vala, utilizing GNOME technologies with GTK and Granite.
-
-## Enabling Pantheon {#sec-pantheon-enable}
-
-All of Pantheon is working in NixOS and the applications should be available, aside from a few [exceptions](https://github.com/NixOS/nixpkgs/issues/58161). To enable Pantheon, set
-```nix
-{
-  services.xserver.desktopManager.pantheon.enable = true;
-}
-```
-This automatically enables LightDM and Pantheon's LightDM greeter. If you'd like to disable this, set
-```nix
-{
-  services.xserver.displayManager.lightdm.greeters.pantheon.enable = false;
-  services.xserver.displayManager.lightdm.enable = false;
-}
-```
-but please be aware using Pantheon without LightDM as a display manager will break screenlocking from the UI. The NixOS module for Pantheon installs all of Pantheon's default applications. If you'd like to not install Pantheon's apps, set
-```nix
-{
-  services.pantheon.apps.enable = false;
-}
-```
-You can also use [](#opt-environment.pantheon.excludePackages) to remove any other app (like `elementary-mail`).
-
-## Wingpanel and Switchboard plugins {#sec-pantheon-wingpanel-switchboard}
-
-Wingpanel and Switchboard work differently than they do in other distributions, as far as using plugins. You cannot install a plugin globally (like with {option}`environment.systemPackages`) to start using it. You should instead be using the following options:
-
-  - [](#opt-services.xserver.desktopManager.pantheon.extraWingpanelIndicators)
-  - [](#opt-services.xserver.desktopManager.pantheon.extraSwitchboardPlugs)
-
-to configure the programs with plugs or indicators.
-
-The difference in NixOS is both these programs are patched to load plugins from a directory that is the value of an environment variable. All of which is controlled in Nix. If you need to configure the particular packages manually you can override the packages like:
-```nix
-wingpanel-with-indicators.override {
-  indicators = [
-    pkgs.some-special-indicator
-  ];
-}
-
-```
-```nix
-switchboard-with-plugs.override {
-  plugs = [
-    pkgs.some-special-plug
-  ];
-}
-```
-please note that, like how the NixOS options describe these as extra plugins, this would only add to the default plugins included with the programs. If for some reason you'd like to configure which plugins to use exactly, both packages have an argument for this:
-```nix
-wingpanel-with-indicators.override {
-  useDefaultIndicators = false;
-  indicators = specialListOfIndicators;
-}
-```
-```nix
-switchboard-with-plugs.override {
-  useDefaultPlugs = false;
-  plugs = specialListOfPlugs;
-}
-```
-this could be most useful for testing a particular plug-in in isolation.
-
-## FAQ {#sec-pantheon-faq}
-
-[I have switched from a different desktop and Pantheon’s theming looks messed up.]{#sec-pantheon-faq-messed-up-theme}
-  : Open Switchboard and go to: Administration → About → Restore Default Settings → Restore Settings. This will reset any dconf settings to their Pantheon defaults. Note this could reset certain GNOME specific preferences if that desktop was used prior.
-
-[I cannot enable both GNOME and Pantheon.]{#sec-pantheon-faq-gnome-and-pantheon}
-  : This is a known [issue](https://github.com/NixOS/nixpkgs/issues/64611) and there is no known workaround.
-
-[Does AppCenter work, or is it available?]{#sec-pantheon-faq-appcenter}
-  : AppCenter has been available since 20.03. Starting from 21.11, the Flatpak backend should work so you can install some Flatpak applications using it. However, due to missing appstream metadata, the Packagekit backend does not function currently. See this [issue](https://github.com/NixOS/nixpkgs/issues/15932).
-
-    If you are using Pantheon, AppCenter should be installed by default if you have [Flatpak support](#module-services-flatpak) enabled. If you also wish to add the `appcenter` Flatpak remote:
-
-    ```ShellSession
-    $ flatpak remote-add --if-not-exists appcenter https://flatpak.elementary.io/repo.flatpakrepo
-    ```
diff --git a/nixos/modules/services/x11/desktop-managers/pantheon.nix b/nixos/modules/services/x11/desktop-managers/pantheon.nix
deleted file mode 100644
index 0e9a06706d4f..000000000000
--- a/nixos/modules/services/x11/desktop-managers/pantheon.nix
+++ /dev/null
@@ -1,331 +0,0 @@
-{ config, lib, utils, pkgs, ... }:
-
-with lib;
-
-let
-
-  cfg = config.services.xserver.desktopManager.pantheon;
-  serviceCfg = config.services.pantheon;
-
-  nixos-gsettings-desktop-schemas = pkgs.pantheon.elementary-gsettings-schemas.override {
-    extraGSettingsOverridePackages = cfg.extraGSettingsOverridePackages;
-    extraGSettingsOverrides = cfg.extraGSettingsOverrides;
-  };
-
-  notExcluded = pkg: (!(lib.elem pkg config.environment.pantheon.excludePackages));
-in
-
-{
-
-  meta = {
-    doc = ./pantheon.md;
-    maintainers = teams.pantheon.members;
-  };
-
-  options = {
-
-    services.pantheon = {
-
-      contractor = {
-         enable = mkEnableOption "contractor, a desktop-wide extension service used by Pantheon";
-      };
-
-      apps.enable = mkEnableOption "Pantheon default applications";
-
-    };
-
-    services.xserver.desktopManager.pantheon = {
-      enable = mkOption {
-        type = types.bool;
-        default = false;
-        description = "Enable the pantheon desktop manager";
-      };
-
-      sessionPath = mkOption {
-        default = [];
-        type = types.listOf types.package;
-        example = literalExpression "[ pkgs.gnome.gpaste ]";
-        description = ''
-          Additional list of packages to be added to the session search path.
-          Useful for GSettings-conditional autostart.
-
-          Note that this should be a last resort; patching the package is preferred (see GPaste).
-        '';
-      };
-
-      extraWingpanelIndicators = mkOption {
-        default = null;
-        type = with types; nullOr (listOf package);
-        description = "Indicators to add to Wingpanel.";
-      };
-
-      extraSwitchboardPlugs = mkOption {
-        default = null;
-        type = with types; nullOr (listOf package);
-        description = "Plugs to add to Switchboard.";
-      };
-
-      extraGSettingsOverrides = mkOption {
-        default = "";
-        type = types.lines;
-        description = "Additional gsettings overrides.";
-      };
-
-      extraGSettingsOverridePackages = mkOption {
-        default = [];
-        type = types.listOf types.path;
-        description = "List of packages for which gsettings are overridden.";
-      };
-
-      debug = mkEnableOption "gnome-session debug messages";
-
-    };
-
-    environment.pantheon.excludePackages = mkOption {
-      default = [];
-      example = literalExpression "[ pkgs.pantheon.elementary-camera ]";
-      type = types.listOf types.package;
-      description = "Which packages pantheon should exclude from the default environment";
-    };
-
-  };
-
-
-  config = mkMerge [
-    (mkIf cfg.enable {
-      services.xserver.desktopManager.pantheon.sessionPath = utils.removePackagesByName [
-        pkgs.pantheon.pantheon-agent-geoclue2
-      ] config.environment.pantheon.excludePackages;
-
-      services.displayManager.sessionPackages = [ pkgs.pantheon.elementary-session-settings ];
-
-      # Ensure lightdm is used when Pantheon is enabled
-      # Without it screen locking will be nonfunctional because of the use of lightlocker
-      warnings = optional (config.services.xserver.displayManager.lightdm.enable != true)
-        ''
-          Using Pantheon without LightDM as a displayManager will break screenlocking from the UI.
-        '';
-
-      services.xserver.displayManager.lightdm.greeters.pantheon.enable = mkDefault true;
-
-      # Without this, elementary LightDM greeter will pre-select non-existent `default` session
-      # https://github.com/elementary/greeter/issues/368
-      services.displayManager.defaultSession = mkDefault "pantheon";
-
-      services.xserver.displayManager.sessionCommands = ''
-        if test "$XDG_CURRENT_DESKTOP" = "Pantheon"; then
-            true
-            ${concatMapStrings (p: ''
-              if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
-                export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
-              fi
-
-              if [ -d "${p}/lib/girepository-1.0" ]; then
-                export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
-                export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
-              fi
-            '') cfg.sessionPath}
-        fi
-      '';
-
-      # Default services
-      hardware.bluetooth.enable = mkDefault true;
-      hardware.pulseaudio.enable = mkDefault true;
-      security.polkit.enable = true;
-      services.accounts-daemon.enable = true;
-      services.bamf.enable = true;
-      services.colord.enable = mkDefault true;
-      services.fwupd.enable = mkDefault true;
-      # TODO: Enable once #177946 is resolved
-      # services.packagekit.enable = mkDefault true;
-      services.power-profiles-daemon.enable = mkDefault true;
-      services.touchegg.enable = mkDefault true;
-      services.touchegg.package = pkgs.pantheon.touchegg;
-      services.tumbler.enable = mkDefault true;
-      services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
-      services.dbus.packages = with pkgs.pantheon; [
-        switchboard-plug-power
-        elementary-default-settings # accountsservice extensions
-      ];
-      services.pantheon.apps.enable = mkDefault true;
-      services.pantheon.contractor.enable = mkDefault true;
-      services.gnome.at-spi2-core.enable = true;
-      services.gnome.evolution-data-server.enable = true;
-      services.gnome.glib-networking.enable = true;
-      services.gnome.gnome-keyring.enable = true;
-      services.gvfs.enable = true;
-      services.gnome.rygel.enable = mkDefault true;
-      services.gsignond.enable = mkDefault true;
-      services.gsignond.plugins = with pkgs.gsignondPlugins; [ lastfm mail oauth ];
-      services.udisks2.enable = true;
-      services.upower.enable = config.powerManagement.enable;
-      services.libinput.enable = mkDefault true;
-      services.xserver.updateDbusEnvironment = true;
-      services.zeitgeist.enable = mkDefault true;
-      services.geoclue2.enable = mkDefault true;
-      # pantheon has pantheon-agent-geoclue2
-      services.geoclue2.enableDemoAgent = false;
-      services.geoclue2.appConfig."io.elementary.desktop.agent-geoclue2" = {
-        isAllowed = true;
-        isSystem = true;
-      };
-      services.udev.packages = [
-        pkgs.pantheon.gnome-settings-daemon
-        # Force enable KMS modifiers for devices that require them.
-        # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1443
-        pkgs.pantheon.mutter
-      ];
-      systemd.packages = with pkgs; [
-        gnome.gnome-session
-        pantheon.gala
-        pantheon.gnome-settings-daemon
-        pantheon.elementary-session-settings
-      ];
-      programs.dconf.enable = true;
-      networking.networkmanager.enable = mkDefault true;
-
-      systemd.user.targets."gnome-session-x11-services".wants = [
-        "org.gnome.SettingsDaemon.XSettings.service"
-      ];
-      systemd.user.targets."gnome-session-x11-services-ready".wants = [
-        "org.gnome.SettingsDaemon.XSettings.service"
-      ];
-
-      # Global environment
-      environment.systemPackages = (with pkgs.pantheon; [
-        elementary-session-settings
-        elementary-settings-daemon
-        gala
-        gnome-settings-daemon
-        (switchboard-with-plugs.override {
-          plugs = cfg.extraSwitchboardPlugs;
-        })
-        (wingpanel-with-indicators.override {
-          indicators = cfg.extraWingpanelIndicators;
-        })
-      ]) ++ utils.removePackagesByName ((with pkgs; [
-        desktop-file-utils
-        glib # for gsettings program
-        gnome-menus
-        gnome.adwaita-icon-theme
-        gtk3.out # for gtk-launch program
-        onboard
-        orca # elementary/greeter#668
-        sound-theme-freedesktop
-        xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
-      ]) ++ (with pkgs.pantheon; [
-        # Artwork
-        elementary-gtk-theme
-        elementary-icon-theme
-        elementary-sound-theme
-        elementary-wallpapers
-
-        # Desktop
-        elementary-default-settings
-        elementary-dock
-        elementary-shortcut-overlay
-
-        # Services
-        elementary-capnet-assist
-        elementary-notifications
-        pantheon-agent-geoclue2
-        pantheon-agent-polkit
-      ])) config.environment.pantheon.excludePackages;
-
-      # Settings from elementary-default-settings
-      environment.etc."gtk-3.0/settings.ini".source = "${pkgs.pantheon.elementary-default-settings}/etc/gtk-3.0/settings.ini";
-
-      xdg.mime.enable = true;
-      xdg.icons.enable = true;
-
-      xdg.portal.enable = true;
-      xdg.portal.extraPortals = [
-        pkgs.xdg-desktop-portal-gtk
-      ] ++ (with pkgs.pantheon; [
-        elementary-files
-        elementary-settings-daemon
-        xdg-desktop-portal-pantheon
-      ]);
-
-      xdg.portal.configPackages = mkDefault [ pkgs.pantheon.elementary-default-settings ];
-
-      # Override GSettings schemas
-      environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
-
-      environment.sessionVariables.GNOME_SESSION_DEBUG = mkIf cfg.debug "1";
-
-      environment.pathsToLink = [
-        # FIXME: modules should link subdirs of `/share` rather than relying on this
-        "/share"
-      ];
-
-      # Otherwise you can't store NetworkManager Secrets with
-      # "Store the password only for this user"
-      programs.nm-applet.enable = true;
-      # Pantheon has its own network indicator
-      programs.nm-applet.indicator = false;
-
-      # Shell integration for VTE terminals
-      programs.bash.vteIntegration = mkDefault true;
-      programs.zsh.vteIntegration = mkDefault true;
-
-      # Default Fonts
-      fonts.packages = with pkgs; [
-        inter
-        open-dyslexic
-        open-sans
-        roboto-mono
-      ];
-
-      fonts.fontconfig.defaultFonts = {
-        monospace = [ "Roboto Mono" ];
-        sansSerif = [ "Inter" ];
-      };
-    })
-
-    (mkIf serviceCfg.apps.enable {
-      programs.evince.enable = mkDefault (notExcluded pkgs.gnome.evince);
-      programs.file-roller.enable = mkDefault (notExcluded pkgs.gnome.file-roller);
-
-      environment.systemPackages = utils.removePackagesByName ([
-        pkgs.gnome.gnome-font-viewer
-      ] ++ (with pkgs.pantheon; [
-        elementary-calculator
-        elementary-calendar
-        elementary-camera
-        elementary-code
-        elementary-files
-        elementary-mail
-        elementary-music
-        elementary-photos
-        elementary-screenshot
-        elementary-tasks
-        elementary-terminal
-        elementary-videos
-        epiphany
-      ] ++ lib.optionals config.services.flatpak.enable [
-        # Only install appcenter if flatpak is enabled before
-        # https://github.com/NixOS/nixpkgs/issues/15932 is resolved.
-        appcenter
-        sideload
-      ])) config.environment.pantheon.excludePackages;
-
-      # needed by screenshot
-      fonts.packages = [
-        pkgs.pantheon.elementary-redacted-script
-      ];
-    })
-
-    (mkIf serviceCfg.contractor.enable {
-      environment.systemPackages = with pkgs.pantheon; [
-        contractor
-        file-roller-contract
-      ];
-
-      environment.pathsToLink = [
-        "/share/contractor"
-      ];
-    })
-
-  ];
-}
diff --git a/nixos/modules/services/x11/desktop-managers/phosh.nix b/nixos/modules/services/x11/desktop-managers/phosh.nix
deleted file mode 100644
index 12b39f927c01..000000000000
--- a/nixos/modules/services/x11/desktop-managers/phosh.nix
+++ /dev/null
@@ -1,230 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
-  cfg = config.services.xserver.desktopManager.phosh;
-
-  # Based on https://source.puri.sm/Librem5/librem5-base/-/blob/4596c1056dd75ac7f043aede07887990fd46f572/default/sm.puri.OSK0.desktop
-  oskItem = pkgs.makeDesktopItem {
-    name = "sm.puri.OSK0";
-    desktopName = "On-screen keyboard";
-    exec = "${pkgs.squeekboard}/bin/squeekboard";
-    categories = [ "GNOME" "Core" ];
-    onlyShowIn = [ "GNOME" ];
-    noDisplay = true;
-    extraConfig = {
-      X-GNOME-Autostart-Phase = "Panel";
-      X-GNOME-Provides = "inputmethod";
-      X-GNOME-Autostart-Notify = "true";
-      X-GNOME-AutoRestart = "true";
-    };
-  };
-
-  phocConfigType = types.submodule {
-    options = {
-      xwayland = mkOption {
-        description = ''
-          Whether to enable XWayland support.
-
-          To start XWayland immediately, use `immediate`.
-        '';
-        type = types.enum [ "true" "false" "immediate" ];
-        default = "false";
-      };
-      cursorTheme = mkOption {
-        description = ''
-          Cursor theme to use in Phosh.
-        '';
-        type = types.str;
-        default = "default";
-      };
-      outputs = mkOption {
-        description = ''
-          Output configurations.
-        '';
-        type = types.attrsOf phocOutputType;
-        default = {
-          DSI-1 = {
-            scale = 2;
-          };
-        };
-      };
-    };
-  };
-
-  phocOutputType = types.submodule {
-    options = {
-      modeline = mkOption {
-        description = ''
-          One or more modelines.
-        '';
-        type = types.either types.str (types.listOf types.str);
-        default = [];
-        example = [
-          "87.25 720 776 848  976 1440 1443 1453 1493 -hsync +vsync"
-          "65.13 768 816 896 1024 1024 1025 1028 1060 -HSync +VSync"
-        ];
-      };
-      mode = mkOption {
-        description = ''
-          Default video mode.
-        '';
-        type = types.nullOr types.str;
-        default = null;
-        example = "768x1024";
-      };
-      scale = mkOption {
-        description = ''
-          Display scaling factor.
-        '';
-        type = types.nullOr (
-          types.addCheck
-          (types.either types.int types.float)
-          (x : x > 0)
-        ) // {
-          description = "null or positive integer or float";
-        };
-        default = null;
-        example = 2;
-      };
-      rotate = mkOption {
-        description = ''
-          Screen transformation.
-        '';
-        type = types.enum [
-          "90" "180" "270" "flipped" "flipped-90" "flipped-180" "flipped-270" null
-        ];
-        default = null;
-      };
-    };
-  };
-
-  optionalKV = k: v: optionalString (v != null) "${k} = ${builtins.toString v}";
-
-  renderPhocOutput = name: output: let
-    modelines = if builtins.isList output.modeline
-      then output.modeline
-      else [ output.modeline ];
-    renderModeline = l: "modeline = ${l}";
-  in ''
-    [output:${name}]
-    ${concatStringsSep "\n" (map renderModeline modelines)}
-    ${optionalKV "mode" output.mode}
-    ${optionalKV "scale" output.scale}
-    ${optionalKV "rotate" output.rotate}
-  '';
-
-  renderPhocConfig = phoc: let
-    outputs = mapAttrsToList renderPhocOutput phoc.outputs;
-  in ''
-    [core]
-    xwayland = ${phoc.xwayland}
-    ${concatStringsSep "\n" outputs}
-    [cursor]
-    theme = ${phoc.cursorTheme}
-  '';
-in
-
-{
-  options = {
-    services.xserver.desktopManager.phosh = {
-      enable = mkOption {
-        type = types.bool;
-        default = false;
-        description = "Enable the Phone Shell.";
-      };
-
-      package = mkPackageOption pkgs "phosh" { };
-
-      user = mkOption {
-        description = "The user to run the Phosh service.";
-        type = types.str;
-        example = "alice";
-      };
-
-      group = mkOption {
-        description = "The group to run the Phosh service.";
-        type = types.str;
-        example = "users";
-      };
-
-      phocConfig = mkOption {
-        description = ''
-          Configurations for the Phoc compositor.
-        '';
-        type = types.oneOf [ types.lines types.path phocConfigType ];
-        default = {};
-      };
-    };
-  };
-
-  config = mkIf cfg.enable {
-    systemd.defaultUnit = "graphical.target";
-    # Inspired by https://gitlab.gnome.org/World/Phosh/phosh/-/blob/main/data/phosh.service
-    systemd.services.phosh = {
-      wantedBy = [ "graphical.target" ];
-      serviceConfig = {
-        ExecStart = "${cfg.package}/bin/phosh-session";
-        User = cfg.user;
-        Group = cfg.group;
-        PAMName = "login";
-        WorkingDirectory = "~";
-        Restart = "always";
-
-        TTYPath = "/dev/tty7";
-        TTYReset = "yes";
-        TTYVHangup = "yes";
-        TTYVTDisallocate = "yes";
-
-        # Fail to start if not controlling the tty.
-        StandardInput = "tty-fail";
-        StandardOutput = "journal";
-        StandardError = "journal";
-
-        # Log this user with utmp, letting it show up with commands 'w' and 'who'.
-        UtmpIdentifier = "tty7";
-        UtmpMode = "user";
-      };
-      environment = {
-        # We are running without a display manager, so need to provide
-        # a value for XDG_CURRENT_DESKTOP.
-        #
-        # Among other things, this variable influences:
-        #  - visibility of desktop entries with "OnlyShowIn=Phosh;"
-        #    https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.5.html#key-onlyshowin
-        #  - the chosen xdg-desktop-portal configuration.
-        #    https://flatpak.github.io/xdg-desktop-portal/docs/portals.conf.html
-        XDG_CURRENT_DESKTOP = "Phosh:GNOME";
-        # pam_systemd uses these to identify the session in logind.
-        # https://www.freedesktop.org/software/systemd/man/latest/pam_systemd.html#desktop=
-        XDG_SESSION_DESKTOP = "phosh";
-        XDG_SESSION_TYPE = "wayland";
-      };
-    };
-
-    environment.systemPackages = [
-      pkgs.phoc
-      cfg.package
-      pkgs.squeekboard
-      oskItem
-    ];
-
-    systemd.packages = [ cfg.package ];
-
-    programs.feedbackd.enable = true;
-
-    security.pam.services.phosh = {};
-
-    hardware.graphics.enable = mkDefault true;
-
-    services.gnome.core-shell.enable = true;
-    services.gnome.core-os-services.enable = true;
-    services.displayManager.sessionPackages = [ cfg.package ];
-
-    environment.etc."phosh/phoc.ini".source =
-      if builtins.isPath cfg.phocConfig then cfg.phocConfig
-      else if builtins.isString cfg.phocConfig then pkgs.writeText "phoc.ini" cfg.phocConfig
-      else pkgs.writeText "phoc.ini" (renderPhocConfig cfg.phocConfig);
-  };
-}
diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix
deleted file mode 100644
index 53d3b91bfa17..000000000000
--- a/nixos/modules/services/x11/desktop-managers/plasma5.nix
+++ /dev/null
@@ -1,568 +0,0 @@
-{ config, lib, pkgs, utils, ... }:
-
-let
-  xcfg = config.services.xserver;
-  cfg = xcfg.desktopManager.plasma5;
-
-  # Use only for **internal** options.
-  # This is not exactly user-friendly.
-  kdeConfigurationType = with types;
-    let
-      valueTypes = (oneOf [
-        bool
-        float
-        int
-        str
-      ]) // {
-        description = "KDE Configuration value";
-        emptyValue.value = "";
-      };
-      set = (nullOr (lazyAttrsOf valueTypes)) // {
-        description = "KDE Configuration set";
-        emptyValue.value = {};
-      };
-    in (lazyAttrsOf set) // {
-        description = "KDE Configuration file";
-        emptyValue.value = {};
-      };
-
-  inherit (lib)
-    getBin optionalAttrs literalExpression
-    mkRemovedOptionModule mkRenamedOptionModule
-    mkDefault mkIf mkMerge mkOption mkPackageOption types;
-
-  activationScript = ''
-    ${set_XDG_CONFIG_HOME}
-
-    # The KDE icon cache is supposed to update itself automatically, but it uses
-    # the timestamp on the icon theme directory as a trigger. This doesn't work
-    # on NixOS because the timestamp never changes. As a workaround, delete the
-    # icon cache at login and session activation.
-    # See also: http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html
-    rm -fv $HOME/.cache/icon-cache.kcache
-
-    # xdg-desktop-settings generates this empty file but
-    # it makes kbuildsyscoca5 fail silently. To fix this
-    # remove that menu if it exists.
-    rm -fv ''${XDG_CONFIG_HOME}/menus/applications-merged/xdg-desktop-menu-dummy.menu
-
-    # Qt writes a weird ‘libraryPath’ line to
-    # ~/.config/Trolltech.conf that causes the KDE plugin
-    # paths of previous KDE invocations to be searched.
-    # Obviously using mismatching KDE libraries is potentially
-    # disastrous, so here we nuke references to the Nix store
-    # in Trolltech.conf.  A better solution would be to stop
-    # Qt from doing this wackiness in the first place.
-    trolltech_conf="''${XDG_CONFIG_HOME}/Trolltech.conf"
-    if [ -e "$trolltech_conf" ]; then
-      ${getBin pkgs.gnused}/bin/sed -i "$trolltech_conf" -e '/nix\\store\|nix\/store/ d'
-    fi
-
-    # Remove the kbuildsyscoca5 cache. It will be regenerated
-    # immediately after. This is necessary for kbuildsyscoca5 to
-    # recognize that software that has been removed.
-    rm -fv $HOME/.cache/ksycoca*
-
-    ${pkgs.plasma5Packages.kservice}/bin/kbuildsycoca5
-  '';
-
-  set_XDG_CONFIG_HOME = ''
-    # Set the default XDG_CONFIG_HOME if it is unset.
-    # Per the XDG Base Directory Specification:
-    # https://specifications.freedesktop.org/basedir-spec/latest
-    # 1. Never export this variable! If it is unset, then child processes are
-    # expected to set the default themselves.
-    # 2. Contaminate / if $HOME is unset; do not check if $HOME is set.
-    XDG_CONFIG_HOME=''${XDG_CONFIG_HOME:-$HOME/.config}
-  '';
-
-in
-
-{
-  options = {
-    services.xserver.desktopManager.plasma5 = {
-      enable = mkOption {
-        type = types.bool;
-        default = false;
-        description = "Enable the Plasma 5 (KDE 5) desktop environment.";
-      };
-
-      phononBackend = mkOption {
-        type = types.enum [ "gstreamer" "vlc" ];
-        default = "vlc";
-        example = "gstreamer";
-        description = "Phonon audio backend to install.";
-      };
-
-      useQtScaling = mkOption {
-        type = types.bool;
-        default = false;
-        description = "Enable HiDPI scaling in Qt.";
-      };
-
-      runUsingSystemd = mkOption {
-        description = "Use systemd to manage the Plasma session";
-        type = types.bool;
-        default = true;
-      };
-
-      notoPackage = mkPackageOption pkgs "Noto fonts" {
-        default = [ "noto-fonts" ];
-        example = "noto-fonts-lgc-plus";
-      };
-
-      # Internally allows configuring kdeglobals globally
-      kdeglobals = mkOption {
-        internal = true;
-        default = {};
-        type = kdeConfigurationType;
-      };
-
-      # Internally allows configuring kwin globally
-      kwinrc = mkOption {
-        internal = true;
-        default = {};
-        type = kdeConfigurationType;
-      };
-
-      mobile.enable = mkOption {
-        type = types.bool;
-        default = false;
-        description = ''
-          Enable support for running the Plasma Mobile shell.
-        '';
-      };
-
-      mobile.installRecommendedSoftware = mkOption {
-        type = types.bool;
-        default = true;
-        description = ''
-          Installs software recommended for use with Plasma Mobile, but which
-          is not strictly required for Plasma Mobile to run.
-        '';
-      };
-
-      bigscreen.enable = mkOption {
-        type = types.bool;
-        default = false;
-        description = ''
-          Enable support for running the Plasma Bigscreen session.
-        '';
-      };
-    };
-    environment.plasma5.excludePackages = mkOption {
-        description = "List of default packages to exclude from the configuration";
-        type = types.listOf types.package;
-        default = [];
-        example = literalExpression "[ pkgs.plasma5Packages.oxygen ]";
-      };
-  };
-
-  imports = [
-    (mkRemovedOptionModule [ "services" "xserver" "desktopManager" "plasma5" "enableQt4Support" ] "Phonon no longer supports Qt 4.")
-    (mkRemovedOptionModule [ "services" "xserver" "desktopManager" "plasma5" "supportDDC" ] "DDC/CI is no longer supported upstream.")
-    (mkRenamedOptionModule [ "services" "xserver" "desktopManager" "kde5" ] [ "services" "xserver" "desktopManager" "plasma5" ])
-    (mkRenamedOptionModule [ "services" "xserver" "desktopManager" "plasma5" "excludePackages" ] [ "environment" "plasma5" "excludePackages" ])
-  ];
-
-  config = mkMerge [
-    # Common Plasma dependencies
-    (mkIf (cfg.enable || cfg.mobile.enable || cfg.bigscreen.enable) {
-
-      security.wrappers = {
-        kwin_wayland = {
-          owner = "root";
-          group = "root";
-          capabilities = "cap_sys_nice+ep";
-          source = "${getBin pkgs.plasma5Packages.kwin}/bin/kwin_wayland";
-        };
-      } // optionalAttrs (!cfg.runUsingSystemd) {
-        start_kdeinit = {
-          setuid = true;
-          owner = "root";
-          group = "root";
-          source = "${getBin pkgs.plasma5Packages.kinit}/libexec/kf5/start_kdeinit";
-        };
-      };
-
-      qt.enable = true;
-
-      environment.systemPackages =
-        with pkgs.plasma5Packages;
-        let
-          requiredPackages = [
-            frameworkintegration
-            kactivities
-            kauth
-            kcmutils
-            kconfig
-            kconfigwidgets
-            kcoreaddons
-            kdoctools
-            kdbusaddons
-            kdeclarative
-            kded
-            kdesu
-            kdnssd
-            kemoticons
-            kfilemetadata
-            kglobalaccel
-            kguiaddons
-            kiconthemes
-            kidletime
-            kimageformats
-            kinit
-            kirigami2 # In system profile for SDDM theme. TODO: wrapper.
-            kio
-            kjobwidgets
-            knewstuff
-            knotifications
-            knotifyconfig
-            kpackage
-            kparts
-            kpeople
-            krunner
-            kservice
-            ktextwidgets
-            kwallet
-            kwallet-pam
-            kwalletmanager
-            kwayland
-            kwayland-integration
-            kwidgetsaddons
-            kxmlgui
-            kxmlrpcclient
-            plasma-framework
-            solid
-            sonnet
-            threadweaver
-
-            breeze-qt5
-            kactivitymanagerd
-            kde-cli-tools
-            kdecoration
-            kdeplasma-addons
-            kgamma5
-            khotkeys
-            kscreen
-            kscreenlocker
-            kwayland
-            kwin
-            kwrited
-            libkscreen
-            libksysguard
-            milou
-            plasma-integration
-            polkit-kde-agent
-
-            qqc2-breeze-style
-            qqc2-desktop-style
-
-            plasma-desktop
-            plasma-workspace
-            plasma-workspace-wallpapers
-
-            oxygen-sounds
-
-            breeze-icons
-            pkgs.hicolor-icon-theme
-
-            kde-gtk-config
-            breeze-gtk
-
-            qtvirtualkeyboard
-
-            pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
-          ];
-          optionalPackages = [
-            pkgs.aha # needed by kinfocenter for fwupd support
-            plasma-browser-integration
-            konsole
-            oxygen
-            (lib.getBin qttools) # Expose qdbus in PATH
-          ];
-        in
-        requiredPackages
-        ++ utils.removePackagesByName optionalPackages config.environment.plasma5.excludePackages
-
-        # Phonon audio backend
-        ++ lib.optional (cfg.phononBackend == "gstreamer") pkgs.plasma5Packages.phonon-backend-gstreamer
-        ++ lib.optional (cfg.phononBackend == "vlc") pkgs.plasma5Packages.phonon-backend-vlc
-
-        # Optional hardware support features
-        ++ lib.optionals config.hardware.bluetooth.enable [ bluedevil bluez-qt pkgs.openobex pkgs.obexftp ]
-        ++ lib.optional config.networking.networkmanager.enable plasma-nm
-        ++ lib.optional config.hardware.pulseaudio.enable plasma-pa
-        ++ lib.optional config.services.pipewire.pulse.enable plasma-pa
-        ++ lib.optional config.powerManagement.enable powerdevil
-        ++ lib.optional config.services.colord.enable pkgs.colord-kde
-        ++ lib.optional config.services.hardware.bolt.enable pkgs.plasma5Packages.plasma-thunderbolt
-        ++ lib.optional config.services.samba.enable kdenetwork-filesharing
-        ++ lib.optional config.services.xserver.wacom.enable pkgs.wacomtablet
-        ++ lib.optional config.services.flatpak.enable flatpak-kcm;
-
-      # Extra services for D-Bus activation
-      services.dbus.packages = [
-        pkgs.plasma5Packages.kactivitymanagerd
-      ];
-
-      environment.pathsToLink = [
-        # FIXME: modules should link subdirs of `/share` rather than relying on this
-        "/share"
-      ];
-
-      environment.etc."X11/xkb".source = xcfg.xkb.dir;
-
-      environment.sessionVariables = {
-        PLASMA_USE_QT_SCALING = mkIf cfg.useQtScaling "1";
-
-        # Needed for things that depend on other store.kde.org packages to install correctly,
-        # notably Plasma look-and-feel packages (a.k.a. Global Themes)
-        #
-        # FIXME: this is annoyingly impure and should really be fixed at source level somehow,
-        # but kpackage is a library so we can't just wrap the one thing invoking it and be done.
-        # This also means things won't work for people not on Plasma, but at least this way it
-        # works for SOME people.
-        KPACKAGE_DEP_RESOLVERS_PATH = "${pkgs.plasma5Packages.frameworkintegration.out}/libexec/kf5/kpackagehandlers";
-      };
-
-      # Enable GTK applications to load SVG icons
-      programs.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
-
-      fonts.packages = with pkgs; [ cfg.notoPackage hack-font ];
-      fonts.fontconfig.defaultFonts = {
-        monospace = [ "Hack" "Noto Sans Mono" ];
-        sansSerif = [ "Noto Sans" ];
-        serif = [ "Noto Serif" ];
-      };
-
-      programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-qt;
-      programs.ssh.askPassword = mkDefault "${pkgs.plasma5Packages.ksshaskpass.out}/bin/ksshaskpass";
-
-      # Enable helpful DBus services.
-      services.accounts-daemon.enable = true;
-      programs.dconf.enable = true;
-      # when changing an account picture the accounts-daemon reads a temporary file containing the image which systemsettings5 may place under /tmp
-      systemd.services.accounts-daemon.serviceConfig.PrivateTmp = false;
-      services.power-profiles-daemon.enable = mkDefault true;
-      services.system-config-printer.enable = mkIf config.services.printing.enable (mkDefault true);
-      services.udisks2.enable = true;
-      services.upower.enable = config.powerManagement.enable;
-      services.libinput.enable = mkDefault true;
-
-      # Extra UDEV rules used by Solid
-      services.udev.packages = [
-        # libmtp has "bin", "dev", "out" outputs. UDEV rules file is in "out".
-        pkgs.libmtp.out
-        pkgs.media-player-info
-      ];
-
-      services.displayManager.sddm = {
-        theme = mkDefault "breeze";
-      };
-
-      security.pam.services.kde = { allowNullPassword = true; };
-
-      security.pam.services.login.kwallet.enable = true;
-
-      systemd.user.services = {
-        plasma-early-setup = mkIf cfg.runUsingSystemd {
-          description = "Early Plasma setup";
-          wantedBy = [ "graphical-session-pre.target" ];
-          serviceConfig.Type = "oneshot";
-          script = activationScript;
-        };
-      };
-
-      xdg.portal.enable = true;
-      xdg.portal.extraPortals = [ pkgs.plasma5Packages.xdg-desktop-portal-kde ];
-      xdg.portal.configPackages = mkDefault [ pkgs.plasma5Packages.xdg-desktop-portal-kde ];
-      # xdg-desktop-portal-kde expects PipeWire to be running.
-      # This does not, by default, replace PulseAudio.
-      services.pipewire.enable = mkDefault true;
-
-      # Update the start menu for each user that is currently logged in
-      system.userActivationScripts.plasmaSetup = activationScript;
-
-      programs.firefox.nativeMessagingHosts.packages = [ pkgs.plasma5Packages.plasma-browser-integration ];
-      programs.chromium.enablePlasmaBrowserIntegration = true;
-    })
-
-    (mkIf (cfg.kwinrc != {}) {
-      environment.etc."xdg/kwinrc".text = lib.generators.toINI {} cfg.kwinrc;
-    })
-
-    (mkIf (cfg.kdeglobals != {}) {
-      environment.etc."xdg/kdeglobals".text = lib.generators.toINI {} cfg.kdeglobals;
-    })
-
-    # Plasma Desktop
-    (mkIf cfg.enable {
-
-      # Seed our configuration into nixos-generate-config
-      system.nixos-generate-config.desktopConfiguration = [
-        ''
-          # Enable the Plasma 5 Desktop Environment.
-          services.displayManager.sddm.enable = true;
-          services.xserver.desktopManager.plasma5.enable = true;
-        ''
-      ];
-
-      services.displayManager.sessionPackages = [ pkgs.plasma5Packages.plasma-workspace ];
-      # Default to be `plasma` (X11) instead of `plasmawayland`, since plasma wayland currently has
-      # many tiny bugs.
-      # See: https://github.com/NixOS/nixpkgs/issues/143272
-      services.displayManager.defaultSession = mkDefault "plasma";
-
-      environment.systemPackages =
-        with pkgs.plasma5Packages;
-        let
-          requiredPackages = [
-            ksystemstats
-            kinfocenter
-            kmenuedit
-            plasma-systemmonitor
-            spectacle
-            systemsettings
-
-            dolphin
-            dolphin-plugins
-            ffmpegthumbs
-            kdegraphics-thumbnailers
-            kde-inotify-survey
-            kio-admin
-            kio-extras
-          ];
-          optionalPackages = [
-            ark
-            elisa
-            gwenview
-            okular
-            khelpcenter
-            print-manager
-          ];
-      in requiredPackages ++ utils.removePackagesByName optionalPackages config.environment.plasma5.excludePackages;
-
-      systemd.user.services = {
-        plasma-run-with-systemd = {
-          description = "Run KDE Plasma via systemd";
-          wantedBy = [ "basic.target" ];
-          serviceConfig.Type = "oneshot";
-          script = ''
-            ${set_XDG_CONFIG_HOME}
-
-            ${pkgs.plasma5Packages.kconfig}/bin/kwriteconfig5 \
-              --file startkderc --group General --key systemdBoot ${lib.boolToString cfg.runUsingSystemd}
-          '';
-        };
-      };
-    })
-
-    # Plasma Mobile
-    (mkIf cfg.mobile.enable {
-      assertions = [
-        {
-          # The user interface breaks without NetworkManager
-          assertion = config.networking.networkmanager.enable;
-          message = "Plasma Mobile requires NetworkManager.";
-        }
-        {
-          # The user interface breaks without bluetooth
-          assertion = config.hardware.bluetooth.enable;
-          message = "Plasma Mobile requires Bluetooth.";
-        }
-        {
-          # The user interface breaks without pulse
-          assertion = config.hardware.pulseaudio.enable || (config.services.pipewire.enable && config.services.pipewire.pulse.enable);
-          message = "Plasma Mobile requires pulseaudio.";
-        }
-      ];
-
-      environment.systemPackages =
-        with pkgs.plasma5Packages;
-        [
-          # Basic packages without which Plasma Mobile fails to work properly.
-          plasma-mobile
-          plasma-nano
-          pkgs.maliit-framework
-          pkgs.maliit-keyboard
-        ]
-        ++ lib.optionals (cfg.mobile.installRecommendedSoftware) (with pkgs.plasma5Packages.plasmaMobileGear; [
-          # Additional software made for Plasma Mobile.
-          alligator
-          angelfish
-          audiotube
-          calindori
-          kalk
-          kasts
-          kclock
-          keysmith
-          koko
-          krecorder
-          ktrip
-          kweather
-          plasma-dialer
-          plasma-phonebook
-          plasma-settings
-          spacebar
-        ])
-      ;
-
-      # The following services are needed or the UI is broken.
-      hardware.bluetooth.enable = true;
-      hardware.pulseaudio.enable = true;
-      networking.networkmanager.enable = true;
-      # Required for autorotate
-      hardware.sensor.iio.enable = lib.mkDefault true;
-
-      # Recommendations can be found here:
-      #  - https://invent.kde.org/plasma-mobile/plasma-phone-settings/-/tree/master/etc/xdg
-      # This configuration is the minimum required for Plasma Mobile to *work*.
-      services.xserver.desktopManager.plasma5 = {
-        kdeglobals = {
-          KDE = {
-            # This forces a numeric PIN for the lockscreen, which is the
-            # recommendation from upstream.
-            LookAndFeelPackage = lib.mkDefault "org.kde.plasma.phone";
-          };
-        };
-        kwinrc = {
-          "Wayland" = {
-            "InputMethod[$e]" = "/run/current-system/sw/share/applications/com.github.maliit.keyboard.desktop";
-            "VirtualKeyboardEnabled" = "true";
-          };
-          "org.kde.kdecoration2" = {
-            # No decorations (title bar)
-            NoPlugin = lib.mkDefault "true";
-          };
-        };
-      };
-
-      services.displayManager.sessionPackages = [ pkgs.plasma5Packages.plasma-mobile ];
-    })
-
-    # Plasma Bigscreen
-    (mkIf cfg.bigscreen.enable {
-      environment.systemPackages =
-        with pkgs.plasma5Packages;
-        [
-          plasma-nano
-          plasma-settings
-          plasma-bigscreen
-          plasma-remotecontrollers
-
-          aura-browser
-          plank-player
-
-          plasma-pa
-          plasma-nm
-          kdeconnect-kde
-        ];
-
-      services.displayManager.sessionPackages = [ pkgs.plasma5Packages.plasma-bigscreen ];
-
-      # required for plasma-remotecontrollers to work correctly
-      hardware.uinput.enable = true;
-    })
-  ];
-}
diff --git a/nixos/modules/services/x11/desktop-managers/retroarch.nix b/nixos/modules/services/x11/desktop-managers/retroarch.nix
deleted file mode 100644
index 3ee7b7795f6c..000000000000
--- a/nixos/modules/services/x11/desktop-managers/retroarch.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let cfg = config.services.xserver.desktopManager.retroarch;
-
-in {
-  options.services.xserver.desktopManager.retroarch = {
-    enable = mkEnableOption "RetroArch";
-
-    package = mkPackageOption pkgs "retroarch" {
-      example = "retroarch-full";
-    };
-
-    extraArgs = mkOption {
-      type = types.listOf types.str;
-      default = [ ];
-      example = [ "--verbose" "--host" ];
-      description = "Extra arguments to pass to RetroArch.";
-    };
-  };
-
-  config = mkIf cfg.enable {
-    services.xserver.desktopManager.session = [{
-      name = "RetroArch";
-      start = ''
-        ${cfg.package}/bin/retroarch -f ${escapeShellArgs cfg.extraArgs} &
-        waitPID=$!
-      '';
-    }];
-
-    environment.systemPackages = [ cfg.package ];
-  };
-
-  meta.maintainers = with maintainers; [ j0hax ];
-}
diff --git a/nixos/modules/services/x11/desktop-managers/surf-display.nix b/nixos/modules/services/x11/desktop-managers/surf-display.nix
deleted file mode 100644
index 10c4a1d21b0a..000000000000
--- a/nixos/modules/services/x11/desktop-managers/surf-display.nix
+++ /dev/null
@@ -1,128 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
-  cfg = config.services.xserver.desktopManager.surf-display;
-
-  surfDisplayConf = ''
-    # Surf Kiosk Display: Wrap around surf browser and turn your
-    # system into a browser screen in KIOSK-mode.
-
-    # default download URI for all display screens if not configured individually
-    DEFAULT_WWW_URI="${cfg.defaultWwwUri}"
-
-    # Enforce fixed resolution for all displays (default: not set):
-    #DEFAULT_RESOLUTION="1920x1080"
-
-    # HTTP proxy URL, if needed (default: not set).
-    #HTTP_PROXY_URL="http://webcache:3128"
-
-    # Setting for internal inactivity timer to restart surf-display
-    # if the user goes inactive/idle.
-    INACTIVITY_INTERVAL="${builtins.toString cfg.inactivityInterval}"
-
-    # log to syslog instead of .xsession-errors
-    LOG_TO_SYSLOG="yes"
-
-    # Launch pulseaudio daemon if not already running.
-    WITH_PULSEAUDIO="yes"
-
-    # screensaver settings, see "man 1 xset" for possible options
-    SCREENSAVER_SETTINGS="${cfg.screensaverSettings}"
-
-    # disable right and middle pointer device click in browser sessions while keeping
-    # scrolling wheels' functionality intact... (consider "pointer" subcommand on
-    # xmodmap man page for details).
-    POINTER_BUTTON_MAP="${cfg.pointerButtonMap}"
-
-    # Hide idle mouse pointer.
-    HIDE_IDLE_POINTER="${cfg.hideIdlePointer}"
-
-    ${cfg.extraConfig}
-  '';
-
-in {
-  options = {
-    services.xserver.desktopManager.surf-display = {
-      enable = mkEnableOption "surf-display as a kiosk browser session";
-
-      defaultWwwUri = mkOption {
-        type = types.str;
-        default = "${pkgs.surf-display}/share/surf-display/empty-page.html";
-        defaultText = literalExpression ''"''${pkgs.surf-display}/share/surf-display/empty-page.html"'';
-        example = "https://www.example.com/";
-        description = "Default URI to display.";
-      };
-
-      inactivityInterval = mkOption {
-        type = types.int;
-        default = 300;
-        example = 0;
-        description = ''
-          Setting for internal inactivity timer to restart surf-display if the
-          user goes inactive/idle to get a fresh session for the next user of
-          the kiosk.
-
-          If this value is set to zero, the whole feature of restarting due to
-          inactivity is disabled.
-        '';
-      };
-
-      screensaverSettings = mkOption {
-        type = types.separatedString " ";
-        default = "";
-        description = ''
-          Screensaver settings, see `man 1 xset` for possible options.
-        '';
-      };
-
-      pointerButtonMap = mkOption {
-        type = types.str;
-        default = "1 0 0 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0";
-        description = ''
-          Disable right and middle pointer device click in browser sessions
-          while keeping scrolling wheels' functionality intact. See pointer
-          subcommand on `man xmodmap` for details.
-        '';
-      };
-
-      hideIdlePointer = mkOption {
-        type = types.str;
-        default = "yes";
-        example = "no";
-        description = "Hide idle mouse pointer.";
-      };
-
-      extraConfig = mkOption {
-        type = types.lines;
-        default = "";
-        example = ''
-          # Enforce fixed resolution for all displays (default: not set):
-          DEFAULT_RESOLUTION="1920x1080"
-
-          # HTTP proxy URL, if needed (default: not set).
-          HTTP_PROXY_URL="http://webcache:3128"
-
-          # Configure individual display screens with host specific parameters:
-          DISPLAYS['display-host-0']="www_uri=https://www.displayserver.comany.net/display-1/index.html"
-          DISPLAYS['display-host-1']="www_uri=https://www.displayserver.comany.net/display-2/index.html"
-          DISPLAYS['display-host-2']="www_uri=https://www.displayserver.comany.net/display-3/index.html|res=1920x1280"
-          DISPLAYS['display-host-3']="www_uri=https://www.displayserver.comany.net/display-4/index.html"|res=1280x1024"
-          DISPLAYS['display-host-local-file']="www_uri=file:///usr/share/doc/surf-display/empty-page.html"
-        '';
-        description = ''
-          Extra configuration options to append to `/etc/default/surf-display`.
-        '';
-      };
-    };
-  };
-
-  config = mkIf cfg.enable {
-    services.displayManager.sessionPackages = [
-      pkgs.surf-display
-    ];
-
-    environment.etc."default/surf-display".text = surfDisplayConf;
-  };
-}
diff --git a/nixos/modules/services/x11/desktop-managers/xfce.nix b/nixos/modules/services/x11/desktop-managers/xfce.nix
deleted file mode 100644
index 727802f3a63e..000000000000
--- a/nixos/modules/services/x11/desktop-managers/xfce.nix
+++ /dev/null
@@ -1,185 +0,0 @@
-{ config, lib, pkgs, utils, ... }:
-
-with lib;
-
-let
-  cfg = config.services.xserver.desktopManager.xfce;
-  excludePackages = config.environment.xfce.excludePackages;
-
-in
-{
-  meta = {
-    maintainers = teams.xfce.members;
-  };
-
-  imports = [
-    # added 2019-08-18
-    # needed to preserve some semblance of UI familarity
-    # with original XFCE module
-    (mkRenamedOptionModule
-      [ "services" "xserver" "desktopManager" "xfce4-14" "extraSessionCommands" ]
-      [ "services" "xserver" "displayManager" "sessionCommands" ])
-
-    # added 2019-11-04
-    # xfce4-14 module removed and promoted to xfce.
-    # Needed for configs that used xfce4-14 module to migrate to this one.
-    (mkRenamedOptionModule
-      [ "services" "xserver" "desktopManager" "xfce4-14" "enable" ]
-      [ "services" "xserver" "desktopManager" "xfce" "enable" ])
-    (mkRenamedOptionModule
-      [ "services" "xserver" "desktopManager" "xfce4-14" "noDesktop" ]
-      [ "services" "xserver" "desktopManager" "xfce" "noDesktop" ])
-    (mkRenamedOptionModule
-      [ "services" "xserver" "desktopManager" "xfce4-14" "enableXfwm" ]
-      [ "services" "xserver" "desktopManager" "xfce" "enableXfwm" ])
-    (mkRenamedOptionModule
-      [ "services" "xserver" "desktopManager" "xfce" "extraSessionCommands" ]
-      [ "services" "xserver" "displayManager" "sessionCommands" ])
-    (mkRemovedOptionModule [ "services" "xserver" "desktopManager" "xfce" "screenLock" ] "")
-
-    # added 2022-06-26
-    # thunar has its own module
-    (mkRenamedOptionModule
-      [ "services" "xserver" "desktopManager" "xfce" "thunarPlugins" ]
-      [ "programs" "thunar" "plugins" ])
-  ];
-
-  options = {
-    services.xserver.desktopManager.xfce = {
-      enable = mkOption {
-        type = types.bool;
-        default = false;
-        description = "Enable the Xfce desktop environment.";
-      };
-
-      noDesktop = mkOption {
-        type = types.bool;
-        default = false;
-        description = "Don't install XFCE desktop components (xfdesktop and panel).";
-      };
-
-      enableXfwm = mkOption {
-        type = types.bool;
-        default = true;
-        description = "Enable the XFWM (default) window manager.";
-      };
-
-      enableScreensaver = mkOption {
-        type = types.bool;
-        default = true;
-        description = "Enable the XFCE screensaver.";
-      };
-    };
-
-    environment.xfce.excludePackages = mkOption {
-      default = [];
-      example = literalExpression "[ pkgs.xfce.xfce4-volumed-pulse ]";
-      type = types.listOf types.package;
-      description = "Which packages XFCE should exclude from the default environment";
-    };
-  };
-
-  config = mkIf cfg.enable {
-    environment.systemPackages = utils.removePackagesByName (with pkgs.xfce // pkgs; [
-      glib # for gsettings
-      gtk3.out # gtk-update-icon-cache
-
-      gnome.gnome-themes-extra
-      gnome.adwaita-icon-theme
-      hicolor-icon-theme
-      tango-icon-theme
-      xfce4-icon-theme
-
-      desktop-file-utils
-      shared-mime-info # for update-mime-database
-
-      # For a polkit authentication agent
-      polkit_gnome
-
-      # Needed by Xfce's xinitrc script
-      xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
-
-      exo
-      garcon
-      libxfce4ui
-
-      mousepad
-      parole
-      ristretto
-      xfce4-appfinder
-      xfce4-notifyd
-      xfce4-screenshooter
-      xfce4-session
-      xfce4-settings
-      xfce4-taskmanager
-      xfce4-terminal
-    ] # TODO: NetworkManager doesn't belong here
-      ++ optional config.networking.networkmanager.enable networkmanagerapplet
-      ++ optional config.powerManagement.enable xfce4-power-manager
-      ++ optionals config.hardware.pulseaudio.enable [
-        pavucontrol
-        # volume up/down keys support:
-        # xfce4-pulseaudio-plugin includes all the functionalities of xfce4-volumed-pulse
-        # but can only be used with xfce4-panel, so for no-desktop usage we still include
-        # xfce4-volumed-pulse
-        (if cfg.noDesktop then xfce4-volumed-pulse else xfce4-pulseaudio-plugin)
-      ] ++ optionals cfg.enableXfwm [
-        xfwm4
-        xfwm4-themes
-      ] ++ optionals (!cfg.noDesktop) [
-        xfce4-panel
-        xfdesktop
-      ] ++ optional cfg.enableScreensaver xfce4-screensaver) excludePackages;
-
-    programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-gtk2;
-    programs.xfconf.enable = true;
-    programs.thunar.enable = true;
-
-    environment.pathsToLink = [
-      "/share/xfce4"
-      "/lib/xfce4"
-      "/share/gtksourceview-3.0"
-      "/share/gtksourceview-4.0"
-    ];
-
-    services.xserver.desktopManager.session = [{
-      name = "xfce";
-      desktopNames = [ "XFCE" ];
-      bgSupport = !cfg.noDesktop;
-      start = ''
-        ${pkgs.runtimeShell} ${pkgs.xfce.xfce4-session.xinitrc} &
-        waitPID=$!
-      '';
-    }];
-
-    services.xserver.updateDbusEnvironment = true;
-    programs.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
-
-    # Enable helpful DBus services.
-    services.udisks2.enable = true;
-    security.polkit.enable = true;
-    services.accounts-daemon.enable = true;
-    services.upower.enable = config.powerManagement.enable;
-    services.gnome.glib-networking.enable = true;
-    services.gvfs.enable = true;
-    services.tumbler.enable = true;
-    services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
-    services.libinput.enable = mkDefault true; # used in xfce4-settings-manager
-
-    # Enable default programs
-    programs.dconf.enable = true;
-
-    # Shell integration for VTE terminals
-    programs.bash.vteIntegration = mkDefault true;
-    programs.zsh.vteIntegration = mkDefault true;
-
-    # Systemd services
-    systemd.packages = utils.removePackagesByName (with pkgs.xfce; [
-      xfce4-notifyd
-    ]) excludePackages;
-
-    security.pam.services.xfce4-screensaver.unixAuth = cfg.enableScreensaver;
-
-    xdg.portal.configPackages = mkDefault [ pkgs.xfce.xfce4-session ];
-  };
-}
diff --git a/nixos/modules/services/x11/desktop-managers/xterm.nix b/nixos/modules/services/x11/desktop-managers/xterm.nix
deleted file mode 100644
index 3424ee1b0e11..000000000000
--- a/nixos/modules/services/x11/desktop-managers/xterm.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
-
-  cfg = config.services.xserver.desktopManager.xterm;
-  xSessionEnabled = config.services.xserver.enable;
-
-in
-
-{
-  options = {
-
-    services.xserver.desktopManager.xterm.enable = mkOption {
-      type = types.bool;
-      default = versionOlder config.system.stateVersion "19.09" && xSessionEnabled;
-      defaultText = literalExpression ''versionOlder config.system.stateVersion "19.09" && config.services.xserver.enable;'';
-      description = "Enable a xterm terminal as a desktop manager.";
-    };
-
-  };
-
-  config = mkIf cfg.enable {
-
-    services.xserver.desktopManager.session = singleton
-      { name = "xterm";
-        start = ''
-          ${pkgs.xterm}/bin/xterm -ls &
-          waitPID=$!
-        '';
-      };
-
-    environment.systemPackages = [ pkgs.xterm ];
-
-  };
-
-}