mirror of
https://github.com/nix-community/home-manager
synced 2024-11-30 06:59:45 +01:00
gtk: improve theme and font configuration
Specifically, allow the user to specify the package that provides the theme or font. Fixes #1.
This commit is contained in:
parent
592fd61788
commit
bcb82da88f
2 changed files with 110 additions and 16 deletions
|
@ -27,6 +27,50 @@ let
|
|||
in
|
||||
"${n} = ${v'}";
|
||||
|
||||
fontType = types.submodule {
|
||||
options = {
|
||||
package = mkOption {
|
||||
type = types.nullOr types.package;
|
||||
default = null;
|
||||
example = literalExample "pkgs.dejavu_fonts";
|
||||
description = ''
|
||||
Package providing the font. This package will be installed
|
||||
to your profile. If <literal>null</literal> then the font
|
||||
is assumed to already be available in your profile.
|
||||
'';
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
example = "DejaVu Sans 8";
|
||||
description = ''
|
||||
The family name and size of the font within the package.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
themeType = types.submodule {
|
||||
options = {
|
||||
package = mkOption {
|
||||
type = types.nullOr types.package;
|
||||
default = null;
|
||||
example = literalExample "pkgs.gnome3.gnome_themes_standard";
|
||||
description = ''
|
||||
Package providing the theme. This package will be installed
|
||||
to your profile. If <literal>null</literal> then the theme
|
||||
is assumed to already be available in your profile.
|
||||
'';
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
example = "Adwaita";
|
||||
description = "The name of the theme within the package.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
|
@ -36,27 +80,24 @@ in
|
|||
gtk = {
|
||||
enable = mkEnableOption "GTK 2/3 configuration";
|
||||
|
||||
fontName = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
font = mkOption {
|
||||
type = types.nullOr fontType;
|
||||
default = null;
|
||||
example = "DejaVu Sans 8";
|
||||
description = ''
|
||||
The font to use in GTK+ 2/3 applications.
|
||||
'';
|
||||
};
|
||||
|
||||
themeName = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
iconTheme = mkOption {
|
||||
type = types.nullOr themeType;
|
||||
default = null;
|
||||
example = "Vertex-Dark";
|
||||
description = "The name of the GTK+2/3 theme to use.";
|
||||
description = "The icon theme to use.";
|
||||
};
|
||||
|
||||
iconThemeName = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
theme = mkOption {
|
||||
type = types.nullOr themeType;
|
||||
default = null;
|
||||
example = "Tango";
|
||||
description = "The name of the icon theme to use.";
|
||||
description = "The GTK+2/3 theme to use.";
|
||||
};
|
||||
|
||||
gtk2 = mkOption {
|
||||
|
@ -110,15 +151,24 @@ in
|
|||
let
|
||||
ini =
|
||||
optionalAttrs (cfg.fontName != null)
|
||||
{ gtk-font-name = cfg.fontName; }
|
||||
{ gtk-font-name = cfg.font.name; }
|
||||
//
|
||||
optionalAttrs (cfg.themeName != null)
|
||||
{ gtk-theme-name = cfg.themeName; }
|
||||
optionalAttrs (cfg.theme != null)
|
||||
{ gtk-theme-name = cfg.theme.name; }
|
||||
//
|
||||
optionalAttrs (cfg.iconThemeName != null)
|
||||
{ gtk-icon-theme-name = cfg.iconThemeName; };
|
||||
optionalAttrs (cfg.iconTheme != null)
|
||||
{ gtk-icon-theme-name = cfg.iconTheme.name; };
|
||||
|
||||
optionalPackage = opt:
|
||||
optional (opt != null && opt.package != null) opt.package;
|
||||
in
|
||||
{
|
||||
|
||||
home.packages =
|
||||
optionalPackage cfg.font
|
||||
++ optionalPackage cfg.theme
|
||||
++ optionalPackage cfg.iconTheme;
|
||||
|
||||
home.file.".gtkrc-2.0".text =
|
||||
concatStringsSep "\n" (
|
||||
mapAttrsToList formatGtk2Option ini
|
||||
|
@ -130,4 +180,21 @@ in
|
|||
xdg.configFile."gtk-3.0/gtk.css".text = cfg3.extraCss;
|
||||
}
|
||||
);
|
||||
|
||||
imports =
|
||||
let
|
||||
name = n: [ "gtk" n ];
|
||||
in [
|
||||
(mkChangedOptionModule (name "fontName") (name "font") (
|
||||
config: { name = getAttrFromPath (name "fontName") config; }
|
||||
))
|
||||
|
||||
(mkChangedOptionModule (name "themeName") (name "theme") (
|
||||
config: { name = getAttrFromPath (name "themeName") config; }
|
||||
))
|
||||
|
||||
(mkChangedOptionModule (name "iconThemeName") (name "iconTheme") (
|
||||
config: { name = getAttrFromPath (name "iconThemeName") config; }
|
||||
))
|
||||
];
|
||||
}
|
||||
|
|
|
@ -467,6 +467,33 @@ in
|
|||
i3.config.focus.mouseWarping
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
time = "2017-11-23T00:31:12+00:00";
|
||||
condition =
|
||||
config.gtk.fontName != "_mkMergedOptionModule"
|
||||
|| config.gtk.themeName != "_mkMergedOptionModule"
|
||||
|| config.gtk.iconThemeName != "_mkMergedOptionModule";
|
||||
message = ''
|
||||
The options
|
||||
|
||||
gtk.fontName, gtk.themeName, and gtk.iconThemeName
|
||||
|
||||
are deprecated and will be removed on December 23, 2017.
|
||||
|
||||
Please use
|
||||
|
||||
gtk.font.name, gtk.theme.name, and gtk.iconTheme.name
|
||||
|
||||
instead. You can find information about these in the manual
|
||||
page.
|
||||
|
||||
This change was made to introduce the options
|
||||
'gtk.font.package', 'gtk.theme.package', and
|
||||
'gtk.iconTheme.package', which allow you to specify the
|
||||
package that provides the font or theme.
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue