mirror of
https://github.com/SqrtMinusOne/dotfiles.git
synced 2025-12-10 19:23:03 +03:00
*: move to arch v1
This commit is contained in:
parent
b0837527ef
commit
31db63c565
24 changed files with 774 additions and 554 deletions
6
.bashrc
6
.bashrc
|
|
@ -29,12 +29,8 @@ xhost +local:root > /dev/null 2>&1
|
||||||
# Startup & environment:5 ends here
|
# Startup & environment:5 ends here
|
||||||
|
|
||||||
# [[file:Console.org::*Startup & environment][Startup & environment:6]]
|
# [[file:Console.org::*Startup & environment][Startup & environment:6]]
|
||||||
# export MANPAGER="sh -c 'sed -e s/.\\\\x08//g | bat -l man -p'"
|
|
||||||
# Startup & environment:6 ends here
|
|
||||||
|
|
||||||
# [[file:Console.org::*Startup & environment][Startup & environment:7]]
|
|
||||||
[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/bash"
|
[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/bash"
|
||||||
# Startup & environment:7 ends here
|
# Startup & environment:6 ends here
|
||||||
|
|
||||||
# [[file:Console.org::*Launch fish][Launch fish:1]]
|
# [[file:Console.org::*Launch fish][Launch fish:1]]
|
||||||
use_fish=true
|
use_fish=true
|
||||||
|
|
|
||||||
11
.config/metapac/config.toml
Normal file
11
.config/metapac/config.toml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
hostname_enabled_backends_enabled = false
|
||||||
|
enabled_backends = ["arch"]
|
||||||
|
hostname_groups_enabled = true
|
||||||
|
|
||||||
|
[hostname_groups]
|
||||||
|
kek = ["browsers"]
|
||||||
|
archlinux = ["system","office","music","mail","latex","emacs","dev","desktop-rofi","desktop-polybar","desktop-misc","desktop","console","browsers"]
|
||||||
|
|
||||||
|
|
||||||
|
[arch]
|
||||||
|
package_manager = "paru"
|
||||||
3
.config/metapac/groups/browsers.toml
Normal file
3
.config/metapac/groups/browsers.toml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
arch = [
|
||||||
|
"firefox",
|
||||||
|
"ungoogled-chromium-bin",]
|
||||||
34
.config/metapac/groups/console.toml
Normal file
34
.config/metapac/groups/console.toml
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
arch = [
|
||||||
|
"pv",
|
||||||
|
"man-db",
|
||||||
|
"aria2",
|
||||||
|
"openssl",
|
||||||
|
"ncdu",
|
||||||
|
"megacmd",
|
||||||
|
"jless",
|
||||||
|
"direnv",
|
||||||
|
"git-lfs",
|
||||||
|
"sshfs",
|
||||||
|
"tokei",
|
||||||
|
"unrar",
|
||||||
|
"unzip",
|
||||||
|
"zip",
|
||||||
|
"pass",
|
||||||
|
"7zip",
|
||||||
|
"fzf",
|
||||||
|
"neofetch",
|
||||||
|
"nethogs",
|
||||||
|
"htop",
|
||||||
|
"eza",
|
||||||
|
"ncurses",
|
||||||
|
"bottom",
|
||||||
|
"alacritty",
|
||||||
|
"xclip",
|
||||||
|
"tmuxp",
|
||||||
|
"tmux",
|
||||||
|
"starship",
|
||||||
|
"nushell",
|
||||||
|
"shell-color-scripts-git",
|
||||||
|
"fish",
|
||||||
|
"xorg-xhost",
|
||||||
|
"xorg-xrdb",]
|
||||||
26
.config/metapac/groups/desktop-misc.toml
Normal file
26
.config/metapac/groups/desktop-misc.toml
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
arch = [
|
||||||
|
"android-file-transfer",
|
||||||
|
"remmina",
|
||||||
|
"noto-fonts-emoji",
|
||||||
|
"telegram-desktop",
|
||||||
|
"bluez",
|
||||||
|
"xorg-xev",
|
||||||
|
"gparted",
|
||||||
|
"gnome-disk-utility",
|
||||||
|
"anydesk-bin",
|
||||||
|
"qbittorrent",
|
||||||
|
"gnome-font-viewer",
|
||||||
|
"xdg-utils",
|
||||||
|
"thunar",
|
||||||
|
"copyq",
|
||||||
|
"feh",
|
||||||
|
"polkit-gnome",
|
||||||
|
"fontconfig",
|
||||||
|
"xorg-xmodmap",
|
||||||
|
"network-manager-applet",
|
||||||
|
"pavucontrol",
|
||||||
|
"light",
|
||||||
|
"arandr",
|
||||||
|
"xorg-xprop",
|
||||||
|
"xss-lock",
|
||||||
|
"xorg-xinit",]
|
||||||
8
.config/metapac/groups/desktop-polybar.toml
Normal file
8
.config/metapac/groups/desktop-polybar.toml
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
arch = [
|
||||||
|
"dateutils",
|
||||||
|
"sunwait",
|
||||||
|
"jq",
|
||||||
|
"curl",
|
||||||
|
"bind",
|
||||||
|
"noto-fonts-emoji",
|
||||||
|
"polybar",]
|
||||||
5
.config/metapac/groups/desktop-rofi.toml
Normal file
5
.config/metapac/groups/desktop-rofi.toml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
arch = [
|
||||||
|
"xorg-xset",
|
||||||
|
"rofi-pass",
|
||||||
|
"rofimoji",
|
||||||
|
"rofi",]
|
||||||
18
.config/metapac/groups/desktop.toml
Normal file
18
.config/metapac/groups/desktop.toml
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
arch = [
|
||||||
|
"activitywatch-bin",
|
||||||
|
"xdg-desktop-portal",
|
||||||
|
"flatpak",
|
||||||
|
"picom",
|
||||||
|
"libnotify",
|
||||||
|
"dunst",
|
||||||
|
"flameshot",
|
||||||
|
"i3lock",
|
||||||
|
"i3-wm",
|
||||||
|
"xorg-xinput",
|
||||||
|
"xorg-xgamma",
|
||||||
|
"xorg-xrandr",
|
||||||
|
"gnome-themes-extra",
|
||||||
|
"xsettingsd",
|
||||||
|
"papirus-icon-theme",
|
||||||
|
"gtk-engines",
|
||||||
|
"gtk-engine-murrine",]
|
||||||
30
.config/metapac/groups/dev.toml
Normal file
30
.config/metapac/groups/dev.toml
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
arch = [
|
||||||
|
"rust",
|
||||||
|
"git",
|
||||||
|
"wireshark-qt",
|
||||||
|
"socat",
|
||||||
|
"python-build",
|
||||||
|
"python-virtualenv",
|
||||||
|
"python-pip",
|
||||||
|
"python",
|
||||||
|
"php",
|
||||||
|
"gource",
|
||||||
|
"git-lfs",
|
||||||
|
"make",
|
||||||
|
"hugo",
|
||||||
|
"libfaketime",
|
||||||
|
"lua",
|
||||||
|
"cmake",
|
||||||
|
"gcc",
|
||||||
|
"pkgconf",
|
||||||
|
"gopls",
|
||||||
|
"go",
|
||||||
|
"jdk21-openjdk",
|
||||||
|
"nodejs",
|
||||||
|
"git-filter-repo",
|
||||||
|
"libvirt",
|
||||||
|
"virt-manager",
|
||||||
|
"postgresql",
|
||||||
|
"docker",
|
||||||
|
"pandoc-cli",
|
||||||
|
"micromamba-bin",]
|
||||||
19
.config/metapac/groups/emacs.toml
Normal file
19
.config/metapac/groups/emacs.toml
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
arch = [
|
||||||
|
"texinfo",
|
||||||
|
"the_silver_searcher",
|
||||||
|
"ripgrep",
|
||||||
|
"hledger",
|
||||||
|
"gnu-free-fonts",
|
||||||
|
"ttf-unifont",
|
||||||
|
"yt-dlp",
|
||||||
|
"mpv",
|
||||||
|
"python-youtube-transcript-api",
|
||||||
|
"rdrview",
|
||||||
|
"graphviz",
|
||||||
|
"python-isort",
|
||||||
|
"python-black",
|
||||||
|
"yapf",
|
||||||
|
"plantuml",
|
||||||
|
"difftastic",
|
||||||
|
"xkb-switch",
|
||||||
|
"emacs",]
|
||||||
22
.config/metapac/groups/latex.toml
Normal file
22
.config/metapac/groups/latex.toml
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
arch = [
|
||||||
|
"ttf-ms-fonts",
|
||||||
|
"python-pygments",
|
||||||
|
"biber",
|
||||||
|
"texlab",
|
||||||
|
"texlive-xetex",
|
||||||
|
"texlive-publishers",
|
||||||
|
"texlive-pstricks",
|
||||||
|
"texlive-plaingeneric",
|
||||||
|
"texlive-pictures",
|
||||||
|
"texlive-metapost",
|
||||||
|
"texlive-mathscience",
|
||||||
|
"texlive-latexrecommended",
|
||||||
|
"texlive-latexextra",
|
||||||
|
"texlive-latex",
|
||||||
|
"texlive-humanities",
|
||||||
|
"texlive-games",
|
||||||
|
"texlive-formatsextra",
|
||||||
|
"texlive-fontutils",
|
||||||
|
"texlive-binextra",
|
||||||
|
"texlive-bibtexextra",
|
||||||
|
"texlive-basic",]
|
||||||
7
.config/metapac/groups/mail.toml
Normal file
7
.config/metapac/groups/mail.toml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
arch = [
|
||||||
|
"notmuch",
|
||||||
|
"msmtp",
|
||||||
|
"parallel",
|
||||||
|
"notmuch",
|
||||||
|
"offlineimap",
|
||||||
|
"lieer-git",]
|
||||||
8
.config/metapac/groups/music.toml
Normal file
8
.config/metapac/groups/music.toml
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
arch = [
|
||||||
|
"flac",
|
||||||
|
"cuetools",
|
||||||
|
"shntool",
|
||||||
|
"mpc",
|
||||||
|
"picard",
|
||||||
|
"ncmpcpp",
|
||||||
|
"mpd",]
|
||||||
13
.config/metapac/groups/office.toml
Normal file
13
.config/metapac/groups/office.toml
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
arch = [
|
||||||
|
"obs-studio",
|
||||||
|
"okular",
|
||||||
|
"inkscape",
|
||||||
|
"kdenlive",
|
||||||
|
"ffmpeg",
|
||||||
|
"krita",
|
||||||
|
"gimp",
|
||||||
|
"libreoffice-fresh",
|
||||||
|
"zathura-djvu",
|
||||||
|
"zathura-pdf-mupdf",
|
||||||
|
"zathura-ps",
|
||||||
|
"zathura",]
|
||||||
35
.config/metapac/groups/system.toml
Normal file
35
.config/metapac/groups/system.toml
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
arch = [
|
||||||
|
"xf86-video-ati",
|
||||||
|
"xf86-video-amdgpu",
|
||||||
|
"vulkan-radeon",
|
||||||
|
"nvidia-utils",
|
||||||
|
"vulkan-intel",
|
||||||
|
"intel-media-driver",
|
||||||
|
"libva-intel-driver",
|
||||||
|
"zram-generator",
|
||||||
|
"yadm",
|
||||||
|
"wpa_supplicant",
|
||||||
|
"wireless_tools",
|
||||||
|
"wget",
|
||||||
|
"xterm",
|
||||||
|
"vim",
|
||||||
|
"smartmontools",
|
||||||
|
"pipewire-jack",
|
||||||
|
"pipewire-pulse",
|
||||||
|
"pipewire-alsa",
|
||||||
|
"pipewire-audio",
|
||||||
|
"pipewire",
|
||||||
|
"paru",
|
||||||
|
"pacman-contrib",
|
||||||
|
"openssh",
|
||||||
|
"metapac",
|
||||||
|
"nano",
|
||||||
|
"linux-firmware",
|
||||||
|
"linux",
|
||||||
|
"lightdm-gtk-greeter",
|
||||||
|
"lightdm",
|
||||||
|
"iwd",
|
||||||
|
"grub",
|
||||||
|
"decman",
|
||||||
|
"base-devel",
|
||||||
|
"base",]
|
||||||
|
|
@ -355,7 +355,7 @@ With ARG, repeats or can move backward if negative."
|
||||||
name ".csv")
|
name ".csv")
|
||||||
"orgtbl-to-csv")))))
|
"orgtbl-to-csv")))))
|
||||||
|
|
||||||
(defun my/extract-guix-dependencies (&optional category)
|
(defun my/extract-arch-dependencies (&optional category)
|
||||||
(let ((dependencies '()))
|
(let ((dependencies '()))
|
||||||
(org-table-map-tables
|
(org-table-map-tables
|
||||||
(lambda ()
|
(lambda ()
|
||||||
|
|
@ -368,7 +368,7 @@ With ARG, repeats or can move backward if negative."
|
||||||
nil
|
nil
|
||||||
(mapcar #'substring-no-properties (nth 0 table))
|
(mapcar #'substring-no-properties (nth 0 table))
|
||||||
:test (lambda (_ elem)
|
:test (lambda (_ elem)
|
||||||
(string-match-p "[G|g]uix.*dep" elem))))
|
(string-match-p "[A|a]rch.*dep" elem))))
|
||||||
(category-name-index
|
(category-name-index
|
||||||
(cl-position
|
(cl-position
|
||||||
nil
|
nil
|
||||||
|
|
@ -380,7 +380,13 @@ With ARG, repeats or can move backward if negative."
|
||||||
nil
|
nil
|
||||||
(mapcar #'substring-no-properties (nth 0 table))
|
(mapcar #'substring-no-properties (nth 0 table))
|
||||||
:test (lambda (_ elem)
|
:test (lambda (_ elem)
|
||||||
(string-match-p ".*[D|d]isabled.*" elem)))))
|
(string-match-p ".*[D|d]isabled.*" elem))))
|
||||||
|
(source-index
|
||||||
|
(cl-position
|
||||||
|
nil
|
||||||
|
(mapcar #'substring-no-properties (nth 0 table))
|
||||||
|
:test (lambda (_ elem)
|
||||||
|
(string-match-p ".*[S|s]ource.*" elem)))))
|
||||||
(when dep-name-index
|
(when dep-name-index
|
||||||
(dolist (elem (cdr table))
|
(dolist (elem (cdr table))
|
||||||
(when
|
(when
|
||||||
|
|
@ -402,14 +408,26 @@ With ARG, repeats or can move backward if negative."
|
||||||
(string-empty-p (nth disabled-name-index elem))))
|
(string-empty-p (nth disabled-name-index elem))))
|
||||||
(add-to-list
|
(add-to-list
|
||||||
'dependencies
|
'dependencies
|
||||||
(substring-no-properties (nth dep-name-index elem)))))))))
|
(cons
|
||||||
|
(substring-no-properties (nth dep-name-index elem))
|
||||||
|
(when source-index
|
||||||
|
(let ((source (nth source-index elem)))
|
||||||
|
(unless (string-empty-p source)
|
||||||
|
source)))))))))))
|
||||||
dependencies))
|
dependencies))
|
||||||
|
|
||||||
(defun my/format-guix-dependencies (&optional category)
|
(defun my/format-arch-dependencies (&optional category)
|
||||||
(mapconcat
|
(let ((data (my/extract-arch-dependencies category)))
|
||||||
(lambda (e) (concat "\"" e "\""))
|
(with-temp-buffer
|
||||||
(my/extract-guix-dependencies category)
|
(insert
|
||||||
"\n"))
|
(json-encode
|
||||||
|
(mapcar
|
||||||
|
(lambda (group)
|
||||||
|
(cons (car group)
|
||||||
|
(mapcar #'car (cdr group))))
|
||||||
|
(seq-group-by #'cdr data))))
|
||||||
|
(json-pretty-print-buffer)
|
||||||
|
(buffer-string))))
|
||||||
|
|
||||||
(setq my/org-config-files
|
(setq my/org-config-files
|
||||||
(mapcar
|
(mapcar
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
;;; -*- lexical-binding: t -*-
|
;;; -*- lexical-binding: t -*-
|
||||||
(use-package telega
|
(use-package telega
|
||||||
;; :straight (:type built-in)
|
|
||||||
;; For now emacs-telega-server is compatible with the latest telega.el
|
|
||||||
:straight t
|
:straight t
|
||||||
:commands (telega)
|
:commands (telega)
|
||||||
:init
|
:init
|
||||||
|
|
|
||||||
81
.profile
81
.profile
|
|
@ -22,14 +22,6 @@ fi
|
||||||
# TZ='Asia/Karachi'; export TZ
|
# TZ='Asia/Karachi'; export TZ
|
||||||
# Environment:5 ends here
|
# Environment:5 ends here
|
||||||
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
# [[file:Console.org::*Environment][Environment:6]]
|
|
||||||
if [ -f "/home/pavel/.no-guix" ]; then
|
|
||||||
export NO_GUIX=true
|
|
||||||
export PATH=$(echo $PATH | tr ":" "\n" | grep -vE "guix|nix|gnu" | tr "\n" ":")
|
|
||||||
fi
|
|
||||||
# Environment:6 ends here
|
|
||||||
|
|
||||||
# [[file:Console.org::*My paths][My paths:1]]
|
# [[file:Console.org::*My paths][My paths:1]]
|
||||||
if [ -d "$HOME/bin" ] ; then
|
if [ -d "$HOME/bin" ] ; then
|
||||||
export PATH="$HOME/bin:$PATH"
|
export PATH="$HOME/bin:$PATH"
|
||||||
|
|
@ -41,15 +33,7 @@ if [ -d "$HOME/.local/bin" ] ; then
|
||||||
fi
|
fi
|
||||||
# My paths:1 ends here
|
# My paths:1 ends here
|
||||||
|
|
||||||
# [[file:Console.org::*SSL Certs][SSL Certs:1]]
|
#!/usr/bin/env bash
|
||||||
if [ -d "$HOME/.guix-extra-profiles" ] ; then
|
|
||||||
export SSL_CERT_DIR="$HOME/.guix-extra-profiles/system/system/etc/ssl/certs/"
|
|
||||||
export SSL_CERT_FILE="$HOME/.guix-extra-profiles/system/system/etc/ssl/certs/ca-certificates.crt"
|
|
||||||
export GIT_SSL_CAINFO="$SSL_CERT_FILE"
|
|
||||||
export CURL_CA_BUNDLE="$SSL_CERT_FILE"
|
|
||||||
fi
|
|
||||||
# SSL Certs:1 ends here
|
|
||||||
|
|
||||||
# [[file:Console.org::*ssh-agent][ssh-agent:1]]
|
# [[file:Console.org::*ssh-agent][ssh-agent:1]]
|
||||||
SSH_AGENT_DIR="/tmp"
|
SSH_AGENT_DIR="/tmp"
|
||||||
|
|
||||||
|
|
@ -66,43 +50,13 @@ if [[ ! -f "$SSH_AUTH_SOCK" ]]; then
|
||||||
fi
|
fi
|
||||||
# ssh-agent:1 ends here
|
# ssh-agent:1 ends here
|
||||||
|
|
||||||
# [[file:Console.org::*Guix settings][Guix settings:1]]
|
# [[file:Console.org::*Misc settings][Misc settings:1]]
|
||||||
if [ -z "$IS_ANDROID" ] && [ -z "$NO_GUIX" ] ; then
|
|
||||||
GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles
|
|
||||||
for i in $GUIX_EXTRA_PROFILES/*; do
|
|
||||||
profile=$i/$(basename "$i")
|
|
||||||
if [ -f "$profile"/etc/profile ]; then
|
|
||||||
GUIX_PROFILE="$profile"
|
|
||||||
. "$GUIX_PROFILE"/etc/profile
|
|
||||||
fi
|
|
||||||
if [ -d "$profile"/share/man ]; then
|
|
||||||
if command -v manpath >/dev/null 2>/dev/null; then
|
|
||||||
export MANPATH="${MANPATH:-$(manpath)}:$profile/share/man"
|
|
||||||
else
|
|
||||||
export MANPATH="${MANPATH}:$profile/share/man"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
export XDG_DATA_DIRS="$XDG_DATA_DIRS:$profile/share"
|
|
||||||
unset profile
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
# Guix settings:1 ends here
|
|
||||||
|
|
||||||
# [[file:Console.org::*Guix settings][Guix settings:2]]
|
|
||||||
export JUPYTER_CONFIG_DIR=$HOME/.config/jupyter
|
export JUPYTER_CONFIG_DIR=$HOME/.config/jupyter
|
||||||
# Guix settings:2 ends here
|
# Misc settings:1 ends here
|
||||||
|
|
||||||
# [[file:Console.org::*Guix settings][Guix settings:3]]
|
# [[file:Console.org::*Misc settings][Misc settings:2]]
|
||||||
export GUIX_PACKAGE_PATH=~/guix-packages
|
|
||||||
# Guix settings:3 ends here
|
|
||||||
|
|
||||||
# [[file:Console.org::*Guix settings][Guix settings:4]]
|
|
||||||
export GUIX_LOCPATH=$HOME/.guix-extra-profiles/console/console/lib/locale
|
|
||||||
# Guix settings:4 ends here
|
|
||||||
|
|
||||||
# [[file:Console.org::*Guix settings][Guix settings:5]]
|
|
||||||
export GIO_EXTRA_MODULES=""
|
export GIO_EXTRA_MODULES=""
|
||||||
# Guix settings:5 ends here
|
# Misc settings:2 ends here
|
||||||
|
|
||||||
# [[file:Console.org::*Other package managers][Other package managers:1]]
|
# [[file:Console.org::*Other package managers][Other package managers:1]]
|
||||||
if [ -d "$HOME/.cask" ]; then
|
if [ -d "$HOME/.cask" ]; then
|
||||||
|
|
@ -125,33 +79,10 @@ if [ -e /home/pavel/.nix-profile/etc/profile.d/nix.sh ] && [ -z "$NO_GUIX" ] ; t
|
||||||
# Other package managers:3 ends here
|
# Other package managers:3 ends here
|
||||||
|
|
||||||
# [[file:Console.org::*Other package managers][Other package managers:4]]
|
# [[file:Console.org::*Other package managers][Other package managers:4]]
|
||||||
if [ -d "$HOME/.guix-extra-profiles/desktop-misc" ] && [ -z "$NO_GUIX" ] ; then
|
|
||||||
export FONTCONFIG_PATH="$HOME/.guix-extra-profiles/desktop-misc/desktop-misc/etc/fonts"
|
|
||||||
fi
|
|
||||||
# Other package managers:4 ends here
|
|
||||||
|
|
||||||
# [[file:Console.org::*Other package managers][Other package managers:5]]
|
|
||||||
if [ -d "$HOME/.nix-profile" ] && [ -z "$NO_GUIX" ]; then
|
|
||||||
export XDG_DATA_DIRS="$XDG_DATA_DIRS:$HOME/.nix-profile/share/applications"
|
|
||||||
fi
|
|
||||||
# Other package managers:5 ends here
|
|
||||||
|
|
||||||
# [[file:Console.org::*Other package managers][Other package managers:6]]
|
|
||||||
if [ -d "$HOME/bin/gradle/gradle-9.0.0" ]; then
|
if [ -d "$HOME/bin/gradle/gradle-9.0.0" ]; then
|
||||||
export PATH="$HOME/bin/gradle/gradle-9.0.0/bin:$PATH"
|
export PATH="$HOME/bin/gradle/gradle-9.0.0/bin:$PATH"
|
||||||
fi
|
fi
|
||||||
# Other package managers:6 ends here
|
# Other package managers:4 ends here
|
||||||
|
|
||||||
# [[file:Console.org::*npm][npm:2]]
|
|
||||||
export NPM_CONFIG_USERCONFIG=$HOME/._npmrc
|
|
||||||
# npm:2 ends here
|
|
||||||
|
|
||||||
# [[file:Console.org::*npm][npm:3]]
|
|
||||||
NPM_PACKAGES="${HOME}/.npm-packages"
|
|
||||||
|
|
||||||
export PATH="$PATH:$NPM_PACKAGES/bin"
|
|
||||||
export MANPATH="${MANPATH:-$(manpath)}:$NPM_PACKAGES/share/man"
|
|
||||||
# npm:3 ends here
|
|
||||||
|
|
||||||
# [[file:Console.org::*XResources][XResources:1]]
|
# [[file:Console.org::*XResources][XResources:1]]
|
||||||
if [ -z "$IS_ANDROID" ]; then
|
if [ -z "$IS_ANDROID" ]; then
|
||||||
|
|
|
||||||
184
Arch.org
Normal file
184
Arch.org
Normal file
|
|
@ -0,0 +1,184 @@
|
||||||
|
#+PROPERTY: header-args :mkdirp yes
|
||||||
|
#+TITLE: Arch Linux
|
||||||
|
|
||||||
|
I've decided to switch to [[https://archlinux.org/][Arch Linux]] and configure it declaratively with [[https://github.com/ripytide/metapac][metapac]].
|
||||||
|
|
||||||
|
* System installation
|
||||||
|
** Installation
|
||||||
|
On installation, see https://wiki.archlinux.org/title/Installation_guide and/or use =archinstall=.
|
||||||
|
|
||||||
|
** After installation
|
||||||
|
Update everything:
|
||||||
|
#+begin_src bash
|
||||||
|
sudo pacman -Syyu
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Install git, python and yadm:
|
||||||
|
#+begin_src bash
|
||||||
|
sudo pacman -Syu python git pacman-contrib yadm
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Select top-6 fastest mirrors to work with. Generate a mirrorlist file using this service: https://archlinux.org/mirrorlist/, then use =rankmirrors= from =pacman-contrib= (see [[https://wiki.archlinux.org/title/Mirrors][Mirrors]] on Arch Wiki).
|
||||||
|
#+begin_src bash
|
||||||
|
sudo -i
|
||||||
|
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
|
||||||
|
rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
If there isn't enough RAM (e.g. running in a VM), turn off mounting =/tmp= as [[https://wiki.archlinux.org/title/Tmpfs#Disable_automatic_mount][tmpfs]]:
|
||||||
|
#+begin_src basd
|
||||||
|
sudo systemctl mask tmp.mount
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Install [[https://github.com/Morganamilo/paru][paru]]:
|
||||||
|
#+begin_src bash
|
||||||
|
sudo pacman -S --needed base-devel
|
||||||
|
git clone https://aur.archlinux.org/paru.git
|
||||||
|
cd paru
|
||||||
|
makepkg -si
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Install [[https://github.com/ripytide/metapac][metapac]]:
|
||||||
|
#+begin_src bash
|
||||||
|
paru -Syyu metapac
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Then install Arch packages with =metapac=:
|
||||||
|
#+begin_src bash
|
||||||
|
mkdir ~/00-Scratch/
|
||||||
|
git clone https://github.com/SqrtMinusOne/dotfiles.git ~/00-Scratch/dotfiles/
|
||||||
|
cp -r ~/00-Scratch/dotfiles/.config/metapac ~/.config/
|
||||||
|
metapac s
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Then, install the ssh and gpg keys (put them into the =~/.ssh= folder). To export gpg keys:
|
||||||
|
#+begin_src bash
|
||||||
|
gpg --output private.pgp --armor --export-secret-keys <keyname>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And to import:
|
||||||
|
#+begin_src bash
|
||||||
|
gpg --import private.pgp
|
||||||
|
gpg --edit-key <keyname>
|
||||||
|
trust
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Then, clone the dotfiles repo with =yadm=:
|
||||||
|
#+begin_src bash
|
||||||
|
yadm clone git@github.com:SqrtMinusOne/dotfiles.git
|
||||||
|
#+end_src
|
||||||
|
Checkout the changed files.
|
||||||
|
|
||||||
|
Clone the org-mode repo:
|
||||||
|
#+begin_src bash
|
||||||
|
git clone git@github.com:SqrtMinusOne/dotfiles.git "/home/pavel/30-39 Life/32 org-mode"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Then run =emacs= and make sure it starts.
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
|
I've also tried [[https://github.com/kiviktnm/decman][decman]], but it turned out to be too unstable because it ships its own logic for building AUR packages, which doesn't always work. So wrapping =paru= seems like a saner approach. Also, sometimes AUR drops packets, and =decman= can't handle it gracefully.
|
||||||
|
|
||||||
|
In =metapac=, packages are listed in "groups", each group being a TOML file stating which package has to be installed by which package manager. I declare groups as Org tables, see the "System configuration" section in Emacs.org.
|
||||||
|
|
||||||
|
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 | + | |
|
||||||
|
|
||||||
|
And the code to format it as TOML:
|
||||||
|
#+NAME: metapac-groups-format
|
||||||
|
#+begin_src emacs-lisp :var groups=metapac-groups
|
||||||
|
(let* ((hostnames (cdr (nth 0 groups)))
|
||||||
|
groups-by-hostname)
|
||||||
|
(cl-loop for row in (cdr groups)
|
||||||
|
for group = (nth 0 row)
|
||||||
|
do (cl-loop for i from 0
|
||||||
|
for sign in (cdr row)
|
||||||
|
for hostname = (nth i hostnames)
|
||||||
|
if (not (string-empty-p sign))
|
||||||
|
do (push group (alist-get hostname groups-by-hostname
|
||||||
|
nil nil #'equal))))
|
||||||
|
(cl-loop for (hostname . groups) in groups-by-hostname
|
||||||
|
concat (format "%s = [%s]\n" hostname
|
||||||
|
(mapconcat (lambda (g) (format "\"%s\"" g)) groups ","))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Which is used in the config:
|
||||||
|
#+begin_src toml :tangle .config/metapac/config.toml :noweb yes
|
||||||
|
hostname_enabled_backends_enabled = false
|
||||||
|
enabled_backends = ["arch"]
|
||||||
|
hostname_groups_enabled = true
|
||||||
|
|
||||||
|
[hostname_groups]
|
||||||
|
<<metapac-groups-format()>>
|
||||||
|
|
||||||
|
[arch]
|
||||||
|
package_manager = "paru"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* System packages
|
||||||
|
Some necessary Arch packages:
|
||||||
|
| Arch dependency |
|
||||||
|
|---------------------|
|
||||||
|
| base |
|
||||||
|
| base-devel |
|
||||||
|
| decman |
|
||||||
|
| grub |
|
||||||
|
| iwd |
|
||||||
|
| lightdm |
|
||||||
|
| lightdm-gtk-greeter |
|
||||||
|
| linux |
|
||||||
|
| linux-firmware |
|
||||||
|
| nano |
|
||||||
|
| metapac |
|
||||||
|
| openssh |
|
||||||
|
| pacman-contrib |
|
||||||
|
| paru |
|
||||||
|
| pipewire |
|
||||||
|
| pipewire-audio |
|
||||||
|
| pipewire-alsa |
|
||||||
|
| pipewire-pulse |
|
||||||
|
| pipewire-jack |
|
||||||
|
| smartmontools |
|
||||||
|
| vim |
|
||||||
|
| xterm |
|
||||||
|
| wget |
|
||||||
|
| wireless_tools |
|
||||||
|
| wpa_supplicant |
|
||||||
|
| yadm |
|
||||||
|
| zram-generator |
|
||||||
|
|
||||||
|
Various drivers, I'm not sure which I actually need, so...
|
||||||
|
| Arch dependency |
|
||||||
|
|--------------------|
|
||||||
|
| libva-intel-driver |
|
||||||
|
| intel-media-driver |
|
||||||
|
| vulkan-intel |
|
||||||
|
| nvidia-utils |
|
||||||
|
| vulkan-radeon |
|
||||||
|
| xf86-video-amdgpu |
|
||||||
|
| xf86-video-ati |
|
||||||
|
|
||||||
|
#+NAME: packages
|
||||||
|
#+begin_src emacs-lisp :tangle no :var category=""
|
||||||
|
(my/format-arch-dependencies category)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src scheme :tangle .config/metapac/groups/system.toml :noweb yes
|
||||||
|
<<packages()>>
|
||||||
|
#+end_src
|
||||||
272
Console.org
272
Console.org
|
|
@ -72,14 +72,6 @@ Timezone
|
||||||
# TZ='Asia/Karachi'; export TZ
|
# TZ='Asia/Karachi'; export TZ
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Turn off Guix
|
|
||||||
#+begin_src bash
|
|
||||||
if [ -f "/home/pavel/.no-guix" ]; then
|
|
||||||
export NO_GUIX=true
|
|
||||||
export PATH=$(echo $PATH | tr ":" "\n" | grep -vE "guix|nix|gnu" | tr "\n" ":")
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** My paths
|
** My paths
|
||||||
My script folders
|
My script folders
|
||||||
#+begin_src sh
|
#+begin_src sh
|
||||||
|
|
@ -92,17 +84,6 @@ if [ -d "$HOME/.local/bin" ] ; then
|
||||||
export PATH="$HOME/.local/bin:$PATH"
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
** SSL Certs
|
|
||||||
This seems necessary when running Guix on a foreign distro.
|
|
||||||
|
|
||||||
#+begin_src bash
|
|
||||||
if [ -d "$HOME/.guix-extra-profiles" ] ; then
|
|
||||||
export SSL_CERT_DIR="$HOME/.guix-extra-profiles/system/system/etc/ssl/certs/"
|
|
||||||
export SSL_CERT_FILE="$HOME/.guix-extra-profiles/system/system/etc/ssl/certs/ca-certificates.crt"
|
|
||||||
export GIT_SSL_CAINFO="$SSL_CERT_FILE"
|
|
||||||
export CURL_CA_BUNDLE="$SSL_CERT_FILE"
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
** ssh-agent
|
** ssh-agent
|
||||||
I'm paranoid so I encrypt my SSH keys.
|
I'm paranoid so I encrypt my SSH keys.
|
||||||
|
|
||||||
|
|
@ -123,52 +104,18 @@ if [[ ! -f "$SSH_AUTH_SOCK" ]]; then
|
||||||
source "$SSH_AGENT_DIR/ssh-agent.env" >/dev/null
|
source "$SSH_AGENT_DIR/ssh-agent.env" >/dev/null
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
** Guix settings
|
** Misc settings
|
||||||
Enable extra profiles
|
Set Jupyter config PATH. I keep it from my Guix config where it defaulted to some readonly folder.
|
||||||
|
|
||||||
#+begin_src sh
|
|
||||||
if [ -z "$IS_ANDROID" ] && [ -z "$NO_GUIX" ] ; then
|
|
||||||
GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles
|
|
||||||
for i in $GUIX_EXTRA_PROFILES/*; do
|
|
||||||
profile=$i/$(basename "$i")
|
|
||||||
if [ -f "$profile"/etc/profile ]; then
|
|
||||||
GUIX_PROFILE="$profile"
|
|
||||||
. "$GUIX_PROFILE"/etc/profile
|
|
||||||
fi
|
|
||||||
if [ -d "$profile"/share/man ]; then
|
|
||||||
if command -v manpath >/dev/null 2>/dev/null; then
|
|
||||||
export MANPATH="${MANPATH:-$(manpath)}:$profile/share/man"
|
|
||||||
else
|
|
||||||
export MANPATH="${MANPATH}:$profile/share/man"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
export XDG_DATA_DIRS="$XDG_DATA_DIRS:$profile/share"
|
|
||||||
unset profile
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Set Jupyter config PATH. It defaults to readonly directory somewhere in Guix profile.
|
|
||||||
#+begin_src sh
|
#+begin_src sh
|
||||||
export JUPYTER_CONFIG_DIR=$HOME/.config/jupyter
|
export JUPYTER_CONFIG_DIR=$HOME/.config/jupyter
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Set a folder for my packages.
|
|
||||||
#+begin_src sh
|
|
||||||
export GUIX_PACKAGE_PATH=~/guix-packages
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Locale settings
|
|
||||||
#+begin_src sh
|
|
||||||
export GUIX_LOCPATH=$HOME/.guix-extra-profiles/console/console/lib/locale
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Somehow LibreOffice doesn't work without the following:
|
Somehow LibreOffice doesn't work without the following:
|
||||||
#+begin_src sh
|
#+begin_src sh
|
||||||
export GIO_EXTRA_MODULES=""
|
export GIO_EXTRA_MODULES=""
|
||||||
#+end_src
|
#+end_src
|
||||||
** Other package managers
|
** Other package managers
|
||||||
Using other package managers with Guix requires some extra work.
|
Using other package managers requires some extra work.
|
||||||
|
|
||||||
Cask
|
Cask
|
||||||
#+begin_src sh
|
#+begin_src sh
|
||||||
|
|
@ -195,20 +142,6 @@ if [ -e /home/pavel/.nix-profile/etc/profile.d/nix.sh ] && [ -z "$NO_GUIX" ] ; t
|
||||||
|
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
|
|
||||||
Use Guix fontconfig. Necessary for nix apps
|
|
||||||
#+begin_src sh
|
|
||||||
if [ -d "$HOME/.guix-extra-profiles/desktop-misc" ] && [ -z "$NO_GUIX" ] ; then
|
|
||||||
export FONTCONFIG_PATH="$HOME/.guix-extra-profiles/desktop-misc/desktop-misc/etc/fonts"
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Make nix apps visible to launchers:
|
|
||||||
#+begin_src sh
|
|
||||||
if [ -d "$HOME/.nix-profile" ] && [ -z "$NO_GUIX" ]; then
|
|
||||||
export XDG_DATA_DIRS="$XDG_DATA_DIRS:$HOME/.nix-profile/share/applications"
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Gradle:
|
Gradle:
|
||||||
#+begin_src sh
|
#+begin_src sh
|
||||||
if [ -d "$HOME/bin/gradle/gradle-9.0.0" ]; then
|
if [ -d "$HOME/bin/gradle/gradle-9.0.0" ]; then
|
||||||
|
|
@ -216,90 +149,16 @@ if [ -d "$HOME/bin/gradle/gradle-9.0.0" ]; then
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** npm
|
|
||||||
npm is especially cumbersome, for instance because by default it tries to install packages to =/gnu/store/=.
|
|
||||||
|
|
||||||
In principle, one can set a prefix like this:
|
|
||||||
#+begin_src conf :tangle ~/._npmrc
|
|
||||||
prefix=/home/pavel/.npm-packages
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
But I also want to use node from conda occasionally, where prefix is already set correctly. So instead of tangling the above to the =~/.npmrc= directly, I set an environment variable in the profile:
|
|
||||||
|
|
||||||
#+begin_src sh
|
|
||||||
export NPM_CONFIG_USERCONFIG=$HOME/._npmrc
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
The variable is unset in a script in [[file:Guix.org::*micromamba][Guix.org]].
|
|
||||||
|
|
||||||
Set PATH & MANPATH
|
|
||||||
#+begin_src sh
|
|
||||||
NPM_PACKAGES="${HOME}/.npm-packages"
|
|
||||||
|
|
||||||
export PATH="$PATH:$NPM_PACKAGES/bin"
|
|
||||||
export MANPATH="${MANPATH:-$(manpath)}:$NPM_PACKAGES/share/man"
|
|
||||||
#+end_src
|
|
||||||
** XResources
|
** XResources
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| xrdb |
|
| xorg-xrdb |
|
||||||
|
|
||||||
#+begin_src sh
|
#+begin_src sh
|
||||||
if [ -z "$IS_ANDROID" ]; then
|
if [ -z "$IS_ANDROID" ]; then
|
||||||
xrdb ~/.Xresources
|
xrdb ~/.Xresources
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
** OFF (OFF) Package manager paths
|
|
||||||
Turned off for now, because probably it won't be necessary in Guix.
|
|
||||||
|
|
||||||
LaTeX
|
|
||||||
#+begin_src sh :tangle no
|
|
||||||
if [ -d "/usr/local/texlive/2020" ]; then
|
|
||||||
export MANPATH="/usr/local/texlive/2020/texmf-dist/doc/man:$MANPATH"
|
|
||||||
export INFOPATH="/usr/local/texlive/2020/texmf-dist/doc/info:$INFOPATH"
|
|
||||||
export PATH="/usr/local/texlive/2020/bin/x86_64-linux:$PATH"
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Cargo (Rust)
|
|
||||||
#+begin_src sh :tangle no
|
|
||||||
if [ -d "$HOME/.cargo" ] ; then
|
|
||||||
export PATH="$HOME/.cargo/bin:$PATH"
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
RVM (Ruby)
|
|
||||||
#+begin_src sh :tangle no
|
|
||||||
if [ -d "$HOME/.rvm" ] ; then
|
|
||||||
export PATH="$PATH:$HOME/.rvm/bin"
|
|
||||||
fi
|
|
||||||
# if [ -d "$HOME/.gem" ]; then
|
|
||||||
# export PATH="$HOME/.gem/ruby/2.7.0/bin:$PATH"
|
|
||||||
# fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Go
|
|
||||||
#+begin_src sh :tangle no
|
|
||||||
if [ -d "$HOME/go" ] ; then
|
|
||||||
export PATH="$HOME/go/bin:$PATH"
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
ghcup (Haskell)
|
|
||||||
#+begin_src sh :tangle no
|
|
||||||
[ -f "/home/pavel/.ghcup/env" ] && source "/home/pavel/.ghcup/env" # ghcup-env
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Perl
|
|
||||||
#+begin_src sh :tangle no
|
|
||||||
if [ -d "$HOME/perl5" ] ; then
|
|
||||||
PATH="/home/pavel/perl5/bin${PATH:+:${PATH}}"
|
|
||||||
PERL5LIB="/home/pavel/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
|
|
||||||
PERL_LOCAL_LIB_ROOT="/home/pavel/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
|
|
||||||
PERL_MB_OPT="--install_base \"/home/pavel/perl5\""; export PERL_MB_OPT;
|
|
||||||
PERL_MM_OPT="INSTALL_BASE=/home/pavel/perl5"; export PERL_MM_OPT;
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
* Bash
|
* Bash
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:bash: :shebang "" :comments link
|
:header-args:bash: :shebang "" :comments link
|
||||||
|
|
@ -315,7 +174,7 @@ fi
|
||||||
:header-args+: :tangle ./.bashrc
|
:header-args+: :tangle ./.bashrc
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
My =.bashrc=, which has pieces from the default one in Guix & Manjaro, as well some mine settings.
|
My =.bashrc=, which has pieces from the default one in Guix & Manjaro.
|
||||||
|
|
||||||
*** Startup & environment
|
*** Startup & environment
|
||||||
Export 'SHELL' to child processes. Programs such as 'screen' honor it and otherwise use /bin/sh.
|
Export 'SHELL' to child processes. Programs such as 'screen' honor it and otherwise use /bin/sh.
|
||||||
|
|
@ -348,20 +207,15 @@ if [[ -f "/etc/bashrc" ]]; then
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| xhost |
|
| xorg-xhost |
|
||||||
|
|
||||||
Allow other users to access X server. Necessary for stuff like aw-watcher-window.
|
Allow other users to access X server. Necessary for stuff like aw-watcher-window.
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
xhost +local:root > /dev/null 2>&1
|
xhost +local:root > /dev/null 2>&1
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Set manpager to bat
|
|
||||||
#+begin_src bash
|
|
||||||
# export MANPAGER="sh -c 'sed -e s/.\\\\x08//g | bat -l man -p'"
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
[[https://codeberg.org/akib/emacs-eat][eat]] integration
|
[[https://codeberg.org/akib/emacs-eat][eat]] integration
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/bash"
|
[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/bash"
|
||||||
|
|
@ -529,7 +383,7 @@ init_yc () {
|
||||||
:header-args+: :tangle ./.config/fish/config.fish :comments link
|
:header-args+: :tangle ./.config/fish/config.fish :comments link
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
| Guix dependency | Description |
|
| Arch dependency | Description |
|
||||||
|-----------------+------------------------------------------|
|
|-----------------+------------------------------------------|
|
||||||
| fish | An alternative non POSIX-compliant shell |
|
| fish | An alternative non POSIX-compliant shell |
|
||||||
|
|
||||||
|
|
@ -566,9 +420,9 @@ end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-------------------------|
|
||||||
| dt-colorscripts |
|
| shell-color-scripts-git |
|
||||||
|
|
||||||
Launch a random [[https://gitlab.com/dwt1/shell-color-scripts][DT's colorscript]] unless ran inside tmux or Emacs.
|
Launch a random [[https://gitlab.com/dwt1/shell-color-scripts][DT's colorscript]] unless ran inside tmux or Emacs.
|
||||||
#+begin_src fish
|
#+begin_src fish
|
||||||
|
|
@ -653,16 +507,16 @@ end
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args+: :tangle ./.config/nu/config.toml :comments link
|
:header-args+: :tangle ./.config/nu/config.toml :comments link
|
||||||
:END:
|
:END:
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| nushell-bin |
|
| nushell |
|
||||||
|
|
||||||
A structured shell. I don't use it as of now, but perhaps one day.
|
A structured shell. I don't use it as of now, but perhaps one day.
|
||||||
|
|
||||||
* Starship prompt
|
* Starship prompt
|
||||||
| Guix dependency | Description |
|
| Arch dependency | Description |
|
||||||
|-----------------+---------------------|
|
|-----------------+---------------------|
|
||||||
| starship-bin | my prompt of choice |
|
| starship | my prompt of choice |
|
||||||
|
|
||||||
[[https://starship.rs/][Starship]] is a nice cross-shell prompt, written in Rust.
|
[[https://starship.rs/][Starship]] is a nice cross-shell prompt, written in Rust.
|
||||||
|
|
||||||
|
|
@ -750,10 +604,10 @@ symbol = " "
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args+: :tangle ./.tmux.conf
|
:header-args+: :tangle ./.tmux.conf
|
||||||
:END:
|
:END:
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| tmux |
|
| tmux |
|
||||||
| python-tmuxp |
|
| tmuxp |
|
||||||
|
|
||||||
[[https://github.com/tmux/tmux][tmux]] is my terminal multiplexer of choice.
|
[[https://github.com/tmux/tmux][tmux]] is my terminal multiplexer of choice.
|
||||||
|
|
||||||
|
|
@ -805,7 +659,7 @@ Reload the config.
|
||||||
bind r source-file ~/.tmux.conf
|
bind r source-file ~/.tmux.conf
|
||||||
#+end_src
|
#+end_src
|
||||||
** Copy to clipboard
|
** Copy to clipboard
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| xclip |
|
| xclip |
|
||||||
|
|
||||||
|
|
@ -849,7 +703,7 @@ source ~/.tmux.line.conf
|
||||||
:header-args+: :tangle ./.config/alacritty/alacritty.yml :comments link
|
:header-args+: :tangle ./.config/alacritty/alacritty.yml :comments link
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| alacritty |
|
| alacritty |
|
||||||
|
|
||||||
|
|
@ -928,9 +782,9 @@ key_bindings:
|
||||||
- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
|
- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
|
||||||
#+end_src
|
#+end_src
|
||||||
* Bottom
|
* Bottom
|
||||||
| Guix dependency | Description |
|
| Arch dependency | Description |
|
||||||
|-----------------------+---------------------------------------------|
|
|-----------------+------------------|
|
||||||
| bottom-bin | resource monitor |
|
| bottom | resource monitor |
|
||||||
|
|
||||||
[[https://github.com/ClementTsang/bottom][bottom]] is a TUI system monitor.
|
[[https://github.com/ClementTsang/bottom][bottom]] is a TUI system monitor.
|
||||||
|
|
||||||
|
|
@ -941,7 +795,7 @@ See the [[https://github.com/ClementTsang/bottom/blob/master/sample_configs/defa
|
||||||
(if (my/light-p) "default-light" "default")
|
(if (my/light-p) "default-light" "default")
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src toml :tangle ~/.config/bottom/bottom.toml :noweb yes
|
#+begin_src toml :tangle .config/bottom/bottom.toml :noweb yes
|
||||||
[flags]
|
[flags]
|
||||||
hide_table_gap = true # Remove space in tables
|
hide_table_gap = true # Remove space in tables
|
||||||
color = "<<bottom-theme()>>"
|
color = "<<bottom-theme()>>"
|
||||||
|
|
@ -955,50 +809,47 @@ columns = ["PID", "State", "Name", "CPU%", "Mem%", "R/s", "W/s", "User"]
|
||||||
|
|
||||||
See [[https://docs.atuin.sh/configuration/config/][config reference]].
|
See [[https://docs.atuin.sh/configuration/config/][config reference]].
|
||||||
|
|
||||||
#+begin_src toml :tangle ~/.config/atuin/config.toml
|
#+begin_src toml :tangle .config/atuin/config.toml
|
||||||
update_check = false
|
update_check = false
|
||||||
enter_accept = true
|
enter_accept = true
|
||||||
keymap_mode = "vim-insert"
|
keymap_mode = "vim-insert"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Various console applications
|
* Various console applications
|
||||||
| Guix dependency | Description |
|
| Arch dependency | Description | Disabled |
|
||||||
|-----------------+---------------------------------------------|
|
|-----------------+---------------------------------------------+----------|
|
||||||
| ncurses | Provides stuff like ~clear~ |
|
| ncurses | Provides stuff like ~clear~ | |
|
||||||
| exa | ~ls~ replacement, written in Rust |
|
| eza | ~ls~ replacement, written in Rust | |
|
||||||
| bat | ~cat~ clone with syntax highlighting |
|
| htop | Interactive process viewer | |
|
||||||
| htop | Interactive process viewer |
|
| nethogs | A tool to group processed by used bandwidth | |
|
||||||
| nethogs | A tool to group processed by used bandwidth |
|
| neofetch | Fetch system info | |
|
||||||
| osync | rsync wrapper |
|
| fzf | fuzzy finder | |
|
||||||
| neofetch | Fetch system info |
|
| 7zip | archiver | |
|
||||||
| fzf | fuzzy finder |
|
| pass | CLI password manager | |
|
||||||
| p7zip | archiver |
|
| zip | | |
|
||||||
| password-store | CLI password manager |
|
| unzip | | |
|
||||||
| zip | |
|
| unrar | | |
|
||||||
| unzip | |
|
| jmtpfs | A tool to mount MTP devices (e.g. Android) | t |
|
||||||
| jmtpfs | A tool to mount MTP devices (e.g. Android) |
|
| tokei | Count lines of code | |
|
||||||
| tokei | Count lines of code |
|
| sshfs | Mount stuff over SSH | |
|
||||||
| sshfs | Mount stuff over SSH |
|
| git-lfs | | |
|
||||||
| lftp | File transfer |
|
| direnv | | |
|
||||||
| git-lfs | |
|
| jless | JSON viewer | |
|
||||||
| glibc-locales | |
|
| megacmd | mega.nz client | |
|
||||||
| direnv | |
|
| ncdu | disk usage analyzer | |
|
||||||
| jless-bin | JSON viewer |
|
| openssl | | |
|
||||||
| megacmd | mega.nz client |
|
| aria2 | Download tool | |
|
||||||
| ncdu | disk usage analyzer |
|
| man-db | | |
|
||||||
| openssl | |
|
| pv | | |
|
||||||
| aria2 | Download tool |
|
|
||||||
| man-db | |
|
|
||||||
| pv | |
|
|
||||||
|
|
||||||
** ripgrep config
|
** ripgrep config
|
||||||
Occasionally I can't exclude certain files from ripgrep via the VCS settings, so here is a simple config to ignore certain files globally.
|
Occasionally I can't exclude certain files from ripgrep via the VCS settings, so here is a simple config to ignore certain files globally.
|
||||||
#+begin_src text :tangle ~/.config/ripgrep/ripgreprc
|
#+begin_src text :tangle .config/ripgrep/ripgreprc
|
||||||
--ignore-file=/home/pavel/.config/ripgrep/ripgrepignore
|
--ignore-file=/home/pavel/.config/ripgrep/ripgrepignore
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
The ignore file:
|
The ignore file:
|
||||||
#+begin_src text :tangle ~/.config/ripgrep/ripgrepignore
|
#+begin_src text :tangle .config/ripgrep/ripgrepignore
|
||||||
*.ts.snap
|
*.ts.snap
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
@ -1011,7 +862,7 @@ Usage:
|
||||||
nt <command>
|
nt <command>
|
||||||
#+end_example
|
#+end_example
|
||||||
|
|
||||||
#+begin_src sh :tangle ~/bin/scripts/nt
|
#+begin_src sh :tangle bin/scripts/nt
|
||||||
command="$@"
|
command="$@"
|
||||||
if [ ! -z "$command" ]; then
|
if [ ! -z "$command" ]; then
|
||||||
start_time="$(date -u +%s)"
|
start_time="$(date -u +%s)"
|
||||||
|
|
@ -1045,7 +896,7 @@ Here's roughly what the script is doing:
|
||||||
- Send a notification about the events above
|
- Send a notification about the events above
|
||||||
- Send a separate notification if there is a merge conflict
|
- Send a separate notification if there is a merge conflict
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/bin/scripts/autocommit
|
#+begin_src bash :tangle bin/scripts/autocommit
|
||||||
TIMEOUT_MIN=${TIMEOUT_MIN:-60}
|
TIMEOUT_MIN=${TIMEOUT_MIN:-60}
|
||||||
|
|
||||||
export DISPLAY=:0
|
export DISPLAY=:0
|
||||||
|
|
@ -1114,20 +965,19 @@ fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
=mcron= job:
|
=mcron= job:
|
||||||
#+begin_src scheme :tangle ~/.config/cron/autocommit.guile
|
#+begin_src scheme :tangle .config/cron/autocommit.guile
|
||||||
(job "0 * * * *" "autocommit /home/pavel/30-39\\ Life/32\\ org-mode/")
|
(job "0 * * * *" "autocommit /home/pavel/30-39\\ Life/32\\ org-mode/")
|
||||||
(job "0,15,30,45 * * * *" "autocommit ~/.password-store")
|
(job "0,15,30,45 * * * *" "autocommit ~/.password-store")
|
||||||
#+end_src
|
#+end_src
|
||||||
* Guix settings
|
* Arch settings
|
||||||
#+NAME: packages
|
#+NAME: packages
|
||||||
#+begin_src emacs-lisp :tangle no :eval never-export
|
#+begin_src emacs-lisp :tangle no
|
||||||
(my/format-guix-dependencies)
|
(when (fboundp #'my/format-arch-dependencies)
|
||||||
|
(my/format-arch-dependencies))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src scheme :tangle .config/guix/manifests/console.scm :noweb yes
|
#+begin_src scheme :tangle .config/metapac/groups/console.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages()>>
|
||||||
'(
|
|
||||||
<<packages()>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
* Android notes
|
* Android notes
|
||||||
SSH instructions: https://wiki.termux.com/wiki/Remote_Access
|
SSH instructions: https://wiki.termux.com/wiki/Remote_Access
|
||||||
|
|
|
||||||
297
Desktop.org
297
Desktop.org
|
|
@ -129,13 +129,13 @@ Xft.dpi: <<get-dpi()>>
|
||||||
** Themes
|
** Themes
|
||||||
A few programs I use to customize the apperance are listed below.
|
A few programs I use to customize the apperance are listed below.
|
||||||
|
|
||||||
| Guix dependency | Description |
|
| Arch dependency | Description |
|
||||||
|-----------------------+-------------------------|
|
|--------------------+-------------------------|
|
||||||
| matcha-theme | My preferred GTK theme |
|
| gtk-engine-murrine | My preferred GTK theme |
|
||||||
| papirus-icon-theme | My preferred Icon theme |
|
| gtk-engines | |
|
||||||
| gnome-themes-standard | |
|
| papirus-icon-theme | My preferred Icon theme |
|
||||||
| xsettingsd | X11 settings daemon |
|
| xsettingsd | X11 settings daemon |
|
||||||
| gnome-themes-extra | |
|
| 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.
|
[[https://github.com/derat/xsettingsd][xsettingsd]] is a lightweight daemon which configures X11 applications. It is launched with shepherd in the [[*Services][Services]] section.
|
||||||
|
|
||||||
|
|
@ -182,11 +182,11 @@ x-scheme-handler/tg=userapp-Telegram Desktop-7PVWF1.desktop;
|
||||||
application/pdf=org.pwmt.zathura.desktop
|
application/pdf=org.pwmt.zathura.desktop
|
||||||
#+end_src
|
#+end_src
|
||||||
** Device-specific settings
|
** Device-specific settings
|
||||||
| Guix dependency | Description |
|
| Arch dependency | Description |
|
||||||
|-----------------+--------------------------------------------|
|
|-----------------+--------------------------------------------|
|
||||||
| xrandr | X11 CLI to RandR |
|
| xorg-xrandr | X11 CLI to RandR |
|
||||||
| xgamma | A tool to alter monitor's gamma correction |
|
| xorg-xgamma | A tool to alter monitor's gamma correction |
|
||||||
| xinput | Configure input devices |
|
| xorg-xinput | Configure input devices |
|
||||||
|
|
||||||
Set screen layout & other params depending on hostname
|
Set screen layout & other params depending on hostname
|
||||||
#+begin_src sh :tangle ~/bin/scripts/screen-layout
|
#+begin_src sh :tangle ~/bin/scripts/screen-layout
|
||||||
|
|
@ -214,9 +214,9 @@ References:
|
||||||
*** Xsession
|
*** Xsession
|
||||||
First things first, Emacs has to be launched as a window manager. On a more conventional system I'd create a .desktop file in some system folder that can be seen by a login manager, but in the case of Guix it's a bit more complicated, because all such folders are not meant to be changed manually.
|
First things first, Emacs has to be launched as a window manager. On a more conventional system I'd create a .desktop file in some system folder that can be seen by a login manager, but in the case of Guix it's a bit more complicated, because all such folders are not meant to be changed manually.
|
||||||
|
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency |
|
||||||
|--------------+-----------------|
|
|--------------+-----------------|
|
||||||
| desktop-misc | xinit |
|
| desktop-misc | xorg-xinit |
|
||||||
| desktop-misc | xss-lock |
|
| desktop-misc | xss-lock |
|
||||||
|
|
||||||
However, GDM, the login manager that seems to be the default on Guix, launches =~/.xsession= on the startup if it's present, which is just fine for my purposes.
|
However, GDM, the login manager that seems to be the default on Guix, launches =~/.xsession= on the startup if it's present, which is just fine for my purposes.
|
||||||
|
|
@ -778,9 +778,9 @@ By default, it also shows paths from =/gnu/store=, so there is a custom formatte
|
||||||
|
|
||||||
Also, by default it tries to launch stuff with =gtk-launch=, which is in the =gtk+= package.
|
Also, by default it tries to launch stuff with =gtk-launch=, which is in the =gtk+= package.
|
||||||
|
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency | Disabled |
|
||||||
|--------------+-----------------|
|
|--------------+-----------------+----------|
|
||||||
| desktop-misc | gtk+:bin |
|
| desktop-misc | gtk+:bin | t |
|
||||||
*** password-store-completion
|
*** password-store-completion
|
||||||
[[https://github.com/SqrtMinusOne/password-store-completion][password-store-completion]] is another package of mine, inspired by [[https://github.com/carnager/rofi-pass][rofi-pass]].
|
[[https://github.com/SqrtMinusOne/password-store-completion][password-store-completion]] is another package of mine, inspired by [[https://github.com/carnager/rofi-pass][rofi-pass]].
|
||||||
|
|
||||||
|
|
@ -1262,12 +1262,10 @@ And the EXWM config itself.
|
||||||
:header-args+: :tangle ./.config/i3/config
|
:header-args+: :tangle ./.config/i3/config
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
| Guix dependency | Disabled |
|
| Arch dependency | Disabled |
|
||||||
|-----------------+----------|
|
|-----------------+----------|
|
||||||
| i3-gaps | |
|
| i3-wm | |
|
||||||
| i3lock | true |
|
| i3lock | |
|
||||||
|
|
||||||
=i3lock= is disabled because the global one has to be used.
|
|
||||||
|
|
||||||
[[https://i3wm.org/][i3wm]] is a manual tiling window manager, which is currently my window manager of choice. I've tried several alternatives, including [[https://xmonad.org/][xmonad]] & [[https://github.com/ch11ng/exwm][EXWM]], +but i3 seems to fit my workflow best+ and decided to switch to EXWM. This section is kept for a few cases when I need to be extra sure that my WM doesn't fail.
|
[[https://i3wm.org/][i3wm]] is a manual tiling window manager, which is currently my window manager of choice. I've tried several alternatives, including [[https://xmonad.org/][xmonad]] & [[https://github.com/ch11ng/exwm][EXWM]], +but i3 seems to fit my workflow best+ and decided to switch to EXWM. This section is kept for a few cases when I need to be extra sure that my WM doesn't fail.
|
||||||
|
|
||||||
|
|
@ -1306,9 +1304,9 @@ bindsym $mod+Shift+r restart
|
||||||
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
|
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
|
||||||
#+end_src
|
#+end_src
|
||||||
** Managing windows
|
** Managing windows
|
||||||
| Guix dependency |
|
| Guix dependency | Disabled |
|
||||||
|---------------------|
|
|-----------------+----------|
|
||||||
| rust-i3-switch-tabs |
|
| i3-switch-tabs | t |
|
||||||
|
|
||||||
Some keybindings for managing windows.
|
Some keybindings for managing windows.
|
||||||
|
|
||||||
|
|
@ -1552,9 +1550,9 @@ bindsym $mod+g mode "inner gaps"
|
||||||
bindsym $mod+Shift+g mode "outer gaps"
|
bindsym $mod+Shift+g mode "outer gaps"
|
||||||
#+end_src
|
#+end_src
|
||||||
** Move & resize windows
|
** Move & resize windows
|
||||||
| Guix dependency |
|
| Arch dependency | Disabled |
|
||||||
|-----------------------------|
|
|----------------------+----------|
|
||||||
| python-i3-balance-workspace |
|
| i3-balance-workspace | t |
|
||||||
|
|
||||||
A more or less standard set of keybindings to move & resize floating windows. Just be careful to always make a way to return from these new modes, otherwise you'd end up in a rather precarious situation.
|
A more or less standard set of keybindings to move & resize floating windows. Just be careful to always make a way to return from these new modes, otherwise you'd end up in a rather precarious situation.
|
||||||
|
|
||||||
|
|
@ -1825,9 +1823,10 @@ exec "xmodmap ~/.Xmodmap"
|
||||||
:header-args:conf-windows: :tangle ./.config/polybar/config :comments link
|
:header-args:conf-windows: :tangle ./.config/polybar/config :comments link
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
| Category | Guix dependency | Description |
|
| Category | Arch dependency | Description |
|
||||||
|-----------------+-----------------+-------------|
|
|-----------------+------------------+-------------|
|
||||||
| desktop-polybar | polybar | statusbar |
|
| desktop-polybar | polybar | statusbar |
|
||||||
|
| desktop-polybar | noto-fonts-emoji | |
|
||||||
|
|
||||||
[[https://github.com/polybar/polybar][Polybar]] is a nice-looking, WM-agnostic statusbar program.
|
[[https://github.com/polybar/polybar][Polybar]] is a nice-looking, WM-agnostic statusbar program.
|
||||||
|
|
||||||
|
|
@ -2608,11 +2607,11 @@ BEGIN{old_received='"$init_received"';old_sent='"$init_sent"'}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** ipstack-vpn
|
*** ipstack-vpn
|
||||||
| Category | Guix dependency | Description |
|
| Category | Arch dependency | Description |
|
||||||
|-----------------+-----------------+-------------------------|
|
|-----------------+-----------------+----------------------------|
|
||||||
| desktop-polybar | bind:utils | Provides dig |
|
| desktop-polybar | bind | Provides dig |
|
||||||
| desktop-polybar | curl | |
|
| desktop-polybar | curl | |
|
||||||
| desktop-polybar | jq | util to work with JSONs |
|
| desktop-polybar | jq | An util to work with JSONs |
|
||||||
|
|
||||||
A module to get a country of the current IP and openvpn status. Uses [[https://ipstack.com/][ipstack]] API.
|
A module to get a country of the current IP and openvpn status. Uses [[https://ipstack.com/][ipstack]] API.
|
||||||
|
|
||||||
|
|
@ -2748,7 +2747,7 @@ format-foreground = ${colors.foreground}
|
||||||
interval = 1200
|
interval = 1200
|
||||||
#+end_src
|
#+end_src
|
||||||
*** sun
|
*** sun
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency |
|
||||||
|-----------------+-----------------|
|
|-----------------+-----------------|
|
||||||
| desktop-polybar | sunwait |
|
| desktop-polybar | sunwait |
|
||||||
|
|
||||||
|
|
@ -2794,7 +2793,7 @@ interval = 60
|
||||||
*** aw-afk
|
*** aw-afk
|
||||||
Prints out a current uptime and non-AFK time from [[https://github.com/ActivityWatch][ActivityWatch]] server
|
Prints out a current uptime and non-AFK time from [[https://github.com/ActivityWatch][ActivityWatch]] server
|
||||||
|
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency |
|
||||||
|-----------------+-----------------|
|
|-----------------+-----------------|
|
||||||
| desktop-polybar | dateutils |
|
| desktop-polybar | dateutils |
|
||||||
|
|
||||||
|
|
@ -2976,7 +2975,7 @@ label-urgent-padding = 1
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Rofi
|
* Rofi
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency |
|
||||||
|--------------+-----------------|
|
|--------------+-----------------|
|
||||||
| desktop-rofi | rofi |
|
| desktop-rofi | rofi |
|
||||||
|
|
||||||
|
|
@ -3147,14 +3146,14 @@ if [[ ! -z $SELECTED ]]; then
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Emojis
|
*** Emojis
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency |
|
||||||
|--------------+-----------------|
|
|--------------+-----------------|
|
||||||
| desktop-rofi | python-rofimoji |
|
| desktop-rofi | rofimoji |
|
||||||
*** pass
|
*** pass
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency |
|
||||||
|--------------+-----------------|
|
|--------------+-----------------|
|
||||||
| desktop-rofi | rofi-pass |
|
| desktop-rofi | rofi-pass |
|
||||||
| desktop-rofi | xset |
|
| desktop-rofi | xorg-xset |
|
||||||
|
|
||||||
A nice [[https://github.com/carnager/rofi-pass][pass frontend for Rofi]], which is even packaged for Guix.
|
A nice [[https://github.com/carnager/rofi-pass][pass frontend for Rofi]], which is even packaged for Guix.
|
||||||
|
|
||||||
|
|
@ -3165,7 +3164,7 @@ default_autotype='username :tab pass'
|
||||||
clip=both
|
clip=both
|
||||||
#+end_src
|
#+end_src
|
||||||
* Flameshot
|
* Flameshot
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| flameshot |
|
| flameshot |
|
||||||
|
|
||||||
|
|
@ -3217,7 +3216,7 @@ TYPE_TOGGLE_PANEL=Space
|
||||||
TYPE_UNDO=Ctrl+Z
|
TYPE_UNDO=Ctrl+Z
|
||||||
#+end_src
|
#+end_src
|
||||||
* dunst
|
* dunst
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| dunst |
|
| dunst |
|
||||||
| libnotify |
|
| libnotify |
|
||||||
|
|
@ -3618,9 +3617,9 @@ Which I then can use to create the URL.
|
||||||
: https://color.firefox.com/?theme=XQAAAAJFAQAAAAAAAABAqYhm849SCia3ftKEGccwS-xMDPsqcRvjh8JMhYPDf9_kNjVRdqrKsHr5AamG1FlOJ8DH_BqRXLhVF02YoR2FXVUIEYoXiV-3q19EVo-NqESyeWWEIwj-0QxR3X-JxWYJLJYc6tAeNGGDXNNrM0pNWpwesvR43yXL_fJfr9Q919y2QwP0cK7ZXO1lRou4HkpwWW4LWdO3V6ox_BN9yA
|
: https://color.firefox.com/?theme=XQAAAAJFAQAAAAAAAABAqYhm849SCia3ftKEGccwS-xMDPsqcRvjh8JMhYPDf9_kNjVRdqrKsHr5AamG1FlOJ8DH_BqRXLhVF02YoR2FXVUIEYoXiV-3q19EVo-NqESyeWWEIwj-0QxR3X-JxWYJLJYc6tAeNGGDXNNrM0pNWpwesvR43yXL_fJfr9Q919y2QwP0cK7ZXO1lRou4HkpwWW4LWdO3V6ox_BN9yA
|
||||||
|
|
||||||
* keynav
|
* keynav
|
||||||
| Guix dependency |
|
| Arch dependency | Disabled |
|
||||||
|-----------------|
|
|-----------------+----------|
|
||||||
| keynav |
|
| keynav | t |
|
||||||
|
|
||||||
| Type | Note |
|
| Type | Note |
|
||||||
|---------+--------------------------------|
|
|---------+--------------------------------|
|
||||||
|
|
@ -3697,7 +3696,7 @@ fade-exclude = [
|
||||||
:header-args+: :tangle ./.config/picom.conf
|
:header-args+: :tangle ./.config/picom.conf
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| picom |
|
| picom |
|
||||||
|
|
||||||
|
|
@ -3792,7 +3791,7 @@ wintypes:
|
||||||
};
|
};
|
||||||
#+end_src
|
#+end_src
|
||||||
* Zathura
|
* Zathura
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency |
|
||||||
|----------+-------------------|
|
|----------+-------------------|
|
||||||
| office | zathura |
|
| office | zathura |
|
||||||
| office | zathura-ps |
|
| office | zathura-ps |
|
||||||
|
|
@ -4208,126 +4207,127 @@ c.tabs.favicons.scale = 1
|
||||||
This section generates manifests for various desktop software that I'm using.
|
This section generates manifests for various desktop software that I'm using.
|
||||||
|
|
||||||
** Browsers
|
** Browsers
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency |
|
||||||
|----------+--------------------|
|
|----------+------------------------|
|
||||||
| browsers | ungoogled-chromium |
|
| browsers | ungoogled-chromium-bin |
|
||||||
| browsers | firefox |
|
| browsers | firefox |
|
||||||
** Office & Multimedia
|
** Office & Multimedia
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency |
|
||||||
|----------+-----------------|
|
|----------+-----------------|
|
||||||
| office | libreoffice |
|
| office | libreoffice-fresh |
|
||||||
| office | gimp |
|
| office | gimp |
|
||||||
| office | krita |
|
| office | krita |
|
||||||
| office | ffmpeg |
|
| office | ffmpeg |
|
||||||
| office | kdenlive |
|
| office | kdenlive |
|
||||||
| office | inkscape |
|
| office | inkscape |
|
||||||
| office | okular |
|
| office | okular |
|
||||||
| office | obs |
|
| office | obs-studio |
|
||||||
** LaTeX
|
** LaTeX
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency | Disabled |
|
||||||
|----------+-------------------------------|
|
|----------+--------------------------+----------|
|
||||||
| latex | texlive |
|
| latex | texlive-basic | |
|
||||||
| latex | texlab-bin |
|
| latex | texlive-bibtexextra | |
|
||||||
| latex | biber |
|
| latex | texlive-binextra | |
|
||||||
| latex | python-pygments |
|
| latex | texlive-fontsextra | t |
|
||||||
| latex | font-microsoft-web-core-fonts |
|
| latex | texlive-fontutils | |
|
||||||
|
| latex | texlive-formatsextra | |
|
||||||
|
| latex | texlive-games | |
|
||||||
|
| latex | texlive-humanities | |
|
||||||
|
| latex | texlive-latex | |
|
||||||
|
| latex | texlive-latexextra | |
|
||||||
|
| latex | texlive-latexrecommended | |
|
||||||
|
| latex | texlive-mathscience | |
|
||||||
|
| latex | texlive-metapost | |
|
||||||
|
| latex | texlive-pictures | |
|
||||||
|
| latex | texlive-plaingeneric | |
|
||||||
|
| latex | texlive-pstricks | |
|
||||||
|
| latex | texlive-publishers | |
|
||||||
|
| latex | texlive-xetex | |
|
||||||
|
| latex | texlab | |
|
||||||
|
| latex | biber | |
|
||||||
|
| latex | python-pygments | |
|
||||||
|
| latex | ttf-ms-fonts | |
|
||||||
** Dev
|
** Dev
|
||||||
| Category | Guix dependency | Disabled |
|
| Category | Arch dependency | Disabled |
|
||||||
|----------+-------------------+----------|
|
|----------+-------------------+----------|
|
||||||
| dev | micromamba-bin | |
|
| dev | micromamba-bin | |
|
||||||
| dev | pandoc | |
|
| dev | pandoc-cli | |
|
||||||
| dev | docker-compose | |
|
| dev | docker | |
|
||||||
| dev | postgresql | |
|
| dev | postgresql | |
|
||||||
| dev | virt-manager | |
|
| dev | virt-manager | |
|
||||||
| dev | dnsmasq | |
|
| dev | libvirt | |
|
||||||
| dev | git-filter-repo | |
|
| dev | git-filter-repo | |
|
||||||
| dev | node | |
|
| dev | nodejs | |
|
||||||
| dev | openjdk:jdk | |
|
| dev | jdk21-openjdk | |
|
||||||
| dev | go | |
|
| dev | go | |
|
||||||
| dev | gopls | |
|
| dev | gopls | |
|
||||||
| dev | pkg-config | |
|
| dev | pkgconf | |
|
||||||
| dev | gcc-toolchain | |
|
| dev | gcc | |
|
||||||
|
| dev | cmake | |
|
||||||
| dev | lua | |
|
| dev | lua | |
|
||||||
| dev | libfaketime | |
|
| dev | libfaketime | |
|
||||||
| dev | hugo-extended | |
|
| dev | hugo | |
|
||||||
| dev | make | |
|
| dev | make | |
|
||||||
| dev | sbcl | t |
|
|
||||||
| dev | git-lfs | |
|
| dev | git-lfs | |
|
||||||
| dev | mysql | t |
|
|
||||||
| dev | gource | |
|
| dev | gource | |
|
||||||
| dev | php | |
|
| dev | php | |
|
||||||
| dev | python | |
|
| dev | python | |
|
||||||
|
| dev | python-pip | |
|
||||||
| dev | python-virtualenv | |
|
| dev | python-virtualenv | |
|
||||||
| dev | leiningen | |
|
| dev | python-build | |
|
||||||
| dev | socat | |
|
| dev | socat | |
|
||||||
| dev | wireshark | |
|
| dev | wireshark-qt | |
|
||||||
| dev | python-chess | |
|
| dev | git | |
|
||||||
| dev | python-cairosvg | |
|
| dev | rust | |
|
||||||
** Manifests
|
** Manifests
|
||||||
#+NAME: packages
|
#+NAME: packages
|
||||||
#+begin_src emacs-lisp :tangle no :var category=""
|
#+begin_src emacs-lisp :tangle no :var category=""
|
||||||
(my/format-guix-dependencies category)
|
(my/format-arch-dependencies category)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Dev
|
Dev
|
||||||
#+begin_src scheme :tangle .config/guix/manifests/dev.scm :noweb yes
|
#+begin_src scheme :tangle .config/metapac/groups/dev.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages("dev")>>
|
||||||
'(
|
|
||||||
<<packages("dev")>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Browsers
|
Browsers
|
||||||
#+begin_src scheme :tangle .config/guix/manifests/browsers.scm :noweb yes
|
#+begin_src scheme :tangle .config/metapac/groups/browsers.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages("browsers")>>
|
||||||
'(
|
|
||||||
<<packages("browsers")>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Music
|
Music
|
||||||
#+begin_src scheme :tangle .config/guix/manifests/music.scm :noweb yes
|
#+begin_src scheme :tangle .config/metapac/groups/music.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages("music")>>
|
||||||
'(
|
|
||||||
<<packages("music")>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Office
|
Office
|
||||||
#+begin_src scheme :tangle .config/guix/manifests/office.scm :noweb yes
|
#+begin_src scheme :tangle .config/metapac/groups/office.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages("office")>>
|
||||||
'(
|
|
||||||
<<packages("office")>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
LaTeX
|
LaTeX
|
||||||
#+begin_src scheme :tangle .config/guix/manifests/latex.scm :noweb yes
|
#+begin_src scheme :tangle .config/metapac/groups/latex.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages("latex")>>
|
||||||
'(
|
|
||||||
<<packages("latex")>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Desktop Misc
|
Desktop Misc
|
||||||
#+begin_src scheme :tangle .config/guix/manifests/desktop-misc.scm :noweb yes
|
#+begin_src scheme :tangle .config/metapac/groups/desktop-misc.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages("desktop-misc")>>
|
||||||
'(
|
|
||||||
<<packages("desktop-misc")>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Desktop polybar
|
Desktop polybar
|
||||||
#+begin_src scheme :tangle .config/guix/manifests/desktop-polybar.scm :noweb yes
|
#+begin_src scheme :tangle .config/metapac/groups/desktop-polybar.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages("desktop-polybar")>>
|
||||||
'(
|
|
||||||
<<packages("desktop-polybar")>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Desktop rofi
|
Desktop rofi
|
||||||
#+begin_src scheme :tangle .config/guix/manifests/desktop-rofi.scm :noweb yes
|
#+begin_src scheme :tangle .config/metapac/groups/desktop-rofi.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages("desktop-rofi")>>
|
||||||
'(
|
|
||||||
<<packages("desktop-rofi")>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
** Flatpak
|
** Flatpak
|
||||||
A lot of proprietary desktop applications can be installed most easily with flatpak & flathub.
|
A lot of proprietary desktop applications can be installed most easily with flatpak & flathub.
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|--------------------|
|
|--------------------|
|
||||||
| flatpak |
|
| flatpak |
|
||||||
| xdg-desktop-portal |
|
| xdg-desktop-portal |
|
||||||
|
|
@ -4348,8 +4348,6 @@ Packages to install:
|
||||||
| Flatpak dependency | Channel |
|
| Flatpak dependency | Channel |
|
||||||
|------------------------------+---------|
|
|------------------------------+---------|
|
||||||
| com.github.wwmm.pulseeffects | flathub |
|
| com.github.wwmm.pulseeffects | flathub |
|
||||||
| com.discordapp.Discord | flathub |
|
|
||||||
| com.jetbrains.DataGrip | flathub |
|
|
||||||
| chat.rocket.RocketChat | flathub |
|
| chat.rocket.RocketChat | flathub |
|
||||||
|
|
||||||
#+begin_src emacs-lisp :var table=flatpak-deps :wrap example
|
#+begin_src emacs-lisp :var table=flatpak-deps :wrap example
|
||||||
|
|
@ -4362,50 +4360,21 @@ Packages to install:
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
#+begin_example
|
#+begin_example
|
||||||
flatpak install -y --user flathub com.github.wwmm.pulseeffects
|
flatpak install -y --user flathub com.github.wwmm.pulseeffects
|
||||||
flatpak install -y --user flathub com.discordapp.Discord
|
flatpak install -y --user flathub chat.rocket.RocketChat
|
||||||
flatpak install -y --user flathub us.zoom.Zoom
|
|
||||||
flatpak install -y --user flathub com.slack.Slack
|
|
||||||
#+end_example
|
#+end_example
|
||||||
** Nix
|
|
||||||
| Type | Description |
|
|
||||||
|------+--------------------|
|
|
||||||
| TODO | Make nix manifest? |
|
|
||||||
|
|
||||||
I probably should've used nix, as almost every program I packaged so far exists in the Nix repo.
|
|
||||||
|
|
||||||
But it's easy enough to use Nix on Guix.
|
|
||||||
#+begin_src conf :tangle ~/.nix-channels
|
|
||||||
https://nixos.org/channels/nixpkgs-unstable nixpkgs
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Don't forget to run the following after the first installation:
|
|
||||||
#+begin_src sh
|
|
||||||
nix-channel --update
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Installing packages:
|
|
||||||
#+begin_src
|
|
||||||
nix-env -i slack
|
|
||||||
#+end_src
|
|
||||||
* Services
|
* Services
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args+: :tangle ~/.config/shepherd/init.scm
|
:header-args+: :tangle ~/.config/shepherd/init.scm
|
||||||
:END:
|
:END:
|
||||||
[[https://www.gnu.org/software/shepherd/manual/html_node/index.html][GNU Shepherd]] is a service management system for GNU Guix.
|
[[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.
|
||||||
|
|
||||||
I previously used supervisor, but shepherd also seems pretty capable.
|
|
||||||
|
|
||||||
| Guix dependency |
|
|
||||||
|-----------------|
|
|
||||||
| shepherd |
|
|
||||||
|
|
||||||
** Music
|
** Music
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency |
|
||||||
|----------+-----------------|
|
|----------+-----------------|
|
||||||
| music | mpd |
|
| music | mpd |
|
||||||
| music | ncmpcpp |
|
| music | ncmpcpp |
|
||||||
| music | picard |
|
| music | picard |
|
||||||
| music | mpd-mpc |
|
| music | mpc |
|
||||||
| music | shntool |
|
| music | shntool |
|
||||||
| music | cuetools |
|
| music | cuetools |
|
||||||
| music | flac |
|
| music | flac |
|
||||||
|
|
@ -4454,7 +4423,7 @@ MPD watcher
|
||||||
** ActivityWatch
|
** ActivityWatch
|
||||||
[[https://activitywatch.net/][ActivityWatch]] is a FOSS time tracker. It tracks screen and application usage and has integrations with browsers, Emacs, etc.
|
[[https://activitywatch.net/][ActivityWatch]] is a FOSS time tracker. It tracks screen and application usage and has integrations with browsers, Emacs, etc.
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-------------------|
|
|-------------------|
|
||||||
| activitywatch-bin |
|
| activitywatch-bin |
|
||||||
|
|
||||||
|
|
@ -4543,7 +4512,7 @@ Launch an authentication agent. Necessary for stuff like =pkexec=. I suspect I'm
|
||||||
(make <service>
|
(make <service>
|
||||||
#:provides '(polkit-gnome)
|
#:provides '(polkit-gnome)
|
||||||
#:respawn? #t
|
#:respawn? #t
|
||||||
#:start (make-forkexec-constructor '("/home/pavel/.guix-extra-profiles/desktop-misc/desktop-misc/libexec/polkit-gnome-authentication-agent-1"))
|
#:start (make-forkexec-constructor '("/lib/polkit-gnome/polkit-gnome-authentication-agent-1"))
|
||||||
#:stop (make-kill-destructor)))
|
#:stop (make-kill-destructor)))
|
||||||
#+end_src
|
#+end_src
|
||||||
** Xmodmap
|
** Xmodmap
|
||||||
|
|
@ -4586,11 +4555,6 @@ Run my [[file:Guix.org::*OpenVPN][OpenVPN setup]]. Not lauching this automatiall
|
||||||
** opensnitch
|
** opensnitch
|
||||||
[[https://github.com/evilsocket/opensnitch][opensnitch]] is a linux firewall.
|
[[https://github.com/evilsocket/opensnitch][opensnitch]] is a linux firewall.
|
||||||
|
|
||||||
Install it via nix:
|
|
||||||
#+begin_src bash :tangle no
|
|
||||||
nix-env -I opensnitchd opensnitch-ui
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
=sudoers= has to be modified this to work.
|
=sudoers= has to be modified this to work.
|
||||||
#+begin_src scheme
|
#+begin_src scheme
|
||||||
(define opensnitchd
|
(define opensnitchd
|
||||||
|
|
@ -4670,45 +4634,40 @@ Run services
|
||||||
;; opensnitch-ui
|
;; opensnitch-ui
|
||||||
))
|
))
|
||||||
#+end_src
|
#+end_src
|
||||||
* Guix settings
|
* Acch settings
|
||||||
Other desktop programs I use are listed below.
|
Other desktop programs I use are listed below.
|
||||||
|
|
||||||
| Category | Guix dependency | Description |
|
| Category | Arch dependency | Description |
|
||||||
|--------------+------------------------+-------------------------------------------|
|
|--------------+------------------------+-------------------------------------------|
|
||||||
| desktop-misc | xprop | Tool to display properties of X windows |
|
| desktop-misc | xorg-xprop | Tool to display properties of X windows |
|
||||||
| desktop-misc | arandr | GUI to xrandr |
|
| desktop-misc | arandr | GUI to xrandr |
|
||||||
| desktop-misc | light | Control screen brightness |
|
| desktop-misc | light | Control screen brightness |
|
||||||
| desktop-misc | ponymix | Control PulseAudio CLI |
|
|
||||||
| desktop-misc | pavucontrol | Control PulseAudio GUI |
|
| desktop-misc | pavucontrol | Control PulseAudio GUI |
|
||||||
| desktop-misc | network-manager-applet | Applet to manage network connections |
|
| desktop-misc | network-manager-applet | Applet to manage network connections |
|
||||||
| desktop-misc | xmodmap | Program to modify keybindings on X server |
|
| desktop-misc | xorg-xmodmap | Program to modify keybindings on X server |
|
||||||
| desktop-misc | fontconfig | |
|
| desktop-misc | fontconfig | |
|
||||||
| desktop-misc | polkit-gnome | Polkit authentication agent |
|
| desktop-misc | polkit-gnome | Polkit authentication agent |
|
||||||
| desktop-misc | feh | Image viewer. Used to set background |
|
| desktop-misc | feh | Image viewer. Used to set background |
|
||||||
| desktop-misc | geeqie | Image viewer |
|
|
||||||
| desktop-misc | copyq | Clipboard manager |
|
| desktop-misc | copyq | Clipboard manager |
|
||||||
| desktop-misc | thunar | My preferred GUI file manager |
|
| desktop-misc | thunar | My preferred GUI file manager |
|
||||||
| desktop-misc | xdg-utils | gives xdg-open and stuff |
|
| desktop-misc | xdg-utils | gives xdg-open and stuff |
|
||||||
| desktop-misc | gnome-font-viewer | view fonts |
|
| desktop-misc | gnome-font-viewer | view fonts |
|
||||||
| desktop-misc | qbittorrent | torrent client |
|
| desktop-misc | qbittorrent | torrent client |
|
||||||
| desktop-misc | anydesk | Remote desktop software |
|
| desktop-misc | anydesk-bin | Remote desktop software |
|
||||||
| desktop-misc | gnome-disk-utility | Manage disks |
|
| desktop-misc | gnome-disk-utility | Manage disks |
|
||||||
| desktop-misc | gparted | Manage partitions |
|
| desktop-misc | gparted | Manage partitions |
|
||||||
| desktop-misc | xev | Test input |
|
| desktop-misc | xorg-xev | Test input |
|
||||||
| desktop-misc | bluez | Provides bluetoothctl |
|
| desktop-misc | bluez | Provides bluetoothctl |
|
||||||
| desktop-misc | telegram-desktop | |
|
| desktop-misc | telegram-desktop | |
|
||||||
| desktop-misc | font-google-noto-emoji | |
|
| desktop-misc | noto-fonts-emoji | |
|
||||||
| desktop-misc | remmina | |
|
| desktop-misc | remmina | |
|
||||||
| desktop-misc | android-file-transfer | |
|
| desktop-misc | android-file-transfer | |
|
||||||
| desktop-misc | mcron | |
|
|
||||||
|
|
||||||
#+NAME: packages
|
#+NAME: packages
|
||||||
#+begin_src emacs-lisp :tangle no
|
#+begin_src emacs-lisp :tangle no
|
||||||
(my/format-guix-dependencies)
|
(my/format-arch-dependencies)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src scheme :tangle .config/guix/manifests/desktop.scm :noweb yes
|
#+begin_src scheme :tangle .config/metapac/groups/desktop.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages()>>
|
||||||
'(
|
|
||||||
<<packages()>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
|
||||||
146
Emacs.org
146
Emacs.org
|
|
@ -85,6 +85,11 @@ First things first, lexical binding.
|
||||||
;;; -*- lexical-binding: t -*-
|
;;; -*- lexical-binding: t -*-
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
Adding =emacs= to the package list.
|
||||||
|
| Arch dependency |
|
||||||
|
|-----------------|
|
||||||
|
| emacs |
|
||||||
|
|
||||||
** straight.el
|
** straight.el
|
||||||
Straight.el is my Emacs package manager of choice. The following is its bootstrap script.
|
Straight.el is my Emacs package manager of choice. The following is its bootstrap script.
|
||||||
|
|
||||||
|
|
@ -1363,7 +1368,7 @@ References:
|
||||||
|
|
||||||
I also want to call =xkb-switch= in EXWM buffers with the same keybindig.
|
I also want to call =xkb-switch= in EXWM buffers with the same keybindig.
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| xkb-switch |
|
| xkb-switch |
|
||||||
|
|
||||||
|
|
@ -1562,9 +1567,9 @@ A few CLI alternatives:
|
||||||
:commands (git-timemachine))
|
:commands (git-timemachine))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| difftastic-bin |
|
| difftastic |
|
||||||
|
|
||||||
[[https://github.com/pkryger/difftastic.el][difftastic.el]] is a wrapper package for [[https://difftastic.wilfred.me.uk/][difftastic]].
|
[[https://github.com/pkryger/difftastic.el][difftastic.el]] is a wrapper package for [[https://difftastic.wilfred.me.uk/][difftastic]].
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
|
|
@ -2081,7 +2086,7 @@ References:
|
||||||
:MODULE_NAME: wakatime
|
:MODULE_NAME: wakatime
|
||||||
:header-args:emacs-lisp: :tangle /home/pavel/.emacs.d/modules/sqrt-wakatime.el :comments links
|
:header-args:emacs-lisp: :tangle /home/pavel/.emacs.d/modules/sqrt-wakatime.el :comments links
|
||||||
:END:
|
:END:
|
||||||
Before I figure out how to package this for Guix:
|
Before I figure out how to package this for +Guix+ Arch:
|
||||||
- Clone [[https://github.com/wakatime/wakatime-cli][the repo]]
|
- Clone [[https://github.com/wakatime/wakatime-cli][the repo]]
|
||||||
- Run ~go build~
|
- Run ~go build~
|
||||||
- Copy the binary to the =~/bin= folder
|
- Copy the binary to the =~/bin= folder
|
||||||
|
|
@ -4152,7 +4157,7 @@ Section snippets. The code turned out to be more complicated than just writing t
|
||||||
:straight t)
|
:straight t)
|
||||||
#+end_src
|
#+end_src
|
||||||
*** PlantUML
|
*** PlantUML
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| plantuml |
|
| plantuml |
|
||||||
|
|
||||||
|
|
@ -4462,9 +4467,9 @@ Automatically creates & manages virtualenvs and stores data in =Pipfile= and =Pi
|
||||||
*** OFF (OFF) yapf
|
*** OFF (OFF) yapf
|
||||||
[[https://github.com/google/yapf][yapf]] is a formatter for Python files.
|
[[https://github.com/google/yapf][yapf]] is a formatter for Python files.
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| python-yapf |
|
| yapf |
|
||||||
|
|
||||||
References:
|
References:
|
||||||
- [[https://github.com/google/yapf][yapf repo]]
|
- [[https://github.com/google/yapf][yapf repo]]
|
||||||
|
|
@ -4488,7 +4493,7 @@ column_limit = 80
|
||||||
*** black
|
*** black
|
||||||
[[https://github.com/psf/black][black]] is a formatter for Python files.
|
[[https://github.com/psf/black][black]] is a formatter for Python files.
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| python-black |
|
| python-black |
|
||||||
|
|
||||||
|
|
@ -4503,7 +4508,7 @@ column_limit = 80
|
||||||
*** isort
|
*** isort
|
||||||
[[https://github.com/PyCQA/isort][isort]] is a Python package to sort Python imports.
|
[[https://github.com/PyCQA/isort][isort]] is a Python package to sort Python imports.
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| python-isort |
|
| python-isort |
|
||||||
|
|
||||||
|
|
@ -4626,7 +4631,7 @@ To fix that, I've modified the following function in the =python-pytest= package
|
||||||
*** code-cells
|
*** code-cells
|
||||||
Support for text with magic comments.
|
Support for text with magic comments.
|
||||||
|
|
||||||
| Guix dependency | Disabled |
|
| Arch dependency | Disabled |
|
||||||
|-----------------+----------|
|
|-----------------+----------|
|
||||||
| python-jupytext | t |
|
| python-jupytext | t |
|
||||||
|
|
||||||
|
|
@ -4899,7 +4904,7 @@ Emacs integration for [[http://gnuplot.info/][gnuplot]].
|
||||||
:header-args:emacs-lisp: :tangle /home/pavel/.emacs.d/modules/sqrt-misc-programming.el :comments links
|
:header-args:emacs-lisp: :tangle /home/pavel/.emacs.d/modules/sqrt-misc-programming.el :comments links
|
||||||
:END:
|
:END:
|
||||||
*** C#
|
*** C#
|
||||||
| Guix dependencies | Disabled |
|
| Arch dependencies | Disabled |
|
||||||
|-------------------+----------|
|
|-------------------+----------|
|
||||||
| omnisharp | t |
|
| omnisharp | t |
|
||||||
| dotnet | t |
|
| dotnet | t |
|
||||||
|
|
@ -7143,9 +7148,8 @@ Some resources that helped me along the way (and still help):
|
||||||
- [[https://www.youtube.com/watch?v=-TpWahIzueg][System Crafters Live! - Can You Apply Zettelkasten in Emacs?]]
|
- [[https://www.youtube.com/watch?v=-TpWahIzueg][System Crafters Live! - Can You Apply Zettelkasten in Emacs?]]
|
||||||
|
|
||||||
**** Basic package configuration
|
**** Basic package configuration
|
||||||
| Guix dependency | Disabled |
|
| Arch dependency | Disabled |
|
||||||
|-----------------------+----------|
|
|-----------------------+----------|
|
||||||
| emacs-emacsql-sqlite3 | t |
|
|
||||||
| graphviz | |
|
| graphviz | |
|
||||||
|
|
||||||
About installing the package on Guix (*CREDIT*: thanks @Ashraz on the SystemCrafters discord)
|
About installing the package on Guix (*CREDIT*: thanks @Ashraz on the SystemCrafters discord)
|
||||||
|
|
@ -8053,10 +8057,10 @@ No idea why, but somehow the exported file uses english words if there isn't =:d
|
||||||
** System configuration
|
** System configuration
|
||||||
Functions related to literate configuration.
|
Functions related to literate configuration.
|
||||||
|
|
||||||
*** Tables for Guix Dependencies
|
*** Tables for Arch Dependencies
|
||||||
This section deals with using [[https://guix.gnu.org/en/cookbook/en/html_node/Advanced-package-management.html#Advanced-package-management][using profiles in GNU Guix]].
|
I used to use [[https://guix.gnu.org/en/cookbook/en/html_node/Advanced-package-management.html#Advanced-package-management][profiles in GNU Guix]]. Now that I've switched to [[https://github.com/ripytide/metapac][metapac]], I want to keep the same approach.
|
||||||
|
|
||||||
A "profile" in Guix is a way to group package installations. For instance, I have a "music" profile that has software like [[https://www.musicpd.org/][MPD]], [[https://github.com/ncmpcpp/ncmpcpp][ncmpcpp]] that I'm still occasionally using because of its tag editor, etc. Corresponding to that profile, there's a manifest named =music.scm= that looks like this:
|
A "profile" (metapac calls them "groups") is a way to group package installations. For instance, I have a "music" profile that has software like [[https://www.musicpd.org/][MPD]], [[https://github.com/ncmpcpp/ncmpcpp][ncmpcpp]] that I'm still occasionally using because of its tag editor, etc. In Guix, corresponding to that profile, there's a manifest named =music.scm= that looks like this:
|
||||||
#+begin_src scheme
|
#+begin_src scheme
|
||||||
(specifications->manifest
|
(specifications->manifest
|
||||||
'(
|
'(
|
||||||
|
|
@ -8070,12 +8074,12 @@ A "profile" in Guix is a way to group package installations. For instance, I hav
|
||||||
"mpd"))
|
"mpd"))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
I could generate this file with =org-babel= as any other, but that is often not so convenient. For example, I have a [[https://github.com/polybar/polybar][polybar]] module that uses [[https://github.com/risacher/sunwait][sunwait]] to show sunset and sunrise times, and ideally, I want to declare =sunwait= to be in the "desktop-polybar" profile in the same section that has the polybar module definition and the bash script.
|
Metapac stores the same info in TOML. I could generate this file with =org-babel= as any other, but that is often not so convenient. For example, I have a [[https://github.com/polybar/polybar][polybar]] module that uses [[https://github.com/risacher/sunwait][sunwait]] to show sunset and sunrise times, and ideally, I want to declare =sunwait= to be in the "desktop-polybar" profile in the same section that has the polybar module definition and the bash script.
|
||||||
|
|
||||||
So here's an approach I came up with. The relevant section of the config looks like this:
|
So here's an approach I came up with. The relevant section of the config looks like this:
|
||||||
#+begin_example
|
#+begin_example
|
||||||
,*** sun
|
,*** sun
|
||||||
| Category | Guix dependency |
|
| Category | Arch dependency |
|
||||||
|-----------------+-----------------|
|
|-----------------+-----------------|
|
||||||
| desktop-polybar | sunwait |
|
| desktop-polybar | sunwait |
|
||||||
|
|
||||||
|
|
@ -8090,17 +8094,18 @@ Prints out the time of sunrise/sunset. Uses [[https://github.com/risacher/sunwai
|
||||||
,#+end_src
|
,#+end_src
|
||||||
#+end_example
|
#+end_example
|
||||||
|
|
||||||
So =sunwait= is declared in an Org table with =Guix dependency= in the header. Such tables are spread through my configuration files.
|
So =sunwait= is declared in an Org table with =Arch dependency= in the header. Such tables are spread through my configuration files.
|
||||||
|
|
||||||
Thus I made a function that extracts packages from all such tables from the current Org buffer. The rules are as follows:
|
Thus I made a function that extracts packages from all such tables from the current Org buffer. The rules are as follows:
|
||||||
- If a column name matches =[G|g]uix.*dep=, its contents are added to the result.
|
- If a column name matches =[A|a]rch.*dep=, its contents are added to the result.
|
||||||
- If =CATEGORY= is passed, a column with name =[C|c]ategory= is used to filter results. That way, one Org file can be used to produce multiple manifests.
|
- If =CATEGORY= is passed, a column with name =[C|c]ategory= is used to filter results. That way, one Org file can be used to produce multiple manifests.
|
||||||
- If =CATEGORY= is not passed, entries with the non-empty category are filtered out
|
- If =CATEGORY= is not passed, entries with the non-empty category are filtered out
|
||||||
- If there is a =[D|d]isabled= column, entries that have a non-empty value in this column are filtered out.
|
- If there is a =[D|d]isabled= column, entries that have a non-empty value in this column are filtered out.
|
||||||
|
- If there is a =[S|s]ource= column, it selects the backend for metapac, which is =arch= by default.
|
||||||
|
|
||||||
And here is the implementation:
|
And here is the implementation:
|
||||||
#+begin_src emacs-lisp :noweb-ref guix-tables
|
#+begin_src emacs-lisp :noweb-ref guix-tables
|
||||||
(defun my/extract-guix-dependencies (&optional category)
|
(defun my/extract-arch-dependencies (&optional category)
|
||||||
(let ((dependencies '()))
|
(let ((dependencies '()))
|
||||||
(org-table-map-tables
|
(org-table-map-tables
|
||||||
(lambda ()
|
(lambda ()
|
||||||
|
|
@ -8113,7 +8118,7 @@ And here is the implementation:
|
||||||
nil
|
nil
|
||||||
(mapcar #'substring-no-properties (nth 0 table))
|
(mapcar #'substring-no-properties (nth 0 table))
|
||||||
:test (lambda (_ elem)
|
:test (lambda (_ elem)
|
||||||
(string-match-p "[G|g]uix.*dep" elem))))
|
(string-match-p "[A|a]rch.*dep" elem))))
|
||||||
(category-name-index
|
(category-name-index
|
||||||
(cl-position
|
(cl-position
|
||||||
nil
|
nil
|
||||||
|
|
@ -8125,7 +8130,13 @@ And here is the implementation:
|
||||||
nil
|
nil
|
||||||
(mapcar #'substring-no-properties (nth 0 table))
|
(mapcar #'substring-no-properties (nth 0 table))
|
||||||
:test (lambda (_ elem)
|
:test (lambda (_ elem)
|
||||||
(string-match-p ".*[D|d]isabled.*" elem)))))
|
(string-match-p ".*[D|d]isabled.*" elem))))
|
||||||
|
(source-index
|
||||||
|
(cl-position
|
||||||
|
nil
|
||||||
|
(mapcar #'substring-no-properties (nth 0 table))
|
||||||
|
:test (lambda (_ elem)
|
||||||
|
(string-match-p ".*[S|s]ource.*" elem)))))
|
||||||
(when dep-name-index
|
(when dep-name-index
|
||||||
(dolist (elem (cdr table))
|
(dolist (elem (cdr table))
|
||||||
(when
|
(when
|
||||||
|
|
@ -8145,47 +8156,48 @@ And here is the implementation:
|
||||||
(or
|
(or
|
||||||
(not disabled-name-index)
|
(not disabled-name-index)
|
||||||
(string-empty-p (nth disabled-name-index elem))))
|
(string-empty-p (nth disabled-name-index elem))))
|
||||||
(add-to-list
|
(let ((source
|
||||||
'dependencies
|
(or
|
||||||
(substring-no-properties (nth dep-name-index elem)))))))))
|
(when (and source-index
|
||||||
|
(not (string-empty-p (nth source-index elem))))
|
||||||
|
(substring-no-properties
|
||||||
|
(nth source-index elem)))
|
||||||
|
"arch")))
|
||||||
|
(push
|
||||||
|
(substring-no-properties (nth dep-name-index elem))
|
||||||
|
(alist-get source dependencies nil nil #'equal)))))))))
|
||||||
dependencies))
|
dependencies))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
To make it work in the configuration, it is necessary to format the list so that Scheme could read it:
|
To make it work in the configuration, it is necessary to format the list in the TOML format. Unfortunately, there doesn't seems to be a TOML generator for Elisp.
|
||||||
#+begin_src emacs-lisp :noweb-ref guix-tables
|
#+begin_src emacs-lisp :noweb-ref guix-tables
|
||||||
(defun my/format-guix-dependencies (&optional category)
|
(defun my/format-arch-dependencies (&optional category)
|
||||||
(mapconcat
|
(let ((data (my/extract-arch-dependencies category)))
|
||||||
(lambda (e) (concat "\"" e "\""))
|
(with-temp-buffer
|
||||||
(my/extract-guix-dependencies category)
|
(cl-loop for (backend . packages) in data
|
||||||
"\n"))
|
do (insert (format "%s = [\n" backend)
|
||||||
|
(mapconcat (lambda (package)
|
||||||
|
(format "\"%s\"," package))
|
||||||
|
packages
|
||||||
|
"\n")
|
||||||
|
"]"))
|
||||||
|
(buffer-string))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
And we need an Org snippet such as this:
|
And we need an Org snippet such as this:
|
||||||
#+begin_example
|
#+begin_example
|
||||||
#+NAME: packages
|
#+NAME: packages
|
||||||
#+begin_src emacs-lisp :tangle no :var category=""
|
#+begin_src emacs-lisp :tangle no :var category=""
|
||||||
(my/format-guix-dependencies category)
|
(my/format-arch-dependencies category)
|
||||||
#+end_src
|
#+end_src
|
||||||
#+end_example
|
#+end_example
|
||||||
|
|
||||||
Now, creating a manifest, for example, for the =desktop-polybar= profile is as simple as:
|
Now, creating a manifest, for example, for the =desktop-polybar= profile is as simple as:
|
||||||
#+begin_example
|
#+begin_example
|
||||||
#+begin_src scheme :tangle ~/.config/guix/manifests/desktop-polybar.scm :noweb yes
|
#+begin_src scheme :tangle ~/.config/metapac/groups/desktop-polybar.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages("desktop-polybar")>>
|
||||||
'(
|
|
||||||
<<packages("desktop-polybar")>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
#+end_example
|
#+end_example
|
||||||
|
|
||||||
There's a newline symbol between "(" and =<<packages("desktop-polybar")>>= because whenever a noweb expression expands into multiple lines, for each new line noweb duplicates contents between the start of the line and the start of the expression.
|
|
||||||
|
|
||||||
One reason this is so is to support languages where indentation is a part of the syntax, for instance, Python:
|
|
||||||
#+begin_src python
|
|
||||||
class TestClass:
|
|
||||||
<<class-contents>>
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
So every line of =<<class-contents>>= will be indented appropriately. In our case though, it is a minor inconvenience to be aware of.
|
|
||||||
*** Noweb evaluations
|
*** Noweb evaluations
|
||||||
One note is that by default running these commands will require the user to confirm evaluation of each code block. To avoid that, I set =org-confirm-babel-evaluate= to =nil=:
|
One note is that by default running these commands will require the user to confirm evaluation of each code block. To avoid that, I set =org-confirm-babel-evaluate= to =nil=:
|
||||||
|
|
||||||
|
|
@ -8196,6 +8208,7 @@ One note is that by default running these commands will require the user to conf
|
||||||
'("~/Emacs.org"
|
'("~/Emacs.org"
|
||||||
"~/Desktop.org"
|
"~/Desktop.org"
|
||||||
"~/Console.org"
|
"~/Console.org"
|
||||||
|
"~/Arch.org"
|
||||||
"~/Guix.org"
|
"~/Guix.org"
|
||||||
"~/Mail.org")))
|
"~/Mail.org")))
|
||||||
|
|
||||||
|
|
@ -9739,7 +9752,7 @@ Now, a function to add a YouTube link with metadata from elfeed to EMMS.
|
||||||
*** rdrview
|
*** rdrview
|
||||||
[[https://github.com/eafer/rdrview][rdrview]] is a command-line tool to strip webpages from clutter, extracting only parts related to the actual content. It's a standalone port of the corresponding feature of Firefox, called [[https://support.mozilla.org/en-US/kb/firefox-reader-view-clutter-free-web-pages][Reader View]].
|
[[https://github.com/eafer/rdrview][rdrview]] is a command-line tool to strip webpages from clutter, extracting only parts related to the actual content. It's a standalone port of the corresponding feature of Firefox, called [[https://support.mozilla.org/en-US/kb/firefox-reader-view-clutter-free-web-pages][Reader View]].
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| rdrview |
|
| rdrview |
|
||||||
|
|
||||||
|
|
@ -10086,7 +10099,7 @@ However, sans the pictures issue, for certain sites like Wikipedia this is usabl
|
||||||
**** Getting subtitles
|
**** Getting subtitles
|
||||||
Finally, let's get to transcripts.
|
Finally, let's get to transcripts.
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-------------------------------|
|
|-------------------------------|
|
||||||
| python-youtube-transcript-api |
|
| python-youtube-transcript-api |
|
||||||
|
|
||||||
|
|
@ -10394,7 +10407,7 @@ After all this is done, run =M-x emms-cache-set-from-mpd-all= to set cache from
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:emacs-lisp: :tangle no :noweb-ref emms-mpv-setup
|
:header-args:emacs-lisp: :tangle no :noweb-ref emms-mpv-setup
|
||||||
:END:
|
:END:
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| mpv |
|
| mpv |
|
||||||
| yt-dlp |
|
| yt-dlp |
|
||||||
|
|
@ -11339,16 +11352,14 @@ Or you can load up Element for a moment to see what the mention was, if that's e
|
||||||
:END:
|
:END:
|
||||||
[[https://github.com/zevlg/telega.el/][telega.el]] is a Telegam client for Emacs.
|
[[https://github.com/zevlg/telega.el/][telega.el]] is a Telegam client for Emacs.
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency | Disabled |
|
||||||
|--------------------|
|
|--------------------+----------|
|
||||||
| emacs-telega-sever |
|
| emacs-telega-sever | t |
|
||||||
| font-gnu-unifont |
|
| ttf-unifont | |
|
||||||
| font-gnu-freefont |
|
| gnu-free-fonts | |
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package telega
|
(use-package telega
|
||||||
;; :straight (:type built-in)
|
|
||||||
;; For now emacs-telega-server is compatible with the latest telega.el
|
|
||||||
:straight t
|
:straight t
|
||||||
:commands (telega)
|
:commands (telega)
|
||||||
:init
|
:init
|
||||||
|
|
@ -11888,7 +11899,7 @@ I previously used [[https://github.com/ggerganov/whisper.cpp][whisper.cpp]] by G
|
||||||
|
|
||||||
One disadvantage is that it doesn't produce human-readable output by default, so I make my own.
|
One disadvantage is that it doesn't produce human-readable output by default, so I make my own.
|
||||||
|
|
||||||
| Guix dependency | Disabled |
|
| Arch dependency | Disabled |
|
||||||
|-----------------+----------|
|
|-----------------+----------|
|
||||||
| whisper-cpp | t |
|
| whisper-cpp | t |
|
||||||
|
|
||||||
|
|
@ -13279,7 +13290,7 @@ My package for doing Pomodoro timer.
|
||||||
*** hledger
|
*** hledger
|
||||||
[[hledger.org/][hledger]] is a plain-text double-entry accounting software. I use it for managing my personal finances, and thus far it's great.
|
[[hledger.org/][hledger]] is a plain-text double-entry accounting software. I use it for managing my personal finances, and thus far it's great.
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| hledger |
|
| hledger |
|
||||||
|
|
||||||
|
|
@ -13818,22 +13829,19 @@ My text editor isn't old enough.
|
||||||
:straight (:host github :repo "ryanprior/ed-mode")
|
:straight (:host github :repo "ryanprior/ed-mode")
|
||||||
:commands (ed))
|
:commands (ed))
|
||||||
#+end_src
|
#+end_src
|
||||||
* Guix settings
|
* Arch settings
|
||||||
| Guix dependency | Description |
|
| Arch dependency | Description |
|
||||||
|---------------------+-------------------------------|
|
|---------------------+-------------------------------|
|
||||||
| emacs-vterm | The vterm package |
|
|
||||||
| ripgrep | A recursive search tool |
|
| ripgrep | A recursive search tool |
|
||||||
| the-silver-searcher | Another recursive search tool |
|
| the_silver_searcher | Another recursive search tool |
|
||||||
| texinfo | |
|
| texinfo | |
|
||||||
|
|
||||||
#+NAME: packages
|
#+NAME: packages
|
||||||
#+begin_src emacs-lisp :tangle no
|
#+begin_src emacs-lisp :tangle no
|
||||||
(when (fboundp #'my/format-guix-dependencies)
|
(when (fboundp #'my/format-arch-dependencies)
|
||||||
(my/format-guix-dependencies))
|
(my/format-arch-dependencies))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src scheme :tangle .config/guix/manifests/emacs.scm :noweb yes
|
#+begin_src scheme :tangle .config/metapac/groups/emacs.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages()>>
|
||||||
'("emacs"
|
|
||||||
<<packages()>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
|
||||||
34
Mail.org
34
Mail.org
|
|
@ -19,9 +19,9 @@ References:
|
||||||
- [[https://sqrtminusone.xyz/posts/2021-02-27-gmail/][My post]] about email configuration. I wrote it some time ago, but the general idea remains.
|
- [[https://sqrtminusone.xyz/posts/2021-02-27-gmail/][My post]] about email configuration. I wrote it some time ago, but the general idea remains.
|
||||||
|
|
||||||
* Lieer
|
* Lieer
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| python-lieer |
|
| lieer-git |
|
||||||
|
|
||||||
Lieer is a program to link up Gmail and notmuch. Basically, it downloads mail from Gmail via API, stores them in Maildir, and synchronizes labels with notmuch.
|
Lieer is a program to link up Gmail and notmuch. Basically, it downloads mail from Gmail via API, stores them in Maildir, and synchronizes labels with notmuch.
|
||||||
|
|
||||||
|
|
@ -40,7 +40,13 @@ gmi set --ignore-tags-local new
|
||||||
|
|
||||||
Running =gmi sync= in the required directory performs the synchronization. The first sync takes a while, the subsequent syncs are pretty fast.
|
Running =gmi sync= in the required directory performs the synchronization. The first sync takes a while, the subsequent syncs are pretty fast.
|
||||||
* DavMail
|
* DavMail
|
||||||
[[davmail.sourceforge.net][DavMail]] is a gateway between MS Exchange and the rest of the world, which uses IMAP/SMTP/LDAP/etc. As I have one corporate MS Exchange address, this is just the program I need. As of yet, it isn't packaged for Guix, but it's easy enough to download.
|
[[davmail.sourceforge.net][DavMail]] is a gateway between MS Exchange and the rest of the world, which uses IMAP/SMTP/LDAP/etc. As I have one corporate MS Exchange address, this is just the program I need.
|
||||||
|
|
||||||
|
Edit [2025-11-11 Tue]: We've moved from MS Exhange, disabling this.
|
||||||
|
|
||||||
|
| Arch dependency | Disabled |
|
||||||
|
|-----------------+----------|
|
||||||
|
| davmail | t |
|
||||||
|
|
||||||
It has a GUI mode, but I prefer headless config.
|
It has a GUI mode, but I prefer headless config.
|
||||||
#+begin_src conf-unix :tangle ~/bin/davmail-6.0.0-3375/davmail.properties
|
#+begin_src conf-unix :tangle ~/bin/davmail-6.0.0-3375/davmail.properties
|
||||||
|
|
@ -68,7 +74,7 @@ cd $HOME/bin/davmail-6.0.0-3375
|
||||||
|
|
||||||
Shepherd service is defined in [[file:Desktop.org::*Davmail][Desktop.org]].
|
Shepherd service is defined in [[file:Desktop.org::*Davmail][Desktop.org]].
|
||||||
* OfflineIMAP
|
* OfflineIMAP
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| offlineimap |
|
| offlineimap |
|
||||||
|
|
||||||
|
|
@ -129,7 +135,7 @@ remoteport = 993
|
||||||
cert_fingerprint = 416b1f7f18d68a65f5e75bb1af5d65ea5e20739e
|
cert_fingerprint = 416b1f7f18d68a65f5e75bb1af5d65ea5e20739e
|
||||||
#+end_src
|
#+end_src
|
||||||
* Notmuch
|
* Notmuch
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| notmuch |
|
| notmuch |
|
||||||
| parallel |
|
| parallel |
|
||||||
|
|
@ -357,7 +363,7 @@ The script is ran via GNU Mcron every 5 minutes.
|
||||||
(job "*/5 * * * * " "~/bin/scripts/check-email")
|
(job "*/5 * * * * " "~/bin/scripts/check-email")
|
||||||
#+end_src
|
#+end_src
|
||||||
* MSMTP
|
* MSMTP
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| msmtp |
|
| msmtp |
|
||||||
|
|
||||||
|
|
@ -405,9 +411,9 @@ msmtp --serverinfo --tls --tls-certcheck=off -a pvkorytov
|
||||||
:header-args+: :tangle ~/.emacs.d/mail.el
|
:header-args+: :tangle ~/.emacs.d/mail.el
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
| Guix dependency |
|
| Arch dependency |
|
||||||
|-----------------|
|
|-----------------|
|
||||||
| emacs-notmuch |
|
| notmuch |
|
||||||
|
|
||||||
Finally, Emacs configuration. Let's start with some variables:
|
Finally, Emacs configuration. Let's start with some variables:
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
|
|
@ -415,6 +421,8 @@ Finally, Emacs configuration. Let's start with some variables:
|
||||||
(setq user-full-name "Pavel Korytov")
|
(setq user-full-name "Pavel Korytov")
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
TODO fix for Arch
|
||||||
|
|
||||||
Then, the problem with my Guix setup is that Emacs by default doesn't see the elisp files of notmuch, so here is a small workaround:
|
Then, the problem with my Guix setup is that Emacs by default doesn't see the elisp files of notmuch, so here is a small workaround:
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(let ((dir "/home/pavel/.guix-extra-profiles/mail/mail/share/emacs/site-lisp"))
|
(let ((dir "/home/pavel/.guix-extra-profiles/mail/mail/share/emacs/site-lisp"))
|
||||||
|
|
@ -693,14 +701,12 @@ application/postscript ; zathura %s
|
||||||
|
|
||||||
text/html; firefox %s
|
text/html; firefox %s
|
||||||
#+end_src
|
#+end_src
|
||||||
* Guix settings
|
* Arch settings
|
||||||
#+NAME: packages
|
#+NAME: packages
|
||||||
#+begin_src emacs-lisp :tangle no
|
#+begin_src emacs-lisp :tangle no
|
||||||
(my/format-guix-dependencies)
|
(my/format-arch-dependencies)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src scheme :tangle .config/guix/manifests/mail.scm :noweb yes
|
#+begin_src scheme :tangle .config/metapac/groups/mail.toml :noweb yes
|
||||||
(specifications->manifest
|
<<packages()>>
|
||||||
'(
|
|
||||||
<<packages()>>))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
|
||||||
31
bin/polybar/c-g.sh
Executable file
31
bin/polybar/c-g.sh
Executable file
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# [[file:../../Desktop.org::*C-g][C-g:1]]
|
||||||
|
EMACS_FLAG="-l /home/pavel/.emacs.d/desktop.el"
|
||||||
|
EXCLUDE_PATTERN="dbus-launch --exit-with-session emacs"
|
||||||
|
EMACS_PIDS=$(pgrep -f "emacs.*${EMACS_FLAG}")
|
||||||
|
SIGNAL_SENT=false
|
||||||
|
|
||||||
|
for PID in $EMACS_PIDS; d o
|
||||||
|
CMDLINE=$(ps -p "$PID" -o args=)
|
||||||
|
|
||||||
|
if [[ "$CMDLINE" == *"$EXCLUDE_PATTERN"* ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
kill -SIGUSR2 "$PID" 2>/dev/null
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Sent SIGUSR2 to Emacs (PID: $PID)"
|
||||||
|
SIGNAL_SENT=true
|
||||||
|
else
|
||||||
|
echo "Failed to send SIGUSR2 to Emacs (PID: $PID)"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$SIGNAL_SENT" = false ]; then
|
||||||
|
echo "Emacs process not found or already handled."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
# C-g:1 ends here
|
||||||
Loading…
Add table
Reference in a new issue