mirror of https://codeberg.org/anemofilia/zero
391 lines
18 KiB
Scheme
391 lines
18 KiB
Scheme
(define-module (home-environments radio)
|
|
#|Ice-9|#
|
|
#|M|# #:use-module (ice-9 match)
|
|
|
|
#|GNU|#
|
|
#|•|# #:use-module (gnu)
|
|
#|H|# #:use-module (gnu home)
|
|
|
|
#|GNU packages|#
|
|
#|G|# #:use-module (gnu packages gnupg)
|
|
#|L|# #:use-module (gnu packages linux)
|
|
#|S|# #:use-module (gnu packages shells)
|
|
|
|
#|GNU home services|#
|
|
#|•|# #:use-module (gnu home services)
|
|
#|D|# #:use-module (gnu home services desktop)
|
|
#:use-module (gnu home services dotfiles)
|
|
#|G|# #:use-module (gnu home services guix)
|
|
#|P|# #:use-module (gnu home services pm)
|
|
#|S|# #:use-module (gnu home services ssh)
|
|
#:use-module (gnu home services shepherd)
|
|
#:use-module (gnu home services sound)
|
|
|
|
#|Guix|#
|
|
#|C|# #:use-module (guix channels)
|
|
#|P|# #:use-module (guix packages)
|
|
|
|
#|Radio|#
|
|
#|C|# #:use-module ((radio channels) #:prefix channel:)
|
|
#|P|# #:use-module ((radio packages) #:prefix packages:)
|
|
|
|
#|Radix|#
|
|
#|C|# #:use-module (radix combinators)
|
|
#|U|# #:use-module (radix utils)
|
|
|
|
#|Radix packages|#
|
|
#|F|# #:use-module (radix packages fish-xyz)
|
|
|
|
#|Radix home services|#
|
|
#|•|# #:use-module (radix home services)
|
|
#|G|# #:use-module (radix home services gnupg)
|
|
#|S|# #:use-module (radix home services shells)
|
|
#|X|# #:use-module (radix home services xdg)
|
|
|
|
#:export (radio radio.scm))
|
|
|
|
(define radio.scm
|
|
(search-path %load-path
|
|
(module-filename (current-module))))
|
|
|
|
(define radio
|
|
(home-environment
|
|
(packages
|
|
(append #|B|# packages:blogging
|
|
#|C|# packages:calendar
|
|
#|D|# packages:databases packages:desktop packages:development
|
|
packages:documentation packages:downloads
|
|
#|F|# packages:file-managing packages:fonts
|
|
#|G|# packages:guix-contrib
|
|
#|I|# packages:image
|
|
#|M|# packages:messaging packages:music
|
|
#|P|# packages:password
|
|
#|R|# packages:reading
|
|
#|S|# packages:scheme packages:sound
|
|
#|V|# packages:video
|
|
#|W|# packages:web))
|
|
|
|
(services
|
|
(list #|XDG services|#
|
|
(service home-xdg-user-directories-service-type
|
|
(home-xdg-user-directories-configuration
|
|
(desktop "$HOME/areas")
|
|
(documents "$HOME/areas/documents")
|
|
(download "$HOME/media/downloads")
|
|
(music "$HOME/media/music")
|
|
(pictures "$HOME/media/pictures")
|
|
(videos "$HOME/media/videos")
|
|
(publicshare "")
|
|
(templates "")))
|
|
|
|
(service home-xdg-mime-applications-service-type
|
|
(home-xdg-mime-applications-configuration
|
|
(default (associate-right
|
|
('chromium.desktop
|
|
`("application/xhtml+xml"
|
|
"application/x-extension-htm"
|
|
"application/x-extension-xhtml"
|
|
"application/x-extension-xht"
|
|
"x-scheme-handler/http"
|
|
"x-scheme-handler/https"))
|
|
('kak.desktop
|
|
`("text/html"
|
|
"text/plain"
|
|
"text/troff"
|
|
"text/xml"
|
|
"text/x-c"
|
|
"text/x-c++"
|
|
"text/x-clojure"
|
|
"text/x-diff"
|
|
"text/x-lisp"
|
|
"text/x-scheme"
|
|
"text/x-script.python"
|
|
"text/x-shellscript"
|
|
"text/x-tex"))
|
|
('lf.desktop
|
|
`("inode/directory"
|
|
"x-scheme-handler/ftp"
|
|
"x-scheme-handler/nfs"
|
|
"x-scheme-handler/smb"
|
|
"x-scheme-handler/ssh"
|
|
"application/x-directory"))
|
|
('mpv.desktop
|
|
`("image/gif"
|
|
"audio/mpeg"
|
|
"audio/ogg"
|
|
"audio/opus"
|
|
"audio/x-opus+ogg"
|
|
"video/mp4"
|
|
"video/x-matroska"
|
|
"video/webm"))
|
|
('imv.desktop
|
|
`("image/avif"
|
|
"image/bmp"
|
|
"image/jpeg"
|
|
"image/png"
|
|
"image/svg+xml"
|
|
"image/webp"))
|
|
('sioyek.desktop
|
|
`("application/pdf"))))))
|
|
(service home-special-files-service-type
|
|
`((".config/guix/home.scm" ,radio.scm)))
|
|
|
|
#|Dotfiles service|#
|
|
(service home-dotfiles-service-type
|
|
(home-dotfiles-configuration
|
|
(layout 'plain)
|
|
(directories `("radio/files"))))
|
|
|
|
#|Guix service|#
|
|
(simple-service 'home-extra-channels
|
|
home-channels-service-type
|
|
(list channel:guix
|
|
channel:radix
|
|
channel:saayix))
|
|
|
|
#|Shepherd service|#
|
|
(service home-shepherd-service-type)
|
|
|
|
#|Shell services|#
|
|
(service home-tty-colorscheme-service-type
|
|
(home-tty-colorscheme-configuration
|
|
(regular-black "000000")
|
|
(regular-red "df6760")
|
|
(regular-green "8be760")
|
|
(regular-yellow "ffd17a")
|
|
(regular-blue "9688d9")
|
|
(regular-magenta "fc97ff")
|
|
(regular-cyan "86adff")
|
|
(regular-white "a1a1a1")
|
|
(bright-black "888888")
|
|
(bright-red regular-red)
|
|
(bright-green regular-green)
|
|
(bright-yellow regular-yellow)
|
|
(bright-blue regular-blue)
|
|
(bright-magenta regular-magenta)
|
|
(bright-cyan regular-cyan)
|
|
(bright-white regular-white)))
|
|
(service home-fish-service-type
|
|
(home-fish-configuration
|
|
(plugins
|
|
(list fish-autopair
|
|
fish-foreign-env
|
|
fish-puffer))
|
|
(environment-variables
|
|
`(#|GNU Privacy Guard|#
|
|
("GPG_TTY" . "(tty)")
|
|
|
|
#|Remind|#
|
|
("DOTREMINDERS" . "$XDG_DATA_HOME/reminders")
|
|
|
|
#|GTK|#
|
|
("GTK_RC_FILES" . "$XDG_CONFIG_HOME/gtk-2.0/gtkrc")
|
|
|
|
#|Ncurses|#
|
|
("TERMINFO" . "$XDG_DATA_HOME/terminfo")))
|
|
(aliases
|
|
`(#|Common aliases|#
|
|
("df" . "df -h")
|
|
("du" . "du -h")
|
|
("diff" . "diff --color=auto")
|
|
("grep" . "grep --color=auto")
|
|
("ip" . "ip --color=auto")
|
|
("ls" . ,(format #f "ls --color=auto ~
|
|
--group-directories-first ~
|
|
--classify ~
|
|
--human-readable ~
|
|
-v"))
|
|
|
|
#|Clear terminal screen without ncurses|#
|
|
("clear" . "printf \"\\033c\"")
|
|
|
|
("info" . "info --init-file $XDG_CONFIG_HOME/info")
|
|
|
|
#|Kakoune aliases for the shell|#
|
|
(":e" . "kak")
|
|
(":q" . "exit")))
|
|
(abbreviations
|
|
(let ((edit (partial format #f "$EDITOR~@{ ~a~}")))
|
|
`(,@(map (match-lambda
|
|
((x . y) (abbreviation
|
|
(name x)
|
|
(expansion y))))
|
|
`(#|Download/Upload|#
|
|
(a . "aria2c -j 10 '%'")
|
|
(i . "ipfs get %")
|
|
(m . "yt-dlp -x '%'")
|
|
(u . "curl -F file=@% https://0x0.st | wl-copy")
|
|
(v . "yt-dlp '%'")))
|
|
|
|
,@(map (match-lambda
|
|
((x . y) (abbreviation
|
|
(name x)
|
|
(position 'anywhere)
|
|
(expansion y))))
|
|
`(#|Guix|#
|
|
(!repair . "doas guix build --repair")
|
|
(!pull . "guix pull")
|
|
(!repl . "guix repl -i ~/.config/guile/guilerc")
|
|
(!home . "guix home reconfigure ~/.config/guix/home.scm")
|
|
(!system . "doas guix system reconfigure /etc/config.scm")
|
|
(!network . ,(format #f "doas herd restart networking ~
|
|
&& doas herd restart wpa-supplicant"))
|
|
|
|
#|Pass|#
|
|
(!pass . "pass show % | wl-copy")
|
|
|
|
#|Processes|#
|
|
(tf . "setsid -f % >/dev/null 2>&1 & disown")
|
|
|
|
#|Quick edit|#
|
|
(:e . ,(edit))
|
|
(:cronogram . ,(edit "~/areas/masters/current-period/cronogram"))
|
|
(:system . ,(edit "/etc/config.scm"))
|
|
(:home . ,(edit "~/.config/guix/home.scm"))
|
|
(:todo . ,(edit "~/areas/meta/todo")))))))))
|
|
(simple-service 'home-fish-colored-man home-fish-service-type
|
|
(home-fish-extension
|
|
(plugins
|
|
(list fish-colored-man))
|
|
(environment-variables
|
|
`(("man_bold" . ("-o" "blue"))))))
|
|
(simple-service 'home-fish-done home-fish-service-type
|
|
(home-fish-extension
|
|
(plugins
|
|
(list fish-done))
|
|
(environment-variables
|
|
`(("__done_allow_nongraphical" . "1")
|
|
("__done_exclude"
|
|
. (#|G|# "^git" "'^guix (edit|repl|shell)'"
|
|
#|K|# "^kak"
|
|
#|L|# "^lf"
|
|
#|M|# "^mpv"
|
|
#|N|# "^newsraft"))
|
|
("__done_notification_command"
|
|
. "notify-send '$title' '$message'")))))
|
|
(simple-service 'home-fish-fzf home-fish-service-type
|
|
(home-fish-extension
|
|
(plugins
|
|
(list fish-fzf))
|
|
(config
|
|
(list (plain-file "fish-fzf.fish"
|
|
(string-join
|
|
`("fzf_configure_bindings"
|
|
"--directory=@@"
|
|
"--git_log=@l"
|
|
"--git_status=@s"
|
|
"--history=@h"
|
|
"--processes="
|
|
"--variables=")))))
|
|
(environment-variables
|
|
;; adicionar toggle de dotfiles na lista e no preview
|
|
;; adicionar toggle pro base-directory ser $PWD
|
|
`(("fzf_preview_dir_cmd" . "")
|
|
("FZF_DEFAULT_OPTS" . ("--filepath-word"
|
|
"--height=~40%"
|
|
"--layout=reverse"
|
|
"--scheme=path"
|
|
"--scroll-off=2"))
|
|
("fzf_fd_opts" . ("--absolute-path"
|
|
"--exclude='\\..*'"
|
|
"--follow"
|
|
"--base-directory=$HOME"
|
|
"--type=directory"))))))
|
|
|
|
#|Environment variables services|#
|
|
(simple-service 'home-shell-environment-variables
|
|
home-environment-variables-service-type
|
|
`(("PATH" . "$HOME/.local/bin:$PATH")
|
|
("INPUTRC" . "$XDG_CONFIG_HOME/readline/inputrc")))
|
|
(simple-service 'home-guile-environment-variables
|
|
home-environment-variables-service-type
|
|
`(("GUILE_WARN_DEPRECATED" . "detailed")
|
|
("GUILE_HISTORY" . "$XDG_CACHE_HOME/guile/history")
|
|
("GUILE_LOAD_PATH"
|
|
. ,(format #f "~?~?"
|
|
"~@{:$HOME/areas/code/scm/~a~}"
|
|
'(radix
|
|
zero
|
|
zero/operating-systems
|
|
zero/home-environments)
|
|
"~@{:~a/share/guile/site/3.0~}"
|
|
'($HOME/.guix-home/profile
|
|
$XDG_CONFIG_HOME/guix/current
|
|
/run/current-system/profile)))
|
|
("GUILE_LOAD_COMPILED_PATH"
|
|
. ,(apply format #f "~a~@{:~a~}"
|
|
(flat-map (lambda (profile path)
|
|
(format #f "~a/~a" profile path))
|
|
'($HOME/.guix-home/profile
|
|
/run/current-system/profile)
|
|
'(lib/guile/3.0/site-ccache
|
|
share/guile/site/3.0))))))
|
|
(simple-service 'home-wayland-environment-variables
|
|
home-environment-variables-service-type
|
|
`(("QT_QPA_PLATFORM" . "wayland;xcb")
|
|
("QT_WAYLAND_DISABLE_WINDOWDECORATION" . "1")))
|
|
(simple-service 'home-language-environment-variables
|
|
home-environment-variables-service-type
|
|
`(("LANG" . "en_US.UTF-8")
|
|
("LANGUAGE" . "en_US.UTF-8")
|
|
("LC_COLLATE" . "C")))
|
|
(simple-service 'home-default-applications-environment-variables
|
|
home-environment-variables-service-type
|
|
`(("BROWSER" . "chromium")
|
|
("EDITOR" . "kak")
|
|
("PAGER" . "less")
|
|
("TERMINAL" . "foot")
|
|
("VISUAL" . "$EDITOR")
|
|
("WM" . "river")))
|
|
(simple-service 'home-applications-environment-variables
|
|
home-environment-variables-service-type
|
|
`(("MINETEST_USER_PATH" . "$XDG_DATA_HOME/minetest")
|
|
("PASSWORD_STORE_DIR" . "$HOME/.local/share/pass")))
|
|
|
|
#|SSH service|#
|
|
(service home-openssh-service-type
|
|
(home-openssh-configuration
|
|
(hosts (list (openssh-host
|
|
(name "codeberg.org")
|
|
(host-name "codeberg.org")
|
|
(user "git")
|
|
(identity-file "~/.ssh/codeberg"))
|
|
(openssh-host
|
|
(name "github.com")
|
|
(host-name "github.com")
|
|
(user "git")
|
|
(identity-file "~/.ssh/github"))
|
|
(openssh-host
|
|
(name "git.sr.ht")
|
|
(host-name "git.sr.ht")
|
|
(user "git")
|
|
(identity-file "~/.ssh/srht"))))
|
|
(authorized-keys #f)))
|
|
|
|
#|GPG agent service|#
|
|
(service home-gpg-agent-service-type
|
|
(home-gpg-agent-configuration
|
|
(gnupghome ".local/share/gnupg")
|
|
(pinentry-program
|
|
(file-append pinentry "/bin/pinentry-curses"))))
|
|
|
|
#|Session services|#
|
|
(service home-dbus-service-type)
|
|
|
|
#|Sound services|#
|
|
(service home-pipewire-service-type
|
|
(home-pipewire-configuration
|
|
(wireplumber wireplumber-minimal)))
|
|
|
|
#|Battery services|#
|
|
(service home-batsignal-service-type
|
|
(home-batsignal-configuration
|
|
(poll-delay 15)
|
|
(full-level 90)
|
|
(warning-level 70)
|
|
(critical-level 30)
|
|
(full-message "Unplug the cable")
|
|
(warning-message "You may want to plug the cable")
|
|
(critical-message "Plug the cable")))))))
|
|
radio
|