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;
}