{ pkgs, config, lib, options, ... }: let configForSystem = ( system: let riscv = ["riscv32-linux" "riscv64-linux"]; arm = ["armv6l-linux" "armv7l-linux" "aarch64-linux"]; x86 = ["i686-linux" "x86_64-linux"]; windows = ["x86_64-windows" "i686-windows"]; systems = { x86_64-linux = riscv ++ arm; aarch64-linux = riscv; }; in if (systems ? "${system}") then systems."${system}" else [] ); emulatedSystems = configForSystem "${pkgs.system}"; cfg = config.nixfiles.binfmt; in { options.nixfiles.binfmt = { enable = lib.mkOption { description = "Whether to configure default binfmt emulated systems for the current architecture"; type = lib.types.bool; default = false; example = true; }; }; config = let enable = cfg.enable && (builtins.length emulatedSystems) > 0; in lib.mkMerge [ (lib.mkIf enable { boot.binfmt = {inherit emulatedSystems;}; }) ]; }