On 2023-08-27, Liliana Marie Prikler wrote: > CLI options are very broadly scoped. For instance, with > transformations, we have a dedicated procedure to turn them into a > transformation that can more easily be used inside a manifest. On the > general side… > > … every command is available also as a Scheme procedure that takes its > arguments as a list directly. Thus, you can quite easily transform the > above to > > (use-modules (guix script shell)) > (guix-shell "-m" "manifest.scm" "--container" "-F" "-N" …) > > Of course, if you want to dig deeper, you can also call the functions > guix-shell ends up calling, but whether doing so makes sense is up for > you to decide. > > Happy hacking! It works, here the code as a reference for someone else that maybe will need something similar ;;; coniatner.scm ``` #!/usr/bin/env -S guile -s !# (use-modules (guix scripts shell)) (let ((args (list "-m" "manifest.scm" "--container" "-F" "-N" "-P" (string-append "--share=" (getenv "ANDROID_SDK_ROOT")) "--preserve='^DISPLAY$'" "--preserve='^XAUTHORITY$'" "--preserve='^DBUS_'" (string-append "--expose=" (getenv "XAUTHORITY")) "--expose=/var/run/dbus" "--expose=/sys/dev" "--expose=/sys/devices" "--expose=/dev/dri" "--expose=/dev/kvm"))) (apply guix-shell (append args (cdr (command-line))))) ``` and then in `.envrc` ``` eval $(./container.scm --search-paths) ``` or from terminal ``` ./container.scm ```