Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ commands:
jobs:
prep_env:
docker:
# Docker image: tlaurion/heads-dev-env:v0.2.7
- image: tlaurion/heads-dev-env@sha256:5f890f3d1b6b57f9e567191695df003a2ee880f084f5dfe7a5633e3e8f937479
# Docker image: tlaurion/heads-dev-env:v0.2.9
Copy link
Copy Markdown
Collaborator

@tlaurion tlaurion Mar 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's v0.2.9 (commit msg says v0.2.8)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed: 32ec30a

- image: tlaurion/heads-dev-env@sha256:96f8f91c6464305c4a990d59f9ef93910c16c7fd0501a46b43b34a4600a368de
resource_class: large
working_directory: ~/heads
steps:
Expand Down Expand Up @@ -124,8 +124,8 @@ jobs:

build_and_persist:
docker:
# Docker image: tlaurion/heads-dev-env:v0.2.7
- image: tlaurion/heads-dev-env@sha256:5f890f3d1b6b57f9e567191695df003a2ee880f084f5dfe7a5633e3e8f937479
# Docker image: tlaurion/heads-dev-env:v0.2.9
- image: tlaurion/heads-dev-env@sha256:96f8f91c6464305c4a990d59f9ef93910c16c7fd0501a46b43b34a4600a368de
resource_class: large
working_directory: ~/heads
parameters:
Expand Down Expand Up @@ -153,8 +153,8 @@ jobs:

build:
docker:
# Docker image: tlaurion/heads-dev-env:v0.2.7
- image: tlaurion/heads-dev-env@sha256:5f890f3d1b6b57f9e567191695df003a2ee880f084f5dfe7a5633e3e8f937479
# Docker image: tlaurion/heads-dev-env:v0.2.9
- image: tlaurion/heads-dev-env@sha256:96f8f91c6464305c4a990d59f9ef93910c16c7fd0501a46b43b34a4600a368de
resource_class: large
working_directory: ~/heads
parameters:
Expand All @@ -175,8 +175,8 @@ jobs:

save_cache:
docker:
# Docker image: tlaurion/heads-dev-env:v0.2.7
- image: tlaurion/heads-dev-env@sha256:5f890f3d1b6b57f9e567191695df003a2ee880f084f5dfe7a5633e3e8f937479
# Docker image: tlaurion/heads-dev-env:v0.2.9
- image: tlaurion/heads-dev-env@sha256:96f8f91c6464305c4a990d59f9ef93910c16c7fd0501a46b43b34a4600a368de
resource_class: large
working_directory: ~/heads
steps:
Expand Down
1 change: 1 addition & 0 deletions boards/novacustom-v540tu/novacustom-v540tu.config
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=dasharo
export CONFIG_DASHARO_EC=y
export CONFIG_LINUX_VERSION=6.1.8

CONFIG_COREBOOT_CONFIG=config/coreboot-novacustom-v540tu.config
Expand Down
1 change: 1 addition & 0 deletions boards/novacustom-v560tu/novacustom-v560tu.config
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

export CONFIG_COREBOOT=y
export CONFIG_COREBOOT_VERSION=dasharo
export CONFIG_DASHARO_EC=y
export CONFIG_LINUX_VERSION=6.1.8

CONFIG_COREBOOT_CONFIG=config/coreboot-novacustom-v560tu.config
Expand Down
5 changes: 3 additions & 2 deletions config/coreboot-novacustom-v540tu.config
Original file line number Diff line number Diff line change
Expand Up @@ -543,8 +543,9 @@ CONFIG_RCBA_LENGTH=0x4000
# Embedded Controllers
#
CONFIG_EC_ACPI=y
CONFIG_EC_SYSTEM76_EC=y
# CONFIG_EC_SYSTEM76_EC_UPDATE is not set
CONFIG_EC_DASHARO_EC=y
CONFIG_EC_DASHARO_EC_UPDATE=y
CONFIG_EC_DASHARO_EC_UPDATE_FILE="ec.rom"

#
# Intel Firmware
Expand Down
4 changes: 2 additions & 2 deletions docker/DOCKER_REPRO_DIGEST
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@
# sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

# Place the digest on the first non-comment line below (remove the leading '#')
# Version: v0.2.7
sha256:5f890f3d1b6b57f9e567191695df003a2ee880f084f5dfe7a5633e3e8f937479
# Version: v0.2.9
sha256:96f8f91c6464305c4a990d59f9ef93910c16c7fd0501a46b43b34a4600a368de
19 changes: 18 additions & 1 deletion flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,23 @@
# Inputs define external dependencies and their sources.
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # Using the unstable channel for the latest packages, while flake.lock fixates the commit reused until changed.
# No flake for 3.8.0
# Pinned nixpkgs for sdcc 4.2.0 - matches: https://github.com/Dasharo/ec-sdk/pull/2
# sdcc 4.5.0 has optimizer bug: https://github.com/Dasharo/dasharo-issues/issues/1785
nixpkgs-sdcc.url = "github:nixos/nixpkgs/7a339d87931bba829f68e94621536cad9132971a";
flake-utils.url = "github:numtide/flake-utils"; # Utilities for flake functionality.
};
# Outputs are the result of the flake, including the development environment and Docker image.
outputs = {
self,
flake-utils,
nixpkgs,
nixpkgs-sdcc,
...
}:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = nixpkgs.legacyPackages.${system}; # Accessing the legacy package set.
pkgs-sdcc = nixpkgs-sdcc.legacyPackages.${system}; # Pinned for sdcc 4.2.0
lib = pkgs.lib; # The standard Nix packages library.

# Dependencies are the packages required for the Heads project.
Expand Down Expand Up @@ -63,11 +69,13 @@
psmisc #process tools like killall, pstree, etc
python3 # me_cleaner, coreboot
rsync # coreboot
pkgs-sdcc.sdcc # Dasharo EC build — pinned to 4.2.0 (matches Debian oldstable, 4.5 has optimizer bug)
sharutils
texinfo
unzip
wget
which
xxd # Dasharo EC build
xz
zip
zlib
Expand Down
53 changes: 53 additions & 0 deletions modules/dasharo-ec
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
ifeq "$(CONFIG_DASHARO_EC)" "y"

modules-y += dasharo-ec

dasharo-ec_repo := https://github.com/Dasharo/ec
dasharo-ec_commit_hash := d198b641195e60e13afc17be9464e4f402d1c2fa

# Map BOARD to the EC board model
ifeq "$(BOARD)" "novacustom-v540tu"
DASHARO_EC_BOARD_MODEL := v540tu
else ifeq "$(BOARD)" "novacustom-v560tu"
DASHARO_EC_BOARD_MODEL := v560tu
else
$(error "$(BOARD): no Dasharo EC board model mapping defined")
endif

dasharo-ec_version := $(dasharo-ec_commit_hash)
dasharo-ec_base_dir := dasharo-ec-$(dasharo-ec_version)-$(BOARD)
dasharo-ec_dir := dasharo-ec-$(dasharo-ec_version)-$(BOARD)

# ec.rom is copied to a stable path by the explicit rule below
dasharo-ec_output := ec.rom

# No-op configure: submodules are handled by the EC Makefile's canary rule
# for git repos
dasharo-ec_configure :=

# Build the EC firmware: only pass make arguments; post-build steps are
# handled by the explicit rule below.
dasharo-ec_target := BOARD=novacustom/$(DASHARO_EC_BOARD_MODEL)

# Copy ec.rom from the dynamic build path to a stable location and pad to
# 128KB as required by coreboot. Runs after the module make completes.
$(build)/$(dasharo-ec_dir)/ec.rom: $(build)/$(dasharo-ec_dir)/.build
sh -c 'cp $(build)/$(dasharo-ec_dir)/build/novacustom/$(DASHARO_EC_BOARD_MODEL)/*/ec.rom $@'
dd if=/dev/zero of=$@ bs=1 seek=128k count=0

# Copy ec.rom into the coreboot source tree before coreboot builds.
# coreboot_base_dir (coreboot-dasharo) is shared between v540tu and v560tu, so
# a plain timestamp-based rule is racy: whichever board built last wins the mtime
# race and the other board silently keeps the wrong binary. Adding FORCE makes the
# recipe always run so we can do a content check; the actual cp (and the mtime
# update that triggers downstream rebuilds) only happens when the content differs.
$(build)/$(coreboot_base_dir)/ec.rom: $(build)/$(dasharo-ec_dir)/ec.rom FORCE
@if ! cmp -s "$(build)/$(dasharo-ec_dir)/ec.rom" "$@" 2>/dev/null; then \
echo "$(DATE) COPY $(DASHARO_EC_BOARD_MODEL) ec.rom -> coreboot"; \
cp "$(build)/$(dasharo-ec_dir)/ec.rom" "$@"; \
fi

# Ensure coreboot's configure step depends on ec.rom being present
$(build)/$(coreboot_dir)/.configured: $(build)/$(coreboot_base_dir)/ec.rom

endif