Difference between revisions of "KDE"

From NixOS Wiki
Jump to: navigation, search
m (Fix typo)
m (Minor revision of suggested apps)
Line 18: Line 18:
 
environment.systemPackages = with pkgs;
 
environment.systemPackages = with pkgs;
 
   [
 
   [
 +
    # KDE
 
     kdePackages.discover # Optional: Install if you use Flatpak or fwupd firmware update sevice
 
     kdePackages.discover # Optional: Install if you use Flatpak or fwupd firmware update sevice
 
     kdePackages.kcalc # Calculator
 
     kdePackages.kcalc # Calculator
 
     kdePackages.kcharselect # Tool to select and copy special characters from all installed fonts
 
     kdePackages.kcharselect # Tool to select and copy special characters from all installed fonts
 +
    kdePackages.kclock # Clock app
 
     kdePackages.kcolorchooser # A small utility to select a color
 
     kdePackages.kcolorchooser # A small utility to select a color
 
     kdePackages.kolourpaint # Easy-to-use paint program
 
     kdePackages.kolourpaint # Easy-to-use paint program
Line 27: Line 29:
 
     kdiff3 # Compares and merges 2 or 3 files or directories
 
     kdiff3 # Compares and merges 2 or 3 files or directories
 
     kdePackages.isoimagewriter # Optional: Program to write hybrid ISO files onto USB disks
 
     kdePackages.isoimagewriter # Optional: Program to write hybrid ISO files onto USB disks
     kdePackages.partitionmanager # Optional Manage the disk devices, partitions and file systems on your computer
+
     kdePackages.partitionmanager # Optional: Manage the disk devices, partitions and file systems on your computer
 +
    # Non-KDE graphical packages
 
     hardinfo2 # System information and benchmarks for Linux systems
 
     hardinfo2 # System information and benchmarks for Linux systems
     haruna # Open source video player built with Qt/QML and libmpv
+
     vlc # Cross-platform media player and streaming server
 
     wayland-utils # Wayland utilities
 
     wayland-utils # Wayland utilities
 
     wl-clipboard # Command-line copy/paste utilities for Wayland
 
     wl-clipboard # Command-line copy/paste utilities for Wayland
Line 69: Line 72:
 
     kdePackages.kcalc # Calculator
 
     kdePackages.kcalc # Calculator
 
     kdePackages.kcharselect # Tool to select and copy special characters from all installed fonts
 
     kdePackages.kcharselect # Tool to select and copy special characters from all installed fonts
 +
    kdePackages.kclock # Clock app
 
     kdePackages.kcolorchooser # A small utility to select a color
 
     kdePackages.kcolorchooser # A small utility to select a color
 
     kdePackages.kolourpaint # Easy-to-use paint program
 
     kdePackages.kolourpaint # Easy-to-use paint program
Line 74: Line 78:
 
     kdePackages.sddm-kcm # Configuration module for SDDM
 
     kdePackages.sddm-kcm # Configuration module for SDDM
 
     kdiff3 # Compares and merges 2 or 3 files or directories
 
     kdiff3 # Compares and merges 2 or 3 files or directories
 +
    kdePackages.isoimagewriter # Optional: Program to write hybrid ISO files onto USB disks
 +
    kdePackages.partitionmanager # Optional: Manage the disk devices, partitions and file systems on your computer
 +
    # Non-KDE graphical packages
 
     hardinfo2 # System information and benchmarks for Linux systems
 
     hardinfo2 # System information and benchmarks for Linux systems
     haruna # Open source video player built with Qt/QML and libmpv
+
     vlc # Cross-platform media player and streaming server
 +
    wayland-utils # Wayland utilities
 +
    wl-clipboard # Command-line copy/paste utilities for Wayland
 
     xclip # Tool to access the X clipboard from a console application
 
     xclip # Tool to access the X clipboard from a console application
 
   ];
 
   ];
Line 83: Line 92:
  
 
<syntaxHighlight lang=nix>
 
<syntaxHighlight lang=nix>
environment.plasma6.excludePackages = with pkgs.kdePackages; [
+
  #
  plasma-browser-integration # Comment out this line if you use KDE Connect
+
  # KDE Exclusions
  kdepim-runtime # Unneeded if you use Thunderbird, etc.
+
  #
  konsole # Comment out this line if you use KDE's default terminal app
+
  environment.plasma6.excludePackages = with pkgs; [
   oxygen
+
    kdePackages.elisa # Simple music player aiming to provide a nice experience for its users
];
+
    kdePackages.kdepim-runtime # Akonadi agents and resources
 +
    kdePackages.kmahjongg # KMahjongg is a tile matching game for one or two players
 +
    kdePackages.kmines # KMines is the classic Minesweeper game
 +
    kdePackages.konversation # User-friendly and fully-featured IRC client
 +
    kdePackages.kpat # KPatience offers a selection of solitaire card games
 +
    kdePackages.ksudoku # KSudoku is a logic-based symbol placement puzzle
 +
    kdePackages.ktorrent # Powerful BitTorrent client
 +
    mpv
 +
   ];
 
</syntaxHighlight>
 
</syntaxHighlight>
  

Revision as of 12:46, 28 August 2025

KDE Plasma is a desktop environment that aims to be simple by default, powerful when needed.

Note: As of 2024, KDE Plasma 5 is end of life and X11 is deprecated. In general you should aim for KDE Plasma 6 and Wayland.

Installation

To use KDE Plasma 6 on a computer running NixOS 25.05 or later, add this to your configuration.nix:

services = {
  desktopManager.plasma6.enable = true;

  displayManager.sddm.enable = true;

  displayManager.sddm.wayland.enable = true;
};

environment.systemPackages = with pkgs;
  [
    # KDE
    kdePackages.discover # Optional: Install if you use Flatpak or fwupd firmware update sevice
    kdePackages.kcalc # Calculator
    kdePackages.kcharselect # Tool to select and copy special characters from all installed fonts
    kdePackages.kclock # Clock app
    kdePackages.kcolorchooser # A small utility to select a color
    kdePackages.kolourpaint # Easy-to-use paint program
    kdePackages.ksystemlog # KDE SystemLog Application
    kdePackages.sddm-kcm # Configuration module for SDDM
    kdiff3 # Compares and merges 2 or 3 files or directories
    kdePackages.isoimagewriter # Optional: Program to write hybrid ISO files onto USB disks
    kdePackages.partitionmanager # Optional: Manage the disk devices, partitions and file systems on your computer
    # Non-KDE graphical packages
    hardinfo2 # System information and benchmarks for Linux systems
    vlc # Cross-platform media player and streaming server
    wayland-utils # Wayland utilities
    wl-clipboard # Command-line copy/paste utilities for Wayland
  ];

To use KDE Plasma 6 on a computer and share the GUI desktop with RDP (remote desktop access), add this to your configuration.nix. After applying the configuration, you can connect to the GUI desktop from another computer with an RDP client such as Remmina or Microsoft's Windows app.

Note: As of May 2025, the xrdp service still requires X11 instead of Wayland.

Note: Local login and remote login via RDP will have separate sessions. If you login locally and later login remotely, xrdp will launch a new session instead of connecting you to the locally logged in session.

services = {
  desktopManager.plasma6.enable = true;

  displayManager.sddm.enable = true;

  xrdp = {
    defaultWindowManager = "startplasma-x11";
    enable = true;
    openFirewall = true;
  };

  xserver = {
    enable = true;

    xkb = {
      layout = "us";
      variant = "";
    };
  };
};

environment.systemPackages = with pkgs;
  [
    # KDE
    kdePackages.discover # Optional: Install if you use Flatpak or fwupd firmware update sevice
    kdePackages.kcalc # Calculator
    kdePackages.kcharselect # Tool to select and copy special characters from all installed fonts
    kdePackages.kclock # Clock app
    kdePackages.kcolorchooser # A small utility to select a color
    kdePackages.kolourpaint # Easy-to-use paint program
    kdePackages.ksystemlog # KDE SystemLog Application
    kdePackages.sddm-kcm # Configuration module for SDDM
    kdiff3 # Compares and merges 2 or 3 files or directories
    kdePackages.isoimagewriter # Optional: Program to write hybrid ISO files onto USB disks
    kdePackages.partitionmanager # Optional: Manage the disk devices, partitions and file systems on your computer
    # Non-KDE graphical packages
    hardinfo2 # System information and benchmarks for Linux systems
    vlc # Cross-platform media player and streaming server
    wayland-utils # Wayland utilities
    wl-clipboard # Command-line copy/paste utilities for Wayland
    xclip # Tool to access the X clipboard from a console application
  ];

Excluding some KDE Plasma applications from the default install

  #
  # KDE Exclusions
  #
  environment.plasma6.excludePackages = with pkgs; [
    kdePackages.elisa # Simple music player aiming to provide a nice experience for its users
    kdePackages.kdepim-runtime # Akonadi agents and resources
    kdePackages.kmahjongg # KMahjongg is a tile matching game for one or two players
    kdePackages.kmines # KMines is the classic Minesweeper game
    kdePackages.konversation # User-friendly and fully-featured IRC client
    kdePackages.kpat # KPatience offers a selection of solitaire card games
    kdePackages.ksudoku # KSudoku is a logic-based symbol placement puzzle
    kdePackages.ktorrent # Powerful BitTorrent client
    mpv
  ];

Configuration

GNOME desktop integration

Using the following example configuration, QT applications will have a look similar to the GNOME desktop, using a dark theme.

qt = {
  enable = true;
  platformTheme = "gnome";
  style = "adwaita-dark";
};

For other themes, you may need the packages libsForQt5.qt5ct and libsForQt5.qtstyleplugin-kvantum and a symlink from ~/.config/Kvantum/ to your theme package. Here is an example using Arc-Dark and Home Manager. In the Home Manager configuration:

qt = {
  enable = true;
  platformTheme = "qtct";
  style.name = "kvantum";
};

xdg.configFile = {
  "Kvantum/ArcDark".source = "${pkgs.arc-kde-theme}/share/Kvantum/ArcDark";
  "Kvantum/kvantum.kvconfig".text = "[General]\ntheme=ArcDark";
};

For more details, see this forum post.

Troubleshooting

No Sound switching from Gnome

The NixOS Gnome module enables audio by default. For KDE Plasma you must enable audio yourself.

security.rtkit.enable = true; # Enable RealtimeKit for audio purposes

services.pipewire = {
  enable = true;
  alsa.enable = true;
  alsa.support32Bit = true;
  pulse.enable = true;
  # Uncomment the following line if you want to use JACK applications
  # jack.enable = true;
};

GTK themes are not applied in Wayland applications / Window Decorations missing / Cursor looks different

This affects GTK applications including Firefox and Thunderbird.

Add to your configuration.nix the following line:

programs.dconf.enable = true;

You might also need to set a GTK theme Breeze imitating the KDE theme with the same name in System Settings -> Application Style -->Configure GNOME/GTK Application Style.

(See this issue)

KMail Renders Blank Messages

When you see the message grantlee.template: "Plugin library 'kde_grantlee_plugin' not found." and/or kmail does shows only empty message then add to your configuration.nix the following line:

environment.sessionVariables = {
  NIX_PROFILES = "${pkgs.lib.concatStringsSep " " (pkgs.lib.reverseList config.environment.profiles)}";
};

(See this issue)

Plasma-Manager

Note: Plasma-Manager is not matured yet and currently unofficial

By default, the Plasma configuration can be handled like on traditional systems. With plasma-manager, it is possible to make Plasma configurations via nix by providing home-manager modules.

Bluetooth not available

Add the following configuration (generally in hardware-configuration.nix):

hardware.bluetooth = {
  enable = true;
  powerOnBoot = true;
};