mirror of
https://github.com/kmein/niveum
synced 2026-03-29 16:51:07 +02:00
Compare commits
68 Commits
2b2db14519
...
feature/ha
| Author | SHA1 | Date | |
|---|---|---|---|
| eafc87415a | |||
| 1e37581325 | |||
| c63cb4d157 | |||
| 88257e9ffb | |||
| b9d0258132 | |||
| 53bbc65716 | |||
| e76489b6d8 | |||
|
|
f4e2885b86 | ||
| 07f5d25e96 | |||
| b5e9fd73e0 | |||
| 34687dde21 | |||
| 4ce7c7a91a | |||
|
|
9db408226b | ||
| 8ea79b574b | |||
| bcb0878765 | |||
| 365aa29897 | |||
| cfb782da7f | |||
| e721abeb6c | |||
| 249e8c016d | |||
| 3be3410baa | |||
| af0bd29cd5 | |||
| 75827becf9 | |||
| 48438f758e | |||
| 3538692b60 | |||
| 42d1382b74 | |||
| 31d86b7c9f | |||
| 6532016f96 | |||
| 65c1704b46 | |||
|
|
9f0cb708f2 | ||
| ee2dcc3669 | |||
| b5f50967b4 | |||
| 747402bca4 | |||
| 5876839e4d | |||
| bb79707693 | |||
| 6c72666ed6 | |||
|
|
ff84da3d32 | ||
| 71575ad289 | |||
| 0fd9283218 | |||
| 83a949eddc | |||
| 7f057a7657 | |||
| 35fcfc26c3 | |||
| 9b48a5557e | |||
| ddbcf5dfc4 | |||
| 31469cef9d | |||
| dbeb0acc11 | |||
| ba449d7c69 | |||
| 6940e1d8f9 | |||
| a8940bf667 | |||
| 92bf5ab0ee | |||
| 2d1e11c0e7 | |||
| 66b01774c3 | |||
| 026c2e5631 | |||
| d51c120bc8 | |||
| 33b8201371 | |||
| 6d9278680f | |||
| 45972f524b | |||
| 915695cb0b | |||
| b4c513001c | |||
| 7551fd5a58 | |||
| 69aa19e9d3 | |||
| 277200d007 | |||
| 816bdbb730 | |||
| c731b57fd3 | |||
| e52a9fdb56 | |||
| f2c08c0cfd | |||
| cc1fa52b31 | |||
| f1284df54b | |||
| 0536e762ea |
130
configs/aerc.nix
130
configs/aerc.nix
@@ -4,18 +4,7 @@
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
defaults = {
|
||||
aerc.enable = true;
|
||||
realName = "Kierán Meinhardt";
|
||||
folders.inbox = "INBOX";
|
||||
};
|
||||
hu-defaults = {
|
||||
imap.host = "mailbox.cms.hu-berlin.de";
|
||||
imap.port = 993;
|
||||
smtp.host = "mailhost.cms.hu-berlin.de";
|
||||
smtp.port = 25;
|
||||
smtp.tls.useStartTls = true;
|
||||
};
|
||||
inherit (import ../lib/email.nix) defaults;
|
||||
in {
|
||||
age.secrets = {
|
||||
email-password-cock = {
|
||||
@@ -24,42 +13,12 @@ in {
|
||||
group = config.users.users.me.group;
|
||||
mode = "400";
|
||||
};
|
||||
email-password-fysi = {
|
||||
file = ../secrets/email-password-fysi.age;
|
||||
owner = config.users.users.me.name;
|
||||
group = config.users.users.me.group;
|
||||
mode = "400";
|
||||
};
|
||||
email-password-posteo = {
|
||||
file = ../secrets/email-password-posteo.age;
|
||||
owner = config.users.users.me.name;
|
||||
group = config.users.users.me.group;
|
||||
mode = "400";
|
||||
};
|
||||
email-password-meinhark = {
|
||||
file = ../secrets/email-password-meinhark.age;
|
||||
owner = config.users.users.me.name;
|
||||
group = config.users.users.me.group;
|
||||
mode = "400";
|
||||
};
|
||||
email-password-meinhaki = {
|
||||
file = ../secrets/email-password-meinhaki.age;
|
||||
owner = config.users.users.me.name;
|
||||
group = config.users.users.me.group;
|
||||
mode = "400";
|
||||
};
|
||||
email-password-dslalewa = {
|
||||
file = ../secrets/email-password-dslalewa.age;
|
||||
owner = config.users.users.me.name;
|
||||
group = config.users.users.me.group;
|
||||
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 = {
|
||||
@@ -110,90 +69,7 @@ in {
|
||||
config.home-manager.users.me.accounts.email.accounts);
|
||||
};
|
||||
|
||||
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 =
|
||||
lib.recursiveUpdate defaults
|
||||
(lib.recursiveUpdate hu-defaults
|
||||
rec {
|
||||
userName = "meinhark";
|
||||
address = "kieran.felix.meinhardt@informatik.hu-berlin.de";
|
||||
aliases = ["${userName}@informatik.hu-berlin.de"];
|
||||
imap.host = "mailbox.informatik.hu-berlin.de";
|
||||
smtp.host = "mailhost.informatik.hu-berlin.de";
|
||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhark.path}";
|
||||
});
|
||||
hu-employee =
|
||||
lib.recursiveUpdate defaults
|
||||
(lib.recursiveUpdate hu-defaults
|
||||
rec {
|
||||
userName = "meinhaki";
|
||||
address = "kieran.meinhardt@hu-berlin.de";
|
||||
aliases = ["${userName}@hu-berlin.de"];
|
||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhaki.path}";
|
||||
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
|
||||
signature = {
|
||||
showSignature = "append";
|
||||
text = ''
|
||||
${defaults.realName}
|
||||
Studentische Hilfskraft / Administrator ALEW
|
||||
Humboldt-Universität zu Berlin
|
||||
|
||||
Telefon: +49 (0)30 2093 9634
|
||||
Raum 3.212, Dorotheenstraße 24, 10117 Berlin-Mitte
|
||||
https://alew.hu-berlin.de
|
||||
'';
|
||||
};
|
||||
});
|
||||
hu-admin =
|
||||
lib.recursiveUpdate defaults
|
||||
(lib.recursiveUpdate hu-defaults
|
||||
rec {
|
||||
userName = "dslalewa";
|
||||
address = "admin.alew.vglsprwi@hu-berlin.de";
|
||||
aliases = ["${userName}@hu-berlin.de"];
|
||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-dslalewa.path}";
|
||||
inherit (hu-employee) signature;
|
||||
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
|
||||
'';
|
||||
};
|
||||
});
|
||||
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";
|
||||
};
|
||||
accounts.email.accounts = {
|
||||
cock =
|
||||
lib.recursiveUpdate defaults
|
||||
rec {
|
||||
@@ -361,7 +237,7 @@ in {
|
||||
# "text/html" =
|
||||
# "${pkgs.aerc}/share/aerc/filters/html | ${pkgs.aerc}/share/aerc/filters/colorize";
|
||||
# "text/*" =
|
||||
# ''${pkgs.bat}/bin/bat -fP --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/rfc822" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
|
||||
"application/x-sh" = "${pkgs.bat}/bin/bat -fP -l sh";
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
}: let
|
||||
alacritty-cfg = theme:
|
||||
(pkgs.formats.yaml {}).generate "alacritty.yml" {
|
||||
window.opacity = 0.99;
|
||||
bell = {
|
||||
animation = "EaseOut";
|
||||
duration = 100;
|
||||
@@ -57,12 +56,28 @@
|
||||
in {
|
||||
environment.variables.TERMINAL = "alacritty";
|
||||
|
||||
environment.systemPackages = [
|
||||
alacritty-pkg
|
||||
];
|
||||
|
||||
environment.etc = {
|
||||
"themes/dark/alacritty.yml".source = alacritty-cfg (import ../lib/colours/owickstrom-dark.nix);
|
||||
"themes/light/alacritty.yml".source = alacritty-cfg (import ../lib/colours/owickstrom-light.nix);
|
||||
home-manager.users.me = {
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
key_bindings = [
|
||||
{
|
||||
key = "Plus";
|
||||
mods = "Control";
|
||||
action = "IncreaseFontSize";
|
||||
}
|
||||
{
|
||||
key = "Minus";
|
||||
mods = "Control";
|
||||
action = "DecreaseFontSize";
|
||||
}
|
||||
{
|
||||
key = "Key0";
|
||||
mods = "Control";
|
||||
action = "ResetFontSize";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
5
configs/android.nix
Normal file
5
configs/android.nix
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
programs.adb.enable = true;
|
||||
|
||||
users.users.me.extraGroups = ["adbusers"];
|
||||
}
|
||||
@@ -16,6 +16,7 @@ in {
|
||||
extraBackupArgs = [
|
||||
"--exclude=/home/kfm/projects/nixpkgs/.git"
|
||||
"--exclude=node_modules"
|
||||
"--exclude=.parcel-cache"
|
||||
];
|
||||
paths = [
|
||||
"/home/kfm/work"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
programs.bash = {
|
||||
promptInit = ''
|
||||
PS1="$(tput bold)\w \$([[ \$? == 0 ]] && echo \"\[\033[1;32m\]\" || echo \"\[\033[1;31m\]\")\$$(tput sgr0) "'';
|
||||
PS1="$(${pkgs.ncurses}/bin/tput bold)\w \$([[ \$? == 0 ]] && echo \"\[\033[1;32m\]\" || echo \"\[\033[1;31m\]\")\$$(${pkgs.ncurses}/bin/tput sgr0) "'';
|
||||
interactiveShellInit = ''
|
||||
set -o vi
|
||||
'';
|
||||
|
||||
@@ -12,23 +12,15 @@ in {
|
||||
user = config.users.users.me.name;
|
||||
group = "users";
|
||||
mode = "0755";
|
||||
argument = "${config.users.users.me.home}/cloud/Seafile/Uni";
|
||||
argument = "${config.users.users.me.home}/cloud/nextcloud/Uni";
|
||||
path = "${config.users.users.me.home}/uni";
|
||||
}
|
||||
{
|
||||
type = "L+";
|
||||
user = config.users.users.me.name;
|
||||
group = "users";
|
||||
mode = "0755";
|
||||
argument = "${config.users.users.me.home}/cloud/syncthing/common/mahlzeit";
|
||||
path = "${config.users.users.me.home}/mahlzeit";
|
||||
}
|
||||
];
|
||||
|
||||
home-manager.users.me = {
|
||||
services.gnome-keyring.enable = false;
|
||||
services.gnome-keyring.enable = true;
|
||||
services.nextcloud-client = {
|
||||
enable = false;
|
||||
enable = true;
|
||||
startInBackground = true;
|
||||
};
|
||||
systemd.user.services.nextcloud-client = {
|
||||
@@ -48,7 +40,7 @@ in {
|
||||
kieran = {
|
||||
user = "kieran";
|
||||
passwordFile = config.age.secrets.nextcloud-password-kieran.path;
|
||||
endpoint = "https://cloud.xn--kiern-0qa.de";
|
||||
endpoint = "https://cloud.kmein.de";
|
||||
target = "${config.users.users.me.home}/notes";
|
||||
};
|
||||
in ''
|
||||
@@ -66,7 +58,7 @@ in {
|
||||
set -efu
|
||||
book="$({
|
||||
${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/syncthing/library -type f
|
||||
${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/Seafile/Books -type f
|
||||
${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/nextcloud/Books -type f
|
||||
} | ${pkgs.fzf}/bin/fzf)"
|
||||
exec ${pkgs.zathura}/bin/zathura "$book"
|
||||
'')
|
||||
@@ -103,16 +95,6 @@ in {
|
||||
mode = "400";
|
||||
};
|
||||
|
||||
fileSystems."/media/moodle" = {
|
||||
device = "zaatar.r:/moodle";
|
||||
fsType = "nfs";
|
||||
options = [
|
||||
"x-systemd.idle-timeout=600"
|
||||
"noauto"
|
||||
"x-systemd.automount"
|
||||
];
|
||||
};
|
||||
|
||||
services.syncthing = rec {
|
||||
enable = true;
|
||||
user = "kfm";
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
in {
|
||||
imports = [
|
||||
inputs.self.nixosModules.system-dependent
|
||||
inputs.self.nixosModules.traadfri
|
||||
inputs.self.nixosModules.power-action
|
||||
{
|
||||
boot.supportedFilesystems = ["ntfs"];
|
||||
@@ -56,12 +55,24 @@ in {
|
||||
enable = true;
|
||||
options = {
|
||||
selection-clipboard = "clipboard";
|
||||
recolor-keephue = true;
|
||||
# first-page-column = "1:1"; # makes side-by-side mode start on the left side
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
environment.systemPackages = [
|
||||
pkgs.capitaine-cursors
|
||||
];
|
||||
|
||||
home-manager.users.me = {
|
||||
home.pointerCursor = {
|
||||
name = "capitaine-cursors-white";
|
||||
package = pkgs.capitaine-cursors;
|
||||
size = 12;
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
users.mutableUsers = false;
|
||||
|
||||
@@ -100,7 +111,7 @@ in {
|
||||
swallow = command: "${niveumPackages.swallow}/bin/swallow ${command}";
|
||||
in {
|
||||
"ß" = "${pkgs.util-linux}/bin/setsid";
|
||||
cat = "${pkgs.bat}/bin/bat --style=plain";
|
||||
cat = "${pkgs.bat}/bin/bat --theme=ansi --style=plain";
|
||||
chromium-incognito = "chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
|
||||
cp = "cp --interactive";
|
||||
ip = "${pkgs.iproute2}/bin/ip -c";
|
||||
@@ -225,6 +236,8 @@ in {
|
||||
};
|
||||
};
|
||||
}
|
||||
./android.nix
|
||||
./stylix.nix
|
||||
./alacritty.nix
|
||||
./backup.nix
|
||||
./bash.nix
|
||||
@@ -245,7 +258,10 @@ in {
|
||||
./hledger.nix
|
||||
./htop.nix
|
||||
./hu-berlin.nix
|
||||
./fu-berlin.nix
|
||||
./fysi.nix
|
||||
./i3.nix
|
||||
./i3status-rust.nix
|
||||
./keyboard.nix
|
||||
./lb.nix
|
||||
./mpv.nix
|
||||
@@ -260,25 +276,21 @@ in {
|
||||
./polkit.nix
|
||||
./power-action.nix
|
||||
./printing.nix
|
||||
# ./openweathermap.nix
|
||||
./wallpaper.nix
|
||||
./redshift.nix
|
||||
./retiolum.nix
|
||||
./rofi.nix
|
||||
./spacetime.nix
|
||||
./seafile.nix
|
||||
./ssh.nix
|
||||
./sshd.nix
|
||||
./sound.nix
|
||||
./sudo.nix
|
||||
./themes.nix
|
||||
./tmux.nix
|
||||
./traadfri.nix
|
||||
./unclutter.nix
|
||||
./vscode.nix
|
||||
./watson.nix
|
||||
./zsh.nix
|
||||
./tor.nix
|
||||
./stw-berlin.nix
|
||||
./mastodon-bot.nix
|
||||
];
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (import ../lib) defaultApplications colours theme;
|
||||
inherit (import ../lib) defaultApplications theme;
|
||||
in {
|
||||
home-manager.users.me.services.dunst = {
|
||||
enable = true;
|
||||
@@ -11,16 +11,13 @@ in {
|
||||
settings = {
|
||||
global = {
|
||||
transparency = 10;
|
||||
font = "Monospace 8";
|
||||
geometry = "200x5-30+20";
|
||||
frame_color = colours.foreground;
|
||||
follow = "mouse";
|
||||
indicate_hidden = true;
|
||||
notification_height = 0;
|
||||
separator_height = 2;
|
||||
padding = 8;
|
||||
horizontal_padding = 8;
|
||||
separator_color = "auto";
|
||||
sort = true;
|
||||
markup = "full";
|
||||
format = "%a\\n<b>%s</b>\\n%b";
|
||||
@@ -43,22 +40,13 @@ in {
|
||||
mouse_right_click = "close_current";
|
||||
mouse_middle_click = "close_all";
|
||||
};
|
||||
urgency_low = rec {
|
||||
frame_color = background;
|
||||
background = colours.foreground;
|
||||
foreground = colours.background;
|
||||
urgency_low = {
|
||||
timeout = 5;
|
||||
};
|
||||
urgency_normal = rec {
|
||||
frame_color = background;
|
||||
background = colours.foreground;
|
||||
foreground = colours.background;
|
||||
urgency_normal = {
|
||||
timeout = 10;
|
||||
};
|
||||
urgency_critical = rec {
|
||||
frame_color = background;
|
||||
background = colours.red.dark;
|
||||
foreground = colours.background;
|
||||
urgency_critical = {
|
||||
timeout = 0;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
};
|
||||
newGardiner = zip-font "NewGardiner" {
|
||||
url = "https://mjn.host.cs.st-andrews.ac.uk/egyptian/fonts/NewGardiner.zip";
|
||||
sha256 = "1jd0qa6shh9pqqyig2w43m9l9rv1i50l73jzkhb6g6mqxbhb1mip";
|
||||
hash = "sha256-i7ZBN28no/884fYMA7ZJ47WpkwZXzY//TK0bDz21pE0=";
|
||||
stripRoot = false;
|
||||
};
|
||||
junicode2 = zip-font "JunicodeTwo" {
|
||||
|
||||
80
configs/fu-berlin.nix
Normal file
80
configs/fu-berlin.nix
Normal file
@@ -0,0 +1,80 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
username = "meinhak99";
|
||||
inherit (import ../lib/email.nix) defaults;
|
||||
fu-defaults = rec {
|
||||
imap.host = "mail.zedat.fu-berlin.de";
|
||||
smtp.host = imap.host;
|
||||
folders.drafts = "Entwürfe";
|
||||
folders.sent = "Gesendet";
|
||||
folders.trash = "Papierkorb";
|
||||
};
|
||||
in {
|
||||
home-manager.users.me = {
|
||||
programs.ssh = {
|
||||
matchBlocks = {
|
||||
fu-berlin = {
|
||||
user = username;
|
||||
hostname = "login.zedat.fu-berlin.de";
|
||||
setEnv.TERM = "xterm";
|
||||
};
|
||||
};
|
||||
};
|
||||
accounts.email.accounts = {
|
||||
fu-student =
|
||||
lib.recursiveUpdate defaults
|
||||
(lib.recursiveUpdate fu-defaults
|
||||
rec {
|
||||
userName = "meinhak99";
|
||||
address = "kieran.meinhardt@fu-berlin.de";
|
||||
aliases = ["${userName}@fu-berlin.de"];
|
||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhak99.path}";
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services.fu-blackboard-calendar = {
|
||||
enable = true;
|
||||
# startAt = "*:00/10";
|
||||
after = ["vdirsyncer.service"];
|
||||
wantedBy = ["default.target"];
|
||||
script = ''
|
||||
${pkgs.curl}/bin/curl $(cat ${config.age.secrets.blackboard-calendar-ics.path}) | ${pkgs.khal}/bin/khal import -
|
||||
'';
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
Restart = "on-failure";
|
||||
};
|
||||
};
|
||||
|
||||
age.secrets = {
|
||||
email-password-meinhak99 = {
|
||||
file = ../secrets/email-password-meinhak99.age;
|
||||
owner = config.users.users.me.name;
|
||||
group = config.users.users.me.group;
|
||||
mode = "400";
|
||||
};
|
||||
blackboard-calendar-ics = {
|
||||
file = ../secrets/blackboard-calendar-ics.age;
|
||||
owner = config.users.users.me.name;
|
||||
group = config.users.users.me.group;
|
||||
mode = "400";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.fu-vpn = {
|
||||
enable = true;
|
||||
wants = ["network-online.target"];
|
||||
serviceConfig.LoadCredential = "password:${config.age.secrets.email-password-meinhak99.path}";
|
||||
script = ''
|
||||
if ${pkgs.wirelesstools}/bin/iwgetid | ${pkgs.gnugrep}/bin/grep --invert-match eduroam
|
||||
then
|
||||
cat "$CREDENTIALS_DIRECTORY/password" | ${pkgs.openconnect}/bin/openconnect vpn.fu-berlin.de --user ${username} --passwd-on-stdin
|
||||
fi
|
||||
'';
|
||||
};
|
||||
}
|
||||
55
configs/fysi.nix
Normal file
55
configs/fysi.nix
Normal file
@@ -0,0 +1,55 @@
|
||||
{
|
||||
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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,28 +1,22 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
environment = {
|
||||
systemPackages = [pkgs.fzf];
|
||||
variables = rec {
|
||||
FZF_DEFAULT_COMMAND = "${pkgs.fd}/bin/fd --type f --strip-cwd-prefix --follow --no-ignore-vcs --exclude .git";
|
||||
FZF_DEFAULT_OPTS =
|
||||
lib.escapeShellArgs ["--height=40%"];
|
||||
FZF_ALT_C_COMMAND = "${pkgs.fd}/bin/fd --type d";
|
||||
FZF_ALT_C_OPTS = lib.escapeShellArgs [
|
||||
"--preview='${pkgs.tree}/bin/tree -L 1 \"{}\"'"
|
||||
"--bind=space:toggle-preview"
|
||||
"--preview-window=hidden"
|
||||
];
|
||||
FZF_CTRL_T_COMMAND = FZF_DEFAULT_COMMAND;
|
||||
FZF_CTRL_T_OPTS =
|
||||
lib.escapeShellArgs ["--preview='head -$LINES {}'"];
|
||||
};
|
||||
};
|
||||
|
||||
{pkgs, ...}: {
|
||||
programs.fzf = {
|
||||
fuzzyCompletion = true;
|
||||
keybindings = true;
|
||||
};
|
||||
|
||||
home-manager.users.me = {
|
||||
programs.fzf = rec {
|
||||
enable = true;
|
||||
defaultCommand = "${pkgs.fd}/bin/fd --type f --strip-cwd-prefix --follow --no-ignore-vcs --exclude .git";
|
||||
defaultOptions = ["--height=40%"];
|
||||
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
|
||||
changeDirWidgetOptions = [
|
||||
"--preview='${pkgs.tree}/bin/tree -L 1 {}'"
|
||||
"--bind=space:toggle-preview"
|
||||
"--preview-window=hidden"
|
||||
];
|
||||
fileWidgetCommand = defaultCommand;
|
||||
fileWidgetOptions = ["--preview='head -$LINES {}'"];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -4,11 +4,13 @@
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.strings) fileContents;
|
||||
inherit (import ../lib) sshPort;
|
||||
eduroam = {
|
||||
identity = fileContents <secrets/eduroam/identity>;
|
||||
password = fileContents <secrets/eduroam/password>;
|
||||
inherit (import ../lib/email.nix) defaults;
|
||||
hu-defaults = {
|
||||
imap.host = "mailbox.cms.hu-berlin.de";
|
||||
imap.port = 993;
|
||||
smtp.host = "mailhost.cms.hu-berlin.de";
|
||||
smtp.port = 25;
|
||||
smtp.tls.useStartTls = true;
|
||||
};
|
||||
hu-berlin-cifs-options = [
|
||||
"uid=${toString config.users.users.me.uid}"
|
||||
@@ -17,7 +19,6 @@
|
||||
"workgroup=german"
|
||||
"credentials=${config.age.secrets.cifs-credentials-hu-berlin.path}"
|
||||
"noauto"
|
||||
# "x-systemd.requires=hu-vpn.service"
|
||||
"x-systemd.automount"
|
||||
"x-systemd.device-timeout=1"
|
||||
"x-systemd.idle-timeout=1min"
|
||||
@@ -35,15 +36,126 @@ in {
|
||||
options = hu-berlin-cifs-options;
|
||||
};
|
||||
|
||||
age.secrets.cifs-credentials-hu-berlin.file = ../secrets/cifs-credentials-hu-berlin.age;
|
||||
age.secrets = {
|
||||
cifs-credentials-hu-berlin.file = ../secrets/cifs-credentials-hu-berlin.age;
|
||||
email-password-meinhark = {
|
||||
file = ../secrets/email-password-meinhark.age;
|
||||
owner = config.users.users.me.name;
|
||||
group = config.users.users.me.group;
|
||||
mode = "400";
|
||||
};
|
||||
email-password-meinhaki = {
|
||||
file = ../secrets/email-password-meinhaki.age;
|
||||
owner = config.users.users.me.name;
|
||||
group = config.users.users.me.group;
|
||||
mode = "400";
|
||||
};
|
||||
email-password-dslalewa = {
|
||||
file = ../secrets/email-password-dslalewa.age;
|
||||
owner = config.users.users.me.name;
|
||||
group = config.users.users.me.group;
|
||||
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.programs.ssh = {
|
||||
matchBlocks = {
|
||||
"alew.hu-berlin.de" = {
|
||||
user = "centos";
|
||||
hostname = "141.20.187.219";
|
||||
home-manager.users.me = {
|
||||
programs.ssh = {
|
||||
matchBlocks = {
|
||||
"gruenau6.informatik.hu-berlin.de" = {
|
||||
hostname = "gruenau6.informatik.hu-berlin.de";
|
||||
user = "meinhark";
|
||||
setEnv.TERM = "xterm";
|
||||
};
|
||||
"alew.hu-berlin.de" = {
|
||||
user = "centos";
|
||||
hostname = "141.20.187.219";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
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 =
|
||||
lib.recursiveUpdate defaults
|
||||
(lib.recursiveUpdate hu-defaults
|
||||
rec {
|
||||
userName = "meinhark";
|
||||
address = "kieran.felix.meinhardt@informatik.hu-berlin.de";
|
||||
aliases = ["${userName}@informatik.hu-berlin.de"];
|
||||
imap.host = "mailbox.informatik.hu-berlin.de";
|
||||
smtp.host = "mailhost.informatik.hu-berlin.de";
|
||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhark.path}";
|
||||
});
|
||||
hu-employee =
|
||||
lib.recursiveUpdate defaults
|
||||
(lib.recursiveUpdate hu-defaults
|
||||
rec {
|
||||
userName = "meinhaki";
|
||||
address = "kieran.meinhardt@hu-berlin.de";
|
||||
aliases = ["${userName}@hu-berlin.de"];
|
||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhaki.path}";
|
||||
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
|
||||
signature = {
|
||||
showSignature = "append";
|
||||
text = ''
|
||||
${defaults.realName}
|
||||
Studentische Hilfskraft / Administrator ALEW
|
||||
Humboldt-Universität zu Berlin
|
||||
|
||||
Telefon: +49 (0)30 2093 9634
|
||||
Raum 3.212, Dorotheenstraße 24, 10117 Berlin-Mitte
|
||||
https://alew.hu-berlin.de
|
||||
'';
|
||||
};
|
||||
});
|
||||
hu-admin =
|
||||
lib.recursiveUpdate defaults
|
||||
(lib.recursiveUpdate hu-defaults
|
||||
rec {
|
||||
userName = "dslalewa";
|
||||
address = "admin.alew.vglsprwi@hu-berlin.de";
|
||||
aliases = ["${userName}@hu-berlin.de"];
|
||||
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-dslalewa.path}";
|
||||
inherit (hu-employee) signature;
|
||||
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
|
||||
'';
|
||||
};
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
|
||||
104
configs/i3.nix
104
configs/i3.nix
@@ -5,7 +5,7 @@
|
||||
niveumPackages,
|
||||
...
|
||||
}: let
|
||||
inherit (import ../lib) defaultApplications colours;
|
||||
inherit (import ../lib) defaultApplications;
|
||||
klem = niveumPackages.klem.override {
|
||||
config.dmenu = "${pkgs.dmenu}/bin/dmenu -i -p klem";
|
||||
config.scripts = {
|
||||
@@ -84,6 +84,7 @@ in {
|
||||
displayManager.defaultSession = "none+i3";
|
||||
windowManager.i3 = {
|
||||
enable = true;
|
||||
package = pkgs.i3-gaps;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -110,14 +111,10 @@ in {
|
||||
bindsym --release ${modifier}+Shift+w exec /run/wrappers/bin/slock
|
||||
'';
|
||||
config = rec {
|
||||
fonts = {
|
||||
names = ["Sans"];
|
||||
size = 10.0;
|
||||
};
|
||||
inherit modifier;
|
||||
window = {
|
||||
titlebar = false;
|
||||
border = 1;
|
||||
border = 2;
|
||||
hideEdgeBorders = "smart";
|
||||
commands = [
|
||||
{
|
||||
@@ -144,78 +141,36 @@ in {
|
||||
}
|
||||
];
|
||||
};
|
||||
gaps.inner = 4;
|
||||
floating = {
|
||||
titlebar = false;
|
||||
border = 1;
|
||||
};
|
||||
colors = let
|
||||
scheme = {
|
||||
background = colours.background;
|
||||
text = colours.foreground;
|
||||
};
|
||||
in rec {
|
||||
focused =
|
||||
scheme
|
||||
// {
|
||||
border = colours.blue.bright;
|
||||
indicator = colours.blue.bright;
|
||||
childBorder = colours.blue.bright;
|
||||
};
|
||||
unfocused =
|
||||
scheme
|
||||
// {
|
||||
border = colours.background;
|
||||
indicator = colours.background;
|
||||
childBorder = colours.background;
|
||||
};
|
||||
focusedInactive = unfocused;
|
||||
urgent =
|
||||
scheme
|
||||
// {
|
||||
border = colours.red.bright;
|
||||
indicator = colours.red.bright;
|
||||
childBorder = colours.red.bright;
|
||||
};
|
||||
placeholder =
|
||||
scheme
|
||||
// {
|
||||
border = colours.green.bright;
|
||||
indicator = colours.green.bright;
|
||||
childBorder = colours.green.bright;
|
||||
};
|
||||
};
|
||||
bars = [
|
||||
{
|
||||
workspaceButtons = false;
|
||||
fonts = {
|
||||
names = ["Monospace" "Font Awesome 6 Free"];
|
||||
size = 8.0;
|
||||
};
|
||||
mode = "dock"; # "hide";
|
||||
position = "bottom";
|
||||
colors = rec {
|
||||
background = colours.background;
|
||||
separator = background;
|
||||
statusline = colours.foreground;
|
||||
bindingMode = {
|
||||
background = colours.red.bright;
|
||||
border = colours.background;
|
||||
text = colours.foreground;
|
||||
(config.home-manager.users.me.lib.stylix.i3.bar
|
||||
// rec {
|
||||
workspaceButtons = false;
|
||||
mode = "dock"; # "hide";
|
||||
position = "bottom";
|
||||
statusCommand = toString (pkgs.writers.writeDash "i3status-rust" ''
|
||||
export I3RS_GITHUB_TOKEN="$(cat ${config.age.secrets.github-token-i3status-rust.path})"
|
||||
export OPENWEATHERMAP_API_KEY="$(cat ${config.age.secrets.openweathermap-api-key.path})"
|
||||
${config.home-manager.users.me.programs.i3status-rust.package}/bin/i3status-rs ${config.home-manager.users.me.home.homeDirectory}/.config/i3status-rust/config-${position}.toml
|
||||
'');
|
||||
fonts = {
|
||||
names = ["${config.stylix.fonts.sansSerif.name}" "FontAwesome 6 Free"];
|
||||
size = config.stylix.fonts.sizes.desktop * 0.8;
|
||||
};
|
||||
};
|
||||
statusCommand = toString (pkgs.writers.writeDash "i3status-rust" ''
|
||||
export I3RS_GITHUB_TOKEN="$(cat ${config.age.secrets.github-token-i3status-rust.path})"
|
||||
export OPENWEATHERMAP_API_KEY="$(cat ${config.age.secrets.openweathermap-api-key.path})"
|
||||
${pkgs.i3status-rust}/bin/i3status-rs ${
|
||||
(pkgs.formats.toml {}).generate "i3status-rust.toml" (import ../lib/i3status-rust.nix {
|
||||
inherit (config.niveum) batteryName wirelessInterface;
|
||||
inherit (config.home-manager.users.me.accounts.email) accounts;
|
||||
inherit colours;
|
||||
inherit pkgs;
|
||||
})
|
||||
}'');
|
||||
}
|
||||
})
|
||||
];
|
||||
colors = let
|
||||
background = config.lib.stylix.colors.withHashtag.base00;
|
||||
in {
|
||||
unfocused = {
|
||||
border = lib.mkForce background;
|
||||
childBorder = lib.mkForce background;
|
||||
};
|
||||
};
|
||||
modes.resize = {
|
||||
"Escape" = ''mode "default"'';
|
||||
"Return" = ''mode "default"'';
|
||||
@@ -257,13 +212,8 @@ in {
|
||||
"${modifier}+r" = "mode resize";
|
||||
"${modifier}+v" = "split v";
|
||||
"${modifier}+w" = "layout tabbed";
|
||||
"${modifier}+q" = "exec ${pkgs.writers.writeDash "newsboat-sync" ''
|
||||
notify-send --app-name="newsboat" "Updating ..."
|
||||
newsboat -x reload
|
||||
notify-send --app-name="newsboat" "Finished updating."
|
||||
''}";
|
||||
"${modifier}+q" = "exec ${config.services.clipmenu.package}/bin/clipmenu";
|
||||
|
||||
# "${modifier}+Shift+y" = "exec ${pkgs.qutebrowser}/bin/qutebrowser";
|
||||
"${modifier}+Return" = "exec ${(defaultApplications pkgs).terminal}";
|
||||
"${modifier}+t" = "exec ${(defaultApplications pkgs).fileManager}";
|
||||
"${modifier}+y" = "exec ${(defaultApplications pkgs).browser}";
|
||||
|
||||
175
configs/i3status-rust.nix
Normal file
175
configs/i3status-rust.nix
Normal file
@@ -0,0 +1,175 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
home-manager.users.me = {
|
||||
programs.i3status-rust = {
|
||||
enable = true;
|
||||
bars.bottom = {
|
||||
icons = "awesome6";
|
||||
settings = {
|
||||
theme.overrides = let
|
||||
colours = config.lib.stylix.colors.withHashtag;
|
||||
in {
|
||||
idle_bg = colours.base00;
|
||||
idle_fg = colours.base05;
|
||||
good_bg = colours.base00;
|
||||
good_fg = colours.base0B;
|
||||
warning_bg = colours.base00;
|
||||
warning_fg = colours.base0A;
|
||||
critical_bg = colours.base00;
|
||||
critical_fg = colours.base09;
|
||||
info_bg = colours.base00;
|
||||
info_fg = colours.base04;
|
||||
separator_bg = colours.base00;
|
||||
separator = " ";
|
||||
};
|
||||
};
|
||||
blocks = [
|
||||
{
|
||||
block = "weather";
|
||||
autolocate = true;
|
||||
format = "$icon $location: $temp";
|
||||
service = {
|
||||
name = "openweathermap";
|
||||
city_id = "2950159";
|
||||
units = "metric";
|
||||
};
|
||||
}
|
||||
{
|
||||
block = "custom";
|
||||
interval = 60 * 5;
|
||||
command = let
|
||||
spacetime = import ../configs/spacetime.nix;
|
||||
in
|
||||
pkgs.writers.writePython3 "sun.py" {
|
||||
libraries = [pkgs.python3Packages.astral];
|
||||
flakeIgnore = ["E121" "E501"];
|
||||
}
|
||||
''
|
||||
import astral
|
||||
import astral.moon
|
||||
import astral.sun
|
||||
|
||||
current_phase = astral.moon.phase()
|
||||
|
||||
city = astral.LocationInfo("Berlin", "Germany", "${spacetime.time.timeZone}", ${toString spacetime.location.latitude}, ${toString spacetime.location.longitude})
|
||||
sun = astral.sun.sun(city.observer, date=astral.today(), tzinfo=city.timezone)
|
||||
|
||||
print("↑{} ↓{} {}{}".format(sun["sunrise"].strftime("%R"), sun["sunset"].strftime("%R"), "☽" if current_phase < 14 else "☾", round(current_phase, 1)))
|
||||
'';
|
||||
}
|
||||
{
|
||||
block = "github";
|
||||
info = ["total"];
|
||||
warning = ["mention" "review_requested" "team_mention" "manual" "invitation" "assign" "subscribed"];
|
||||
}
|
||||
{
|
||||
block = "custom";
|
||||
interval = 10;
|
||||
command = pkgs.writers.writeDash "todo" ''
|
||||
${pkgs.todoman}/bin/todo --porcelain | ${pkgs.jq}/bin/jq -r '
|
||||
map(select(.due != null))
|
||||
| (map(select(.due < now)) | length) as $overdue
|
||||
| (map(select(.due >= now and .due < now + (60 * 60 * 24))) | length) as $dueToday
|
||||
| {
|
||||
icon: "tasks",
|
||||
text: (($overdue + $dueToday) as $sum | if $sum > 0 then $sum | tostring else "" end),
|
||||
state: (
|
||||
if $overdue > 0 then
|
||||
"Critical"
|
||||
elif $dueToday > 0 then
|
||||
"Warning"
|
||||
else
|
||||
"Idle"
|
||||
end
|
||||
)
|
||||
}
|
||||
'
|
||||
'';
|
||||
json = true;
|
||||
hide_when_empty = true;
|
||||
}
|
||||
{
|
||||
block = "custom";
|
||||
interval = 60;
|
||||
command = pkgs.writers.writeDash "weechat" ''
|
||||
ssh -o ConnectTimeout=1 makanek cat /var/lib/weechat/hotlist.txt | sed 's/,/\n/g' | wc -l | jq '{
|
||||
text: (if . > 0 then . | tostring else "" end),
|
||||
state: (if . > 0 then "Info" else "Idle" end),
|
||||
icon: "bell"
|
||||
}'
|
||||
'';
|
||||
json = true;
|
||||
hide_when_empty = true;
|
||||
}
|
||||
{
|
||||
block = "net";
|
||||
format = " $icon HU";
|
||||
missing_format = "";
|
||||
device = "ppp0";
|
||||
}
|
||||
{
|
||||
block = "net";
|
||||
format = " $icon FU";
|
||||
missing_format = "";
|
||||
device = "tun0";
|
||||
}
|
||||
{
|
||||
block = "net";
|
||||
device = config.niveum.wirelessInterface;
|
||||
format = "$icon $ssid $signal_strength";
|
||||
}
|
||||
{
|
||||
block = "battery";
|
||||
device = config.niveum.batteryName;
|
||||
}
|
||||
{
|
||||
block = "sound";
|
||||
}
|
||||
{
|
||||
block = "disk_space";
|
||||
format = "$icon $available";
|
||||
}
|
||||
{
|
||||
block = "memory";
|
||||
format = "$icon $mem_used.eng(prefix:G)";
|
||||
}
|
||||
{block = "load";}
|
||||
{
|
||||
block = "custom";
|
||||
interval = 10;
|
||||
json = true;
|
||||
command = pkgs.writers.writeDash "time" ''
|
||||
${pkgs.jq}/bin/jq -n \
|
||||
--arg now "$(${pkgs.coreutils}/bin/date +'%Y-%m-%d (%W %a) %H:%M')" \
|
||||
--argjson nextEvent "$(
|
||||
${pkgs.khal}/bin/khal list --format "{start}" --day-format "" $(${pkgs.coreutils}/bin/date +'%Y-%m-%d %H:%M') 2>/dev/null \
|
||||
| ${pkgs.gnugrep}/bin/grep -E '[0-9]{2}:[0-9]{2}' \
|
||||
| ${pkgs.coreutils}/bin/head -1 \
|
||||
| ${pkgs.coreutils}/bin/date --date="$(cat)" +%s
|
||||
)" \
|
||||
'{
|
||||
text: $now,
|
||||
icon: "time",
|
||||
state: (
|
||||
($nextEvent - now) as $deltaT
|
||||
| if $deltaT < (5 * 60) then
|
||||
"Critical"
|
||||
elif $deltaT < (15 * 60) then
|
||||
"Warning"
|
||||
elif $deltaT < (60 * 60) then
|
||||
"Info"
|
||||
else
|
||||
"Idle"
|
||||
end
|
||||
)
|
||||
}'
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
}: let
|
||||
davHome = "~/.local/share/dav";
|
||||
kmeinCloud = {
|
||||
davEndpoint = "https://cloud.xn--kiern-0qa.de/remote.php/dav";
|
||||
davEndpoint = "https://cloud.kmein.de/remote.php/dav";
|
||||
username = "kieran";
|
||||
passwordFile = config.age.secrets.nextcloud-password-kieran.path;
|
||||
};
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
startAt = "weekly";
|
||||
serviceConfig = {
|
||||
user = "kfm";
|
||||
WorkingDirectory = "/home/kfm/cloud/Seafile/Books/Germanistik/LB";
|
||||
WorkingDirectory = "/home/kfm/cloud/nextcloud/Books/Germanistik/LB";
|
||||
};
|
||||
script = ''
|
||||
first_year=2019
|
||||
|
||||
@@ -8,6 +8,31 @@
|
||||
environment.shellAliases.vim = "nvim";
|
||||
environment.shellAliases.view = "nvim -R";
|
||||
|
||||
home-manager.users.me = {
|
||||
editorconfig = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"*" = {
|
||||
charset = "utf-8";
|
||||
end_of_line = "lf";
|
||||
trim_trailing_whitespace = true;
|
||||
insert_final_newline = true;
|
||||
indent_style = "space";
|
||||
indent_size = 2;
|
||||
};
|
||||
"*.py" = {
|
||||
indent_size = 4;
|
||||
};
|
||||
Makefile = {
|
||||
indent_style = "tab";
|
||||
};
|
||||
"*.md" = {
|
||||
trim_trailing_whitespace = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
(pkgs.writers.writeDashBin "vim" ''neovim "$@"'')
|
||||
niveumPackages.vim
|
||||
|
||||
@@ -275,7 +275,7 @@ in {
|
||||
libreoffice
|
||||
# gnumeric
|
||||
dia
|
||||
pandoc
|
||||
unstablePackages.pandoc
|
||||
niveumPackages.man-pandoc
|
||||
typst
|
||||
# proselint
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
services.picom = {
|
||||
enable = true;
|
||||
activeOpacity = 1;
|
||||
# activeOpacity = 1;
|
||||
fade = true;
|
||||
fadeDelta = 1;
|
||||
inactiveOpacity = 0.9;
|
||||
shadow = true;
|
||||
menuOpacity = 0.9;
|
||||
shadowOpacity = 0.3;
|
||||
# inactiveOpacity = 0.9;
|
||||
# shadow = true;
|
||||
# menuOpacity = 0.9;
|
||||
# shadowOpacity = 0.3;
|
||||
fadeExclude = [
|
||||
"class_g = 'slock'" # don't want a transparent lock screen!
|
||||
"name *?= 'slock'"
|
||||
|
||||
@@ -1,14 +1,6 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (import <niveum/lib>) colours;
|
||||
in {
|
||||
{pkgs, ...}: {
|
||||
home-manager.users.me.programs.rofi = {
|
||||
enable = true;
|
||||
font = "Monospace 10";
|
||||
theme = "${pkgs.rofi}/share/rofi/themes/Arc.rasi";
|
||||
pass = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
{pkgs, ...}: let
|
||||
inherit (import ../lib) sshPort kieran;
|
||||
externalNetwork = import ../lib/external-network.nix;
|
||||
sshIdentity = name: "${config.users.users.me.home}/.ssh/${name}";
|
||||
in {
|
||||
users.users.me.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
|
||||
|
||||
@@ -40,7 +34,7 @@ in {
|
||||
|
||||
home-manager.users.me.programs.ssh = {
|
||||
enable = true;
|
||||
matchBlocks = rec {
|
||||
matchBlocks = {
|
||||
"github.com" = {
|
||||
hostname = "ssh.github.com";
|
||||
port = 443;
|
||||
@@ -80,27 +74,6 @@ in {
|
||||
user = "kfm";
|
||||
port = sshPort;
|
||||
};
|
||||
"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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
dictionaries = {
|
||||
@@ -148,6 +149,7 @@
|
||||
sha256 = "1pk234pbq4pk55d8sjk0pp9j5sajm82f8804kf2xm2x5p387q1rg";
|
||||
};
|
||||
};
|
||||
coptic.dictionary = inputs.coptic-dictionary.packages.x86_64-linux.coptic-stardict;
|
||||
russian = {
|
||||
LingvoGermanRussian = pkgs.fetchzip {
|
||||
url = "http://download.huzheng.org/lingvo/stardict-GR-LingvoUniversal-2.4.2.tar.bz2";
|
||||
@@ -313,6 +315,7 @@ in {
|
||||
(makeStardict "sd-russian" dictionaries.russian)
|
||||
(makeStardict "sd" dictionaries.englishGerman)
|
||||
(makeStardict "jbo" dictionaries.lojban)
|
||||
(makeStardict "cop" dictionaries.coptic)
|
||||
(makeStardict "sd-turkish" dictionaries.turkish)
|
||||
];
|
||||
}
|
||||
|
||||
51
configs/stw-berlin.nix
Normal file
51
configs/stw-berlin.nix
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
age.secrets.stw-berlin-card-code.file = ../secrets/stw-berlin-card-code.age;
|
||||
|
||||
systemd.services.stw-berlin = {
|
||||
enable = true;
|
||||
wants = ["network-online.target"];
|
||||
startAt = "weekly";
|
||||
serviceConfig = {
|
||||
user = "kfm";
|
||||
WorkingDirectory = "/home/kfm/cloud/nextcloud/Uni/Meta/Mensa";
|
||||
LoadCredential = [
|
||||
"password:${config.age.secrets.stw-berlin-card-code.path}"
|
||||
];
|
||||
};
|
||||
script = ''
|
||||
KARTEN_ID=8071859
|
||||
PASSWORT=$(cat "$CREDENTIALS_DIRECTORY"/password)
|
||||
|
||||
endpoint=https://ks.stw.berlin:4433/TL1/TLM/KASVC
|
||||
authorization_header='Authorization: Basic S0FTVkM6ekt2NXlFMUxaVW12VzI5SQ=='
|
||||
|
||||
get_auth_token() {
|
||||
${pkgs.curl}/bin/curl -sSL "$endpoint/LOGIN?karteNr=$KARTEN_ID&format=JSON&datenformat=JSON" \
|
||||
-X POST \
|
||||
-H "$authorization_header" \
|
||||
--data-raw '{"BenutzerID":"'$KARTEN_ID'","Passwort":"'$PASSWORT'"}' \
|
||||
| ${pkgs.jq}/bin/jq -r '.[0].authToken|@uri'
|
||||
}
|
||||
|
||||
|
||||
get_transactions() {
|
||||
${pkgs.curl}/bin/curl -sSL "$endpoint/TRANS?format=JSON&authToken=$(get_auth_token)&karteNr=$KARTEN_ID&datumVon=12.02.2018&datumBis=$(date -d tomorrow +%d.%m.%Y)" \
|
||||
-H "$authorization_header" \
|
||||
| ${pkgs.jq}/bin/jq
|
||||
}
|
||||
|
||||
get_items() {
|
||||
${pkgs.curl}/bin/curl -sSL "$endpoint/TRANSPOS?format=JSON&authToken=$(get_auth_token)&karteNr=$KARTEN_ID&datumVon=12.02.2018&datumBis=$(date -d tomorrow +%d.%m.%Y)" \
|
||||
-H "$authorization_header" \
|
||||
| ${pkgs.jq}/bin/jq
|
||||
}
|
||||
|
||||
get_transactions > transactions-$(date -I).json
|
||||
get_items > items-$(date -I).json
|
||||
'';
|
||||
};
|
||||
}
|
||||
71
configs/stylix.nix
Normal file
71
configs/stylix.nix
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
generatedWallpaper = pkgs.runCommand "wallpaper.png" {} ''
|
||||
${inputs.wallpaper-generator.packages.x86_64-linux.wp-gen}/bin/wallpaper-generator lines \
|
||||
--output $out \
|
||||
${lib.concatMapStringsSep " "
|
||||
(n: "--base0${lib.toHexString n}=${config.lib.stylix.colors.withHashtag."base0${lib.toHexString n}"}")
|
||||
(lib.range 0 15)}
|
||||
'';
|
||||
in {
|
||||
# https://danth.github.io/stylix/tricks.html
|
||||
# stylix.image = inputs.wallpapers.outPath + "/meteora/rodrigo-soares-250630.jpg";
|
||||
stylix.image = generatedWallpaper;
|
||||
|
||||
environment.etc."stylix/wallpaper.png".source = generatedWallpaper;
|
||||
|
||||
# stylix.polarity = "either";
|
||||
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/${
|
||||
{
|
||||
"0" = "synth-midnight-dark";
|
||||
"1" = "apprentice"; # https://romainl.github.io/Apprentice/
|
||||
"2" = "one-light";
|
||||
"3" = "one-dark";
|
||||
"4" = "material"; # https://github.com/ntpeters/base16-materialtheme-scheme
|
||||
"5" = "material-palenight";
|
||||
"6" = "material-lighter";
|
||||
"7" = "tomorrow"; # https://github.com/chriskempson/tomorrow-theme
|
||||
"8" = "tomorrow-night";
|
||||
"9" = "gruvbox-light-medium"; # https://github.com/dawikur/base16-gruvbox-scheme
|
||||
"a" = "gruvbox-dark-medium";
|
||||
"b" = "selenized-light"; # https://github.com/jan-warchol/selenized
|
||||
"c" = "selenized-dark";
|
||||
"d" = "papercolor-light";
|
||||
"e" = "papercolor-dark";
|
||||
"f" = "dracula"; # https://draculatheme.com/
|
||||
}
|
||||
.${builtins.head (lib.stringToCharacters inputs.nixpkgs.rev)}
|
||||
}.yaml";
|
||||
|
||||
stylix.fonts = {
|
||||
serif = {
|
||||
package = pkgs.noto-fonts;
|
||||
name = "Noto Serif";
|
||||
};
|
||||
|
||||
sansSerif = {
|
||||
package = pkgs.noto-fonts;
|
||||
name = "Noto Sans";
|
||||
};
|
||||
|
||||
monospace = {
|
||||
package = pkgs.noto-fonts;
|
||||
name = "Noto Sans Mono";
|
||||
};
|
||||
|
||||
emoji = {
|
||||
package = pkgs.noto-fonts-emoji;
|
||||
name = "Noto Color Emoji";
|
||||
};
|
||||
|
||||
sizes = {
|
||||
terminal = 6;
|
||||
applications = 10;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,89 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
switch-theme = pkgs.writers.writeDashBin "switch-theme" ''
|
||||
set -efux
|
||||
if [ "$1" = toggle ]; then
|
||||
if [ "$(${pkgs.coreutils}/bin/cat /var/theme/current_theme)" = dark ]; then
|
||||
${placeholder "out"}/bin/switch-theme light
|
||||
else
|
||||
${placeholder "out"}/bin/switch-theme dark
|
||||
fi
|
||||
elif test -e "/etc/themes/$1"; then
|
||||
mkdir -p /var/theme/config
|
||||
${pkgs.rsync}/bin/rsync --chown=${config.users.users.me.name}:users -a --delete "/etc/themes/$1/" /var/theme/config/
|
||||
echo "$1" > /var/theme/current_theme
|
||||
${pkgs.coreutils}/bin/chown ${config.users.users.me.name}:users /var/theme/current_theme
|
||||
${pkgs.xorg.xrdb}/bin/xrdb -merge /var/theme/config/xresources
|
||||
${pkgs.procps}/bin/pkill -HUP xsettingsd
|
||||
${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface gtk-theme "$(cat /var/theme/config/gtk-theme)" || :
|
||||
else
|
||||
echo "theme $1 not found"
|
||||
fi
|
||||
'';
|
||||
in {
|
||||
systemd.services.xsettingsd = {
|
||||
wantedBy = ["multi-user.target"];
|
||||
after = ["display-manager.service"];
|
||||
environment.DISPLAY = ":0";
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.xsettingsd}/bin/xsettingsd -c /var/theme/config/xsettings.conf";
|
||||
User = config.users.users.me.name;
|
||||
Restart = "always";
|
||||
RestartSec = "15s";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d /var/theme/ 755 ${config.users.users.me.name} users"
|
||||
];
|
||||
|
||||
environment.systemPackages = [
|
||||
switch-theme
|
||||
pkgs.capitaine-cursors
|
||||
];
|
||||
|
||||
home-manager.users.me = {
|
||||
home.pointerCursor = {
|
||||
name = "capitaine-cursors-white";
|
||||
package = pkgs.capitaine-cursors;
|
||||
size = 16;
|
||||
};
|
||||
};
|
||||
|
||||
environment.etc = {
|
||||
"themes/light/gtk-theme".text = ''
|
||||
Adwaita
|
||||
'';
|
||||
"themes/light/xsettings.conf".text = ''
|
||||
Net/ThemeName "Adwaita"
|
||||
'';
|
||||
"themes/light/xresources".text = ''
|
||||
*background: #ffffff
|
||||
*foreground: #000000
|
||||
'';
|
||||
"themes/dark/gtk-theme".text = ''
|
||||
Dracula
|
||||
'';
|
||||
"themes/dark/xsettings.conf".text = ''
|
||||
Net/ThemeName "Dracula"
|
||||
'';
|
||||
"themes/dark/xresources".text = ''
|
||||
*background: #000000
|
||||
*foreground: #ffffff
|
||||
'';
|
||||
};
|
||||
|
||||
system.activationScripts.theme.text = ''
|
||||
export DISPLAY=:0
|
||||
if test -e /var/theme/current_theme; then
|
||||
${switch-theme}/bin/switch-theme "$(cat /var/theme/current_theme)" ||
|
||||
${switch-theme}/bin/switch-theme dark
|
||||
else
|
||||
${switch-theme}/bin/switch-theme dark
|
||||
fi
|
||||
'';
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
theme = (import <niveum/lib>).theme pkgs;
|
||||
in {
|
||||
environment.systemPackages = [theme.gtk.package theme.icon.package theme.cursor.package];
|
||||
|
||||
services.xserver.displayManager.lightdm.greeters.gtk = {
|
||||
theme = {inherit (theme.gtk) name package;};
|
||||
iconTheme = {inherit (theme.icon) name package;};
|
||||
};
|
||||
|
||||
home-manager.users.me = {
|
||||
gtk = {
|
||||
enable = true;
|
||||
iconTheme = theme.icon;
|
||||
theme = theme.gtk;
|
||||
};
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme = "gtk";
|
||||
};
|
||||
home.pointerCursor =
|
||||
theme.cursor
|
||||
// {
|
||||
size = 16;
|
||||
x11.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (import ../lib) localAddresses;
|
||||
living-room-id = 131090;
|
||||
in {
|
||||
environment.systemPackages = [
|
||||
(pkgs.writers.writeDashBin "traadfri-party" ''
|
||||
while true; do
|
||||
for color in $(traadfri colours | shuf); do
|
||||
echo "$color"
|
||||
traadfri group "''${2:-${toString living-room-id}}" --on --colour="$color"
|
||||
sleep "''${1:-2}"
|
||||
done
|
||||
done
|
||||
'')
|
||||
];
|
||||
|
||||
age.secrets.traadfri-key = {
|
||||
file = ../secrets/traadfri-key.age;
|
||||
owner = config.users.users.me.name;
|
||||
group = config.users.users.me.group;
|
||||
mode = "400";
|
||||
};
|
||||
|
||||
niveum.traadfri = {
|
||||
enable = true;
|
||||
user = "kmein";
|
||||
host = localAddresses.tradfri;
|
||||
keyFile = config.age.secrets.traadfri-key.path;
|
||||
rooms = {
|
||||
corridor = 131080;
|
||||
kitchen = 131081;
|
||||
bedroom = 131082;
|
||||
living-room = living-room-id;
|
||||
bedside = 131087;
|
||||
chain = 131089;
|
||||
};
|
||||
};
|
||||
}
|
||||
357
flake.lock
generated
357
flake.lock
generated
@@ -11,11 +11,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1684153753,
|
||||
"narHash": "sha256-PVbWt3qrjYAK+T5KplFcO+h7aZWfEj1UtyoKlvcDxh0=",
|
||||
"lastModified": 1690228878,
|
||||
"narHash": "sha256-9Xe7JV0krp4RJC9W9W9WutZVlw6BlHTFMiUP/k48LQY=",
|
||||
"owner": "ryantm",
|
||||
"repo": "agenix",
|
||||
"rev": "db5637d10f797bb251b94ef9040b237f4702cde3",
|
||||
"rev": "d8c973fd228949736dedf61b7f8cc1ece3236792",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -24,6 +24,24 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16": {
|
||||
"inputs": {
|
||||
"fromYaml": "fromYaml"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1689633990,
|
||||
"narHash": "sha256-iwvQg2Vx0IIDWZaKo8Xmzxlv1YPHg+Kp/QSv8dRv0RY=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"rev": "dddf2e1c04845d43c89a8e9e37d574519649a404",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"blessings": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -40,6 +58,27 @@
|
||||
"url": "https://cgit.krebsco.de/blessings"
|
||||
}
|
||||
},
|
||||
"coptic-dictionary": {
|
||||
"inputs": {
|
||||
"kellia-dictionary": "kellia-dictionary",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1691406669,
|
||||
"narHash": "sha256-8QKnoDfdQuy2ODnCi6NNUv+wewONseGEH1QAvzA7io0=",
|
||||
"owner": "kmein",
|
||||
"repo": "coptic-dictionary",
|
||||
"rev": "7316ef7a4264afa65c96a2e089845c79fa25f19c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "kmein",
|
||||
"repo": "coptic-dictionary",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -62,16 +101,32 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1687709756,
|
||||
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
|
||||
"lastModified": 1692799911,
|
||||
"narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
|
||||
"rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -95,6 +150,22 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fromYaml": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1689549921,
|
||||
"narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -102,11 +173,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1687871164,
|
||||
"narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=",
|
||||
"lastModified": 1692099905,
|
||||
"narHash": "sha256-/pSusGhmIdSdAaywQRFA5dVbfdIzlWQTecM+E46+cJ0=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38",
|
||||
"rev": "2a6679aa9cc3872c29ba2a57fe1b71b3e3c5649f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -116,6 +187,22 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"kellia-dictionary": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1660946774,
|
||||
"narHash": "sha256-7C+vE1hvo9OfonmBVT1as6c8rZeLf8f4nEsELwnUPXc=",
|
||||
"owner": "KELLIA",
|
||||
"repo": "dictionary",
|
||||
"rev": "4fe62847e93b8a87ad7ca5de19190b34ff9e0c99",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "KELLIA",
|
||||
"repo": "dictionary",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"menstruation-backend": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
@@ -168,6 +255,56 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-formatter-pack": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nix-on-droid",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nmd": "nmd",
|
||||
"nmt": "nmt"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1666720474,
|
||||
"narHash": "sha256-iWojjDS1D19zpeZXbBdjWb9MiKmVVFQCqtJmtTXgPx8=",
|
||||
"owner": "Gerschtli",
|
||||
"repo": "nix-formatter-pack",
|
||||
"rev": "14876cc8fe94a3d329964ecb073b4c988c7b61f5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Gerschtli",
|
||||
"repo": "nix-formatter-pack",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-on-droid": {
|
||||
"inputs": {
|
||||
"home-manager": [
|
||||
"home-manager"
|
||||
],
|
||||
"nix-formatter-pack": "nix-formatter-pack",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-for-bootstrap": "nixpkgs-for-bootstrap",
|
||||
"nmd": "nmd_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1688144254,
|
||||
"narHash": "sha256-8KL1l/7eP2Zm1aJjdVaSOk0W5kTnJo9kcgW03gqWuiI=",
|
||||
"owner": "t184256",
|
||||
"repo": "nix-on-droid",
|
||||
"rev": "2301e01d48c90b60751005317de7a84a51a87eb6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "t184256",
|
||||
"ref": "release-23.05",
|
||||
"repo": "nix-on-droid",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixinate": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -190,11 +327,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1688764204,
|
||||
"narHash": "sha256-FsvK+tIvelCI0tWwlMDKfiyb7P/KfxpGbXMrdCKiT8s=",
|
||||
"lastModified": 1692986144,
|
||||
"narHash": "sha256-M4VFpy7Av9j+33HF5nIGm0k2+DXXW4qSSKdidIKg5jY=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d8bb6c681cf86265fdcf3cc3119f757bbb085835",
|
||||
"rev": "74e5bdc5478ebbe7ba5849f0d765f92757bb9dbf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -204,6 +341,22 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-for-bootstrap": {
|
||||
"locked": {
|
||||
"lastModified": 1686921029,
|
||||
"narHash": "sha256-J1bX9plPCFhTSh6E3TWn9XSxggBh/zDD4xigyaIQBy8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c7ff1b9b95620ce8728c0d7bd501c458e6da9e04",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c7ff1b9b95620ce8728c0d7bd501c458e6da9e04",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-old": {
|
||||
"locked": {
|
||||
"lastModified": 1682600000,
|
||||
@@ -222,11 +375,11 @@
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1688862802,
|
||||
"narHash": "sha256-TnmgzHyr9G6x8swT7r/a9edX9ahNkN2RJJhJkt+XxaI=",
|
||||
"lastModified": 1693094031,
|
||||
"narHash": "sha256-PyPWn5/WzryKDKuuiJJ8cd1BJCenhjbaicYQbwRM9Ao=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "651beb2a23fb0ae7939c5e0d3c645f487fdaa448",
|
||||
"rev": "38b9aaf6682015f1d2fc7b7f48da96992c30cfa3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -252,13 +405,74 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1615532953,
|
||||
"narHash": "sha256-SWpaGjrp/INzorEqMz3HLi6Uuk9I0KAn4YS8B4n3q5g=",
|
||||
"path": "/nix/store/vw365chp87kvfczxm26qiq7z2pq3jk5z-source",
|
||||
"rev": "916ee862e87ac5ee2439f2fb7856386b4dc906ae",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nmd": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1666190571,
|
||||
"narHash": "sha256-Z1hc7M9X6L+H83o9vOprijpzhTfOBjd0KmUTnpHAVjA=",
|
||||
"owner": "rycee",
|
||||
"repo": "nmd",
|
||||
"rev": "b75d312b4f33bd3294cd8ae5c2ca8c6da2afc169",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rycee",
|
||||
"repo": "nmd",
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"nmd_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1666190571,
|
||||
"narHash": "sha256-Z1hc7M9X6L+H83o9vOprijpzhTfOBjd0KmUTnpHAVjA=",
|
||||
"owner": "rycee",
|
||||
"repo": "nmd",
|
||||
"rev": "b75d312b4f33bd3294cd8ae5c2ca8c6da2afc169",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rycee",
|
||||
"repo": "nmd",
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"nmt": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1648075362,
|
||||
"narHash": "sha256-u36WgzoA84dMVsGXzml4wZ5ckGgfnvS0ryzo/3zn/Pc=",
|
||||
"owner": "rycee",
|
||||
"repo": "nmt",
|
||||
"rev": "d83601002c99b78c89ea80e5e6ba21addcfe12ae",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rycee",
|
||||
"repo": "nmt",
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"locked": {
|
||||
"lastModified": 1688863826,
|
||||
"narHash": "sha256-6LJMOQdugKK0cR02bfyiL+ulzxx4sVRMI6hmCqd+z9U=",
|
||||
"lastModified": 1693082793,
|
||||
"narHash": "sha256-di/x+vrMYmjSHabbiuPi6EZ0m6HoPXOVtA7ugU3rVZM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "7a85833f758ac5ad9f6e3620cf1445f7907073e3",
|
||||
"rev": "0f81f016eecec153a26099beb25b0c8bac87bd23",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -293,11 +507,11 @@
|
||||
},
|
||||
"retiolum": {
|
||||
"locked": {
|
||||
"lastModified": 1688824809,
|
||||
"narHash": "sha256-Qe1ooPYuM10EI2rE4CORV9rXoh8yrdbR5mhgJiuzXJ0=",
|
||||
"lastModified": 1691992809,
|
||||
"narHash": "sha256-qUTsMDSV2L5t6Oj+L60n0KQKbvOhak3+d6++h9AZJPg=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "4e2f9841ea09012261fca1c7e734f449ca39d55a",
|
||||
"revCount": 311,
|
||||
"rev": "6216c30551876303dac5373e92690a7f05fd0f6f",
|
||||
"revCount": 315,
|
||||
"type": "git",
|
||||
"url": "https://git.thalheim.io/Mic92/retiolum"
|
||||
},
|
||||
@@ -309,10 +523,12 @@
|
||||
"root": {
|
||||
"inputs": {
|
||||
"agenix": "agenix",
|
||||
"coptic-dictionary": "coptic-dictionary",
|
||||
"flake-utils": "flake-utils",
|
||||
"home-manager": "home-manager",
|
||||
"menstruation-backend": "menstruation-backend",
|
||||
"menstruation-telegram": "menstruation-telegram",
|
||||
"nix-on-droid": "nix-on-droid",
|
||||
"nixinate": "nixinate",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-old": "nixpkgs-old",
|
||||
@@ -322,10 +538,12 @@
|
||||
"retiolum": "retiolum",
|
||||
"rust-overlay": "rust-overlay",
|
||||
"scripts": "scripts",
|
||||
"stylix": "stylix",
|
||||
"telebots": "telebots",
|
||||
"tinc-graph": "tinc-graph",
|
||||
"traadfri": "traadfri",
|
||||
"voidrice": "voidrice"
|
||||
"voidrice": "voidrice",
|
||||
"wallpaper-generator": "wallpaper-generator",
|
||||
"wallpapers": "wallpapers"
|
||||
}
|
||||
},
|
||||
"rust-overlay": {
|
||||
@@ -338,11 +556,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1688783586,
|
||||
"narHash": "sha256-HHaM2hk2azslv1kH8zmQxXo2e7i5cKgzNIuK4yftzB0=",
|
||||
"lastModified": 1693015707,
|
||||
"narHash": "sha256-SFr93DYn502sVT9nB5U8/cKg1INyEk/jCeq8tHioz7Y=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "7a29283cc242c2486fc67f60b431ef708046d176",
|
||||
"rev": "e90223633068a44f0fb62374e0fa360ccc987292",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -364,11 +582,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1687373960,
|
||||
"narHash": "sha256-dbRUzjHwFmZrS5i7WQedRx2YCRUry0z6RYHkb4ORNHM=",
|
||||
"lastModified": 1689276466,
|
||||
"narHash": "sha256-T+1f2GsTDzfiEasSPntbaSsJvpJxZ78a5g6CL4NyAK0=",
|
||||
"owner": "kmein",
|
||||
"repo": "scripts",
|
||||
"rev": "c0d9fa3efff0765af4219732292c3a7593de6856",
|
||||
"rev": "55dff522684f342f4e970116ab374ba999539288",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -377,6 +595,32 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"stylix": {
|
||||
"inputs": {
|
||||
"base16": "base16",
|
||||
"flake-compat": "flake-compat",
|
||||
"home-manager": [
|
||||
"home-manager"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1690463825,
|
||||
"narHash": "sha256-LILKFcKNVxYcYmzCB2+Gswyob5XrPJAF1YBExFR2yak=",
|
||||
"owner": "danth",
|
||||
"repo": "stylix",
|
||||
"rev": "5c829554280f3139ddbfce8561d7430efbf2abfb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "danth",
|
||||
"ref": "release-23.05",
|
||||
"repo": "stylix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
@@ -437,42 +681,57 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"traadfri": {
|
||||
"voidrice": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1692950210,
|
||||
"narHash": "sha256-0RHvrinkg8LEV/aGnT2n9MNOwaf2ke/YAXRIipZiT2w=",
|
||||
"owner": "Lukesmithxyz",
|
||||
"repo": "voidrice",
|
||||
"rev": "86f05abcce1fd270032975775adb40040c746cfe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Lukesmithxyz",
|
||||
"repo": "voidrice",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"wallpaper-generator": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs-old"
|
||||
]
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1677165914,
|
||||
"narHash": "sha256-3N08NabgDwTUy1n5wxpT27iddFrgXW35E1x2UgAKkDQ=",
|
||||
"owner": "kmein",
|
||||
"repo": "traadfri",
|
||||
"rev": "11571116ed5d2c6478c615d663d1f96f57a97ba9",
|
||||
"lastModified": 1615819231,
|
||||
"narHash": "sha256-vZzc1ViF/3rCm81+x+pyneuOzoWd0przy9ULgwhGSj4=",
|
||||
"owner": "pinpox",
|
||||
"repo": "wallpaper-generator",
|
||||
"rev": "a2223b9b0c51e0eee0d0b23a5e87228e370bdd5c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "kmein",
|
||||
"repo": "traadfri",
|
||||
"owner": "pinpox",
|
||||
"ref": "v1.1",
|
||||
"repo": "wallpaper-generator",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"voidrice": {
|
||||
"wallpapers": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1685152014,
|
||||
"narHash": "sha256-wEC7dj2vNAn5WJdQc2gGumOhpdPnQLdc4zypdfWmfoI=",
|
||||
"owner": "Lukesmithxyz",
|
||||
"repo": "voidrice",
|
||||
"rev": "07de33840d9ce0f554c0e5555ac27250be0895c2",
|
||||
"lastModified": 1589319718,
|
||||
"narHash": "sha256-2NruGq3z37vY3uAH8S4sLqHvFAGi8gaDJAgEzMIvM/4=",
|
||||
"owner": "kmein",
|
||||
"repo": "wallpapers",
|
||||
"rev": "7c553bc6bd78afa6dbf2824691466bbad0d8e6e9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Lukesmithxyz",
|
||||
"repo": "voidrice",
|
||||
"owner": "kmein",
|
||||
"repo": "wallpapers",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
|
||||
53
flake.nix
53
flake.nix
@@ -3,26 +3,31 @@
|
||||
|
||||
inputs = {
|
||||
agenix.url = "github:ryantm/agenix";
|
||||
coptic-dictionary.url = "github:kmein/coptic-dictionary";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
home-manager.url = "github:nix-community/home-manager/release-23.05";
|
||||
menstruation-backend.url = "github:kmein/menstruation.rs";
|
||||
menstruation-telegram.url = "github:kmein/menstruation-telegram";
|
||||
nix-on-droid.url = "github:t184256/nix-on-droid/release-23.05";
|
||||
nixinate.url = "github:matthewcroughan/nixinate";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
|
||||
nixpkgs-old.url = "github:NixOS/nixpkgs/50fc86b75d2744e1ab3837ef74b53f103a9b55a0";
|
||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/master";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
|
||||
nur.url = "github:nix-community/NUR";
|
||||
recht.url = "github:kmein/recht";
|
||||
scripts.url = "github:kmein/scripts";
|
||||
retiolum.url = "git+https://git.thalheim.io/Mic92/retiolum";
|
||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||
scripts.url = "github:kmein/scripts";
|
||||
stylix.url = "github:danth/stylix/release-23.05";
|
||||
telebots.url = "github:kmein/telebots";
|
||||
tinc-graph.url = "github:kmein/tinc-graph";
|
||||
traadfri.url = "github:kmein/traadfri";
|
||||
voidrice.url = "github:Lukesmithxyz/voidrice";
|
||||
wallpaper-generator.url = "github:pinpox/wallpaper-generator/v1.1";
|
||||
wallpapers.url = "github:kmein/wallpapers";
|
||||
|
||||
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
agenix.inputs.home-manager.follows = "home-manager";
|
||||
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
coptic-dictionary.inputs.nixpkgs.follows = "nixpkgs";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
menstruation-backend.inputs.flake-utils.follows = "flake-utils";
|
||||
menstruation-backend.inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -30,6 +35,8 @@
|
||||
menstruation-telegram.inputs.flake-utils.follows = "flake-utils";
|
||||
menstruation-telegram.inputs.menstruation-backend.follows = "menstruation-backend";
|
||||
menstruation-telegram.inputs.nixpkgs.follows = "nixpkgs-old";
|
||||
nix-on-droid.inputs.home-manager.follows = "home-manager";
|
||||
nix-on-droid.inputs.nixpkgs.follows = "nixpkgs";
|
||||
nixinate.inputs.nixpkgs.follows = "nixpkgs";
|
||||
recht.inputs.flake-utils.follows = "flake-utils";
|
||||
recht.inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -38,12 +45,14 @@
|
||||
scripts.inputs.flake-utils.follows = "flake-utils";
|
||||
scripts.inputs.nixpkgs.follows = "nixpkgs";
|
||||
scripts.inputs.rust-overlay.follows = "rust-overlay";
|
||||
stylix.inputs.home-manager.follows = "home-manager";
|
||||
stylix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
tinc-graph.inputs.flake-utils.follows = "flake-utils";
|
||||
tinc-graph.inputs.nixpkgs.follows = "nixpkgs";
|
||||
tinc-graph.inputs.rust-overlay.follows = "rust-overlay";
|
||||
traadfri.inputs.flake-utils.follows = "flake-utils";
|
||||
traadfri.inputs.nixpkgs.follows = "nixpkgs-old";
|
||||
voidrice.flake = false;
|
||||
wallpaper-generator.inputs.flake-utils.follows = "flake-utils";
|
||||
wallpapers.flake = false;
|
||||
};
|
||||
|
||||
outputs = inputs @ {
|
||||
@@ -56,6 +65,8 @@
|
||||
agenix,
|
||||
retiolum,
|
||||
flake-utils,
|
||||
nix-on-droid,
|
||||
stylix,
|
||||
...
|
||||
}:
|
||||
{
|
||||
@@ -68,7 +79,7 @@
|
||||
mock-secrets = {
|
||||
type = "app";
|
||||
program = toString (pkgs.writers.writeDash "mock-secrets" ''
|
||||
${pkgs.findutils}/bin/find secrets -not -path '*/.*' -type f > secrets.txt
|
||||
${pkgs.findutils}/bin/find secrets -not -path '*/.*' -type f | ${pkgs.coreutils}/bin/sort > secrets.txt
|
||||
'');
|
||||
};
|
||||
deploy = {
|
||||
@@ -95,13 +106,28 @@
|
||||
power-action = import modules/power-action.nix;
|
||||
system-dependent = import modules/system-dependent.nix;
|
||||
telegram-bot = import modules/telegram-bot.nix;
|
||||
traadfri = import modules/traadfri.nix;
|
||||
};
|
||||
|
||||
lib = {
|
||||
panoptikon = import lib/panoptikon.nix;
|
||||
};
|
||||
|
||||
nixOnDroidConfigurations = {
|
||||
moto = nix-on-droid.lib.nixOnDroidConfiguration {
|
||||
modules = [systems/moto/configuration.nix];
|
||||
pkgs = import nixpkgs {
|
||||
system = "aarch64-linux";
|
||||
overlays = [nix-on-droid.overlays.default];
|
||||
};
|
||||
extraSpecialArgs = {
|
||||
niveumPackages = inputs.self.packages.aarch64-linux;
|
||||
niveumLib = inputs.self.lib;
|
||||
inherit inputs;
|
||||
};
|
||||
home-manager-path = home-manager.outPath;
|
||||
};
|
||||
};
|
||||
|
||||
nixosConfigurations = let
|
||||
niveumSpecialArgs = system: {
|
||||
unstablePackages = import nixpkgs-unstable {
|
||||
@@ -166,7 +192,7 @@
|
||||
_module.args.nixinate = {
|
||||
host = "makanek";
|
||||
sshUser = "root";
|
||||
buildOn = "remote";
|
||||
buildOn = "local";
|
||||
substituteOnTarget = true;
|
||||
hermetic = false;
|
||||
};
|
||||
@@ -204,7 +230,7 @@
|
||||
_module.args.nixinate = {
|
||||
host = "manakish";
|
||||
sshUser = "root";
|
||||
buildOn = "remote";
|
||||
buildOn = "local";
|
||||
substituteOnTarget = true;
|
||||
hermetic = false;
|
||||
};
|
||||
@@ -214,6 +240,7 @@
|
||||
retiolum.nixosModules.retiolum
|
||||
home-manager.nixosModules.home-manager
|
||||
nur.nixosModules.nur
|
||||
stylix.nixosModules.stylix
|
||||
];
|
||||
};
|
||||
kabsa = nixpkgs.lib.nixosSystem rec {
|
||||
@@ -234,6 +261,7 @@
|
||||
retiolum.nixosModules.retiolum
|
||||
home-manager.nixosModules.home-manager
|
||||
nur.nixosModules.nur
|
||||
stylix.nixosModules.stylix
|
||||
];
|
||||
};
|
||||
};
|
||||
@@ -249,6 +277,9 @@
|
||||
})
|
||||
];
|
||||
};
|
||||
unstablePackages = import nixpkgs-unstable {
|
||||
inherit system;
|
||||
};
|
||||
wrapScript = {
|
||||
packages ? [],
|
||||
name,
|
||||
@@ -302,7 +333,7 @@
|
||||
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-tv = pkgs.callPackage packages/mpv-tv.nix {};
|
||||
mpv-visualizer = pkgs.callPackage packages/mpv-visualizer.nix {};
|
||||
mpv-visualizer = unstablePackages.mpvScripts.visualizer;
|
||||
new-mac = pkgs.callPackage packages/new-mac.nix {};
|
||||
nix-git = pkgs.callPackage packages/nix-git.nix {};
|
||||
nix-index-update = pkgs.callPackage packages/nix-index-update.nix {inherit system;};
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
rec {
|
||||
black = {
|
||||
bright = "#151515";
|
||||
dark = "#000000";
|
||||
};
|
||||
red = {
|
||||
bright = "#de575c";
|
||||
dark = "#de575c";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#ebe971";
|
||||
dark = "#ebe971";
|
||||
};
|
||||
green = {
|
||||
bright = "#00b853";
|
||||
dark = "#00b853";
|
||||
};
|
||||
blue = {
|
||||
bright = "#90d0f0";
|
||||
dark = "#7fc6f0";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#cf9ffa";
|
||||
dark = "#cf9ffa";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#4ae5e8";
|
||||
dark = "#4ae5e8";
|
||||
};
|
||||
white = {
|
||||
bright = "#ffffff";
|
||||
dark = "#bbbbbb";
|
||||
};
|
||||
background = black.dark;
|
||||
foreground = white.dark;
|
||||
cursor = green.bright;
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
{
|
||||
black = {
|
||||
bright = "#444444";
|
||||
dark = "#1c1c1c";
|
||||
};
|
||||
red = {
|
||||
bright = "#ff8700";
|
||||
dark = "#af5f5f";
|
||||
};
|
||||
green = {
|
||||
bright = "#87af87";
|
||||
dark = "#5f875f";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#ffffaf";
|
||||
dark = "#87875f";
|
||||
};
|
||||
blue = {
|
||||
bright = "#8fafd7";
|
||||
dark = "#5f87af";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#8787af";
|
||||
dark = "#5f5f87";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#5fafaf";
|
||||
dark = "#5f8787";
|
||||
};
|
||||
white = {
|
||||
bright = "#999999";
|
||||
dark = "#6c6c6c";
|
||||
};
|
||||
background = "#262626";
|
||||
foreground = "#bcbcbc";
|
||||
cursor = "#bcbcbc";
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
{
|
||||
black = {
|
||||
dark = "#000000";
|
||||
bright = "#323232";
|
||||
};
|
||||
red = {
|
||||
dark = "#ff3333";
|
||||
bright = "#ff6565";
|
||||
};
|
||||
green = {
|
||||
dark = "#b8cc52";
|
||||
bright = "#e9fe83";
|
||||
};
|
||||
yellow = {
|
||||
dark = "#e6c446";
|
||||
bright = "#fff778";
|
||||
};
|
||||
blue = {
|
||||
dark = "#36a3d9";
|
||||
bright = "#68d4ff";
|
||||
};
|
||||
magenta = {
|
||||
dark = "#f07078";
|
||||
bright = "#ffa3aa";
|
||||
};
|
||||
cyan = {
|
||||
dark = "#95e5cb";
|
||||
bright = "#c7fffc";
|
||||
};
|
||||
white = {
|
||||
dark = "#ffffff";
|
||||
bright = "#ffffff";
|
||||
};
|
||||
background = "#0e1419";
|
||||
foreground = "#e5e1cf";
|
||||
cursor = "#f19618";
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
{
|
||||
black = {
|
||||
dark = "#000000";
|
||||
bright = "#323232";
|
||||
};
|
||||
red = {
|
||||
dark = "#ff3333";
|
||||
bright = "#ff6565";
|
||||
};
|
||||
green = {
|
||||
dark = "#86b200";
|
||||
bright = "#b8e532";
|
||||
};
|
||||
yellow = {
|
||||
dark = "#f19618";
|
||||
bright = "#ffc849";
|
||||
};
|
||||
blue = {
|
||||
dark = "#41a6d9";
|
||||
bright = "#73d7ff";
|
||||
};
|
||||
magenta = {
|
||||
dark = "#f07078";
|
||||
bright = "#ffa3aa";
|
||||
};
|
||||
cyan = {
|
||||
dark = "#4cbe99";
|
||||
bright = "#7ff0cb";
|
||||
};
|
||||
white = {
|
||||
dark = "#ffffff";
|
||||
bright = "#ffffff";
|
||||
};
|
||||
background = "#fafafa";
|
||||
foreground = "#5b6673";
|
||||
cursor = "#ff6900";
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
rec {
|
||||
black = {
|
||||
bright = "#454545";
|
||||
dark = "#222222";
|
||||
};
|
||||
red = {
|
||||
bright = "#FA8072";
|
||||
dark = "#B22222";
|
||||
};
|
||||
green = {
|
||||
bright = "#779A3E";
|
||||
dark = "#556B2F";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#DAA520";
|
||||
dark = "#B8860B";
|
||||
};
|
||||
blue = {
|
||||
bright = "#6495ED";
|
||||
dark = "#4682B4";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#DA70D6";
|
||||
dark = "#9932CC";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#B0E0E6";
|
||||
dark = "#87CEEB";
|
||||
};
|
||||
white = {
|
||||
bright = "#FFFFFF";
|
||||
dark = "#C0C0C0";
|
||||
};
|
||||
background = "#000000";
|
||||
foreground = "#AAAAAA";
|
||||
cursor = green.bright;
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
rec {
|
||||
black = {
|
||||
bright = "#888888";
|
||||
dark = "#222222";
|
||||
};
|
||||
red = {
|
||||
bright = "#ef8383";
|
||||
dark = "#f01818";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#efe28b";
|
||||
dark = "#f8d824";
|
||||
};
|
||||
green = {
|
||||
bright = "#23d830";
|
||||
dark = "#7ed684";
|
||||
};
|
||||
blue = {
|
||||
bright = "#b3bfef";
|
||||
dark = "#7890f0";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#efb3e3";
|
||||
dark = "#f078d8";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#9ce2e2";
|
||||
dark = "#54e4e4";
|
||||
};
|
||||
white = {
|
||||
bright = "#ffffff";
|
||||
dark = "#a5a5a5";
|
||||
};
|
||||
background = "#000000";
|
||||
foreground = "#bbbbbb";
|
||||
cursor = green.bright;
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
rec {
|
||||
black = {
|
||||
bright = "#818383";
|
||||
dark = "#000000";
|
||||
};
|
||||
red = {
|
||||
bright = "#fc391f";
|
||||
dark = "#c23621";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#eaec23";
|
||||
dark = "#adad27";
|
||||
};
|
||||
green = {
|
||||
bright = "#31e722";
|
||||
dark = "#25bc24";
|
||||
};
|
||||
blue = {
|
||||
bright = "#5833ff";
|
||||
dark = "#492ee1";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#f935f8";
|
||||
dark = "#d338d3";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#14f0f0";
|
||||
dark = "#33bbc8";
|
||||
};
|
||||
white = {
|
||||
bright = "#e9ebeb";
|
||||
dark = "#cbcccd";
|
||||
};
|
||||
background = black.dark;
|
||||
foreground = white.dark;
|
||||
cursor = green.bright;
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
{
|
||||
# all dark colours are 20% darker than the bright ones
|
||||
black = {
|
||||
bright = "#4c5363"; # "#282c34";
|
||||
dark = "#20232a";
|
||||
};
|
||||
red = {
|
||||
bright = "#e68990"; #"#e06c75";
|
||||
dark = "#d43541";
|
||||
};
|
||||
green = {
|
||||
bright = "#acce93"; #"#98c379";
|
||||
dark = "#77af4e";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#eacc95"; #"#e5c07b";
|
||||
dark = "#d9a440";
|
||||
};
|
||||
blue = {
|
||||
bright = "#80bff2"; #"#61afef";
|
||||
dark = "#2490e9";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#d193e3"; #"#c678dd";
|
||||
dark = "#af42cf";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#77c4ce"; #"#56b6c2";
|
||||
dark = "#3b99a5";
|
||||
};
|
||||
white = {
|
||||
bright = "#e3e5e9"; #"#dcdfe4";
|
||||
dark = "#a9b1bd";
|
||||
};
|
||||
background = "#282c34"; #black.dark;
|
||||
foreground = "#dcdfe4"; #white.bright;
|
||||
cursor = "#a3b3cc";
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
rec {
|
||||
black = {
|
||||
bright = "#4b4b4b";
|
||||
dark = "#242424";
|
||||
};
|
||||
red = {
|
||||
bright = "#fc1c18";
|
||||
dark = "#d71c15";
|
||||
};
|
||||
green = {
|
||||
bright = "#6bc219";
|
||||
dark = "#5aa513";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#fec80e";
|
||||
dark = "#fdb40c";
|
||||
};
|
||||
blue = {
|
||||
bright = "#0955ff";
|
||||
dark = "#063b8c";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#fb0050";
|
||||
dark = "#e40038";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#3ea8fc";
|
||||
dark = "#2595e1";
|
||||
};
|
||||
white = {
|
||||
bright = "#8c00ec";
|
||||
dark = "#bfbfbf";
|
||||
};
|
||||
background = "#efefef";
|
||||
foreground = "#181818";
|
||||
cursor = "#a3b3cc";
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
rec {
|
||||
black = {
|
||||
dark = "#1c1c1c";
|
||||
bright = "#585858";
|
||||
};
|
||||
red = {
|
||||
dark = "#af005f";
|
||||
bright = "#5faf5f";
|
||||
};
|
||||
green = {
|
||||
bright = "#afd700";
|
||||
dark = "#5faf00";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#af87d7";
|
||||
dark = "#d7af5f";
|
||||
};
|
||||
blue = {
|
||||
dark = "#5fafd7";
|
||||
bright = "#ffaf00";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#ff5faf";
|
||||
dark = "#808080";
|
||||
};
|
||||
cyan = {
|
||||
dark = "#d7875f";
|
||||
bright = "#00afaf";
|
||||
};
|
||||
white = {
|
||||
dark = "#d0d0d0";
|
||||
bright = "#5f8787";
|
||||
};
|
||||
background = black.dark;
|
||||
foreground = white.dark;
|
||||
cursor = blue.bright;
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
rec {
|
||||
black = {
|
||||
dark = "#eeeeee";
|
||||
bright = "#bcbcbc";
|
||||
};
|
||||
red = {
|
||||
dark = "#af0000";
|
||||
bright = "#d70000";
|
||||
};
|
||||
green = {
|
||||
dark = "#008700";
|
||||
bright = "#d70087";
|
||||
};
|
||||
yellow = {
|
||||
dark = "#5f8700";
|
||||
bright = "#8700af";
|
||||
};
|
||||
blue = {
|
||||
dark = "#0087af";
|
||||
bright = "#d75f00";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#878787";
|
||||
dark = "#d75f00";
|
||||
};
|
||||
cyan = {
|
||||
dark = "#005f87";
|
||||
bright = "#005faf";
|
||||
};
|
||||
white = {
|
||||
dark = "#444444";
|
||||
bright = "#005f87";
|
||||
};
|
||||
background = black.dark;
|
||||
foreground = white.dark;
|
||||
cursor = blue.bright;
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
rec {
|
||||
black = {
|
||||
dark = "#073642";
|
||||
bright = "#002b36";
|
||||
};
|
||||
red = {
|
||||
dark = "#dc322f";
|
||||
bright = "#cb4b16";
|
||||
};
|
||||
yellow = {
|
||||
dark = "#b58900";
|
||||
bright = "#657b83";
|
||||
};
|
||||
green = {
|
||||
dark = "#859900";
|
||||
bright = "#586e75";
|
||||
};
|
||||
blue = {
|
||||
dark = "#268bd2";
|
||||
bright = "#839496";
|
||||
};
|
||||
magenta = {
|
||||
dark = "#d33682";
|
||||
bright = "#6c71c4";
|
||||
};
|
||||
cyan = {
|
||||
dark = "#2aa198";
|
||||
bright = "#93a1a1";
|
||||
};
|
||||
white = {
|
||||
dark = "#eee8d5";
|
||||
bright = "#fdf6e3";
|
||||
};
|
||||
background = black.bright;
|
||||
foreground = blue.bright;
|
||||
cursor = cyan.bright;
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
rec {
|
||||
black = {
|
||||
dark = "#073642";
|
||||
bright = "#002b36";
|
||||
};
|
||||
red = {
|
||||
dark = "#dc322f";
|
||||
bright = "#cb4b16";
|
||||
};
|
||||
yellow = {
|
||||
dark = "#b58900";
|
||||
bright = "#657b83";
|
||||
};
|
||||
green = {
|
||||
dark = "#859900";
|
||||
bright = "#586e75";
|
||||
};
|
||||
blue = {
|
||||
dark = "#268bd2";
|
||||
bright = "#839496";
|
||||
};
|
||||
magenta = {
|
||||
dark = "#d33682";
|
||||
bright = "#6c71c4";
|
||||
};
|
||||
cyan = {
|
||||
dark = "#2aa198";
|
||||
bright = "#93a1a1";
|
||||
};
|
||||
white = {
|
||||
dark = "#eee8d5";
|
||||
bright = "#fdf6e3";
|
||||
};
|
||||
background = white.bright;
|
||||
foreground = yellow.bright;
|
||||
cursor = green.bright;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
rec {
|
||||
{
|
||||
tmpfilesConfig = {
|
||||
type,
|
||||
path,
|
||||
@@ -40,8 +40,6 @@ rec {
|
||||
|
||||
sshPort = 22022;
|
||||
|
||||
colours = import ./colours/owickstrom-dark.nix;
|
||||
|
||||
theme = pkgs: {
|
||||
gtk = {
|
||||
name = "Adwaita-dark";
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
{lib, ...}: {
|
||||
cock = rec {
|
||||
user = "2210@cock.li";
|
||||
address = user;
|
||||
imap = "mail.cock.li";
|
||||
smtp = imap;
|
||||
smtpSettings = smtp: "smtp://${smtp}:587";
|
||||
folders = {
|
||||
drafts = "Drafts";
|
||||
sent = "Sent";
|
||||
trash = "Trash";
|
||||
};
|
||||
{
|
||||
defaults = {
|
||||
aerc.enable = true;
|
||||
realName = "Kierán Meinhardt";
|
||||
folders.inbox = "INBOX";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,220 +0,0 @@
|
||||
{
|
||||
pkgs,
|
||||
wirelessInterface,
|
||||
colours,
|
||||
batteryName,
|
||||
accounts,
|
||||
}: let
|
||||
inherit (pkgs) lib;
|
||||
|
||||
setsid = script:
|
||||
pkgs.writers.writeDash "setsid-command" ''
|
||||
${pkgs.util-linux}/bin/setsid ${script}
|
||||
'';
|
||||
in {
|
||||
theme = {
|
||||
theme = "plain";
|
||||
overrides = {
|
||||
critical_fg = colours.red.bright;
|
||||
good_fg = colours.green.bright;
|
||||
idle_fg = colours.foreground;
|
||||
info_fg = colours.cyan.bright;
|
||||
warning_fg = colours.yellow.bright;
|
||||
warning_bg = colours.background;
|
||||
critical_bg = colours.background;
|
||||
good_bg = colours.background;
|
||||
idle_bg = colours.background;
|
||||
info_bg = colours.background;
|
||||
separator = "";
|
||||
separator_bg = "auto";
|
||||
separator_fg = colours.black.bright;
|
||||
};
|
||||
};
|
||||
icons.icons = "awesome6";
|
||||
icons.overrides.vpn = "";
|
||||
icons.overrides.irc = "";
|
||||
block = [
|
||||
{
|
||||
block = "weather";
|
||||
autolocate = true;
|
||||
format = "$icon $location: $temp";
|
||||
service = {
|
||||
name = "openweathermap";
|
||||
city_id = "2950159";
|
||||
units = "metric";
|
||||
};
|
||||
}
|
||||
{
|
||||
block = "custom";
|
||||
interval = 60 * 5;
|
||||
command = let
|
||||
spacetime = import ../configs/spacetime.nix;
|
||||
in
|
||||
pkgs.writers.writePython3 "sun.py" {
|
||||
libraries = [pkgs.python3Packages.astral];
|
||||
flakeIgnore = ["E121" "E501"];
|
||||
}
|
||||
''
|
||||
import astral
|
||||
import astral.moon
|
||||
import astral.sun
|
||||
|
||||
current_phase = astral.moon.phase()
|
||||
|
||||
city = astral.LocationInfo("Berlin", "Germany", "${spacetime.time.timeZone}", ${toString spacetime.location.latitude}, ${toString spacetime.location.longitude})
|
||||
sun = astral.sun.sun(city.observer, date=astral.today(), tzinfo=city.timezone)
|
||||
|
||||
print("↑{} ↓{} {}{}".format(sun["sunrise"].strftime("%R"), sun["sunset"].strftime("%R"), "☽" if current_phase < 14 else "☾", round(current_phase, 1)))
|
||||
'';
|
||||
}
|
||||
{
|
||||
block = "github";
|
||||
info = ["total"];
|
||||
warning = ["mention" "review_requested" "team_mention" "manual" "invitation" "assign" "subscribed"];
|
||||
}
|
||||
{
|
||||
block = "custom";
|
||||
interval = 10;
|
||||
command = pkgs.writers.writeDash "todo" ''
|
||||
${pkgs.todoman}/bin/todo --porcelain | ${pkgs.jq}/bin/jq -r '
|
||||
map(select(.due != null))
|
||||
| (map(select(.due < now)) | length) as $overdue
|
||||
| (map(select(.due >= now and .due < now + (60 * 60 * 24))) | length) as $dueToday
|
||||
| {
|
||||
icon: "tasks",
|
||||
text: (($overdue + $dueToday) as $sum | if $sum > 0 then $sum | tostring else "" end),
|
||||
state: (
|
||||
if $overdue > 0 then
|
||||
"Critical"
|
||||
elif $dueToday > 0 then
|
||||
"Warning"
|
||||
else
|
||||
"Idle"
|
||||
end
|
||||
)
|
||||
}
|
||||
'
|
||||
'';
|
||||
json = true;
|
||||
hide_when_empty = true;
|
||||
}
|
||||
{
|
||||
block = "custom";
|
||||
interval = 60 * 5;
|
||||
command = let
|
||||
query-account = name: account: "${pkgs.writers.writeDash "query-imap-${name}" ''
|
||||
password=$(${toString account.passwordCommand})
|
||||
${pkgs.coreutils}/bin/timeout 1 ${pkgs.curl}/bin/curl -sSL -u ${lib.escapeShellArg account.userName}:"$password" imaps://${account.imap.host} -X 'STATUS INBOX (UNSEEN)' \
|
||||
| ${pkgs.gnugrep}/bin/grep -Eo '[0-9]+' \
|
||||
| sed 's/^/{"${name}":/;s/$/}/'
|
||||
''} &";
|
||||
in
|
||||
pkgs.writers.writeDash "unread-mail" ''
|
||||
{
|
||||
${lib.concatStringsSep "\n" (lib.mapAttrsToList query-account accounts)}
|
||||
wait
|
||||
} | jq -s 'if length == 0 then {text: "", icon: "mail", state: "Idle"} else
|
||||
add
|
||||
| (values | add) as $sum
|
||||
| {
|
||||
text: (if $sum > 0 then $sum | tostring else "" end),
|
||||
icon: "mail",
|
||||
state: (
|
||||
if .["hu-student"] > 0 or .["hu-employee"] > 0 or .posteo > 0 then
|
||||
"Warning"
|
||||
elif $sum > 0 then
|
||||
"Info"
|
||||
else
|
||||
"Idle"
|
||||
end
|
||||
)
|
||||
} end'
|
||||
'';
|
||||
json = true;
|
||||
hide_when_empty = true;
|
||||
}
|
||||
{
|
||||
block = "custom";
|
||||
interval = 60;
|
||||
command = pkgs.writers.writeDash "weechat" ''
|
||||
ssh -o ConnectTimeout=1 makanek cat /var/lib/weechat/hotlist.txt | sed 's/,/\n/g' | wc -l | jq '{
|
||||
text: (if . > 0 then . | tostring else "" end),
|
||||
state: (if . > 0 then "Info" else "Idle" end),
|
||||
icon: "irc"
|
||||
}'
|
||||
'';
|
||||
json = true;
|
||||
hide_when_empty = true;
|
||||
}
|
||||
{
|
||||
block = "service_status";
|
||||
service = "hu-vpn";
|
||||
active_format = "^icon_vpn";
|
||||
inactive_format = "";
|
||||
}
|
||||
{
|
||||
block = "custom";
|
||||
interval = 5;
|
||||
command = pkgs.writers.writeDash "hu-berlin-vpn" ''
|
||||
PATH=${lib.makeBinPath [pkgs.systemd]}
|
||||
(systemctl is-active --quiet openvpn-hu-berlin.service && echo '{"state": "Good", "text": "OpenVPN", "icon": "vpn"}') \
|
||||
|| (systemctl is-active --quiet hu-vpn.service && echo '{"state": "Good", "text": "PPP+SSL", "icon": "vpn"}') \
|
||||
|| echo '{"state": "Idle", "icon": "vpn", "text": ""}'
|
||||
'';
|
||||
json = true;
|
||||
hide_when_empty = true;
|
||||
}
|
||||
{
|
||||
block = "net";
|
||||
device = wirelessInterface;
|
||||
format = "$icon $ssid $signal_strength";
|
||||
}
|
||||
{
|
||||
block = "battery";
|
||||
device = batteryName;
|
||||
}
|
||||
{
|
||||
block = "sound";
|
||||
}
|
||||
{
|
||||
block = "disk_space";
|
||||
format = "$icon $available";
|
||||
}
|
||||
{
|
||||
block = "memory";
|
||||
format = "$icon $mem_used.eng(prefix:G)";
|
||||
}
|
||||
{block = "load";}
|
||||
{
|
||||
block = "custom";
|
||||
interval = 10;
|
||||
json = true;
|
||||
command = pkgs.writers.writeDash "time" ''
|
||||
${pkgs.jq}/bin/jq -n \
|
||||
--arg now "$(${pkgs.coreutils}/bin/date +'%Y-%m-%d (%W %a) %H:%M')" \
|
||||
--argjson nextEvent "$(
|
||||
${pkgs.khal}/bin/khal list --format "{start}" --day-format "" $(${pkgs.coreutils}/bin/date +'%Y-%m-%d %H:%M') 2>/dev/null \
|
||||
| ${pkgs.gnugrep}/bin/grep -E '[0-9]{2}:[0-9]{2}' \
|
||||
| ${pkgs.coreutils}/bin/head -1 \
|
||||
| ${pkgs.coreutils}/bin/date --date="$(cat)" +%s
|
||||
)" \
|
||||
'{
|
||||
text: $now,
|
||||
icon: "time",
|
||||
state: (
|
||||
($nextEvent - now) as $deltaT
|
||||
| if $deltaT < (5 * 60) then
|
||||
"Critical"
|
||||
elif $deltaT < (15 * 60) then
|
||||
"Warning"
|
||||
elif $deltaT < (60 * 60) then
|
||||
"Info"
|
||||
else
|
||||
"Idle"
|
||||
end
|
||||
)
|
||||
}'
|
||||
'';
|
||||
}
|
||||
];
|
||||
}
|
||||
@@ -5,7 +5,6 @@
|
||||
android = "192.168.178.35";
|
||||
manakish = "192.168.178.29";
|
||||
|
||||
tradfri = "192.168.178.28";
|
||||
officejet = "192.168.178.27";
|
||||
fritzbox = "192.168.178.1";
|
||||
}
|
||||
|
||||
@@ -1,41 +1,51 @@
|
||||
local cmp = require'cmp'
|
||||
local cmp = require("cmp")
|
||||
local luasnip = require("luasnip")
|
||||
|
||||
if vim.g.snippet_directory then
|
||||
require("luasnip.loaders.from_vscode").lazy_load({
|
||||
paths = { vim.g.snippet_directory }
|
||||
})
|
||||
end
|
||||
|
||||
luasnip.config.set_config({
|
||||
history = true,
|
||||
updateevents = "TextChanged,TextChangedI",
|
||||
enable_autosnippets = true
|
||||
})
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require("luasnip").lsp_expand(args.body)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
['<C-e>'] = cmp.mapping.abort(),
|
||||
['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
||||
}),
|
||||
mapping = {
|
||||
-- https://github.com/hrsh7th/nvim-cmp/wiki/Example-mappings#super-tab-like-mapping
|
||||
['<Tab>'] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, {"i", "s"}),
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
},
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'luasnip' },
|
||||
}, {
|
||||
--{ name = 'buffer' },
|
||||
})
|
||||
})
|
||||
|
||||
-- -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
|
||||
-- cmp.setup.cmdline({ '/', '?' }, {
|
||||
-- mapping = cmp.mapping.preset.cmdline(),
|
||||
-- sources = {
|
||||
-- { name = 'buffer' }
|
||||
-- }
|
||||
-- })
|
||||
|
||||
-- -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||
-- cmp.setup.cmdline(':', {
|
||||
-- mapping = cmp.mapping.preset.cmdline(),
|
||||
-- sources = cmp.config.sources({
|
||||
-- { name = 'path' }
|
||||
-- })
|
||||
-- })
|
||||
local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities())
|
||||
|
||||
local opts = { noremap=true, silent=true }
|
||||
|
||||
@@ -38,19 +38,6 @@ set foldlevelstart=30
|
||||
|
||||
nnoremap <C-H> <CMD>set nohlsearch<CR>
|
||||
|
||||
fun! TrimWhitespace()
|
||||
let l:save = winsaveview()
|
||||
" remove trailing whitespace in lines
|
||||
keeppatterns %s/\s\+$//e
|
||||
" remove empty lines at file end
|
||||
silent! %s#\($\n\s*\)\+\%$##
|
||||
call winrestview(l:save)
|
||||
endfun
|
||||
command! TrimWhitespace call TrimWhitespace()
|
||||
autocmd BufWritePre * if !&binary && &ft !=# 'mail'
|
||||
\| call TrimWhitespace()
|
||||
\| endif
|
||||
|
||||
let g:netrw_banner=0
|
||||
let g:netrw_browse_split=4
|
||||
let g:netrw_altv=1 " open splits to the right
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.niveum.traadfri;
|
||||
in {
|
||||
options.niveum.traadfri = {
|
||||
enable = mkEnableOption "Trådfri CLI";
|
||||
user = mkOption {type = types.str;};
|
||||
host = mkOption {type = types.str;};
|
||||
keyFile = mkOption {type = types.path;};
|
||||
rooms = mkOption {
|
||||
type = types.attrsOf types.int;
|
||||
default = {};
|
||||
};
|
||||
bulbs = mkOption {
|
||||
type = types.attrsOf types.int;
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages =
|
||||
[
|
||||
(pkgs.writers.writeDashBin "traadfri" ''
|
||||
export TRAADFRI_USER="${cfg.user}"
|
||||
export TRAADFRI_KEY="$(cat ${lib.escapeShellArg cfg.keyFile})"
|
||||
export TRAADFRI_HUB="${cfg.host}"
|
||||
${inputs.traadfri.defaultPackage.x86_64-linux}/bin/traadfri $@
|
||||
'')
|
||||
]
|
||||
++ lib.mapAttrsToList (name: value:
|
||||
pkgs.writers.writeDashBin "traadfri-${name}" ''
|
||||
exec traadfri --target Room ${toString value} "$@"
|
||||
'')
|
||||
cfg.rooms
|
||||
++ lib.mapAttrsToList (name: value:
|
||||
pkgs.writers.writeDashBin "traadfri-${name}" ''
|
||||
exec traadfri --target Bulb ${toString value} "$@"
|
||||
'')
|
||||
cfg.bulbs;
|
||||
};
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
curl,
|
||||
xclip,
|
||||
}:
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "visualizer";
|
||||
version = "unstable-2021-07-10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mfcc64";
|
||||
repo = "mpv-scripts";
|
||||
rev = "a0cd87eeb974a4602c5d8086b4051b5ab72f42e1";
|
||||
sha256 = "1xgd1nd117lpj3ppynhgaa5sbkfm7l8n6c9a2fy8p07is2dkndrq";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/share/mpv/scripts
|
||||
cp visualizer.lua $out/share/mpv/scripts
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.scriptName = "visualizer.lua";
|
||||
|
||||
meta = with lib; {
|
||||
description = "various audio visualization";
|
||||
homepage = "https://github.com/mfcc64/mpv-scripts";
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [kmein];
|
||||
};
|
||||
}
|
||||
@@ -10,6 +10,7 @@
|
||||
customRC = ''
|
||||
source ${../lib/vim/shared.vim}
|
||||
source ${../lib/vim/init.vim}
|
||||
let g:snippet_directory = '${vimPlugins.friendly-snippets}'
|
||||
luafile ${../lib/vim/init.lua}
|
||||
'';
|
||||
packages.nvim = with vimPlugins; {
|
||||
@@ -21,6 +22,8 @@
|
||||
cmp-cmdline
|
||||
luasnip
|
||||
|
||||
editorconfig-vim
|
||||
|
||||
fzf-vim
|
||||
fzfWrapper
|
||||
supertab
|
||||
|
||||
2
secrets
2
secrets
Submodule secrets updated: 23285bc123...9efd6ac7e1
120
secrets.txt
120
secrets.txt
@@ -1,62 +1,66 @@
|
||||
secrets/di-fm-key.age
|
||||
secrets/email-password-meinhark.age
|
||||
secrets/kabsa-retiolum-privateKey-ed25519.age
|
||||
secrets/makanek-specus-privateKey.age
|
||||
secrets/manakish-retiolum-privateKey-rsa.age
|
||||
secrets/kfm-password.age
|
||||
secrets/email-password-fysi.age
|
||||
secrets/github-token-i3status-rust.age
|
||||
secrets/nextcloud-password-admin.age
|
||||
secrets/zaatar-retiolum-privateKey-ed25519.age
|
||||
secrets/manakish-syncthing-cert.age
|
||||
secrets/telegram-token-betacode.age
|
||||
secrets/tabula-retiolum-privateKey-rsa.age
|
||||
secrets/zaatar-ympd-basicAuth.age
|
||||
secrets/zaatar-moodle-dl-basicAuth.age
|
||||
secrets/mega-password.age
|
||||
secrets/telegram-token-reverse.age
|
||||
secrets/email-password-meinhaki.age
|
||||
secrets/spotify-password.age
|
||||
secrets/telegram-token-kmein.age
|
||||
secrets/maxmind-license-key.age
|
||||
secrets/makanek-retiolum-privateKey-rsa.age
|
||||
secrets/spotify-username.age
|
||||
secrets/onlyoffice-jwt-key.age
|
||||
secrets/miniflux-credentials.age
|
||||
secrets/email-password-fsklassp.age
|
||||
secrets/kabsa-retiolum-privateKey-rsa.age
|
||||
secrets/traadfri-key.age
|
||||
secrets/tahina-retiolum-privateKey-rsa.age
|
||||
secrets/makanek-retiolum-privateKey-ed25519.age
|
||||
secrets/zaatar-retiolum-privateKey-rsa.age
|
||||
secrets/kabsa-specus-privateKey.age
|
||||
secrets/nextcloud-password-kieran.age
|
||||
secrets/ful-root.age
|
||||
secrets/manakish-syncthing-key.age
|
||||
secrets/email-password-dslalewa.age
|
||||
secrets/zaatar-moodle-dl-tokens.json.age
|
||||
secrets/tabula-retiolum-privateKey-ed25519.age
|
||||
secrets/tahina-retiolum-privateKey-ed25519.age
|
||||
secrets/cifs-credentials-hu-berlin.age
|
||||
secrets/kabsa-syncthing-key.age
|
||||
secrets/ful-retiolum-privateKey-rsa.age
|
||||
secrets/ful-retiolum-privateKey-ed25519.age
|
||||
secrets/zaatar-syncthing-key.age
|
||||
secrets/openweathermap-api-key.age
|
||||
secrets/secrets.nix
|
||||
secrets/email-password-cock.age
|
||||
secrets/telegram-token-nachtischsatan.age
|
||||
secrets/kabsa-syncthing-cert.age
|
||||
secrets/grafana-password-admin.age
|
||||
secrets/email-password-posteo.age
|
||||
secrets/manakish-retiolum-privateKey-ed25519.age
|
||||
secrets/restic.age
|
||||
secrets/home-assistant-token.age
|
||||
secrets/zaatar-syncthing-cert.age
|
||||
secrets/nextcloud-password-database.age
|
||||
secrets/telegram-token-menstruation.age
|
||||
secrets/alertmanager-token-reporters.age
|
||||
secrets/blackboard-calendar-ics.age
|
||||
secrets/cifs-credentials-hu-berlin.age
|
||||
secrets/di-fm-key.age
|
||||
secrets/email-password-cock.age
|
||||
secrets/email-password-dslalewa.age
|
||||
secrets/email-password-fsklassp.age
|
||||
secrets/email-password-fysi.age
|
||||
secrets/email-password-meinhak99.age
|
||||
secrets/email-password-meinhaki.age
|
||||
secrets/email-password-meinhark.age
|
||||
secrets/email-password-posteo.age
|
||||
secrets/ful-retiolum-privateKey-ed25519.age
|
||||
secrets/ful-retiolum-privateKey-rsa.age
|
||||
secrets/ful-root.age
|
||||
secrets/ful-specus-privateKey.age
|
||||
secrets/github-token-i3status-rust.age
|
||||
secrets/grafana-password-admin.age
|
||||
secrets/hetzner-storagebox-credentials.age
|
||||
secrets/home-assistant-token.age
|
||||
secrets/kabsa-retiolum-privateKey-ed25519.age
|
||||
secrets/kabsa-retiolum-privateKey-rsa.age
|
||||
secrets/kabsa-specus-privateKey.age
|
||||
secrets/kabsa-syncthing-cert.age
|
||||
secrets/kabsa-syncthing-key.age
|
||||
secrets/kfm-password.age
|
||||
secrets/ledger-basicAuth.age
|
||||
secrets/makanek-retiolum-privateKey-ed25519.age
|
||||
secrets/makanek-retiolum-privateKey-rsa.age
|
||||
secrets/makanek-specus-privateKey.age
|
||||
secrets/manakish-retiolum-privateKey-ed25519.age
|
||||
secrets/manakish-retiolum-privateKey-rsa.age
|
||||
secrets/manakish-syncthing-cert.age
|
||||
secrets/manakish-syncthing-key.age
|
||||
secrets/maxmind-license-key.age
|
||||
secrets/mega-password.age
|
||||
secrets/miniflux-credentials.age
|
||||
secrets/nextcloud-password-admin.age
|
||||
secrets/nextcloud-password-database.age
|
||||
secrets/nextcloud-password-fysi.age
|
||||
secrets/weechat-sec.conf.age
|
||||
secrets/nextcloud-password-kieran.age
|
||||
secrets/onlyoffice-jwt-key.age
|
||||
secrets/openweathermap-api-key.age
|
||||
secrets/restic.age
|
||||
secrets/secrets.nix
|
||||
secrets/spotify-password.age
|
||||
secrets/spotify-username.age
|
||||
secrets/stw-berlin-card-code.age
|
||||
secrets/tabula-retiolum-privateKey-ed25519.age
|
||||
secrets/tabula-retiolum-privateKey-rsa.age
|
||||
secrets/tahina-retiolum-privateKey-ed25519.age
|
||||
secrets/tahina-retiolum-privateKey-rsa.age
|
||||
secrets/telegram-token-betacode.age
|
||||
secrets/telegram-token-kmein.age
|
||||
secrets/telegram-token-menstruation.age
|
||||
secrets/telegram-token-nachtischsatan.age
|
||||
secrets/telegram-token-proverb.age
|
||||
secrets/telegram-token-reverse.age
|
||||
secrets/weechat-sec.conf.age
|
||||
secrets/zaatar-moodle-dl-basicAuth.age
|
||||
secrets/zaatar-moodle-dl-tokens.json.age
|
||||
secrets/zaatar-retiolum-privateKey-ed25519.age
|
||||
secrets/zaatar-retiolum-privateKey-rsa.age
|
||||
secrets/zaatar-syncthing-cert.age
|
||||
secrets/zaatar-syncthing-key.age
|
||||
secrets/zaatar-ympd-basicAuth.age
|
||||
|
||||
@@ -11,6 +11,7 @@ in {
|
||||
./matomo.nix
|
||||
./radio.nix
|
||||
./panoptikon.nix
|
||||
./ledger.nix
|
||||
../../configs/monitoring.nix
|
||||
../../configs/tor.nix
|
||||
../../configs/save-space.nix
|
||||
|
||||
54
systems/ful/ledger.nix
Normal file
54
systems/ful/ledger.nix
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
services.hledger-web = {
|
||||
enable = true;
|
||||
capabilities = {
|
||||
add = true;
|
||||
view = true;
|
||||
manage = false;
|
||||
};
|
||||
serveApi = false; # serve only the JSON API
|
||||
baseUrl = "https://ledger.kmein.de";
|
||||
journalFiles = [
|
||||
"privat.journal"
|
||||
];
|
||||
};
|
||||
|
||||
systemd.services.hledger-backup = {
|
||||
enable = true;
|
||||
startAt = "hourly";
|
||||
wants = ["network-online.target"];
|
||||
wantedBy = ["multi-user.target"];
|
||||
script = ''
|
||||
${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 commit -am $(date -Ih)
|
||||
${pkgs.git}/bin/git pull --rebase
|
||||
${pkgs.git}/bin/git push
|
||||
'';
|
||||
serviceConfig = {
|
||||
User = "hledger";
|
||||
Group = "hledger";
|
||||
WorkingDirectory = config.services.hledger-web.stateDir;
|
||||
};
|
||||
};
|
||||
|
||||
age.secrets = {
|
||||
ledger-basicAuth = {
|
||||
file = ../../secrets/ledger-basicAuth.age;
|
||||
owner = "nginx";
|
||||
group = "nginx";
|
||||
mode = "400";
|
||||
};
|
||||
};
|
||||
|
||||
services.nginx.virtualHosts."ledger.kmein.de" = {
|
||||
enableACME = true;
|
||||
basicAuthFile = config.age.secrets.ledger-basicAuth.path;
|
||||
forceSSL = true;
|
||||
locations."/".proxyPass = "http://127.0.0.1:${toString config.services.hledger-web.port}";
|
||||
};
|
||||
}
|
||||
@@ -94,22 +94,6 @@ in {
|
||||
script = panoptikon.urlSelector "[itemprop=articleBody]" "https://www.indogermanistik.org/tagungen/tagungen-der-ig.html";
|
||||
reporters = [irc-kmein];
|
||||
};
|
||||
fxght-or-flxght = {
|
||||
script = panoptikon.urlJSON {
|
||||
jqScript = ''
|
||||
.answers | map(
|
||||
select(.type == "answer")
|
||||
| {
|
||||
question: .tell,
|
||||
answer: .answer,
|
||||
date: .createdAt,
|
||||
media: .media | map(.url)
|
||||
}
|
||||
)
|
||||
'';
|
||||
} "https://api.tellonym.me/profiles/name/fxght.or.flxght?limit=20";
|
||||
reporters = [irc-kmein];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ in {
|
||||
config.services.grafana.dataDir
|
||||
config.services.gitea.stateDir
|
||||
config.services.weechat.root
|
||||
config.services.nginx.virtualHosts."www.kmein.de".root
|
||||
"/var/lib/weechat"
|
||||
"/var/lib/codimd"
|
||||
];
|
||||
@@ -114,6 +115,12 @@ in {
|
||||
defaults.email = kieran.email;
|
||||
};
|
||||
|
||||
services.nginx.virtualHosts."www.kmein.de" = {
|
||||
addSSL = true;
|
||||
enableACME = true;
|
||||
root = "/var/www/kmein.de";
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.vim
|
||||
pkgs.git
|
||||
|
||||
@@ -16,17 +16,6 @@ in {
|
||||
http_port = 9444;
|
||||
http_addr = "127.0.0.1";
|
||||
};
|
||||
smtp = let
|
||||
inherit (import ../../../lib/email.nix {inherit lib;}) cock;
|
||||
address = builtins.split "@" cock.user;
|
||||
in {
|
||||
enabled = true;
|
||||
from_address = cock.address;
|
||||
password = "$__file{${config.age.secrets.email-password-cock.path}}";
|
||||
user = cock.user;
|
||||
host = cock.smtpSettings cock.smtp;
|
||||
startTLS_policy = "MandatoryStartTLS";
|
||||
};
|
||||
dashboards.default_home_dashboard_path = toString ./grafana-dashboards/niveum.json;
|
||||
security = {
|
||||
admin_user = "admin";
|
||||
@@ -258,6 +247,12 @@ in {
|
||||
group = "prometheus";
|
||||
mode = "440";
|
||||
};
|
||||
home-assistant-token = {
|
||||
file = ../../../secrets/home-assistant-token.age;
|
||||
owner = "prometheus";
|
||||
group = "prometheus";
|
||||
mode = "440";
|
||||
};
|
||||
};
|
||||
|
||||
services.prometheus.alertmanagers = [
|
||||
@@ -306,7 +301,7 @@ in {
|
||||
"code.kmein.de"
|
||||
"radio.kmein.de"
|
||||
"tarot.kmein.de"
|
||||
"cloud.xn--kiern-0qa.de"
|
||||
"cloud.kmein.de"
|
||||
"grafana.kmein.r"
|
||||
# "names.kmein.r"
|
||||
"rrm.r"
|
||||
@@ -326,6 +321,14 @@ in {
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
job_name = "home_assistant";
|
||||
scrape_interval = "60s";
|
||||
metrics_path = "/api/prometheus";
|
||||
scheme = "http";
|
||||
static_configs = [{targets = ["zaatar.r:8123"];}];
|
||||
bearer_token_file = config.age.secrets.home-assistant-token.path;
|
||||
}
|
||||
{
|
||||
job_name = "ful";
|
||||
static_configs = [
|
||||
|
||||
@@ -4,9 +4,34 @@
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (import ../../lib) localAddresses;
|
||||
storageBoxMountPoint = "/mnt/storagebox";
|
||||
in {
|
||||
# https://docs.hetzner.com/de/robot/storage-box/access/access-samba-cifs/
|
||||
fileSystems.${storageBoxMountPoint} = {
|
||||
device = "//u359050.your-storagebox.de/backup";
|
||||
fsType = "cifs";
|
||||
options = [
|
||||
"iocharset=utf8"
|
||||
"rw"
|
||||
"credentials=${config.age.secrets.hetzner-storagebox-credentials.path}"
|
||||
"uid=nextcloud"
|
||||
"gid=nextcloud"
|
||||
"file_mode=0660"
|
||||
"dir_mode=0770"
|
||||
"seal"
|
||||
"mfsymlinks" # nextcloud-setup wants to create symlinks on cifs
|
||||
];
|
||||
};
|
||||
|
||||
systemd.services.nextcloud-setup = {
|
||||
wants = ["mnt-storagebox.mount" "postgresql.service"];
|
||||
after = ["mnt-storagebox.mount" "postgresql.service"];
|
||||
};
|
||||
|
||||
age.secrets = {
|
||||
hetzner-storagebox-credentials = {
|
||||
file = ../../secrets/hetzner-storagebox-credentials.age;
|
||||
};
|
||||
nextcloud-password-database = {
|
||||
file = ../../secrets/nextcloud-password-database.age;
|
||||
owner = "nextcloud";
|
||||
@@ -33,7 +58,9 @@ in {
|
||||
startAt = "05:00:00";
|
||||
};
|
||||
|
||||
hostName = "cloud.xn--kiern-0qa.de";
|
||||
hostName = "cloud.kmein.de";
|
||||
|
||||
datadir = "${storageBoxMountPoint}/nextcloud";
|
||||
|
||||
phpOptions."opcache.interned_strings_buffer" = "32"; # buffer size in MB
|
||||
|
||||
@@ -53,22 +80,8 @@ in {
|
||||
|
||||
logLevel = 2;
|
||||
|
||||
extraOptions = let
|
||||
inherit (import ../../lib/email.nix {inherit lib;}) cock;
|
||||
address = builtins.split "@" cock.user;
|
||||
in {
|
||||
extraOptions = {
|
||||
defaultapp = "files";
|
||||
mail_smtpmode = "smtp";
|
||||
mail_sendmailmode = "smtp";
|
||||
mail_smtphost = cock.smtp;
|
||||
mail_smtpport = "587";
|
||||
mail_from_address = builtins.elemAt address 0;
|
||||
mail_domain = builtins.elemAt address 2;
|
||||
mail_smtpsecure = "tls";
|
||||
mail_smtpauthtype = "LOGIN";
|
||||
mail_smtpauth = 1;
|
||||
mail_smtpname = cock.user;
|
||||
# mail_smtppassword = cock.password; # TODO how to do this?
|
||||
};
|
||||
};
|
||||
|
||||
@@ -96,14 +109,8 @@ in {
|
||||
];
|
||||
};
|
||||
|
||||
services.nginx.virtualHosts."cloud.xn--kiern-0qa.de" = {
|
||||
services.nginx.virtualHosts."cloud.kmein.de" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
};
|
||||
|
||||
# Ensure that postgres is running before running the setup
|
||||
systemd.services."nextcloud-setup" = {
|
||||
requires = ["postgresql.service"];
|
||||
after = ["postgresql.service"];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
extraModulePackages = [];
|
||||
loader.grub = {
|
||||
enable = true;
|
||||
version = 2;
|
||||
efiSupport = true;
|
||||
efiInstallAsRemovable = true;
|
||||
device = "/dev/sda";
|
||||
|
||||
71
systems/moto/configuration.nix
Normal file
71
systems/moto/configuration.nix
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
pkgs,
|
||||
niveumPackages,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
sshPort = 8022;
|
||||
in {
|
||||
environment.packages = with pkgs; [
|
||||
nil
|
||||
bzip2
|
||||
coreutils
|
||||
curl
|
||||
diffutils
|
||||
findutils
|
||||
git
|
||||
gnugrep
|
||||
gnupg
|
||||
gnused
|
||||
gnutar
|
||||
gzip
|
||||
hostname
|
||||
iproute2
|
||||
man
|
||||
openssh
|
||||
procps
|
||||
tzdata
|
||||
unzip
|
||||
utillinux
|
||||
vim
|
||||
which
|
||||
xz
|
||||
zip
|
||||
hledger
|
||||
hledger-ui
|
||||
niveumPackages.vim
|
||||
gitAndTools.gh
|
||||
ripgrep
|
||||
(pkgs.writers.writeDashBin "start-ssh" ''
|
||||
${pkgs.openssh}/bin/sshd -f ${pkgs.writeText "sshd_config" ''
|
||||
HostKey /data/data/com.termux.nix/files/home/.ssh/ssh_host_rsa_key
|
||||
Port ${toString sshPort}
|
||||
''}
|
||||
'')
|
||||
];
|
||||
|
||||
nix.nixPath = ["nixpkgs=${inputs.nixpkgs}"];
|
||||
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
backupFileExtension = "hm-bak";
|
||||
config = {pkgs, ...}: {
|
||||
home.stateVersion = "23.05";
|
||||
programs.tmux.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
environment.sessionVariables = {
|
||||
LEDGER_FILE = "/data/data/com.termux.nix/files/home/src/ledger/privat.journal";
|
||||
};
|
||||
|
||||
user.shell = "${pkgs.fish}/bin/fish";
|
||||
|
||||
environment.etcBackupExtension = ".bak";
|
||||
|
||||
system.stateVersion = "23.05";
|
||||
|
||||
nix.extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
'';
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
{config, ...}: let
|
||||
port = 8123;
|
||||
inherit (import ../../lib) restic;
|
||||
influxPort = 9100;
|
||||
volumeName = "home-assistant.bak";
|
||||
in {
|
||||
networking.firewall.allowedTCPPorts = [port];
|
||||
networking.firewall.allowedTCPPorts = [port influxPort];
|
||||
|
||||
services.nginx.virtualHosts."home.kmein.r" = {
|
||||
locations."/" = {
|
||||
@@ -10,6 +12,13 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
services.influxdb = {
|
||||
enable = true;
|
||||
extraConfig = {
|
||||
http.bind-address = ":${toString influxPort}";
|
||||
};
|
||||
};
|
||||
|
||||
services.restic.backups.niveum = {
|
||||
initialize = true;
|
||||
inherit (restic) repository;
|
||||
@@ -19,19 +28,19 @@ in {
|
||||
};
|
||||
passwordFile = config.age.secrets.restic.path;
|
||||
paths = [
|
||||
"/var/lib/containers/storage/volumes/home-assistant.bak/_data/backups"
|
||||
"/var/lib/containers/storage/volumes/${volumeName}"
|
||||
];
|
||||
};
|
||||
|
||||
virtualisation.oci-containers = {
|
||||
backend = "podman";
|
||||
containers.homeassistant = {
|
||||
volumes = ["home-assistant:/config"];
|
||||
volumes = ["${volumeName}:/config"];
|
||||
environment.TZ = "Europe/Berlin";
|
||||
image = "ghcr.io/home-assistant/home-assistant:stable";
|
||||
extraOptions = [
|
||||
"--network=host"
|
||||
# "--device=/dev/ttyUSB0:/dev/ttyACM0" # Example, change this to match your own hardware
|
||||
"--device=/dev/ttyACM0:/dev/ttyACM0" # Example, change this to match your own hardware
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
mukkeMountPoint = "/mnt/mukke";
|
||||
|
||||
streams = import ../../lib/streams.nix {
|
||||
di-fm-key = ""; # TODO lib.strings.fileContents <secrets/di.fm/key>;
|
||||
di-fm-key = "%DI_FM_KEY%"; # TODO lib.strings.fileContents <secrets/di.fm/key>;
|
||||
};
|
||||
multi-room-audio-port = 8000;
|
||||
in {
|
||||
@@ -61,6 +61,17 @@ in {
|
||||
];
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
(tmpfilesConfig {
|
||||
type = "L+";
|
||||
mode = "0644";
|
||||
user = "mpd";
|
||||
group = "mpd";
|
||||
path = "${config.services.mpd.musicDirectory}/mukke";
|
||||
argument = mukkeMountPoint;
|
||||
})
|
||||
];
|
||||
|
||||
environment.systemPackages = [pkgs.mpc_cli];
|
||||
|
||||
networking.firewall = let
|
||||
@@ -82,41 +93,44 @@ in {
|
||||
extraStopCommands = firewall.removeRules rules;
|
||||
};
|
||||
|
||||
# to reset:
|
||||
# ssh zaatar 'rm /var/lib/mpd/playlists/*.m3u && systemd-tmpfiles --create'
|
||||
systemd.tmpfiles.rules = let
|
||||
tags = lib.lists.unique (lib.concatMap ({tags ? [], ...}: tags) streams);
|
||||
tagStreams = tag: lib.filter ({tags ? [], ...}: lib.elem tag tags) streams;
|
||||
makePlaylist = name: streams: pkgs.writeText "${name}.m3u" (lib.concatMapStringsSep "\n" (lib.getAttr "stream") streams);
|
||||
in
|
||||
map (tag:
|
||||
tmpfilesConfig {
|
||||
type = "L+";
|
||||
path = "/var/lib/mpd/playlists/${tag}.m3u";
|
||||
mode = "0644";
|
||||
user = "mpd";
|
||||
group = "mpd";
|
||||
argument = makePlaylist tag (tagStreams tag);
|
||||
})
|
||||
tags
|
||||
++ [
|
||||
(tmpfilesConfig {
|
||||
type = "L+";
|
||||
mode = "0644";
|
||||
user = "mpd";
|
||||
group = "mpd";
|
||||
path = "/var/lib/mpd/playlists/all.m3u";
|
||||
argument = makePlaylist "all" streams;
|
||||
})
|
||||
(tmpfilesConfig {
|
||||
type = "L+";
|
||||
mode = "0644";
|
||||
user = "mpd";
|
||||
group = "mpd";
|
||||
path = "${config.services.mpd.musicDirectory}/mukke";
|
||||
argument = mukkeMountPoint;
|
||||
})
|
||||
];
|
||||
systemd.services.mpd-playlists = {
|
||||
before = ["mpd.service"];
|
||||
wantedBy = ["mpd.service"];
|
||||
script = let
|
||||
tags = lib.lists.unique (lib.concatMap ({tags ? [], ...}: tags) streams);
|
||||
tagStreams = tag: lib.filter ({tags ? [], ...}: lib.elem tag tags) streams;
|
||||
makePlaylist = name: streams: pkgs.writeText "${name}.m3u" (lib.concatMapStringsSep "\n" (lib.getAttr "stream") streams);
|
||||
playlistDirectory = pkgs.linkFarm "playlists" (
|
||||
[
|
||||
{
|
||||
name = "all.m3u";
|
||||
path = makePlaylist "all" streams;
|
||||
}
|
||||
]
|
||||
++ map (tag: {
|
||||
name = "${tag}.m3u";
|
||||
path = makePlaylist tag (tagStreams tag);
|
||||
})
|
||||
tags
|
||||
);
|
||||
playlistDirectoryPath = "/var/lib/mpd/playlists";
|
||||
in ''
|
||||
export DI_FM_KEY="$(cat "$CREDENTIALS_DIRECTORY/di-fm-key")"
|
||||
|
||||
rm -rf ${playlistDirectoryPath}
|
||||
mkdir ${playlistDirectoryPath}
|
||||
|
||||
for m3u in $(ls ${playlistDirectory})
|
||||
do
|
||||
${pkgs.gnused}/bin/sed s/%DI_FM_KEY%/"$DI_FM_KEY"/g ${playlistDirectory}/"$m3u" > ${playlistDirectoryPath}/"$(basename "$m3u")"
|
||||
done
|
||||
'';
|
||||
serviceConfig = {
|
||||
LoadCredential = [
|
||||
"di-fm-key:${config.age.secrets.di-fm-key.path}"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
services.ympd = {
|
||||
enable = true;
|
||||
|
||||
Reference in New Issue
Block a user