-
Notifications
You must be signed in to change notification settings - Fork 96
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6a16f60
commit d3ece59
Showing
3 changed files
with
65 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
# }; | ||
} |