diff --git a/lib/default.nix b/lib/default.nix index 7716fe34dba..4c36f3b0d79 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -24,7 +24,7 @@ let maintainers = import ./maintainers-list.nix; meta = callLibs ./meta.nix; sources = callLibs ./sources.nix; - + versions = callLibs ./versions.nix; # module system modules = callLibs ./modules.nix; diff --git a/lib/versions.nix b/lib/versions.nix new file mode 100644 index 00000000000..8f7f98ff5e1 --- /dev/null +++ b/lib/versions.nix @@ -0,0 +1,47 @@ +/* Version string functions. */ +{ lib }: + +let + + splitVersion = builtins.splitVersion or (lib.splitString "."); + +in + +rec { + + /* Get the major version string from a string. + + Example: + major "1.2.3" + => "1" + */ + major = v: builtins.elemAt (splitVersion v) 0; + + /* Get the minor version string from a string. + + Example: + minor "1.2.3" + => "2" + */ + minor = v: builtins.elemAt (splitVersion v) 1; + + /* Get the patch version string from a string. + + Example: + patch "1.2.3" + => "3" + */ + patch = v: builtins.elemAt (splitVersion v) 2; + + /* Get string of the first two parts (major and minor) + of a version string. + + Example: + majorMinor "1.2.3" + => "1.2" + */ + majorMinor = v: + builtins.concatStringsSep "." + (lib.take 2 (splitVersion v)); + +} diff --git a/pkgs/tools/networking/haproxy/default.nix b/pkgs/tools/networking/haproxy/default.nix index 06c595f7c6d..d31d560e868 100644 --- a/pkgs/tools/networking/haproxy/default.nix +++ b/pkgs/tools/networking/haproxy/default.nix @@ -9,13 +9,11 @@ assert usePcre -> pcre != null; stdenv.mkDerivation rec { pname = "haproxy"; - majorVersion = "1.7"; - minorVersion = "9"; - version = "${majorVersion}.${minorVersion}"; + version = "1.7.9"; name = "${pname}-${version}"; src = fetchurl { - url = "https://www.haproxy.org/download/${majorVersion}/src/${name}.tar.gz"; + url = "https://www.haproxy.org/download/${stdenv.lib.versions.majorMinor version}/src/${name}.tar.gz"; sha256 = "1072337e54fa188dc6e0cfe3ba4c2200b07082e321cbfe5a0882d85d54db068e"; };