nixpkgs/pkgs/os-specific/linux/lxc/default.nix

100 lines
2.8 KiB
Nix
Raw Normal View History

{ stdenv, fetchurl, autoreconfHook, pkgconfig, perl, docbook2x
, docbook_xml_dtd_45, python3Packages, pam
2015-08-01 01:08:04 +01:00
# Optional Dependencies
, libapparmor ? null, gnutls ? null, libselinux ? null, libseccomp ? null
, libcap ? null, systemd ? null
}:
2015-03-27 00:54:25 +00:00
with stdenv.lib;
stdenv.mkDerivation rec {
pname = "lxc";
2020-04-16 10:20:00 +01:00
version = "4.0.2";
src = fetchurl {
url = "https://linuxcontainers.org/downloads/lxc/lxc-${version}.tar.gz";
2020-04-16 10:20:00 +01:00
sha256 = "1c2wbbcvs58slyq0skxizx61q1lb4yvak28x4gzsbzh3yg6nscya";
};
2015-08-01 01:08:04 +01:00
nativeBuildInputs = [
autoreconfHook pkgconfig perl docbook2x python3Packages.wrapPython
];
2015-03-27 00:54:25 +00:00
buildInputs = [
pam libapparmor gnutls libselinux libseccomp libcap
python3Packages.python python3Packages.setuptools systemd
2015-03-27 00:54:25 +00:00
];
patches = [
./support-db2x.patch
];
2017-06-20 01:01:38 +01:00
postPatch = ''
sed -i '/chmod u+s/d' src/lxc/Makefile.am
'';
2015-03-27 00:54:25 +00:00
XML_CATALOG_FILES = "${docbook_xml_dtd_45}/xml/dtd/docbook/catalog.xml";
2013-04-15 10:15:55 +01:00
configureFlags = [
"--enable-pam"
2013-04-15 10:15:55 +01:00
"--localstatedir=/var"
2015-03-27 00:54:25 +00:00
"--sysconfdir=/etc"
2015-08-01 01:08:04 +01:00
"--disable-api-docs"
"--with-init-script=none"
"--with-distro=nixos" # just to be sure it is "unknown"
2015-03-27 00:54:25 +00:00
] ++ optional (libapparmor != null) "--enable-apparmor"
2015-08-01 01:08:04 +01:00
++ optional (libselinux != null) "--enable-selinux"
2015-03-27 00:54:25 +00:00
++ optional (libseccomp != null) "--enable-seccomp"
++ optional (libcap != null) "--enable-capabilities"
++ [
2015-08-01 01:08:04 +01: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 10:15:55 +01:00
];
2015-08-01 01:08:04 +01:00
doCheck = false;
2015-05-20 07:48:55 +01:00
installFlags = [
"localstatedir=\${TMPDIR}"
"sysconfdir=\${out}/etc"
"sysconfigdir=\${out}/etc/default"
"bashcompdir=\${out}/share/bash-completion/completions"
2015-05-20 07:48:55 +01:00
"READMEdir=\${TMPDIR}/var/lib/lxc/rootfs"
"LXCPATH=\${TMPDIR}/var/lib/lxc"
];
2015-03-27 00:54:25 +00:00
2015-08-01 01:08:04 +01:00
postInstall = ''
wrapPythonPrograms
2019-07-09 17:56:55 +01: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-08-01 01:08:04 +01:00
'';
2015-05-17 11:50:01 +01:00
meta = {
homepage = "https://linuxcontainers.org/";
description = "Userspace tools for Linux Containers, a lightweight virtualization system";
2015-03-27 00:54:25 +00:00
license = licenses.lgpl21Plus;
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 Linuxs existing process management infrastructure.
'';
2015-03-27 00:54:25 +00:00
platforms = platforms.linux;
maintainers = with maintainers; [ fpletz ];
};
}