~refi64/nsbox

A powerful pet container manager
8d9c0ebc — Ryan Gonzalez 3 years ago
Rewrite PTY forwarding in C for performance
502a4b9c — Ryan Gonzalez 3 years ago
Reformat all the GN files
afaf9a9a — Ryan Gonzalez 3 years ago
gtkicons: Reformat and add missing license header

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~refi64/nsbox
read/write
git@git.sr.ht:~refi64/nsbox

You can also use your local clone with git send-email.

#nsbox

nsbox is a multi-purpose, nspawn-powered container manager. Please see the website for more user-friendly information and documentation.

#Build dependencies

You need:

  • Google's GN to generate the build files. Building this from source is pretty simple, see the instructions on the site for more info.
  • Ninja to actually...build stuff.
  • The Go compiler.
  • GCC or Clang for compiling cgo code.
  • Python 3, which is used to run some of the build scripts.
  • The systemd development headers.

#Building the code

Run:

$ go mod vendor
$ gn gen out
$ ninja -C out

The resulting files should all be under out/install. Then, you can run build/install.py out to install to /usr/local (or set --prefix and/or --destdir, with the usual meanings).

#Build configuration

Run gn args --list out to see all the configuration arguments nsbox supports. You can use these options to set the saved paths (e.g. the libexec directory) to your distro's preferred locations.

#Building the website

Run:

$ cd web
$ yarn
# Run a development web server:
$ yarn run dev
# Build the production docs:
$ yarn run build

#Contributing

#Submitting Patches

Please see the guide for submitting patches on git.sr.ht. (If you choose to use git send-email, the patches should be sent to ~refi64/nsbox-devel@lists.sr.ht.)

#Coding Guidelines

TODO

#Running the tests

These are not currently functional! I'm doing a major overhaul to the way tests work.

Unit testing is done by running Expect scripts inside an isolated environment. Do not run the tests on your host system, as they will modify your containers.

Vagrant is used to manage the virtual environments (as a VM is required to test SELinux integration). The libvirt provider is required.

Run:

vagrant up

to bring up and provision the box (this includes building and installing nsbox inside). Once that is complete, you can run:

vagrant ssh -c /vagrant/tests/main.exp

to run the unit tests.

TODO: document test runner

#Misc. notes

#Updating the theme

$ git -C VUEPRESS/packages/@vuepress/theme-default diff --relative v.PREV ':(exclude)__tests__' |\
  git apply --reject --directory web/.vuepress/theme
Do not follow this link