aboutsummaryrefslogtreecommitdiff
path: root/modules/services/nixos/copyparty.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/services/nixos/copyparty.nix')
-rw-r--r--modules/services/nixos/copyparty.nix81
1 files changed, 41 insertions, 40 deletions
diff --git a/modules/services/nixos/copyparty.nix b/modules/services/nixos/copyparty.nix
index 68701a1..ec882d9 100644
--- a/modules/services/nixos/copyparty.nix
+++ b/modules/services/nixos/copyparty.nix
@@ -12,11 +12,16 @@ in {
];
config = lib.mkIf cfg.enable {
+ users.groups."fileserver".members = [config.collinux.user.name];
+
services.copyparty = {
enable = true;
+ user = "copyparty";
+ group = "fileserver";
+
settings = {
- i = "0.0.0.0";
+ i = cfg.bind_host;
p = [cfg.port];
chpw = true;
rproxy = "1";
@@ -27,47 +32,43 @@ in {
e2ts = true;
};
- accounts = {
- collin = {
- passwordFile = config.collinux.secrets."collin-copyparty-password".path;
- };
- };
-
- groups.admin = ["collin"];
+ accounts =
+ cfg.users
+ |> map (x: {
+ inherit (x) passwordFile;
+ });
- volumes = let
- commonFlags = {
- scan = 60;
- chmod_f = "777";
- chmod_d = "777";
- };
- in {
- "/" = {
- path = "/media/public";
- access = {
- r = "*";
- A = ["@admin"];
- };
+ groups.admin = cfg.users |> lib.attrs.filterAttrs (k: v: v.isAdmin == true) |> builtins.attrNames;
- flags = commonFlags;
- };
-
- "/collin" = {
- path = "/media/collin";
- access.A = ["collin"];
-
- flags = commonFlags;
- };
- "/public/collin" = {
- path = "/media/collin/public";
- access = {
- r = "*";
- A = ["collin"];
- };
-
- flags = commonFlags;
- };
- };
+ volumes = lib.mkMerge ([
+ {
+ "/" = {
+ path = "/media/public";
+ access = {
+ r = "*";
+ A = ["@admin"];
+ };
+ };
+ }
+ ]
+ ++ lib.lists.flatten (cfg.users
+ |> map (x: [
+ {
+ "/${x.name}" = {
+ path = "/media/${x.name}";
+ access.A = [x.name];
+ };
+ }
+ (lib.optionalAttrs x.hasPublicDir {
+ "/public/${x.name}" = {
+ path = "/media/${x.name}/public";
+ access = {
+ r = "*";
+ A = [x.name];
+ };
+ };
+ })
+ ])));
};
};
}