diff mbox series

[bug#53376] gnu: Add fan2go

Message ID 877davuziz.fsf@fastmail.com
State New
Headers show
Series [bug#53376] gnu: Add fan2go | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Elais Player Jan. 19, 2022, 10:16 p.m. UTC
I have a couple of patches adding the fan2go package and its dependencies.

Elais Player (1):
  gnu: Add fan2go

gnu/packages/golang.scm   | 304 ++++++++++++++++++++++++++++++++++++++
gnu/packages/hardware.scm |  48 ++++++
2 files changed, 352 insertions(+)


base-commit: a27e47f9d1e22dc32bb250cfeef88cfacb930e23
--
2.34.0

Comments

M Jan. 20, 2022, 10:03 a.m. UTC | #1
Hi,

I took a quick look at the synopsi and descriptions:

Elais Player schreef op wo 19-01-2022 om 15:16 [-0700]:
> + (define-public go-github-com-atomicgo-cursor
> +  (package
> +    [...]
> +    (synopsis "Description")

A synopsis is missing.

> +    (description "Package cursor contains cross-platform methods to
> move the
> +terminal cursor in different directions. 

This doesn't seem grammatical, how about ‘This package contains [...]’?

>  This package can be used to create
> +interactive CLI tools and games, live charts, algorithm
> visualizations and
> +other updatable output of any kind.")
> +    (license license:expat)))
> +
> +(define-public go-github-com-gookit-color
> +  [...]
> +    (home-page "https://github.com/gookit/color")
> +    (synopsis "Command line color library")

Is it a command line tool, or a library?  It cannot be both
(with some exceptions, e.g. glibc can be run). 

How about: ‘Library for setting colors in the terminal’. 

> +    (description "Package color is Command line color library.

Likewise (grammar), and why is ‘Command’ capitalised?
How about: ‘This package allows setting the colours used in the
terminal ...’

>   Support rich
> +color rendering output, universal API method, compatible with
> Windows system

Likewise (grammar), the imperative doesn't make much sense here

> +")
> +    (license license:expat)))
> +
> +(define-public go-github-com-pterm-pterm
> +  (package
> +    ]...]
> +    (synopsis "Console output beautifier")
> +    (description "Pterm is a modern go module to beautify console
> output.  It
> +can be used without configuration, but if desired, everything can be
> +customized down to the smallest detail.")

‘Modern, smallest detail’: this is getting a bit close to marketing
phrases (see (guix)Synopses and Descriptions), although it is rather
mild here.

> +    (license license:expat)))
> +
> +(define-public go-github-com-marvinjwendt-testza
> +  (package
> +    [...]
> +    (synopsis "Testing framework for go")
> +    (description "Package testza is a full-featured testing
> framework for Go.

In the synopsis 'go' is not capitalised, while in the description, it
is.  There is some inconsistency here.

> +It integrates with the default test runner, so you can use it with
> the
> +standard `go test` tool.

Guix doesn't use markdown, it uses Texinfo, so IIUC this needs to be
@command{go test}.  Correct markup helps with

>   Testza contains easy to use methods, like
> +assertions, output capturing, mocking, and much more.")
> +    (license license:expat)))
> +
> +(define-public go-github-com-xo-terminfo
> +  (package
> +    [...]
> +    (synopsis "Terminfo file reader in pure go")
> +    (description "Package terminfo provides a pure-Go implementation
> of
> +reading information from the terminfo database.")

Go is capitalised inconsistently.  Also, IIUC the proposition needs to
be 'for' and not 'of'.

> +    (license license:expat)))
> +
> +(define-public go-github-com-klauspost-cpuid-v2
> +  (package
> +    [...]
> +    (synopsis "CPU feature identification for Go")
> +    (description "Cpuid provides information about the CPU running
> the current
> +program.  CPU features are detected on startup, and kept for fast

I think ‘kept’ -> ‘remembered’ would be clearer here (YMMV).

> access
> +through the life of the application.  Currently x86 / x64
> (AMD64/i386) and ARM
> +(ARM64) is supported, and no external C (cgo) code is used, which
> should make
> +the library very easy to use.")

AFAIK external C code works just fine in Guix without any complications
so this remark doesn't seem necessary in Guix.  But then I never
actually write any Go code, so take it with some grain of salt.


> +    (license license:expat)))

Since not all architectures are supported, I recommend setting
'supported-systems'.

> +[...]
> +
> +(define-public go-github-com-guptarohit-asciigraph
> +  (package
> +    (name "go-github-com-guptarohit-asciigraph")
> +    (version "0.5.2")
> +    (source
> +      (origin
> +        (method git-fetch)
> +        (uri (git-reference
> +               (url "https://github.com/guptarohit/asciigraph")
> +               (commit (string-append "v" version))))
> +        (file-name (git-file-name name version))
> +        (sha256
> +          (base32
> "1hkxaqs30hbybbxapr8vng09r6wr8afpkqkn0g6aj1vl3fvhjn49"))))
> +    (build-system go-build-system)
> +    (arguments '(#:import-path "github.com/guptarohit/asciigraph"))
> +    (home-page "https://github.com/guptarohit/asciigraph")
> +    (synopsis "Package to make a lightweight ASCII line graph")
> +    (description "Go package to make a lightweight ASCII line graph
> for CLI
> +apps.")
> +    (license license:bsd-3)))
> +
> +(define-public go-github-com-oklog-run
> +  (package
> +    (name "go-github-com-oklog-run")
> +    (version "1.1.0")
> +    (source
> +      (origin
> +        (method git-fetch)
> +        (uri (git-reference
> +               (url "https://github.com/oklog/run")
> +               (commit (string-append "v" version))))
> +        (file-name (git-file-name name version))
> +        (sha256
> +          (base32
> "0r55p3kgdkgw55i33lqvvvl60mjp92mhd1170m980sw98z9150jk"))))
> +    (build-system go-build-system)
> +    (arguments '(#:import-path "github.com/oklog/run"))
> +    (home-page "https://github.com/oklog/run")
> +    (synopsis "Universal mechanism to manage goroutine lifecycles")
> +    (description "Package run implements an actor-runner with

‘Package run’ -> ‘This package’?
> deterministic
> +teardown.  It is somewhat similar to package errgroup, except it

‘package errgroup’ -> @code{errgroup}?

> does not
> +require actor goroutines to understand context semantics.  This
> makes it
> +suitable for use in more circumstances; for example, goroutines
> which are
> +handling connections from net.Listeners, or scanning input from a
> closable
> +io.Reader.")

Texinfo markup (@code{...}) for io.Reader and net.Listeners.

> +    (license license:asl2.0)))
> +
> +(define-public go-github-com-tomlazar-table
> +  (package
> +    (name "go-github-com-tomlazar-table")
> +    (version "0.1.0")
> +    (source
> +      (origin
> +        (method git-fetch)
> +        (uri (git-reference
> +               (url "https://github.com/tomlazar/table")
> +               (commit (string-append "v" version))))
> +        (file-name (git-file-name name version))
> +        (sha256
> +          (base32
> "017ps5n44xvdl2b656v89qi0gib95fz60vqvnpq7kjzjn9sr3awy"))))
> +    (build-system go-build-system)
> +    (arguments '(#:import-path "github.com/tomlazar/table"))
> +    (inputs
> +     `(("go-github-com-stretchr-testify" ,go-github-com-stretchr-
> testify)))
> +    (propagated-inputs
> +      `(("go-github-com-mgutz-ansi" ,go-github-com-mgutz-ansi)
> +        ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-
> isatty)
> +        ("go-github-com-mattn-go-colorable"
> +         ,go-github-com-mattn-go-colorable)))
> +    (home-page "https://github.com/tomlazar/table")
> +    (synopsis "Colorful tables in go with less effort")
> +    (description "Print tabular data on the command line using ansi
> color
> +esacape codes.

The imperative doesn't make much sense here.  Also, a typo: ‘esacapa’.
And 'ansi' probably needs to be capitalised to ‘ANSI’

>   Support for writing the ouput based on the fields in a struct

Likewise (imperative).

> +and for defining and creating the table manully using the underlying
> object.")
> +    (license license:expat)))
> +
> +(define-public go-github-com-looplab-tarjan
> +  (package
> +    [..]
> +    (synopsis "Graph loop detection using Tarjan's algorithm")
> +    (description "Tarjan is a graph loop detection function using
> Tarjan's
> +algorithm.  The algorithm takes a input graph and produces a slice

IIUC, the standard graph theory terminology would be ‘... and produces
a list of the strongly connected components’.  AFAIK ‘slice’ is not
used in gaph theory.

> where each
> +item is a slice of strongly connected vertices.  The input graph is
> in form of
> +a map where the key is a graph vertex and the value is the edges in
> for of a
> +slice of vertices.")

Aside from that,, it's a nice description.

> +    (license license:asl2.0)))
> +
> +(define-public go-github-com-md14454-gosensors
> +  (package
> +    (name "go-github-com-md14454-gosensors")
> +    (version "0.0.0-20180726083412-bded752ab001")
> +    (source
> +      (origin
> +        (method git-fetch)
> +        (uri (git-reference
> +               (url "https://github.com/md14454/gosensors")
> +               (commit (go-version->git-ref version))))
> +        (file-name (git-file-name name version))
> +        (sha256
> +          (base32
> "08ffz56h93rcsyp84zxirdj3azb9rkql7sc0dj22pp17w11qlwhx"))))
> +    (build-system go-build-system)
> +    (propagated-inputs
> +     `(("lm-sensors:lib" ,lm-sensors "lib")))

Is propagation necessary, or would 'inputs' suffice?
Propagation can cause profile collisions and in some cases make profile
building slow, and hence is to be avoided.

> +    (arguments '(#:import-path "github.com/md14454/gosensors"
> +                 #:tests? #f))

Why are tests disabled?  If tests fail, that can mean the tests
function as intended because they might be detecting a real issue.

> +    (home-page "https://github.com/md14454/gosensors")
> +    (synopsis "Go bindings for libsensors")
> +    (description "Go bindings for libsensors.so from the lm-sensors

The .so seems to be an implementation detail,
‘Go bindings for @code{lm-sensors}’?

> project
> +via external C bindings.")
> +    (license license:expat)))
> +[...]
> +(define-public fan2go
> +  (package
> +    (name "fan2go")
> +    [...]
> +    (arguments
> +     '(#:import-path "github.com/markusressel/fan2go"
> +       #:tests? #f))

Why are tests disabled here?
This is a command line utility, not a Go library, so propagation
is probably unnecessary (though some 'wrap-program' might be required).

> +    [...]
> +    (home-page "https://github.com/markusressel/fan2go")
> +    (synopsis "Fan speed control daemon based on reading temperature
> sensors")

Something like
‘Automated fan speed control daemon preventing overheating’
(assuming that's correct) seems more descriptive.  While reading
temperature sensors seems unavoidable in an implementation, it still
seems an implementation detail to me.

> +    (description "fan2go is a simple fan control daemon that relies

@command{fan2go}

> on
> +lm-sensors to get both temperature and RPM sensor readings, as well

@code{fan2go}

> as PWM

What's RPM and PWM?  From (guix)Synopses and descriptions:

‘[...] avoid using acronyms without first introducing them.’

> +controls, so you will have to set it up first.")

What setup is needed here?  Can this requirement be eliminated in Guix?

Greetings,
Maxime.
diff mbox series

Patch

From c3117f446312f456087719f746b2793a1982f6a8 Mon Sep 17 00:00:00 2001
From: Elais Player <elais@fastmail.com>
Date: Wed, 19 Jan 2022 13:04:47 -0700
Subject: [PATCH] gnu: Add fan2go
To: guix-patches@gnu.org

* gnu/packages/golang.scm (go-github-com-atomicgo-cursor): New variable

* gnu/packages/golang.scm (go-github-com-gookit-color): New variable

* /gnu/packages/golang.scm (go-github-com-pterm-pterm): New variable

* /gnu/packages/golang.scm (go-github-com-marvinjwendt-testza): New variable

* /gnu/packages/golang.scm (go-github-com-xo-terminfo): New variable.

* /gnu/packages/golang.scm (go-github-com-klauspost-cpuid-v2): New variable.

* /gnu/packages/golang.scm (go-github-com-asecurityteam-rolling): New variable.

* /gnu/packages/golang.scm (go-github-com-guptarohit-asciigraph): New variable.

* /gnu/packages/golang.scm (go-github-com-oklog-run): New variable.

* /gnu/packages/golang.scm (go-github-com-tomlazar-table): New variable.

* /gnu/packages/golang.scm (go-github-com-looplab-tarjan): New variable.

* /gnu/packages/golang.scm (go-github-com-md14454-gosensors): New variable.

* /gnu/packages/hardware.scm (fan2go): New variable.
---
 gnu/packages/golang.scm   | 304 ++++++++++++++++++++++++++++++++++++++
 gnu/packages/hardware.scm |  48 ++++++
 2 files changed, 352 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index e808d8ebf6..9b20cfb413 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -33,6 +33,7 @@ 
 ;;; Copyright © 2021 Chadwain Holness <chadwainholness@gmail.com>
 ;;; Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
 ;;; Copyright © 2021 Lu Hui <luhux76@gmail.com>
+;;; Copyright © 2022 Elais Player <elais@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -67,6 +68,7 @@  (define-module (gnu packages golang)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages password-utils)
@@ -9312,6 +9314,308 @@  (define-public go-github-com-alecthomas-units
       (home-page "https://github.com/alecthomas/units")
       (license license:expat))))
 
+(define-public go-github-com-atomicgo-cursor
+  (package
+    (name "go-github-com-atomicgo-cursor")
+    (version "0.0.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/atomicgo/cursor")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1mjgx9gsgda980pb5jrqwq64r7wrh7083849jjww40l30vjaqvh7"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/atomicgo/cursor"))
+    (home-page "https://github.com/atomicgo/cursor")
+    (synopsis "Description")
+    (description "Package cursor contains cross-platform methods to move the
+terminal cursor in different directions.  This package can be used to create
+interactive CLI tools and games, live charts, algorithm visualizations and
+other updatable output of any kind.")
+    (license license:expat)))
+
+(define-public go-github-com-gookit-color
+  (package
+    (name "go-github-com-gookit-color")
+    (version "1.5.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/gookit/color")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1cyhcnk5sknn2kxz8ffy6iy2ncdpwbgvdywj920fd7745jas3m1n"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/gookit/color"
+                 #:tests? #f))
+    (inputs
+     `(("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify)))
+    (propagated-inputs
+      `(("go-golang-org-x-sys" ,go-golang-org-x-sys)
+        ("go-github-com-xo-terminfo" ,go-github-com-xo-terminfo)))
+    (home-page "https://github.com/gookit/color")
+    (synopsis "Command line color library")
+    (description "Package color is Command line color library.  Support rich
+color rendering output, universal API method, compatible with Windows system
+")
+    (license license:expat)))
+
+(define-public go-github-com-pterm-pterm
+  (package
+    (name "go-github-com-pterm-pterm")
+    (version "0.12.34")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/pterm/pterm")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1spc1v4xwm3vcrfyc3wjpswjx5klg2qq9ipgjj8qncn8czszwx93"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/pterm/pterm"
+                 #:tests? #f))
+    (propagated-inputs
+      `(("go-golang-org-x-term" ,go-golang-org-x-term)
+        ("go-golang-org-x-sys" ,go-golang-org-x-sys)
+        ("go-github-com-mattn-go-runewidth" ,go-github-com-mattn-go-runewidth)
+        ("go-github-com-gookit-color" ,go-github-com-gookit-color)
+        ("go-github-com-atomicgo-cursor" ,go-github-com-atomicgo-cursor)))
+    (home-page "https://github.com/pterm/pterm")
+    (synopsis "Console output beautifier")
+    (description "Pterm is a modern go module to beautify console output.  It
+can be used without configuration, but if desired, everything can be
+customized down to the smallest detail.")
+    (license license:expat)))
+
+(define-public go-github-com-marvinjwendt-testza
+  (package
+    (name "go-github-com-marvinjwendt-testza")
+    (version "0.2.14")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/MarvinJWendt/testza")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "0fw7458yan99jfyvn46bhyc18x0dz3dz2kd6sffz9cj38rh5kym3"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/MarvinJWendt/testza"
+                 #:tests? #f))
+    (inputs
+     `(("go-github-com-pterm-pterm" ,go-github-com-pterm-pterm)))
+    (propagated-inputs
+      `(("go-github-com-pmezard-go-difflib" ,go-github-com-pmezard-go-difflib)
+        ("go-github-com-klauspost-cpuid-v2" ,go-github-com-klauspost-cpuid-v2)
+        ("go-github-com-davecgh-go-spew" ,go-github-com-davecgh-go-spew)))
+    (home-page "https://github.com/MarvinJWendt/testza")
+    (synopsis "Testing framework for go")
+    (description "Package testza is a full-featured testing framework for Go.
+It integrates with the default test runner, so you can use it with the
+standard `go test` tool.  Testza contains easy to use methods, like
+assertions, output capturing, mocking, and much more.")
+    (license license:expat)))
+
+(define-public go-github-com-xo-terminfo
+  (package
+    (name "go-github-com-xo-terminfo")
+    (version "0.0.0-20210125001918-ca9a967f8778")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/xo/terminfo")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "05gdcvcbwcrcwxznhvs1q1xh4irz2d10v2mz179pydjh30kjc0j5"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/xo/terminfo"))
+    (home-page "https://github.com/xo/terminfo")
+    (synopsis "Terminfo file reader in pure go")
+    (description "Package terminfo provides a pure-Go implementation of
+reading information from the terminfo database.")
+    (license license:expat)))
+
+(define-public go-github-com-klauspost-cpuid-v2
+  (package
+    (name "go-github-com-klauspost-cpuid-v2")
+    (version "2.0.9")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/klauspost/cpuid")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "12bx0kip3yv2416f4ilafk5674m69mn873gnadhyv473cy4jy499"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/klauspost/cpuid/v2"))
+    (home-page "https://github.com/klauspost/cpuid")
+    (synopsis "CPU feature identification for Go")
+    (description "Cpuid provides information about the CPU running the current
+program.  CPU features are detected on startup, and kept for fast access
+through the life of the application.  Currently x86 / x64 (AMD64/i386) and ARM
+(ARM64) is supported, and no external C (cgo) code is used, which should make
+the library very easy to use.")
+    (license license:expat)))
+
+(define-public go-github-com-asecurityteam-rolling
+  (package
+    (name "go-github-com-asecurityteam-rolling")
+    (version "2.2.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/asecurityteam/rolling")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "18m1fpq8svkys8fi08chrphr506nb6jjhlbn9h1rh5d395bi3rfz"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/asecurityteam/rolling"))
+    (home-page "https://github.com/asecurityteam/rolling")
+    (synopsis "Rolling window implementation in go")
+    (description "A rolling window implemenation in go that continuously
+overwrites the oldest value with the latest to preserve the specified value
+count.  This type of window is useful for collecting data that have a known
+interval on which they are capture or for tracking data where time is not a
+factor.")
+    (license license:asl2.0)))
+
+(define-public go-github-com-guptarohit-asciigraph
+  (package
+    (name "go-github-com-guptarohit-asciigraph")
+    (version "0.5.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/guptarohit/asciigraph")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1hkxaqs30hbybbxapr8vng09r6wr8afpkqkn0g6aj1vl3fvhjn49"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/guptarohit/asciigraph"))
+    (home-page "https://github.com/guptarohit/asciigraph")
+    (synopsis "Package to make a lightweight ASCII line graph")
+    (description "Go package to make a lightweight ASCII line graph for CLI
+apps.")
+    (license license:bsd-3)))
+
+(define-public go-github-com-oklog-run
+  (package
+    (name "go-github-com-oklog-run")
+    (version "1.1.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/oklog/run")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "0r55p3kgdkgw55i33lqvvvl60mjp92mhd1170m980sw98z9150jk"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/oklog/run"))
+    (home-page "https://github.com/oklog/run")
+    (synopsis "Universal mechanism to manage goroutine lifecycles")
+    (description "Package run implements an actor-runner with deterministic
+teardown.  It is somewhat similar to package errgroup, except it does not
+require actor goroutines to understand context semantics.  This makes it
+suitable for use in more circumstances; for example, goroutines which are
+handling connections from net.Listeners, or scanning input from a closable
+io.Reader.")
+    (license license:asl2.0)))
+
+(define-public go-github-com-tomlazar-table
+  (package
+    (name "go-github-com-tomlazar-table")
+    (version "0.1.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/tomlazar/table")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "017ps5n44xvdl2b656v89qi0gib95fz60vqvnpq7kjzjn9sr3awy"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/tomlazar/table"))
+    (inputs
+     `(("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify)))
+    (propagated-inputs
+      `(("go-github-com-mgutz-ansi" ,go-github-com-mgutz-ansi)
+        ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
+        ("go-github-com-mattn-go-colorable"
+         ,go-github-com-mattn-go-colorable)))
+    (home-page "https://github.com/tomlazar/table")
+    (synopsis "Colorful tables in go with less effort")
+    (description "Print tabular data on the command line using ansi color
+esacape codes.  Support for writing the ouput based on the fields in a struct
+and for defining and creating the table manully using the underlying object.")
+    (license license:expat)))
+
+(define-public go-github-com-looplab-tarjan
+  (package
+    (name "go-github-com-looplab-tarjan")
+    (version "0.1.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/looplab/tarjan")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "0km1qzkw1c0gl0fjkmcaibirxzk35z9f44nspk46vbjfgcm78z58"))))
+    (build-system go-build-system)
+    (arguments '(#:import-path "github.com/looplab/tarjan"))
+    (home-page "https://github.com/looplab/tarjan")
+    (synopsis "Graph loop detection using Tarjan's algorithm")
+    (description "Tarjan is a graph loop detection function using Tarjan's
+algorithm.  The algorithm takes a input graph and produces a slice where each
+item is a slice of strongly connected vertices.  The input graph is in form of
+a map where the key is a graph vertex and the value is the edges in for of a
+slice of vertices.")
+    (license license:asl2.0)))
+
+(define-public go-github-com-md14454-gosensors
+  (package
+    (name "go-github-com-md14454-gosensors")
+    (version "0.0.0-20180726083412-bded752ab001")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/md14454/gosensors")
+               (commit (go-version->git-ref version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "08ffz56h93rcsyp84zxirdj3azb9rkql7sc0dj22pp17w11qlwhx"))))
+    (build-system go-build-system)
+    (propagated-inputs
+     `(("lm-sensors:lib" ,lm-sensors "lib")))
+    (arguments '(#:import-path "github.com/md14454/gosensors"
+                 #:tests? #f))
+    (home-page "https://github.com/md14454/gosensors")
+    (synopsis "Go bindings for libsensors")
+    (description "Go bindings for libsensors.so from the lm-sensors project
+via external C bindings.")
+    (license license:expat)))
+
 (define-public go-github-com-dreamacro-go-shadowsocks2
   (package
     (name "go-github-com-dreamacro-go-shadowsocks2")
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index 8727f0f20a..3acad0cfc5 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -9,6 +9,7 @@ 
 ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
 ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2021, 2022 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022 Elais Player <elais@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -40,6 +41,7 @@  (define-module (gnu packages hardware)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages golang)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
@@ -54,6 +56,7 @@  (define-module (gnu packages hardware)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
+  #:use-module (gnu packages syncthing)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages virtualization)
   #:use-module (gnu packages web)
@@ -62,6 +65,7 @@  (define-module (gnu packages hardware)
   #:use-module (gnu packages xorg)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system go)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (guix download)
@@ -928,6 +932,50 @@  (define-public screentest
     (home-page "https://github.com/TobiX/screentest")
     (license license:gpl2)))
 
+(define-public fan2go
+  (package
+    (name "fan2go")
+    (version "0.4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/markusressel/fan2go")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "12mrkpzi3bwxwbhzm7l4hlpb8jna89p9ywaf3nf82739jallf2fy"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/markusressel/fan2go"
+       #:tests? #f))
+    (inputs
+     `(("lm-sensors:lib" ,lm-sensors "lib")))
+    (propagated-inputs
+     `(("go-etcd-io-bbolt" ,go-etcd-io-bbolt)
+       ("go-github-com-tomlazar-table" ,go-github-com-tomlazar-table)
+       ("go-github-com-spf13-viper" ,go-github-com-spf13-viper)
+       ("go-github-com-spf13-cobra" ,go-github-com-spf13-cobra)
+       ("go-github-com-pterm-pterm" ,go-github-com-pterm-pterm)
+       ("go-github-com-prometheus-client-golang"
+        ,go-github-com-prometheus-client-golang)
+       ("go-github-com-oklog-run" ,go-github-com-oklog-run)
+       ("go-github-com-mitchellh-go-homedir" ,go-github-com-mitchellh-go-homedir)
+       ("go-github-com-mgutz-ansi" ,go-github-com-mgutz-ansi)
+       ("go-github-com-md14454-gosensors" ,go-github-com-md14454-gosensors)
+       ("go-github-com-mattn-go-colorable" ,go-github-com-mattn-go-colorable)
+       ("go-github-com-looplab-tarjan" ,go-github-com-looplab-tarjan)
+       ("go-github-com-guptarohit-asciigraph"
+        ,go-github-com-guptarohit-asciigraph)
+       ("go-github-com-asecurityteam-rolling"
+        ,go-github-com-asecurityteam-rolling)))
+    (home-page "https://github.com/markusressel/fan2go")
+    (synopsis "Fan speed control daemon based on reading temperature sensors")
+    (description "fan2go is a simple fan control daemon that relies on
+lm-sensors to get both temperature and RPM sensor readings, as well as PWM
+controls, so you will have to set it up first.")
+    (license license:agpl3)))
+
 (define-public tpm2-tss
   (package
     (name "tpm2-tss")

base-commit: a27e47f9d1e22dc32bb250cfeef88cfacb930e23
-- 
2.34.0