anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / build-support / make-startupitem / default.nix
blob1cb7096c1cf2bb35e98283fb354fa671c70ed043
1 # given a package with a $name.desktop file, makes a copy
2 # as autostart item.
4 {stdenv, lib}:
5 { name            # name of the desktop file (without .desktop)
6 , package         # package where the desktop file resides in
7 , srcPrefix ? ""  # additional prefix that the desktop file may have in the 'package'
8 , after ? null
9 , condition ? null
10 , phase ? "2"
11 , prependExtraArgs ? []
12 , appendExtraArgs ? []
15 # the builder requires that
16 #   $package/share/applications/$name.desktop
17 # exists as file.
19 stdenv.mkDerivation {
20   name = "autostart-${name}";
21   priority = 5;
23   buildCommand = let
24     escapeArgs = args: lib.escapeRegex (lib.escapeShellArgs args);
25     prependArgs = lib.optionalString (prependExtraArgs != []) "${escapeArgs prependExtraArgs} ";
26     appendArgs = lib.optionalString (appendExtraArgs != []) " ${escapeArgs appendExtraArgs}";
27   in ''
28     mkdir -p $out/etc/xdg/autostart
29     target=${name}.desktop
30     cp ${package}/share/applications/${srcPrefix}${name}.desktop $target
31     ${lib.optionalString (prependExtraArgs != [] || appendExtraArgs != []) ''
32       sed -i -r "s/(Exec=)([^ \n]*) *(.*)/\1\2 ${prependArgs}\3${appendArgs}/" $target
33     ''}
34     chmod +rw $target
35     echo "X-KDE-autostart-phase=${phase}" >> $target
36     ${lib.optionalString (after != null) ''echo "${after}" >> $target''}
37     ${lib.optionalString (condition != null) ''echo "${condition}" >> $target''}
38     cp $target $out/etc/xdg/autostart
39   '';
41   # this will automatically put 'package' in the environment when you
42   # put its startup item in there.
43   propagatedBuildInputs = [ package ];