1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #!/bin/sh
- # Short-Description: A purely functional package manager.
- # Description:
- # GNU Guix provides state-of-the-art package management features such as
- # transactional upgrades and roll-backs, reproducible build environments,
- # unprivileged package management, and per-user profiles. It uses low-level
- # mechanisms from the Nix package manager, but packages are defined as native
- # Guile modules, using extensions to the Scheme language—which makes it nicely
- # hackable.
- PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
- BASE=guix-daemon
- UNSHARE=/usr/bin/unshare
- GUIX=/usr/bin/$BASE
- GUIX_PIDFILE=/var/run/$BASE.pid
- GUIX_LOG=/var/log/guix.log
- GUIX_OPTS=--build-users-group=guixbuild
- if [ -f /etc/default/$BASE ]; then
- . /etc/default/$BASE
- fi
- # Check guix is present
- if [ ! -x $GUIX ]; then
- echo "$GUIX not present or not executable"
- exit 1
- fi
- guix_start() {
- echo "starting $BASE ..."
- if [ -x ${GUIX} ]; then
- # If there is an old PID file (no guix-daemon running), clean it up:
- if [ -r ${GUIX_PIDFILE} ]; then
- if ! ps axc | grep guix-daemon 1> /dev/null 2> /dev/null ; then
- echo "Cleaning up old ${GUIX_PIDFILE}."
- rm -f ${GUIX_PIDFILE}
- fi
- fi
- nohup "${UNSHARE}" -m -- "${GUIX}" "${GUIX_OPTS}" >> ${GUIX_LOG} 2>&1 &
- echo $! > ${GUIX_PIDFILE}
- fi
- }
- guix_stop() {
- echo "stopping $BASE ..."
- # If there is no PID file, ignore this request...
- if [ -r ${GUIX_PIDFILE} ]; then
- kill $(cat ${GUIX_PIDFILE})
- fi
- rm -f ${GUIX_PIDFILE}
- }
- guix_restart() {
- guix_stop
- guix_start
- }
- case "$1" in
- 'start')
- guix_start
- ;;
- 'stop')
- guix_stop
- ;;
- 'restart')
- guix_restart
- ;;
- 'status')
- if [ -f ${GUIX_PIDFILE} ] && ps -o cmd $(cat ${GUIX_PIDFILE}) | grep -q $BASE ; then
- echo "status of $BASE: running"
- else
- echo "status of $BASE: stopped"
- fi
- ;;
- *)
- echo "usage $0 start|stop|restart|status"
- esac
- exit 0
|