|
|
|
@ -3,7 +3,7 @@ |
|
|
|
|
with lib; |
|
|
|
|
|
|
|
|
|
let |
|
|
|
|
cfg = config.system; |
|
|
|
|
cfg = config.system.nixos; |
|
|
|
|
|
|
|
|
|
releaseFile = "${toString pkgs.path}/.version"; |
|
|
|
|
suffixFile = "${toString pkgs.path}/.version-suffix"; |
|
|
|
@ -16,43 +16,27 @@ in |
|
|
|
|
|
|
|
|
|
options.system = { |
|
|
|
|
|
|
|
|
|
stateVersion = mkOption { |
|
|
|
|
type = types.str; |
|
|
|
|
default = cfg.nixosRelease; |
|
|
|
|
description = '' |
|
|
|
|
Every once in a while, a new NixOS release may change |
|
|
|
|
configuration defaults in a way incompatible with stateful |
|
|
|
|
data. For instance, if the default version of PostgreSQL |
|
|
|
|
changes, the new version will probably be unable to read your |
|
|
|
|
existing databases. To prevent such breakage, you can set the |
|
|
|
|
value of this option to the NixOS release with which you want |
|
|
|
|
to be compatible. The effect is that NixOS will option |
|
|
|
|
defaults corresponding to the specified release (such as using |
|
|
|
|
an older version of PostgreSQL). |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
nixosVersion = mkOption { |
|
|
|
|
nixos.version = mkOption { |
|
|
|
|
internal = true; |
|
|
|
|
type = types.str; |
|
|
|
|
description = "The full NixOS version (e.g. <literal>16.03.1160.f2d4ee1</literal>)."; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
nixosRelease = mkOption { |
|
|
|
|
nixos.release = mkOption { |
|
|
|
|
readOnly = true; |
|
|
|
|
type = types.str; |
|
|
|
|
default = fileContents releaseFile; |
|
|
|
|
description = "The NixOS release (e.g. <literal>16.03</literal>)."; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
nixosVersionSuffix = mkOption { |
|
|
|
|
nixos.versionSuffix = mkOption { |
|
|
|
|
internal = true; |
|
|
|
|
type = types.str; |
|
|
|
|
default = if pathExists suffixFile then fileContents suffixFile else "pre-git"; |
|
|
|
|
description = "The NixOS version suffix (e.g. <literal>1160.f2d4ee1</literal>)."; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
nixosRevision = mkOption { |
|
|
|
|
nixos.revision = mkOption { |
|
|
|
|
internal = true; |
|
|
|
|
type = types.str; |
|
|
|
|
default = if pathIsDirectory gitRepo then commitIdFromGitRepo gitRepo |
|
|
|
@ -61,12 +45,28 @@ in |
|
|
|
|
description = "The Git revision from which this NixOS configuration was built."; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
nixosCodeName = mkOption { |
|
|
|
|
nixos.codeName = mkOption { |
|
|
|
|
readOnly = true; |
|
|
|
|
type = types.str; |
|
|
|
|
description = "The NixOS release code name (e.g. <literal>Emu</literal>)."; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
stateVersion = mkOption { |
|
|
|
|
type = types.str; |
|
|
|
|
default = cfg.release; |
|
|
|
|
description = '' |
|
|
|
|
Every once in a while, a new NixOS release may change |
|
|
|
|
configuration defaults in a way incompatible with stateful |
|
|
|
|
data. For instance, if the default version of PostgreSQL |
|
|
|
|
changes, the new version will probably be unable to read your |
|
|
|
|
existing databases. To prevent such breakage, you can set the |
|
|
|
|
value of this option to the NixOS release with which you want |
|
|
|
|
to be compatible. The effect is that NixOS will option |
|
|
|
|
defaults corresponding to the specified release (such as using |
|
|
|
|
an older version of PostgreSQL). |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
defaultChannel = mkOption { |
|
|
|
|
internal = true; |
|
|
|
|
type = types.str; |
|
|
|
@ -78,15 +78,15 @@ in |
|
|
|
|
|
|
|
|
|
config = { |
|
|
|
|
|
|
|
|
|
system = { |
|
|
|
|
system.nixos = { |
|
|
|
|
# These defaults are set here rather than up there so that |
|
|
|
|
# changing them would not rebuild the manual |
|
|
|
|
nixosVersion = mkDefault (cfg.nixosRelease + cfg.nixosVersionSuffix); |
|
|
|
|
nixosRevision = mkIf (pathIsDirectory gitRepo) (mkDefault gitCommitId); |
|
|
|
|
nixosVersionSuffix = mkIf (pathIsDirectory gitRepo) (mkDefault (".git." + gitCommitId)); |
|
|
|
|
version = mkDefault (cfg.release + cfg.versionSuffix); |
|
|
|
|
revision = mkIf (pathIsDirectory gitRepo) (mkDefault gitCommitId); |
|
|
|
|
versionSuffix = mkIf (pathIsDirectory gitRepo) (mkDefault (".git." + gitCommitId)); |
|
|
|
|
|
|
|
|
|
# Note: code names must only increase in alphabetical order. |
|
|
|
|
nixosCodeName = "Impala"; |
|
|
|
|
codeName = "Impala"; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
# Generate /etc/os-release. See |
|
|
|
@ -96,10 +96,10 @@ in |
|
|
|
|
'' |
|
|
|
|
NAME=NixOS |
|
|
|
|
ID=nixos |
|
|
|
|
VERSION="${config.system.nixosVersion} (${config.system.nixosCodeName})" |
|
|
|
|
VERSION_CODENAME=${toLower config.system.nixosCodeName} |
|
|
|
|
VERSION_ID="${config.system.nixosVersion}" |
|
|
|
|
PRETTY_NAME="NixOS ${config.system.nixosVersion} (${config.system.nixosCodeName})" |
|
|
|
|
VERSION="${cfg.version} (${cfg.codeName})" |
|
|
|
|
VERSION_CODENAME=${toLower cfg.codeName} |
|
|
|
|
VERSION_ID="${cfg.version}" |
|
|
|
|
PRETTY_NAME="NixOS ${cfg.version} (${cfg.codeName})" |
|
|
|
|
HOME_URL="https://nixos.org/" |
|
|
|
|
SUPPORT_URL="https://nixos.org/nixos/support.html" |
|
|
|
|
BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues" |
|
|
|
|