gnu: shepherd: Update to 0.5.0.
[jackhill/guix/guix.git] / gnu / packages / admin.scm
index 6b8af60..ded7ce3 100644 (file)
@@ -46,6 +46,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
@@ -140,13 +141,13 @@ usual file attributes can be checked for inconsistencies.")
 (define-public progress
   (package
     (name "progress")
-    (version "0.13.1")
+    (version "0.14")
     (source (origin
       (method url-fetch)
       (uri (string-append "https://github.com/Xfennec/"
                           name "/archive/v" version ".tar.gz"))
       (sha256
-       (base32 "199rk6608q9m6l0fbjm0xl2w1c5krf8245dqnksdp4rqp7l9ak06"))
+       (base32 "1wcanixfsi5k4i9h5vrnncgjdncalsdfqllrxibxwpgfnf20sji1"))
       (file-name (string-append name "-" version ".tar.gz"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -172,14 +173,14 @@ and provides a \"top-like\" mode (monitoring).")
 (define-public shepherd
   (package
     (name "shepherd")
-    (version "0.4.0")
+    (version "0.5.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://alpha.gnu.org/gnu/shepherd/shepherd-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1lgmsbxn8i8xdasxzkdp2cml75n128pplw6icvmspl6s0n9xmw8n"))))
+                "1wmciqml9yplnx1s4ynn00giqyk06rbrcsgvpjj2df47sawk2jp8"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--localstatedir=/var")))
@@ -610,9 +611,9 @@ connection alive.")
 (define-public isc-dhcp
   (let* ((bind-major-version "9")
          (bind-minor-version "11")
-         (bind-patch-version "3")
-         (bind-release-type "")         ; for patch release, use "-P"
-         (bind-release-version "")      ; for patch release, e.g. "6"
+         (bind-patch-version "4")
+         (bind-release-type "-P")         ; for patch release, use "-P"
+         (bind-release-version "1")      ; for patch release, e.g. "6"
          (bind-version (string-append bind-major-version
                                       "."
                                       bind-minor-version
@@ -625,7 +626,7 @@ connection alive.")
       (version "4.4.1")
       (source (origin
                 (method url-fetch)
-                (uri (string-append "http://ftp.isc.org/isc/dhcp/"
+                (uri (string-append "https://ftp.isc.org/isc/dhcp/"
                                     version "/dhcp-" version ".tar.gz"))
                 (sha256
                  (base32
@@ -724,12 +725,12 @@ connection alive.")
                 ("bind-source-tarball"
                  ,(origin
                     (method url-fetch)
-                    (uri (string-append "http://ftp.isc.org/isc/bind9/"
+                    (uri (string-append "https://ftp.isc.org/isc/bind9/"
                                         bind-version
                                         "/bind-" bind-version ".tar.gz"))
                     (sha256
                      (base32
-                      "1xbnb2b11274z9frc9y7nvkyxr52qx09bwb97gf9qzzcn8adx78d"))))
+                      "08zyy13b8ydfbg26b3y6mw299qs89ba90gymraqqjsgjicydrq5h"))))
 
                 ;; When cross-compiling, we need the cross Coreutils and sed.
                 ;; Otherwise just use those from %FINAL-INPUTS.
@@ -738,7 +739,7 @@ connection alive.")
                         ("sed" ,sed))
                       '())))
 
-      (home-page "http://www.isc.org/products/DHCP/")
+      (home-page "https://www.isc.org/products/DHCP/")
       (synopsis "Dynamic Host Configuration Protocol (DHCP) tools")
       (description
        "ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a
@@ -750,27 +751,30 @@ tools: server, client, and relay agent.")
 (define-public libpcap
   (package
     (name "libpcap")
-    (version "1.8.1")
+    (version "1.9.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.tcpdump.org/release/libpcap-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "07jlhc66z76dipj4j5v3dig8x6h3k6cb36kmnmpsixf3zmlvqgb7"))))
+                "06bhydl4vr4z9c3vahl76f2j96z1fbrcl7wwismgs4sris08inrf"))))
     (build-system gnu-build-system)
-    (native-inputs `(("bison" ,bison) ("flex" ,flex)))
-    (arguments '(#:configure-flags '("--with-pcap=linux")
-                 #:tests? #f))                    ; no 'check' target
+    (native-inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)))
+    (arguments
+     ;; There are some tests in testprogs/, but no automated test suite.
+     '(#:tests? #f))
     (home-page "https://www.tcpdump.org")
     (synopsis "Network packet capture library")
     (description
      "libpcap is an interface for user-level packet capture.  It provides a
 portable framework for low-level network monitoring.  Applications include
 network statistics collection, security monitoring, network debugging, etc.")
-
-    ;; fad-*.c and a couple other files are BSD-4, but the rest is BSD-3.
-    (license license:bsd-3)))
+    (license (list license:bsd-4        ; fad-*.c and several other source files
+                   license:bsd-3        ; pcap/, sockutils.* & others
+                   license:bsd-2))))    ; the rest
 
 (define-public tcpdump
   (package
@@ -865,7 +869,7 @@ over ssh connections.")
 (define-public rename
   (package
     (name "rename")
-    (version "0.20")
+    (version "1.00")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -873,8 +877,24 @@ over ssh connections.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "1cf6xx2hiy1xalp35fh8g73j67r0w0g66jpcbc6971x9jbm7bvjy"))))
+                "03yhf8nmqsb0zyliv501fdvwlp589jqfn44yqkrflmpzrbik3zxl"))))
     (build-system perl-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'find-itself
+           ;; Fix run-time 'Can't locate File/Rename.pm in @INC' failure.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (with-directory-excursion bin
+                 (for-each
+                  (lambda (program)
+                    (wrap-program program
+                      `("PERL5LIB" ":" prefix
+                        (,(string-append out "/lib/perl5/site_perl")))))
+                  (find-files "." ".*")))
+               #t))))))
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
        ("perl-test-pod" ,perl-test-pod)
@@ -959,7 +979,7 @@ system administrator.")
 (define-public sudo
   (package
     (name "sudo")
-    (version "1.8.23")
+    (version "1.8.25p1")
     (source (origin
               (method url-fetch)
               (uri
@@ -969,7 +989,7 @@ system administrator.")
                                     version ".tar.gz")))
               (sha256
                (base32
-                "0yg62wq8rcrbr7qvh3wgfg2g4bwanbi50cr2lf2cfyy8dydx4qyq"))
+                "0nqri46d4dpycj96zin2f2wszmhm7q9mr68hhj9sp81pgmx9rjcx"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -979,7 +999,7 @@ system administrator.")
     (arguments
      `(#:configure-flags
        (list "--with-logpath=/var/log/sudo.log"
-             "--with-rundir=/var/run/sudo"    ;must be cleaned up at boot time
+             "--with-rundir=/var/run/sudo" must be cleaned up at boot time
              "--with-vardir=/var/db/sudo"
              "--with-iologdir=/var/log/sudo-io"
 
@@ -1047,6 +1067,7 @@ commands and their arguments.")
                     version
                     ".tar.gz"))
               (patches (search-patches "wpa-supplicant-CVE-2017-13082.patch"
+                                       "wpa-supplicant-CVE-2018-14526.patch"
                                        "wpa-supplicant-fix-key-reuse.patch"
                                        "wpa-supplicant-fix-zeroed-keys.patch"
                                        "wpa-supplicant-fix-nonce-reuse.patch"
@@ -1231,7 +1252,7 @@ network, which causes enabled computers to power on.")
 (define-public dmidecode
   (package
     (name "dmidecode")
-    (version "3.1")
+    (version "3.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1239,7 +1260,7 @@ network, which causes enabled computers to power on.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "1h0sg0lxa15nzf8s7884p6q7p6md9idm0c79wyqmk32l4ndwwrnp"))))
+                "1pcfhcgs2ifdjwp7amnsr3lq95pgxpr150bjhdinvl505px0cw07"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases (delete 'configure))
@@ -1261,7 +1282,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
 (define-public acpica
   (package
     (name "acpica")
-    (version "20180531")
+    (version "20180810")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1269,7 +1290,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0q7vg1nr51f3rg16vjh4glz361a64r6gpm46fqkl2jf4fq7g43g5"))))
+                "01drf32h0v1s8yd414rgc9bavb52yffrwpnbzfxd9sk1lwssr6v7"))))
     (build-system gnu-build-system)
     (native-inputs `(("flex" ,flex)
                      ("bison" ,bison)))
@@ -1571,34 +1592,31 @@ of supported upstream metrics systems simultaneously.")
 (define-public ansible
   (package
     (name "ansible")
-    (version "2.4.2.0")
+    (version "2.5.7")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ansible" version))
        (sha256
         (base32
-         "0n3n9py4s3aykiii31xq8g4wmd6693jvby0424pjrg0bna01apri"))
+         "0wbsjjx3xjlm8g50a9j9c6p9rn23jx32yn1234bf5rmj1qgy3p85"))
        (patches (search-patches "ansible-wrap-program-hack.patch"))))
     (build-system python-build-system)
     (native-inputs
-     `(("python2-bcrypt" ,python2-bcrypt)
-       ("python2-pycrypto" ,python2-pycrypto)
-       ("python2-pynacl" ,python2-pynacl)
-       ("python2-httplib2" ,python2-httplib2)
-       ("python2-passlib" ,python2-passlib)
-       ("python2-nose" ,python2-nose)
-       ("python2-mock" ,python2-mock)
-       ("python2-jinja2" ,python2-jinja2)
-       ("python2-pyyaml" ,python2-pyyaml)
-       ("python2-paramiko" ,python2-paramiko)))
+     `(("python-bcrypt" ,python-bcrypt)
+       ("python-pynacl" ,python-pynacl)
+       ("python-httplib2" ,python-httplib2)
+       ("python-passlib" ,python-passlib)
+       ("python-nose" ,python-nose)
+       ("python-mock" ,python-mock)
+       ("python-jinja2" ,python-jinja2)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-paramiko" ,python-paramiko)))
     (inputs
-     `(("python2-pycrypto" ,python2-pycrypto)
-       ("python2-jinja2" ,python2-jinja2)
-       ("python2-pyyaml" ,python2-pyyaml)
-       ("python2-paramiko" ,python2-paramiko)))
-    (arguments
-     `(#:python ,python-2)) ; incompatible with Python 3
+     `(("python-cryptography" ,python-cryptography)
+       ("python-jinja2" ,python-jinja2)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-paramiko" ,python-paramiko)))
     (home-page "https://www.ansible.com/")
     (synopsis "Radically simple IT automation")
     (description "Ansible is a radically simple IT automation system.  It
@@ -1651,7 +1669,7 @@ limits.")
 (define-public autojump
   (package
     (name "autojump")
-    (version "22.3.4")
+    (version "22.5.1")
     (source
      (origin
        (method url-fetch)
@@ -1660,7 +1678,7 @@ limits.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "113rcpr37ngf2xs8da41qdarq5qmj0dwx8ggqy3lhlb0kvqq7g9z"))))
+         "17z9j9936x0nizwrzf664bngh60x5qbvrrf1s5qdzd0f2gdanpvn"))))
     (build-system gnu-build-system)
     (native-inputs                      ;for tests
      `(("python-mock" ,python-mock)
@@ -1668,36 +1686,19 @@ limits.")
     (inputs
      `(("python" ,python-wrapper)))
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (delete 'configure)
-                  (delete 'build)
-                  (replace 'check
-                    (lambda _
-                      (zero?
-                       (system* "python" "tests/unit/autojump_utils_test.py"))))
-                  (replace 'install
-                    ;; The install.py script doesn't allow system installation
-                    ;; into an arbitrary prefix, so do our own install.
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let* ((out (assoc-ref outputs "out"))
-                             (bin (string-append out "/bin"))
-                             (share (string-append out "/share/autojump"))
-                             (py (string-append out "/lib/python"
-                                                ,(version-major+minor
-                                                  (package-version python-wrapper))
-                                                "/site-packages"))
-                             (man (string-append out "/share/man/man1")))
-                        (install-file "bin/autojump" bin)
-                        (for-each (λ (f) (install-file f py))
-                                  (find-files "bin" "\\.py$"))
-                        (for-each (λ (f) (install-file f share))
-                                  (find-files "bin" "autojump\\..*$"))
-                        (substitute* (string-append share "/autojump.sh")
-                          (("/usr/local") out))
-                        (install-file "docs/autojump.1" man)
-                        (wrap-program (string-append bin "/autojump")
-                          `("PYTHONPATH" ":" prefix (,py)))
-                        #t))))))
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'check
+           (lambda _
+             (invoke "python" "tests/unit/autojump_utils_test.py")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (setenv "SHELL" (which "bash"))
+             (invoke "python" "install.py"
+                     (string-append "--destdir="
+                                    (assoc-ref outputs "out"))))))))
     (home-page "https://github.com/wting/autojump")
     (synopsis "Shell extension for file system navigation")
     (description
@@ -1789,27 +1790,18 @@ platform-specific methods.")
 (define-public audit
   (package
     (name "audit")
-    (version "2.4.5")
+    (home-page "https://people.redhat.com/sgrubb/audit/")
+    (version "2.8.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://people.redhat.com/sgrubb/audit/"
-                                  "audit-" version ".tar.gz"))
+              (uri (string-append home-page name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1q1q51dvxscbi4kbakmd4bn0xrvwwaiwvaya79925cbrqwzxsg77"))))
+                "0f4ci6ffznnmgblwgv7ich9mjfk3p6y5l6m6h3chhmzw156nj454"))))
     (build-system gnu-build-system)
-    (home-page "https://people.redhat.com/sgrubb/audit/")
     (arguments
-     `(#:configure-flags (list "--with-python=no")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-tests
-           (lambda _
-             ;; In the build environmnte /etc/passwd does not contain an entry
-             ;; for root/0, so we have to patch the expected value.
-             (substitute* "auparse/test/auparse_test.ref"
-               (("=0 \\(root\\)") "=0 (unknown(0))"))
-             #t)))))
+     `(#:configure-flags (list "--with-python=no"
+                               "--disable-static")))
     (inputs
      `(("openldap" ,openldap)
        ("gnutls" ,gnutls)
@@ -1992,16 +1984,16 @@ a new command using the matched rule, and runs it.")
 (define-public di
   (package
     (name "di")
-    (version "4.46")
+    (version "4.47")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://gentoo.com/di/di-" version ".tar.gz"))
        (sha256
-        (base32 "0cskiqywiqkw44zdg4q78bjns6jjp1dz5lzdxrhpnpldc6075irw"))))
+        (base32 "0zlapxlzjizwzwa8xwrwibhcbkh0wx7n74gvjpp6wlwq7cgiq0xm"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; Obscure test failures.
+     `(#:tests? #f                      ; obscure test failures.
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -2291,21 +2283,21 @@ With sedsed you can master any sed script.  No more secrets, no more hidden
 buffers.")
     (license license:expat)))
 
-(define-public intel-gpu-tools
+(define-public igt-gpu-tools
   (package
-    (name "intel-gpu-tools")
-    (version "1.22")
+    (name "igt-gpu-tools")
+    (version "1.23")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://cgit.freedesktop.org/xorg/app/"
                                   "intel-gpu-tools/snapshot/"
-                                  "intel-gpu-tools-" version ".tar.gz"))
+                                  name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1jx5w5fr6jp67rcrlp5v79cn8kp9n0wgd5pbfgzamlah5cx6j3yd"))))
+                "0vzv2i4jfv2pkbqby5k3ap9pzidkmajwqmg3s7wnv8i1h33775iq"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; many of the tests try to load kernel modules
+     `(#:tests? #f              ; many of the tests try to load kernel modules
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'autogen
@@ -2314,16 +2306,17 @@ buffers.")
              (setenv "NOCONFIGURE" "1")
              (invoke "sh" "autogen.sh"))))))
     (inputs
-     `(("eudev" ,eudev)
-       ("util-macros" ,util-macros)
+     `(("cairo" ,cairo)
+       ("eudev" ,eudev)
+       ("glib" ,glib)
+       ("kmod" ,kmod)
        ("libdrm" ,libdrm)
        ("libpciaccess" ,libpciaccess)
-       ("kmod" ,kmod)
-       ("procps" ,procps)
-       ("cairo" ,cairo)
        ("libunwind" ,libunwind)
        ("libxrandr" ,libxrandr)
-       ("glib" ,glib)))
+       ("openssl" ,openssl)
+       ("procps" ,procps)
+       ("util-macros" ,util-macros)))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -2331,17 +2324,20 @@ buffers.")
        ("pkg-config" ,pkg-config)))
     (home-page "https://cgit.freedesktop.org/xorg/app/intel-gpu-tools/")
     (synopsis "Tools for development and testing of the Intel DRM driver")
-    (description "Intel GPU Tools is a collection of tools for development and
+    (description "IGT GPU Tools is a collection of tools for development and
 testing of the Intel DRM driver.  There are many macro-level test suites that
 get used against the driver, including xtest, rendercheck, piglit, and
 oglconform, but failures from those can be difficult to track down to kernel
 changes, and many require complicated build procedures or specific testing
-environments to get useful results.  Therefore, Intel GPU Tools includes
+environments to get useful results.  Therefore, IGT GPU Tools includes
 low-level tools and tests specifically for development and testing of the
 Intel DRM Driver.")
     (supported-systems '("i686-linux" "x86_64-linux"))
     (license license:expat)))
 
+(define-public intel-gpu-tools
+  (deprecated-package "intel-gpu-tools" igt-gpu-tools))
+
 (define-public fabric
   (package
     (name "fabric")
@@ -2420,43 +2416,29 @@ you are running, what theme or icon set you are using, etc.")
 (define-public nnn
   (package
     (name "nnn")
-    (version "1.7")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/jarun/nnn/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0z3lqbfx3y1caxvn7yq90b7whwyq2y32zf8kyd976ilbxpxnxqpv"))))
+    (version "1.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/jarun/nnn/releases/download/v"
+                           version "/" name "-v" version ".tar.gz"))
+       (sha256
+        (base32 "1d6z12y4rlg4dzhpm30irpq2ak8hjh5zykkp2n7vxnz5m4ki89zp"))))
     (build-system gnu-build-system)
-    (inputs `(("ncurses" ,ncurses)
-              ("readline" ,readline)))
+    (inputs
+     `(("ncurses" ,ncurses)
+       ("readline" ,readline)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (arguments
-     '(#:tests? #f ; no tests
+     '(#:tests? #f                      ; no tests
        #:phases
-       ;; We do not provide `ncurses.h' within an `ncursesw'
-       ;; sub-directory, so patch the source accordingly.  See
-       ;; <http://bugs.gnu.org/19018>.
-       ;; Thanks to gtypist maintainer.
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-curses-lib
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (substitute* "Makefile"
-                 (("-lncursesw")
-                  "-lncurses"))
-               (substitute* "nnn.c"
-                 (("ncursesw\\/curses.h")
-                  "ncurses.h")))
-             #t))
-         (delete 'configure))
+         (delete 'configure))           ; no configure script
        #:make-flags
        (list
         (string-append "PREFIX="
                        (assoc-ref %outputs "out"))
-        (string-append "-Wl,-rpath="
-                       %output "/lib")
         "CC=gcc")))
     (home-page "https://github.com/jarun/nnn")
     (synopsis "Terminal file browser")
@@ -2649,7 +2631,7 @@ Python loading in HPC environments.")
   (let ((real-name "inxi"))
     (package
       (name "inxi-minimal")
-      (version "3.0.12-1")
+      (version "3.0.20-1")
       (source
        (origin
          (method git-fetch)
@@ -2658,7 +2640,7 @@ Python loading in HPC environments.")
                (commit version)))
          (sha256
           (base32
-           "1a2sjz90gzzvhp63x89hs0a424rkd13qrff2njqmjxp322zyp527"))))
+           "1k9148xnfznch1443niaa3w1kmsw4vp0xpwna6npgmi7zqg06ymy"))))
       (build-system trivial-build-system)
       (inputs
        `(("bash" ,bash)
@@ -2757,3 +2739,110 @@ support forum.  It runs with the @code{/exec} command in most IRC clients.")
        ;; perl-xml-dumper
        ;; ipmitool
        ,@(package-inputs inxi-minimal)))))
+
+(define-public pscircle
+  (package
+    (name "pscircle")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://gitlab.com/mildlyparallel/pscircle/-/archive/v"
+             version "/pscircle-v" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1k757yf2bmgfrjd417l6kpcf83hlvi0z1791vz967mwcklrsb3fj"))))
+    (build-system meson-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("cairo" ,cairo)
+       ("libpng" ,libpng)
+       ("libx11" ,libx11)))
+    (home-page "https://gitlab.com/mildlyparallel/pscircle")
+    (synopsis "Visualize Linux processes in a form of radial tree")
+    (description
+     "@code{pscircle} visualizes Linux processes in the form of a radial tree.")
+    (license license:gpl2+)))
+
+(define-public python-pyudev
+  (package
+    (name "python-pyudev")
+    (version "0.21.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "pyudev" version))
+        (sha256
+          (base32
+            "0arz0dqp75sszsmgm6vhg92n1lsx91ihddx3m944f4ah0487ljq9"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f ; Tests require /sys
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-ctypes-udev
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((eudev (assoc-ref inputs "eudev")))
+               (substitute* "src/pyudev/core.py"
+                (("'udev'")
+                 (string-append "'" eudev "/lib/libudev.so'")))
+               (substitute* "src/pyudev/_ctypeslib/utils.py"
+                ;; Use absolute paths instead of keys.
+                (("= find_library") "= "))
+               #t))))))
+    (inputs
+     `(("eudev" ,eudev)))
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (native-inputs
+     `(("python-docutils" ,python-docutils)
+       ("python-hypothesis" ,python-hypothesis)
+       ("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)
+       ("python-sphinx" ,python-sphinx)))
+    (home-page "http://pyudev.readthedocs.org/")
+    (synopsis "Python udev binding")
+    (description "This package provides @code{udev} bindings for Python.")
+    (license license:lgpl2.1)))
+
+(define-public solaar
+  (package
+    (name "solaar")
+    (version "0.9.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pwr/Solaar.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "085mfa13dap3wqik1dqlad0d7kff4rv7j4ljh99c7l8nhczkqgwm"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-prefix-detection
+           (lambda _
+             (substitute* "setup.py"
+              (("'--prefix' in sys\\.argv")
+               "len([x.startswith('--prefix=') for x in sys.argv]) > 0"))
+             #t))
+         (replace 'build
+           (lambda _
+             (invoke "python" "setup.py" "build")))
+         (add-before 'check 'setenv-PATH
+           (lambda _
+             (setenv "PYTHONPATH" (string-append "lib:" (getenv "PYTHONPATH")))
+             #t)))))
+    (propagated-inputs
+     `(("python-pygobject" ,python-pygobject)
+       ("python-pyudev" ,python-pyudev)))
+    (home-page "https://smxi.org/docs/inxi.htm")
+    (synopsis "Linux devices manager for the Logitech Unifying Receiver")
+    (description "This package provides tools to manage clients of the
+Logitech Unifying Receiver.")
+    (license license:gpl2)))