Commit graph

69 commits

Author SHA1 Message Date
Felipe Silva 6b1ffd4282
nixos/restic: allow setting repository/password via environmentFile 2025-08-26 19:22:03 +02:00
rowan amber-jones 6434cf0b18 nixos/restic: add command option
Add module support for --stdin-from-command flag, which was added to
restic in https://github.com/restic/restic/pull/4410. I also made a few
very small changes here and there in the nix code to make it look a
little neater in my opinion.

I could potentially add support for the --stdin flag too, but this would
require prepending the restic command with an external command and a
pipe, which seems a bit messy - and the restic documentation says to
prefer --stdin-from-command over --stdin anyway.

I could add an option for --stdin-filename, but I feel that this would
be better for users to do in extraBackupArgs.
2025-08-21 19:47:50 +01:00
Wolfgang Walther 5a0711127c
treewide: run nixfmt 1.0.0 2025-07-24 13:55:40 +02:00
hotburger f6885105e9
nixos/restic: escape settings in wrapper script 2025-04-07 03:21:40 -07:00
Sandro Jäckel 138abab480
nixos/restic: unlock database before doing pruning
This is safe to do because only stale locks are removed.
See https://github.com/restic/restic/issues/2736 and https://github.com/restic/restic/blob/master/internal/restic/lock.go
By default only locks older than 30 minutes or when the pid is no longer
found on the same machine, are removed. Locks are refreshed every 5
minutes when doing operations.
2025-03-04 22:54:42 +01:00
Sandro Jäckel 7c9c342419
nixos/restic: suggest to cleanup cache 2025-03-04 22:54:34 +01:00
Cody Allen bf121f0671
services.restic: use getExe instead of hard-coded path
Instead of assuming the restic executable is at `bin/restic`, use
`lib.getExe` on the restic package. The main motivation for this is
using a security wrapper that has a different name such as
`bin/restic-wrapper`.

NOTE: In rare cases this could be a breaking change. For example if you
are using a wrapper whose executable is at `bin/restic`,
`meta.mainProgram` is not set, _and_ your package name is something
other than `restic`.

See the [discource discussion](https://discourse.nixos.org/t/using-restic-service-with-the-security-wrapper/34547/5) for more details/discussion.
2025-02-07 13:42:57 -05:00
Tert0 aca35b7fd6
nixos/restic: add progressFps option 2025-01-30 19:04:44 +01:00
Tert0 54dba7bed8
nixos/restic: nixfmt 2025-01-30 16:43:51 +01:00
Peder Bergebakken Sundt 953f72e76e nixos/*: tag manpage references 2025-01-27 02:47:01 +01:00
Ilya Epifanov a21e4fa9e0 restic: fixed handling of arguments with spaces in restic wrappers 2024-12-20 22:05:47 +01:00
Felix Buehler 27f54eb43e nixos/services.restic.backups: remove with lib; 2024-09-15 10:43:46 +02:00
Emily ecf7c683c2
Merge pull request #319807 from hellodword/nixos-restic-add-unlock
nixos/restic: ensure newline in --files-from
2024-08-02 18:18:47 +02:00
hellodword e4a4da8794
nixos/restic: ensure newline in --files-from 2024-08-01 02:07:38 +00:00
Emily d21a082a4d
Merge pull request #296691 from helsinki-systems/feat/restic-systemd-inhibit
nixos/restic: add option to inhibit going to sleep
2024-07-30 20:45:56 +02:00
Emily 477c3c6d5e
Merge pull request #307962 from jpds/restic-snapshot-list-only-latest
nixos/restic: Use cat config in pre-start repo initialization check
2024-07-24 17:13:38 +02:00
Max Hausch a8038698d3
nixos/restic: add option to inhibit going to sleep 2024-07-08 09:43:27 +02:00
Kai Norman Clasen c650982a43 nixos/restic: Add runCheck option
This commit fixes the requirement to provide a pruneOption to ensure
that the check command is run when a check option is set. This is useful
for check-only configurations. The option is implicitly set if checkOpts
are given by default.
2024-05-04 22:44:37 +02:00
Jonathan Davies 046691a499 nixos/restic: Use cat config command in pre-start command for repo initialization
check, per upstream recommendation in https://github.com/restic/restic/issues/1690

This is to prevent logs from becoming unwieldy with large repo listings.
2024-05-01 12:50:55 +01:00
stuebinm 6afb255d97 nixos: remove all uses of lib.mdDoc
these changes were generated with nixq 0.0.2, by running

  nixq ">> lib.mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> Inherit >> mdDoc[remove]" --batchmode nixos/**.nix

two mentions of the mdDoc function remain in nixos/, both of which
are inside of comments.

Since lib.mdDoc is already defined as just id, this commit is a no-op as
far as Nix (and the built manual) is concerned.
2024-04-13 10:07:35 -07:00
ajs124 be0a6b0dd6 nixos/restic: append PATH in wrappers instead of overwriting
fixes "mount"
2023-12-13 16:24:50 +01:00
h7x4 0a37316d6c
treewide: use mkPackageOption
This commit replaces a lot of usages of `mkOption` with the package
type, to be `mkPackageOption`, in order to reduce the amount of code.
2023-11-27 01:28:36 +01:00
Robert Obryk 20b202b3c8 nixos/restic: allow timer to be disabled 2023-11-07 22:37:37 +01:00
Robert Obryk 536401e90a nixos/restic: fix #264696 and add a regression test
Make sure that preStart and postStop are included in all cases when they are nonempty.
2023-11-01 21:18:56 +01:00
Alyssa Ross 44ff5dfca2 nixos/restic: remove s3CredentialsFile option
This has been deprecated since 2021, so all users should have seen the
warning and migrated by now.
2023-10-27 12:31:54 +00:00
Peder Bergebakken Sundt adcaf3962d
Merge pull request #212087 from robryk/resticpaths
nixos/backups/restic: handle cases when both dynamicFileFrom and paths are set
2023-10-26 19:35:22 +02:00
Janik eda85eb31d
Merge pull request #251062 from ajs124/restic-wrapper-script 2023-09-09 19:11:33 +02:00
ajs124 dbb69f82c6 nixos/restic: add wrapper scripts that set parameters for backup
and use in test
2023-08-28 15:17:37 +02:00
ajs124 4732cbf3f8 nixos/restic: use openssh as configured in programs.ssh 2023-08-28 15:03:12 +02:00
Hugh O'Brien a08d69ba63
nixos/restic: wait for network-online for timed backups 2023-08-18 20:02:16 -04:00
Robert Obryk 77bc27ccdb nixos/backups/restic: handle cases when both dynamicFileFrom and paths are set
Also, add a test to verify that it works.

This change also removes the part of custom package test that verifies
that the correct paths are provided. This is already tested by restore
tests.

Before this change, setting both paths and dynamicFileFrom would cause
paths to be silently ignored. Making that actually apply the obvious
interpretation seems to me to be strictly better than prohibiting the
two from being set at the same time.
2023-08-16 11:25:15 +02:00
Felix Buehler 933a41a73f treewide: use optional instead of 'then []' 2023-06-25 09:11:40 -03:00
Janik H 95e1099d2a restic: add persistent default for timer unit 2023-05-15 15:16:58 +02:00
Elias Probst 3bd1c64a5b
nixos/restic: use private tmp for service unit
To reduce the danger of accidentally exposing sensitive files processed
by a restic backup to other services/users, enable the `PrivateTmp=`
feature of restic service units, which provides a per service isolation
of `/tmp` and `/var/tmp`.

Co-authored-by: Daniel Nagy <danielnagy@posteo.de>
2023-04-30 10:39:29 +02:00
Felix Buehler 327b0cff7a treewide: use more lib.optionalString 2023-04-07 13:38:33 +02:00
Alvar Penning adafbeff4a nixos/restic: generalize cache configuration
The restic repository cache location defaults to ~/.cache/restic when
not overwritten either by the --cache-dir command line parameter or the
universal RESTIC_CACHE_DIR environment variable.

Currently, the --cache-dir variable is set to only some restic commands,
but, e.g., not to the unit's preStart command for the module's
initialize option. This results in two distinct cache locations, one at
~/.cache/restic for the initialize commands and one at the configured
--cache-dir location for the restic backup command.

By explicitly setting RESTIC_CACHE_DIR for the unit, only one cache at
the correct location will be used.

https://restic.readthedocs.io/en/v0.15.1/manual_rest.html#caching
2023-03-11 12:59:10 +01:00
Nick Cao 99f9998309
Merge pull request #204386 from robryk/resticassert
nixos/restic: small enhancements
2023-01-22 16:23:04 +08:00
Robert Obryk 9dbdb05924 nixos/restic: add exclude parameter
This provides an easy way to specify exclude patterns in config. It was
already possible via extraBackupOptions; this change creates a simpler,
similar to other backup services, way to specify them.
2023-01-11 00:06:13 +01:00
Robert Obryk 751b9063a7 nixos/restic: assert that repository name is specified 2023-01-11 00:06:08 +01:00
Naïm Favier 4fb500d629
nixos/doc: fix some manpage references 2023-01-03 14:03:35 +01:00
Thiago Kenji Okada b87716afc9
Merge pull request #188881 from shadaj/patch-4
nixos/restic: make it possible to use the existing backup cache for prune/check
2022-10-12 21:26:00 +01:00
Shadaj Laddad dd34f474ed nixos/restic: make it possible to use the existing backup cache for prune/check
Configures the `--cache-dir` parameter for the prune and check commands run after backing up. For `check`, also adds a `checkOpts` flag to enable using the cache, since that is disabled by default.
2022-10-12 09:09:27 -07:00
pennae 1013069f52 nixos/*: convert more partially-md option descriptions
this mostly means marking options that use markdown already
appropriately and making a few adjustments so they still render
correctly. notable for nftables we have to transform the md links
because the manpage would not render them correctly otherwise.
2022-08-31 16:32:14 +02:00
Thiago Kenji Okada 35348fcc07
Merge pull request #182831 from otavio/topic/use-postStop-for-restic
nixos/restic: use postStop for `backupCleanupCommand`
2022-08-09 18:39:42 +01:00
pennae 61e93df189 nixos/*: automatically convert option docs to MD
once again using nix-doc-munge (69d080323a)
2022-08-03 22:46:41 +02:00
pennae 6b13dd0e9e
Merge pull request #183491 from pennae/automatic-md-conversions
treewide: automatically md-convert option descriptions
2022-08-02 02:15:30 +02:00
pennae 2e751c0772 treewide: automatically md-convert option descriptions
the conversion procedure is simple:

 - find all things that look like options, ie calls to either `mkOption`
   or `lib.mkOption` that take an attrset. remember the attrset as the
   option
 - for all options, find a `description` attribute who's value is not a
   call to `mdDoc` or `lib.mdDoc`
 - textually convert the entire value of the attribute to MD with a few
   simple regexes (the set from mdize-module.sh)
 - if the change produced a change in the manual output, discard
 - if the change kept the manual unchanged, add some text to the
   description to make sure we've actually found an option. if the
   manual changes this time, keep the converted description

this procedure converts 80% of nixos options to markdown. around 2000
options remain to be inspected, but most of those fail the "does not
change the manual output check": currently the MD conversion process
does not faithfully convert docbook tags like <code> and <package>, so
any option using such tags will not be converted at all.
2022-07-30 15:16:34 +02:00
Alan Strohm 81cd3e229c
nixos/restic: add 'backups.package' option to override the restic package (#183028) 2022-07-27 13:47:41 -04:00
Otavio Salvador 7e8e00d656 nixos/restic: use postStop for backupCleanupCommand
That way the `backupCleanupCommand` can also run when the backup service
failed for some reason.

Fixes: #182089.
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
2022-07-25 11:53:01 -03:00
Otavio Salvador d9e3b1fafe nixos/restic: add backup{Prepare,Cleanup}Command options
The backupPrepareCommand and backupCleanupCommand options offer a way to
run a script to prepare for backup and then cleanup it once finish.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
2022-06-03 11:22:22 -03:00