I would like to have a standard node which can be configured in eeprom

I would like to have a standard node which can be configured in eeprom to support (1) different string lengths, (2) selectable pins, and (3) pixel chip type.

Does the template approach in FastLED require that at least the latter 2 parameters be constants at compile time, or is it possible to have code read the desired config from eeprom at boot time and set up FastLED accordingly?

2 and 3 have to be set at compile time. Look at the allpixel firmware for an example of how to do this.

I’m not finding any “allpixel” example on your github - is that somewhere else?

It’s a different project that uses FastLED as a driver, but doing what you’re describing. I don’t have their github info offhand (not at my laptop).

Ok, found the relevant code at AllPixel/Firmware.ino at master · ManiacalLabs/AllPixel · GitHub

Basically still uses a compile time constant for the pin, but selects the FastLED instance in a case statement (with #ifdef symbols to include / omit pixel types).

I think this means that the code for every enabled (#ifdef’d in) pixel type is included, but only the class member data for the dynamically (eeprom config based) pixel type chosen.

Seems like a reasonable tradeoff for many use cases, in particular hardware which has a single pixel driving port with fixed pin association, such at the allpixel device. Any single pin pixels use pin 2, any SPI pixel uses the hardware SPI port.