# ========================================
# FileName: build.yaml
# Date: 07.06.2023
# Author: Marcos Chow Castro
# Email: mctechnology170318@gmail.com
# GitHub: https://github.com/mctechnology17
# Brief: configuration file for ZMK firmware
# Board: nice_nano_v2 and puchi_ble_v1
# shield: corne_left nice_view_adapter nice_view,
#         corne_right nice_view_adapter nice_view,
#         corne_left, corne_right and settings_reset
# =========================================
#                              ╔═╦═╦═╗
#                       ╔════╗ ║║║║║╔╝
#                       ║╔╗╔╗║ ║║║║║╚╗
#                       ╚╝║║╚╝ ║╠═╩╩═╝
#                         ║╠═╦═╣╚╦═╦╦═╦╗╔═╦═╦╦╗
#                         ║║╩╣═╣║║║║║╬║╚╣╬║╬║║║
#                         ╚╩═╩═╩╩╩╩═╩═╩═╩═╬╗╠╗║
#                                         ╚═╩═╝
# This file generates the GitHub Actions matrix
# For simple board + shield combinations, add them
# to the top level board and shield arrays, for more
# control, add individual board + shield combinations to
# the `include` property, e.g:
#
# board: [ "nice_nano_v2" ]
# shield: [ "corne_left", "corne_right" ]
# include:
#   - board: bdn9_rev2
#   - board: nice_nano_v2
#     shield: reviung41
#
# Split Keyboard Halves Unable to Pair
#     https://zmk.dev/docs/troubleshooting
#   - board: nice_nano_v2
#     shield: settings_reset
# Reset Split Keyboard Procedure
# Perform the following steps to reset both halves of your split keyboard:
# - Put each half of the split keyboard into bootloader mode.
# - Flash one of the halves of the split with the downloaded settings reset UF2
# image. Immediately after flashing the chosen half, put it into bootloader
# mode to avoid accidental bonding between the halves.
# - Repeat step 2 with the other half of the split keyboard.
# - Flash the actual image for each half of the split keyboard (e.g
# my_board_left.uf2 to the left half, my_board_right.uf2 to the right half).
#
# After completing these steps, pair the halves of the split keyboard
# together by resetting them at the same time. Most commonly, this is done by
# grounding the reset pins for each of your keyboard's microcontrollers or
# pressing the reset buttons at the same time.
#
# cmake-args: -DKEYMAP_FILE=../../config/other-corne.keymap -DCONFIG_ZMK_KEYBOARD_NAME=\"other-corne\" -DEXTRA_CONF_FILE=../../config/other-corne.conf
---
include:

  ### CORNE START ###
  - board: nice_nano_v2
    shield: corne_left nice_oled
    artifact-name: nice_corne_left_oled_rgb
    snippet: rgb-config studio-rpc-usb-uart
    # nice_nano_v2 + nice_oled + RGB (RIGHT)
  - board: nice_nano_v2
    shield: corne_right nice_oled
    cmake-args: -DCONFIG_NICE_OLED_WIDGET_ANIMATION_PERIPHERAL_CAT=n -DCONFIG_NICE_OLED_WIDGET_ANIMATION_PERIPHERAL_KM=y
    artifact-name: nice_corne_right_oled_rgb
    snippet: rgb-config
  
  ### SOFLE START ###
  - board: nice_nano_v2
    shield: sofle_left nice_oled
    cmake-args: -DCONFIG_ZMK_KEYBOARD_NAME=\"Sofle_Oled\"  -DCONFIG_ZMK_STUDIO=y -DCONFIG_ZMK_SLEEP=y -DCONFIG_ZMK_IDLE_TIMEOUT=60000
    artifact-name: nice_sofle_left_rgb_oled
    snippet: rgb-config studio-rpc-usb-uart
  - board: nice_nano_v2
    shield: sofle_right nice_oled
    cmake-args: -DCONFIG_ZMK_SLEEP=y -DCONFIG_ZMK_IDLE_TIMEOUT=60000 -DCONFIG_NICE_OLED_WIDGET_ANIMATION_PERIPHERAL_CAT=n -DCONFIG_NICE_OLED_WIDGET_ANIMATION_PERIPHERAL_KM=y
    artifact-name: nice_sofle_right_rgb_oled
    snippet: rgb-config

  ### SWEEP START ###
  - board: nice_nano_v2
    shield: sweep_left
    cmake-args: -DCONFIG_ZMK_KEYBOARD_NAME=\"Sweep\"
    artifact-name: nice_sweep_left
    snippet: studio-rpc-usb-uart
    cmake-args: -DCONFIG_ZMK_STUDIO=y
  - board: nice_nano_v2
    shield: sweep_right
    cmake-args: -DCONFIG_ZMK_KEYBOARD_NAME=\"Sweep\"
    artifact-name: nice_sweep_right

  ### LILY58 START ###
  # nice!oled lily58
  - board: nice_nano_v2
    shield: lily58_left nice_oled
    cmake-args: -DCONFIG_ZMK_KEYBOARD_NAME=\"lily58_Oled\"  -DCONFIG_ZMK_STUDIO=y -DCONFIG_ZMK_SLEEP=y -DCONFIG_ZMK_IDLE_TIMEOUT=60000
    artifact-name: nice_lily58_left_oled
    snippet: studio-rpc-usb-uart
  - board: nice_nano_v2
    shield: lily58_right nice_oled
    cmake-args: -DCONFIG_ZMK_SLEEP=y -DCONFIG_ZMK_IDLE_TIMEOUT=60000 -DCONFIG_NICE_OLED_WIDGET_ANIMATION_PERIPHERAL_CAT=n -DCONFIG_NICE_OLED_WIDGET_ANIMATION_PERIPHERAL_KM=y
    artifact-name: nice_lily58_right_oled

  # # peripheral_left
  # - board: nice_nano_v2
  #   shield: lily58_left_peripheral nice_oled
  #   cmake-args: -DCONFIG_ZMK_SLEEP=y -DCONFIG_ZMK_IDLE_TIMEOUT=60000
  #   artifact-name: nice_lily58_left_peripheral_oled

  # # ProMicro_Dongle
  # - board: nice_nano_v2
  #   shield: lily58_dongle_pro_micro dongle_display
  #   cmake-args: -DCONFIG_ZMK_KEYBOARD_NAME=\"lily58Dongle_P\"  -DCONFIG_ZMK_STUDIO=y -DCONFIG_ZMK_SLEEP=n -DCONFIG_ZMK_IDLE_TIMEOUT=60000
  #   artifact-name: nice_lily58_dongle_oled
  #   snippet: studio-rpc-usb-uart
  ### LILY58 END ###

  ### SETTINGS_RESET START ###
  - board: nice_nano_v2
    shield: settings_reset
    artifact-name: nice_settings_reset
  ### SETTINGS_RESET END ###
