mirror of
https://github.com/kmein/niveum
synced 2026-03-17 02:31:09 +01:00
Compare commits
168 Commits
feature/sp
...
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 | |||
| 2b2db14519 | |||
| 30619a6322 | |||
| 2bd218887b | |||
| 0cdcd46808 | |||
| 7a2a6217c4 | |||
| bfb7ed3b5a | |||
| 3e591784c6 | |||
| 657c4fd673 | |||
| a4b659f057 | |||
| 99be0277b1 | |||
| 6c2db1b0fb | |||
|
|
0f8ada7194 | ||
| e9b4fb12c7 | |||
| 24f838370d | |||
| 074e229d5f | |||
| b953ccae12 | |||
| 4f5782fbc4 | |||
| 8ae328ad19 | |||
| 9148ab5ba8 | |||
| 17bf958923 | |||
| e08ffb4d44 | |||
| 0cbf18fb1a | |||
| 332d192aaf | |||
| f52a5c43c3 | |||
| 94315fae99 | |||
| 76232658c2 | |||
| bcac6e29d5 | |||
|
|
7a99500f72 | ||
| 3138fd23ef | |||
| d0edb9c915 | |||
| 120a50db3b | |||
| 3736b99603 | |||
| 6db3928a47 | |||
| d980fe6da5 | |||
| a599e5a64b | |||
| 6dd286b2bf | |||
|
|
da77e733c1 | ||
| b62bde780d | |||
| 4584d92d05 | |||
| 1bbf54fcd8 | |||
| 14fe8b6c3a | |||
| 69ff902e78 | |||
| cb995b0ad9 | |||
| 9a1a18bc69 | |||
| 22405aebf0 | |||
| 40e8a1ad5c | |||
| e44460ca3c | |||
| 89d8347a34 | |||
| 5d0a6fe3dd | |||
| 64a59070c4 | |||
| c68f863bbc | |||
| fa3d41fb5b | |||
| 881aaa3f8c | |||
| dcd00ad602 | |||
| 56e4d710e5 | |||
| 8967f860e8 | |||
| ed6e777497 | |||
| 7cbad0c877 | |||
| f9326b19ab | |||
| 479742c5a5 | |||
| 336f0e6311 | |||
| bbc0467e3d | |||
| a90c04e077 | |||
| 22a7980100 | |||
| de40ace55c | |||
| aea1a975c0 | |||
|
|
bf12137fac | ||
| 3cae1306ca | |||
| a976daccb1 | |||
| f318ff5ac7 | |||
| 61df3fcc89 | |||
| ba7f1ae0db | |||
| 12b79916da | |||
| 574bcc5b85 | |||
| 20c92a8b2f | |||
| f2b1b9d9a1 | |||
| c17884a519 | |||
| 8be6375bcb | |||
| 5ac1f33e2b | |||
| d64142e32c | |||
| a1654b1d1d | |||
| 3f7d548925 | |||
| 68a2f739af | |||
| 9fd968ff62 | |||
| 8811aeaff9 | |||
| 8d5cd55239 | |||
| 44ac94ef38 | |||
| cb832d06d3 | |||
| 1bc7b16fd7 | |||
| 52c18d1464 | |||
| 85a6a92836 | |||
| a6232b1a5e | |||
| 63b8c7ff1e | |||
| 4fcbe70f5e | |||
| 4ae3824663 | |||
| f83b5f3021 | |||
|
|
6e54579e26 | ||
| 626018f3f8 | |||
| 6fddca2a0b | |||
| dee8b4e133 |
29
.github/workflows/niveum.yml
vendored
29
.github/workflows/niveum.yml
vendored
@@ -9,6 +9,29 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
system: [makanek,manakish,kabsa,zaatar,ful]
|
system: [makanek,manakish,kabsa,zaatar,ful]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: cachix/install-nix-action@v16
|
- name: Install QEMU (ARM)
|
||||||
- run: nix run .?submodules=1#apps.nixinate.${{matrix.system}}-dry-run
|
run: sudo apt-get install -y qemu-user-static
|
||||||
|
if: ${{ matrix.system == 'ful' }}
|
||||||
|
- name: Install Nix (ARM)
|
||||||
|
uses: cachix/install-nix-action@v16
|
||||||
|
if: ${{ matrix.system == 'ful' }}
|
||||||
|
with:
|
||||||
|
extra_nix_config: |
|
||||||
|
system = aarch64-linux
|
||||||
|
- name: Install Nix (x86_64)
|
||||||
|
uses: cachix/install-nix-action@v16
|
||||||
|
if: ${{ matrix.system != 'ful' }}
|
||||||
|
- name: nixos-rebuild dry-build
|
||||||
|
run: |
|
||||||
|
# remove secrets: ref https://stackoverflow.com/questions/1260748/how-do-i-remove-a-submodule/36593218
|
||||||
|
git submodule deinit -f secrets
|
||||||
|
rm -rf .git/modules/secrets
|
||||||
|
git rm -f secrets
|
||||||
|
|
||||||
|
# recreate secrets
|
||||||
|
mkdir secrets
|
||||||
|
cat secrets.txt | while read -r path; do touch $path; done
|
||||||
|
git add secrets
|
||||||
|
|
||||||
|
nix run nixpkgs#nixos-rebuild -- dry-build --flake $GITHUB_WORKSPACE#${{matrix.system}}
|
||||||
|
|||||||
130
configs/aerc.nix
130
configs/aerc.nix
@@ -4,18 +4,7 @@
|
|||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
defaults = {
|
inherit (import ../lib/email.nix) 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;
|
|
||||||
};
|
|
||||||
in {
|
in {
|
||||||
age.secrets = {
|
age.secrets = {
|
||||||
email-password-cock = {
|
email-password-cock = {
|
||||||
@@ -24,42 +13,12 @@ in {
|
|||||||
group = config.users.users.me.group;
|
group = config.users.users.me.group;
|
||||||
mode = "400";
|
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 = {
|
email-password-posteo = {
|
||||||
file = ../secrets/email-password-posteo.age;
|
file = ../secrets/email-password-posteo.age;
|
||||||
owner = config.users.users.me.name;
|
owner = config.users.users.me.name;
|
||||||
group = config.users.users.me.group;
|
group = config.users.users.me.group;
|
||||||
mode = "400";
|
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 = {
|
home-manager.users.me = {
|
||||||
@@ -110,90 +69,7 @@ in {
|
|||||||
config.home-manager.users.me.accounts.email.accounts);
|
config.home-manager.users.me.accounts.email.accounts);
|
||||||
};
|
};
|
||||||
|
|
||||||
accounts.email.accounts = rec {
|
accounts.email.accounts = {
|
||||||
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";
|
|
||||||
};
|
|
||||||
cock =
|
cock =
|
||||||
lib.recursiveUpdate defaults
|
lib.recursiveUpdate defaults
|
||||||
rec {
|
rec {
|
||||||
@@ -361,7 +237,7 @@ in {
|
|||||||
# "text/html" =
|
# "text/html" =
|
||||||
# "${pkgs.aerc}/share/aerc/filters/html | ${pkgs.aerc}/share/aerc/filters/colorize";
|
# "${pkgs.aerc}/share/aerc/filters/html | ${pkgs.aerc}/share/aerc/filters/colorize";
|
||||||
# "text/*" =
|
# "text/*" =
|
||||||
# ''${pkgs.bat}/bin/bat -fP --file-name="$AERC_FILENAME "'';
|
# ''${pkgs.bat}/bin/bat -fP --theme=ansi --file-name="$AERC_FILENAME "'';
|
||||||
"message/delivery-status" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
|
"message/delivery-status" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
|
||||||
"message/rfc822" = "${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";
|
"application/x-sh" = "${pkgs.bat}/bin/bat -fP -l sh";
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
}: let
|
}: let
|
||||||
alacritty-cfg = theme:
|
alacritty-cfg = theme:
|
||||||
(pkgs.formats.yaml {}).generate "alacritty.yml" {
|
(pkgs.formats.yaml {}).generate "alacritty.yml" {
|
||||||
window.opacity = 0.99;
|
|
||||||
bell = {
|
bell = {
|
||||||
animation = "EaseOut";
|
animation = "EaseOut";
|
||||||
duration = 100;
|
duration = 100;
|
||||||
@@ -57,12 +56,28 @@
|
|||||||
in {
|
in {
|
||||||
environment.variables.TERMINAL = "alacritty";
|
environment.variables.TERMINAL = "alacritty";
|
||||||
|
|
||||||
environment.systemPackages = [
|
home-manager.users.me = {
|
||||||
alacritty-pkg
|
programs.alacritty = {
|
||||||
];
|
enable = true;
|
||||||
|
settings = {
|
||||||
environment.etc = {
|
key_bindings = [
|
||||||
"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);
|
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,10 +16,12 @@ in {
|
|||||||
extraBackupArgs = [
|
extraBackupArgs = [
|
||||||
"--exclude=/home/kfm/projects/nixpkgs/.git"
|
"--exclude=/home/kfm/projects/nixpkgs/.git"
|
||||||
"--exclude=node_modules"
|
"--exclude=node_modules"
|
||||||
|
"--exclude=.parcel-cache"
|
||||||
];
|
];
|
||||||
paths = [
|
paths = [
|
||||||
"/home/kfm/work"
|
"/home/kfm/work"
|
||||||
"/home/kfm/projects"
|
"/home/kfm/projects"
|
||||||
|
"/home/kfm/Zotero"
|
||||||
"/home/kfm/notes"
|
"/home/kfm/notes"
|
||||||
"/home/kfm/Maildir"
|
"/home/kfm/Maildir"
|
||||||
"/home/kfm/cloud"
|
"/home/kfm/cloud"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
programs.bash = {
|
programs.bash = {
|
||||||
promptInit = ''
|
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 = ''
|
interactiveShellInit = ''
|
||||||
set -o vi
|
set -o vi
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -12,23 +12,15 @@ in {
|
|||||||
user = config.users.users.me.name;
|
user = config.users.users.me.name;
|
||||||
group = "users";
|
group = "users";
|
||||||
mode = "0755";
|
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";
|
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 = {
|
home-manager.users.me = {
|
||||||
services.gnome-keyring.enable = false;
|
services.gnome-keyring.enable = true;
|
||||||
services.nextcloud-client = {
|
services.nextcloud-client = {
|
||||||
enable = false;
|
enable = true;
|
||||||
startInBackground = true;
|
startInBackground = true;
|
||||||
};
|
};
|
||||||
systemd.user.services.nextcloud-client = {
|
systemd.user.services.nextcloud-client = {
|
||||||
@@ -40,7 +32,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.services.nextcloud-syncer = {
|
systemd.user.services.nextcloud-syncer = {
|
||||||
enable = true;
|
enable = false;
|
||||||
wants = ["network-online.target"];
|
wants = ["network-online.target"];
|
||||||
wantedBy = ["default.target"];
|
wantedBy = ["default.target"];
|
||||||
startAt = "*:00/10";
|
startAt = "*:00/10";
|
||||||
@@ -48,7 +40,7 @@ in {
|
|||||||
kieran = {
|
kieran = {
|
||||||
user = "kieran";
|
user = "kieran";
|
||||||
passwordFile = config.age.secrets.nextcloud-password-kieran.path;
|
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";
|
target = "${config.users.users.me.home}/notes";
|
||||||
};
|
};
|
||||||
in ''
|
in ''
|
||||||
@@ -66,7 +58,7 @@ in {
|
|||||||
set -efu
|
set -efu
|
||||||
book="$({
|
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/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)"
|
} | ${pkgs.fzf}/bin/fzf)"
|
||||||
exec ${pkgs.zathura}/bin/zathura "$book"
|
exec ${pkgs.zathura}/bin/zathura "$book"
|
||||||
'')
|
'')
|
||||||
@@ -103,16 +95,6 @@ in {
|
|||||||
mode = "400";
|
mode = "400";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/media/moodle" = {
|
|
||||||
device = "zaatar.r:/moodle";
|
|
||||||
fsType = "nfs";
|
|
||||||
options = [
|
|
||||||
"x-systemd.idle-timeout=600"
|
|
||||||
"noauto"
|
|
||||||
"x-systemd.automount"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.syncthing = rec {
|
services.syncthing = rec {
|
||||||
enable = true;
|
enable = true;
|
||||||
user = "kfm";
|
user = "kfm";
|
||||||
@@ -125,9 +107,14 @@ in {
|
|||||||
folders = let
|
folders = let
|
||||||
cloud-dir = "${config.users.users.me.home}/cloud";
|
cloud-dir = "${config.users.users.me.home}/cloud";
|
||||||
in {
|
in {
|
||||||
|
"${cloud-dir}/syncthing/zotero".devices = ["kabsa" "manakish"];
|
||||||
"${cloud-dir}/syncthing/common".devices = ["kabsa" "manakish"];
|
"${cloud-dir}/syncthing/common".devices = ["kabsa" "manakish"];
|
||||||
"${cloud-dir}/syncthing/library".devices = ["kabsa" "manakish" "heym"];
|
"${cloud-dir}/syncthing/library".devices = ["kabsa" "manakish" "heym"];
|
||||||
"${cloud-dir}/syncthing/mundoiu".devices = ["kabsa" "manakish" "heym"];
|
"${cloud-dir}/syncthing/mundoiu".devices = ["kabsa" "manakish" "heym"];
|
||||||
|
"${cloud-dir}/syncthing/obsidian" = {
|
||||||
|
devices = ["kabsa" "manakish" "heym"];
|
||||||
|
id = "3r1hu-3barr";
|
||||||
|
};
|
||||||
"${cloud-dir}/syncthing/music" = {
|
"${cloud-dir}/syncthing/music" = {
|
||||||
devices = ["kabsa" "manakish" "heym" "zaatar"];
|
devices = ["kabsa" "manakish" "heym" "zaatar"];
|
||||||
id = "music";
|
id = "music";
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.self.nixosModules.system-dependent
|
inputs.self.nixosModules.system-dependent
|
||||||
inputs.self.nixosModules.traadfri
|
|
||||||
inputs.self.nixosModules.power-action
|
inputs.self.nixosModules.power-action
|
||||||
{
|
{
|
||||||
boot.supportedFilesystems = ["ntfs"];
|
boot.supportedFilesystems = ["ntfs"];
|
||||||
@@ -31,7 +30,7 @@ in {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
boot.cleanTmpDir = true;
|
boot.tmp.cleanOnBoot = true;
|
||||||
boot.loader.timeout = 1;
|
boot.loader.timeout = 1;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -56,12 +55,24 @@ in {
|
|||||||
enable = true;
|
enable = true;
|
||||||
options = {
|
options = {
|
||||||
selection-clipboard = "clipboard";
|
selection-clipboard = "clipboard";
|
||||||
recolor-keephue = true;
|
|
||||||
# first-page-column = "1:1"; # makes side-by-side mode start on the left side
|
# 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;
|
users.mutableUsers = false;
|
||||||
|
|
||||||
@@ -70,11 +81,15 @@ in {
|
|||||||
users.users.me = {
|
users.users.me = {
|
||||||
name = "kfm";
|
name = "kfm";
|
||||||
description = kieran.name;
|
description = kieran.name;
|
||||||
hashedPassword = "$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
|
passwordFile = config.age.secrets.kfm-password.path;
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
uid = 1000;
|
uid = 1000;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
age.secrets = {
|
||||||
|
kfm-password.file = ../secrets/kfm-password.age;
|
||||||
|
};
|
||||||
|
|
||||||
home-manager.users.me.xdg.enable = true;
|
home-manager.users.me.xdg.enable = true;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -96,7 +111,7 @@ in {
|
|||||||
swallow = command: "${niveumPackages.swallow}/bin/swallow ${command}";
|
swallow = command: "${niveumPackages.swallow}/bin/swallow ${command}";
|
||||||
in {
|
in {
|
||||||
"ß" = "${pkgs.util-linux}/bin/setsid";
|
"ß" = "${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";
|
chromium-incognito = "chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
|
||||||
cp = "cp --interactive";
|
cp = "cp --interactive";
|
||||||
ip = "${pkgs.iproute2}/bin/ip -c";
|
ip = "${pkgs.iproute2}/bin/ip -c";
|
||||||
@@ -221,10 +236,11 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
./android.nix
|
||||||
|
./stylix.nix
|
||||||
./alacritty.nix
|
./alacritty.nix
|
||||||
./backup.nix
|
./backup.nix
|
||||||
./bash.nix
|
./bash.nix
|
||||||
./beets.nix
|
|
||||||
./bluetooth.nix
|
./bluetooth.nix
|
||||||
./aerc.nix
|
./aerc.nix
|
||||||
./ccc.nix
|
./ccc.nix
|
||||||
@@ -242,7 +258,10 @@ in {
|
|||||||
./hledger.nix
|
./hledger.nix
|
||||||
./htop.nix
|
./htop.nix
|
||||||
./hu-berlin.nix
|
./hu-berlin.nix
|
||||||
|
./fu-berlin.nix
|
||||||
|
./fysi.nix
|
||||||
./i3.nix
|
./i3.nix
|
||||||
|
./i3status-rust.nix
|
||||||
./keyboard.nix
|
./keyboard.nix
|
||||||
./lb.nix
|
./lb.nix
|
||||||
./mpv.nix
|
./mpv.nix
|
||||||
@@ -257,25 +276,21 @@ in {
|
|||||||
./polkit.nix
|
./polkit.nix
|
||||||
./power-action.nix
|
./power-action.nix
|
||||||
./printing.nix
|
./printing.nix
|
||||||
# ./openweathermap.nix
|
|
||||||
./wallpaper.nix
|
|
||||||
./redshift.nix
|
./redshift.nix
|
||||||
./retiolum.nix
|
./retiolum.nix
|
||||||
./rofi.nix
|
./rofi.nix
|
||||||
./spacetime.nix
|
./spacetime.nix
|
||||||
./seafile.nix
|
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
./sshd.nix
|
./sshd.nix
|
||||||
./sound.nix
|
./sound.nix
|
||||||
./sudo.nix
|
./sudo.nix
|
||||||
./themes.nix
|
|
||||||
./tmux.nix
|
./tmux.nix
|
||||||
./traadfri.nix
|
|
||||||
./unclutter.nix
|
./unclutter.nix
|
||||||
./vscode.nix
|
./vscode.nix
|
||||||
./watson.nix
|
./watson.nix
|
||||||
./zsh.nix
|
./zsh.nix
|
||||||
./tor.nix
|
./tor.nix
|
||||||
|
./stw-berlin.nix
|
||||||
./mastodon-bot.nix
|
./mastodon-bot.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (import ../lib) defaultApplications colours theme;
|
inherit (import ../lib) defaultApplications theme;
|
||||||
in {
|
in {
|
||||||
home-manager.users.me.services.dunst = {
|
home-manager.users.me.services.dunst = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -11,16 +11,13 @@ in {
|
|||||||
settings = {
|
settings = {
|
||||||
global = {
|
global = {
|
||||||
transparency = 10;
|
transparency = 10;
|
||||||
font = "Monospace 8";
|
|
||||||
geometry = "200x5-30+20";
|
geometry = "200x5-30+20";
|
||||||
frame_color = colours.foreground;
|
|
||||||
follow = "mouse";
|
follow = "mouse";
|
||||||
indicate_hidden = true;
|
indicate_hidden = true;
|
||||||
notification_height = 0;
|
notification_height = 0;
|
||||||
separator_height = 2;
|
separator_height = 2;
|
||||||
padding = 8;
|
padding = 8;
|
||||||
horizontal_padding = 8;
|
horizontal_padding = 8;
|
||||||
separator_color = "auto";
|
|
||||||
sort = true;
|
sort = true;
|
||||||
markup = "full";
|
markup = "full";
|
||||||
format = "%a\\n<b>%s</b>\\n%b";
|
format = "%a\\n<b>%s</b>\\n%b";
|
||||||
@@ -43,22 +40,13 @@ in {
|
|||||||
mouse_right_click = "close_current";
|
mouse_right_click = "close_current";
|
||||||
mouse_middle_click = "close_all";
|
mouse_middle_click = "close_all";
|
||||||
};
|
};
|
||||||
urgency_low = rec {
|
urgency_low = {
|
||||||
frame_color = background;
|
|
||||||
background = colours.foreground;
|
|
||||||
foreground = colours.background;
|
|
||||||
timeout = 5;
|
timeout = 5;
|
||||||
};
|
};
|
||||||
urgency_normal = rec {
|
urgency_normal = {
|
||||||
frame_color = background;
|
|
||||||
background = colours.foreground;
|
|
||||||
foreground = colours.background;
|
|
||||||
timeout = 10;
|
timeout = 10;
|
||||||
};
|
};
|
||||||
urgency_critical = rec {
|
urgency_critical = {
|
||||||
frame_color = background;
|
|
||||||
background = colours.red.dark;
|
|
||||||
foreground = colours.background;
|
|
||||||
timeout = 0;
|
timeout = 0;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
};
|
};
|
||||||
newGardiner = zip-font "NewGardiner" {
|
newGardiner = zip-font "NewGardiner" {
|
||||||
url = "https://mjn.host.cs.st-andrews.ac.uk/egyptian/fonts/NewGardiner.zip";
|
url = "https://mjn.host.cs.st-andrews.ac.uk/egyptian/fonts/NewGardiner.zip";
|
||||||
sha256 = "1jd0qa6shh9pqqyig2w43m9l9rv1i50l73jzkhb6g6mqxbhb1mip";
|
hash = "sha256-i7ZBN28no/884fYMA7ZJ47WpkwZXzY//TK0bDz21pE0=";
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
};
|
};
|
||||||
junicode2 = zip-font "JunicodeTwo" {
|
junicode2 = zip-font "JunicodeTwo" {
|
||||||
@@ -68,6 +68,7 @@ in {
|
|||||||
corefonts
|
corefonts
|
||||||
crimson
|
crimson
|
||||||
eb-garamond
|
eb-garamond
|
||||||
|
ipaexfont
|
||||||
jsesh
|
jsesh
|
||||||
egyptianHiero
|
egyptianHiero
|
||||||
egyptianText
|
egyptianText
|
||||||
@@ -108,7 +109,7 @@ in {
|
|||||||
fontconfig.defaultFonts = rec {
|
fontconfig.defaultFonts = rec {
|
||||||
monospace = ["Noto Sans Mono"] ++ emoji;
|
monospace = ["Noto Sans Mono"] ++ emoji;
|
||||||
serif = ["Noto Serif" "Noto Naskh Arabic" "Noto Serif Devanagari"];
|
serif = ["Noto Serif" "Noto Naskh Arabic" "Noto Serif Devanagari"];
|
||||||
sansSerif = ["Noto Sans Display" "Noto Kufi Arabic" "Noto Sans Devanagari" "Noto Sans CJK JP"];
|
sansSerif = ["Noto Sans Display" "Noto Naskh Arabic" "Noto Sans Devanagari" "Noto Sans CJK JP" "Noto Sans Coptic"];
|
||||||
emoji = ["Noto Color Emoji"];
|
emoji = ["Noto Color Emoji"];
|
||||||
};
|
};
|
||||||
# xelatex fails with woff files
|
# xelatex fails with woff files
|
||||||
|
|||||||
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,37 +1,22 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
programs.fzf = {
|
||||||
lib,
|
fuzzyCompletion = true;
|
||||||
...
|
keybindings = true;
|
||||||
}: {
|
};
|
||||||
environment = {
|
|
||||||
systemPackages = [pkgs.fzf];
|
home-manager.users.me = {
|
||||||
variables = rec {
|
programs.fzf = rec {
|
||||||
FZF_DEFAULT_COMMAND = "${pkgs.fd}/bin/fd --type f --strip-cwd-prefix --follow --no-ignore-vcs --exclude .git";
|
enable = true;
|
||||||
FZF_DEFAULT_OPTS =
|
defaultCommand = "${pkgs.fd}/bin/fd --type f --strip-cwd-prefix --follow --no-ignore-vcs --exclude .git";
|
||||||
lib.escapeShellArgs ["--height=40%"];
|
defaultOptions = ["--height=40%"];
|
||||||
FZF_ALT_C_COMMAND = "${pkgs.fd}/bin/fd --type d";
|
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
|
||||||
FZF_ALT_C_OPTS = lib.escapeShellArgs [
|
changeDirWidgetOptions = [
|
||||||
"--preview='${pkgs.tree}/bin/tree -L 1 \"{}\"'"
|
"--preview='${pkgs.tree}/bin/tree -L 1 {}'"
|
||||||
"--bind=space:toggle-preview"
|
"--bind=space:toggle-preview"
|
||||||
"--preview-window=hidden"
|
"--preview-window=hidden"
|
||||||
];
|
];
|
||||||
FZF_CTRL_T_COMMAND = FZF_DEFAULT_COMMAND;
|
fileWidgetCommand = defaultCommand;
|
||||||
FZF_CTRL_T_OPTS =
|
fileWidgetOptions = ["--preview='head -$LINES {}'"];
|
||||||
lib.escapeShellArgs ["--preview='head -$LINES {}'"];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.zsh.interactiveShellInit = ''
|
|
||||||
if [[ $options[zle] = on ]]; then
|
|
||||||
. ${pkgs.fzf}/share/fzf/completion.zsh
|
|
||||||
. ${pkgs.fzf}/share/fzf/key-bindings.zsh
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
programs.bash.interactiveShellInit = ''
|
|
||||||
if [[ :$SHELLOPTS: =~ :(vi|emacs): ]]; then
|
|
||||||
. ${pkgs.fzf}/share/fzf/completion.bash
|
|
||||||
. ${pkgs.fzf}/share/fzf/key-bindings.bash
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ in {
|
|||||||
pull.ff = "only";
|
pull.ff = "only";
|
||||||
rebase.autoStash = true;
|
rebase.autoStash = true;
|
||||||
merge.autoStash = true;
|
merge.autoStash = true;
|
||||||
|
push.autoSetupRemote = true;
|
||||||
|
|
||||||
# # ref https://github.com/dandavison/delta
|
# # ref https://github.com/dandavison/delta
|
||||||
# core.pager = "${pkgs.delta}/bin/delta";
|
# core.pager = "${pkgs.delta}/bin/delta";
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
'')
|
'')
|
||||||
(pkgs.writers.writeDashBin "hora-filli" ''
|
(pkgs.writers.writeDashBin "hora-filli" ''
|
||||||
${pkgs.hledger}/bin/hledger -f "${timeLedger}" register fillidefilla -O csv \
|
${pkgs.hledger}/bin/hledger -f "${timeLedger}" register fillidefilla -O csv \
|
||||||
-b "$(date -d "$(date +%Y-%m)-20 last month" +%Y-%m-%d)" \
|
-b "$(date -d "$(date +%Y-%m)-01 last month" +%Y-%m-%d)" \
|
||||||
-e "$(date -d "$(date +%Y-%m)-20" +%Y-%m-%d)" \
|
-e "$(date -d "$(date +%Y-%m)-01" +%Y-%m-%d)" \
|
||||||
| sed 's/(fillidefilla:\(.*\))/\1/g' \
|
| sed 's/(fillidefilla:\(.*\))/\1/g' \
|
||||||
| xsv select date,amount,total,account,description
|
| xsv select date,amount,total,account,description
|
||||||
'')
|
'')
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
show_thread_names = false;
|
show_thread_names = false;
|
||||||
sort_descending = true;
|
sort_descending = true;
|
||||||
sort_key = "PERCENT_CPU";
|
sort_key = "PERCENT_CPU";
|
||||||
tree_view = true;
|
tree_view = false;
|
||||||
update_process_names = false;
|
update_process_names = false;
|
||||||
right_meters = ["Uptime" "Tasks" "LoadAverage" "Battery"];
|
right_meters = ["Uptime" "Tasks" "LoadAverage" "Battery"];
|
||||||
left_meters = ["LeftCPUs2" "RightCPUs2" "Memory" "Swap"];
|
left_meters = ["LeftCPUs2" "RightCPUs2" "Memory" "Swap"];
|
||||||
|
|||||||
@@ -4,11 +4,13 @@
|
|||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.strings) fileContents;
|
inherit (import ../lib/email.nix) defaults;
|
||||||
inherit (import ../lib) sshPort;
|
hu-defaults = {
|
||||||
eduroam = {
|
imap.host = "mailbox.cms.hu-berlin.de";
|
||||||
identity = fileContents <secrets/eduroam/identity>;
|
imap.port = 993;
|
||||||
password = fileContents <secrets/eduroam/password>;
|
smtp.host = "mailhost.cms.hu-berlin.de";
|
||||||
|
smtp.port = 25;
|
||||||
|
smtp.tls.useStartTls = true;
|
||||||
};
|
};
|
||||||
hu-berlin-cifs-options = [
|
hu-berlin-cifs-options = [
|
||||||
"uid=${toString config.users.users.me.uid}"
|
"uid=${toString config.users.users.me.uid}"
|
||||||
@@ -17,7 +19,6 @@
|
|||||||
"workgroup=german"
|
"workgroup=german"
|
||||||
"credentials=${config.age.secrets.cifs-credentials-hu-berlin.path}"
|
"credentials=${config.age.secrets.cifs-credentials-hu-berlin.path}"
|
||||||
"noauto"
|
"noauto"
|
||||||
# "x-systemd.requires=hu-vpn.service"
|
|
||||||
"x-systemd.automount"
|
"x-systemd.automount"
|
||||||
"x-systemd.device-timeout=1"
|
"x-systemd.device-timeout=1"
|
||||||
"x-systemd.idle-timeout=1min"
|
"x-systemd.idle-timeout=1min"
|
||||||
@@ -35,15 +36,126 @@ in {
|
|||||||
options = hu-berlin-cifs-options;
|
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 = {
|
home-manager.users.me = {
|
||||||
matchBlocks = {
|
programs.ssh = {
|
||||||
"alew.hu-berlin.de" = {
|
matchBlocks = {
|
||||||
user = "centos";
|
"gruenau6.informatik.hu-berlin.de" = {
|
||||||
hostname = "141.20.187.219";
|
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 = [
|
environment.systemPackages = [
|
||||||
@@ -63,6 +175,9 @@ in {
|
|||||||
)
|
)
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# ref https://github.com/NixOS/nixpkgs/issues/231038#issuecomment-1591888919
|
||||||
|
environment.etc."ppp/options".text = "ipcp-accept-remote";
|
||||||
|
|
||||||
systemd.services.hu-vpn = {
|
systemd.services.hu-vpn = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wants = ["network-online.target"];
|
wants = ["network-online.target"];
|
||||||
@@ -77,7 +192,6 @@ in {
|
|||||||
host = forti-ssl.vpn.hu-berlin.de
|
host = forti-ssl.vpn.hu-berlin.de
|
||||||
port = 443
|
port = 443
|
||||||
username = meinhark
|
username = meinhark
|
||||||
trusted-cert = 9e5dea8e077970d245900839f437ef7fb9551559501c7defd70af70ea568573d
|
|
||||||
''
|
''
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|||||||
127
configs/i3.nix
127
configs/i3.nix
@@ -5,7 +5,7 @@
|
|||||||
niveumPackages,
|
niveumPackages,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (import ../lib) defaultApplications colours;
|
inherit (import ../lib) defaultApplications;
|
||||||
klem = niveumPackages.klem.override {
|
klem = niveumPackages.klem.override {
|
||||||
config.dmenu = "${pkgs.dmenu}/bin/dmenu -i -p klem";
|
config.dmenu = "${pkgs.dmenu}/bin/dmenu -i -p klem";
|
||||||
config.scripts = {
|
config.scripts = {
|
||||||
@@ -50,6 +50,9 @@
|
|||||||
emojai = pkgs.writers.writeDash "emojai" ''
|
emojai = pkgs.writers.writeDash "emojai" ''
|
||||||
${pkgs.curl}/bin/curl https://www.emojai.app/api/generate -X POST -H 'Content-Type: application/json' --data-raw "$(${pkgs.jq}/bin/jq -sR '{emoji:.}')" | ${pkgs.jq}/bin/jq -r .result
|
${pkgs.curl}/bin/curl https://www.emojai.app/api/generate -X POST -H 'Content-Type: application/json' --data-raw "$(${pkgs.jq}/bin/jq -sR '{emoji:.}')" | ${pkgs.jq}/bin/jq -r .result
|
||||||
'';
|
'';
|
||||||
|
gpt = pkgs.writers.writeDash "gpt" ''
|
||||||
|
${niveumPackages.gpt}/bin/gpt
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -81,6 +84,7 @@ in {
|
|||||||
displayManager.defaultSession = "none+i3";
|
displayManager.defaultSession = "none+i3";
|
||||||
windowManager.i3 = {
|
windowManager.i3 = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs.i3-gaps;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -107,14 +111,10 @@ in {
|
|||||||
bindsym --release ${modifier}+Shift+w exec /run/wrappers/bin/slock
|
bindsym --release ${modifier}+Shift+w exec /run/wrappers/bin/slock
|
||||||
'';
|
'';
|
||||||
config = rec {
|
config = rec {
|
||||||
fonts = {
|
|
||||||
names = ["Sans"];
|
|
||||||
size = 10.0;
|
|
||||||
};
|
|
||||||
inherit modifier;
|
inherit modifier;
|
||||||
window = {
|
window = {
|
||||||
titlebar = false;
|
titlebar = false;
|
||||||
border = 1;
|
border = 2;
|
||||||
hideEdgeBorders = "smart";
|
hideEdgeBorders = "smart";
|
||||||
commands = [
|
commands = [
|
||||||
{
|
{
|
||||||
@@ -141,78 +141,36 @@ in {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
gaps.inner = 4;
|
||||||
floating = {
|
floating = {
|
||||||
titlebar = false;
|
titlebar = false;
|
||||||
border = 1;
|
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 = [
|
bars = [
|
||||||
{
|
(config.home-manager.users.me.lib.stylix.i3.bar
|
||||||
workspaceButtons = false;
|
// rec {
|
||||||
fonts = {
|
workspaceButtons = false;
|
||||||
names = ["Monospace" "Font Awesome 6 Free"];
|
mode = "dock"; # "hide";
|
||||||
size = 8.0;
|
position = "bottom";
|
||||||
};
|
statusCommand = toString (pkgs.writers.writeDash "i3status-rust" ''
|
||||||
mode = "dock"; # "hide";
|
export I3RS_GITHUB_TOKEN="$(cat ${config.age.secrets.github-token-i3status-rust.path})"
|
||||||
position = "bottom";
|
export OPENWEATHERMAP_API_KEY="$(cat ${config.age.secrets.openweathermap-api-key.path})"
|
||||||
colors = rec {
|
${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
|
||||||
background = colours.background;
|
'');
|
||||||
separator = background;
|
fonts = {
|
||||||
statusline = colours.foreground;
|
names = ["${config.stylix.fonts.sansSerif.name}" "FontAwesome 6 Free"];
|
||||||
bindingMode = {
|
size = config.stylix.fonts.sizes.desktop * 0.8;
|
||||||
background = colours.red.bright;
|
|
||||||
border = colours.background;
|
|
||||||
text = colours.foreground;
|
|
||||||
};
|
};
|
||||||
};
|
})
|
||||||
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 = {
|
modes.resize = {
|
||||||
"Escape" = ''mode "default"'';
|
"Escape" = ''mode "default"'';
|
||||||
"Return" = ''mode "default"'';
|
"Return" = ''mode "default"'';
|
||||||
@@ -254,38 +212,15 @@ in {
|
|||||||
"${modifier}+r" = "mode resize";
|
"${modifier}+r" = "mode resize";
|
||||||
"${modifier}+v" = "split v";
|
"${modifier}+v" = "split v";
|
||||||
"${modifier}+w" = "layout tabbed";
|
"${modifier}+w" = "layout tabbed";
|
||||||
"${modifier}+q" = "exec ${pkgs.writers.writeDash "newsboat-sync" ''
|
"${modifier}+q" = "exec ${config.services.clipmenu.package}/bin/clipmenu";
|
||||||
notify-send --app-name="newsboat" "Updating ..."
|
|
||||||
newsboat -x reload
|
|
||||||
notify-send --app-name="newsboat" "Finished updating."
|
|
||||||
''}";
|
|
||||||
|
|
||||||
# "${modifier}+Shift+y" = "exec ${pkgs.qutebrowser}/bin/qutebrowser";
|
|
||||||
"${modifier}+Return" = "exec ${(defaultApplications pkgs).terminal}";
|
"${modifier}+Return" = "exec ${(defaultApplications pkgs).terminal}";
|
||||||
"${modifier}+t" = "exec ${(defaultApplications pkgs).fileManager}";
|
"${modifier}+t" = "exec ${(defaultApplications pkgs).fileManager}";
|
||||||
"${modifier}+y" = "exec ${(defaultApplications pkgs).browser}";
|
"${modifier}+y" = "exec ${(defaultApplications pkgs).browser}";
|
||||||
"${modifier}+0" = "exec ${niveumPackages.menu-calc}/bin/=";
|
"${modifier}+0" = "exec ${niveumPackages.menu-calc}/bin/=";
|
||||||
|
|
||||||
"${modifier}+d" = "exec ${pkgs.writers.writeDash "run" ''exec rofi -modi run,ssh,window -show run''}";
|
"${modifier}+d" = "exec ${pkgs.writers.writeDash "run" ''exec rofi -modi run,ssh,window -show run''}";
|
||||||
"${modifier}+Shift+d" = "exec ${
|
"${modifier}+Shift+d" = "exec ${niveumPackages.notemenu}/bin/notemenu";
|
||||||
pkgs.writers.writeDash "notemenu" ''
|
|
||||||
set -efu
|
|
||||||
PATH=$PATH:${
|
|
||||||
lib.makeBinPath [pkgs.rofi pkgs.findutils pkgs.coreutils]
|
|
||||||
}
|
|
||||||
|
|
||||||
cd ~/notes
|
|
||||||
note_file=$({
|
|
||||||
echo diary/$(date -I).md
|
|
||||||
echo diary/$(date -I -d yesterday).md
|
|
||||||
find . ! -name '.*' -type f -printf "%T@ %p\n" | sort --reverse --numeric-sort | cut --delimiter=" " --fields=2-
|
|
||||||
} | rofi -dmenu -i -p 'notes')
|
|
||||||
if test "$note_file"
|
|
||||||
then
|
|
||||||
alacritty --working-directory ~/notes -e "$EDITOR" "$note_file"
|
|
||||||
fi
|
|
||||||
''
|
|
||||||
}";
|
|
||||||
"${modifier}+p" = "exec rofi-pass";
|
"${modifier}+p" = "exec rofi-pass";
|
||||||
"${modifier}+Shift+p" = "exec rofi-pass --insert";
|
"${modifier}+Shift+p" = "exec rofi-pass --insert";
|
||||||
"${modifier}+u" = "exec ${niveumPackages.unicodmenu}/bin/unicodmenu";
|
"${modifier}+u" = "exec ${niveumPackages.unicodmenu}/bin/unicodmenu";
|
||||||
|
|||||||
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
|
||||||
|
)
|
||||||
|
}'
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
ara = "buckwalter";
|
ara = "buckwalter";
|
||||||
cop = "";
|
cop = "";
|
||||||
ave = "";
|
ave = "";
|
||||||
|
got = "";
|
||||||
"in" = "san-kagapa";
|
"in" = "san-kagapa";
|
||||||
il = "phonetic";
|
il = "phonetic";
|
||||||
};
|
};
|
||||||
@@ -37,6 +38,13 @@ in {
|
|||||||
sha256 = "1l0h6aq536hyinrh0i0ia355y229bjrlibii0sya5bmqh46vycia";
|
sha256 = "1l0h6aq536hyinrh0i0ia355y229bjrlibii0sya5bmqh46vycia";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "symbols/got";
|
||||||
|
path = pkgs.fetchurl {
|
||||||
|
url = "https://c.krebsco.de/got";
|
||||||
|
sha256 = "1i0jxghxi3rldlijw6gm2xawrv7f0pmm7a5cqbzzgjrg7ldk46gd";
|
||||||
|
};
|
||||||
|
}
|
||||||
{
|
{
|
||||||
name = "symbols/ave";
|
name = "symbols/ave";
|
||||||
path = pkgs.fetchurl {
|
path = pkgs.fetchurl {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
}: let
|
}: let
|
||||||
davHome = "~/.local/share/dav";
|
davHome = "~/.local/share/dav";
|
||||||
kmeinCloud = {
|
kmeinCloud = {
|
||||||
davEndpoint = "https://cloud.xn--kiern-0qa.de/remote.php/dav";
|
davEndpoint = "https://cloud.kmein.de/remote.php/dav";
|
||||||
username = "kieran";
|
username = "kieran";
|
||||||
passwordFile = config.age.secrets.nextcloud-password-kieran.path;
|
passwordFile = config.age.secrets.nextcloud-password-kieran.path;
|
||||||
};
|
};
|
||||||
@@ -54,8 +54,7 @@ in {
|
|||||||
wantedBy = ["default.target"];
|
wantedBy = ["default.target"];
|
||||||
startAt = "*:00/10";
|
startAt = "*:00/10";
|
||||||
script = ''
|
script = ''
|
||||||
${pkgs.vdirsyncer}/bin/vdirsyncer sync
|
${pkgs.vdirsyncer}/bin/vdirsyncer sync && ${pkgs.khal}/bin/khal printcalendars # https://lostpackets.de/khal/configure.html#syncing
|
||||||
${pkgs.khal}/bin/khal printcalendars # https://lostpackets.de/khal/configure.html#syncing
|
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
@@ -112,6 +111,10 @@ in {
|
|||||||
path = ${davHome}/calendar/personal
|
path = ${davHome}/calendar/personal
|
||||||
color = "light cyan"
|
color = "light cyan"
|
||||||
|
|
||||||
|
[[krebs]]
|
||||||
|
path = ${davHome}/calendar/krebs
|
||||||
|
color = "light red"
|
||||||
|
|
||||||
[[uni]]
|
[[uni]]
|
||||||
path = ${davHome}/calendar/uni-1
|
path = ${davHome}/calendar/uni-1
|
||||||
color = "yellow"
|
color = "yellow"
|
||||||
@@ -162,6 +165,12 @@ in {
|
|||||||
collections = ["personal", "alew", "uni-1"]
|
collections = ["personal", "alew", "uni-1"]
|
||||||
conflict_resolution = "b wins"
|
conflict_resolution = "b wins"
|
||||||
|
|
||||||
|
[pair krebs]
|
||||||
|
a = "kalender_local"
|
||||||
|
b = "krebs_cloud"
|
||||||
|
collections = ["3edef929-d509-7944-2440-000a54f2d054"]
|
||||||
|
conflict_resolution = "b wins"
|
||||||
|
|
||||||
[pair fysi]
|
[pair fysi]
|
||||||
a = "kalender_local"
|
a = "kalender_local"
|
||||||
b = "fysi_cloud"
|
b = "fysi_cloud"
|
||||||
@@ -190,6 +199,12 @@ in {
|
|||||||
username = "${kmeinCloud.username}"
|
username = "${kmeinCloud.username}"
|
||||||
password.fetch = ["command", "cat", "${kmeinCloud.passwordFile}"]
|
password.fetch = ["command", "cat", "${kmeinCloud.passwordFile}"]
|
||||||
|
|
||||||
|
[storage krebs_cloud]
|
||||||
|
type = "caldav"
|
||||||
|
url = "http://calendar.r/krebs/"
|
||||||
|
username = "krebs"
|
||||||
|
password = "krebs"
|
||||||
|
|
||||||
[storage fysi_cloud]
|
[storage fysi_cloud]
|
||||||
type = "caldav"
|
type = "caldav"
|
||||||
url = "${fysiCloud.davEndpoint}/calendars/${fysiCloud.username}/"
|
url = "${fysiCloud.davEndpoint}/calendars/${fysiCloud.username}/"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
startAt = "weekly";
|
startAt = "weekly";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
user = "kfm";
|
user = "kfm";
|
||||||
WorkingDirectory = "/home/kfm/cloud/Seafile/Books/Germanistik/LB";
|
WorkingDirectory = "/home/kfm/cloud/nextcloud/Books/Germanistik/LB";
|
||||||
};
|
};
|
||||||
script = ''
|
script = ''
|
||||||
first_year=2019
|
first_year=2019
|
||||||
|
|||||||
@@ -8,66 +8,33 @@
|
|||||||
environment.shellAliases.vim = "nvim";
|
environment.shellAliases.vim = "nvim";
|
||||||
environment.shellAliases.view = "nvim -R";
|
environment.shellAliases.view = "nvim -R";
|
||||||
|
|
||||||
environment.systemPackages = [
|
home-manager.users.me = {
|
||||||
(pkgs.writers.writeDashBin "vim" ''neovim "$@"'')
|
editorconfig = {
|
||||||
(pkgs.neovim.override {
|
enable = true;
|
||||||
configure = {
|
settings = {
|
||||||
customRC = ''
|
"*" = {
|
||||||
source ${../lib/vim/init.vim}
|
charset = "utf-8";
|
||||||
|
end_of_line = "lf";
|
||||||
luafile ${../lib/vim/init.lua}
|
trim_trailing_whitespace = true;
|
||||||
'';
|
insert_final_newline = true;
|
||||||
packages.nvim = with pkgs.vimPlugins; {
|
indent_style = "space";
|
||||||
start = [
|
indent_size = 2;
|
||||||
ale
|
};
|
||||||
fzf-vim
|
"*.py" = {
|
||||||
fzfWrapper
|
indent_size = 4;
|
||||||
supertab
|
};
|
||||||
undotree
|
Makefile = {
|
||||||
tabular
|
indent_style = "tab";
|
||||||
# vimwiki
|
};
|
||||||
niveumPackages.vimPlugins-vim-colors-paramount
|
"*.md" = {
|
||||||
nvim-lspconfig
|
trim_trailing_whitespace = false;
|
||||||
vim-commentary
|
|
||||||
vim-css-color
|
|
||||||
vim-eunuch
|
|
||||||
niveumPackages.vimPlugins-vim-fetch
|
|
||||||
vim-fugitive
|
|
||||||
vim-gitgutter
|
|
||||||
vim-repeat
|
|
||||||
vim-sensible
|
|
||||||
vim-surround
|
|
||||||
(pkgs.vimUtils.buildVimPlugin rec {
|
|
||||||
pname = "vim-dim";
|
|
||||||
version = "1.1.0";
|
|
||||||
name = "${pname}-${version}";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "jeffkreeftmeijer";
|
|
||||||
repo = pname;
|
|
||||||
rev = version;
|
|
||||||
sha256 = "sha256-lyTZUgqUEEJRrzGo1FD8/t8KBioPrtB3MmGvPeEVI/g=";
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
opt = [
|
|
||||||
csv
|
|
||||||
elm-vim
|
|
||||||
emmet-vim
|
|
||||||
haskell-vim
|
|
||||||
niveumPackages.vimPlugins-icalendar-vim
|
|
||||||
niveumPackages.vimPlugins-jq-vim
|
|
||||||
rust-vim
|
|
||||||
typescript-vim
|
|
||||||
vim-javascript
|
|
||||||
vim-ledger
|
|
||||||
vim-nix
|
|
||||||
vimtex
|
|
||||||
vim-pandoc
|
|
||||||
vim-pandoc-syntax
|
|
||||||
niveumPackages.vimPlugins-vim-256noir
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
(pkgs.writers.writeDashBin "vim" ''neovim "$@"'')
|
||||||
|
niveumPackages.vim
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,14 @@
|
|||||||
{pkgs, ...}: {
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
};
|
};
|
||||||
nix = {
|
nix = {
|
||||||
package = pkgs.nixFlakes;
|
package = pkgs.nixFlakes;
|
||||||
extraOptions = "experimental-features = nix-command flakes";
|
extraOptions = "experimental-features = nix-command flakes";
|
||||||
|
nixPath = ["nixpkgs=${inputs.nixpkgs}"];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
lib,
|
lib,
|
||||||
inputs,
|
inputs,
|
||||||
niveumPackages,
|
niveumPackages,
|
||||||
|
unstablePackages,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
worldradio = pkgs.callPackage ../packages/worldradio.nix {};
|
worldradio = pkgs.callPackage ../packages/worldradio.nix {};
|
||||||
@@ -95,6 +96,7 @@ in {
|
|||||||
genpass # generate passwords
|
genpass # generate passwords
|
||||||
gdu # ncurses disk usage (ncdu is broken)
|
gdu # ncurses disk usage (ncdu is broken)
|
||||||
rmlint # remove duplicate files
|
rmlint # remove duplicate files
|
||||||
|
gcc
|
||||||
python3Packages.jsonschema # json validation
|
python3Packages.jsonschema # json validation
|
||||||
jq # json toolkit
|
jq # json toolkit
|
||||||
pup # html toolkit
|
pup # html toolkit
|
||||||
@@ -123,6 +125,7 @@ in {
|
|||||||
electrum
|
electrum
|
||||||
inkscape
|
inkscape
|
||||||
astrolog
|
astrolog
|
||||||
|
obsidian
|
||||||
anki-bin # flashcards
|
anki-bin # flashcards
|
||||||
jbofihe # lojbanic software
|
jbofihe # lojbanic software
|
||||||
zoom-us # video conferencing
|
zoom-us # video conferencing
|
||||||
@@ -177,6 +180,9 @@ in {
|
|||||||
(niveumPackages.mpv-radio.override {
|
(niveumPackages.mpv-radio.override {
|
||||||
di-fm-key-file = config.age.secrets.di-fm-key.path;
|
di-fm-key-file = config.age.secrets.di-fm-key.path;
|
||||||
})
|
})
|
||||||
|
(niveumPackages.mpv-tuner.override {
|
||||||
|
di-fm-key-file = config.age.secrets.di-fm-key.path;
|
||||||
|
})
|
||||||
# kmein.slide
|
# kmein.slide
|
||||||
termdown
|
termdown
|
||||||
niveumPackages.image-convert-tolino
|
niveumPackages.image-convert-tolino
|
||||||
@@ -221,6 +227,12 @@ in {
|
|||||||
niveumPackages.kpaste
|
niveumPackages.kpaste
|
||||||
config.nur.repos.mic92.ircsink
|
config.nur.repos.mic92.ircsink
|
||||||
|
|
||||||
|
(haskellPackages.ghcWithHoogle (hs: [
|
||||||
|
hs.text
|
||||||
|
hs.lens
|
||||||
|
hs.bytestring
|
||||||
|
]))
|
||||||
|
|
||||||
(python3.withPackages (py: [
|
(python3.withPackages (py: [
|
||||||
py.black
|
py.black
|
||||||
# py.python-language-server
|
# py.python-language-server
|
||||||
@@ -239,16 +251,20 @@ in {
|
|||||||
texlab
|
texlab
|
||||||
nil
|
nil
|
||||||
rust-analyzer
|
rust-analyzer
|
||||||
|
elmPackages.elm-language-server
|
||||||
|
nodePackages.typescript-language-server
|
||||||
|
lua-language-server
|
||||||
|
nodePackages.vscode-langservers-extracted
|
||||||
|
|
||||||
html-tidy
|
html-tidy
|
||||||
nodePackages.csslint
|
nodePackages.csslint
|
||||||
nodePackages.jsonlint
|
nodePackages.jsonlint
|
||||||
nodePackages.prettier
|
nodePackages.prettier
|
||||||
nodePackages.typescript
|
nodePackages.typescript
|
||||||
|
nodePackages.eslint
|
||||||
nodePackages.yarn
|
nodePackages.yarn
|
||||||
deno # better node.js
|
deno # better node.js
|
||||||
nodejs
|
nodejs
|
||||||
nodePackages.javascript-typescript-langserver
|
|
||||||
texlive.combined.scheme-full
|
texlive.combined.scheme-full
|
||||||
latexrun
|
latexrun
|
||||||
(aspellWithDicts (dict: [dict.de dict.en dict.en-computers]))
|
(aspellWithDicts (dict: [dict.de dict.en dict.en-computers]))
|
||||||
@@ -259,8 +275,9 @@ in {
|
|||||||
libreoffice
|
libreoffice
|
||||||
# gnumeric
|
# gnumeric
|
||||||
dia
|
dia
|
||||||
pandoc
|
unstablePackages.pandoc
|
||||||
niveumPackages.man-pandoc
|
niveumPackages.man-pandoc
|
||||||
|
typst
|
||||||
# proselint
|
# proselint
|
||||||
asciidoctor
|
asciidoctor
|
||||||
wordnet
|
wordnet
|
||||||
@@ -273,6 +290,11 @@ in {
|
|||||||
(pkgs.writers.writeDashBin "hass-cli" ''
|
(pkgs.writers.writeDashBin "hass-cli" ''
|
||||||
HASS_SERVER=http://zaatar.r:8123 HASS_TOKEN="$(cat ${config.age.secrets.home-assistant-token.path})" exec ${pkgs.home-assistant-cli}/bin/hass-cli "$@"
|
HASS_SERVER=http://zaatar.r:8123 HASS_TOKEN="$(cat ${config.age.secrets.home-assistant-token.path})" exec ${pkgs.home-assistant-cli}/bin/hass-cli "$@"
|
||||||
'')
|
'')
|
||||||
|
|
||||||
|
# xml
|
||||||
|
saxonb_9_1
|
||||||
|
libxml2
|
||||||
|
zotero
|
||||||
];
|
];
|
||||||
|
|
||||||
age.secrets.home-assistant-token = {
|
age.secrets.home-assistant-token = {
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
services.picom = {
|
services.picom = {
|
||||||
enable = true;
|
enable = true;
|
||||||
activeOpacity = 1;
|
# activeOpacity = 1;
|
||||||
fade = true;
|
fade = true;
|
||||||
fadeDelta = 1;
|
fadeDelta = 1;
|
||||||
inactiveOpacity = 0.9;
|
# inactiveOpacity = 0.9;
|
||||||
shadow = true;
|
# shadow = true;
|
||||||
menuOpacity = 0.9;
|
# menuOpacity = 0.9;
|
||||||
shadowOpacity = 0.3;
|
# shadowOpacity = 0.3;
|
||||||
fadeExclude = [
|
fadeExclude = [
|
||||||
"class_g = 'slock'" # don't want a transparent lock screen!
|
"class_g = 'slock'" # don't want a transparent lock screen!
|
||||||
"name *?= 'slock'"
|
"name *?= 'slock'"
|
||||||
|
|||||||
@@ -1,14 +1,6 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (import <niveum/lib>) colours;
|
|
||||||
in {
|
|
||||||
home-manager.users.me.programs.rofi = {
|
home-manager.users.me.programs.rofi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
font = "Monospace 10";
|
|
||||||
theme = "${pkgs.rofi}/share/rofi/themes/Arc.rasi";
|
|
||||||
pass = {
|
pass = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
|
|||||||
@@ -1,12 +1,6 @@
|
|||||||
{
|
{pkgs, ...}: let
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (import ../lib) sshPort kieran;
|
inherit (import ../lib) sshPort kieran;
|
||||||
externalNetwork = import ../lib/external-network.nix;
|
externalNetwork = import ../lib/external-network.nix;
|
||||||
sshIdentity = name: "${config.users.users.me.home}/.ssh/${name}";
|
|
||||||
in {
|
in {
|
||||||
users.users.me.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
|
users.users.me.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
|
||||||
|
|
||||||
@@ -40,7 +34,7 @@ in {
|
|||||||
|
|
||||||
home-manager.users.me.programs.ssh = {
|
home-manager.users.me.programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
matchBlocks = rec {
|
matchBlocks = {
|
||||||
"github.com" = {
|
"github.com" = {
|
||||||
hostname = "ssh.github.com";
|
hostname = "ssh.github.com";
|
||||||
port = 443;
|
port = 443;
|
||||||
@@ -80,27 +74,6 @@ in {
|
|||||||
user = "kfm";
|
user = "kfm";
|
||||||
port = sshPort;
|
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";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,10 @@ in {
|
|||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
ports = [sshPort];
|
ports = [sshPort];
|
||||||
passwordAuthentication = false;
|
settings = {
|
||||||
forwardX11 = true;
|
PasswordAuthentication = false;
|
||||||
|
X11Forwarding = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users.root.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
|
users.users.root.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
|
inputs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
dictionaries = {
|
dictionaries = {
|
||||||
@@ -148,6 +149,7 @@
|
|||||||
sha256 = "1pk234pbq4pk55d8sjk0pp9j5sajm82f8804kf2xm2x5p387q1rg";
|
sha256 = "1pk234pbq4pk55d8sjk0pp9j5sajm82f8804kf2xm2x5p387q1rg";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
coptic.dictionary = inputs.coptic-dictionary.packages.x86_64-linux.coptic-stardict;
|
||||||
russian = {
|
russian = {
|
||||||
LingvoGermanRussian = pkgs.fetchzip {
|
LingvoGermanRussian = pkgs.fetchzip {
|
||||||
url = "http://download.huzheng.org/lingvo/stardict-GR-LingvoUniversal-2.4.2.tar.bz2";
|
url = "http://download.huzheng.org/lingvo/stardict-GR-LingvoUniversal-2.4.2.tar.bz2";
|
||||||
@@ -161,11 +163,11 @@
|
|||||||
turkish = {
|
turkish = {
|
||||||
BabylonTurkishEnglish = pkgs.fetchzip {
|
BabylonTurkishEnglish = pkgs.fetchzip {
|
||||||
url = "http://download.huzheng.org/babylon/bidirectional/stardict-babylon-Babylon_Turkish_English-2.4.2.tar.bz2";
|
url = "http://download.huzheng.org/babylon/bidirectional/stardict-babylon-Babylon_Turkish_English-2.4.2.tar.bz2";
|
||||||
sha256 = "17rv46r95nkikg7aszqmfrbgdhz9ny52w423m8n01g3p93shdb4i";
|
sha256 = "1zpzgk3w0536gww31bj58cmn3imnkndyjwbcr7bay8ibq2kzv44z";
|
||||||
};
|
};
|
||||||
BabylonEnglishTurkish = pkgs.fetchzip {
|
BabylonEnglishTurkish = pkgs.fetchzip {
|
||||||
url = "http://download.huzheng.org/babylon/bidirectional/stardict-babylon-Babylon_English_Turkish-2.4.2.tar.bz2";
|
url = "http://download.huzheng.org/babylon/bidirectional/stardict-babylon-Babylon_English_Turkish-2.4.2.tar.bz2";
|
||||||
sha256 = "063dl02s8ii8snsxgma8wi49xwr6afk6ysq0v986fygx5511353f";
|
sha256 = "0myx31xzb7nrn5m657h0bwdgm5xp93ccwp6lcpbxgjxdjm3q0hc5";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -313,6 +315,7 @@ in {
|
|||||||
(makeStardict "sd-russian" dictionaries.russian)
|
(makeStardict "sd-russian" dictionaries.russian)
|
||||||
(makeStardict "sd" dictionaries.englishGerman)
|
(makeStardict "sd" dictionaries.englishGerman)
|
||||||
(makeStardict "jbo" dictionaries.lojban)
|
(makeStardict "jbo" dictionaries.lojban)
|
||||||
|
(makeStardict "cop" dictionaries.coptic)
|
||||||
(makeStardict "sd-turkish" dictionaries.turkish)
|
(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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -8,23 +8,22 @@
|
|||||||
pkgs.writers.writePython3 "nachtischsatan-bot" {
|
pkgs.writers.writePython3 "nachtischsatan-bot" {
|
||||||
libraries = [pkgs.python3Packages.python-telegram-bot];
|
libraries = [pkgs.python3Packages.python-telegram-bot];
|
||||||
} ''
|
} ''
|
||||||
from telegram.ext import Updater, MessageHandler
|
from telegram.ext import Application, ContextTypes, MessageHandler, filters
|
||||||
from telegram.ext.filters import Filters
|
from telegram import Update
|
||||||
import random
|
import random
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
||||||
def flubber(update, context):
|
async def flubber(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||||||
time.sleep(random.randrange(4000) / 1000)
|
time.sleep(random.randrange(4000) / 1000)
|
||||||
update.message.reply_text("*flubberflubber*")
|
await update.message.reply_text("*flubberflubber*")
|
||||||
|
|
||||||
|
|
||||||
with open('${tokenFile}', 'r') as tokenFile:
|
with open('${tokenFile}', 'r') as tokenFile:
|
||||||
updater = Updater(tokenFile.read().strip())
|
token = tokenFile.read().strip()
|
||||||
|
application = Application.builder().token(token).build()
|
||||||
updater.dispatcher.add_handler(MessageHandler(Filters.all, flubber))
|
application.add_handler(MessageHandler(filters.ALL, flubber))
|
||||||
updater.start_polling()
|
application.run_polling()
|
||||||
updater.idle()
|
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
systemd.services.telegram-nachtischsatan = {
|
systemd.services.telegram-nachtischsatan = {
|
||||||
|
|||||||
@@ -1,82 +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
|
|
||||||
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/xsettings.conf".text = ''
|
|
||||||
Net/ThemeName "Adwaita"
|
|
||||||
'';
|
|
||||||
"themes/light/xresources".text = ''
|
|
||||||
*background: #ffffff
|
|
||||||
*foreground: #000000
|
|
||||||
'';
|
|
||||||
"themes/dark/xsettings.conf".text = ''
|
|
||||||
Net/ThemeName "Adwaita-dark"
|
|
||||||
'';
|
|
||||||
"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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
url = "http://prism.r/realwallpaper-krebs-stars-berlin.png";
|
url = "http://wallpaper.r/realwallpaper-krebs-stars-berlin.png";
|
||||||
stateDir = "~/.cache/wallpaper";
|
stateDir = "~/.cache/wallpaper";
|
||||||
in {
|
in {
|
||||||
systemd.user.services.wallpaper = {
|
systemd.user.services.wallpaper = {
|
||||||
|
|||||||
752
flake.lock
generated
752
flake.lock
generated
@@ -3,16 +3,19 @@
|
|||||||
"agenix": {
|
"agenix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
|
"home-manager": [
|
||||||
|
"home-manager"
|
||||||
|
],
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1680281360,
|
"lastModified": 1690228878,
|
||||||
"narHash": "sha256-XdLTgAzjJNDhAG2V+++0bHpSzfvArvr2pW6omiFfEJk=",
|
"narHash": "sha256-9Xe7JV0krp4RJC9W9W9WutZVlw6BlHTFMiUP/k48LQY=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "e64961977f60388dd0b49572bb0fc453b871f896",
|
"rev": "d8c973fd228949736dedf61b7f8cc1ece3236792",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -21,6 +24,24 @@
|
|||||||
"type": "github"
|
"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": {
|
"blessings": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -37,6 +58,27 @@
|
|||||||
"url": "https://cgit.krebsco.de/blessings"
|
"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": {
|
"darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -59,16 +101,32 @@
|
|||||||
"type": "github"
|
"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": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681202837,
|
"lastModified": 1692799911,
|
||||||
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
|
"narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
|
"rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -78,21 +136,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"flake-utils_2": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1659877975,
|
|
||||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_3": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676283394,
|
"lastModified": 1676283394,
|
||||||
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
||||||
@@ -107,93 +150,19 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_4": {
|
"fromYaml": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1659877975,
|
"lastModified": 1689549921,
|
||||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
"narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=",
|
||||||
"owner": "numtide",
|
"owner": "SenchoPens",
|
||||||
"repo": "flake-utils",
|
"repo": "fromYaml",
|
||||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
"rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "SenchoPens",
|
||||||
"repo": "flake-utils",
|
"repo": "fromYaml",
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_5": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1676283394,
|
|
||||||
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_6": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1659877975,
|
|
||||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_7": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1676283394,
|
|
||||||
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_8": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1659877975,
|
|
||||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_9": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1676283394,
|
|
||||||
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -201,24 +170,39 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
]
|
||||||
"utils": "utils"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681092193,
|
"lastModified": 1692099905,
|
||||||
"narHash": "sha256-JerCqqOqbT2tBnXQW4EqwFl0hHnuZp21rIQ6lu/N4rI=",
|
"narHash": "sha256-/pSusGhmIdSdAaywQRFA5dVbfdIzlWQTecM+E46+cJ0=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "f9edbedaf015013eb35f8caacbe0c9666bbc16af",
|
"rev": "2a6679aa9cc3872c29ba2a57fe1b71b3e3c5649f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-22.11",
|
"ref": "release-23.05",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"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": {
|
"menstruation-backend": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": [
|
"flake-utils": [
|
||||||
@@ -227,37 +211,9 @@
|
|||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": [
|
||||||
},
|
"rust-overlay"
|
||||||
"locked": {
|
]
|
||||||
"lastModified": 1677075142,
|
|
||||||
"narHash": "sha256-0RXVZcK2YtPckd/3+jb+yLpeXZ6jnQe25w9idztDXi8=",
|
|
||||||
"owner": "kmein",
|
|
||||||
"repo": "menstruation.rs",
|
|
||||||
"rev": "e34af4393963cdbadb456b7b9ae2e95e6db7b8a3",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "kmein",
|
|
||||||
"repo": "menstruation.rs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"menstruation-backend_2": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": [
|
|
||||||
"menstruation-telegram",
|
|
||||||
"menstruation-backend",
|
|
||||||
"rust-overlay",
|
|
||||||
"flake-utils"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"menstruation-telegram",
|
|
||||||
"menstruation-backend",
|
|
||||||
"rust-overlay",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"rust-overlay": "rust-overlay_2"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677075142,
|
"lastModified": 1677075142,
|
||||||
@@ -275,9 +231,15 @@
|
|||||||
},
|
},
|
||||||
"menstruation-telegram": {
|
"menstruation-telegram": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_3",
|
"flake-utils": [
|
||||||
"menstruation-backend": "menstruation-backend_2",
|
"flake-utils"
|
||||||
"nixpkgs": "nixpkgs_3"
|
],
|
||||||
|
"menstruation-backend": [
|
||||||
|
"menstruation-backend"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-old"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677075205,
|
"lastModified": 1677075205,
|
||||||
@@ -293,6 +255,56 @@
|
|||||||
"type": "github"
|
"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": {
|
"nixinate": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -300,11 +312,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1671116920,
|
"lastModified": 1688141737,
|
||||||
"narHash": "sha256-QmDGsUUmAGn77UTR7eQJmebl8f3IIUCtmbbAdJqKA3s=",
|
"narHash": "sha256-qHrNMYWukOKmKVf6wXOGKj1xxUnOGjvTRbt/PLLXuBE=",
|
||||||
"owner": "matthewcroughan",
|
"owner": "matthewcroughan",
|
||||||
"repo": "nixinate",
|
"repo": "nixinate",
|
||||||
"rev": "b4d17b8e2a4abc47e93e1a1c466e0286a63640d8",
|
"rev": "7902ae845e6cc5bd450e510cdf5e009a6e4a44d9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -315,100 +327,69 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1665296151,
|
"lastModified": 1692986144,
|
||||||
"narHash": "sha256-uOB0oxqxN9K7XGF1hcnY+PQnlQJ+3bP2vCn/+Ru/bbc=",
|
"narHash": "sha256-M4VFpy7Av9j+33HF5nIGm0k2+DXXW4qSSKdidIKg5jY=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "14ccaaedd95a488dd7ae142757884d8e125b3363",
|
"rev": "74e5bdc5478ebbe7ba5849f0d765f92757bb9dbf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixpkgs-unstable",
|
"ref": "nixos-23.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"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,
|
||||||
|
"narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-unstable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1693094031,
|
||||||
|
"narHash": "sha256-PyPWn5/WzryKDKuuiJJ8cd1BJCenhjbaicYQbwRM9Ao=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "38b9aaf6682015f1d2fc7b7f48da96992c30cfa3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "master",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1665296151,
|
|
||||||
"narHash": "sha256-uOB0oxqxN9K7XGF1hcnY+PQnlQJ+3bP2vCn/+Ru/bbc=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "14ccaaedd95a488dd7ae142757884d8e125b3363",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1669418739,
|
|
||||||
"narHash": "sha256-T86oFvcUIRwHWBWUt7WjaP4BP/3lDGbv5AppQSI1FkI=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "695b3515251873e0a7e2021add4bba643c56cde3",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "695b3515251873e0a7e2021add4bba643c56cde3",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_4": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681269223,
|
|
||||||
"narHash": "sha256-i6OeI2f7qGvmLfD07l1Az5iBL+bFeP0RHixisWtpUGo=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "87edbd74246ccdfa64503f334ed86fa04010bab9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-22.11",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_5": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1677158633,
|
|
||||||
"narHash": "sha256-t7za78oRkDIjdFQF0PCilfCziFyhfowCgs9Ry+sEvE4=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "129b6f78121802d18d215c9f9e04d7971c58ea0c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_6": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1665296151,
|
|
||||||
"narHash": "sha256-uOB0oxqxN9K7XGF1hcnY+PQnlQJ+3bP2vCn/+Ru/bbc=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "14ccaaedd95a488dd7ae142757884d8e125b3363",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_7": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1659446231,
|
"lastModified": 1659446231,
|
||||||
"narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=",
|
"narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=",
|
||||||
@@ -424,45 +405,74 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_8": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1665296151,
|
"lastModified": 1615532953,
|
||||||
"narHash": "sha256-uOB0oxqxN9K7XGF1hcnY+PQnlQJ+3bP2vCn/+Ru/bbc=",
|
"narHash": "sha256-SWpaGjrp/INzorEqMz3HLi6Uuk9I0KAn4YS8B4n3q5g=",
|
||||||
"owner": "NixOS",
|
"path": "/nix/store/vw365chp87kvfczxm26qiq7z2pq3jk5z-source",
|
||||||
"repo": "nixpkgs",
|
"rev": "916ee862e87ac5ee2439f2fb7856386b4dc906ae",
|
||||||
"rev": "14ccaaedd95a488dd7ae142757884d8e125b3363",
|
"type": "path"
|
||||||
"type": "github"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"id": "nixpkgs",
|
||||||
"ref": "nixpkgs-unstable",
|
"type": "indirect"
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_9": {
|
"nmd": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1669418739,
|
"lastModified": 1666190571,
|
||||||
"narHash": "sha256-T86oFvcUIRwHWBWUt7WjaP4BP/3lDGbv5AppQSI1FkI=",
|
"narHash": "sha256-Z1hc7M9X6L+H83o9vOprijpzhTfOBjd0KmUTnpHAVjA=",
|
||||||
"owner": "NixOS",
|
"owner": "rycee",
|
||||||
"repo": "nixpkgs",
|
"repo": "nmd",
|
||||||
"rev": "695b3515251873e0a7e2021add4bba643c56cde3",
|
"rev": "b75d312b4f33bd3294cd8ae5c2ca8c6da2afc169",
|
||||||
"type": "github"
|
"type": "gitlab"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "rycee",
|
||||||
"repo": "nixpkgs",
|
"repo": "nmd",
|
||||||
"rev": "695b3515251873e0a7e2021add4bba643c56cde3",
|
"type": "gitlab"
|
||||||
"type": "github"
|
}
|
||||||
|
},
|
||||||
|
"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": {
|
"nur": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681454031,
|
"lastModified": 1693082793,
|
||||||
"narHash": "sha256-JOamj7vKkFRp5mJ7FKt5dPfCmWj33sZLnBGDt15c/sc=",
|
"narHash": "sha256-di/x+vrMYmjSHabbiuPi6EZ0m6HoPXOVtA7ugU3rVZM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "8a35714f0be00235e2a1c8b759e6dc3888763d8b",
|
"rev": "0f81f016eecec153a26099beb25b0c8bac87bd23",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -474,8 +484,12 @@
|
|||||||
"recht": {
|
"recht": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"blessings": "blessings",
|
"blessings": "blessings",
|
||||||
"flake-utils": "flake-utils_5",
|
"flake-utils": [
|
||||||
"nixpkgs": "nixpkgs_5"
|
"flake-utils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677165419,
|
"lastModified": 1677165419,
|
||||||
@@ -493,11 +507,11 @@
|
|||||||
},
|
},
|
||||||
"retiolum": {
|
"retiolum": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681246809,
|
"lastModified": 1691992809,
|
||||||
"narHash": "sha256-3RUAwk0ApPjq2Ms8KiAh+gG6EJKWurIur612w2m3Zu8=",
|
"narHash": "sha256-qUTsMDSV2L5t6Oj+L60n0KQKbvOhak3+d6++h9AZJPg=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "c8ddb36f3d85be762aeb1893a79da36014f55658",
|
"rev": "6216c30551876303dac5373e92690a7f05fd0f6f",
|
||||||
"revCount": 296,
|
"revCount": 315,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.thalheim.io/Mic92/retiolum"
|
"url": "https://git.thalheim.io/Mic92/retiolum"
|
||||||
},
|
},
|
||||||
@@ -509,90 +523,44 @@
|
|||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
|
"coptic-dictionary": "coptic-dictionary",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"menstruation-backend": "menstruation-backend",
|
"menstruation-backend": "menstruation-backend",
|
||||||
"menstruation-telegram": "menstruation-telegram",
|
"menstruation-telegram": "menstruation-telegram",
|
||||||
|
"nix-on-droid": "nix-on-droid",
|
||||||
"nixinate": "nixinate",
|
"nixinate": "nixinate",
|
||||||
"nixpkgs": "nixpkgs_4",
|
"nixpkgs": "nixpkgs",
|
||||||
|
"nixpkgs-old": "nixpkgs-old",
|
||||||
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"recht": "recht",
|
"recht": "recht",
|
||||||
"retiolum": "retiolum",
|
"retiolum": "retiolum",
|
||||||
|
"rust-overlay": "rust-overlay",
|
||||||
"scripts": "scripts",
|
"scripts": "scripts",
|
||||||
|
"stylix": "stylix",
|
||||||
"telebots": "telebots",
|
"telebots": "telebots",
|
||||||
"tinc-graph": "tinc-graph",
|
"tinc-graph": "tinc-graph",
|
||||||
"traadfri": "traadfri",
|
"voidrice": "voidrice",
|
||||||
"voidrice": "voidrice"
|
"wallpaper-generator": "wallpaper-generator",
|
||||||
|
"wallpapers": "wallpapers"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_2",
|
"flake-utils": [
|
||||||
"nixpkgs": "nixpkgs"
|
"flake-utils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677033035,
|
"lastModified": 1693015707,
|
||||||
"narHash": "sha256-w6XsKaW46kZNEk2vVfuoNIBEq/YzDy9kNk8cU0xJZEQ=",
|
"narHash": "sha256-SFr93DYn502sVT9nB5U8/cKg1INyEk/jCeq8tHioz7Y=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "6c9e8ea3ba73a9fed29ddc1cc52ade8e5c946a8d",
|
"rev": "e90223633068a44f0fb62374e0fa360ccc987292",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-overlay_2": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils_4",
|
|
||||||
"nixpkgs": "nixpkgs_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1677033035,
|
|
||||||
"narHash": "sha256-w6XsKaW46kZNEk2vVfuoNIBEq/YzDy9kNk8cU0xJZEQ=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"rev": "6c9e8ea3ba73a9fed29ddc1cc52ade8e5c946a8d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-overlay_3": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils_6",
|
|
||||||
"nixpkgs": "nixpkgs_6"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1677119371,
|
|
||||||
"narHash": "sha256-L0Da4eKzDZrsy8ysOS1lhgDjAgEqGvYGf/lXaRd5/YQ=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"rev": "c67c79ea25664d66e74ae91a6fa0d6c65d12d3a7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-overlay_4": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils_8",
|
|
||||||
"nixpkgs": "nixpkgs_8"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1677119371,
|
|
||||||
"narHash": "sha256-L0Da4eKzDZrsy8ysOS1lhgDjAgEqGvYGf/lXaRd5/YQ=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"rev": "c67c79ea25664d66e74ae91a6fa0d6c65d12d3a7",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -604,23 +572,21 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": [
|
"flake-utils": [
|
||||||
"scripts",
|
|
||||||
"rust-overlay",
|
|
||||||
"flake-utils"
|
"flake-utils"
|
||||||
],
|
],
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"scripts",
|
|
||||||
"rust-overlay",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"rust-overlay": "rust-overlay_3"
|
"rust-overlay": [
|
||||||
|
"rust-overlay"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677271864,
|
"lastModified": 1689276466,
|
||||||
"narHash": "sha256-BghYMB/lauerExMsDtGZNGZGdoGuF7LPtbmpyh9ycyA=",
|
"narHash": "sha256-T+1f2GsTDzfiEasSPntbaSsJvpJxZ78a5g6CL4NyAK0=",
|
||||||
"owner": "kmein",
|
"owner": "kmein",
|
||||||
"repo": "scripts",
|
"repo": "scripts",
|
||||||
"rev": "79bffac7f9eda1b3be76f2a4ff18d81b44c74390",
|
"rev": "55dff522684f342f4e970116ab374ba999539288",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -629,6 +595,32 @@
|
|||||||
"type": "github"
|
"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": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
@@ -646,8 +638,8 @@
|
|||||||
},
|
},
|
||||||
"telebots": {
|
"telebots": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_7",
|
"flake-utils": "flake-utils_2",
|
||||||
"nixpkgs": "nixpkgs_7"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677156381,
|
"lastModified": 1677156381,
|
||||||
@@ -671,14 +663,16 @@
|
|||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"rust-overlay": "rust-overlay_4"
|
"rust-overlay": [
|
||||||
|
"rust-overlay"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677160040,
|
"lastModified": 1687504941,
|
||||||
"narHash": "sha256-UhyZaIZ88vN/7fiBcamfV77eHjQnL8zSVznaqxLgbhs=",
|
"narHash": "sha256-wnCRcQn8izEHE8MfBpPkLezxAMIg7SVTq8CZsgkar54=",
|
||||||
"owner": "kmein",
|
"owner": "kmein",
|
||||||
"repo": "tinc-graph",
|
"repo": "tinc-graph",
|
||||||
"rev": "f705ca35e30ab0daf9cf52000e58931d7c5c42b5",
|
"rev": "91a3a85beaaec4ec43ea5a41322c3a5a6e04edc4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -687,48 +681,14 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"traadfri": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils_9",
|
|
||||||
"nixpkgs": "nixpkgs_9"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1677165914,
|
|
||||||
"narHash": "sha256-3N08NabgDwTUy1n5wxpT27iddFrgXW35E1x2UgAKkDQ=",
|
|
||||||
"owner": "kmein",
|
|
||||||
"repo": "traadfri",
|
|
||||||
"rev": "11571116ed5d2c6478c615d663d1f96f57a97ba9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "kmein",
|
|
||||||
"repo": "traadfri",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"utils": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1667395993,
|
|
||||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"voidrice": {
|
"voidrice": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681301489,
|
"lastModified": 1692950210,
|
||||||
"narHash": "sha256-5Zz33Q3E4A9nsEmxPQikYeX7Rvu3hM+PlXx/0SIqG34=",
|
"narHash": "sha256-0RHvrinkg8LEV/aGnT2n9MNOwaf2ke/YAXRIipZiT2w=",
|
||||||
"owner": "Lukesmithxyz",
|
"owner": "Lukesmithxyz",
|
||||||
"repo": "voidrice",
|
"repo": "voidrice",
|
||||||
"rev": "d4ff2ebaf3e88efe20cae0d1e592fddfc433c96e",
|
"rev": "86f05abcce1fd270032975775adb40040c746cfe",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -736,6 +696,44 @@
|
|||||||
"repo": "voidrice",
|
"repo": "voidrice",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"wallpaper-generator": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": [
|
||||||
|
"flake-utils"
|
||||||
|
],
|
||||||
|
"nixpkgs": "nixpkgs_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1615819231,
|
||||||
|
"narHash": "sha256-vZzc1ViF/3rCm81+x+pyneuOzoWd0przy9ULgwhGSj4=",
|
||||||
|
"owner": "pinpox",
|
||||||
|
"repo": "wallpaper-generator",
|
||||||
|
"rev": "a2223b9b0c51e0eee0d0b23a5e87228e370bdd5c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "pinpox",
|
||||||
|
"ref": "v1.1",
|
||||||
|
"repo": "wallpaper-generator",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wallpapers": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1589319718,
|
||||||
|
"narHash": "sha256-2NruGq3z37vY3uAH8S4sLqHvFAGi8gaDJAgEzMIvM/4=",
|
||||||
|
"owner": "kmein",
|
||||||
|
"repo": "wallpapers",
|
||||||
|
"rev": "7c553bc6bd78afa6dbf2824691466bbad0d8e6e9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "kmein",
|
||||||
|
"repo": "wallpapers",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
143
flake.nix
143
flake.nix
@@ -3,44 +3,99 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
agenix.url = "github:ryantm/agenix";
|
agenix.url = "github:ryantm/agenix";
|
||||||
|
coptic-dictionary.url = "github:kmein/coptic-dictionary";
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
home-manager.url = "github:nix-community/home-manager/release-22.11";
|
home-manager.url = "github:nix-community/home-manager/release-23.05";
|
||||||
menstruation-backend.url = "github:kmein/menstruation.rs";
|
menstruation-backend.url = "github:kmein/menstruation.rs";
|
||||||
menstruation-telegram.url = "github:kmein/menstruation-telegram";
|
menstruation-telegram.url = "github:kmein/menstruation-telegram";
|
||||||
|
nix-on-droid.url = "github:t184256/nix-on-droid/release-23.05";
|
||||||
nixinate.url = "github:matthewcroughan/nixinate";
|
nixinate.url = "github:matthewcroughan/nixinate";
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11";
|
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";
|
nur.url = "github:nix-community/NUR";
|
||||||
recht.url = "github:kmein/recht";
|
recht.url = "github:kmein/recht";
|
||||||
scripts.url = "github:kmein/scripts";
|
|
||||||
retiolum.url = "git+https://git.thalheim.io/Mic92/retiolum";
|
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";
|
telebots.url = "github:kmein/telebots";
|
||||||
tinc-graph.url = "github:kmein/tinc-graph";
|
tinc-graph.url = "github:kmein/tinc-graph";
|
||||||
traadfri.url = "github:kmein/traadfri";
|
|
||||||
voidrice.url = "github:Lukesmithxyz/voidrice";
|
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";
|
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
coptic-dictionary.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
menstruation-backend.inputs.flake-utils.follows = "flake-utils";
|
menstruation-backend.inputs.flake-utils.follows = "flake-utils";
|
||||||
menstruation-backend.inputs.nixpkgs.follows = "nixpkgs";
|
menstruation-backend.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
menstruation-backend.inputs.rust-overlay.follows = "rust-overlay";
|
||||||
|
menstruation-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";
|
nixinate.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
recht.inputs.flake-utils.follows = "flake-utils";
|
||||||
|
recht.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
rust-overlay.inputs.flake-utils.follows = "flake-utils";
|
||||||
|
rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
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.flake-utils.follows = "flake-utils";
|
||||||
tinc-graph.inputs.nixpkgs.follows = "nixpkgs";
|
tinc-graph.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
tinc-graph.inputs.rust-overlay.follows = "rust-overlay";
|
||||||
voidrice.flake = false;
|
voidrice.flake = false;
|
||||||
|
wallpaper-generator.inputs.flake-utils.follows = "flake-utils";
|
||||||
|
wallpapers.flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ {
|
outputs = inputs @ {
|
||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
|
nixpkgs-unstable,
|
||||||
nur,
|
nur,
|
||||||
home-manager,
|
home-manager,
|
||||||
nixinate,
|
nixinate,
|
||||||
agenix,
|
agenix,
|
||||||
retiolum,
|
retiolum,
|
||||||
flake-utils,
|
flake-utils,
|
||||||
|
nix-on-droid,
|
||||||
|
stylix,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
apps = nixinate.nixinate.x86_64-linux self;
|
apps =
|
||||||
|
nixinate.nixinate.x86_64-linux self
|
||||||
|
// {
|
||||||
|
x86_64-linux = let
|
||||||
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
in {
|
||||||
|
mock-secrets = {
|
||||||
|
type = "app";
|
||||||
|
program = toString (pkgs.writers.writeDash "mock-secrets" ''
|
||||||
|
${pkgs.findutils}/bin/find secrets -not -path '*/.*' -type f | ${pkgs.coreutils}/bin/sort > secrets.txt
|
||||||
|
'');
|
||||||
|
};
|
||||||
|
deploy = {
|
||||||
|
type = "app";
|
||||||
|
program = toString (pkgs.writers.writeDash "deploy" ''
|
||||||
|
if [ $# -eq 0 ]
|
||||||
|
then
|
||||||
|
systems='${toString (builtins.attrNames self.nixosConfigurations)}'
|
||||||
|
else
|
||||||
|
systems=$*
|
||||||
|
fi
|
||||||
|
${pkgs.parallel}/bin/parallel --line-buffer --tagstring '{}' 'nix run .\?submodules=1\#apps.nixinate.{}' ::: $systems
|
||||||
|
'');
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
nixosModules = {
|
nixosModules = {
|
||||||
htgen = import modules/htgen.nix;
|
htgen = import modules/htgen.nix;
|
||||||
@@ -49,24 +104,48 @@
|
|||||||
passport = import modules/passport.nix;
|
passport = import modules/passport.nix;
|
||||||
panoptikon = import modules/panoptikon.nix;
|
panoptikon = import modules/panoptikon.nix;
|
||||||
power-action = import modules/power-action.nix;
|
power-action = import modules/power-action.nix;
|
||||||
specus = import modules/specus.nix;
|
|
||||||
system-dependent = import modules/system-dependent.nix;
|
system-dependent = import modules/system-dependent.nix;
|
||||||
telegram-bot = import modules/telegram-bot.nix;
|
telegram-bot = import modules/telegram-bot.nix;
|
||||||
traadfri = import modules/traadfri.nix;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
lib = {
|
lib = {
|
||||||
panoptikon = import lib/panoptikon.nix;
|
panoptikon = import lib/panoptikon.nix;
|
||||||
};
|
};
|
||||||
|
|
||||||
nixosConfigurations = {
|
nixOnDroidConfigurations = {
|
||||||
ful = nixpkgs.lib.nixosSystem rec {
|
moto = nix-on-droid.lib.nixOnDroidConfiguration {
|
||||||
system = "aarch64-linux";
|
modules = [systems/moto/configuration.nix];
|
||||||
specialArgs = {
|
pkgs = import nixpkgs {
|
||||||
niveumPackages = inputs.self.packages.${system};
|
system = "aarch64-linux";
|
||||||
|
overlays = [nix-on-droid.overlays.default];
|
||||||
|
};
|
||||||
|
extraSpecialArgs = {
|
||||||
|
niveumPackages = inputs.self.packages.aarch64-linux;
|
||||||
niveumLib = inputs.self.lib;
|
niveumLib = inputs.self.lib;
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
};
|
};
|
||||||
|
home-manager-path = home-manager.outPath;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nixosConfigurations = let
|
||||||
|
niveumSpecialArgs = system: {
|
||||||
|
unstablePackages = import nixpkgs-unstable {
|
||||||
|
inherit system;
|
||||||
|
config.allowUnfreePredicate = pkg:
|
||||||
|
builtins.elem (nixpkgs-unstable.lib.getName pkg) [
|
||||||
|
"obsidian"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
niveumPackages = inputs.self.packages.${system};
|
||||||
|
niveumLib = inputs.self.lib;
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
ful = nixpkgs.lib.nixosSystem rec {
|
||||||
|
system = "aarch64-linux";
|
||||||
|
specialArgs = niveumSpecialArgs system;
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
_module.args.nixinate = {
|
_module.args.nixinate = {
|
||||||
@@ -80,7 +159,6 @@
|
|||||||
systems/ful/configuration.nix
|
systems/ful/configuration.nix
|
||||||
agenix.nixosModules.default
|
agenix.nixosModules.default
|
||||||
inputs.self.nixosModules.passport
|
inputs.self.nixosModules.passport
|
||||||
inputs.self.nixosModules.specus
|
|
||||||
inputs.self.nixosModules.panoptikon
|
inputs.self.nixosModules.panoptikon
|
||||||
retiolum.nixosModules.retiolum
|
retiolum.nixosModules.retiolum
|
||||||
nur.nixosModules.nur
|
nur.nixosModules.nur
|
||||||
@@ -88,10 +166,7 @@
|
|||||||
};
|
};
|
||||||
zaatar = nixpkgs.lib.nixosSystem rec {
|
zaatar = nixpkgs.lib.nixosSystem rec {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
specialArgs = {
|
specialArgs = niveumSpecialArgs system;
|
||||||
niveumPackages = inputs.self.packages.${system};
|
|
||||||
inherit inputs;
|
|
||||||
};
|
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
_module.args.nixinate = {
|
_module.args.nixinate = {
|
||||||
@@ -111,16 +186,13 @@
|
|||||||
makanek = nixpkgs.lib.nixosSystem rec {
|
makanek = nixpkgs.lib.nixosSystem rec {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
# for using inputs in other config files
|
# for using inputs in other config files
|
||||||
specialArgs = {
|
specialArgs = niveumSpecialArgs system;
|
||||||
niveumPackages = inputs.self.packages.${system};
|
|
||||||
inherit inputs;
|
|
||||||
};
|
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
_module.args.nixinate = {
|
_module.args.nixinate = {
|
||||||
host = "makanek";
|
host = "makanek";
|
||||||
sshUser = "root";
|
sshUser = "root";
|
||||||
buildOn = "remote";
|
buildOn = "local";
|
||||||
substituteOnTarget = true;
|
substituteOnTarget = true;
|
||||||
hermetic = false;
|
hermetic = false;
|
||||||
};
|
};
|
||||||
@@ -129,7 +201,6 @@
|
|||||||
inputs.self.nixosModules.telegram-bot
|
inputs.self.nixosModules.telegram-bot
|
||||||
inputs.self.nixosModules.htgen
|
inputs.self.nixosModules.htgen
|
||||||
inputs.self.nixosModules.passport
|
inputs.self.nixosModules.passport
|
||||||
inputs.self.nixosModules.specus
|
|
||||||
agenix.nixosModules.default
|
agenix.nixosModules.default
|
||||||
retiolum.nixosModules.retiolum
|
retiolum.nixosModules.retiolum
|
||||||
nur.nixosModules.nur
|
nur.nixosModules.nur
|
||||||
@@ -153,16 +224,13 @@
|
|||||||
};
|
};
|
||||||
manakish = nixpkgs.lib.nixosSystem rec {
|
manakish = nixpkgs.lib.nixosSystem rec {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
specialArgs = {
|
specialArgs = niveumSpecialArgs system;
|
||||||
niveumPackages = inputs.self.packages.${system};
|
|
||||||
inherit inputs;
|
|
||||||
};
|
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
_module.args.nixinate = {
|
_module.args.nixinate = {
|
||||||
host = "manakish";
|
host = "manakish";
|
||||||
sshUser = "root";
|
sshUser = "root";
|
||||||
buildOn = "remote";
|
buildOn = "local";
|
||||||
substituteOnTarget = true;
|
substituteOnTarget = true;
|
||||||
hermetic = false;
|
hermetic = false;
|
||||||
};
|
};
|
||||||
@@ -172,14 +240,12 @@
|
|||||||
retiolum.nixosModules.retiolum
|
retiolum.nixosModules.retiolum
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
nur.nixosModules.nur
|
nur.nixosModules.nur
|
||||||
|
stylix.nixosModules.stylix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
kabsa = nixpkgs.lib.nixosSystem rec {
|
kabsa = nixpkgs.lib.nixosSystem rec {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
specialArgs = {
|
specialArgs = niveumSpecialArgs system;
|
||||||
niveumPackages = inputs.self.packages.${system};
|
|
||||||
inherit inputs;
|
|
||||||
};
|
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
_module.args.nixinate = {
|
_module.args.nixinate = {
|
||||||
@@ -193,9 +259,9 @@
|
|||||||
systems/kabsa/configuration.nix
|
systems/kabsa/configuration.nix
|
||||||
agenix.nixosModules.default
|
agenix.nixosModules.default
|
||||||
retiolum.nixosModules.retiolum
|
retiolum.nixosModules.retiolum
|
||||||
inputs.self.nixosModules.specus
|
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
nur.nixosModules.nur
|
nur.nixosModules.nur
|
||||||
|
stylix.nixosModules.stylix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -211,6 +277,9 @@
|
|||||||
})
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
unstablePackages = import nixpkgs-unstable {
|
||||||
|
inherit system;
|
||||||
|
};
|
||||||
wrapScript = {
|
wrapScript = {
|
||||||
packages ? [],
|
packages ? [],
|
||||||
name,
|
name,
|
||||||
@@ -238,6 +307,7 @@
|
|||||||
genius = pkgs.callPackage packages/genius.nix {};
|
genius = pkgs.callPackage packages/genius.nix {};
|
||||||
gfs-fonts = pkgs.callPackage packages/gfs-fonts.nix {};
|
gfs-fonts = pkgs.callPackage packages/gfs-fonts.nix {};
|
||||||
git-preview = pkgs.callPackage packages/git-preview.nix {};
|
git-preview = pkgs.callPackage packages/git-preview.nix {};
|
||||||
|
gpt = pkgs.callPackage packages/gpt.nix {};
|
||||||
hc = pkgs.callPackage packages/hc.nix {};
|
hc = pkgs.callPackage packages/hc.nix {};
|
||||||
heuretes = pkgs.callPackage packages/heuretes.nix {};
|
heuretes = pkgs.callPackage packages/heuretes.nix {};
|
||||||
htgen = pkgs.callPackage packages/htgen.nix {};
|
htgen = pkgs.callPackage packages/htgen.nix {};
|
||||||
@@ -261,11 +331,13 @@
|
|||||||
menu-calc = pkgs.callPackage packages/menu-calc.nix {};
|
menu-calc = pkgs.callPackage packages/menu-calc.nix {};
|
||||||
meteo = pkgs.callPackage packages/meteo.nix {};
|
meteo = pkgs.callPackage packages/meteo.nix {};
|
||||||
mpv-radio = pkgs.callPackage packages/mpv-radio.nix {di-fm-key-file = "/dev/null";};
|
mpv-radio = pkgs.callPackage packages/mpv-radio.nix {di-fm-key-file = "/dev/null";};
|
||||||
|
mpv-tuner = pkgs.callPackage packages/mpv-tuner.nix {di-fm-key-file = "/dev/null";};
|
||||||
mpv-tv = pkgs.callPackage packages/mpv-tv.nix {};
|
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 {};
|
new-mac = pkgs.callPackage packages/new-mac.nix {};
|
||||||
nix-git = pkgs.callPackage packages/nix-git.nix {};
|
nix-git = pkgs.callPackage packages/nix-git.nix {};
|
||||||
nix-index-update = pkgs.callPackage packages/nix-index-update.nix {inherit system;};
|
nix-index-update = pkgs.callPackage packages/nix-index-update.nix {inherit system;};
|
||||||
|
notemenu = pkgs.callPackage packages/notemenu.nix {niveumPackages = self.packages.${system};};
|
||||||
opustags = pkgs.callPackage packages/opustags.nix {};
|
opustags = pkgs.callPackage packages/opustags.nix {};
|
||||||
pls = pkgs.callPackage packages/pls.nix {};
|
pls = pkgs.callPackage packages/pls.nix {};
|
||||||
qrpaste = pkgs.callPackage packages/qrpaste.nix {};
|
qrpaste = pkgs.callPackage packages/qrpaste.nix {};
|
||||||
@@ -280,9 +352,12 @@
|
|||||||
unicodmenu = pkgs.callPackage packages/unicodmenu.nix {};
|
unicodmenu = pkgs.callPackage packages/unicodmenu.nix {};
|
||||||
untilport = pkgs.callPackage packages/untilport.nix {};
|
untilport = pkgs.callPackage packages/untilport.nix {};
|
||||||
vg = pkgs.callPackage packages/vg.nix {};
|
vg = pkgs.callPackage packages/vg.nix {};
|
||||||
|
vim = pkgs.callPackage packages/vim.nix {niveumPackages = self.packages.${system};};
|
||||||
|
obsidian-vim = pkgs.callPackage packages/obsidian-vim.nix {};
|
||||||
vimPlugins-cheat-sh-vim = pkgs.callPackage packages/vimPlugins/cheat-sh.nix {};
|
vimPlugins-cheat-sh-vim = pkgs.callPackage packages/vimPlugins/cheat-sh.nix {};
|
||||||
vimPlugins-icalendar-vim = pkgs.callPackage packages/vimPlugins/icalendar-vim.nix {};
|
vimPlugins-icalendar-vim = pkgs.callPackage packages/vimPlugins/icalendar-vim.nix {};
|
||||||
vimPlugins-jq-vim = pkgs.callPackage packages/vimPlugins/jq-vim.nix {};
|
vimPlugins-jq-vim = pkgs.callPackage packages/vimPlugins/jq-vim.nix {};
|
||||||
|
vimPlugins-typst-vim = pkgs.callPackage packages/vimPlugins/typst-vim.nix {};
|
||||||
vimPlugins-vim-256noir = pkgs.callPackage packages/vimPlugins/vim-256noir.nix {};
|
vimPlugins-vim-256noir = pkgs.callPackage packages/vimPlugins/vim-256noir.nix {};
|
||||||
vimPlugins-vim-colors-paramount = pkgs.callPackage packages/vimPlugins/vim-colors-paramount.nix {};
|
vimPlugins-vim-colors-paramount = pkgs.callPackage packages/vimPlugins/vim-colors-paramount.nix {};
|
||||||
vimPlugins-vim-fetch = pkgs.callPackage packages/vimPlugins/vim-fetch.nix {};
|
vimPlugins-vim-fetch = pkgs.callPackage packages/vimPlugins/vim-fetch.nix {};
|
||||||
|
|||||||
@@ -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,37 +0,0 @@
|
|||||||
rec {
|
|
||||||
black = {
|
|
||||||
bright = "#282c34";
|
|
||||||
dark = "#282c34";
|
|
||||||
};
|
|
||||||
red = {
|
|
||||||
bright = "#e06c75";
|
|
||||||
dark = "#e06c75";
|
|
||||||
};
|
|
||||||
green = {
|
|
||||||
bright = "#98c379";
|
|
||||||
dark = "#98c379";
|
|
||||||
};
|
|
||||||
yellow = {
|
|
||||||
bright = "#e5c07b";
|
|
||||||
dark = "#e5c07b";
|
|
||||||
};
|
|
||||||
blue = {
|
|
||||||
bright = "#61afef";
|
|
||||||
dark = "#61afef";
|
|
||||||
};
|
|
||||||
magenta = {
|
|
||||||
bright = "#c678dd";
|
|
||||||
dark = "#c678dd";
|
|
||||||
};
|
|
||||||
cyan = {
|
|
||||||
bright = "#56b6c2";
|
|
||||||
dark = "#56b6c2";
|
|
||||||
};
|
|
||||||
white = {
|
|
||||||
bright = "#dcdfe4";
|
|
||||||
dark = "#dcdfe4";
|
|
||||||
};
|
|
||||||
background = black.dark;
|
|
||||||
foreground = 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 = "#efefef";
|
|
||||||
};
|
|
||||||
background = white.dark;
|
|
||||||
foreground = "#181818";
|
|
||||||
cursor = "#bbbbbb";
|
|
||||||
}
|
|
||||||
@@ -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 = {
|
tmpfilesConfig = {
|
||||||
type,
|
type,
|
||||||
path,
|
path,
|
||||||
@@ -40,8 +40,6 @@ rec {
|
|||||||
|
|
||||||
sshPort = 22022;
|
sshPort = 22022;
|
||||||
|
|
||||||
colours = import ./colours/owickstrom-dark.nix;
|
|
||||||
|
|
||||||
theme = pkgs: {
|
theme = pkgs: {
|
||||||
gtk = {
|
gtk = {
|
||||||
name = "Adwaita-dark";
|
name = "Adwaita-dark";
|
||||||
|
|||||||
@@ -1,14 +1,7 @@
|
|||||||
{lib, ...}: {
|
{
|
||||||
cock = rec {
|
defaults = {
|
||||||
user = "2210@cock.li";
|
aerc.enable = true;
|
||||||
address = user;
|
realName = "Kierán Meinhardt";
|
||||||
imap = "mail.cock.li";
|
folders.inbox = "INBOX";
|
||||||
smtp = imap;
|
|
||||||
smtpSettings = smtp: "smtp://${smtp}:587";
|
|
||||||
folders = {
|
|
||||||
drafts = "Drafts";
|
|
||||||
sent = "Sent";
|
|
||||||
trash = "Trash";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,224 +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 = {
|
|
||||||
name = "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.name = "awesome6";
|
|
||||||
icons.overrides.rss = "";
|
|
||||||
icons.overrides.vpn = "";
|
|
||||||
icons.overrides.irc = "";
|
|
||||||
block = [
|
|
||||||
{
|
|
||||||
block = "weather";
|
|
||||||
autolocate = true;
|
|
||||||
format = "{location}: {temp}C";
|
|
||||||
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 = "newsboat-unread-count";
|
|
||||||
json = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
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 = "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 = "{ssid} {signal_strength}";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
block = "battery";
|
|
||||||
device = batteryName;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
block = "sound";
|
|
||||||
on_click = "pavucontrol";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
block = "disk_space";
|
|
||||||
format = "{icon} {available}";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
block = "memory";
|
|
||||||
display_type = "memory";
|
|
||||||
format_mem = "{mem_used;G}";
|
|
||||||
clickable = false;
|
|
||||||
}
|
|
||||||
{block = "load";}
|
|
||||||
{
|
|
||||||
block = "custom";
|
|
||||||
interval = 1;
|
|
||||||
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";
|
android = "192.168.178.35";
|
||||||
manakish = "192.168.178.29";
|
manakish = "192.168.178.29";
|
||||||
|
|
||||||
tradfri = "192.168.178.28";
|
|
||||||
officejet = "192.168.178.27";
|
officejet = "192.168.178.27";
|
||||||
fritzbox = "192.168.178.1";
|
fritzbox = "192.168.178.1";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
nick ? ''"$PANOPTIKON_WATCHER"-watcher'',
|
nick ? ''"$PANOPTIKON_WATCHER"-watcher'',
|
||||||
}:
|
}:
|
||||||
pkgs.writers.writeDash "kpaste-irc-reporter" ''
|
pkgs.writers.writeDash "kpaste-irc-reporter" ''
|
||||||
${niveumPackages.kpaste}/bin/kpaste \
|
KPASTE_CONTENT_TYPE=text/plain ${niveumPackages.kpaste}/bin/kpaste \
|
||||||
| ${pkgs.gnused}/bin/sed -n "${
|
| ${pkgs.gnused}/bin/sed -n "${
|
||||||
if retiolumLink
|
if retiolumLink
|
||||||
then "2"
|
then "2"
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ let
|
|||||||
radiorecord = "radiorecord";
|
radiorecord = "radiorecord";
|
||||||
rap = "rap";
|
rap = "rap";
|
||||||
rock = "rock";
|
rock = "rock";
|
||||||
|
rekt = "rekt";
|
||||||
russian = "russia";
|
russian = "russia";
|
||||||
schlager = "schlager";
|
schlager = "schlager";
|
||||||
soma = "soma";
|
soma = "soma";
|
||||||
@@ -54,6 +55,26 @@ let
|
|||||||
di-fm-name = name: "${name} | DI.FM";
|
di-fm-name = name: "${name} | DI.FM";
|
||||||
di-fm = name: "http://prem3.di.fm/${name}_hi?${di-fm-key}";
|
di-fm = name: "http://prem3.di.fm/${name}_hi?${di-fm-key}";
|
||||||
|
|
||||||
|
classicalradio-name = name: "${name} | ClassicalRadio";
|
||||||
|
classicalradio = name: "http://prem2.classicalradio.com:80/${name}?${di-fm-key}";
|
||||||
|
classicalradio-channels = ["20thcentury" "21stcentury" "adagios" "bach" "ballets" "baroqueperiod" "beethoven" "brahms" "celloworks" "chamberworks" "chopin" "choralworks" "classicalguitarworks" "classicalperiod" "classicalpianotrios" "classicalrelaxation" "concertos" "contemporaryperiod" "debussy" "easyclassical" "fluteworks" "gregorianchant" "grieg" "handel" "harpsichordworks" "haydn" "liszt" "medievalperiod" "mozart" "nocturnes" "operahighlights" "operas" "orchestralworks" "organworks" "overtures" "pianoworks" "relaxingflute" "relaxingpiano" "renaissanceperiod" "romanticperiod" "sacredworks" "schubert" "shostakovich" "soloinstruments" "solopiano" "sonatas" "songsnlieders" "stringworks" "symphonies" "tchaikovsky" "telemann" "trumpetworks" "violinworks" "vivaldi" "waltzespolkasnmarches" "windworks"];
|
||||||
|
|
||||||
|
rockradio-name = name: "${name} | RockRadio";
|
||||||
|
rockradio = name: "http://prem2.rockradio.com:80/${name}?${di-fm-key}";
|
||||||
|
rockradio-channels = ["00srock" "60srock" "70srock" "80srock" "90srock" "alternative80s" "alternative90s" "alternativerock" "blackmetal" "bluesrock" "classicfolkrock" "classichardrock" "classicmetal" "classicrock" "deathmetal" "grunge" "hairbands" "hardrock" "heavymetal" "indierock" "industrial" "melodicdeathmetal" "metal" "metalcore" "modernfolkrock" "modernrock" "numetal" "poprock" "powermetal" "progressiverock" "punkrock" "rockballads" "screamoemo" "softrock" "symphonicmetal" "thrashmetal" "yachtrock"];
|
||||||
|
|
||||||
|
jazzradio-name = name: "${name} | JazzRadio";
|
||||||
|
jazzradio = name: "http://prem2.jazzradio.com:80/${name}?${di-fm-key}";
|
||||||
|
jazzradio-channels = ["afrojazz" "bassjazz" "bebop" "blues" "bluesrock" "bossanova" "classicjazz" "cocktailjazz" "coffeejazz" "cooljazz" "currentjazz" "davekoz" "fusionlounge" "guitarjazz" "gypsyjazz" "hardbop" "jazzballads" "jazzhop" "latenightjazz" "latinjazz" "lovesmoothjazz" "mellowjazz" "mellowpianojazz" "mellowsmoothjazz" "modernbigband" "pariscafe" "pianojazz" "pianotrios" "saxophonejazz" "sinatrastyle" "smoothbossanova" "smoothjazz" "smoothjazz247" "smoothlounge" "smoothuptempo" "smoothvocals" "straightahead" "swingnbigband" "timelessclassics" "trumpetjazz" "vibraphonejazz" "vocaljazz" "vocallegends"];
|
||||||
|
|
||||||
|
zenradio-name = name: "${name} | ZenRadio";
|
||||||
|
zenradio = name: "http://prem4.zenradio.com:80/zr${name}?${di-fm-key}";
|
||||||
|
zenradio-channels = ["acousticvocalchillout" "ambient" "atmosphericdreams" "babysleep" "chillout" "chilloutdreams" "deepconcentration" "deepfocus" "downtempolounge" "eastasianmeditation" "lovenrelaxation" "meditation" "nativeamericanflute" "nature" "newage" "oceansounds" "peacefulhealing" "perfectsunsets" "pregnancyrelaxation" "reiki" "relaxation" "relaxingclassical" "relaxingflute" "relaxingguitar" "relaxingpiano" "relaxingspanmassage" "shamanicmusic" "sleeprelaxation" "soundsofrain" "spacedreams" "stressrelief" "studymusic" "tibetanmusic" "tibetansingingbowls" "tranquilitynhealing" "vocalchillout" "vocalnewage" "yoga" "zen"];
|
||||||
|
|
||||||
|
radiotunes-name = name: "${name} | RadioTunes";
|
||||||
|
radiotunes = name: "http://prem1.radiotunes.com:80/${name}_hi?${di-fm-key}";
|
||||||
|
radiotunes-channels = ["00scountry" "00sdance" "00srnb" "00srock" "60srock" "70srock" "80saltnnewwave" "80sdance" "80srock" "90scountry" "90sdance" "90srnb" "90srock" "altrock" "ambient" "americansongbook" "baroque" "bebop" "bluesrock" "bossanova" "cafedeparis" "chillntropicalhouse" "chillout" "christian" "classical" "classicalperiod" "classicalpianotrios" "classicmotown" "classicrap" "classicrock" "clubbollywood" "coffeejazz" "country" "cubanlounge" "dancehits" "datempolounge" "davekoz" "discoparty" "downtempolounge" "dreamscapes" "easylistening" "edmfest" "epicmusic" "eurodance" "guitar" "hardrock" "hit00s" "hit60s" "hit70s" "hit90s" "indiedance" "indierock" "jazzclassics" "jpop" "latinpophits" "lounge" "lovemusic" "meditation" "mellowjazz" "mellowsmoothjazz" "metal" "modernblues" "modernrock" "mozart" "nature" "newage" "oldies" "oldschoolfunknsoul" "pianojazz" "poprock" "reggaeton" "relaxation" "relaxingambientpiano" "romantic" "romantica" "romanticalatina" "rootsreggae" "salsa" "sleeprelaxation" "slowjams" "smoothbeats" "smoothbossanova" "smoothjazz" "smoothjazz247" "smoothlounge" "softrock" "solopiano" "soundtracks" "the80s" "tophits" "uptemposmoothjazz" "urbanjamz" "urbanpophits" "vocalchillout" "vocallounge" "vocalnewage" "vocalsmoothjazz" "world"];
|
||||||
|
|
||||||
soma-fm-name = name: "${name} | soma.fm";
|
soma-fm-name = name: "${name} | soma.fm";
|
||||||
soma-fm = name: "http://ice1.somafm.com/${name}-128-aac";
|
soma-fm = name: "http://ice1.somafm.com/${name}-128-aac";
|
||||||
|
|
||||||
@@ -69,6 +90,9 @@ let
|
|||||||
rte-name = name: "RTÉ ${name}";
|
rte-name = name: "RTÉ ${name}";
|
||||||
rte = name: "https://www.rte.ie/manifests/${name}.m3u8";
|
rte = name: "https://www.rte.ie/manifests/${name}.m3u8";
|
||||||
|
|
||||||
|
rekt-name = name: "Rekt ${name}";
|
||||||
|
rekt = name: "https://stream.rekt.network/${name}.m4a";
|
||||||
|
|
||||||
royal-name = name: "${name} | RoyalRadio";
|
royal-name = name: "${name} | RoyalRadio";
|
||||||
royal = name: "http://193.33.170.218:8000/${name}";
|
royal = name: "http://193.33.170.218:8000/${name}";
|
||||||
|
|
||||||
@@ -1937,12 +1961,51 @@ in
|
|||||||
station = "The Quran Radio";
|
station = "The Quran Radio";
|
||||||
tags = [tags.arabic tags.text tags.holy];
|
tags = [tags.arabic tags.text tags.holy];
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
stream = "http://www.radioeins.de/livemp3";
|
||||||
|
station = "radioeins | RBB";
|
||||||
|
tags = [tags.top40 tags.pop];
|
||||||
|
}
|
||||||
]
|
]
|
||||||
++ map (name: {
|
++ map (name: {
|
||||||
stream = "https://${name}.stream.publicradio.org/${name}.aac";
|
stream = "https://${name}.stream.publicradio.org/${name}.aac";
|
||||||
station = "${name} | Your Classical";
|
station = "${name} | Your Classical";
|
||||||
tags = [tags.classical];
|
tags = [tags.classical];
|
||||||
}) ["ycradio" "guitar" "cms" "relax" "lullabies" "choral" "favorites" "chambermusic" "concertband" "holiday"]
|
}) ["ycradio" "guitar" "cms" "relax" "lullabies" "choral" "favorites" "chambermusic" "concertband" "holiday"]
|
||||||
|
++ map (name: {
|
||||||
|
stream = "https://stream.rekt.network/${name}.m4a";
|
||||||
|
station = "${name} | Rekt Network";
|
||||||
|
tags = [tags.rekt];
|
||||||
|
}) ["rekt" "rektory" "nightride" "chillsynth" "datawave" "spacesynth" "darksynth" "horrorsynth" "ebsm"]
|
||||||
|
++ map (name: {
|
||||||
|
stream = radiotunes name;
|
||||||
|
station = radiotunes-name name;
|
||||||
|
})
|
||||||
|
radiotunes-channels
|
||||||
|
++ map (name: {
|
||||||
|
stream = rockradio name;
|
||||||
|
station = rockradio-name name;
|
||||||
|
tags = [tags.rock];
|
||||||
|
})
|
||||||
|
rockradio-channels
|
||||||
|
++ map (name: {
|
||||||
|
stream = jazzradio name;
|
||||||
|
station = jazzradio-name name;
|
||||||
|
tags = [tags.jazz];
|
||||||
|
})
|
||||||
|
jazzradio-channels
|
||||||
|
++ map (name: {
|
||||||
|
stream = zenradio name;
|
||||||
|
station = zenradio-name name;
|
||||||
|
tags = [tags.chill];
|
||||||
|
})
|
||||||
|
zenradio-channels
|
||||||
|
++ map (name: {
|
||||||
|
stream = classicalradio name;
|
||||||
|
station = classicalradio-name name;
|
||||||
|
tags = [tags.classical];
|
||||||
|
})
|
||||||
|
classicalradio-channels
|
||||||
/*
|
/*
|
||||||
(caster-fm "TODO" "noasrv" 10182) # https://github.com/cccruzr/albumsyoumusthear/blob/7e00baf575e4d357cd275d54d1aeb717321141a8/HLS/IBERO_90_1.m3u
|
(caster-fm "TODO" "noasrv" 10182) # https://github.com/cccruzr/albumsyoumusthear/blob/7e00baf575e4d357cd275d54d1aeb717321141a8/HLS/IBERO_90_1.m3u
|
||||||
(caster-fm "TODO" "shaincast" 20866) # https://github.com/cccruzr/albumsyoumusthear/blob/7e00baf575e4d357cd275d54d1aeb717321141a8/HLS/IBERO_90_1.m3u
|
(caster-fm "TODO" "shaincast" 20866) # https://github.com/cccruzr/albumsyoumusthear/blob/7e00baf575e4d357cd275d54d1aeb717321141a8/HLS/IBERO_90_1.m3u
|
||||||
@@ -1969,5 +2032,8 @@ http://n0b.radiojar.com/1pu7hhf8kfhvv
|
|||||||
|
|
||||||
Chillout from kassel
|
Chillout from kassel
|
||||||
https://server4.streamserver24.com:2199/tunein/ejanowsk.pls
|
https://server4.streamserver24.com:2199/tunein/ejanowsk.pls
|
||||||
|
|
||||||
|
Jazz
|
||||||
|
http://37.251.146.169:7800/stream
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,79 @@
|
|||||||
|
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 = {
|
||||||
|
expand = function(args)
|
||||||
|
luasnip.lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
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' },
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities())
|
||||||
|
|
||||||
local opts = { noremap=true, silent=true }
|
local opts = { noremap=true, silent=true }
|
||||||
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
|
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
|
||||||
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
|
vim.keymap.set('n', '<space>dn', vim.diagnostic.goto_prev, opts)
|
||||||
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
|
vim.keymap.set('n', '<space>dp', vim.diagnostic.goto_next, opts)
|
||||||
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
|
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
|
||||||
|
|
||||||
-- Use an on_attach function to only map the following keys
|
-- Use an on_attach function to only map the following keys
|
||||||
-- after the language server attaches to the current buffer
|
-- after the language server attaches to the current buffer
|
||||||
local on_attach = function(client, bufnr)
|
local on_attach = function(client, bufnr)
|
||||||
-- Enable completion triggered by <c-x><c-o>
|
-- Enable completion triggered by <c-x><c-o>
|
||||||
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
-- vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
||||||
|
|
||||||
-- Mappings.
|
-- Mappings.
|
||||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
||||||
local bufopts = { noremap=true, silent=true, buffer=bufnr }
|
local bufopts = { noremap=true, silent=true, buffer=bufnr }
|
||||||
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
|
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
|
||||||
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
|
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
|
||||||
|
vim.keymap.set('n', 'gt', vim.lsp.buf.type_definition, bufopts)
|
||||||
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
|
||||||
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
|
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
|
||||||
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
|
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
|
||||||
|
vim.keymap.set('n', '<space>f', vim.lsp.buf.format, bufopts)
|
||||||
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
|
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
|
||||||
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
|
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
|
||||||
vim.keymap.set('n', '<space>wl', function()
|
vim.keymap.set('n', '<space>wl', function()
|
||||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
end, bufopts)
|
end, bufopts)
|
||||||
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
|
|
||||||
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
|
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
|
||||||
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
|
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
|
||||||
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
|
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
|
||||||
@@ -35,20 +85,38 @@ local lsp_flags = {
|
|||||||
debounce_text_changes = 150,
|
debounce_text_changes = 150,
|
||||||
}
|
}
|
||||||
|
|
||||||
language_servers = {
|
local language_servers = {
|
||||||
|
clangd = {},
|
||||||
pyright = {}, -- pyright
|
pyright = {}, -- pyright
|
||||||
-- tsserver = {}, -- typescript-language-server
|
tsserver = {}, -- typescript-language-server
|
||||||
-- elmls = {}, -- elm-language-server
|
cssls = {},
|
||||||
|
elmls = {}, -- elm-language-server
|
||||||
-- denols = {}, -- deno built in
|
-- denols = {}, -- deno built in
|
||||||
-- bashls = {}, -- bash-language-server
|
bashls = {}, -- bash-language-server
|
||||||
|
lua_ls = {
|
||||||
|
Lua = {
|
||||||
|
runtime = {
|
||||||
|
version = 'LuaJIT',
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
globals = {'vim'},
|
||||||
|
},
|
||||||
|
workspace = {
|
||||||
|
library = vim.api.nvim_get_runtime_file("", true)
|
||||||
|
},
|
||||||
|
telemetry = {
|
||||||
|
enable = false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
hls = {}, -- haskell-language-server
|
hls = {}, -- haskell-language-server
|
||||||
-- html = {}, -- vscode-langservers-extracted
|
html = {}, -- vscode-langservers-extracted
|
||||||
-- jsonls = {}, -- vscode-langservers-extracted
|
jsonls = {}, -- vscode-langservers-extracted
|
||||||
nil_ls = {}, -- github:oxalica/nil
|
nil_ls = {}, -- github:oxalica/nil
|
||||||
-- rnix = {}, -- rnix-lsp
|
-- rnix = {}, -- rnix-lsp
|
||||||
-- jqls = {}, -- jq-lsp
|
jqls = {}, -- jq-lsp
|
||||||
rust_analyzer = { ["rust-analyzer"] = {} },
|
rust_analyzer = { ["rust-analyzer"] = {} },
|
||||||
-- eslint?
|
eslint = {},
|
||||||
-- volar? vls?
|
-- volar? vls?
|
||||||
texlab = {
|
texlab = {
|
||||||
texlab = {
|
texlab = {
|
||||||
@@ -82,5 +150,6 @@ for server, settings in pairs(language_servers) do
|
|||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
flags = lsp_flags,
|
flags = lsp_flags,
|
||||||
settings = settings,
|
settings = settings,
|
||||||
|
capabilities = capabilities
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,26 +3,12 @@ vnoremap a= :Tabularize /=<CR>
|
|||||||
vnoremap a; :Tabularize /::<CR>
|
vnoremap a; :Tabularize /::<CR>
|
||||||
vnoremap a- :Tabularize /-><CR>
|
vnoremap a- :Tabularize /-><CR>
|
||||||
|
|
||||||
nnoremap <C-p> :FZF<CR>
|
|
||||||
nnoremap <C-l> :Rg<CR>
|
|
||||||
let g:fzf_layout = { 'down': '~15%' }
|
|
||||||
|
|
||||||
colorscheme dim
|
colorscheme dim
|
||||||
" transparent background
|
|
||||||
hi Normal guibg=NONE ctermbg=NONE
|
|
||||||
|
|
||||||
let mapleader = ","
|
|
||||||
let maplocalleader="\\"
|
|
||||||
|
|
||||||
" noremap <Leader>h :<C-u>split<CR>
|
" noremap <Leader>h :<C-u>split<CR>
|
||||||
" noremap <Leader>v :<C-u>vsplit<CR>
|
" noremap <Leader>v :<C-u>vsplit<CR>
|
||||||
noremap <Leader>gs :Git<CR>
|
noremap <Leader>gs :Git<CR>
|
||||||
noremap <Leader>gc :Git commit<CR>
|
noremap <Leader>gc :Git commit<CR>
|
||||||
noremap <leader>n :bn<CR>
|
|
||||||
noremap <leader>p :bp<CR>
|
|
||||||
noremap <leader>c :bd<CR>
|
|
||||||
noremap <leader>b :Buffers<CR>
|
|
||||||
noremap <leader>t :Tags<CR>
|
|
||||||
|
|
||||||
" reindent whole file
|
" reindent whole file
|
||||||
noremap <leader>i mzgg=G`z
|
noremap <leader>i mzgg=G`z
|
||||||
@@ -30,18 +16,11 @@ noremap <leader>i mzgg=G`z
|
|||||||
" replace all
|
" replace all
|
||||||
nnoremap S :%s//g<Left><Left>
|
nnoremap S :%s//g<Left><Left>
|
||||||
|
|
||||||
nnoremap <Leader>a <Plug>(ale_hover)
|
|
||||||
nnoremap <Leader>d <Plug>(ale_go_to_definition_in_tab)
|
|
||||||
nnoremap <Leader>rf <Plug>(ale_find_references)
|
|
||||||
|
|
||||||
" Hit `%` on `if` to jump to `else`.
|
" Hit `%` on `if` to jump to `else`.
|
||||||
runtime macros/matchit.vim
|
runtime macros/matchit.vim
|
||||||
|
|
||||||
filetype plugin indent on
|
|
||||||
set autoindent
|
|
||||||
set notitle
|
set notitle
|
||||||
set nospell
|
set nospell
|
||||||
set smartcase ignorecase " you need these two
|
|
||||||
set backspace=indent,eol,start
|
set backspace=indent,eol,start
|
||||||
set hidden
|
set hidden
|
||||||
set ruler
|
set ruler
|
||||||
@@ -51,21 +30,13 @@ set number
|
|||||||
set path+=**
|
set path+=**
|
||||||
set splitbelow splitright
|
set splitbelow splitright
|
||||||
set wildmenu wildmode=longest,list,full
|
set wildmenu wildmode=longest,list,full
|
||||||
set shortmess+=aI
|
set shortmess+=ac
|
||||||
set nowritebackup noswapfile
|
|
||||||
set mouse=a
|
|
||||||
set showmatch
|
set showmatch
|
||||||
set encoding=utf8 ffs=unix,dos,mac
|
|
||||||
set smartindent
|
set smartindent
|
||||||
set wrap
|
set hlsearch
|
||||||
set nohlsearch
|
|
||||||
set clipboard=unnamedplus
|
|
||||||
set nopaste
|
|
||||||
set list listchars=tab:⇥\ ,extends:❯,precedes:❮,nbsp:␣,trail:· showbreak=¬
|
|
||||||
set foldlevelstart=30
|
set foldlevelstart=30
|
||||||
|
|
||||||
iabbrev ddate <C-R>=strftime("%F")<CR>
|
nnoremap <C-H> <CMD>set nohlsearch<CR>
|
||||||
iabbrev dtime <C-R>=strftime("%F %T")<CR>
|
|
||||||
|
|
||||||
let g:netrw_banner=0
|
let g:netrw_banner=0
|
||||||
let g:netrw_browse_split=4
|
let g:netrw_browse_split=4
|
||||||
@@ -126,6 +97,7 @@ augroup filetypes
|
|||||||
autocmd bufnewfile,bufread *.rust packadd rust-vim
|
autocmd bufnewfile,bufread *.rust packadd rust-vim
|
||||||
autocmd bufnewfile,bufread *.csv packadd csv.vim | set filetype=csv
|
autocmd bufnewfile,bufread *.csv packadd csv.vim | set filetype=csv
|
||||||
autocmd bufnewfile,bufread *.tex packadd vimtex | set filetype=tex
|
autocmd bufnewfile,bufread *.tex packadd vimtex | set filetype=tex
|
||||||
|
autocmd bufnewfile,bufread *.typ packadd typst.vim | set filetype=typst
|
||||||
autocmd bufnewfile,bufread *.ics packadd icalendar.vim | set filetype=icalendar
|
autocmd bufnewfile,bufread *.ics packadd icalendar.vim | set filetype=icalendar
|
||||||
autocmd bufnewfile,bufread *.ts packadd typescript-vim | set filetype=typescript
|
autocmd bufnewfile,bufread *.ts packadd typescript-vim | set filetype=typescript
|
||||||
autocmd bufnewfile,bufread *.jq packadd jq.vim
|
autocmd bufnewfile,bufread *.jq packadd jq.vim
|
||||||
@@ -148,47 +120,9 @@ autocmd bufreadpost *
|
|||||||
\ endif
|
\ endif
|
||||||
autocmd bufreadpre * setlocal foldmethod=indent
|
autocmd bufreadpre * setlocal foldmethod=indent
|
||||||
|
|
||||||
set completeopt=noinsert,menuone,noselect
|
set completeopt=menu,menuone,noselect
|
||||||
set complete+=kspell
|
set complete+=kspell
|
||||||
|
|
||||||
let g:SuperTabDefaultCompletionType = 'context'
|
|
||||||
|
|
||||||
let g:haskell_enable_quantification = 1
|
|
||||||
let g:haskell_enable_recursivedo = 1
|
|
||||||
let g:haskell_enable_arrowsyntax = 1
|
|
||||||
let g:haskell_enable_pattern_synonyms = 1
|
|
||||||
|
|
||||||
let g:pandoc#syntax#conceal#use = 0
|
let g:pandoc#syntax#conceal#use = 0
|
||||||
let g:pandoc#modules#disabled = []
|
let g:pandoc#modules#disabled = []
|
||||||
let g:pandoc#spell#default_langs = ['en', 'de']
|
let g:pandoc#spell#default_langs = ['en', 'de']
|
||||||
|
|
||||||
let g:ale_linters = {
|
|
||||||
\ 'css': ['csslint'],
|
|
||||||
\ 'haskell': ['ghc', 'cabal-ghc', 'hlint', 'ormolu'],
|
|
||||||
\ 'html': ['tidy', 'proselint'],
|
|
||||||
\ 'latex': ['lacheck', 'chktex', 'proselint'],
|
|
||||||
\ 'pandoc': ['proselint'],
|
|
||||||
\ 'ruby': ['rubocop'],
|
|
||||||
\ 'json': ['jsonlint'],
|
|
||||||
\ 'rust': ['cargo'],
|
|
||||||
\ 'python': ['pyls'],
|
|
||||||
\}
|
|
||||||
let g:ale_fixers = {
|
|
||||||
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
|
|
||||||
\ 'javascript': ['prettier'],
|
|
||||||
\ 'typescript': ['prettier'],
|
|
||||||
\ 'css': ['prettier'],
|
|
||||||
\ 'html': ['prettier'],
|
|
||||||
\ 'json': ['jq'],
|
|
||||||
\ 'python': ['black'],
|
|
||||||
\ 'rust': ['rustfmt']
|
|
||||||
\}
|
|
||||||
let g:ale_set_quickfix = 1
|
|
||||||
|
|
||||||
let g:ale_fix_on_save = 1
|
|
||||||
autocmd bufnewfile,bufread elm.json let g:ale_fix_on_save = 0
|
|
||||||
|
|
||||||
let g:ale_completion_enabled = 1
|
|
||||||
|
|
||||||
let g:vimwiki_list = [{'path': '~/notes/',
|
|
||||||
\ 'syntax': 'markdown', 'ext': '.md'}]
|
|
||||||
|
|||||||
30
lib/vim/shared.vim
Normal file
30
lib/vim/shared.vim
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
nnoremap <C-p> :FZF<CR>
|
||||||
|
nnoremap <C-l> :Rg<CR>
|
||||||
|
let g:fzf_layout = { 'down': '~15%' }
|
||||||
|
|
||||||
|
" transparent background
|
||||||
|
hi Normal guibg=NONE ctermbg=NONE
|
||||||
|
|
||||||
|
let mapleader = ","
|
||||||
|
let maplocalleader="\\"
|
||||||
|
noremap <leader>n :bn<CR>
|
||||||
|
noremap <leader>p :bp<CR>
|
||||||
|
noremap <leader>c :bd<CR>
|
||||||
|
noremap <leader>b :Buffers<CR>
|
||||||
|
noremap <leader>t :Tags<CR>
|
||||||
|
|
||||||
|
set nocompatible
|
||||||
|
syntax on
|
||||||
|
filetype plugin indent on
|
||||||
|
set autoindent
|
||||||
|
set smartcase ignorecase " you need these two
|
||||||
|
set nowritebackup noswapfile
|
||||||
|
set mouse=a
|
||||||
|
set encoding=utf8 ffs=unix,dos,mac
|
||||||
|
set wrap
|
||||||
|
set list listchars=tab:⇥\ ,extends:❯,precedes:❮,nbsp:␣,trail:· showbreak=¬
|
||||||
|
set clipboard=unnamedplus
|
||||||
|
set nopaste
|
||||||
|
|
||||||
|
iabbrev ddate <C-R>=strftime("%F")<CR>
|
||||||
|
iabbrev dtime <C-R>=strftime("%F %T")<CR>
|
||||||
@@ -113,16 +113,17 @@
|
|||||||
set -efu
|
set -efu
|
||||||
|
|
||||||
${watcherOptions.script} > ${watcherName}
|
${watcherOptions.script} > ${watcherName}
|
||||||
${pkgs.git}/bin/git add ${watcherName}
|
|
||||||
${pkgs.git}/bin/git commit --message "${watcherName} / $(${pkgs.coreutils}/bin/date -Is)" || :
|
|
||||||
|
|
||||||
if [ -n "$(${pkgs.git}/bin/git diff HEAD^ -- ${watcherName})" ]; then
|
if [ -n "$(${pkgs.git}/bin/git diff -- ${watcherName})" ]; then
|
||||||
${lib.strings.concatMapStringsSep "\n" (reporter: ''
|
${lib.strings.concatMapStringsSep "\n" (reporter: ''
|
||||||
${pkgs.git}/bin/git diff HEAD^ -- ${watcherName} | ${reporter}
|
${pkgs.git}/bin/git diff HEAD^ -- ${watcherName} | ${reporter}
|
||||||
'')
|
'')
|
||||||
watcherOptions.reporters}
|
watcherOptions.reporters}
|
||||||
:
|
:
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
${pkgs.git}/bin/git add ${watcherName}
|
||||||
|
${pkgs.git}/bin/git commit --message "${watcherName} / $(${pkgs.coreutils}/bin/date -Is)" || :
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
cfg.watchers;
|
cfg.watchers;
|
||||||
|
|||||||
@@ -1,96 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
specusMachines = {
|
|
||||||
servers = {
|
|
||||||
makanek = {
|
|
||||||
ipv4 = "10.100.0.1";
|
|
||||||
publicKey = "KhcScd4fBpdhQzK8Vc+1mEHQMQBpbKBUPB4oZ7skeSk=";
|
|
||||||
};
|
|
||||||
ful = {
|
|
||||||
ipv4 = "10.100.0.2";
|
|
||||||
publicKey = "0Y7+zoXkWJGVOWWnMjvYjtwP+WpggAlmkRbgMw0z8Dk=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
clients = {
|
|
||||||
kabsa = {
|
|
||||||
ipv4 = "10.100.0.101";
|
|
||||||
publicKey = "nRkzoRi9crKHF7263U37lt4GGL7/8637NBSKjifI9hY=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
options.services.specus = {
|
|
||||||
server = {
|
|
||||||
enable = lib.mkEnableOption "Specus private VPN (server)";
|
|
||||||
};
|
|
||||||
client = {
|
|
||||||
enable = lib.mkEnableOption "Specus private VPN (client)";
|
|
||||||
};
|
|
||||||
privateKeyFile = lib.mkOption {
|
|
||||||
type = lib.types.path;
|
|
||||||
description = "Private key file of the server/client machine";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = let
|
|
||||||
cfg = config.services.specus;
|
|
||||||
specusPort = 22;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
assertions = [
|
|
||||||
{
|
|
||||||
assertion =
|
|
||||||
!(cfg.server.enable && cfg.client.enable);
|
|
||||||
message = "specus: systems cannot be client and server at the same time";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
// lib.mkIf cfg.server.enable {
|
|
||||||
networking.nat = {
|
|
||||||
enable = true;
|
|
||||||
externalInterface = "eth0"; # TODO
|
|
||||||
internalInterfaces = ["specus"];
|
|
||||||
};
|
|
||||||
networking.firewall.allowedUDPPorts = [specusPort];
|
|
||||||
networking.wireguard.interfaces.specus = {
|
|
||||||
ips = ["${specusMachines.servers.${config.networking.hostName}.ipv4}/24"];
|
|
||||||
# For this to work you have to set the dnsserver IP of your router (or dnsserver of choice) in your clients
|
|
||||||
postSetup = ''
|
|
||||||
${pkgs.iptables}/bin/iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o eth0 -j MASQUERADE
|
|
||||||
'';
|
|
||||||
postShutdown = ''
|
|
||||||
${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -s 10.100.0.0/24 -o eth0 -j MASQUERADE
|
|
||||||
'';
|
|
||||||
listenPort = specusPort;
|
|
||||||
privateKeyFile = cfg.privateKeyFile;
|
|
||||||
peers =
|
|
||||||
lib.mapAttrsToList (clientName: clientConfig: {
|
|
||||||
publicKey = clientConfig.publicKey;
|
|
||||||
allowedIPs = ["${clientConfig.ipv4}/32"];
|
|
||||||
})
|
|
||||||
specusMachines.clients;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// lib.mkIf cfg.client.enable {
|
|
||||||
networking.firewall.allowedUDPPorts = [specusPort];
|
|
||||||
networking.wireguard.interfaces = lib.attrsets.mapAttrs' (serverName: serverConfig:
|
|
||||||
lib.nameValuePair "specus-${serverName}" {
|
|
||||||
ips = ["${specusMachines.clients.${config.networking.hostName}.ipv4}/24"];
|
|
||||||
listenPort = specusPort;
|
|
||||||
privateKeyFile = cfg.privateKeyFile;
|
|
||||||
peers = [
|
|
||||||
{
|
|
||||||
allowedIPs = ["0.0.0.0/0"];
|
|
||||||
endpoint = "${(import ../lib/external-network.nix).${serverName}}:${toString specusPort}";
|
|
||||||
persistentKeepalive = 25;
|
|
||||||
publicKey = serverConfig.publicKey;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
})
|
|
||||||
specusMachines.servers;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
15
packages/gpt.nix
Normal file
15
packages/gpt.nix
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
curl,
|
||||||
|
writers,
|
||||||
|
jq,
|
||||||
|
apiKeyCommand ? "pass api-keys/openai.com",
|
||||||
|
model ? "gpt-3.5-turbo",
|
||||||
|
}:
|
||||||
|
writers.writeDashBin "gpt" ''
|
||||||
|
json=$(jq --slurp --raw-input '{model:"${model}", messages: [{role: "user", content: .}]}')
|
||||||
|
${curl}/bin/curl -sSL https://api.openai.com/v1/chat/completions \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-H "Authorization: Bearer $(${apiKeyCommand})" \
|
||||||
|
-d "$json" \
|
||||||
|
| ${jq}/bin/jq -r '.choices[] | .message.content'
|
||||||
|
''
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{ stdenv, fetchFromGitHub, cmake, lib }:
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "itl";
|
|
||||||
version = "0.8.0";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "arabeyes-org";
|
|
||||||
repo = "ITL";
|
|
||||||
rev = "v${version}";
|
|
||||||
sha256 = "sha256-GTicTbZmFbPhzInFob3cfvtTxOpUZuqsQz1w9CoWu9w=";
|
|
||||||
};
|
|
||||||
nativeBuildInputs = [cmake];
|
|
||||||
cmakeFlags = [
|
|
||||||
"-DCMAKE_INSTALL_PREFIX=${placeholder "out"}"
|
|
||||||
"-DCMAKE_INSTALL_LIBDIR=lib"
|
|
||||||
];
|
|
||||||
meta = {
|
|
||||||
homepage = "https://www.arabeyes.org/ITL";
|
|
||||||
description = "Islamic Tools and Libraries";
|
|
||||||
license = lib.licenses.lgpl2;
|
|
||||||
platforms = lib.platforms.all;
|
|
||||||
maintainer = [lib.maintainers.kmein];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
{ stdenv, fetchFromGitHub, itl, lib, autoreconfHook }:
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "itools";
|
|
||||||
version = "1.0";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "arabeyes-org";
|
|
||||||
repo = "itools";
|
|
||||||
rev = version;
|
|
||||||
sha256 = "sha256-g9bsjupC4Sb5ywAgUNbjYLbHZ/i994lbNSnX2JyaP3g=";
|
|
||||||
};
|
|
||||||
preAutoreconf = "autoupdate";
|
|
||||||
nativeBuildInputs = [autoreconfHook];
|
|
||||||
buildInputs = [itl];
|
|
||||||
meta = {
|
|
||||||
homepage = "https://www.arabeyes.org/ITL";
|
|
||||||
description = "The itools package is a set of user friendly applications utilizing Arabeyes' ITL library. ";
|
|
||||||
license = lib.licenses.gpl2;
|
|
||||||
platforms = lib.platforms.all;
|
|
||||||
maintainer = [lib.maintainers.kmein];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -49,7 +49,6 @@ in
|
|||||||
${lib.concatStringsSep "\n" (lib.mapAttrsToList scriptCase cfg.scripts)}
|
${lib.concatStringsSep "\n" (lib.mapAttrsToList scriptCase cfg.scripts)}
|
||||||
*) ${pkgs.coreutils}/bin/cat ;;
|
*) ${pkgs.coreutils}/bin/cat ;;
|
||||||
esac \
|
esac \
|
||||||
| tr -d '\r\n' \
|
|
||||||
| ${pkgs.xclip}/bin/xclip -selection ${cfg.selection} -in
|
| ${pkgs.xclip}/bin/xclip -selection ${cfg.selection} -in
|
||||||
|
|
||||||
${pkgs.libnotify}/bin/notify-send --app-name="klem" "Result copied to clipboard."
|
${pkgs.libnotify}/bin/notify-send --app-name="klem" "Result copied to clipboard."
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
writers,
|
writers,
|
||||||
}:
|
}:
|
||||||
writers.writeDashBin "kpaste" ''
|
writers.writeDashBin "kpaste" ''
|
||||||
${curl}/bin/curl -sS http://p.r --data-binary @"''${1:--}" |
|
${curl}/bin/curl -sS http://p.r --data-binary @"''${1:--}" \
|
||||||
|
-H "Content-Type-Override: ''${KPASTE_CONTENT_TYPE-}" |
|
||||||
${gnused}/bin/sed '$ {p;s|http://p.r|https://p.krebsco.de|}'
|
${gnused}/bin/sed '$ {p;s|http://p.r|https://p.krebsco.de|}'
|
||||||
''
|
''
|
||||||
|
|||||||
@@ -20,7 +20,9 @@
|
|||||||
streams);
|
streams);
|
||||||
in
|
in
|
||||||
writers.writeDashBin "mpv-radio" ''
|
writers.writeDashBin "mpv-radio" ''
|
||||||
export DI_FM_KEY=$(cat "${di-fm-key-file}")
|
if [ -z ''${DI_FM_KEY} ]; then
|
||||||
|
DI_FM_KEY=$(cat "${di-fm-key-file}")
|
||||||
|
fi
|
||||||
exec ${mpv}/bin/mpv --force-window=yes "$(
|
exec ${mpv}/bin/mpv --force-window=yes "$(
|
||||||
${dmenu}/bin/dmenu -i -l 5 < ${streams-tsv} \
|
${dmenu}/bin/dmenu -i -l 5 < ${streams-tsv} \
|
||||||
| ${coreutils}/bin/cut -f3 \
|
| ${coreutils}/bin/cut -f3 \
|
||||||
|
|||||||
22
packages/mpv-tuner.nix
Normal file
22
packages/mpv-tuner.nix
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
writeText,
|
||||||
|
lib,
|
||||||
|
writers,
|
||||||
|
mpv,
|
||||||
|
gnused,
|
||||||
|
di-fm-key-file,
|
||||||
|
findutils,
|
||||||
|
}: let
|
||||||
|
streams = import ../lib/streams.nix {
|
||||||
|
di-fm-key = "%DI_FM_KEY%";
|
||||||
|
};
|
||||||
|
streams-list = writeText "streams.txt" (lib.concatMapStringsSep "\n" (station: station.stream) streams);
|
||||||
|
in
|
||||||
|
writers.writeDashBin "mpv-tuner" ''
|
||||||
|
if [ -z ''${DI_FM_KEY} ]; then
|
||||||
|
DI_FM_KEY=$(cat "${di-fm-key-file}")
|
||||||
|
fi
|
||||||
|
shuf ${streams-list} \
|
||||||
|
| ${gnused}/bin/sed s/%DI_FM_KEY%/"$DI_FM_KEY"/ \
|
||||||
|
| ${findutils}/bin/xargs ${mpv}/bin/mpv
|
||||||
|
''
|
||||||
@@ -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];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
29
packages/notemenu.nix
Normal file
29
packages/notemenu.nix
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
writers,
|
||||||
|
lib,
|
||||||
|
rofi,
|
||||||
|
findutils,
|
||||||
|
coreutils,
|
||||||
|
noteDirectory ? "~/cloud/syncthing/obsidian",
|
||||||
|
currentDates ? false,
|
||||||
|
niveumPackages,
|
||||||
|
}:
|
||||||
|
writers.writeDashBin "notemenu" ''
|
||||||
|
set -efu
|
||||||
|
PATH=$PATH:${
|
||||||
|
lib.makeBinPath [rofi findutils coreutils]
|
||||||
|
}
|
||||||
|
|
||||||
|
cd ${noteDirectory}
|
||||||
|
note_file=$({
|
||||||
|
${lib.optionalString currentDates ''
|
||||||
|
echo $(date -I).md
|
||||||
|
echo $(date -I -d yesterday).md
|
||||||
|
''}
|
||||||
|
find . -not -path '*/.*' -type f -printf "%T@ %p\n" | sort --reverse --numeric-sort | cut --delimiter=" " --fields=2-
|
||||||
|
} | rofi -dmenu -i -p 'notes')
|
||||||
|
if test "$note_file"
|
||||||
|
then
|
||||||
|
alacritty --working-directory ${noteDirectory} -e ${niveumPackages.obsidian-vim}/bin/nvim "$note_file"
|
||||||
|
fi
|
||||||
|
''
|
||||||
37
packages/obsidian-vim.nix
Normal file
37
packages/obsidian-vim.nix
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
neovim,
|
||||||
|
vimPlugins,
|
||||||
|
obsidiantVaultDirectory ? "~/cloud/syncthing/obsidian/",
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
neovim.override {
|
||||||
|
configure = {
|
||||||
|
customRC = ''
|
||||||
|
source ${../lib/vim/shared.vim}
|
||||||
|
|
||||||
|
cd ${obsidiantVaultDirectory}
|
||||||
|
|
||||||
|
let g:vimwiki_auto_chdir = 1
|
||||||
|
let g:vimwiki_listsyms = ' X'
|
||||||
|
let g:vimwiki_commentstring = '<!--%s-->'
|
||||||
|
|
||||||
|
let g:vimwiki_list = [{
|
||||||
|
\ 'path': '${obsidiantVaultDirectory}',
|
||||||
|
\ 'syntax': 'markdown',
|
||||||
|
\ 'ext': '.md',
|
||||||
|
\ 'diary_rel_path' '.',
|
||||||
|
\}]
|
||||||
|
|
||||||
|
let NERDTreeSortOrder = ['[[-timestamp]]']
|
||||||
|
|
||||||
|
" Start NERDTree and put the cursor back in the other window.
|
||||||
|
autocmd VimEnter * NERDTree ${obsidiantVaultDirectory} | wincmd p
|
||||||
|
'';
|
||||||
|
packages.nvim.start = [
|
||||||
|
vimPlugins.vimwiki
|
||||||
|
vimPlugins.nerdtree
|
||||||
|
vimPlugins.fzf-vim
|
||||||
|
vimPlugins.fzfWrapper
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
76
packages/vim.nix
Normal file
76
packages/vim.nix
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
neovim,
|
||||||
|
vimPlugins,
|
||||||
|
fetchFromGitHub,
|
||||||
|
vimUtils,
|
||||||
|
niveumPackages,
|
||||||
|
...
|
||||||
|
}: (neovim.override {
|
||||||
|
configure = {
|
||||||
|
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; {
|
||||||
|
start = [
|
||||||
|
nvim-cmp
|
||||||
|
cmp-buffer
|
||||||
|
cmp-path
|
||||||
|
cmp-nvim-lsp
|
||||||
|
cmp-cmdline
|
||||||
|
luasnip
|
||||||
|
|
||||||
|
editorconfig-vim
|
||||||
|
|
||||||
|
fzf-vim
|
||||||
|
fzfWrapper
|
||||||
|
supertab
|
||||||
|
undotree
|
||||||
|
tabular
|
||||||
|
# vimwiki
|
||||||
|
niveumPackages.vimPlugins-vim-colors-paramount
|
||||||
|
nvim-lspconfig
|
||||||
|
vim-commentary
|
||||||
|
vim-css-color
|
||||||
|
vim-eunuch
|
||||||
|
niveumPackages.vimPlugins-vim-fetch
|
||||||
|
vim-fugitive
|
||||||
|
vim-gitgutter
|
||||||
|
vim-repeat
|
||||||
|
vim-sensible
|
||||||
|
vim-surround
|
||||||
|
(vimUtils.buildVimPlugin rec {
|
||||||
|
pname = "vim-dim";
|
||||||
|
version = "1.1.0";
|
||||||
|
name = "${pname}-${version}";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "jeffkreeftmeijer";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "sha256-lyTZUgqUEEJRrzGo1FD8/t8KBioPrtB3MmGvPeEVI/g=";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
opt = [
|
||||||
|
csv
|
||||||
|
elm-vim
|
||||||
|
emmet-vim
|
||||||
|
haskell-vim
|
||||||
|
niveumPackages.vimPlugins-icalendar-vim
|
||||||
|
niveumPackages.vimPlugins-jq-vim
|
||||||
|
rust-vim
|
||||||
|
typescript-vim
|
||||||
|
vim-javascript
|
||||||
|
vim-ledger
|
||||||
|
vim-nix
|
||||||
|
vimtex
|
||||||
|
vim-pandoc
|
||||||
|
vim-pandoc-syntax
|
||||||
|
niveumPackages.vimPlugins-vim-256noir
|
||||||
|
niveumPackages.vimPlugins-typst-vim
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
14
packages/vimPlugins/typst-vim.nix
Normal file
14
packages/vimPlugins/typst-vim.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
vimUtils,
|
||||||
|
fetchFromGitHub,
|
||||||
|
}:
|
||||||
|
vimUtils.buildVimPluginFrom2Nix {
|
||||||
|
pname = "typst.vim";
|
||||||
|
version = "2882f21";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "kaarmu";
|
||||||
|
repo = "typst.vim";
|
||||||
|
rev = "2882f211f1498c790bb857f8a912c8e86526a362";
|
||||||
|
sha256 = "0xr8k17ggqfdksf3kybimfl5djjz3h19k4479la06i5lnwvlhkh2";
|
||||||
|
};
|
||||||
|
}
|
||||||
2
secrets
2
secrets
Submodule secrets updated: 99320671a5...9efd6ac7e1
66
secrets.txt
Normal file
66
secrets.txt
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
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/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
|
./matomo.nix
|
||||||
./radio.nix
|
./radio.nix
|
||||||
./panoptikon.nix
|
./panoptikon.nix
|
||||||
|
./ledger.nix
|
||||||
../../configs/monitoring.nix
|
../../configs/monitoring.nix
|
||||||
../../configs/tor.nix
|
../../configs/tor.nix
|
||||||
../../configs/save-space.nix
|
../../configs/save-space.nix
|
||||||
@@ -49,12 +50,6 @@ in {
|
|||||||
};
|
};
|
||||||
root.file = ../../secrets/ful-root.age;
|
root.file = ../../secrets/ful-root.age;
|
||||||
restic.file = ../../secrets/restic.age;
|
restic.file = ../../secrets/restic.age;
|
||||||
specus.file = ../../secrets/ful-specus-privateKey.age;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.specus = {
|
|
||||||
privateKeyFile = config.age.secrets.specus.path;
|
|
||||||
server.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services.restic.backups.niveum = {
|
services.restic.backups.niveum = {
|
||||||
@@ -99,5 +94,5 @@ in {
|
|||||||
environment.systemPackages = [pkgs.vim pkgs.git pkgs.tmux pkgs.python3];
|
environment.systemPackages = [pkgs.vim pkgs.git pkgs.tmux pkgs.python3];
|
||||||
|
|
||||||
# since 22.05 timeout fails?
|
# since 22.05 timeout fails?
|
||||||
systemd.services.systemd-networkd-wait-online.enable = false;
|
# systemd.services.systemd-networkd-wait-online.enable = false;
|
||||||
}
|
}
|
||||||
|
|||||||
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}";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -24,7 +24,14 @@ in {
|
|||||||
enable = true;
|
enable = true;
|
||||||
watchers = {
|
watchers = {
|
||||||
"github-meta" = {
|
"github-meta" = {
|
||||||
script = panoptikon.urlJSON {} "https://api.github.com/meta";
|
script = panoptikon.urlJSON {
|
||||||
|
jqScript = ''
|
||||||
|
{
|
||||||
|
ssh_key_fingerprints: .ssh_key_fingerprints,
|
||||||
|
ssh_keys: .ssh_keys
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
} "https://api.github.com/meta";
|
||||||
reporters = [irc-xxx];
|
reporters = [irc-xxx];
|
||||||
};
|
};
|
||||||
lammla = {
|
lammla = {
|
||||||
@@ -87,22 +94,6 @@ in {
|
|||||||
script = panoptikon.urlSelector "[itemprop=articleBody]" "https://www.indogermanistik.org/tagungen/tagungen-der-ig.html";
|
script = panoptikon.urlSelector "[itemprop=articleBody]" "https://www.indogermanistik.org/tagungen/tagungen-der-ig.html";
|
||||||
reporters = [irc-kmein];
|
reporters = [irc-kmein];
|
||||||
};
|
};
|
||||||
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];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,16 +40,10 @@ in {
|
|||||||
restic.file = ../../secrets/restic.age;
|
restic.file = ../../secrets/restic.age;
|
||||||
syncthing-cert.file = ../../secrets/kabsa-syncthing-cert.age;
|
syncthing-cert.file = ../../secrets/kabsa-syncthing-cert.age;
|
||||||
syncthing-key.file = ../../secrets/kabsa-syncthing-key.age;
|
syncthing-key.file = ../../secrets/kabsa-syncthing-key.age;
|
||||||
specus.file = ../../secrets/kabsa-specus-privateKey.age;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = [pkgs.minecraft pkgs.zeroad];
|
environment.systemPackages = [pkgs.minecraft pkgs.zeroad];
|
||||||
|
|
||||||
services.specus = {
|
|
||||||
privateKeyFile = config.age.secrets.specus.path;
|
|
||||||
client.enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "kabsa";
|
hostName = "kabsa";
|
||||||
wireless.interfaces = ["wlp3s0"];
|
wireless.interfaces = ["wlp3s0"];
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ in {
|
|||||||
./names.nix
|
./names.nix
|
||||||
./nextcloud.nix
|
./nextcloud.nix
|
||||||
./radio-news.nix
|
./radio-news.nix
|
||||||
|
./onlyoffice.nix
|
||||||
./retiolum-map.nix
|
./retiolum-map.nix
|
||||||
./tarot.nix
|
./tarot.nix
|
||||||
./tt-rss.nix
|
./tt-rss.nix
|
||||||
@@ -44,6 +45,7 @@ in {
|
|||||||
config.services.grafana.dataDir
|
config.services.grafana.dataDir
|
||||||
config.services.gitea.stateDir
|
config.services.gitea.stateDir
|
||||||
config.services.weechat.root
|
config.services.weechat.root
|
||||||
|
config.services.nginx.virtualHosts."www.kmein.de".root
|
||||||
"/var/lib/weechat"
|
"/var/lib/weechat"
|
||||||
"/var/lib/codimd"
|
"/var/lib/codimd"
|
||||||
];
|
];
|
||||||
@@ -95,12 +97,6 @@ in {
|
|||||||
group = "tinc.retiolum";
|
group = "tinc.retiolum";
|
||||||
};
|
};
|
||||||
restic.file = ../../secrets/restic.age;
|
restic.file = ../../secrets/restic.age;
|
||||||
specus.file = ../../secrets/makanek-specus-privateKey.age;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.specus = {
|
|
||||||
privateKeyFile = config.age.secrets.specus.path;
|
|
||||||
server.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "20.03";
|
system.stateVersion = "20.03";
|
||||||
@@ -119,6 +115,12 @@ in {
|
|||||||
defaults.email = kieran.email;
|
defaults.email = kieran.email;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.nginx.virtualHosts."www.kmein.de" = {
|
||||||
|
addSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
root = "/var/www/kmein.de";
|
||||||
|
};
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.vim
|
pkgs.vim
|
||||||
pkgs.git
|
pkgs.git
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ let
|
|||||||
in {
|
in {
|
||||||
services.gitea = {
|
services.gitea = {
|
||||||
enable = true;
|
enable = true;
|
||||||
rootUrl = domain;
|
|
||||||
appName = "code.kmein.de";
|
appName = "code.kmein.de";
|
||||||
settings = {
|
settings = {
|
||||||
|
server.ROOT_URL = domain;
|
||||||
server.SSH_PORT = sshPort;
|
server.SSH_PORT = sshPort;
|
||||||
service.DISABLE_REGISTRATION = true;
|
service.DISABLE_REGISTRATION = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
extraModulePackages = [];
|
extraModulePackages = [];
|
||||||
loader.grub = {
|
loader.grub = {
|
||||||
enable = true;
|
enable = true;
|
||||||
version = 2;
|
|
||||||
devices = ["/dev/sda"];
|
devices = ["/dev/sda"];
|
||||||
configurationLimit = 3;
|
configurationLimit = 3;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7,17 +7,13 @@
|
|||||||
startAt = "7:00";
|
startAt = "7:00";
|
||||||
script = ''
|
script = ''
|
||||||
greeting=$(echo "moin
|
greeting=$(echo "moin
|
||||||
oi
|
MOIN" | shuf -n1)
|
||||||
noim
|
|
||||||
MOIN
|
|
||||||
OI
|
|
||||||
moi" | shuf -n1)
|
|
||||||
echo "$greeting" | ${config.nur.repos.mic92.ircsink}/bin/ircsink \
|
echo "$greeting" | ${config.nur.repos.mic92.ircsink}/bin/ircsink \
|
||||||
--nick "$greeting""bot" \
|
--nick "$greeting""bot" \
|
||||||
--server irc.hackint.org \
|
--server irc.hackint.org \
|
||||||
--port 6697 \
|
--port 6697 \
|
||||||
--secure \
|
--secure \
|
||||||
--target '#hsmr-moin' >/dev/null 2>&1
|
--target '#hsmr' >/dev/null 2>&1
|
||||||
'';
|
'';
|
||||||
serviceConfig.DynamicUser = true;
|
serviceConfig.DynamicUser = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,17 +16,6 @@ in {
|
|||||||
http_port = 9444;
|
http_port = 9444;
|
||||||
http_addr = "127.0.0.1";
|
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;
|
dashboards.default_home_dashboard_path = toString ./grafana-dashboards/niveum.json;
|
||||||
security = {
|
security = {
|
||||||
admin_user = "admin";
|
admin_user = "admin";
|
||||||
@@ -223,8 +212,7 @@ in {
|
|||||||
email_configs = let
|
email_configs = let
|
||||||
inherit (import ../../../lib) kieran;
|
inherit (import ../../../lib) kieran;
|
||||||
inherit (import ../../../lib/email.nix {inherit lib;}) cock;
|
inherit (import ../../../lib/email.nix {inherit lib;}) cock;
|
||||||
in [
|
cockConfig = {
|
||||||
{
|
|
||||||
send_resolved = true;
|
send_resolved = true;
|
||||||
to = kieran.email;
|
to = kieran.email;
|
||||||
from = cock.user;
|
from = cock.user;
|
||||||
@@ -232,7 +220,8 @@ in {
|
|||||||
auth_username = cock.user;
|
auth_username = cock.user;
|
||||||
auth_identity = cock.user;
|
auth_identity = cock.user;
|
||||||
auth_password = "$EMAIL_PASSWORD";
|
auth_password = "$EMAIL_PASSWORD";
|
||||||
}
|
};
|
||||||
|
in [
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -258,6 +247,12 @@ in {
|
|||||||
group = "prometheus";
|
group = "prometheus";
|
||||||
mode = "440";
|
mode = "440";
|
||||||
};
|
};
|
||||||
|
home-assistant-token = {
|
||||||
|
file = ../../../secrets/home-assistant-token.age;
|
||||||
|
owner = "prometheus";
|
||||||
|
group = "prometheus";
|
||||||
|
mode = "440";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.prometheus.alertmanagers = [
|
services.prometheus.alertmanagers = [
|
||||||
@@ -306,7 +301,7 @@ in {
|
|||||||
"code.kmein.de"
|
"code.kmein.de"
|
||||||
"radio.kmein.de"
|
"radio.kmein.de"
|
||||||
"tarot.kmein.de"
|
"tarot.kmein.de"
|
||||||
"cloud.xn--kiern-0qa.de"
|
"cloud.kmein.de"
|
||||||
"grafana.kmein.r"
|
"grafana.kmein.r"
|
||||||
# "names.kmein.r"
|
# "names.kmein.r"
|
||||||
"rrm.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";
|
job_name = "ful";
|
||||||
static_configs = [
|
static_configs = [
|
||||||
|
|||||||
@@ -4,9 +4,34 @@
|
|||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (import ../../lib) localAddresses;
|
storageBoxMountPoint = "/mnt/storagebox";
|
||||||
in {
|
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 = {
|
age.secrets = {
|
||||||
|
hetzner-storagebox-credentials = {
|
||||||
|
file = ../../secrets/hetzner-storagebox-credentials.age;
|
||||||
|
};
|
||||||
nextcloud-password-database = {
|
nextcloud-password-database = {
|
||||||
file = ../../secrets/nextcloud-password-database.age;
|
file = ../../secrets/nextcloud-password-database.age;
|
||||||
owner = "nextcloud";
|
owner = "nextcloud";
|
||||||
@@ -23,7 +48,7 @@ in {
|
|||||||
|
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nextcloud25;
|
package = pkgs.nextcloud26;
|
||||||
|
|
||||||
https = true;
|
https = true;
|
||||||
enableBrokenCiphersForSSE = false;
|
enableBrokenCiphersForSSE = false;
|
||||||
@@ -33,7 +58,9 @@ in {
|
|||||||
startAt = "05:00:00";
|
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
|
phpOptions."opcache.interned_strings_buffer" = "32"; # buffer size in MB
|
||||||
|
|
||||||
@@ -53,22 +80,8 @@ in {
|
|||||||
|
|
||||||
logLevel = 2;
|
logLevel = 2;
|
||||||
|
|
||||||
extraOptions = let
|
extraOptions = {
|
||||||
inherit (import ../../lib/email.nix {inherit lib;}) cock;
|
|
||||||
address = builtins.split "@" cock.user;
|
|
||||||
in {
|
|
||||||
defaultapp = "files";
|
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;
|
enableACME = true;
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Ensure that postgres is running before running the setup
|
|
||||||
systemd.services."nextcloud-setup" = {
|
|
||||||
requires = ["postgresql.service"];
|
|
||||||
after = ["postgresql.service"];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
29
systems/makanek/onlyoffice.nix
Normal file
29
systems/makanek/onlyoffice.nix
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.onlyoffice = {
|
||||||
|
enable = true;
|
||||||
|
port = 8111;
|
||||||
|
hostname = "onlyoffice.kmein.de";
|
||||||
|
jwtSecretFile = config.age.secrets.onlyoffice-key.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
age.secrets.onlyoffice-key = {
|
||||||
|
file = ../../secrets/onlyoffice-jwt-key.age;
|
||||||
|
owner = "onlyoffice";
|
||||||
|
};
|
||||||
|
|
||||||
|
# otherwise this leads to nginx
|
||||||
|
# open() "/var/lib/onlyoffice/documentserver/App_Data/cache/files/data/conv_check_1138411943_docx/output.docx" failed (13: Permission denied)
|
||||||
|
# and mysterious 403 errors
|
||||||
|
system.activationScripts.onlyoffice-readable.text = ''
|
||||||
|
chmod a+x /var/lib/onlyoffice/documentserver/
|
||||||
|
'';
|
||||||
|
|
||||||
|
services.nginx.virtualHosts.${config.services.onlyoffice.hostname} = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -20,7 +20,7 @@ in {
|
|||||||
script = ''
|
script = ''
|
||||||
${tinc-graph}/bin/tinc-graph --geoip-file ${geo-ip-database-path} --network ${network} \
|
${tinc-graph}/bin/tinc-graph --geoip-file ${geo-ip-database-path} --network ${network} \
|
||||||
| ${pkgs.coreutils}/bin/tee network.json \
|
| ${pkgs.coreutils}/bin/tee network.json \
|
||||||
| ${tinc-graph}/bin/tinc-statistics > statistics.json
|
| ${tinc-graph}/bin/tinc-midpoint > midpoint.json
|
||||||
|
|
||||||
cp ${tinc-graph}/static/map.html map.html
|
cp ${tinc-graph}/static/map.html map.html
|
||||||
cp ${tinc-graph}/static/map.html index.html
|
cp ${tinc-graph}/static/map.html index.html
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
extraModulePackages = [];
|
extraModulePackages = [];
|
||||||
loader.grub = {
|
loader.grub = {
|
||||||
enable = true;
|
enable = true;
|
||||||
version = 2;
|
|
||||||
efiSupport = true;
|
efiSupport = true;
|
||||||
efiInstallAsRemovable = true;
|
efiInstallAsRemovable = true;
|
||||||
device = "/dev/sda";
|
device = "/dev/sda";
|
||||||
|
|||||||
@@ -1,52 +1,13 @@
|
|||||||
{pkgs, ...}: let
|
{pkgs, ...}: {
|
||||||
pulseaudioCard = "alsa_card.pci-0000_00_1b.0";
|
services.xserver.displayManager.sessionCommands = let
|
||||||
fingerprint = {
|
intern = "LVDS-1";
|
||||||
HDMI-1 = "00ffffffffffff004c2d320d48435030181a0103803c22782a5295a556549d250e5054bb8c00b30081c0810081809500a9c001010101023a801871382d40582c450056502100001e000000fd0032481e5111000a202020202020000000fc00433237463339300a2020202020000000ff00485451483630323132390a202001e402031af14690041f131203230907078301000066030c00100080011d00bc52d01e20b828554056502100001e8c0ad090204031200c4055005650210000188c0ad08a20e02d10103e9600565021000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061";
|
extern = "HDMI-1";
|
||||||
LVDS-1 = "00ffffffffffff0006af6c100000000000140104901c10780220e5925554922825505400000001010101010101010101010101010101121b56585000193030203600159c100000180000000f0000000000000000000000000020000000fe0041554f0a202020202020202020000000fe004231323558573031205630200a00ec";
|
pulseaudioCard = "alsa_card.pci-0000_00_1b.0";
|
||||||
};
|
# pulseaudioProfile = "output:hdmi-stereo-extra2+input:analog-stereo";
|
||||||
in {
|
pulseaudioProfile = "alsa_output.pci-0000_00_1b.0.analog-stereo";
|
||||||
home-manager.users.me = {
|
in
|
||||||
programs.autorandr = {
|
toString (pkgs.writers.writeDash "hdmi-on" ''
|
||||||
enable = true;
|
${pkgs.xorg.xrandr}/bin/xrandr --output ${intern} --primary --auto --output ${extern} --above ${intern} --auto
|
||||||
hooks.postswitch.wallpaper = "systemctl --user restart wallpaper";
|
${pkgs.pulseaudio}/bin/pactl set-card-profile ${pulseaudioCard} ${pulseaudioProfile}
|
||||||
profiles = {
|
'');
|
||||||
single = {
|
|
||||||
hooks.postswitch = "${pkgs.pulseaudio}/bin/pactl set-card-profile ${pulseaudioCard} alsa_output.pci-0000_00_1b.0.analog-stereo";
|
|
||||||
fingerprint = {inherit (fingerprint) LVDS-1;};
|
|
||||||
config = {
|
|
||||||
HDMI-1.enable = false;
|
|
||||||
LVDS-1 = {
|
|
||||||
enable = true;
|
|
||||||
crtc = 0;
|
|
||||||
mode = "1366x768";
|
|
||||||
position = "277x1080";
|
|
||||||
primary = true;
|
|
||||||
rate = "60.10";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
desk = {
|
|
||||||
hooks.postswitch = "${pkgs.pulseaudio}/bin/pactl set-card-profile ${pulseaudioCard} output:hdmi-stereo+input:analog-stereo";
|
|
||||||
fingerprint = {inherit (fingerprint) HDMI-1 LVDS-1;};
|
|
||||||
config = {
|
|
||||||
HDMI-1 = {
|
|
||||||
enable = true;
|
|
||||||
crtc = 1;
|
|
||||||
mode = "1920x1080";
|
|
||||||
position = "0x0";
|
|
||||||
primary = true;
|
|
||||||
rate = "60.00";
|
|
||||||
};
|
|
||||||
LVDS-1 = {
|
|
||||||
enable = true;
|
|
||||||
crtc = 0;
|
|
||||||
mode = "1366x768";
|
|
||||||
position = "277x1080";
|
|
||||||
rate = "60.10";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
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,58 +1,16 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (import ../../lib) tmpfilesConfig;
|
|
||||||
in {
|
|
||||||
services.postgresql = {
|
|
||||||
enable = true;
|
|
||||||
dataDir = "/var/state/postgresql/${config.services.postgresql.package.psqlSchema}";
|
|
||||||
ensureDatabases = ["atuin"];
|
|
||||||
ensureUsers = [
|
|
||||||
{
|
|
||||||
name = "atuin";
|
|
||||||
ensurePermissions."DATABASE atuin" = "ALL PRIVILEGES";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.postgresqlBackup = {
|
services.postgresqlBackup = {
|
||||||
enable = true;
|
enable = true;
|
||||||
databases = ["atuin"];
|
databases = ["atuin"];
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
services.postgresql.package = pkgs.postgresql_14;
|
||||||
(tmpfilesConfig {
|
|
||||||
type = "d";
|
|
||||||
path = "/var/state/postgresql";
|
|
||||||
mode = "0700";
|
|
||||||
user = "postgres";
|
|
||||||
group = "postgres";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
users.groups.atuin = {};
|
services.atuin = {
|
||||||
users.users.atuin = {
|
host = "0.0.0.0";
|
||||||
isSystemUser = true;
|
openFirewall = true;
|
||||||
group = "atuin";
|
openRegistration = true;
|
||||||
home = "/run/atuin";
|
port = 8888;
|
||||||
createHome = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.atuin = {
|
|
||||||
wantedBy = ["multi-user.target"];
|
|
||||||
environment = {
|
|
||||||
ATUIN_HOST = "0.0.0.0";
|
|
||||||
ATUIN_PORT = "8888";
|
|
||||||
ATUIN_OPEN_REGISTRATION = "true";
|
|
||||||
ATUIN_DB_URI = "postgres:///atuin";
|
|
||||||
};
|
|
||||||
serviceConfig = {
|
|
||||||
User = "atuin";
|
|
||||||
ExecStart = "${pkgs.atuin}/bin/atuin server start";
|
|
||||||
Restart = "on-failure";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
networking.firewall.allowedTCPPorts = [8888];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ in {
|
|||||||
./atuin.nix
|
./atuin.nix
|
||||||
./backup.nix
|
./backup.nix
|
||||||
./gaslight.nix
|
./gaslight.nix
|
||||||
./hardware-configuration.nix
|
|
||||||
./kiosk.nix
|
./kiosk.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
./moodle-dl-meinhark.nix
|
./moodle-dl-meinhark.nix
|
||||||
./pulseaudio.nix
|
./pulseaudio.nix
|
||||||
./home-assistant.nix
|
./home-assistant.nix
|
||||||
@@ -45,7 +45,7 @@ in {
|
|||||||
restic.file = ../../secrets/restic.age;
|
restic.file = ../../secrets/restic.age;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.restic.backups.moodle-dl = {
|
services.restic.backups.niveum = {
|
||||||
initialize = true;
|
initialize = true;
|
||||||
inherit (restic) repository;
|
inherit (restic) repository;
|
||||||
timerConfig = {
|
timerConfig = {
|
||||||
@@ -82,7 +82,7 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
# since 22.05 timeout fails?
|
# since 22.05 timeout fails?
|
||||||
systemd.services.systemd-networkd-wait-online.enable = false;
|
# systemd.services.systemd-networkd-wait-online.enable = false;
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "zaatar";
|
hostName = "zaatar";
|
||||||
@@ -90,5 +90,5 @@ in {
|
|||||||
retiolum = retiolumAddresses.zaatar;
|
retiolum = retiolumAddresses.zaatar;
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "20.09";
|
system.stateVersion = "22.05";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
let
|
{config, ...}: let
|
||||||
port = 8123;
|
port = 8123;
|
||||||
|
inherit (import ../../lib) restic;
|
||||||
|
influxPort = 9100;
|
||||||
|
volumeName = "home-assistant.bak";
|
||||||
in {
|
in {
|
||||||
networking.firewall.allowedTCPPorts = [port];
|
networking.firewall.allowedTCPPorts = [port influxPort];
|
||||||
|
|
||||||
services.nginx.virtualHosts."home.kmein.r" = {
|
services.nginx.virtualHosts."home.kmein.r" = {
|
||||||
locations."/" = {
|
locations."/" = {
|
||||||
@@ -9,15 +12,35 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.influxdb = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = {
|
||||||
|
http.bind-address = ":${toString influxPort}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.restic.backups.niveum = {
|
||||||
|
initialize = true;
|
||||||
|
inherit (restic) repository;
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "daily";
|
||||||
|
RandomizedDelaySec = "1h";
|
||||||
|
};
|
||||||
|
passwordFile = config.age.secrets.restic.path;
|
||||||
|
paths = [
|
||||||
|
"/var/lib/containers/storage/volumes/${volumeName}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
virtualisation.oci-containers = {
|
virtualisation.oci-containers = {
|
||||||
backend = "podman";
|
backend = "podman";
|
||||||
containers.homeassistant = {
|
containers.homeassistant = {
|
||||||
volumes = ["home-assistant:/config"];
|
volumes = ["${volumeName}:/config"];
|
||||||
environment.TZ = "Europe/Berlin";
|
environment.TZ = "Europe/Berlin";
|
||||||
image = "ghcr.io/home-assistant/home-assistant:stable";
|
image = "ghcr.io/home-assistant/home-assistant:stable";
|
||||||
extraOptions = [
|
extraOptions = [
|
||||||
"--network=host"
|
"--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
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
password = "";
|
password = "";
|
||||||
extraGroups = ["audio"];
|
extraGroups = ["audio"];
|
||||||
};
|
};
|
||||||
|
# TODO https://github.com/cage-kiosk/cage/issues/138
|
||||||
services.cage = {
|
services.cage = {
|
||||||
enable = true;
|
enable = true;
|
||||||
user = config.users.extraUsers.kiosk.name;
|
user = config.users.extraUsers.kiosk.name;
|
||||||
|
|||||||
@@ -7,16 +7,18 @@
|
|||||||
moodle-dl-package = pkgs.moodle-dl.overrideAttrs (old:
|
moodle-dl-package = pkgs.moodle-dl.overrideAttrs (old:
|
||||||
old
|
old
|
||||||
// {
|
// {
|
||||||
patches = [../../packages/moodle-dl/telegram-format.patch];
|
# patches = [../../packages/moodle-dl/telegram-format.patch]; TODO?
|
||||||
});
|
});
|
||||||
in {
|
in {
|
||||||
age.secrets = {
|
age.secrets = {
|
||||||
|
/*
|
||||||
moodle-dl-tokens = {
|
moodle-dl-tokens = {
|
||||||
file = ../../secrets/zaatar-moodle-dl-tokens.json.age;
|
file = ../../secrets/zaatar-moodle-dl-tokens.json.age;
|
||||||
owner = "moodle-dl";
|
owner = "moodle-dl";
|
||||||
group = "moodle-dl";
|
group = "moodle-dl";
|
||||||
mode = "400";
|
mode = "400";
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
moodle-dl-basicAuth = {
|
moodle-dl-basicAuth = {
|
||||||
file = ../../secrets/zaatar-moodle-dl-basicAuth.age;
|
file = ../../secrets/zaatar-moodle-dl-basicAuth.age;
|
||||||
owner = "nginx";
|
owner = "nginx";
|
||||||
@@ -26,7 +28,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
services.moodle-dl = {
|
services.moodle-dl = {
|
||||||
enable = true;
|
enable = false;
|
||||||
startAt = "hourly";
|
startAt = "hourly";
|
||||||
package = moodle-dl-package;
|
package = moodle-dl-package;
|
||||||
tokensFile = config.age.secrets.moodle-dl-tokens.path;
|
tokensFile = config.age.secrets.moodle-dl-tokens.path;
|
||||||
@@ -95,6 +97,16 @@ in {
|
|||||||
# WS 2022
|
# WS 2022
|
||||||
115414 # Nonnos
|
115414 # Nonnos
|
||||||
116108 # Dialektologie
|
116108 # Dialektologie
|
||||||
|
|
||||||
|
# SS 2023
|
||||||
|
117967 # Archaische Lyrik
|
||||||
|
119658 # Dyskolos
|
||||||
|
118963 # Antike Biographie
|
||||||
|
92668 # Taa
|
||||||
|
120671 # Jiddisch
|
||||||
|
120720 # Sorbisch
|
||||||
|
118076 # X-Tutorial
|
||||||
|
120631 # Predigten
|
||||||
];
|
];
|
||||||
download_submissions = true;
|
download_submissions = true;
|
||||||
download_descriptions = true;
|
download_descriptions = true;
|
||||||
|
|||||||
@@ -7,8 +7,10 @@
|
|||||||
firewall = (import ../../lib).firewall lib;
|
firewall = (import ../../lib).firewall lib;
|
||||||
inherit (import ../../lib) tmpfilesConfig;
|
inherit (import ../../lib) tmpfilesConfig;
|
||||||
|
|
||||||
|
mukkeMountPoint = "/mnt/mukke";
|
||||||
|
|
||||||
streams = import ../../lib/streams.nix {
|
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;
|
multi-room-audio-port = 8000;
|
||||||
in {
|
in {
|
||||||
@@ -25,7 +27,7 @@ in {
|
|||||||
devices = {
|
devices = {
|
||||||
inherit ((import ../../lib).syncthing.devices) kabsa manakish heym;
|
inherit ((import ../../lib).syncthing.devices) kabsa manakish heym;
|
||||||
};
|
};
|
||||||
folders.${config.services.mpd.musicDirectory} = {
|
folders."${config.services.mpd.musicDirectory}/sync" = {
|
||||||
devices = ["heym" "kabsa" "manakish"];
|
devices = ["heym" "kabsa" "manakish"];
|
||||||
id = "music";
|
id = "music";
|
||||||
type = "receiveonly";
|
type = "receiveonly";
|
||||||
@@ -46,6 +48,30 @@ in {
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fileSystems.${mukkeMountPoint} = {
|
||||||
|
device = "//mukke.r/public";
|
||||||
|
fsType = "cifs";
|
||||||
|
options = [
|
||||||
|
"guest"
|
||||||
|
"nofail"
|
||||||
|
"noauto"
|
||||||
|
"ro"
|
||||||
|
"rsize=16777216"
|
||||||
|
"cache=loose"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
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];
|
environment.systemPackages = [pkgs.mpc_cli];
|
||||||
|
|
||||||
networking.firewall = let
|
networking.firewall = let
|
||||||
@@ -67,33 +93,44 @@ in {
|
|||||||
extraStopCommands = firewall.removeRules rules;
|
extraStopCommands = firewall.removeRules rules;
|
||||||
};
|
};
|
||||||
|
|
||||||
# to reset:
|
systemd.services.mpd-playlists = {
|
||||||
# ssh zaatar 'rm /var/lib/mpd/playlists/*.m3u && systemd-tmpfiles --create'
|
before = ["mpd.service"];
|
||||||
systemd.tmpfiles.rules = let
|
wantedBy = ["mpd.service"];
|
||||||
tags = lib.lists.unique (lib.concatMap ({tags ? [], ...}: tags) streams);
|
script = let
|
||||||
tagStreams = tag: lib.filter ({tags ? [], ...}: lib.elem tag tags) streams;
|
tags = lib.lists.unique (lib.concatMap ({tags ? [], ...}: tags) streams);
|
||||||
makePlaylist = name: streams: pkgs.writeText "${name}.m3u" (lib.concatMapStringsSep "\n" (lib.getAttr "stream") streams);
|
tagStreams = tag: lib.filter ({tags ? [], ...}: lib.elem tag tags) streams;
|
||||||
in
|
makePlaylist = name: streams: pkgs.writeText "${name}.m3u" (lib.concatMapStringsSep "\n" (lib.getAttr "stream") streams);
|
||||||
map (tag:
|
playlistDirectory = pkgs.linkFarm "playlists" (
|
||||||
tmpfilesConfig {
|
[
|
||||||
type = "L+";
|
{
|
||||||
path = "/var/lib/mpd/playlists/${tag}.m3u";
|
name = "all.m3u";
|
||||||
mode = "0644";
|
path = makePlaylist "all" streams;
|
||||||
user = "mpd";
|
}
|
||||||
group = "mpd";
|
]
|
||||||
argument = makePlaylist tag (tagStreams tag);
|
++ map (tag: {
|
||||||
})
|
name = "${tag}.m3u";
|
||||||
tags
|
path = makePlaylist tag (tagStreams tag);
|
||||||
++ [
|
})
|
||||||
(tmpfilesConfig {
|
tags
|
||||||
type = "L+";
|
);
|
||||||
mode = "0644";
|
playlistDirectoryPath = "/var/lib/mpd/playlists";
|
||||||
user = "mpd";
|
in ''
|
||||||
group = "mpd";
|
export DI_FM_KEY="$(cat "$CREDENTIALS_DIRECTORY/di-fm-key")"
|
||||||
path = "/var/lib/mpd/playlists/all.m3u";
|
|
||||||
argument = makePlaylist "all" streams;
|
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 = {
|
services.ympd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -1,15 +1,17 @@
|
|||||||
{
|
{config, ...}: {
|
||||||
config,
|
nixpkgs.config.packageOverrides = pkgs: {
|
||||||
pkgs,
|
# mpris is a dbus service for controlling all music players with e.g. playerctl
|
||||||
lib,
|
# I do not need this, because I only interact with the service via Spotify Connect
|
||||||
...
|
# otherẃise it will pull in DBus which fails without X11
|
||||||
}: {
|
spotifyd = pkgs.spotifyd.overrideAttrs {withMPris = false;};
|
||||||
|
};
|
||||||
|
|
||||||
services.spotifyd = {
|
services.spotifyd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
global = {
|
global = {
|
||||||
username_cmd = "cat ${config.age.secrets.spotify-username.path}";
|
username_cmd = "cat $CREDENTIALS_DIRECTORY/username";
|
||||||
password_cmd = "cat ${config.age.secrets.spotify-password.path}";
|
password_cmd = "cat $CREDENTIALS_DIRECTORY/password";
|
||||||
backend = "pulseaudio";
|
backend = "pulseaudio";
|
||||||
bitrate = 320;
|
bitrate = 320;
|
||||||
device_type = "s_t_b"; # set-top box
|
device_type = "s_t_b"; # set-top box
|
||||||
@@ -18,6 +20,13 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.services.spotifyd = {
|
||||||
|
serviceConfig.LoadCredential = [
|
||||||
|
"username:${config.age.secrets.spotify-username.path}"
|
||||||
|
"password:${config.age.secrets.spotify-password.path}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
age.secrets = {
|
age.secrets = {
|
||||||
spotify-username.file = ../../secrets/spotify-username.age;
|
spotify-username.file = ../../secrets/spotify-username.age;
|
||||||
spotify-password.file = ../../secrets/spotify-password.age;
|
spotify-password.file = ../../secrets/spotify-password.age;
|
||||||
@@ -28,6 +37,4 @@
|
|||||||
unload-module module-native-protocol-unix
|
unload-module module-native-protocol-unix
|
||||||
load-module module-native-protocol-unix auth-anonymous=1
|
load-module module-native-protocol-unix auth-anonymous=1
|
||||||
'';
|
'';
|
||||||
|
|
||||||
systemd.services.spotifyd.serviceConfig.Restart = "always";
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user