@ -1,20 +1,33 @@
{ stdenv , fetchurl , fetchcvs , makeWrapper , makeDesktopItem , jdk , jre , ant
{ lib , stdenv , fetchurl , fetchcvs , makeWrapper , makeDesktopItem , jdk , jre , ant
, gtk3 , gsettings_desktop_schemas , p7zip } :
let
getDesktopFileName = drvName : ( builtins . parseDrvName drvName ) . name ;
# TODO: Should we move this to `lib`? Seems like its would be useful in many cases.
extensionOf = filePath :
lib . concatStringsSep " . " ( lib . tail ( lib . splitString " . "
( builtins . baseNameOf filePath ) ) ) ;
installIcons = iconName : icons : lib . concatStringsSep " \n " ( lib . mapAttrsToList ( size : iconFile : ''
mkdir - p " $ o u t / s h a r e / i c o n s / h i c o l o r / ${ size } / a p p s "
ln - s - T " ${ iconFile } " " $ o u t / s h a r e / i c o n s / h i c o l o r / ${ size } / a p p s / ${ iconName } . ${ extensionOf iconFile } "
'' ) i c o n s ) ;
mkSweetHome3D =
{ name , module , version , src , license , description , icon }:
{ name , module , version , src , license , description , desktopName , icons }:
stdenv . mkDerivation rec {
inherit name version src description icon ;
inherit name version src description ;
exec = stdenv . lib . toLower module ;
sweethome3dItem = makeDesktopItem {
inherit name exec icon ;
inherit exec desktopName ;
name = getDesktopFileName name ;
icon = getDesktopFileName name ;
comment = description ;
desktopName = name ;
genericName = " C o m p u t e r A i d e d ( I n t e r i o r ) D e s i g n " ;
categories = " A p p l i c a t i o n ; C A D ; " ;
categories = " A p p l i c a t i o n ; G r a p h i c s ; 2 D G r a p h i c s ; 3 D G r a p h i c s ; " ;
} ;
buildInputs = [ ant jdk jre makeWrapper p7zip gtk3 gsettings_desktop_schemas ] ;
@ -29,7 +42,11 @@ let
installPhase = ''
mkdir - p $ out/bin
cp install / $ { module } - $ { version } . jar $ out/share/java/.
$ { installIcons ( getDesktopFileName name ) icons }
cp " ${ sweethome3dItem } / s h a r e / a p p l i c a t i o n s / " * $ out/share/applications
makeWrapper $ { jre } /bin/java $ out/bin / $ exec \
- - prefix XDG_DATA_DIRS : " $ X D G _ I C O N _ D I R S : ${ gtk3 } / s h a r e : ${ gsettings_desktop_schemas } / s h a r e : $ o u t / s h a r e : $ G S E T T I N G S _ S C H E M A S _ P A T H " \
- - add-flags " - j a r $ o u t / s h a r e / j a v a / ${ module } - ${ version } . j a r - c p $ o u t / s h a r e / j a v a / F u r n i t u r e . j a r : $ o u t / s h a r e / j a v a / T e x t u r e s . j a r : $ o u t / s h a r e / j a v a / H e l p . j a r ${ if stdenv . system == " x 8 6 _ 6 4 - l i n u x " then " - d 6 4 " else " - d 3 2 " } "
@ -62,9 +79,16 @@ in rec {
module = module ;
tag = " V _ " + d2u version ;
} ;
icon = fetchurl {
url = " h t t p : / / s w e e t h o m e 3 d . c v s . s o u r c e f o r g e . n e t / v i e w v c / s w e e t h o m e 3 d / S w e e t H o m e 3 D / s r c / c o m / e t e k s / s w e e t h o m e 3 d / v i e w c o n t r o l l e r / r e s o u r c e s / h e l p / i m a g e s / s w e e t h o m e 3 d . p n g " ;
sha256 = " 0 l n v 2 s z 2 d 3 m 8 j x 2 5 h z 9 2 g z a r d f 0 i b l y k h y 5 q 0 q 2 c y b 7 m w 2 q b 2 p 9 2 " ;
desktopName = " S w e e t H o m e 3 D " ;
icons = {
" 3 2 x 3 2 " = fetchurl {
url = " h t t p : / / s w e e t h o m e 3 d . c v s . s o u r c e f o r g e . n e t / v i e w v c / s w e e t h o m e 3 d / S w e e t H o m e 3 D / d e p l o y / S w e e t H o m e 3 D I c o n 3 2 x 3 2 . p n g " ;
sha256 = " 1 r 2 f h f g 2 7 m x 0 0 n f v 0 q j 6 6 r h f 7 1 9 s 2 g 1 v h d i s 7 b d c 9 m q k 9 x 0 m b 0 i r " ;
} ;
" 4 8 x 4 8 " = fetchurl {
url = " h t t p : / / s w e e t h o m e 3 d . c v s . s o u r c e f o r g e . n e t / v i e w v c / s w e e t h o m e 3 d / S w e e t H o m e 3 D / d e p l o y / S w e e t H o m e 3 D I c o n 4 8 x 4 8 . p n g " ;
sha256 = " 1 a p 6 d 7 5 d y q q v x 2 1 w d d v n 8 v w 2 a p q 3 v 8 0 3 v m b x d r i w d 0 d w 9 r q 3 z n 4 g " ;
} ;
} ;
} ;