{
  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;};
      })
    ];
}