Merge system/fontdir.nix and system/fonts.nix into a new configuration file.

svn path=/nixos/branches/fix-style/; revision=13686
This commit is contained in:
Nicolas Pierron 2009-01-02 16:07:39 +00:00
parent e4b0134a43
commit d745c21aab
6 changed files with 182 additions and 142 deletions

View File

@ -173,15 +173,6 @@ let
'';
target = "ssmtp/ssmtp.conf";
}
# Configuration file for fontconfig used to locate
# (X11) client-rendered fonts.
++ optional config.fonts.enableFontConfig {
source = pkgs.makeFontsConf {
fontDirectories = import ../system/fonts.nix {inherit pkgs config;};
};
target = "fonts/fonts.conf";
}
# LDAP configuration.
++ optional config.users.ldap.enable {

View File

@ -1,54 +0,0 @@
args : with args; with builderDefs;
let localDefs = builderDefs.passthru.function rec {
src = "";/* put a fetchurl here */
buildInputs = [mkfontdir mkfontscale ttmkfdir];
configureFlags = [];
fontDirs = import ./fonts.nix {inherit pkgs config;};
installPhase = FullDepEntry ("
list='';
for i in ${toString fontDirs} ; do
if [ -d \$i/ ]; then
list=\"\$list \$i\";
fi;
done
list=\$(find \$list -name fonts.dir);
fontDirs='';
for i in \$list ; do
fontDirs=\"\$fontDirs \$(dirname \$i)\";
done;
mkdir -p \$out/share/X11-fonts/;
for i in \$(find \$fontDirs -type f -o -type l); 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
mv fonts.scale fonts.scale.old
mv fonts.dir fonts.dir.old
ttmkfdir
cat fonts.scale.old >> fonts.scale
cat fonts.dir.old >> fonts.dir
rm fonts.dir.old
rm fonts.scale.old
cat \$( find ${fontalias}/ -name fonts.alias) >fonts.alias
") ["minInit" "addInputs"];
};
in with localDefs;
stdenv.mkDerivation rec {
name = "X11-fonts";
builder = writeScript (name + "-builder")
(textClosure localDefs
[installPhase doForceShare doPropagate]);
meta = {
description = "
Directory to contain all X11 fonts requested.
";
};
}

View File

@ -1,27 +1,178 @@
{pkgs, config}:
{pkgs, config, ...}:
[
# - 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"
# - a few statically built locations
pkgs.xorg.fontbhttf
pkgs.xorg.fontbhlucidatypewriter100dpi
pkgs.xorg.fontbhlucidatypewriter75dpi
pkgs.ttf_bitstream_vera
pkgs.freefont_ttf
pkgs.xorg.fontbh100dpi
pkgs.xorg.fontmiscmisc
pkgs.xorg.fontcursormisc
]
###### interface
let
inherit (pkgs.lib) mkOption;
++ pkgs.lib.optional config.fonts.enableCoreFonts pkgs.corefonts
options = {
++ pkgs.lib.optional config.fonts.enableGhostscriptFonts "${pkgs.ghostscript}/share/ghostscript/fonts"
fonts = {
++ config.fonts.extraFonts
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.
";
};
# should be move elsewhere.
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.
";
};
enableFontDir = mkOption {
default = false;
description = "
Whether to create a directory with links to all fonts in share -
so user can configure vncserver script one time (I mean per-user
vncserver, so global service is not a good solution).
";
};
# 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.xorg.fontbh100dpi
pkgs.xorg.fontmiscmisc
pkgs.xorg.fontcursormisc
]
++ pkgs.lib.optional config.fonts.enableCoreFonts pkgs.corefonts
++ pkgs.lib.optional config.fonts.enableGhostscriptFonts "${pkgs.ghostscript}/share/ghostscript/fonts"
++ config.fonts.extraFonts;
};
extraFonts = mkOption {
default = [];
description = "
List of additional fonts.
";
};
enableCoreFonts = mkOption {
default = true;
description = "
Whether to include MS Core Fonts (redistributable, but only verbatim).
";
};
};
};
in
###### implementation
let
inherit (pkgs) builderDefs ttmkfdir;
inherit (pkgs.xorg) mkfontdir mkfontscale fontalias;
fontDirs = config.fonts.fonts;
localDefs = with builderDefs; builderDefs.passthru.function rec {
src = "";/* put a fetchurl here */
buildInputs = [mkfontdir mkfontscale ttmkfdir];
configureFlags = [];
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);
fontDirs='';
for i in \$list ; do
fontDirs=\"\$fontDirs \$(dirname \$i)\";
done;
mkdir -p \$out/share/X11-fonts/;
for i in \$(find \$fontDirs -type f -o -type l); 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
mv fonts.scale fonts.scale.old
mv fonts.dir fonts.dir.old
ttmkfdir
cat fonts.scale.old >> fonts.scale
cat fonts.dir.old >> fonts.dir
rm fonts.dir.old
rm fonts.scale.old
cat \$( find ${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]);
meta = {
description = "
Directory to contain all X11 fonts requested.
";
};
};
inherit (pkgs.lib) mkIf;
in
{
require = [
options
];
system = {
build = {
inherit x11Fonts;
};
};
environment = {
# Configuration file for fontconfig used to locate
# (X11) client-rendered fonts.
etc = mkIf config.fonts.enableFontConfig [{
source = pkgs.makeFontsConf {
fontDirectories = config.fonts.fonts;
};
target = "fonts/fonts.conf";
}];
};
}

View File

@ -2271,56 +2271,6 @@ in
};
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.
";
};
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.
";
};
enableFontDir = mkOption {
default = false;
description = "
Whether to create a directory with links to all fonts in share -
so user can configure vncserver script one time (I mean per-user
vncserver, so global service is not a good solution).
";
};
extraFonts = mkOption {
default = [];
merge = backwardPkgsFunListMerge;
description = "
Function, returning list of additional fonts.
";
};
enableCoreFonts = mkOption {
default = true;
description = "
Whether to include MS Core Fonts (redistributable, but only verbatim).
";
};
};
i18n = {
defaultLocale = mkOption {
@ -2475,6 +2425,9 @@ in
(import ../upstart-jobs/cron.nix)
(import ../upstart-jobs/cron/locate.nix)
# fonts
(import ../system/fonts.nix)
# sound
(import ../upstart-jobs/alsa.nix)
];

View File

@ -73,11 +73,7 @@ rec {
# Font aggregation
fontDir = import ./fontdir.nix {
inherit config pkgs;
inherit (pkgs) builderDefs ttmkfdir;
inherit (pkgs.xorg) mkfontdir mkfontscale fontalias;
};
fontDir = config.system.build.x11Fonts;
# The wrapper setuid programs (since we can't have setuid programs

View File

@ -4,7 +4,7 @@
let
kernelPackages = config.boot.kernelPackages;
# List of font directories.
fontDirectories = import ../system/fonts.nix {inherit pkgs config;};
fontDirectories = config.fonts.fonts;
inherit (pkgs.lib) mkOption;
@ -759,6 +759,9 @@ mkIf cfg.enable {
# environment.etc
(import ../etc/default.nix)
# fonts.fonts
(import ../system/fonts.nix)
# boot.extraModulePackages
# security.extraSetuidPrograms
# environment.extraPackages