packages feed

imm-2.1.0.0: flake.nix

{
  description = "imm flake";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/e9158eca70ae59e73fae23be5d13d3fa0cfc78b4";
    beam.url = "github:haskell-beam/beam/efd464b079755a781c2bb7a2fc030d6c141bbb8a";
    beam.flake = false;
    atom-conduit.url = "github:k0ral/atom-conduit/da353afcbf19a8cfebefa34bc5c4b81ee80322b3";
    atom-conduit.flake = false;
    rss-conduit.url = "github:k0ral/rss-conduit/c1fec73d715fd1c9a95a155e87ba469887b8e543";
    rss-conduit.flake = false;
    timerep.url = "github:HugoDaniel/timerep/aeb792b7ec701634016021b188e01091e9bd10df";
    timerep.flake = false;
  };

  outputs = { self, nixpkgs, beam, atom-conduit, rss-conduit, timerep }:
    let
      pkgs = import nixpkgs { system = "x86_64-linux"; };
      hlib = pkgs.haskell.lib;

      source = pkgs.nix-gitignore.gitignoreSource [ ] ./.;
      package = with pkgs;
        add-runtime-dependencies (my-haskell-packages.callCabal2nix "imm" source { }) [
          monolith
          pup
          sqliteInteractive
        ];
      executable = hlib.justStaticExecutables package;

      my-haskell-packages = pkgs.haskellPackages.override {
        overrides = hself: hsuper:
          let from-hackage = x: hlib.doJailbreak (hlib.dontCheck (hlib.dontHaddock (hsuper.callHackageDirect x { })));
          in {
            imm = package;
            atom-conduit = hself.callCabal2nix "atom-conduit" atom-conduit { };
            beam-core = hlib.doJailbreak (hself.callCabal2nix "beam-core" "${beam}/beam-core" { });
            beam-migrate = hlib.doJailbreak (hself.callCabal2nix "beam-core" "${beam}/beam-migrate" { });
            beam-sqlite = hlib.doJailbreak (hself.callCabal2nix "beam-core" "${beam}/beam-sqlite" { });
            rss-conduit = hself.callCabal2nix "rss-conduit" rss-conduit { };
            chronos = from-hackage {
              pkg = "chronos";
              ver = "1.1.1";
              sha256 = "gOHjPrDXgyZjfC/4qp7UwCj9FOopO5vGQaAKkRoCdRg=";
            };
            co-log = from-hackage {
              pkg = "co-log";
              ver = "0.4.0.1";
              sha256 = "r/thdqWagfWFFVntgxytOWIrERUj2WCFqZXyGTA9wxU=";
            };
            timerep = hself.callCabal2nix "timerep" timerep { };
          };
      };

      add-runtime-dependencies = drv: xs:
        hlib.overrideCabal drv (drv: {
          buildDepends = (drv.buildDepends or [ ]) ++ [ pkgs.makeWrapper ];
          postInstall = ''
            ${drv.postInstall or ""}
            for exe in "$out/bin/"* ; do
              wrapProgram "$exe" --prefix PATH ":" \
                ${nixpkgs.lib.makeBinPath xs}
            done
          '';
        });
    in {
      defaultPackage.x86_64-linux = executable;
      devShell = my-haskell-packages.shellFor {
        packages = p: [ p.imm ];

        buildInputs = [ my-haskell-packages.cabal-install my-haskell-packages.hlint pkgs.sqliteInteractive ];

        withHoogle = false;
      };
    };

}