1
0
mirror of https://github.com/kmein/niveum synced 2026-03-27 06:41:07 +01:00

35 Commits

Author SHA1 Message Date
eafc87415a feat(prometheus): scrape home assistant 2023-09-05 19:23:40 +02:00
1e37581325 feat(i3): add clipmenu shortcut 2023-09-05 11:45:33 +02:00
c63cb4d157 feat: host ledger on ful 2023-09-05 11:45:20 +02:00
88257e9ffb Revert "feat: hledger module"
This reverts commit b9d0258132.
2023-09-03 22:36:23 +02:00
b9d0258132 feat: hledger module 2023-09-03 17:52:37 +02:00
53bbc65716 feat(pandoc): use up-to-date version 2023-09-03 17:50:48 +02:00
e76489b6d8 feat: remove traadfri 2023-08-31 10:09:49 +02:00
github-actions[bot]
f4e2885b86 flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/919d646de7be200f3bf08cb76ae1f09402b6f9b4' (2023-07-11)
  → 'github:numtide/flake-utils/f9e7cf818399d17d347f847525c5a5a8032e4e44' (2023-08-23)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/4cdad15f34e6321a2f789b99d42815b9142ac2ba' (2023-08-19)
  → 'github:NixOS/nixpkgs/74e5bdc5478ebbe7ba5849f0d765f92757bb9dbf' (2023-08-25)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/0b6f3e17dda02c9cf1e8edc6e411ba37093f09e2' (2023-08-20)
  → 'github:NixOS/nixpkgs/38b9aaf6682015f1d2fc7b7f48da96992c30cfa3' (2023-08-26)
• Updated input 'nur':
    'github:nix-community/NUR/18436a20915d6cc569d7fb13807a07ae5de10661' (2023-08-19)
  → 'github:nix-community/NUR/0f81f016eecec153a26099beb25b0c8bac87bd23' (2023-08-26)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/598b2f04ed252eb5808b108d7a10084c0c548753' (2023-08-19)
  → 'github:oxalica/rust-overlay/e90223633068a44f0fb62374e0fa360ccc987292' (2023-08-26)
• Updated input 'voidrice':
    'github:Lukesmithxyz/voidrice/f26e5678e626e604ed586fc6420b944dc023d3f2' (2023-08-18)
  → 'github:Lukesmithxyz/voidrice/86f05abcce1fd270032975775adb40040c746cfe' (2023-08-25)
2023-08-27 00:40:57 +00:00
07f5d25e96 feat: remock secrets 2023-08-23 17:42:54 +02:00
b5e9fd73e0 feat: remove mpv-visualizer as it has been upstreamed now 2023-08-23 15:51:56 +02:00
34687dde21 feat: stw-berlin stats 2023-08-23 13:05:09 +02:00
4ce7c7a91a fix: lb subscription 2023-08-23 13:05:09 +02:00
github-actions[bot]
9db408226b flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/07c347bb50994691d7b0095f45ebd8838cf6bc38' (2023-06-27)
  → 'github:nix-community/home-manager/2a6679aa9cc3872c29ba2a57fe1b71b3e3c5649f' (2023-08-15)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/78287547942dd8e8afff0ae47fb8e2553db79d7e' (2023-08-08)
  → 'github:NixOS/nixpkgs/4cdad15f34e6321a2f789b99d42815b9142ac2ba' (2023-08-19)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/ce5e4a6ef2e59d89a971bc434ca8ca222b9c7f5e' (2023-08-10)
  → 'github:NixOS/nixpkgs/0b6f3e17dda02c9cf1e8edc6e411ba37093f09e2' (2023-08-20)
• Updated input 'nur':
    'github:nix-community/NUR/bbb14c7521967ffbeb0a492a1bd209e0369be648' (2023-08-10)
  → 'github:nix-community/NUR/18436a20915d6cc569d7fb13807a07ae5de10661' (2023-08-19)
• Updated input 'retiolum':
    'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=e29c0b48310d4520a4beb9782e94949ae43ab1ae' (2023-07-30)
  → 'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=6216c30551876303dac5373e92690a7f05fd0f6f' (2023-08-14)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/48f3d76f512c7267d82d84c5d3d156ad2b9a8d12' (2023-08-10)
  → 'github:oxalica/rust-overlay/598b2f04ed252eb5808b108d7a10084c0c548753' (2023-08-19)
• Updated input 'voidrice':
    'github:Lukesmithxyz/voidrice/d8a8970715070f73bcb6333e3fe851b6802ac702' (2023-07-23)
  → 'github:Lukesmithxyz/voidrice/f26e5678e626e604ed586fc6420b944dc023d3f2' (2023-08-18)
2023-08-20 00:40:09 +00:00
8ea79b574b chore: update 2023-08-10 10:49:08 +02:00
bcb0878765 fix(grafana, nextcloud): remove smtp config 2023-08-09 10:48:36 +02:00
365aa29897 fix(grafana): remove smtp config 2023-08-09 09:29:51 +02:00
cfb782da7f Merge branch 'update_flake_lock_action' 2023-08-09 09:26:29 +02:00
e721abeb6c fix(vim): clean up 2023-08-07 15:38:54 +02:00
249e8c016d fix(fzf): preview commands 2023-08-07 14:22:47 +02:00
3be3410baa feat(stardict): install coptic dictionary 2023-08-07 13:26:53 +02:00
af0bd29cd5 chore: mock secrets 2023-08-06 21:22:33 +02:00
75827becf9 fix(fu-berlin): blackboard calendar 2023-08-06 21:19:08 +02:00
48438f758e feat: move email/ssh to fysi/hu-berlin/fu-berlin 2023-08-06 21:18:56 +02:00
3538692b60 feat(i3): enable gaps 2023-08-06 18:58:48 +02:00
42d1382b74 fix(editorconfig): python and makefile 2023-08-06 18:58:31 +02:00
31d86b7c9f feat(hu-berlin): add gruenau6 server configuration 2023-08-06 18:58:10 +02:00
6532016f96 feat(fu-berlin): liberalize blackboard calendar permissions 2023-08-06 18:57:52 +02:00
65c1704b46 feat: hello, FU! 2023-08-06 18:53:40 +02:00
github-actions[bot]
9f0cb708f2 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/48e82fe1b1c863ee26a33ce9bd39621d2ada0a33' (2023-07-28)
  → 'github:NixOS/nixpkgs/9652a97d9738d3e65cf33c0bc24429e495a7868f' (2023-08-04)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/4b4b4cf51b42616bc2de1c8fb92ec6a7ba862071' (2023-07-30)
  → 'github:NixOS/nixpkgs/97bd658852ce0efbdc4d9ca84ad466a4cbfb1cf4' (2023-08-05)
• Updated input 'nur':
    'github:nix-community/NUR/612e4e11ca96d2c205053a74ab3949c516a7e4ec' (2023-07-30)
  → 'github:nix-community/NUR/dcb1bbf571d2c3972a85058a398925c51db7655a' (2023-08-06)
• Updated input 'retiolum':
    'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=6c500ce24e1234d498e4da9718065ce154579192' (2023-07-28)
  → 'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=e29c0b48310d4520a4beb9782e94949ae43ab1ae' (2023-07-30)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/05d480a7aef1aae1bfb67a39134dcf48c5322528' (2023-07-30)
  → 'github:oxalica/rust-overlay/18ee2a71de24273e4ad4503b5604532f0b53f382' (2023-08-05)
2023-08-06 00:42:40 +00:00
ee2dcc3669 feat(neovim): luasnip and supertab 2023-08-02 10:20:03 +02:00
b5f50967b4 feat(neovim): use editorconfig for stripping trailiing whitespace 2023-08-01 17:09:59 +02:00
747402bca4 feat(restic): backup whole hass volume 2023-07-31 22:26:11 +02:00
5876839e4d chore: build makanek locally 2023-07-31 22:25:57 +02:00
bb79707693 chore: update 2023-07-31 22:25:46 +02:00
6c72666ed6 fix: newGardiner checksum 2023-07-31 22:25:26 +02:00
32 changed files with 625 additions and 507 deletions

View File

@@ -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 {

View File

@@ -12,7 +12,6 @@
in {
imports = [
inputs.self.nixosModules.system-dependent
inputs.self.nixosModules.traadfri
inputs.self.nixosModules.power-action
{
boot.supportedFilesystems = ["ntfs"];
@@ -259,6 +258,8 @@ in {
./hledger.nix
./htop.nix
./hu-berlin.nix
./fu-berlin.nix
./fysi.nix
./i3.nix
./i3status-rust.nix
./keyboard.nix
@@ -284,12 +285,12 @@ in {
./sound.nix
./sudo.nix
./tmux.nix
./traadfri.nix
./unclutter.nix
./vscode.nix
./watson.nix
./zsh.nix
./tor.nix
./stw-berlin.nix
./mastodon-bot.nix
];
}

View File

@@ -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
View 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
View 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";
};
};
};
}

View File

@@ -11,12 +11,12 @@
defaultOptions = ["--height=40%"];
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
changeDirWidgetOptions = [
"--preview '${pkgs.tree}/bin/tree -L 1 {}'"
"--preview='${pkgs.tree}/bin/tree -L 1 {}'"
"--bind=space:toggle-preview"
"--preview-window=hidden"
];
fileWidgetCommand = defaultCommand;
fileWidgetOptions = ["--preview 'head -$LINES {}'"];
fileWidgetOptions = ["--preview='head -$LINES {}'"];
};
};
}

View File

@@ -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 = [

View File

@@ -84,6 +84,7 @@ in {
displayManager.defaultSession = "none+i3";
windowManager.i3 = {
enable = true;
package = pkgs.i3-gaps;
};
};
@@ -140,6 +141,7 @@ in {
}
];
};
gaps.inner = 4;
floating = {
titlebar = false;
border = 1;
@@ -210,11 +212,7 @@ 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}+Return" = "exec ${(defaultApplications pkgs).terminal}";
"${modifier}+t" = "exec ${(defaultApplications pkgs).fileManager}";

View File

@@ -110,6 +110,12 @@
missing_format = "";
device = "ppp0";
}
{
block = "net";
format = " $icon FU";
missing_format = "";
device = "tun0";
}
{
block = "net";
device = config.niveum.wirelessInterface;

View File

@@ -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

View File

@@ -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

View File

@@ -275,7 +275,7 @@ in {
libreoffice
# gnumeric
dia
pandoc
unstablePackages.pandoc
niveumPackages.man-pandoc
typst
# proselint

View File

@@ -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";
};
};
};
}

View File

@@ -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
View 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
'';
};
}

View File

@@ -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;
};
};
}

119
flake.lock generated
View File

@@ -58,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": [
@@ -101,11 +122,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"lastModified": 1692799911,
"narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
"type": "github"
},
"original": {
@@ -152,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": {
@@ -166,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": [
@@ -290,11 +327,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1690558459,
"narHash": "sha256-5W7y1l2cLYPkpJGNlAja7XW2X2o9rjf0O1mo9nxS9jQ=",
"lastModified": 1692986144,
"narHash": "sha256-M4VFpy7Av9j+33HF5nIGm0k2+DXXW4qSSKdidIKg5jY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "48e82fe1b1c863ee26a33ce9bd39621d2ada0a33",
"rev": "74e5bdc5478ebbe7ba5849f0d765f92757bb9dbf",
"type": "github"
},
"original": {
@@ -338,11 +375,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1690678105,
"narHash": "sha256-gAO2KpBorpwdRNe83i0MJWEO0dJyn8rWfxRTqz1DvEI=",
"lastModified": 1693094031,
"narHash": "sha256-PyPWn5/WzryKDKuuiJJ8cd1BJCenhjbaicYQbwRM9Ao=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4ad78e3e98fabb3e4af3bd1a21dadb123aa85b5d",
"rev": "38b9aaf6682015f1d2fc7b7f48da96992c30cfa3",
"type": "github"
},
"original": {
@@ -431,11 +468,11 @@
},
"nur": {
"locked": {
"lastModified": 1690677824,
"narHash": "sha256-6g+vradn8XOcFPzG8zmGinEWxBKLYYoo35mX2y67XVk=",
"lastModified": 1693082793,
"narHash": "sha256-di/x+vrMYmjSHabbiuPi6EZ0m6HoPXOVtA7ugU3rVZM=",
"owner": "nix-community",
"repo": "NUR",
"rev": "e731d694c01b2e17ebb7edfb26442d0124b795a4",
"rev": "0f81f016eecec153a26099beb25b0c8bac87bd23",
"type": "github"
},
"original": {
@@ -470,11 +507,11 @@
},
"retiolum": {
"locked": {
"lastModified": 1690585210,
"narHash": "sha256-2AvPueR/Ma5keG0vAjKn9jEb6Yu3xVV+7SE6kQRXb+k=",
"lastModified": 1691992809,
"narHash": "sha256-qUTsMDSV2L5t6Oj+L60n0KQKbvOhak3+d6++h9AZJPg=",
"ref": "refs/heads/master",
"rev": "6c500ce24e1234d498e4da9718065ce154579192",
"revCount": 313,
"rev": "6216c30551876303dac5373e92690a7f05fd0f6f",
"revCount": 315,
"type": "git",
"url": "https://git.thalheim.io/Mic92/retiolum"
},
@@ -486,6 +523,7 @@
"root": {
"inputs": {
"agenix": "agenix",
"coptic-dictionary": "coptic-dictionary",
"flake-utils": "flake-utils",
"home-manager": "home-manager",
"menstruation-backend": "menstruation-backend",
@@ -503,7 +541,6 @@
"stylix": "stylix",
"telebots": "telebots",
"tinc-graph": "tinc-graph",
"traadfri": "traadfri",
"voidrice": "voidrice",
"wallpaper-generator": "wallpaper-generator",
"wallpapers": "wallpapers"
@@ -519,11 +556,11 @@
]
},
"locked": {
"lastModified": 1690596958,
"narHash": "sha256-SWqxUiEP9O2gvlWtR4Ku6rIMGM7PuNZreAPrU2yAjsk=",
"lastModified": 1693015707,
"narHash": "sha256-SFr93DYn502sVT9nB5U8/cKg1INyEk/jCeq8tHioz7Y=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "5c06b0ed7bfb00f3a925af6c4acd1636596381c1",
"rev": "e90223633068a44f0fb62374e0fa360ccc987292",
"type": "github"
},
"original": {
@@ -570,15 +607,16 @@
]
},
"locked": {
"lastModified": 1690620628,
"narHash": "sha256-cJKeQUeBbP5oC4ahfLOaZZxs7/LjANeSZZbgEEQbxuY=",
"lastModified": 1690463825,
"narHash": "sha256-LILKFcKNVxYcYmzCB2+Gswyob5XrPJAF1YBExFR2yak=",
"owner": "danth",
"repo": "stylix",
"rev": "c29f2e6f9d0326a690d0c2376712e9134ad8f5c8",
"rev": "5c829554280f3139ddbfce8561d7430efbf2abfb",
"type": "github"
},
"original": {
"owner": "danth",
"ref": "release-23.05",
"repo": "stylix",
"type": "github"
}
@@ -643,37 +681,14 @@
"type": "github"
}
},
"traadfri": {
"inputs": {
"flake-utils": [
"flake-utils"
],
"nixpkgs": [
"nixpkgs-old"
]
},
"locked": {
"lastModified": 1677165914,
"narHash": "sha256-3N08NabgDwTUy1n5wxpT27iddFrgXW35E1x2UgAKkDQ=",
"owner": "kmein",
"repo": "traadfri",
"rev": "11571116ed5d2c6478c615d663d1f96f57a97ba9",
"type": "github"
},
"original": {
"owner": "kmein",
"repo": "traadfri",
"type": "github"
}
},
"voidrice": {
"flake": false,
"locked": {
"lastModified": 1690153564,
"narHash": "sha256-WezWBUnEesneqeX7Z9zkbnVHhIIbt25mpSutezLDpVU=",
"lastModified": 1692950210,
"narHash": "sha256-0RHvrinkg8LEV/aGnT2n9MNOwaf2ke/YAXRIipZiT2w=",
"owner": "Lukesmithxyz",
"repo": "voidrice",
"rev": "d8a8970715070f73bcb6333e3fe851b6802ac702",
"rev": "86f05abcce1fd270032975775adb40040c746cfe",
"type": "github"
},
"original": {

View File

@@ -3,6 +3,7 @@
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";
@@ -17,16 +18,16 @@
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";
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.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";
@@ -49,8 +50,6 @@
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;
@@ -80,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 = {
@@ -107,7 +106,6 @@
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 = {
@@ -194,7 +192,7 @@
_module.args.nixinate = {
host = "makanek";
sshUser = "root";
buildOn = "remote";
buildOn = "local";
substituteOnTarget = true;
hermetic = false;
};
@@ -279,6 +277,9 @@
})
];
};
unstablePackages = import nixpkgs-unstable {
inherit system;
};
wrapScript = {
packages ? [],
name,
@@ -332,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;};

View File

@@ -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";
};
}

View File

@@ -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";
}

View File

@@ -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 }

View File

@@ -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

View File

@@ -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;
};
}

View File

@@ -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];
};
}

View File

@@ -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

Submodule secrets updated: d0b68f81a5...9efd6ac7e1

View File

@@ -1,63 +1,66 @@
secrets/secrets.nix
secrets/email-password-cock.age
secrets/telegram-token-nachtischsatan.age
secrets/nextcloud-password-kieran.age
secrets/kabsa-retiolum-privateKey-rsa.age
secrets/manakish-syncthing-key.age
secrets/hetzner-storagebox-credentials.age
secrets/ful-retiolum-privateKey-rsa.age
secrets/kfm-password.age
secrets/maxmind-license-key.age
secrets/kabsa-specus-privateKey.age
secrets/mega-password.age
secrets/traadfri-key.age
secrets/zaatar-syncthing-key.age
secrets/onlyoffice-jwt-key.age
secrets/nextcloud-password-fysi.age
secrets/miniflux-credentials.age
secrets/openweathermap-api-key.age
secrets/zaatar-retiolum-privateKey-rsa.age
secrets/email-password-fsklassp.age
secrets/telegram-token-reverse.age
secrets/email-password-fysi.age
secrets/manakish-retiolum-privateKey-rsa.age
secrets/nextcloud-password-admin.age
secrets/email-password-posteo.age
secrets/ful-root.age
secrets/makanek-specus-privateKey.age
secrets/zaatar-ympd-basicAuth.age
secrets/home-assistant-token.age
secrets/email-password-dslalewa.age
secrets/telegram-token-kmein.age
secrets/tahina-retiolum-privateKey-ed25519.age
secrets/kabsa-syncthing-cert.age
secrets/email-password-meinhark.age
secrets/ful-retiolum-privateKey-ed25519.age
secrets/nextcloud-password-database.age
secrets/telegram-token-menstruation.age
secrets/tabula-retiolum-privateKey-rsa.age
secrets/grafana-password-admin.age
secrets/di-fm-key.age
secrets/kabsa-retiolum-privateKey-ed25519.age
secrets/email-password-meinhaki.age
secrets/ful-specus-privateKey.age
secrets/zaatar-syncthing-cert.age
secrets/tahina-retiolum-privateKey-rsa.age
secrets/spotify-password.age
secrets/manakish-syncthing-cert.age
secrets/makanek-retiolum-privateKey-rsa.age
secrets/makanek-retiolum-privateKey-ed25519.age
secrets/spotify-username.age
secrets/telegram-token-betacode.age
secrets/zaatar-moodle-dl-basicAuth.age
secrets/zaatar-retiolum-privateKey-ed25519.age
secrets/restic.age
secrets/zaatar-moodle-dl-tokens.json.age
secrets/cifs-credentials-hu-berlin.age
secrets/alertmanager-token-reporters.age
secrets/tabula-retiolum-privateKey-ed25519.age
secrets/telegram-token-proverb.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/weechat-sec.conf.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/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

View File

@@ -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
View 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}";
};
}

View File

@@ -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 = [
@@ -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 = [

View File

@@ -80,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?
};
};

View File

@@ -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,14 +28,14 @@ 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.bak:/config"];
volumes = ["${volumeName}:/config"];
environment.TZ = "Europe/Berlin";
image = "ghcr.io/home-assistant/home-assistant:stable";
extraOptions = [