add module 'versioning'
This commit is contained in:
parent
6a16f60fe9
commit
d3ece59919
@ -209,4 +209,9 @@
|
|||||||
# servers. You should change this only after NixOS release notes say you
|
# servers. You should change this only after NixOS release notes say you
|
||||||
# should.
|
# should.
|
||||||
system.stateVersion = "18.09"; # Did you read the comment?
|
system.stateVersion = "18.09"; # Did you read the comment?
|
||||||
|
|
||||||
|
# The nix-bitcoin release version that your config is compatible with.
|
||||||
|
# When upgrading to a backwards-incompatible release, nix-bitcoin will display an
|
||||||
|
# an error and provide hints for migrating your config to the new release.
|
||||||
|
nix-bitcoin.configVersion = "0.0.18";
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
./recurring-donations.nix
|
./recurring-donations.nix
|
||||||
|
|
||||||
# Support features
|
# Support features
|
||||||
|
./versioning.nix
|
||||||
./security.nix
|
./security.nix
|
||||||
./netns-isolation.nix
|
./netns-isolation.nix
|
||||||
./backups.nix
|
./backups.nix
|
||||||
|
59
modules/versioning.nix
Normal file
59
modules/versioning.nix
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
version = config.nix-bitcoin.configVersion;
|
||||||
|
|
||||||
|
# Sorted by increasing version numbers
|
||||||
|
changes = [
|
||||||
|
# None yet
|
||||||
|
# {
|
||||||
|
# version = "0.1";
|
||||||
|
# condition = config.services.foo.enabled;
|
||||||
|
# message = ''
|
||||||
|
# demo message
|
||||||
|
# '';
|
||||||
|
# }
|
||||||
|
];
|
||||||
|
|
||||||
|
incompatibleChanges = optionals
|
||||||
|
(version != null && versionOlder lastChange)
|
||||||
|
(builtins.filter (change: versionOlder change && (change.condition or true)) changes);
|
||||||
|
|
||||||
|
errorMsg = ''
|
||||||
|
|
||||||
|
This version of nix-bitcoin contains the following changes
|
||||||
|
that are incompatible with your config (version ${version}):
|
||||||
|
|
||||||
|
${concatMapStringsSep "\n" (change: ''
|
||||||
|
- ${change.message}(This change was introduced in version ${change.version})
|
||||||
|
'') incompatibleChanges}
|
||||||
|
After addressing the above changes, set nix-bitcoin.configVersion = "${lastChange.version}";
|
||||||
|
in your nix-bitcoin configuration.
|
||||||
|
'';
|
||||||
|
|
||||||
|
versionOlder = change: (builtins.compareVersions change.version version) > 0;
|
||||||
|
lastChange = builtins.elemAt changes (builtins.length changes - 1);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
nix-bitcoin.configVersion = mkOption {
|
||||||
|
type = with types; nullOr str;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Set this option to the nix-bitcoin release version that your config is
|
||||||
|
compatible with.
|
||||||
|
|
||||||
|
When upgrading to a backwards-incompatible release, nix-bitcoin will throw an
|
||||||
|
error during evaluation and provide hints for migrating your config to the
|
||||||
|
new release.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
## No config because there are no backwards incompatible releases yet
|
||||||
|
# config = {
|
||||||
|
# # Force evaluation. An actual option value is never assigned
|
||||||
|
# system.extraDependencies = optional (builtins.length incompatibleChanges > 0) (builtins.throw errorMsg);
|
||||||
|
# };
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user