{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; zmk-nix = { url = "github:lilyinstarlight/zmk-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; zmk-helpers = { url = "github:urob/zmk-helpers"; flake = false; }; hanck = { url = "git+https://cgit.krebsco.de/hanck"; flake = false; }; }; outputs = { self, nixpkgs, zmk-nix, zmk-helpers, hanck }: let forAllSystems = nixpkgs.lib.genAttrs (nixpkgs.lib.attrNames zmk-nix.packages); in { packages = forAllSystems (system: rec { default = firmware; firmware = zmk-nix.legacyPackages.${system}.buildSplitKeyboard { name = "firmware"; src = nixpkgs.lib.sourceFilesBySuffices self [ ".board" ".cmake" ".conf" ".defconfig" ".dts" ".dtsi" ".json" ".keymap" ".overlay" ".shield" ".yml" "_defconfig" ]; board = "nice_nano_v2"; shield = "hanck_duo_%PART%"; zephyrDepsHash = "sha256-9xdpgu0/A2ZWmJNSlyQ172MGCnkOf/A8WLYp7dvjJ5A="; extraCmakeFlags = [ "-DZMK_EXTRA_MODULES=${hanck}/zmk;${zmk-helpers}" ]; meta = { description = "ZMK firmware"; license = nixpkgs.lib.licenses.mit; platforms = nixpkgs.lib.platforms.all; }; }; flash = zmk-nix.packages.${system}.flash.override { inherit firmware; }; update = zmk-nix.packages.${system}.update; }); devShells = forAllSystems (system: { default = zmk-nix.devShells.${system}.default; }); }; }