Implement NixOS distro check (#12914)

This commit is contained in:
Emery Hemingway 2019-12-18 07:01:58 +00:00 • committed by Andreas Rumpf
commit 148f6d9820

View file

@ -29,6 +29,7 @@ from strutils import contains, toLowerAscii
when not defined(nimscript): when not defined(nimscript):
from osproc import execProcess from osproc import execProcess
from os import existsEnv
type type
Distribution* {.pure.} = enum ## the list of known distributions Distribution* {.pure.} = enum ## the list of known distributions
@ -105,7 +106,7 @@ type
Clonezilla Clonezilla
SteamOS SteamOS
Absolute Absolute
NixOS NixOS ## NixOS or a Nix build environment
AUSTRUMI AUSTRUMI
Arya Arya
Porteus Porteus
@ -161,6 +162,9 @@ proc detectOsImpl(d: Distribution): bool =
of Distribution.BSD: result = defined(bsd) of Distribution.BSD: result = defined(bsd)
of Distribution.ArchLinux: of Distribution.ArchLinux:
result = "arch" in toLowerAscii(uname()) result = "arch" in toLowerAscii(uname())
of Distribution.NixOS:
result = existsEnv("NIX_BUILD_TOP") or existsEnv("__NIXOS_SET_ENVIRONMENT_DONE")
# Check if this is a Nix build or NixOS environment
of Distribution.OpenSUSE: of Distribution.OpenSUSE:
result = "suse" in toLowerAscii(uname()) or "suse" in toLowerAscii(release()) result = "suse" in toLowerAscii(uname()) or "suse" in toLowerAscii(release())
of Distribution.GoboLinux: of Distribution.GoboLinux: