diff options
Diffstat (limited to 'pkgs/applications/office')
5 files changed, 272 insertions, 0 deletions
diff --git a/pkgs/applications/office/ib/controller/default.nix b/pkgs/applications/office/ib/controller/default.nix new file mode 100644 index 0000000000000..b39617e02db2e --- /dev/null +++ b/pkgs/applications/office/ib/controller/default.nix @@ -0,0 +1,162 @@ +{ stdenv, fetchurl, unzip, jdk, ib-tws, xpra }: + +stdenv.mkDerivation rec { + version = "2.14.0"; + name = "ib-controller-${version}"; + + src = fetchurl { + url = "https://github.com/ib-controller/ib-controller/archive/${version}.tar.gz"; + sha256 = "17a8bcgg9z3b4y38k035hm2lgvhmf8srlz59c7n2q3fdw2i95i68"; + }; + + phases = [ "unpackPhase" "installPhase" ]; + + buildInputs = [ unzip jdk ib-tws ]; + + installPhase = '' + mkdir -p $out $out/bin $out/etc/ib/controller $out/share/IBController + cp resources/*.jar $out/share/IBController/. + cp resources/*.ini $out/etc/ib/controller/. + classpath="" + for jar in ${ib-tws}/share/IBJts/*.jar; do + classpath="$classpath:$jar" + done + for jar in $out/share/IBController/*.jar; do + classpath="$classpath:$jar" + done + # strings to use below; separated to avoid nix specific substitutions + javaOptions={JAVA_OPTIONS:--Xmx1024M} + ibProfileDir={IB_PROFILE_DIR:-~/IB/} + cat<<EOF > $out/bin/ib-tws-c + #!$SHELL + if [[ \$1 == /* ]] || [[ \$1 == ./* ]]; then + IB_USER_PROFILE=\`realpath \$1\` + IB_USER_PROFILE_TITLE=\`basename \$1\` + else + if [[ x\$1 != "x" ]] && [[ \$1 != -* ]]; then + IB_USER_PROFILE=\`realpath \$$ibProfileDir\$1\` + IB_USER_PROFILE_TITLE=\$1 + else + echo "ERROR: \"\$1\" is not a valid name of a profile." + exit 1 + fi + fi + shift + if [ ! -e \$IB_USER_PROFILE ]; then mkdir -p \$IB_USER_PROFILE; fi + if [ ! -d \$IB_USER_PROFILE ]; then echo "ERROR: \$IB_USER_PROFILE must be a directory!" && echo 1; fi + if [ ! -e \$IB_USER_PROFILE/jts.ini ]; then cp ${ib-tws}/etc/ib/tws/jts.ini \$IB_USER_PROFILE/. && chmod +w \$IB_USER_PROFILE/jts.ini; fi + if [ ! -e \$IB_USER_PROFILE/IBController.ini ]; then cp $out/etc/ib/controller/IBController.ini \$IB_USER_PROFILE/. && chmod +w \$IB_USER_PROFILE/IBController.ini; fi + if [[ \$1 == "-q" ]]; then + if [ -f \$IB_USER_PROFILE/xpra/run ]; then + ${xpra}/bin/xpra stop \`cat \$IB_USER_PROFILE/xpra/run\` --socket-dir=\$IB_USER_PROFILE/xpra/ &> /dev/null + fi + exit 0 + fi + if [[ \$1 == "-d" ]] && [ ! -f \$IB_USER_PROFILE/xpra/run ]; then + ( sleep infinity ) & + WAIT_DUMMY_PID=\$! + ( trap "" INT; + DISPLAYNUM=100 + while [ -f /tmp/.X\$DISPLAYNUM-lock ]; do DISPLAYNUM=\$((\$DISPLAYNUM + 1)); done + mkdir -p \$IB_USER_PROFILE/xpra + cd \$IB_USER_PROFILE + nohup ${xpra}/bin/xpra start :\$DISPLAYNUM \ + --socket-dir=\$IB_USER_PROFILE/xpra/ \ + --start-child="echo -n :\$DISPLAYNUM > \$IB_USER_PROFILE/xpra/run \ + && kill \$WAIT_DUMMY_PID &> /dev/null \ + && ${jdk}/bin/java -cp $classpath \$$javaOptions ibcontroller.IBController \$IB_USER_PROFILE/IBController.ini" \ + --exit-with-children \ + --no-pulseaudio \ + --no-mdns \ + --no-notification \ + --no-daemon \ + &> \$IB_USER_PROFILE/xpra/server.log + rm -f \$IB_USER_PROFILE/xpra/run + rm -f /tmp/.X\$DISPLAYNUM-lock + ) & + wait \$WAIT_DUMMY_PID + exit 0 + fi + if [ -f \$IB_USER_PROFILE/xpra/run ]; then + ${xpra}/bin/xpra attach \`cat \$IB_USER_PROFILE/xpra/run\` --socket-dir=\$IB_USER_PROFILE/xpra/ \ + --windows \ + --no-speaker \ + --no-microphone \ + --no-tray \ + --title="\$IB_USER_PROFILE_TITLE: @title@" \ + &> \$IB_USER_PROFILE/xpra/client.log + fi + EOF + chmod u+x $out/bin/ib-tws-c + cat<<EOF > $out/bin/ib-gw-c + #!$SHELL + if [[ \$1 == /* ]] || [[ \$1 == ./* ]]; then + IB_USER_PROFILE=\`realpath \$1\` + IB_USER_PROFILE_TITLE=\`basename \$1\` + else + if [[ x\$1 != "x" ]] && [[ \$1 != -* ]]; then + IB_USER_PROFILE=\`realpath \$$ibProfileDir\$1\` + IB_USER_PROFILE_TITLE=\$1 + else + echo "ERROR: \"\$1\" is not a valid name of a profile." + exit 1 + fi + fi + shift + if [ ! -e \$IB_USER_PROFILE ]; then mkdir -p \$IB_USER_PROFILE; fi + if [ ! -d \$IB_USER_PROFILE ]; then echo "ERROR: \$IB_USER_PROFILE must be a directory!" && echo 1; fi + if [ ! -e \$IB_USER_PROFILE/jts.ini ]; then cp ${ib-tws}/etc/ib/tws/jts.ini \$IB_USER_PROFILE/. && chmod +w \$IB_USER_PROFILE/jts.ini; fi + if [ ! -e \$IB_USER_PROFILE/IBController.ini ]; then cp $out/etc/ib/controller/IBController.ini \$IB_USER_PROFILE/. && chmod +w \$IB_USER_PROFILE/IBController.ini; fi + if [[ \$1 == "-q" ]]; then + if [ -f \$IB_USER_PROFILE/xpra/run ]; then + ${xpra}/bin/xpra stop \`cat \$IB_USER_PROFILE/xpra/run\` --socket-dir=\$IB_USER_PROFILE/xpra/ &> /dev/null + fi + exit 0 + fi + if [[ \$1 == "-d" ]] && [ ! -f \$IB_USER_PROFILE/xpra/run ]; then + ( sleep infinity ) & + WAIT_DUMMY_PID=\$! + ( trap "" INT; + DISPLAYNUM=100 + while [ -f /tmp/.X\$DISPLAYNUM-lock ]; do DISPLAYNUM=\$((\$DISPLAYNUM + 1)); done + mkdir -p \$IB_USER_PROFILE/xpra + cd \$IB_USER_PROFILE + nohup ${xpra}/bin/xpra start :\$DISPLAYNUM \ + --socket-dir=\$IB_USER_PROFILE/xpra/ \ + --start-child="echo -n :\$DISPLAYNUM > \$IB_USER_PROFILE/xpra/run \ + && kill \$WAIT_DUMMY_PID &> /dev/null \ + && ${jdk}/bin/java -cp $classpath \$$javaOptions ibcontroller.IBGatewayController \$IB_USER_PROFILE/IBController.ini" \ + --exit-with-children \ + --no-pulseaudio \ + --no-mdns \ + --no-notification \ + --no-daemon \ + &> \$IB_USER_PROFILE/xpra/server.log + rm -f \$IB_USER_PROFILE/xpra/run + rm -f /tmp/.X\$DISPLAYNUM-lock + ) & + wait \$WAIT_DUMMY_PID + exit 0 + fi + if [ -f \$IB_USER_PROFILE/xpra/run ]; then + ${xpra}/bin/xpra attach \`cat \$IB_USER_PROFILE/xpra/run\` --socket-dir=\$IB_USER_PROFILE/xpra/ \ + --windows \ + --no-speaker \ + --no-microphone \ + --no-tray \ + --title="\$IB_USER_PROFILE_TITLE: @title@" \ + &> \$IB_USER_PROFILE/xpra/client.log + fi + EOF + chmod u+x $out/bin/ib-gw-c + ''; + + + meta = with stdenv.lib; { + description = "Automation Controller for the Trader Work Station of Interactive Brokers"; + homepage = https://github.com/ib-controller/ib-controller; + license = licenses.gpl3; + maintainers = [ maintainers.tstrobel ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/office/ib/tws/default.nix b/pkgs/applications/office/ib/tws/default.nix new file mode 100644 index 0000000000000..b8844391c7d9a --- /dev/null +++ b/pkgs/applications/office/ib/tws/default.nix @@ -0,0 +1,96 @@ +{ stdenv, requireFile, jdk }: + +stdenv.mkDerivation rec { + version = "9542"; + name = "ib-tws-${version}"; + + src = requireFile rec { + name = "ibtws_${version}.jar"; + message = '' + This nix expression requires that ${name} is already part of the store. + Download the TWS from + https://download2.interactivebrokers.com/download/unixmacosx_latest.jar, + rename the file to ${name}, and add it to the nix store with + "nix-prefetch-url file://${name}". + ''; + sha256 = "1a2jiwwnr5g3xfba1a89c257bdbnq4zglri8hz021vk7f6s4rlrf"; + }; + + phases = [ "unpackPhase" "buildPhase" "installPhase" ]; + + buildInputs = [ jdk ]; + + buildPhase = '' + jar -xf IBJts/jts.jar + cp trader/common/images/ibapp_icon.gif ibtws_icon.gif + ''; + + unpackPhase = '' + jar xf ${src} + ''; + + installPhase = '' + mkdir -p $out $out/bin $out/etc/ib/tws $out/share/IBJts $out/share/icons + cp IBJts/*.jar $out/share/IBJts/. + cp IBJts/*.ini $out/etc/ib/tws/. + cp ibtws_icon.gif $out/share/icons/. + classpath="" + for jar in $out/share/IBJts/*.jar; do + classpath="$classpath:$jar" + done + # strings to use below; separated to avoid nix specific substitutions + javaOptions={JAVA_OPTIONS:-'-Xmx1024M -Dawt.useSystemAAFontSettings=lcd -Dsun.java2d.xrender=True -Dsun.java2d.opengl=False'} + # OTHER JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java + ibProfileDir={IB_PROFILE_DIR:-~/IB/} + cat<<EOF > $out/bin/ib-tws + #!$SHELL + if [[ \$1 == /* ]] || [[ \$1 == ./* ]]; then + IB_USER_PROFILE=\`realpath \$1\` + IB_USER_PROFILE_TITLE=\`basename \$1\` + else + if [[ x\$1 != "x" ]] && [[ \$1 != -* ]]; then + IB_USER_PROFILE=\`realpath \$$ibProfileDir\$1\` + IB_USER_PROFILE_TITLE=\$1 + else + echo "ERROR: \"\$1\" is not a valid name of a profile." + exit 1 + fi + fi + shift + if [ ! -e \$IB_USER_PROFILE ]; then mkdir -p \$IB_USER_PROFILE; fi + if [ ! -d \$IB_USER_PROFILE ]; then echo "ERROR: \$IB_USER_PROFILE must be a directory!" && echo 1; fi + if [ ! -e \$IB_USER_PROFILE/jts.ini ]; then cp $out/etc/ib/tws/jts.ini \$IB_USER_PROFILE/. && chmod +w \$IB_USER_PROFILE/jts.ini; fi + ${jdk}/bin/java -cp $classpath \$$javaOptions jclient.LoginFrame \$IB_USER_PROFILE + EOF + chmod u+x $out/bin/ib-tws + cat<<EOF > $out/bin/ib-gw + #!$SHELL + if [[ \$1 == /* ]] || [[ \$1 == ./* ]]; then + IB_USER_PROFILE=\`realpath \$1\` + IB_USER_PROFILE_TITLE=\`basename \$1\` + else + if [[ x\$1 != "x" ]] && [[ \$1 != -* ]]; then + IB_USER_PROFILE=\`realpath \$$ibProfileDir\$1\` + IB_USER_PROFILE_TITLE=\$1 + else + echo "ERROR: \"\$1\" is not a valid name of a profile." + exit 1 + fi + fi + shift + if [ ! -e \$IB_USER_PROFILE ]; then mkdir -p \$IB_USER_PROFILE; fi + if [ ! -d \$IB_USER_PROFILE ]; then echo "ERROR: \$IB_USER_PROFILE must be a directory!" && echo 1; fi + if [ ! -e \$IB_USER_PROFILE/jts.ini ]; then cp $out/etc/ib/tws/jts.ini \$IB_USER_PROFILE/. && chmod +w \$IB_USER_PROFILE/jts.ini; fi + ${jdk}/bin/java -cp $classpath -Dsun.java2d.noddraw=true \$$javaOptions ibgateway.GWClient \$IB_USER_PROFILE + EOF + chmod u+x $out/bin/ib-gw + ''; + + meta = with stdenv.lib; { + description = "Trader Work Station of Interactive Brokers"; + homepage = https://www.interactivebrokers.com; + license = licenses.unfree; + maintainers = [ maintainers.tstrobel ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/office/libreoffice/generate-libreoffice-srcs.sh b/pkgs/applications/office/libreoffice/generate-libreoffice-srcs.sh index d77b41a0480e0..bba1ad9c213d5 100755 --- a/pkgs/applications/office/libreoffice/generate-libreoffice-srcs.sh +++ b/pkgs/applications/office/libreoffice/generate-libreoffice-srcs.sh @@ -1,7 +1,11 @@ #!/run/current-system/sw/bin/bash +# Ideally we would move as much as possible into derivation dependencies + # Take the list of files from the main package, ooo.lst.in +# This script wants an argument: download list file + cat <<EOF [ EOF @@ -11,11 +15,18 @@ write_entry(){ echo " name = \"${name}\";" echo " md5 = \"${md5}\";" echo " brief = ${brief};" + eval "echo -n \"\$additions_${name%%[-_.]*}\"" + eval "test -n \"\$additions_${name%%[-_.]*}\" && echo" echo '}' } +cat "$(dirname "$0")/libreoffice-srcs-additions.sh" "$@" | while read line; do case "$line" in + EVAL\ *) + echo "${line#* }" >&2; + eval "${line#* }"; + ;; \#*) echo Skipping comment: "$line" >&2; ;; @@ -42,6 +53,7 @@ while read line; do line="${line#,}" md5=${line:0:32}; name=${line:33}; + name="${name%)}" brief=false; write_entry; ;; diff --git a/pkgs/applications/office/libreoffice/libreoffice-srcs-additions.sh b/pkgs/applications/office/libreoffice/libreoffice-srcs-additions.sh new file mode 100644 index 0000000000000..d505aa7a4cbb6 --- /dev/null +++ b/pkgs/applications/office/libreoffice/libreoffice-srcs-additions.sh @@ -0,0 +1 @@ +EVAL additions_libgltf=' subDir = "libgltf/";' diff --git a/pkgs/applications/office/libreoffice/libreoffice-srcs.nix b/pkgs/applications/office/libreoffice/libreoffice-srcs.nix index 0e7525782c6b0..a70d5a7c77c3b 100644 --- a/pkgs/applications/office/libreoffice/libreoffice-srcs.nix +++ b/pkgs/applications/office/libreoffice/libreoffice-srcs.nix @@ -323,6 +323,7 @@ name = "libgltf-0.0.2.tar.bz2"; md5 = "d63a9f47ab048f5009d90693d6aa6424"; brief = true; + subDir = "libgltf/"; } { name = "liblangtag-0.5.1.tar.bz2"; |