dotfiles/home/Mallorea.nix

98 lines
4.0 KiB
Nix
Raw Normal View History

2024-06-03 20:09:38 +02:00
{ inputs, config, pkgs, ... }:
2024-06-04 16:16:30 +02:00
let
2025-01-28 13:58:20 +01:00
username = "server";
home_dir = "/home/${username}";
2024-09-13 10:46:49 +02:00
scripts = {
disk_check = import ./utils/disk_check.nix { inherit pkgs; };
2024-11-22 23:53:54 +01:00
# vdirsyncer = {
# when = "*:0/15";
# script = toString (pkgs.writeShellScript "script" '' ${pkgs.vdirsyncer}/bin/vdirsyncer sync imec/pair '');
# };
2025-01-28 13:58:20 +01:00
fzgo = {
when = "*:0/5";
script = toString (pkgs.writeShellScript "script" ''
${pkgs.zsh}/bin/zsh -c "source ${./zsh/files/fzgo.zsh} && fzgo_update_cache"
'');
};
2024-09-14 00:03:25 +02:00
mbsync = {
when = "*-*-* 00:00:00";
2024-09-13 10:46:49 +02:00
script = toString (pkgs.writeShellScript "script" ''
BASEDIR=/home/server/Containers/mbsync
# python3 $BASEDIR/config/oauth2/mutt_oauth2.py $BASEDIR/data/oauth2/credentials.json
docker exec --user "1000:1000" mbsync-container /home/user/.config/mbsync/run.sh -a
${pkgs.notmuch}/bin/notmuch new
2024-09-14 00:03:25 +02:00
'');
};
sync_vault = {
when = "*-*-* 02:00:00";
script = toString (pkgs.writeShellScript "script" ''
2024-09-13 10:46:49 +02:00
source $HOME/.secrets/Backup/env.sh
for _ in {1..2}; do
2024-09-14 00:03:25 +02:00
OUTPUT=$(echo "$ZFS_PASSPHRASE" | ssh 10.4.0.1 zfs load-key Vault/Thomas/Encrypted 2>&1);
if [ "$OUTPUT" == "Key load error: Key already loaded for 'Vault/Thomas/Encrypted'." ]; then
echo "Key successfully loaded, starting syncoid"
syncoid --no-privilege-elevation --no-sync-snap tank/Storage/Thomas/Workspace 10.4.0.1:Vault/Thomas/Encrypted/Storage/Workspace
syncoid --no-privilege-elevation --no-sync-snap tank/Storage/Thomas 10.4.0.1:Vault/Thomas/Encrypted/Storage/T
2025-01-28 01:22:49 +01:00
syncoid --no-privilege-elevation --no-sync-snap tank/Storage/Emily 10.4.0.1:Vault/Thomas/Encrypted/Storage/N
2024-09-14 00:03:25 +02:00
syncoid --no-privilege-elevation --no-sync-snap tank/Storage/Yolande 10.4.0.1:Vault/Thomas/Encrypted/Storage/Y
syncoid --no-privilege-elevation --no-sync-snap tank/Containers 10.4.0.1:Vault/Thomas/Encrypted/Containers
ssh 10.4.0.1 zfs unload-key Vault/Thomas/Encrypted
${pkgs.curl}/bin/curl https://uptime.thomasave.be/api/push/s39pIIrB0R
exit 0
fi
2024-09-13 10:46:49 +02:00
done
2024-06-03 20:09:38 +02:00
2024-09-13 10:46:49 +02:00
echo "Found output instead: $OUTPUT"
echo "Failed to load key: $OUTPUT" | sendmail
exit 1
'');
};
2024-09-14 00:03:25 +02:00
backup = {
when = "*-*-* 04:00:00";
script = toString (pkgs.writeShellScript "script" ''
2024-09-13 10:46:49 +02:00
${./scripts/files/backup.sh}
${pkgs.curl}/bin/curl https://uptime.thomasave.be/api/push/R6iJcWqGp0
2024-09-14 00:03:25 +02:00
'');
2024-09-13 10:46:49 +02:00
};
2024-06-04 16:16:30 +02:00
};
2025-02-14 13:14:10 +01:00
fzgo_paths = {
files = [
2025-02-14 13:42:22 +01:00
"/home/user/Workspace"
2025-02-14 13:14:10 +01:00
"${home_dir}/.dotfiles"
];
dirs = [
2025-02-14 13:42:22 +01:00
"/home/user/Workspace"
2025-02-14 13:14:10 +01:00
"${home_dir}/.dotfiles"
"${home_dir}/Containers"
"${home_dir}/Storage/Thomas"
"${home_dir}/Storage/Shared"
];
};
2025-01-28 01:20:00 +01:00
in {
2025-01-28 13:58:20 +01:00
home.username = username;
home.homeDirectory = home_dir;
2024-09-13 10:46:49 +02:00
nix = {
package = pkgs.nix;
2024-09-25 12:43:48 +02:00
settings = {
2025-01-28 13:58:20 +01:00
trusted-users = [ username ];
2024-09-25 12:43:48 +02:00
use-xdg-base-directories = true;
};
2024-09-13 10:46:49 +02:00
};
2024-06-03 21:04:20 +02:00
2024-09-13 10:46:49 +02:00
xdg.enable = true;
2024-06-10 16:28:16 +02:00
2024-09-13 10:46:49 +02:00
imports = [
(import ./utils/common.nix { inherit inputs config pkgs; })
2025-01-28 01:20:00 +01:00
(import ./utils/services.nix { inherit pkgs scripts; })
(import ./utils/fzgo_links.nix { inherit config pkgs fzgo_paths; })
2024-09-13 10:46:49 +02:00
./ssh
];
2025-01-28 13:58:20 +01:00
programs.ssh.matchBlocks."*".identityFile = "${home_dir}/.secrets/SSH/Mallorea/id_ed25519";
2024-06-04 22:13:24 +02:00
2024-09-13 10:46:49 +02:00
home.sessionVariables = {
NIX_PATH = "${config.xdg.stateHome}/nix/profiles/channels/";
LANG = "en_US.UTF-8";
XDG_RUNTIME_DIR = "/run/user/$(id -u)";
};
2024-06-03 20:09:38 +02:00
}