AvengeMedia / AvengeMedia/DankMaterialShell

`mkDmsShell` is undocumented, and HM nixpkgs overridal needs it

Open
#2,630 1 comment 0 reactions 1 assignee Claimed by @LuckShiba View on GitHub
documentation
Dominant language
QML
Stars
8.1k
Forks
515
Avg merge
1d 8h
Merged PRs (30d)
102

Description

### 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

## 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
```nix
{ pkgs-unstable, inputs, lib, ... }:
(final: prev: {
dms-shell = inputs.dms.lib.mkDmsShell pkgs-unstable;
quickshell = pkgs-unstable.quickshell; # ... }
```

2. 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:

```nix
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_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.