diff --git a/nixos/modules/config/fonts/fontconfig-ultimate.nix b/nixos/modules/config/fonts/fontconfig-ultimate.nix
index a3f52fbd9199..ed6429dda085 100644
--- a/nixos/modules/config/fonts/fontconfig-ultimate.nix
+++ b/nixos/modules/config/fonts/fontconfig-ultimate.nix
@@ -8,61 +8,6 @@ let fcBool = x: if x then "true" else "false";
latestVersion = pkgs.fontconfig.configVersion;
- # fontconfig ultimate main configuration file
- # priority 52
- fontconfigUltimateConf = pkgs.writeText "fc-52-fontconfig-ultimate.conf" ''
-
-
-
-
- ${optionalString (!cfg.allowBitmaps) ''
-
-
-
-
- false
-
-
-
- ''}
-
- ${optionalString cfg.allowType1 ''
-
-
-
-
-
- Type 1
-
-
-
-
- ''}
-
-
-
-
- ${fcBool cfg.useEmbeddedBitmaps}
-
-
-
-
-
-
- ${fcBool cfg.forceAutohint}
-
-
-
-
-
-
- ${fcBool cfg.renderMonoTTFAsBitmap}
-
-
-
-
- '';
-
# The configuration to be included in /etc/font/
confPkg = pkgs.runCommand "font-ultimate-conf" {} ''
support_folder=$out/etc/fonts/conf.d
@@ -71,12 +16,6 @@ let fcBool = x: if x then "true" else "false";
mkdir -p $support_folder
mkdir -p $latest_folder
- # 52-fontconfig-ultimate.conf
- ln -s ${fontconfigUltimateConf} \
- $support_folder/52-fontconfig-ultimate.conf
- ln -s ${fontconfigUltimateConf} \
- $latest_folder/52-fontconfig-ultimate.conf
-
# fontconfig ultimate substitutions
${optionalString (cfg.substitutions != "none") ''
ln -s ${pkgs.fontconfig-ultimate}/etc/fonts/presets/${cfg.substitutions}/*.conf \
@@ -113,45 +52,6 @@ in
'';
};
- allowBitmaps = mkOption {
- type = types.bool;
- default = true;
- description = ''
- Allow bitmap fonts. Set to false to ban all
- bitmap fonts.
- '';
- };
-
- allowType1 = mkOption {
- type = types.bool;
- default = false;
- description = ''
- Allow Type-1 fonts. Default is false because of
- poor rendering.
- '';
- };
-
- useEmbeddedBitmaps = mkOption {
- type = types.bool;
- default = false;
- description = ''Use embedded bitmaps in fonts like Calibri.'';
- };
-
- forceAutohint = mkOption {
- type = types.bool;
- default = false;
- description = ''
- Force use of the TrueType Autohinter. Useful for debugging or
- free-software purists.
- '';
- };
-
- renderMonoTTFAsBitmap = mkOption {
- type = types.bool;
- default = false;
- description = ''Render some monospace TTF fonts as bitmaps.'';
- };
-
substitutions = mkOption {
type = types.nullOr (types.enum ["free" "combi" "ms"]);
default = "free";
diff --git a/nixos/modules/config/fonts/fontconfig.nix b/nixos/modules/config/fonts/fontconfig.nix
index 52ad1e714fb9..5648b7b1d027 100644
--- a/nixos/modules/config/fonts/fontconfig.nix
+++ b/nixos/modules/config/fonts/fontconfig.nix
@@ -41,11 +41,11 @@ let cfg = config.fonts.fontconfig;
# priority 0
cacheConfSupport = makeCacheConf { version = supportVersion; };
cacheConfLatest = makeCacheConf {};
-
+
# generate the font cache setting file for a fontconfig version
# use latest when no version is passed
makeCacheConf = { version ? null }:
- let
+ let
fcPackage = if builtins.isNull version
then "fontconfig"
else "fontconfig_${version}";
@@ -104,6 +104,13 @@ let cfg = config.fonts.fontconfig;
''}
+
+
+
+ ${fcBool cfg.forceAutohint}
+
+
+
'';
@@ -113,7 +120,7 @@ let cfg = config.fonts.fontconfig;
# default fonts configuration file
# priority 52
- defaultFontsConf =
+ defaultFontsConf =
let genDefault = fonts: name:
optionalString (fonts != []) ''
@@ -142,7 +149,61 @@ let cfg = config.fonts.fontconfig;
'';
- # fontconfig configuration package
+ # bitmap font options
+ # priority 53
+ rejectBitmaps = pkgs.writeText "fc-53-nixos-bitmaps.conf" ''
+
+
+
+
+ ${optionalString (!cfg.allowBitmaps) ''
+
+
+
+
+ false
+
+
+
+ ''}
+
+
+
+
+ ${fcBool cfg.useEmbeddedBitmaps}
+
+
+
+
+
+
+ ${fcBool cfg.renderMonoTTFAsBitmap}
+
+
+
+
+ '';
+
+ # reject Type 1 fonts
+ # priority 53
+ rejectType1 = pkgs.writeText "fc-53-nixos-reject-type1.conf" ''
+
+
+
+
+
+
+
+
+ Type 1
+
+
+
+
+
+ '';
+
+ # fontconfig configuration package
confPkg = pkgs.runCommand "fontconfig-conf" {} ''
support_folder=$out/etc/fonts
latest_folder=$out/etc/fonts/${latestVersion}
@@ -166,7 +227,7 @@ let cfg = config.fonts.fontconfig;
substitute ${latestPkg.out}/etc/fonts/conf.d/51-local.conf \
$latest_folder/conf.d/51-local.conf \
- --replace local.conf /etc/fonts/${latestVersion}/local.conf
+ --replace local.conf /etc/fonts/${latestVersion}/local.conf
# 00-nixos-cache.conf
ln -s ${cacheConfSupport} \
@@ -192,6 +253,16 @@ let cfg = config.fonts.fontconfig;
# 52-nixos-default-fonts.conf
ln -s ${defaultFontsConf} $support_folder/conf.d/52-nixos-default-fonts.conf
ln -s ${defaultFontsConf} $latest_folder/conf.d/52-nixos-default-fonts.conf
+
+ # 53-nixos-bitmaps.conf
+ ln -s ${rejectBitmaps} $support_folder/conf.d/53-nixos-bitmaps.conf
+ ln -s ${rejectBitmaps} $latest_folder/conf.d/53-nixos-bitmaps.conf
+
+ ${optionalString (! cfg.allowType1) ''
+ # 53-nixos-reject-type1.conf
+ ln -s ${rejectType1} $support_folder/conf.d/53-nixos-reject-type1.conf
+ ln -s ${rejectType1} $latest_folder/conf.d/53-nixos-reject-type1.conf
+ ''}
'';
# Package with configuration files
@@ -349,6 +420,45 @@ in
'';
};
+ allowBitmaps = mkOption {
+ type = types.bool;
+ default = true;
+ description = ''
+ Allow bitmap fonts. Set to false to ban all
+ bitmap fonts.
+ '';
+ };
+
+ allowType1 = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ Allow Type-1 fonts. Default is false because of
+ poor rendering.
+ '';
+ };
+
+ useEmbeddedBitmaps = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''Use embedded bitmaps in fonts like Calibri.'';
+ };
+
+ forceAutohint = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ Force use of the TrueType Autohinter. Useful for debugging or
+ free-software purists.
+ '';
+ };
+
+ renderMonoTTFAsBitmap = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''Render some monospace TTF fonts as bitmaps.'';
+ };
+
};
};
diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix
index ff3654737afd..0b609287f63a 100644
--- a/nixos/modules/rename.nix
+++ b/nixos/modules/rename.nix
@@ -181,6 +181,13 @@ with lib;
# KDE Plasma 5
(mkRenamedOptionModule [ "services" "xserver" "desktopManager" "kde5" ] [ "services" "xserver" "desktopManager" "plasma5" ])
+ # Fontconfig
+ (mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "allowBitmaps" ] [ "config" "fonts" "fontconfig" "allowBitmaps" ])
+ (mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "allowType1" ] [ "config" "fonts" "fontconfig" "allowType1" ])
+ (mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "useEmbeddedBitmaps" ] [ "config" "fonts" "fontconfig" "useEmbeddedBitmaps" ])
+ (mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "forceAutohint" ] [ "config" "fonts" "fontconfig" "forceAutohint" ])
+ (mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "renderMonoTTFAsBitmap" ] [ "config" "fonts" "fontconfig" "renderMonoTTFAsBitmap" ])
+
# Options that are obsolete and have no replacement.
(mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "")
(mkRemovedOptionModule [ "programs" "bash" "enable" ] "")
diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix
index 24225308ffb3..b02524012026 100644
--- a/nixos/modules/services/x11/desktop-managers/plasma5.nix
+++ b/nixos/modules/services/x11/desktop-managers/plasma5.nix
@@ -196,6 +196,11 @@ in
};
fonts.fonts = with pkgs; [ noto-fonts hack-font ];
+ fonts.fontconfig.defaultFonts = {
+ monospace = [ "Hack" "Noto Mono" ];
+ sansSerif = [ "Noto Sans" ];
+ serif = [ "Noto Serif" ];
+ };
programs.ssh.askPassword = "${plasma5.ksshaskpass.out}/bin/ksshaskpass";
diff --git a/pkgs/desktops/plasma-5/startkde/startkde.sh b/pkgs/desktops/plasma-5/startkde/startkde.sh
index a403e8e05e6e..c38450516e91 100755
--- a/pkgs/desktops/plasma-5/startkde/startkde.sh
+++ b/pkgs/desktops/plasma-5/startkde/startkde.sh
@@ -14,6 +14,12 @@ if ! [ -e $HOME/.gtkrc-2.0 ] \
cat >$HOME/.gtkrc-2.0 <$HOME/.config/gtk-3.0/settings.ini <$kdeglobalsfile <