import moe.rosa.planterette.dsl.* import moe.rosa.planterette.dsl.DSLEnablements.* import kotlin.test.Test import kotlin.test.assertEquals class DSLTest { companion object { val HAKUREI_DSL_TEST = planterette { hakurei("org.chromium.Chromium") { executable("/run/current-system/sw/bin/chromium", "chromium", "--ignore-gpu-blocklist", "--disable-smooth-scrolling", "--enable-features=UseOzonePlatform", "--ozone-platform=wayland" ) enable(Wayland, DBus, Pulse) dbus { session { talk("org.freedesktop.Notifications", "org.freedesktop.FileManager1", "org.freedesktop.ScreenSaver", "org.freedesktop.secrets", "org.kde.kwalletd5", "org.kde.kwalletd6", "org.gnome.SessionManager") own("org.chromium.Chromium.*", "org.mpris.MediaPlayer2.org.chromium.Chromium.*", "org.mpris.MediaPlayer2.chromium.*") call("org.freedesktop.portal.*" to "*") broadcast("org.freedesktop.portal.*" to "@/org/freedesktop/portal/*") filter() } system { talk("org.bluez", "org.freedesktop.Avahi", "org.freedesktop.UPower") filter() } } username("chronos") shell("/run/current-system/sw/bin/zsh") home("/data/data/org.chromium.Chromium") extraPerms( perm("/var/lib/hakurei/u0") { ensure() execute() }, perm("/var/lib/hakurei/u0/org.chromium.Chromium", rwx = "rwx") ) identity(9) groups("video", "dialout", "plugdev") container { hostname("localhost") noTimeout() seccompCompat() devel() userns() hostNet() hostAbstract() tty() multiarch() env("GOOGLE_API_KEY" to "AIzaSyBHDrl33hwRp4rMQY0ziRbj8K9LPA6vUCY", "GOOGLE_DEFAULT_CLIENT_ID" to "77185425430.apps.googleusercontent.com", "GOOGLE_DEFAULT_CLIENT_SECRET" to "OTJgUOQcT7lO7GsGZq2G4IlT") mapRealUid() device() filesystem { bind("/var/lib/hakurei/base/org.debian" to "/") { write() special() } bind("/etc/" to "/etc/") { special() } ephemeral("/tmp/") { write() perm(493) } overlay("/nix/store") { lower("/mnt-root/nix/.ro-store") upper("/mnt-root/nix/.rw-store/upper") work("/mnt-root/nix/.rw-store/work") } bind("/nix/store") link("/run/current-system") { dereference() } link("/run/opengl-driver") { dereference() } bind("/var/lib/hakurei/u0/org.chromium.Chromium" to "/data/data/org.chromium.Chromium") { write() ensure() } bind("/dev/dri") { device() optional() } } } } } } @Test fun hakureiDSLTest() { assertEquals(HakureiTest.TEMPLATE_DATA, HAKUREI_DSL_TEST.hakurei) } }