# 高云(Gowin)FPGA 开发:开源工具链 + 教育版 IDE + 下载器权限 # IDE 包装源自 ryan4yin/nur-packages(本地 vendoring,因上游已注释掉该包) { pkgs, ... }: let gowin-eda-edu-ide = pkgs.callPackage ../pkgs/gowin-eda-edu-ide { }; in { # openFPGALoader / 串口下载器 users.groups.plugdev = { }; users.users.whc.extraGroups = [ "dialout" "plugdev" ]; # FTDI / Sipeed Tang 等常见下载器(含 TAG+=uaccess,登录用户可直接访问) services.udev.extraRules = '' # openFPGALoader — FTDI 常见 VID/PID(Tang Nano / Primer 等) ACTION!="add|change", GOTO="gowin_fpga_end" SUBSYSTEM!="usb|tty|hidraw", GOTO="gowin_fpga_end" ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="0664", GROUP="plugdev", TAG+="uaccess" ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE="0664", GROUP="plugdev", TAG+="uaccess" ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", MODE="0664", GROUP="plugdev", TAG+="uaccess" ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0664", GROUP="plugdev", TAG+="uaccess" # Sipeed / CMSIS-DAP 类 ATTRS{idVendor}=="1d50", MODE="0664", GROUP="plugdev", TAG+="uaccess" ATTRS{idVendor}=="0d28", ATTRS{idProduct}=="0204", MODE="0664", GROUP="plugdev", TAG+="uaccess" LABEL="gowin_fpga_end" ''; environment.systemPackages = with pkgs; [ # 烧录(官方 Programmer 在 NixOS 上不稳定,优先用这个) openfpgaloader # 开源综合 / 布局布线(Apicula → nextpnr himbaechel/gowin) yosys nextpnr python3Packages.apycula # 仿真与波形 iverilog verilator gtkwave # 高云教育版 IDE:gowin-env / gowin-ide → 启动 gw_ide # 强制 X11,避免 Wayland 下 Qt 插件崩溃 (writeShellScriptBin "gowin-ide" '' export QT_QPA_PLATFORM=xcb exec ${gowin-eda-edu-ide}/bin/gowin-env "$@" '') gowin-eda-edu-ide ]; }