Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2023-10-29 06:01:52 +00:00 committed by GitHub
commit b15e96318d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 406 additions and 38 deletions

View File

@ -113,6 +113,8 @@
- [tuxedo-rs](https://github.com/AaronErhardt/tuxedo-rs), Rust utilities for interacting with hardware from TUXEDO Computers.
- [certspotter](https://github.com/SSLMate/certspotter), a certificate transparency log monitor. Available as [services.certspotter](#opt-services.certspotter.enable).
- [audiobookshelf](https://github.com/advplyr/audiobookshelf/), a self-hosted audiobook and podcast server. Available as [services.audiobookshelf](#opt-services.audiobookshelf.enable).
- [ZITADEL](https://zitadel.com), a turnkey identity and access management platform. Available as [services.zitadel](#opt-services.zitadel.enable).

View File

@ -767,6 +767,7 @@
./services/monitoring/below.nix
./services/monitoring/bosun.nix
./services/monitoring/cadvisor.nix
./services/monitoring/certspotter.nix
./services/monitoring/cockpit.nix
./services/monitoring/collectd.nix
./services/monitoring/das_watchdog.nix

View File

@ -0,0 +1,74 @@
# Cert Spotter {#module-services-certspotter}
Cert Spotter is a tool for monitoring [Certificate Transparency](https://en.wikipedia.org/wiki/Certificate_Transparency)
logs.
## Service Configuration {#modules-services-certspotter-service-configuration}
A basic config that notifies you of all certificate changes for your
domain would look as follows:
```nix
services.certspotter = {
enable = true;
# replace example.org with your domain name
watchlist = [ ".example.org" ];
emailRecipients = [ "webmaster@example.org" ];
};
# Configure an SMTP client
programs.msmtp.enable = true;
# Or you can use any other module that provides sendmail, like
# services.nullmailer, services.opensmtpd, services.postfix
```
In this case, the leading dot in `".example.org"` means that Cert
Spotter should monitor not only `example.org`, but also all of its
subdomains.
## Operation {#modules-services-certspotter-operation}
**By default, NixOS configures Cert Spotter to skip all certificates
issued before its first launch**, because checking the entire
Certificate Transparency logs requires downloading tens of terabytes of
data. If you want to check the *entire* logs for previously issued
certificates, you have to set `services.certspotter.startAtEnd` to
`false` and remove all previously saved log state in
`/var/lib/certspotter/logs`. The downloaded logs aren't saved, so if you
add a new domain to the watchlist and want Cert Spotter to go through
the logs again, you will have to remove `/var/lib/certspotter/logs`
again.
After catching up with the logs, Cert Spotter will start monitoring live
logs. As of October 2023, it uses around **20 Mbps** of traffic on
average.
## Hooks {#modules-services-certspotter-hooks}
Cert Spotter supports running custom hooks instead of (or in addition
to) sending emails. Hooks are shell scripts that will be passed certain
environment variables.
To see hook documentation, see Cert Spotter's man pages:
```ShellSession
nix-shell -p certspotter --run 'man 8 certspotter-script'
```
For example, you can remove `emailRecipients` and send email
notifications manually using the following hook:
```nix
services.certspotter.hooks = [
(pkgs.writeShellScript "certspotter-hook" ''
function print_email() {
echo "Subject: [certspotter] $SUMMARY"
echo "Mime-Version: 1.0"
echo "Content-Type: text/plain; charset=US-ASCII"
echo
cat "$TEXT_FILENAME"
}
print_email | ${config.services.certspotter.sendmailPath} -i webmaster@example.org
'')
];
```

View File

@ -0,0 +1,143 @@
{ config
, lib
, pkgs
, ... }:
let
cfg = config.services.certspotter;
configDir = pkgs.linkFarm "certspotter-config" (
lib.toList {
name = "watchlist";
path = pkgs.writeText "certspotter-watchlist" (builtins.concatStringsSep "\n" cfg.watchlist);
}
++ lib.optional (cfg.emailRecipients != [ ]) {
name = "email_recipients";
path = pkgs.writeText "certspotter-email_recipients" (builtins.concatStringsSep "\n" cfg.emailRecipients);
}
# always generate hooks dir when no emails are provided to allow running cert spotter with no hooks/emails
++ lib.optional (cfg.emailRecipients == [ ] || cfg.hooks != [ ]) {
name = "hooks.d";
path = pkgs.linkFarm "certspotter-hooks" (lib.imap1 (i: path: {
inherit path;
name = "hook${toString i}";
}) cfg.hooks);
});
in
{
options.services.certspotter = {
enable = lib.mkEnableOption "Cert Spotter, a Certificate Transparency log monitor";
package = lib.mkPackageOptionMD pkgs "certspotter" { };
startAtEnd = lib.mkOption {
type = lib.types.bool;
description = ''
Whether to skip certificates issued before the first launch of Cert Spotter.
Setting this to `false` will cause Cert Spotter to download tens of terabytes of data.
'';
default = true;
};
sendmailPath = lib.mkOption {
type = with lib.types; nullOr path;
description = ''
Path to the `sendmail` binary. By default, the local sendmail wrapper is used
(see {option}`services.mail.sendmailSetuidWrapper`}).
'';
example = lib.literalExpression ''"''${pkgs.system-sendmail}/bin/sendmail"'';
};
watchlist = lib.mkOption {
type = with lib.types; listOf str;
description = "Domain names to watch. To monitor a domain with all subdomains, prefix its name with `.` (e.g. `.example.org`).";
default = [ ];
example = [ ".example.org" "another.example.com" ];
};
emailRecipients = lib.mkOption {
type = with lib.types; listOf str;
description = "A list of email addresses to send certificate updates to.";
default = [ ];
};
hooks = lib.mkOption {
type = with lib.types; listOf path;
description = ''
Scripts to run upon the detection of a new certificate. See `man 8 certspotter-script` or
[the GitHub page](https://github.com/SSLMate/certspotter/blob/${pkgs.certspotter.src.rev or "master"}/man/certspotter-script.md)
for more info.
'';
default = [ ];
example = lib.literalExpression ''
[
(pkgs.writeShellScript "certspotter-hook" '''
echo "Event summary: $SUMMARY."
''')
]
'';
};
extraFlags = lib.mkOption {
type = with lib.types; listOf str;
description = "Extra command-line arguments to pass to Cert Spotter";
example = [ "-no_save" ];
default = [ ];
};
};
config = lib.mkIf cfg.enable {
assertions = [
{
assertion = (cfg.emailRecipients != [ ]) -> (cfg.sendmailPath != null);
message = ''
You must configure the sendmail setuid wrapper (services.mail.sendmailSetuidWrapper)
or services.certspotter.sendmailPath
'';
}
];
services.certspotter.sendmailPath = let
inherit (config.security) wrapperDir;
inherit (config.services.mail) sendmailSetuidWrapper;
in lib.mkMerge [
(lib.mkIf (sendmailSetuidWrapper != null) (lib.mkOptionDefault "${wrapperDir}/${sendmailSetuidWrapper.program}"))
(lib.mkIf (sendmailSetuidWrapper == null) (lib.mkOptionDefault null))
];
users.users.certspotter = {
description = "Cert Spotter user";
group = "certspotter";
home = "/var/lib/certspotter";
isSystemUser = true;
};
users.groups.certspotter = { };
systemd.services.certspotter = {
description = "Cert Spotter - Certificate Transparency Monitor";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
environment.CERTSPOTTER_CONFIG_DIR = configDir;
environment.SENDMAIL_PATH = if cfg.sendmailPath != null then cfg.sendmailPath else "/run/current-system/sw/bin/false";
script = ''
export CERTSPOTTER_STATE_DIR="$STATE_DIRECTORY"
cd "$CERTSPOTTER_STATE_DIR"
${lib.optionalString cfg.startAtEnd ''
if [[ ! -d logs ]]; then
# Don't download certificates issued before the first launch
exec ${cfg.package}/bin/certspotter -start_at_end ${lib.escapeShellArgs cfg.extraFlags}
fi
''}
exec ${cfg.package}/bin/certspotter ${lib.escapeShellArgs cfg.extraFlags}
'';
serviceConfig = {
User = "certspotter";
Group = "certspotter";
StateDirectory = "certspotter";
};
};
};
meta.maintainers = with lib.maintainers; [ chayleaf ];
meta.doc = ./certspotter.md;
}

View File

@ -10,16 +10,16 @@
rustPlatform.buildRustPackage rec {
pname = "pueue";
version = "3.3.0";
version = "3.3.1";
src = fetchFromGitHub {
owner = "Nukesor";
repo = "pueue";
rev = "v${version}";
hash = "sha256-X6q8ePaADv1+n/WmCp4SOhVm9lnc14qGhLSCxtc/ONw=";
hash = "sha256-EDd8SChQ8Vh2uNSZq5mrWdsLNT0KC4IMA7e3BPk6p04=";
};
cargoHash = "sha256-lfWuOkKNNDQ0b6oncuCC3KOAgtQGvLptIbmdyY8vy6o=";
cargoHash = "sha256-H4Oyn2cLyj/RNkiMQMzbHjhs1AJIcmSkZOO83ETByWk=";
nativeBuildInputs = [
installShellFiles
@ -60,7 +60,7 @@ rustPlatform.buildRustPackage rec {
any terminal on the same machine. The queue will be continuously
processed, even if you no longer have any active ssh sessions.
'';
changelog = "https://github.com/Nukesor/pueue/raw/v${version}/CHANGELOG.md";
changelog = "https://github.com/Nukesor/pueue/blob/v${version}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ marsam ];
};

View File

@ -26,11 +26,11 @@ let
in
stdenv.mkDerivation rec {
pname = "zeek";
version = "6.0.1";
version = "6.0.2";
src = fetchurl {
url = "https://download.zeek.org/zeek-${version}.tar.gz";
sha256 = "sha256-z8MpoXBDkZXXBw7FOH2Vzdp+trhqyF7HB7ntDp1Xaik=";
sha256 = "sha256-JCGYmtzuain0io9ycvcZ7b6VTWbC6G46Uuecrhd/iHw=";
};
strictDeps = true;

View File

@ -0,0 +1,39 @@
{ lib
, fetchFromGitHub
, buildGoModule
, lowdown
}:
buildGoModule rec {
pname = "certspotter";
version = "0.17.0";
src = fetchFromGitHub {
owner = "SSLMate";
repo = "certspotter";
rev = "v${version}";
hash = "sha256-6ghS+9b8FZiYdiTk54XRHP46lOq98sN1RDYvRYTt6eU=";
};
vendorHash = "sha256-6dV9FoPV8UfS0z5RuuopE99fHcT3RAWCdDi7jpHzVRE=";
ldflags = [ "-s" "-w" ];
nativeBuildInputs = [ lowdown ];
postInstall = ''
cd man
make
mkdir -p $out/share/man/man8
mv *.8 $out/share/man/man8
'';
meta = with lib; {
description = "Certificate Transparency Log Monitor";
homepage = "https://github.com/SSLMate/certspotter";
changelog = "https://github.com/SSLMate/certspotter/blob/${src.rev}/CHANGELOG.md";
license = licenses.mpl20;
mainProgram = "certspotter";
maintainers = with maintainers; [ chayleaf ];
};
}

View File

@ -55,16 +55,16 @@ assert (extraParameters != null) -> set != null;
buildNpmPackage rec {
pname = if set != null then "iosevka-${set}" else "iosevka";
version = "27.3.1";
version = "27.3.2";
src = fetchFromGitHub {
owner = "be5invis";
repo = "iosevka";
rev = "v${version}";
hash = "sha256-7ndJDdgDn5tnnUeB4etQ8bBZnH7NuiYoNQ9CrF2HtwQ=";
hash = "sha256-an2/Aqb+5t61CkiBhwL9lA0WPxhIC+tDDjhn8alcqJQ=";
};
npmDepsHash = "sha256-MNlT8VJTIvoZDAAdEs0Fa8gqO7dWhRR9I4Kw4qlW5Ig=";
npmDepsHash = "sha256-BQTM/ea/X2iqRkX510fAzouPNcV7cUmtY7J/CSUMH7o=";
nativeBuildInputs = [
remarshal

View File

@ -0,0 +1,45 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, setuptools
, pythonOlder
, pydantic
, requests
, tqdm
, typer
}:
buildPythonPackage rec {
pname = "python-on-whales";
version = "0.65.0";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "gabrieldemarmiesse";
repo = "python-on-whales";
rev = "refs/tags/v${version}";
hash = "sha256-aFE4qeNMSxhHs7IAjYQYl15s4NkHH8balTV3N0obNPs=";
};
nativeBuildInputs = [ setuptools ];
propagatedBuildInputs = [
pydantic
requests
tqdm
typer
];
doCheck = false; # majority of tests require Docker and/or network access
pythonImportsCheck = [ "python_on_whales" ];
meta = with lib; {
description = "Docker client for Python, designed to be fun and intuitive";
homepage = "https://github.com/gabrieldemarmiesse/python-on-whales";
changelog = "https://github.com/gabrieldemarmiesse/python-on-whales/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ bcdarwin ];
};
}

View File

@ -0,0 +1,55 @@
{ lib
, stdenv
, fetchFromGitHub
, cmake
, yaml-cpp
, qtbase
, qtsvg
, wrapQtAppsHook
, qttools
, libusb1
, php
, hidapi
, procps
}:
stdenv.mkDerivation rec {
pname = "bloom";
version = "1.0.0";
src = fetchFromGitHub {
owner = "bloombloombloom";
repo = "Bloom";
rev = "v${version}";
hash = "sha256-ZZfclZwxsCgApUII79bJVyT5V/dF9jm7l8ynRWCh0UU=";
};
nativeBuildInputs = [
cmake
php
wrapQtAppsHook
];
buildInputs = [
hidapi
libusb1
procps
qtbase
qtsvg
qttools
yaml-cpp
];
postPatch = ''
sed -i 's|/usr|${placeholder "out"}|' cmake/Installing.cmake
'';
meta = {
description = "Debug interface for AVR-based embedded systems development on GNU/Linux";
homepage = "https://bloom.oscillate.io/";
license = lib.licenses.lgpl3Only;
maintainers = with lib.maintainers; [ eclairevoyant ];
mainProgram = "bloom";
platforms = lib.platforms.linux;
};
}

View File

@ -6,25 +6,17 @@
rustPlatform.buildRustPackage rec {
pname = "postgres-lsp";
version = "unstable-2023-09-21";
version = "unstable-2023-10-20";
src = (fetchFromGitHub {
src = fetchFromGitHub {
owner = "supabase";
repo = "postgres_lsp";
rev = "f25f23a683c4e14dea52e3e423584588ab349081";
hash = "sha256-z8WIUfgnPYdzhBit1V6A5UktjoYCblTKXxwpbHOmFJA=";
rev = "88901a987de9a2d8db05c36bcd87c5c877b51460";
hash = "sha256-HY83SO2dlXKamIqFEz53A8YDYx9EynX8FCX9EjF+tdw=";
fetchSubmodules = true;
}).overrideAttrs {
# workaround to be able to fetch git@github.com submodules
# https://github.com/NixOS/nixpkgs/issues/195117
env = {
GIT_CONFIG_COUNT = 1;
GIT_CONFIG_KEY_0 = "url.https://github.com/.insteadOf";
GIT_CONFIG_VALUE_0 = "git@github.com:";
};
};
cargoHash = "sha256-Nyxiere6/e5Y7YcgHitVkaiS1w3JXkbohIcBNc00YXY=";
cargoHash = "sha256-m8m0Q3UAq6kV2IoXMFTkP0WKzSXiWPkfOkta639dcj0=";
nativeBuildInputs = [
protobuf

View File

@ -5,14 +5,14 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-run-bin";
version = "1.4.1";
version = "1.5.0";
src = fetchCrate {
inherit pname version;
hash = "sha256-imp7TzSVWo6l23tQu2oMMdVj/3sT9mU+lIBc0cVwO+s=";
hash = "sha256-FPkZk5qKHrRR3V8s04yLgOVOKj+Rln3Cu/VW2bnr2fE=";
};
cargoHash = "sha256-TQOFXFdfD4iVy4K9IjcX0L7zLeNw9RAHb2WE5rERP/0=";
cargoHash = "sha256-aFHuIEDpGCel1FC7D0hTUmzHbEj7wVarsE0wNZ/3Khw=";
# multiple impurities in tests
doCheck = false;

View File

@ -2,6 +2,7 @@
, stdenv
, fetchFromGitHub
, AppKit
, Carbon
, CoreAudio
, CoreWLAN
, CoreVideo
@ -21,17 +22,18 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "sketchybar";
version = "2.17.1";
version = "2.18.0";
src = fetchFromGitHub {
owner = "FelixKratz";
repo = "SketchyBar";
rev = "v${finalAttrs.version}";
hash = "sha256-QilZurp4QkwOo4jbYXMs4SesqyXXsEgF8dDwt/Kv94s=";
hash = "sha256-GeFB+eE/NW9ZopwVSmSfMK3WiJLCJNXOdmQpYc3m8WE=";
};
buildInputs = [
AppKit
Carbon
CoreAudio
CoreWLAN
CoreVideo

View File

@ -9,13 +9,13 @@
buildDotnetModule rec {
pname = "jackett";
version = "0.21.993";
version = "0.21.1096";
src = fetchFromGitHub {
owner = pname;
repo = pname;
rev = "v${version}";
hash = "sha512-LpP4BH0EJxjy4pDYpIGs9l2obxfFMLMsTEn3weJPnPRgeeAlavkACCymQxrpfG3aP1oPbaZRn6Zs/9dyohV3kQ==";
hash = "sha512-j9PQa54Gv6kdCHZ9/WPnKYkxD4N0eu0KtMPpATSYVDo0mP9pXdQxSoCrKdmW2gOveuo5Z/wPW4BB4r3gvFxcOg==";
};
projectFile = "src/Jackett.Server/Jackett.Server.csproj";

View File

@ -8,11 +8,11 @@
stdenvNoCC.mkDerivation rec {
pname = "komga";
version = "1.5.1";
version = "1.6.4";
src = fetchurl {
url = "https://github.com/gotson/${pname}/releases/download/v${version}/${pname}-${version}.jar";
sha256 = "sha256-mEeeMMTZlAfBxp44gV8OLjyGrzcp+XCMPJLJ/sFELHs=";
sha256 = "sha256-tqrC3l2njYGRVIdvt86JVKTCVaAK7GPoYacx3hFRggg=";
};
nativeBuildInputs = [

View File

@ -1,7 +1,5 @@
{ lib
, stdenv
, python3
, fetchPypi
, callPackage
, fetchFromGitHub
, installShellFiles
}:
@ -18,9 +16,7 @@ let
};
# put packages that needs to be overridden in the py package scope
py = import ./python-packages.nix {
inherit stdenv src version python3 fetchPypi;
};
py = callPackage ./python-packages.nix { inherit src version; };
in
py.pkgs.toPythonApplication (py.pkgs.buildAzureCliPackage {

View File

@ -1,6 +1,7 @@
{ stdenv
, python3
, fetchPypi
, fetchpatch
, src
, version
}:
@ -28,6 +29,20 @@ let
pname = "azure-cli-core";
inherit version src;
patches = [
(fetchpatch {
name = "fix-python311.patch";
url = "https://github.com/Azure/azure-cli/commit/a5198b578b17de934e15b1c92e369e45323e9658.patch";
hash = "sha256-qbyKF6Vvtz8QwY78sG7ptTVcbM2IR+phntOKqsrWetE=";
stripLen = 2;
includes = [
"azure/cli/core/tests/test_command_registration.py"
"azure/cli/core/tests/test_help.py"
"azure/cli/core/tests/test_parser.py"
];
})
];
sourceRoot = "${src.name}/src/azure-cli-core";
propagatedBuildInputs = with self; [

View File

@ -364,6 +364,8 @@ with pkgs;
blst = callPackage ../development/libraries/blst { };
bloom = qt6Packages.callPackage ../development/tools/bloom { };
bloodhound-py = callPackage ../tools/security/bloodhound-py { };
bodyclose = callPackage ../development/tools/bodyclose { };
@ -13247,7 +13249,7 @@ with pkgs;
sixpair = callPackage ../tools/misc/sixpair { };
sketchybar = darwin.apple_sdk_11_0.callPackage ../os-specific/darwin/sketchybar {
inherit (darwin.apple_sdk_11_0.frameworks) AppKit CoreAudio CoreWLAN CoreVideo DisplayServices IOKit MediaRemote SkyLight;
inherit (darwin.apple_sdk_11_0.frameworks) AppKit Carbon CoreAudio CoreWLAN CoreVideo DisplayServices IOKit MediaRemote SkyLight;
};
sketchybar-app-font = callPackage ../data/fonts/sketchybar-app-font { };

View File

@ -11502,6 +11502,8 @@ self: super: with self; {
python-olm = callPackage ../development/python-modules/python-olm { };
python-on-whales = callPackage ../development/python-modules/python-on-whales { };
python-opendata-transport = callPackage ../development/python-modules/python-opendata-transport { };
python-openstackclient = callPackage ../development/python-modules/python-openstackclient { };