From b885fc14ab953e5bf951f0523328974ee8f197b4 Mon Sep 17 00:00:00 2001 From: blake Date: Tue, 25 Aug 2026 17:08:29 -0500 Subject: [PATCH] move timemachine back to archives --- .../holocron.old/copyparty/default.nix | 160 ------------------ modules/fileshares/holocron.old/default.nix | 20 --- .../fileshares/holocron.old/nfs/default.nix | 28 --- .../fileshares/holocron.old/perms/default.nix | 65 ------- .../fileshares/holocron.old/smb/default.nix | 97 ----------- .../holocron.old/syncthing/default.nix | 89 ---------- .../fileshares/holocron.old/zfs/default.nix | 79 --------- modules/fileshares/holocron/smb/default.nix | 2 +- 8 files changed, 1 insertion(+), 539 deletions(-) delete mode 100644 modules/fileshares/holocron.old/copyparty/default.nix delete mode 100644 modules/fileshares/holocron.old/default.nix delete mode 100644 modules/fileshares/holocron.old/nfs/default.nix delete mode 100644 modules/fileshares/holocron.old/perms/default.nix delete mode 100644 modules/fileshares/holocron.old/smb/default.nix delete mode 100644 modules/fileshares/holocron.old/syncthing/default.nix delete mode 100644 modules/fileshares/holocron.old/zfs/default.nix diff --git a/modules/fileshares/holocron.old/copyparty/default.nix b/modules/fileshares/holocron.old/copyparty/default.nix deleted file mode 100644 index 7028718..0000000 --- a/modules/fileshares/holocron.old/copyparty/default.nix +++ /dev/null @@ -1,160 +0,0 @@ -{ - pkgs, - config, - lib, - inputs, - ... -}: let - service = "copyparty"; - cfg = config.holocron.${service}; - sec = config.sops.secrets; - homelab = config.homelab; -in { - imports = [inputs.copyparty.nixosModules.default]; - - options.holocron.${service} = { - enable = lib.mkEnableOption "enables ${service}"; - - # set port options - port = lib.mkOption { - type = lib.types.int; - default = 7902; - description = "set port for ${service} (default: ${toString cfg.port}"; - }; - url = lib.mkOption { - type = lib.types.str; - default = "${service}.${homelab.base_domain}"; - description = "set domain for ${service}"; - }; - data_dir = lib.mkOption { - type = lib.types.str; - default = "/var/lib/${service}"; - description = "set data directory for ${service}"; - }; - ids = lib.mkOption { - type = lib.types.int; - default = cfg.port; - description = "set uid and pid of ${service} user (matches port by default)"; - }; - backup = lib.mkOption { - type = lib.types.bool; - default = true; - description = "enable backups for ${service}"; - }; - }; - - config = lib.mkIf cfg.enable { - nixpkgs.overlays = [inputs.copyparty.overlays.default]; - # declare ${service} group - users.groups.${service} = { - gid = lib.mkForce cfg.ids; - }; - - # declare ${service} user - users.users.${service} = { - description = lib.mkForce "${service} server user"; - uid = lib.mkForce cfg.ids; - isSystemUser = true; - home = cfg.data_dir; - createHome = true; - group = service; - extraGroups = [ "media" "blake" "archives" ]; - }; - - # enable the ${service} service - services.${service} = { - enable = true; - user = service; - group = service; - settings = { - i = "0.0.0.0"; - p = [7902]; - rproxy = 1; - }; - accounts = { - blake = { - passwordFile = sec."copyparty_passwd".path; - }; - }; - groups = { - media = ["blake"]; - }; - volumes = { - "/archives" = { - path = "/holocron/archives"; - access = { - r = "*"; - A = "blake"; - }; - flags = { - chmod_f = 660; - chmod_d = 770; - #gid = ?; - }; - }; - "/media" = { - path = "/holocron/media"; - access = { - r = "*"; - w = "@media"; - A = "blake"; - }; - flags = { - chmod_f = 660; - chmod_d = 770; - gid = "700"; - }; - }; - "/users/blake" = { - path = "/holocron/users/blake"; - access = { - A = "blake"; - }; - flags = { - chmod_f = 660; - chmod_d = 770; - gid = "1000"; - }; - }; - }; - }; - - # open firewall - networking.firewall.allowedTCPPorts = [cfg.port]; - - # add to caddy for reverse proxy - services.caddy.virtualHosts."${cfg.url}" = { - serverAliases = ["${service}.${homelab.public_domain}"]; - extraConfig = '' - tls /etc/ssl/blakedheld.xyz.crt /etc/ssl/blakedheld.xyz.key - reverse_proxy 127.0.0.1:${toString cfg.port} { - } - ''; - }; - - # add to glance (local service) - homelab.glance.links.system = [ - { - title = service; - url = "https://${cfg.url}"; - error-url = "http://${homelab.host_ip}:${toString cfg.port}"; - check-url = "http://${homelab.host_ip}:${toString cfg.port}"; - icon = "di:${service}"; - } - ]; - - sops.secrets = { - "${service}_passwd" = { - owner = service; - group = service; - }; - }; - - # add to backups - homelab.backups.baks = { - ${service} = { - paths = [cfg.data_dir]; - }; - }; - }; -} diff --git a/modules/fileshares/holocron.old/default.nix b/modules/fileshares/holocron.old/default.nix deleted file mode 100644 index c75784a..0000000 --- a/modules/fileshares/holocron.old/default.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - config, - lib, - inputs, - ... -}: { - # services show up in glance in reverse import order lmao - imports = [ - ./nfs - ./smb - ./zfs - #./syncthing - #./copyparty - ./perms - ]; - - # define the groups used for backups and archives - users.groups.archives = {gid = 727;}; -} diff --git a/modules/fileshares/holocron.old/nfs/default.nix b/modules/fileshares/holocron.old/nfs/default.nix deleted file mode 100644 index 0e83cf7..0000000 --- a/modules/fileshares/holocron.old/nfs/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - pkgs, - config, - lib, - ... -}: -# define nfs exports -let - cfg = config.holocron.nfs; - nfs_exports = '' - /holocron/media *(ro,sync,no_subtree_check) - ''; - #/holocron/users *(rw,sync,no_subtree_check,no_root_squash) -in { - options.holocron.nfs = { - enable = lib.mkEnableOption "enables nfs"; - }; - - config = lib.mkIf cfg.enable { - # enable nfs with all exports - services.nfs = { - server = { - enable = true; - exports = nfs_exports; - }; - }; - }; -} diff --git a/modules/fileshares/holocron.old/perms/default.nix b/modules/fileshares/holocron.old/perms/default.nix deleted file mode 100644 index 5100b81..0000000 --- a/modules/fileshares/holocron.old/perms/default.nix +++ /dev/null @@ -1,65 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: let - service = "ensure_perms"; - cfg = config.holocron.${service}; - - # define variables for paths - archives_path = "/holocron/archives"; - media_path = "/holocron/media"; - users_path = "/holocron/users"; -in { - options.holocron.ensure_perms = { - enable = lib.mkEnableOption "enables perms ensurence script"; - }; - - config = lib.mkIf cfg.enable { - # service to run periodically to reset the perms on all zpools - # everything works fine without this, just for peace of mind - # and to clean up the ownership from the arr stack in /holocron/media - systemd.services.${service} = { - description = "ensure file permissions for archives, media and user folders"; - serviceConfig = { - Type = "oneshot"; - ExecStart = pkgs.writeShellScript "ensure_perms" '' - - # Fix ownership for archives directory - echo "starting ${archives_path}" - chown -Rc root:archives ${archives_path} - find "${archives_path}" -type d -exec chmod 2770 "$@" {} + - find "${archives_path}" -type f -exec chmod 660 "$@" {} + - - # Fix ownership for media directory - echo "starting ${media_path}" - chown -Rc root:media ${media_path} - find "${media_path}" -type d -exec chmod 2770 "$@" {} + - find "${media_path}" -type f -exec chmod 660 "$@" {} + - - # Fix user directories - for user_dir in ${users_path}/*; do - if [ -d "$user_dir" ]; then - user=$(basename "$user_dir") - echo "starting $user_dir" - chown -Rc $user:$user $user_dir - find $user_dir -type d -exec chmod 2770 "$@" {} + - find $user_dir -type f -exec chmod 660 "$@" {} + - fi - done - echo "fin" - ''; - }; - }; - - systemd.timers.${service} = { - description = "run script to ensure_perms daily"; - wantedBy = ["timers.target"]; - timerConfig = { - OnCalendar = "03:30"; - Persistent = true; - }; - }; - }; -} diff --git a/modules/fileshares/holocron.old/smb/default.nix b/modules/fileshares/holocron.old/smb/default.nix deleted file mode 100644 index 9c634d3..0000000 --- a/modules/fileshares/holocron.old/smb/default.nix +++ /dev/null @@ -1,97 +0,0 @@ -{ - pkgs, - config, - lib, - ... -}: -# define smb shares -let - cfg = config.holocron.smb; - smb_shares = { - global = { - "ea support" = "yes"; - "vfs objects" = "catia fruit streams_xattr"; - "fruit:aapl" = "yes"; - "fruit:metadata" = "stream"; - "fruit:model" = "MacSamba"; - "fruit:posix_rename" = "yes"; - "fruit:nfs_aces" = "no"; - "fruit:veto_appledouble" = "no"; - "fruit:wipe_intentionally_left_blank_rfork" = "yes"; - "fruit:delete_empty_adfiles" = "yes"; - }; - archives = { - path = "/holocron/archives"; - browseable = true; - writable = true; - guestOk = false; - "create mask" = "0775"; - "directory mask" = "0775"; - }; - timemachine = { - browseable = true; - "path" = "/holocron/archives/timemachine"; - "valid users" = "blake"; - "public" = "no"; - "writeable" = "yes"; - "force user" = "blake"; - "fruit:aapl" = "yes"; - "fruit:time machine" = "yes"; - "vfs objects" = "catia fruit streams_xattr"; - }; - users = { - path = "/holocron/users"; - browseable = true; - writable = true; - guestOk = false; - "create mask" = "0660"; - "directory mask" = "0770"; - }; - media = { - path = "/holocron/media"; - browseable = true; - writable = true; - guestOk = false; - "create mask" = "0775"; - "directory mask" = "0775"; - }; - }; -in { - options.holocron.smb = { - enable = lib.mkEnableOption "enables smb"; - }; - - config = lib.mkIf cfg.enable { - # enable smb with all shares - services.samba = { - enable = true; - settings = smb_shares; - }; - # Ensure Time Machine can discover the share without `tmutil` - services.avahi = { - extraServiceFiles = { - timemachine = '' - - - - %h - - _smb._tcp - 445 - - - _device-info._tcp - 0 - model=TimeCapsule8,119 - - - _adisk._tcp - dk0=adVN=timemachine,adVF=0x82 - sys=waMa=0,adVF=0x100 - - - ''; - }; - }; - }; -} diff --git a/modules/fileshares/holocron.old/syncthing/default.nix b/modules/fileshares/holocron.old/syncthing/default.nix deleted file mode 100644 index eef872c..0000000 --- a/modules/fileshares/holocron.old/syncthing/default.nix +++ /dev/null @@ -1,89 +0,0 @@ -{ - pkgs, - config, - lib, - ... -}: let - service = "syncthing"; - cfg = config.holocron.${service}; - sec = config.sops.secrets; - url = "syncthing.snowbelle.blakedheld.xyz"; - homelab = config.homelab; -in { - options.holocron.${service} = { - enable = lib.mkEnableOption "enables syncthing"; - }; - - config = lib.mkIf cfg.enable { - services.syncthing = { - enable = true; - user = "blake"; - group = "blake"; - dataDir = "/var/lib/syncthing"; - guiAddress = "0.0.0.0:2222"; - openDefaultPorts = true; - #extraFlags = ["--no-default-folder"]; - key = sec."${service}/snowbelle/key".path; - cert = sec."${service}/snowbelle/cert".path; - settings = { - devices = { - "mudkip" = {id = "OV4NUQK-3YHRL5R-SIZGTNL-7VZFFUX-FOJ6NTS-C7ROXR7-I2Q2W7G-QERO7AO";}; - "zygarde" = {id = "UYLTF52-VVKUR7F-JN33HQZ-RFNWGL3-JER52LA-GZD2LPJ-QIFEE7K-MNMZRQ5";}; - "yveltal" = {id = "ZVSQ4WJ-7OICYOZ-3ECES4X-KH37IPB-TKHKUJG-BSEGXVM-AHYY5C3-VKG44AX";}; - "CEN-IT-07" = {id = "DPYKA4Z-3PX7JB2-FBEOXXX-SC7TLT2-QC5P2IR-SXOPJGX-QO3DMII-5B7UCA4";}; - "CEN-IT-00007" = {id = "XBPXGYU-DUJSLDH-6BDNF4D-CO2COC3-N3FM6W5-IHZOJBM-Z2N77RI-IVAV5AH";}; - }; - folders = { - "holocron" = { - path = "/holocron/users/blake/holocron"; - devices = ["mudkip" "zygarde" "CEN-IT-07" "CEN-IT-00007" "yveltal"]; - id = "5voxg-c3he2"; - versioning = { - type = "staggered"; - fsPath = "/holocron/users/blake/holocron/.stversions"; - params = { - cleanInterval = "3600"; - maxAge = "0"; - }; - }; - }; - }; - options = { - urAccepted = -1; - }; - }; - }; - - sops.secrets = { - "${service}/snowbelle/key" = { - owner = "blake"; - group = "blake"; - }; - "${service}/snowbelle/cert" = { - owner = "blake"; - group = "blake"; - }; - }; - homelab.backups.baks = { - ${service} = {paths = [config.services.syncthing.dataDir];}; - }; - - services.caddy.virtualHosts."${url}" = { - extraConfig = '' - tls internal - reverse_proxy 127.0.0.1:2222 - ''; - }; - - # add to glance (local service) - homelab.glance.links.system = [ - { - title = service; - url = "https://${url}"; - error-url = "http://${homelab.host_ip}:2222"; - check-url = "http://${homelab.host_ip}:2222"; - icon = "di:${service}"; - } - ]; - }; -} diff --git a/modules/fileshares/holocron.old/zfs/default.nix b/modules/fileshares/holocron.old/zfs/default.nix deleted file mode 100644 index 7d23d5e..0000000 --- a/modules/fileshares/holocron.old/zfs/default.nix +++ /dev/null @@ -1,79 +0,0 @@ -{ - pkgs, - config, - lib, - ... -}: let - cfg = config.holocron.zfs; -in { - options.holocron.zfs = { - enable = lib.mkEnableOption "enables zfs"; - }; - - config = lib.mkIf cfg.enable { - # set network host id - networking.hostId = "3e6e7055"; - - # enable zfs support - boot.zfs.forceImportRoot = false; - boot.kernelModules = ["zfs"]; - boot.supportedFilesystems = ["zfs"]; - - # arc cache size - boot.kernelParams = ["zfs.zfs_arc_max=12884901888"]; - - # pools to import - #boot.zfs.extraPools = [ "holocron" "holocron/archives" "/holocron/media" "/holocron/users" ]; - #boot.zfs.extraPools = [ "holocron" ]; - - # enable smart monitoring - services.smartd = { - enable = true; - autodetect = true; - defaults.monitored = "-a -o on -s (S/../.././05|L/../01/./05)"; - notifications.mail = { - enable = true; - sender = "zfs@snowbelle.lan"; - }; - }; - - # enable zfs - services.zfs = { - autoScrub.enable = true; - autoScrub.interval = "weekly"; - # email notifs - zed = { - enableMail = false; - settings = { - ZED_EMAIL_ADDR = ["root"]; - # send notification if scrub succeeds - ZED_NOTIFY_VERBOSE = true; - }; - }; - }; - - # install userspace tools for acl's - environment.systemPackages = with pkgs; [smartmontools]; - - fileSystems."/holocron" = { - device = "holocron"; - fsType = "zfs"; - options = ["nofail"]; - }; - fileSystems."/holocron/archives" = { - device = "holocron/archives"; - fsType = "zfs"; - options = ["nofail"]; - }; - fileSystems."/holocron/users" = { - device = "holocron/users"; - fsType = "zfs"; - options = ["nofail"]; - }; - fileSystems."/holocron/media" = { - device = "holocron/media"; - fsType = "zfs"; - options = ["nofail"]; - }; - }; -} diff --git a/modules/fileshares/holocron/smb/default.nix b/modules/fileshares/holocron/smb/default.nix index 441700a..774e31b 100644 --- a/modules/fileshares/holocron/smb/default.nix +++ b/modules/fileshares/holocron/smb/default.nix @@ -34,7 +34,7 @@ let }; timemachine = { browseable = true; - "path" = "/holocron/timemachine"; + "path" = "/holocron/archives/timemachine"; "valid users" = "blake"; "public" = "no"; "writeable" = "yes";