2024-08-23 10:20:05 +02:00
|
|
|
|
# Edit this configuration file to define what should be installed on
|
|
|
|
|
|
# your system. Help is available in the configuration.nix(5) man page
|
|
|
|
|
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
|
|
|
|
|
{
|
2024-09-18 12:03:23 +02:00
|
|
|
|
pkgs,
|
|
|
|
|
|
lib,
|
|
|
|
|
|
...
|
|
|
|
|
|
}: {
|
2024-08-23 10:20:05 +02:00
|
|
|
|
imports = [
|
|
|
|
|
|
./hardware-configuration-t470.nix
|
2024-08-23 14:39:38 +02:00
|
|
|
|
./common.nix
|
|
|
|
|
|
|
2024-08-23 10:20:05 +02:00
|
|
|
|
./borgbackup.nix
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
networking.hostName = "t470"; # Define your hostname.
|
|
|
|
|
|
|
|
|
|
|
|
fileSystems."/home/khais/Books" = {
|
|
|
|
|
|
device = "//void/Books";
|
|
|
|
|
|
fsType = "cifs";
|
2024-09-18 12:03:23 +02:00
|
|
|
|
options = let
|
2024-08-23 10:20:05 +02:00
|
|
|
|
# prevent hanging when network is not reachable
|
|
|
|
|
|
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
|
2024-09-18 12:03:23 +02:00
|
|
|
|
in ["${automount_opts},credentials=/etc/nixos/secrets/books.smb"];
|
2024-08-23 10:20:05 +02:00
|
|
|
|
};
|
|
|
|
|
|
|
2024-08-30 15:26:14 +02:00
|
|
|
|
# scanner drop point
|
|
|
|
|
|
services.vsftpd = {
|
|
|
|
|
|
enable = true;
|
|
|
|
|
|
localUsers = true;
|
|
|
|
|
|
anonymousUser = false;
|
|
|
|
|
|
writeEnable = true;
|
|
|
|
|
|
chrootlocalUser = true;
|
|
|
|
|
|
userlistEnable = true;
|
2024-09-18 12:03:23 +02:00
|
|
|
|
userlist = ["paperless-upload"];
|
2024-08-30 15:26:14 +02:00
|
|
|
|
userlistDeny = false;
|
|
|
|
|
|
extraConfig = ''
|
|
|
|
|
|
log_ftp_protocol=YES
|
|
|
|
|
|
pasv_enable=YES
|
|
|
|
|
|
pasv_min_port=51000
|
|
|
|
|
|
pasv_max_port=51999
|
|
|
|
|
|
local_umask=022
|
|
|
|
|
|
file_open_mode=0777
|
|
|
|
|
|
user_sub_token=$USER
|
|
|
|
|
|
local_root=/var/lib/ftp/$USER
|
|
|
|
|
|
allow_writeable_chroot=YES
|
|
|
|
|
|
'';
|
|
|
|
|
|
};
|
2024-09-18 12:03:23 +02:00
|
|
|
|
networking.firewall.allowedTCPPorts = [21];
|
2024-08-30 15:26:14 +02:00
|
|
|
|
networking.firewall.allowedTCPPortRanges = [
|
|
|
|
|
|
{
|
|
|
|
|
|
from = 51000;
|
|
|
|
|
|
to = 51999;
|
|
|
|
|
|
}
|
|
|
|
|
|
];
|
|
|
|
|
|
users.groups.paperless-upload = {};
|
|
|
|
|
|
users.users.paperless-upload = {
|
2024-08-30 18:23:16 +02:00
|
|
|
|
isNormalUser = true;
|
2024-08-30 15:26:14 +02:00
|
|
|
|
group = "paperless-upload";
|
|
|
|
|
|
};
|
2024-09-18 12:03:23 +02:00
|
|
|
|
system.activationScripts.makeFtpDirectory = lib.stringAfter ["var"] ''
|
2024-08-30 15:26:14 +02:00
|
|
|
|
mkdir -m 775 -p /var/lib/ftp
|
|
|
|
|
|
chown root:root /var/lib/ftp
|
|
|
|
|
|
mkdir -m 700 -p /var/lib/ftp/paperless-upload
|
|
|
|
|
|
chown paperless-upload:paperless-upload /var/lib/ftp/paperless-upload
|
|
|
|
|
|
'';
|
2024-08-30 18:23:16 +02:00
|
|
|
|
systemd.services.uploadPaperlessDocuments = {
|
2024-09-18 12:03:23 +02:00
|
|
|
|
path = [pkgs.openssh pkgs.inotify-tools];
|
2024-08-30 18:23:16 +02:00
|
|
|
|
serviceConfig = {
|
|
|
|
|
|
User = "paperless-upload";
|
|
|
|
|
|
StandardOutput = "journal+console";
|
|
|
|
|
|
StandardError = "journal+console";
|
|
|
|
|
|
};
|
|
|
|
|
|
script = ''
|
2024-08-30 20:59:00 +02:00
|
|
|
|
# wait for document to finish uploading
|
2024-08-30 21:06:14 +02:00
|
|
|
|
inotifywait --event close_write --timeout 60 /var/lib/ftp/paperless-upload
|
2024-08-30 20:59:00 +02:00
|
|
|
|
# copy documents over
|
2024-08-30 21:03:33 +02:00
|
|
|
|
${pkgs.rsync}/bin/rsync --verbose --stats --sparse --recursive --checksum --remove-source-files /var/lib/ftp/paperless-upload/ paperless-upload@005540.xyz:/var/lib/paperless-upload
|
2024-08-30 18:23:16 +02:00
|
|
|
|
'';
|
|
|
|
|
|
};
|
2024-08-30 20:35:56 +02:00
|
|
|
|
systemd.paths.uploadPaperlessDocuments = {
|
|
|
|
|
|
pathConfig = {
|
|
|
|
|
|
PathChanged = "/var/lib/ftp/paperless-upload/";
|
|
|
|
|
|
};
|
2024-09-18 12:03:23 +02:00
|
|
|
|
wantedBy = ["multi-user.target"];
|
2024-08-30 20:35:56 +02:00
|
|
|
|
};
|
2024-09-30 21:26:06 +02:00
|
|
|
|
|
|
|
|
|
|
# fingerprint sensor setup
|
2024-12-31 15:25:35 +01:00
|
|
|
|
services."06cb-009a-fingerprint-sensor" = {
|
|
|
|
|
|
enable = true;
|
|
|
|
|
|
backend = "python-validity";
|
|
|
|
|
|
};
|
2024-08-23 10:20:05 +02:00
|
|
|
|
}
|