* Let KDEDIRS, XDG_CONFIG_DIRS and XDG_DATA_DIRS contain the KDE

packages that we need rather than just /var/run/current-system/sw.
  This ensures consistency when upgrading a system (e.g. you don't end
  up with a mix of KDE versions at runtime).  This partially reverts
  r14148 (in particular the update-mime-database hack in the
  systemPath post-build).

svn path=/nixos/trunk/; revision=14887
This commit is contained in:
Eelco Dolstra 2009-04-05 18:30:39 +00:00
parent 3b494865b1
commit d5e97ab056
5 changed files with 49 additions and 41 deletions

View File

@ -15,9 +15,9 @@ export LANG=@defaultLocale@
export EDITOR=nano export EDITOR=nano
export INFOPATH=/var/run/current-system/sw/info:/var/run/current-system/sw/share/info export INFOPATH=/var/run/current-system/sw/info:/var/run/current-system/sw/share/info
export LOCATE_PATH=/var/cache/locatedb export LOCATE_PATH=/var/cache/locatedb
export KDEDIRS=/var/run/current-system/sw export KDEDIRS=@kdeDirs@
export XDG_CONFIG_DIRS=/var/run/current-system/sw/etc/xdg export XDG_CONFIG_DIRS=@xdgConfigDirs@
export XDG_DATA_DIRS=/var/run/current-system/sw/share export XDG_DATA_DIRS=@xdgDataDirs@
# Set up secure multi-user builds: non-root users build through the # Set up secure multi-user builds: non-root users build through the
@ -44,11 +44,11 @@ for i in $NIX_PROFILES; do # !!! reverse
export PKG_CONFIG_PATH="$i/lib/pkgconfig:$PKG_CONFIG_PATH" export PKG_CONFIG_PATH="$i/lib/pkgconfig:$PKG_CONFIG_PATH"
# Automake's `aclocal' bails out if it finds non-existent directories # Automake's `aclocal' bails out if it finds non-existent directories
# in its path. !!! We should fix aclocal instead. # in its path. !!! This has been fixed in the stdenv branch.
if [ -d "$i/share/aclocal" ] if [ -d "$i/share/aclocal" ]; then
then
export ACLOCAL_PATH="$i/share/aclocal:$ACLOCAL_PATH" export ACLOCAL_PATH="$i/share/aclocal:$ACLOCAL_PATH"
fi fi
export PERL5LIB="$i/lib/site_perl:$PERL5LIB" export PERL5LIB="$i/lib/site_perl:$PERL5LIB"
# GStreamer. # GStreamer.

View File

@ -1,5 +1,6 @@
{ config, pkgs, upstartJobs, systemPath, wrapperDir { config, pkgs, upstartJobs, systemPath, wrapperDir
, defaultShell, extraEtc, nixEnvVars, modulesTree, nssModulesPath, binsh , defaultShell, extraEtc, nixEnvVars, modulesTree, nssModulesPath, binsh
, kdePackages
}: }:
let let
@ -19,7 +20,7 @@ let
pamConsolePerms = ./security/console.perms; pamConsolePerms = ./security/console.perms;
in in
@ -108,6 +109,11 @@ import ../helpers/make-etc.nix {
timeZone = config.time.timeZone; timeZone = config.time.timeZone;
defaultLocale = config.i18n.defaultLocale; defaultLocale = config.i18n.defaultLocale;
inherit nixEnvVars; inherit nixEnvVars;
# !!! in the modular NixOS these should be declared by the KDE
# component.
kdeDirs = pkgs.lib.concatStringsSep ":" kdePackages;
xdgConfigDirs = pkgs.lib.makeSearchPath "etc/xdg" kdePackages;
xdgDataDirs = pkgs.lib.makeSearchPath "share" kdePackages;
}; };
target = "bashrc"; target = "bashrc";
} }

View File

@ -117,14 +117,15 @@ rec {
# The services (Upstart) configuration for the system. # The services (Upstart) configuration for the system.
upstartJobs = import ../upstart-jobs/default.nix { upstartJobs = import ../upstart-jobs/default.nix {
inherit config pkgs nix modprobe nssModulesPath nixEnvVars inherit config pkgs nix modprobe nssModulesPath nixEnvVars
optionDeclarations kernelPackages mount; optionDeclarations kernelPackages mount kdePackages;
}; };
# The static parts of /etc. # The static parts of /etc.
etc = import ../etc/default.nix { etc = import ../etc/default.nix {
inherit config pkgs upstartJobs systemPath wrapperDir inherit config pkgs upstartJobs systemPath wrapperDir
defaultShell nixEnvVars modulesTree nssModulesPath binsh; defaultShell nixEnvVars modulesTree nssModulesPath binsh
kdePackages;
extraEtc = extraEtc =
(pkgs.lib.concatLists (map (job: job.extraEtc) upstartJobs.jobs)) (pkgs.lib.concatLists (map (job: job.extraEtc) upstartJobs.jobs))
++ config.environment.etc; ++ config.environment.etc;
@ -262,18 +263,26 @@ rec {
inherit (config.environment) pathsToLink; inherit (config.environment) pathsToLink;
ignoreCollisions = true; ignoreCollisions = true;
postBuild =
if config.services.xserver.sessionType == "kde4" then
# Rebuild the MIME database. Otherwise KDE won't be able to
# find many MIME types.
''
${pkgs.shared_mime_info}/bin/update-mime-database $out/share/mime
''
else "";
}; };
# The list of packages that need to appear in KDEDIRS,
# XDG_CONFIG_DIRS and XDG_DATA_DIRS.
# !!! This should be defined somewhere else.
kdePackages =
pkgs.lib.optionals (config.services.xserver.sessionType == "kde4")
[ pkgs.kde42.kdelibs
pkgs.kde42.kdebase
pkgs.kde42.kdebase_runtime
pkgs.kde42.kdebase_workspace
pkgs.shared_mime_info
]
++ pkgs.lib.optionals (config.services.xserver.sessionType == "kde")
[ pkgs.kdebase
pkgs.kdelibs
];
usersGroups = import ./users-groups.nix { inherit pkgs config upstartJobs defaultShell; }; usersGroups = import ./users-groups.nix { inherit pkgs config upstartJobs defaultShell; };

View File

@ -1,4 +1,6 @@
{config, pkgs, nix, modprobe, nssModulesPath, nixEnvVars, optionDeclarations, kernelPackages, mount}: { config, pkgs, nix, modprobe, nssModulesPath, nixEnvVars, optionDeclarations
, kernelPackages, mount, kdePackages
}:
let let
@ -230,7 +232,7 @@ let
# X server. # X server.
++ optional config.services.xserver.enable ++ optional config.services.xserver.enable
(import ../upstart-jobs/xserver.nix { (import ../upstart-jobs/xserver.nix {
inherit config pkgs kernelPackages; inherit config pkgs kernelPackages kdePackages;
fontDirectories = import ../system/fonts.nix {inherit pkgs config;}; fontDirectories = import ../system/fonts.nix {inherit pkgs config;};
}) })

View File

@ -1,4 +1,4 @@
{ config, pkgs, kernelPackages { config, pkgs, kernelPackages, kdePackages
, # List of font directories. , # List of font directories.
fontDirectories fontDirectories
@ -7,6 +7,7 @@
let let
inherit (pkgs.lib) optional isInList getAttr; inherit (pkgs.lib) optional isInList getAttr;
# Abbreviations. # Abbreviations.
cfg = config.services.xserver; cfg = config.services.xserver;
xorg = cfg.package; xorg = cfg.package;
@ -15,14 +16,14 @@ let
knownVideoDrivers = { knownVideoDrivers = {
nvidia = { modulesFirst = [ kernelPackages.nvidia_x11 ]; }; #make sure it first loads the nvidia libs nvidia = { modulesFirst = [ kernelPackages.nvidia_x11 ]; }; #make sure it first loads the nvidia libs
vesa = { modules = [xorg.xf86videovesa]; }; vesa = { modules = [xorg.xf86videovesa]; };
vga = { modules = [xorg.xf86videovga]; }; vga = { modules = [xorg.xf86videovga]; };
sis = { modules = [xorg.xf86videosis]; }; sis = { modules = [xorg.xf86videosis]; };
i810 = { modules = [xorg.xf86videoi810]; }; i810 = { modules = [xorg.xf86videoi810]; };
intel = { modules = [xorg.xf86videointel]; }; intel = { modules = [xorg.xf86videointel]; };
nv = { modules = [xorg.xf86videonv]; }; nv = { modules = [xorg.xf86videonv]; };
ati = { modules = [xorg.xf86videoati]; }; ati = { modules = [xorg.xf86videoati]; };
via = { modules = [xorg.xf86videovia]; }; via = { modules = [xorg.xf86videovia]; };
cirrus = { modules = [xorg.xf86videocirrus]; }; cirrus = { modules = [xorg.xf86videocirrus]; };
}; };
@ -289,9 +290,6 @@ let
${if sessionType == "kde" then '' ${if sessionType == "kde" then ''
# Start KDE. # Start KDE.
export KDEDIRS=$HOME/.nix-profile:/nix/var/nix/profiles/default:${pkgs.kdebase}:${pkgs.kdelibs}
export XDG_CONFIG_DIRS=${pkgs.kdebase}/etc/xdg:${pkgs.kdelibs}/etc/xdg
export XDG_DATA_DIRS=${pkgs.kdebase}/share
exec ${pkgs.kdebase}/bin/startkde exec ${pkgs.kdebase}/bin/startkde
'' else if sessionType == "kde4" then '' '' else if sessionType == "kde4" then ''
@ -384,24 +382,17 @@ rec {
gnome.gconfeditor gnome.gconfeditor
] ]
++ optional (sessionType == "kde") [ ++ optional (sessionType == "kde") [
pkgs.kdelibs
pkgs.kdebase
xorg.xset # used by startkde, non-essential xorg.xset # used by startkde, non-essential
] ]
++ optional (sessionType == "kde4") [ ++ optional (sessionType == "kde4") [
xorg.xmessage # so that startkde can show error messages xorg.xmessage # so that startkde can show error messages
pkgs.qt4 # needed for qdbus pkgs.qt4 # needed for qdbus
pkgs.kde42.kdelibs
pkgs.kde42.kdebase
pkgs.kde42.kdebase_runtime
pkgs.kde42.kdebase_workspace
pkgs.kde42.kdegames
pkgs.shared_mime_info
xorg.xset # used by startkde, non-essential xorg.xset # used by startkde, non-essential
] ]
++ optional (videoDriver == "nvidia") [ ++ optional (videoDriver == "nvidia") [
kernelPackages.nvidia_x11 kernelPackages.nvidia_x11
]; ]
++ kdePackages;
extraEtc = extraEtc =