A custom build pico-fido firmware(s) with LibreKeys applied patches
Find a file
github-actions[bot] 5e05f15fed flake.lock: Update
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/f20dc5d9b8027381c474144ecabc9034d6a839a3?narHash=sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0%3D' (2026-03-01)
  → 'github:hercules-ci/flake-parts/3107b77cd68437b9a76194f0f7f9c55f2329ca5b?narHash=sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA%3D' (2026-04-01)
• Updated input 'flake-parts/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/c185c7a5e5dd8f9add5b2f8ebeff00888b070742?narHash=sha256-e%2B/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB%2BQ%3D' (2026-03-01)
  → 'github:nix-community/nixpkgs.lib/333c4e0545a6da976206c74db8773a1645b5870a?narHash=sha256-%2BU7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ%3D' (2026-03-29)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9?narHash=sha256-4hAV26quOxdC6iyG7kYaZcM3VOskcPUrdCQd/nx8obc%3D' (2026-03-24)
  → 'github:NixOS/nixpkgs/6201e203d09599479a3b3450ed24fa81537ebc4e?narHash=sha256-ZojAnPuCdy657PbTq5V0Y%2BAHKhZAIwSIT2cb8UgAz/U%3D' (2026-04-01)
2026-04-09 23:19:39 +05:30
.github/workflows ci: fix: firmware naming 2026-03-03 22:11:31 +01:00
examples ci: add workflows for automatic updates and checks (#9) 2026-03-03 19:16:05 +05:30
lib add pico-fido-openpgp and pico-fido2 2026-03-03 21:22:41 +01:00
pkgs add pico-fido-openpgp and pico-fido2 2026-03-03 21:22:41 +01:00
.gitignore ci: add workflows for automatic updates and checks (#9) 2026-03-03 19:16:05 +05:30
flake.lock flake.lock: Update 2026-04-09 23:19:39 +05:30
flake.nix add pico-fido-openpgp and pico-fido2 2026-03-03 21:22:41 +01:00
LICENSE Initial commit 2026-01-10 12:03:10 +05:30
README.md add pico-fido-openpgp and pico-fido2 2026-03-03 21:22:41 +01:00

pico-fido-firmwares

A custom build pico-fido firmware(s) with LibreKeys applied patches

Build with Flakes

# Build a specific firmware
nix build .#pico-fido
nix build .#pico-fido2
nix build .#pico-openpgp

# Build all firmware variants (matrix build)
nix build .#pico-fido-firmwares
nix build .#pico-fido2-firmwares
nix build .#pico-openpgp-firmwares

For custom parameters, see the Non-Flakes section below (or modify flake.nix directly).

Build with Nix (Non-Flakes)

# Basic build (uses defaults)
nix-build -E 'with import <nixpkgs> {}; callPackage ./pkgs/pico-fido/default.nix {}'
nix-build -E 'with import <nixpkgs> {}; callPackage ./pkgs/pico-fido2/default.nix {}'
nix-build -E 'with import <nixpkgs> {}; callPackage ./pkgs/pico-openpgp/default.nix {}'

# Build matrix (all variants)
nix-build -E 'with import <nixpkgs> {}; callPackage ./pkgs/pico-firmwares/default.nix {}' -A pico-fido-firmwares

Custom Parameters

nix-build -E 'with import <nixpkgs> {}; callPackage ./pkgs/pico-fido/default.nix {
  picoBoard = "waveshare_rp2350_one";
  vidpid = "Yubikey5";
  extraCmakeFlags = [ "-DPICO_DEBUG_INFO_IN_RELEASE=ON" ];
}'

Available Parameters

Parameter Default Description
picoBoard "pico" Target board (e.g., pico, pico2, waveshare_rp2350_one)
vidpid "" VID/PID string (e.g., Yubikey5)
usbVID "" USB Vendor ID (alternative to vidpid)
usbPID "" USB Product ID (alternative to vidpid)
enableEdDSA false Enable EdDSA support
extraCmakeFlags [] Additional cmake flags
secureBootPKey null Path to secure boot private key (NOT TESTED YET!)

Note: vidpid and usbVID/usbPID cannot be used together.