diff options
Diffstat (limited to 'modules/services/nixos/filebrowser.nix')
| -rw-r--r-- | modules/services/nixos/filebrowser.nix | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/modules/services/nixos/filebrowser.nix b/modules/services/nixos/filebrowser.nix new file mode 100644 index 0000000..df0d536 --- /dev/null +++ b/modules/services/nixos/filebrowser.nix @@ -0,0 +1,52 @@ +{ + lib, + pkgs, + config, + ... +}: let + cfg = config.collinux.services.filebrowser; +in + lib.mkIf cfg.enable { + users.groups."dufs" = {}; + users.users."dufs" = { + isSystemUser = true; + group = "dufs"; + extraGroups = ["fileserver"]; + }; + + systemd.services."dufs" = { + description = "dufs file server"; + restartIfChanged = true; + wants = ["network-online.target"]; + after = ["network-online.target"]; + wantedBy = ["multi-user.target"]; + + serviceConfig = { + # ExecStart = "${pkgs.dufs}/bin/dufs /media --port ${toString cfg.port}"; + ExecStart = "${lib.getExe pkgs.dufs} /media --bind /run/dufs/dufs.sock"; + + RuntimeDirectory = "dufs"; # /run/dufs + + User = "dufs"; + Group = "dufs"; + + # Hardening + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + NoNewPrivileges = true; + + Restart = "on-failure"; + }; + }; + + services.caddy.virtualHosts."files.ganymede".extraConfig = '' + tls internal + reverse_proxy unix//run/dufs/dufs.sock + ''; + + collinux.services.glance.homelabServices."files" = { + url = "https://files.ganymede"; + icon = "si:folder"; + }; + } |
