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

