dunst: add option services.dunst.iconTheme

Fixes #119
This commit is contained in:
Robert Helgesson 2017-11-07 00:27:46 +01:00
parent fc3e82584b
commit fad1e108d8
No known key found for this signature in database
GPG key ID: C3DB11069E65DC86

View file

@ -16,6 +16,35 @@ let
"${key}=${value'}";
};
themeType = types.submodule {
options = {
package = mkOption {
type = types.package;
example = literalExample "pkgs.gnome3.adwaita-icon-theme";
description = "Package providing the theme.";
};
name = mkOption {
type = types.str;
example = "Adwaita";
description = "The name of the theme within the package.";
};
size = mkOption {
type = types.str;
default = "32x32";
example = "16x16";
description = "The desired icon size.";
};
};
};
hicolorTheme = {
package = pkgs.hicolor_icon_theme;
name = "hicolor";
size = "32x32";
};
in
{
@ -25,6 +54,12 @@ in
services.dunst = {
enable = mkEnableOption "the dunst notification daemon";
iconTheme = mkOption {
type = themeType;
default = hicolorTheme;
description = "Set the icon theme.";
};
settings = mkOption {
type = types.attrsOf types.attrs;
default = {};
@ -55,6 +90,52 @@ in
home.file.".local/share/dbus-1/services/org.knopwob.dunst.service".source =
"${pkgs.dunst}/share/dbus-1/services/org.knopwob.dunst.service";
services.dunst.settings.global.icon_folders =
let
useCustomTheme =
cfg.iconTheme.package != hicolorTheme.package
|| cfg.iconTheme.name != hicolorTheme.name
|| cfg.iconTheme.size != hicolorTheme.size;
basePaths = [
"/run/current-system/sw"
"${config.home.homeDirectory}/.nix-profile"
cfg.iconTheme.package
] ++ optional useCustomTheme hicolorTheme.package;
themes =
[
cfg.iconTheme
] ++ optional useCustomTheme (
hicolorTheme // { size = cfg.iconTheme.size; }
);
categories = [
"actions"
"animations"
"apps"
"categories"
"devices"
"emblems"
"emotes"
"filesystem"
"intl"
"mimetypes"
"places"
"status"
"stock"
];
in
concatStringsSep ":" (
concatMap (theme:
concatMap (basePath:
map (category:
"${basePath}/share/icons/${theme.name}/${theme.size}/${category}"
) categories
) basePaths
) themes
);
systemd.user.services.dunst = {
Unit = {
Description = "Dunst notification daemon";