Merge master into staging-next

This commit is contained in:
github-actions[bot] 2021-03-27 00:14:51 +00:00 committed by GitHub
commit 7fdb452da0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 198 additions and 80 deletions

1
.github/labeler.yml vendored
View File

@ -53,6 +53,7 @@
"6.topic: kernel":
- pkgs/build-support/kernel/**/*
- pkgs/os-specific/linux/kernel/**/*
"6.topic: lua":
- pkgs/development/interpreters/lua-5/**/*

View File

@ -8273,6 +8273,12 @@
fingerprint = "1401 1B63 393D 16C1 AA9C C521 8526 B757 4A53 6236";
}];
};
rowanG077 = {
email = "goemansrowan@gmail.com";
github = "rowanG077";
githubId = 7439756;
name = "Rowan Goemans";
};
royneary = {
email = "christian@ulrich.earth";
github = "royneary";

View File

@ -0,0 +1,40 @@
diff --git a/src/elan-dist/src/component/package.rs b/src/elan-dist/src/component/package.rs
index fd9fe74..0fefa39 100644
--- a/src/elan-dist/src/component/package.rs
+++ b/src/elan-dist/src/component/package.rs
@@ -50,11 +50,35 @@ fn unpack_without_first_dir<R: Read>(archive: &mut tar::Archive<R>, path: &Path)
};
try!(entry.unpack(&full_path).chain_err(|| ErrorKind::ExtractingPackage));
+ nix_patchelf_if_needed(&full_path);
}
Ok(())
}
+fn nix_patchelf_if_needed(dest_path: &Path) {
+ let (is_bin, is_lib) = if let Some(p) = dest_path.parent() {
+ (p.ends_with("bin"), p.ends_with("lib"))
+ } else {
+ (false, false)
+ };
+
+ if is_bin {
+ let _ = ::std::process::Command::new("@patchelf@/bin/patchelf")
+ .arg("--set-interpreter")
+ .arg("@dynamicLinker@")
+ .arg(dest_path)
+ .output();
+ }
+ else if is_lib {
+ let _ = ::std::process::Command::new("@patchelf@/bin/patchelf")
+ .arg("--set-rpath")
+ .arg("@libPath@")
+ .arg(dest_path)
+ .output();
+ }
+}
+
#[derive(Debug)]
pub struct ZipPackage<'a>(temp::Dir<'a>);

View File

@ -1,24 +1,46 @@
{ lib, pkg-config, curl, openssl, zlib, fetchFromGitHub, rustPlatform }:
{ stdenv, lib, runCommand, patchelf, makeWrapper, pkg-config, curl
, openssl, gmp, zlib, fetchFromGitHub, rustPlatform }:
let
libPath = lib.makeLibraryPath [ gmp ];
in
rustPlatform.buildRustPackage rec {
pname = "elan";
version = "0.10.3";
version = "0.11.0";
src = fetchFromGitHub {
owner = "kha";
repo = "elan";
rev = "v${version}";
sha256 = "sha256-YkGfuqtvVfPcxJ8UqD5QidcNEy5brTWGEK4fR64Yz70=";
sha256 = "1sl69ygdwhf80sx6m76x5gp1kwsw0rr1lv814cgzm8hvyr6g0jqa";
};
cargoSha256 = "sha256-2fYicpoEERwD4OjdpseKQOkDvZlb7NnOZcb6Tu+rQdA=";
cargoSha256 = "1f881maf8jizd5ip7pc1ncbiq7lpggp0byma13pvqk7gisnqyr4r";
nativeBuildInputs = [ pkg-config ];
nativeBuildInputs = [ pkg-config makeWrapper ];
OPENSSL_NO_VENDOR = 1;
buildInputs = [ curl zlib openssl ];
cargoBuildFlags = [ "--features no-self-update" ];
patches = lib.optionals stdenv.isLinux [
# Run patchelf on the downloaded binaries.
# This necessary because Lean 4 now dynamically links to GMP.
(runCommand "0001-dynamically-patchelf-binaries.patch" {
CC = stdenv.cc;
patchelf = patchelf;
libPath = "$ORIGIN/../lib:${libPath}";
} ''
export dynamicLinker=$(cat $CC/nix-support/dynamic-linker)
substitute ${./0001-dynamically-patchelf-binaries.patch} $out \
--subst-var patchelf \
--subst-var dynamicLinker \
--subst-var libPath
'')
];
postInstall = ''
pushd $out/bin
mv elan-init elan
@ -27,6 +49,8 @@ rustPlatform.buildRustPackage rec {
done
popd
wrapProgram $out/bin/elan --prefix "LD_LIBRARY_PATH" : "${libPath}"
# tries to create .elan
export HOME=$(mktemp -d)
mkdir -p "$out/share/"{bash-completion/completions,fish/vendor_completions.d,zsh/site-functions}

View File

@ -1,13 +1,13 @@
{ lib, stdenv, gnome3, fetchFromGitHub, xprop, glib }:
stdenv.mkDerivation rec {
pname = "gnome-shell-extension-unite";
version = "47";
version = "48";
src = fetchFromGitHub {
owner = "hardpixel";
repo = "unite-shell";
rev = "v${version}";
sha256 = "1ia8x5mqwsd5gv7sg981h2ngcr3jdr60947iqvnp6xqcw4rc72lr";
sha256 = "1rc9h7zrg9pvyl619ychcp0w7wmnf4ndaq2knv490kzhy0idj18j";
};
uuid = "unite@hardpixel.eu";

View File

@ -1,34 +1,35 @@
{ lib, fetchPypi, buildPythonPackage, fetchpatch
{ lib, fetchPypi, buildPythonPackage
, configobj, six, traitsui
, nose, tables, pandas
, pytestCheckHook, tables, pandas
, pythonOlder, importlib-resources
}:
buildPythonPackage rec {
pname = "apptools";
version = "4.5.0";
version = "5.1.0";
src = fetchPypi {
inherit pname version;
sha256 = "10h52ibhr2aw076pivqxiajr9rpcr1mancg6xlpxzckcm3if02i6";
sha256 = "12x5lcs1cllpybz7f0i1lcwvmqsaa5n818wb2165lj049wqxx4yh";
};
# PyTables issue; should be merged in next post-4.5.0 release (#117)
patches = [ (fetchpatch {
url = "https://github.com/enthought/apptools/commit/3734289d1a0ebd8513fa67f75288add31ed0113c.patch";
sha256 = "001012q1ib5cbib3nq1alh9ckzj588bfrywr8brkd1f6y1pgvngk";
})
propagatedBuildInputs = [
configobj
six
traitsui
] ++ lib.optionals (pythonOlder "3.9") [
importlib-resources
];
propagatedBuildInputs = [ configobj six traitsui ];
checkInputs = [
nose
tables
pandas
pytestCheckHook
];
doCheck = true;
checkPhase = "HOME=$TMP nosetests";
preCheck = ''
export HOME=$TMP
'';
meta = with lib; {
description = "Set of packages that Enthought has found useful in creating a number of applications.";

View File

@ -35,12 +35,12 @@ buildPythonPackage rec {
${python.interpreter} setup.py build_cython
'';
# On Darwin, the test requires macFUSE to be installed outside of Nix.
doCheck = !stdenv.isDarwin;
checkInputs = [ pytestCheckHook which ];
disabledTests = [
"test_listdir" # accesses /usr/bin
] ++ lib.optionals stdenv.isDarwin [
"uses_fuse"
];
meta = with lib; {

View File

@ -5,11 +5,11 @@
buildPythonPackage rec {
pname = "minidump";
version = "0.0.15";
version = "0.0.16";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-IVlzAsnl1KhErxWPi96hUFlIX4IN3Y9t8OicckdYUv0=";
sha256 = "65a71ca1da2b73ee96daa9d52e4fb9c9b80a849475502c6a1c2a80a68bd149b0";
};
# Upstream doesn't have tests

View File

@ -1,13 +1,13 @@
{ lib
, buildPythonPackage
, fetchPypi
, fetchFromGitHub
, fetchpatch
, pyparsing
, numpy
, cython
, astropy
, astropy-helpers
, pytest
, pytestCheckHook
, pytest-astropy
}:
@ -15,15 +15,18 @@ buildPythonPackage rec {
pname = "pyregion";
version = "2.0";
src = fetchPypi {
inherit pname version;
sha256 = "a8ac5f764b53ec332f6bc43f6f2193ca13e8b7d5a3fb2e20ced6b2ea42a9d094";
# pypi src contains cython-produced .c files which don't compile
# with python3.9
src = fetchFromGitHub {
owner = "astropy";
repo = pname;
rev = version;
sha256 = "1izar7z606czcyws9s8bjbpb1xhqshpv5009rlpc92hciw7jv4kg";
};
propagatedBuildInputs = [
pyparsing
numpy
cython
astropy
];
@ -36,9 +39,9 @@ buildPythonPackage rec {
})
];
nativeBuildInputs = [ astropy-helpers ];
nativeBuildInputs = [ astropy-helpers cython ];
checkInputs = [ pytest pytest-astropy ];
checkInputs = [ pytestCheckHook pytest-astropy ];
# Disable automatic update of the astropy-helper module
postPatch = ''
@ -46,9 +49,11 @@ buildPythonPackage rec {
'';
# Tests must be run in the build directory
checkPhase = ''
cd build/lib.*
pytest
preCheck = ''
pushd build/lib.*
'';
postCheck = ''
popd
'';
meta = with lib; {

View File

@ -465,8 +465,8 @@ let
mktplcRef = {
name = "todo-tree";
publisher = "Gruntfuggly";
version = "0.0.206";
sha256 = "1xalwk2bndb73p8p2b4w5qz7m1n80xyw67wb5qlq1rrfjchhicyv";
version = "0.0.208";
sha256 = "1yjz7i3f2f9a3i797vwa9vnxsh9lyxqr4k0ixx8v55h628kvafr9";
};
meta = with lib; {
license = licenses.mit;

View File

@ -244,8 +244,9 @@ let
# Allow specifying custom EDID on the kernel command line
DRM_LOAD_EDID_FIRMWARE = yes;
VGA_SWITCHEROO = yes; # Hybrid graphics support
DRM_GMA500 = whenAtLeast "5.12" module;
DRM_GMA600 = yes;
DRM_GMA3600 = yes;
DRM_GMA3600 = whenOlder "5.12" yes;
DRM_VMWGFX_FBCON = yes;
# necessary for amdgpu polaris support
DRM_AMD_POWERPLAY = whenBetween "4.5" "4.9" yes;
@ -288,21 +289,31 @@ let
SND_SOC_SOF_TOPLEVEL = yes;
SND_SOC_SOF_ACPI = module;
SND_SOC_SOF_PCI = module;
SND_SOC_SOF_APOLLOLAKE_SUPPORT = yes;
SND_SOC_SOF_CANNONLAKE_SUPPORT = yes;
SND_SOC_SOF_COFFEELAKE_SUPPORT = yes;
SND_SOC_SOF_APOLLOLAKE = whenAtLeast "5.12" module;
SND_SOC_SOF_APOLLOLAKE_SUPPORT = whenOlder "5.12" yes;
SND_SOC_SOF_CANNONLAKE = whenAtLeast "5.12" module;
SND_SOC_SOF_CANNONLAKE_SUPPORT = whenOlder "5.12" yes;
SND_SOC_SOF_COFFEELAKE = whenAtLeast "5.12" module;
SND_SOC_SOF_COFFEELAKE_SUPPORT = whenOlder "5.12" yes;
SND_SOC_SOF_COMETLAKE = whenAtLeast "5.12" module;
SND_SOC_SOF_COMETLAKE_H_SUPPORT = whenOlder "5.8" yes;
SND_SOC_SOF_COMETLAKE_LP_SUPPORT = yes;
SND_SOC_SOF_ELKHARTLAKE_SUPPORT = yes;
SND_SOC_SOF_GEMINILAKE_SUPPORT = yes;
SND_SOC_SOF_COMETLAKE_LP_SUPPORT = whenOlder "5.12" yes;
SND_SOC_SOF_ELKHARTLAKE = whenAtLeast "5.12" module;
SND_SOC_SOF_ELKHARTLAKE_SUPPORT = whenOlder "5.12" yes;
SND_SOC_SOF_GEMINILAKE = whenAtLeast "5.12" module;
SND_SOC_SOF_GEMINILAKE_SUPPORT = whenOlder "5.12" yes;
SND_SOC_SOF_HDA_AUDIO_CODEC = yes;
SND_SOC_SOF_HDA_COMMON_HDMI_CODEC = whenOlder "5.7" yes;
SND_SOC_SOF_HDA_LINK = yes;
SND_SOC_SOF_ICELAKE_SUPPORT = yes;
SND_SOC_SOF_ICELAKE = whenAtLeast "5.12" module;
SND_SOC_SOF_ICELAKE_SUPPORT = whenOlder "5.12" yes;
SND_SOC_SOF_INTEL_TOPLEVEL = yes;
SND_SOC_SOF_JASPERLAKE_SUPPORT = yes;
SND_SOC_SOF_MERRIFIELD_SUPPORT = yes;
SND_SOC_SOF_TIGERLAKE_SUPPORT = yes;
SND_SOC_SOF_JASPERLAKE = whenAtLeast "5.12" module;
SND_SOC_SOF_JASPERLAKE_SUPPORT = whenOlder "5.12" yes;
SND_SOC_SOF_MERRIFIELD = whenAtLeast "5.12" module;
SND_SOC_SOF_MERRIFIELD_SUPPORT = whenOlder "5.12" yes;
SND_SOC_SOF_TIGERLAKE = whenAtLeast "5.12" module;
SND_SOC_SOF_TIGERLAKE_SUPPORT = whenOlder "5.12" yes;
};
usb-serial = {

View File

@ -91,4 +91,6 @@ assert (versionAtLeast version "4.9");
CC_STACKPROTECTOR_REGULAR = whenOlder "4.18" no;
CC_STACKPROTECTOR_STRONG = whenOlder "4.18" yes;
# Detect out-of-bound reads/writes and use-after-free
KFENCE = whenAtLeast "5.12" yes;
}

View File

@ -1,15 +1,15 @@
{
"4.14": {
"extra": "-hardened1",
"name": "linux-hardened-4.14.226-hardened1.patch",
"sha256": "12h42fsr1sc2zgr1cb2ais0aivg4hpg9x4gc762r7cd4l40fyyg9",
"url": "https://github.com/anthraxx/linux-hardened/releases/download/4.14.226-hardened1/linux-hardened-4.14.226-hardened1.patch"
"name": "linux-hardened-4.14.227-hardened1.patch",
"sha256": "0g8s91cvcxin95is7hhap5i8vkn4k3570s28vnz8mf0jrcgwdgfd",
"url": "https://github.com/anthraxx/linux-hardened/releases/download/4.14.227-hardened1/linux-hardened-4.14.227-hardened1.patch"
},
"4.19": {
"extra": "-hardened1",
"name": "linux-hardened-4.19.182-hardened1.patch",
"sha256": "02848qbglzj0w8lwic0fp19zc2b3d229ghfn804qx2h2rxh48c96",
"url": "https://github.com/anthraxx/linux-hardened/releases/download/4.19.182-hardened1/linux-hardened-4.19.182-hardened1.patch"
"name": "linux-hardened-4.19.183-hardened1.patch",
"sha256": "1xi4fkvdvf1rjhrihi7im415x26hwmvhf3zrklm8hw2rmajdfrca",
"url": "https://github.com/anthraxx/linux-hardened/releases/download/4.19.183-hardened1/linux-hardened-4.19.183-hardened1.patch"
},
"5.10": {
"extra": "-hardened1",
@ -19,14 +19,14 @@
},
"5.11": {
"extra": "-hardened1",
"name": "linux-hardened-5.11.8-hardened1.patch",
"sha256": "1qlvhj8g6vkg3bsd3fl27n6j5c3ykcyypigf22vfy8yl55mnbmv6",
"url": "https://github.com/anthraxx/linux-hardened/releases/download/5.11.8-hardened1/linux-hardened-5.11.8-hardened1.patch"
"name": "linux-hardened-5.11.9-hardened1.patch",
"sha256": "169jcalr81ckad08vx489h8j6k42s0rzxbpkr6knyrd7rv06ddk0",
"url": "https://github.com/anthraxx/linux-hardened/releases/download/5.11.9-hardened1/linux-hardened-5.11.9-hardened1.patch"
},
"5.4": {
"extra": "-hardened1",
"name": "linux-hardened-5.4.107-hardened1.patch",
"sha256": "1wy66a97zjrk2g061xj0va0km3y15m0w4p1bvqsyvjlj5x4wwmwh",
"url": "https://github.com/anthraxx/linux-hardened/releases/download/5.4.107-hardened1/linux-hardened-5.4.107-hardened1.patch"
"name": "linux-hardened-5.4.108-hardened1.patch",
"sha256": "1m208j0svysyn3m0acn10pd4wqjm203ampkhf1wimzpzs8wfasgj",
"url": "https://github.com/anthraxx/linux-hardened/releases/download/5.4.108-hardened1/linux-hardened-5.4.108-hardened1.patch"
}
}

View File

@ -3,7 +3,7 @@
with lib;
buildLinux (args // rec {
version = "4.14.226";
version = "4.14.227";
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@ -13,6 +13,6 @@ buildLinux (args // rec {
src = fetchurl {
url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
sha256 = "09llp8jl5xgxxzj0f2sfx32annwyz82k1zmgd26zy90lz0d09p3s";
sha256 = "1iz029v407xv81prrvg4gr2ql8hvm0mpj21x9picwv05pk2d68h7";
};
} // (args.argsOverride or {}))

View File

@ -3,7 +3,7 @@
with lib;
buildLinux (args // rec {
version = "4.19.182";
version = "4.19.183";
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@ -13,6 +13,6 @@ buildLinux (args // rec {
src = fetchurl {
url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
sha256 = "0r93mgvjypmj0glg0912vfq9zbagi59w4d88ynz5gm8sl05pbnq5";
sha256 = "1xd5hjdjbsw7kpj9csgi8kk4ki3z46sqbiigjsr71psivxfxkkxs";
};
} // (args.argsOverride or {}))

View File

@ -1,11 +1,11 @@
{ buildPackages, fetchurl, perl, buildLinux, ... } @ args:
buildLinux (args // rec {
version = "4.4.262";
version = "4.4.263";
extraMeta.branch = "4.4";
src = fetchurl {
url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
sha256 = "0yz9qi4i46ndshxmb99kvv7lk6cbb09y7bzagq7sgvqaj4lwaw6j";
sha256 = "1qqh3n09pn87n6f7ain3am8k7j043vzm65qcvccq9as129y5w1a2";
};
} // (args.argsOverride or {}))

View File

@ -1,11 +1,11 @@
{ buildPackages, fetchurl, perl, buildLinux, ... } @ args:
buildLinux (args // rec {
version = "4.9.262";
version = "4.9.263";
extraMeta.branch = "4.9";
src = fetchurl {
url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
sha256 = "1zq77x9zf1wbk8n17rnblm5lfwlkin1xnxb3sxirwb9njm07cbmj";
sha256 = "1dhmgyg6asqg1pmhnzqymwz4bm6gy8gi0n2gr794as38dhn2szwz";
};
} // (args.argsOverride or {}))

View File

@ -3,7 +3,7 @@
with lib;
buildLinux (args // rec {
version = "5.10.25";
version = "5.10.26";
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@ -13,6 +13,6 @@ buildLinux (args // rec {
src = fetchurl {
url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
sha256 = "1p8s8vp5b6vjmvhj3plm0pr0d9qp5lrwm6l40a4bjr1vk9myf2lk";
sha256 = "10hlc020imxxh71nvxhnnmd66bcxndfyi78v7wv7y5mcy4rjhlzw";
};
} // (args.argsOverride or {}))

View File

@ -3,7 +3,7 @@
with lib;
buildLinux (args // rec {
version = "5.11.8";
version = "5.11.9";
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@ -13,6 +13,6 @@ buildLinux (args // rec {
src = fetchurl {
url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
sha256 = "17y8q0gy4b00rms6pgglzmzz4msvmn2frqvln9vac39m78k3kyci";
sha256 = "0dcqn6s85sd4zl7rv8ay88p5z12xvy2rma0dx6g6b480rg68sxal";
};
} // (args.argsOverride or {}))

View File

@ -3,7 +3,7 @@
with lib;
buildLinux (args // rec {
version = "5.4.107";
version = "5.4.108";
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg;
@ -13,6 +13,6 @@ buildLinux (args // rec {
src = fetchurl {
url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
sha256 = "0q3m4d96d0hhhzn71aarh314i4cx9h3qvhhi5hrmcsrnbxafyg0w";
sha256 = "0wi1ql7brfsdzvwbxrxvg12zfm54lbdjvfzxk1l3xlqvq83sq4pj";
};
} // (args.argsOverride or {}))

View File

@ -3,15 +3,15 @@
with lib;
buildLinux (args // rec {
version = "5.11-rc5";
extraMeta.branch = "5.11";
version = "5.12-rc4";
extraMeta.branch = "5.12";
# modDirVersion needs to be x.y.z, will always add .0
modDirVersion = if (modDirVersionArg == null) then builtins.replaceStrings ["-"] [".0-"] version else modDirVersionArg;
src = fetchurl {
url = "https://git.kernel.org/torvalds/t/linux-${version}.tar.gz";
sha256 = "029nps41nrym5qz9lq832cys4rai04ig5xp9ddvrpazzh0lfnr4q";
sha256 = "06i6xnfbyn522pj9zksx6ka01yxwv8dsrb2z517grv682sp8j70k";
};
# Should the testing kernels ever be built on Hydra?

View File

@ -0,0 +1,26 @@
{ lib, stdenv, fetchFromGitHub, cmake }:
stdenv.mkDerivation rec {
pname = "powercap";
version = "0.3.1";
src = fetchFromGitHub {
owner = "powercap";
repo = "powercap";
rev = "v${version}";
sha256 = "0f1sg1zsskcfralg9khwq7lmz25gvnyknza3bb0hmh1a9lw0jhdn";
};
nativeBuildInputs = [ cmake ];
cmakeFlags = [
"-DBUILD_SHARED_LIBS=On"
];
meta = with lib; {
description = "Tools and library to read/write to the Linux power capping framework (sysfs interface)";
license = licenses.bsd3;
platforms = platforms.linux;
maintainers = with maintainers; [ rowanG077 ];
};
}

View File

@ -1,14 +1,14 @@
{ lib, stdenv, fetchFromGitHub, autoreconfHook, libewf, afflib, openssl, zlib }:
stdenv.mkDerivation rec {
version = "4.10.1";
version = "4.10.2";
pname = "sleuthkit";
src = fetchFromGitHub {
owner = "sleuthkit";
repo = "sleuthkit";
rev = "${pname}-${version}";
sha256 = "142kkpkpawpqyc88pr6xdvlagw6djaah1schyjxq9qdq9cnqx0dw";
sha256 = "sha256-N0/spV/Bxk/UNULPot82Vw1uTIxy/Arf84wqUp6W2Tc=";
};
postPatch = ''

View File

@ -19459,6 +19459,8 @@ in
power-calibrate = callPackage ../os-specific/linux/power-calibrate { };
powercap = callPackage ../os-specific/linux/powercap { };
powerstat = callPackage ../os-specific/linux/powerstat { };
smemstat = callPackage ../os-specific/linux/smemstat { };