Tá cúltaca mo fhreastalaí baile NixOS athraithe agam anois, agus in ionad script shimplí laethúil, tá sé socraithe agam gach uair an chloig anois. Níl sé chomh galánta leis an gcás Mastodon a bhainistíonn mo chara – ansin bíonn léargas (snapshot) ZFS againn gach 20 nóiméad – ach tá mé sásta leis an réiteach seo freisin. Agus caithfidh mé a rá go dtaitníonn NixOS liom níos mó agus níos mó. Gan intleacht shaorga (IS), bheadh sé i bhfad ró-chasta dom é a thuiscint, ach faoin am seo is féidir liom na comhaid Nix réidh a léamh ar a laghad. Bhí mé ag smaoineamh ar an bhfreastalaí a athrú go Linux rialta, ach fad is a oibríonn sé chomh maith seo...

  1. /etc/nixos: An chumraíocht NixOS iomlán (gach comhad .nix).

  2. /opt/minecraft: Gach domhan agus sonraí de chuid an fhreastalaí Minecraft.

  3. /opt/satisfactory: Cluichí sábháilte agus cumraíocht an fhreastalaí Satisfactory.

  4. /opt/Blog: Cód foinseach agus ábhar an bhlag.

  5. /opt/ui: Comhaid UI Mastodon.

  6. /opt/audiobookshelf: Na closleabhair agus an bunachar sonraí gaolmhar.

Téann sé seo go léir chuig stóras S3 atá feistithe trí RClone.

An chumraíocht NixOS


{ config, pkgs, ... }:

{
  # Cumraíocht BorgBackup
  services.borgbackup.jobs.hourly = {
    # Conair chuig an stór sa ghléasadh S3
    repo = "/opt/S3/Backup/NixOSHomeServer_Borg";

    # Níl pasfhocal de dhíth
    encryption.mode = "none";

    # Comhbhrú chun níos mó spáis a shábháil
    compression = "auto,zstd";

    # Na conairí le cúltaca a dhéanamh orthu
    paths = [
      "/etc/nixos"
      "/opt/minecraft"
      "/opt/satisfactory"
      "/opt/Blog"
      "/opt/ui"
      "/opt/audiobookshelf"
    ];

    # Rith gach uair an chloig
    startAt = "hourly";

    # An stór a thúsú go huathoibríoch má tá sé in easnamh
    doInit = true;

    # Rialacha coinneála (Pruning)
    prune.keep = {
      within = "1d"; # Gach léargas ó na 24 uair an chloig dheireanacha
      daily = 7;
      weekly = 4;
      monthly = 12;
    };
  };

  # Cinntiú go bhfuil an gléasadh S3 réidh sula dtosaíonn Borg
  systemd.services.borgbackup-job-hourly = {
    requires = [ "rclone-s3-mount.service" ];
    after = [ "rclone-s3-mount.service" ];
  };
}