NixOS Installation
██████╗ ███╗ ███╗███████╗ ██╔══██╗████╗ ████║██╔════╝ ██║ ██║██╔████╔██║███████╗ ██║ ██║██║╚██╔╝██║╚════██║ ██████╔╝██║ ╚═╝ ██║███████║ ╚═════╝ ╚═╝ ╚═╝╚══════╝
DankMaterialShell can be installed on NixOS using the NixOS module. This guide covers the native nixpkgs installation method.
DankMaterialShell is currently only available in the unstable branch of nixpkgs. If you're on NixOS stable (currently 25.11), you'll need to use the Flake Installation method instead.
Installation
1. Enable NixOS Unstable
Ensure you're using NixOS unstable by setting your channel or flake input:
Using channels:
sudo nix-channel --add https://nixos.org/channels/nixos-unstable nixos
sudo nix-channel --update
Using flakes (in flake.nix):
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
}
2. Enable DankMaterialShell
In your NixOS configuration, enable DankMaterialShell:
programs.dms-shell.enable = true;
That's it! Rebuild your system and DankMaterialShell will be installed with sensible defaults.
Configuration Options
DankMaterialShell provides numerous configuration options to customize your installation. Here are the main options:
Feature Toggles
programs.dms-shell = {
enable = true;
systemd = {
enable = true; # Systemd service for auto-start
restartIfChanged = true; # Auto-restart dms.service when dms-shell changes
};
# Core features
enableSystemMonitoring = true; # System monitoring widgets (dgop)
enableClipboard = true; # Clipboard history manager
enableVPN = true; # VPN management widget
enableDynamicTheming = true; # Wallpaper-based theming (matugen)
enableAudioWavelength = true; # Audio visualizer (cava)
enableCalendarEvents = true; # Calendar integration (khal)
};
Custom Quickshell Package
If you need a specific version of Quickshell:
programs.dms-shell = {
enable = true;
quickshell.package = pkgs.quickshell; # or your custom package
};
Using Quickshell from Source
Many features in DankMaterialShell rely on unreleased Quickshell features. For the best experience, you may want to use Quickshell built from source.
To use Quickshell from source, add it as a flake input:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
quickshell = {
url = "git+https://git.outfoxxed.me/quickshell/quickshell";
inputs.nixpkgs.follows = "nixpkgs";
};
};
}
Then use it in your configuration:
programs.dms-shell = {
enable = true;
quickshell.package = inputs.quickshell.packages.${pkgs.stdenv.hostPlatform.system}.quickshell;
};
Using Flake Package with NixOS Module
You can use the package from the DankMaterialShell flake while still using the native NixOS module. This allows you to get quicker updates while keeping the module configuration:
First, add the flake input to your flake.nix:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
dms = {
url = "github:AvengeMedia/DankMaterialShell/stable";
inputs.nixpkgs.follows = "nixpkgs";
};
};
}
If you want to use the unstable (-git) version from the master branch for quicker updates, remove /stable from the URL:
dms.url = "github:AvengeMedia/DankMaterialShell";
However, be aware that the unstable version may not work properly and could contain breaking changes. The documentation may not reflect the latest changes in the unstable version.
Then use the flake package with the native module:
programs.dms-shell = {
enable = true;
package = inputs.dms.packages.${pkgs.stdenv.hostPlatform.system}.default;
};
When using the flake package with the native nixpkgs module, some dependencies may not be automatically enabled by default, and certain configurations might be missing. You may need to manually install optional dependencies or adjust feature toggles to match your needs.
Plugins
Install DankMaterialShell plugins declaratively:
programs.dms-shell = {
enable = true;
plugins = {
DockerManager = {
src = pkgs.fetchFromGitHub {
owner = "LuckShiba";
repo = "DmsDockerManager";
rev = "v1.2.0";
sha256 = "sha256-VoJCaygWnKpv0s0pqTOmzZnPM922qPDMHk4EPcgVnaU=";
};
};
AnotherPlugin = {
enable = true;
src = pkgs.another-plugin;
};
};
};
Advanced Configuration
For a complete list of available options, check the module file in nixpkgs:
- NixOS module:
nixos/modules/programs/dms-shell.nixin nixpkgs
Rebuilding
After making configuration changes, rebuild your system:
sudo nixos-rebuild switch
Troubleshooting
DMS doesn't start automatically
Make sure you have systemd.enable = true set:
programs.dms-shell = {
enable = true;
systemd.enable = true;
};
Missing dependencies
Each feature has its own dependency set. If a feature isn't working, ensure the corresponding enable option is set to true. For example, clipboard history requires enableClipboard = true which installs cliphist and wl-clipboard.
Next Steps
- Configure your preferences via Themes
- Set up compositor keybindings in Keybinds & IPC
- Extend functionality with Plugins