diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/virtualization/bochs/default.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/virtualization/bochs/default.nix | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/virtualization/bochs/default.nix b/nixpkgs/pkgs/applications/virtualization/bochs/default.nix new file mode 100644 index 000000000000..f9d7128330fb --- /dev/null +++ b/nixpkgs/pkgs/applications/virtualization/bochs/default.nix @@ -0,0 +1,129 @@ +{ stdenv, fetchurl +, pkgconfig, libtool +, gtk2, libGLU_combined, readline, libX11, libXpm +, docbook_xml_dtd_45, docbook_xsl +, sdlSupport ? true, SDL2 ? null +, termSupport ? true, ncurses ? null +, wxSupport ? true, wxGTK ? null +, wgetSupport ? false, wget ? null +, curlSupport ? false, curl ? null +}: + +assert sdlSupport -> (SDL2 != null); +assert termSupport -> (ncurses != null); +assert wxSupport -> (gtk2 != null && wxGTK != null); +assert wgetSupport -> (wget != null); +assert curlSupport -> (curl != null); + +with stdenv.lib; +stdenv.mkDerivation rec { + + name = "bochs-${version}"; + version = "2.6.9"; + + src = fetchurl { + url = "mirror://sourceforge/project/bochs/bochs/${version}/${name}.tar.gz"; + sha256 = "1379cq4cnfprhw8mgh60i0q9j8fz8d7n3d5fnn2g9fdiv5znfnzf"; + }; + + patches = [ ./bochs-2.6.9-glibc-2.26.patch ]; + + buildInputs = with stdenv.lib; + [ pkgconfig libtool gtk2 libGLU_combined readline libX11 libXpm docbook_xml_dtd_45 docbook_xsl ] + ++ optionals termSupport [ ncurses ] + ++ optionals sdlSupport [ SDL2 ] + ++ optionals wxSupport [ wxGTK ] + ++ optionals wgetSupport [ wget ] + ++ optionals curlSupport [ curl ]; + + configureFlags = [ + "--with-x=yes" + "--with-x11=yes" + + "--with-rfb=no" + "--with-vncsrv=no" + "--with-svga=no" # it doesn't compile on NixOS + + # These will always be "yes" on NixOS + "--enable-ltdl-install=yes" + "--enable-readline=yes" + "--enable-all-optimizations=yes" + "--enable-logging=yes" + "--enable-xpm=yes" + + # ... whereas these, always "no"! + "--enable-cpp=no" + "--enable-instrumentation=no" + + "--enable-docbook=no" # Broken - it requires docbook2html + + # Dangerous options - they are marked as "incomplete/experimental" on Bochs documentation + "--enable-3dnow=no" + "--enable-monitor-mwait=no" + "--enable-raw-serial=no" ] + # Boolean flags + ++ optionals termSupport [ "--with-term" ] + ++ optionals sdlSupport [ "--with-sdl2" ] + ++ optionals wxSupport [ "--with-wx" ] + # These are completely configurable, and they don't depend of external tools + ++ [ "--enable-cpu-level=6" # from 3 to 6 + "--enable-largefile" + "--enable-idle-hack" + "--enable-plugins=no" # Plugins are a bit buggy in Bochs + "--enable-a20-pin" + "--enable-x86-64" + "--enable-smp" + "--enable-large-ramfile" + "--enable-repeat-speedups" + "--enable-handlers-chaining" + "--enable-trace-linking" + "--enable-configurable-msrs" + "--enable-show-ips" + "--enable-debugger" #conflicts with gdb-stub option + "--enable-disasm" + "--enable-debugger-gui" + "--enable-gdb-stub=no" # conflicts with debugger option + "--enable-iodebug" + "--enable-fpu" + "--enable-svm" + "--enable-avx" + "--enable-evex" + "--enable-x86-debugger" + "--enable-pci" + "--enable-usb" + "--enable-usb-ohci" + "--enable-usb-ehci" + "--enable-usb-xhci" + "--enable-ne2000" + "--enable-pnic" + "--enable-e1000" + "--enable-clgd54xx" + "--enable-voodoo" + "--enable-cdrom" + "--enable-sb16" + "--enable-es1370" + "--enable-busmouse" ]; + + NIX_CFLAGS_COMPILE="-I${gtk2.dev}/include/gtk-2.0/ -I${libtool}/include/"; + NIX_LDFLAGS="-L${libtool.lib}/lib"; + + hardeningDisable = [ "format" ]; + + enableParallelBuilding = true; + + meta = { + description = "An open-source IA-32 (x86) PC emulator"; + longDescription = '' + Bochs is an open-source (LGPL), highly portable IA-32 PC emulator, written + in C++, that runs on most popular platforms. It includes emulation of the + Intel x86 CPU, common I/O devices, and a custom BIOS. + ''; + homepage = http://bochs.sourceforge.net/; + license = licenses.lgpl2Plus; + maintainers = [ maintainers.AndersonTorres ]; + platforms = platforms.unix; + }; +} +# TODO: plugins +# TODO: svga support - the Bochs sources explicitly cite /usr/include/vga.h +# TODO: a better way to organize the options |