mirror of
https://github.com/SqrtMinusOne/dotfiles.git
synced 2025-12-10 11:13:04 +03:00
*: update for arch
This commit is contained in:
parent
9ffcbde6d2
commit
97be992565
18 changed files with 229 additions and 303 deletions
|
|
@ -1,14 +1,14 @@
|
|||
decorations = "none"
|
||||
# decorations = "none"
|
||||
|
||||
[colors.bright]
|
||||
Black = "#484848"
|
||||
Blue = "#cbcfff"
|
||||
Cyan = "#88c8ff"
|
||||
Green = "#8adf80"
|
||||
Magenta = "#df8fff"
|
||||
Red = "#ff8f88"
|
||||
White = "#ffffff"
|
||||
Yellow = "#fac200"
|
||||
black = "#484848"
|
||||
blue = "#cbcfff"
|
||||
cyan = "#88c8ff"
|
||||
green = "#8adf80"
|
||||
magenta = "#df8fff"
|
||||
red = "#ff8f88"
|
||||
white = "#ffffff"
|
||||
yellow = "#fac200"
|
||||
|
||||
[colors.normal]
|
||||
black = "#222222"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ enabled_backends = ["arch"]
|
|||
hostname_groups_enabled = true
|
||||
|
||||
[hostname_groups]
|
||||
kek = ["browsers"]
|
||||
weiss = ["system","office","music","mail","latex","emacs","dev","desktop-rofi","desktop-polybar","desktop-misc","desktop","console","browsers"]
|
||||
archlinux = ["system","office","music","mail","latex","emacs","dev","desktop-rofi","desktop-polybar","desktop-misc","desktop","console","browsers"]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
arch = [
|
||||
"vnstat",
|
||||
"activitywatch-bin",
|
||||
"xdg-desktop-portal",
|
||||
"flatpak",
|
||||
|
|
@ -14,5 +15,4 @@ arch = [
|
|||
"gnome-themes-extra",
|
||||
"xsettingsd",
|
||||
"papirus-icon-theme",
|
||||
"gtk-engines",
|
||||
"gtk-engine-murrine",]
|
||||
"gtk-engines",]
|
||||
|
|
|
|||
|
|
@ -3,8 +3,10 @@ arch = [
|
|||
"the_silver_searcher",
|
||||
"ripgrep",
|
||||
"hledger",
|
||||
"rclone",
|
||||
"gnu-free-fonts",
|
||||
"ttf-unifont",
|
||||
"telegram-tdlib",
|
||||
"yt-dlp",
|
||||
"mpv",
|
||||
"python-youtube-transcript-api",
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ arch = [
|
|||
"pacman-contrib",
|
||||
"openssh",
|
||||
"metapac",
|
||||
"networkmanager",
|
||||
"nano",
|
||||
"inetutils",
|
||||
"linux-firmware",
|
||||
|
|
|
|||
8
.config/systemd/user/aw-qt.service
Normal file
8
.config/systemd/user/aw-qt.service
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
[Unit]
|
||||
Description=ActivityWatch
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/aw-qt
|
||||
|
||||
[Install]
|
||||
WantedBy=wm-session.target
|
||||
9
.config/systemd/user/deterred-mpd.service
Normal file
9
.config/systemd/user/deterred-mpd.service
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
[Unit]
|
||||
Description=DETERRED MPD Watcher
|
||||
ConditionPathExists=/home/pavel/10-19 Code/13 Other Projects/13.02 sqrt-data/13.02.R Repos/13.02.R.05 deterred/watchers/deterred-mpd.py
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/python "/home/pavel/10-19 Code/13 Other Projects/13.02 sqrt-data/13.02.R Repos/13.02.R.05 deterred/watchers/deterred-mpd.py" "--db" "/home/pavel/.deterred/database.db"
|
||||
|
||||
[Install]
|
||||
WantedBy=wm-session.target
|
||||
8
.config/systemd/user/mpd.service
Normal file
8
.config/systemd/user/mpd.service
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
[Unit]
|
||||
Description=Music Player Daemon
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/mpd --no-daemon
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
8
.config/systemd/user/nm-applet.service
Normal file
8
.config/systemd/user/nm-applet.service
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
[Unit]
|
||||
Description=Network Manager Applet
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/nm-applet
|
||||
|
||||
[Install]
|
||||
WantedBy=wm-session.target
|
||||
8
.config/systemd/user/vnstat.service
Normal file
8
.config/systemd/user/vnstat.service
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
[Unit]
|
||||
Description=vnStat network monitor
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/vnstatd
|
||||
|
||||
[Install]
|
||||
WantedBy=wm-session.target
|
||||
8
.config/systemd/user/xsettingsd.service
Normal file
8
.config/systemd/user/xsettingsd.service
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
[Unit]
|
||||
Description=X Settings Daemon
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/xsettingsd
|
||||
|
||||
[Install]
|
||||
WantedBy=wm-session.target
|
||||
|
|
@ -10,6 +10,9 @@
|
|||
(executable-find "shepherd"))
|
||||
(call-process "shepherd")))
|
||||
|
||||
(defun my/exwm-run-systemd ()
|
||||
(call-process "systemctl" nil nil nil "--user" "start" "wm-session.target"))
|
||||
|
||||
(use-package pinentry
|
||||
:straight t
|
||||
:after (exwm)
|
||||
|
|
@ -592,6 +595,7 @@ _d_: Discord
|
|||
(my/exwm-run-polybar)
|
||||
(my/exwm-set-wallpaper)
|
||||
(my/exwm-run-shepherd)
|
||||
(my/exwm-run-systemd)
|
||||
(my/run-in-background "gpgconf --reload gpg-agent")
|
||||
(when (my/is-arch)
|
||||
(my/run-in-background "set_layout")))
|
||||
|
|
|
|||
|
|
@ -116,7 +116,8 @@
|
|||
(string-match-p "/gnu/store" default-directory))
|
||||
(nerd-icons-dired-mode))))
|
||||
:config
|
||||
(advice-add #'dired-create-empty-file :around #'nerd-icons-dired--refresh-advice))
|
||||
;; (advice-add #'dired-create-empty-file :around #'nerd-icons-dired--refresh-advice)
|
||||
)
|
||||
|
||||
(use-package dired-open
|
||||
:straight t
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ xss-lock -- i3lock -f -i /home/pavel/Pictures/lock-wallpaper.png &
|
|||
# Some apps that have to be launched only once.
|
||||
picom &
|
||||
# nm-applet &
|
||||
dunst &
|
||||
# dunst &
|
||||
copyq &
|
||||
|
||||
# Run the Emacs startup script as a session.
|
||||
|
|
|
|||
56
Arch.org
56
Arch.org
|
|
@ -1,5 +1,5 @@
|
|||
#+PROPERTY: header-args :mkdirp yes
|
||||
#+TITLE: Arch Linux
|
||||
#+PROPERTY: header-args :mkdirp yes
|
||||
|
||||
I've decided to switch to [[https://archlinux.org/][Arch Linux]] and configure it declaratively with [[https://github.com/ripytide/metapac][metapac]].
|
||||
|
||||
|
|
@ -70,13 +70,23 @@ yadm clone git@github.com:SqrtMinusOne/dotfiles.git
|
|||
#+end_src
|
||||
Checkout the changed files.
|
||||
|
||||
Clone the org-mode repo:
|
||||
Clone org-mode and passwords repos:
|
||||
#+begin_src bash
|
||||
git clone git@github.com:SqrtMinusOne/dotfiles.git "/home/pavel/30-39 Life/32 org-mode"
|
||||
git clone ssh://git@git.sqrtminusone.xyz:222/sqrtminusone/org-mode.git "/home/pavel/30-39 Life/32 org-mode"
|
||||
git clone ssh://git@git.sqrtminusone.xyz:222/sqrtminusone/passwords.git "/home/pavel/.password-store"
|
||||
#+end_src
|
||||
|
||||
And don't forget to configure git:
|
||||
#+begin_src bash
|
||||
git config --global user.email "thexcloud@gmail.com"
|
||||
git config --global user.name "SqrtMinusOne"
|
||||
#+end_src
|
||||
|
||||
#+begin_src bash
|
||||
sudo systemctl enable --now NetworkManager
|
||||
#+end_src
|
||||
|
||||
Install wakatime:
|
||||
|
||||
#+begin_src bash
|
||||
cd ~/00-Scratch/
|
||||
git clone https://github.com/wakatime/wakatime-cli.git
|
||||
|
|
@ -95,8 +105,15 @@ Then run =emacs= and make sure it starts. Run:
|
|||
- =M-x nerd-icons-install-fonts=
|
||||
- =M-x all-the-icons-install-fonts=
|
||||
|
||||
Run =rclone config=, configure the remotes. Then =M-x my/index-commands-sync=.
|
||||
|
||||
If everything works, login into EXWM.
|
||||
|
||||
Create some directories:
|
||||
#+begin_src bash
|
||||
mkdir -p /home/pavel/Pictures/screenshots/
|
||||
#+end_src
|
||||
|
||||
* Metapac configuration
|
||||
[[https://github.com/ripytide/metapac][metapac]] is a declarative wrapper around different package managers, including [[https://wiki.archlinux.org/title/Pacman][pacman]] and [[https://github.com/Morganamilo/paru][paru]]. This means the required packages can be listed in configuration files and checked into version control.
|
||||
|
||||
|
|
@ -106,20 +123,20 @@ In =metapac=, packages are listed in "groups", each group being a TOML file stat
|
|||
|
||||
Below is the table enabling different groups on different hostnames:
|
||||
#+NAME: metapac-groups
|
||||
| Profile | archlinux | kek |
|
||||
| browsers | + | + |
|
||||
| console | + | |
|
||||
| desktop | + | |
|
||||
| desktop-misc | + | |
|
||||
| desktop-polybar | + | |
|
||||
| desktop-rofi | + | |
|
||||
| dev | + | |
|
||||
| emacs | + | |
|
||||
| latex | + | |
|
||||
| mail | + | |
|
||||
| music | + | |
|
||||
| office | + | |
|
||||
| system | + | |
|
||||
| Profile | archlinux | weiss |
|
||||
| browsers | + | + |
|
||||
| console | + | + |
|
||||
| desktop | + | + |
|
||||
| desktop-misc | + | + |
|
||||
| desktop-polybar | + | + |
|
||||
| desktop-rofi | + | + |
|
||||
| dev | + | + |
|
||||
| emacs | + | + |
|
||||
| latex | + | + |
|
||||
| mail | + | + |
|
||||
| music | + | + |
|
||||
| office | + | + |
|
||||
| system | + | + |
|
||||
|
||||
And the code to format it as TOML:
|
||||
#+NAME: metapac-groups-format
|
||||
|
|
@ -167,6 +184,7 @@ Some necessary Arch packages:
|
|||
| linux-firmware |
|
||||
| inetutils |
|
||||
| nano |
|
||||
| networkmanager |
|
||||
| metapac |
|
||||
| openssh |
|
||||
| pacman-contrib |
|
||||
|
|
@ -202,5 +220,5 @@ Various drivers, I'm not sure which I actually need, so...
|
|||
#+end_src
|
||||
|
||||
#+begin_src scheme :tangle .config/metapac/groups/system.toml :noweb yes
|
||||
<<packages()>>
|
||||
<<packages()>ger>
|
||||
#+end_src
|
||||
|
|
|
|||
366
Desktop.org
366
Desktop.org
|
|
@ -121,6 +121,7 @@ Also, Xresources are used to set =Xft= settings. Unfortunately, the DPI setting
|
|||
((string-equal hostname "eminence") 120)
|
||||
((string-equal hostname "violet") 120)
|
||||
((string-equal hostname "iris") 120)
|
||||
((string-equal hostname "weiss") 120)
|
||||
(t 96)))
|
||||
#+end_src
|
||||
|
||||
|
|
@ -130,13 +131,13 @@ Xft.dpi: <<get-dpi()>>
|
|||
** Themes
|
||||
A few programs I use to customize the apperance are listed below.
|
||||
|
||||
| Arch dependency | Description |
|
||||
|--------------------+-------------------------|
|
||||
| gtk-engine-murrine | My preferred GTK theme |
|
||||
| gtk-engines | |
|
||||
| papirus-icon-theme | My preferred Icon theme |
|
||||
| xsettingsd | X11 settings daemon |
|
||||
| gnome-themes-extra | |
|
||||
| Arch dependency | Description | Disabled |
|
||||
|--------------------+-------------------------+----------|
|
||||
| gtk-engine-murrine | My preferred GTK theme | t |
|
||||
| gtk-engines | | |
|
||||
| papirus-icon-theme | My preferred Icon theme | |
|
||||
| xsettingsd | X11 settings daemon | |
|
||||
| gnome-themes-extra | | |
|
||||
|
||||
[[https://github.com/derat/xsettingsd][xsettingsd]] is a lightweight daemon which configures X11 applications. It is launched with shepherd in the [[*Services][Services]] section.
|
||||
|
||||
|
|
@ -244,7 +245,7 @@ xss-lock -- i3lock -f -i /home/pavel/Pictures/lock-wallpaper.png &
|
|||
# Some apps that have to be launched only once.
|
||||
picom &
|
||||
# nm-applet &
|
||||
dunst &
|
||||
# dunst &
|
||||
copyq &
|
||||
|
||||
# Run the Emacs startup script as a session.
|
||||
|
|
@ -271,6 +272,9 @@ As of now, these are polybar, feh and, shepherd:
|
|||
(when (and (string-empty-p (shell-command-to-string "pgrep -u pavel shepherd"))
|
||||
(executable-find "shepherd"))
|
||||
(call-process "shepherd")))
|
||||
|
||||
(defun my/exwm-run-systemd ()
|
||||
(call-process "systemctl" nil nil nil "--user" "start" "wm-session.target"))
|
||||
#+end_src
|
||||
*** Pinentry
|
||||
The GUI pinentry doesn't work too well with EXWM because of issues with popup windows, so we will use the Emacs one.
|
||||
|
|
@ -1216,6 +1220,7 @@ And the EXWM config itself.
|
|||
(my/exwm-run-polybar)
|
||||
(my/exwm-set-wallpaper)
|
||||
(my/exwm-run-shepherd)
|
||||
(my/exwm-run-systemd)
|
||||
(my/run-in-background "gpgconf --reload gpg-agent")
|
||||
(when (my/is-arch)
|
||||
(my/run-in-background "set_layout")))
|
||||
|
|
@ -2231,6 +2236,8 @@ elif [ "$hostname" = "eminence" ]; then
|
|||
fi
|
||||
elif [ "$hostname" = "iris" ]; then
|
||||
TRAY_MONITOR="HDMI-1"
|
||||
elif [ "$hostname" = "weiss" ]; then
|
||||
TRAY_MONITOR="eDP-1"
|
||||
else
|
||||
TRAY_MONITOR="DP-1"
|
||||
fi
|
||||
|
|
@ -3293,7 +3300,7 @@ References:
|
|||
|
||||
### Misc/Advanced ###
|
||||
dmenu = /usr/bin/dmenu -p dunst:
|
||||
browser = /home/pavel/.guix-extra-profiles/browsers/browsers/bin/firefox
|
||||
browser = /user/bin/firefox
|
||||
always_run_script = true
|
||||
title = Dunst
|
||||
class = Dunst
|
||||
|
|
@ -3309,15 +3316,16 @@ References:
|
|||
mouse_middle_click = do_action
|
||||
mouse_right_click = close_all
|
||||
|
||||
[experimental]
|
||||
per_monitor_dpi = false
|
||||
|
||||
[shortcuts]
|
||||
### Shortcuts
|
||||
close = ctrl+space
|
||||
close_all = ctrl+shift+space
|
||||
history = ctrl+grave
|
||||
context = ctrl+shift+period
|
||||
|
||||
[experimental]
|
||||
per_monitor_dpi = false
|
||||
|
||||
|
||||
[urgency_low]
|
||||
background = <<get-color(name="bg-other", quote=1)>>
|
||||
frame_color = <<get-color(name="border", quote=1)>>
|
||||
|
|
@ -4373,14 +4381,33 @@ flatpak install -y --user flathub com.github.wwmm.pulseeffects
|
|||
flatpak install -y --user flathub chat.rocket.RocketChat
|
||||
#+end_example
|
||||
* Services
|
||||
:PROPERTIES:
|
||||
:header-args+: :tangle ~/.config/shepherd/init.scm
|
||||
:END:
|
||||
[[https://www.gnu.org/software/shepherd/manual/html_node/index.html][GNU Shepherd]] is a service management system for GNU Guix. I'll probably migrate to systemd since I'm not on Guix anymore.
|
||||
See [[https://wiki.archlinux.org/title/Systemd/User][systemd/User]] on Arch Wiki how to create user services.
|
||||
|
||||
| Arch dependency | Disabled |
|
||||
|-----------------+----------|
|
||||
| shepherd | t |
|
||||
After editing the services, run:
|
||||
#+begin_src bash
|
||||
systemctl --user daemon-reload
|
||||
#+end_src
|
||||
|
||||
It's required to enable them manually for now:
|
||||
#+begin_src bash
|
||||
systemctl --user enable --now nm-applet
|
||||
systemctl --user enable --now aw-qt
|
||||
systemctl --user enable --now deterred-mpd
|
||||
systemctl --user enable --now vnstat
|
||||
systemctl --user enable --now xsettingsd
|
||||
systemctl --user enable --now flameshot
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
|
||||
** Custom target
|
||||
Creating a custom target because otherwise systemd tries to launch everything before the WM is loaded.
|
||||
|
||||
#+begin_src conf :tangle .config/systemd/user/wm-session.target
|
||||
[Unit]
|
||||
Description=Window Manager Session
|
||||
After=graphical-session.target
|
||||
#+end_src
|
||||
|
||||
** Music
|
||||
| Category | Arch dependency |
|
||||
|
|
@ -4393,51 +4420,29 @@ flatpak install -y --user flathub chat.rocket.RocketChat
|
|||
| music | cuetools |
|
||||
| music | flac |
|
||||
|
||||
Music player daemon
|
||||
#+begin_src scheme
|
||||
(define mpd
|
||||
(make <service>
|
||||
#:provides '(mpd)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("mpd" "--no-daemon"))
|
||||
#:stop (make-kill-destructor)))
|
||||
#+begin_src conf :tangle .config/systemd/user/mpd.service
|
||||
[Unit]
|
||||
Description=Music Player Daemon
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/mpd --no-daemon
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
#+end_src
|
||||
|
||||
MPD watcher
|
||||
#+begin_src scheme
|
||||
(define sqrt-data-agent-mpd
|
||||
(make <service>
|
||||
#:provides '(sqrt-data-agent-mpd)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("sqrt_data_agent_mpd"))
|
||||
#:stop (make-kill-destructor)
|
||||
#:requires '(mpd)))
|
||||
#+begin_src conf :tangle .config/systemd/user/deterred-mpd.service
|
||||
[Unit]
|
||||
Description=DETERRED MPD Watcher
|
||||
ConditionPathExists=/home/pavel/10-19 Code/13 Other Projects/13.02 sqrt-data/13.02.R Repos/13.02.R.05 deterred/watchers/deterred-mpd.py
|
||||
|
||||
(define deterred-mpd
|
||||
(make <service>
|
||||
#:provides '(deterred-mpd)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor
|
||||
'("python" "/home/pavel/10-19 Code/13 Other Projects/13.02 sqrt-data/13.02.R Repos/13.02.R.05 deterred/watchers/deterred-mpd.py"
|
||||
"--db" "/home/pavel/.deterred/database.db"))
|
||||
#:stop (make-kill-destructor)
|
||||
#:requires '(mpd)))
|
||||
[Service]
|
||||
ExecStart=/usr/bin/python "/home/pavel/10-19 Code/13 Other Projects/13.02 sqrt-data/13.02.R Repos/13.02.R.05 deterred/watchers/deterred-mpd.py" "--db" "/home/pavel/.deterred/database.db"
|
||||
|
||||
[Install]
|
||||
WantedBy=wm-session.target
|
||||
#+end_src
|
||||
** GNU Mcron
|
||||
[[https://www.gnu.org/software/mcron/][GNU Mcron]] is a replacement for cron, written in Scheme.
|
||||
|
||||
| Arch dependency | Disabled |
|
||||
|-----------------+----------|
|
||||
| mcron | t |
|
||||
|
||||
#+begin_src scheme
|
||||
(define mcron
|
||||
(make <service>
|
||||
#:provides '(mcron)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("mcron"))
|
||||
#:stop (make-kill-destructor)))
|
||||
#+end_src
|
||||
** ActivityWatch
|
||||
[[https://activitywatch.net/][ActivityWatch]] is a FOSS time tracker. It tracks screen and application usage and has integrations with browsers, Emacs, etc.
|
||||
|
||||
|
|
@ -4445,212 +4450,65 @@ MPD watcher
|
|||
|-------------------|
|
||||
| activitywatch-bin |
|
||||
|
||||
aw-server
|
||||
#+begin_src scheme
|
||||
(define aw-server
|
||||
(make <service>
|
||||
#:provides '(aw-server)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("aw-server"))
|
||||
#:stop (make-kill-destructor)))
|
||||
#+begin_src conf :tangle .config/systemd/user/aw-qt.service
|
||||
[Unit]
|
||||
Description=ActivityWatch
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/aw-qt
|
||||
|
||||
[Install]
|
||||
WantedBy=wm-session.target
|
||||
#+end_src
|
||||
|
||||
=aw-watcher-afk= has some problems with statup, so there is a wrapper script
|
||||
|
||||
#+begin_src sh :tangle ~/bin/scripts/aw-watcher-afk-wrapper
|
||||
sleep 5
|
||||
aw-watcher-afk
|
||||
#+end_src
|
||||
|
||||
aw-watcher-afk
|
||||
#+begin_src scheme
|
||||
(define aw-watcher-afk
|
||||
(make <service>
|
||||
#:provides '(aw-watcher-afk)
|
||||
#:requires '(aw-server)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("/home/pavel/bin/scripts/aw-watcher-afk-wrapper"))
|
||||
#:stop (make-kill-destructor)))
|
||||
#+end_src
|
||||
|
||||
aw-watcher-window
|
||||
#+begin_src scheme
|
||||
(define aw-watcher-window
|
||||
(make <service>
|
||||
#:provides '(aw-watcher-window)
|
||||
#:requires '(aw-server)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("aw-watcher-window"))
|
||||
#:stop (make-kill-destructor)))
|
||||
#+end_src
|
||||
** PulseEffects
|
||||
#+begin_src scheme
|
||||
(define pulseeffects
|
||||
(make <service>
|
||||
#:provides '(pulseeffects)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("flatpak" "run" "com.github.wwmm.pulseeffects" "--gapplication-service"))
|
||||
#:stop (make-kill-destructor)))
|
||||
#+end_src
|
||||
** xsettingsd
|
||||
#+begin_src scheme
|
||||
(define xsettingsd
|
||||
(make <service>
|
||||
#:provides '(xsettingsd)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("xsettingsd"))
|
||||
#:stop (make-kill-destructor)))
|
||||
#+begin_src conf :tangle .config/systemd/user/xsettingsd.service
|
||||
[Unit]
|
||||
Description=X Settings Daemon
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/xsettingsd
|
||||
|
||||
[Install]
|
||||
WantedBy=wm-session.target
|
||||
#+end_src
|
||||
** nm-applet
|
||||
#+begin_src scheme
|
||||
(define nm-applet
|
||||
(make <service>
|
||||
#:provides '(nm-applet)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("nm-applet"))
|
||||
#:stop (make-kill-destructor)))
|
||||
#+end_src
|
||||
** Discord rich presence
|
||||
#+begin_src conf :tangle .config/systemd/user/nm-applet.service
|
||||
[Unit]
|
||||
Description=Network Manager Applet
|
||||
|
||||
References:
|
||||
- [[https://github.com/flathub/com.discordapp.Discord/wiki/Rich-Precense-(discord-rpc)][Rich Precense (discord rpc)]]
|
||||
[Service]
|
||||
ExecStart=/usr/bin/nm-applet
|
||||
|
||||
#+begin_src scheme
|
||||
(define discord-rich-presence
|
||||
(make <service>
|
||||
#:provides '(discord-rich-presence)
|
||||
#:one-shot? #t
|
||||
#:start (make-system-constructor "ln -sf {app/com.discordapp.Discord,$XDG_RUNTIME_DIR}/discord-ipc-0")))
|
||||
#+end_src
|
||||
** Polkit Authentication agent
|
||||
Launch an authentication agent. Necessary for stuff like =pkexec=. I suspect I'm not doing that the intended way, but it seems to work.
|
||||
|
||||
#+begin_src scheme
|
||||
(define polkit-gnome
|
||||
(make <service>
|
||||
#:provides '(polkit-gnome)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("/lib/polkit-gnome/polkit-gnome-authentication-agent-1"))
|
||||
#:stop (make-kill-destructor)))
|
||||
#+end_src
|
||||
** Xmodmap
|
||||
#+begin_src scheme
|
||||
(define xmodmap
|
||||
(make <service>
|
||||
#:provides '(xmodmap)
|
||||
#:one-shot? #t
|
||||
#:start (make-system-constructor "xmodmap /home/pavel/.Xmodmap")))
|
||||
#+end_src
|
||||
** VPN
|
||||
Run my [[file:Guix.org::*OpenVPN][OpenVPN setup]]. Not lauching this automatially, as it requires an active connection.
|
||||
|
||||
#+begin_src scheme
|
||||
(define vpn
|
||||
(make <service>
|
||||
#:provides '(vpn)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("/home/pavel/bin/scripts/vpn-start"))
|
||||
#:stop (make-kill-destructor)))
|
||||
#+end_src
|
||||
** Davmail
|
||||
#+begin_src scheme
|
||||
(define davmail
|
||||
(make <service>
|
||||
#:provides '(davmail)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("/home/pavel/bin/davmail"))
|
||||
#:stop (make-kill-destructor)))
|
||||
[Install]
|
||||
WantedBy=wm-session.target
|
||||
#+end_src
|
||||
** vnstatd
|
||||
#+begin_src scheme
|
||||
(define vnstatd
|
||||
(make <service>
|
||||
#:provides '(vnstatd)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("vnstatd" "-n"))
|
||||
#:stop (make-kill-destructor)))
|
||||
|
||||
| Arch dependency |
|
||||
|-----------------|
|
||||
| vnstat |
|
||||
|
||||
#+begin_src conf :tangle .config/systemd/user/vnstat.service
|
||||
[Unit]
|
||||
Description=vnStat network monitor
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/vnstatd
|
||||
|
||||
[Install]
|
||||
WantedBy=wm-session.target
|
||||
#+end_src
|
||||
** opensnitch
|
||||
[[https://github.com/evilsocket/opensnitch][opensnitch]] is a linux firewall.
|
||||
** flameshot
|
||||
#+begin_src conf :tangle .config/systemd/user/flameshot.service
|
||||
[Unit]
|
||||
Description=Flameshot
|
||||
|
||||
=sudoers= has to be modified this to work.
|
||||
#+begin_src scheme
|
||||
(define opensnitchd
|
||||
(make <service>
|
||||
#:provides '(opensnitchd)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("sudo" "opensnitchd"))
|
||||
#:stop (make-kill-destructor)))
|
||||
[Service]
|
||||
ExecStart=/usr/bin/flameshot
|
||||
|
||||
(define opensnitch-ui
|
||||
(make <service>
|
||||
#:provides '(opensnitch-ui)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("sudo" "opensnitch-ui"))
|
||||
#:stop (make-kill-destructor)))
|
||||
#+end_src
|
||||
** ollama
|
||||
#+begin_src scheme
|
||||
(define ollama
|
||||
(make <service>
|
||||
#:provides '(ollama)
|
||||
#:respawn? #t
|
||||
#:start (make-forkexec-constructor '("ollama" "serve"))
|
||||
#:stop (make-kill-destructor)))
|
||||
#+end_src
|
||||
|
||||
** Shepherd config
|
||||
For some reason, running start on a one-shot service started to hang shepherd, not sure why... Turining these off for now.
|
||||
|
||||
Register services:
|
||||
#+begin_src scheme
|
||||
(register-services
|
||||
mpd
|
||||
sqrt-data-agent-mpd
|
||||
deterred-mpd
|
||||
mcron
|
||||
aw-server
|
||||
aw-watcher-afk
|
||||
aw-watcher-window
|
||||
pulseeffects
|
||||
xsettingsd
|
||||
;; discord-rich-presence
|
||||
polkit-gnome
|
||||
vpn
|
||||
davmail
|
||||
;; xmodmap
|
||||
nm-applet
|
||||
vnstatd
|
||||
;; opensnitchd
|
||||
;; opensnitch-ui
|
||||
ollama)
|
||||
#+end_src
|
||||
|
||||
Daemonize shepherd
|
||||
#+begin_src scheme
|
||||
(action 'shepherd 'daemonize)
|
||||
#+end_src
|
||||
|
||||
Run services
|
||||
#+begin_src scheme
|
||||
(for-each start '(mpd
|
||||
sqrt-data-agent-mpd
|
||||
deterred-mpd
|
||||
mcron
|
||||
aw-server
|
||||
aw-watcher-afk
|
||||
aw-watcher-window
|
||||
pulseeffects
|
||||
xsettingsd
|
||||
;; discord-rich-presence
|
||||
;; polkit-gnome
|
||||
davmail
|
||||
;; ; xmodmap
|
||||
;; nm-applet
|
||||
vnstatd
|
||||
;; opensnitchd
|
||||
;; opensnitch-ui
|
||||
))
|
||||
[Install]
|
||||
WantedBy=wm-session.target
|
||||
#+end_src
|
||||
* Arch settings
|
||||
Other desktop programs I use are listed below.
|
||||
|
|
|
|||
23
Emacs.org
23
Emacs.org
|
|
@ -11420,6 +11420,7 @@ Or you can load up Element for a moment to see what the mention was, if that's e
|
|||
| Arch dependency | Disabled |
|
||||
|--------------------+----------|
|
||||
| emacs-telega-sever | t |
|
||||
| telegram-tdlib | |
|
||||
| ttf-unifont | |
|
||||
| gnu-free-fonts | |
|
||||
|
||||
|
|
@ -11436,10 +11437,8 @@ Or you can load up Element for a moment to see what the mention was, if that's e
|
|||
:background (my/color-value 'fg))
|
||||
(telega-entity-type-spoiler :background (my/color-value 'base8)))
|
||||
:config
|
||||
(when (file-exists-p "~/.guix-extra-profiles/emacs/emacs/bin/telega-server")
|
||||
(setq telega-server-command
|
||||
(expand-file-name
|
||||
"~/.guix-extra-profiles/emacs/emacs/bin/telega-server")))
|
||||
(setq telega-server-libs-prefix "/usr")
|
||||
|
||||
(setq telega-emoji-use-images nil)
|
||||
(setq telega-chat-fill-column 80)
|
||||
(setq telega-completing-read-function #'completing-read)
|
||||
|
|
@ -11463,18 +11462,6 @@ Or you can load up Element for a moment to see what the mention was, if that's e
|
|||
telega-webpage-mode 3 "telega"))
|
||||
#+end_src
|
||||
|
||||
Building =telega-server= can create problems. On Guix I can use the Guix package definition, on termux just build manually.
|
||||
#+begin_src emacs-lisp
|
||||
(defun my/telega-server-build ()
|
||||
(interactive)
|
||||
(setq telega-server-libs-prefix
|
||||
(if (executable-find "guix")
|
||||
(string-trim
|
||||
(shell-command-to-string "guix build tdlib"))
|
||||
(expand-file-name "~/bin/td/build/res/usr/local")))
|
||||
(telega-server-build "CC=gcc"))
|
||||
#+end_src
|
||||
|
||||
Setting up the modeline. The default mode string doesn't look great with my other modeline modules, so I override that.
|
||||
#+begin_src emacs-lisp
|
||||
(add-hook 'telega-load-hook #'telega-mode-line-mode)
|
||||
|
|
@ -12795,6 +12782,10 @@ The return value is a list of commands as defined by
|
|||
#+RESULTS:
|
||||
: my/index--mega-commands
|
||||
**** rclone
|
||||
| Arch dependency |
|
||||
|-----------------|
|
||||
| rclone |
|
||||
|
||||
This section wraps the [[https://rclone.org/bisync/][bisync]] command for rclone, which implements two-way sync.
|
||||
|
||||
The general approach is:
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ elif [ "$hostname" = "eminence" ]; then
|
|||
fi
|
||||
elif [ "$hostname" = "iris" ]; then
|
||||
TRAY_MONITOR="HDMI-1"
|
||||
elif [ "$hostname" = "weiss" ]; then
|
||||
TRAY_MONITOR="eDP-1"
|
||||
else
|
||||
TRAY_MONITOR="DP-1"
|
||||
fi
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue