From 5121c4b0228fcc1385081fc70cafdfcbb79db7a0 Mon Sep 17 00:00:00 2001 From: eljamm Date: Fri, 3 Apr 2026 12:36:57 +0200 Subject: [PATCH] felix86: init at 26.04 --- pkgs/by-name/fe/felix86/package.nix | 66 +++++++++++++++++++++++++++++ pkgs/by-name/fe/felix86/test.nix | 35 +++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 pkgs/by-name/fe/felix86/package.nix create mode 100644 pkgs/by-name/fe/felix86/test.nix diff --git a/pkgs/by-name/fe/felix86/package.nix b/pkgs/by-name/fe/felix86/package.nix new file mode 100644 index 000000000000..20a53729c324 --- /dev/null +++ b/pkgs/by-name/fe/felix86/package.nix @@ -0,0 +1,66 @@ +{ + lib, + stdenv, + fetchFromGitHub, + + cmake, + pkg-config, + + libGL, + libx11, + vulkan-headers, + vulkan-loader, + + callPackage, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "felix86"; + version = "26.04"; + + src = fetchFromGitHub { + owner = "OFFTKP"; + repo = "felix86"; + tag = finalAttrs.version; + hash = "sha256-onhPibvO74yo95zop7EhG+EILn4M70X9ivhS9I+fIBY="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + pkg-config + vulkan-headers + ]; + + buildInputs = [ + libGL + libx11 + vulkan-loader + ]; + + installPhase = '' + runHook preInstall + + install -Dm755 felix86 $out/bin/felix86 + + runHook postInstall + ''; + + cmakeFlags = [ + (lib.cmakeBool "ZYDIS_BUILD_DOXYGEN" false) + (lib.cmakeBool "BUILD_TESTS" true) + ]; + + passthru.tests = callPackage ./test.nix { }; + + meta = { + description = "x86 and x86-64 userspace emulator for RISC-V Linux"; + homepage = "https://github.com/OFFTKP/felix86"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ eljamm ]; + teams = with lib.teams; [ ngi ]; + mainProgram = "felix86"; + platforms = [ "riscv64-linux" ]; + }; +}) diff --git a/pkgs/by-name/fe/felix86/test.nix b/pkgs/by-name/fe/felix86/test.nix new file mode 100644 index 000000000000..3dbd202d8eaa --- /dev/null +++ b/pkgs/by-name/fe/felix86/test.nix @@ -0,0 +1,35 @@ +{ + pkgs, + ... +}: + +pkgs.testers.nixosTest { + name = "felix86"; + + nodes.machine = + { + config, + pkgs, + ... + }: + { + boot.binfmt.emulatedSystems = [ "riscv64-linux" ]; + + environment.systemPackages = [ + pkgs.pkgsCross.riscv64.felix86 + ]; + }; + + testScript = + # python + '' + machine.wait_for_unit("multi-user.target") + machine.succeed("felix86 --help") + ''; + + interactive.nodes.machine = { + virtualisation.graphics = false; + environment.systemPackages = [ pkgs.binutils ]; + }; + interactive.sshBackdoor.enable = true; +}