summary refs log tree commit diff
path: root/nixos/modules/misc/version.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/misc/version.nix')
-rw-r--r--nixos/modules/misc/version.nix73
1 files changed, 73 insertions, 0 deletions
diff --git a/nixos/modules/misc/version.nix b/nixos/modules/misc/version.nix
new file mode 100644
index 000000000000..2fa95563e9ab
--- /dev/null
+++ b/nixos/modules/misc/version.nix
@@ -0,0 +1,73 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+{
+
+  options = {
+
+    system.nixosVersion = mkOption {
+      internal = true;
+      type = types.str;
+      description = "NixOS version.";
+    };
+
+    system.nixosVersionSuffix = mkOption {
+      internal = true;
+      type = types.str;
+      description = "NixOS version suffix.";
+    };
+
+    system.nixosRevision = mkOption {
+      internal = true;
+      type = types.str;
+      description = "NixOS Git revision hash.";
+    };
+
+    system.nixosCodeName = mkOption {
+      internal = true;
+      type = types.str;
+      description = "NixOS release code name.";
+    };
+
+    system.defaultChannel = mkOption {
+      internal = true;
+      type = types.str;
+      default = https://nixos.org/channels/nixos-unstable;
+      description = "Default NixOS channel to which the root user is subscribed.";
+    };
+
+  };
+
+  config = {
+
+    system.nixosVersion =
+      mkDefault (readFile "${toString pkgs.path}/.version" + config.system.nixosVersionSuffix);
+
+    system.nixosVersionSuffix =
+      let suffixFile = "${toString pkgs.path}/.version-suffix"; in
+      mkDefault (if pathExists suffixFile then readFile suffixFile else "pre-git");
+
+    system.nixosRevision =
+      let fn = "${toString pkgs.path}/.git-revision"; in
+      mkDefault (if pathExists fn then readFile fn else "master");
+
+    # Note: code names must only increase in alphabetical order.
+    system.nixosCodeName = "Aardvark";
+
+    # Generate /etc/os-release.  See
+    # http://0pointer.de/public/systemd-man/os-release.html for the
+    # format.
+    environment.etc."os-release".text =
+      ''
+        NAME=NixOS
+        ID=nixos
+        VERSION="${config.system.nixosVersion} (${config.system.nixosCodeName})"
+        VERSION_ID="${config.system.nixosVersion}"
+        PRETTY_NAME="NixOS ${config.system.nixosVersion} (${config.system.nixosCodeName})"
+        HOME_URL="http://nixos.org/"
+      '';
+
+  };
+
+}