Merge master into staging-next

This commit is contained in:
github-actions[bot] 2022-01-19 00:01:38 +00:00 committed by GitHub
commit 0fdca24272
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
34 changed files with 1276 additions and 761 deletions

View file

@ -2,35 +2,33 @@
rec {
/* Print a trace message if pred is false.
/* Throw if pred is false, else return pred.
Intended to be used to augment asserts with helpful error messages.
Example:
assertMsg false "nope"
=> false
stderr> trace: nope
stderr> error: nope
assert (assertMsg ("foo" == "bar") "foo is not bar, silly"); ""
stderr> trace: foo is not bar, silly
stderr> assert failed at
assert assertMsg ("foo" == "bar") "foo is not bar, silly"; ""
stderr> error: foo is not bar, silly
Type:
assertMsg :: Bool -> String -> Bool
*/
# TODO(Profpatsch): add tests that check stderr
assertMsg = pred: msg:
if pred
then true
else builtins.trace msg false;
pred || builtins.throw msg;
/* Specialized `assertMsg` for checking if val is one of the elements
of a list. Useful for checking enums.
Example:
let sslLibrary = "libressl"
let sslLibrary = "libressl";
in assertOneOf "sslLibrary" sslLibrary [ "openssl" "bearssl" ]
=> false
stderr> trace: sslLibrary must be one of "openssl", "bearssl", but is: "libressl"
stderr> error: sslLibrary must be one of [
stderr> "openssl"
stderr> "bearssl"
stderr> ], but is: "libressl"
Type:
assertOneOf :: String -> ComparableVal -> List ComparableVal -> Bool

View file

@ -421,6 +421,18 @@
configuration.
</para>
</listitem>
<listitem>
<para>
<literal>lib.assertMsg</literal> and
<literal>lib.assertOneOf</literal> no longer return
<literal>false</literal> if the passed condition is
<literal>false</literal>, <literal>throw</literal>ing the
given error message instead (which makes the resulting error
message less cluttered). This will not impact the behaviour of
code using these functions as intended, namely as top-level
wrapper for <literal>assert</literal> conditions.
</para>
</listitem>
</itemizedlist>
</section>
<section xml:id="sec-release-22.05-notable-changes">
@ -564,6 +576,14 @@
renamed to <literal>linux-firmware</literal>.
</para>
</listitem>
<listitem>
<para>
The <literal>services.mbpfan</literal> module was converted to
a
<link xlink:href="https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md">RFC
0042</link> configuration.
</para>
</listitem>
<listitem>
<para>
A new module was added for the

View file

@ -53,6 +53,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- [rstudio-server](https://www.rstudio.com/products/rstudio/#rstudio-server), a browser-based version of the RStudio IDE for the R programming language. Available as [services.rstudio-server](options.html#opt-services.rstudio-server.enable).
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
## Backward Incompatibilities {#sec-release-22.05-incompatibilities}
- `pkgs.ghc` now refers to `pkgs.targetPackages.haskellPackages.ghc`.
@ -136,6 +138,10 @@ In addition to numerous new and upgraded packages, this release has the followin
[settings-style](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md)
configuration.
- `lib.assertMsg` and `lib.assertOneOf` no longer return `false` if the passed condition is `false`, `throw`ing the given error message instead (which makes the resulting error message less cluttered). This will not impact the behaviour of code using these functions as intended, namely as top-level wrapper for `assert` conditions.
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
## Other Notable Changes {#sec-release-22.05-notable-changes}
- The option [services.redis.servers](#opt-services.redis.servers) was added
@ -198,6 +204,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- The `firmwareLinuxNonfree` package has been renamed to `linux-firmware`.
- The `services.mbpfan` module was converted to a [RFC 0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) configuration.
- A new module was added for the [Starship](https://starship.rs/) shell prompt,
providing the options `programs.starship.enable` and `programs.starship.settings`.
@ -211,3 +219,5 @@ In addition to numerous new and upgraded packages, this release has the followin
- Renamed option `services.openssh.challengeResponseAuthentication` to `services.openssh.kbdInteractiveAuthentication`.
Reason is that the old name has been deprecated upstream.
Using the old option name will still work, but produce a warning.
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->

View file

@ -7,7 +7,7 @@ let
inherit (lib.modules) mkDefault mkIf;
inherit (lib.options) literalExpression mkEnableOption mkOption;
inherit (lib.strings) concatStringsSep optionalString toLower;
inherit (lib.types) addCheck attrsOf lines nullOr package path port str strMatching submodule;
inherit (lib.types) addCheck attrsOf lines nonEmptyStr nullOr package path port str strMatching submodule;
# Checks if given list of strings contains unique
# elements when compared without considering case.
@ -35,7 +35,7 @@ let
'';
};
options.server = mkOption {
type = strMatching ".+";
type = nonEmptyStr;
example = "tsmserver.company.com";
description = ''
Host/domain name or IP address of the IBM TSM server.
@ -56,7 +56,7 @@ let
'';
};
options.node = mkOption {
type = strMatching ".+";
type = nonEmptyStr;
example = "MY-TSM-NODE";
description = ''
Target node name on the IBM TSM server.
@ -144,7 +144,7 @@ let
};
config.name = mkDefault name;
# Client system-options file directives are explained here:
# https://www.ibm.com/support/knowledgecenter/SSEQVQ_8.1.8/client/c_opt_usingopts.html
# https://www.ibm.com/docs/en/spectrum-protect/8.1.13?topic=commands-processing-options
config.extraConfig =
mapAttrs (lib.trivial.const mkDefault) (
{

View file

@ -5,7 +5,7 @@ let
inherit (lib.attrsets) hasAttr;
inherit (lib.modules) mkDefault mkIf;
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.types) nullOr strMatching;
inherit (lib.types) nonEmptyStr nullOr;
options.services.tsmBackup = {
enable = mkEnableOption ''
@ -15,7 +15,7 @@ let
<option>programs.tsmClient.enable</option>
'';
command = mkOption {
type = strMatching ".+";
type = nonEmptyStr;
default = "backup";
example = "incr";
description = ''
@ -24,7 +24,7 @@ let
'';
};
servername = mkOption {
type = strMatching ".+";
type = nonEmptyStr;
example = "mainTsmServer";
description = ''
Create a systemd system service
@ -41,7 +41,7 @@ let
'';
};
autoTime = mkOption {
type = nullOr (strMatching ".+");
type = nullOr nonEmptyStr;
default = null;
example = "12:00";
description = ''
@ -87,16 +87,35 @@ in
environment.DSM_LOG = "/var/log/tsm-backup/";
# TSM needs a HOME dir to store certificates.
environment.HOME = "/var/lib/tsm-backup";
# for exit status description see
# https://www.ibm.com/support/knowledgecenter/en/SSEQVQ_8.1.8/client/c_sched_rtncode.html
serviceConfig.SuccessExitStatus = "4 8";
# The `-se` option must come after the command.
# The `-optfile` option suppresses a `dsm.opt`-not-found warning.
serviceConfig.ExecStart =
"${cfgPrg.wrappedPackage}/bin/dsmc ${cfg.command} -se='${cfg.servername}' -optfile=/dev/null";
serviceConfig.LogsDirectory = "tsm-backup";
serviceConfig.StateDirectory = "tsm-backup";
serviceConfig.StateDirectoryMode = "0750";
serviceConfig = {
# for exit status description see
# https://www.ibm.com/docs/en/spectrum-protect/8.1.13?topic=clients-client-return-codes
SuccessExitStatus = "4 8";
# The `-se` option must come after the command.
# The `-optfile` option suppresses a `dsm.opt`-not-found warning.
ExecStart =
"${cfgPrg.wrappedPackage}/bin/dsmc ${cfg.command} -se='${cfg.servername}' -optfile=/dev/null";
LogsDirectory = "tsm-backup";
StateDirectory = "tsm-backup";
StateDirectoryMode = "0750";
# systemd sandboxing
LockPersonality = true;
NoNewPrivileges = true;
PrivateDevices = true;
#PrivateTmp = true; # would break backup of {/var,}/tmp
#PrivateUsers = true; # would block backup of /home/*
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = "read-only";
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "noaccess";
ProtectSystem = "strict";
RestrictNamespaces = true;
RestrictSUIDSGID = true;
};
startAt = mkIf (cfg.autoTime!=null) cfg.autoTime;
};
};

View file

@ -5,6 +5,8 @@ with lib;
let
cfg = config.services.mbpfan;
verbose = if cfg.verbose then "v" else "";
settingsFormat = pkgs.formats.ini {};
settingsFile = settingsFormat.generate "config.conf" cfg.settings;
in {
options.services.mbpfan = {
@ -19,54 +21,6 @@ in {
'';
};
minFanSpeed = mkOption {
type = types.int;
default = 2000;
description = ''
The minimum fan speed.
'';
};
maxFanSpeed = mkOption {
type = types.int;
default = 6200;
description = ''
The maximum fan speed.
'';
};
lowTemp = mkOption {
type = types.int;
default = 63;
description = ''
The low temperature.
'';
};
highTemp = mkOption {
type = types.int;
default = 66;
description = ''
The high temperature.
'';
};
maxTemp = mkOption {
type = types.int;
default = 86;
description = ''
The maximum temperature.
'';
};
pollingInterval = mkOption {
type = types.int;
default = 7;
description = ''
The polling interval.
'';
};
verbose = mkOption {
type = types.bool;
default = false;
@ -74,23 +28,61 @@ in {
If true, sets the log level to verbose.
'';
};
settings = mkOption {
default = {};
description = "The INI configuration for Mbpfan.";
type = types.submodule {
freeformType = settingsFormat.type;
options.general.min_fan1_speed = mkOption {
type = types.int;
default = 2000;
description = "The minimum fan speed.";
};
options.general.max_fan1_speed = mkOption {
type = types.int;
default = 6199;
description = "The maximum fan speed.";
};
options.general.low_temp = mkOption {
type = types.int;
default = 55;
description = "The low temperature.";
};
options.general.high_temp = mkOption {
type = types.int;
default = 58;
description = "The high temperature.";
};
options.general.max_temp = mkOption {
type = types.int;
default = 86;
description = "The maximum temperature.";
};
options.general.polling_interval = mkOption {
type = types.int;
default = 1;
description = "The polling interval.";
};
};
};
};
imports = [
(mkRenamedOptionModule [ "services" "mbpfan" "pollingInterval" ] [ "services" "mbpfan" "settings" "general" "polling_interval" ])
(mkRenamedOptionModule [ "services" "mbpfan" "maxTemp" ] [ "services" "mbpfan" "settings" "general" "max_temp" ])
(mkRenamedOptionModule [ "services" "mbpfan" "lowTemp" ] [ "services" "mbpfan" "settings" "general" "low_temp" ])
(mkRenamedOptionModule [ "services" "mbpfan" "highTemp" ] [ "services" "mbpfan" "settings" "general" "high_temp" ])
(mkRenamedOptionModule [ "services" "mbpfan" "minFanSpeed" ] [ "services" "mbpfan" "settings" "general" "min_fan1_speed" ])
(mkRenamedOptionModule [ "services" "mbpfan" "maxFanSpeed" ] [ "services" "mbpfan" "settings" "general" "max_fan1_speed" ])
];
config = mkIf cfg.enable {
boot.kernelModules = [ "coretemp" "applesmc" ];
environment = {
etc."mbpfan.conf".text = ''
[general]
min_fan_speed = ${toString cfg.minFanSpeed}
max_fan_speed = ${toString cfg.maxFanSpeed}
low_temp = ${toString cfg.lowTemp}
high_temp = ${toString cfg.highTemp}
max_temp = ${toString cfg.maxTemp}
polling_interval = ${toString cfg.pollingInterval}
'';
systemPackages = [ cfg.package ];
};
environment.etc."mbpfan.conf".source = settingsFile;
environment.systemPackages = [ cfg.package ];
systemd.services.mbpfan = {
description = "A fan manager daemon for MacBook Pro";

File diff suppressed because it is too large Load diff

View file

@ -490,6 +490,7 @@ in
trezord = handleTest ./trezord.nix {};
trickster = handleTest ./trickster.nix {};
trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {};
tsm-client-gui = handleTest ./tsm-client-gui.nix {};
txredisapi = handleTest ./txredisapi.nix {};
tuptime = handleTest ./tuptime.nix {};
turbovnc-headless-server = handleTest ./turbovnc-headless-server.nix {};

View file

@ -0,0 +1,57 @@
# The tsm-client GUI first tries to connect to a server.
# We can't simulate a server, so we just check if
# it reports the correct connection failure error.
# After that the test persuades the GUI
# to show its main application window
# and verifies some configuration information.
import ./make-test-python.nix ({ lib, pkgs, ... }: {
name = "tsm-client";
enableOCR = true;
machine = { pkgs, ... }: {
imports = [ ./common/x11.nix ];
programs.tsmClient = {
enable = true;
package = pkgs.tsm-client-withGui;
defaultServername = "testserver";
servers.testserver = {
# 192.0.0.8 is a "dummy address" according to RFC 7600
server = "192.0.0.8";
node = "SOME-NODE";
passwdDir = "/tmp";
};
};
};
testScript = ''
machine.succeed("which dsmj") # fail early if this is missing
machine.wait_for_x()
machine.execute("DSM_LOG=/tmp dsmj -optfile=/dev/null >&2 &")
# does it report the "TCP/IP connection failure" error code?
machine.wait_for_window("IBM Spectrum Protect")
machine.wait_for_text("ANS2610S")
machine.send_key("esc")
# it asks to continue to restore a local backupset now;
# "yes" (return) leads to the main application window
machine.wait_for_text("backupset")
machine.send_key("ret")
# main window: navigate to "Connection Information"
machine.wait_for_text("Welcome")
machine.send_key("alt-f") # "File" menu
machine.send_key("c") # "Connection Information"
# "Connection Information" dialog box
machine.wait_for_window("Connection Information")
machine.wait_for_text("SOME-NODE")
machine.wait_for_text("${pkgs.tsm-client.passthru.unwrapped.version}")
machine.shutdown()
'';
meta.maintainers = [ lib.maintainers.yarny ];
})

View file

@ -1,40 +1,46 @@
{ lib, stdenv, fetchFromGitHub, pkg-config, fetchzip
, libjack2, alsa-lib, freetype, libX11, libXrandr, libXinerama, libXext, libXcursor
, libGL, python3, ncurses, libusb1
, gtk3, webkitgtk, curl, xvfb-run, makeWrapper
# "Debug", or "Release"
, buildType ? "Release"
{ lib
, stdenv
, fetchFromGitHub
, fetchzip
, cmake
, pkg-config
, ninja
, makeWrapper
, libjack2
, alsa-lib
, alsa-tools
, freetype
, libusb1
, libX11
, libXrandr
, libXinerama
, libXext
, libXcursor
, libXScrnSaver
, libGL
, libxcb
, xcbutil
, libxkbcommon
, xcbutilkeysyms
, xcb-util-cursor
, gtk3
, webkitgtk
, python3
, curl
, pcre
, mount
, gnome
, Cocoa
, WebKit
, CoreServices
, CoreAudioKit
# It is not allowed to distribute binaries with the VST2 SDK plugin without a license
# (the author of Bespoke has such a licence but not Nix). VST3 should work out of the box.
# Read more in https://github.com/NixOS/nixpkgs/issues/145607
, enableVST2 ? false
}:
let
projucer = stdenv.mkDerivation rec {
pname = "projucer";
version = "5.4.7";
src = fetchFromGitHub {
owner = "juce-framework";
repo = "JUCE";
rev = version;
sha256= "0qpiqfwwpcghk7ij6w4vy9ywr3ryg7ppg77bmd7783kxg6zbhj8h";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
freetype libX11 libXrandr libXinerama libXext gtk3 webkitgtk
libjack2 curl
];
preBuild = ''
cd extras/Projucer/Builds/LinuxMakefile
'';
makeFlags = [ "CONFIG=${buildType}" ];
enableParallelBuilding = true;
installPhase = ''
mkdir -p $out/bin
cp -a build/Projucer $out/bin/Projucer
'';
};
# equal to vst-sdk in ../oxefmsynth/default.nix
vst-sdk = stdenv.mkDerivation rec {
name = "vstsdk3610_11_06_2018_build_37";
@ -50,70 +56,92 @@ let
in
stdenv.mkDerivation rec {
pname = "bespokesynth";
version = "1.0.0";
version = "1.1.0";
src = fetchFromGitHub {
owner = "awwbees";
owner = "BespokeSynth";
repo = pname;
rev = "v${version}";
sha256 = "04b2m40jszphslkd4850jcb8qwls392lwy3lc6vlj01h4izvapqk";
sha256 = "sha256-PN0Q6/gI1PeMaF/8EZFGJdLR8JVHQZfWunAhOIQxkHw=";
fetchSubmodules = true;
};
configurePhase = ''
runHook preConfigure
cmakeBuildType = "Release";
export HOME=$(mktemp -d)
xvfb-run sh -e <<EOF
${projucer}/bin/Projucer --set-global-search-path linux defaultJuceModulePath ${projucer.src}/modules
${projucer}/bin/Projucer --resave BespokeSynth.jucer
EOF
cmakeFlags = lib.optionals enableVST2 [ "-DBESPOKE_VST2_SDK_LOCATION=${vst-sdk}/VST2_SDK" ];
runHook postConfigure
'';
CFLAGS = "-I${vst-sdk}/VST2_SDK";
nativeBuildInputs = [ python3 makeWrapper cmake pkg-config ninja ];
nativeBuildInputs = [ xvfb-run pkg-config python3 makeWrapper ];
buildInputs = [
libX11 libXrandr libXinerama libXext libXcursor freetype libGL
ncurses libusb1
alsa-lib libjack2
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
# List obtained in https://github.com/BespokeSynth/BespokeSynth/blob/main/azure-pipelines.yml
libX11
libXrandr
libXinerama
libXext
libXcursor
libXScrnSaver
curl
gtk3
webkitgtk
freetype
libGL
libusb1
alsa-lib
libjack2
gnome.zenity
alsa-tools
libxcb
xcbutil
libxkbcommon
xcbutilkeysyms
xcb-util-cursor
pcre
mount
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
Cocoa
WebKit
CoreServices
CoreAudioKit
];
preBuild = ''
cd Builds/LinuxMakefile
'';
makeFlags = [ "CONFIG=${buildType}" ];
enableParallelBuilding = true;
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin (toString [
# Fails to find fp.h on its own
"-isystem ${CoreServices}/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/CarbonCore.framework/Versions/Current/Headers/"
]);
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share/bespokesynth $out/share/applications $out/share/icons/hicolor/512x512/apps
cp build/BespokeSynth $out/bin/
cp -ar ../MacOSX/build/Release/resource $out/share/bespokesynth/
wrapProgram $out/bin/BespokeSynth \
--run "cd $out/share/bespokesynth"
mkdir -p $out/share/applications/ $out/share/icons/hicolor/512x512/apps/
cp ../../bespoke_icon.png $out/share/icons/hicolor/512x512/apps/
substitute ../../BespokeSynth.desktop $out/share/applications/BespokseSynth.desktop \
--replace "/usr/bin/" ""
runHook postInstall
'';
postInstall =
if stdenv.hostPlatform.isDarwin then ''
mkdir -p $out/{Applications,bin}
mv Source/BespokeSynth_artefacts/${cmakeBuildType}/BespokeSynth.app $out/Applications/
# Symlinking confuses the resource finding about the actual location of the binary
# Resources are looked up relative to the executed file's location
makeWrapper $out/{Applications/BespokeSynth.app/Contents/MacOS,bin}/BespokeSynth
'' else ''
# Ensure zenity is available, or it won't be able to open new files.
# Ensure the python used for compilation is the same as the python used at run-time.
# jedi is also required for auto-completion.
# These X11 libs get dlopen'd, they cause visual bugs when unavailable.
wrapProgram $out/bin/BespokeSynth \
--prefix PATH : '${lib.makeBinPath [
gnome.zenity
(python3.withPackages (ps: with ps; [ jedi ]))
]}' \
--prefix LD_LIBRARY_PATH : '${lib.makeLibraryPath [
libXrandr
libXinerama
libXcursor
libXScrnSaver
]}'
'';
meta = with lib; {
description = "Software modular synth with controllers support, scripting and VST";
description =
"Software modular synth with controllers support, scripting and VST";
homepage = "https://github.com/awwbees/BespokeSynth";
license = with licenses; [
gpl3Plus
# This package is unfree and not distributable due to the license of VST2.
# see #145607
unfree
];
maintainers = with maintainers; [ astro ];
] ++ lib.optional enableVST2 unfree;
maintainers = with maintainers; [ astro tobiasBora OPNA2608 ];
platforms = platforms.all;
};
}

View file

@ -22,7 +22,7 @@
, sanitizeAddress ? false
, sanitizeThreads ? false
, with3d ? true
, withI18n ? false
, withI18n ? true
, withPCM ? true # Plugin and Content Manager
, srcs ? { }
}:

View file

@ -71,7 +71,7 @@ let
"pki"
];
in concatStringsSep "\n "
(map (file: "--ro-bind-try /etc/${file} /etc/${file}") files);
(map (file: "--ro-bind-try $(${coreutils}/bin/readlink -f /etc/${file}) /etc/${file}") files);
# Create this on the fly instead of linking from /nix
# The container might have to modify it and re-run ldconfig if there are

View file

@ -1,26 +1,67 @@
{ lib, stdenv, fetchFromGitHub, libxml2, gdk-pixbuf, librsvg, gtk-engine-murrine }:
{ lib
, stdenv
, fetchFromGitHub
, gdk-pixbuf
, gtk-engine-murrine
, jdupes
, librsvg
, libxml2
, buttonVariants ? [] # default to all
, colorVariants ? [] # default to all
, opacityVariants ? [] # default to all
, sizeVariants ? [] # default to all
}:
stdenv.mkDerivation rec {
let
pname = "sierra-gtk-theme";
version = "2019-12-16";
in
lib.checkListOfEnum "${pname}: button variants" [ "standard" "alt" ] buttonVariants
lib.checkListOfEnum "${pname}: color variants" [ "light" "dark" ] colorVariants
lib.checkListOfEnum "${pname}: opacity variants" [ "standard" "solid" ] opacityVariants
lib.checkListOfEnum "${pname}: size variants" [ "standard" "compact" ] sizeVariants
stdenv.mkDerivation {
inherit pname;
version = "unstable-2021-05-24";
src = fetchFromGitHub {
owner = "vinceliuice";
repo = pname;
rev = version;
sha256 = "14hlz8kbrjypyd6wyrwmnj2wm9w3kc8y00ms35ard7x8lmhs56hr";
rev = "05899001c4fc2fec87c4d222cb3997c414e0affd";
sha256 = "174l5mryc34ma1r42pk6572c6i9hmzr9vj1a6w06nqz5qcfm1hds";
};
nativeBuildInputs = [ libxml2 ];
nativeBuildInputs = [
jdupes
libxml2
];
buildInputs = [ gdk-pixbuf librsvg ];
buildInputs = [
gdk-pixbuf
librsvg
];
propagatedUserEnvPkgs = [ gtk-engine-murrine ];
propagatedUserEnvPkgs = [
gtk-engine-murrine
];
installPhase = ''
patchShebangs .
runHook preInstall
patchShebangs install.sh
mkdir -p $out/share/themes
name= ./install.sh --dest $out/share/themes
name= ./install.sh --dest $out/share/themes \
${lib.optionalString (buttonVariants != []) "--alt " + builtins.toString buttonVariants} \
${lib.optionalString (colorVariants != []) "--color " + builtins.toString colorVariants} \
${lib.optionalString (opacityVariants != []) "--opacity " + builtins.toString opacityVariants} \
${lib.optionalString (sizeVariants != []) "--flat " + builtins.toString sizeVariants}
# Replace duplicate files with hardlinks to the first file in each
# set of duplicates, reducing the installed size in about 79%
jdupes -L -r $out/share
runHook postInstall
'';
meta = with lib; {

View file

@ -0,0 +1,47 @@
{ lib
, buildPythonPackage
, fetchPypi
, flask
, pytestCheckHook
, pygments
}:
buildPythonPackage rec {
pname = "flask-gravatar";
version = "0.5.0";
src = fetchPypi {
pname = "Flask-Gravatar";
inherit version;
sha256 = "YGZfMcLGEokdto/4Aek+06CIHGyOw0arxk0qmSP1YuE=";
};
postPatch = ''
sed -i setup.py \
-e "s|tests_require=tests_require,||g" \
-e "s|extras_require=extras_require,||g" \
-e "s|setup_requires=setup_requires,||g"
# pep8 is deprecated and cov not needed
substituteInPlace pytest.ini \
--replace "--pep8" "" \
--replace "--cov=flask_gravatar --cov-report=term-missing" ""
'';
propagatedBuildInputs = [
flask
];
checkInputs = [
pytestCheckHook
pygments
];
pythonImportsCheck = [ "flask_gravatar" ];
meta = with lib; {
homepage = "https://github.com/zzzsochi/Flask-Gravatar";
description = "Small and simple integration of gravatar into flask";
license = licenses.bsd3;
maintainers = with maintainers; [ gador ];
};
}

View file

@ -0,0 +1,40 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, flask
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "flask-paranoid";
version = "0.2";
src = fetchFromGitHub {
owner = "miguelgrinberg";
repo = pname;
rev = "v${version}";
sha256 = "0WWc/ktAOuTk4A75xI1jCj/aef2+1TjLKBA9+PRfJO0=";
};
postPatch = ''
# tests have a typo in one of the assertions
substituteInPlace tests/test_paranoid.py --replace "01-Jan-1970" "01 Jan 1970"
'';
propagatedBuildInputs = [
flask
];
checkInputs = [
pytestCheckHook
];
pythonImportsCheck = [ "flask_paranoid" ];
meta = with lib; {
homepage = "https://github.com/miguelgrinberg/flask-paranoid/";
description = "Simple user session protection";
license = licenses.mit;
maintainers = with maintainers; [ gador ];
};
}

View file

@ -0,0 +1,76 @@
{ lib
, buildPythonPackage
, fetchPypi
, flask
, blinker
, setuptools
, itsdangerous
, flask_principal
, passlib
, email_validator
, flask_wtf
, flask_login
, pytestCheckHook
, flask_mail
, sqlalchemy
, flask_sqlalchemy
, flask-mongoengine
, peewee
, pony
, zxcvbn
, mongoengine
, cryptography
, pyqrcode
, phonenumbers
, bleach
, mongomock
}:
buildPythonPackage rec {
pname = "flask-security-too";
version = "4.1.2";
src = fetchPypi {
pname = "Flask-Security-Too";
inherit version;
sha256 = "16ws5n08vm7wsa2f7lrkxvc7jl3ah1xfylhhyzb4vvqmlk7x9hw8";
};
propagatedBuildInputs = [
flask
flask_login
flask_principal
flask_wtf
email_validator
itsdangerous
passlib
blinker
setuptools
];
checkInputs = [
pytestCheckHook
flask_mail
sqlalchemy
flask_sqlalchemy
flask-mongoengine
peewee
pony
zxcvbn
mongoengine
cryptography
pyqrcode
phonenumbers
bleach
mongomock
];
pythonImportsCheck = [ "flask_security" ];
meta = with lib; {
homepage = "https://pypi.org/project/Flask-Security-Too/";
description = "Simple security for Flask apps (fork)";
license = licenses.mit;
maintainers = with maintainers; [ gador ];
};
}

View file

@ -0,0 +1,26 @@
{ lib
, buildPythonPackage
, fetchPypi
}:
buildPythonPackage rec {
pname = "httpagentparser";
version = "1.9.1";
src = fetchPypi {
inherit pname version;
sha256 = "73Y9MZk912GCWs7myLNL4yuVzxZ10cc8PNNfnlKDGyY=";
};
# PyPi version does not include test directory
doCheck = false;
pythonImportsCheck = [ "httpagentparser" ];
meta = with lib; {
homepage = "https://github.com/shon/httpagentparser";
description = "Extracts OS Browser etc information from http user agent string";
license = licenses.mit;
maintainers = with maintainers; [ gador ];
};
}

View file

@ -0,0 +1,27 @@
{ stdenv
, lib
, buildPythonPackage
, fetchPypi
, attrs
}:
buildPythonPackage rec {
pname = "matrix_common";
version = "1.0.0";
format = "pyproject";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-ZmiKRoJ8hv1USuJBDzV2U1uIFt2lRxmT+iAOqOShJK4=";
};
propagatedBuildInputs = [ attrs ];
pythonImportsCheck = [ "matrix_common" ];
meta = with lib; {
description = "Common utilities for Synapse, Sydent and Sygnal";
homepage = "https://github.com/matrix-org/matrix-python-common";
license = licenses.asl20;
maintainers = with maintainers; [ sumnerevans ];
};
}

View file

@ -0,0 +1,40 @@
{ lib
, buildPythonPackage
, fetchPypi
, pbr
, sentinels
, six
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "mongomock";
version = "3.23.0";
src = fetchPypi {
inherit pname version;
sha256 = "1pdh4pj5n6dsaqy98q40wig5y6imfs1p043cgkaaw8f2hxy5x56r";
};
nativeBuildInputs = [
pbr
];
propagatedBuildInputs = [
sentinels
six
];
checkInputs = [
pytestCheckHook
];
pythonImportsCheck = [ "mongomock" ];
meta = with lib; {
homepage = "https://github.com/mongomock/mongomock";
description = "Fake pymongo stub for testing simple MongoDB-dependent code";
license = licenses.bsd3;
maintainers = with maintainers; [ gador ];
};
}

View file

@ -0,0 +1,36 @@
{ lib
, buildPythonPackage
, pythonOlder
, fetchPypi
, setuptools
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "sentinels";
version = "1.0.0";
disabled = pythonOlder "3.5";
src = fetchPypi {
inherit pname version;
sha256 = "1cglkxph47pki4db4kjx5g4ikxp2milqdlcjgqwmx4p1gx6p1q3v";
};
propagatedBuildInputs = [
setuptools
];
checkInputs = [
pytestCheckHook
];
pythonImportsCheck = [ "sentinels" ];
meta = with lib; {
homepage = "https://github.com/vmalloc/sentinels/";
description = "Various objects to denote special meanings in python";
license = licenses.bsd3;
maintainers = with maintainers; [ gador ];
};
}

View file

@ -0,0 +1,23 @@
{ lib
, buildPythonPackage
, fetchPypi
}:
buildPythonPackage rec {
pname = "speaklater3";
version = "1.4";
src = fetchPypi {
inherit pname version;
sha256 = "ySYdS2taMEZyMS0esImb4Cj6yRdgGQqA/szTHTo7UEI=";
};
pythonImportsCheck = [ "speaklater" ];
meta = with lib; {
description = "Implements a lazy string for python useful for use with gettext";
homepage = "https://github.com/mitsuhiko/speaklater";
license = licenses.bsd0;
maintainers = with maintainers; [ gador ];
};
}

View file

@ -22,13 +22,13 @@ with py.pkgs;
buildPythonApplication rec {
pname = "checkov";
version = "2.0.712";
version = "2.0.727";
src = fetchFromGitHub {
owner = "bridgecrewio";
repo = pname;
rev = version;
hash = "sha256-iUplSd4/OcJtfby2bn7b6GwCbXnBMqUSuLjkkh+7W9Y=";
hash = "sha256-hegbkmM8ZN6zO2iANGRr2QRW3ErdtwYaTo618uELev0=";
};
nativeBuildInputs = with py.pkgs; [
@ -81,6 +81,7 @@ buildPythonApplication rec {
postPatch = ''
substituteInPlace setup.py \
--replace "cyclonedx-python-lib>=0.11.0,<1.0.0" "cyclonedx-python-lib>=0.11.0" \
--replace "jsonschema==3.0.2" "jsonschema>=3.0.2"
'';

View file

@ -11,13 +11,13 @@
mkDerivation rec {
pname = "cutter";
version = "2.0.4";
version = "2.0.5";
src = fetchFromGitHub {
owner = "rizinorg";
repo = "cutter";
rev = "v${version}";
sha256 = "sha256-Z5mqLkeA7AZnvKdpdRzaYfNMsGUI7i7wPTXVyIRYwxI=";
sha256 = "sha256-ljws9S7ZxZK/Ou8jgGSoR++vtzFTEBywHMhCC/UOLEs=";
fetchSubmodules = true;
};

View file

@ -23,11 +23,11 @@
stdenv.mkDerivation rec {
pname = "rizin";
version = "0.3.2";
version = "0.3.4";
src = fetchurl {
url = "https://github.com/rizinorg/rizin/releases/download/v${version}/rizin-src-v${version}.tar.xz";
sha256 = "sha256-T65gm1tfRD7dZSL8qZKMTAbQ65Lx/ecidFc9T1b7cig=";
sha256 = "sha256-7qSbOWOHwJ0ZcFqrAqYXzbFWgvymfxAf8rJ+75SnEOk=";
};
mesonFlags = [

View file

@ -1,100 +0,0 @@
{ lib
, stdenv
, openjdk8
, buildFHSUserEnv
, fetchzip
, fetchurl
, copyDesktopItems
, makeDesktopItem
}:
let
version = "2.839";
src = stdenv.mkDerivation {
pname = "tlauncher";
inherit version;
src = fetchzip {
name = "tlauncher.zip";
url = "https://dl2.tlauncher.org/f.php?f=files%2FTLauncher-${version}.zip";
sha256 = "sha256-KphpNuTucpuJhXspKxqDyYQN6vbpY0XCB3GAd5YCGbc=";
stripRoot = false;
};
installPhase = ''
cp $src/*.jar $out
'';
};
fhs = buildFHSUserEnv {
name = "tlauncher";
runScript = ''
${openjdk8}/bin/java -jar "${src}" "$@"
'';
targetPkgs = pkgs: with pkgs; [
alsa-lib
cpio
cups
file
fontconfig
freetype
giflib
glib
gnome2.GConf
gnome2.gnome_vfs
gtk2
libjpeg
libGL
openjdk8-bootstrap
perl
which
xorg.libICE
xorg.libX11
xorg.libXcursor
xorg.libXext
xorg.libXi
xorg.libXinerama
xorg.libXrandr
xorg.xrandr
xorg.libXrender
xorg.libXt
xorg.libXtst
xorg.libXtst
xorg.libXxf86vm
zip
zlib
];
};
desktopItem = makeDesktopItem {
name = "tlauncher";
exec = "tlauncher";
icon = fetchurl {
url = "https://styles.redditmedia.com/t5_2o8oax/styles/communityIcon_gu5r5v8eaiq51.png";
sha256 = "sha256-ma8zxaUxdAw5VYfOK8i8s1kjwMgs80Eomq43Cb0HZWw=";
};
comment = "Minecraft launcher";
desktopName = "TLauncher";
categories = "Game;";
};
in stdenv.mkDerivation {
pname = "tlauncher-wrapper";
inherit version;
dontUnpack = true;
installPhase = ''
runHook preInstall
mkdir $out/{bin,share/applications} -p
install ${fhs}/bin/tlauncher $out/bin
runHook postInstall
'';
nativeBuildInputs = [ copyDesktopItems ];
desktopItems = [ desktopItem ];
meta = with lib; {
description = "Minecraft launcher that already deal with forge, optifine and mods";
homepage = "https://tlauncher.org/";
maintainers = with maintainers; [ lucasew ];
license = licenses.unfree;
platforms = openjdk8.meta.platforms;
};
}

View file

@ -11,11 +11,11 @@ in
with python3.pkgs;
buildPythonApplication rec {
pname = "matrix-synapse";
version = "1.49.2";
version = "1.50.1";
src = fetchPypi {
inherit pname version;
sha256 = "7b795ecfc36e3f57eb7cffbc5ef9da1745b777536416c31509b3e6220c39ca4d";
sha256 = "sha256-fdO+HJ1+fk+s65jLkPDiG+Ei89x5Fbkh9BUUFQ3NJ3M=";
};
buildInputs = [ openssl ];
@ -31,6 +31,7 @@ buildPythonApplication rec {
jinja2
jsonschema
lxml
matrix-common
msgpack
netaddr
phonenumbers

View file

@ -1,15 +1,20 @@
{ lib
, callPackage
, nixosTests
, stdenv
, autoPatchelfHook
, buildEnv
, fetchurl
, makeWrapper
, procps
, autoPatchelfHook
, rpmextract
, openssl
, zlib
# optional packages that enable certain features
, acl ? null # EXT2/EXT3/XFS ACL support
, jdk8 ? null # Java GUI
, lvm2 ? null # LVM image backup and restore functions
, lvm2 # LVM image backup and restore functions (optional)
, acl # EXT2/EXT3/XFS ACL support (optional)
, gnugrep
, procps
, jdk8 # Java GUI (needed for `enableGui`)
, buildEnv
, makeWrapper
, enableGui ? false # enables Java GUI `dsmj`
# path to `dsm.sys` configuration files
, dsmSysCli ? "/etc/tsm-client/cli.dsm.sys"
, dsmSysApi ? "/etc/tsm-client/api.dsm.sys"
@ -18,7 +23,7 @@
# For an explanation of optional packages
# (features provided by them, version limits), see
# https://www-01.ibm.com/support/docview.wss?uid=swg21052223#Version%208.1
# https://www.ibm.com/support/pages/node/660813#Version%208.1
# IBM Tivoli Storage Manager Client uses a system-wide
@ -40,22 +45,33 @@
# point to this derivations `/dsmi_dir` directory symlink.
# Other environment variables might be necessary,
# depending on local configuration or usage; see:
# https://www.ibm.com/support/knowledgecenter/en/SSEQVQ_8.1.8/client/c_cfg_sapiunix.html
# https://www.ibm.com/docs/en/spectrum-protect/8.1.13?topic=solaris-set-api-environment-variables
# The newest version of TSM client should be discoverable
# by going the the `downloadPage` (see `meta` below),
# there to "Client Latest Downloads",
# "IBM Spectrum Protect Client Downloads and READMEs",
# then to "Linux x86_64 Ubuntu client" (as of 2019-07-15).
# The newest version of TSM client should be discoverable by
# going to the `downloadPage` (see `meta` below).
# Find the "Backup-archive client" table on that page.
# Look for "Download Documents" of the latest release.
# Here, two links must be checked:
# * "IBM Spectrum Protect Client ... Downloads and READMEs":
# In the table at the page's bottom,
# check the date of the "Linux x86_64 client"
# * "IBM Spectrum Protect BA client ... interim fix downloads"
# Look for the "Linux x86_64 client" rows
# in the table # at the bottom of each page.
# Follow the "HTTPS" link of the row with the latest date stamp.
# In the directory listing to show up, pick the big `.tar` file.
#
# (as of 2021-12-18)
let
meta = {
homepage = "https://www.ibm.com/us-en/marketplace/data-protection-and-recovery";
downloadPage = "https://www-01.ibm.com/support/docview.wss?uid=swg21239415";
homepage = "https://www.ibm.com/products/data-protection-and-recovery";
downloadPage = "https://www.ibm.com/support/pages/ibm-spectrum-protect-downloads-latest-fix-packs-and-interim-fixes";
platforms = [ "x86_64-linux" ];
mainProgram = "dsmc";
license = lib.licenses.unfree;
maintainers = [ lib.maintainers.yarny ];
description = "IBM Spectrum Protect (Tivoli Storage Manager) CLI and API";
@ -74,34 +90,53 @@ let
'';
};
passthru.tests = {
test-cli = callPackage ./test-cli.nix {};
test-gui = nixosTests.tsm-client-gui;
};
mkSrcUrl = version:
let
major = lib.versions.major version;
minor = lib.versions.minor version;
patch = lib.versions.patch version;
fixup = lib.lists.elemAt (lib.versions.splitVersion version) 3;
in
"https://public.dhe.ibm.com/storage/tivoli-storage-management/${if fixup=="0" then "maintenance" else "patches"}/client/v${major}r${minor}/Linux/LinuxX86/BA/v${major}${minor}${patch}/${version}-TIV-TSMBAC-LinuxX86.tar";
unwrapped = stdenv.mkDerivation rec {
name = "tsm-client-${version}-unwrapped";
version = "8.1.8.0";
version = "8.1.13.3";
src = fetchurl {
url = "ftp://public.dhe.ibm.com/storage/tivoli-storage-management/maintenance/client/v8r1/Linux/LinuxX86_DEB/BA/v818/${version}-TIV-TSMBAC-LinuxX86_DEB.tar";
sha256 = "0c1d0jm0i7qjd314nhj2vj8fs7sncm1x2n4d6dg4049jniyvjhpk";
url = mkSrcUrl version;
sha256 = "1dwczf236drdaf4jcfzz5154vdwvxf5zraxhrhiddl6n80hnvbcd";
};
inherit meta;
inherit meta passthru;
nativeBuildInputs = [
autoPatchelfHook
rpmextract
];
buildInputs = [
openssl
stdenv.cc.cc
zlib
];
runtimeDependencies = [
lvm2
(lib.attrsets.getLib lvm2)
];
sourceRoot = ".";
postUnpack = ''
for debfile in *.deb
do
ar -x "$debfile"
tar --xz --extract --file=data.tar.xz
rm data.tar.xz
done
rpmextract TIVsm-API64.x86_64.rpm
rpmextract TIVsm-APIcit.x86_64.rpm
rpmextract TIVsm-BA.x86_64.rpm
rpmextract TIVsm-BAcit.x86_64.rpm
rpmextract TIVsm-BAhdw.x86_64.rpm
rpmextract TIVsm-JBB.x86_64.rpm
# use globbing so that version updates don't break the build:
rpmextract gskcrypt64-*.linux.x86_64.rpm
rpmextract gskssl64-*.linux.x86_64.rpm
'';
installPhase = ''
@ -113,7 +148,7 @@ let
# Fix relative symlinks after `/usr` was moved up one level
preFixup = ''
for link in $out/lib/* $out/bin/*
for link in $out/lib{,64}/* $out/bin/*
do
target=$(readlink "$link")
if [ "$(cut -b -6 <<< "$target")" != "../../" ]
@ -126,14 +161,19 @@ let
'';
};
binPath = lib.makeBinPath ([ acl gnugrep procps ]
++ lib.optional enableGui jdk8);
in
buildEnv {
name = "tsm-client-${unwrapped.version}";
inherit meta;
passthru = { inherit unwrapped; };
meta = meta // lib.attrsets.optionalAttrs enableGui {
mainProgram = "dsmj";
};
passthru = passthru // { inherit unwrapped; };
paths = [ unwrapped ];
buildInputs = [ makeWrapper ];
nativeBuildInputs = [ makeWrapper ];
pathsToLink = [
"/"
"/bin"
@ -144,7 +184,7 @@ buildEnv {
# to the so-called "installation directories"
# * Add symlinks to the "installation directories"
# that point to the `dsm.sys` configuration files
# * Drop the Java GUI executable unless `jdk` is present
# * Drop the Java GUI executable unless `enableGui` is set
# * Create wrappers for the command-line interface to
# prepare `PATH` and `DSM_DIR` environment variables
postBuild = ''
@ -152,13 +192,13 @@ buildEnv {
ln --symbolic --no-target-directory opt/tivoli/tsm/client/api/bin64 $out/dsmi_dir
ln --symbolic --no-target-directory "${dsmSysCli}" $out/dsm_dir/dsm.sys
ln --symbolic --no-target-directory "${dsmSysApi}" $out/dsmi_dir/dsm.sys
${lib.optionalString (jdk8==null) "rm $out/bin/dsmj"}
${lib.optionalString (!enableGui) "rm $out/bin/dsmj"}
for bin in $out/bin/*
do
target=$(readlink "$bin")
rm "$bin"
makeWrapper "$target" "$bin" \
--prefix PATH : "$out/dsm_dir:${lib.strings.makeBinPath [ procps acl jdk8 ]}" \
--prefix PATH : "$out/dsm_dir:${binPath}" \
--set DSM_DIR $out/dsm_dir
done
'';

View file

@ -0,0 +1,58 @@
{ lib
, writeText
, runCommand
, tsm-client
}:
# Let the client try to connect to a server.
# We can't simulate a server, so there's no more to test.
let
# 192.0.0.8 is a "dummy address" according to RFC 7600
dsmSysCli = writeText "cli.dsm.sys" ''
defaultserver testserver
server testserver
commmethod v6tcpip
tcpserveraddress 192.0.0.8
nodename ARBITRARYNODENAME
'';
tsm-client_ = tsm-client.override { inherit dsmSysCli; };
env.nativeBuildInputs = [ tsm-client_ ];
versionString =
let
inherit (tsm-client_.passthru.unwrapped) version;
major = lib.versions.major version;
minor = lib.versions.minor version;
patch = lib.versions.patch version;
fixup = lib.lists.elemAt (lib.versions.splitVersion version) 3;
in
"Client Version ${major}, Release ${minor}, Level ${patch}.${fixup}";
in
runCommand "${tsm-client.name}-test-cli" env ''
set -o nounset
set -o pipefail
export DSM_LOG=$(mktemp -d ./dsm_log.XXXXXXXXXXX)
{ dsmc -optfile=/dev/null || true; } | tee dsmc-stdout
# does it report the correct version?
grep --fixed-strings '${versionString}' dsmc-stdout
# does it use the provided dsm.sys config file?
# if it does, it states the node's name
grep ARBITRARYNODENAME dsmc-stdout
# does it try (and fail) to connect to the server?
# if it does, it reports the "TCP/IP connection failure" error code
grep ANS1017E dsmc-stdout
grep ANS1017E $DSM_LOG/dsmerror.log
touch $out
''

View file

@ -3,12 +3,12 @@
stdenv.mkDerivation rec {
pname = "nncp";
version = "8.0.2";
version = "8.1.0";
outputs = [ "out" "doc" "info" ];
src = fetchurl {
url = "http://www.nncpgo.org/download/${pname}-${version}.tar.xz";
sha256 = "sha256-hMb7bAdk3xFcUe5CTu9LnIR3VSJDUKbMSE86s8d5udM=";
sha256 = "sha256-d3U233dedtZrBWRdb0QElNOd/L1+Ut4CWvkZo5TPU+w=";
};
nativeBuildInputs = [ go redo-apenwarr ];

View file

@ -5,14 +5,14 @@
python3Packages.buildPythonApplication rec {
pname = "pferd";
version = "3.2.0";
version = "3.3.1";
format = "pyproject";
src = fetchFromGitHub {
owner = "Garmelon";
repo = "PFERD";
rev = "v${version}";
sha256 = "0r75a128r8ghrccc1flmpxblfrab5kg6fypzrlfmv2aqhkqg1brb";
sha256 = "162s966kmpngmp0h55x185qxsy96q2kxz2dd8w0zyh0n2hbap3lh";
};
propagatedBuildInputs = with python3Packages; [

View file

@ -12,20 +12,20 @@
rustPlatform.buildRustPackage rec {
pname = "mdcat";
version = "0.25.0";
version = "0.25.1";
src = fetchFromGitHub {
owner = "lunaryorn";
repo = pname;
rev = "mdcat-${version}";
sha256 = "sha256-wrtvVFOSqpNBWLRGPL+08WBS4ltQyZwRE3/dqqT6IXg=";
sha256 = "sha256-deG2VjyjFs0LFeTXfPYy3zzjj0rpVjxE0DhkpD5PzSQ=";
};
nativeBuildInputs = [ pkg-config asciidoctor installShellFiles ];
buildInputs = [ openssl ]
++ lib.optional stdenv.isDarwin Security;
cargoSha256 = "sha256-9I6/lt5VXfZp2/W6EoXtagcNj2kfxB5ZT2GkWgsUyM8=";
cargoSha256 = "sha256-bPGSdXooBZMye3yj00f3rWIiW4wfg2B4meH44hpkXTY=";
checkInputs = [ ansi2html ];
# Skip tests that use the network and that include files.

View file

@ -782,6 +782,7 @@ mapAliases ({
pgtap = postgresqlPackages.pgtap;
plv8 = postgresqlPackages.plv8;
timescaledb = postgresqlPackages.timescaledb;
tlauncher = throw "tlauncher has been removed because there questionable practices and legality concerns";
tsearch_extras = postgresqlPackages.tsearch_extras;
cstore_fdw = postgresqlPackages.cstore_fdw;
pg_hll = postgresqlPackages.pg_hll;

View file

@ -4936,8 +4936,8 @@ with pkgs;
timeline = callPackage ../applications/office/timeline { };
tsm-client = callPackage ../tools/backup/tsm-client { jdk8 = null; };
tsm-client-withGui = callPackage ../tools/backup/tsm-client { };
tsm-client = callPackage ../tools/backup/tsm-client { };
tsm-client-withGui = callPackage ../tools/backup/tsm-client { enableGui = true; };
tracker = callPackage ../development/libraries/tracker { };
@ -24467,7 +24467,13 @@ with pkgs;
berry = callPackage ../applications/window-managers/berry { };
bespokesynth = callPackage ../applications/audio/bespokesynth { };
bespokesynth = callPackage ../applications/audio/bespokesynth {
inherit (darwin.apple_sdk.frameworks) Cocoa WebKit CoreServices CoreAudioKit;
};
bespokesynth-with-vst2 = bespokesynth.override {
enableVST2 = true;
};
bevelbar = callPackage ../applications/window-managers/bevelbar { };
@ -30949,8 +30955,6 @@ with pkgs;
portmod = callPackage ../games/portmod { };
tlauncher = callPackage ../games/tlauncher { };
tr-patcher = callPackage ../games/tr-patcher { };
tes3cmd = callPackage ../games/tes3cmd { };

View file

@ -2888,6 +2888,8 @@ in {
flask_elastic = callPackage ../development/python-modules/flask-elastic { };
flask-gravatar = callPackage ../development/python-modules/flask-gravatar { };
flask-httpauth = callPackage ../development/python-modules/flask-httpauth { };
flask-jwt-extended = callPackage ../development/python-modules/flask-jwt-extended { };
@ -2908,6 +2910,8 @@ in {
flask-paginate = callPackage ../development/python-modules/flask-paginate { };
flask-paranoid = callPackage ../development/python-modules/flask-paranoid { };
flask_principal = callPackage ../development/python-modules/flask-principal { };
flask-pymongo = callPackage ../development/python-modules/Flask-PyMongo { };
@ -2926,6 +2930,8 @@ in {
flask-session = callPackage ../development/python-modules/flask-session { };
flask-security-too = callPackage ../development/python-modules/flask-security-too { };
flask-silk = callPackage ../development/python-modules/flask-silk { };
flask-socketio = callPackage ../development/python-modules/flask-socketio { };
@ -3731,6 +3737,8 @@ in {
httmock = callPackage ../development/python-modules/httmock { };
httpagentparser = callPackage ../development/python-modules/httpagentparser { };
httpauth = callPackage ../development/python-modules/httpauth { };
httpbin = callPackage ../development/python-modules/httpbin { };
@ -4869,6 +4877,8 @@ in {
matrix-client = callPackage ../development/python-modules/matrix-client { };
matrix-common = callPackage ../development/python-modules/matrix-common { };
matrix-nio = callPackage ../development/python-modules/matrix-nio { };
mattermostdriver = callPackage ../development/python-modules/mattermostdriver { };
@ -5062,6 +5072,8 @@ in {
mohawk = callPackage ../development/python-modules/mohawk { };
mongomock = callPackage ../development/python-modules/mongomock { };
mongodict = callPackage ../development/python-modules/mongodict { };
mongoengine = callPackage ../development/python-modules/mongoengine { };
@ -8841,6 +8853,8 @@ in {
sentinel = callPackage ../development/python-modules/sentinel { };
sentinels = callPackage ../development/python-modules/sentinels { };
sentry-sdk = callPackage ../development/python-modules/sentry-sdk { };
sepaxml = callPackage ../development/python-modules/sepaxml { };
@ -9158,6 +9172,8 @@ in {
speaklater = callPackage ../development/python-modules/speaklater { };
speaklater3 = callPackage ../development/python-modules/speaklater3 { };
spectral-cube = callPackage ../development/python-modules/spectral-cube { };
speedtest-cli = callPackage ../development/python-modules/speedtest-cli { };