Compare commits
1 commit
ade989c025
...
9dfe6d2749
Author | SHA1 | Date | |
---|---|---|---|
9dfe6d2749 |
6 changed files with 32 additions and 239 deletions
64
flake.lock
generated
64
flake.lock
generated
|
@ -122,11 +122,11 @@
|
|||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1738548382,
|
||||
"narHash": "sha256-yV7FmfZr1WKJyh7wMbwjIqIFYAQMSucXWyqJWCclNc0=",
|
||||
"lastModified": 1738228472,
|
||||
"narHash": "sha256-8HVtDJLGO6/tx17iFL3yz6s65/y0eMtdp/w/l9FjH0g=",
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "501c905c37fbfaef6ae9b64cd2ff9d90f1383212",
|
||||
"rev": "bf817bb80b020ffdeee5769867b8862026bd5312",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -305,11 +305,11 @@
|
|||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1738453229,
|
||||
"narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
|
||||
"lastModified": 1736143030,
|
||||
"narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd",
|
||||
"rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -466,11 +466,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1738448366,
|
||||
"narHash": "sha256-4ATtQqBlgsGqkHTemta0ydY6f7JBRXz4Hf574NHQpkg=",
|
||||
"lastModified": 1738228963,
|
||||
"narHash": "sha256-Ee5hVHM7AWxaq7XJN6xiZztTZX8csdXernjqaTW5r9I=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "18fa9f323d8adbb0b7b8b98a8488db308210ed93",
|
||||
"rev": "d963ed335b890a70ed53eecf14cdb21528eda9b8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -543,11 +543,11 @@
|
|||
"lix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1738446528,
|
||||
"narHash": "sha256-NYL/r7EXSyYP7nXuYGvGYMI9QtztGjVaKKofBt/pCv8=",
|
||||
"lastModified": 1738174211,
|
||||
"narHash": "sha256-eYmp1mKM4kULV1W+EBtCPk6LmKWl2REivaYfGRl+AWo=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "a51380645f61b33d37a536b596d16c481f7b84a6",
|
||||
"revCount": 17342,
|
||||
"rev": "64e33a7e09a0d1faacf2fd3f6ebd647fe4d8346a",
|
||||
"revCount": 17329,
|
||||
"type": "git",
|
||||
"url": "https://git@git.lix.systems/lix-project/lix"
|
||||
},
|
||||
|
@ -698,11 +698,11 @@
|
|||
"nixpkgs": "nixpkgs_6"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1738277753,
|
||||
"narHash": "sha256-iyFcCOk0mmDiv4ut9mBEuMxMZIym3++0qN1rQBg8FW0=",
|
||||
"lastModified": 1738033138,
|
||||
"narHash": "sha256-qlIM8A3bdL9c6PexhpS+QyZLO9y/8a3V75HVyJgDE5Q=",
|
||||
"owner": "LnL7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "49b807fa7c37568d7fbe2aeaafb9255c185412f9",
|
||||
"rev": "349a74c66c596ef97ee97b4d80a3ca61227b6120",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -734,11 +734,11 @@
|
|||
},
|
||||
"nixosHardware": {
|
||||
"locked": {
|
||||
"lastModified": 1738471961,
|
||||
"narHash": "sha256-cgXDFrplNGs7bCVzXhRofjD8oJYqqXGcmUzXjHmip6Y=",
|
||||
"lastModified": 1737751639,
|
||||
"narHash": "sha256-ZEbOJ9iT72iwqXsiEMbEa8wWjyFvRA9Ugx8utmYbpz4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "537286c3c59b40311e5418a180b38034661d2536",
|
||||
"rev": "dfad538f751a5aa5d4436d9781ab27a6128ec9d4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -797,14 +797,14 @@
|
|||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1738452942,
|
||||
"narHash": "sha256-vJzFZGaCpnmo7I6i416HaBLpC+hvcURh/BQwROcGIp8=",
|
||||
"lastModified": 1735774519,
|
||||
"narHash": "sha256-CewEm1o2eVAnoqb6Ml+Qi9Gg/EfNAxbRx1lANGVyoLI=",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz"
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz"
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib_2": {
|
||||
|
@ -827,11 +827,11 @@
|
|||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1738435198,
|
||||
"narHash": "sha256-5+Hmo4nbqw8FrW85FlNm4IIrRnZ7bn0cmXlScNsNRLo=",
|
||||
"lastModified": 1738023785,
|
||||
"narHash": "sha256-BPHmb3fUwdHkonHyHi1+x89eXB3kA1jffIpwPVJIVys=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "f6687779bf4c396250831aa5a32cbfeb85bb07a3",
|
||||
"rev": "2b4230bf03deb33103947e2528cac2ed516c5c89",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -905,11 +905,11 @@
|
|||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1738410390,
|
||||
"narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=",
|
||||
"lastModified": 1738142207,
|
||||
"narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3a228057f5b619feb3186e986dbe76278d707b6e",
|
||||
"rev": "9d3ae807ebd2981d593cddd0080856873139aa40",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -984,11 +984,11 @@
|
|||
},
|
||||
"nixpkgs_9": {
|
||||
"locked": {
|
||||
"lastModified": 1738410390,
|
||||
"narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=",
|
||||
"lastModified": 1738142207,
|
||||
"narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3a228057f5b619feb3186e986dbe76278d707b6e",
|
||||
"rev": "9d3ae807ebd2981d593cddd0080856873139aa40",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
{ fleetFlake, pkgs, ... }:
|
||||
{
|
||||
home.packages = [ fleetFlake.packages.${pkgs.system}.ib-tws ];
|
||||
}
|
|
@ -68,9 +68,6 @@ environment {
|
|||
DISPLAY ":0"
|
||||
}
|
||||
|
||||
hotkey-overlay {
|
||||
skip-at-startup
|
||||
}
|
||||
|
||||
// You can configure outputs by their name, which you can find
|
||||
// by running `niri msg outputs` while inside a niri instance.
|
||||
|
|
|
@ -33,11 +33,6 @@
|
|||
fi
|
||||
'';
|
||||
|
||||
home.sessionVariables = {
|
||||
DISPLAY = ":0";
|
||||
QT_QPA_PLATFORM = "wayland";
|
||||
};
|
||||
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
package = pkgs.rofi-wayland;
|
||||
|
|
|
@ -93,7 +93,6 @@
|
|||
"chirp"
|
||||
"sdrangel"
|
||||
"discord"
|
||||
"ib-tws"
|
||||
];
|
||||
extraGroups = [ "plugdev" ];
|
||||
backupPaths = [ ];
|
||||
|
|
|
@ -1,194 +0,0 @@
|
|||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchurl,
|
||||
makeDesktopItem,
|
||||
copyDesktopItems,
|
||||
libXxf86vm,
|
||||
libX11,
|
||||
libXext,
|
||||
libXtst,
|
||||
libXi,
|
||||
libXrender,
|
||||
glib,
|
||||
libxml2,
|
||||
ffmpeg,
|
||||
libGL,
|
||||
freetype,
|
||||
fontconfig,
|
||||
gtk3,
|
||||
pango,
|
||||
cairo,
|
||||
alsa-lib,
|
||||
atk,
|
||||
gdk-pixbuf,
|
||||
gtk2,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
rSubPaths = [
|
||||
"lib/amd64/jli"
|
||||
"lib/amd64/server"
|
||||
"lib/amd64"
|
||||
];
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ib-tws";
|
||||
version = "10.33.1f";
|
||||
etagHash = "f3ac044774c83917855f484a968c6ad2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download2.interactivebrokers.com/installers/tws/latest-standalone/tws-latest-standalone-linux-x64.sh";
|
||||
hash = "sha256-Iq4Bd5LTOajfK3IaomeAZL182lEXkCn7JjEO6UWgdFE=";
|
||||
};
|
||||
|
||||
phases = [
|
||||
"unpackPhase"
|
||||
"installPhase"
|
||||
"fixupPhase"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ copyDesktopItems ];
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = pname;
|
||||
desktopName = "IB Trader Workstation";
|
||||
exec = pname;
|
||||
icon = pname;
|
||||
categories = [
|
||||
"Office"
|
||||
"Finance"
|
||||
];
|
||||
startupWMClass = "jclient-LoginFrame";
|
||||
})
|
||||
(makeDesktopItem {
|
||||
name = "ib-gw";
|
||||
desktopName = "IB Gateway";
|
||||
exec = "ib-gw";
|
||||
icon = pname;
|
||||
categories = [
|
||||
"Office"
|
||||
"Finance"
|
||||
];
|
||||
startupWMClass = "ibgateway-GWClient";
|
||||
})
|
||||
];
|
||||
|
||||
unpackPhase = ''
|
||||
echo "Unpacking I4J sfx sh to $PWD..."
|
||||
INSTALL4J_TEMP="$PWD" sh "$src" __i4j_extract_and_exit
|
||||
|
||||
# JRE
|
||||
jrePath="$out/share/${pname}/jre"
|
||||
echo "Unpacking JRE to $jrePath..."
|
||||
mkdir -p "$jrePath"
|
||||
tar -xf "$PWD/"*.dir/jre.tar.gz -C "$jrePath/"
|
||||
|
||||
echo "Patching JRE executables..."
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
"$jrePath/bin/java" "$jrePath/bin/unpack200"
|
||||
|
||||
echo "Unpacking JRE pack files..."
|
||||
for f in "$jrePath/lib/"*.jar.pack "$jrePath/lib/ext/"*.jar.pack; do
|
||||
jar_file=`echo "$f" | awk '{ print substr($0,1,length($0)-5) }'`
|
||||
"$jrePath/bin/unpack200" -r "$f" "$jar_file"
|
||||
[ $? -ne 0 ] && echo "Error unpacking $f" && exit 1
|
||||
done
|
||||
|
||||
echo "Unpacking TWS payload..."
|
||||
INSTALL4J_JAVA_HOME_OVERRIDE="$jrePath" sh "$src" -q -dir "$PWD/"
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
# create main startup script
|
||||
mkdir -p "$out/bin"
|
||||
cat<<EOF > "$out/bin/${pname}"
|
||||
#!$SHELL
|
||||
|
||||
# get script name
|
||||
PROG=\$(basename "\$0")
|
||||
|
||||
# Load system-wide settings and per-user overrides
|
||||
IB_CONFIG_DIR="\$HOME/.\$PROG"
|
||||
JAVA_GC="-Xmx4G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=20 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
|
||||
JAVA_UI_FLAGS="-Dswing.aatext=TRUE -Dawt.useSystemAAFontSettings=on -Dsun.awt.nopixfmt=true -Dsun.java2d.noddraw=true -Dswing.boldMetal=false -Dsun.locale.formatasdefault=true"
|
||||
JAVA_LOCALE_FLAGS="-Dsun.locale.formatasdefault=true"
|
||||
JAVA_FLAGS="\$JAVA_GC \$JAVA_UI_FLAGS \$JAVA_LOCALE_FLAGS \$JAVA_EXTRA_FLAGS"
|
||||
[ -f "\$HOME/.config/\$PROG.conf" ] && . "\$HOME/.config/\$PROG.conf"
|
||||
|
||||
CLASS="jclient.LoginFrame"
|
||||
[ "\$PROG" = "ib-gw" ] && CLASS="ibgateway.GWClient"
|
||||
|
||||
cd "$out/share/${pname}/jars"
|
||||
"$out/share/${pname}/jre/bin/java" -cp \* \$JAVA_FLAGS \$CLASS \$IB_CONFIG_DIR
|
||||
EOF
|
||||
chmod u+x $out/bin/${pname}
|
||||
|
||||
# create symlink for the gateway
|
||||
ln -s "${pname}" "$out/bin/ib-gw"
|
||||
|
||||
# copy files
|
||||
mkdir -p $out/share/${pname}
|
||||
cp -R jars $out/share/${pname}
|
||||
install -Dm644 .install4j/tws.png $out/share/pixmaps/${pname}.png
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
dontPatchELF = true;
|
||||
dontStrip = true;
|
||||
|
||||
postFixup = ''
|
||||
rpath+="''${rpath:+:}${lib.concatStringsSep ":" (map (a: "$jrePath/${a}") rSubPaths)}"
|
||||
|
||||
# set all the dynamic linkers
|
||||
find $out -type f -perm -0100 \
|
||||
-exec patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath "$rpath" {} \;
|
||||
|
||||
find $out -name "*.so" -exec patchelf --set-rpath "$rpath" {} \;
|
||||
'';
|
||||
|
||||
rpath = lib.strings.makeLibraryPath libraries;
|
||||
|
||||
libraries = [
|
||||
stdenv.cc
|
||||
stdenv.cc.libc
|
||||
glib
|
||||
libxml2
|
||||
ffmpeg
|
||||
libGL
|
||||
libXxf86vm
|
||||
alsa-lib
|
||||
fontconfig
|
||||
freetype
|
||||
pango
|
||||
gtk3
|
||||
cairo
|
||||
gdk-pixbuf
|
||||
atk
|
||||
libX11
|
||||
libXext
|
||||
libXtst
|
||||
libXi
|
||||
libXrender
|
||||
gtk2
|
||||
];
|
||||
# possibly missing libgdk-x11-2.0.so.0, from gtk2? never caused any trouble though
|
||||
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Trader Work Station of Interactive Brokers";
|
||||
homepage = "https://www.interactivebrokers.com";
|
||||
# license = licenses.unfree;
|
||||
maintainers = lib.optionals (maintainers ? k3a) [ maintainers.k3a ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
Loading…
Add table
Reference in a new issue