about summary refs log tree commit diff
path: root/overrides/axbo/default.nix
blob: d83e891d9eed911cc8aa09957f9aad8ebf10db7c (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
77
{ stdenv, fetchurl, oraclejre, librxtx_java, makeFontsConf, dejavu_fonts }:

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

  src = fetchurl {
    url = let
      urlversion = stdenv.lib.replaceChars ["."] ["_"] version;
    in "https://www.dropbox.com/s/shy0yqcyivonobi/aXbo_unix_${urlversion}.sh";
    sha256 = "1zc3bpqfa5pdpl7masigvv98mi5phl04p80fyd2ink33xbmik70z";
  };

  buildInputs = [ oraclejre 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="${oraclejre}" \
                 -Dexe4j.moduleName="$src" \
                 -Dexe4j.totalDataLength="$datalen" \
                 -Dinstall4j.cwd="$installer_dir" \
                 -Djava.ext.dirs="${oraclejre}/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/libexec/lib" "$out/bin"
    for jarfile in lib/*; do
      case "''${jarfile##*/}" in
        axbo.jar) cp -vt "$out/libexec" "$jarfile";;
        RXTXcomm.jar) ln -s "${librxtx_java}/lib/java/RXTXcomm.jar" \
                            "$out/libexec/lib";;
        *.jar) cp -vt "$out/libexec/lib" "$jarfile";;
      esac
    done

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