about summary refs log tree commit diff
path: root/pkgs/profpatsch/utils-hs/default.nix
blob: aeb47ff8bdb7bab8ad069267fe69e89ff951eb42 (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
78
79
80
81
82
{ lib, fetchFromGitHub, haskellPackages, haskell }:

let
  utilsSrc = fetchFromGitHub {
    owner = "Profpatsch";
    repo = "utils.hs";
    rev = "f53264978042d8041831a3ac3766aa1dfdc60b57";
    sha256 = "18mxcbi6cv81y3jvp9lrfp793vayvd9llpkcjh5szb8vi1kizrgy";
  };
  version = "git";

  # TODO: make it possible to override the hps fixpoint again
  # without removing the overrides in here
  hps =
    let hlib = haskell.lib; in
    haskellPackages.override {
      overrides = (hself: hsuper: {

        # shell stub
        shellFor = f: # self -> { buildDepends, buildTools }
          let args = f hself;
          in hsuper.mkDerivation {
            pname = "pkg-env";
            src = "/dev/null";
            version = "none";
            license = "none";
            inherit (args) buildDepends;
            buildTools = with hself; [
              ghcid
              cabal-install
              hpack
              (hoogleLocal {
                packages = args.buildDepends;
              })
            ] ++ args.buildTools or [];
          };

        # hoogleLocal should never use the builders
        hoogleLocal = args: (hsuper.hoogleLocal args).overrideAttrs (_: {
          preferLocalBuild = true;
          allowSubstitutes = false;
        });

        these = hlib.doJailbreak hsuper.these;
      });
    };

  haskellDrv = { name, subfolder, deps }: hps.mkDerivation {
    pname = name;
    inherit version;
    src = "${utilsSrc}/${subfolder}";
    # TODO make utils.hs buildable from the project itself
    # src = "${/home/philip/code/haskell/utils.hs}/${subfolder}";
    license = lib.licenses.gpl3;
    isExecutable = true;
    hydraPlatforms = [ "x86_64-linux" ];
    buildDepends = deps;

    # justStaticExecutables
    enableSharedExecutables = false;
    enableLibraryProfiling = false;
    isLibrary = false;
    doHaddock = false;
    postFixup = "rm -rf $out/lib $out/nix-support $out/share/doc";
  };

  until = haskellDrv {
    name = "until";
    subfolder = "until";
    deps = with hps; [ optparse-applicative data-fix time];
  };

  watch-server = haskellDrv {
    name = "watch-server";
    subfolder = "watch-server";
    deps = with hps; [ directory protolude fsnotify regex-tdfa optparse-generic ];
  };

in {
  inherit until watch-server;
  haskellPackages = hps;
}