Compare commits

..

3 commits

Author SHA1 Message Date
Alejandro Soto
cf2823d14e Merge commit 'efcef47c37' into user 2026-03-23 19:25:02 -06:00
Alejandro Soto
91e5edd82b trivionomicon: ibkr-tws: initial commit 2026-03-23 19:20:36 -06:00
Alejandro Soto
aac5bbeb91 trivionomicon: athena-bccr: separate releases by vendor, add 'vendor' option 2026-03-11 01:27:55 -06:00
4 changed files with 135 additions and 20 deletions

View file

@ -1,27 +1,33 @@
{ {
"athena" = {
latest = "deb64-rev26";
"deb64-rev26" = { "deb64-rev26" = {
# nix hash convert --hash-algo sha256 --from base16 --to sri $(sha256sum sfd_ClientesLinux_DEB64_Rev26.zip | cut -d' ' -f1) # nix hash convert --hash-algo sha256 --from base16 --to sri $(sha256sum sfd_ClientesLinux_DEB64_Rev26.zip | cut -d' ' -f1)
hash = "sha256-ZPWP9TqJQ5coJAPzUSiaXKVItBWlqFM4smCjOf+gqQM="; hash = "sha256-ZPWP9TqJQ5coJAPzUSiaXKVItBWlqFM4smCjOf+gqQM=";
filename = "sfd_ClientesLinux_DEB64_Rev26.zip"; filename = "sfd_ClientesLinux_DEB64_Rev26.zip";
basename = "sfd_ClientesLinux_DEB64_Rev26"; basename = "sfd_ClientesLinux_DEB64_Rev26";
vendor = "athena";
srcPaths = { srcPaths = {
gaudi = "Firma Digital/Agente GAUDI/agente-gaudi_20.0_amd64.deb"; gaudi = "Firma Digital/Agente GAUDI/agente-gaudi_20.0_amd64.deb";
idprotect = "Firma Digital/PinTool/IDProtect PINTool 7.24.02/DEB/idprotectclient_7.24.02-0_amd64.deb"; idprotect = "Firma Digital/PinTool/IDProtect PINTool 7.24.02/DEB/idprotectclient_7.24.02-0_amd64.deb";
}; };
}; };
};
"idopte" = {
latest = "deb64-rev26.2";
"deb64-rev26.2" = { "deb64-rev26.2" = {
# nix hash convert --hash-algo sha256 --from base16 --to sri $(sha256sum sfd_ClientesLinux_DEB64_Ubuntu24_rev26_02 | cut -d' ' -f1) # nix hash convert --hash-algo sha256 --from base16 --to sri $(sha256sum sfd_ClientesLinux_DEB64_Ubuntu24_rev26_02 | cut -d' ' -f1)
hash = "sha256-DNzP0YRnuUbfKLhi7JeQCirdGx4kM7ROqHDkTuVs0mA="; hash = "sha256-DNzP0YRnuUbfKLhi7JeQCirdGx4kM7ROqHDkTuVs0mA=";
filename = "sfd_ClientesLinux_DEB64_Ubuntu24_rev26_02.zip"; filename = "sfd_ClientesLinux_DEB64_Ubuntu24_rev26_02.zip";
basename = "sfd_ClientesLinux_DEB64_Ubuntu24_26_02"; basename = "sfd_ClientesLinux_DEB64_Ubuntu24_26_02";
vendor = "idopte";
srcPaths = { srcPaths = {
gaudi = "Firma Digital/Agente GAUDI/agente-gaudi_27.0_amd64.deb"; gaudi = "Firma Digital/Agente GAUDI/agente-gaudi_27.0_amd64.deb";
idopte = "Firma Digital/Idopte/Idopte_6.23.44.0_ubun24_amd64.deb"; idopte = "Firma Digital/Idopte/Idopte_6.23.44.0_ubun24_amd64.deb";
}; };
}; };
};
} }

View file

@ -5,9 +5,10 @@
requireFile, requireFile,
release, release,
gaudiHash ? null, gaudiHash ? null,
vendor,
... ...
}: let }: let
inherit (release) srcPaths vendor; inherit (release) srcPaths;
url = url =
if mirror != null if mirror != null

View file

@ -4,7 +4,9 @@ with prev.lib; let
in { in {
override = {}; override = {};
athena-bccr = callPackage ./athena-bccr {}; athena-bccr = callPackage ./athena-bccr {vendor = "athena";};
ibkr-tws = callPackage ./ibkr-tws {};
idopte-bccr = callPackage ./athena-bccr {vendor = "idopte";};
snapborg = final.python3Packages.callPackage ./snapborg {}; snapborg = final.python3Packages.callPackage ./snapborg {};
socialpredict = callPackage ./socialpredict {}; socialpredict = callPackage ./socialpredict {};
spliit = callPackage ./spliit {}; spliit = callPackage ./spliit {};

106
pkgs/ibkr-tws/default.nix Normal file
View file

@ -0,0 +1,106 @@
{
lib,
makeWrapper,
openjdk,
requireFile,
stdenv,
}: let
version = "10.44.1g";
jdk = openjdk.override {
enableJavaFX = true;
};
removeJavaVersionCheck = file: ''
# Lie about the openjdk version to skip the version check
sed -i 's/\(read_db_entry || create_db_entry \$2\)/\1; ver_major=17; ver_minor=0; ver_micro=16/' ${file}
'';
in
stdenv.mkDerivation {
pname = "ibkr-tws";
inherit version;
src = requireFile {
name = "tws-${version}-standalone-linux-x64.sh";
url = "https://www.interactivebrokers.com/en/trading/download-tws.php?p=offline-latest";
# 1. Rename 'tws-latest-standalone-linux-x64.sh' to 'tws-${version}-standalone-linux-x64.sh'
# 2. nix hash convert --hash-algo sha256 --from base16 --to sri $(sha256sum tws-${version}-standalone-linux-x64.sh | cut -d' ' -f1)
hash = "sha256-UfyfTHOcPiwTof0ZMhV1haX7gyb08v7U2A12VjAny7c=";
};
nativeBuildInputs = [
makeWrapper
];
unpackPhase = ''
runHook preUnpack
cp $src bundle.sh
chmod +x bundle.sh
runHook postUnpack
'';
patchPhase = ''
runHook prePatch
${removeJavaVersionCheck "bundle.sh"}
runHook postPatch
'';
preBuild = ''
export INSTALL4J_NO_DB=true
export INSTALL4J_JAVA_HOME=${jdk}
export INSTALL4J_DISABLE_BUNDLED_JRE=true
'';
buildPhase = ''
runHook preBuild
# Where should Trader Workstation 10.44 be installed?: $out
# Run Trader Workstation 10.44? Yes [y], No [n, Enter]: n
echo -e "$out/lib/tws\nn" | ./bundle.sh
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p "$out/bin" "$out/share/applications"
${removeJavaVersionCheck "$out/lib/tws/tws"}
makeWrapper \
"$out/lib/tws/tws" "$out/bin/tws" \
--set INSTALL4J_NO_DB true \
--set INSTALL4J_JAVA_HOME ${jdk}
mv "$out/lib/tws/.install4j/tws.png" "$out/lib/tws"
for path in $out/lib/tws/*.desktop; do
target="$(readlink -f "$path")"
mv "$target" "$out/share/applications/$(basename "$path")"
rm -f "$path"
done
sed -i \
's@$out/lib/tws/tws\>@$out/bin/tws@; s@$out/lib/tws/.install4j/tws.png@$out/lib/tws/tws.png@' \
$out/share/applications/*.desktop
#TODO
sed -i \
's@/build/Jts@/tmp/Jts@g' \
$out/lib/tws/.install4j/{i4jparams.conf,response.varfile}
rm -f "$out/lib/tws/uninstall" $out/lib/tws/.install4j/*.log
runHook postInstall
'';
meta = {
license = lib.licenses.unfree;
mainProgram = "tws";
};
}