112 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
| 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)
 | |
|     }
 | |
| }
 |