diff --git a/modules/documentation/default.nix b/modules/documentation/default.nix
index a78cc04a..4324f7bd 100644
--- a/modules/documentation/default.nix
+++ b/modules/documentation/default.nix
@@ -13,7 +13,7 @@ let
manual = import ../../doc/manual rec {
inherit pkgs config;
version = "0.0.1";
- revision = "release-${version}";
+ revision = "master";
options =
let
scrubbedEval = evalModules {
diff --git a/modules/system/version.nix b/modules/system/version.nix
index ee383885..190b293c 100644
--- a/modules/system/version.nix
+++ b/modules/system/version.nix
@@ -7,19 +7,27 @@ let
defaultStateVersion = options.system.stateVersion.default;
- gitCommitId = lib.substring 0 7 (commitIdFromGitRepo gitRepo);
- gitRepo = "${toString pkgs.path}/.git/";
+ parseGit = path:
+ if pathExists "${path}/.git/" then rec {
+ rev = commitIdFromGitRepo "${path}/.git/";
+ shortRev = substring 0 7 rev;
+ }
+ else if pathExists "${path}/.git-revision" then rec {
+ rev = fileContents "${path}/.git-revision";
+ shortRev = substring 0 7 rev;
+ }
+ else {
+ shortRev = "0000000";
+ };
+
+ darwin = parseGit (toString ../..);
+ nixpkgs = parseGit (toString pkgs.path);
+
releaseFile = "${toString pkgs.path}/.version";
- revisionFile = "${toString pkgs.path}/.git-revision";
suffixFile = "${toString pkgs.path}/.version-suffix";
- revision = if builtins.pathExists gitRepo then gitCommitId
- else if builtins.pathExists revisionFile then fileContents revisionFile
- else null;
-
- versionSuffix = if builtins.pathExists gitRepo then ".git." + gitCommitId
- else if builtins.pathExists suffixFile then fileContents suffixFile
- else null;
+ nixpkgsSuffix = if pathExists suffixFile then fileContents suffixFile
+ else ".git." + nixpkgs.shortRev;
in
{
@@ -42,14 +50,24 @@ in
system.darwinLabel = mkOption {
type = types.str;
- default = cfg.nixpkgsVersion;
description = "Label to be used in the names of generated outputs.";
};
+ system.darwinVersion = mkOption {
+ internal = true;
+ type = types.str;
+ description = "The full darwin version (e.g. 16.03.1160.f2d4ee1).";
+ };
+
+ system.darwinRevision = mkOption {
+ internal = true;
+ type = types.str;
+ description = "The darwin git revision from which this configuration was built.";
+ };
+
system.nixpkgsRelease = mkOption {
readOnly = true;
type = types.str;
- default = fileContents releaseFile;
description = "The nixpkgs release (e.g. 16.03).";
};
@@ -59,17 +77,9 @@ in
description = "The full nixpkgs version (e.g. 16.03.1160.f2d4ee1).";
};
- system.nixpkgsVersionSuffix = mkOption {
- internal = true;
- type = types.str;
- default = "pre-git";
- description = "The nixpkgs version suffix (e.g. 1160.f2d4ee1).";
- };
-
system.nixpkgsRevision = mkOption {
internal = true;
type = types.str;
- default = "master";
description = "The nixpkgs git revision from which this configuration was built.";
};
};
@@ -78,9 +88,13 @@ in
# These defaults are set here rather than up there so that
# changing them would not rebuild the manual
- system.nixpkgsVersion = mkDefault (cfg.nixpkgsRelease + cfg.nixpkgsVersionSuffix);
- system.nixpkgsRevision = mkIf (revision != null) (mkDefault revision);
- system.nixpkgsVersionSuffix = mkIf (versionSuffix != null) (mkDefault versionSuffix);
+ system.darwinLabel = "${cfg.nixpkgsVersion}+${cfg.darwinVersion}";
+ system.darwinVersion = "darwin" + toString cfg.stateVersion + "." + darwin.shortRev;
+ system.darwinRevision = mkIf (darwin ? rev) (mkDefault darwin.rev);
+
+ system.nixpkgsVersion = mkDefault (cfg.nixpkgsRelease + nixpkgsSuffix);
+ system.nixpkgsRelease = mkDefault (fileContents releaseFile);
+ system.nixpkgsRevision = mkIf (nixpkgs ? rev) (mkDefault nixpkgs.rev);
assertions = [ { assertion = cfg.stateVersion <= defaultStateVersion; message = "system.stateVersion = ${toString cfg.stateVersion}; is not a valid value"; } ];