anchor.diff:      # 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" ]
  +    "--enable-raw-serial=no"
  +
       # 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" ];
  +    "--enable-a20-pin"
  +    "--enable-avx"
  +    "--enable-busmouse"
  +    "--enable-cdrom"
  +    "--enable-clgd54xx"
  +    "--enable-configurable-msrs"
  +    "--enable-cpu-level=6" # from 3 to 6
  +    "--enable-debugger" #conflicts with gdb-stub option
  +    "--enable-debugger-gui"
  +    "--enable-disasm"
  +    "--enable-e1000"
  +    "--enable-es1370"
  +    "--enable-evex"
  +    "--enable-fpu"
  +    "--enable-gdb-stub=no" # conflicts with debugger option
  +    "--enable-handlers-chaining"
  +    "--enable-idle-hack"
  +    "--enable-iodebug"
  +    "--enable-large-ramfile"
  +    "--enable-largefile"
  +    "--enable-ne2000"
  +    "--enable-pci"
  +    "--enable-plugins=no" # Plugins are a bit buggy in Bochs
  +    "--enable-pnic"
  +    "--enable-repeat-speedups"
  +    "--enable-sb16"
  +    "--enable-show-ips"
  +    "--enable-smp"
  +    "--enable-svm"
  +    "--enable-trace-linking"
  +    "--enable-usb"
  +    "--enable-usb-ehci"
  +    "--enable-usb-ohci"
  +    "--enable-usb-xhci"
  +    "--enable-voodoo"
  +    "--enable-x86-64"
  +    "--enable-x86-debugger"
  +  ]
  +  # Boolean flags
  +  ++ lib.optionals (SDL2 != null) [ "--with-sdl2" ]
  +  ++ lib.optionals (ncurses != null) [ "--with-term" ]
  +  ++ lib.optionals (gtk2 != null && wxGTK != null) [ "--with-wx" ];
   
     NIX_CFLAGS_COMPILE="-I${gtk2.dev}/include/gtk-2.0/ -I${libtool}/include/";
     NIX_LDFLAGS="-L${libtool.lib}/lib";
  
positive.code: 
    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 = with 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
  
negative.code:   };
  
    patches = [
      # A flip between two lines of code, in order to compile with GLIBC 2.26
      ./bochs-2.6.11-glibc-2.26.patch
      # Fix compilation for MSYS2 GCC 10; remove it when the next version arrives
      ./bochs_fix_narrowing_conv_warning.patch
      # SMP-enabled configs; remove it when the next version arrives
      ./fix-build-smp.patch
    ];
  
    nativeBuildInputs = [
      docbook_xml_dtd_45
      docbook_xsl
      pkg-config
    ];
    buildInputs = [
      SDL2
      curl
      gtk2
      libGL
      libtool
      libGLU
      libX11
      libXpm
      ncurses
      readline
      wget
      wxGTK
    ];
  
    configureFlags = [
      "--with-x=yes"
  