Structure the project with NixOS-styled distros

It's been a while but I've been using NixOS (or anything styled like it
like GuixSD, for example) and distro-hopped from Arch Linux.
I think it's high noon for making the structure of this setup to be
truer to one of the big objectives which is how easy to transfer this
between different setups.
Which means I removed some things such as the package lists, systemd
config files, and package manager-specific configs.
While the solution is easy (which is to simply ignore the
system-specific files) but I'm not going with the pragmatic solution not
because I'm a dumbass but because I'm so smart that I want to create a
challenge for myself to solve a puzzle on figuring out a way on how to
structure my dotfiles. :)

Such a productive use of my time, that's for sure.
This commit is contained in:
Gabriel Arazas 2020-09-11 03:12:26 +08:00
parent 00ff59a0ed
commit 0681d1fd7c
117 changed files with 250 additions and 1794 deletions

0
.editorconfig Normal file → Executable file
View File

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
**/.envrc

0
LICENSE Normal file → Executable file
View File

100
README.adoc Normal file → Executable file
View File

@ -40,9 +40,9 @@ image::docs/dropdown-term.png[A dropdown terminal]
== Specifications
Here are the main specifications of my machine currently running this (as of 2020-05-01):
Here are the main specifications of my machine currently running this (as of 2020-09-11):
* **Operating system**: https://www.archlinux.org/[Arch Linux]
* **Operating system**: https://nixos.org/[NixOS]-based distros (e.g., NixOS, GuixSD)
* **Display server**: X Window System using https://www.x.org/wiki/[Xorg]
* **Window manager**: https://github.com/baskerville/bspwm[bspwm]
* **Terminal emulator**: https://github.com/jwilm/alacritty/[Alacritty]
@ -61,13 +61,11 @@ Here's what the setup should look like (aside from the Stow packages which will
----
dotfiles
├── docs/
├── aur-packages.txt
├── LICENSE
├── locations.json
├── makefile
├── manager.py
├── packages.txt
└── README.adoc
├── README.adoc
└── vtsm
----
The big picture for my dotfiles setup have big goals and those are (according to priority):
@ -77,27 +75,15 @@ The big picture for my dotfiles setup have big goals and those are (according to
* Looking cool (but not too cool or else my potato will weep).
=== The package lists
Starting from the most important of the set, `packages.txt` and `aur-packages.txt` are simply a list of installed packages from the official Arch repo and AUR respectively.
I prefer the lists to be separated just for ease of maintenance.
They are going to be committed at the start of every month (if it works that is).
Since the name of the packages varies between distro to distro, this is only valid for Arch Linux.
=== How I maintain my dotfiles
`manager.py` (named Very Tiny Stow Manager or VTSM for short) is a tiny https://www.gnu.org/software/stow/[GNU Stow]-like manager created for this setup.
The dotfiles are mostly intended to be used with GNU Stow.
If you're not familiar with it, you can read http://brandon.invergo.net/news/2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html[this sweet short article] to get you started.
However, with Python 3 (specifically 3.8) installed, you have another option.
Behold, the link:./vtsm["Very Tiny Stow Manager"] (VTSM for short)!
VTSM takes inspiration from GNU Stow (obviously) and https://github.com/holman/dotfiles[how Zach Holman's dotfiles are set].
When managing your dotfiles, VTSM is going to be your friend/workmate.
(Nonetheless, I tried to make it generic for other cases.)
footnote:[You need Python installed for this.
For future references, the version by the time first writing the script is at v3.8.1.
That said, I may rewrite this in Bash instead or even just a makefile.]
footnote:[I may have made my life harder when I can use something like https://yadm.io/[yadm] or https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/[a bare git repo] instead.]
NOTE: Using this script is optional and feel free to discard this and exclusively use GNU Stow or something else.
Using VTSM should be simple and it is nothing special, really.
All it needs is a directory containing a file named `locations.json` with the name of the packages and their target path.
@ -136,13 +122,11 @@ For the command string, it is a https://docs.python.org/3/library/string.html#st
# Running the program without any arguments for a test run.
# There should be a bunch of `echo` commands being ran for all of the listed packages.
./manager.py
./vtsm
# Create the directories of the target path and install them with GNU Stow.
# Bada-bing, bada-boom, you have installed your setup or something.
./manager.py --commands "mkdir -p {location} && stow {package} --target {location}"
# (You could also use the makefile for this.)
./vtsm --commands "mkdir -p {location} && stow {package} --target {location}"
----
@ -168,13 +152,8 @@ The script is based from https://github.com/LukeSmithxyz/voidrice/blob/master/.l
* link:./bin/toggle-process[Switching on/off programs].
Useful for situations where only one instance of the program is desirable.
* link:./bin/select-theme[A basic theme selection for easy color scheme generation] with https://github.com/muennich/sxiv[sxiv].
* link:./bin/choose-emoji-menu[A universal emoji list] for easy copy-pasting and clear communication with those who speak Emojian.
Aside from the scripts, there are also some details and files that are not committed to this setup for privacy and security reasons.
A few examples of which is my cron setups where it is tasked with updating and committing the package lists to the Git repo, updating the packages, cleaning the cache, and so much more.
@ -282,23 +261,6 @@ Seriously though, I find nvim to be way better for configuration.]
It is based on https://github.com/gillescastel/latex-snippets/[_Gilles Castel_'s UltiSnips LaTeX snippets].
=== https://www.archlinux.org/pacman/[pacman]
The default package manager for Arch Linux.
* Config location is at link:pacman/[`pacman/`]
* The usual target path is at `/etc/pacman.d`.
* Minimum version (from `pacman --version`):
** `Pacman v5.1.3 - libalpm v11.0.3`
* Contains the configuration file, a `mirrorlist` file, and some https://www.archlinux.org/mirrorlist/?ip_version=6[pacman hooks].
* For the mirrorlist, change it accordingly or https://www.archlinux.org/mirrorlist/?ip_version=6[generate another one].
It is also monthly updated from a cron job.
* Since this requires root privilege, this is not included in the installation script.
Simply copy it (i.e., `sudo cp pacman/ /etc/pacman.d/`) and you're done.
* The dotfiles repo also contains two package lists (i.e., `packages.txt` and `aur-packages.txt`) in the root of the project folder.
* The setup also uses `yay` as the AUR helper tool.
=== https://github.com/yshui/picom[picom]
A window compositor forked from https://github.com/chjj/compton[compton] that adds off-screen buffers and additional effects and animations to the window.
@ -333,22 +295,6 @@ The theme is dynamically used with the Xresources file (by using `xrdb`).
For documentation, check out the https://wiki.archlinux.org/index.php/Polybar[already linked Arch Wiki entry] and the https://github.com/polybar/polybar/wiki[official documentation from GitHub].
=== https://github.com/dylanaraps/pywal[Pywal]
A theme generator written in Python.
It is mostly used for ricing to get them consistent colors throughout your setup.
* Config located at link:wal[`wal/`].
* The usual target path for a user is at `$HOME/.config/wal`.
It is ideal that you've already have your own color schemes saved in there as well.
* Minimum version (from `wal --version`):
** `wal 3.3.0`
* Due to the nature of my setup where I want those consistent colors, most of the configurations are tucked away as https://github.com/dylanaraps/pywal/wiki/User-Template-Files[template files] but it should be easy to identify which is which.
Certain applications such as for `dunst` and `bspwm` are in here and should be considered as the real version of the config.
For additional information, check out the https://github.com/dylanaraps/pywal/wiki/[documentation] from the GitHub page.
=== https://github.com/davatorium/rofi[Rofi]
The application switcher and launcher.
@ -397,30 +343,6 @@ I also recommend https://www.youtube.com/watch?v=GYW9i_u5PYs[Luke Smith's video]
That's where I also heard of it.
=== https://systemd.io/[systemd]
A set of building blocks for system management of a Linux-based system.
* Config located at link:systemd/[`sxiv/`] directory.
* The usual target path is at `$HOME/.config/systemd`.
* Minimum version (from `systemctl --version`):
** `systemd 245 (245.5-2-arch)`
* Contains simple services and timers (as replacement for cron) such as backups and package list updates.
=== https://www.x.org/wiki/[Xorg]
A display server implementing X window system.
* Config found at link:xorg/[`xorg/`] directory.
* The usual target path for a user is at `$HOME/`.
* Minimum version (from `Xorg -version`):
** `X.Org X Server 1.20.5`
** `X Protocol Version 11, Revision 0`
* The configuration is found at `.Xresources` containing the colors (0 to 15, foreground, and the background).
It may be bound to be an automatically generated file from https://github.com/dylanaraps/pywal[Pywal] soon.
=== https://www.zsh.org/[Zsh]
A Unix shell and an alternative to the Bash.

0
alacritty/alacritty.yml Normal file → Executable file
View File

View File

@ -1,21 +0,0 @@
android-studio
brave-bin
buku
doom1-wad
ffcast
freedoom
gzdoom
lf-bin
nix
otf-stix
pipes.sh
polybar
python2-scour
tabbed
tdrop-git
ttf-computer-modern-fonts
ttf-iosevka
wpgtk-git
xorg-server-xdmx
xurls
yay

View File

@ -1,8 +1,10 @@
#!/usr/bin/env sh
# Simply create a universal emoji selection list.
# Simply create a universal emoji selection list.
# The emoji list should be the following file:
# https://unicode.org/Public/emoji/13.0/emoji-test.txt
# Dependencies:
# Dependencies:
# * mktemp - GNU coreutils 8.31
# * wget - GNU Wget 1.20.3 built on linux-gnu
# * sed - GNU sed 4.8
@ -10,12 +12,15 @@
# * rofi - Version: 1.5.4
# * xclip - version 0.13
emoji_file="$HOME/.local/share/emoji-test.txt"
emoji_file="$HOME/.local/share/emoji-list.txt"
if [[ ! -f $emoji_file ]]; then
wget --output-document "$emoji_file" https://unicode.org/Public/emoji/13.0/emoji-test.txt
fi
selection=$(awk 'match($0, /([0-9A-F ]+)\s+; fully-qualified\s+# (\S+) E[[:digit:]]+.[[:digit:]]+ (.+)$/, a){print a[2], a[3]}' "$emoji_file" \
| rofi -dmenu -i -fuzzy -p "Choose an emoji to copy." \
| awk '{print $1}')
| awk '{print $1}')
if [ -n "$selection" ]; then
printf "%s" "$selection" | xclip -selection clipboard && notify-send "'$(xclip -o -selection clipboard)' has been copied to clipboard."
fi

View File

@ -17,6 +17,6 @@
set -o pipefail
man -k . | rofi -dmenu -p 'Choose a manual' -theme fds-mini-sidebar -width 60 | awk '{print $1}' | xargs --no-run-if-empty "$TERMINAL" --command man
man -k . | rofi -dmenu -p 'Choose a manual' | awk '{print $1}' | xargs --no-run-if-empty "$TERMINAL" --command man

View File

@ -1,4 +1,4 @@
#!/usr/bin/env sh
#!/usr/bin/env bash
# Selects the region, echoes the hex string (in RGBA format) of the average color of the region.

View File

@ -1,10 +0,0 @@
#!/usr/bin/env sh
# Simply commits the package lists `packages.txt` and `aur-packages.txt` into the Git repo.
# This script is specifically used for a cron job where this is run monthly.
DOTFILES_DIRECTORY="$HOME/dotfiles"
cd "$DOTFILES_DIRECTORY"
git add "packages.txt" "aur-packages.txt"
git commit -m "Update package lists as of $(date +%F)"

8
bin/edit-file-metadata Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/env perl
use Modern::Perl;
sub kebab_case {
my ($sentence) = @_;
$sentence =
}

View File

@ -1,243 +0,0 @@
#!/usr/bin/env python
# This simple Python 3 script simply generates a color scheme in wpgtk style with the auto-adjusted colors.
# I like how wpgtk generates the color palette but I don't like the workflow of it.
# I like the simple workflow of pywal but I don't like the colors generated by it and I think it has built-in limitations for generating colors.
# So I combined both of the best in this one glued script.
# The command line program simply needs an image path as the argument — `export-theme ~/Pictures/mountain.jpg`.
# It will also export the theme as a JSON file in the current directory — `mountain.json`.
# Most of the code are "borrowed" from the wpgtk codebase and I've simply studied them and added some documentation.
# It simply needs pywal as a dependency.
import argparse
from colorsys import rgb_to_hls, hls_to_rgb
import json
import math
from operator import itemgetter
import os.path
from pathlib import Path
import sys
import pywal
###################
# COLOR FUNCTIONS #
###################
def hls_to_hex(hls):
"""
Returns a HLS coordinate into its hex color code equivalent.
:param: hls - An HLS tuple according to the colorsys library (https://docs.python.org/3.8/library/colorsys.html).
:returns: A hex color string equivalent.
"""
h, l, s = hls
r, g, b = hls_to_rgb(h, l, s)
rgb_int = [max(min(int(elem), 255), 0) for elem in [r, g, b]]
return pywal.util.rgb_to_hex(rgb_int)
def hex_to_hls(hex_string):
"""
Returns an HLS coordinate equivalent of the given hex color code.
It uses RGB as the intermediate for converting the hex string.
:param: hex_string - A (hopefully) valid hex string.
:returns: An HLS tuple compatible with the colorsys library.
"""
r, g, b = pywal.util.hex_to_rgb(hex_string)
return rgb_to_hls(r, g, b)
def get_distance(hex_src, hex_tgt):
"""
Returns the distance between two hex values.
The formula used in this function is based from the Wikipedia article (https://en.wikipedia.org/wiki/Color_difference).
:param: hex_src - A hex color string.
:param: hex_tgt - The target hex color code.
:returns: A float that describes the distance.
"""
r1, g1, b1 = pywal.util.hex_to_rgb(hex_src)
r2, g2, b2 = pywal.util.hex_to_rgb(hex_tgt)
return math.sqrt((r2 - r1)**2 + (g2 - g1)**2 + (b2 - b1)**2)
def alter_brightness(hex_string, light, sat=0):
"""
Alters amount of light and saturation in a color.
:param: hex_string - A hex color string (top-notch documentation right here, folks).
:param: light - The amount of light to apply; generally, the acceptable range is -255 to 255 and beyond that is dangerous territory.
:param: sat - The amount of saturation to apply; the acceptable range is -1 to 1.
:returns: A hex color code of the adjusted color.
"""
h, l, s = hex_to_hls(hex_string)
l = max(min(l + light, 255), 1)
s = min(max(s - sat, -1), 0)
return hls_to_hex((h, l, s))
def is_dark_theme(color_list):
"""
Checks by the color list if it's a dark theme.
:param: color_list - A list of hex color codes usually 16 of them.
:returns: A boolean indicating if it's a dark theme.
"""
*_, bg_brightness = hex_to_hls(color_list[0])
*_, fg_brightness = hex_to_hls(color_list[7])
return fg_brightness < bg_brightness
def adjust_colors(colors, light_mode = False):
"""
Create a clear foreground and background set of colors.
:param: colors - A Pywal color object. See https://github.com/dylanaraps/pywal/wiki/Using-%60pywal%60-as-a-module#color-dict-format for more info.
:param: light_mode - Toggle to create a light mode version of the adjustment.
:returns: A Pywal color object with the adjusted values.
"""
colors = smart_sort(colors)
added_sat = 0.25 if light_mode else 0.1
sign = -1 if light_mode else 1
if light_mode == is_dark_theme(colors):
colors[7], colors[0] = colors[0], colors[7]
comment = [alter_brightness(colors[0], sign * 25)]
fg = [alter_brightness(colors[7], sign * 60)]
colors = colors[:8] + comment \
+ [alter_brightness(color, sign * hex_to_hls(color)[1] * 0.3, added_sat) for color in colors[1:7]] + fg
return colors
def smart_sort(colors):
"""
Automatically set the most look-alike colors to their
corresponding place in the standard xterm colors.
:param: colors - A list of hex color strings.
:returns: The color list sorted out.
"""
colors = colors[:8]
sorted_by_color = list()
base_colors = ["#000000", "#ff0000", "#00ff00", "#ffff00",
"#0000ff", "#ff00ff", "#00ffff", "#ffffff"]
for y in base_colors:
cd_tuple = [(x, get_distance(x, y)) for i, x in enumerate(colors)]
cd_tuple.sort(key=itemgetter(1))
sorted_by_color.append(cd_tuple)
i = 0
while i < 8:
current_cd = sorted_by_color[i][0]
closest_cds = [sorted_by_color[x][0] for x in range(8)]
reps = [x for x in range(8) if closest_cds[x][0] == current_cd[0]]
if len(reps) > 1:
closest = min([closest_cds[x] for x in reps], key=itemgetter(1))
reps = [x for x in reps if x != closest_cds.index(closest)]
any(sorted_by_color[x].pop(0) for x in reps)
i = 0
else:
i += 1
sorted_colors = [sorted_by_color[x][0][0] for x in range(8)]
return [*sorted_colors, *sorted_colors]
##################
# MAIN FUNCTIONS #
##################
def setup_args():
"""
Setup the argument parser.
"""
description = "A simple Pywal theme export script with auto-adjusted colors from wpgtk"
argparser = argparse.ArgumentParser(description=description)
argparser.add_argument("input", help="The input (image) of the color scheme to be generated.", metavar="IMAGE")
argparser.add_argument("-o", "--output", help="The location of the colorscheme JSON to be exported.", metavar="FILE")
argparser.add_argument("--no-output", help="Specifies no JSON output to be created; also overrides any output-related options.", action='store_true')
return argparser
def export_wpgtk_colors(image_path):
"""
Export Pywal templates with the given image and the color scheme data.
Take note the exported Pywal object has no 'wallpaper' key for portability.
:param: image_path - The path of the image. ;)
:returns: The Pywal dictionary.
"""
pywal_dict = pywal.colors.get(image_path)
colors = []
for color_name, color in pywal_dict["colors"].items():
colors.append(color)
colors = adjust_colors(colors)
for index, color in enumerate(colors):
pywal_dict["colors"][f"color{index}"] = color
# Export every templates in Pywal including the user templates and reload the newly applied theme.
pywal.export.every(pywal_dict)
del pywal_dict["wallpaper"]
# Feel free to add some reloading code that Pywal provides or something.
# I'm not putting mine since it's intended to only export theme.
# You can't tell me what to do here. >:-)
return pywal_dict
def parse_args(parser, argv):
"""
Parse the args and do the thing.
:param: parser - An `argparse.ArgumentParser` instance.
:param: argv - A list of arguments to be parsed.
"""
args = parser.parse_args(argv)
pywal_dict = export_wpgtk_colors(args.input)
if args.output is not None:
output_file = args.output
else:
output_file = f"{Path(args.input).stem}.json"
if not args.no_output:
# Save the adjusted theme as a JSON file.
with open(output_file, "w") as json_file:
json.dump(pywal_dict, json_file, indent = 4)
if __name__ == "__main__":
argparser = setup_args()
parse_args(argparser, sys.argv[1:])

View File

@ -1,47 +0,0 @@
#!/usr/bin/env bash
# This is simply an additional reloading script in addition to Pywal's own.
# This code is specific machine-to-machine so you better make sure to update it to suit your need.
readonly cache=${XDG_CACHE_HOME:-"$HOME/.cache"}
readonly config=${XDG_CONFIG_HOME:-"$HOME/.config"}
readonly pywal_cache=${PYWAL_CACHE_DIR:-"$cache/wal"}
# Copying the Pywal color scheme JSON into the theme list.
# This file suffix removal is based on the linked code:
# https://stackoverflow.com/a/32584935
readonly pywal_json=$pywal_cache/colors.json
readonly theme=$(jq -r ".wallpaper" "$pywal_json" | xargs basename | rev | cut -f 2- -d '.' | rev)
readonly theme_dir="$config/wal/colorschemes/dark"
mkdir -p "$theme_dir"
cp "$pywal_json" "$theme_dir/$theme.json"
# Copying the dynamically crerated rofi themes.
cp "$pywal_cache/fds-mini-sidebar.rasi" "$XDG_CONFIG_HOME/rofi"
cp "$pywal_cache/fds-center-menu.rasi" "$XDG_CONFIG_HOME/rofi"
cp "$pywal_cache/dmenu.rasi" "$XDG_CONFIG_HOME/rofi"
# Copying bspwm config and reloading it.
cp "$pywal_cache/bspwmrc" "$XDG_CONFIG_HOME/bspwm" && bspc wm --restart
# Reloading polybar.
pkill -USR1 polybar
# Copying dunst config and reloading it.
# The reload mechanism feels very hacky and the maintainers warn about it.
# See more at the Arch Wiki entry (https://wiki.archlinux.org/index.php/Dunst) and the linked issue (https://github.com/dunst-project/dunst/issues/63).
# cp "$pywal_cache/dunstrc" "$XDG_CONFIG_HOME/dunst" && pkill dunst && nohup dunst &
# Creating a Doom Emacs theme.
# Unlike the previous templates, this is stored on another directory.
# Unfortunately, this requires installing some crap I made.
# You can find the Doom Emacs generator here: https://gitlab.com/foo-dogsquared/doom-theme-generator/-/blob/master/doom-theme-generator.py .
(
cd ~/projects/doom-theme-generator
./doom-theme-generator.py --name fds
mv doom-fds-theme.el "$XDG_CONFIG_HOME/doom/themes/"
)
notify-send "The theme has been installed."

View File

@ -1,4 +1,4 @@
#!/usr/bin/env sh
#!/usr/bin/env bash
# A script that utilizes OCR for a screenshot and copies the text to the clipboard.

View File

@ -1,4 +1,4 @@
#!/usr/bin/env sh
#!/usr/bin/env bash
# Parse various code from image selection with zbarimg and maim.

View File

@ -38,7 +38,7 @@ ffmpeg() {
# Set the default command for rofi.
rofi() {
command rofi -theme fds-center-menu "$@" || kill -USR1 "$_process_id"
command rofi -theme themes/fds-center-menu "$@" || kill -USR1 "$_process_id"
}
# Set the default command for slop.

View File

@ -1,22 +0,0 @@
#!/usr/bin/env bash
# Creates an theme selection with sxiv and generates a colorscheme with pywal.
# It also reloads additional some beyond what Pywal can reload (like dunst and rofi themes).
# Dependencies needed are sxiv (v26), pywal (v3.3.0), xdg-user-dirs, and GNU Bash (>=v5.0, I guess?).
# This script is setup-specific so be sure to modify it first.
# The `install-wal-theme` is at https://github.com/foo-dogsquared/dotfiles/blob/master/bin/install-wal-theme.
# Arguments:
# $1 - The directory of wallpapers.
# Feel free to change this variable as you see fit.
# This is set specifically for my setup, anyways.
wallpapers=${1:-$(xdg-user-dir PICTURES)/wallpapers}
# Since sxiv is configurable af
# and has the ability to select more than one picture,
# it will shuffle the choices and choose only one of them (lol).
# If you're feeling lucky, go ahead and play a game of random themes from your selections.
sxiv -otbf "$wallpapers" | shuf | tail -n 1 | xargs wal --saturate 0.6 -i && install-wal-theme

View File

@ -3,4 +3,4 @@
# Based from Luke Smith's prompt script.
# https://github.com/LukeSmithxyz/voidrice/blob/master/.local/bin/prompt
[ "$(printf "No\\nYes" | rofi -theme dmenu -dmenu -p "$1")" = "Yes" ] && $2
[ "$(printf "No\\nYes" | rofi -theme themes/dmenu -dmenu -p "$1")" = "Yes" ] && $2

0
docs/bspwm-empty.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

0
docs/dropdown-term.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 903 KiB

After

Width:  |  Height:  |  Size: 903 KiB

0
docs/editors-ahoy.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 252 KiB

After

Width:  |  Height:  |  Size: 252 KiB

0
docs/rofi-dunst-and-lf.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

0
docs/terminals.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 168 KiB

0
docs/vim-and-zathura.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 214 KiB

After

Width:  |  Height:  |  Size: 214 KiB

0
docs/vscode-and-rofi.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 136 KiB

0
dunst/dunstrc Normal file → Executable file
View File

41
emacs/config.el Normal file → Executable file
View File

@ -67,12 +67,35 @@
(add-to-list 'safe-local-variable-values
'(TeX-command-extra-options . "-shell-escape")))
;;(use-package! ewal
;; :init (setq ewal-json-file "~/.cache/wal/colors.json"
;; ewal-use-built-in-always-p nil
;; ewal-use-built-in-on-failure-p nil
;; ewal-built-in-palette "sexy-material")
;;
;; ;; This loading of theme is required in order for ewal to work.
;; ;; See jjzmajic/ewal Issue #11 (https://gitlab.com/jjzmajic/ewal/-/issues/11).
;; :init (load-theme 'doom-fds t))
(after! org
(setq
; Set the journal.
org-journal-dir "~/writings/journal"
org-journal-file-format "%F"
; Set a custom time-stamp pattern.
; Even though, it's not recommended, most of the time,
time-stamp-start "DATE_MODIFIED:[ ]+\\\\?[\"<]+"
; Configure org-roam.
org-roam-directory "~/writings/wiki"
org-roam-capture-templates '(
("d" "default" plain (function org-roam--capture-get-point)
"#+AUTHOR: \"%(user-full-name)\"
#+EMAIL: \"%(user-mail-address)\"
#+DATE: \"%<%Y-%m-%d %T%:z>\"
#+DATE_MODIFIED: \"%<%Y-%m-%d %T%:z>\"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
%?"
:file-name "%<%Y-%m-%d-%H-%M-%S>"
:head "#+TITLE: ${title}\n"
:unnarrowed t))))
; Modify the time-stamp with each save.
(setq time-stamp-format "%Y-%02m-%02d %02H:%02M:%02S%:z"
+file-templates-dir (expand-file-name "templates/" doom-private-dir))
(add-hook 'before-save-hook 'time-stamp)

61
emacs/init.el Normal file → Executable file
View File

@ -16,10 +16,10 @@
(doom! :input
;;chinese
;;japanese
japanese
:completion
company ; the ultimate code completion backend
(company +childframe) ; the ultimate code completion backend
;;helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine...
ivy ; a search engine for love and life
@ -38,10 +38,10 @@
;;neotree ; a project drawer, like NERDTree for vim
ophints ; highlight the region an operation acts on
(popup +defaults) ; tame sudden yet inevitable temporary windows
pretty-code ; ligatures or substitute text with pretty symbols
ligatures ; ligatures or substitute text with pretty symbols
;;tabs ; an tab bar for Emacs
;;treemacs ; a project drawer, like neotree but cooler
;;unicode ; extended unicode support for various languages
unicode ; extended unicode support for various languages
vc-gutter ; vcs diff in the fringe
vi-tilde-fringe ; fringe tildes to mark beyond EOB
;;window-select ; visually switch windows
@ -83,7 +83,7 @@
:tools
;;ansible
(debugger +lsp) ; FIXME stepping through code, to help you add bugs
;;direnv
direnv
docker
editorconfig ; let someone else argue about tabs vs spaces
ein ; tame Jupyter notebooks with emacs
@ -95,58 +95,57 @@
magit ; a git porcelain for Emacs
;;make ; run make tasks from Emacs
;;pass ; password manager for nerds
;;pdf ; pdf enhancements
pdf ; pdf enhancements
;;prodigy ; FIXME managing external services & code builders
rgb ; creating color strings
;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
;;upload ; map local to remote projects via ssh/ftp
upload ; map local to remote projects via ssh/ftp
:lang
;;agda ; types of types of types of types...
;;assembly ; assembly for fun or debugging
assembly ; assembly for fun or debugging
(cc +lsp) ; C/C++/Obj-C madness
;;clojure ; java with a lisp
;;common-lisp ; if you've seen one lisp, you've seen them all
clojure ; java with a lisp
common-lisp ; if you've seen one lisp, you've seen them all
;;coq ; proofs-as-programs
;;crystal ; ruby at the speed of c
;;csharp ; unity, .NET, and mono shenanigans
data ; config/data formats
;;(dart +flutter) ; paint ui and not much else
(dart +flutter) ; paint ui and not much else
;;elixir ; erlang done right
;;elm ; care for a cup of TEA?
emacs-lisp ; drown in parentheses
;;erlang ; an elegant language for a more civilized age
ess ; emacs speaks statistics
;;faust ; dsp, but you get to keep your soul
;;fsharp ; ML stands for Microsoft's Language
;;fstar ; (dependent) types and (monadic) effects and Z3
fsharp ; ML stands for Microsoft's Language
fstar ; (dependent) types and (monadic) effects and Z3
;;(go +lsp) ; the hipster dialect
;;(haskell +dante) ; a language that's lazier than I am
(haskell +dante) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
;;idris ;
;;(java +meghanada) ; the poster child for carpal tunnel syndrome
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script)
julia ; a better, faster MATLAB
kotlin ; a better, slicker Java(Script)
(latex +latexmk) ; writing papers in Emacs has never been so fun
;;lean
;;factor
;;ledger ; an accounting system in Emacs
lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c
;;nix ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
(org +brain
+gnuplot
nim ; python + lisp at the speed of c
nix ; I hereby declare "nix geht mehr!"
ocaml ; an objective camel
(org +gnuplot
+hugo
+jupyter
+journal
+noter
+pandoc
+present
+roam) ; organize your plain life in plain text
;;perl ; write code no one else can comprehend
raku ; write code no one else can comprehend
;;php ; perl's insecure younger brother
plantuml ; diagrams for confusing people more
;;purescript ; javascript, but functional
@ -155,16 +154,16 @@
racket ; a DSL for DSLs
;;rest ; Emacs as a REST client
;;rst ; ReST in peace
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good
;;scheme ; a fully conniving family of lisps
scheme ; a fully conniving family of lisps
sh ; she sells {ba,z,fi}sh shells on the C xor
;;sml
;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance.
;;web ; the tubes
web ; the tubes
:email
;;(mu4e +gmail)
@ -179,4 +178,10 @@
:config
;;literate
(default +bindings +smartparens))
(default +bindings +smartparens)
;; This is where custom modules in the Doom directory should be put for orgaanizational purposes.
:tools
neuron ; Neurons are a must for the brain.
)

View File

@ -0,0 +1,81 @@
;;; tools/neuron/config.el -*- lexical-binding: t; -*-
(defface neuron-stub-face
'((((class color) (min-colors 88) (background dark)) :foreground "#C16069" :underline "#C16069")
(((class color) (min-colors 88) (background light)) :foreground "#C16069" :underline "#C16069")
(((class color) :foreground "Red" :underline "Red"))
(t :inherit neuron-title-overlay-face))
"Face for stub links."
:group 'neuron-faces)
(customize-set-variable 'neuron-default-zettelkasten-directory (expand-file-name "~/zettelkasten"))
(customize-set-variable 'neuron-default-tags (list "stub"))
(customize-set-variable 'neuron-tag-specific-title-faces '(("stub" neuron-stub-face)))
(defun search-zettelkasten ()
"Search zettels by content."
(interactive)
(progn
(+ivy-file-search :in (neuron-zettelkasten) :recursive nil :prompt "Search Zettelkasten: ")
(neuron-mode)))
(defun find-file-in-zettelkasten ()
"Find a file in the currently active zettelkasten."
(interactive)
(let ((default-directory (neuron-zettelkasten)))
(counsel-find-file)))
(use-package! neuron-mode
; Enable link autocompletion globally
:hook (neuron-mode . company-neuron-setup)
:config
(map! :leader
(:prefix ("z" . "zettel")
"z" #'neuron-new-zettel
"e" #'neuron-edit-zettel
"w" #'neuron-rib-watch
"g" #'neuron-rib-generate
"o" #'neuron-open-zettel
"O" #'neuron-open-index
"j" #'neuron-open-daily-notes
"t" #'neuron-query-tags
"r" #'neuron-refresh
"c" #'neuron-edit-zettelkasten-configuration
;;; Alternatively, bind all rib commands in a separate prefix
;; (:prefix ("r" . "rib")
;; "w" #'neuron-rib-watch
;; "g" #'neuron-rib-generate
;; "s" #'neuron-rib-serve
;; "o" #'neuron-rib-open-zettel
;; "z" #'neuron-rib-open-z-index
;; "k" #'neuron-rib-kill
;; )
)
)
(map! :map neuron-mode-map
:localleader
;; Override markdown-mode's default behavior to handle neuron links
:ni "o" #'neuron-follow-thing-at-point
;; You can also remove the "z" prefix but
;; be careful not to override default
;; markdown-mode bindings.
(:prefix ("z" . "zettel")
:ni "u" #'neuron-edit-uplink
:ni "t" #'neuron-add-tag
:ni "T" #'neuron-add-tags
:ni "o" #'neuron-open-current-zettel
:ni "l" #'neuron-create-and-insert-zettel-link
:v "L" #'neuron-create-zettel-from-selection
:ni "s" #'neuron-insert-static-link
:ni "c" #'neuron-toggle-connection-type
)
)
(map! :leader "sz" #'search-zettelkasten)
(map! :leader "fz" #'find-file-in-zettelkasten)

View File

@ -0,0 +1,8 @@
;; -*- no-byte-compile: t; -*-
;;; tools/neuron/packages.el
(package! neuron-mode)
;; For more reproducibility, pin the repo:
;; (package! neuron-mode :pin e1b3e12c71)
;; or run M-x doom/update-pinned-package-form to have the latest commit

8
emacs/packages.el Normal file → Executable file
View File

@ -51,5 +51,9 @@
;;;;;;;;;;;;
; PACKAGES ;
;;;;;;;;;;;;
(package! modus-operandi-theme)
(package! modus-vivendi-theme)
(package! flycheck-vale)
(package! ya-org-capture
:recipe (:host github
:repo "ag91/ya-org-capture")
:pin "0333ee28c92a40a351e64695a0cfcd715c69838b")
(package! yankpad)

0
emacs/snippets/fundamental-mode/box Normal file → Executable file
View File

0
emacs/snippets/fundamental-mode/eg Normal file → Executable file
View File

0
emacs/snippets/fundamental-mode/em Normal file → Executable file
View File

0
emacs/snippets/fundamental-mode/ie Normal file → Executable file
View File

View File

@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: Print today's date in ISO format.
# key: now
# --
`(format-time-string "%F %T%:z %Z")` $0

0
emacs/snippets/fundamental-mode/sign Normal file → Executable file
View File

0
emacs/snippets/fundamental-mode/today Normal file → Executable file
View File

0
emacs/snippets/latex-mode/agraph Normal file → Executable file
View File

0
emacs/snippets/latex-mode/boldface Normal file → Executable file
View File

0
emacs/snippets/latex-mode/equation Normal file → Executable file
View File

0
emacs/snippets/latex-mode/italics Normal file → Executable file
View File

0
emacs/snippets/latex-mode/listitem Normal file → Executable file
View File

0
emacs/snippets/latex-mode/mathblock Normal file → Executable file
View File

0
emacs/snippets/latex-mode/mathinline Normal file → Executable file
View File

0
emacs/snippets/latex-mode/ol Normal file → Executable file
View File

0
emacs/snippets/latex-mode/section Normal file → Executable file
View File

0
emacs/snippets/latex-mode/subsection Normal file → Executable file
View File

0
emacs/snippets/latex-mode/teletype Normal file → Executable file
View File

0
emacs/snippets/latex-mode/template Normal file → Executable file
View File

0
emacs/snippets/latex-mode/ul Normal file → Executable file
View File

0
emacs/snippets/org-mode/.yas-parents Normal file → Executable file
View File

0
emacs/snippets/org-mode/appendix Normal file → Executable file
View File

0
emacs/snippets/org-mode/block Normal file → Executable file
View File

0
emacs/snippets/org-mode/boldface Normal file → Executable file
View File

0
emacs/snippets/org-mode/comment-block Normal file → Executable file
View File

0
emacs/snippets/org-mode/deflist Normal file → Executable file
View File

0
emacs/snippets/org-mode/drawer Normal file → Executable file
View File

0
emacs/snippets/org-mode/footnote Normal file → Executable file
View File

0
emacs/snippets/org-mode/header Normal file → Executable file
View File

View File

@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: Org-Mode global property
# key: hprop
# --
#+${1:<KEY>}: ${2:<VALUES>}

0
emacs/snippets/org-mode/img Normal file → Executable file
View File

0
emacs/snippets/org-mode/italics Normal file → Executable file
View File

0
emacs/snippets/org-mode/link Normal file → Executable file
View File

View File

@ -1,5 +0,0 @@
# -*- mode: snippet -*-
# name: Org-Mode local property
# key: lprop
# --
:${1:<KEY>}: ${2:<VALUE>}

0
emacs/snippets/org-mode/monospace Normal file → Executable file
View File

6
emacs/snippets/org-mode/property Normal file → Executable file
View File

@ -1,5 +1,5 @@
# -*- mode: snippet -*-
# name: Org-Mode global property
# key: prop
# name: Org-Mode local property
# key: lprop
# --
#+${1:<KEY>}: ${2:<VALUES>}
:${1:<KEY>}: ${2:<VALUE>}

View File

@ -1,6 +1,6 @@
# -*- mode: snippet -*-
# name: Org-Mode local property block
# key: lpropblock
# key: props
# --
:PROPERTIES:
$1

2
emacs/snippets/org-mode/source Normal file → Executable file
View File

@ -1,6 +1,6 @@
# -*- mode: snippet -*-
# name: Org-Mode source block
# key: csrc
# key: csrc
# --
#+BEGIN_SRC ${1:<LANG>} :results output :exports both :session *${2:<SESSION NAME>}*
$3

0
emacs/snippets/org-mode/subscript Normal file → Executable file
View File

0
emacs/snippets/org-mode/superscript Normal file → Executable file
View File

0
emacs/snippets/org-mode/video Normal file → Executable file
View File

View File

@ -0,0 +1,28 @@
# -*- mode: snippet -*-
# name: Org template
# --
#+TITLE: ${1:`
(string-join
(mapcar #'capitalize
;; Replace -,_... with space
(split-string
(let (case-fold-search)
;; Seperating lower from upper: hello|World
(replace-regexp-in-string
"\\([[:lower:]]\\)\\([[:upper:]]\\)" "\\1 \\2"
;; Separating upper from (upper and lower): HTTP|Server
(replace-regexp-in-string "\\([[:upper:]]\\)\\([[:upper:]][0-9[:lower:]]\\)"
"\\1 \\2" (file-name-base buffer-file-name))))
"[^[:word:]0-9]+"
)) " " )
`}
#+AUTHOR: "`user-full-name`"
#+EMAIL: "`user-mail-address`"
#+DATE: "`(format-time-string "%Y-%m-%d %T %:z")`"
#+DATE_MODIFIED: "`(format-time-string "%Y-%m-%d %T %:z")`"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
$0

0
lf/lfrc Normal file → Executable file
View File

0
locations.json Normal file → Executable file
View File

6
makefile Normal file → Executable file
View File

@ -1,12 +1,12 @@
.PHONY = install
install:
./manager.py --commands "mkdir -p {location}" "stow --stow {package} --target {location}"
./vtsm --commands "mkdir -p {location}" "stow --stow {package} --target {location}"
.PHONY = reinstall
reinstall:
./manager.py --commands "mkdir -p {location}" "stow --restow {package} --target {location}"
./vtsm --commands "mkdir -p {location}" "stow --restow {package} --target {location}"
.PHONY = clean
clean:
./manager.py --commands "stow --delete {package} --target {location}"
./vtsm --commands "stow --delete {package} --target {location}"

3
nvim/init.vim Normal file → Executable file
View File

@ -88,6 +88,9 @@ Plug 'airblade/vim-gitgutter'
" Plugin for distraction-free writing.
Plug 'junegunn/goyo.vim'
" A Nix plugin.
Plug 'LnL7/vim-nix'
call plug#end()

0
nvim/own-snippets/all.snippets Normal file → Executable file
View File

2
nvim/own-snippets/asciidoc.snippets Normal file → Executable file
View File

@ -51,7 +51,7 @@ ${1:<url>}[${2:<text>}] $0
endsnippet
snippet link "Link for files" iw
link:${1:<url>}[`$1`]
link:${1:<url>}[\`$1\`]
endsnippet
snippet sp "Superscript" iw

0
nvim/own-snippets/nroff.snippets Normal file → Executable file
View File

0
nvim/own-snippets/python.snippets Normal file → Executable file
View File

0
nvim/own-snippets/sh.snippets Normal file → Executable file
View File

0
nvim/own-snippets/snippets.snippets Normal file → Executable file
View File

0
nvim/own-snippets/tex.snippets Normal file → Executable file
View File

View File

@ -1,321 +0,0 @@
0ad
0ad-data
adobe-source-sans-pro-fonts
adobe-source-serif-pro-fonts
alacritty
alex
alsa-plugins
alsa-utils
amd-ucode
android-tools
anki
apache
arandr
arc-gtk-theme
arc-icon-theme
arch-audit
archiso
archlinux-contrib
ardour
asciidoctor
audacious
audacity
autoconf
automake
base
bash
bat
binutils
bison
blender
breeze-gtk
breeze-icons
bspwm
bzip2
cabal-install
cadence
carla
chromium
clang
code
coreutils
cowsay
cronie
cryptsetup
device-mapper
dhall
dhall-json
dhcpcd
diffutils
dmenu
docker
docker-compose
dunst
e2fsprogs
editorconfig-core-c
efibootmgr
emacs
entr
erlang
espeak
exa
fakeroot
fd
feh
festival
file
filesystem
findutils
firefox
firefox-developer-edition
flex
fontforge
foremost
freeglut
fzf
gawk
gcc
gcc-libs
gdb
gettext
ghc
gimp
gimp-help-en
git
glava
glibc
gnu-netcat
go
gource
graphviz
grep
groff
gucharmap
gvfs
gzip
happy
hexyl
htop
hugo
inetutils
inkscape
iproute2
iputils
iwd
jack2
jdk-openjdk
jfsutils
jq
jre-openjdk
kcharselect
keybase
kicad
kicad-library
krita
less
libtool
libvirt
licenses
linux
linux-firmware
lldb
llvm
lmms
logrotate
lolcat
lvm2
lxappearance
lxsession
m4
maim
make
man-db
man-pages
mdadm
mediawiki
moreutils
mpg123
mpv
musescore
musl
nano
ncmpcpp
neofetch
neomutt
neovim
netctl
networkmanager
newsboat
nnn
nodejs
nodejs-material-design-icons
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
npm
ntfs-3g
obs-studio
octave
orca
otf-latin-modern
otf-latinmodern-math
p7zip
pacman
pacman-contrib
pamixer
pandoc
pass
patch
pavucontrol
pciutils
perl
php
picom
pkgconf
powertop
procps-ng
psmisc
pstoedit
pulseaudio
pulseaudio-alsa
pulseaudio-jack
pulsemixer
pv
python-pip
python-pynvim
python-pywal
qbittorrent
qemu
qrencode
qt5-script
r
racket
reiserfsprogs
repo
rofi
ruby
ruby-rouge
s-nail
screenkey
scrot
sed
shadow
shellcheck
shotcut
sonic-pi
soundfont-fluid
sox
stack
stow
strace
sudo
sxhkd
sxiv
syncthing
sysfsutils
systemd
systemd-sysvcompat
tar
telegram-desktop
tesseract
tesseract-data-eng
texinfo
texlive-bibtexextra
texlive-core
texlive-fontsextra
texlive-formatsextra
texlive-latexextra
texlive-pictures
texlive-science
thunar
thunar-volman
thunderbird
timidity++
tmux
tor
tree
ttf-bitstream-vera
ttf-dejavu
ttf-fira-code
ttf-font-awesome
ttf-ibm-plex
ttf-jetbrains-mono
ttf-joypixels
ttf-nerd-fonts-symbols
udiskie
unison
upx
usbutils
util-linux
vagrant
vi
vim
vlc
weechat
wesnoth
wget
which
wkhtmltopdf
xarchiver
xautomation
xclip
xdg-user-dirs
xdotool
xf86-video-nouveau
xf86-video-vesa
xfsprogs
xorg-bdftopcf
xorg-docs
xorg-font-util
xorg-fonts-100dpi
xorg-fonts-75dpi
xorg-fonts-encodings
xorg-iceauth
xorg-luit
xorg-mkfontscale
xorg-server
xorg-server-common
xorg-server-devel
xorg-server-xephyr
xorg-server-xnest
xorg-server-xvfb
xorg-server-xwayland
xorg-sessreg
xorg-setxkbmap
xorg-smproxy
xorg-x11perf
xorg-xauth
xorg-xbacklight
xorg-xcmsdb
xorg-xcursorgen
xorg-xdpyinfo
xorg-xdriinfo
xorg-xev
xorg-xgamma
xorg-xhost
xorg-xinit
xorg-xinput
xorg-xkbcomp
xorg-xkbevd
xorg-xkbutils
xorg-xkill
xorg-xlsatoms
xorg-xlsclients
xorg-xmodmap
xorg-xpr
xorg-xprop
xorg-xrandr
xorg-xrdb
xorg-xrefresh
xorg-xset
xorg-xsetroot
xorg-xvinfo
xorg-xwd
xorg-xwininfo
xorg-xwud
youtube-dl
zathura
zathura-pdf-mupdf
zbar
zsh
zsh-completions

0
pacman/hooks/100-systemd-boot.hook Normal file → Executable file
View File

0
pacman/pacman.conf Normal file → Executable file
View File

0
picom/picom.conf Normal file → Executable file
View File

0
polybar/config Normal file → Executable file
View File

0
rofi/config.rasi Normal file → Executable file
View File

0
rofi/themes/dmenu.rasi Normal file → Executable file
View File

0
rofi/themes/fds-center-menu.rasi Normal file → Executable file
View File

0
rofi/themes/fds-mini-sidebar.rasi Normal file → Executable file
View File

12
sxhkd/sxhkdrc Normal file → Executable file
View File

@ -12,7 +12,7 @@ super + t
# Application launcher.
super + d
rofi -show drun -sidebar-mode -theme fds-mini-sidebar
rofi -show drun -sidebar-mode -theme themes/fds-mini-sidebar
# User action shortcuts.
super + F10
@ -22,7 +22,7 @@ super + F11
user-prompt "Proceed to reboot?" "sudo -A reboot"
super + F12
user-prompt "Exit from X session?" "killall Xorg"
user-prompt "Exit from X session?" "pkill bspwm"
# Screenshot and screencast launcher.
super + {_, shift + } Print
@ -42,12 +42,8 @@ super + shift + m
super + shift + e
choose-emoji-menu
super + shift + t
select-wal-theme
super + shift + f
rofi-recoll --rofi-options " -fullscreen" | xargs xdg-open
super + shift + c
$HOME/.config/emacs/bin/org-capture
shift + super + r
pkill -USR1 sxhkd && notify-send "SXHKD config has successfully reloaded."

0
sxiv/exec/image-info Normal file → Executable file
View File

0
sxiv/exec/key-handler Normal file → Executable file
View File

View File

@ -1,10 +0,0 @@
[Unit]
Description=Unison backup sync
Documentation=https://www.cis.upenn.edu/~bcpierce/unison/docs.html
[Service]
Type=oneshot
ExecStart=/usr/bin/unison main -fat -ignorearchives -batch -root "/run/media/%u/Seagate Backup Plus Drive" -links true
[Install]
WantedBy=graphical.target

View File

@ -1,10 +0,0 @@
[Unit]
Description=Periodic Unison backup sync
Documentation=https://www.cis.upenn.edu/~bcpierce/unison/docs.html
[Timer]
OnCalendar=*-*-* 0/4:00:00
Persistent=true
[Install]
WantedBy=default.target

View File

@ -1,9 +0,0 @@
[Unit]
Description=Commit the package list into the dotfiles
[Service]
Type=oneshot
ExecStart=%h/.local/bin/commit-pkglist
[Install]
WantedBy=default.target

View File

@ -1,9 +0,0 @@
[Unit]
Description=Commit the package list into the dotfiles
[Timer]
OnCalendar=monthly
Persistent=true
[Install]
WantedBy=default.target

Some files were not shown because too many files have changed in this diff Show More