mirror of
https://github.com/kmein/niveum
synced 2026-03-27 06:41:07 +01:00
Compare commits
57 Commits
feature/ha
...
c76c396342
| Author | SHA1 | Date | |
|---|---|---|---|
| c76c396342 | |||
| d60ac5de17 | |||
| d9c324c22d | |||
| aec50b5d84 | |||
| 7da1e6178d | |||
| 5fba7afd82 | |||
| 683a206c7b | |||
| 014cead444 | |||
|
|
5ca1312464 | ||
| 3b891aea90 | |||
| b096a1c1ae | |||
| a211650860 | |||
| 8f895f01a7 | |||
| 765a99d89f | |||
| c9cd49c3ac | |||
| 0f612ba72b | |||
| 0f6819f54a | |||
| 6ffed60aaf | |||
| 0a847dbb1e | |||
| 074a6b9434 | |||
| 229a48ac07 | |||
|
|
df508de28b | ||
| 05702d9917 | |||
| 98c0e744ce | |||
| 33770cdf63 | |||
| dbecace73b | |||
| 04738b91ee | |||
| d7c3e03c0f | |||
| 5811fa3921 | |||
| f435277463 | |||
| 587ec584c1 | |||
| 832b115a0d | |||
| 385a26ac9d | |||
| 1b92a35237 | |||
| 06805e5b2a | |||
| 3f50c45bed | |||
| 5a4d49e059 | |||
| 78eb463742 | |||
| 55f0484f93 | |||
| 75d19297ee | |||
| 084a56b0a1 | |||
| 3c5246b159 | |||
| 73ce1bc4b5 | |||
| 84b4e50e64 | |||
| ed160923c7 | |||
| 38c1dc8745 | |||
| 559a6cdc86 | |||
|
|
d4b208b620 | ||
| 51bbbc9e56 | |||
| 39e5653825 | |||
| 65dc602d67 | |||
| 333bf9e145 | |||
| 4052df257c | |||
|
|
1ca8827e91 | ||
| a4f3c98fae | |||
| f403319fea | |||
| d0b405fb15 |
@@ -4,7 +4,7 @@
|
|||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (import ../lib/email.nix) defaults;
|
inherit (import ../lib/email.nix) defaults thunderbirdProfile;
|
||||||
in {
|
in {
|
||||||
age.secrets = {
|
age.secrets = {
|
||||||
email-password-cock = {
|
email-password-cock = {
|
||||||
@@ -96,6 +96,26 @@ in {
|
|||||||
|
|
||||||
# programs.himalaya.enable = true;
|
# programs.himalaya.enable = true;
|
||||||
|
|
||||||
|
programs.thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
};
|
||||||
|
profiles.${thunderbirdProfile} = {
|
||||||
|
isDefault = true;
|
||||||
|
settings = {
|
||||||
|
"mail.default_send_format" = 1;
|
||||||
|
"msgcompose.default_colors" = false;
|
||||||
|
"msgcompose.text_color" = config.lib.stylix.colors.withHashtag.base00;
|
||||||
|
"msgcompose.background_color" = config.lib.stylix.colors.withHashtag.base05;
|
||||||
|
};
|
||||||
|
userChrome = ''
|
||||||
|
'';
|
||||||
|
userContent = ''
|
||||||
|
'';
|
||||||
|
withExternalGnupg = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
programs.aerc = {
|
programs.aerc = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
@@ -227,19 +247,19 @@ in {
|
|||||||
general.pgp-provider = "gpg";
|
general.pgp-provider = "gpg";
|
||||||
viewer = {pager = "${pkgs.less}/bin/less -R";};
|
viewer = {pager = "${pkgs.less}/bin/less -R";};
|
||||||
compose = {
|
compose = {
|
||||||
address-book-cmd = "khard email --remove-first-line --parsable '%s'";
|
# address-book-cmd = "khard email --remove-first-line --parsable '%s'";
|
||||||
no-attachment-warning = "(attach|attached|attachments?|anbei|Anhang|angehängt)";
|
no-attachment-warning = "(attach|attached|attachments?|anbei|Anhang|angehängt|beigefügt)";
|
||||||
};
|
};
|
||||||
filters = {
|
filters = {
|
||||||
"text/plain" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
|
"text/plain" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
|
||||||
"text/calendar" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/calendar";
|
"text/calendar" = "${pkgs.aerc}/libexec/aerc/filters/calendar";
|
||||||
"text/html" = "${pkgs.aerc}/share/aerc/filters/html"; # Requires w3m, dante
|
"text/html" = "${pkgs.aerc}/libexec/aerc/filters/html"; # Requires w3m, dante
|
||||||
# "text/html" =
|
# "text/html" =
|
||||||
# "${pkgs.aerc}/share/aerc/filters/html | ${pkgs.aerc}/share/aerc/filters/colorize";
|
# "${pkgs.aerc}/share/aerc/filters/html | ${pkgs.aerc}/share/aerc/filters/colorize";
|
||||||
# "text/*" =
|
# "text/*" =
|
||||||
# ''${pkgs.bat}/bin/bat -fP --theme=ansi --file-name="$AERC_FILENAME "'';
|
# ''${pkgs.bat}/bin/bat -fP --theme=ansi --file-name="$AERC_FILENAME "'';
|
||||||
"message/delivery-status" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
|
"message/delivery-status" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
|
||||||
"message/rfc822" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
|
"message/rfc822" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
|
||||||
"application/x-sh" = "${pkgs.bat}/bin/bat -fP -l sh";
|
"application/x-sh" = "${pkgs.bat}/bin/bat -fP -l sh";
|
||||||
};
|
};
|
||||||
openers = let
|
openers = let
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
hardware.bluetooth = {
|
hardware.bluetooth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings.General.Enable =
|
package = pkgs.bluez;
|
||||||
lib.concatStringsSep "," ["Source" "Sink" "Media" "Socket"];
|
settings.general = {
|
||||||
|
enable = "Source,Sink,Media,Socket";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.blueman.enable = true;
|
services.blueman.enable = true;
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ in {
|
|||||||
mode = "400";
|
mode = "400";
|
||||||
};
|
};
|
||||||
|
|
||||||
services.syncthing = rec {
|
services.syncthing = {
|
||||||
enable = true;
|
enable = true;
|
||||||
user = "kfm";
|
user = "kfm";
|
||||||
openDefaultPorts = true;
|
openDefaultPorts = true;
|
||||||
@@ -103,21 +103,23 @@ in {
|
|||||||
dataDir = "/home/kfm/.config/syncthing";
|
dataDir = "/home/kfm/.config/syncthing";
|
||||||
cert = config.age.secrets.syncthing-cert.path;
|
cert = config.age.secrets.syncthing-cert.path;
|
||||||
key = config.age.secrets.syncthing-key.path;
|
key = config.age.secrets.syncthing-key.path;
|
||||||
inherit ((import ../lib).syncthing) devices;
|
settings = {
|
||||||
folders = let
|
inherit ((import ../lib).syncthing) devices;
|
||||||
cloud-dir = "${config.users.users.me.home}/cloud";
|
folders = let
|
||||||
in {
|
cloud-dir = "${config.users.users.me.home}/cloud";
|
||||||
"${cloud-dir}/syncthing/zotero".devices = ["kabsa" "manakish"];
|
in {
|
||||||
"${cloud-dir}/syncthing/common".devices = ["kabsa" "manakish"];
|
"${cloud-dir}/syncthing/zotero/storage".devices = ["kabsa" "manakish"];
|
||||||
"${cloud-dir}/syncthing/library".devices = ["kabsa" "manakish" "heym"];
|
"${cloud-dir}/syncthing/common".devices = ["kabsa" "manakish"];
|
||||||
"${cloud-dir}/syncthing/mundoiu".devices = ["kabsa" "manakish" "heym"];
|
"${cloud-dir}/syncthing/library".devices = ["kabsa" "manakish" "heym"];
|
||||||
"${cloud-dir}/syncthing/obsidian" = {
|
"${cloud-dir}/syncthing/mundoiu".devices = ["kabsa" "manakish" "heym"];
|
||||||
devices = ["kabsa" "manakish" "heym"];
|
"${cloud-dir}/syncthing/obsidian" = {
|
||||||
id = "3r1hu-3barr";
|
devices = ["kabsa" "manakish" "heym"];
|
||||||
};
|
id = "3r1hu-3barr";
|
||||||
"${cloud-dir}/syncthing/music" = {
|
};
|
||||||
devices = ["kabsa" "manakish" "heym" "zaatar"];
|
"${cloud-dir}/syncthing/music" = {
|
||||||
id = "music";
|
devices = ["kabsa" "manakish" "heym" "zaatar"];
|
||||||
|
id = "music";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ in {
|
|||||||
};
|
};
|
||||||
permittedInsecurePackages = [
|
permittedInsecurePackages = [
|
||||||
"qtwebkit-5.212.0-alpha4"
|
"qtwebkit-5.212.0-alpha4"
|
||||||
|
"zotero-6.0.26"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -81,7 +82,7 @@ in {
|
|||||||
users.users.me = {
|
users.users.me = {
|
||||||
name = "kfm";
|
name = "kfm";
|
||||||
description = kieran.name;
|
description = kieran.name;
|
||||||
passwordFile = config.age.secrets.kfm-password.path;
|
hashedPasswordFile = config.age.secrets.kfm-password.path;
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
uid = 1000;
|
uid = 1000;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -52,9 +52,9 @@
|
|||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
fonts = {
|
fonts = {
|
||||||
enableDefaultFonts = true;
|
enableDefaultPackages = true;
|
||||||
fontDir.enable = true;
|
fontDir.enable = true;
|
||||||
fonts = with pkgs; [
|
packages = with pkgs; [
|
||||||
alegreya
|
alegreya
|
||||||
alegreya-sans
|
alegreya-sans
|
||||||
amiri
|
amiri
|
||||||
@@ -109,7 +109,7 @@ in {
|
|||||||
fontconfig.defaultFonts = rec {
|
fontconfig.defaultFonts = rec {
|
||||||
monospace = ["Noto Sans Mono"] ++ emoji;
|
monospace = ["Noto Sans Mono"] ++ emoji;
|
||||||
serif = ["Noto Serif" "Noto Naskh Arabic" "Noto Serif Devanagari"];
|
serif = ["Noto Serif" "Noto Naskh Arabic" "Noto Serif Devanagari"];
|
||||||
sansSerif = ["Noto Sans Display" "Noto Naskh Arabic" "Noto Sans Devanagari" "Noto Sans CJK JP" "Noto Sans Coptic"];
|
sansSerif = ["Noto Sans Display" "Noto Naskh Arabic" "Noto Sans Hebrew" "Noto Sans Devanagari" "Noto Sans CJK JP" "Noto Sans Coptic"];
|
||||||
emoji = ["Noto Color Emoji"];
|
emoji = ["Noto Color Emoji"];
|
||||||
};
|
};
|
||||||
# xelatex fails with woff files
|
# xelatex fails with woff files
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
username = "meinhak99";
|
username = "meinhak99";
|
||||||
inherit (import ../lib/email.nix) defaults;
|
inherit (import ../lib/email.nix) defaults pronouns;
|
||||||
fu-defaults = rec {
|
fu-defaults = rec {
|
||||||
imap.host = "mail.zedat.fu-berlin.de";
|
imap.host = "mail.zedat.fu-berlin.de";
|
||||||
smtp.host = imap.host;
|
smtp.host = imap.host;
|
||||||
@@ -33,6 +33,21 @@ in {
|
|||||||
address = "kieran.meinhardt@fu-berlin.de";
|
address = "kieran.meinhardt@fu-berlin.de";
|
||||||
aliases = ["${userName}@fu-berlin.de"];
|
aliases = ["${userName}@fu-berlin.de"];
|
||||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhak99.path}";
|
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhak99.path}";
|
||||||
|
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
|
||||||
|
signature = {
|
||||||
|
showSignature = "append";
|
||||||
|
text = ''
|
||||||
|
${defaults.realName}
|
||||||
|
${pronouns}
|
||||||
|
|
||||||
|
---
|
||||||
|
Studentische Hilfskraft / ZODIAC
|
||||||
|
Freie Universität Berlin
|
||||||
|
|
||||||
|
Telefon: +49 30 838 58118
|
||||||
|
Arnimallee 10, Raum K011, 14195 Berlin
|
||||||
|
'';
|
||||||
|
};
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -66,6 +81,35 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# https://www.zedat.fu-berlin.de/tip4u_157.pdf
|
||||||
|
fileSystems = let
|
||||||
|
fu-berlin-cifs-options = [
|
||||||
|
"uid=${toString config.users.users.me.uid}"
|
||||||
|
"gid=${toString config.users.groups.users.gid}"
|
||||||
|
"rw"
|
||||||
|
"nounix"
|
||||||
|
"domain=fu-berlin"
|
||||||
|
"noauto"
|
||||||
|
"x-systemd.automount"
|
||||||
|
"x-systemd.device-timeout=1"
|
||||||
|
"x-systemd.idle-timeout=1min"
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
"/media/fu-berlin/zodiac" = {
|
||||||
|
device = "//trove.storage.fu-berlin.de/GESCHKULT";
|
||||||
|
fsType = "cifs";
|
||||||
|
options =
|
||||||
|
fu-berlin-cifs-options
|
||||||
|
++ [
|
||||||
|
"credentials=${config.age.secrets.cifs-credentials-zodiac.path}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
age.secrets = {
|
||||||
|
cifs-credentials-zodiac.file = ../secrets/cifs-credentials-zodiac.age;
|
||||||
|
};
|
||||||
|
|
||||||
systemd.services.fu-vpn = {
|
systemd.services.fu-vpn = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wants = ["network-online.target"];
|
wants = ["network-online.target"];
|
||||||
|
|||||||
@@ -2,18 +2,23 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
|
ledgerDirectory = "$HOME/projects/ledger";
|
||||||
|
timeLedger = "${ledgerDirectory}/time.timeclock";
|
||||||
|
hora = pkgs.writers.writeDashBin "hora" ''
|
||||||
|
${pkgs.hledger}/bin/hledger -f "${timeLedger}" "$@"
|
||||||
|
'';
|
||||||
|
in {
|
||||||
environment.systemPackages = let
|
environment.systemPackages = let
|
||||||
ledgerDirectory = "$HOME/projects/ledger";
|
|
||||||
timeLedger = "${ledgerDirectory}/time.timeclock";
|
|
||||||
git = "${pkgs.git}/bin/git -C ${ledgerDirectory}";
|
git = "${pkgs.git}/bin/git -C ${ledgerDirectory}";
|
||||||
in [
|
in [
|
||||||
pkgs.hledger
|
pkgs.hledger
|
||||||
(pkgs.writers.writeDashBin "hora-edit" ''
|
(pkgs.writers.writeDashBin "hora-edit" ''
|
||||||
$EDITOR + "${timeLedger}" && ${pkgs.git}/bin/git -C "$(${pkgs.coreutils}/bin/dirname ${timeLedger})" commit --all --message "$(${pkgs.coreutils}/bin/date -Im)"
|
$EDITOR + "${timeLedger}" && ${pkgs.git}/bin/git -C "$(${pkgs.coreutils}/bin/dirname ${timeLedger})" commit --all --message "$(${pkgs.coreutils}/bin/date -Im)"
|
||||||
'')
|
'')
|
||||||
(pkgs.writers.writeDashBin "hora" ''
|
hora
|
||||||
${pkgs.hledger}/bin/hledger -f "${timeLedger}" "$@"
|
(pkgs.writers.writeDashBin "hora-year" ''
|
||||||
|
${hora}/bin/hora bal --tree --monthly --begin $(date +%Y) --depth 1
|
||||||
'')
|
'')
|
||||||
(pkgs.writers.writeDashBin "hora-filli" ''
|
(pkgs.writers.writeDashBin "hora-filli" ''
|
||||||
${pkgs.hledger}/bin/hledger -f "${timeLedger}" register fillidefilla -O csv \
|
${pkgs.hledger}/bin/hledger -f "${timeLedger}" register fillidefilla -O csv \
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (import ../lib/email.nix) defaults;
|
inherit (import ../lib/email.nix) defaults pronouns;
|
||||||
hu-defaults = {
|
hu-defaults = {
|
||||||
imap.host = "mailbox.cms.hu-berlin.de";
|
imap.host = "mailbox.cms.hu-berlin.de";
|
||||||
imap.port = 993;
|
imap.port = 993;
|
||||||
@@ -56,12 +56,6 @@ in {
|
|||||||
group = config.users.users.me.group;
|
group = config.users.users.me.group;
|
||||||
mode = "400";
|
mode = "400";
|
||||||
};
|
};
|
||||||
email-password-fsklassp = {
|
|
||||||
file = ../secrets/email-password-fsklassp.age;
|
|
||||||
owner = config.users.users.me.name;
|
|
||||||
group = config.users.users.me.group;
|
|
||||||
mode = "400";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.me = {
|
home-manager.users.me = {
|
||||||
@@ -80,15 +74,6 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
accounts.email.accounts = rec {
|
accounts.email.accounts = rec {
|
||||||
hu-student =
|
|
||||||
lib.recursiveUpdate defaults
|
|
||||||
(lib.recursiveUpdate hu-defaults
|
|
||||||
rec {
|
|
||||||
userName = "meinhark";
|
|
||||||
address = "kieran.felix.meinhardt@hu-berlin.de";
|
|
||||||
aliases = ["${userName}@hu-berlin.de"];
|
|
||||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhark.path}";
|
|
||||||
});
|
|
||||||
hu-student-cs =
|
hu-student-cs =
|
||||||
lib.recursiveUpdate defaults
|
lib.recursiveUpdate defaults
|
||||||
(lib.recursiveUpdate hu-defaults
|
(lib.recursiveUpdate hu-defaults
|
||||||
@@ -113,6 +98,7 @@ in {
|
|||||||
showSignature = "append";
|
showSignature = "append";
|
||||||
text = ''
|
text = ''
|
||||||
${defaults.realName}
|
${defaults.realName}
|
||||||
|
${pronouns}
|
||||||
Studentische Hilfskraft / Administrator ALEW
|
Studentische Hilfskraft / Administrator ALEW
|
||||||
Humboldt-Universität zu Berlin
|
Humboldt-Universität zu Berlin
|
||||||
|
|
||||||
@@ -133,28 +119,6 @@ in {
|
|||||||
inherit (hu-employee) signature;
|
inherit (hu-employee) signature;
|
||||||
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
|
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
|
||||||
});
|
});
|
||||||
hu-fsi =
|
|
||||||
lib.recursiveUpdate defaults
|
|
||||||
(lib.recursiveUpdate hu-defaults
|
|
||||||
rec {
|
|
||||||
userName = "fsklassp";
|
|
||||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-fsklassp.path}";
|
|
||||||
address = "${userName}@hu-berlin.de";
|
|
||||||
realName = "FSI Klassische Philologie";
|
|
||||||
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
|
|
||||||
signature = {
|
|
||||||
showSignature = "append";
|
|
||||||
text = ''
|
|
||||||
Fachschafts-Initiative
|
|
||||||
|
|
||||||
Humboldt-Universität zu Berlin
|
|
||||||
Sprach- und literaturwissenschaftliche Fakultät
|
|
||||||
Institut für klassische Philologie
|
|
||||||
Unter den Linden 6
|
|
||||||
10099 Berlin
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -181,20 +145,17 @@ in {
|
|||||||
systemd.services.hu-vpn = {
|
systemd.services.hu-vpn = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wants = ["network-online.target"];
|
wants = ["network-online.target"];
|
||||||
serviceConfig.LoadCredential = "password:${config.age.secrets.email-password-meinhark.path}";
|
serviceConfig.LoadCredential = "password:${config.age.secrets.email-password-meinhaki.path}";
|
||||||
script = ''
|
script = ''
|
||||||
if ${pkgs.wirelesstools}/bin/iwgetid | ${pkgs.gnugrep}/bin/grep --invert-match eduroam
|
${pkgs.openfortivpn}/bin/openfortivpn \
|
||||||
then
|
--password="$(cat "$CREDENTIALS_DIRECTORY/password")" \
|
||||||
${pkgs.openfortivpn}/bin/openfortivpn \
|
--config=${
|
||||||
--password="$(cat "$CREDENTIALS_DIRECTORY/password")" \
|
|
||||||
--config=${
|
|
||||||
pkgs.writeText "hu-berlin.config" ''
|
pkgs.writeText "hu-berlin.config" ''
|
||||||
host = forti-ssl.vpn.hu-berlin.de
|
host = forti-ssl.vpn.hu-berlin.de
|
||||||
port = 443
|
port = 443
|
||||||
username = meinhark
|
username = meinhaki
|
||||||
''
|
''
|
||||||
}
|
}
|
||||||
fi
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,8 +50,11 @@
|
|||||||
emojai = pkgs.writers.writeDash "emojai" ''
|
emojai = pkgs.writers.writeDash "emojai" ''
|
||||||
${pkgs.curl}/bin/curl https://www.emojai.app/api/generate -X POST -H 'Content-Type: application/json' --data-raw "$(${pkgs.jq}/bin/jq -sR '{emoji:.}')" | ${pkgs.jq}/bin/jq -r .result
|
${pkgs.curl}/bin/curl https://www.emojai.app/api/generate -X POST -H 'Content-Type: application/json' --data-raw "$(${pkgs.jq}/bin/jq -sR '{emoji:.}')" | ${pkgs.jq}/bin/jq -r .result
|
||||||
'';
|
'';
|
||||||
gpt = pkgs.writers.writeDash "gpt" ''
|
"gpt-3.5" = pkgs.writers.writeDash "gpt" ''
|
||||||
${niveumPackages.gpt}/bin/gpt
|
${niveumPackages.gpt35}/bin/gpt
|
||||||
|
'';
|
||||||
|
gpt-4 = pkgs.writers.writeDash "gpt" ''
|
||||||
|
${niveumPackages.gpt4}/bin/gpt
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -243,7 +246,7 @@ in {
|
|||||||
"XF86AudioMute" = "exec ${pkgs.pamixer}/bin/pamixer -t";
|
"XF86AudioMute" = "exec ${pkgs.pamixer}/bin/pamixer -t";
|
||||||
"XF86AudioRaiseVolume" = "exec ${pkgs.pamixer}/bin/pamixer -i 5";
|
"XF86AudioRaiseVolume" = "exec ${pkgs.pamixer}/bin/pamixer -i 5";
|
||||||
"XF86Calculator" = "exec ${pkgs.st}/bin/st -c floating -e ${pkgs.bc}/bin/bc";
|
"XF86Calculator" = "exec ${pkgs.st}/bin/st -c floating -e ${pkgs.bc}/bin/bc";
|
||||||
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl pause";
|
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||||
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||||
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
||||||
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
||||||
|
|||||||
@@ -3,6 +3,15 @@
|
|||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
|
age.secrets = {
|
||||||
|
miniflux-api-token = {
|
||||||
|
file = ../secrets/miniflux-api-token.age;
|
||||||
|
owner = config.users.users.me.name;
|
||||||
|
group = config.users.users.me.group;
|
||||||
|
mode = "400";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
home-manager.users.me = {
|
home-manager.users.me = {
|
||||||
programs.i3status-rust = {
|
programs.i3status-rust = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -27,6 +36,11 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
blocks = [
|
blocks = [
|
||||||
|
{
|
||||||
|
block = "music";
|
||||||
|
format = "{$icon $combo $play |}";
|
||||||
|
separator = " – ";
|
||||||
|
}
|
||||||
{
|
{
|
||||||
block = "weather";
|
block = "weather";
|
||||||
autolocate = true;
|
autolocate = true;
|
||||||
@@ -60,6 +74,24 @@
|
|||||||
print("↑{} ↓{} {}{}".format(sun["sunrise"].strftime("%R"), sun["sunset"].strftime("%R"), "☽" if current_phase < 14 else "☾", round(current_phase, 1)))
|
print("↑{} ↓{} {}{}".format(sun["sunrise"].strftime("%R"), sun["sunset"].strftime("%R"), "☽" if current_phase < 14 else "☾", round(current_phase, 1)))
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
block = "custom";
|
||||||
|
interval = 5 * 60;
|
||||||
|
hide_when_empty = true;
|
||||||
|
json = true;
|
||||||
|
icons_overrides.update = "";
|
||||||
|
command = let
|
||||||
|
minifluxEndpoint = "https://feed.kmein.de";
|
||||||
|
in
|
||||||
|
pkgs.writers.writeDash "miniflux" ''
|
||||||
|
MINIFLUX_TOKEN=$(cat ${config.age.secrets.miniflux-api-token.path})
|
||||||
|
${pkgs.curl}/bin/curl --insecure --header "X-Auth-Token: $MINIFLUX_TOKEN" ${minifluxEndpoint}/v1/feeds/counters \
|
||||||
|
| ${pkgs.jq}/bin/jq '{
|
||||||
|
text: ((.unreads | values | add) // 0) | tostring,
|
||||||
|
icon: "update"
|
||||||
|
}'
|
||||||
|
'';
|
||||||
|
}
|
||||||
{
|
{
|
||||||
block = "github";
|
block = "github";
|
||||||
info = ["total"];
|
info = ["total"];
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ in {
|
|||||||
"Alt+j" = "add video-pan-y -0.05";
|
"Alt+j" = "add video-pan-y -0.05";
|
||||||
};
|
};
|
||||||
scripts = [
|
scripts = [
|
||||||
pkgs.mpvScripts.youtube-quality
|
pkgs.mpvScripts.quality-menu
|
||||||
niveumPackages.mpv-visualizer
|
niveumPackages.mpv-visualizer
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -157,10 +157,13 @@ in {
|
|||||||
niveumPackages.ipa # XSAMPA to IPA converter
|
niveumPackages.ipa # XSAMPA to IPA converter
|
||||||
niveumPackages.pls
|
niveumPackages.pls
|
||||||
niveumPackages.mpv-tv
|
niveumPackages.mpv-tv
|
||||||
|
niveumPackages.mpv-iptv
|
||||||
|
jellyfin-media-player
|
||||||
niveumPackages.devanagari
|
niveumPackages.devanagari
|
||||||
niveumPackages.betacode # ancient greek betacode to unicode converter
|
niveumPackages.betacode # ancient greek betacode to unicode converter
|
||||||
niveumPackages.meteo
|
niveumPackages.meteo
|
||||||
niveumPackages.mahlzeit
|
niveumPackages.mahlzeit
|
||||||
|
niveumPackages.jq-lsp
|
||||||
niveumPackages.vimv
|
niveumPackages.vimv
|
||||||
niveumPackages.swallow # window swallowing
|
niveumPackages.swallow # window swallowing
|
||||||
niveumPackages.literature-quote
|
niveumPackages.literature-quote
|
||||||
@@ -175,6 +178,7 @@ in {
|
|||||||
niveumPackages.fkill
|
niveumPackages.fkill
|
||||||
niveumPackages.wttr
|
niveumPackages.wttr
|
||||||
niveumPackages.unicodmenu
|
niveumPackages.unicodmenu
|
||||||
|
niveumPackages.emailmenu
|
||||||
niveumPackages.closest
|
niveumPackages.closest
|
||||||
niveumPackages.trans
|
niveumPackages.trans
|
||||||
(niveumPackages.mpv-radio.override {
|
(niveumPackages.mpv-radio.override {
|
||||||
@@ -196,7 +200,7 @@ in {
|
|||||||
par
|
par
|
||||||
qrencode
|
qrencode
|
||||||
|
|
||||||
inputs.menstruation-backend.defaultPackage.x86_64-linux
|
# inputs.menstruation-backend.defaultPackage.x86_64-linux
|
||||||
inputs.agenix.packages.x86_64-linux.default
|
inputs.agenix.packages.x86_64-linux.default
|
||||||
inputs.recht.defaultPackage.x86_64-linux
|
inputs.recht.defaultPackage.x86_64-linux
|
||||||
|
|
||||||
@@ -256,6 +260,12 @@ in {
|
|||||||
lua-language-server
|
lua-language-server
|
||||||
nodePackages.vscode-langservers-extracted
|
nodePackages.vscode-langservers-extracted
|
||||||
|
|
||||||
|
dhall-lsp-server
|
||||||
|
dhall-nix
|
||||||
|
dhall-bash
|
||||||
|
dhall-json
|
||||||
|
dhall
|
||||||
|
|
||||||
html-tidy
|
html-tidy
|
||||||
nodePackages.csslint
|
nodePackages.csslint
|
||||||
nodePackages.jsonlint
|
nodePackages.jsonlint
|
||||||
@@ -275,7 +285,7 @@ in {
|
|||||||
libreoffice
|
libreoffice
|
||||||
# gnumeric
|
# gnumeric
|
||||||
dia
|
dia
|
||||||
unstablePackages.pandoc
|
pandoc
|
||||||
niveumPackages.man-pandoc
|
niveumPackages.man-pandoc
|
||||||
typst
|
typst
|
||||||
# proselint
|
# proselint
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
sound.enable = true;
|
sound.enable = true;
|
||||||
|
|
||||||
# realtime audio for pulseaudio
|
# realtime audio
|
||||||
security.rtkit.enable = true;
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
enable = false;
|
enable = true;
|
||||||
systemWide = false;
|
|
||||||
alsa = {
|
alsa = {
|
||||||
enable = true;
|
enable = true;
|
||||||
support32Bit = true;
|
support32Bit = true;
|
||||||
@@ -15,8 +14,10 @@
|
|||||||
jack.enable = true;
|
jack.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.user.services.pipewire-pulse.path = [pkgs.pulseaudio];
|
||||||
|
|
||||||
hardware.pulseaudio = {
|
hardware.pulseaudio = {
|
||||||
enable = true;
|
enable = false;
|
||||||
package = pkgs.pulseaudioFull;
|
package = pkgs.pulseaudioFull;
|
||||||
# copy server:/run/pulse/.config/pulse/cookie to client:~/.config/pulse/cookie to authenticate a client machine
|
# copy server:/run/pulse/.config/pulse/cookie to client:~/.config/pulse/cookie to authenticate a client machine
|
||||||
zeroconf.discovery.enable = true;
|
zeroconf.discovery.enable = true;
|
||||||
|
|||||||
@@ -10,7 +10,8 @@
|
|||||||
wants = ["network-online.target"];
|
wants = ["network-online.target"];
|
||||||
startAt = "weekly";
|
startAt = "weekly";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
user = "kfm";
|
User = config.users.users.me.name;
|
||||||
|
Group = config.users.users.me.group;
|
||||||
WorkingDirectory = "/home/kfm/cloud/nextcloud/Uni/Meta/Mensa";
|
WorkingDirectory = "/home/kfm/cloud/nextcloud/Uni/Meta/Mensa";
|
||||||
LoadCredential = [
|
LoadCredential = [
|
||||||
"password:${config.age.secrets.stw-berlin-card-code.path}"
|
"password:${config.age.secrets.stw-berlin-card-code.path}"
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ in {
|
|||||||
"0" = "synth-midnight-dark";
|
"0" = "synth-midnight-dark";
|
||||||
"1" = "apprentice"; # https://romainl.github.io/Apprentice/
|
"1" = "apprentice"; # https://romainl.github.io/Apprentice/
|
||||||
"2" = "one-light";
|
"2" = "one-light";
|
||||||
"3" = "one-dark";
|
"3" = "onedark";
|
||||||
"4" = "material"; # https://github.com/ntpeters/base16-materialtheme-scheme
|
"4" = "material"; # https://github.com/ntpeters/base16-materialtheme-scheme
|
||||||
"5" = "material-palenight";
|
"5" = "material-palenight";
|
||||||
"6" = "material-lighter";
|
"6" = "material-lighter";
|
||||||
|
|||||||
974
flake.lock
generated
974
flake.lock
generated
File diff suppressed because it is too large
Load Diff
19
flake.nix
19
flake.nix
@@ -5,14 +5,14 @@
|
|||||||
agenix.url = "github:ryantm/agenix";
|
agenix.url = "github:ryantm/agenix";
|
||||||
coptic-dictionary.url = "github:kmein/coptic-dictionary";
|
coptic-dictionary.url = "github:kmein/coptic-dictionary";
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
home-manager.url = "github:nix-community/home-manager/release-23.05";
|
home-manager.url = "github:nix-community/home-manager/release-23.11";
|
||||||
menstruation-backend.url = "github:kmein/menstruation.rs";
|
menstruation-backend.url = "github:kmein/menstruation.rs";
|
||||||
menstruation-telegram.url = "github:kmein/menstruation-telegram";
|
menstruation-telegram.url = "github:kmein/menstruation-telegram";
|
||||||
nix-on-droid.url = "github:t184256/nix-on-droid/release-23.05";
|
nix-on-droid.url = "github:t184256/nix-on-droid/release-23.05";
|
||||||
nixinate.url = "github:matthewcroughan/nixinate";
|
nixinate.url = "github:matthewcroughan/nixinate";
|
||||||
nixpkgs-old.url = "github:NixOS/nixpkgs/50fc86b75d2744e1ab3837ef74b53f103a9b55a0";
|
nixpkgs-old.url = "github:NixOS/nixpkgs/50fc86b75d2744e1ab3837ef74b53f103a9b55a0";
|
||||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/master";
|
nixpkgs-unstable.url = "github:NixOS/nixpkgs/master";
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
|
||||||
nur.url = "github:nix-community/NUR";
|
nur.url = "github:nix-community/NUR";
|
||||||
recht.url = "github:kmein/recht";
|
recht.url = "github:kmein/recht";
|
||||||
retiolum.url = "git+https://git.thalheim.io/Mic92/retiolum";
|
retiolum.url = "git+https://git.thalheim.io/Mic92/retiolum";
|
||||||
@@ -29,9 +29,9 @@
|
|||||||
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
coptic-dictionary.inputs.nixpkgs.follows = "nixpkgs";
|
coptic-dictionary.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
menstruation-backend.inputs.flake-utils.follows = "flake-utils";
|
# menstruation-backend.inputs.flake-utils.follows = "flake-utils";
|
||||||
menstruation-backend.inputs.nixpkgs.follows = "nixpkgs";
|
# menstruation-backend.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
menstruation-backend.inputs.rust-overlay.follows = "rust-overlay";
|
# menstruation-backend.inputs.rust-overlay.follows = "rust-overlay";
|
||||||
menstruation-telegram.inputs.flake-utils.follows = "flake-utils";
|
menstruation-telegram.inputs.flake-utils.follows = "flake-utils";
|
||||||
menstruation-telegram.inputs.menstruation-backend.follows = "menstruation-backend";
|
menstruation-telegram.inputs.menstruation-backend.follows = "menstruation-backend";
|
||||||
menstruation-telegram.inputs.nixpkgs.follows = "nixpkgs-old";
|
menstruation-telegram.inputs.nixpkgs.follows = "nixpkgs-old";
|
||||||
@@ -272,7 +272,7 @@
|
|||||||
overlays = [
|
overlays = [
|
||||||
nur.overlay
|
nur.overlay
|
||||||
(self: super: {
|
(self: super: {
|
||||||
mpv = super.mpv.override {scripts = [inputs.self.packages.${system}.mpv-visualizer];};
|
mpv = super.mpv.override {scripts = [inputs.self.packages.${system}.mpv-visualizer super.mpvScripts.mpris];};
|
||||||
dmenu = super.writers.writeDashBin "dmenu" ''exec ${pkgs.rofi}/bin/rofi -dmenu "$@"'';
|
dmenu = super.writers.writeDashBin "dmenu" ''exec ${pkgs.rofi}/bin/rofi -dmenu "$@"'';
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
@@ -307,8 +307,11 @@
|
|||||||
genius = pkgs.callPackage packages/genius.nix {};
|
genius = pkgs.callPackage packages/genius.nix {};
|
||||||
gfs-fonts = pkgs.callPackage packages/gfs-fonts.nix {};
|
gfs-fonts = pkgs.callPackage packages/gfs-fonts.nix {};
|
||||||
git-preview = pkgs.callPackage packages/git-preview.nix {};
|
git-preview = pkgs.callPackage packages/git-preview.nix {};
|
||||||
gpt = pkgs.callPackage packages/gpt.nix {};
|
gpt35 = pkgs.callPackage packages/gpt.nix {model = "gpt-3.5-turbo";};
|
||||||
|
gpt4 = pkgs.callPackage packages/gpt.nix {model = "gpt-4";};
|
||||||
hc = pkgs.callPackage packages/hc.nix {};
|
hc = pkgs.callPackage packages/hc.nix {};
|
||||||
|
jq-lsp = pkgs.callPackage packages/jq-lsp.nix {};
|
||||||
|
stardict-tools = pkgs.callPackage packages/stardict-tools.nix {};
|
||||||
heuretes = pkgs.callPackage packages/heuretes.nix {};
|
heuretes = pkgs.callPackage packages/heuretes.nix {};
|
||||||
htgen = pkgs.callPackage packages/htgen.nix {};
|
htgen = pkgs.callPackage packages/htgen.nix {};
|
||||||
image-convert-favicon = pkgs.callPackage packages/image-convert-favicon.nix {};
|
image-convert-favicon = pkgs.callPackage packages/image-convert-favicon.nix {};
|
||||||
@@ -333,6 +336,7 @@
|
|||||||
mpv-radio = pkgs.callPackage packages/mpv-radio.nix {di-fm-key-file = "/dev/null";};
|
mpv-radio = pkgs.callPackage packages/mpv-radio.nix {di-fm-key-file = "/dev/null";};
|
||||||
mpv-tuner = pkgs.callPackage packages/mpv-tuner.nix {di-fm-key-file = "/dev/null";};
|
mpv-tuner = pkgs.callPackage packages/mpv-tuner.nix {di-fm-key-file = "/dev/null";};
|
||||||
mpv-tv = pkgs.callPackage packages/mpv-tv.nix {};
|
mpv-tv = pkgs.callPackage packages/mpv-tv.nix {};
|
||||||
|
mpv-iptv = pkgs.callPackage packages/mpv-iptv.nix {};
|
||||||
mpv-visualizer = unstablePackages.mpvScripts.visualizer;
|
mpv-visualizer = unstablePackages.mpvScripts.visualizer;
|
||||||
new-mac = pkgs.callPackage packages/new-mac.nix {};
|
new-mac = pkgs.callPackage packages/new-mac.nix {};
|
||||||
nix-git = pkgs.callPackage packages/nix-git.nix {};
|
nix-git = pkgs.callPackage packages/nix-git.nix {};
|
||||||
@@ -350,6 +354,7 @@
|
|||||||
trans = pkgs.callPackage packages/trans.nix {};
|
trans = pkgs.callPackage packages/trans.nix {};
|
||||||
ttspaste = pkgs.callPackage packages/ttspaste.nix {};
|
ttspaste = pkgs.callPackage packages/ttspaste.nix {};
|
||||||
unicodmenu = pkgs.callPackage packages/unicodmenu.nix {};
|
unicodmenu = pkgs.callPackage packages/unicodmenu.nix {};
|
||||||
|
emailmenu = pkgs.callPackage packages/emailmenu.nix {};
|
||||||
untilport = pkgs.callPackage packages/untilport.nix {};
|
untilport = pkgs.callPackage packages/untilport.nix {};
|
||||||
vg = pkgs.callPackage packages/vg.nix {};
|
vg = pkgs.callPackage packages/vg.nix {};
|
||||||
vim = pkgs.callPackage packages/vim.nix {niveumPackages = self.packages.${system};};
|
vim = pkgs.callPackage packages/vim.nix {niveumPackages = self.packages.${system};};
|
||||||
|
|||||||
@@ -1,5 +1,21 @@
|
|||||||
{
|
rec {
|
||||||
|
thunderbirdProfile = "donnervogel";
|
||||||
|
pronouns = builtins.concatStringsSep "/" [
|
||||||
|
"er"
|
||||||
|
"he"
|
||||||
|
"is"
|
||||||
|
"οὗτος"
|
||||||
|
"هو"
|
||||||
|
"ⲛ̄ⲧⲟϥ"
|
||||||
|
"он"
|
||||||
|
"han"
|
||||||
|
"सः"
|
||||||
|
];
|
||||||
defaults = {
|
defaults = {
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
profiles = [thunderbirdProfile];
|
||||||
|
};
|
||||||
aerc.enable = true;
|
aerc.enable = true;
|
||||||
realName = "Kierán Meinhardt";
|
realName = "Kierán Meinhardt";
|
||||||
folders.inbox = "INBOX";
|
folders.inbox = "INBOX";
|
||||||
|
|||||||
@@ -148,6 +148,11 @@ in
|
|||||||
logo = "https://de.wikipedia.org/wiki/Wikipedia:Enzyklop%C3%A4die/Logo_von_Wikipedia#/media/Datei:Wikipedia-logo-v2.svg";
|
logo = "https://de.wikipedia.org/wiki/Wikipedia:Enzyklop%C3%A4die/Logo_von_Wikipedia#/media/Datei:Wikipedia-logo-v2.svg";
|
||||||
tags = [tags.text];
|
tags = [tags.text];
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
stream = "http://stream.freiesradio.org:8000/live.mp3";
|
||||||
|
station = "Freies Radio Kassel";
|
||||||
|
description = "Gesellschaft zur drahtlosen Belehrung und Erbauung";
|
||||||
|
}
|
||||||
{
|
{
|
||||||
stream = "http://162.244.80.20:6948";
|
stream = "http://162.244.80.20:6948";
|
||||||
station = "Cool Jazz Florida";
|
station = "Cool Jazz Florida";
|
||||||
@@ -1416,9 +1421,8 @@ in
|
|||||||
tags = [tags.arabic];
|
tags = [tags.arabic];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
stream = "http://5.9.16.111:8210/arabic_live";
|
stream = "https://arabica.streamabc.net/76-radioorient-mp3-256-1050481";
|
||||||
station = "Radio Arabica";
|
station = "Radio Orient";
|
||||||
logo = "https://radioarabica.de/wp-content/uploads/2020/09/LOGO_klein-1.png";
|
|
||||||
tags = [tags.berlin tags.arabic];
|
tags = [tags.berlin tags.arabic];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -1966,6 +1970,11 @@ in
|
|||||||
station = "radioeins | RBB";
|
station = "radioeins | RBB";
|
||||||
tags = [tags.top40 tags.pop];
|
tags = [tags.top40 tags.pop];
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
stream = "https://liveradio.swr.de/sw282p3/swr4lu/";
|
||||||
|
station = "SWR3 Ludwigshafen";
|
||||||
|
tags = [tags.top40 tags.pop];
|
||||||
|
}
|
||||||
]
|
]
|
||||||
++ map (name: {
|
++ map (name: {
|
||||||
stream = "https://${name}.stream.publicradio.org/${name}.aac";
|
stream = "https://${name}.stream.publicradio.org/${name}.aac";
|
||||||
|
|||||||
@@ -113,6 +113,7 @@ local language_servers = {
|
|||||||
html = {}, -- vscode-langservers-extracted
|
html = {}, -- vscode-langservers-extracted
|
||||||
jsonls = {}, -- vscode-langservers-extracted
|
jsonls = {}, -- vscode-langservers-extracted
|
||||||
nil_ls = {}, -- github:oxalica/nil
|
nil_ls = {}, -- github:oxalica/nil
|
||||||
|
dhall_lsp_server = {}, -- dhall-lsp-server
|
||||||
-- rnix = {}, -- rnix-lsp
|
-- rnix = {}, -- rnix-lsp
|
||||||
jqls = {}, -- jq-lsp
|
jqls = {}, -- jq-lsp
|
||||||
rust_analyzer = { ["rust-analyzer"] = {} },
|
rust_analyzer = { ["rust-analyzer"] = {} },
|
||||||
|
|||||||
@@ -100,7 +100,8 @@ augroup filetypes
|
|||||||
autocmd bufnewfile,bufread *.typ packadd typst.vim | set filetype=typst
|
autocmd bufnewfile,bufread *.typ packadd typst.vim | set filetype=typst
|
||||||
autocmd bufnewfile,bufread *.ics packadd icalendar.vim | set filetype=icalendar
|
autocmd bufnewfile,bufread *.ics packadd icalendar.vim | set filetype=icalendar
|
||||||
autocmd bufnewfile,bufread *.ts packadd typescript-vim | set filetype=typescript
|
autocmd bufnewfile,bufread *.ts packadd typescript-vim | set filetype=typescript
|
||||||
autocmd bufnewfile,bufread *.jq packadd jq.vim
|
autocmd bufnewfile,bufread *.dhall packadd dhall-vim | set filetype=dhall
|
||||||
|
autocmd bufnewfile,bufread *.jq packadd jq.vim | set filetype=jq
|
||||||
autocmd bufnewfile,bufread *.journal packadd vim-ledger | set filetype=ledger shiftwidth=4
|
autocmd bufnewfile,bufread *.journal packadd vim-ledger | set filetype=ledger shiftwidth=4
|
||||||
autocmd bufnewfile,bufread urls,config set filetype=conf
|
autocmd bufnewfile,bufread urls,config set filetype=conf
|
||||||
autocmd bufnewfile,bufread *.elm packadd elm-vim | set filetype=elm shiftwidth=4
|
autocmd bufnewfile,bufread *.elm packadd elm-vim | set filetype=elm shiftwidth=4
|
||||||
|
|||||||
18
packages/emailmenu.nix
Normal file
18
packages/emailmenu.nix
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
writers,
|
||||||
|
lib,
|
||||||
|
coreutils,
|
||||||
|
dmenu,
|
||||||
|
gawk,
|
||||||
|
libnotify,
|
||||||
|
xclip,
|
||||||
|
khard,
|
||||||
|
}:
|
||||||
|
writers.writeDashBin "emailmenu" ''
|
||||||
|
history_file=$HOME/.cache/emailmenu
|
||||||
|
PATH=${lib.makeBinPath [coreutils dmenu gawk libnotify xclip]}
|
||||||
|
chosen=$(${khard}/bin/khard email --parsable | awk '!seen[$0]++' | dmenu -i -p 📧 -1 -l 10 | tee --append "$history_file" | cut -f1)
|
||||||
|
[ "$chosen" != "" ] || exit
|
||||||
|
echo "$chosen" | tr -d '\n' | xclip -selection clipboard
|
||||||
|
notify-send --app-name="$(basename "$0")" "'$chosen' copied to clipboard." &
|
||||||
|
''
|
||||||
16
packages/jq-lsp.nix
Normal file
16
packages/jq-lsp.nix
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
buildGoModule,
|
||||||
|
fetchFromGitHub,
|
||||||
|
lib,
|
||||||
|
}:
|
||||||
|
buildGoModule {
|
||||||
|
name = "jq-lsp";
|
||||||
|
version = "unstable-2023-09-08";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "wader";
|
||||||
|
repo = "jq-lsp";
|
||||||
|
rev = "85edf1adbe5e6c91b37c67b6a4bf85eda1e49f2f";
|
||||||
|
hash = "sha256-ItLKRSbGZ8UqFEHCoh96KwhSpuKZ3l+2ZXnBkHEZL0M=";
|
||||||
|
};
|
||||||
|
vendorHash = "sha256-ppQ81uERHBgOr/bm/CoDSWcK+IqHwvcL6RFi0DgoLuw=";
|
||||||
|
}
|
||||||
16
packages/mpv-iptv.nix
Normal file
16
packages/mpv-iptv.nix
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
mpv,
|
||||||
|
writers,
|
||||||
|
}:
|
||||||
|
writers.writeDashBin "iptv" ''
|
||||||
|
set -efu
|
||||||
|
${mpv}/bin/mpv \
|
||||||
|
--audio-display=no --audio-channels=stereo \
|
||||||
|
--audio-samplerate=48000 --audio-format=s16 \
|
||||||
|
--ao-pcm-file=/run/snapserver/snapfifo --ao=pcm \
|
||||||
|
--audio-delay=-1 \
|
||||||
|
--playlist=https://iptv-org.github.io/iptv/index.nsfw.m3u \
|
||||||
|
--idle=yes \
|
||||||
|
--input-ipc-server=/tmp/mpv.ipc \
|
||||||
|
"$@"
|
||||||
|
''
|
||||||
48
packages/stardict-tools.nix
Normal file
48
packages/stardict-tools.nix
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
autoreconfHook,
|
||||||
|
pkg-config,
|
||||||
|
which,
|
||||||
|
libtool,
|
||||||
|
glib,
|
||||||
|
zlib,
|
||||||
|
gtk3,
|
||||||
|
libmysqlclient,
|
||||||
|
pcre,
|
||||||
|
libxml2,
|
||||||
|
gnused,
|
||||||
|
fetchFromGitHub,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "stardict-tools";
|
||||||
|
nativeBuildInputs = [
|
||||||
|
autoreconfHook
|
||||||
|
pkg-config
|
||||||
|
which
|
||||||
|
libtool
|
||||||
|
];
|
||||||
|
buildInputs = [glib zlib gtk3 libmysqlclient pcre libxml2];
|
||||||
|
buildPhase = "make";
|
||||||
|
configureFlags = ["--disable-dict"];
|
||||||
|
env.NIX_CFLAGS_COMPILE = toString [
|
||||||
|
"-Wno-error=format-security"
|
||||||
|
];
|
||||||
|
patchPhase = ''
|
||||||
|
${gnused}/bin/sed -i s/noinst_PROGRAMS/bin_PROGRAMS/ tools/src/Makefile.am
|
||||||
|
'';
|
||||||
|
installFlags = ["INSTALL_PREFIX=$(out)"];
|
||||||
|
autoreconfPhase = ''
|
||||||
|
patchShebangs ./autogen.sh
|
||||||
|
./autogen.sh
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir $out
|
||||||
|
make install
|
||||||
|
'';
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "huzheng001";
|
||||||
|
repo = "stardict-3";
|
||||||
|
rev = "96b96d89eab5f0ad9246c2569a807d6d7982aa84";
|
||||||
|
hash = "sha256-zmqp2maKv2JZ5fwMVE7gIOg0BKdEKZ4UvTLC0suuBRw=";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -11,7 +11,20 @@
|
|||||||
xclip,
|
xclip,
|
||||||
xdotool,
|
xdotool,
|
||||||
gawk,
|
gawk,
|
||||||
|
fetchFromGitHub,
|
||||||
}: let
|
}: let
|
||||||
|
emoji-flags = builtins.fromJSON (builtins.readFile "${fetchFromGitHub {
|
||||||
|
owner = "matiassingers";
|
||||||
|
repo = "emoji-flags";
|
||||||
|
rev = "93ae74505d09bb55a3eb3a511f1dfc0dd60a5347";
|
||||||
|
sha256 = "10j73sx6jb250v37bz2p7w8big0v8da3r6kpqz9xcl667gl8svwx";
|
||||||
|
}}/data.json");
|
||||||
|
emoji-flags-file = writeText "emoji-flags.txt" (lib.strings.concatMapStringsSep "\n" ({
|
||||||
|
emoji,
|
||||||
|
title,
|
||||||
|
...
|
||||||
|
}: "${emoji} ${title}")
|
||||||
|
emoji-flags);
|
||||||
unicode-file = runCommand "unicode.txt" {} ''
|
unicode-file = runCommand "unicode.txt" {} ''
|
||||||
${
|
${
|
||||||
writers.writePython3 "generate.py" {flakeIgnore = ["E501" "E722"];} ''
|
writers.writePython3 "generate.py" {flakeIgnore = ["E501" "E722"];} ''
|
||||||
@@ -80,7 +93,7 @@ in
|
|||||||
|
|
||||||
all_characters() {
|
all_characters() {
|
||||||
tac "$history_file"
|
tac "$history_file"
|
||||||
cat ${kaomoji-file} ${unicode-file}
|
cat ${kaomoji-file} ${unicode-file} ${emoji-flags-file}
|
||||||
}
|
}
|
||||||
|
|
||||||
chosen=$(all_characters | awk '!seen[$0]++' | dmenu -p unicode -i -l 10 | tee --append "$history_file" | sed "s/ .*//")
|
chosen=$(all_characters | awk '!seen[$0]++' | dmenu -p unicode -i -l 10 | tee --append "$history_file" | sed "s/ .*//")
|
||||||
|
|||||||
@@ -55,6 +55,7 @@
|
|||||||
];
|
];
|
||||||
opt = [
|
opt = [
|
||||||
csv
|
csv
|
||||||
|
dhall-vim
|
||||||
elm-vim
|
elm-vim
|
||||||
emmet-vim
|
emmet-vim
|
||||||
haskell-vim
|
haskell-vim
|
||||||
|
|||||||
2
secrets
2
secrets
Submodule secrets updated: 9efd6ac7e1...dcf6ac066d
@@ -1,6 +1,7 @@
|
|||||||
secrets/alertmanager-token-reporters.age
|
secrets/alertmanager-token-reporters.age
|
||||||
secrets/blackboard-calendar-ics.age
|
secrets/blackboard-calendar-ics.age
|
||||||
secrets/cifs-credentials-hu-berlin.age
|
secrets/cifs-credentials-hu-berlin.age
|
||||||
|
secrets/cifs-credentials-zodiac.age
|
||||||
secrets/di-fm-key.age
|
secrets/di-fm-key.age
|
||||||
secrets/email-password-cock.age
|
secrets/email-password-cock.age
|
||||||
secrets/email-password-dslalewa.age
|
secrets/email-password-dslalewa.age
|
||||||
@@ -34,6 +35,7 @@ secrets/manakish-syncthing-cert.age
|
|||||||
secrets/manakish-syncthing-key.age
|
secrets/manakish-syncthing-key.age
|
||||||
secrets/maxmind-license-key.age
|
secrets/maxmind-license-key.age
|
||||||
secrets/mega-password.age
|
secrets/mega-password.age
|
||||||
|
secrets/miniflux-api-token.age
|
||||||
secrets/miniflux-credentials.age
|
secrets/miniflux-credentials.age
|
||||||
secrets/nextcloud-password-admin.age
|
secrets/nextcloud-password-admin.age
|
||||||
secrets/nextcloud-password-database.age
|
secrets/nextcloud-password-database.age
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
lib,
|
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
@@ -11,7 +10,7 @@ in {
|
|||||||
./matomo.nix
|
./matomo.nix
|
||||||
./radio.nix
|
./radio.nix
|
||||||
./panoptikon.nix
|
./panoptikon.nix
|
||||||
./ledger.nix
|
./hledger.nix
|
||||||
../../configs/monitoring.nix
|
../../configs/monitoring.nix
|
||||||
../../configs/tor.nix
|
../../configs/tor.nix
|
||||||
../../configs/save-space.nix
|
../../configs/save-space.nix
|
||||||
@@ -89,7 +88,7 @@ in {
|
|||||||
defaults.email = kieran.email;
|
defaults.email = kieran.email;
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users.root.passwordFile = config.age.secrets.root.path;
|
users.users.root.hashedPasswordFile = config.age.secrets.root.path;
|
||||||
|
|
||||||
environment.systemPackages = [pkgs.vim pkgs.git pkgs.tmux pkgs.python3];
|
environment.systemPackages = [pkgs.vim pkgs.git pkgs.tmux pkgs.python3];
|
||||||
|
|
||||||
|
|||||||
@@ -25,13 +25,13 @@
|
|||||||
script = ''
|
script = ''
|
||||||
${pkgs.git}/bin/git config user.name "hledger-web"
|
${pkgs.git}/bin/git config user.name "hledger-web"
|
||||||
${pkgs.git}/bin/git config user.email "hledger-web@${config.networking.hostName}"
|
${pkgs.git}/bin/git config user.email "hledger-web@${config.networking.hostName}"
|
||||||
${pkgs.git}/bin/git commit -am $(date -Ih)
|
${pkgs.git}/bin/git commit -am $(date -Ih) || :
|
||||||
${pkgs.git}/bin/git pull --rebase
|
${pkgs.git}/bin/git pull --rebase
|
||||||
${pkgs.git}/bin/git push
|
${pkgs.git}/bin/git push
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
User = "hledger";
|
User = "root";
|
||||||
Group = "hledger";
|
Group = "root";
|
||||||
WorkingDirectory = config.services.hledger-web.stateDir;
|
WorkingDirectory = config.services.hledger-web.stateDir;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -50,6 +50,10 @@ in {
|
|||||||
script = panoptikon.urlSelector "#main" "https://carolinawelslau.de/";
|
script = panoptikon.urlSelector "#main" "https://carolinawelslau.de/";
|
||||||
reporters = [irc-kmein];
|
reporters = [irc-kmein];
|
||||||
};
|
};
|
||||||
|
humboldt-preis = {
|
||||||
|
script = panoptikon.urlSelector "#content-core" "https://www.hu-berlin.de/de/ueberblick/menschen/ehrungen/humboldtpreis";
|
||||||
|
reporters = [irc-kmein];
|
||||||
|
};
|
||||||
lisalittmann = {
|
lisalittmann = {
|
||||||
script = panoptikon.urlSelector "#site-content" "https://lisalittmann.de/";
|
script = panoptikon.urlSelector "#site-content" "https://lisalittmann.de/";
|
||||||
reporters = [irc-kmein];
|
reporters = [irc-kmein];
|
||||||
@@ -94,6 +98,14 @@ in {
|
|||||||
script = panoptikon.urlSelector "[itemprop=articleBody]" "https://www.indogermanistik.org/tagungen/tagungen-der-ig.html";
|
script = panoptikon.urlSelector "[itemprop=articleBody]" "https://www.indogermanistik.org/tagungen/tagungen-der-ig.html";
|
||||||
reporters = [irc-kmein];
|
reporters = [irc-kmein];
|
||||||
};
|
};
|
||||||
|
fu-distant = {
|
||||||
|
script = panoptikon.urlSelector "#current_events" "https://www.geschkult.fu-berlin.de/en/e/ma-distant/Termine/index.html";
|
||||||
|
reporters = [irc-kmein];
|
||||||
|
};
|
||||||
|
fu-aegyptologie = {
|
||||||
|
script = panoptikon.urlSelector "#current_events" "https://www.geschkult.fu-berlin.de/e/aegyptologie/termine/index.html";
|
||||||
|
reporters = [irc-kmein];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,6 +126,8 @@ in {
|
|||||||
|
|
||||||
systemd.services.radio.environment.TMPDIR = liquidsoapDirectory;
|
systemd.services.radio.environment.TMPDIR = liquidsoapDirectory;
|
||||||
|
|
||||||
|
environment.systemPackages = [refresh-qasaid];
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
(tmpfilesConfig {
|
(tmpfilesConfig {
|
||||||
type = "d";
|
type = "d";
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
startAt = "7:00";
|
startAt = "7:00";
|
||||||
script = ''
|
script = ''
|
||||||
greeting=$(echo "moin
|
greeting=$(echo "moin
|
||||||
MOIN" | shuf -n1)
|
MOIN
|
||||||
|
moin: gib" | shuf -n1)
|
||||||
echo "$greeting" | ${config.nur.repos.mic92.ircsink}/bin/ircsink \
|
echo "$greeting" | ${config.nur.repos.mic92.ircsink}/bin/ircsink \
|
||||||
--nick "$greeting""bot" \
|
--nick "$greeting""bot" \
|
||||||
--server irc.hackint.org \
|
--server irc.hackint.org \
|
||||||
|
|||||||
@@ -263,6 +263,9 @@ in {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# otherwise bearer_token_file will fail
|
||||||
|
services.prometheus.checkConfig = "syntax-only";
|
||||||
|
|
||||||
services.prometheus.scrapeConfigs = [
|
services.prometheus.scrapeConfigs = [
|
||||||
{
|
{
|
||||||
job_name = "makanek";
|
job_name = "makanek";
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
storageBoxMountPoint = "/mnt/storagebox";
|
storageBoxMountPoint = "/mnt/storagebox";
|
||||||
@@ -48,10 +47,9 @@ in {
|
|||||||
|
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nextcloud26;
|
package = pkgs.nextcloud27;
|
||||||
|
|
||||||
https = true;
|
https = true;
|
||||||
enableBrokenCiphersForSSE = false;
|
|
||||||
|
|
||||||
autoUpdateApps = {
|
autoUpdateApps = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -104,9 +102,11 @@ in {
|
|||||||
ensureUsers = [
|
ensureUsers = [
|
||||||
{
|
{
|
||||||
name = "nextcloud";
|
name = "nextcloud";
|
||||||
ensurePermissions."DATABASE ${config.services.nextcloud.config.dbname}" = "ALL PRIVILEGES";
|
ensureDBOwnership = true;
|
||||||
|
# ensurePermissions."DATABASE ${config.services.nextcloud.config.dbname}" = "ALL PRIVILEGES";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
package = pkgs.postgresql_14;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.nginx.virtualHosts."cloud.kmein.de" = {
|
services.nginx.virtualHosts."cloud.kmein.de" = {
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ in {
|
|||||||
};
|
};
|
||||||
bots = {
|
bots = {
|
||||||
buffer = "irc.retiolum.*";
|
buffer = "irc.retiolum.*";
|
||||||
tags = ["nick_gitlab"];
|
tags = ["nick_gitlab" "nick_prometheus"];
|
||||||
regex = "*";
|
regex = "*";
|
||||||
};
|
};
|
||||||
people = {
|
people = {
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ in {
|
|||||||
./gaslight.nix
|
./gaslight.nix
|
||||||
./kiosk.nix
|
./kiosk.nix
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./moodle-dl-meinhark.nix
|
|
||||||
./pulseaudio.nix
|
./pulseaudio.nix
|
||||||
./home-assistant.nix
|
./home-assistant.nix
|
||||||
./mpd.nix
|
./mpd.nix
|
||||||
|
|||||||
@@ -24,13 +24,15 @@ in {
|
|||||||
dataDir = "${mpd-directory}/.config/syncthing";
|
dataDir = "${mpd-directory}/.config/syncthing";
|
||||||
cert = config.age.secrets.syncthing-cert.path;
|
cert = config.age.secrets.syncthing-cert.path;
|
||||||
key = config.age.secrets.syncthing-key.path;
|
key = config.age.secrets.syncthing-key.path;
|
||||||
devices = {
|
settings = {
|
||||||
inherit ((import ../../lib).syncthing.devices) kabsa manakish heym;
|
devices = {
|
||||||
};
|
inherit ((import ../../lib).syncthing.devices) kabsa manakish heym;
|
||||||
folders."${config.services.mpd.musicDirectory}/sync" = {
|
};
|
||||||
devices = ["heym" "kabsa" "manakish"];
|
folders."${config.services.mpd.musicDirectory}/sync" = {
|
||||||
id = "music";
|
devices = ["heym" "kabsa" "manakish"];
|
||||||
type = "receiveonly";
|
id = "music";
|
||||||
|
type = "receiveonly";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user