2024-11-30 21:08:22 +00:00
|
|
|
{
|
2024-12-12 01:19:02 +00:00
|
|
|
perSystem = { libMy, pkgs, ... }:
|
|
|
|
let
|
|
|
|
genImgsPy = pkgs.python3.withPackages (ps: with ps; [ pillow ]);
|
|
|
|
genImgs = pkgs.writeScriptBin "gen-imgs" ''
|
|
|
|
#!${genImgsPy}/bin/python
|
|
|
|
import itertools
|
|
|
|
import os
|
|
|
|
|
|
|
|
from PIL import Image
|
|
|
|
|
|
|
|
imgs = ['bg.png']
|
|
|
|
for fname in imgs:
|
|
|
|
with Image.open(os.path.join('assets/', fname)) as img:
|
|
|
|
w = img.width
|
|
|
|
h = img.height
|
|
|
|
|
|
|
|
data = [(r >> 3) << 11 | (g >> 2) << 5 | (b >> 3) for r, g, b in img.getdata()]
|
|
|
|
|
|
|
|
basename = os.path.splitext(fname)[0]
|
|
|
|
with open(os.path.join('main/img/', basename + '.c'), 'w') as f:
|
|
|
|
f.write(
|
|
|
|
'#include <inttypes.h>\n\n'
|
|
|
|
'#include "lvgl.h"\n\n'
|
|
|
|
'static const uint16_t _data[] = {\n')
|
|
|
|
|
|
|
|
for group in itertools.batched(data, 20):
|
|
|
|
f.write(' ' + ' '.join(map(lambda i: f'{i:#x},', group)) + '\n')
|
|
|
|
|
|
|
|
f.write('};\n\n')
|
|
|
|
|
|
|
|
f.write(
|
|
|
|
f'const lv_image_dsc_t ui_img_{basename} = {{\n'
|
|
|
|
' .header.magic = LV_IMAGE_HEADER_MAGIC,\n'
|
|
|
|
' .header.cf = LV_COLOR_FORMAT_RGB565,\n'
|
|
|
|
f' .header.w = {w},\n'
|
|
|
|
f' .header.h = {h},\n'
|
|
|
|
' .data_size = sizeof(_data) * 2,\n'
|
|
|
|
' .data = (const uint8_t *)_data,\n'
|
|
|
|
'};\n')
|
|
|
|
'';
|
|
|
|
in
|
|
|
|
{
|
2024-11-30 21:08:22 +00:00
|
|
|
devenv.shells.firmware = libMy.withRootdir {
|
|
|
|
packages = with pkgs; [
|
|
|
|
esp-idf-esp32s3
|
|
|
|
picocom
|
2024-12-11 21:18:18 +00:00
|
|
|
lv_font_conv
|
2024-12-12 01:19:02 +00:00
|
|
|
genImgs
|
2024-11-30 21:08:22 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
env = {
|
|
|
|
# PICO_SDK_PATH = "${pkgs.pico-sdk}/lib/pico-sdk";
|
|
|
|
};
|
|
|
|
|
|
|
|
scripts = {
|
|
|
|
init.exec = ''
|
|
|
|
idf.py set-target esp32s3
|
|
|
|
'';
|
2024-12-11 21:18:18 +00:00
|
|
|
gen-fonts.exec = ''
|
2024-12-13 02:29:01 +00:00
|
|
|
for s in 40 180; do
|
2024-12-11 21:18:18 +00:00
|
|
|
DEBUG='*' lv_font_conv --font assets/Tungsten-Bold.ttf --bpp 4 --size $s -r 0x20-0x7F --no-compress \
|
|
|
|
--format lvgl --lv-include lvgl.h --lv-font-name lv_font_tungsten_"$s" -o main/font/tungsten_"$s".c
|
|
|
|
done
|
|
|
|
'';
|
2024-11-30 21:08:22 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|