2021-01-18 22:50:56 -08:00
|
|
|
|
{ lib, stdenv, fetchurl, autoreconfHook, pkg-config, perl, docbook2x
|
2018-04-09 00:13:23 -07:00
|
|
|
|
, docbook_xml_dtd_45, python3Packages, pam
|
2015-07-31 17:08:04 -07:00
|
|
|
|
|
|
|
|
|
# Optional Dependencies
|
|
|
|
|
, libapparmor ? null, gnutls ? null, libselinux ? null, libseccomp ? null
|
2018-04-09 00:13:23 -07:00
|
|
|
|
, libcap ? null, systemd ? null
|
2013-10-03 08:08:56 -07:00
|
|
|
|
}:
|
2010-10-26 14:11:47 -07:00
|
|
|
|
|
2021-01-15 06:45:37 -08:00
|
|
|
|
with lib;
|
2012-10-20 03:10:28 -07:00
|
|
|
|
stdenv.mkDerivation rec {
|
2019-08-15 05:41:18 -07:00
|
|
|
|
pname = "lxc";
|
2021-05-04 21:20:00 -07:00
|
|
|
|
version = "4.0.9";
|
2010-10-26 14:11:47 -07:00
|
|
|
|
|
2015-11-01 04:08:56 -08:00
|
|
|
|
src = fetchurl {
|
|
|
|
|
url = "https://linuxcontainers.org/downloads/lxc/lxc-${version}.tar.gz";
|
2021-05-04 21:20:00 -07:00
|
|
|
|
sha256 = "0az56xpvhqiwmf9wfxzaz89s5idrgd9ynd13psscw3hlx480dkqz";
|
2010-10-26 14:11:47 -07:00
|
|
|
|
};
|
|
|
|
|
|
2015-07-31 17:08:04 -07:00
|
|
|
|
nativeBuildInputs = [
|
2021-01-18 22:50:56 -08:00
|
|
|
|
autoreconfHook pkg-config perl docbook2x python3Packages.wrapPython
|
2015-07-31 17:08:04 -07:00
|
|
|
|
];
|
2015-03-26 17:54:25 -07:00
|
|
|
|
buildInputs = [
|
2018-04-09 00:13:23 -07:00
|
|
|
|
pam libapparmor gnutls libselinux libseccomp libcap
|
2017-10-14 05:43:27 -07:00
|
|
|
|
python3Packages.python python3Packages.setuptools systemd
|
2015-03-26 17:54:25 -07:00
|
|
|
|
];
|
2011-09-23 04:16:10 -07:00
|
|
|
|
|
2016-03-20 19:06:19 -07:00
|
|
|
|
patches = [
|
|
|
|
|
./support-db2x.patch
|
|
|
|
|
];
|
2011-09-26 01:12:10 -07:00
|
|
|
|
|
2017-06-19 17:01:38 -07:00
|
|
|
|
postPatch = ''
|
|
|
|
|
sed -i '/chmod u+s/d' src/lxc/Makefile.am
|
|
|
|
|
'';
|
|
|
|
|
|
2015-03-26 17:54:25 -07:00
|
|
|
|
XML_CATALOG_FILES = "${docbook_xml_dtd_45}/xml/dtd/docbook/catalog.xml";
|
2010-10-26 14:11:47 -07:00
|
|
|
|
|
2013-04-15 02:15:55 -07:00
|
|
|
|
configureFlags = [
|
2018-04-09 00:13:23 -07:00
|
|
|
|
"--enable-pam"
|
2013-04-15 02:15:55 -07:00
|
|
|
|
"--localstatedir=/var"
|
2015-03-26 17:54:25 -07:00
|
|
|
|
"--sysconfdir=/etc"
|
2015-07-31 17:08:04 -07:00
|
|
|
|
"--disable-api-docs"
|
2015-12-16 04:11:24 -08:00
|
|
|
|
"--with-init-script=none"
|
|
|
|
|
"--with-distro=nixos" # just to be sure it is "unknown"
|
2015-03-26 17:54:25 -07:00
|
|
|
|
] ++ optional (libapparmor != null) "--enable-apparmor"
|
2015-07-31 17:08:04 -07:00
|
|
|
|
++ optional (libselinux != null) "--enable-selinux"
|
2015-03-26 17:54:25 -07:00
|
|
|
|
++ optional (libseccomp != null) "--enable-seccomp"
|
|
|
|
|
++ optional (libcap != null) "--enable-capabilities"
|
|
|
|
|
++ [
|
2015-07-31 17:08:04 -07:00
|
|
|
|
"--disable-examples"
|
|
|
|
|
"--enable-python"
|
|
|
|
|
"--disable-lua"
|
|
|
|
|
"--enable-bash"
|
|
|
|
|
(if doCheck then "--enable-tests" else "--disable-tests")
|
|
|
|
|
"--with-rootfs-path=/var/lib/lxc/rootfs"
|
2013-04-15 02:15:55 -07:00
|
|
|
|
];
|
2011-05-08 11:46:55 -07:00
|
|
|
|
|
2015-07-31 17:08:04 -07:00
|
|
|
|
doCheck = false;
|
|
|
|
|
|
2015-05-19 23:48:55 -07:00
|
|
|
|
installFlags = [
|
|
|
|
|
"localstatedir=\${TMPDIR}"
|
|
|
|
|
"sysconfdir=\${out}/etc"
|
|
|
|
|
"sysconfigdir=\${out}/etc/default"
|
2016-11-28 04:47:46 -08:00
|
|
|
|
"bashcompdir=\${out}/share/bash-completion/completions"
|
2015-05-19 23:48:55 -07:00
|
|
|
|
"READMEdir=\${TMPDIR}/var/lib/lxc/rootfs"
|
|
|
|
|
"LXCPATH=\${TMPDIR}/var/lib/lxc"
|
|
|
|
|
];
|
2015-03-26 17:54:25 -07:00
|
|
|
|
|
2015-07-31 17:08:04 -07:00
|
|
|
|
postInstall = ''
|
|
|
|
|
wrapPythonPrograms
|
2019-07-09 09:56:55 -07:00
|
|
|
|
|
|
|
|
|
completions=(
|
|
|
|
|
lxc-attach lxc-cgroup lxc-console lxc-destroy lxc-device lxc-execute
|
|
|
|
|
lxc-freeze lxc-info lxc-monitor lxc-snapshot lxc-stop lxc-unfreeze
|
|
|
|
|
)
|
|
|
|
|
pushd $out/share/bash-completion/completions/
|
|
|
|
|
mv lxc lxc-start
|
|
|
|
|
for completion in ''${completions[@]}; do
|
|
|
|
|
ln -sfn lxc-start $completion
|
|
|
|
|
done
|
|
|
|
|
popd
|
2015-07-31 17:08:04 -07:00
|
|
|
|
'';
|
2015-05-17 03:50:01 -07:00
|
|
|
|
|
2010-10-26 14:11:47 -07:00
|
|
|
|
meta = {
|
2020-03-31 18:11:51 -07:00
|
|
|
|
homepage = "https://linuxcontainers.org/";
|
2016-06-20 03:53:46 -07:00
|
|
|
|
description = "Userspace tools for Linux Containers, a lightweight virtualization system";
|
2015-03-26 17:54:25 -07:00
|
|
|
|
license = licenses.lgpl21Plus;
|
2011-09-26 01:12:10 -07:00
|
|
|
|
|
|
|
|
|
longDescription = ''
|
|
|
|
|
LXC is the userspace control package for Linux Containers, a
|
|
|
|
|
lightweight virtual system mechanism sometimes described as
|
|
|
|
|
"chroot on steroids". LXC builds up from chroot to implement
|
|
|
|
|
complete virtual systems, adding resource management and isolation
|
|
|
|
|
mechanisms to Linux’s existing process management infrastructure.
|
|
|
|
|
'';
|
|
|
|
|
|
2015-03-26 17:54:25 -07:00
|
|
|
|
platforms = platforms.linux;
|
2019-08-20 10:36:05 -07:00
|
|
|
|
maintainers = with maintainers; [ fpletz ];
|
2010-10-26 14:11:47 -07:00
|
|
|
|
};
|
|
|
|
|
}
|