You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
Go to file
alex a080e1ac79
ci/woodpecker/push/woodpecker Pipeline was successful Details
ci/woodpecker/tag/woodpecker Pipeline was successful Details
nd,ui: add a new facility to be able to change node name
the "nodename" encompasses lnd alias and OS hostname.
while the former may be seen by lightning node peers as a node name, the
latter is how the device is seen on a local network such as WiFi.

upon receiving a comm message set_nodename, nd sets both lightning node
alias and hostname to that new name while applying restrictions such as
RFC 1123 for hostnames.

the lightning alias is written to lnd config file, regenerated and
persistent, after which the lnd daemon is restarted to pick up the
changes. network host name is changed by writing the name to
/etc/hostname and issuing "hostname <newname>" shell command.

while persisting operations are atomic, the whole sequence isn't.
in the latter case an inconsistency can be eliminated by sending a
set_nodename msg again.

the nd daemon also includes the OS hostname in the settings message when
sending it to ngui.
3 months ago
doc start: initial minimal implementation 2 years ago
lib ui/driver: add Xlib support when dev-building on a linux host 4 months ago
src nd,ui: add a new facility to be able to change node name 3 months ago
tools zig: upgrade from 0.10.x to 0.11.0 10 months ago
.clang-format ngui: port some LVGL-based UI code from C to zig 1 year ago
.git-blame-ignore-revs git: add 2ecd44a7 to blame-ignore list 1 year ago
.gitignore repo: initial blank import of zig init-exe 2 years ago
.woodpecker.yml test: reinstate lndhc playground build 4 months ago
LICENSE license: add qeles AG to copyright holders 1 year ago ui/driver: add Xlib support when dev-building on a linux host 4 months ago
build.zig nd,ui: add a new facility to be able to change node name 3 months ago

nakamochi daemon and gui (ndg)

release build for linux/aarch64, a raspberry pi 4:

zig build -Dtarget=aarch64-linux-musl -Ddriver=fbev -Doptimize=ReleaseSafe -Dstrip

a dev build for a native arch linux host running Xorg can be compiled simply with zig build. otherwise, for macOS or non-X11 platforms use SDL2:

zig build -Ddriver=sdl2

local development

you'll need zig v0.11.x. if working on the gui, also SDL2.

note that compiling the daemon on macOS is currently unsupported since it requires some linux primitives.

compiling is expected to be as easy as

# only gui
zig build ngui
# only daemon
zig build nd
# everything at once
zig build

the output is placed in ./zig-out/bin directory. for example, to run the gui, simply execute ./zig-out/bin/ngui.

the build script has a few project-specific options. list them all with a zig build --help command. for instance, to reduce LVGL logging verbosity in debug build mode, one can set this extra build flag:

zig build ngui -Dlvgl_loglevel=warn

run all tests with

zig build test

or a filtered subset using test-filter:

zig build test -Dtest-filter=xxx

significant contributors may find adding .git-blame-ignore-revs file to their git config useful, to skip very likely irrelevant commits when browsing git blame:

git config blame.ignoreRevsFile .git-blame-ignore-revs

see also the contributing section.

CI automated checks

the CI runs code format checks, tests and builds for fbdev+evdev on aarch64 and SDL2. it requires a container image with zig and clang tools such as clang-format.

to make a new image and switch the CI to use it, first modify the ci-containerfile and produce the image locally:

podman build --rm -t ndg-ci -f ./tools/ci-containerfile \
  --build-arg ZIGURL=

then tag it with the target URL, for example:

podman tag localhost/ndg-ci

generate an access token, login to the container registry and push the image to remote:

podman login
podman push

the image will be available at

finally, delete the access token from

what's left is to update the CI build pipeline and delete the older version of the image.


to contribute, create a pull request or send a patch with git send-mail to

before sending a change, please make sure tests pass:

zig build test

and all code is formatted: zig code with zig fmt and C according to the style described by .clang-format file. if clang-format tool is installed, all formatting can be checked with:


note that only C files in src/ are formatted. leave third party libraries as is - it is easier to update and upgrade when the original style is preserved, even if it doesn't match this project.