core/pkgs/build-support/make-startupitem/default.nix
2024-06-30 09:12:46 +01:00

37 lines
1.1 KiB
Nix

# given a package with a $name.desktop file, makes a copy
# as autostart item.
{ stdenv, lib }:
{
name, # name of the desktop file (without .desktop)
package, # package where the desktop file resides in
srcPrefix ? "", # additional prefix that the desktop file may have in the 'package'
after ? null,
condition ? null,
phase ? "2",
}:
# the builder requires that
# $package/share/applications/$name.desktop
# exists as file.
stdenv.mkDerivation {
name = "autostart-${name}";
priority = 5;
buildCommand = ''
mkdir -p $out/etc/xdg/autostart
target=${name}.desktop
cp ${package}/share/applications/${srcPrefix}${name}.desktop $target
chmod +rw $target
echo "X-KDE-autostart-phase=${phase}" >> $target
${lib.optionalString (after != null) ''echo "${after}" >> $target''}
${lib.optionalString (condition != null) ''echo "${condition}" >> $target''}
cp $target $out/etc/xdg/autostart
'';
# this will automatically put 'package' in the environment when you
# put its startup item in there.
propagatedBuildInputs = [ package ];
}