summaryrefslogtreecommitdiff
path: root/home-manager/fontconfig.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager/fontconfig.nix')
-rw-r--r--home-manager/fontconfig.nix90
1 files changed, 9 insertions, 81 deletions
diff --git a/home-manager/fontconfig.nix b/home-manager/fontconfig.nix
index 4473d1a..7c12b7e 100644
--- a/home-manager/fontconfig.nix
+++ b/home-manager/fontconfig.nix
@@ -1,83 +1,11 @@
-{ config, lib, ... }: let
- cfg = config.fonts.fontconfig;
- fcConfd = "fontconfig/conf.d";
- fcResources = ./resources/fontconfig;
-
- extraConfigFile = lib.types.submodule ({ name, ... }: {
- options = {
- enable = lib.mkEnableOption "Whether this font config file should be generated.";
- text = lib.mkOption {
- type = lib.types.nullOr lib.types.lines;
- default = null;
- description = "Verbatim contents of the config file. If this option is null then the 'source' option must be set.";
- };
- source = lib.mkOption {
- type = lib.types.nullOr lib.types.path;
- default = null;
- description = "Config file to source. Alternatively, use the 'text' option instead.";
- };
- label = lib.mkOption {
- type = lib.types.str;
- default = "name";
- description = "Label to use for the name of the config file.";
- };
- priority = lib.mkOption {
- type = lib.types.addCheck lib.types.int (x: x >= 0 && x <= 99);
- default = 90;
- description = ''
- Determines the order in which configs are loaded.
- Must be a value within the range of 0-99, where priority 0 is the highest priority and 99 is the lowest.
- '';
- };
- };
- config = {
- label = lib.mkDefault name;
- };
- });
-in {
- options.fonts.fontconfig = {
- _extraConfigFiles = lib.mkOption {
- type = lib.types.attrsOf extraConfigFile;
- default = {};
- description = ''
- Extra font config files that will be added to `~/.config/fontconfig/conf.d/`.
- Files are added as `conf.d/{priority}-{label}.conf`.
- '';
- example = ''
- {
- tamzen = {
- enable = true;
- label = "tamzen-disable-antialiasing";
- text = tamzenFontConfig; # Pretend this is defined elsewhere
- priority = 90;
- }; # => conf.d/90-tamzen-disable-antialiasing.conf
- commit-mono-options = {
- enable = true;
- source = ./resources/fontconfig/commit-mono.conf;
- priority = 80;
- }; # => conf.d/80-commit-mono-options.conf
- };
- '';
- };
- };
-
- config = lib.mkIf cfg.enable {
- fonts.fontconfig._extraConfigFiles = {
- tamzen-disable-antialiasing = {
- enable = true;
- text = builtins.readFile ./resources/fontconfig/90-tamzen-disable-anti-aliasing.conf;
- priority = 90;
- };
- commit-mono-options = {
- enable = true;
- source = ./resources/fontconfig/90-commit-mono-options.conf;
- priority = 90;
- };
- };
-
- xdg.configFile = lib.mapAttrs' (name: config:
- lib.nameValuePair "${fcConfd}/${builtins.toString config.priority}-${config.label}.conf"
- { inherit (config) text; source = lib.mkIf (config.source != null) config.source; }
- ) cfg._extraConfigFiles;
+{ lib, config, ... }: {
+ config = {
+ # Warn whenever subpixelRendering is not enabled
+ warnings = [
+ (lib.mkIf (config.fonts.fontconfig.subpixelRendering == null)
+ ''fonts.fontconfig.subpixelRendering is unset; this may result in suboptimal font rendering. Set this value to "none" to disable the feature explicitly.'')
+ (lib.mkIf (config.fonts.fontconfig.hinting == null)
+ ''fonts.fontconfig.hinting is unset; this may result in suboptimal font clarity. Set this value to "none" to disable the feature explicitly.'')
+ ];
};
}