mirror of
https://github.com/kmein/niveum
synced 2026-03-16 10:11:08 +01:00
remove rec
This commit is contained in:
@@ -4,9 +4,11 @@
|
||||
lib,
|
||||
niveumPackages,
|
||||
...
|
||||
}: let
|
||||
}:
|
||||
let
|
||||
inherit (import ../lib/email.nix) defaults thunderbirdProfile;
|
||||
in {
|
||||
in
|
||||
{
|
||||
age.secrets = {
|
||||
email-password-ical-ephemeris = {
|
||||
file = ../secrets/email-password-ical-ephemeris.age;
|
||||
@@ -50,7 +52,8 @@ in {
|
||||
|
||||
programs.mbsync = {
|
||||
enable = true;
|
||||
extraConfig = lib.concatStringsSep "\n\n" (lib.mapAttrsToList (name: account: ''
|
||||
extraConfig = lib.concatStringsSep "\n\n" (
|
||||
lib.mapAttrsToList (name: account: ''
|
||||
IMAPAccount ${name}
|
||||
CertificateFile /etc/ssl/certs/ca-certificates.crt
|
||||
Host ${account.imap.host}
|
||||
@@ -74,30 +77,35 @@ in {
|
||||
Patterns *
|
||||
Remove None
|
||||
SyncState *
|
||||
'')
|
||||
config.home-manager.users.me.accounts.email.accounts);
|
||||
'') config.home-manager.users.me.accounts.email.accounts
|
||||
);
|
||||
};
|
||||
|
||||
accounts.email.accounts = {
|
||||
cock =
|
||||
lib.recursiveUpdate defaults
|
||||
rec {
|
||||
let
|
||||
mailhost = "mail.cock.li";
|
||||
address = "2210@cock.li";
|
||||
in
|
||||
lib.recursiveUpdate defaults {
|
||||
address = address;
|
||||
userName = address;
|
||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-cock.path}";
|
||||
realName = "2210";
|
||||
imap.host = "mail.cock.li";
|
||||
imap.host = mailhost;
|
||||
imap.port = 993;
|
||||
smtp.host = imap.host;
|
||||
smtp.host = mailhost;
|
||||
smtp.port = 25;
|
||||
smtp.tls.useStartTls = true;
|
||||
};
|
||||
ical-ephemeris =
|
||||
lib.recursiveUpdate defaults
|
||||
rec {
|
||||
userName = "ical.ephemeris@web.de";
|
||||
let
|
||||
address = "ical.ephemeris@web.de";
|
||||
in
|
||||
lib.recursiveUpdate defaults {
|
||||
userName = address;
|
||||
realName = "Kieran from iCal Ephemeris";
|
||||
address = userName;
|
||||
address = address;
|
||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-ical-ephemeris.path}";
|
||||
imap.host = "imap.web.de";
|
||||
imap.port = 993;
|
||||
@@ -106,15 +114,18 @@ in {
|
||||
smtp.tls.useStartTls = true;
|
||||
};
|
||||
posteo =
|
||||
lib.recursiveUpdate defaults
|
||||
rec {
|
||||
let
|
||||
mailhost = "posteo.de";
|
||||
address = "kieran.meinhardt@posteo.net";
|
||||
aliases = ["kmein@posteo.de"];
|
||||
in
|
||||
lib.recursiveUpdate defaults {
|
||||
address = address;
|
||||
aliases = [ "kmein@posteo.de" ];
|
||||
userName = address;
|
||||
imap.host = "posteo.de";
|
||||
imap.host = mailhost;
|
||||
imap.port = 993;
|
||||
imap.tls.enable = true;
|
||||
smtp.host = imap.host;
|
||||
smtp.host = mailhost;
|
||||
smtp.port = 465;
|
||||
smtp.tls.enable = true;
|
||||
primary = true;
|
||||
@@ -141,10 +152,8 @@ in {
|
||||
"msgcompose.text_color" = config.lib.stylix.colors.withHashtag.base00;
|
||||
"msgcompose.background_color" = config.lib.stylix.colors.withHashtag.base05;
|
||||
};
|
||||
userChrome = ''
|
||||
'';
|
||||
userContent = ''
|
||||
'';
|
||||
userChrome = '''';
|
||||
userContent = '''';
|
||||
withExternalGnupg = false;
|
||||
};
|
||||
};
|
||||
@@ -279,7 +288,9 @@ in {
|
||||
ui.spinner = ". , .";
|
||||
general.unsafe-accounts-conf = true;
|
||||
general.pgp-provider = "gpg";
|
||||
viewer = {pager = "${pkgs.less}/bin/less -R";};
|
||||
viewer = {
|
||||
pager = "${pkgs.less}/bin/less -R";
|
||||
};
|
||||
compose = {
|
||||
# address-book-cmd = "khard email --remove-first-line --parsable '%s'";
|
||||
no-attachment-warning = "(attach|attached|attachments?|anbei|Anhang|angehängt|beigefügt)";
|
||||
@@ -296,24 +307,26 @@ in {
|
||||
"message/rfc822" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
|
||||
"application/x-sh" = "${pkgs.bat}/bin/bat -fP -l sh";
|
||||
};
|
||||
openers = let
|
||||
as-pdf = pkgs.writers.writeDash "as-pdf" ''
|
||||
d=$(mktemp -d)
|
||||
trap clean EXIT
|
||||
clean() {
|
||||
rm -rf "$d"
|
||||
}
|
||||
${pkgs.libreoffice}/bin/libreoffice --headless --convert-to pdf "$1" --outdir "$d"
|
||||
${pkgs.zathura}/bin/zathura "$d"/*.pdf
|
||||
'';
|
||||
in {
|
||||
"image/*" = "${pkgs.nsxiv}/bin/nsxiv";
|
||||
"application/pdf" = "${pkgs.zathura}/bin/zathura";
|
||||
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" = toString as-pdf;
|
||||
"application/vnd.oasis.opendocument.text" = toString as-pdf;
|
||||
"video/*" = "${pkgs.mpv}/bin/mpv";
|
||||
"audio/*" = "${pkgs.mpv}/bin/mpv";
|
||||
};
|
||||
openers =
|
||||
let
|
||||
as-pdf = pkgs.writers.writeDash "as-pdf" ''
|
||||
d=$(mktemp -d)
|
||||
trap clean EXIT
|
||||
clean() {
|
||||
rm -rf "$d"
|
||||
}
|
||||
${pkgs.libreoffice}/bin/libreoffice --headless --convert-to pdf "$1" --outdir "$d"
|
||||
${pkgs.zathura}/bin/zathura "$d"/*.pdf
|
||||
'';
|
||||
in
|
||||
{
|
||||
"image/*" = "${pkgs.nsxiv}/bin/nsxiv";
|
||||
"application/pdf" = "${pkgs.zathura}/bin/zathura";
|
||||
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" = toString as-pdf;
|
||||
"application/vnd.oasis.opendocument.text" = toString as-pdf;
|
||||
"video/*" = "${pkgs.mpv}/bin/mpv";
|
||||
"audio/*" = "${pkgs.mpv}/bin/mpv";
|
||||
};
|
||||
};
|
||||
|
||||
templates = {
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
{pkgs, ...}:
|
||||
# https://paste.sr.ht/~erictapen/11716989e489b600f237041b6d657fdf0ee17b34
|
||||
let
|
||||
certificate = pkgs.stdenv.mkDerivation rec {
|
||||
name = "dst-root-ca-x3.pem";
|
||||
name = "dst-root-ca-x3.pem";
|
||||
certificate = pkgs.stdenv.mkDerivation {
|
||||
inherit name;
|
||||
src = builtins.toFile "${name}.sed" ''
|
||||
1,/DST Root CA X3/d
|
||||
1,/-----END CERTIFICATE-----/p
|
||||
|
||||
@@ -140,9 +140,9 @@ in
|
||||
agent = {
|
||||
enable = true;
|
||||
pinentryPackage = pkgs.pinentry-qt;
|
||||
settings = rec {
|
||||
default-cache-ttl = 2 * 60 * 60;
|
||||
max-cache-ttl = 4 * default-cache-ttl;
|
||||
settings = let defaultCacheTtl = 2 * 60 * 60; in {
|
||||
default-cache-ttl = defaultCacheTtl;
|
||||
max-cache-ttl = 4 * defaultCacheTtl;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -258,15 +258,15 @@ in
|
||||
./mastodon-bot.nix
|
||||
{
|
||||
home-manager.users.me = {
|
||||
xdg.userDirs = rec {
|
||||
xdg.userDirs = let pictures = "${config.users.users.me.home}/cloud/nextcloud/Bilder"; in {
|
||||
enable = true;
|
||||
documents = "${config.users.users.me.home}/cloud/nextcloud/Documents";
|
||||
desktop = "/tmp";
|
||||
download = "${config.users.users.me.home}/sync/Downloads";
|
||||
music = "${config.users.users.me.home}/mobile/audio";
|
||||
pictures = "${config.users.users.me.home}/cloud/nextcloud/Bilder";
|
||||
publicShare = "${config.users.users.me.home}/cloud/nextcloud/tmp";
|
||||
videos = pictures;
|
||||
pictures = pictures;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -119,11 +119,11 @@ in {
|
||||
vollkorn
|
||||
zilla-slab
|
||||
]; # google-fonts league-of-moveable-type
|
||||
fontconfig.defaultFonts = rec {
|
||||
fontconfig.defaultFonts = let emoji = ["Noto Color Emoji"]; in {
|
||||
monospace = ["Noto Sans Mono"] ++ emoji;
|
||||
serif = ["Noto Serif" "Noto Naskh Arabic" "Noto Serif Devanagari"];
|
||||
sansSerif = ["Noto Sans Display" "Noto Naskh Arabic" "Noto Sans Hebrew" "Noto Sans Devanagari" "Noto Sans CJK JP" "Noto Sans Coptic" "Noto Sans Syriac Western"];
|
||||
emoji = ["Noto Color Emoji"];
|
||||
inherit emoji;
|
||||
};
|
||||
# xelatex fails with woff files
|
||||
# ref https://tex.stackexchange.com/questions/392144/xelatex-and-fontspec-crash-trying-to-find-woff-file-for-some-fonts-but-not-other
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (import ../lib/email.nix) defaults;
|
||||
sshIdentity = name: "${config.users.users.me.home}/.ssh/${name}";
|
||||
in {
|
||||
age.secrets = {
|
||||
email-password-fysi = {
|
||||
file = ../secrets/email-password-fysi.age;
|
||||
owner = config.users.users.me.name;
|
||||
group = config.users.users.me.group;
|
||||
mode = "400";
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.users.me = {
|
||||
accounts.email.accounts = {
|
||||
fysi =
|
||||
lib.recursiveUpdate defaults
|
||||
rec {
|
||||
address = "kieran@fysi.tech";
|
||||
userName = address;
|
||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-fysi.path}";
|
||||
flavor = "fastmail.com";
|
||||
};
|
||||
};
|
||||
|
||||
programs.ssh.matchBlocks = rec {
|
||||
"nextcloud.fysi.dev" = {
|
||||
hostname = "116.203.82.203";
|
||||
user = "root";
|
||||
};
|
||||
"lingua.miaengiadina.ch" = {
|
||||
hostname = "135.181.85.233";
|
||||
user = "root";
|
||||
};
|
||||
"cms-dev.woc2023.app".identityFile = sshIdentity "fysiweb";
|
||||
"cms-master.woc2023.app".identityFile = sshIdentity "fysiweb";
|
||||
"fysi-dev1" = {
|
||||
hostname = "94.130.229.139";
|
||||
user = "root";
|
||||
identityFile = sshIdentity "fysiweb";
|
||||
};
|
||||
${fysi-dev1.hostname} = fysi-dev1;
|
||||
"fysi-shared0" = {
|
||||
hostname = "49.12.205.235";
|
||||
user = "root";
|
||||
identityFile = sshIdentity "fysiweb";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -5,9 +5,11 @@
|
||||
};
|
||||
|
||||
home-manager.users.me = {
|
||||
programs.fzf = rec {
|
||||
enable = true;
|
||||
programs.fzf = let
|
||||
defaultCommand = "${pkgs.fd}/bin/fd --type f --strip-cwd-prefix --follow --no-ignore-vcs --exclude .git";
|
||||
in {
|
||||
enable = true;
|
||||
defaultCommand = defaultCommand;
|
||||
defaultOptions = ["--height=40%"];
|
||||
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
|
||||
changeDirWidgetOptions = [
|
||||
|
||||
@@ -10,11 +10,6 @@
|
||||
username = "kieran";
|
||||
passwordFile = config.age.secrets.nextcloud-password-kieran.path;
|
||||
};
|
||||
fysiCloud = {
|
||||
davEndpoint = "https://nextcloud.fysi.dev/remote.php/dav";
|
||||
username = "kmein";
|
||||
passwordFile = config.age.secrets.nextcloud-password-fysi.path;
|
||||
};
|
||||
in {
|
||||
age.secrets = {
|
||||
nextcloud-password-kieran = {
|
||||
|
||||
@@ -12,33 +12,8 @@ in {
|
||||
eval $(${pkgs.gnome3.gnome-keyring}/bin/gnome-keyring-daemon --daemonize --components=ssh,secrets)
|
||||
export SSH_AUTH_SOCK
|
||||
'';
|
||||
# services.gpg-agent = rec {
|
||||
# enable = false;
|
||||
# enableSshSupport = true;
|
||||
# defaultCacheTtlSsh = 2 * 60 * 60;
|
||||
# maxCacheTtlSsh = 4 * defaultCacheTtlSsh;
|
||||
# sshKeys = [
|
||||
# "568047C91DE03A23883E340F15A9C24D313E847C"
|
||||
# "BB3EE102DB8CD45540A78A6B18B511B67061F6B4" # kfm@manakish ed25519
|
||||
# "3F8986755818B5762A096BE212777EAAC441DD9D" # fysiweb rsa
|
||||
# "0E4ABD229432486CC432639BB0986B2CDE365105" # agenix ed25519
|
||||
# "A1E8D32CBFCDBD2DE798E2298D795CCFD785AE06" # kfm@kabsa ed25519
|
||||
# ];
|
||||
# };
|
||||
};
|
||||
|
||||
# environment.extraInit = ''
|
||||
# if [[ -z "$SSH_AUTH_SOCK" ]]; then
|
||||
# export SSH_AUTH_SOCK="$(${pkgs.gnupg}/bin/gpgconf --list-dirs agent-ssh-socket)"
|
||||
# fi
|
||||
# '';
|
||||
|
||||
# environment.interactiveShellInit = ''
|
||||
# GPG_TTY="$(tty)"
|
||||
# export GPG_TTY
|
||||
# ${pkgs.gnupg}/bin/gpg-connect-agent updatestartuptty /bye > /dev/null
|
||||
# '';
|
||||
|
||||
home-manager.users.me.programs.ssh = {
|
||||
enable = true;
|
||||
enableDefaultConfig = false;
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
username = "meinhak99";
|
||||
inherit (import ../lib/email.nix) defaults pronouns;
|
||||
inherit (import ../lib) remoteDir;
|
||||
fu-defaults = rec {
|
||||
imap.host = "mail.zedat.fu-berlin.de";
|
||||
fu-defaults = let mailhost = "mail.zedat.fu-berlin.de"; in {
|
||||
imap.host = mailhost;
|
||||
imap.port = 993;
|
||||
imap.tls.enable = true;
|
||||
smtp.host = imap.host;
|
||||
smtp.host = mailhost;
|
||||
smtp.port = 465;
|
||||
smtp.tls.enable = true;
|
||||
folders.drafts = "Entwürfe";
|
||||
@@ -45,8 +45,8 @@ in {
|
||||
fu =
|
||||
lib.recursiveUpdate defaults
|
||||
(lib.recursiveUpdate fu-defaults
|
||||
rec {
|
||||
userName = "meinhak99";
|
||||
(let userName = "meinhak99"; in {
|
||||
userName = userName;
|
||||
address = "kieran.meinhardt@fu-berlin.de";
|
||||
aliases = ["${userName}@fu-berlin.de"];
|
||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhak99.path}";
|
||||
@@ -54,7 +54,7 @@ in {
|
||||
enable = true;
|
||||
settings.backend = "imap";
|
||||
};
|
||||
});
|
||||
}));
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
pkgs: rec {
|
||||
pkgs: {
|
||||
terminal = "alacritty";
|
||||
browser = "${pkgs.firefox}/bin/firefox";
|
||||
fileManager = "${pkgs.pcmanfm}/bin/pcmanfm";
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
argument ? "-",
|
||||
}: "${type} '${path}' ${mode} ${user} ${group} ${age} ${argument}";
|
||||
|
||||
restic = rec {
|
||||
port = 3571;
|
||||
host = "zaatar.r";
|
||||
restic = let host = "zaatar.r"; port = 3571; in {
|
||||
inherit host port;
|
||||
repository = "rest:http://${host}:${toString port}/";
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
rec {
|
||||
let
|
||||
thunderbirdProfile = "donnervogel";
|
||||
in
|
||||
{
|
||||
inherit thunderbirdProfile;
|
||||
pronouns = builtins.concatStringsSep "/" [
|
||||
"er"
|
||||
"he"
|
||||
@@ -14,7 +17,7 @@ rec {
|
||||
defaults = {
|
||||
thunderbird = {
|
||||
enable = true;
|
||||
profiles = [thunderbirdProfile];
|
||||
profiles = [ thunderbirdProfile ];
|
||||
};
|
||||
aerc.enable = true;
|
||||
realName = "Kierán Meinhardt";
|
||||
|
||||
@@ -56,7 +56,7 @@ with lib; let
|
||||
|
||||
imp = {
|
||||
systemd.services.power-action = {
|
||||
serviceConfig = rec {
|
||||
serviceConfig = {
|
||||
ExecStart = startScript;
|
||||
User = cfg.user;
|
||||
};
|
||||
|
||||
@@ -5,9 +5,10 @@
|
||||
pandoc,
|
||||
}: let
|
||||
owner = "kamalist";
|
||||
pname = "auc";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "auc";
|
||||
stdenv.mkDerivation {
|
||||
inherit pname;
|
||||
version = "2019-04-02";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -12,12 +12,15 @@
|
||||
util-linux,
|
||||
zbar,
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
name = "hc-${meta.version}";
|
||||
let
|
||||
version = "1.0.0";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "hc-${version}";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://cgit.krebsco.de/hc";
|
||||
rev = "refs/tags/v${meta.version}";
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "09349gja22p0j3xs082kp0fnaaada14bafszn4r3q7rg1id2slfb";
|
||||
};
|
||||
|
||||
@@ -44,6 +47,6 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
meta = {
|
||||
version = "1.0.0";
|
||||
inherit version;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -6,9 +6,12 @@
|
||||
libogg,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
name = "opustags";
|
||||
let
|
||||
version = "1.3.0";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "opustags";
|
||||
version = version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fmang";
|
||||
|
||||
@@ -6,8 +6,11 @@
|
||||
regex,
|
||||
...
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
let
|
||||
pname = "indic_transliteration";
|
||||
in
|
||||
buildPythonPackage {
|
||||
inherit pname;
|
||||
version = "unstable-2020-12-15";
|
||||
src = fetchFromGitHub {
|
||||
repo = pname;
|
||||
|
||||
@@ -6,9 +6,12 @@
|
||||
taglib,
|
||||
zlib,
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "stag";
|
||||
let
|
||||
version = "1.0";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "stag";
|
||||
version = version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "smabie";
|
||||
|
||||
@@ -2,10 +2,14 @@
|
||||
stdenv,
|
||||
fetchurl,
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
name = "${pname}-${version}";
|
||||
let
|
||||
pname = "text2pdf";
|
||||
version = "1.1";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "${pname}-${version}";
|
||||
pname = pname;
|
||||
version = version;
|
||||
src = fetchurl {
|
||||
url = "http://www.eprg.org/pdfcorner/text2pdf/text2pdf.c";
|
||||
sha256 = "002nyky12vf1paj7az6j6ra7lljwkhqzz238v7fyp7sfgxw0f7d1";
|
||||
|
||||
@@ -64,10 +64,9 @@
|
||||
vim-repeat
|
||||
vim-sensible
|
||||
vim-surround
|
||||
(vimUtils.buildVimPlugin rec {
|
||||
(vimUtils.buildVimPlugin {
|
||||
pname = "vim-dim";
|
||||
version = "1.1.0";
|
||||
name = "${pname}-${version}";
|
||||
src = fetchFromGitHub {
|
||||
owner = "jeffkreeftmeijer";
|
||||
repo = pname;
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
config = args.config or {};
|
||||
|
||||
lib =
|
||||
args.lib
|
||||
// rec {
|
||||
lib.recursiveUpdate args.lib
|
||||
(let
|
||||
attrPaths = let
|
||||
recurse = path: value:
|
||||
if builtins.isAttrs value
|
||||
@@ -18,6 +18,8 @@
|
||||
else [(lib.nameValuePair path value)];
|
||||
in
|
||||
attrs: lib.flatten (recurse [] attrs);
|
||||
in {
|
||||
inherit attrPaths;
|
||||
|
||||
attrPathsSep = sep: attrs: lib.listToAttrs (map (x: x // {name = lib.concatStringsSep sep x.name;}) (attrPaths attrs));
|
||||
|
||||
@@ -33,7 +35,7 @@
|
||||
setCommand = name: value: "/set ${name} \"${toWeechatValue value}\"";
|
||||
|
||||
filterAddreplace = name: filter: "/filter addreplace ${name} ${filter.buffer} ${toWeechatValue filter.tags} ${filter.regex}";
|
||||
};
|
||||
});
|
||||
|
||||
cfg = eval.config;
|
||||
|
||||
|
||||
@@ -49,10 +49,10 @@ in
|
||||
};
|
||||
|
||||
niveum.passport.services = [
|
||||
rec {
|
||||
{
|
||||
link = "https://tarot.kmein.de";
|
||||
title = "Tarot";
|
||||
description = "draws Tarot cards for you. See <a href=\"${link}/files/key.pdf\">here</a> for information on how to interpret them.";
|
||||
description = "draws Tarot cards for you.";
|
||||
}
|
||||
{
|
||||
link = "https://iching.kmein.de";
|
||||
|
||||
Reference in New Issue
Block a user