Subject: [bug#51989] [PATCH 00/12] Add aws-vault and missing dependent packages

From: "Collin J. Doering" <[email-masked]>
Date: Mon, 27 Dec 2021 11:19:37 -0500

Hi Ludovic,

Thank you for getting back to me.

> Hi Collin,
>
> "Collin J. Doering" <[email-masked]> skribis:
>
>> aws-vault is a tool to securely store and use aws credentials. This patch set packages aws-vault as well as missing dependencies.
>>
>> Note: perhaps gnu/packages/golang.scm is not the best fit for these changes. Any suggestions for a better spot appreciated.
>
> Hmm not sure; most of the dependencies are at home in golang.scm IMO.
> I’d leave it as is.
>
>> Collin J. Doering (12):
>>   gnu: Add go-keyring
>>   gnu: Add go-androidnsfix
>>   gnu: Add go-percent
>>   gnu: Add go-aws-sdk-go
>>   gnu: Add go-jose2go
>>   gnu: Add go-libsecret
>>   gnu: Add go-ini
>>   gnu: Add go-open-golang
>>   gnu: Add go-alecthomas-template
>>   gnu: Add go-alecthomas-units
>>   gnu: Add go-kingpin
>>   gnu: Add aws-vault
>
> I tried to apply those (overall it LGTM), but the order is incorrect:
> for instance ‘go-keyring’ depends on ‘go-percent’ and ‘go-libsecret’.
>
> So I have the following queries:
>
>   1. Do you think you could send them in the “right order”?
>

Done (see new patch set attached to this email).

>   2. As you go, could you pass them to:
>
>       ./pre-inst-env guix style PKG
>
>      ?
>

I actually had issues doing this. The above command would segfault. After running the `clean` and `clean-go` make targets, it would no longer segfault, but would then complain about ABI compatibility. I didn't debug further instead ran the `etc/indent-code.el` source file, commiting as necessary. However, I did find that after rebasing my changes onto the tip of master, the `guix style` command started to work as expected.

Another note: I use emacs and did load the `.dir-locals.el` file when making these changes, so I would have expected formatting to be fine already. Must be something on my end that is affecting auto-formatting in emacs.

>   3. Last, it would be perfect if you could provide the conventional
>      commit logs.
>

Done. Please let me know if the new logs provided match the expected conventions.

> Thanks in advance, and sorry for the delay!
>
> Ludo’.

Thank you again for your consideration and time reviewing this patchset.

Kind regards,

>From a818930304e46f89c82b1dd6ac43d4342a161862 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Sun, 26 Dec 2021 22:03:56 -0500
Subject: [PATCH 01/12] gnu: Add go-percent

* gnu/packages/golang.scm (go-github-com-percent): New Variable.
---
 gnu/packages/golang.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 50d03516cf..c5ca0410b8 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -8843,3 +8843,26 @@ (define-public go-github-com-arceliar-ironwood
 @url{https://github.com/yggdrasil-network/yggdrasil-go,Yggdrasil}, but it may
 be useful for other network applications.")
     (license license:mpl2.0)))
+
+(define-public go-github-com-percent
+  (package
+    (name "go-percent")
+    (version "v0.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mtibben/percent")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1iqivw8pigj259rj5yifibbvic70f9hb7k24a4sa967s4fj6agb6"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/mtibben/percent"
+       #:phases %standard-phases))
+    (synopsis "Package percent escapes strings using percent-encoding")
+    (description
+     "Package percent escapes strings using percent-encoding.")
+    (home-page "https://github.com/mtibben/percent")
+    (license license:expat)))
-- 
2.34.0

>From 705eb1a3d96a11a3d3e0cacdb0c7116db62c53a7 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Sun, 26 Dec 2021 22:06:06 -0500
Subject: [PATCH 02/12] gnu: Add go-libsecret

* gnu/packages/golang.scm (go-github-com-go-libsecret): New variable.
---
 gnu/packages/golang.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index c5ca0410b8..a38d1c4fcf 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -8866,3 +8866,32 @@ (define-public go-github-com-percent
      "Package percent escapes strings using percent-encoding.")
     (home-page "https://github.com/mtibben/percent")
     (license license:expat)))
+
+(define-public go-github-com-go-libsecret
+  (let ((commit "a6f4afe4910cad8688db3e0e9b9ac92ad22d54e1")
+        (revision "0"))
+    (package
+      (name "go-libsecret")
+      (version "5.0.1")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/gsterjov/go-libsecret")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "09zaiadnll83vs22ib89agg7anj0blw5fywvmckxllsgif6ak6v7"))))
+      (build-system go-build-system)
+      (native-inputs
+       `(("go-github-com-godbus-dbus" ,go-github-com-godbus-dbus)))
+      (arguments
+       '(#:import-path "github.com/gsterjov/go-libsecret"
+         #:phases %standard-phases))
+      (synopsis "Go library that manages secrets via the
+freedesktop.org Secret Service DBus API")
+      (description
+       "Native go library that manages secrets via the freedesktop.org Secret
+Service DBus API")
+      (home-page "https://github.com/gsterjov/go-libsecret")
+      (license license:expat))))
-- 
2.34.0

>From 092257ab427888ee0232c75bc9f57cff3a4272c3 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Sun, 26 Dec 2021 22:48:28 -0500
Subject: [PATCH 03/12] gnu: Add go-keyring

* gnu/packages/golang.scm (go-github-com-99designs-go-keyring): New variable.
---
 gnu/packages/golang.scm | 44 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index a38d1c4fcf..d093c3bbf2 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -64,8 +64,10 @@ (define-module (gnu packages golang)
   #:use-module ((gnu packages bootstrap) #:select (glibc-dynamic-linker))
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages mp3)
+  #:use-module (gnu packages password-utils)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -8895,3 +8897,45 @@ (define-public go-github-com-go-libsecret
 Service DBus API")
       (home-page "https://github.com/gsterjov/go-libsecret")
       (license license:expat))))
+
+(define-public go-github-com-99designs-go-keyring
+  (package
+    (name "go-keyring")
+    (version "v1.1.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/99designs/keyring")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "08rcdqpxaa9n348q10fw40q4gxpjajkyrighykk71i7mxzwkcgwn"))))
+    (build-system go-build-system)
+    (native-inputs
+     `(("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
+       ("go-golang-org-x-sys" ,go-golang-org-x-sys)
+       ("go-github-com-percent" ,go-github-com-percent)
+       ("go-github-com-mitchellh-go-homedir" ,go-github-com-mitchellh-go-homedir)
+       ("go-github-com-dvsekhvalnov-jose2go" ,go-github-com-dvsekhvalnov-jose2go)
+       ("go-github-com-godbus-dbus" ,go-github-com-godbus-dbus)
+       ("go-github-com-go-libsecret" ,go-github-com-go-libsecret)
+       ("password-store" ,password-store)
+       ("gnupg" ,gnupg)))
+    (arguments
+     '(#:import-path "github.com/99designs/keyring"
+       #:phases (modify-phases %standard-phases
+                  ;; Tests require vagrant
+                  (delete 'check))))
+    (synopsis "Go library providing a uniform interface for various secure
+credential stores")
+    (description
+     "Keyring provides utility functions for and a common interface to a range
+of secure credential storage services.  Originally developed as part of AWS
+Vault, a command line tool for securely managing AWS access from developer
+workstations.
+
+Currently Keyring supports the following backends: macOS/OSX Keychain, Windows
+pcredential store, Pass, Secret Service, KDE Wallet, Encrypted File.")
+    (home-page "https://github.com/99designs/keyring")
+    (license license:expat)))
-- 
2.34.0

>From c01b0db68830024cc5cf452143a3bccbb189d50d Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Sun, 26 Dec 2021 22:36:17 -0500
Subject: [PATCH 04/12] gnu: Add go-androidnsfix

* gnu/packages/golang.scm (go-github-com-androiddnsfix): New variable.
---
 gnu/packages/golang.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index d093c3bbf2..dc22ce01dd 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -8939,3 +8939,27 @@ (define-public go-github-com-99designs-go-keyring
 pcredential store, Pass, Secret Service, KDE Wallet, Encrypted File.")
     (home-page "https://github.com/99designs/keyring")
     (license license:expat)))
+
+(define-public go-github-com-androiddnsfix
+  (package
+    (name "go-androiddnsfix")
+    (version "ff02804463540c36e3a148dcf4b009d003cf2a31")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mtibben/androiddnsfix")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1pcbjs793kd0yg3dcp79agfxm7xm3sldx2r7v66ipzpcq0j2npi2"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/mtibben/androiddnsfix"
+       #:phases %standard-phases))
+    (synopsis "Hack to get around the issues building on android")
+    (description
+     "Hack around the issues in https://github.com/golang/go/issues/8877.")
+    (home-page "https://github.com/mtibben/androiddnsfix")
+    (license license:expat)))
+
-- 
2.34.0

>From c3d560c81930d71bbbbf423db97f99cb3c781c05 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Sun, 26 Dec 2021 22:37:12 -0500
Subject: [PATCH 05/12] gnu: Add go-aws-sdk-go

* gnu/packages/golang.scm (go-github-com-aws-aws-sdk-go): New variable.
---
 gnu/packages/golang.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index dc22ce01dd..c0eb352d42 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -8963,3 +8963,28 @@ (define-public go-github-com-androiddnsfix
     (home-page "https://github.com/mtibben/androiddnsfix")
     (license license:expat)))
 
+(define-public go-github-com-aws-aws-sdk-go
+  (package
+    (name "go-aws-sdk-go")
+    (version "1.36.18")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/aws/aws-sdk-go")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "169mkkw1cff1px6326krwvfpfj07sb4y5rbn003gi4bk176h6ry9"))))
+    (build-system go-build-system)
+    (native-inputs
+     `(("go-github-com-jmespath-go-jmespath" ,go-github-com-jmespath-go-jmespath)))
+    (arguments
+     '(#:import-path "github.com/aws/aws-sdk-go"
+       #:phases %standard-phases))
+    (synopsis "The official AWS SDK for the Go programming language")
+    (description
+     "The official AWS SDK for the Go programming language.")
+    (home-page "https://github.com/aws/aws-sdk-go")
+    (license license:asl2.0)))
+
-- 
2.34.0

>From 038a25940e36b11e3e97eac24103ae1336c4cde9 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Fri, 19 Nov 2021 17:56:39 -0500
Subject: [PATCH 06/12] gnu: Add go-jose2go

* gnu/packages/golang.scm (go-github-com-dvsekhvalnov-jose2go): New variable.
---
 gnu/packages/golang.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index c0eb352d42..6b38ed3d5b 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -8988,3 +8988,29 @@ (define-public go-github-com-aws-aws-sdk-go
     (home-page "https://github.com/aws/aws-sdk-go")
     (license license:asl2.0)))
 
+(define-public go-github-com-dvsekhvalnov-jose2go
+  (package
+    (name "go-jose2go")
+    (version "1.5.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/dvsekhvalnov/jose2go")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1pzfmv2dxb3m455bi1ks4q3i0dcw1sazxk8k96wrgpkwgglyxj3n"))))
+    (build-system go-build-system)
+    (native-inputs
+     `(("go-gopkg-in-check-v1" ,go-gopkg-in-check-v1)))
+    (arguments
+     '(#:import-path "github.com/dvsekhvalnov/jose2go"
+       #:phases %standard-phases))
+    (synopsis "Go implementation of Javascript Object Signing and Encryption spec")
+    (description
+     "Pure Golang (GO) library for generating, decoding and encrypting JSON Web
+Tokens.  Zero dependency, relies only on standard library.")
+    (home-page "https://github.com/dvsekhvalnov/jose2go")
+    (license license:expat)))
+
-- 
2.34.0

>From acbe76bae0eba250ef53bb4ebd81ed9b52838cb3 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Sun, 26 Dec 2021 22:44:05 -0500
Subject: [PATCH 07/12] gnu: Add go-ini

* gnu/packages/golang.scm (go-gopkg-in-ini): New variable.
---
 gnu/packages/golang.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 6b38ed3d5b..eb246721be 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -62,6 +62,7 @@ (define-module (gnu packages golang)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages base)
   #:use-module ((gnu packages bootstrap) #:select (glibc-dynamic-linker))
+  #:use-module (gnu packages check)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnupg)
@@ -9014,3 +9015,28 @@ (define-public go-github-com-dvsekhvalnov-jose2go
     (home-page "https://github.com/dvsekhvalnov/jose2go")
     (license license:expat)))
 
+(define-public go-gopkg-in-ini
+  (package
+    (name "go-ini")
+    (version "v1.62.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gopkg.in/ini.v1")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1dm9ydqyflasp5li22kb0w73s6kp2swii8naqfhnz64v171gmm5v"))))
+    (build-system go-build-system)
+    (native-inputs
+     `(("go-github.com-smartystreets-goconvey" ,go-github.com-smartystreets-goconvey)))
+    (arguments
+     '(#:import-path "gopkg.in/ini.v1"
+       #:phases %standard-phases))
+    (synopsis "Provides INI file read and write functionality in Go")
+    (description
+     "Provides INI file read and write functionality in Go.")
+    (home-page "https://gopkg.in/ini.v1")
+    (license license:asl2.0)))
+
-- 
2.34.0

>From ada2845ece53bb5615732a06e3d7214de9b8d7a2 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Fri, 19 Nov 2021 18:05:30 -0500
Subject: [PATCH 08/12] gnu: Add go-open-golang

* gnu/packages/golang.scm (go-open-golang): New variable.
---
 gnu/packages/golang.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index eb246721be..4d8def5f1d 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9040,3 +9040,34 @@ (define-public go-gopkg-in-ini
     (home-page "https://gopkg.in/ini.v1")
     (license license:asl2.0)))
 
+(define-public go-github-com-skratchdot-open-golang
+  (let ((commit "79abb63cd66e41cb1473e26d11ebdcd68b04c8e5")
+        (revision "0"))
+    (package
+      (name "go-open-golang")
+      (version "1.42.0")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/skratchdot/open-golang")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0jc13jn8cj7p14n79zhav2nwga6kf9rqs01ic5k7j7agwzzly3ww"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/skratchdot/open-golang"
+         #:phases (modify-phases %standard-phases
+                    (delete 'build)
+                    (delete 'check))))
+      (synopsis "Open a file, directory, or URI using the OS's default application")
+      (description
+       "Open a file, directory, or URI using the OS's default application for
+that object type.  Optionally, you can specify an application to use.
+
+This is a proxy for the following commands: OSX - open, Windows - start,
+Linux/Other - xdg-open")
+      (home-page "https://github.com/skratchdot/open-golang")
+      (license license:expat))))
+
-- 
2.34.0

>From b7c8f307e77eb44257e7be465e6025066b80a520 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Fri, 19 Nov 2021 18:06:02 -0500
Subject: [PATCH 09/12] gnu: Add go-alecthomas-template

* gnu/packages/golang.scm (go-github-com-alecthomas-template): New variable.
---
 gnu/packages/golang.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 4d8def5f1d..b99947a9f6 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9071,3 +9071,30 @@ (define-public go-github-com-skratchdot-open-golang
       (home-page "https://github.com/skratchdot/open-golang")
       (license license:expat))))
 
+(define-public go-github-com-alecthomas-template
+  (let ((commit "a0175ee3bccc567396460bf5acd36800cb10c49c")
+        (revision "0"))
+    (package
+      (name "go-alecthomas-template")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/alecthomas/template")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/alecthomas/template"
+         #:phases %standard-phases))
+      (synopsis "Fork of Go's text/template adding newline elision")
+      (description
+       "This is a fork of Go 1.4's text/template package with one addition: a
+backslash immediately after a closing delimiter will delete all subsequent
+newlines until a non-newline.")
+      (home-page "https://github.com/alecthomas/template")
+      (license license:bsd-3))))
+
-- 
2.34.0

>From 49d7cc391ff705fdda4652ab105af2cb95ae2f25 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Fri, 19 Nov 2021 18:06:33 -0500
Subject: [PATCH 10/12] gnu: Add go-alecthomas-units

* gnu/packages/golang.scm (go-github-com-alecthomas-units): New variable.
---
 gnu/packages/golang.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index b99947a9f6..501f0cb0e4 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9098,3 +9098,29 @@ (define-public go-github-com-alecthomas-template
       (home-page "https://github.com/alecthomas/template")
       (license license:bsd-3))))
 
+(define-public go-github-com-alecthomas-units
+  (let ((commit "2efee857e7cfd4f3d0138cc3cbb1b4966962b93a")
+        (revision "0"))
+    (package
+      (name "go-alecthomas-units")
+      (version "0.0.0")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/alecthomas/units")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl"))))
+      (build-system go-build-system)
+      (native-inputs
+       `(("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify)))
+      (arguments
+       '(#:import-path "github.com/alecthomas/units"
+         #:phases %standard-phases))
+      (synopsis "Helpful unit multipliers and functions for Go")
+      (description
+       "Helpful unit multipliers and functions for Go")
+      (home-page "https://github.com/alecthomas/units")
+      (license license:expat))))
-- 
2.34.0

>From 1cc29dad49f72ea23c35cdcc1c156fac879b0f82 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Fri, 19 Nov 2021 18:06:56 -0500
Subject: [PATCH 11/12] gnu: Add go-kingpin

* gnu/packages/golang.scm (go-github-com-kingpin): New variable.
---
 gnu/packages/golang.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 501f0cb0e4..7acb533ad7 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -9071,6 +9071,33 @@ (define-public go-github-com-skratchdot-open-golang
       (home-page "https://github.com/skratchdot/open-golang")
       (license license:expat))))
 
+(define-public go-github-com-kingpin
+  (package
+    (name "go-kingpin")
+    (version "2.2.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/alecthomas/kingpin")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r"))))
+    (build-system go-build-system)
+    (native-inputs
+     `(("go-github-com-alecthomas-template" ,go-github-com-alecthomas-template)
+       ("go-github-com-alecthomas-units" ,go-github-com-alecthomas-units)
+       ("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify)))
+    (arguments
+     '(#:import-path "github.com/alecthomas/kingpin"
+       #:phases %standard-phases))
+    (synopsis "Go library provides utilities for building command line interfaces")
+    (description
+     "Go library provides utilities for building command line interfaces.")
+    (home-page "https://github.com/alecthomas/kingpin")
+    (license license:expat)))
+
 (define-public go-github-com-alecthomas-template
   (let ((commit "a0175ee3bccc567396460bf5acd36800cb10c49c")
         (revision "0"))
-- 
2.34.0

>From 44c9abdea16443d7de6b77595f83264a215acef9 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Sun, 26 Dec 2021 22:46:07 -0500
Subject: [PATCH 12/12] gnu: Add aws-vault

* gnu/packages/golang.scm (aws-vault): New variable.
---
 gnu/packages/golang.scm | 72 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 7acb533ad7..5fe7e65202 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -8870,6 +8870,78 @@ (define-public go-github-com-percent
     (home-page "https://github.com/mtibben/percent")
     (license license:expat)))
 
+(define-public aws-vault
+  (package
+    (name "aws-vault")
+    (version "6.3.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/99designs/aws-vault")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "02zw0kl77yr56mw1fbvr51c4mz2265c9al2nzvnqqzdx5aha7nf8"))))
+    (build-system go-build-system)
+    (native-inputs
+     `(("go-keyring" ,go-github-com-99designs-go-keyring)
+       ("go-github-com-androiddnsfix" ,go-github-com-androiddnsfix)
+       ("go-github-com-percent" ,go-github-com-percent)
+       ("go-github-com-jmespath-go-jmespath" ,go-github-com-jmespath-go-jmespath)
+       ("go-github-com-aws-aws-sdk-go" ,go-github-com-aws-aws-sdk-go)
+       ("go-github-com-dvsekhvalnov-jose2go" ,go-github-com-dvsekhvalnov-jose2go)
+       ("go-github-com-godbus-dbus" ,go-github-com-godbus-dbus)
+       ("go-github-com-go-libsecret" ,go-github-com-go-libsecret)
+       ("go-github-com-mitchellh-go-homedir" ,go-github-com-mitchellh-go-homedir)
+       ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
+       ("go-golang-org-x-sys" ,go-golang-org-x-sys)
+       ("go-gopkg-in-ini" ,go-gopkg-in-ini)
+       ("go-github-com-skratchdot-open-golang" ,go-github-com-skratchdot-open-golang)
+       ("go-github-com-kingpin" ,go-github-com-kingpin)
+       ("go-github-com-alecthomas-template" ,go-github-com-alecthomas-template)
+       ("go-github-com-alecthomas-units" ,go-github-com-alecthomas-units)))
+    (arguments
+     `(#:import-path "github.com/99designs/aws-vault"
+       #:install-source? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-version
+           (lambda _
+             (substitute* "src/github.com/99designs/aws-vault/main.go"
+               (("var Version = \"dev\"")
+                (string-append "var Version = \"v" ,version "\"")))))
+         (add-after 'build 'contrib
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (zsh-site-dir (string-append out "/share/zsh/site-functions"))
+                    (bash-completion-dir
+                     (string-append out "/share/bash-completion/completions"))
+                    (fish-completion-dir
+                     (string-append out "/share/fish/completions")))
+               (for-each mkdir-p
+                         `(,zsh-site-dir ,bash-completion-dir ,fish-completion-dir))
+               (with-directory-excursion
+                   "src/github.com/99designs/aws-vault/contrib/completions"
+                 (copy-file "zsh/aws-vault.zsh"
+                            (string-append zsh-site-dir "/_aws-vault"))
+                 (copy-file "bash/aws-vault.bash"
+                            (string-append bash-completion-dir "/aws-vault"))
+                 (copy-file "fish/aws-vault.fish"
+                            (string-append fish-completion-dir "/aws-vault.fish")))
+               #t))))))
+    (synopsis
+     "Vault for securely storing and accessing AWS credentials")
+    (description
+     "AWS Vault is a tool to securely store and access AWS credentials.
+
+AWS Vault stores IAM credentials in your operating system's secure keystore and
+then generates temporary credentials from those to expose to your shell and
+applications.  It's designed to be complementary to the AWS CLI tools, and is
+aware of your profiles and configuration in ~/.aws/config.")
+    (home-page "https://github.com/99designs/aws-vault")
+    (license license:expat)))
+
 (define-public go-github-com-go-libsecret
   (let ((commit "a6f4afe4910cad8688db3e0e9b9ac92ad22d54e1")
         (revision "0"))
-- 
2.34.0

-- 
Collin J. Doering

http://rekahsoft.ca
http://blog.rekahsoft.ca
http://git.rekahsoft.ca