nixos-config/hosts/vm-oddjob/configuration.nix

66 lines
1.7 KiB
Nix
Raw Normal View History

2025-06-07 21:15:31 +02:00
{
2025-06-07 23:36:21 +02:00
inputs,
2025-06-07 21:15:31 +02:00
lib,
pkgs,
config,
...
}:
{
# State version
system.stateVersion = "24.11";
# Machine hostname
2025-06-07 23:38:38 +02:00
networking.hostName = "vm-oddjob";
2025-06-07 21:15:31 +02:00
# Enabled modules
modules = {
profiles.vm.enable = true;
};
2025-06-07 23:36:21 +02:00
# Setup NAS backups
2025-06-09 15:07:54 +02:00
environment.systemPackages = with pkgs; [
keyutils
];
2025-06-09 15:00:44 +02:00
environment.etc."request-key.d/cifs.spnego.conf".text = ''
create cifs.spnego * * ${pkgs.cifs-utils}/bin/cifs.upcall -t %k
'';
environment.etc."request-key.d/cifs.idmap.conf".text = ''
create cifs.idmap * * ${pkgs.cifs-utils}/bin/cifs.idmap %k
'';
2025-06-07 23:36:21 +02:00
sops.secrets."smb-credentials" = {
sopsFile = "${inputs.secrets}/secrets/vm-oddjob.enc.yaml";
};
2025-06-09 15:45:14 +02:00
sops.secrets."backup-script-env" = {
sopsFile = "${inputs.secrets}/secrets/vm-oddjob.enc.yaml";
};
2025-06-09 15:15:17 +02:00
systemd.services.mnt-nas-krb5 = {
description = "Set up Kerberos credentials for mnt-nas";
before = [ "mnt-nas.mount" ];
requiredBy = [ "mnt-nas.mount" ];
serviceConfig.type = "oneshot";
script = ''
. ${config.sops.secrets."smb-credentials".path}
echo $password | ${pkgs.krb5}/bin/kinit $username
'';
};
2025-06-09 15:45:14 +02:00
services.cron = {
enable = true;
systemCronJobs =
let
script = pkgs.writeShellScript "backup-script" ''
. ${config.sops.secrets."backup-script-env".path}
${pkgs.proxmox-backup-client}/bin/proxmox-backup-client backup nfs.pxar:/mnt/nas --change-detection-mode=metadata
'';
in
[
"0 0 * * * ${script} "
];
};
2025-06-07 23:36:21 +02:00
fileSystems."/mnt/nas" = {
device = "//${inputs.secrets.lab.nas.host}/Backup";
fsType = "cifs";
2025-06-07 23:47:20 +02:00
options = [ "sec=krb5,credentials=${config.sops.secrets."smb-credentials".path}" ];
2025-06-07 23:36:21 +02:00
};
2025-06-07 21:15:31 +02:00
}