be5f3bd31e
Also, nixfmt
166 lines
4.6 KiB
Nix
166 lines
4.6 KiB
Nix
{
|
|
lib,
|
|
SDL2,
|
|
curl,
|
|
darwin,
|
|
docbook_xml_dtd_45,
|
|
docbook_xsl,
|
|
fetchurl,
|
|
gtk3,
|
|
libGL,
|
|
libGLU,
|
|
libX11,
|
|
libXpm,
|
|
libtool,
|
|
ncurses,
|
|
pkg-config,
|
|
readline,
|
|
stdenv,
|
|
wget,
|
|
wxGTK32,
|
|
# Boolean flags
|
|
enableSDL2 ? true,
|
|
enableTerm ? true,
|
|
enableWx ? !stdenv.hostPlatform.isDarwin,
|
|
enableX11 ? !stdenv.hostPlatform.isDarwin,
|
|
}:
|
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "bochs";
|
|
version = "2.8";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://sourceforge/project/bochs/bochs/${finalAttrs.version}/bochs-${finalAttrs.version}.tar.gz";
|
|
hash = "sha256-qFsTr/fYQR96nzVrpsM7X13B+7EH61AYzCOmJjnaAFk=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
docbook_xml_dtd_45
|
|
docbook_xsl
|
|
libtool
|
|
pkg-config
|
|
];
|
|
|
|
buildInputs =
|
|
[
|
|
curl
|
|
readline
|
|
wget
|
|
]
|
|
++ lib.optionals enableSDL2 [
|
|
SDL2
|
|
]
|
|
++ lib.optionals enableTerm [
|
|
ncurses
|
|
]
|
|
++ lib.optionals enableWx [
|
|
gtk3
|
|
wxGTK32
|
|
]
|
|
++ lib.optionals enableX11 [
|
|
libGL
|
|
libGLU
|
|
libX11
|
|
libXpm
|
|
]
|
|
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
|
darwin.libobjc
|
|
];
|
|
|
|
configureFlags =
|
|
[
|
|
(lib.withFeature false "rfb")
|
|
(lib.withFeature false "vncsrv")
|
|
(lib.withFeature true "nogui")
|
|
|
|
# These will always be "yes" on NixOS
|
|
(lib.enableFeature true "ltdl-install")
|
|
(lib.enableFeature true "readline")
|
|
(lib.enableFeature true "all-optimizations")
|
|
(lib.enableFeature true "logging")
|
|
(lib.enableFeature true "xpm")
|
|
|
|
# ... whereas these, always "no"!
|
|
(lib.enableFeature false "cpp")
|
|
(lib.enableFeature false "instrumentation")
|
|
|
|
(lib.enableFeature false "docbook") # Broken - it requires docbook2html
|
|
|
|
# Dangerous options - they are marked as "incomplete/experimental" on Bochs documentation
|
|
(lib.enableFeature false "3dnow")
|
|
(lib.enableFeature false "monitor-mwait")
|
|
(lib.enableFeature false "raw-serial")
|
|
|
|
# These are completely configurable, and they don't depend of external tools
|
|
(lib.enableFeature true "a20-pin")
|
|
(lib.enableFeature true "avx")
|
|
(lib.enableFeature true "busmouse")
|
|
(lib.enableFeature true "cdrom")
|
|
(lib.enableFeature true "clgd54xx")
|
|
(lib.enableFeature true "configurable-msrs")
|
|
(lib.enableFeatureAs true "cpu-level" "6") # from 3 to 6
|
|
(lib.enableFeature true "debugger") # conflicts with gdb-stub option
|
|
(lib.enableFeature true "debugger-gui")
|
|
(lib.enableFeature true "evex")
|
|
(lib.enableFeature true "fpu")
|
|
(lib.enableFeature false "gdb-stub") # conflicts with debugger option
|
|
(lib.enableFeature true "handlers-chaining")
|
|
(lib.enableFeature true "idle-hack")
|
|
(lib.enableFeature true "iodebug")
|
|
(lib.enableFeature true "large-ramfile")
|
|
(lib.enableFeature true "largefile")
|
|
(lib.enableFeature true "pci")
|
|
(lib.enableFeature true "repeat-speedups")
|
|
(lib.enableFeature true "show-ips")
|
|
(lib.enableFeature true "smp")
|
|
(lib.enableFeatureAs true "vmx" "2")
|
|
(lib.enableFeature true "svm")
|
|
(lib.enableFeature true "trace-linking")
|
|
(lib.enableFeature true "usb")
|
|
(lib.enableFeature true "usb-ehci")
|
|
(lib.enableFeature true "usb-ohci")
|
|
(lib.enableFeature true "usb-xhci")
|
|
(lib.enableFeature true "voodoo")
|
|
(lib.enableFeature true "x86-64")
|
|
(lib.enableFeature true "x86-debugger")
|
|
]
|
|
++ lib.optionals enableSDL2 [
|
|
(lib.withFeature true "sdl2")
|
|
]
|
|
++ lib.optionals enableTerm [
|
|
(lib.withFeature true "term")
|
|
]
|
|
++ lib.optionals enableWx [
|
|
(lib.withFeature true "wx")
|
|
]
|
|
++ lib.optionals enableX11 [
|
|
(lib.withFeature true "x")
|
|
(lib.withFeature true "x11")
|
|
]
|
|
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
|
|
(lib.enableFeature true "e1000")
|
|
(lib.enableFeature true "es1370")
|
|
(lib.enableFeature true "ne2000")
|
|
(lib.enableFeature true "plugins")
|
|
(lib.enableFeature true "pnic")
|
|
(lib.enableFeature true "sb16")
|
|
];
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
meta = {
|
|
homepage = "https://bochs.sourceforge.io/";
|
|
description = "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.
|
|
'';
|
|
license = lib.licenses.lgpl2Plus;
|
|
maintainers = with lib.maintainers; [ AndersonTorres ];
|
|
platforms = lib.platforms.unix;
|
|
};
|
|
})
|
|
# TODO: a better way to organize the options
|
|
# TODO: docbook (docbook-tools from RedHat mirrors should help)
|