This repository houses Guix configuration for GeneNetwork machines and containers. * GeneNetwork development container The GeneNetwork development container is run on /penguin2/. It runs continuous integration and continuous deployment services for genenetwork2, genenetwork3 and several other associated projects. To build and install the container, you will need the guix-bioinformatics and guix-forge channels. Once these channels are pulled and available, on /penguin2/, run #+BEGIN_SRC shell $ ./genenetwork-development-deploy.sh #+END_SRC /penguin2/ is configured with a systemd service to run this container. Restart it. #+BEGIN_SRC shell $ sudo systemctl restart genenetwork-development-container #+END_SRC * Virtuoso container for tux01 production The virtuoso container is run on /tux01/ production. It runs virtuoso alone. To build and install the container, you will need the guix-bioinformatics channel. Once guix-bioinformatics is pulled and available, on /tux01/, run #+begin_src shell $ ./virtuoso-deploy.sh #+end_src /tux01/ is configured with a systemd service to run this container. Restart it. #+begin_src shell $ sudo systemctl restart virtuoso-container #+end_src * Secure virtuoso authentication In containers containing virtuoso instances, it is important to secure authentication by changing default user passwords and disabling unnecessary users. See [[https://issues.genenetwork.org/topics/systems/virtuoso][virtuoso gemtext documentation]] on passwords for more details. * Getting a Shell into the Container When you start the container, you can get a shell into the container using the ~nsenter~ command. You will need the process ID of the container, which your can get with something like: #+BEGIN_SRC sh ps -e | grep shepherd #+END_SRC That will give you output of the form: #+BEGIN_EXAMPLE 11869 pts/3 00:00:00 shepherd #+END_EXAMPLE From the guix [/operating-system/ Reference](https://guix.gnu.org/manual/en/html_node/operating_002dsystem-Reference.html) under the *packages* option, the list of packages installed under the global profile are found in */run/current-system/profile*, for example: #+BEGIN_SRC sh /run/current-system/profile/ls /gnu/store #+END_SRC to list the files under */gnu/store* With that knowledge, we can now get a shell using ~nsenter~ as follows: #+BEGIN_SRC sh sudo nsenter -a -t 11869 /run/current-system/profile/bin/bash \ --init-file /run/current-system/profile/etc/profile #+END_SRC which will give you a bash shell with the ~PATH~ environment variable setup correctly to give you access to all packages in the global profile.