Gitea je soukromý, rychlý a spolehlivý Git server s webem. Nechce se mi používat github ani gitlab (nechce se mi platit za privátní repozitáře) a chci soukromý vlastní web s gitem pro sebe a pro své studenty, který si budu spravovat sám. Tady je návod, jak jsem to udělal.

Instalace

Virtuál KVM (Gentoo) s OpenBSD

Instalaci budu dělat na OpenBSD 7.5. Potřebuji poměrně hodně místa pro Postgresql databázi a vlastní gitové repozitáře, proto přidám k virtuálnímu stroji, co běží na Gentoo Linuxu v KVM, dva virtuální disky: 50GB na databázi a 250GB na repozitáře.

Vytvoření diskových obrazů pomocí qemu-img
kvm2 ~ # cd /home/vm/mx3
kvm2 ~ # qemu-img create -f qcow2 mx3-disk3.qcow2 50G
kvm2 ~ # qemu-img create -f qcow2 mx3-disk4.qcow2 250G
Úprava startovacího skriptu virtuálního stroje s OpenBSD /etc/init.d/kvm-mx3
kvm2 ~ # cat /etc/init.d/kvm-mx3
#!/sbin/openrc-run
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
extra_commands="zaloha"

NAME="mx3"
MEMORY="4800M"
CORES=4
VIRTDISK="/home/vm/mx3/mx3.qcow2"
VIRTDISK2="/home/vm/mx3/mx3-disk2.qcow2" # web
VIRTDISK3="/home/vm/mx3/mx3-disk3.qcow2" # postgresql
VIRTDISK4="/home/vm/mx3/mx3-disk4.qcow2" # gitea
ZALOHA="/mnt/backup/vm/mx3/mx3.qcow2"
ZALOHA2="/mnt/backup/vm/mx3/mx3-disk2.qcow2"
ZALOHA3="/mnt/backup/vm/mx3/mx3-disk3.qcow2"
ZALOHA4="/mnt/backup/vm/mx3/mx3-disk4.qcow2"
ISOIMG="/home/vm/iso/install75.iso"
pidfile="/run/kvm-${NAME}.pid"
PORT=5904
MAC="00:34:2d:36:e5:04"
NETDEV="mp4"
BR="br0"
TAP="tap4"
CHANNEL=0
SECRET="/etc/qemu/spice_secrets"

depend() {
	use logger clock hostname net
}

start() {
	ebegin "Starting ${SVCNAME}"
	mkdir -p /run/kvm-${NAME}
	qemu-system-x86_64 -enable-kvm \
			-name ${NAME} \
			-smp cores=${CORES} \
			-cpu host \
			-m ${MEMORY} \
			-drive driver=qcow2,file=${VIRTDISK},if=virtio \
			-drive driver=qcow2,file=${VIRTDISK2},if=virtio \
			-drive driver=qcow2,file=${VIRTDISK3},if=virtio \
			-drive driver=qcow2,file=${VIRTDISK4},if=virtio \
			-cdrom ${ISOIMG} \
			-device virtio-net,netdev=${NETDEV},mac=${MAC} \
			-netdev tap,id=${NETDEV},ifname=${TAP},br=${BR} \
			-boot order=c \
			-object secret,id=spice_secrets,file=${SECRET} \
			-vga qxl -device virtio-serial-pci -spice port=${PORT},password-secret=spice_secrets \
			-device virtserialport,chardev=spicechannel${CHANNEL},name=com.redhat.spice.${CHANNEL} -chardev spicevmc,id=spicechannel${CHANNEL},name=vdagent \
			-monitor unix:/run/kvm-${NAME}/monitor,server,nowait \
			-object rng-random,id=rng${CHANNEL},filename=/dev/urandom -device virtio-rng-pci,rng=rng${CHANNEL} \
			-daemonize \
			-pidfile ${pidfile}
	eend $?
}

stop() {
	ebegin "Stopping ${SVCNAME}"
	ssh mx3.lixis.cz "halt -p" || echo system_powerdown | socat - UNIX-CONNECT:/run/kvm-${NAME}/monitor
	sleep 40
	start-stop-daemon --stop --pidfile ${pidfile}
	ret=$?
	eend ${ret}
}

zaloha() {
	stop
	ebegin "Zalohuji ${SVCNAME}"
	mv ${ZALOHA}.7.zst ${ZALOHA}.8.zst
	mv ${ZALOHA}.6.zst ${ZALOHA}.7.zst
	mv ${ZALOHA}.5.zst ${ZALOHA}.6.zst
	mv ${ZALOHA}.4.zst ${ZALOHA}.5.zst
	mv ${ZALOHA}.3.zst ${ZALOHA}.4.zst
	mv ${ZALOHA}.2.zst ${ZALOHA}.3.zst
	mv ${ZALOHA}.1.zst ${ZALOHA}.2.zst
	zstd -10 -T8 -k -c -o ${ZALOHA}.1.zst -- ${VIRTDISK}
	mv ${ZALOHA2}.7.zst ${ZALOHA2}.8.zst
	mv ${ZALOHA2}.6.zst ${ZALOHA2}.7.zst
	mv ${ZALOHA2}.5.zst ${ZALOHA2}.6.zst
	mv ${ZALOHA2}.4.zst ${ZALOHA2}.5.zst
	mv ${ZALOHA2}.3.zst ${ZALOHA2}.4.zst
	mv ${ZALOHA2}.2.zst ${ZALOHA2}.3.zst
	mv ${ZALOHA2}.1.zst ${ZALOHA2}.2.zst
	zstd -10 -T8 -k -c -o ${ZALOHA2}.1.zst -- ${VIRTDISK2}
	mv ${ZALOHA3}.7.zst ${ZALOHA3}.8.zst
	mv ${ZALOHA3}.6.zst ${ZALOHA3}.7.zst
	mv ${ZALOHA3}.5.zst ${ZALOHA3}.6.zst
	mv ${ZALOHA3}.4.zst ${ZALOHA3}.5.zst
	mv ${ZALOHA3}.3.zst ${ZALOHA3}.4.zst
	mv ${ZALOHA3}.2.zst ${ZALOHA3}.3.zst
	mv ${ZALOHA3}.1.zst ${ZALOHA3}.2.zst
	zstd -10 -T8 -k -c -o ${ZALOHA3}.1.zst -- ${VIRTDISK3}
	mv ${ZALOHA4}.7.zst ${ZALOHA4}.8.zst
	mv ${ZALOHA4}.6.zst ${ZALOHA4}.7.zst
	mv ${ZALOHA4}.5.zst ${ZALOHA4}.6.zst
	mv ${ZALOHA4}.4.zst ${ZALOHA4}.5.zst
	mv ${ZALOHA4}.3.zst ${ZALOHA4}.4.zst
	mv ${ZALOHA4}.2.zst ${ZALOHA4}.3.zst
	mv ${ZALOHA4}.1.zst ${ZALOHA4}.2.zst
	zstd -10 -T8 -k -c -o ${ZALOHA4}.1.zst -- ${VIRTDISK4}
	eend $?
	start
}

Dále budu pracovat už jenom s virtuálem OpenBSD 7.5

Přidání disků do OpenBSD systému

Disk pro postgesql ( 50GB )
# fdisk -e sd2
1> reinit
1> write
1> exit
# disklabel -E sd2
> a a
> w
> q
# newfs sda2
Disk pro gitea ( 250 GB )
# fdisk -e sd3
1> reinit
1> write
1> exit
# disklabel -E sd3
> a a
> w
> q
# newfs sda3
Zjistění disků
# sysctl hw.disknames >>/etc/fstab
Úprava /etc/fstab
8a2a42aee73bbdbb.a /var/postgresql ffs rw,nodev,nosuid 1 2
ef959ea9144fb41b.a /var/gitea ffs rw,nodev,nosuid 1 2
Připojení do systému
# mount /var/postgresql
# mount /var/gitea

Instalace softwarových balíků

# pkg_add -u
# pkg_add go git postgresql
# pkg_add gitea
# chown _gitea:_gitea /var/gitea
# chown _postgresql:_postgresql /var/postgresql

Inicializace databáze

# su - _postgresql
$ initdb -D /var/postgresql/data
$ Ctrl+D
# rcctl enable postgresql
# rcctl start postgresql
# su - _postgresql
$ createuser -d -P gitea
Enter password for new role: (1)
Enter it again:
$ createdb -O gitea gitea
$ exit
1 Heslo se nevypisuje, zcela jistě si ho poznamenám na papír, protože ho budu potřebovat dále.

Přidání záznamů do DNS

Přidám v zóně lixis.cz A a AAAA záznamy pro git.lixis.cz.

git     IN A        46.253.96.61
git     IN AAAA     2a0e:5340:4:400::ffe

Vytvoření certifikátů pro web

Upravím si /etc/acme-client a /etc/httpd.conf a nechám si vystavit certifikáty pro web git.lixis.cz.

Přidán do /etc/acme-client
domain git.lixis.cz {
        domain key "/etc/ssl/private/git.lixis.cz.key"
        domain certificate "/etc/ssl/git.lixis.cz.crt"
        domain full chain certificate "/etc/ssl/git.lixis.cz.fullchain.pem"
        sign with letsencrypt
}
Přidám do /etc/httpd.conf
server "git.lixis.cz" {
    listen on * port 80
    location "/.well-known/acme-challenge/*" {
        root "/acme"
        request strip 2
        }
}

Restaruji httpd server a nechám si vystavit certifikát

# rcctl restart httpd
httpd(ok)
httpd(ok)
# acme-client -v git.lixis.cz

Nastavení gitea

Giteu budu provozovat za httpd serverem, abych nemusel řešit šifrování a změnu https portu, na stroji mě běží ještě jiné weby.

Musím upravit konfigurační soubor gitey:

Úpravy /etc/gitea/app.ini (jenom změny proti defaultu)
APP_NAME = Gitea: git.lixis.cz
[server]
PROTOCOL = fcgi+unix
DOMAIN = git.lixis.cz
ROOT_URL = https://git.lixis.cz/
HTTP_ADDR = /var/www/run/gitea/gitea.sock
LOCAL_ROOT_URL = %(ROOT_URL)s
APP_DATA_PATH = /var/gitea/data
SSH_DOMAIN = git.lixis.cz
DISABLE_SSH = false

[database]
DB_TYPE = postgres
; can use socket e.g. /tmp
HOST = 127.0.0.1:5432
NAME = gitea
USER = gitea
PASSWD = heslo_k_databazi_co_jsem_si_poznamenal
SCHEMA =
SSL_MODE = disable
PATH = /var/gitea/data/gitea.db
LOG_SQL = false

[repository]
ROOT = /var/gitea/gitea-repositories

Vytvořím repozitář /var/gitea/gitea-repositories. Vytvořím adresář pro komunikační socket /var/www/run/gitea. Dále nastavím, aby gitea automaticky startovala po naběhnutí systému a spustím ji.

# mkdir /var/gitea/gitea-repositories
# chown _gitea:_gitea /var/gitea/gitea-repositories
# install -d -o _gitea /var/www/run/gitea
# rcctl enable gitea
# rcctl start gitea

Konfigurace httpd (2. úprava)

Musím ještě zkonfigurovat web, abych mohl používat https protokol a komunikovat přes Fast-CGI s giteou.

Úpravy /etc/httpd.conf
server "git.lixis.cz" {
    listen on * port 80
    location "/.well-known/acme-challenge/*" {
        root "/acme"
        request strip 2
        }
    block return 301 "https://git.lixis.cz$REQUEST_URI"     (1)
}

server "git.lixis.cz" {
    listen on * tls port 443
    tls {
        certificate     "/etc/ssl/git.lixis.cz.fullchain.pem"
        key             "/etc/ssl/private/git.lixis.cz.key"
        }
    root "/gitea"
    location "/.well-known/acme-challenge/*" {
        root "/acme"
        request strip 2
        no fastcgi
        }
    location "/assets/*" {
        no fastcgi
        }
    location "*" {
        fastcgi socket "run/gitea/gitea.sock" (2)
        }

}
1 Http požadavky přesměruji na https.
2 Komunikace s giteou přes fastcgi socket.
Po úpravě /etc/httpd.conf musím restartnout httpd server
# rcctl restart httpd
httpd(ok)
httpd(ok)
#

První přihlášení pomocí prohlížeče

Přihlásím se pomocí prohlížeče na https://git.lixis.cz a objeví se mi konfigurační obrazovka a možnost vytvořit prvního uživatele. První uživatel je zárověň administrátor celého systému.

Už to frčí

Snímek obrazovky pořízený 2024 08 06 05 27 27

A to je vše. Teď mi zbývá abych se s tím naučil pracovat.

Zdroje a odkazy

Gitea: Easy Self-Hosted Git Repositories! — tady to pán dělá na Proxmoxu a Debianu.

How to Install Gitea on OpenBSD — trochu odlišný postup na starší verzi OpenBSD.

Testování

Vytvořím si na webu novou repozitory microzig. Na lokálním stroji si připravím projekt. Na vzdáleném webu jsem si přidal svůj veřejný ssh klíč.

Příprava projektu a upload
jirka@jirka-Precision-T3610:~$ cd microzig
jirka@jirka-Precision-T3610:~/microzig$ git init
jirka@jirka-Precision-T3610:~/microzig$ git checkout -b main
jirka@jirka-Precision-T3610:~/microzig$ git add README.md
jirka@jirka-Precision-T3610:~/microzig$ git add build.zig
jirka@jirka-Precision-T3610:~/microzig$ git add build.zig.zon
jirka@jirka-Precision-T3610:~/microzig$ git add LICENSE
jirka@jirka-Precision-T3610:~/microzig$ git add core
jirka@jirka-Precision-T3610:~/microzig$ git add docs
jirka@jirka-Precision-T3610:~/microzig$ git add examples
jirka@jirka-Precision-T3610:~/microzig$ git add website
jirka@jirka-Precision-T3610:~/microzig$ git add core/*
jirka@jirka-Precision-T3610:~/microzig$ git add core/src/*
jirka@jirka-Precision-T3610:~/microzig$ git add core/src/test/*
jirka@jirka-Precision-T3610:~/microzig$ git add examples/*
jirka@jirka-Precision-T3610:~/microzig$ git add website/*
jirka@jirka-Precision-T3610:~/microzig$ git add bsp/*
jirka@jirka-Precision-T3610:~/microzig$ git commit -m "1. commit"
[main (root-commit) 9a085cc] 1. commit
 346 files changed, 508803 insertions(+)
 create mode 100644 LICENSE
 create mode 100644 README.md
 create mode 100644 bsp/espressif/esp/LICENSE
 create mode 100644 bsp/espressif/esp/README.md
 create mode 100644 bsp/espressif/esp/build.zig
 create mode 100644 bsp/espressif/esp/build.zig.zon
 create mode 100644 bsp/espressif/esp/docs/esp32-c3-32s-pinout.png
 create mode 100644 bsp/espressif/esp/docs/esp32-c3-32s-pinout.xcf
 create mode 100755 bsp/espressif/esp/perform-flash.sh
 create mode 100644 bsp/espressif/esp/src/chips/ESP32-C3.svd
 create mode 100644 bsp/espressif/esp/src/cpus/espressif-riscv.zig
 create mode 100644 bsp/espressif/esp/src/example/blinky.zig
 create mode 100644 bsp/espressif/esp/src/hals/ESP32_C3.zig
 create mode 100644 bsp/gigadevice/gd32/LICENSE
 create mode 100644 bsp/gigadevice/gd32/README.md
 create mode 100644 bsp/gigadevice/gd32/build.zig
 create mode 100644 bsp/gigadevice/gd32/build.zig.zon
 create mode 100644 bsp/gigadevice/gd32/src/boards/longan_nano.zig
 create mode 100644 bsp/gigadevice/gd32/src/chips/GD32VF103.json
 create mode 100644 bsp/gigadevice/gd32/src/hals/GD32VF103.zig
 create mode 100644 bsp/gigadevice/gd32/src/hals/GD32VF103/gpio.zig
 create mode 100644 bsp/gigadevice/gd32/src/hals/GD32VF103/hal.zig
 create mode 100644 bsp/gigadevice/gd32/src/hals/GD32VF103/pins.zig
 create mode 100644 bsp/gigadevice/gd32/src/hals/GD32VF103/uart.zig
 create mode 100644 bsp/gigadevice/gd32/test/programs/minimal.zig
 create mode 100644 bsp/microchip/atsam/LICENSE
 create mode 100644 bsp/microchip/atsam/README.md
 create mode 100644 bsp/microchip/atsam/build.zig
 create mode 100644 bsp/microchip/atsam/build.zig.zon
 create mode 100644 bsp/microchip/atsam/src/chips/ATSAMD51J19A.atdf
 create mode 100644 bsp/microchip/avr/LICENSE
 create mode 100644 bsp/microchip/avr/README.md
 create mode 100644 bsp/microchip/avr/build.zig
 create mode 100644 bsp/microchip/avr/build.zig.zon
 create mode 100644 bsp/microchip/avr/src/boards.zig
 create mode 100644 bsp/microchip/avr/src/boards/arduino_nano.zig
 create mode 100644 bsp/microchip/avr/src/boards/arduino_uno.zig
 create mode 100644 bsp/microchip/avr/src/boards/itsybitsy_32u4.zig
 create mode 100644 bsp/microchip/avr/src/chips.zig
 create mode 100644 bsp/microchip/avr/src/chips/ATmega328P.json
 create mode 100644 bsp/microchip/avr/src/chips/ATmega32U4.json
 create mode 100644 bsp/microchip/avr/src/hals/ATmega328P.zig
 create mode 100644 bsp/microchip/avr/src/hals/ATmega32U4.zig
 create mode 100644 bsp/microchip/avr/test/programs/minimal.zig
 create mode 100644 bsp/nordic/nrf5x/LICENSE
 create mode 100644 bsp/nordic/nrf5x/README.md
 create mode 100644 bsp/nordic/nrf5x/build.zig
 create mode 100644 bsp/nordic/nrf5x/build.zig.zon
 create mode 100644 bsp/nordic/nrf5x/src/boards/nrf52840-dongle.zig
 create mode 100644 bsp/nordic/nrf5x/src/chips/nrf52.json
 create mode 100644 bsp/nordic/nrf5x/src/chips/nrf52840.json
 create mode 100644 bsp/nordic/nrf5x/test/nrf52840.robot
 create mode 100644 bsp/nordic/nrf5x/test/programs/minimal.zig
 create mode 100644 bsp/nxp/lpc/LICENSE
 create mode 100644 bsp/nxp/lpc/README.md
 create mode 100644 bsp/nxp/lpc/build.zig
 create mode 100644 bsp/nxp/lpc/build.zig.zon
 create mode 100644 bsp/nxp/lpc/src/boards/mbed_LPC1768.zig
 create mode 100644 bsp/nxp/lpc/src/chips/LPC176x5x.json
 create mode 100644 bsp/nxp/lpc/src/hals/LPC176x5x.zig
 create mode 100644 bsp/nxp/lpc/src/tools/patchelf.zig
 create mode 100644 bsp/nxp/lpc/test/programs/minimal.zig
 create mode 100644 bsp/raspberrypi/rp2040/LICENSE
 create mode 100644 bsp/raspberrypi/rp2040/README.md
 create mode 100644 bsp/raspberrypi/rp2040/build.zig
 create mode 100644 bsp/raspberrypi/rp2040/build.zig.zon
 create mode 100644 bsp/raspberrypi/rp2040/rp2040.ld
 create mode 100644 bsp/raspberrypi/rp2040/src/boards/raspberry_pi_pico.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/boards/shared/bootrom.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/boards/waveshare_rp2040_eth.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/boards/waveshare_rp2040_matrix.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/boards/waveshare_rp2040_plus_16m.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/boards/waveshare_rp2040_plus_4m.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/at25sf128a.S
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/generic_03h.S
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/is25lp080.S
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/legacy.S
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/shared/addressmap.h
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/shared/asm_helper.S
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/shared/exit_from_boot2.S
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/shared/m0plus.h
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/shared/pads_qspi.h
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/shared/read_flash_sreg.S
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/shared/regs.h
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/shared/ssi.h
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/shared/stage2.ld
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/shared/wait_ssi_ready.S
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/w25q080.S
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/w25q32jvssiq.S
 create mode 100644 bsp/raspberrypi/rp2040/src/bootroms/w25x10cl.S
 create mode 100644 bsp/raspberrypi/rp2040/src/chips/rp2040.svd
 create mode 100644 bsp/raspberrypi/rp2040/src/hal.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/adc.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/clocks.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/dma.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/flash.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/gpio.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/hw.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/i2c.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/irq.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/multicore.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pins.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/Expression.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/README.md
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/addition.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/addition.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/apa102.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/apa102.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/blink.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/blink.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/clocked_input.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/clocked_input.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/differential_manchester.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/differential_manchester.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/hello.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/hello.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/hub75.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/hub75.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/i2c.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/i2c.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/manchester_encoding.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/manchester_encoding.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/nec_carrier_burst.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/nec_carrier_burst.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/nec_carrier_control.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/nec_carrier_control.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/nec_receive.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/nec_receive.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/pio_serialiser.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/pio_serialiser.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/pwm.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/pwm.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/quadrature_encoder.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/quadrature_encoder.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/resistor_dac.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/resistor_dac.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/spi.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/spi.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/squarewave.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/squarewave.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/squarewave_fast.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/squarewave_fast.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/squarewave_test.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/squarewave_wrap.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/squarewave_wrap.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/st7789_lcd.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/st7789_lcd.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/uart_rx.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/uart_rx.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/uart_tx.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/uart_tx.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/ws2812.pio
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/comparison_tests/ws2812.pio.h
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/encoder.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pio/assembler/tokenizer.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pll.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/pwm.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/random.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/resets.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/rom.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/spi.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/time.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/uart.zig
 create mode 100644 bsp/raspberrypi/rp2040/src/hal/usb.zig
 create mode 100644 bsp/raspberrypi/rp2040/tools/rp2040-flash.zig
 create mode 100644 bsp/stmicro/stm32/LICENSE
 create mode 100644 bsp/stmicro/stm32/README.md
 create mode 100644 bsp/stmicro/stm32/build.zig
 create mode 100644 bsp/stmicro/stm32/build.zig.zon
 create mode 100644 bsp/stmicro/stm32/src/boards/STM3240G_EVAL.zig
 create mode 100644 bsp/stmicro/stm32/src/boards/STM32F3DISCOVERY.zig
 create mode 100644 bsp/stmicro/stm32/src/boards/STM32F429IDISCOVERY.zig
 create mode 100644 bsp/stmicro/stm32/src/boards/STM32F4DISCOVERY.zig
 create mode 100644 bsp/stmicro/stm32/src/chips/STM32F103.json
 create mode 100644 bsp/stmicro/stm32/src/chips/STM32F303.json
 create mode 100644 bsp/stmicro/stm32/src/chips/STM32F407.json
 create mode 100644 bsp/stmicro/stm32/src/chips/STM32F429.json
 create mode 100644 bsp/stmicro/stm32/src/chips/STM32L0x1.svd
 create mode 100644 bsp/stmicro/stm32/src/chips/STM32L0x2.svd
 create mode 100644 bsp/stmicro/stm32/src/chips/STM32L0x3.svd
 create mode 100644 bsp/stmicro/stm32/src/hals/STM32F103.zig
 create mode 100644 bsp/stmicro/stm32/src/hals/STM32F103/gpio.zig
 create mode 100644 bsp/stmicro/stm32/src/hals/STM32F103/hal.zig
 create mode 100644 bsp/stmicro/stm32/src/hals/STM32F103/pins.zig
 create mode 100644 bsp/stmicro/stm32/src/hals/STM32F303.zig
 create mode 100644 bsp/stmicro/stm32/src/hals/STM32F407.zig
 create mode 100644 bsp/stmicro/stm32/src/hals/STM32F429.zig
 create mode 100644 bsp/stmicro/stm32/test/programs/minimal.zig
 create mode 100644 bsp/stmicro/stm32/test/stm32f103.robot
 create mode 100644 build.zig
 create mode 100644 build.zig.zon
 create mode 100644 core/LICENSE
 create mode 100644 core/build.zig
 create mode 100644 core/build.zig.zon
 create mode 100644 core/src/core.zig
 create mode 100644 core/src/core/experimental.zig
 create mode 100644 core/src/core/experimental/clock.zig
 create mode 100644 core/src/core/experimental/debug.zig
 create mode 100644 core/src/core/experimental/gpio.zig
 create mode 100644 core/src/core/experimental/i2c.zig
 create mode 100644 core/src/core/experimental/pin.zig
 create mode 100644 core/src/core/experimental/spi.zig
 create mode 100644 core/src/core/experimental/uart.zig
 create mode 100644 core/src/core/heap.zig
 create mode 100644 core/src/core/usb.zig
 create mode 100644 core/src/core/usb/cdc.zig
 create mode 100644 core/src/core/usb/hid.zig
 create mode 100644 core/src/core/usb/templates.zig
 create mode 100644 core/src/core/usb/types.zig
 create mode 100644 core/src/core/usb/utils.zig
 create mode 100644 core/src/core/usb/vendor.zig
 create mode 100644 core/src/cpus/avr5.zig
 create mode 100644 core/src/cpus/cortex_m.zig
 create mode 100644 core/src/cpus/cortex_m/m0.zig
 create mode 100644 core/src/cpus/cortex_m/m0plus.zig
 create mode 100644 core/src/cpus/cortex_m/m3.zig
 create mode 100644 core/src/cpus/cortex_m/m4.zig
 create mode 100644 core/src/cpus/riscv32.zig
 create mode 100644 core/src/drivers.zig
 create mode 100644 core/src/drivers/experimental.zig
 create mode 100644 core/src/drivers/experimental/button.zig
 create mode 100644 core/src/drivers/experimental/quadrature.zig
 create mode 100644 core/src/interrupt.zig
 create mode 100644 core/src/microzig.zig
 create mode 100644 core/src/mmio.zig
 create mode 100644 core/src/start.zig
 create mode 100644 core/test/backings.zig
 create mode 100644 core/test/board.zig
 create mode 100644 core/test/chip.zig
 create mode 100644 core/test/cpu.zig
 create mode 100644 core/test/hal.zig
 create mode 100644 core/test/programs/blinky.zig
 create mode 100644 core/test/programs/has_board.zig
 create mode 100644 core/test/programs/has_dependencies.zig
 create mode 100644 core/test/programs/has_hal.zig
 create mode 100644 core/test/programs/interrupt.zig
 create mode 100644 core/test/programs/minimal.zig
 create mode 100644 core/test/programs/uart-sync.zig
 create mode 100644 core/thoughts.md
 create mode 100644 design/logo-text-auto.svg
 create mode 100644 design/logo-text-brightmode.svg
 create mode 100644 design/logo-text-darkmode.svg
 create mode 100644 design/logo-text-inkscape.svg
 create mode 100644 design/logo.svg
 create mode 100644 design/social-media-preview.png
 create mode 100644 design/social-media-preview.xcf
 create mode 100644 docs/design.md
 create mode 100644 docs/images/deps.dot
 create mode 100644 docs/images/deps.svg
 create mode 100644 examples/espressif/esp/LICENSE
 create mode 100644 examples/espressif/esp/README.md
 create mode 100644 examples/espressif/esp/build.zig
 create mode 100644 examples/espressif/esp/build.zig.zon
 create mode 100644 examples/espressif/esp/src/blinky.zig
 create mode 100644 examples/gigadevice/gd32/LICENSE
 create mode 100644 examples/gigadevice/gd32/build.zig
 create mode 100644 examples/gigadevice/gd32/build.zig.zon
 create mode 100644 examples/gigadevice/gd32/src/blinky.zig
 create mode 100644 examples/gigadevice/gd32/src/empty.zig
 create mode 100644 examples/microchip/atsam/LICENSE
 create mode 100644 examples/microchip/atsam/build.zig
 create mode 100644 examples/microchip/atsam/build.zig.zon
 create mode 100644 examples/microchip/atsam/src/blinky.zig
 create mode 100644 examples/microchip/avr/LICENSE
 create mode 100644 examples/microchip/avr/build.zig
 create mode 100644 examples/microchip/avr/build.zig.zon
 create mode 100644 examples/microchip/avr/src/blinky.zig
 create mode 100644 examples/nordic/nrf5x/LICENSE
 create mode 100644 examples/nordic/nrf5x/README.md
 create mode 100644 examples/nordic/nrf5x/build.zig
 create mode 100644 examples/nordic/nrf5x/build.zig.zon
 create mode 100644 examples/nordic/nrf5x/src/blinky.zig
 create mode 100644 examples/nxp/lpc/LICENSE
 create mode 100644 examples/nxp/lpc/README.md
 create mode 100644 examples/nxp/lpc/build.zig
 create mode 100644 examples/nxp/lpc/build.zig.zon
 create mode 100644 examples/nxp/lpc/src/blinky.zig
 create mode 100644 examples/raspberrypi/rp2040/LICENSE
 create mode 100644 examples/raspberrypi/rp2040/README.md
 create mode 100644 examples/raspberrypi/rp2040/build.zig
 create mode 100644 examples/raspberrypi/rp2040/build.zig.zon
 create mode 100755 examples/raspberrypi/rp2040/scripts/hid_test.py
 create mode 100755 examples/raspberrypi/rp2040/scripts/usb_device_loopback.py
 create mode 100644 examples/raspberrypi/rp2040/src/adc.zig
 create mode 100644 examples/raspberrypi/rp2040/src/blinky.zig
 create mode 100644 examples/raspberrypi/rp2040/src/blinky_core1.zig
 create mode 100644 examples/raspberrypi/rp2040/src/flash_id.zig
 create mode 100644 examples/raspberrypi/rp2040/src/flash_program.zig
 create mode 100644 examples/raspberrypi/rp2040/src/gpio_clk.zig
 create mode 100644 examples/raspberrypi/rp2040/src/i2c_bus_scan.zig
 create mode 100644 examples/raspberrypi/rp2040/src/pwm.zig
 create mode 100644 examples/raspberrypi/rp2040/src/random.zig
 create mode 100644 examples/raspberrypi/rp2040/src/spi_master.zig
 create mode 100644 examples/raspberrypi/rp2040/src/squarewave.zig
 create mode 100644 examples/raspberrypi/rp2040/src/tiles.zig
 create mode 100644 examples/raspberrypi/rp2040/src/uart.zig
 create mode 100644 examples/raspberrypi/rp2040/src/usb_cdc.zig
 create mode 100644 examples/raspberrypi/rp2040/src/usb_hid.zig
 create mode 100644 examples/raspberrypi/rp2040/src/ws2812.zig
 create mode 100644 examples/stmicro/stm32/LICENSE
 create mode 100644 examples/stmicro/stm32/build.zig
 create mode 100644 examples/stmicro/stm32/build.zig.zon
 create mode 100644 examples/stmicro/stm32/src/blinky.zig
 create mode 100644 website/.envrc
 create mode 100644 website/.gitattributes
 create mode 100644 website/.github/workflows/pr.yml
 create mode 100644 website/.github/workflows/website.yml
 create mode 100644 website/.gitignore
 create mode 100644 website/.gitmodules
 create mode 100644 website/LICENCE
 create mode 100644 website/README.md
 create mode 100644 website/WIP.md
 create mode 100644 website/build.zig
 create mode 100644 website/build.zig.zon
 create mode 100644 website/content/articles/.keep
 create mode 100644 website/content/getting-started.md
 create mode 100644 website/content/index.md
 create mode 100644 website/content/tutorials/01-embedded-basics.md
 create mode 100644 website/content/tutorials/02-embedded-programming.md
 create mode 100644 website/content/tutorials/memory-map.png
 create mode 100644 website/ember-icon.xcf
 create mode 100644 website/flake.lock
 create mode 100644 website/flake.nix
 create mode 100644 website/layouts/getting-started.html
 create mode 100644 website/layouts/index.html
 create mode 100644 website/layouts/templates/base.html
 create mode 100644 website/layouts/tutorial.html
 create mode 100644 website/legacy-ssg/main.zig
 create mode 100644 website/static/favicon.ico
 create mode 100644 website/static/img/articles.svg
 create mode 100644 website/static/img/atom.svg
 create mode 100644 website/static/img/battery.svg
 create mode 100644 website/static/img/chat-discord.svg
 create mode 100644 website/static/img/chat-irc.svg
 create mode 100644 website/static/img/code.svg
 create mode 100644 website/static/img/community.svg
 create mode 100644 website/static/img/ember.svg
 create mode 100644 website/static/img/goals.svg
 create mode 100644 website/static/img/members.svg
 create mode 100644 website/static/img/pager.svg
 create mode 100644 website/static/img/read-more.svg
 create mode 100644 website/static/img/teacher.svg
 create mode 100644 website/static/style.css
jirka@jirka-Precision-T3610:~/microzig$ git remote add origin _gitea@git.lixis.cz:jirka/microzig.git (1)
jirka@jirka-Precision-T3610:~/microzig$ git push --set-upstream origin main
jirka@jirka-Precision-T3610:~/microzig$ git add for-extraction/*
jirka@jirka-Precision-T3610:~/microzig$ git commit -m "Pridano for-extraction"
[main 15927a0] Pridano for-extraction
 3 files changed, 366 insertions(+)
 create mode 100644 for-extraction/uf2-flasher/build.zig
 create mode 100644 for-extraction/uf2-flasher/build.zig.zon
 create mode 100644 for-extraction/uf2-flasher/src/main.zig
jirka@jirka-Precision-T3610:~/microzig$ git push --set-upstream origin main
1 Poslání pomocí https git remote add origin https://git.lixis.cz/jirka/microzig.git nechce fungovat. Funguje posílání jenom přes ssh.