local utils = require("utils") local alpine = require("alpine") local alpine_base_version = "3.17" local alpine_version = alpine_base_version..".1" local packages = { "alpine-baselayout", -- "alpine-conf", "busybox", "libc-utils", "alpine-keys", } modules = {} local root = "./root" function add_packages(new_packages) utils.table_concat(packages, new_packages) end function add_file(path, content) utils.expect_nil(alpine.write_file(root, path, content)) end function add_symlink(path, target) utils.expect_nil(alpine.symlink(root, path, target)) end function chmod(path, perms) utils.expect_nil(alpine.chmod(root, path, perms)) end function mkdir(path) utils.expect_nil(alpine.mkdir(root, path)) end function touch(path) utils.expect_nil(alpine.touch(root, path)) end print("=> Initializing rootfs...") utils.expect_nil(alpine.init_rootfs(root, alpine_base_version, alpine_version)) local function module(name) print("=> Module: " .. name) require("modules/" .. name) end module "fstab" module "data" module "kernel" module "runit" module "socklog" module "hostname" module "dhcpcd" module "ntpsec" module "nginx" module "nftables" print("=> Installing and upgrading packages...") utils.expect_nil(alpine.make_world(root, packages)) print("=> Setting password...") utils.expect_nil(alpine.set_password(root, "root", "1")) print("=> Moving boot...") utils.expect_nil(alpine.move_boot(root)) print("=> Making image...") utils.expect_nil(alpine.make_squashfs(root, "image.squashfs"))