qs: normalize screenshot rect
This commit is contained in:
parent
34d752c42f
commit
1720cb6c9b
2 changed files with 191 additions and 8 deletions
172
modules/overlay-pkgs/tws.nix
Normal file
172
modules/overlay-pkgs/tws.nix
Normal file
|
@ -0,0 +1,172 @@
|
|||
{ # ref: https://git.sr.ht/~rhizomic/tws
|
||||
lib,
|
||||
fetchurl,
|
||||
stdenv,
|
||||
|
||||
gnused,
|
||||
gnutar,
|
||||
patchelf,
|
||||
makeFontsCache,
|
||||
|
||||
bash,
|
||||
alsa-lib,
|
||||
at-spi2-atk,
|
||||
cairo,
|
||||
cups,
|
||||
dbus,
|
||||
expat,
|
||||
ffmpeg,
|
||||
fontconfig,
|
||||
freetype,
|
||||
gdk-pixbuf,
|
||||
glib,
|
||||
gtk2,
|
||||
gtk3,
|
||||
javaPackages,
|
||||
libdrm,
|
||||
libGL,
|
||||
libxkbcommon,
|
||||
mesa,
|
||||
nspr,
|
||||
nss,
|
||||
pango,
|
||||
xorg,
|
||||
zlib,
|
||||
}: let
|
||||
libPath = lib.makeLibraryPath [
|
||||
alsa-lib
|
||||
at-spi2-atk
|
||||
cairo
|
||||
cups
|
||||
dbus
|
||||
expat
|
||||
ffmpeg
|
||||
fontconfig
|
||||
freetype
|
||||
gdk-pixbuf
|
||||
glib
|
||||
gtk2
|
||||
gtk3
|
||||
javaPackages.openjfx21
|
||||
libdrm
|
||||
libGL
|
||||
libxkbcommon
|
||||
mesa
|
||||
nspr
|
||||
nss
|
||||
pango
|
||||
xorg.libXfixes
|
||||
xorg.libXcomposite
|
||||
xorg.libXdamage
|
||||
xorg.libXext
|
||||
xorg.libXrandr
|
||||
xorg.libXrender
|
||||
xorg.libXtst
|
||||
xorg.libXi
|
||||
xorg.libXxf86vm
|
||||
xorg.libxcb
|
||||
xorg.libX11
|
||||
zlib
|
||||
];
|
||||
in stdenv.mkDerivation {
|
||||
pname = "ibkr-tws";
|
||||
version = "0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download2.interactivebrokers.com/installers/tws/latest-standalone/tws-latest-standalone-linux-x64.sh";
|
||||
hash = "sha256-Wk7lRE5ypJeAQfvi5aEDZYfUF6fJ3ktueYYytHohIGU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
gnused
|
||||
gnutar
|
||||
patchelf
|
||||
];
|
||||
|
||||
unpackPhase = ''
|
||||
tws_length=$(stat -c %s "$src")
|
||||
sfx_length=$(sed -nE 's/^tail -c ([0-9]+).*/\1/p' "$src")
|
||||
|
||||
mkdir install4j
|
||||
tail --bytes $sfx_length "$src" > sfx_archive.tar.gz
|
||||
tar -xf sfx_archive.tar.gz -C install4j 2> /dev/null
|
||||
|
||||
mkdir jre
|
||||
tar -xf install4j/jre.tar.gz -C jre
|
||||
|
||||
zero_dat_length=$(sed -nE 's/^file\.size\.0=([0-9]+)/\1/p' install4j/stats.properties)
|
||||
installer_length=$(($tws_length - $sfx_length - $zero_dat_length))
|
||||
|
||||
head --bytes $installer_length "$src" > install.sh
|
||||
# || true masks broken pipe
|
||||
(tail --bytes +$(($installer_length + 1)) "$src" 2> /dev/null || true) | head --bytes $zero_dat_length > install4j/0.dat
|
||||
|
||||
echo $tws_length : $sfx_length : $zero_dat_length : $installer_length
|
||||
stat install4j/0.dat
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
for file in jre/bin/*; do
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file"
|
||||
done
|
||||
|
||||
unpack () {
|
||||
jar="`echo "$1" | awk '{ print substr($0,1,length($0)-5) }'`"
|
||||
jre/bin/unpack200 -r "$1" "$jar"
|
||||
chmod a+r "$jar"
|
||||
}
|
||||
|
||||
for jarpack in jre/lib/*.jar.pack; do
|
||||
unpack $jarpack
|
||||
done
|
||||
|
||||
for jarpack in jre/lib/ext/*.jar.pack; do
|
||||
unpack $jarpack
|
||||
done
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
install4j_installer=$(sed -nE 's/.*\$INSTALL4J_JAVA_PREFIX.*install4j\.Installer([0-9]+).*/\1/p' "$src" | head -n 1)
|
||||
|
||||
(cd install4j && \
|
||||
LD_LIBRARY_PATH='${libPath}:$LD_LIBRARY_PATH' \
|
||||
FONTCONFIG_FILE='${makeFontsCache { fontDirectories = []; }}' \
|
||||
INSTALL4J_JAVA_HOME='../jre' \
|
||||
../jre/bin/java \
|
||||
-DjtsConfigDir='/home/jts' \
|
||||
-classpath 'i4jruntime.jar:launcher0.jar' \
|
||||
"install4j.Installer$install4j_installer" '-q' '-dir' "$out")
|
||||
|
||||
mv jre "$out/jre"
|
||||
|
||||
mkdir "$out/bin"
|
||||
cat <<EOF > "$out/bin/tws"
|
||||
#! ${lib.getExe bash}
|
||||
|
||||
TWS_DIR="\$XDG_DATA_HOME/tws"
|
||||
if [ ! -d "\$TWS_DIR" ]; then
|
||||
mkdir -p "\$TWS_DIR"
|
||||
fi
|
||||
|
||||
LD_LIBRARY_PATH="${libPath}:\$LD_LIBRARY_PATH" \
|
||||
INSTALL4J_JAVA_HOME="$out/jre" \
|
||||
$out/tws -J-DjtsConfigDir="\$TWS_DIR"
|
||||
EOF
|
||||
|
||||
mkdir -p "$out/share/icons/hicolor/128x128"
|
||||
mv "$out/.install4j/tws.png" "$out/share/icons/hicolor/128x128/tws.png"
|
||||
|
||||
mkdir -p "$out/share/applications"
|
||||
cat <<EOF > "$out/share/applications/tws.desktop"
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Trader Workstation
|
||||
Exec="$out/bin/tws"
|
||||
Icon=tws
|
||||
Categories=Application
|
||||
StartupWMClass=install4j-jclient-LoginFrame
|
||||
EOF
|
||||
|
||||
chmod +x "$out/bin/tws"
|
||||
'';
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue