diff --git a/modules/services/restic/base-profile.yaml b/modules/services/restic/base-profile.yaml deleted file mode 100644 index def7be3..0000000 --- a/modules/services/restic/base-profile.yaml +++ /dev/null @@ -1,43 +0,0 @@ -base: - repository: local:/mnt/backup - password-file: '{{ .ConfigDir }}/password.txt' - status-file: '{{ .ConfigDir }}/backup-status.json' - retention: - after-backup: true - keep-last: '10' - keep-hourly: '8' - keep-daily: '14' - keep-weekly: '8' - keep-monthly: '6' - backup: - verbose: true - exclude: - - .cache - - .devenv - - .rustup - - .cargo - - .venv - - .pyenv - - .vscode* - - data/postgres - - build - - __pycache__ - - '*.log' - - '*.egg-info' - - '*.csv' - - '*.m4a' - - .local/share/Steam - - .local/share/Trash - - build - - dist - - /home/*/Pictures - - /home/*/Videos - - /home/*/go - - /home/*/snap - - /home/john/john-nas - schedule-permission: user - schedule-priority: background - check-after: true - prune: - schedule-permission: user - schedule-lock-wait: 1h diff --git a/modules/services/restic/resticprofile.nix b/modules/services/restic/resticprofile.nix deleted file mode 100644 index 1cf4e8f..0000000 --- a/modules/services/restic/resticprofile.nix +++ /dev/null @@ -1,99 +0,0 @@ -{ inputs, ... }: -{ - perSystem = { pkgs, ... }: - let - resticprofilePkg = pkgs.buildGoModule rec { - pname = "resticprofile"; - version = "0.32.0"; - src = pkgs.fetchFromGitHub { - owner = "creativeprojects"; - repo = "resticprofile"; - rev = "v${version}"; - sha256 = "sha256-fmYsoGYppNgbtoX18aF5UHBG9ieYorBJ9JZkwrR+UBI="; - }; - vendorHash = "sha256-/GVWjOvkYe7xMRjANKIKV6FSU0F5VY1ZP/ppgAJyhvw="; - goPackagePath = "github.com/creativeprojects/resticprofile"; - doCheck = false; - meta = with pkgs.lib; { - description = "Configuration profiles manager and scheduler for restic backup"; - homepage = "https://creativeprojects.github.io/resticprofile/"; - license = licenses.gpl3Only; - maintainers = [ ]; - mainProgram = "resticprofile"; - }; - }; - in { - packages = { - resticprofile = resticprofilePkg; - default = resticprofilePkg; - }; - }; - - flake.lib.fromYAML = pkgs: path: - builtins.fromJSON ( - builtins.readFile ( - pkgs.runCommand "${builtins.baseNameOf path}.json" - { - nativeBuildInputs = [ pkgs.remarshal ]; - } - '' - remarshal -if yaml -of json ${path} > "$out" - '' - ) - ); - - flake.modules.homeManager.resticprofile = { config, lib, pkgs, ... }: - let - cfg = config.programs.resticprofile; - yamlFormat = pkgs.formats.yaml { }; - # baseProfile = import ../../../resticprofile/base.nix; - baseProfile = inputs.self.lib.fromYAML pkgs ./base-profile.yaml; - profiles = lib.recursiveUpdate baseProfile cfg.profiles; - in { - options.programs.resticprofile = { - enable = lib.mkEnableOption "Enable resticprofile (Restic backup profile manager)"; - package = lib.mkPackageOption pkgs "resticprofile" { }; - profiles = lib.mkOption { - type = lib.types.attrsOf yamlFormat.type; - default = { }; - description = '' - Additional resticprofile configuration merged on top of the base profile. - Each attribute becomes a profile entry in - `$XDG_CONFIG_HOME/resticprofile/profiles.yaml`. - ''; - }; - }; - - config = lib.mkIf cfg.enable ( - let - resticprofilePackage = lib.mkDefault - inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.resticprofile; - resticprofileBin = lib.getExe cfg.package; - rpScript = pkgs.writeShellScriptBin "rp" '' - set -e - sudo ${resticprofileBin} --config "${config.xdg.configHome}/resticprofile/profiles.yaml" $@ - ''; - rpbackupScript = pkgs.writeShellScriptBin "rp-backup" '' - ${lib.getExe rpScript} run-schedule backup@default "$@" - ''; - in { - programs.resticprofile.package = resticprofilePackage; - home.packages = [ - cfg.package - rpScript - rpbackupScript - (pkgs.writeShellScriptBin "rps" '' - set -e - ${lib.getExe rpScript} unschedule --all - ${lib.getExe rpScript} schedule --all - '') - (pkgs.writeShellScriptBin "rp-test" "${lib.getExe rpbackupScript} --dry-run") - ]; - xdg.configFile."resticprofile/profiles.yaml".source = yamlFormat.generate "profiles" { - version = "2"; - profiles = profiles; - }; - } - ); - }; -}