diff --git a/channels.scm b/channels.scm index 8f448a1..a303804 100644 --- a/channels.scm +++ b/channels.scm @@ -3,7 +3,7 @@ (url "https://git.savannah.gnu.org/git/guix.git") (branch "master") (commit - "e3f87960915e3ef0b1d6a5a15281b3d4e9ee4d38") + "5e567587dd4abf51f9a6fa44f5a852dde1115ce9") (introduction (make-channel-introduction "9edb3f66fd807b096b48283debdcddccfea34bad" @@ -14,7 +14,7 @@ (url "https://gitlab.com/nonguix/nonguix") (branch "master") (commit - "877ed8cc4eee26ddde3d7d200c19c370c6bf7cb1") + "1b0594dc534d834be6f3facec98dee13db2a2299") (introduction (make-channel-introduction "897c1a470da759236cc11798f4e0a5f7d4d59fbc" diff --git a/home/config/hypr/scripts.d/autostart.sh b/home/config/hypr/scripts.d/autostart.sh index 3290ab4..30eac54 100755 --- a/home/config/hypr/scripts.d/autostart.sh +++ b/home/config/hypr/scripts.d/autostart.sh @@ -3,6 +3,7 @@ waybar --config $HOME/.config/waybar/config.hypr & nm-applet --indicator & +mako & gnome-keyring-daemon --foreground & wl-clip-persist --clipboard both & diff --git a/modules/freya/bootloader/uki.scm b/modules/freya/bootloader/uki.scm new file mode 100644 index 0000000..f62af45 --- /dev/null +++ b/modules/freya/bootloader/uki.scm @@ -0,0 +1,116 @@ +(define-module (freya bootloader uki) + #:use-module (gnu bootloader) + #:use-module (freya packages bootloaders) + #:use-module (gnu packages bootloaders) + #:use-module (gnu packages efi) + #:use-module (gnu packages linux) + #:use-module (guix gexp) + #:use-module (guix modules) + #:use-module (srfi srfi-1) + #:export (uefi-uki-bootloader uefi-uki-signed-bootloader)) + +;; config generator makes script creating uki images +;; install runs script +;; install device is path to uefi dir +(define vendor "Guix") +(define script-loc "/boot/install-uki.scm") + +(define* (uefi-uki-configuration-file #:optional cert privkey) + (lambda* (config entries #:key (old-entries '()) #:allow-other-keys) + + (define (menu-entry->args e) + (let* ((boot (bootloader-configuration-bootloader config)) + (stub (bootloader-package boot))) + #~(list "--os-release" #$(menu-entry-label e) + "--linux" #$(menu-entry-linux e) "--initrd" #$(menu-entry-initrd e) + "--cmdline" (string-join (list #$@(menu-entry-linux-arguments e))) + "--stub" #$(file-append stub "/libexec/" (systemd-stub-name)) + #$@(if cert #~("--secureboot-certificate" #$cert) #~()) + #$@(if privkey #~("--secureboot-private-key" #$privkey) #~())))) + + (define (enum-filenames . args) ; same args as iota + (map (lambda (n) (string-append (number->string n) ".efi")) + (apply iota (map length args)))) + + (program-file "install-uki" + (with-imported-modules (source-module-closure '((guix build syscalls) + (guix build utils))) + #~(let* ((target (cadr (command-line))) + (vendir (string-append target "/EFI/" #$vendor)) + (schema (string-append vendir "/boot.mgr")) + (findmnt #$(file-append util-linux "/bin/findmnt")) + (efibootmgr #$(file-append efibootmgr "/sbin/efibootmgr"))) + (use-modules (guix build syscalls) (guix build utils) + (ice-9 popen) (ice-9 textual-ports)) + + (define (out name) (string-append vendir "/" name)) + (define fulldisk + (call-with-port + (open-pipe* OPEN_READ findmnt "-fnro" "SOURCE" "-T" target) + (lambda (port) (get-line port)))) ; only 1 line: the device + (define disk + (substring fulldisk 0 (- (string-length fulldisk) 1))) + (define part + (substring fulldisk (- (string-length fulldisk) 1))) + + ;; delete all boot entries and files we control + (when (file-exists? schema) + (call-with-input-file schema + (lambda (port) + (for-each (lambda (l) + (unless (string-null? l) + (system* efibootmgr "-B" "-L" l "-q"))) + (string-split (get-string-all port) #\lf))))) + (when (directory-exists? vendir) (delete-file-recursively vendir)) + (mkdir-p vendir) + + (define (install port boot? oos) + (lambda (args label name) + (let ((minbytes (* 2 (stat:size (stat #$script-loc))))) + (put-string port label) + (put-char port #\lf) + (force-output port) ; make sure space is alloc'd + (apply invoke #$(file-append ukify "/bin/ukify") + "build" "-o" (out name) args) + ;; make sure we have enough space for next install-uki.scm + (when (and oos (< (free-disk-space vendir) minbytes)) (oos)) + (invoke efibootmgr (if boot? "-c" "-C") "-L" label "--disk" disk "--part" part + "--loader" (string-append "\\EFI\\" #$vendor "\\" name) "-q")))) + + (call-with-output-file schema + (lambda (port) ; prioritize latest UKIs in limited ESP space + (for-each (install port #t #f) + (list #$@(map-in-order menu-entry->args entries)) + (list #$@(map-in-order menu-entry-label entries)) + (list #$@(enum-filenames entries))) + (for-each ; old-entries can fail (out of space) we don't care + (lambda (args label name) + (define (cleanup . _) ; do exit early if out of space tho + (when (file-exists? (out name)) (delete-file (out name))) + (exit)) + (with-exception-handler cleanup + (lambda _ ((install port #f cleanup) args label name)))) + (list #$@(map-in-order menu-entry->args old-entries)) + (list #$@(map-in-order menu-entry-label old-entries)) + (list #$@(enum-filenames old-entries entries)))))))))) + +(define install-uefi-uki + #~(lambda (bootloader target mount-point) + (invoke (string-append mount-point #$script-loc) + (string-append mount-point target)))) + +(define* (make-uefi-uki-bootloader #:optional cert privkey) + (bootloader + (name 'uefi-uki) + (package systemd-stub) + (installer install-uefi-uki) + (disk-image-installer #f) + (configuration-file script-loc) + (configuration-file-generator (uefi-uki-configuration-file cert privkey)))) + +;; IMPORTANT NOTE: if bootloader install fails, do not turn off your computer! until +;; install succeeds, your system is unbootable. +(define uefi-uki-bootloader (make-uefi-uki-bootloader)) +;; use ukify genkey to generate cert and privkey. DO NOT include in store. +(define (uefi-uki-signed-bootloader cert privkey) + (make-uefi-uki-bootloader cert privkey)) diff --git a/modules/freya/packages/bootloaders.scm b/modules/freya/packages/bootloaders.scm new file mode 100644 index 0000000..55a4210 --- /dev/null +++ b/modules/freya/packages/bootloaders.scm @@ -0,0 +1,108 @@ +(define-module (freya packages bootloaders) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages efi) + #:use-module (gnu packages base) + #:use-module (gnu packages linux) + #:use-module (gnu packages gperf) + #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages python-crypto) + #:use-module (gnu packages pkg-config) + #:use-module (guix gexp) + #:use-module (guix utils) + #:use-module (guix modules) + #:use-module (guix packages) + #:use-module (guix git-download) + #:use-module (guix build-system gnu) + #:use-module (guix build-system meson) + #:use-module (guix build-system python)) + +(define systemd-version "255") +(define systemd-source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/systemd/systemd") + (commit (string-append "v" systemd-version)))) + (file-name (git-file-name "systemd" systemd-version)) + (sha256 + (base32 + "1qdyw9g3jgvsbc1aryr11gpc3075w5pg00mqv4pyf3hwixxkwaq6")))) + +(define-public (systemd-stub-name) + (let ((arch (cond ((target-x86-32?) "ia32") + ((target-x86-64?) "x64") + ((target-arm32?) "arm") + ((target-aarch64?) "aa64") + ((target-riscv64?) "riscv64")))) + (string-append "linux" arch ".efi.stub"))) + +(define-public systemd-stub + (package + (name "systemd-stub") + (version systemd-version) + (source systemd-source) + (build-system meson-build-system) + (arguments + (list + #:configure-flags + `(list "-Defi=true" "-Dsbat-distro=guix" + "-Dsbat-distro-generation=1" ; package revision! + "-Dsbat-distro-summary=Guix System" + "-Dsbat-distro-url=https://guix.gnu.org" + ,(string-append "-Dsbat-distro-pkgname=" name) + ,(string-append "-Dsbat-distro-version=" version)) + #:phases + #~(let ((stub #$(string-append "src/boot/efi/" (systemd-stub-name)))) + (modify-phases %standard-phases + (replace 'build + (lambda* (#:key parallel-build? #:allow-other-keys) + (invoke "ninja" stub + "-j" (if parallel-build? + (number->string (parallel-job-count)) "1")))) + (replace 'install + (lambda _ + (install-file stub (string-append #$output "/libexec")))) + (delete 'check))))) + (inputs (list libcap python-pyelftools `(,util-linux "lib"))) + (native-inputs (list gperf pkg-config python-3 python-jinja2)) + (home-page "https://systemd.io") + (synopsis "Unified kernel image UEFI stub") + (description "Simple UEFi boot stub that loads a conjoined kernel image and +supporting data to their proper locations, before chainloading to the kernel. +Supports measured and/or verified boot environments.") + (license license:lgpl2.1+))) + +(define-public ukify + (package + (name "ukify") + (version systemd-version) + (source systemd-source) + (build-system python-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (replace 'build + (lambda _ + (substitute* "src/ukify/ukify.py" ; added in python 3.11 + (("datetime\\.UTC") "datetime.timezone.utc")))) + (delete 'check) + (replace 'install + (lambda* (#:key inputs #:allow-other-keys) + (let* ((bin (string-append #$output "/bin")) + (file (string-append bin "/ukify")) + (binutils (assoc-ref inputs "binutils")) + (sbsign (assoc-ref inputs "sbsigntools"))) + (mkdir-p bin) + (copy-file "src/ukify/ukify.py" file) + (wrap-program file + `("PATH" ":" prefix + (,(string-append binutils "/bin") + ,(string-append sbsign "/bin")))))))))) + (inputs (list binutils python-cryptography python-pefile sbsigntools)) + (home-page "https://systemd.io") + (synopsis "Unified kernel image UEFI tool") + (description "@command{ukify} joins together a UKI stub, linux kernel, initrd, +kernel arguments, and optional secure boot signatures into a single, UEFI-bootable +image.") + (license license:lgpl2.1+))) diff --git a/modules/freya/packages/golang.scm b/modules/freya/packages/golang.scm index f626ade..5e0f75e 100644 --- a/modules/freya/packages/golang.scm +++ b/modules/freya/packages/golang.scm @@ -1,833 +1,61 @@ (define-module (freya packages golang) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix gexp) - #:use-module (gnu packages base) - #:use-module (gnu packages version-control) - #:use-module (gnu packages package-management) - #:use-module (gnu packages build-tools) - #:use-module (gnu packages) - #:use-module (guix packages) - #:use-module (gnu packages) - #:use-module (guix git-download) + #:use-module (guix utils) #:use-module (guix download) - #:use-module (gnu packages golang) + #:use-module (guix git-download) + #:use-module (guix packages) #:use-module (guix build-system go) - #:use-module (guix build-system trivial) - #:use-module (guix build utils) - #:use-module (guix utils)) + #:use-module (gnu packages) + #:use-module (gnu packages golang)) -(define (go-package name version url hash path inputs) +(define-public go-github-com-caddy-certmagic (package - (name name) - (version version) + (name "certmagic") + (version "0.19.2") (source (origin (method git-fetch) (uri (git-reference - (url url) + (url "https://github.com/caddyserver/certmagic") (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - hash)))) - (build-system go-build-system) - (propagated-inputs inputs) - (arguments - `(#:go ,go-1.20 - #:import-path ,path - #:phases %standard-phases - #:install-source? #t - #:tests? #f)) - (synopsis (string-append name " go package")) - (description (string-append name " go package")) - (home-page url) - (license license:expat))) - -(define (go-version-go-package name version url hash path inputs) - (package - (inherit (go-package name version url hash path inputs)) - (source (origin - (method git-fetch) - (uri (git-reference - (url url) - (commit (go-version->git-ref version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - hash)))))) - -(define (commit-go-package name comm url hash path inputs) - (package - (inherit (go-package name comm url hash path inputs)) - (source (origin - (method git-fetch) - (uri (git-reference - (url url) - (commit comm))) - (file-name (git-file-name name comm)) - (sha256 - (base32 - hash)))))) - - -(define (source-only gopackage) - (package - (inherit gopackage) - (arguments - (substitute-keyword-arguments (package-arguments gopackage) - ((#:phases phases) - #~(modify-phases #$phases - (delete 'build))))))) - -(define (set-go gopackage gover) - (package - (inherit gopackage) - (arguments - (substitute-keyword-arguments (package-arguments gopackage) - ((#:go _) gover))))) - -(define (set-unpack gopackage unpack) - (package - (inherit gopackage) - (arguments - (substitute-keyword-arguments (package-arguments gopackage) - ((#:unpack-path _) unpack))))) - -(define (set-inputs gopackage inputs) - (package - (inherit gopackage) - (native-inputs inputs))) - - -(define go-github-com-matttproud-golang-protobuf-extensions - (source-only (go-package - "go-github-com-matttproud-golang-protobuf-extensions" - "2.0.0" - "https://github.com/matttproud/golang_protobuf_extensions" - "0jw4vjycwx0a82yvixmp25805krdyqd960y8lnyggllb6br0vh41" - "github.com/matttproud/golang_protobuf_extensions" - (list)))) - -(define go-github-com-beorn7-perks - (source-only (go-package - "go-github-com-beorn7-perks" - "1.0.1" - "https://github.com/beorn7/perks" - "17n4yygjxa6p499dj3yaqzfww2g7528165cl13haj97hlx94dgl7" - "github.com/beorn7/perks" - (list)))) - -(define go-github-com-golang-protobuf - (source-only (go-package - "go-github-com-golang-protobuf" ; name - "1.5.3" ; version - "https://github.com/golang/protobuf" ; url - "03f1w2cd4s8a3xhl61x7yjx81kbzlrjpvnnwmbhqnz814yi7h43i" ; hash - "github.com/golang/protobuf" ; path - (list)))) ; inputs - -(define go-go-uber-org-multierr - (go-package - "go-go-uber-org-multierr" - "1.11.0" - "https://github.com/uber-go/multierr" - "1s6skad93nbsq4b0sy5dsgacrdh2kzg0p8wjlhvff49vasqsi3qx" - "go.uber.org/multierr" - (list))) - -(define go-go-uber-org-zap - (go-package - "go-go-uber-org-zap" - "1.26.0" - "https://github.com/uber-go/zap" - "1aw7zba4f06835vm6l6j1y1jaz2p92gi2nv52hfn1a62gixj8nq4" - "go.uber.org/zap" - (list go-go-uber-org-multierr))) - -(define go-github-com-cespare-xxhash - (go-package - "go-github-com-cespare-xxhash" - "2.2.0" - "https://github.com/cespare/xxhash" - "055xvgyv78xl6bdj8kgy0105n9cq33w4rb0sg84lp9r85i9qx2l5" - "github.com/cespare/xxhash" - (list))) - -(define go-golang-org-x-exp - (source-only (go-version-go-package - "go-golang-org-x-exp" ; name - "v0.0.0-20230310171629-522b1b587ee0" ; version - "https://go.googlesource.com/exp" ; url - "054hbk826n3kprk75m19ik89mnicbshq6kdiwd60xxfczdjf88rn" ; hash - "golang.org/x/exp" ; path - (list)))) ; inputs - -(define go-golang-org-x-sync - (source-only (go-package - "go-golang-org-x-text" ; namie - "0.3.0" ; version - "https://go.googlesource.com/sync" ; url - "0jmkqah45db9nz6yjdd8vvanpjfzb5lsv6bxf0d1dih4zhp4l8kc" ; hash - "golang.org/x/sync" ; path - (list)))) ; inputs - -(define go-golang-org-x-text - (source-only (go-package - "go-golang-org-x-text" ; namie - "0.11.0" ; version - "https://go.googlesource.com/text" ; url - "1a0d6f9qqzd9njd8xb59mjrfv5jrz8130crcxbqaiy7lk434nq1k" ; hash - "golang.org/x/text" ; path - (list)))) ; inputs - -(define go-golang-org-x-term - (source-only (go-package - "go-golang-org-x-term" ; namie - "0.10.0" ; version - "https://go.googlesource.com/term" ; url - "19abybnsqix924d9ak4p93bgq1312zp1yk11bilrrmsjplhbrzqf" ; hash - "golang.org/x/term" ; path - (list)))) ; inputs - -(define go-golang-org-x-net - (source-only (go-package - "go-golang-org-x-net" ; name - "0.14.0" ; version - "https://go.googlesource.com/net" ; url - "0pk9pfd5n5hlg5zx1ab3gfzi6lfcs41dfds6fyn661g5xs00l9s1" ; hash - "golang.org/x/net" ; path - (list)))) ; inputs - - -(define go-golang-org-x-crypto - (source-only (go-package - "go-golang-org-x-crypto" ; name - "0.12.0" ; version - "https://go.googlesource.com/crypto" ; url - "00cg67w0n01a64fc4kqg5j7r47fx5y9vyqlanwb60513dv6lzacs" ; hash - "golang.org/x/crypto" ; path - (list)))) ; inputs - -(define go-golang-org-x-sys - (source-only (go-package - "go-golang-org-x-sys" ; name - "0.11.0" ; version - "https://go.googlesource.com/sys" ; url - "1pp0479l9w92kr6p97d19s8y0hj16gblg4hvdqqzcrf3d9mr4cs3" ; hash - "golang.org/x/sys" ; path - (list)))) ; inputs - -(define go-github-com-quic-go-qtls-go1-20 - (go-package - "go-github-com-quic-go-qtls-go1-20" ; name - "0.3.4" ; version - "https://github.com/quic-go/qtls-go1-20" ; url - "0fl3yv1w8cygag3lav45vvzb4k9i72p92x13wcq0xn13wxirzirn" ; hash - "github.com/quic-go/qtls-go1-20" ; path - (list go-golang-org-x-crypto ; inputs - go-golang-org-x-sys))) - -(define go-github-com-google-go-cmp - (source-only (go-package - "go-github-com-google-go-cmp" - "0.5.9" - "https://github.com/google/go-cmp" - "0a13m7l1jrysa7mrlmra8y7n83zcnb23yjyg3a609p8i9lxkh1wm" - "github.com/google/go-cmp/go" - (list)))) - -(define go-github-com-hashicorp-go-uuid - (go-package - "go-github-com-hashicorp-go-uuid" - "1.0.3" - "https://github.com/hashicorp/go-uuid" - "0wd4maaq20alxwcvfhr52rzfnwwpmc2a698ihyr0vfns2sl7gkzk" - "github.com/hashicorp/go-uuid" - (list))) - -(define go-github-com-google-uuid - (go-package - "go-github-com-google-uuid" - "1.3.1" - "https://github.com/google/uuid" - "1pd1lkl50prswl91dpwml66s2ildjqipnsqi9a7m25lv3l008417" - "github.com/google/uuid" - (list))) - -(define go-github-com-marten-seemann-qtls-go1-19 - (set-go (go-package - "go-github-com-marten-seemann-qtls-go1-19" - "0.3.3" - "https://github.com/quic-go/qtls-go1-19" - "07i56533033cd0kn67fvyyvwbmfwfdk3y5x5wl4y00zplyhhys9q" - "github.com/marten-seemann/qtls-go1-19" - (list go-golang-org-x-sys - go-golang-org-x-crypto)) - go-1.19)) - -(define go-github-com-lucas-clemente-quic-go - (set-go (go-package - "go-github-com-lucas-clemente-quic-go" - "0.31.1" - "https://github.com/quic-go/quic-go" - "1vn72wlcyb4j2lw3pfqfvhb3pz7r61j3sddj4r1sf32vc3csis97" - "github.com/lucas-clemente/quic-go" - (list go-golang-org-x-crypto - go-golang-org-x-net - go-golang-org-x-exp - go-golang-org-x-sys - go-github-com-marten-seemann-qtls-go1-19)) - go-1.19)) - -(define go-github-com-quic-go-quic-go - (go-package - "go-github-com-quic-go-quic-go" ; name - "0.39.0" ; version - "https://github.com/quic-go/quic-go" ; url - "0jiwh97xpvswrbq5glnafc2jc3ybpl17ffa0cg9x3f03raa2q8vg" ; hash - "github.com/quic-go/quic-go" ; path - (list go-golang-org-x-crypto ; inputs - go-golang-org-x-exp - go-golang-org-x-net - go-golang-org-x-sys - go-github-com-quic-go-qtls-go1-20))) - -(define go-github-com-prometheus-procfs - (go-package - "go-github-com-prometheus-procfs" ; name - "0.8.0" ; version - "https://github.com/prometheus/procfs" ; url - "0k2d27pm6q6im42x8ikwz0d4sb31wn6rvfs9wlf51d9gldncmpqz" ; hash - "github.com/prometheus/procfs" ; path - (list go-golang-org-x-sys))) ; inputs - -(define go-github-com-prometheus-client-model - (source-only (go-package - "go-github-com-prometheus-client-model" ; name - "0.4.0" ; version - "https://github.com/prometheus/client_model" ; url - "0w3hxsc0qmb5vdm8lyhsvkm0g9yk81vrpcyf31haysvid8yjrzg0" ; hash - "github.com/prometheus/client_model" ; path - (list go-github-com-golang-protobuf)))) ; inputs - -(define go-github-com-prometheus-common - (source-only (go-package - "go-github-com-prometheus-common" ; name - "0.37.0" ; version - "https://github.com/prometheus/common" ; url - "161ayg76ag1h21kaf0qycpy7cizvy3xrm0dn598hj91n44v4z0hf" ; hash - "github.com/prometheus/common" ; path - (list go-github-com-golang-protobuf ; inputs - go-github-com-matttproud-golang-protobuf-extensions - go-github-com-prometheus-client-model)))) - -(define go-github-com-prometheus-client-golang - (source-only (go-package - "go-github-com-prometheus-client-golang" ; name - "1.14.0" ; version - "https://github.com/prometheus/client_golang" ; url - "041br6n309bajwdv871f69fwy1yq3vk46rmzxnkr1ldpq1bhd63n" ; hash - "github.com/prometheus/client_golang" ; path - (list go-github-com-prometheus-client-model ; inputs - go-github-com-prometheus-procfs - go-github-com-prometheus-common)))) - -(define go-github-com-klauspost-cpuid-v2 - (go-package - "go-github-com-klauspost-cpuid-v2" ; name - "2.2.5" ; version - "https://github.com/klauspost/cpuid" ; url - "127jlppxs226lnq499rjnjyzgmp849xlxhq7380w2ypdkhvafni1" ; hash - "github.com/klauspost/cpuid/v2" ; path - (list))) ; inputs - -(define go-github-com-libdns-libdns - (go-package - "go-github-com-libdns-libdns" ; name - "0.2.1" ; version - "https://github.com/libdns/libdns" ; url - "1ix668h4n2n9iph4xiznzdfw7hy0ijy906mvnys4kq9f0v9ih4bg" ; hash - "github.com/libdns/libdns" ; path - (list))) ; inputs - -(define go-github-com-mholt-acmez - (go-package - "go-github-com-mholt-acmez" ; name - "1.2.0" ; version - "https://github.com/mholt/acmez" ; url - "1wzkgbgnp23vbcz4nc3c8x7vi1lkqp36485f7g05zbshc7hzby6d" ; hash - "github.com/mholt/acmez" ; path - (list go-go-uber-org-zap ; inputs - go-golang-org-x-crypto - go-golang-org-x-text - go-golang-org-x-net))) - -(define go-github-com-miekg-dns - (go-package - "go-github-com-miekg-dns" ; name - "1.1.50" ; version - "https://github.com/miekg/dns" ; url - "1svvx9qamy3hy0ms8iwbisqjmfkbza0zljmds6091siq150ggmws" ; hash - "github.com/miekg/dns" ; path - (list go-golang-org-x-net ; inputs - go-golang-org-x-sys))) - -(define go-github-com-zeebo-blake3 - (go-package - "go-github-com-zeebo-blake3" ; name - "0.2.3" ; version - "https://github.com/zeebo/blake3" ; url - "1pkk97d1jwfcg3hs9g09zbwn31l96icx1vk4d9l2rhcvfw0aw0fc" ; hash - "github.com/zeebo/blake3" ; path - (list go-github-com-klauspost-cpuid-v2))) ; inputs - -(define go-github-com-caddy-certmagic - (go-package - "go-github-com-caddy-certmagic" ; name - "0.19.2" ; version - "https://github.com/caddyserver/certmagic" ; url - "07a1xiynbbaqm7qzg0q1xhvab99x8mvzr2rw68npxws4dshgdv5f" ; hash - "github.com/caddyserver/certmagic" ; path - (list go-github-com-klauspost-cpuid-v2 ; inputs - go-github-com-libdns-libdns - go-go-uber-org-zap - go-golang-org-x-crypto - go-github-com-mholt-acmez - go-github-com-zeebo-blake3 - go-github-com-miekg-dns - go-golang-org-x-sys - go-golang-org-x-net - go-golang-org-x-text))) - -(define go-github-com-quic-go-qpack - (go-package - "go-github-com-quic-go-qpack" ; name - "0.4.0" ; version - "https://github.com/quic-go/qpack" ; url - "00mjz445hhx4yar5l8p21bpp4d06jyg2ajw0ax7bh64d37l4kx39" ; hash - "github.com/quic-go/qpack" ; path - (list go-golang-org-x-net))) ; inputs - -(define go-google-golang-org-protobuf - (source-only (go-package - "go-google-golang-org-protobuf" ; name - "1.31.0" ; version - "https://go.googlesource.com/protobuf" ; url - "1xf18kzz96hgfy1vlbnydrizzpxkqj2iamfdbj3dx5a1zz5mi8n0" ; hash - "google.golang.org/protobuf" ; path - (list go-github-com-google-go-cmp ; inputs - go-github-com-golang-protobuf)))) - -(define go-github-com-google-cel-go - (source-only (go-package - "go-github-com-google-cel-go" - "0.18.1" - "https://github.com/google/cel-go" - "07jp5n266jyk74zaj1n1g15apn2nw1lr6v5zmi13fhir91k6sybr" - "github.com/google/cel-go" - (list)))) - -(define go-github-com-klauspost-compress - (go-package - "go-github-com-klauspost-compress" - "1.17.0" - "https://github.com/klauspost/compress" - "1fjch04mz11lyikzw1xmm541wc5fkvxk18a9wgzxvdvszs84xfjn" - "github.com/klauspost/compress" - (list))) - -(define go-github-com-rs-xid - (go-package - "go-github-com-rs-xid" - "1.2.1" - "https://github.com/rs/xid" - "1vgw1dikqw273awcci6pzifs7shkl5ah4l88j1zjbnpgbiwzlx9j" - "github.com/rs/xid" - (list))) - -(define go-github-com-micromdm-scep - (source-only (go-package - "go-github-com-micromdm-scep" - "2.1.0" - "https://github.com/micromdm/scep" - "1a3knshfmh8lniz098ir0rl7ixb2a0zwvdlwy22a6q8fsicfk40q" - "github.com/micromdm/scep" - (list)))) - -(define go-github-com-smallstep-certificates - (source-only (go-package - "go-github-com-smallstep-certificates" - "0.25.0" - "https://github.com/smallstep/certificates" - "1f7ignpnsj5q1qfdn040hjh9gzix4bg88wspjzx0qms9s9c42n1g" - "github.com/smallstep/certificates" - (list go-github-com-rs-xid - go-github-com-micromdm-scep)))) - -(define go-github-com-smallstep-truststore - (source-only (go-package - "go-github-com-smallstep-truststore" - "0.12.1" - "https://github.com/smallstep/truststore" - "06a73r4h69q3626x14xcc4rkiparyvhwbn19g22y2r9pgvxirfi9" - "github.com/smallstep/truststore" - (list)))) - -(define gopkg-in-square-go-jose-v2 - (go-package - "gopkg-in-square-go-jose-v2" - "2.6.0" - "https://github.com/square/go-jose" - "1b1nhqxfmhzwrfk7pkvp2w3z3d0pf5ir00vizmy2d4xdbnldn70r" - "gopkg.in/square/go-jose.v2" - (list go-golang-org-x-crypto))) - -(define go-filippo-io-edwards25519 - (go-package - "go-filippo-io-edwards25519" - "1.0.0" - "https://github.com/FiloSottile/edwards25519" - "01m8hpaj0cwp250f7b0din09cf8j6j5y631grx67qfhvfrmwr1zr" - "filippo.io/edwards25519" - (list))) - -(define go-github-com-masterminds-goutils - (go-package - "go-github-com-masterminds-goutils" - "1.1.1" - "https://github.com/Masterminds/goutils" - "09m4mbcdlv9ng3xcrmjlxi0niavby52y9nl2jhjnbx1xxpjw0jrh" - "github.com/Masterminds/goutils" - (list))) - -(define go-github-com-shopspring-decimal - (go-package - "go-github-com-shopspring-decimal" - "1.3.1" - "https://github.com/shopspring/decimal" - "1w1wjv2aqyqp22s8gc2nxp8gk4h0dxvp15xsn5lblghaqjcd239h" - "github.com/shopspring/decimal" - (list))) - -(define go-github-com-imdario-mergo - (go-package - "go-github-com-imdario-mergo" - "1.0.0" - "https://github.com/imdario/mergo" - "037k2bd97vnbyhn2sczxk0j6ijmv06n1282f76i3ky73s3qmqnlf" - "github.com/imdario/mergo" - (list))) - -(define go-github-com-huandu-xstrings - (go-package - "go-github-com-huandu-xstrings" - "1.4.0" - "https://github.com/huandu/xstrings" - "0y6afn5yp5pw1gjc4a6gxxkj753w2aaw46nwbi7scnqdqlb2l3cp" - "github.com/huandu/xstrings" - (list))) - -(define go-github-com-mitchellh-reflectwalk - (go-package - "go-github-com-mitchellh-reflectwalk" - "1.0.2" - "https://github.com/mitchellh/reflectwalk" - "1nxgb4gskzv045539vb312n0a443308dvh1akz7vi6x1l0z46zsm" - "github.com/mitchellh/reflectwalk" - (list))) - -(define go-github-com-mitchellh-copystructure - (go-package - "go-github-com-mitchellh-copystructure" - "1.2.0" - "https://github.com/mitchellh/copystructure" - "1izw243b3r03nvgnnxvk706l3s3v3q7k69kq3n4asnzjkcymq7sm" - "github.com/mitchellh/copystructure" - (list go-github-com-mitchellh-reflectwalk))) - -(define go-github-com-spf13-cast - (go-package - "go-github-com-spf13-cast" - "1.5.1" - "https://github.com/spf13/cast" - "05ahl8kicdhz95rxraavqsfsb8bvj03abpk8zclypy1gchc0vm7y" - "github.com/spf13/cast" - (list))) - -(define go-github-com-masterminds-semver - (go-package - "go-github-com-masterminds-semver" - "3.2.1" - "https://github.com/Masterminds/semver" - "1h4c647dgq6k5q78j3m98ccdrzd7kbcq4ahdy25j72rbxjmci8al" - "github.com/Masterminds/semver" - (list))) - -(define go-github-com-masterminds-sprig - (go-package - "go-github-com-masterminds-sprig" - "3.2.2" - "https://github.com/Masterminds/sprig" - "0wfbzhmv971si9gx9c77gz89b9va2y03bhdmds9hzal4i7cccw2x" - "github.com/Masterminds/sprig" - (list go-github-com-masterminds-goutils - go-github-com-masterminds-semver - go-github-com-google-uuid - go-golang-org-x-crypto - go-github-com-shopspring-decimal - go-github-com-huandu-xstrings - go-github-com-imdario-mergo - go-github-com-spf13-cast - go-github-com-mitchellh-copystructure))) - -(define go-step-sm-crypto - (source-only (go-package - "go-step-sm-crypto" - "0.35.1" - "https://github.com/smallstep/crypto" - "0fb77246iyxhw91d52ph6b3bl32182xs3cw1fzhs884km9wary8v" - "go.step.sm/crypto" - (list gopkg-in-square-go-jose-v2 - go-filippo-io-edwards25519 - go-github-com-masterminds-sprig)))) - -(define go-step-sm-cli-utils - (source-only (go-package - "go-step-sm-cli-utils" - "0.8.0" - "https://github.com/smallstep/cli-utils" - "1239ivvmjvmmy5jkv6n7zg9qpk5wlnsb4prw4k3fx3nycx8nd3pa" - "go.step.sm/cli-utils" - (list)))) - -(define go-github-com-go-logr-logr - (go-package - "go-github-com-go-logr-logr" - "1.2.4" - "https://github.com/go-logr/logr" - "1ara5lacbzwqw8m6800837jgf5gbcfj6namm0zwzb45xqgfl64c0" - "github.com/go-logr/logr" - (list))) - -(define go-github-com-go-logr-stdr - (go-package - "go-github-com-go-logr-stdr" - "1.2.2" - "https://github.com/go-logr/stdr" - "1dl2rzvjacwqlnvw7azrxqbh4jvzaq8v399f6drs146l39ss21c1" - "github.com/go-logr/stdr" - (list go-github-com-go-logr-logr))) - -(define go-github-com-grpc-ecosystem-grpc-gateway - (source-only (go-package - "go-github-com-grpc-ecosystem-grpc-gateway" - "2.18.0" - "https://github.com/grpc-ecosystem/grpc-gateway" - "0rkymxrwm4bk2sizawnrmn54jjkiwlzh2mxrsz435lhrzk3zfmhm" - "github.com/grpc-ecosystem/grpc-gateway" - (list)))) - -(define go-google-golang-org-genproto - (source-only (commit-go-package - "go-google-golang-org-genproto" - "e6e6cdab5c137738d2c1bc9d66183cfbd9f440d1" - "https://github.com/googleapis/go-genproto" - "1c7dm3iwc0k25ynxqnzfqf9mn47fw5sy4sbgm5v4akg1klzkvkpg" - "google.golang.org/genproto" - (list)))) - -(define go-google-golang-org-grpc - (go-package - "go-google-golang-org-grpc" - "1.58.2" - "https://github.com/grpc/grpc-go" - "1qchzb1kv03mjd5k4j5lcr3arwvlridgfmsdlv9grmnpx7caw8sf" - "google.golang.org/grpc" - (list go-google-golang-org-protobuf - go-golang-org-x-sys - go-golang-org-x-net - go-golang-org-x-text - go-google-golang-org-genproto))) - -(define go-opentelemetry-io-proto-otlp - (source-only (set-unpack (go-package - "go-opentelemetry-io-proto-otlp" - "1.0.0" - "https://github.com/open-telemetry/opentelemetry-proto-go" - "0w69grih4qv8pw6ywpa9f675mixrxhqzcqafrp6ibrd7z3mdzfyq" - "go.opentelemetry.io/proto" - (list go-github-com-grpc-ecosystem-grpc-gateway)) - "go.opentelemetry.io/proto/otlp"))) - -(define go-opentelemetry-io-otel - (go-package - "go-opentelemetry-io-otel" - "1.19.0" - "https://github.com/open-telemetry/opentelemetry-go" - "06lmf7pnxp9b5ciy5yv7qwzph8k7w2m48g7p72fl5y3g57lh8v7w" - "go.opentelemetry.io/otel" - (list go-github-com-go-logr-stdr - go-opentelemetry-io-proto-otlp - go-google-golang-org-grpc))) - -(define go-github-com-yuin-goldmark - (go-package - "go-github-com-yuin-goldmark" - "1.5.5" - "https://github.com/yuin/goldmark" - "0kziqic2rgnb0fyng9rmlg8akk4bv07qhscy4n6z45f235r1l955" - "github.com/yuin/goldmark" - (list))) - -(define go-github-com-dlclark-regexp2 - (go-package - "go-github-com-dlclark-regexp2" - "1.10.0" - "https://github.com/dlclark/regexp2" - "137jrvg6w6ivc0qm4zgk3hjf06kfl900m8730hbd5xnhxzyf6717" - "github.com/dlclark/regexp2" - (list))) - -(define go-github-com-alecthomas-chroma - (go-package - "go-github-com-alecthomas-chroma" - "2.7.0" - "https://github.com/alecthomas/chroma" - "0i4ck23gn0v7x6r8wa2k7qiwhxpxqqnaknb9iy9rz8pjcj14ai75" - "github.com/alecthomas/chroma/v2" - (list go-github-com-dlclark-regexp2))) - -(define go-github-com-yuin-goldmark-highlighting - (set-go (set-inputs (go-version-go-package - "go-github-com-yuin-goldmark-highlighting" - "v2.0.0-20230729083705-37449abec8cc" - "https://github.com/yuin/goldmark-highlighting" - "163jbi8si9qxcabzni39qypj495y48rabkkchc03ay68p19v160y" - "github.com/yuin/goldmark-highlighting/v2" - (list)) - (list (set-go (go-package - "go-github-com-yuin-goldmark" - "1.4.15" - "https://github.com/yuin/goldmark" - "0qs08hy288zdr0xpd49rp8h1048s1n7frmzcmb8diqpcv5hvbmgm" - "github.com/yuin/goldmark" - (list)) - go-1.14) - (set-go (go-package - "go-github-com-alecthomas-chroma" - "2.2.0" - "https://github.com/alecthomas/chroma" - "0rxsi4kdf363p6ysvxvgndbvcb0a5zgm0iaxkkqllj3m8nfwmzlk" - "github.com/alecthomas/chroma/v2" - (list go-std-1.17 go-github-com-dlclark-regexp2)) - go-1.14))) - go-1.14)) - -(define go-github-com-mitchellh-go-ps - (go-package - "go-github-com-mitchellh-go-ps" - "1.0.0" - "https://github.com/mitchellh/go-ps" - "0ipcbz66x7q8xczi7cyfq06y7n7v0syvkp730vn9jrn7s8f5ag0z" - "github.com/mitchellh/go-ps" - (list))) - -(define go-github-com-tailscale-tscert - (commit-go-package - "go-github-com-tailscale-tscert" - "28a91b69a0467442178b62e2cfb9ab272ed3b64c" - "https://github.com/tailscale/tscert" - "0zzpkff4nrknh345nqiaz88hvlc5pynhzyws02f3rlcyjh7kj2sh" - "github.com/tailscale/tscert" - (list go-golang-org-x-sys - go-github-com-mitchellh-go-ps))) - -(define go-opentelemetry-io-contrib - (go-package - "go-opentelemetry-io-contrib" - "1.20.0" - "https://github.com/open-telemetry/opentelemetry-go-contrib" - "0vsv2ihjk3i3k1mwkdjngcp497knw85fz1m32lycl6qf3fcpzaiy" - "go.opentelemetry.io/contrib" - (list))) - -(define go-github-com-dustin-go-humanize - (go-package - "go-github-com-dustin-go-humanize" - "1.0.1" - "https://github.com/dustin/go-humanize" - "1iyhd90pnmxh64nhsh6k02c1b1glpmhh4whga9jgb9g0i5hz3sya" - "github.com/dustin/go-humanize" - (list))) - -(define go-github-com-burntsushi-toml - (go-package - "go-github-com-burntsushi-toml" - "1.3.2" - "https://github.com/BurntSushi/toml" - "1s1d3622al03xgx84iqai384ycfp5hgy2r6h4db29byamqgk530l" - "github.com/BurntSushi/toml" - (list))) - -(define-public caddy - (package - (name "caddy") - (version "2.7.4") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/caddyserver/caddy") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) (sha256 (base32 "0jgbkj0azkbs828vsd3gycpab8pycgf55vrxkvnfmwfjpdiq1551")))) (build-system go-build-system) - (inputs (list go-github-com-hashicorp-go-uuid - go-github-com-burntsushi-toml - go-github-com-dustin-go-humanize - go-github-com-yuin-goldmark - go-github-com-yuin-goldmark-highlighting - go-github-com-tailscale-tscert - go-github-com-google-cel-go - go-step-sm-crypto - go-step-sm-cli-utils - go-github-com-smallstep-certificates - go-github-com-smallstep-truststore - go-opentelemetry-io-otel - go-opentelemetry-io-contrib - go-github-com-google-uuid - go-github-com-lucas-clemente-quic-go - go-github-com-prometheus-client-golang - go-github-com-prometheus-procfs - go-github-com-prometheus-common - go-google-golang-org-protobuf - go-github-com-beorn7-perks - go-github-com-cespare-xxhash - go-go-uber-org-zap - go-golang-org-x-term - go-github-com-caddy-certmagic - go-github-com-quic-go-quic-go - go-github-com-quic-go-qpack - go-github-com-klauspost-compress - go-github-com-golang-protobuf - go-golang-org-x-net - go-golang-org-x-sync)) (arguments - `(#:go ,go-1.20 - #:substitutable? #f - #:install-source? #t - #:import-path "github.com/caddyserver/caddy" - #:tests? #f - #:phases (modify-phases %standard-phases - (replace 'build - (lambda arguments - (apply (assoc-ref %standard-phases - 'build) - `(,@arguments #:import-path - "github.com/caddyserver/caddy/cmd/caddy"))))))) - (synopsis "A powerful, enterprise-ready, open source web server with automatic HTTPS written in Go ") - (description "Caddy simplifies your infrastructure. It takes care of TLS certificate renewals, OCSP stapling, static file serving, reverse proxying, Kubernetes ingress, and more. - Its modular architecture means you can do more with a single, static binary that compiles for any platform. - Caddy runs great in containers because it has no dependencies—not even libc. Run Caddy practically anywhere.") - (home-page "https://caddyserver.com/") - (license license:asl2.0))) + (list #:tests? #f + #:go go-1.20 + #:import-path "github.com/caddyserver/certmagic")) + (home-page "https://github.com/caddyserver/certmagic") + (synopsis "Certbot ACME") + (description "Automagic certificate management in Caddy") + (license license:expat))) + +(define-public caddy + (package + (name "Caddy") + (version "2.7.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/caddyserver/caddy") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0jgbkj0azkbs828vsd3gycpab8pycgf55vrxkvnfmwfjpdiq1551")))) + (build-system go-build-system) + (native-inputs (list go-github-com-google-uuid + go-go-uber-org-zap + go-github-com-caddy-certmagic + go-github-com-prometheus-client-golang + go-golang-org-x-term + go-golang-org-x-sys)) + (arguments + (list #:tests? #f + #:go go-1.20 + ;#:unpack-path "github.com/caddyserver/caddy" + #:import-path "github.com/caddyserver/caddy")) + (home-page "https://github.com/caddyserver/caddy") + (synopsis "Web server") + (description "This package serves the web") + (license license:expat))) diff --git a/modules/freya/packages/linux.scm b/modules/freya/packages/linux.scm index dffe996..b62f1fa 100644 --- a/modules/freya/packages/linux.scm +++ b/modules/freya/packages/linux.scm @@ -6,7 +6,8 @@ #:use-module (gnu packages linux) #:use-module (gnu packages python-xyz) #:use-module (guix git-download) - #:use-module (guix utils)) + #:use-module (guix utils) + #:use-module (freya packages networking)) (define-public bluez-new (package @@ -21,14 +22,56 @@ (sha256 (base32 "0vjk4ihywzv8k07bxq7clqgi2afrw54nfp0gcnxw35m98nipz7a9")))) - (arguments - (list - #:configure-flags - #~(list "--sysconfdir=/etc" - "--localstatedir=/var" - "--enable-library" - "--disable-manpages" - "--disable-systemd" - "--enable-hid2hci" - (string-append "--with-dbusconfdir=" #$output "/etc") - (string-append "--with-udevdir=" #$output "/lib/udev")))))) + (arguments (list + #:configure-flags + #~(list "--sysconfdir=/etc" + "--localstatedir=/var" + "--enable-library" + "--disable-manpages" + "--disable-systemd" + "--enable-hid2hci" + (string-append "--with-dbusconfdir=" #$output "/etc") + (string-append "--with-udevdir=" #$output "/lib/udev")))))) + + +(define-public pipewire-new + (package + (inherit pipewire) + (name "pipewire") + (version "1.2.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.freedesktop.org/pipewire/pipewire") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0cvbyklzqcdr9zj7k7psb24xp8cxb9fdksrd74r68zvnbbix1qlx")))) + (inputs + (modify-inputs + (package-inputs pipewire) + (delete "alsa-lib") + (prepend alsa-lib-new))))) + + +(define-public wireplumber-new + (package + (inherit wireplumber) + (name "wireplumber") + (version "0.5.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url + "https://gitlab.freedesktop.org/pipewire/wireplumber.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1s9p2hpi9v4w70j6hhqnsa4czhn3rzrk03j0qb7lz87qlw491yks")))) + (inputs + (modify-inputs + (package-inputs wireplumber) + (delete "pipewire") + (prepend pipewire-new))))) diff --git a/modules/freya/packages/mozillia.scm b/modules/freya/packages/mozillia.scm index 57c9b54..68a2601 100644 --- a/modules/freya/packages/mozillia.scm +++ b/modules/freya/packages/mozillia.scm @@ -6,6 +6,7 @@ #:use-module (guix download) #:use-module (guix packages) #:use-module (guix build-system trivial) + #:use-module (freya packages linux) #:use-module (nonguix build-system binary) #:use-module (nongnu packages mozilla)) @@ -20,7 +21,7 @@ (license license:mpl2.0) (inputs `(("bash" ,bash-minimal) - ("pipewire" ,pipewire) + ("pipewire" ,pipewire-new) ("firefox" ,firefox))) (build-system trivial-build-system) (arguments diff --git a/modules/freya/packages/networking.scm b/modules/freya/packages/networking.scm index e18d357..57c1a25 100644 --- a/modules/freya/packages/networking.scm +++ b/modules/freya/packages/networking.scm @@ -1,7 +1,9 @@ (define-module (freya packages networking) #:use-module (guix gexp) #:use-module (guix packages) + #:use-module (guix download) #:use-module (gnu packages) + #:use-module (gnu packages linux) #:use-module (gnu packages networking) #:use-module (freya packages linux) #:use-module (guix utils)) @@ -14,3 +16,19 @@ (package-inputs blueman) (delete "bluez") (prepend bluez-new))))) + +(define-public alsa-lib-new + (package + (inherit alsa-lib) + (name "alsa-lib") + (version "1.2.12") + (source (origin + (method url-fetch) + (uri (string-append + "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-" + version ".tar.bz2")) + (sha256 + (base32 + "1lnh38wii8mnwp3n4hnqa718rgi52rq6ix1llsjrs9r7hs8css28")))))) + + diff --git a/modules/freya/packages/wm.scm b/modules/freya/packages/wm.scm index 53f7738..a4daf59 100644 --- a/modules/freya/packages/wm.scm +++ b/modules/freya/packages/wm.scm @@ -39,6 +39,7 @@ #:use-module (freya packages gl) #:use-module (freya packages admin) #:use-module (freya packages cmake) + #:use-module (freya packages linux) #:use-module (freya packages freedesktop) #:use-module (freya packages assembly) #:use-module (guix utils)) @@ -249,7 +250,7 @@ for c++.") (define-public aquamarine (package (name "aquamarine") - (version "0.2.0") + (version "0.3.0") (source (origin (method git-fetch) (uri (git-reference @@ -260,7 +261,7 @@ for c++.") (file-name (git-file-name name version)) (sha256 (base32 - "061shgk8lvbk4f35cf057hl4jh36aahd6l3si6ga91rzl184b9sh")))) + "114fspibmrwvzdmzv4xdy000vg7mn9r5vas3pr1ndb9xyl15ja1s")))) (build-system cmake-build-system) (arguments (list #:tests? #f)) @@ -311,101 +312,99 @@ for c++.") (define-public hyprland - (let ((commit "0e86808e5912823f1c6bea1b6d5fcae297fc9f57") - (revision "1")) - (package - (name "hyprland") - (version (git-version "0.42.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/hyprwm/Hyprland") - (commit commit))) - (patches (list - (local-file "patches/hyprland-fix-cmake.patch"))) - (modules '((guix build utils))) - (snippet - '(begin - (for-each delete-file-recursively - '("hyprpm" - "subprojects")))) - (file-name (git-file-name name version)) - (sha256 - (base32 "10fiipxxkdvwxqgll5q5sa8sl5hm323gshx9bmlmlry07r0mk3mx")))) - (build-system cmake-build-system) - (arguments - (list #:tests? #f - #:build-type "release" - #:cmake cmake-minimal-3.27.0 - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-path - (lambda* (#:key inputs #:allow-other-keys) - (substitute* (find-files "src" "\\.cpp$") - (("/usr/local(/bin/Hyprland)" _ path) - (string-append #$output path)) - (("/usr") #$output) - (("(execAndGet\\(\")\\<(cat|fc-list|lspci)\\>" - _ pre cmd) - (string-append - pre (search-input-file - inputs (string-append "bin/" cmd)))) - (("\\") (search-input-file inputs "bin/gcc")) - ;; NOTE: Add binutils to inputs will override ld-wrapper. - (("(execAndGet\\(\\(\")\\" _ pre) - (string-append pre #$binutils "/bin/nm")) - (("\\<(addr2line|objcopy)\\>" _ cmd) - (string-append #$binutils "/bin/" cmd))) - (substitute* "CMakeLists.txt" - (("libudis86") "udis86")) - )) - (add-after 'fix-path 'fix-protocols - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((protocols (string-append - (getcwd) - "/subprojects/hyprland-protocols/protocols"))) - (mkdir-p protocols) - (copy-recursively - (search-input-directory inputs "share/hyprland-protocols/protocols") - protocols)))) - (add-after 'install 'wrap-program - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (mesa (assoc-ref inputs "mesa"))) - (wrap-program (string-append out "/bin/Hyprland") - `("__EGL_VENDOR_LIBRARY_DIRS" prefix ,(list (string-append mesa "/share/glvnd/egl_vendor.d"))))))) - ))) - (native-inputs - (list gcc-13 - jq - pkg-config - hyprwayland-scanner - hwdata-for-hyprland)) - (inputs - (list gcc-13 + (package + (name "hyprland") + (version "0.42.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hyprwm/Hyprland") + (commit (string-append "v" version)))) + (patches (list + (local-file "patches/hyprland-fix-cmake.patch"))) + (modules '((guix build utils))) + (snippet + '(begin + (for-each delete-file-recursively + '("hyprpm" + "subprojects")))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1hp2xafvlymikxsi6pr8iik35g46683bg376n9hkjxgh9y6njzqv")))) + (build-system cmake-build-system) + (arguments + (list #:tests? #f + #:build-type "release" + #:cmake cmake-minimal-3.27.0 + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* (find-files "src" "\\.cpp$") + (("/usr/local(/bin/Hyprland)" _ path) + (string-append #$output path)) + (("/usr") #$output) + (("(execAndGet\\(\")\\<(cat|fc-list|lspci)\\>" + _ pre cmd) + (string-append + pre (search-input-file + inputs (string-append "bin/" cmd)))) + (("\\") (search-input-file inputs "bin/gcc")) + ;; NOTE: Add binutils to inputs will override ld-wrapper. + (("(execAndGet\\(\\(\")\\" _ pre) + (string-append pre #$binutils "/bin/nm")) + (("\\<(addr2line|objcopy)\\>" _ cmd) + (string-append #$binutils "/bin/" cmd))) + (substitute* "CMakeLists.txt" + (("libudis86") "udis86")) + )) + (add-after 'fix-path 'fix-protocols + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((protocols (string-append + (getcwd) + "/subprojects/hyprland-protocols/protocols"))) + (mkdir-p protocols) + (copy-recursively + (search-input-directory inputs "share/hyprland-protocols/protocols") + protocols)))) + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (mesa (assoc-ref inputs "mesa"))) + (wrap-program (string-append out "/bin/Hyprland") + `("__EGL_VENDOR_LIBRARY_DIRS" prefix ,(list (string-append mesa "/share/glvnd/egl_vendor.d"))))))) + ))) + (native-inputs + (list gcc-13 + jq + pkg-config + hyprwayland-scanner + hwdata-for-hyprland)) + (inputs + (list gcc-13 - cairo - pango - pciutils - libliftoff - udis86 + cairo + pango + pciutils + libliftoff + udis86 - aquamarine - hyprcursor - hyprland-protocols - hyprlang - hyprutils + aquamarine + hyprcursor + hyprland-protocols + hyprlang + hyprutils - xorg-server-xwayland-for-hyprland)) - (home-page "https://hyprland.org") - (synopsis "Dynamic tiling Wayland compositor based on wlroots") - (description - "Hyprland is a dynamic tiling Wayland compositor based on @code{wlroots} -that doesn't sacrifice on its looks. It supports multiple layouts, fancy -effe cts, has a very flexible IPC model allowing for a lot of customization, and -more .") - (license license:bsd-3)))) + xorg-server-xwayland-for-hyprland)) + (home-page "https://hyprland.org") + (synopsis "Dynamic tiling Wayland compositor based on wlroots") + (description + "Hyprland is a dynamic tiling Wayland compositor based on @code{wlroots} +th doesn't sacrifice on its looks. It supports multiple layouts, fancy +ef cts, has a very flexible IPC model allowing for a lot of customization, and +mo .") + (license license:bsd-3))) (define-public hyprpaper @@ -519,7 +518,7 @@ more .") (define-public xdg-desktop-portal-hyprland (package (name "xdg-desktop-portal-hyprland") - (version "1.3.1") + (version "1.3.3") (source (origin (method git-fetch) (uri (git-reference @@ -528,11 +527,10 @@ more .") (file-name (git-file-name name version)) (sha256 (base32 - "0fdbzxanmmzrvb9wfzg1pdsnlg7dl6v5k8bl44w10n48s7bbbzn0")))) - (build-system qt-build-system) + "14n4a8b91ili0kp2kjqlw3h57bsxkrjwg5bhlw2h3q93zaxv2b3k")))) + (build-system cmake-build-system) (arguments (list #:tests? #f ;No tests - #:qtbase qtbase #:phases #~(modify-phases %standard-phases (add-after 'unpack 'fix-path @@ -554,11 +552,12 @@ more .") hyprland-protocols wayland-protocols-1.36 hyprlang - mesa - pipewire + mesa-libglvnd + pipewire-new qtwayland sdbus-c++ - slurp)) + slurp + qtbase)) (home-page "https://github.com/hyprwm/xdg-desktop-portal-hyprland") (synopsis "XDG Desktop Portal backend for Hyprland") (description diff --git a/modules/freya/services/pipewire.scm b/modules/freya/services/pipewire.scm index ccc71a3..adc5963 100644 --- a/modules/freya/services/pipewire.scm +++ b/modules/freya/services/pipewire.scm @@ -5,12 +5,14 @@ #:use-module (gnu services configuration) #:use-module (gnu home services) #:use-module (gnu home services shepherd) + #:use-module (freya packages linux) + #:use-module (freya packages networking) #:use-module (guix gexp)) (define (home-pipewire-profile-service config) - (map specification->package - (list "pipewire" - "wireplumber"))) + (list pipewire-new + wireplumber-new)) + (define (home-pipewire-shepherd-service config) (list @@ -20,7 +22,7 @@ (provision '(pipewire)) (stop #~(make-kill-destructor)) (start #~(make-forkexec-constructor - (list #$(file-append pipewire "/bin/pipewire")) + (list #$(file-append pipewire-new "/bin/pipewire")) #:log-file (string-append (or (getenv "XDG_LOG_HOME") (format #f "~a/.local/var/log" @@ -35,7 +37,7 @@ (provision '(pipewire-pulse)) (stop #~(make-kill-destructor)) (start #~(make-forkexec-constructor - (list #$(file-append pipewire "/bin/pipewire-pulse")) + (list #$(file-append pipewire-new "/bin/pipewire-pulse")) #:log-file (string-append (or (getenv "XDG_LOG_HOME") (format #f "~a/.local/var/log" @@ -50,7 +52,7 @@ (provision '(wireplumber)) (stop #~(make-kill-destructor)) (start #~(make-forkexec-constructor - (list #$(file-append wireplumber "/bin/wireplumber")) + (list #$(file-append wireplumber-new "/bin/wireplumber")) #:log-file (string-append (or (getenv "XDG_LOG_HOME") (format #f "~a/.local/var/log" @@ -67,18 +69,18 @@ #~(string-append "<" #$(file-append - pipewire "/share/alsa/alsa.conf.d/50-pipewire.conf") + pipewire-new "/share/alsa/alsa.conf.d/50-pipewire.conf") ">\n<" #$(file-append - pipewire "/share/alsa/alsa.conf.d/99-pipewire-default.conf") + pipewire-new "/share/alsa/alsa.conf.d/99-pipewire-default.conf") ">\n" " pcm_type.pipewire { - lib " #$(file-append pipewire "/lib/alsa-lib/libasound_module_pcm_pipewire.so") + lib " #$(file-append pipewire-new "/lib/alsa-lib/libasound_module_pcm_pipewire.so") " } ctl_type.pipewire { - lib " #$(file-append pipewire "/lib/alsa-lib/libasound_module_ctl_pipewire.so") + lib " #$(file-append pipewire-new "/lib/alsa-lib/libasound_module_ctl_pipewire.so") " } "))))) diff --git a/modules/freya/system.scm b/modules/freya/system.scm index c0e8f9f..1960982 100644 --- a/modules/freya/system.scm +++ b/modules/freya/system.scm @@ -29,6 +29,7 @@ #:use-module (guix packages) #:use-module (nongnu packages linux) #:use-module (srfi srfi-1) + #:use-module (freya bootloader uki) #:use-module (freya packages wm) #:use-module (freya packages certs) #:use-module (freya packages linux) @@ -58,7 +59,7 @@ (supplementary-groups '("wheel" "audio" "lp" - "docker" + ;"docker" "plugdev" "libvirt" "kvm" @@ -105,7 +106,7 @@ ; xdg "xdg-utils" "xdg-desktop-portal" - ;"xdg-desktop-portal-wlr" + "xdg-desktop-portal-wlr" "xdg-desktop-portal-gtk" ; firmware @@ -141,6 +142,7 @@ ; system daemons "chrony" "docker" + "containerd" "avahi" "gnupg" "pinentry" @@ -148,7 +150,6 @@ "brightnessctl" "wireguard-tools" "fprintd" - "wireplumber" "libpcap" ; fonts @@ -204,7 +205,7 @@ (avahi-configuration (publish? #f) ;; do not advertise this machiene (publish-workstation? #f))) ; do not advertise, I want this to be as silent as possible - (service docker-service-type) + ;(service docker-service-type) ;(service chrony-sericve-type) (service nix-service-type) (service libvirt-service-type @@ -269,6 +270,6 @@ %base-file-systems)) (bootloader (bootloader-configuration - (bootloader grub-efi-bootloader) + (bootloader uefi-uki-bootloader) (targets (list "/boot/efi")) (keyboard-layout keyboard-layout)))))