nix-config/hosts/cirrostratus/copyparty.nix
2025-04-23 11:43:51 +02:00

89 lines
2 KiB
Nix

{
inputs,
config,
pkgs,
lib,
...
}: let
port = "3923";
defaultvolflags = {
scan = 60;
grid = true;
nsort = true;
fk = 8;
};
in {
nixpkgs.overlays = [inputs.copyparty.overlays.default];
environment.systemPackages = with pkgs; [copyparty];
services.copyparty = {
enable = true;
user = config.host.details.user;
group = "users";
# directly maps to values in the [global] section of the copyparty config.
# see `copyparty --help` for available options
settings = {
# i = "127.0.0.1";
p = port;
ed = true;
e2dsa = true;
forget-ip = 1440;
e2ts = true;
shr = "/share";
shr-adm = "gabe";
u2abort = 3;
magic = true;
df = 5;
u2j = 16;
ls = "**,*,ln,p,r";
xvol = true;
xdev = true;
no-logues = true;
no-robots = true;
md-hist = "v";
nsort = true;
log-utc = true;
ah-alg = "argon2";
ah-salt = "ImSaltyAboutNonPersistentSalts";
};
accounts = lib.mkIf (inputs ? nix-secrets) (
builtins.mapAttrs (name: value: {passwordFile = "${inputs.nix-secrets}/copyparty/${name}";})
(builtins.readDir "${inputs.nix-secrets}/copyparty")
);
volumes = {
"/" = {
path = "/storage/syncthing/family";
access = {
rwmd = ["gabe" "erica"];
A = ["gabe"];
};
flags = defaultvolflags;
};
"/gabe" = {
path = "/storage/syncthing/gabe";
access = {
rwmd = "gabe";
A = ["gabe"];
};
flags = defaultvolflags;
};
"/erica" = {
path = "/storage/syncthing/erica";
access = {
rwmd = "erica";
A = ["erica"];
};
flags = defaultvolflags;
};
};
# you may increase the open file limit for the process
openFilesLimit = 8192;
};
services.nginx.virtualHosts."files.venberg.xyz" = {
enableACME = true;
forceSSL=true;
locations."/" = {
proxyPass= "http://localhost:${port}";
};
};
}