Merge pull request #105151 from B4dM4n/copy-desktop-hook
copyDesktopItems: add new setup-hook
This commit is contained in:
commit
db29c15173
@ -1,6 +1,7 @@
|
|||||||
{ stdenv
|
{ stdenv
|
||||||
, fetchurl
|
, fetchurl
|
||||||
, unzip
|
, unzip
|
||||||
|
, copyDesktopItems
|
||||||
, makeDesktopItem
|
, makeDesktopItem
|
||||||
, imagemagick
|
, imagemagick
|
||||||
, SDL
|
, SDL
|
||||||
@ -37,7 +38,7 @@ in stdenv.mkDerivation rec {
|
|||||||
};
|
};
|
||||||
sourceRoot = (if isStereo then "gt2stereo/trunk" else "goattrk2") + "/src";
|
sourceRoot = (if isStereo then "gt2stereo/trunk" else "goattrk2") + "/src";
|
||||||
|
|
||||||
nativeBuildInputs = [ unzip imagemagick ];
|
nativeBuildInputs = [ copyDesktopItems unzip imagemagick ];
|
||||||
buildInputs = [ SDL ];
|
buildInputs = [ SDL ];
|
||||||
|
|
||||||
# PREFIX gets treated as BINDIR.
|
# PREFIX gets treated as BINDIR.
|
||||||
@ -51,11 +52,16 @@ in stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
# Other files get installed during the build phase.
|
# Other files get installed during the build phase.
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
convert goattrk2.bmp goattracker.png
|
convert goattrk2.bmp goattracker.png
|
||||||
install -Dm644 goattracker.png $out/share/icons/hicolor/32x32/apps/goattracker.png
|
install -Dm644 goattracker.png $out/share/icons/hicolor/32x32/apps/goattracker.png
|
||||||
${desktopItem.buildCommand}
|
|
||||||
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
desktopItems = [ desktopItem ];
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "A crossplatform music editor for creating Commodore 64 music. Uses reSID library by Dag Lem and supports alternatively HardSID & CatWeasel devices"
|
description = "A crossplatform music editor for creating Commodore 64 music. Uses reSID library by Dag Lem and supports alternatively HardSID & CatWeasel devices"
|
||||||
+ optionalString isStereo " - Stereo version";
|
+ optionalString isStereo " - Stereo version";
|
||||||
@ -66,4 +72,3 @@ in stdenv.mkDerivation rec {
|
|||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
, bzip2
|
, bzip2
|
||||||
, cargo
|
, cargo
|
||||||
, common-updater-scripts
|
, common-updater-scripts
|
||||||
|
, copyDesktopItems
|
||||||
, coreutils
|
, coreutils
|
||||||
, curl
|
, curl
|
||||||
, dbus
|
, dbus
|
||||||
@ -83,6 +84,7 @@ stdenv.mkDerivation rec {
|
|||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoconf213
|
autoconf213
|
||||||
cargo
|
cargo
|
||||||
|
copyDesktopItems
|
||||||
gnused
|
gnused
|
||||||
llvmPackages.llvm
|
llvmPackages.llvm
|
||||||
m4
|
m4
|
||||||
@ -262,8 +264,8 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
postInstall = let
|
desktopItems = [
|
||||||
desktopItem = makeDesktopItem {
|
(makeDesktopItem {
|
||||||
categories = lib.concatStringsSep ";" [ "Application" "Network" ];
|
categories = lib.concatStringsSep ";" [ "Application" "Network" ];
|
||||||
desktopName = "Thunderbird";
|
desktopName = "Thunderbird";
|
||||||
genericName = "Mail Reader";
|
genericName = "Mail Reader";
|
||||||
@ -283,12 +285,11 @@ stdenv.mkDerivation rec {
|
|||||||
"x-scheme-handler/snews"
|
"x-scheme-handler/snews"
|
||||||
"x-scheme-handler/nntp"
|
"x-scheme-handler/nntp"
|
||||||
];
|
];
|
||||||
};
|
})
|
||||||
in ''
|
];
|
||||||
|
postInstall = ''
|
||||||
# TODO: Move to a dev output?
|
# TODO: Move to a dev output?
|
||||||
rm -rf $out/include $out/lib/thunderbird-devel-* $out/share/idl
|
rm -rf $out/include $out/lib/thunderbird-devel-* $out/share/idl
|
||||||
|
|
||||||
${desktopItem.buildCommand}
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preFixup = ''
|
preFixup = ''
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
, bzip2
|
, bzip2
|
||||||
, cargo
|
, cargo
|
||||||
, common-updater-scripts
|
, common-updater-scripts
|
||||||
|
, copyDesktopItems
|
||||||
, coreutils
|
, coreutils
|
||||||
, curl
|
, curl
|
||||||
, dbus
|
, dbus
|
||||||
@ -82,6 +83,7 @@ stdenv.mkDerivation rec {
|
|||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoconf213
|
autoconf213
|
||||||
cargo
|
cargo
|
||||||
|
copyDesktopItems
|
||||||
gnused
|
gnused
|
||||||
llvmPackages.llvm
|
llvmPackages.llvm
|
||||||
m4
|
m4
|
||||||
@ -257,8 +259,8 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
postInstall = let
|
desktopItems = [
|
||||||
desktopItem = makeDesktopItem {
|
(makeDesktopItem {
|
||||||
categories = lib.concatStringsSep ";" [ "Application" "Network" ];
|
categories = lib.concatStringsSep ";" [ "Application" "Network" ];
|
||||||
desktopName = "Thunderbird";
|
desktopName = "Thunderbird";
|
||||||
genericName = "Mail Reader";
|
genericName = "Mail Reader";
|
||||||
@ -278,12 +280,12 @@ stdenv.mkDerivation rec {
|
|||||||
"x-scheme-handler/snews"
|
"x-scheme-handler/snews"
|
||||||
"x-scheme-handler/nntp"
|
"x-scheme-handler/nntp"
|
||||||
];
|
];
|
||||||
};
|
})
|
||||||
in ''
|
];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
# TODO: Move to a dev output?
|
# TODO: Move to a dev output?
|
||||||
rm -rf $out/include $out/lib/thunderbird-devel-* $out/share/idl
|
rm -rf $out/include $out/lib/thunderbird-devel-* $out/share/idl
|
||||||
|
|
||||||
${desktopItem.buildCommand}
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preFixup = ''
|
preFixup = ''
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchurl, autoPatchelfHook, makeDesktopItem, makeWrapper
|
{ stdenv, fetchurl, autoPatchelfHook, makeDesktopItem, makeWrapper, copyDesktopItems
|
||||||
|
|
||||||
# Dynamic Libraries
|
# Dynamic Libraries
|
||||||
, curl, libGL, libX11, libXext, libXmu, libXrandr, libXrender
|
, curl, libGL, libX11, libXext, libXmu, libXrandr, libXrender
|
||||||
@ -27,6 +27,7 @@ in stdenv.mkDerivation {
|
|||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoPatchelfHook
|
autoPatchelfHook
|
||||||
|
copyDesktopItems
|
||||||
makeWrapper
|
makeWrapper
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -110,17 +111,14 @@ in stdenv.mkDerivation {
|
|||||||
# remove broken symbolic links
|
# remove broken symbolic links
|
||||||
find $out -xtype l -ls -exec rm {} \;
|
find $out -xtype l -ls -exec rm {} \;
|
||||||
|
|
||||||
# Add desktop items
|
|
||||||
${desktopItems.planmaker.buildCommand}
|
|
||||||
${desktopItems.presentations.buildCommand}
|
|
||||||
${desktopItems.textmaker.buildCommand}
|
|
||||||
|
|
||||||
# Add mime types
|
# Add mime types
|
||||||
install -D -t $out/share/mime/packages ${pname}/mime/softmaker-*office*${shortEdition}.xml
|
install -D -t $out/share/mime/packages ${pname}/mime/softmaker-*office*${shortEdition}.xml
|
||||||
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
desktopItems = builtins.attrValues desktopItems;
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "An office suite with a word processor, spreadsheet and presentation program";
|
description = "An office suite with a word processor, spreadsheet and presentation program";
|
||||||
homepage = "https://www.softmaker.com/";
|
homepage = "https://www.softmaker.com/";
|
||||||
|
42
pkgs/build-support/setup-hooks/copy-desktop-items.sh
Normal file
42
pkgs/build-support/setup-hooks/copy-desktop-items.sh
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
|
# Setup hook that installs specified desktop items.
|
||||||
|
#
|
||||||
|
# Example usage in a derivation:
|
||||||
|
#
|
||||||
|
# { …, makeDesktopItem, copyDesktopItems, … }:
|
||||||
|
#
|
||||||
|
# let desktopItem = makeDesktopItem { … }; in
|
||||||
|
# stdenv.mkDerivation {
|
||||||
|
# …
|
||||||
|
# nativeBuildInputs = [ copyDesktopItems ];
|
||||||
|
#
|
||||||
|
# desktopItems = [ desktopItem ];
|
||||||
|
# …
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# This hook will copy files which are either given by full path
|
||||||
|
# or all '*.desktop' files placed inside the 'share/applications'
|
||||||
|
# folder of each `desktopItems` argument.
|
||||||
|
|
||||||
|
postInstallHooks+=(copyDesktopItems)
|
||||||
|
|
||||||
|
copyDesktopItems() {
|
||||||
|
if [ "${dontCopyDesktopItems-}" = 1 ]; then return; fi
|
||||||
|
|
||||||
|
if [ -z "$desktopItems" ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
for desktopItem in $desktopItems; do
|
||||||
|
if [[ -f "$desktopItem" ]]; then
|
||||||
|
echo "Copying '$f' into '$out/share/applications'"
|
||||||
|
install -D -m 444 -t "$out"/share/applications "$f"
|
||||||
|
else
|
||||||
|
for f in "$desktopItem"/share/applications/*.desktop; do
|
||||||
|
echo "Copying '$f' into '$out/share/applications'"
|
||||||
|
install -D -m 444 -t "$out"/share/applications "$f"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
{ stdenv
|
{ stdenv
|
||||||
, fetchurl
|
, fetchurl
|
||||||
, nixosTests
|
, nixosTests
|
||||||
|
, copyDesktopItems
|
||||||
, makeDesktopItem
|
, makeDesktopItem
|
||||||
, makeWrapper
|
, makeWrapper
|
||||||
, wrapGAppsHook
|
, wrapGAppsHook
|
||||||
@ -38,7 +39,6 @@ let
|
|||||||
comment = "Official launcher for Minecraft, a sandbox-building game";
|
comment = "Official launcher for Minecraft, a sandbox-building game";
|
||||||
desktopName = "Minecraft Launcher";
|
desktopName = "Minecraft Launcher";
|
||||||
categories = "Game;";
|
categories = "Game;";
|
||||||
fileValidation = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
envLibPath = stdenv.lib.makeLibraryPath [
|
envLibPath = stdenv.lib.makeLibraryPath [
|
||||||
@ -100,7 +100,7 @@ stdenv.mkDerivation rec {
|
|||||||
sha256 = "0w8z21ml79kblv20wh5lz037g130pxkgs8ll9s3bi94zn2pbrhim";
|
sha256 = "0w8z21ml79kblv20wh5lz037g130pxkgs8ll9s3bi94zn2pbrhim";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
|
nativeBuildInputs = [ makeWrapper wrapGAppsHook copyDesktopItems ];
|
||||||
buildInputs = [ gobject-introspection ];
|
buildInputs = [ gobject-introspection ];
|
||||||
|
|
||||||
sourceRoot = ".";
|
sourceRoot = ".";
|
||||||
@ -110,11 +110,14 @@ stdenv.mkDerivation rec {
|
|||||||
dontBuild = true;
|
dontBuild = true;
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
mkdir -p $out/opt
|
mkdir -p $out/opt
|
||||||
mv minecraft-launcher $out/opt
|
mv minecraft-launcher $out/opt
|
||||||
|
|
||||||
${desktopItem.buildCommand}
|
|
||||||
install -D $icon $out/share/icons/hicolor/symbolic/apps/minecraft-launcher.svg
|
install -D $icon $out/share/icons/hicolor/symbolic/apps/minecraft-launcher.svg
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preFixup = ''
|
preFixup = ''
|
||||||
@ -140,6 +143,8 @@ stdenv.mkDerivation rec {
|
|||||||
"''${gappsWrapperArgs[@]}"
|
"''${gappsWrapperArgs[@]}"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
desktopItems = [ desktopItem ];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Official launcher for Minecraft, a sandbox-building game";
|
description = "Official launcher for Minecraft, a sandbox-building game";
|
||||||
homepage = "https://minecraft.net";
|
homepage = "https://minecraft.net";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{ lib, stdenv, fetchurl, fetchzip, makeWrapper, runCommandNoCC, makeDesktopItem
|
{ lib, stdenv, fetchurl, fetchzip, makeWrapper, runCommandNoCC, makeDesktopItem
|
||||||
, xonotic-data
|
, xonotic-data, copyDesktopItems
|
||||||
, # required for both
|
, # required for both
|
||||||
unzip, libjpeg, zlib, libvorbis, curl
|
unzip, libjpeg, zlib, libvorbis, curl
|
||||||
, # glx
|
, # glx
|
||||||
@ -131,7 +131,8 @@ in rec {
|
|||||||
|
|
||||||
xonotic = runCommandNoCC "xonotic${variant}-${version}" {
|
xonotic = runCommandNoCC "xonotic${variant}-${version}" {
|
||||||
inherit xonotic-unwrapped;
|
inherit xonotic-unwrapped;
|
||||||
buildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper copyDesktopItems ];
|
||||||
|
desktopItems = [ desktopItem ];
|
||||||
passthru = {
|
passthru = {
|
||||||
inherit version;
|
inherit version;
|
||||||
meta = meta // {
|
meta = meta // {
|
||||||
@ -151,7 +152,7 @@ in rec {
|
|||||||
'' + lib.optionalString (withSDL || withGLX) ''
|
'' + lib.optionalString (withSDL || withGLX) ''
|
||||||
mkdir -p $out/share
|
mkdir -p $out/share
|
||||||
ln -s ${xonotic-unwrapped}/share/icons $out/share/icons
|
ln -s ${xonotic-unwrapped}/share/icons $out/share/icons
|
||||||
${desktopItem.buildCommand}
|
copyDesktopItems
|
||||||
'' + ''
|
'' + ''
|
||||||
for binary in $out/bin/xonotic-*; do
|
for binary in $out/bin/xonotic-*; do
|
||||||
wrapProgram $binary --add-flags "-basedir ${xonotic-data}"
|
wrapProgram $binary --add-flags "-basedir ${xonotic-data}"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchurl, unzip, jre, makeDesktopItem }:
|
{ stdenv, fetchurl, unzip, jre, makeDesktopItem, copyDesktopItems }:
|
||||||
|
|
||||||
let
|
let
|
||||||
desktopItem = makeDesktopItem {
|
desktopItem = makeDesktopItem {
|
||||||
@ -18,11 +18,12 @@ stdenv.mkDerivation {
|
|||||||
sha256 = "0d5mzkwsbh9s9b1vyvpaawqc09b0q41l2a7pmwf7386b1fsx6d58";
|
sha256 = "0d5mzkwsbh9s9b1vyvpaawqc09b0q41l2a7pmwf7386b1fsx6d58";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ copyDesktopItems ];
|
||||||
buildInputs = [ unzip ];
|
buildInputs = [ unzip ];
|
||||||
inherit jre;
|
inherit jre;
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
source $stdenv/setup
|
runHook preInstall
|
||||||
|
|
||||||
unzip $src
|
unzip $src
|
||||||
|
|
||||||
@ -38,9 +39,11 @@ stdenv.mkDerivation {
|
|||||||
EOF
|
EOF
|
||||||
chmod +x $out/bin/jdiskreport
|
chmod +x $out/bin/jdiskreport
|
||||||
|
|
||||||
${desktopItem.buildCommand}
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
desktopItems = [ desktopItem ];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
homepage = "http://www.jgoodies.com/freeware/jdiskreport/";
|
homepage = "http://www.jgoodies.com/freeware/jdiskreport/";
|
||||||
description = "A graphical utility to visualize disk usage";
|
description = "A graphical utility to visualize disk usage";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchFromGitHub, jre, jdk, gradle_5, makeDesktopItem, perl, writeText, runtimeShell }:
|
{ stdenv, fetchFromGitHub, jre, jdk, gradle_5, makeDesktopItem, copyDesktopItems, perl, writeText, runtimeShell }:
|
||||||
|
|
||||||
let
|
let
|
||||||
pname = "jd-gui";
|
pname = "jd-gui";
|
||||||
@ -55,9 +55,9 @@ let
|
|||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
desktopItem = launcher: makeDesktopItem {
|
desktopItem = makeDesktopItem {
|
||||||
name = "jd-gui";
|
name = "jd-gui";
|
||||||
exec = "${launcher} %F";
|
exec = "jd-gui %F";
|
||||||
icon = "jd-gui";
|
icon = "jd-gui";
|
||||||
comment = "Java Decompiler JD-GUI";
|
comment = "Java Decompiler JD-GUI";
|
||||||
desktopName = "JD-GUI";
|
desktopName = "JD-GUI";
|
||||||
@ -71,7 +71,7 @@ in stdenv.mkDerivation rec {
|
|||||||
inherit pname version src;
|
inherit pname version src;
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
|
|
||||||
nativeBuildInputs = [ jdk gradle_5 ];
|
nativeBuildInputs = [ jdk gradle_5 copyDesktopItems ];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
export GRADLE_USER_HOME=$(mktemp -d)
|
export GRADLE_USER_HOME=$(mktemp -d)
|
||||||
@ -81,6 +81,8 @@ in stdenv.mkDerivation rec {
|
|||||||
installPhase = let
|
installPhase = let
|
||||||
jar = "$out/share/jd-gui/${name}.jar";
|
jar = "$out/share/jd-gui/${name}.jar";
|
||||||
in ''
|
in ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
mkdir -p $out/bin $out/share/{jd-gui,icons/hicolor/128x128/apps}
|
mkdir -p $out/bin $out/share/{jd-gui,icons/hicolor/128x128/apps}
|
||||||
cp build/libs/${name}.jar ${jar}
|
cp build/libs/${name}.jar ${jar}
|
||||||
cp src/linux/resources/jd_icon_128.png $out/share/icons/hicolor/128x128/apps/jd-gui.png
|
cp src/linux/resources/jd_icon_128.png $out/share/icons/hicolor/128x128/apps/jd-gui.png
|
||||||
@ -92,9 +94,11 @@ in stdenv.mkDerivation rec {
|
|||||||
EOF
|
EOF
|
||||||
chmod +x $out/bin/jd-gui
|
chmod +x $out/bin/jd-gui
|
||||||
|
|
||||||
${(desktopItem "$out/bin/jd-gui").buildCommand}
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
desktopItems = [ desktopItem ];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Fast Java Decompiler with powerful GUI";
|
description = "Fast Java Decompiler with powerful GUI";
|
||||||
homepage = "https://java-decompiler.github.io/";
|
homepage = "https://java-decompiler.github.io/";
|
||||||
|
@ -463,6 +463,8 @@ in
|
|||||||
|
|
||||||
madonctl = callPackage ../applications/misc/madonctl { };
|
madonctl = callPackage ../applications/misc/madonctl { };
|
||||||
|
|
||||||
|
copyDesktopItems = makeSetupHook { } ../build-support/setup-hooks/copy-desktop-items.sh;
|
||||||
|
|
||||||
makeDesktopItem = callPackage ../build-support/make-desktopitem { };
|
makeDesktopItem = callPackage ../build-support/make-desktopitem { };
|
||||||
|
|
||||||
makeAutostartItem = callPackage ../build-support/make-startupitem { };
|
makeAutostartItem = callPackage ../build-support/make-startupitem { };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user