Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2021-01-11 06:33:34 +00:00 committed by GitHub
commit 75bb36a66f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 550 additions and 8 deletions

View File

@ -0,0 +1,74 @@
{ stdenv
, mkDerivation
, fetchFromGitHub
, substituteAll
, cmake
, extra-cmake-modules
, qttools
, leptonica
, tesseract4
, qtmultimedia
, qtx11extras
, qttranslations
}:
let
singleapplication = fetchFromGitHub {
owner = "itay-grudev";
repo = "SingleApplication";
rev = "v3.2.0";
sha256 = "0w3z97dcqcz3bf7w6fja4smkafmx9kvhzb9px4k2nfmmyxh4yfma";
};
qtaskbarcontrol = fetchFromGitHub {
owner = "Skycoder42";
repo = "QTaskbarControl";
rev = "2.0.2";
sha256 = "0iymcvq3pv07fs9l4kh6hi1igqr7957iqndhsmg9fqkalf8nqyad";
};
qhotkey = fetchFromGitHub {
owner = "Skycoder42";
repo = "QHotkey";
rev = "1.4.2";
sha256 = "0391fkqrxqmzpvms4rk06aq05l308k6sadp6y3czq0gx2kng8mn9";
};
qonlinetranslator = fetchFromGitHub {
owner = "crow-translate";
repo = "QOnlineTranslator";
rev = "1.4.1";
sha256 = "1c6a8mdxms5vh8l7shi2kqdhafbzm50pbz6g1hhgg6qslla0vfn0";
};
in
mkDerivation rec {
pname = "crow-translate";
version = "2.6.2";
src = fetchFromGitHub {
owner = "crow-translate";
repo = "crow-translate";
rev = version;
sha256 = "1jgpqynmxmh6mrknpk5fh96lbdg799axp4cyn5rvalg3sdxajmqc";
};
patches = [
(substituteAll {
src = ./dont-fetch-external-libs.patch;
inherit singleapplication qtaskbarcontrol qhotkey qonlinetranslator;
})
(substituteAll {
# See https://github.com/NixOS/nixpkgs/issues/86054
src = ./fix-qttranslations-path.patch;
inherit qttranslations;
})
];
nativeBuildInputs = [ cmake extra-cmake-modules qttools ];
buildInputs = [ leptonica tesseract4 qtmultimedia qtx11extras ];
meta = with stdenv.lib; {
description = "A simple and lightweight translator that allows to translate and speak text using Google, Yandex and Bing";
homepage = "https://crow-translate.github.io/";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ sikmir ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,33 @@
diff --git i/cmake/ExternalLibraries.cmake w/cmake/ExternalLibraries.cmake
index d8c88ae..47a12c0 100644
--- i/cmake/ExternalLibraries.cmake
+++ w/cmake/ExternalLibraries.cmake
@@ -2,24 +2,20 @@ include(FetchContent)
set(QAPPLICATION_CLASS QApplication)
FetchContent_Declare(SingleApplication
- GIT_REPOSITORY https://github.com/itay-grudev/SingleApplication
- GIT_TAG v3.2.0
+ SOURCE_DIR @singleapplication@
)
FetchContent_Declare(QTaskbarControl
- GIT_REPOSITORY https://github.com/Skycoder42/QTaskbarControl
- GIT_TAG 2.0.2
+ SOURCE_DIR @qtaskbarcontrol@
)
option(QHOTKEY_INSTALL OFF)
FetchContent_Declare(QHotkey
- GIT_REPOSITORY https://github.com/Skycoder42/QHotkey
- GIT_TAG 1.4.2
+ SOURCE_DIR @qhotkey@
)
FetchContent_Declare(QOnlineTranslator
- GIT_REPOSITORY https://github.com/crow-translate/QOnlineTranslator
- GIT_TAG 1.4.1
+ SOURCE_DIR @qonlinetranslator@
)
FetchContent_MakeAvailable(SingleApplication QTaskbarControl QHotkey QOnlineTranslator)

View File

@ -0,0 +1,13 @@
diff --git i/src/settings/appsettings.cpp w/src/settings/appsettings.cpp
index 7be4573..e65994e 100644
--- i/src/settings/appsettings.cpp
+++ w/src/settings/appsettings.cpp
@@ -82,7 +82,7 @@ void AppSettings::applyLanguage(QLocale::Language lang)
QLocale::setDefault(QLocale(lang));
s_appTranslator.load(QLocale(), QStringLiteral(PROJECT_NAME), QStringLiteral("_"), QStandardPaths::locate(QStandardPaths::AppDataLocation, QStringLiteral("translations"), QStandardPaths::LocateDirectory));
- s_qtTranslator.load(QLocale(), QStringLiteral("qt"), QStringLiteral("_"), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
+ s_qtTranslator.load(QLocale(), QStringLiteral("qt"), QStringLiteral("_"), QLatin1String("@qttranslations@/translations"));
}
QLocale::Language AppSettings::defaultLanguage()

View File

@ -0,0 +1,55 @@
{ stdenv, fetchurl, dpkg, autoPatchelfHook, makeWrapper,
atk, ffmpeg, gdk-pixbuf, glibc, gtk3, libav_0_8, libXtst }:
stdenv.mkDerivation rec {
pname = "signumone-ks";
version = "3.1.2";
src = fetchurl {
url = "https://cdn-dist.signum.one/${version}/${pname}-${version}.deb";
sha256 = "4efd80e61619ccf26df1292194fcec68eb14d77dfcf0a1a673da4cf5bf41f4b7";
};
# Necessary to avoid using multiple ffmpeg and gtk libs
autoPatchelfIgnoreMissingDeps = true;
nativeBuildInputs = [
autoPatchelfHook
dpkg
makeWrapper
];
buildInputs = [
atk glibc gdk-pixbuf stdenv.cc.cc ffmpeg
libav_0_8 gtk3 libXtst
];
libPath = stdenv.lib.makeLibraryPath buildInputs;
unpackPhase = ''
dpkg-deb -x ${src} ./
'';
installPhase = ''
DESKTOP_PATH=$out/share/applications/signumone-ks.desktop
mkdir -p $out/bin $out/share/applications
mv opt/SignumOne-KS/SignumOne-KS.desktop $DESKTOP_PATH
mv opt $out
substituteInPlace $DESKTOP_PATH --replace 'Exec=/opt/SignumOne-KS' Exec=$out/bin
substituteInPlace $DESKTOP_PATH --replace 'Icon=' Icon=$out
makeWrapper $out/opt/SignumOne-KS/SignumOne-KS \
$out/bin/SignumOne-KS \
--prefix LD_LIBRARY_PATH : ${libPath}
'';
meta = with stdenv.lib; {
description = "Digital signature tool for Costa Rican electronic invoicing";
homepage = "https://signum.one/download.html";
license = licenses.unfree;
maintainers = with maintainers; [ wolfangaukang ];
platforms = [ "x86_64-linux" ];
};
}

View File

@ -2,16 +2,16 @@
buildGoModule rec { buildGoModule rec {
pname = "tflint"; pname = "tflint";
version = "0.23.0"; version = "0.23.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "terraform-linters"; owner = "terraform-linters";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "1j6a956cbmsc9fy500sl5z6l7q5sc4fna772v5m10w0hq0vw6sk5"; sha256 = "19vgan743xsnglwva93fs4sqcbpqbyrxbgn5qff809ns8hj8ir94";
}; };
vendorSha256 = "1x7gxjl98i36vsch6b3w6iqyq6q8mj4x9gylk2fihq50c3qq4mk4"; vendorSha256 = "1y6ra9bkp6wl0pikvyqywhg5w18v3glnyvwqrddkkkabspl05nqx";
doCheck = false; doCheck = false;

View File

@ -0,0 +1,52 @@
{ stdenv, fetchFromGitHub, ninja, makeWrapper }:
stdenv.mkDerivation rec {
pname = "sumneko-lua-language-server";
version = "1.11.2";
src = fetchFromGitHub {
owner = "sumneko";
repo = "lua-language-server";
rev = version;
sha256 = "1cnzwfqmzlzi6797l37arhhx2l6wsvs3jjgxdxwdbgq3rfz1ncr8";
fetchSubmodules = true;
};
nativeBuildInputs = [
ninja
makeWrapper
];
preBuild = ''
cd 3rd/luamake
'';
ninjaFlags = [
"-f ninja/linux.ninja"
];
postBuild = ''
cd ../..
./3rd/luamake/luamake rebuild
'';
installPhase = ''
mkdir -p $out/bin $out/extras
cp -r ./{locale,meta,script,*.lua} $out/extras/
cp ./bin/Linux/{bee.so,lpeglabel.so} $out/extras
cp ./bin/Linux/lua-language-server $out/extras/.lua-language-server-unwrapped
makeWrapper $out/extras/.lua-language-server-unwrapped \
$out/bin/lua-language-server \
--add-flags "-E $out/extras/main.lua \
--logpath='~/.cache/sumneko_lua/log' \
--metapath='~/.cache/sumneko_lua/meta'"
'';
meta = with stdenv.lib; {
description = "Lua Language Server coded by Lua ";
homepage = "https://github.com/sumneko/lua-language-server";
license = licenses.mit;
maintainers = with maintainers; [ mjlbach ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,93 @@
{ stdenv
, fetchsvn
# jdk8 is needed for building, but the game runs on newer jres as well
, jdk8
, jre
, ant
, makeWrapper
, makeDesktopItem
}:
let
desktopItem = makeDesktopItem {
type = "Application";
name = "Domination";
desktopName = "Domination";
exec = "domination";
icon = "domination";
};
editorDesktopItem = makeDesktopItem {
type = "Application";
name = "Domination Map Editor";
desktopName = "Domination Map Editor";
exec = "domination-map-editor";
icon = "domination";
};
in stdenv.mkDerivation {
pname = "domination";
version = "1.2.3";
# The .zip releases do not contain the build.xml file
src = fetchsvn {
url = "https://svn.code.sf.net/p/domination/code/Domination";
# There are no tags in the repository.
# Look for commits like "new version x.y.z info on website"
# or "website update for x.y.z".
rev = "1964";
sha256 = "0718gns8d69a1dfq3ywc9kddl1khnrmxqyal7brckbjgay8dq42f";
};
nativeBuildInputs = [
jdk8
ant
makeWrapper
];
buildPhase = "ant";
installPhase = ''
# Remove unnecessary files and launchers (they'd need to be wrapped anyway)
rm -r \
build/game/src.zip \
build/game/*.sh \
build/game/*.cmd \
build/game/*.exe \
build/game/*.app
mkdir -p $out/share/domination
cp -r build/game/* $out/share/domination/
# Reimplement the two launchers mentioned in Unix_shortcutSpec.xml with makeWrapper
mkdir -p $out/bin
makeWrapper ${jre}/bin/java $out/bin/domination \
--run "cd $out/share/domination" \
--add-flags "-jar $out/share/domination/Domination.jar"
makeWrapper ${jre}/bin/java $out/bin/domination-map-editor \
--run "cd $out/share/domination" \
--add-flags "-cp $out/share/domination/Domination.jar net.yura.domination.ui.swinggui.SwingGUIFrame"
install -Dm644 \
${desktopItem}/share/applications/Domination.desktop \
$out/share/applications/Domination.desktop
install -Dm644 \
"${editorDesktopItem}/share/applications/Domination Map Editor.desktop" \
"$out/share/applications/Domination Map Editor.desktop"
install -Dm644 build/game/resources/icon.png $out/share/pixmaps/domination.png
'';
meta = with stdenv.lib; {
homepage = "http://domination.sourceforge.net/";
downloadPage = "http://domination.sourceforge.net/download.shtml";
description = "A game that is a bit like the board game Risk or RisiKo";
longDescription = ''
Domination is a game that is a bit like the well known board game of Risk
or RisiKo. It has many game options and includes many maps.
It includes a map editor, a simple map format, multiplayer network play,
single player, hotseat, 5 user interfaces and many more features.
'';
license = licenses.gpl3;
maintainers = with maintainers; [ fgaz ];
platforms = platforms.all;
};
}

View File

@ -0,0 +1,55 @@
{ stdenv
, fetchFromGitLab
, fetchzip
, SDL2, SDL2_mixer, SDL2_net
, gtk3, gobject-introspection
, python3Packages
, wrapGAppsHook
}:
let data = fetchzip {
url = "https://mirandir.pagesperso-orange.fr/files/additional-levels.tar.xz";
sha256 = "167hisscsbldrwrs54gq6446shl8h26qdqigmfg0lq3daynqycg2";
}; in
stdenv.mkDerivation rec {
pname = "jumpnbump";
version = "1.70-dev";
# By targeting the development version, we can omit the patches Arch uses
src = fetchFromGitLab {
domain = "gitlab.com";
owner = "LibreGames";
repo = pname;
rev = "5744738211ca691444f779aafee3537fb3562516";
sha256 = "0f1k26jicmb95bx19wgcdpwsbbl343i7mqqqc2z9lkb8drlsyqcy";
};
makeFlags = [ "PREFIX=$(out)" ];
nativeBuildInputs = [ python3Packages.wrapPython wrapGAppsHook ];
buildInputs = [ SDL2 SDL2_mixer SDL2_net gtk3 gobject-introspection ];
postInstall = ''
make -C menu PREFIX=$out all install
cp -r ${data}/* $out/share/jumpnbump/
rm $out/share/applications/jumpnbump-menu.desktop
sed -ie 's+Exec=jumpnbump+Exec=jumpnbump-menu+' $out/share/applications/jumpnbump.desktop
'';
pythonPath = with python3Packages; [ pygobject3 pillow ];
preFixup = ''
buildPythonPath "$out $pythonPath"
'';
postFixup = ''
wrapPythonPrograms
'';
meta = with stdenv.lib; {
description = "cute, true multiplayer platform game with bunnies";
homepage = "https://libregames.gitlab.io/jumpnbump/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ iblech ];
platforms = platforms.unix;
};
}

View File

@ -0,0 +1,30 @@
From 3c6b7c0922370e9d0c1705706e7c47dcd234e6c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Milan=20P=C3=A4ssler?= <milan@petabyte.dev>
Date: Wed, 30 Dec 2020 11:49:16 +0100
Subject: [PATCH] configs/rpi: allow for bigger kernels
---
include/configs/rpi.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/configs/rpi.h b/include/configs/rpi.h
index 834f1cd2..b63ee96f 100644
--- a/include/configs/rpi.h
+++ b/include/configs/rpi.h
@@ -163,10 +163,10 @@
"fdt_high=" FDT_HIGH "\0" \
"initrd_high=" INITRD_HIGH "\0" \
"kernel_addr_r=0x00080000\0" \
- "scriptaddr=0x02400000\0" \
- "pxefile_addr_r=0x02500000\0" \
- "fdt_addr_r=0x02600000\0" \
- "ramdisk_addr_r=0x02700000\0"
+ "scriptaddr=0x02c00000\0" \
+ "pxefile_addr_r=0x02d00000\0" \
+ "fdt_addr_r=0x02e00000\0" \
+ "ramdisk_addr_r=0x02f00000\0"
#if CONFIG_IS_ENABLED(CMD_MMC)
#define BOOT_TARGET_MMC(func) \
--
2.29.2

View File

@ -40,7 +40,9 @@ let
src = if src == null then defaultSrc else src; src = if src == null then defaultSrc else src;
patches = extraPatches; patches = [
./0001-configs-rpi-allow-for-bigger-kernels.patch
] ++ extraPatches;
postPatch = '' postPatch = ''
patchShebangs tools patchShebangs tools

View File

@ -0,0 +1,26 @@
{ lib
, fetchFromGitHub
, rustPlatform
}:
rustPlatform.buildRustPackage rec {
pname = "psw";
version = "0.1.2";
src = fetchFromGitHub {
owner = "Wulfsta";
repo = pname;
rev = version;
sha256 = "10raj4899i01f5v13w0wxdnjjicql2wjblkq1zcagrfv3ly3d0fy";
};
cargoSha256 = "1w18rym0xnjk7vhrb2dc4cvhg659zbq5d2153gw2snxcbs7gh7r1";
meta = with lib; {
description = "A command line tool to write random bytes to stdout";
homepage = "https://github.com/Wulfsta/psw";
license = with licenses; [ asl20 /* or */ mit ];
maintainers = with maintainers; [ wulfsta ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,66 @@
{ stdenv
, fetchFromGitHub
, fetchpatch
, unstableGitUpdater
, xxd
, pkg-config
, imagemagick
, wrapGAppsHook
, gtk3
, jansson
}:
stdenv.mkDerivation {
pname = "urn-timer";
version = "unstable-2017-08-20";
src = fetchFromGitHub {
owner = "3snowp7im";
repo = "urn";
rev = "246a7a642fa7a673166c1bd281585d0fc22e75b2";
sha256 = "0bniwf3nhsqapsss9m9y9ylh38v6v7q45999wa1qcsddpa72k0i0";
fetchSubmodules = true;
};
patches = [
# https://github.com/3snowp7im/urn/pull/50
(fetchpatch {
name = "stop-hardcoding-prefix";
url = "https://github.com/3snowp7im/urn/commit/6054ee62dcd6095e31e8fb2a229155dbbcb39f68.patch";
sha256 = "1xdkylbqlqjwqx4pb9v1snf81ag7b6q8vybirz3ibsv6iy79v9pk";
})
# https://github.com/3snowp7im/urn/pull/53
(fetchpatch {
name = "create-installation-directories";
url = "https://github.com/3snowp7im/urn/commit/fb032851b9c5bebb5066d306f5366f0be34f0797.patch";
sha256 = "0jjhcz4n8bm3hl56rvjzkvxr6imc05qlyavzjrlafa19hf036g4a";
})
];
postPatch = ''substituteInPlace GNUmakefile --replace 'rsync -a --exclude=".*"' 'cp -r' '';
nativeBuildInputs = [
xxd
pkg-config
imagemagick
wrapGAppsHook
];
buildInputs = [
gtk3
jansson
];
makeFlags = [ "PREFIX=$(out)" ];
passthru.updateScript = unstableGitUpdater {
url = "https://github.com/3snowp7im/urn.git";
};
meta = with stdenv.lib; {
homepage = "https://github.com/3snowp7im/urn";
description = "Split tracker / timer for speedrunning with GTK+ frontend";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ fgaz ];
};
}

View File

@ -0,0 +1,27 @@
{ buildGoModule
, fetchFromGitHub
, stdenv
}:
buildGoModule rec {
pname = "crlfuzz";
version = "1.4.0";
src = fetchFromGitHub {
owner = "dwisiswant0";
repo = pname;
rev = "v${version}";
sha256 = "03g7z7cczn52hvg6srp1i5xhdbpia226adrh2d54cs640063bx3m";
};
vendorSha256 = "19cj07f7d3ksp7lh5amdjz1s8p7xmqbwal4vp61al82n8944ify8";
doCheck = true;
meta = with stdenv.lib; {
description = "Tool to scan for CRLF vulnerability";
homepage = "https://github.com/dwisiswant0/crlfuzz";
license = with licenses; [ mit ];
maintainers = with maintainers; [ fab ];
};
}

View File

@ -208,6 +208,8 @@ in
cpu-x = callPackage ../applications/misc/cpu-x { }; cpu-x = callPackage ../applications/misc/cpu-x { };
crow-translate = libsForQt5.callPackage ../applications/misc/crow-translate { };
dhallToNix = callPackage ../build-support/dhall-to-nix.nix { dhallToNix = callPackage ../build-support/dhall-to-nix.nix {
inherit dhall-nix; inherit dhall-nix;
}; };
@ -3032,6 +3034,8 @@ in
cmt = callPackage ../applications/audio/cmt {}; cmt = callPackage ../applications/audio/cmt {};
crlfuzz = callPackage ../tools/security/crlfuzz {};
hedgedoc = callPackage ../servers/web-apps/hedgedoc { }; hedgedoc = callPackage ../servers/web-apps/hedgedoc { };
colord = callPackage ../tools/misc/colord { }; colord = callPackage ../tools/misc/colord { };
@ -5090,6 +5094,8 @@ in
jnettop = callPackage ../tools/networking/jnettop { }; jnettop = callPackage ../tools/networking/jnettop { };
jumpnbump = callPackage ../games/jumpnbump { };
junkie = callPackage ../tools/networking/junkie { }; junkie = callPackage ../tools/networking/junkie { };
just = callPackage ../development/tools/just { }; just = callPackage ../development/tools/just { };
@ -6890,6 +6896,8 @@ in
openssl = openssl_1_0_2; openssl = openssl_1_0_2;
}; };
psw = callPackage ../tools/misc/psw { };
pws = callPackage ../tools/misc/pws { }; pws = callPackage ../tools/misc/pws { };
cntlm = callPackage ../tools/networking/cntlm { }; cntlm = callPackage ../tools/networking/cntlm { };
@ -7481,6 +7489,8 @@ in
# aka., pgp-tools # aka., pgp-tools
signing-party = callPackage ../tools/security/signing-party { }; signing-party = callPackage ../tools/security/signing-party { };
signumone-ks = callPackage ../applications/misc/signumone-ks { };
silc_client = callPackage ../applications/networking/instant-messengers/silc-client { }; silc_client = callPackage ../applications/networking/instant-messengers/silc-client { };
silc_server = callPackage ../servers/silc-server { }; silc_server = callPackage ../servers/silc-server { };
@ -8194,6 +8204,8 @@ in
urlview = callPackage ../applications/misc/urlview {}; urlview = callPackage ../applications/misc/urlview {};
urn-timer = callPackage ../tools/misc/urn-timer { };
ursadb = callPackage ../servers/ursadb {}; ursadb = callPackage ../servers/ursadb {};
usbmuxd = callPackage ../tools/misc/usbmuxd {}; usbmuxd = callPackage ../tools/misc/usbmuxd {};
@ -25874,6 +25886,8 @@ in
displaycal = callPackage ../applications/graphics/displaycal {}; displaycal = callPackage ../applications/graphics/displaycal {};
domination = callPackage ../games/domination { };
drumkv1 = libsForQt5.callPackage ../applications/audio/drumkv1 { }; drumkv1 = libsForQt5.callPackage ../applications/audio/drumkv1 { };
duckmarines = callPackage ../games/duckmarines { love = love_0_10; }; duckmarines = callPackage ../games/duckmarines { love = love_0_10; };
@ -28618,6 +28632,8 @@ in
sqsh = callPackage ../development/tools/sqsh { }; sqsh = callPackage ../development/tools/sqsh { };
sumneko-lua-language-server = callPackage ../development/tools/sumneko-lua-language-server { };
go-swag = callPackage ../development/tools/go-swag { }; go-swag = callPackage ../development/tools/go-swag { };
go-swagger = callPackage ../development/tools/go-swagger { }; go-swagger = callPackage ../development/tools/go-swagger { };

View File

@ -612,13 +612,13 @@ let
Appcpm = buildPerlModule { Appcpm = buildPerlModule {
pname = "App-cpm"; pname = "App-cpm";
version = "0.996"; version = "0.997000";
src = fetchurl { src = fetchurl {
url = "mirror://cpan/authors/id/S/SK/SKAJI/App-cpm-0.996.tar.gz"; url = "mirror://cpan/authors/id/S/SK/SKAJI/App-cpm-0.997000.tar.gz";
sha256 = "5684535511e5abc0aa8eb6105b13f5759b5d03b6808f30149508358b0a11f595"; sha256 = "6bf25a25dfb2331dee623d5cc3d030d9be647e7c766e82196a383f16b92e419f";
}; };
buildInputs = [ ModuleBuildTiny ]; buildInputs = [ ModuleBuildTiny ];
propagatedBuildInputs = [ CPANCommonIndex CPANDistnameInfo ClassTiny CommandRunner ExtUtilsInstallPaths FileCopyRecursive Filepushd HTTPTinyish MenloLegacy ModuleCPANfile ParallelPipes locallib ]; propagatedBuildInputs = [ CPANCommonIndex CPANDistnameInfo ClassTiny CommandRunner ExtUtilsInstall ExtUtilsInstallPaths FileCopyRecursive Filepushd HTTPTinyish MenloLegacy ModuleCPANfile ParsePMFile ParallelPipes locallib ];
nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang; nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
postInstall = lib.optionalString stdenv.isDarwin '' postInstall = lib.optionalString stdenv.isDarwin ''
shortenPerlShebang $out/bin/cpm shortenPerlShebang $out/bin/cpm