forked from mirrors/nixpkgs
ab80a34ea4
/proc/sys/kernel/fbcondecor is now suddenly named /proc/sys/fbcondecor. Might be a bug. svn path=/nixos/trunk/; revision=12784
61 lines
1.8 KiB
Nix
61 lines
1.8 KiB
Nix
{stdenv, splashutils, backgrounds}:
|
|
|
|
rec {
|
|
name = "tty-backgrounds";
|
|
|
|
unpackTheme = theme: import ../helpers/unpack-theme.nix {
|
|
inherit stdenv theme;
|
|
};
|
|
|
|
themesUnpacked = stdenv.mkDerivation {
|
|
name = "splash-themes";
|
|
builder = ./tty-backgrounds-combine.sh;
|
|
# !!! Should use XML here.
|
|
ttys = map (x: x.tty) backgrounds;
|
|
themes = map (x: if x ? theme then (unpackTheme x.theme) else "default") backgrounds;
|
|
};
|
|
|
|
extraEtc = [
|
|
{ source = themesUnpacked;
|
|
target = "splash";
|
|
}
|
|
];
|
|
|
|
job = ''
|
|
start on udev
|
|
|
|
start script
|
|
|
|
# Critical: tell the kernel where to find splash_helper. It calls
|
|
# this program every time we switch between consoles.
|
|
helperProcFile=${splashutils.helperProcFile}
|
|
if test -e /proc/sys/fbcondecor; then helperProcFile=/proc/sys/fbcondecor; fi
|
|
echo ${splashutils}/${splashutils.helperName} > $helperProcFile
|
|
|
|
# For each console...
|
|
for tty in ${toString (map (x: x.tty) backgrounds)}; do
|
|
# Make sure that the console exists.
|
|
echo -n "" > /dev/tty$tty
|
|
|
|
# Set the theme as determined by tty-backgrounds-combine.sh
|
|
# above.
|
|
theme=$(readlink ${themesUnpacked}/$tty)
|
|
${splashutils}/${splashutils.controlName} --tty $tty -c setcfg -t $theme || true
|
|
${splashutils}/${splashutils.controlName} --tty $tty -c setpic -t $theme || true
|
|
${splashutils}/${splashutils.controlName} --tty $tty -c on || true
|
|
done
|
|
|
|
end script
|
|
|
|
respawn sleep 10000 # !!! Hack
|
|
|
|
stop script
|
|
# Disable the theme on each console.
|
|
for tty in ${toString (map (x: x.tty) backgrounds)}; do
|
|
${splashutils}/${splashutils.controlName} --tty $tty -c off || true
|
|
done
|
|
end script
|
|
'';
|
|
|
|
}
|