diff options
Diffstat (limited to 'gnu/packages/password-utils.scm')
-rw-r--r-- | gnu/packages/password-utils.scm | 960 |
1 files changed, 502 insertions, 458 deletions
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 051dc6a9ac..5860e9b57c 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -34,7 +34,7 @@ ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2021 David Dashyan <mail@davie.li> -;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2022 Maxim Cournoyer <maxim@guixotic.coop> ;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2022 ( <paren@disroot.org> ;;; Copyright © 2022 Nicolas Graves <ngraves@ngraves.fr> @@ -42,6 +42,8 @@ ;;; Copyright © 2023 Christian Miller <christian.miller@dadoes.de> ;;; Copyright © 2024, 2025 John Kehayias <john.kehayias@protonmail.com> ;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2025 Cayetano Santos <csantosb@inventati.org> +;;; Copyright © 2025 Isidor Zeuner <guix@quidecco.pl> ;;; ;;; This file is part of GNU Guix. ;;; @@ -95,6 +97,7 @@ #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gnupg) + #:use-module (gnu packages golang) #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-crypto) #:use-module (gnu packages golang-xyz) @@ -109,6 +112,7 @@ #:use-module (gnu packages man) #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) + #:use-module (gnu packages nettle) #:use-module (gnu packages nss) #:use-module (gnu packages opencl) #:use-module (gnu packages perl) @@ -151,6 +155,7 @@ (build-system go-build-system) (arguments (list + #:go go-1.23 #:install-source? #f #:import-path "github.com/99designs/aws-vault" #:build-flags @@ -337,106 +342,105 @@ algorithms AES or Twofish.") (method url-fetch) (uri (string-append "mirror://sourceforge/keepass/KeePass%202.x/" version - "/KeePass-" version "-Source.zip")) - (sha256 (base32 "11i9h0pbvbmz3a6wkp97qhrc8r4l5a2iwxw6vl0zwcp19ka5gdpp")))) + "/KeePass-" version "-Source.zip")) + (sha256 + (base32 "11i9h0pbvbmz3a6wkp97qhrc8r4l5a2iwxw6vl0zwcp19ka5gdpp")))) (build-system gnu-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'unpack - (lambda* (#:key source #:allow-other-keys) - (mkdir "source") - (chdir "source") - (invoke "unzip" source))) - (replace 'configure - (lambda* (#:key inputs #:allow-other-keys) - ;; Make reproducible by setting build number to 0. - (substitute* "KeePass/Properties/AssemblyInfo.cs" - (("AssemblyVersion[(]\"2.57.1.*\"[)]") - "AssemblyVersion(\"2.57.1.0\")")) - (substitute* "KeePassLib/Native/NativeMethods.Unix.cs" - (("libgcrypt.so.20" all) - (string-append (search-input-file inputs (string-append "/lib/" all)))) - (("libglib-2.0.so.0" all) - (string-append (search-input-file inputs (string-append "/lib/" all)))) - (("libgtk-3.so.0" all) - (string-append (search-input-file inputs (string-append "/lib/" all))))) - (substitute* "KeePass.sln" - (("GlobalSection\\(ExtensibilityGlobals\\).*?EndGlobalSection") - "") - (("GlobalSection\\(ExtensibilityGlobals\\).*?EndGlobalSection" - all) - "") - (("Format Version 10\\.0") - "Format Version 11.00")) - (substitute* "KeePass/KeePass.csproj" - ((" ToolsVersion=\\\"3\\.5\\\"") - " ToolsVersion=\"4.0\"") - (("<SignAssembly>true</SignAssembly>") - "<SignAssembly>false</SignAssembly>") - ;; XML Serializer AOT compiler doesn't work here. - ;; mono will just fall back to the runtime compiler. - (("[$][(]FrameworkSDKDir[)]bin.sgen[.]exe") - "echo") - (("<TargetFrameworkVersion>v4\\.8</TargetFrameworkVersion>") - "<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>")) - (copy-file - "Ext/Icons_15_VA/LowResIcons/KeePass_LR.ico" - "KeePass/KeePass.ico") - (copy-file - "Ext/Icons_15_VA/LowResIcons/KeePass_LR.ico" - "KeePass/IconsKeePass.ico") - (copy-file - "Ext/Icons_15_VA/LowResIcons/KeePass_LR_G.ico" - "KeePass/IconsKeePass_G.ico") - (copy-file - "Ext/Icons_15_VA/LowResIcons/KeePass_LR_R.ico" - "KeePass/IconsKeePass_R.ico") - (copy-file - "Ext/Icons_15_VA/LowResIcons/KeePass_LR_Y.ico" - "KeePass/IconsKeePass_Y.ico") - (substitute* "KeePassLib/KeePassLib.csproj" - ((" ToolsVersion=\\\"3\\.5\\\"") - " ToolsVersion=\"4.0\"") - (("<SignAssembly>true</SignAssembly>") - "<SignAssembly>false</SignAssembly>")) - (substitute* "Translation/TrlUtil/TrlUtil.csproj" - ((" ToolsVersion=\\\"3\\.5\\\"") " ToolsVersion=\"4.0\"")) - (copy-file - "Ext/Icons_15_VA/LowResIcons/KeePass_LR.ico" - "KeePass/Resources/KeePass.ico"))) - (delete 'patch-source) - (replace 'build - (lambda* (#:key outputs #:allow-other-keys) - (setenv "MONO_REGISTRY_PATH" "/dev/null") - (setenv "LANG" "C") - (setenv "LC_ALL" "C") - (invoke - "xbuild" - "/target:KeePass" - "/property:Configuration=Release" - "/property:CscToolExe=mcs" - "/verbosity:diagnostic"))) - (replace 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (script (string-append out "/bin/keepass")) - (mono (assoc-ref inputs "mono")) - (lib (string-append out "/lib/keepass"))) - (install-file "KeePass/obj/Release/KeePass.exe" lib) - (install-file "Ext/KeePass.config.xml" lib) - (mkdir (string-append out "/bin")) - (call-with-output-file script - (lambda (port) - (format port "#!/bin/sh + (list + #:phases + #~(modify-phases %standard-phases + (replace 'unpack + (lambda* (#:key source #:allow-other-keys) + (mkdir "source") + (chdir "source") + (invoke "unzip" source))) + (replace 'configure + (lambda* (#:key inputs #:allow-other-keys) + ;; Make reproducible by setting build number to 0. + (substitute* "KeePass/Properties/AssemblyInfo.cs" + (("AssemblyVersion[(]\"2.57.1.*\"[)]") + "AssemblyVersion(\"2.57.1.0\")")) + (substitute* "KeePassLib/Native/NativeMethods.Unix.cs" + (("libgcrypt.so.20|libglib-2.0.so.0|libgtk-3.so.0" all) + (search-input-file inputs (string-append "/lib/" all)))) + (substitute* "KeePass.sln" + (("GlobalSection\\(ExtensibilityGlobals\\).*?EndGlobalSection") + "") + (("GlobalSection\\(ExtensibilityGlobals\\).*?EndGlobalSection" + all) + "") + (("Format Version 10\\.0") + "Format Version 11.00")) + (substitute* "KeePass/KeePass.csproj" + ((" ToolsVersion=\\\"3\\.5\\\"") + " ToolsVersion=\"4.0\"") + (("<SignAssembly>true</SignAssembly>") + "<SignAssembly>false</SignAssembly>") + ;; XML Serializer AOT compiler doesn't work here. + ;; mono will just fall back to the runtime compiler. + (("[$][(]FrameworkSDKDir[)]bin.sgen[.]exe") + "echo") + (("<TargetFrameworkVersion>v4\\.8</TargetFrameworkVersion>") + "<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>")) + (copy-file + "Ext/Icons_15_VA/LowResIcons/KeePass_LR.ico" + "KeePass/KeePass.ico") + (copy-file + "Ext/Icons_15_VA/LowResIcons/KeePass_LR.ico" + "KeePass/IconsKeePass.ico") + (copy-file + "Ext/Icons_15_VA/LowResIcons/KeePass_LR_G.ico" + "KeePass/IconsKeePass_G.ico") + (copy-file + "Ext/Icons_15_VA/LowResIcons/KeePass_LR_R.ico" + "KeePass/IconsKeePass_R.ico") + (copy-file + "Ext/Icons_15_VA/LowResIcons/KeePass_LR_Y.ico" + "KeePass/IconsKeePass_Y.ico") + (substitute* "KeePassLib/KeePassLib.csproj" + ((" ToolsVersion=\\\"3\\.5\\\"") + " ToolsVersion=\"4.0\"") + (("<SignAssembly>true</SignAssembly>") + "<SignAssembly>false</SignAssembly>")) + (substitute* "Translation/TrlUtil/TrlUtil.csproj" + ((" ToolsVersion=\\\"3\\.5\\\"") " ToolsVersion=\"4.0\"")) + (copy-file + "Ext/Icons_15_VA/LowResIcons/KeePass_LR.ico" + "KeePass/Resources/KeePass.ico"))) + (delete 'patch-source) + (replace 'build + (lambda* (#:key outputs #:allow-other-keys) + (setenv "MONO_REGISTRY_PATH" "/dev/null") + (setenv "LANG" "C") + (setenv "LC_ALL" "C") + (invoke + "xbuild" + "/target:KeePass" + "/property:Configuration=Release" + "/property:CscToolExe=mcs" + "/verbosity:diagnostic"))) + (replace 'install + (lambda* (#:key inputs #:allow-other-keys) + (let* ((script (string-append #$output "/bin/keepass")) + (mono (assoc-ref inputs "mono")) + (lib (string-append #$output "/lib/keepass"))) + (install-file "KeePass/obj/Release/KeePass.exe" lib) + (install-file "Ext/KeePass.config.xml" lib) + (mkdir (string-append #$output "/bin")) + (call-with-output-file script + (lambda (port) + (format port "#!/bin/sh exec ~s/bin/mono ~s/lib/keepass/KeePass.exe \"$@\" " - mono out))) - (chmod script #o755) - (patch-shebang script))))) - #:tests? #f)) ;no tests - (native-inputs (list unzip icoutils)) - (inputs (list mono libgdiplus libgcrypt glib gtk+)) + mono #$output))) + (chmod script #o755) + (patch-shebang script))))) + #:tests? #f)) ;no tests + (native-inputs + (list unzip icoutils)) + (inputs + (list mono libgdiplus libgcrypt glib gtk+)) (home-page "https://keepass.info/") (synopsis "Light-weight and easy-to-use password manager") @@ -449,7 +453,7 @@ in an encrypted database, which is locked with a master key or key file.") (define-public pwsafe (package (name "pwsafe") - (version "3.60.0") + (version "3.69.0") (home-page "https://www.pwsafe.org/") (source (origin @@ -458,31 +462,25 @@ in an encrypted database, which is locked with a master key or key file.") (url "https://github.com/pwsafe/pwsafe") (commit version))) (sha256 - (base32 "064y78sqr8h9mq922spi4r13ga0a1j09mfh4kc4pn7j697nl6b5y")) + (base32 "0mny5jva2misv3h7frk3dyq3300wm04h4zca9bzj775qx9x12z2c")) (file-name (git-file-name name version)))) (build-system cmake-build-system) + (arguments + (list + #:configure-flags + #~(list "-DGTEST_BUILD=OFF"))) (native-inputs (list gettext-minimal googletest perl zip)) - (inputs (list curl - file - `(,util-linux "lib") - libxt - libxtst - openssl - qrencode - wxwidgets - xerces-c)) - (arguments '(#:configure-flags (list "-DNO_GTEST=YES") - #:phases (modify-phases %standard-phases - (add-after 'unpack 'add-gtest - (lambda* (#:key inputs #:allow-other-keys) - (chmod "CMakeLists.txt" #o644) - (let ((cmake-port (open-file "CMakeLists.txt" - "a"))) - (display "find_package(GTest) -add_subdirectory(src/test)\n" cmake-port) - (close cmake-port) - #t)))))) + (inputs + (list curl + file + `(,util-linux "lib") + libxt + libxtst + openssl + qrencode + wxwidgets + xerces-c)) (synopsis "Password safe with automatic input and key generation") (description "pwsafe is a password manager originally designed by Bruce Schneier. It offers a simple UI to manage passwords for different services. @@ -491,8 +489,8 @@ platforms.") (license license:artistic2.0))) (define-public pwsafe-cli - (let ((commit "c49a0541b66647ad04d19ddb351d264054c67759") - (revision "0")) + (let ((commit "984fe38489c24602391e24150b450a37bfb866b7") + (revision "1")) (package (name "pwsafe-cli") (version (git-version "0.2.0" revision commit)) @@ -504,22 +502,19 @@ platforms.") (commit commit))) (sha256 (base32 - "0ak09r1l7k57m6pdx468hhzvz0szmaq42vyr575fvsjc8rbrp8qq")) + "1fx0rhvl9ijjs9z5psxs990752rgw0558g7acjc0myx67ffxhhmy")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments - ;; FIXME: skip failing test suite (requires write access to /tmp), - ;; patching path does not help somehow. - `(#:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'bootstrap - (lambda _ - (invoke "aclocal") - (invoke "autoheader") - (invoke "automake" "--add-missing") - (invoke "autoconf") - #t))))) + (list + #:phases + #~(modify-phases %standard-phases + (replace 'bootstrap + (lambda _ + (invoke "aclocal") + (invoke "autoheader") + (invoke "automake" "--add-missing") + (invoke "autoconf")))))) (native-inputs (list autoconf automake)) (inputs @@ -534,7 +529,7 @@ Counterpane's Passwordsafe.") (define-public otpclient (package (name "otpclient") - (version "4.0.2") + (version "4.1.1") (source (origin (method git-fetch) @@ -543,7 +538,7 @@ Counterpane's Passwordsafe.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "061idzh9sz556nm7ahjrvcbnbmgvgfwmph1lfiy7bcvj1g3rf8cm")))) + (base32 "0nbfz4s85pikjbgcla3x9dncwjnbr4dradcdr3jg9a2crc6bmxya")))) (build-system cmake-build-system) (arguments (list @@ -587,37 +582,41 @@ client, supporting @acronym{TOTP, Time-based one time passwords} and (package (name "shroud") (version "0.1.2") - (source (origin - (method url-fetch) - (uri (string-append "https://files.dthompson.us/shroud/shroud-" - version ".tar.gz")) - (sha256 - (base32 - "1l2shrhvcwfzkar9qiwb75nhcqmx25iz55lzmz0c187nbjhqzi9p")))) + (source + (origin + (method url-fetch) + (uri (string-append "https://files.dthompson.us/shroud/shroud-" + version ".tar.gz")) + (sha256 + (base32 + "1l2shrhvcwfzkar9qiwb75nhcqmx25iz55lzmz0c187nbjhqzi9p")))) (build-system gnu-build-system) + (arguments + (list + #:modules '((guix build gnu-build-system) + (guix build utils) + (ice-9 popen) + (ice-9 rdelim)) + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'wrap-shroud + (lambda _ + (let* ((effective + (read-line + (open-pipe* + OPEN_READ + (string-append #$(this-package-input "guile") + "/bin/guile") + "-c" "(display (effective-version))"))) + (ccachedir (string-append #$output + "/lib/guile/" effective + "/site-ccache"))) + (wrap-program (string-append #$output "/bin/shroud") + `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,ccachedir))))))))) + (inputs + (list bash-minimal guile-2.2 gnupg xclip)) (native-inputs (list pkg-config)) - (arguments - `(#:modules ((guix build gnu-build-system) - (guix build utils) - (ice-9 popen) - (ice-9 rdelim)) - #:phases - (modify-phases %standard-phases - (add-after 'install 'wrap-shroud - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (guile (assoc-ref inputs "guile")) - (effective (read-line - (open-pipe* OPEN_READ - (string-append guile "/bin/guile") - "-c" "(display (effective-version))"))) - (ccachedir (string-append out - "/lib/guile/" effective "/site-ccache")) - (prog (string-append out "/bin/shroud"))) - (wrap-program prog - `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,ccachedir))))))))) - (inputs (list bash-minimal guile-2.2 gnupg xclip)) (synopsis "GnuPG-based secret manager") (description "Shroud is a simple secret manager with a command line interface. The password database is stored as a Scheme s-expression and @@ -631,7 +630,7 @@ applications, there is xclip integration." ) (define-public ssh-to-age (package (name "ssh-to-age") - (version "1.1.7") + (version "1.2.0") (source (origin (method git-fetch) @@ -640,7 +639,7 @@ applications, there is xclip integration." ) (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "134gpbalyll238wvj9ci0rascgm4csayz863ci99cy5qq8266wrl")))) + (base32 "0f8s8k8sbdrifklspcc83rjp290v7mrqqp9jwg02dj2mm7iy2bfj")))) (build-system go-build-system) (arguments '(#:import-path "github.com/Mic92/ssh-to-age/cmd/ssh-to-age" @@ -667,9 +666,10 @@ convert SSH @code{ed25519} keys to @code{age} keys.") (base32 "00k38n5vlxl73m11pp1v50fqf702lv86hzwgj0qca6qxqz4i3jjl")))) (build-system gnu-build-system) (arguments - `(#:configure-flags - (list (string-append "--docdir=" (assoc-ref %outputs "out") - "/share/doc/" ,name "-" ,version)))) + (list + #:configure-flags + #~(list (string-append "--docdir=" #$output "/share/doc/" + #$name "-" #$version)))) (inputs (list argon2 ncurses openssl)) (native-inputs @@ -718,7 +718,7 @@ them out, at the source.") (define-public libpwquality (package (name "libpwquality") - (version "1.4.4") + (version "1.4.5") (source (origin (method url-fetch) (uri (list @@ -730,7 +730,7 @@ them out, at the source.") "libpwquality-" version ".tar.bz2"))) (sha256 (base32 - "0id5a8bi8xnjg11g9vzrl2xbpx65mfxclxcvis7zx1v8vhisyfyl")))) + "1209l7ba51rjsq724hi8my0s11xpslp9hhif9p89jp9hbnviikvg")))) (build-system gnu-build-system) (arguments `(#:phases @@ -796,48 +796,46 @@ command-line programs (@command{pwqcheck}, @command{pwqfilter}, and (package (name "assword") (version "0.11") - (source (origin - (method url-fetch) - (uri (list - (string-append - "http://http.debian.net/debian/pool/main/a/assword/" - "assword_" version ".orig.tar.gz"))) - (sha256 - (base32 - "03gkb6kvsghznbcw5l7nmrc6mn3ixkjd5jcs96ni4zs9l47jf7yp")))) + (source + (origin + (method url-fetch) + (uri (list + (string-append + "http://http.debian.net/debian/pool/main/a/assword/" + "assword_" version ".orig.tar.gz"))) + (sha256 + (base32 + "03gkb6kvsghznbcw5l7nmrc6mn3ixkjd5jcs96ni4zs9l47jf7yp")))) (arguments - `(;; irritatingly, tests do run but not there are two problems: - ;; - "import gtk" fails for unknown reasons here despite it the - ;; program working (indeed, I've found I have to do a logout and log - ;; back in in after an install order for some mumbo jumbo environment - ;; variable mess to work with pygtk and assword... what's up with - ;; that?) - ;; - even when the tests fail, they don't return a nonzero status, - ;; so I'm not sure how to programmatically get that information - #:tests? #f - #:phases - (modify-phases %standard-phases - (add-after 'install 'wrap-assword - (lambda* (#:key outputs #:allow-other-keys) - (let ((prog (string-append - (assoc-ref outputs "out") - "/bin/assword")) - (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) - (wrap-program prog - `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))) - (add-after 'install 'manpage - (lambda* (#:key outputs #:allow-other-keys) - (invoke "make" "assword.1") - (install-file - "assword.1" - (string-append (assoc-ref outputs "out") "/share/man/man1"))))))) + (list + ;; irritatingly, tests do run but not there are two problems: + ;; - "import gtk" fails for unknown reasons here despite it the + ;; program working (indeed, I've found I have to do a logout and log + ;; back in in after an install order for some mumbo jumbo environment + ;; variable mess to work with pygtk and assword... what's up with + ;; that?) + ;; - even when the tests fail, they don't return a nonzero status, + ;; so I'm not sure how to programmatically get that information + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'wrap-assword + (lambda _ + (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH"))) + (wrap-program (string-append #$output "/bin/assword") + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))) + (add-after 'install 'manpage + (lambda _ + (invoke "make" "assword.1") + (install-file "assword.1" + (string-append #$output "/share/man/man1"))))))) (build-system python-build-system) - (native-inputs - (list txt2man)) (inputs (list bash-minimal gtk+ python-xdo python-gpg python-pygobject)) (propagated-inputs (list xclip)) + (native-inputs + (list txt2man)) (home-page "https://finestructure.net/assword/") (synopsis "Password manager") (description "assword is a simple password manager using GPG-wrapped @@ -850,78 +848,78 @@ any X11 window.") (package (name "password-store") (version "1.7.4") - (source (origin - (method git-fetch) - (uri (git-reference - (url "git://git.zx2c4.com/password-store") - (commit version))) - (sha256 - (base32 - "17zp9pnb3i9sd2zn9qanngmsywrb7y495ngcqs6313pv3gb83v53")) - (patches (search-patches "password-store-tree-compat.patch")) - (file-name (git-file-name name version)))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "git://git.zx2c4.com/password-store") + (commit version))) + (sha256 + (base32 + "17zp9pnb3i9sd2zn9qanngmsywrb7y495ngcqs6313pv3gb83v53")) + (patches (search-patches "password-store-tree-compat.patch")) + (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (delete 'configure) - (delete 'build) - (add-before 'install 'patch-system-extension-dir - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (extension-dir (string-append out "/lib/password-store/extensions"))) - (substitute* "src/password-store.sh" - (("^SYSTEM_EXTENSION_DIR=.*$") - ;; lead with whitespace to prevent 'make install' from - ;; overwriting it again - (string-append " SYSTEM_EXTENSION_DIR=\"" - "${PASSWORD_STORE_SYSTEM_EXTENSION_DIR:-" - extension-dir - "}\"\n")))))) - (add-before 'install 'patch-program-name - ;; Use pass not .pass-real in tmpdir and cmd_usage - (lambda _ - (substitute* "src/password-store.sh" - (("^PROGRAM=.*$") - "PROGRAM=\"pass\"\n")))) - (add-before 'install 'patch-passmenu-path - ;; FIXME Wayland support requires ydotool and dmenu-wl packages - ;; We are ignoring part of the script that gets executed if - ;; WAYLAND_DISPLAY env variable is set, leaving dmenu-wl and ydotool - ;; commands as is. - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "contrib/dmenu/passmenu" - (("dmenu=dmenu\n") - (string-append "dmenu=" - (search-input-file inputs "/bin/dmenu") - "\n")) - (("xdotool=\"xdotool") - (string-append "xdotool=\"" - (search-input-file inputs "/bin/xdotool")))))) - (add-after 'install 'install-passmenu - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - (install-file "contrib/dmenu/passmenu" bin)))) - (add-after 'install 'wrap-path - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (requisites '("getopt" "git" "gpg" "qrencode" "sed" - "tail" "tree" "which" "wl-copy" "xclip")) - (path (map (lambda (pkg) - (dirname (search-input-file - inputs (string-append "/bin/" pkg)))) - requisites))) - (wrap-program (string-append out "/bin/pass") - `("PATH" ":" prefix (,(string-join path ":")))))))) - #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output) - "WITH_ALLCOMP=yes" - (string-append "BASHCOMPDIR=" - %output "/etc/bash_completion.d")) - ;; Parallel tests may cause a race condition leading to a - ;; timeout in some circumstances. - #:parallel-tests? #f - #:test-target "test")) + (list + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output) + "WITH_ALLCOMP=yes" + (string-append "BASHCOMPDIR=" #$output "/etc/bash_completion.d")) + ;; Parallel tests may cause a race condition leading to a + ;; timeout in some circumstances. + #:parallel-tests? #f + #:test-target "test" + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (add-before 'install 'patch-system-extension-dir + (lambda _ + (substitute* "src/password-store.sh" + (("^SYSTEM_EXTENSION_DIR=.*$") + ;; lead with whitespace to prevent 'make install' from + ;; overwriting it again + (string-append + " SYSTEM_EXTENSION_DIR=\"" + "${PASSWORD_STORE_SYSTEM_EXTENSION_DIR:-" + (string-append #$output "/lib/password-store/extensions") + "}\"\n"))))) + (add-before 'install 'patch-program-name + ;; Use pass not .pass-real in tmpdir and cmd_usage + (lambda _ + (substitute* "src/password-store.sh" + (("^PROGRAM=.*$") + "PROGRAM=\"pass\"\n")))) + (add-before 'install 'patch-passmenu-path + ;; FIXME Wayland support requires ydotool and dmenu-wl packages + ;; We are ignoring part of the script that gets executed if + ;; WAYLAND_DISPLAY env variable is set, leaving dmenu-wl and ydotool + ;; commands as is. + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "contrib/dmenu/passmenu" + (("dmenu=dmenu\n") + (string-append + "dmenu=" (search-input-file inputs "/bin/dmenu") "\n")) + (("xdotool=\"xdotool") + (string-append + "xdotool=\"" (search-input-file inputs "/bin/xdotool")))))) + (add-after 'install 'install-passmenu + (lambda _ + (install-file + "contrib/dmenu/passmenu" (string-append #$output "/bin")))) + (add-after 'install 'wrap-path + (lambda* (#:key inputs #:allow-other-keys) + (let* ((requisites '("getopt" "git" "gpg" "qrencode" "sed" + "tail" "tree" "which" "wl-copy" "xclip")) + (path + (map (lambda (pkg) + (dirname (search-input-file + inputs (string-append "/bin/" pkg)))) + requisites))) + (wrap-program (string-append #$output "/bin/pass") + `("PATH" ":" prefix (,(string-join path ":")))))))))) (native-search-paths (list (search-path-specification (variable "PASSWORD_STORE_SYSTEM_EXTENSION_DIR") @@ -931,12 +929,12 @@ any X11 window.") (list bash-minimal coreutils dmenu - util-linux git gnupg qrencode sed tree + util-linux which wl-clipboard xclip @@ -967,45 +965,44 @@ through the pass command.") (base32 "1ap2i08zjvacd2rllrsx9bw3zz5i99bk0i5yxrssvn6w60bwjqdl")))) (build-system copy-build-system) (arguments - '(#:modules - ((guix build copy-build-system) - (guix build utils) - (srfi srfi-26)) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'rename-script - (lambda _ - (rename-file "src/password-store.sh" - "src/passage"))) - (add-after 'install 'wrap-script - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (script (string-append out "/bin/passage"))) - (substitute* script - ;; Avoid ugly ‘.passage-real’ in --help output and elsewhere. - (("^(PROGRAM=).*" _ program=) - (string-append program= (basename script) "\n"))) - (wrap-program script - `("PATH" ":" prefix - ,(map dirname - (map (cut search-input-file inputs <>) - (list "bin/age" - "bin/age-keygen" - "bin/cat" - "bin/getopt" - "bin/git" - "bin/pkill" - "bin/qrencode" - "bin/sed" - "bin/tree"))))))))) - #:install-plan - '(("src/passage" "/bin/") - ("src/completion/pass.bash-completion" - "/etc/bash-completion.d/passage") - ("src/completion/pass.fish-completion" - "/share/fish/vendor_completions.d/passage") - ("src/completion/pass.zsh-completion" - "/share/zsh/site-functions/_passage")))) + (list + #:modules '((guix build copy-build-system) + (guix build utils) + (srfi srfi-26)) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'rename-script + (lambda _ + (rename-file "src/password-store.sh" + "src/passage"))) + (add-after 'install 'wrap-script + (lambda* (#:key inputs #:allow-other-keys) + (let* ((script (string-append #$output "/bin/passage"))) + (substitute* script + ;; Avoid ugly ‘.passage-real’ in --help output and elsewhere. + (("^(PROGRAM=).*" _ program=) + (string-append program= (basename script) "\n"))) + (wrap-program script + `("PATH" ":" prefix + ,(map dirname + (map (cut search-input-file inputs <>) + (list "bin/age" + "bin/age-keygen" + "bin/cat" + "bin/getopt" + "bin/git" + "bin/pkill" + "bin/qrencode" + "bin/sed" + "bin/tree"))))))))) + #:install-plan + #~'(("src/passage" "/bin/") + ("src/completion/pass.bash-completion" + "/etc/bash-completion.d/passage") + ("src/completion/pass.fish-completion" + "/share/fish/vendor_completions.d/passage") + ("src/completion/pass.zsh-completion" + "/share/zsh/site-functions/_passage")))) (inputs (list age coreutils-minimal git-minimal procps qrencode sed tree util-linux)) @@ -1031,30 +1028,31 @@ from the @code{password-store} package. Files are encrypted with the "0rrs3iazq80dn0wbl20xkh270428jd8l99m5gd7hl93s4r4sc82p")))) (build-system gnu-build-system) (arguments - '(#:make-flags - (let* ((out (assoc-ref %outputs "out")) - (bashcomp (string-append out "/etc/bash_completion.d"))) - (list (string-append "PREFIX=" %output) - (string-append "BASHCOMPDIR=" bashcomp))) - #:phases - (modify-phases %standard-phases - (delete 'configure) - (add-after 'build 'patch-oath-path - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "otp.bash" - (("^OATH=.*$") - (string-append - "OATH=" - (assoc-ref inputs "oath-toolkit") - "/bin/oathtool\n")) - ;; courtesy: https://github.com/tadfisher/pass-otp/pull/172 - (("&counter=[$]counter" all) - (format #f "~s" all)))))) - #:test-target "test")) - (inputs - (list oath-toolkit)) + (list + #:make-flags + #~(list (string-append "PREFIX=" #$output) + (string-append + "BASHCOMPDIR=" + (string-append #$output "/etc/bash_completion.d"))) + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'build 'patch-oath-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "otp.bash" + (("^OATH=.*$") + (string-append + "OATH=" + (assoc-ref inputs "oath-toolkit") + "/bin/oathtool\n")) + ;; courtesy: https://github.com/tadfisher/pass-otp/pull/172 + (("&counter=[$]counter" all) + (format #f "~s" all)))))) + #:test-target "test")) (native-inputs (list password-store expect git gnupg which)) + (inputs + (list oath-toolkit)) (home-page "https://github.com/tadfisher/pass-otp") (synopsis "Pass extension for managing one-time-password (OTP) tokens") (description @@ -1406,8 +1404,8 @@ winner of the 2015 Password Hashing Competition.") (define-public secretsd ;; there are neither tags nor releases in the repository - (let ((commit "4ea56226b8f7c8739eea7fc8d1ffca8e18cf58c9") - (revision "0")) + (let ((commit "d12eefee00dbd4b0f756dcf7c52d31539dbcfc67") + (revision "1")) (package (name "secretsd") (version (git-version "1.0" revision commit)) @@ -1419,7 +1417,7 @@ winner of the 2015 Password Hashing Competition.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0ka21vmvm25kal3sa8zmrifh4zac878hk24y7y3jj3ig8dkv0vfy")) + (base32 "1cr6vpb1mc48b60mjbnzalp58vx07sh7hg9r65j0cppk0n4gc0aj")) (modules '((guix build utils))) (snippet ;; don't install platform dependencies @@ -1427,6 +1425,7 @@ winner of the 2015 Password Hashing Competition.") (build-system pyproject-build-system) (arguments (list + #:tests? #f ; no tests #:phases #~(modify-phases %standard-phases (add-after 'create-entrypoints 'wrap-program @@ -1435,7 +1434,7 @@ winner of the 2015 Password Hashing Competition.") `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))))))) (inputs (list python-dbus python-platformdirs python-cryptography - python-xdg python-pygobject)) + python-pygobject)) (native-inputs (list bash-minimal python-setuptools python-wheel)) (home-page "https://github.com/grawity/secretsd") (synopsis "Basic FreeDesktop.org Secret Service backend") @@ -1451,7 +1450,7 @@ program.") (define-public pass-git-helper (package (name "pass-git-helper") - (version "3.3.0") + (version "4.0.0") (source (origin (method git-fetch) @@ -1461,29 +1460,21 @@ program.") (file-name (git-file-name name version)) (sha256 (base32 - "0nih6wxbpnasngdkbyh9df8wrm4b5inca8mshkqpmraqqmckzrk3")))) + "0g56jwh3ay6is8cm4579zhaj12kj8q23pnv5rbqaw19i0xv2f0s8")))) (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'build 'patch-pass-path - (lambda* (#:key inputs #:allow-other-keys) - (let* ((password-store (assoc-ref inputs "password-store")) - (pass (string-append password-store "/bin/pass"))) - (substitute* '("passgithelper.py" - "test_passgithelper.py") - (("'pass'") (string-append "'" pass "'")))))) - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" (getcwd))))))) - (inputs - (list python-pyxdg password-store)) + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'set-home + (lambda _ + (setenv "HOME" (getcwd))))))) (native-inputs - (list python-pytest - python-pytest-cov + (list python-pytest-cov python-pytest-mock - python-setuptools - python-wheel)) + python-setuptools)) + (inputs + (list password-store python-pyxdg)) (home-page "https://github.com/languitar/pass-git-helper") (synopsis "Git credential helper interfacing with pass") (description "pass-git-helper is a git credential helper which @@ -1593,44 +1584,87 @@ of the box are Windows LM hashes, plus lots of other hashes and ciphers. This is the community-enhanced, \"jumbo\" version of John the Ripper.") (license license:gpl2+)))) +(define-public maskprocessor + (package + (name "maskprocessor") + (version "0.73") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hashcat/maskprocessor") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1vv12iwnkzvjsp9bnix0z1m3hbyhasf5nxngp65b4gdlkk7lqnrd")))) + (build-system gnu-build-system) + (arguments + (list + #:tests? #f ;upstream does not provide tests + #:phases + #~(modify-phases %standard-phases + (delete 'bootstrap) + (delete 'configure) + (replace 'build + (lambda* _args + (invoke "gcc" + "-W" + "-Wall" + "-Werror" + "-std=c99" + "-O2" + "-DLINUX" + "-o" + "maskprocessor" + "src/mp.c"))) + (replace 'install + (lambda* _args + (install-file "maskprocessor" + (string-append #$output "/bin"))))))) + (home-page "https://github.com/hashcat/maskprocessor") + (synopsis "High-Performance word generator") + (description "Maskprocessor is a high-performance word generator with a +per-position configureable charset.") + (license (list license:expat)))) + (define-public fpm2 (package (name "fpm2") - (version "0.79") - (source (origin - (method url-fetch) - (uri (string-append "https://als.regnet.cz/fpm2/download/fpm2-" - version ".tar.bz2")) - (sha256 - (base32 - "19sdy1lygfhkg5nxi2w9a4d9kwvw24nxp0ix0p0lz91qpvk9qpnm")))) + (version "0.90.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://als.regnet.cz/fpm2/download/fpm2-" + version ".tar.xz")) + (sha256 + (base32 + "144mylycnkpzxbbfy30gas450iypgwx0bcd3nrimyws417kwb8qv")))) (build-system gnu-build-system) - (inputs `(("gtk2" ,gtk+-2) - ("gnupg" ,gnupg) - ("libxml2" ,libxml2))) - (native-inputs (list pkg-config intltool)) (arguments - `(#:configure-flags '("CFLAGS=-O2 -g -fcommon") - #:phases - (modify-phases %standard-phases - (add-before 'configure 'pre-configure - ;; The file po/POTFILES.in ends up missing for some reason in - ;; both nix and guix builds. Adding the file with contents - ;; found during troubleshooting. - (lambda _ - (call-with-output-file "po/POTFILES.in" - (lambda (port) - (format port "data/fpm2.desktop.in + (list + #:configure-flags + #~(list "CFLAGS=-O2 -g -fcommon") + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'pre-configure + ;; The file po/POTFILES.in ends up missing for some reason in + ;; both nix and guix builds. Adding the file with contents + ;; found during troubleshooting. + (lambda _ + (call-with-output-file "po/POTFILES.in" + (lambda (port) + (format port "data/fpm2.desktop.in data/fpm2.desktop.in.in -fpm2.glade src/callbacks.c src/fpm.c src/fpm_file.c src/interface.c src/support.c -fpm2.glade -"))) - #t))))) +")))))))) + (inputs + (list gtk+ gnupg libxml2 nettle)) + (native-inputs + (list pkg-config intltool)) (synopsis "Manage, generate and store passwords encrypted") (description "FPM2 is GTK2 port from Figaro's Password Manager originally developed by John Conneely, with some new enhancements. @@ -1669,20 +1703,21 @@ your online accounts makes it necessary.") (define-public hashcat (package (name "hashcat") - (version "6.2.6") + (version "7.1.2") (source (origin (method url-fetch) (uri (string-append "https://hashcat.net/files/hashcat-" version ".tar.gz")) (sha256 (base32 - "0akv1cgbmwyw8h8zbw5w5ixh92y95sdadh8qiz60hjgkpivi0pmj")) + "15lbzjfb6n3d06090g1dyf3llc20mnmrn1yc9ys30xbldlracilm")) (modules '((guix build utils))) ;; Delete bundled libraries. (snippet ;; TODO: Unbundle LZMA-SDK as well #~(for-each delete-file-recursively - '("deps/zlib" "deps/xxHash" "deps/OpenCL-Headers"))))) + '("deps/unrar" ;; nonfree license + "deps/zlib" "deps/xxHash" "deps/OpenCL-Headers"))))) (inputs (list minizip opencl-headers xxhash zlib)) (build-system gnu-build-system) (arguments @@ -1690,6 +1725,7 @@ your online accounts makes it necessary.") #:make-flags #~(list (string-append "PREFIX=" #$output) (string-append "AR=" #$(ar-for-target)) (string-append "CC=" #$(cc-for-target)) + (string-append "ENABLE_UNRAR=0") (string-append "USE_SYSTEM_ZLIB=1") (string-append "USE_SYSTEM_OPENCL=1") (string-append "USE_SYSTEM_XXHASH=1")) @@ -1700,6 +1736,7 @@ your online accounts makes it necessary.") (("\\$\\(shell date \\+%s\\)") "0")))) (delete 'configure)))) + (supported-systems %64bit-supported-systems) (home-page "https://hashcat.net/hashcat/") (synopsis "Advanced password recovery utility") (description @@ -1728,34 +1765,34 @@ password cracking.") (list perl)) (build-system gnu-build-system) (arguments - `(#:tests? #f ;no tests - #:make-flags (list "CC=gcc" - ;; Upstream bug(?): "make all" seems to remove the - ;; Perl scripts from the source. - "native") - #:phases - (modify-phases %standard-phases - (replace 'unpack - (lambda* (#:key source #:allow-other-keys) - (invoke "7z" "x" source) - (chdir (string-append "hashcat-utils-" ,version "/src")) - #t)) - (delete 'configure) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (string-append (assoc-ref outputs "out") "/bin"))) - (mkdir-p out) - (for-each - (lambda (file) - (copy-file file (string-append out "/" - (basename file ".bin")))) - (find-files "." "\\.bin$")) - (for-each - (lambda (file) - (copy-file file (string-append out "/" - (basename file ".pl")))) - (find-files "../bin" "\\.pl$")) - #t)))))) + (list + #:tests? #f ;no tests + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + ;; Upstream bug(?): "make all" seems to remove the + ;; Perl scripts from the source. + "native") + #:phases + #~(modify-phases %standard-phases + (replace 'unpack + (lambda* (#:key source #:allow-other-keys) + (invoke "7z" "x" source) + (chdir (string-append #$name "-" #$version "/src")))) + (delete 'configure) + (replace 'install + (lambda _ + (let ((out (string-append #$output "/bin"))) + (mkdir-p out) + (for-each + (lambda (file) + (copy-file file (string-append out "/" + (basename file ".bin")))) + (find-files "." "\\.bin$")) + (for-each + (lambda (file) + (copy-file file (string-append out "/" + (basename file ".pl")))) + (find-files "../bin" "\\.pl$")))))))) (home-page "https://github.com/hashcat/hashcat-utils/") (synopsis "Small utilities that are useful in advanced password cracking") (description "Hashcat-utils are a set of small utilities that are useful @@ -1805,24 +1842,27 @@ names.") (define-public hydra (package (name "hydra") - (version "9.5") + (version "9.6") (home-page "https://github.com/vanhauser-thc/thc-hydra") - (source (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0pg4alaznygngdzn4k6p540g059w7mpiakchsp0526f1b9s33lw1")))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "119ybvrs6yllycpwdlmmg4jsgfh7n2bq16vv8jcxlfmshs3wab8d")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ;no test suite - #:make-flags (list (string-append "CC=" - ,(cc-for-target))))) - (native-inputs (list pkg-config)) - (inputs (list freerdp gtk+ openssl zlib)) + (list + #:make-flags #~(list (string-append "CC=" #$(cc-for-target))) + #:tests? #f)) ;no test suite + (native-inputs + (list pkg-config)) + (inputs + (list freerdp gtk+ openssl zlib)) (synopsis "Gain access to a remote system by trying logins and passwords") (description "This package provides a tool to demonstrate how easy it is to gain @@ -1904,12 +1944,14 @@ try every password contained in a file.") (inputs (list libxcrypt openssl)) (arguments - `(#:phases - (modify-phases %standard-phases - (delete 'configure)) - #:make-flags (list "CC=gcc" - (string-append "PREFIX=" (assoc-ref %outputs "out"))) - #:tests? #f)) ;no tests + (list + #:phases + #~(modify-phases %standard-phases + (delete 'configure)) + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output)) + #:tests? #f)) ;no tests (synopsis "Generate (pseudo-)random passwords and hashes") (description "Makepasswd is a program that generates pseudo-random passwords of a @@ -2001,24 +2043,26 @@ data inside a GPG encrypted file, which we'll call a coffin.") (name "xkcdpass") (version "1.19.4") (home-page "https://github.com/redacted/XKCD-password-generator") - (source (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "xkcdpass-" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1din4fqxgcj74vcjrsmn19sv81raards39x8pd75hmfxqqgggnd6")))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "xkcdpass-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1din4fqxgcj74vcjrsmn19sv81raards39x8pd75hmfxqqgggnd6")))) (build-system python-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'install 'install-manpage - (lambda* (#:key outputs #:allow-other-keys) - (install-file - "xkcdpass.1" - (string-append (assoc-ref outputs "out") "/share/man/man1"))))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'install-manpage + (lambda _ + (install-file + "xkcdpass.1" + (string-append #$output "/share/man/man1"))))))) (synopsis "Generate secure multiword passwords/passphrases, inspired by XKCD") (description |