summaryrefslogtreecommitdiff
path: root/tw/home
diff options
context:
space:
mode:
authorTimo Wilken2023-04-21 14:23:10 +0200
committerTimo Wilken2023-04-21 14:31:01 +0200
commit043d2da63b10bddafa9aa7c4855dd01dac76c216 (patch)
tree0a94ce4341999e700e96798578596fc6f6f6aa0f /tw/home
parent37569e2c619942c36b0910a5833abb4f765c1464 (diff)
parent234c026bc56207a5e2376cfd7b7fe41d9edd67a3 (diff)
Merge diverged work and home branches
This took some work, particularly when re-merging the diverged OpenSSH configs and duplicate home services between lap.scm/home.scm and cern.scm.
Diffstat (limited to 'tw/home')
-rw-r--r--tw/home/cern.scm201
-rw-r--r--tw/home/emacs.scm104
-rw-r--r--tw/home/files/aerc/aerc.conf2
-rw-r--r--tw/home/files/emacs-init.el2
-rw-r--r--tw/home/files/gitconfig-cern4
-rw-r--r--tw/home/files/polybar.ini2
-rw-r--r--tw/home/lap.scm243
-rw-r--r--tw/home/server.scm10
8 files changed, 47 insertions, 521 deletions
diff --git a/tw/home/cern.scm b/tw/home/cern.scm
index 2957fd8b..dc3042c1 100644
--- a/tw/home/cern.scm
+++ b/tw/home/cern.scm
@@ -25,7 +25,6 @@
#:use-module ((nongnu packages messaging)
#:select (zoom))
#:use-module (tw home)
- #:use-module (tw home emacs)
#:use-module (tw packages alice)
#:use-module (tw packages ci)
#:use-module (tw packages catppuccin)
@@ -33,11 +32,7 @@
#:use-module (tw gexp)
#:use-module (tw theme))
-(use-package-modules android calendar compton dav dunst fonts freedesktop games
- gimp gnome gnome-xyz gnuzilla graphviz image-viewers
- inkscape kde libreoffice linux mail messaging networking
- pdf pulseaudio python-xyz syndication tcl terminals tex
- version-control video web-browsers wm xdisorg xorg)
+(use-package-modules calendar dav mail web-browsers xdisorg xorg)
(define pim-packages
(list vdirsyncer khal khard aerc lynx)) ; lynx for HTML mail
@@ -67,81 +62,15 @@
(".local/bin/mutt_oauth2.py"
,(local-file "files/neomutt/contrib/oauth2/mutt_oauth2.py" #:recursive? #t))))))
-(define polybar-wrapper
- (program-file
- "polybar-wrapper"
- #~(begin
- ;; This wrapper program checks that the monitor we want to start
- ;; polybar on is actually connected.
- (use-modules (ice-9 popen)
- (ice-9 rdelim))
- (let* ((connected-str (string-append (getenv "POLYBAR_MONITOR") " connected"))
- (xrandr (open-pipe* OPEN_READ #$(file-append xrandr "/bin/xrandr") "-q"))
- (monitor-connected?
- (let loop ((line (read-line xrandr)))
- (cond
- ((eof-object? line) #f) ; we didn't find our monitor connected
- ((string-prefix? connected-str line) #t) ; the monitor we want is connected
- (else (loop (read-line xrandr))))))) ; keep looking
- (close-pipe xrandr)
- (when monitor-connected?
- (execl #$(file-append polybar "/bin/polybar")))))))
-
-(define (polybar-service monitor)
- (shepherd-service
- (documentation (string-append "Polybar desktop bar for monitor " monitor "."))
- (provision (list (symbol-append 'polybar- (string->symbol monitor))))
- (requirement '(xorg-setup))
- (start #~(make-forkexec-constructor
- (list #$polybar-wrapper)
- #:environment-variables
- (cons #$(string-append "POLYBAR_MONITOR=" monitor)
- (default-environment-variables))))
- (stop #~(make-kill-destructor))))
-
(define-public %cern-home
(home-environment
(packages
;; These packages will show up in the home profile, under ~/.guix-home/profile.
- (cons*
- ;; CLI tools
- bsd-games texlive powertop (list git "send-email")
-
- ;; Work
- s3cmd python-alibuild python-alidistlint
- hashicorp-levant-bin hashicorp-nomad-bin
- hashicorp-consul-bin hashicorp-vault-bin hashicorp-packer-bin
- vinagre gnome-screenshot
-
- ;; i3 and Xorg. i3 itself must be installed system-wide for gdm to pick it up.
- ;; acpilight is a drop-in xbacklight replacement, as xbacklight doesn't work on my system.
- acpilight arandr dunst gimp hsetroot inkscape icecat kitty libreoffice imv mpv
- polybar pulsemixer rofi rofi-calc tk xdg-utils xdot xclip xcwd xdotool
- xdpyinfo xev xfd xfontsel xinput xkill xprop xrandr xrdb xsel xset xwininfo
- zoom zathura zathura-ps zathura-pdf-poppler
- dconf dconf-editor ; required for config by blueman, cozy, ...
- ;; gnome-keyring ; installed system-wide; see system-configuration.scm
- ;; geoclue ; for redshift -- installed system-wide
- ;; Fonts
- font-hermit font-inconsolata font-fira-code font-fira-sans font-libertinus
- ;; Fallback fonts
- font-google-noto font-google-noto-emoji font-openmoji ; for polybar
- ;; Theming
- papirus-icon-theme catppuccin-gtk-theme catppuccin-mocha-dark-cursors
-
- (append common-packages emacs-packages pim-packages)))
+ (append %common-packages %interactive-packages pim-packages))
;; To search for available home services, run 'guix home search KEYWORD'.
(services
(cons*
- ;; Configuration files for terminal-only programs in $XDG_CONFIG_HOME.
- (simple-service 'laptop-config home-xdg-configuration-files-service-type
- `(;; All alibuild needs is an empty file.
- ("alibuild/disable-analytics"
- ,(plain-file "alibuild-disable-analytics" ""))
- ("X11/XCompose" ,(local-file "files/XCompose")) ; see also: $XCOMPOSEFILE variable
- ("X11/Xresources" ,(local-file "files/Xresources"))))
-
;; This can't be a `service' as that would remove the 'guix channel.
(simple-service 'nonfree-channels home-channels-service-type
(list
@@ -170,66 +99,12 @@
(nighttime-brightness 0.7)
(extra-content "fade=0"))) ; with fade=1, restarting redshift causes flickering for a few secs
- ;; The dbus service doesn't seem to be added automatically.
- (service home-dbus-service-type
- (home-dbus-configuration))
-
- (simple-service 'gui-services home-shepherd-service-type
+ (simple-service 'xorg-setup-services home-shepherd-service-type
(list
- (shepherd-service
- (documentation "NetworkManager applet; provides a GUI for network connections.")
- (provision '(nm-applet))
- (start #~(make-forkexec-constructor
- (list #$(file-append network-manager-applet "/bin/nm-applet"))))
- (stop #~(make-kill-destructor)))
-
(polybar-service "DP-2")
(polybar-service "DP-1-8")
(shepherd-service
- (documentation "Dunst notification daemon; displays desktop notifications.")
- (provision '(dunst))
- (start #~(make-forkexec-constructor
- (list #$(file-append dunst "/bin/dunst"))))
- (stop #~(make-kill-destructor)))
-
- (shepherd-service
- (documentation "Picom compositor; enables transparent windows in X.")
- (provision '(picom))
- (start #~(make-forkexec-constructor
- (list #$(file-append picom "/bin/picom")
- "--config" #$(local-file "files/picom.conf"))))
- (stop #~(make-kill-destructor)))
-
- (shepherd-service
- (documentation "Source Xresources on login.")
- (provision '(xrdb))
- (one-shot? #t)
- (start #~(lambda _
- (invoke #$(file-append xrdb "/bin/xrdb") "-merge"
- (string-append (getenv "XDG_CONFIG_HOME") "/X11/Xresources")))))
-
- ;; By default, xdotool gets most of "#@\|~()<>[]{} wrong. Make
- ;; it use the correct keymap by re-setting the same one again.
- (shepherd-service
- (documentation "Fix X keyboard map on login; passmenu needs this.")
- (provision '(fix-xdotool))
- (one-shot? #t)
- (start #~(lambda _
- (use-modules (ice-9 rdelim)
- (ice-9 regex)
- (ice-9 popen))
- (let ((port (open-pipe* OPEN_READ #$(file-append setxkbmap "/bin/setxkbmap")
- "-query")))
- (let loop ((line (read-line port)))
- (unless (eof-object? line)
- (let ((mtch (string-match "^layout:[[:space:]]*" line)))
- (if mtch
- (system* #$(file-append setxkbmap "/bin/setxkbmap")
- (match:suffix mtch))
- (loop (read-line port))))))))))
-
- (shepherd-service
(documentation "Set up X displays on login.")
(provision '(xorg-setup))
(one-shot? #t)
@@ -249,74 +124,8 @@
(string-append (getenv "XDG_CONFIG_HOME")
"/X11/ridge-view.jpg")))))))
- ;; Configuration files for GUI programs in $XDG_CONFIG_HOME.
- (simple-service 'gui-config home-xdg-configuration-files-service-type
- `(("dunst/dunstrc" ,(local-file "files/dunstrc"))
- ("dunst/dunstrc.d/50-catppuccin.conf" ,catppuccin-dunstrc)
- ("gtk-2.0/gtkrc" ,(local-file "files/gtk2.ini"))
- ("gtk-3.0/settings.ini" ,(local-file "files/gtk3.ini"))
- ("i3/config" ,(local-file "files/i3.conf"))
- ;; TODO: "kdeglobals" works for some programs (e.g. kdeconnect-app),
- ;; but not for others (e.g. nheko, kdeconnect-settings)...
- ("kdeglobals" ,catppuccin-kdeglobals)
- ("kitty/diff.conf"
- ,(combined-text-file "kitty-diff.conf"
- (plain-file "kitty-diff-custom.conf"
- "pygments_style bw\n")
- catppuccin-kitty-diff))
- ("kitty/kitty.conf"
- ,(combined-text-file "kitty.conf"
- (local-file "files/kitty.conf")
- catppuccin-kitty))
- ("mimeapps.list" ,(local-file "files/mimeapps.list"))
- ("polybar/config.ini" ,(local-file "files/polybar.ini"))
- ("polybar/catppuccin.ini" ,catppuccin-polybar)
- ("rofi/config.rasi" ,(local-file "files/rofi.rasi"))
- ("rofi/themes/catppuccin.rasi" ,catppuccin-rofi)
- ("zathura/zathurarc" ,(local-file "files/zathurarc"))
- ("zathura/catppuccin" ,catppuccin-zathura)))
-
- (simple-service 'cursor-theme home-files-service-type
- `((".icons/default/index.theme" ,(local-file "files/cursors.ini"))))
-
- (simple-service 'gui-environment home-environment-variables-service-type
- `(("TERMINAL" . "kitty")
- ("_JAVA_OPTIONS" .
- ,(string-append
- "$_JAVA_OPTIONS${_JAVA_OPTIONS:+ }-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true "
- "-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel "
- "-Dswing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"))
- ;; Smooth trackpad scrolling in Firefox/Icecat.
- ;; https://wiki.archlinux.org/index.php/Firefox/Tweaks#Pixel-perfect_trackpad_scrolling
- ("MOZ_USE_XINPUT2" . "1")))
-
- (simple-service 'gui-scripts home-files-service-type
- `(;; https://sw.kovidgoyal.net/kitty/kittens/diff/
- (".local/bin/kdiff" ; show a diff
- ,(program-file "kdiff" #~(apply execl #$(file-append kitty "/bin/kitty") "kitty"
- "+kitten" "diff" (cdr (command-line)))))
- (".local/bin/icat" ; kitty's "catimg" equivalent
- ,(program-file "icat" #~(apply execl #$(file-append kitty "/bin/kitty") "kitty"
- "+kitten" "icat" (cdr (command-line)))))
- (".local/bin/screenlock"
- ,(program-file
- "screenlock"
- #~(begin ; Wrapper around i3lock to turn off the screen and pause notifications.
- (system* #$(file-append dunst "/bin/dunstctl") "set-paused" "true")
- (system* #$(file-append xset "/bin/xset") "dpms" "0" "0" "5")
- ;; We mustn't use `file-append' here, as we have to pick up the
- ;; setuid binary for i3lock installed by the system config.
- (system* "i3lock" "-nc" #$catppuccin-background-color)
- (system* #$(file-append xset "/bin/xset") "dpms" "600" "600" "600")
- (system* #$(file-append dunst "/bin/dunstctl") "set-paused" "false"))))
- ;; With #:recursive? #t, Guix keeps the files' permission bits, i.e. makes them executable.
- (".local/bin/sessionmenu" ,(local-file "files/sessionmenu" #:recursive? #t))
- (".local/bin/passmenu" ,(local-file "files/passmenu" #:recursive? #t))
- (".local/bin/volume" ,(local-file "files/volume" #:recursive? #t))
- (".local/share/applications/emacsclient.desktop"
- ,(local-file "files/emacsclient.desktop"))))
+ (openssh-service #f)
- (append (gnupg-services #:gui-pinentry? #t)
- common-services emacs-services pim-services)))))
+ (append %common-services %interactive-services pim-services)))))
%cern-home
diff --git a/tw/home/emacs.scm b/tw/home/emacs.scm
deleted file mode 100644
index fb608126..00000000
--- a/tw/home/emacs.scm
+++ /dev/null
@@ -1,104 +0,0 @@
-(define-module (tw home emacs)
- #:use-module (gnu)
- #:use-module (gnu home services)
- #:use-module (gnu home services shepherd)
- #:use-module (tw theme))
-
-(use-package-modules base check cmake emacs emacs-xyz databases elf finance
- gcc haskell-apps llvm python-xyz sqlite)
-
-(define-public emacs-services
- (list
- (simple-service 'emacs-config home-xdg-configuration-files-service-type
- `(("emacs/include" ,(local-file "files/emacs-packages" #:recursive? #t))
- ("emacs/init.el" ,(local-file "files/emacs-init.el"))
- (,(string-append "emacs/" (local-file-name catppuccin-emacs-theme))
- ,catppuccin-emacs-theme)))
-
- (simple-service 'emacsclient-is-editor home-environment-variables-service-type
- `(("EDITOR" . "emacsclient -qc")
- ;; Tell emacsclient to return immediately after opening the file. I
- ;; can't put this in $EDITOR as many programs expect $EDITOR to exit
- ;; only when the user is done editing.
- ("ASYNC_EDITOR" . "emacsclient -qcn")))
-
- (simple-service 'emacs-server home-shepherd-service-type
- (list
- (shepherd-service
- (documentation "Emacs server; connect using emacsclient.")
- (provision '(emacs))
- (start #~(make-forkexec-constructor
- (list #$(file-append emacs "/bin/emacs") "--fg-daemon")))
- (stop #~(make-kill-destructor)))))))
-
-(define-public emacs-packages
- (list
- ;; Development & language servers
- gnu-make
- python-yamllint
- actionlint
- shellcheck
- clang ; for clangd
- glibc ; for ldd
- gcc binutils patchelf elfutils
- python-lsp-server
- ;; Supported OotB by eglot, but not packaged by guix:
- ;; https://github.com/mads-hartmann/bash-language-server
- ;; https://github.com/regen100/cmake-language-server
- ;; https://github.com/hrsh7th/vscode-langservers-extracted ; {html,css,json}-languageserver
- ;; https://github.com/golang/tools/tree/master/gopls ; maybe?
- ;; https://github.com/artempyanykh/marksman ; Markdown
- ;; https://github.com/astoff/digestif ; (La)TeX
- ;; https://github.com/redhat-developer/yaml-language-server
- ;; Needs eglot config + not packaged (from lsp-mode):
- ;; https://github.com/graphql/graphiql/tree/main/packages/graphql-language-service-cli#readme
- ;; https://github.com/haskell/haskell-language-server / https://github.com/haskell/ghcide
- ;; https://github.com/eclipse/lemminx
-
- ;; Emacs general
- emacs
- emacs-use-package
- emacs-eglot
- emacs-counsel
- emacs-counsel-dash sqlite ; emacs-counsel-dash requires the sqlite3 binary
- emacs-ivy
- ;; emacs-company emacs-company-quickhelp emacs-company-posframe
- emacs-corfu emacs-corfu-doc
- emacs-autothemer ; for catppuccin/emacs
- emacs-undo-tree
- emacs-aggressive-indent
- emacs-which-key
- emacs-smart-mode-line
- emacs-diminish
- emacs-rainbow-mode
- emacs-form-feed
- emacs-guix
- ;; TODO: emacs-editorconfig emacs-sly emacs-sly-macrostep
- emacs-org ; emacs-org-modern theme?
-
- ;; Emacs Evil
- emacs-evil
- emacs-evil-collection
- emacs-evil-expat ; for :reverse, :remove, :rename, :colo, :g*, ... ex commands
- emacs-evil-surround
- ;; emacs-evil-owl ; tests failing
- emacs-evil-args
- emacs-evil-numbers
- emacs-evil-multiedit
- emacs-evil-goggles
- emacs-evil-traces
- emacs-evil-commentary
- emacs-evil-replace-with-register
- emacs-evil-org
- emacs-evil-markdown
- emacs-evil-tex
- emacs-evil-text-object-python
-
- ;; Emacs language modes
- emacs-geiser emacs-geiser-guile
- ;; emacs-macrostep-geiser
- emacs-flymake-collection ; emacs-flymake-flycheck ; if needed
- emacs-cmake-mode emacs-gnuplot emacs-graphviz-dot-mode
- emacs-hcl-mode emacs-ledger-mode emacs-mmm-mode
- emacs-puppet-mode emacs-rec-mode emacs-web-mode
- emacs-yaml-mode))
diff --git a/tw/home/files/aerc/aerc.conf b/tw/home/files/aerc/aerc.conf
index eb75036e..01c2527d 100644
--- a/tw/home/files/aerc/aerc.conf
+++ b/tw/home/files/aerc/aerc.conf
@@ -9,7 +9,7 @@ unsafe-accounts-conf=true
[ui]
# Describes the format for each row in a mailbox view. This field is compatible
# with mutt's printf-like syntax.
-index-format=%4C %Z %D %-17.17n %s
+index-format=%4C %Z %D %-17.17F %s
# See time.Time#Format at https://godoc.org/time#Time.Format
timestamp-format=Mon _2 Jan 2006 15:04
diff --git a/tw/home/files/emacs-init.el b/tw/home/files/emacs-init.el
index eac4b666..1469dab2 100644
--- a/tw/home/files/emacs-init.el
+++ b/tw/home/files/emacs-init.el
@@ -350,7 +350,7 @@
;; Org-mode
(use-package org
:commands (org-mode)
- :mode (rx ".org" eos)
+ :mode ((rx ".org" eos) . org-mode)
:custom
(org-latex-src-block-backend 'minted "Colourise source code.")
(org-latex-packages-alist
diff --git a/tw/home/files/gitconfig-cern b/tw/home/files/gitconfig-cern
new file mode 100644
index 00000000..5c7f0bb1
--- /dev/null
+++ b/tw/home/files/gitconfig-cern
@@ -0,0 +1,4 @@
+[user]
+ email = timo.wilken@cern.ch
+ signingkey = C2249BBE5E8761C943A0CFA1B7B3914BF63ACD7C
+ name = Timo Wilken
diff --git a/tw/home/files/polybar.ini b/tw/home/files/polybar.ini
index 506f8c12..13a2e0b8 100644
--- a/tw/home/files/polybar.ini
+++ b/tw/home/files/polybar.ini
@@ -177,6 +177,8 @@ animation-packetloss-1-foreground = ${colors.alert}
animation-packetloss-1-background = ${colors.background-alt}
; Framerate in milliseconds
animation-packetloss-framerate = 500
+; Don't display "B/s" suffix, only e.g. "5 K" for compactness.
+speed-unit =
[module/wlan]
inherit = network-base
diff --git a/tw/home/lap.scm b/tw/home/lap.scm
index 7ffa3974..f006d8e1 100644
--- a/tw/home/lap.scm
+++ b/tw/home/lap.scm
@@ -8,59 +8,52 @@
;; https://github.com/alezost/shepherd-config/blob/master/init.scm
(define-module (tw home lap)
- #:use-module ((gnu)
- #:select (use-package-modules))
#:use-module (gnu home)
#:use-module (gnu home services)
#:use-module (gnu home services desktop)
#:use-module (gnu home services guix)
- #:use-module (gnu home services mcron)
#:use-module (gnu home services pm)
#:use-module (gnu home services shepherd)
- #:use-module (gnu packages)
+ #:use-module (gnu packages android)
+ #:use-module (gnu packages bittorrent)
+ #:use-module (gnu packages calendar)
+ #:use-module (gnu packages dav)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages mail)
+ #:use-module (gnu packages messaging)
+ #:use-module (gnu packages music)
+ #:use-module (gnu packages networking)
+ #:use-module (gnu packages syndication)
+ #:use-module (gnu packages web-browsers)
+ #:use-module (gnu packages xorg)
+ #:use-module (gnu packages xdisorg)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
#:use-module (guix channels)
#:use-module (guix gexp)
#:use-module ((nongnu packages messaging)
- #:select (signal-desktop zoom))
+ #:select (signal-desktop))
#:use-module ((nongnu packages steam-client)
#:select (steam))
#:use-module (tw home)
- #:use-module (tw home emacs)
- #:use-module (tw packages alice)
- #:use-module (tw packages catppuccin)
- #:use-module (tw packages ci)
- #:use-module (tw packages games)
- #:use-module (tw packages xorg)
- #:use-module (tw gexp)
#:use-module (tw theme))
-(use-package-modules android bittorrent calendar compton dav dunst fonts
- freedesktop games gimp gnome gnome-xyz gnuzilla graphviz
- image-viewers inkscape kde libreoffice linux mail
- messaging music networking pdf pulseaudio python-xyz
- syndication tcl terminals tex version-control video
- web-browsers wm xdisorg xorg)
-
(define pim-packages
- (list newsboat vdirsyncer khal khard aerc neomutt mailcap lynx)) ; lynx for HTML mail
+ (list newsboat vdirsyncer khal khard aerc lynx)) ; lynx for HTML mail
(define pim-services
(list
(simple-service 'pim-config home-xdg-configuration-files-service-type
- `(("khal/config" ,(local-file "files/khal.conf"))
- ("khard/khard.conf" ,(local-file "files/khard.conf"))
+ `(("khal/config" ,(local-file "home/files/khal.conf"))
+ ("khard/khard.conf" ,(local-file "home/files/khard.conf"))
("aerc/accounts.conf" ,(local-file "files/aerc/accounts.conf"))
("aerc/aerc.conf" ,(local-file "files/aerc/aerc.conf"))
("aerc/binds.conf" ,(local-file "files/aerc/binds.conf"))
("aerc/filters" ,(local-file "files/aerc/filters" #:recursive? #t))
("aerc/stylesets" ,(local-file "files/aerc/stylesets" #:recursive? #t))
- ("mutt/muttrc" ,(local-file "files/muttrc"))
- ("mutt/catppuccin.muttrc" ,catppuccin-muttrc)
- ("newsboat/config" ,(local-file "files/newsboat.conf"))
+ ("newsboat/config" ,(local-file "home/files/newsboat.conf"))
("newsboat/config.catppuccin" ,catppuccin-newsboat)
- ("vdirsyncer/config" ,(local-file "files/vdirsyncer.conf"))))
+ ("vdirsyncer/config" ,(local-file "home/files/vdirsyncer.conf"))))
;; These cron jobs are annoying because they pop up a password prompt every time they run.
;; (simple-service 'pim-cronjobs home-mcron-service-type
@@ -70,43 +63,10 @@
;; (string-append #$(file-append vdirsyncer "/bin/vdirsyncer") " sync"))))
(simple-service 'mail-files home-files-service-type
- `((".mailcap" ,(local-file "files/mailcap"))
- ;; The file from git main is newer than the one bundled with the
+ `(;; The file from git main is newer than the one bundled with the
;; packaged neomutt version and contains a few fixes.
(".local/bin/mutt_oauth2.py"
- ,(local-file "files/neomutt/contrib/oauth2/mutt_oauth2.py" #:recursive? #t))))))
-
-(define polybar-wrapper
- (program-file
- "polybar-wrapper"
- #~(begin
- ;; This wrapper program checks that the monitor we want to start
- ;; polybar on is actually connected.
- (use-modules (ice-9 popen)
- (ice-9 rdelim))
- (let* ((connected-str (string-append (getenv "POLYBAR_MONITOR") " connected"))
- (xrandr (open-pipe* OPEN_READ #$(file-append xrandr "/bin/xrandr") "-q"))
- (monitor-connected?
- (let loop ((line (read-line xrandr)))
- (cond
- ((eof-object? line) #f) ; we didn't find our monitor connected
- ((string-prefix? connected-str line) #t) ; the monitor we want is connected
- (else (loop (read-line xrandr))))))) ; keep looking
- (close-pipe xrandr)
- (when monitor-connected?
- (execl #$(file-append polybar "/bin/polybar")))))))
-
-(define (polybar-service monitor)
- (shepherd-service
- (documentation (string-append "Polybar desktop bar for monitor " monitor "."))
- (provision (list (symbol-append 'polybar- (string->symbol monitor))))
- (requirement '(xorg-setup))
- (start #~(make-forkexec-constructor
- (list #$polybar-wrapper)
- #:environment-variables
- (cons #$(string-append "POLYBAR_MONITOR=" monitor)
- (default-environment-variables))))
- (stop #~(make-kill-destructor))))
+ ,(local-file "home/files/neomutt/contrib/oauth2/mutt_oauth2.py" #:recursive? #t))))))
(define-public %lap-home
(home-environment
@@ -114,47 +74,22 @@
;; These packages will show up in the home profile, under ~/.guix-home/profile.
(cons*
;; CLI tools
- adb fastboot beets bsd-games texlive powertop (list git "send-email")
+ adb fastboot beets cmus
+
+ ;; Graphical applications
+ blueman nheko signal-desktop simple-scan transmission-remote-gtk
;; Games
steam ; see also: steam-nvidia
-
- ;; Work
- s3cmd python-alibuild python-alidistlint
- hashicorp-nomad-bin hashicorp-consul-bin hashicorp-vault-bin hashicorp-packer-bin
-
- ;; i3 and Xorg. i3 itself must be installed system-wide for gdm to pick it up.
- ;; acpilight is a drop-in xbacklight replacement, as xbacklight doesn't work on my system.
- acpilight arandr blueman dunst gimp hsetroot inkscape icecat imv
- kitty libreoffice mpv nheko polybar pulsemixer rofi rofi-calc
- signal-desktop simple-scan tk transmission-remote-gtk xdg-utils xdot xclip
- xcwd xdotool xdpyinfo xev xfd xfontsel xinput xkill xprop xrandr xrdb xsel
- xset xwininfo zoom zathura zathura-ps zathura-pdf-poppler
- dconf dconf-editor ; required for config by blueman, cozy, ...
- ;; gnome-keyring ; installed system-wide; see system-configuration.scm
- ;; geoclue ; for redshift -- installed system-wide
;; Games are installed in ~/.guix-profile instead, to make updates of the
;; home environment faster.
;; 0ad flightgear freeciv simutrans/pak128 warzone2100 widelands pioneer
- ;; Fonts
- font-hermit font-inconsolata font-fira-code font-fira-sans font-libertinus
- font-google-noto font-google-noto-emoji font-openmoji ; for polybar
- ;; Theming
- papirus-icon-theme catppuccin-gtk-theme catppuccin-mocha-dark-cursors
- (append common-packages emacs-packages pim-packages)))
+ (append %interactive-packages pim-packages %common-packages)))
;; To search for available home services, run 'guix home search KEYWORD'.
(services
(cons*
- ;; Configuration files for terminal-only programs in $XDG_CONFIG_HOME.
- (simple-service 'laptop-config home-xdg-configuration-files-service-type
- `(;; All alibuild needs is an empty file.
- ("alibuild/disable-analytics"
- ,(plain-file "alibuild-disable-analytics" ""))
- ("X11/XCompose" ,(local-file "files/XCompose")) ; see also: $XCOMPOSEFILE variable
- ("X11/Xresources" ,(local-file "files/Xresources"))))
-
;; This can't be a `service' as that would remove the 'guix channel.
(simple-service 'nonfree-channels home-channels-service-type
(list
@@ -198,20 +133,9 @@
(nighttime-brightness 0.7)
(extra-content "fade=0"))) ; with fade=1, restarting redshift causes flickering for a few secs
- ;; The dbus service doesn't seem to be added automatically.
- (service home-dbus-service-type
- (home-dbus-configuration))
-
- (simple-service 'gui-services home-shepherd-service-type
+ (simple-service 'laptop-gui-services home-shepherd-service-type
(list
(shepherd-service
- (documentation "NetworkManager applet; provides a GUI for network connections.")
- (provision '(nm-applet))
- (start #~(make-forkexec-constructor
- (list #$(file-append network-manager-applet "/bin/nm-applet"))))
- (stop #~(make-kill-destructor)))
-
- (shepherd-service
(documentation "Blueman applet; provides a GUI for connection to bluetooth devices.")
(provision '(blueman-applet))
(start #~(make-forkexec-constructor
@@ -222,49 +146,6 @@
(polybar-service "HDMI-1-1")
(shepherd-service
- (documentation "Dunst notification daemon; displays desktop notifications.")
- (provision '(dunst))
- (start #~(make-forkexec-constructor
- (list #$(file-append dunst "/bin/dunst"))))
- (stop #~(make-kill-destructor)))
-
- (shepherd-service
- (documentation "Picom compositor; enables transparent windows in X.")
- (provision '(picom))
- (start #~(make-forkexec-constructor
- (list #$(file-append picom "/bin/picom")
- "--config" #$(local-file "files/picom.conf"))))
- (stop #~(make-kill-destructor)))
-
- (shepherd-service
- (documentation "Source Xresources on login.")
- (provision '(xrdb))
- (one-shot? #t)
- (start #~(lambda _
- (invoke #$(file-append xrdb "/bin/xrdb") "-merge"
- (string-append (getenv "XDG_CONFIG_HOME") "/X11/Xresources")))))
-
- ;; By default, xdotool gets most of "#@\|~()<>[]{} wrong. Make
- ;; it use the correct keymap by re-setting the same one again.
- (shepherd-service
- (documentation "Fix X keyboard map on login; passmenu needs this.")
- (provision '(fix-xdotool))
- (one-shot? #t)
- (start #~(lambda _
- (use-modules (ice-9 rdelim)
- (ice-9 regex)
- (ice-9 popen))
- (let ((port (open-pipe* OPEN_READ #$(file-append setxkbmap "/bin/setxkbmap")
- "-query")))
- (let loop ((line (read-line port)))
- (unless (eof-object? line)
- (let ((mtch (string-match "^layout:[[:space:]]*" line)))
- (if mtch
- (system* #$(file-append setxkbmap "/bin/setxkbmap")
- (match:suffix mtch))
- (loop (read-line port))))))))))
-
- (shepherd-service
(documentation "Set up X displays on login.")
(provision '(xorg-setup))
(one-shot? #t)
@@ -285,74 +166,8 @@
(string-append (getenv "HOME")
"/pictures/Backgrounds/greece/IMG_20181201_104748_DRO.jpg")))))))
- ;; Configuration files for GUI programs in $XDG_CONFIG_HOME.
- (simple-service 'gui-config home-xdg-configuration-files-service-type
- `(("dunst/dunstrc" ,(local-file "files/dunstrc"))
- ("dunst/dunstrc.d/50-catppuccin.conf" ,catppuccin-dunstrc)
- ("gtk-2.0/gtkrc" ,(local-file "files/gtk2.ini"))
- ("gtk-3.0/settings.ini" ,(local-file "files/gtk3.ini"))
- ("i3/config" ,(local-file "files/i3.conf"))
- ;; TODO: "kdeglobals" works for some programs (e.g. kdeconnect-app),
- ;; but not for others (e.g. nheko, kdeconnect-settings)...
- ("kdeglobals" ,catppuccin-kdeglobals)
- ("kitty/diff.conf"
- ,(combined-text-file "kitty-diff.conf"
- (plain-file "kitty-diff-custom.conf"
- "pygments_style bw\n")
- catppuccin-kitty-diff))
- ("kitty/kitty.conf"
- ,(combined-text-file "kitty.conf"
- (local-file "files/kitty.conf")
- catppuccin-kitty))
- ("mimeapps.list" ,(local-file "files/mimeapps.list"))
- ("polybar/config.ini" ,(local-file "files/polybar.ini"))
- ("polybar/catppuccin.ini" ,catppuccin-polybar)
- ("rofi/config.rasi" ,(local-file "files/rofi.rasi"))
- ("rofi/themes/catppuccin.rasi" ,catppuccin-rofi)
- ("zathura/zathurarc" ,(local-file "files/zathurarc"))
- ("zathura/catppuccin" ,catppuccin-zathura)))
-
- (simple-service 'cursor-theme home-files-service-type
- `((".icons/default/index.theme" ,(local-file "files/cursors.ini"))))
-
- (simple-service 'gui-environment home-environment-variables-service-type
- `(("TERMINAL" . "kitty")
- ("_JAVA_OPTIONS" .
- ,(string-append
- "$_JAVA_OPTIONS${_JAVA_OPTIONS:+ }-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true "
- "-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel "
- "-Dswing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"))
- ;; Smooth trackpad scrolling in Firefox/Icecat.
- ;; https://wiki.archlinux.org/index.php/Firefox/Tweaks#Pixel-perfect_trackpad_scrolling
- ("MOZ_USE_XINPUT2" . "1")))
-
- (simple-service 'gui-scripts home-files-service-type
- `(;; https://sw.kovidgoyal.net/kitty/kittens/diff/
- (".local/bin/kdiff" ; show a diff
- ,(program-file "kdiff" #~(apply execl #$(file-append kitty "/bin/kitty") "kitty"
- "+kitten" "diff" (cdr (command-line)))))
- (".local/bin/icat" ; kitty's "catimg" equivalent
- ,(program-file "icat" #~(apply execl #$(file-append kitty "/bin/kitty") "kitty"
- "+kitten" "icat" (cdr (command-line)))))
- (".local/bin/screenlock"
- ,(program-file
- "screenlock"
- #~(begin ; Wrapper around i3lock to turn off the screen and pause notifications.
- (system* #$(file-append dunst "/bin/dunstctl") "set-paused" "true")
- (system* #$(file-append xset "/bin/xset") "dpms" "0" "0" "5")
- ;; We mustn't use `file-append' here, as we have to pick up the
- ;; setuid binary for i3lock installed by the system config.
- (system* "i3lock" "-nc" #$catppuccin-background-color)
- (system* #$(file-append xset "/bin/xset") "dpms" "600" "600" "600")
- (system* #$(file-append dunst "/bin/dunstctl") "set-paused" "false"))))
- ;; With #:recursive? #t, Guix keeps the files' permission bits, i.e. makes them executable.
- (".local/bin/sessionmenu" ,(local-file "files/sessionmenu" #:recursive? #t))
- (".local/bin/passmenu" ,(local-file "files/passmenu" #:recursive? #t))
- (".local/bin/volume" ,(local-file "files/volume" #:recursive? #t))
- (".local/share/applications/emacsclient.desktop"
- ,(local-file "files/emacsclient.desktop"))))
+ (openssh-service #t)
- (append (gnupg-services #:gui-pinentry? #t)
- common-services emacs-services pim-services)))))
+ (append pim-services %interactive-services %common-services)))))
%lap-home
diff --git a/tw/home/server.scm b/tw/home/server.scm
index c4c62cc9..694c84c8 100644
--- a/tw/home/server.scm
+++ b/tw/home/server.scm
@@ -1,17 +1,17 @@
(define-module (tw home server)
- #:use-module (gnu)
#:use-module (gnu home)
#:use-module (gnu home services)
+ #:use-module (gnu packages vim)
+ #:use-module (gnu services)
+ #:use-module (guix gexp)
#:use-module (tw home)
#:use-module (tw theme))
-(use-package-modules vim)
-
(define-public %server-home
(home-environment
;; These packages will show up in the home profile, under ~/.guix-home/profile.
(packages
- (cons* vim vim-surround common-packages))
+ (cons* vim vim-surround %common-packages))
;; To search for available home services, run 'guix home search KEYWORD'.
(services
(cons*
@@ -22,6 +22,6 @@
(simple-service 'vim-is-editor home-environment-variables-service-type
`(("EDITOR" . "vim"))) ; we define no ASYNC_EDITOR
- common-services))))
+ %common-services))))
%server-home