about summary refs log tree commit diff
path: root/overrides/axbo/default.nix
blob: 6e3d2627e8e5f7d6fbbf77ee9934fee07386587a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
{ stdenv, fetchurl, jre, librxtx_java, makeFontsConf, dejavu_fonts }:

stdenv.mkDerivation rec {
  name = "axbo-research-${version}";
  version = "2.0.18";

  buildInputs = [ jre librxtx_java ];

  unpackCmd = let
    fontconfigFile = makeFontsConf {
      fontDirectories = stdenv.lib.singleton dejavu_fonts;
    };
  in ''
    datalen="$(sed -n 's/^.*totalDataLength=\([0-9]\+\).*$/\1/p' "$src")"
    installer_offset="$(sed -n 's/^ *tail *-c *\([0-9]\+\).*$/\1/p' "$src")"

    installer_dir="$(mktemp -d)"
    mkdir -p "$installer_dir"
    tail -c "$installer_offset" "$src" | tar xz -C "$installer_dir"

    cat > "$installer_dir/responses" <<EOF
    executeLauncherAction$Boolean=false
    sys.programGroup.linkDir=/dev/null
    sys.component.73$Boolean=true
    sys.languageId=en
    sys.installationDir=$(pwd)/${name}
    sys.programGroup.enabled$Boolean=false
    sys.programGroup.allUsers$Boolean=true
    sys.programGroup.name=aXbo
    EOF

    cd "$installer_dir"
    export FONTCONFIG_FILE="${fontconfigFile}"
    java -client -Dinstall4j.jvmDir="${jre}" \
                 -Dexe4j.moduleName="$src" \
                 -Dexe4j.totalDataLength="$datalen" \
                 -Dinstall4j.cwd="$installer_dir" \
                 -Djava.ext.dirs="${jre}/lib/ext" \
                 -Dsun.java2d.noddraw=true \
                 -classpath i4jruntime.jar:user.jar \
                 com.install4j.runtime.Launcher launch \
                 com.install4j.runtime.installer.Installer \
                 false false "" "" false true false "" true true \
                 0 0 "" 20 20 Arial 0,0,0 8 500 'version 2.0.18' \
                 20 40 Arial 0,0,0 8 500 \
                 -1 -q -varfile "$installer_dir/responses"
    cd -
    rm -rf "$installer_dir"
  '';

  installPhase = ''
    mkdir -p "$out/lib/java" "$out/libexec" "$out/bin"
    for jarfile in lib/*; do
      case "''${jarfile##*/}" in
        axbo.jar) cp -vt "$out/libexec" "$jarfile";;
        RXTXcomm.jar) ;; # ignore
        *.jar) cp -vt "$out/lib/java" "$jarfile";;
      esac
    done

    cat > "$out/bin/axbo-research" <<WRAPPER
    #!${stdenv.shell}
    ${jre}/bin/java -Djava.library.path="${librxtx_java}/lib" \
      -classpath "${librxtx_java}/lib/java/*:$out/lib/java/*" \
      -jar "$out/libexec/axbo.jar"
    WRAPPER
    chmod +x "$out/bin/axbo-research"
  '';

  src = fetchurl {
    url = let
      upstream_version = stdenv.lib.replaceChars ["."] ["_"] version;
    in "http://www.axbo.com/webstart/aXbo_unix_${upstream_version}.sh";
    sha256 = "1zc3bpqfa5pdpl7masigvv98mi5phl04p80fyd2ink33xbmik70z";
  };
}