~ruther/guix-local

b95bcb8ae0a8a4f5c29bce8f6486a91d6d5441cc — Eric Bavier 10 years ago e5930e5
gnu: Add byobu.

* gnu/packages/screen.scm (byobu): New variable.
* gnu/packages/patches/byobu-writable-status.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
3 files changed, 67 insertions(+), 0 deletions(-)

M gnu-system.am
A gnu/packages/patches/byobu-writable-status.patch
M gnu/packages/screen.scm
M gnu-system.am => gnu-system.am +1 -0
@@ 411,6 411,7 @@ dist_patch_DATA =						\
  gnu/packages/patches/bitlbee-configure-doc-fix.patch		\
  gnu/packages/patches/bluez-tests.patch			\
  gnu/packages/patches/boost-mips-avoid-m32.patch		\
  gnu/packages/patches/byobu-writable-status.patch		\
  gnu/packages/patches/calibre-drop-unrar.patch			\
  gnu/packages/patches/calibre-no-updates-dialog.patch		\
  gnu/packages/patches/cdparanoia-fpic.patch			\

A gnu/packages/patches/byobu-writable-status.patch => gnu/packages/patches/byobu-writable-status.patch +13 -0
@@ 0,0 1,13 @@
Skeleton status files are installed read-only.  When copying to the config dir
upon initialization, make sure they end up writable.

--- byobu-5.98/usr/bin/byobu-janitor.in
+++ byobu-5.98/usr/bin/byobu-janitor.in
@@ -82,6 +82,7 @@
 	if [ ! -r "$BYOBU_CONFIG_DIR/$f" ]; then
 		# Copy from skeleton, if possible
 		cp -f "$BYOBU_PREFIX/share/$PKG/status/$f" "$BYOBU_CONFIG_DIR/$f"
+		chmod +w "$BYOBU_CONFIG_DIR/$f"
 		# Enable ec2_cost, if we're in ec2 and seeding a new setup
 		if metadata_available; then
 			$BYOBU_SED_INLINE -e "s/#ec2_cost/ec2_cost/g" "$($BYOBU_READLINK -f $BYOBU_CONFIG_DIR/$f)"

M gnu/packages/screen.scm => gnu/packages/screen.scm +53 -0
@@ 1,6 1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 25,6 26,8 @@
  #:use-module (gnu packages)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages python)
  #:use-module (gnu packages slang)
  #:use-module (gnu packages texinfo))

(define-public screen


@@ 90,3 93,53 @@ view to show two terminals at once.")
allowing you to run a program in an environment that is protected from the
controlling terminal and attach to it later.")
    (license gpl2+)))

(define-public byobu
  (package
    (name "byobu")
    (version "5.98")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://launchpad.net/byobu/trunk/"
                           version "/+download/byobu_"
                           version ".orig.tar.gz"))
       (sha256
        (base32
         "1s8nh4wbds1nh52i0d1hy1b308jjf4siwpq92lna1zh9ll4x71j5"))
       (patches (list (search-patch "byobu-writable-status.patch")))))
    (build-system gnu-build-system)
    (inputs
     `(("python" ,python-wrapper)       ;for config and session GUIs
       ("python-newt" ,newt "python")))
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (add-before
          'configure 'provide-locale
          (lambda* (#:key inputs #:allow-other-keys)
            (let ((libc   (assoc-ref inputs "libc"))) ;implicit input
              (substitute* "usr/bin/byobu.in"
                (("locale") (string-append libc "/bin/locale"))))))
         (add-after
          'install 'wrap-python-scripts
          (lambda* (#:key inputs outputs #:allow-other-keys)
            (let* ((python (string-append (assoc-ref inputs "python")
                                          "/bin/python"))
                   (out    (assoc-ref outputs "out"))
                   (config (string-append out "/bin/byobu-config"))
                   (select (string-append out "/bin/byobu-select-session")))
              (wrap-program config
                `("BYOBU_PYTHON" = (,python))
                `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))
              (wrap-program select
                `("BYOBU_PYTHON" = (,python)))
              #t))))))
    (home-page "http://byobu.co/index.html")
    (synopsis "Text-based window manager and terminal multiplexer")
    (description
     "Byobu is a Japanese term for decorative, multi-panel screens that serve
as folding room dividers.  The Byobu software includes an enhanced profile,
configuration utilities, and system status notifications for the GNU Screen
window manager as well as the Tmux terminal multiplexer.")
    (license gpl3+)))