@@ -1,4 +1,4 @@
1−{ lib, stdenv, fetchurl, coreutils, nettools, java, scala, polyml, z3, veriT, vampire, eprover-ho, naproche, rlwrap, perl, makeDesktopItem }:
1+{ lib, stdenv, fetchurl, coreutils, nettools, java, scala, polyml, z3, veriT, vampire, eprover-ho, naproche, rlwrap, perl, makeDesktopItem, isabelle-components, isabelle, symlinkJoin }:
22# nettools needed for hostname
33
44stdenv.mkDerivation rec {
@@ -153,4 +153,29 @@ stdenv.mkDerivation rec {
153153 maintainers = [ maintainers.jwiegley maintainers.jvanbruegge ];
154154 platforms = platforms.linux;
155155 };
156+} // {
157+ withComponents = f:
158+ let
159+ base = "$out/${isabelle.dirname}";
160+ components = f isabelle-components;
161+ in symlinkJoin {
162+ name = "isabelle-with-components-${isabelle.version}";
163+ paths = [ isabelle ] ++ components;
164+
165+ postBuild = ''
166+ rm $out/bin/*
167+
168+ cd ${base}
169+ rm bin/*
170+ cp ${isabelle}/${isabelle.dirname}/bin/* bin/
171+ rm etc/components
172+ cat ${isabelle}/${isabelle.dirname}/etc/components > etc/components
173+
174+ export HOME=$TMP
175+ bin/isabelle install $out/bin
176+ patchShebangs $out/bin
177+ '' + lib.concatMapStringsSep "\n" (c: ''
178+ echo contrib/${c.pname}-${c.version} >> ${base}/etc/components
179+ '') components;
180+ };
156181}