summaryrefslogtreecommitdiffstats
path: root/nixos/modules/config/fonts
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-10 13:28:20 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-10 13:28:20 +0200
commit5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010 (patch)
treea6c0f605be6de3f372ae69905b331f9f75452da7 /nixos/modules/config/fonts
parent6070bc016bd2fd945b04347e25cfd3738622d2ac (diff)
Move all of NixOS to nixos/ in preparation of the repository merge
Diffstat (limited to 'nixos/modules/config/fonts')
-rw-r--r--nixos/modules/config/fonts/corefonts.nix32
-rw-r--r--nixos/modules/config/fonts/fontconfig.nix58
-rw-r--r--nixos/modules/config/fonts/fontdir.nix75
-rw-r--r--nixos/modules/config/fonts/fonts.nix49
-rw-r--r--nixos/modules/config/fonts/ghostscript.nix32
5 files changed, 246 insertions, 0 deletions
diff --git a/nixos/modules/config/fonts/corefonts.nix b/nixos/modules/config/fonts/corefonts.nix
new file mode 100644
index 000000000000..7de95200cfa9
--- /dev/null
+++ b/nixos/modules/config/fonts/corefonts.nix
@@ -0,0 +1,32 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+{
+
+ options = {
+
+ fonts = {
+
+ enableCoreFonts = mkOption {
+ default = false;
+ description = ''
+ Whether to include Microsoft's proprietary Core Fonts. These fonts
+ are redistributable, but only verbatim, among other restrictions.
+ See <link xlink:href="http://corefonts.sourceforge.net/eula.htm"/>
+ for details.
+ '';
+ };
+
+ };
+
+ };
+
+
+ config = mkIf config.fonts.enableCoreFonts {
+
+ fonts.extraFonts = [ pkgs.corefonts ];
+
+ };
+
+}
diff --git a/nixos/modules/config/fonts/fontconfig.nix b/nixos/modules/config/fonts/fontconfig.nix
new file mode 100644
index 000000000000..6e0fdaf4b748
--- /dev/null
+++ b/nixos/modules/config/fonts/fontconfig.nix
@@ -0,0 +1,58 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+{
+
+ options = {
+
+ fonts = {
+
+ enableFontConfig = mkOption { # !!! should be enableFontconfig
+ default = true;
+ description = ''
+ If enabled, a Fontconfig configuration file will be built
+ pointing to a set of default fonts. If you don't care about
+ running X11 applications or any other program that uses
+ Fontconfig, you can turn this option off and prevent a
+ dependency on all those fonts.
+ '';
+ };
+
+ };
+
+ };
+
+
+ config = mkIf config.fonts.enableFontConfig {
+
+ # Bring in the default (upstream) fontconfig configuration.
+ environment.etc."fonts/fonts.conf".source =
+ pkgs.makeFontsConf { fontDirectories = config.fonts.fonts; };
+
+ environment.etc."fonts/conf.d/00-nixos.conf".text =
+ ''
+ <?xml version='1.0'?>
+ <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+ <fontconfig>
+
+ <!-- Set the default hinting style to "slight". -->
+ <match target="font">
+ <edit mode="assign" name="hintstyle">
+ <const>hintslight</const>
+ </edit>
+ </match>
+
+ </fontconfig>
+ '';
+
+ # FIXME: This variable is no longer needed, but we'll keep it
+ # around for a while for applications linked against old
+ # fontconfig builds.
+ environment.variables.FONTCONFIG_FILE = "/etc/fonts/fonts.conf";
+
+ environment.systemPackages = [ pkgs.fontconfig ];
+
+ };
+
+}
diff --git a/nixos/modules/config/fonts/fontdir.nix b/nixos/modules/config/fonts/fontdir.nix
new file mode 100644
index 000000000000..a4f69809b2a4
--- /dev/null
+++ b/nixos/modules/config/fonts/fontdir.nix
@@ -0,0 +1,75 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+let
+
+ fontDirs = config.fonts.fonts;
+
+ localDefs = with pkgs.builderDefs; pkgs.builderDefs.passthru.function rec {
+ src = "";/* put a fetchurl here */
+ buildInputs = [pkgs.xorg.mkfontdir pkgs.xorg.mkfontscale];
+ inherit fontDirs;
+ installPhase = fullDepEntry ("
+ list='';
+ for i in ${toString fontDirs} ; do
+ if [ -d \$i/ ]; then
+ list=\"\$list \$i\";
+ fi;
+ done
+ list=\$(find \$list -name fonts.dir -o -name '*.ttf' -o -name '*.otf');
+ fontDirs='';
+ for i in \$list ; do
+ fontDirs=\"\$fontDirs \$(dirname \$i)\";
+ done;
+ mkdir -p \$out/share/X11-fonts/;
+ find \$fontDirs -type f -o -type l | while read i; do
+ j=\"\${i##*/}\"
+ if ! test -e \"\$out/share/X11-fonts/\${j}\"; then
+ ln -s \"\$i\" \"\$out/share/X11-fonts/\${j}\";
+ fi;
+ done;
+ cd \$out/share/X11-fonts/
+ rm fonts.dir
+ rm fonts.scale
+ rm fonts.alias
+ mkfontdir
+ mkfontscale
+ cat \$( find ${pkgs.xorg.fontalias}/ -name fonts.alias) >fonts.alias
+ ") ["minInit" "addInputs"];
+ };
+
+ x11Fonts = with localDefs; stdenv.mkDerivation rec {
+ name = "X11-fonts";
+ builder = writeScript (name + "-builder")
+ (textClosure localDefs
+ [installPhase doForceShare doPropagate]);
+ };
+
+in
+
+{
+
+ options = {
+
+ fonts = {
+
+ enableFontDir = mkOption {
+ default = false;
+ description = ''
+ Whether to create a directory with links to all fonts in
+ <filename>/run/current-system/sw/share/X11-fonts</filename>.
+ '';
+ };
+
+ };
+
+ };
+
+ config = mkIf config.fonts.enableFontDir {
+
+ environment.systemPackages = [ x11Fonts ];
+
+ };
+
+}
diff --git a/nixos/modules/config/fonts/fonts.nix b/nixos/modules/config/fonts/fonts.nix
new file mode 100644
index 000000000000..f43784f6d03e
--- /dev/null
+++ b/nixos/modules/config/fonts/fonts.nix
@@ -0,0 +1,49 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+{
+
+ options = {
+
+ fonts = {
+
+ # TODO: find another name for it.
+ fonts = mkOption {
+ default = [
+ # - the user's .fonts directory
+ "~/.fonts"
+ # - the user's current profile
+ "~/.nix-profile/lib/X11/fonts"
+ "~/.nix-profile/share/fonts"
+ # - the default profile
+ "/nix/var/nix/profiles/default/lib/X11/fonts"
+ "/nix/var/nix/profiles/default/share/fonts"
+ ];
+ description = "List of primary font paths.";
+ apply = list: list ++ [
+ # - a few statically built locations
+ pkgs.xorg.fontbhttf
+ pkgs.xorg.fontbhlucidatypewriter100dpi
+ pkgs.xorg.fontbhlucidatypewriter75dpi
+ pkgs.ttf_bitstream_vera
+ pkgs.freefont_ttf
+ pkgs.liberation_ttf
+ pkgs.xorg.fontbh100dpi
+ pkgs.xorg.fontmiscmisc
+ pkgs.xorg.fontcursormisc
+ ]
+ ++ config.fonts.extraFonts;
+ };
+
+ extraFonts = mkOption {
+ default = [];
+ example = [ pkgs.dejavu_fonts ];
+ description = "List of packages with additional fonts.";
+ };
+
+ };
+
+ };
+
+}
diff --git a/nixos/modules/config/fonts/ghostscript.nix b/nixos/modules/config/fonts/ghostscript.nix
new file mode 100644
index 000000000000..9ef00396808c
--- /dev/null
+++ b/nixos/modules/config/fonts/ghostscript.nix
@@ -0,0 +1,32 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+{
+
+ options = {
+
+ fonts = {
+
+ enableGhostscriptFonts = mkOption {
+ default = false;
+ description = ''
+ Whether to add the fonts provided by Ghostscript (such as
+ various URW fonts and the “Base-14” Postscript fonts) to the
+ list of system fonts, making them available to X11
+ applications.
+ '';
+ };
+
+ };
+
+ };
+
+
+ config = mkIf config.fonts.enableGhostscriptFonts {
+
+ fonts.extraFonts = [ "${pkgs.ghostscript}/share/ghostscript/fonts" ];
+
+ };
+
+}