{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-circt162.url = "github:NixOS/nixpkgs/7995cae3ad60e3d6931283d650d7f43d31aaa5c7"; flake-utils.url = "github:numtide/flake-utils"; pre-commit-hooks = { url = "github:cachix/pre-commit-hooks.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; nur-xin = { url = "git+https://git.xinyang.life/xin/nur.git"; inputs.nixpkgs.follows = "nixpkgs"; }; ysyx = { url = "github:xinyangli/ysyx-workbench"; }; }; outputs = { self, ... }@inputs: with inputs; flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; config.allowUnfree = true; }; rv32CrossConfig = import nixpkgs { localSystem = system; crossSystem = { config = "riscv32-none-elf"; gcc = { abi = "ilp32"; arch = "rv32if"; }; }; }; in { devShells.default = rv32CrossConfig.mkShell { nativeBuildInputs = with pkgs; [ scons cmake ninja ]; buildInputs = [ inputs.ysyx.packages.${system}.rv32Cross.abstract-machine ]; }; } ); }