Merge master into staging-next

This commit is contained in:
github-actions[bot] 2022-07-18 18:01:14 +00:00 committed by GitHub
commit 83702a6ef7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 223 additions and 103 deletions

View file

@ -46,6 +46,15 @@ in {
description = "The mxisd/ma1sd package to use";
};
environmentFile = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Path to an environment-file which may contain secrets to be
substituted via <package>envsubst</package>.
'';
};
dataDir = mkOption {
type = types.str;
default = "/var/lib/mxisd";
@ -118,7 +127,12 @@ in {
Type = "simple";
User = "mxisd";
Group = "mxisd";
ExecStart = "${cfg.package}/bin/${executable} -c ${configFile}";
EnvironmentFile = mkIf (cfg.environmentFile != null) [ cfg.environmentFile ];
ExecStart = "${cfg.package}/bin/${executable} -c ${cfg.dataDir}/mxisd-config.yaml";
ExecStartPre = "${pkgs.writeShellScript "mxisd-substitute-secrets" ''
${pkgs.envsubst}/bin/envsubst -o ${cfg.dataDir}/mxisd-config.yaml \
-i ${configFile}
''}";
WorkingDirectory = cfg.dataDir;
Restart = "on-failure";
};

View file

@ -61,10 +61,10 @@ in {
};
group = mkOption {
type = types.str;
default = "root";
type = types.nullOr types.str;
default = null;
example = "wheel";
description = "Group to grant access to the Yggdrasil control socket.";
description = "Group to grant access to the Yggdrasil control socket. If <code>null</code>, only root can access the socket.";
};
openMulticastPort = mkOption {
@ -154,27 +154,16 @@ in {
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
Restart = "always";
Group = cfg.group;
DynamicUser = true;
StateDirectory = "yggdrasil";
RuntimeDirectory = "yggdrasil";
RuntimeDirectoryMode = "0750";
BindReadOnlyPaths = lib.optional configFileProvided cfg.configFile
++ lib.optional cfg.persistentKeys keysPath;
ReadWritePaths = "/run/yggdrasil";
# TODO: as of yggdrasil 0.3.8 and systemd 243, yggdrasil fails
# to set up the network adapter when DynamicUser is set. See
# github.com/yggdrasil-network/yggdrasil-go/issues/557. The
# following options are implied by DynamicUser according to
# the systemd.exec documentation, and can be removed if the
# upstream issue is fixed and DynamicUser is set to true:
PrivateTmp = true;
RemoveIPC = true;
NoNewPrivileges = true;
ProtectSystem = "strict";
RestrictSUIDSGID = true;
# End of list of options implied by DynamicUser.
AmbientCapabilities = "CAP_NET_ADMIN";
CapabilityBoundingSet = "CAP_NET_ADMIN";
AmbientCapabilities = "CAP_NET_ADMIN CAP_NET_BIND_SERVICE";
CapabilityBoundingSet = "CAP_NET_ADMIN CAP_NET_BIND_SERVICE";
MemoryDenyWriteExecute = true;
ProtectControlGroups = true;
ProtectHome = "tmpfs";
@ -185,7 +174,9 @@ in {
RestrictRealtime = true;
SystemCallArchitectures = "native";
SystemCallFilter = "~@clock @cpu-emulation @debug @keyring @module @mount @obsolete @raw-io @resources";
};
} // (if (cfg.group != null) then {
Group = cfg.group;
} else {});
};
networking.dhcpcd.denyInterfaces = cfg.denyDhcpcdInterfaces;

View file

@ -51,6 +51,16 @@ let
${cfg.extraConfig}
'';
renderValue = x:
if isList x then concatMapStringsSep "," (x: ''"${x}"'') x
else if isString x && hasInfix "," x then ''"${x}"''
else x;
ldapProxyConfig = pkgs.writeText "ldap-proxy.ini"
(generators.toINI {}
(flip mapAttrs cfg.ldap-proxy.settings
(const (mapAttrs (const renderValue)))));
in
{
@ -172,7 +182,8 @@ in
enable = mkEnableOption "PrivacyIDEA LDAP Proxy";
configFile = mkOption {
type = types.path;
type = types.nullOr types.path;
default = null;
description = ''
Path to PrivacyIDEA LDAP Proxy configuration (proxy.ini).
'';
@ -189,6 +200,26 @@ in
default = "pi-ldap-proxy";
description = "Group account under which PrivacyIDEA LDAP proxy runs.";
};
settings = mkOption {
type = with types; attrsOf (attrsOf (oneOf [ str bool int (listOf str) ]));
default = {};
description = ''
Attribute-set containing the settings for <package>privacyidea-ldap-proxy</package>.
It's possible to pass secrets using env-vars as substitutes and
use the option <xref linkend="opt-services.privacyidea.ldap-proxy.environmentFile" />
to inject them via <package>envsubst</package>.
'';
};
environmentFile = mkOption {
default = null;
type = types.nullOr types.str;
description = ''
Environment file containing secrets to be substituted into
<xref linkend="opt-services.privacyidea.ldap-proxy.settings" />.
'';
};
};
};
};
@ -276,6 +307,18 @@ in
(mkIf cfg.ldap-proxy.enable {
assertions = [
{ assertion = let
xor = a: b: a && !b || !a && b;
in xor (cfg.ldap-proxy.settings == {}) (cfg.ldap-proxy.configFile == null);
message = "configFile & settings are mutually exclusive for services.privacyidea.ldap-proxy!";
}
];
warnings = mkIf (cfg.ldap-proxy.configFile != null) [
"Using services.privacyidea.ldap-proxy.configFile is deprecated! Use the RFC42-style settings option instead!"
];
systemd.services.privacyidea-ldap-proxy = let
ldap-proxy-env = pkgs.python3.withPackages (ps: [ ps.privacyidea-ldap-proxy ]);
in {
@ -284,14 +327,27 @@ in
serviceConfig = {
User = cfg.ldap-proxy.user;
Group = cfg.ldap-proxy.group;
ExecStart = ''
StateDirectory = "privacyidea-ldap-proxy";
EnvironmentFile = mkIf (cfg.ldap-proxy.environmentFile != null)
[ cfg.ldap-proxy.environmentFile ];
ExecStartPre =
"${pkgs.writeShellScript "substitute-secrets-ldap-proxy" ''
${pkgs.envsubst}/bin/envsubst \
-i ${ldapProxyConfig} \
-o $STATE_DIRECTORY/ldap-proxy.ini
''}";
ExecStart = let
configPath = if cfg.ldap-proxy.settings != {}
then "%S/privacyidea-ldap-proxy/ldap-proxy.ini"
else cfg.ldap-proxy.configFile;
in ''
${ldap-proxy-env}/bin/twistd \
--nodaemon \
--pidfile= \
-u ${cfg.ldap-proxy.user} \
-g ${cfg.ldap-proxy.group} \
ldap-proxy \
-c ${cfg.ldap-proxy.configFile}
-c ${configPath}
'';
Restart = "always";
};

View file

@ -5,23 +5,23 @@
}:
let
# Fetched from https://api.yuzu-emu.org/gamedb, last updated 2022-05-12
# Fetched from https://api.yuzu-emu.org/gamedb, last updated 2022-07-14
# Please make sure to update this when updating yuzu!
compat-list = fetchurl {
name = "yuzu-compat-list";
url = "https://web.archive.org/web/20220512184801/https://api.yuzu-emu.org/gamedb";
url = "https://web.archive.org/web/20220714160745/https://api.yuzu-emu.org/gamedb";
sha256 = "sha256-anOmO7NscHDsQxT03+YbJEyBkXjhcSVGgKpDwt//GHw=";
};
in {
mainline = libsForQt5.callPackage ./generic.nix rec {
pname = "yuzu-mainline";
version = "1088";
version = "1092";
src = fetchFromGitHub {
owner = "yuzu-emu";
repo = "yuzu-mainline";
rev = "mainline-0-${version}";
sha256 = "0kjiynv1fwc14w7382qgzayz5j9n2rnzbpbq49zgcywc4wwcxzs2";
sha256 = "1avcq924q0r8pfv1s0a88iyii7yixcxpb3yhlj0xg9zqnwp9r23y";
fetchSubmodules = true;
};
@ -30,13 +30,13 @@ in {
early-access = libsForQt5.callPackage ./generic.nix rec {
pname = "yuzu-ea";
version = "2725";
version = "2841";
src = fetchFromGitHub {
owner = "pineappleEA";
repo = "pineapple-src";
rev = "EA-${version}";
sha256 = "1nmcl9y9chr7cdvnra5zs1v42d3i801hmsjdlz3fmp15n04bcjmp";
sha256 = "16lrq9drv0x7gs1siq37m4zmh6d2g3vhnw9qcqajr9p0vmlpnh6l";
fetchSubmodules = true;
};

View file

@ -53,7 +53,7 @@ updateEarlyAccess() {
OLD_EA_HASH="$(getLocalHash "yuzu-ea")"
NEW_EA_VERSION="$(curl -s ${GITHUB_TOKEN:+"-u \":$GITHUB_TOKEN\""} \
"https://api.github.com/repos/pineappleEA/pineapple-src/releases?per_page=1" | jq -r '.[0].name' | cut -d"-" -f2 | cut -d" " -f1)"
"https://api.github.com/repos/pineappleEA/pineapple-src/releases?per_page=1" | jq -r '.[0].tag_name' | cut -d"-" -f2 | cut -d" " -f1)"
if [[ "${OLD_EA_VERSION}" = "${NEW_EA_VERSION}" ]]; then
echo "yuzu-ea is already up to date!"

View file

@ -69,14 +69,14 @@ let
six
];
in mkDerivation rec {
version = "3.22.8";
version = "3.22.9";
pname = "qgis-ltr-unwrapped";
src = fetchFromGitHub {
owner = "qgis";
repo = "QGIS";
rev = "final-${lib.replaceStrings [ "." ] [ "_" ] version}";
sha256 = "sha256-YxF7FzyNNt+bdk96g2sWWv9haqV0L6Ab96D0hV0BFrA=";
sha256 = "sha256-QHdcK34e7tC0AUstE8pbsBHzHXbmOd3gI2/zqsxb6X4=";
};
passthru = {

View file

@ -69,14 +69,14 @@ let
six
];
in mkDerivation rec {
version = "3.26.0";
version = "3.26.1";
pname = "qgis-unwrapped";
src = fetchFromGitHub {
owner = "qgis";
repo = "QGIS";
rev = "final-${lib.replaceStrings [ "." ] [ "_" ] version}";
sha256 = "sha256-yHQi5ai7fdgznTf562Bj0QPE+SXg972O7+r01RY7itE=";
sha256 = "sha256-FjMe/5uEbmSeQrAtkKvoGh4VlPkbGMHNzlCpn27C5CQ=";
};
passthru = {

View file

@ -28,14 +28,14 @@ let
in
assert lib.all (p: p.enabled -> ! (builtins.elem null p.buildInputs)) plugins;
stdenv.mkDerivation rec {
version = "3.5";
version = "3.6";
pname = "weechat";
hardeningEnable = [ "pie" ];
src = fetchurl {
url = "https://weechat.org/files/src/weechat-${version}.tar.bz2";
sha256 = "sha256-8ZSa2dQPTiChGW00T5OASHmd0C2PatUtTu9Gr4CF4Oc=";
sha256 = "sha256-GkYN/Y4LQQr7GdSDu0ucXXM9wWPAqKD1txJXkOhJMDc=";
};
outputs = [ "out" "man" ] ++ map (p: p.name) enabledPlugins;

View file

@ -0,0 +1,60 @@
{ lib
, stdenv
, fetchFromGitHub
, rustPlatform
, libgit2
, openssl
, pkg-config
, makeWrapper
, git
, darwin
}:
rustPlatform.buildRustPackage rec {
pname = "josh";
version = "22.06.22";
src = fetchFromGitHub {
owner = "esrlabs";
repo = "josh";
rev = "r" + version;
sha256 = "0511qv9zyjvv4zfz6zyi69ssbkrwa24n0ah5w9mb4gzd547as8pq";
};
cargoSha256 = "0zfjjyyz4pxar1mfkkj9aij4dnwqy3asdrmay1iy6ijjn1qd97n4";
nativeBuildInputs = [
pkg-config
makeWrapper
];
buildInputs = [
libgit2
openssl
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
darwin.Security
];
cargoBuildFlags = [
"-p" "josh"
"-p" "josh-proxy"
# TODO: josh-ui
];
postInstall = ''
wrapProgram "$out/bin/josh-proxy" --prefix PATH : "${git}/bin"
'';
meta = {
description = "Just One Single History";
homepage = "https://josh-project.github.io/josh/";
downloadPage = "https://github.com/josh-project/josh";
changelog = "https://github.com/josh-project/josh/releases/tag/${version}";
license = lib.licenses.mit;
maintainers = [
lib.maintainers.sternenseemann
lib.maintainers.tazjin
];
platforms = lib.platforms.all;
};
}

View file

@ -1,17 +1,16 @@
{ lib, buildPythonPackage, fetchFromGitHub, pytestCheckHook, p7zip,
unzip, cabextract, zip, zopfli, lzip, zpaq, gnutar, gnugrep, diffutils, file,
cabextract, zip, lzip, zpaq, gnutar, gnugrep, diffutils, file,
gzip, bzip2, xz}:
# unrar is unfree, as well as 7z with unrar support, not including it (patool doesn't support unar)
# it will still use unrar if present in the path
let
compression-utilities = [
p7zip
unzip
gnutar
cabextract
zip
zopfli
lzip
zpaq
gzip
@ -34,9 +33,9 @@ buildPythonPackage rec {
sha256 = "0v4r77sm3yzh7y1whfwxmp01cchd82jbhvbg9zsyd2yb944imzjy";
};
prePatch = ''
postPatch = ''
substituteInPlace patoolib/util.py \
--replace "path = None" 'path = append_to_path(os.environ["PATH"], "${lib.makeBinPath compression-utilities}")'
--replace "path = None" 'path = os.environ["PATH"] + ":${lib.makeBinPath compression-utilities}"'
'';
checkInputs = [ pytestCheckHook ] ++ compression-utilities;

View file

@ -1,39 +1,38 @@
{ lib, stdenv, fetchurl, desktop-file-utils
, gtk3, libX11
, makeWrapper, pkg-config, perl, autoreconfHook, wrapGAppsHook
, gtk3, libX11, cmake, imagemagick
, pkg-config, perl, wrapGAppsHook
}:
stdenv.mkDerivation rec {
pname = "sgt-puzzles";
version = "20200610.9aa7b7c";
version = "20220613.387d323";
src = fetchurl {
url = "http://www.chiark.greenend.org.uk/~sgtatham/puzzles/puzzles-${version}.tar.gz";
sha256 = "0rrd1c77ar91zqy4rr4xp1z7x3ywnshlac99cga4hnrgwb7vwl3f";
hash = "sha256-Vcm7gxC9R7vvLkgkHblvEOONGLkYSHGMRfSBktgN/oQ=";
};
sgt-puzzles-menu = fetchurl {
url = "https://raw.githubusercontent.com/Oleh-Kravchenko/portage/master/games-puzzle/sgt-puzzles/files/sgt-puzzles.menu";
url = "https://raw.githubusercontent.com/gentoo/gentoo/720e614d0107e86fc1e520bac17726578186843d/games-puzzle/sgt-puzzles/files/sgt-puzzles.menu";
sha256 = "088w0x9g3j8pn725ix8ny8knhdsfgjr3hpswsh9fvfkz5vlg2xkm";
};
nativeBuildInputs = [ autoreconfHook desktop-file-utils makeWrapper
pkg-config perl wrapGAppsHook ];
nativeBuildInputs = [
cmake
desktop-file-utils
imagemagick
perl
pkg-config
wrapGAppsHook
];
buildInputs = [ gtk3 libX11 ];
makeFlags = [ "prefix=$(out)" "gamesdir=$(out)/bin"];
preInstall = ''
mkdir -p "$out"/{bin,share/doc/sgtpuzzles}
cp gamedesc.txt LICENCE README "$out/share/doc/sgtpuzzles"
'';
postInstall = ''
for i in $(basename -s $out/bin/*); do
ln -s $out/bin/$i $out/bin/sgt-puzzle-$i
install -Dm644 icons/$i-48d24.png -t $out/share/icons/hicolor/48x48/apps/
install -Dm644 icons/$i-96d24.png -t $out/share/icons/hicolor/96x96/apps/
# Generate/validate/install .desktop files.
echo "[Desktop Entry]" > $i.desktop
@ -43,7 +42,7 @@ stdenv.mkDerivation rec {
--set-key Name --set-value $i \
--set-key Comment --set-value "${meta.description}" \
--set-key Categories --set-value "Game;LogicGame;X-sgt-puzzles;" \
--set-key Icon --set-value $out/share/icons/hicolor/48x48/apps/$i-48d24 \
--set-key Icon --set-value $out/share/icons/hicolor/96x96/apps/$i-96d24.png \
$i.desktop
done
@ -57,16 +56,10 @@ stdenv.mkDerivation rec {
install -Dm644 ${sgt-puzzles-menu} -t $out/etc/xdg/menus/applications-merged/
'';
preConfigure = ''
perl mkfiles.pl
export NIX_LDFLAGS="$NIX_LDFLAGS -lX11"
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -Wno-error"
cp Makefile.gtk Makefile
'';
meta = with lib; {
description = "Simon Tatham's portable puzzle collection";
license = licenses.mit;
maintainers = [ maintainers.raskin ];
maintainers = with maintainers; [ raskin tomfitzhenry ];
platforms = platforms.linux;
homepage = "https://www.chiark.greenend.org.uk/~sgtatham/puzzles/";
};

View file

@ -38,6 +38,11 @@ rustPlatform.buildRustPackage rec {
cp -a docs/swagger $out/share/polaris-swagger
'';
preCheck = ''
# 'Err' value: Os { code: 24, kind: Uncategorized, message: "Too many open files" }
ulimit -n 4096
'';
passthru.updateScript = ./update.sh;
meta = with lib; {

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "rt";
version = "5.0.2";
version = "5.0.3";
src = fetchFromGitHub {
repo = pname;
rev = "${pname}-${version}";
owner = "bestpractical";
sha256 = "1qdvbsmdynjw2v0clnmhdmrky7w4dsiysv92n7d7jdbawnicqahn";
hash = "sha256-ZitlueLEbV3mGJg0aDrLa5IReJiOVaEf+JicbA9zUS4=";
};
patches = [
@ -120,8 +120,7 @@ stdenv.mkDerivation rec {
];
preAutoreconf = ''
substituteInPlace configure.ac \
--replace "rt-3.9.EXPORTED" "rt-${version}"
echo rt-${version} > .tag
'';
preConfigure = ''
configureFlags="$configureFlags --with-web-user=$UID"

View file

@ -3410,8 +3410,6 @@ with pkgs;
dconf = callPackage ../development/libraries/dconf { };
dcw-gmt = callPackage ../applications/gis/gmt/dcw.nix { };
ddate = callPackage ../tools/misc/ddate { };
ddosify = callPackage ../development/tools/ddosify { };
@ -3839,11 +3837,6 @@ with pkgs;
variant = "krita";
};
gmt = callPackage ../applications/gis/gmt {
inherit (darwin.apple_sdk.frameworks)
Accelerate CoreGraphics CoreVideo;
};
gpg-tui = callPackage ../tools/security/gpg-tui {
inherit (darwin.apple_sdk.frameworks) AppKit Foundation;
inherit (darwin) libobjc libresolv;
@ -25598,6 +25591,38 @@ with pkgs;
zuki-themes = callPackage ../data/themes/zuki { };
### APPLICATIONS / GIS
gmt = callPackage ../applications/gis/gmt {
inherit (darwin.apple_sdk.frameworks)
Accelerate CoreGraphics CoreVideo;
};
gshhg-gmt = callPackage ../applications/gis/gmt/gshhg.nix { };
dcw-gmt = callPackage ../applications/gis/gmt/dcw.nix { };
grass = callPackage ../applications/gis/grass { };
openorienteering-mapper = libsForQt5.callPackage ../applications/gis/openorienteering-mapper { };
qgis-ltr = callPackage ../applications/gis/qgis/ltr.nix { };
qgis = callPackage ../applications/gis/qgis { };
qmapshack = libsForQt5.callPackage ../applications/gis/qmapshack { };
saga = libsForQt5.callPackage ../applications/gis/saga {
inherit (darwin.apple_sdk.frameworks) Cocoa;
};
udig = callPackage ../applications/gis/udig { };
whitebox-tools = callPackage ../applications/gis/whitebox-tools {
inherit (darwin.apple_sdk.frameworks) Security;
};
zombietrackergps = libsForQt5.callPackage ../applications/gis/zombietrackergps { };
### APPLICATIONS
@ -26961,8 +26986,6 @@ with pkgs;
gpx-viewer = callPackage ../applications/misc/gpx-viewer { };
grass = callPackage ../applications/gis/grass { };
grepcidr = callPackage ../applications/search/grepcidr { };
grepm = callPackage ../applications/search/grepm { };
@ -27291,6 +27314,8 @@ with pkgs;
jmusicbot = callPackage ../applications/audio/jmusicbot { };
josh = callPackage ../applications/version-management/josh { };
junction = callPackage ../applications/misc/junction { };
lemonade = callPackage ../applications/misc/lemonade { };
@ -29333,8 +29358,6 @@ with pkgs;
vm = callPackage ../applications/audio/open-music-kontrollers/vm.nix { };
};
openorienteering-mapper = libsForQt5.callPackage ../applications/gis/openorienteering-mapper { };
openscad = libsForQt5.callPackage ../applications/graphics/openscad {};
open-stage-control = callPackage ../applications/audio/open-stage-control {
@ -29725,10 +29748,6 @@ with pkgs;
wrapQemuBinfmtP = callPackage ../applications/virtualization/qemu/binfmt-p-wrapper.nix { };
qgis-ltr = callPackage ../applications/gis/qgis/ltr.nix { };
qgis = callPackage ../applications/gis/qgis { };
qgroundcontrol = libsForQt5.callPackage ../applications/science/robotics/qgroundcontrol { };
qjackctl = libsForQt5.callPackage ../applications/audio/qjackctl { };
@ -29746,8 +29765,6 @@ with pkgs;
garmindev = callPackage ../applications/misc/qlandkartegt/garmindev.nix {};
qmapshack = libsForQt5.callPackage ../applications/gis/qmapshack { };
qmediathekview = libsForQt5.callPackage ../applications/video/qmediathekview { };
qmplay2 = libsForQt5.callPackage ../applications/video/qmplay2 { };
@ -31171,10 +31188,6 @@ with pkgs;
wlroots = wlroots_0_14;
};
whitebox-tools = callPackage ../applications/gis/whitebox-tools {
inherit (darwin.apple_sdk.frameworks) Security;
};
windowlab = callPackage ../applications/window-managers/windowlab { };
windowmaker = callPackage ../applications/window-managers/windowmaker { };
@ -31610,8 +31623,6 @@ with pkgs;
inherit (darwin.apple_sdk.frameworks) CoreServices;
};
zombietrackergps = libsForQt5.callPackage ../applications/gis/zombietrackergps { };
zoom-us = callPackage ../applications/networking/instant-messengers/zoom-us { };
zotero = callPackage ../applications/office/zotero { };
@ -31903,10 +31914,6 @@ with pkgs;
quorum = callPackage ../applications/blockchains/quorum { };
saga = libsForQt5.callPackage ../applications/gis/saga {
inherit (darwin.apple_sdk.frameworks) Cocoa;
};
samplv1 = libsForQt5.callPackage ../applications/audio/samplv1 { };
scaleft = callPackage ../applications/networking/scaleft { };
@ -31932,8 +31939,6 @@ with pkgs;
drumkv1 = libsForQt5.callPackage ../applications/audio/drumkv1 { };
gshhg-gmt = callPackage ../applications/gis/gmt/gshhg.nix { };
eureka-editor = callPackage ../applications/misc/eureka-editor { };
eureka-ideas = callPackage ../applications/misc/eureka-ideas {
@ -32985,8 +32990,6 @@ with pkgs;
uchess = callPackage ../games/uchess { };
udig = callPackage ../applications/gis/udig { };
ufoai = callPackage ../games/ufoai { };
uhexen2 = callPackage ../games/uhexen2 { };

View file

@ -6590,10 +6590,10 @@ let
DBIxSearchBuilder = buildPerlPackage {
pname = "DBIx-SearchBuilder";
version = "1.68";
version = "1.71";
src = fetchurl {
url = "mirror://cpan/authors/id/B/BP/BPS/DBIx-SearchBuilder-1.68.tar.gz";
sha256 = "be197c0f83c426996f77d22126f3103f958fc4bd1791c6962b793cc2779601f8";
url = "mirror://cpan/authors/id/B/BP/BPS/DBIx-SearchBuilder-1.71.tar.gz";
sha256 = "1ga2sjis6lg51z58il8q165klc38dmb3wj3phyxjfjg6yskdsbz4";
};
buildInputs = [ DBDSQLite ];
propagatedBuildInputs = [ CacheSimpleTimedExpiry ClassAccessor ClassReturnValue Clone DBIxDBSchema Want capitalization ];