AE4PHS6EEAG647L3MTTR6IKZJZGRTP6TGOUEBSTUYKKDFIOPF47QC
{ pkgs, stdenv, lib, self }:
let
discoPkgs = pkgs.recurseIntoAttrs self.packages.${stdenv.system};
discoDrvs = lib.filterAttrs (_: value: lib.isDerivation value) discoPkgs;
filterDrvs = inputs:
lib.filter
(drv:
!(lib.hasAttr "pname" drv) ||
drv.pname == null ||
!(lib.any
(name: name == drv.pname || name == drv.name)
(lib.attrNames discoDrvs)))
inputs;
in
(pkgs.mkShell {
OCAMLRUNPARAM = "b";
inputsFrom = lib.attrValues discoDrvs;
# inputsFrom = [ self.packages.${stdenv.system}.discopotty ];
buildInputs = with pkgs; [
ocaml
ocamlPackages.ocaml-lsp
ocamlPackages.dune
ocamlformat
ocamlPackages.merlin
ocamlPackages.utop
ffmpeg
youtube-dl
];
})
# .overrideAttrs (o: {
# propagatedBuildInputs = filterDrvs o.propagatedBuildInputs;
# buildInputs = filterDrvs o.buildInputs;
# })
ctypes-foreign = super.ocamlPackages.buildDunePackage {
pname = "${self.ocamlPackages.ctypes.pname}-foreign";
inherit (self.ocamlPackages.ctypes) version src;
buildInputs = with self; [ libffi ];
};
# TODO @quartz55: upstream this
websocketaf = super.ocamlPackages.websocketaf.overrideAttrs (_: rec {
rev = "49bb812266608835b56ea75bf18f75666639a760";
src = builtins.fetchurl {
url = "https://github.com/quartz55/websocketaf/archive/${rev}.tar.gz";
sha256 = sha256:0lsnrl8h5bmx866lflnbca4yhwzq4q67d15q51157khnchjr34rq;
};
});
{ pkgs, stdenv, lib, self }:
let
discoPkgs = pkgs.recurseIntoAttrs self.packages.${stdenv.system};
discoDrvs = lib.filterAttrs (_: value: lib.isDerivation value) discoPkgs;
filterDrvs = inputs:
lib.filter
(drv:
!(lib.hasAttr "pname" drv) ||
drv.pname == null ||
!(lib.any
(name: name == drv.pname || name == drv.name)
(lib.attrNames discoDrvs)))
inputs;
in
(pkgs.mkShell {
OCAMLRUNPARAM = "b";
inputsFrom = lib.attrValues discoDrvs;
buildInputs = with pkgs; [
ocamlPackages.ocaml-lsp
ocamlformat
ocamlPackages.merlin
ocamlPackages.utop
ffmpeg
youtube-dl
];
}).overrideAttrs (o: {
propagatedBuildInputs = filterDrvs o.propagatedBuildInputs;
buildInputs = filterDrvs o.buildInputs;
})