packages feed

imm-2.0.0.0: default.nix

{ nixpkgs ? import <nixpkgs> { } }:

let
  hlib = nixpkgs.haskell.lib;

  source = nixpkgs.nix-gitignore.gitignoreSource [ ] ./.;
  packageWithoutRuntimeDependencies =
    myHaskellPackages.callCabal2nix "imm" source { };
  packageWithRuntimeDependencies = with nixpkgs;
    addRuntimeDependencies packageWithoutRuntimeDependencies [
      pup
      sqliteInteractive
    ];

  exe = hlib.justStaticExecutables packageWithRuntimeDependencies;

  my-atom-conduit = {
    pkg = "atom-conduit";
    ver = "0.9.0.0";
    sha256 = "11x41fxj0g93kg46z06i1kxfms84wqbad41i7fnm7ixpw4n464pp";
  };

  my-beam = nixpkgs.fetchFromGitHub {
    owner = "haskell-beam";
    repo = "beam";
    rev = "3bde0615b6eccfe5ca44ed907b79a3cd74eee33f";
    sha256 = "0fy8p70pxhrllr2njwxa8lijf35hlds2zkhh7fkkv5b3i34jqx29";
  };

  my-rss-conduit = {
    pkg = "rss-conduit";
    ver = "0.6.0.0";
    sha256 = "1gdq1bv1ayx9qx9ppwld8b5qjfsq1pgkqd29qni3jcldw9w4wfb8";
  };

  myHaskellPackages = nixpkgs.haskellPackages.override {
    overrides = hself: hsuper:
      let
        fromHackage = x:
          hlib.dontCheck (hlib.dontHaddock (hsuper.callHackageDirect x { }));
      in {
        imm = packageWithRuntimeDependencies;
        atom-conduit = fromHackage my-atom-conduit;
        beam-core = hself.callCabal2nix "beam-core" "${my-beam}/beam-core" {};
        beam-migrate = hself.callCabal2nix "beam-core" "${my-beam}/beam-migrate" {};
        beam-sqlite = hself.callCabal2nix "beam-core" "${my-beam}/beam-sqlite" {};
        rss-conduit = fromHackage my-rss-conduit;
      };
  };

  addRuntimeDependencies = drv: xs:
    hlib.overrideCabal drv (drv: {
      buildDepends = (drv.buildDepends or [ ]) ++ [ nixpkgs.makeWrapper ];
      postInstall = ''
        ${drv.postInstall or ""}
        for exe in "$out/bin/"* ; do
          wrapProgram "$exe" --prefix PATH ":" \
            ${nixpkgs.lib.makeBinPath xs}
        done
      '';
    });

  shell = myHaskellPackages.shellFor {
    packages = p: [ p.imm ];

    buildInputs = with nixpkgs; [
      haskellPackages.cabal-install
      haskellPackages.haskell-ci
      haskellPackages.hlint
      haskellPackages.ghcid
      sqliteInteractive
    ];

    withHoogle = false;
  };

in {
  inherit shell;
  inherit exe;
}