60 lines
1.8 KiB
Nix
60 lines
1.8 KiB
Nix
{ 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);
|
|
# };
|
|
}
|