Skip to content

mkDmsShell is undocumented, and HM nixpkgs overridal needs it #2630

Description

@erolm-a

Compositor

Niri

Distribution

NixOS

If Other, please specify

No response

Select your Installation Method

Distro Packaging

Was this your original Installation method?

Yes

If no, specify

No response

dms doctor -vC

Details ## DMS Doctor Report

System

  • [ok] Operating System: NixOS 25.11 (Xantusia)
    • Supported for runtime (install via NixOS module or Flake)
  • [ok] Architecture: amd64
  • [ok] Display Server: Wayland
    • WAYLAND_DISPLAY=wayland-1

Versions

  • [ok] DMS CLI: dms 1.5-beta+date=2026-06-13_3701b3d
    • /nix/store/k29r0544a3zhvy5s6gw9f1f10ciyq3c6-dms-shell-1.5-beta+date=2026-06-13_3701b3d/bin/.dms-wrapped
  • [ok] Quickshell: Quickshell 0.3.0 (revision tag-v0.3.0, distributed by Nixpkgs)
    • /etc/profiles/per-user/erolm_a/bin/qs
  • [ok] DMS Shell: 1.5-beta+date=2026-06-13_3701b3d
    • /nix/store/k29r0544a3zhvy5s6gw9f1f10ciyq3c6-dms-shell-1.5-beta+date=2026-06-13_3701b3d/share/quickshell/dms

Installation

  • [ok] DMS Configuration: Found
    • /nix/store/k29r0544a3zhvy5s6gw9f1f10ciyq3c6-dms-shell-1.5-beta+date=2026-06-13_3701b3d/share/quickshell/dms
  • [ok] shell.qml: Present
    • /nix/store/k29r0544a3zhvy5s6gw9f1f10ciyq3c6-dms-shell-1.5-beta+date=2026-06-13_3701b3d/share/quickshell/dms/shell.qml
  • [info] Install Type: Nix store
    • /nix/store/k29r0544a3zhvy5s6gw9f1f10ciyq3c6-dms-shell-1.5-beta+date=2026-06-13_3701b3d/share/quickshell/dms

Compositor

  • [ok] Hyprland: 0.52.1
    • /run/current-system/sw/bin/hyprland
  • [ok] niri: 25.11
    • /etc/profiles/per-user/erolm_a/bin/niri
  • [info] Active: niri
  • [warn] Background Blur: Unsupported
    • Compositor does not support ext-background-effect-v1

Quickshell Features

  • [ok] Polkit: Available
    • Authentication prompts
  • [ok] IdleMonitor: Available
    • Idle detection
  • [ok] IdleInhibitor: Available
    • Prevent idle/sleep
  • [ok] ShortcutInhibitor: Available
    • Allow shortcut management (niri)
  • [ok] BackgroundBlur: Available
    • Background blur API support in Quickshell

Optional Features

  • [ok] accountsservice: Available
    • User accounts
  • [warn] power-profiles-daemon: Not available
    • Power profile management
  • [ok] logind: Available
    • Session management
  • [ok] cups-pk-helper: Available
    • Printer management
  • [info] I2C/DDC: No monitors detected
    • External monitor brightness control
  • [ok] qt6-imageformats: Installed (4 formats)
    • Formats: WebP, TIFF, JP2, ICNS (/nix/store/44m5vdgldm4b0ngvfj2hbjmv4b72kriz-qtimageformats-6.11.0/lib/qt-6/plugins/imageformats:/run/current-system/sw/lib/qt-6/plugins/imageformats)
  • [ok] kimageformats: Installed (4 formats)
    • Formats: AVIF, HEIF, JXL, EXR (/nix/store/7jngqbdkd1c8v578n2cn8i716ah77c3f-kimageformats-6.26.0/lib/qt-6/plugins/imageformats:/run/current-system/sw/lib/qt-6/plugins/imageformats)
  • [ok] Terminal: kitty
  • [ok] Network: NetworkManager
    • NetworkManager present. Using NM API.
  • [ok] matugen: Installed
    • Dynamic theming
  • [ok] dgop: Installed
    • System monitoring
  • [ok] cava: Installed
    • Audio visualizer
  • [ok] khal: Installed
    • Calendar events
  • [info] danksearch: Not installed
    • File search
  • [info] fprintd: Not installed
    • Fingerprint auth

Config Files

  • [ok] settings.json: Present
    • /home/erolm_a/.config/DankMaterialShell/settings.json
  • [info] clsettings.json: Not yet created
    • /home/erolm_a/.config/DankMaterialShell/clsettings.json
  • [ok] plugin_settings.json: Present
    • /home/erolm_a/.config/DankMaterialShell/plugin_settings.json
  • [ok] session.json: Present
    • /home/erolm_a/.local/state/DankMaterialShell/session.json
  • [ok] dms-colors.json: Present
    • /home/erolm_a/.cache/DankMaterialShell/dms-colors.json

Services

  • [warn] dms.service: Disabled
  • [info] greetd: Not installed
    • Optional greeter service

Environment

  • [info] QT_QPA_PLATFORMTHEME: Not set
  • [info] QS_ICON_THEME: Not set

Fonts

  • [ok] Normal Font: Inter Variable
    • Available
  • [ok] Monospace Font: Fira Code
    • Available

Summary: 0 error(s), 3 warning(s), 32 ok

Description

When using a Home Manager module, fixing the nixpkgs via inputs.nixpkgs.follows = "nixpkgs-unstable" does not build DMS with nixpkgs-unstable. The reason is that when used as a HM module, mkDmsShell function is passed a pkgs from HM directly, thus sidestepping the definition of nixpkgs.

In fact, I noticed a few weird things:

  • quickshell 0.2.1 would be fetched rather than 0.3.0
  • even if one just overrides quickshell, a weird mix of qt libraries would be pulled thus breaking a few plugins

To have DMS actually be built from unstable nix while the rest of the system is still stable (25.11 - I haven't updated to 26.05 yet) I had to do this:

  1. Set up an overlay. E.g. see my overlay.nix where pkgs-unstable is just nixpkgs-unstable evaluated on the current system
{ pkgs-unstable, inputs, lib, ... }:
   (final: prev: {
dms-shell = inputs.dms.lib.mkDmsShell pkgs-unstable;
quickshell = pkgs-unstable.quickshell; # ... }
  1. Override the package in the HM module:
    programs.dank-material-shell.package = pkgs.dms-shell

Thanks to Copilot I realized that mkDmsShell is meant exactly for this purpose, but if I am not mistaken it lacks documentation on the wiki.

Expected Behavior

DMS builds and runs based on nixpkgs-unstable packages (notably qt 6.11 at the time of writing together with quickshell)

Steps to Reproduce

Follow the wiki steps for the DMS flake, but follow the Home Manager route.

Error Messages/Logs

When one only overrides quickshell:

  WARN scene: @Services/MultimediaProbe.qml[3:1]: Cannot load library /nix/store/sxywryfhzpcjxc0g1xbaka4vgfchbq41-qtmultimedia-6.10.2/lib/qt-6/qml/QtMultimedia/libquickmultimediaplugin.so: /nix/store/sxywryfhzpcjxc0g1xbaka4vgfchbq41-qtmultime
dia-6.10.2/lib/qt-6/qml/QtMultimedia/../../../libQt6Multimedia.so.6: undefined symbol: _ZN14QObjectPrivateC2E16QtPrivate_6_10_2, version Qt_6_PRIVATE_API
  WARN qml: [MultimediaService:19] QtMultimedia not available

Screenshots/Recordings

No response

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions