aboutsummaryrefslogtreecommitdiff
path: root/modules/services/nixos/filebrowser.nix
diff options
context:
space:
mode:
authorCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2026-07-29 06:54:49 -0500
committerCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2026-07-29 06:54:49 -0500
commite29dd8a2283399b7e046937340509d5aec4b52ba (patch)
treeaa679e70fe55cb620698ab1695eadf23f8a2cdba /modules/services/nixos/filebrowser.nix
parentd2aecd69c17fa64305c07333686576152432993d (diff)
changes
Diffstat (limited to 'modules/services/nixos/filebrowser.nix')
-rw-r--r--modules/services/nixos/filebrowser.nix52
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";
+ };
+ }