Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
reflex-frp
GitHub Repository: reflex-frp/reflex-platform
Path: blob/develop/haskell-overlays/android/default.nix
1 views
{ haskellLib, nixpkgs, thunkSet }:

let
  # add the "-fPIC" option to both "ghc-options" and "cc-options" for the library component of a package
  enableFPic = pkg: haskellLib.overrideCabal pkg (old: {
    preConfigure = ''
      sed -i 's/^library *\(.*\)$/library \1\n  cc-options: -fPIC\n  ghc-options: -fPIC/i' *.cabal
    '';
  });
in
self: super: {
  _dep = super._dep or {} // thunkSet ./dep;

  android-activity = haskellLib.overrideCabal (self.callCabal2nix "android-activity" (self._dep.android-activity + "/") {
    log = nixpkgs.androidndkPkgs_24.libraries; 
  }) (drv: let
    jdk-fixed = (nixpkgs.buildPackages.jdk17.override {
      headless = true;
      enableGnome2 = false;
      enableJavaFX = false;
      openjdk17-bootstrap = nixpkgs.buildPackages.openjdk17-bootstrap.override {
        gtkSupport = false;
      };
    });
  in { 
    librarySystemDepends = (drv.librarySystemDepends or []) ++ [ jdk-fixed ];
    enableSharedExecutables = true;
    enableSharedLibraries = true;
    enableStaticLibraries = false;
    buildTools = (drv.buildTools or []) ++ [ ];
    configureFlags = (drv.configureFlags or []) ++ [
      "--enable-shared"
      #"-v3"
    ];
  });
 
  syb = haskellLib.overrideCabal super.syb (drv: { jailbreak = true; });
  cabal-doctest = null;

  # Break version bounds on base for GHC HEAD.
  lifted-async = haskellLib.doJailbreak super.lifted-async;
  safe-exceptions = haskellLib.doJailbreak super.safe-exceptions;


  blaze-textual = haskellLib.enableCabalFlag super.blaze-textual "integer-simple";
  cryptonite = haskellLib.disableCabalFlag super.cryptonite "integer-gmp";
  
  OneTuple = haskellLib.overrideCabal super.OneTuple (drv: {
    libraryHaskellDepends = (drv.libraryHaskellDepends or []) ++ [
      self.hashable
    ];
  });
  hashable = enableFPic super.hashable;
  primitive = enableFPic super.primitive;

  mkDerivation = drv: super.mkDerivation (drv // {
    doHaddock = false;
    dontStrip = true;
    enableSharedExecutables = false;
  });

  # HACK(Dylan Green):
  # Temporary fix for RPATH troubles regarding attoparsec
  attoparsec = haskellLib.overrideCabal super.attoparsec (drv: {
    preFixup = ''
      rm -rf "$(pwd)"
      mkdir "$(pwd)"
    '';
  });

  # HACK(matthewbauer):
  # Temporary fix for https://github.com/ekmett/free/issues/176
  # Optimizations are broken on some ARM-based systems for some reason.
  free = haskellLib.appendConfigureFlag super.free "--enable-optimization=0";
  jsaddle = haskellLib.appendConfigureFlag super.jsaddle "--enable-optimization=0";

  # Disabled for now (jsaddle-wkwebview will probably be better on iOS)
  jsaddle-warp = null;
  # Disable these because these on iOS
  jsaddle-webkitgtk = null;
  jsaddle-webkit2gtk = null;

  # Tests take a long time
  vector = haskellLib.dontCheck super.vector;
}