* 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 INFOPATH=/var/run/current-system/sw/info:/var/run/current-system/sw/share/info
export LOCATE_PATH=/var/cache/locatedb
export KDEDIRS=/var/run/current-system/sw
export XDG_CONFIG_DIRS=/var/run/current-system/sw/etc/xdg
export XDG_DATA_DIRS=/var/run/current-system/sw/share
export KDEDIRS=@kdeDirs@
export XDG_CONFIG_DIRS=@xdgConfigDirs@
export XDG_DATA_DIRS=@xdgDataDirs@
# 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"
# Automake's `aclocal' bails out if it finds non-existent directories
# in its path. !!! We should fix aclocal instead.
if [ -d "$i/share/aclocal" ]
then
# in its path. !!! This has been fixed in the stdenv branch.
if [ -d "$i/share/aclocal" ]; then
export ACLOCAL_PATH="$i/share/aclocal:$ACLOCAL_PATH"
fi
export PERL5LIB="$i/lib/site_perl:$PERL5LIB"
# GStreamer.

View File

@ -1,5 +1,6 @@
{ config, pkgs, upstartJobs, systemPath, wrapperDir
, defaultShell, extraEtc, nixEnvVars, modulesTree, nssModulesPath, binsh
, kdePackages
}:
let
@ -19,7 +20,7 @@ let
pamConsolePerms = ./security/console.perms;
in
@ -108,6 +109,11 @@ import ../helpers/make-etc.nix {
timeZone = config.time.timeZone;
defaultLocale = config.i18n.defaultLocale;
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";
}

View File

@ -117,14 +117,15 @@ rec {
# The services (Upstart) configuration for the system.
upstartJobs = import ../upstart-jobs/default.nix {
inherit config pkgs nix modprobe nssModulesPath nixEnvVars
optionDeclarations kernelPackages mount;
optionDeclarations kernelPackages mount kdePackages;
};
# The static parts of /etc.
etc = import ../etc/default.nix {
inherit config pkgs upstartJobs systemPath wrapperDir
defaultShell nixEnvVars modulesTree nssModulesPath binsh;
defaultShell nixEnvVars modulesTree nssModulesPath binsh
kdePackages;
extraEtc =
(pkgs.lib.concatLists (map (job: job.extraEtc) upstartJobs.jobs))
++ config.environment.etc;
@ -262,18 +263,26 @@ rec {
inherit (config.environment) pathsToLink;
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; };

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
@ -230,7 +232,7 @@ let
# X server.
++ optional config.services.xserver.enable
(import ../upstart-jobs/xserver.nix {
inherit config pkgs kernelPackages;
inherit config pkgs kernelPackages kdePackages;
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.
fontDirectories
@ -7,6 +7,7 @@
let
inherit (pkgs.lib) optional isInList getAttr;
# Abbreviations.
cfg = config.services.xserver;
xorg = cfg.package;
@ -15,14 +16,14 @@ let
knownVideoDrivers = {
nvidia = { modulesFirst = [ kernelPackages.nvidia_x11 ]; }; #make sure it first loads the nvidia libs
vesa = { modules = [xorg.xf86videovesa]; };
vga = { modules = [xorg.xf86videovga]; };
sis = { modules = [xorg.xf86videosis]; };
i810 = { modules = [xorg.xf86videoi810]; };
intel = { modules = [xorg.xf86videointel]; };
nv = { modules = [xorg.xf86videonv]; };
ati = { modules = [xorg.xf86videoati]; };
via = { modules = [xorg.xf86videovia]; };
vesa = { modules = [xorg.xf86videovesa]; };
vga = { modules = [xorg.xf86videovga]; };
sis = { modules = [xorg.xf86videosis]; };
i810 = { modules = [xorg.xf86videoi810]; };
intel = { modules = [xorg.xf86videointel]; };
nv = { modules = [xorg.xf86videonv]; };
ati = { modules = [xorg.xf86videoati]; };
via = { modules = [xorg.xf86videovia]; };
cirrus = { modules = [xorg.xf86videocirrus]; };
};
@ -289,9 +290,6 @@ let
${if sessionType == "kde" then ''
# 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
'' else if sessionType == "kde4" then ''
@ -384,24 +382,17 @@ rec {
gnome.gconfeditor
]
++ optional (sessionType == "kde") [
pkgs.kdelibs
pkgs.kdebase
xorg.xset # used by startkde, non-essential
]
++ optional (sessionType == "kde4") [
xorg.xmessage # so that startkde can show error messages
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
]
++ optional (videoDriver == "nvidia") [
kernelPackages.nvidia_x11
];
]
++ kdePackages;
extraEtc =