feat: add Guix channel support

Add Guix channel configuration:
- Create channel description
- Add package definition
- Provide channels.scm example
This commit is contained in:
glenneth1 2024-12-06 09:31:27 +03:00
parent d4f705b572
commit 581e2fea9d
3 changed files with 82 additions and 0 deletions

View File

@ -0,0 +1,9 @@
(channel
(version 0)
(url "https://codeberg.org/glenneth/stash")
(name 'stash)
(introduction
(make-channel-introduction
"40-character-hex-string" ; We'll generate this
(openpgp-fingerprint
"40-character-hex-string"))))

View File

@ -0,0 +1,60 @@
(define-module (stash packages stash)
#:use-module (guix packages)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages guile))
(define-public stash
(package
(name "stash")
(version "0.1.0-alpha.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://codeberg.org/glenneth/stash.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0000000000000000000000000000000000000000000000000000")))) ; We'll generate this
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'bootstrap)
(delete 'configure)
(replace 'build
(lambda _
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(site (string-append out "/share/guile/site/3.0"))
(go (string-append out "/lib/guile/3.0/site-ccache")))
;; Install binary
(install-file "stash.scm" bin)
(rename-file (string-append bin "/stash.scm")
(string-append bin "/stash"))
(chmod (string-append bin "/stash") #o755)
;; Install modules
(for-each
(lambda (f)
(install-file f
(string-append site "/stash")))
(find-files "modules/stash" "\\.scm$"))
#t)))
(delete 'check)))) ; No tests yet
(inputs
(list guile-3.0))
(native-inputs
(list guile-3.0)) ; For compilation
(home-page "https://codeberg.org/glenneth/stash")
(synopsis "Symlink management utility")
(description
"Stash is a command-line utility written in Guile Scheme that helps organize
your files by moving them to a target location and creating symbolic links in
their original location. While it's great for managing dotfiles, it works with
any directories you want to organize.")
(license license:gpl3+)))

13
channels.scm.example Normal file
View File

@ -0,0 +1,13 @@
(list (channel
(name 'guix)
(url "https://git.savannah.gnu.org/git/guix.git")
(branch "master")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
(openpgp-fingerprint
"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))
(channel
(name 'stash)
(url "https://codeberg.org/glenneth/stash")
(branch "main")))