Merge master into staging-next

This commit is contained in:
github-actions[bot] 2023-07-18 00:02:38 +00:00 committed by GitHub
commit 49410acfd1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 1513 additions and 311 deletions

View file

@ -6017,6 +6017,12 @@
githubId = 127353;
name = "Geoffrey Huntley";
};
gigglesquid = {
email = "jack.connors@protonmail.com";
github = "gigglesquid";
githubId = 3685154;
name = "Jack connors";
};
gila = {
email = "jeffry.molanus@gmail.com";
github = "gila";

View file

@ -123,8 +123,8 @@ in
boot.extraModulePackages = [ (lib.mkIf cfg.netatop.enable cfg.netatop.package) ];
systemd =
let
mkSystemd = type: cond: name: restartTriggers: {
${name} = lib.mkIf cond {
mkSystemd = type: name: restartTriggers: {
${name} = {
inherit restartTriggers;
wantedBy = [ (if type == "services" then "multi-user.target" else if type == "timers" then "timers.target" else null) ];
};
@ -134,42 +134,44 @@ in
in
{
packages = [ atop (lib.mkIf cfg.netatop.enable cfg.netatop.package) ];
services =
mkService cfg.atopService.enable "atop" [ atop ]
// lib.mkIf cfg.atopService.enable {
# always convert logs to newer version first
# XXX might trigger TimeoutStart but restarting atop.service will
# convert remainings logs and start eventually
atop.serviceConfig.ExecStartPre = pkgs.writeShellScript "atop-update-log-format" ''
set -e -u
shopt -s nullglob
for logfile in "$LOGPATH"/atop_*
do
${atop}/bin/atopconvert "$logfile" "$logfile".new
# only replace old file if version was upgraded to avoid
# false positives for atop-rotate.service
if ! ${pkgs.diffutils}/bin/cmp -s "$logfile" "$logfile".new
then
${pkgs.coreutils}/bin/mv -v -f "$logfile".new "$logfile"
else
${pkgs.coreutils}/bin/rm -f "$logfile".new
fi
done
'';
}
// mkService cfg.atopacctService.enable "atopacct" [ atop ]
// mkService cfg.netatop.enable "netatop" [ cfg.netatop.package ]
// mkService cfg.atopgpu.enable "atopgpu" [ atop ];
timers = mkTimer cfg.atopRotateTimer.enable "atop-rotate" [ atop ];
services = lib.mkMerge [
(lib.mkIf cfg.atopService.enable (lib.recursiveUpdate
(mkService "atop" [ atop ])
{
# always convert logs to newer version first
# XXX might trigger TimeoutStart but restarting atop.service will
# convert remainings logs and start eventually
atop.preStart = ''
set -e -u
shopt -s nullglob
for logfile in "$LOGPATH"/atop_*
do
${atop}/bin/atopconvert "$logfile" "$logfile".new
# only replace old file if version was upgraded to avoid
# false positives for atop-rotate.service
if ! ${pkgs.diffutils}/bin/cmp -s "$logfile" "$logfile".new
then
${pkgs.coreutils}/bin/mv -v -f "$logfile".new "$logfile"
else
${pkgs.coreutils}/bin/rm -f "$logfile".new
fi
done
'';
}))
(lib.mkIf cfg.atopacctService.enable (mkService "atopacct" [ atop ]))
(lib.mkIf cfg.netatop.enable (mkService "netatop" [ cfg.netatop.package ]))
(lib.mkIf cfg.atopgpu.enable (mkService "atopgpu" [ atop ]))
];
timers = lib.mkIf cfg.atopRotateTimer.enable (mkTimer "atop-rotate" [ atop ]);
};
security.wrappers = lib.mkIf cfg.setuidWrapper.enable {
atop =
{ setuid = true;
owner = "root";
group = "root";
source = "${atop}/bin/atop";
};
atop = {
setuid = true;
owner = "root";
group = "root";
source = "${atop}/bin/atop";
};
};
}
);

View file

@ -6,9 +6,6 @@ let
defaultGroup = "patroni";
format = pkgs.formats.yaml { };
#boto doesn't support python 3.10 yet
patroni = pkgs.patroni.override { pythonPackages = pkgs.python39Packages; };
configFileName = "patroni-${cfg.scope}-${cfg.name}.yaml";
configFile = format.generate configFileName cfg.settings;
in
@ -224,7 +221,7 @@ in
script = ''
${concatStringsSep "\n" (attrValues (mapAttrs (name: path: ''export ${name}="$(< ${escapeShellArg path})"'') cfg.environmentFiles))}
exec ${patroni}/bin/patroni ${configFile}
exec ${pkgs.patroni}/bin/patroni ${configFile}
'';
serviceConfig = mkMerge [
@ -252,7 +249,7 @@ in
'';
environment.systemPackages = [
patroni
pkgs.patroni
cfg.postgresqlPackage
(mkIf cfg.raft pkgs.python310Packages.pysyncobj)
];

View file

@ -1,64 +1,49 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.buildkite-agents;
mkHookOption = { name, description, example ? null }: {
inherit name;
value = mkOption {
default = null;
description = lib.mdDoc description;
type = types.nullOr types.lines;
} // (lib.optionalAttrs (example != null) { inherit example; });
};
mkHookOptions = hooks: listToAttrs (map mkHookOption hooks);
hooksDir = cfg: let
mkHookEntry = name: value: ''
cat > $out/${name} <<'EOF'
#! ${pkgs.runtimeShell}
set -e
${value}
EOF
chmod 755 $out/${name}
hooksDir = hooks:
let
mkHookEntry = name: text: ''
ln --symbolic ${pkgs.writeShellApplication { inherit name text; }}/bin/${name} $out/${name}
'';
in
pkgs.runCommandLocal "buildkite-agent-hooks" { } ''
mkdir $out
${lib.concatStringsSep "\n" (lib.mapAttrsToList mkHookEntry hooks)}
'';
in pkgs.runCommand "buildkite-agent-hooks" { preferLocalBuild = true; } ''
mkdir $out
${concatStringsSep "\n" (mapAttrsToList mkHookEntry (filterAttrs (n: v: v != null) cfg.hooks))}
'';
buildkiteOptions = { name ? "", config, ... }: {
options = {
enable = mkOption {
enable = lib.mkOption {
default = true;
type = types.bool;
type = lib.types.bool;
description = lib.mdDoc "Whether to enable this buildkite agent";
};
package = mkOption {
package = lib.mkOption {
default = pkgs.buildkite-agent;
defaultText = literalExpression "pkgs.buildkite-agent";
defaultText = lib.literalExpression "pkgs.buildkite-agent";
description = lib.mdDoc "Which buildkite-agent derivation to use";
type = types.package;
type = lib.types.package;
};
dataDir = mkOption {
dataDir = lib.mkOption {
default = "/var/lib/buildkite-agent-${name}";
description = lib.mdDoc "The workdir for the agent";
type = types.str;
type = lib.types.str;
};
runtimePackages = mkOption {
runtimePackages = lib.mkOption {
default = [ pkgs.bash pkgs.gnutar pkgs.gzip pkgs.git pkgs.nix ];
defaultText = literalExpression "[ pkgs.bash pkgs.gnutar pkgs.gzip pkgs.git pkgs.nix ]";
defaultText = lib.literalExpression "[ pkgs.bash pkgs.gnutar pkgs.gzip pkgs.git pkgs.nix ]";
description = lib.mdDoc "Add programs to the buildkite-agent environment";
type = types.listOf types.package;
type = lib.types.listOf lib.types.package;
};
tokenPath = mkOption {
type = types.path;
tokenPath = lib.mkOption {
type = lib.types.path;
description = lib.mdDoc ''
The token from your Buildkite "Agents" page.
@ -67,25 +52,25 @@ let
'';
};
name = mkOption {
type = types.str;
name = lib.mkOption {
type = lib.types.str;
default = "%hostname-${name}-%n";
description = lib.mdDoc ''
The name of the agent as seen in the buildkite dashboard.
'';
};
tags = mkOption {
type = types.attrsOf (types.either types.str (types.listOf types.str));
default = {};
example = { queue = "default"; docker = "true"; ruby2 ="true"; };
tags = lib.mkOption {
type = lib.types.attrsOf (lib.types.either lib.types.str (lib.types.listOf lib.types.str));
default = { };
example = { queue = "default"; docker = "true"; ruby2 = "true"; };
description = lib.mdDoc ''
Tags for the agent.
'';
};
extraConfig = mkOption {
type = types.lines;
extraConfig = lib.mkOption {
type = lib.types.lines;
default = "";
example = "debug=true";
description = lib.mdDoc ''
@ -93,8 +78,8 @@ let
'';
};
privateSshKeyPath = mkOption {
type = types.nullOr types.path;
privateSshKeyPath = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
## maximum care is taken so that secrets (ssh keys and the CI token)
## don't end up in the Nix store.
@ -108,67 +93,25 @@ let
'';
};
hooks = mkHookOptions [
{ name = "checkout";
description = ''
The `checkout` hook script will replace the default checkout routine of the
bootstrap.sh script. You can use this hook to do your own SCM checkout
behaviour
''; }
{ name = "command";
description = ''
The `command` hook script will replace the default implementation of running
the build command.
''; }
{ name = "environment";
description = ''
The `environment` hook will run before all other commands, and can be used
to set up secrets, data, etc. Anything exported in hooks will be available
to the build script.
hooks = lib.mkOption {
type = lib.types.attrsOf lib.types.lines;
default = { };
example = lib.literalExpression ''
{
environment = '''
export SECRET_VAR=`head -1 /run/keys/secret`
''';
}'';
description = lib.mdDoc ''
"Agent" hooks to install.
See <https://buildkite.com/docs/agent/v3/hooks> for possible options.
'';
};
Note: the contents of this file will be copied to the world-readable
Nix store.
'';
example = ''
export SECRET_VAR=`head -1 /run/keys/secret`
''; }
{ name = "post-artifact";
description = ''
The `post-artifact` hook will run just after artifacts are uploaded
''; }
{ name = "post-checkout";
description = ''
The `post-checkout` hook will run after the bootstrap script has checked out
your projects source code.
''; }
{ name = "post-command";
description = ''
The `post-command` hook will run after the bootstrap script has run your
build commands
''; }
{ name = "pre-artifact";
description = ''
The `pre-artifact` hook will run just before artifacts are uploaded
''; }
{ name = "pre-checkout";
description = ''
The `pre-checkout` hook will run just before your projects source code is
checked out from your SCM provider
''; }
{ name = "pre-command";
description = ''
The `pre-command` hook will run just before your build command runs
''; }
{ name = "pre-exit";
description = ''
The `pre-exit` hook will run just before your build job finishes
''; }
];
hooksPath = mkOption {
type = types.path;
default = hooksDir config;
defaultText = literalMD "generated from {option}`services.buildkite-agents.<name>.hooks`";
hooksPath = lib.mkOption {
type = lib.types.path;
default = hooksDir config.hooks;
defaultText = lib.literalMD "generated from {option}`services.buildkite-agents.<name>.hooks`";
description = lib.mdDoc ''
Path to the directory storing the hooks.
Consider using {option}`services.buildkite-agents.<name>.hooks.<name>`
@ -176,10 +119,10 @@ let
'';
};
shell = mkOption {
type = types.str;
shell = lib.mkOption {
type = lib.types.str;
default = "${pkgs.bash}/bin/bash -e -c";
defaultText = literalExpression ''"''${pkgs.bash}/bin/bash -e -c"'';
defaultText = lib.literalExpression ''"''${pkgs.bash}/bin/bash -e -c"'';
description = lib.mdDoc ''
Command that buildkite-agent 3 will execute when it spawns a shell.
'';
@ -190,9 +133,9 @@ let
mapAgents = function: lib.mkMerge (lib.mapAttrsToList function enabledAgents);
in
{
options.services.buildkite-agents = mkOption {
type = types.attrsOf (types.submodule buildkiteOptions);
default = {};
options.services.buildkite-agents = lib.mkOption {
type = lib.types.attrsOf (lib.types.submodule buildkiteOptions);
default = { };
description = lib.mdDoc ''
Attribute set of buildkite agents.
The attribute key is combined with the hostname and a unique integer to
@ -213,23 +156,24 @@ in
};
});
config.users.groups = mapAgents (name: cfg: {
"buildkite-agent-${name}" = {};
"buildkite-agent-${name}" = { };
});
config.systemd.services = mapAgents (name: cfg: {
"buildkite-agent-${name}" =
{ description = "Buildkite Agent";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
path = cfg.runtimePackages ++ [ cfg.package pkgs.coreutils ];
environment = config.networking.proxy.envVars // {
HOME = cfg.dataDir;
NIX_REMOTE = "daemon";
};
"buildkite-agent-${name}" = {
description = "Buildkite Agent";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
path = cfg.runtimePackages ++ [ cfg.package pkgs.coreutils ];
environment = config.networking.proxy.envVars // {
HOME = cfg.dataDir;
NIX_REMOTE = "daemon";
};
## NB: maximum care is taken so that secrets (ssh keys and the CI token)
## don't end up in the Nix store.
preStart = let
## NB: maximum care is taken so that secrets (ssh keys and the CI token)
## don't end up in the Nix store.
preStart =
let
sshDir = "${cfg.dataDir}/.ssh";
tagStr = name: value:
if lib.isList value
@ -237,44 +181,39 @@ in
else "${name}=${value}";
tagsStr = lib.concatStringsSep "," (lib.mapAttrsToList tagStr cfg.tags);
in
optionalString (cfg.privateSshKeyPath != null) ''
mkdir -m 0700 -p "${sshDir}"
install -m600 "${toString cfg.privateSshKeyPath}" "${sshDir}/id_rsa"
'' + ''
cat > "${cfg.dataDir}/buildkite-agent.cfg" <<EOF
token="$(cat ${toString cfg.tokenPath})"
name="${cfg.name}"
shell="${cfg.shell}"
tags="${tagsStr}"
build-path="${cfg.dataDir}/builds"
hooks-path="${cfg.hooksPath}"
${cfg.extraConfig}
EOF
'';
lib.optionalString (cfg.privateSshKeyPath != null) ''
mkdir -m 0700 -p "${sshDir}"
install -m600 "${toString cfg.privateSshKeyPath}" "${sshDir}/id_rsa"
'' + ''
cat > "${cfg.dataDir}/buildkite-agent.cfg" <<EOF
token="$(cat ${toString cfg.tokenPath})"
name="${cfg.name}"
shell="${cfg.shell}"
tags="${tagsStr}"
build-path="${cfg.dataDir}/builds"
hooks-path="${cfg.hooksPath}"
${cfg.extraConfig}
EOF
'';
serviceConfig =
{ ExecStart = "${cfg.package}/bin/buildkite-agent start --config ${cfg.dataDir}/buildkite-agent.cfg";
User = "buildkite-agent-${name}";
RestartSec = 5;
Restart = "on-failure";
TimeoutSec = 10;
# set a long timeout to give buildkite-agent a chance to finish current builds
TimeoutStopSec = "2 min";
KillMode = "mixed";
};
serviceConfig = {
ExecStart = "${cfg.package}/bin/buildkite-agent start --config ${cfg.dataDir}/buildkite-agent.cfg";
User = "buildkite-agent-${name}";
RestartSec = 5;
Restart = "on-failure";
TimeoutSec = 10;
# set a long timeout to give buildkite-agent a chance to finish current builds
TimeoutStopSec = "2 min";
KillMode = "mixed";
};
};
});
config.assertions = mapAgents (name: cfg: [
{ assertion = cfg.hooksPath == (hooksDir cfg) || all (v: v == null) (attrValues cfg.hooks);
message = ''
Options `services.buildkite-agents.${name}.hooksPath' and
`services.buildkite-agents.${name}.hooks.<name>' are mutually exclusive.
'';
}
]);
imports = [
(mkRemovedOptionModule [ "services" "buildkite-agent"] "services.buildkite-agent has been upgraded from version 2 to version 3 and moved to an attribute set at services.buildkite-agents. Please consult the 20.03 release notes for more information.")
];
config.assertions = mapAgents (name: cfg: [{
assertion = cfg.hooksPath != hooksDir cfg.hooks -> cfg.hooks == { };
message = ''
Options `services.buildkite-agents.${name}.hooksPath' and
`services.buildkite-agents.${name}.hooks.<name>' are mutually exclusive.
'';
}]);
}

View file

@ -9,7 +9,7 @@ let
testsForLinuxPackages = linuxPackages: (import ./make-test-python.nix ({ pkgs, ... }: {
name = "kernel-${linuxPackages.kernel.version}";
meta = with pkgs.lib.maintainers; {
maintainers = [ nequissimus atemu ];
maintainers = [ nequissimus atemu ma27 ];
};
nodes.machine = { ... }:
@ -33,6 +33,11 @@ let
linux_6_1_hardened
linux_6_3_hardened
linux_6_4_hardened
linux_rt_5_4
linux_rt_5_10
linux_rt_5_15
linux_rt_6_1
linux_libre
linux_testing;
};

View file

@ -0,0 +1,73 @@
{ fetchFromGitHub
, stdenv
, makeDesktopItem
, lib
, openssl
, boost
, curl
, libevent
, libzip
, qrencode
, qtbase
, qttools
, wrapQtAppsHook
, autoreconfHook
, pkg-config
, libtool
, miniupnpc
, hexdump
}:
stdenv.mkDerivation rec {
pname = "gridcoin-research";
version = "5.4.5.0";
src = fetchFromGitHub {
owner = "gridcoin-community";
repo = "Gridcoin-Research";
rev = "${version}";
sha256 = "1a174m7821c7d3yh9lyh0r3ds6qn06x16aa1qxcbrqyxxc127yky";
};
nativeBuildInputs = [
pkg-config
wrapQtAppsHook
autoreconfHook
libtool
hexdump
];
buildInputs = [
qttools
qtbase
qrencode
libevent
libzip
openssl
boost
miniupnpc
curl
];
configureFlags = [
"--with-gui=qt5"
"--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin"
"--with-qrencode"
"--with-boost-libdir=${boost.out}/lib"
];
enableParallelBuilding = true;
meta = with lib; {
description = "A POS-based cryptocurrency that rewards users for participating on the BOINC network";
longDescription = ''
A POS-based cryptocurrency that rewards users for participating on the BOINC network,
using peer-to-peer technology to operate with no central authority - managing transactions,
issuing money and contributing to scientific research are carried out collectively by the network
'';
homepage = "https://gridcoin.us/";
license = licenses.mit;
maintainers = with maintainers; [ gigglesquid ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,76 @@
{ lib, stdenv, appimageTools, fetchurl, undmg }:
let
pname = "notesnook";
version = "2.5.7";
inherit (stdenv.hostPlatform) system;
throwSystem = throw "Unsupported system: ${system}";
suffix = {
x86_64-linux = "linux_x86_64.AppImage";
x86_64-darwin = "mac_x64.dmg";
aarch64-darwin = "mac_arm64.dmg";
}.${system} or throwSystem;
src = fetchurl {
url = "https://github.com/streetwriters/notesnook/releases/download/v${version}/notesnook_${suffix}";
hash = {
x86_64-linux = "sha256-M/59pjhuKF/MOMpT9/qrlThHO0V8e49cfiaWMkEWHNg=";
x86_64-darwin = "sha256-cluIizmweIMU6RIFxoEQ3DYChRVEuVLxrPjwfFfeq1w=";
aarch64-darwin = "sha256-cbBnKrb8poyDL1D+32UrOl3RXt8Msncw440qra9+Gs0=";
}.${system} or throwSystem;
};
appimageContents = appimageTools.extractType2 {
inherit pname version src;
};
meta = with lib; {
description = "A fully open source & end-to-end encrypted note taking alternative to Evernote.";
longDescription = ''
Notesnook is a free (as in speech) & open source note taking app
focused on user privacy & ease of use. To ensure zero knowledge
principles, Notesnook encrypts everything on your device using
XChaCha20-Poly1305 & Argon2.
'';
homepage = "https://notesnook.com";
license = licenses.gpl3Only;
maintainers = with maintainers; [ j0lol ];
platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
};
linux = appimageTools.wrapType2 rec {
inherit pname version src meta;
profile = ''
export LC_ALL=C.UTF-8
'';
multiPkgs = null; # no 32bit needed
extraPkgs = appimageTools.defaultFhsEnvArgs.multiPkgs;
extraInstallCommands = ''
mv $out/bin/{${pname}-${version},${pname}}
install -Dm444 ${appimageContents}/notesnook.desktop -t $out/share/applications
install -Dm444 ${appimageContents}/notesnook.png -t $out/share/pixmaps
substituteInPlace $out/share/applications/notesnook.desktop \
--replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname}'
'';
};
darwin = stdenv.mkDerivation {
inherit pname version src meta;
nativeBuildInputs = [ undmg ];
sourceRoot = "Notesnook.app";
installPhase = ''
mkdir -p $out/Applications/Notesnook.app
cp -R . $out/Applications/Notesnook.app
'';
};
in
if stdenv.isDarwin
then darwin
else linux

View file

@ -1,7 +1,7 @@
{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config
, curl, db, libgeotiff
, xorg, motif, pcre
, perl, proj, rastermagick, shapelib
, perl, proj, graphicsmagick, shapelib
, libax25
}:
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
buildInputs = [
curl db libgeotiff
xorg.libXpm xorg.libXt motif pcre
perl proj rastermagick shapelib
perl proj graphicsmagick shapelib
libax25
];

View file

@ -0,0 +1,4 @@
{ callPackage }:
{
file-manager = callPackage ./file-manager {};
}

View file

@ -0,0 +1,41 @@
{ lib, flutter, fetchFromGitHub }:
flutter.buildFlutterApplication rec {
pname = "expidus-file-manager";
version = "0.1.2";
src = fetchFromGitHub {
owner = "ExpidusOS";
repo = "file-manager";
rev = version;
sha256 = "sha256-aAPmwzNPgu08Ov9NyRW5bcj3jQzG9rpWwrABRyK2Weg=";
};
depsListFile = ./deps.json;
vendorHash = "sha256-mPGrpMUguM9XAYWH8lBQuytxZ3J0gS2XOMPkKyFMLbc=";
postInstall = ''
rm $out/bin/file_manager
ln -s $out/app/file_manager $out/bin/expidus-file-manager
mkdir -p $out/share/applications
mv $out/app/data/com.expidusos.file_manager.desktop $out/share/applications
mkdir -p $out/share/icons
mv $out/app/data/com.expidusos.file_manager.png $out/share/icons
mkdir -p $out/share/metainfo
mv $out/app/data/com.expidusos.file_manager.metainfo.xml $out/share/metainfo
substituteInPlace "$out/share/applications/com.expidusos.file_manager.desktop" \
--replace "Exec=file_manager" "Exec=$out/bin/expidus-file-manager" \
--replace "Icon=com.expidusos.file_manager" "Icon=$out/share/icons/com.expidusos.file_manager.png"
'';
meta = with lib; {
description = "ExpidusOS File Manager";
homepage = "https://expidusos.com";
license = licenses.gpl3;
maintainers = with maintainers; [ RossComputerGuy ];
platforms = [ "x86_64-linux" "aarch64-linux" ];
};
}

File diff suppressed because it is too large Load diff

View file

@ -55,12 +55,17 @@ buildPythonPackage rec {
preCheck = ''
redis-server &
REDIS_PID=$!
while ! redis-cli --scan ; do
echo waiting for redis to be ready
sleep 1
done
'';
postCheck = ''
kill $REDIS_PID
'';
DJANGO_SETTINGS_MODULE = "tests.settings";
meta = with lib; {
@ -69,7 +74,5 @@ buildPythonPackage rec {
changelog = "https://github.com/Suor/django-cacheops/blob/${version}/CHANGELOG";
license = licenses.bsd3;
maintainers = with maintainers; [ onny ];
# Times out for unknown reasons
broken = stdenv.isDarwin;
};
}

View file

@ -18,6 +18,7 @@ in
, zlib
, enableGold ? withGold stdenv.targetPlatform
, enableGoldDefault ? false
, enableShared ? !stdenv.hostPlatform.isStatic
# WARN: Enabling all targets increases output size to a multiple.
, withAllTargets ? false
@ -26,6 +27,7 @@ in
# WARN: configure silently disables ld.gold if it's unsupported, so we need to
# make sure that intent matches result ourselves.
assert enableGold -> withGold stdenv.targetPlatform;
assert enableGoldDefault -> enableGold;
let
@ -217,8 +219,10 @@ stdenv.mkDerivation (finalAttrs: {
"--with-lib-path=:"
]
++ lib.optionals withAllTargets [ "--enable-targets=all" ]
++ lib.optionals enableGold [ "--enable-gold" "--enable-plugins" ]
++ (if enableShared
++ lib.optionals enableGold [
"--enable-gold${lib.optionalString enableGoldDefault "=default"}"
"--enable-plugins"
] ++ (if enableShared
then [ "--enable-shared" "--disable-static" ]
else [ "--disable-shared" "--enable-static" ])
;

View file

@ -123,13 +123,13 @@ let
in
stdenv.mkDerivation rec {
pname = "hydra";
version = "2023-06-25";
version = "2023-07-17";
src = fetchFromGitHub {
owner = "NixOS";
repo = "hydra";
rev = "526e8bd7441d1beb271ff89bbca3604077ecffdb";
sha256 = "sha256-VRNI3H/WUTi7VTNLwO/I0gMnJ6ZMYRbBfgdsAj+TmP4=";
rev = "d135b123cde78576e99e919a5db0428cb70fcd1e";
sha256 = "sha256-wjHHcJr1liYKESUtCjIdvC+USjd9EWjEFssvIKiEuVU=";
};
buildInputs = [

View file

@ -1,21 +1,23 @@
{ lib, stdenv, fetchFromGitHub, curl, expat
, jansson, libpng, libjpeg, libGLU, libGL, libXxf86vm, pcre
, pkg-config, SDL2, vim, speex }:
, jansson, libpng, libjpeg, libGLU, libGL
, libsndfile, libXxf86vm, pcre, pkg-config, SDL2
, vim, speex }:
stdenv.mkDerivation rec {
pname = "ezquake";
version = "3.2.3";
version = "3.6.2";
src = fetchFromGitHub {
owner = "ezQuake";
owner = "QW-Group";
repo = pname + "-source";
rev = version;
sha256 = "sha256-EBhKmoX11JavTG6tPfg15FY2lqOFfzSDg3058OWfcYQ=";
fetchSubmodules = true;
hash = "sha256-mi/VDSZ+ybEAaZOhBGh/cSnrRUAB/h+WQZ4Aml0UfW4=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
expat curl jansson libpng libjpeg libGLU libGL libXxf86vm pcre SDL2 vim speex
expat curl jansson libpng libjpeg libGLU libGL libsndfile libXxf86vm pcre SDL2 vim speex
];
installPhase = with lib; let
@ -30,7 +32,7 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
meta = with lib; {
homepage = "http://ezquake.github.io/";
homepage = "https://ezquake.com/";
description = "A modern QuakeWorld client focused on competitive online play";
license = licenses.gpl2;
platforms = platforms.linux;

View file

@ -1,13 +1,26 @@
{ lib, stdenv, fetchFromGitHub
, makeWrapper, cmake, llvmPackages
, flex, bison, elfutils, python, luajit, netperf, iperf, libelf
, bash, libbpf, nixosTests
, audit
{ audit
, bash
, bison
, cmake
, elfutils
, fetchFromGitHub
, flex
, iperf
, lib
, libbpf
, llvmPackages
, luajit
, makeWrapper
, netperf
, nixosTests
, python3
, stdenv
, zip
}:
python.pkgs.buildPythonApplication rec {
python3.pkgs.buildPythonApplication rec {
pname = "bcc";
version = "0.26.0";
version = "0.28.0";
disabled = !stdenv.isLinux;
@ -15,7 +28,7 @@ python.pkgs.buildPythonApplication rec {
owner = "iovisor";
repo = "bcc";
rev = "v${version}";
sha256 = "sha256-zx38tPwuuGU6px9pRNN5JtvBysK9fStOvoqe7cLo7LM=";
sha256 = "sha256-+ecSaVroDC2bWbio4JsuwEvHQdCMpxLt7hIkeREMJs8=";
};
format = "other";
@ -31,8 +44,16 @@ python.pkgs.buildPythonApplication rec {
./fix-deadlock-detector-import.patch
];
propagatedBuildInputs = [ python.pkgs.netaddr ];
nativeBuildInputs = [ makeWrapper cmake flex bison llvmPackages.llvm.dev ];
propagatedBuildInputs = [ python3.pkgs.netaddr ];
nativeBuildInputs = [
bison
cmake
flex
llvmPackages.llvm.dev
makeWrapper
python3.pkgs.setuptools
zip
];
cmakeFlags = [
"-DBCC_KERNEL_MODULES_DIR=/run/booted-system/kernel-modules/lib/modules"
@ -59,6 +80,10 @@ python.pkgs.buildPythonApplication rec {
--replace '$'{exec_prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@
'';
preInstall = ''
# required for setuptool during install
export PYTHONPATH=$out/${python3.sitePackages}:$PYTHONPATH
'';
postInstall = ''
mkdir -p $out/bin $out/share
rm -r $out/share/bcc/tools/old

View file

@ -57,13 +57,4 @@
name = "export-rt-sched-migrate";
patch = ./export-rt-sched-migrate.patch;
};
CVE-2023-32233 = rec {
name = "CVE-2023-32233";
patch = fetchpatch {
name = name + ".patch";
url = "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/?id=c1592a89942e9678f7d9c8030efa777c0d57edab";
hash = "sha256-DYPWgraXPNeFkjtuDYkFXHnCJ4yDewrukM2CCAqC2BE=";
};
};
}

View file

@ -1,43 +1,40 @@
{ lib
, buildGoModule
, fetchFromGitHub
, makeWrapper
, fetchzip
, fetchpatch
, pathDeps ? [ ]
, applyPatches
, buildGoModule
, buildNpmPackage
, makeWrapper
, go-swag
, nixosTests
}:
buildGoModule rec {
pname = "pufferpanel";
version = "2.6.6";
version = "2.6.7";
patches = [
# Bump go-sqlite3 version to avoid a GNU C compiler error.
(fetchpatch {
url = "https://github.com/PufferPanel/PufferPanel/commit/dd7fc80c33c7618c98311af09c78c25b77658aef.patch";
hash = "sha256-ygMrhJoba8swoRBBii7BEiLihqOebLUtSH7os7W3s+k=";
})
src = applyPatches {
src = fetchFromGitHub {
owner = "PufferPanel";
repo = "PufferPanel";
rev = "v${version}";
hash = "sha256-ay9NNcK+6QFobe/rwtZF8USl0vMbDZBg5z57fjA5VLw=";
};
patches = [
# Bump sha1cd package, otherwise i686-linux fails to build.
./bump-sha1cd.patch
# Fix errors in tests.
(fetchpatch {
url = "https://github.com/PufferPanel/PufferPanel/commit/ad6ab4b4368e1111292fadfb3d9f058fa399fa21.patch";
hash = "sha256-BzGfcWhzRrCHKkAhWf0uvXiiiutWqthn/ed7bN2hR8U=";
})
# Seems to be an anti-feature. Startup is the only place where user/group is
# hardcoded and checked.
#
# There is no technical reason PufferPanel cannot run as a different user,
# especially for simple commands like `pufferpanel version`.
./disable-group-checks.patch
# Bump sha1cd package, otherwise i686-linux fails to build.
./bump-sha1cd.patch
# Seems to be an anti-feature. Startup is the only place where user/group is
# hardcoded and checked.
#
# There is no technical reason PufferPanel cannot run as a different user,
# especially for simple commands like `pufferpanel version`.
./disable-group-checks.patch
# Some tests do not have network requests stubbed :(
./skip-network-tests.patch
];
# Some tests do not have network requests stubbed :(
./skip-network-tests.patch
];
};
ldflags = [
"-s"
@ -46,50 +43,50 @@ buildGoModule rec {
"-X=github.com/pufferpanel/pufferpanel/v2.Version=${version}-nixpkgs"
];
src = fetchFromGitHub {
owner = "pufferpanel";
repo = pname;
rev = "v${version}";
hash = "sha256-0Vyi47Rkpe3oODHfsl/7tCerENpiEa3EWBHhfTO/uu4=";
frontend = buildNpmPackage {
pname = "pufferpanel-frontend";
inherit version;
src = "${src}/client";
npmDepsHash = "sha256-oWFXtV/dxzHv3sfIi01l1lHE5tcJgpVq87XgS6Iy62g=";
NODE_OPTIONS = "--openssl-legacy-provider";
npmBuildFlags = [ "--" "--dest=${placeholder "out"}" ];
dontNpmInstall = true;
};
# PufferPanel is split into two parts: the backend daemon and the
# frontend.
# Getting the frontend to build in the Nix environment fails even
# with all the proper node_modules populated. To work around this,
# we just download the built frontend and package that.
frontend = fetchzip {
url = "https://github.com/PufferPanel/PufferPanel/releases/download/v${version}/pufferpanel_${version}_linux_arm64.zip";
hash = "sha256-z7HWhiEBma37OMGEkTGaEbnF++Nat8wAZE2UeOoaO/U=";
stripRoot = false;
postFetch = ''
mv $out $TMPDIR/subdir
mv $TMPDIR/subdir/www $out
'';
};
nativeBuildInputs = [ makeWrapper ];
nativeBuildInputs = [ makeWrapper go-swag ];
vendorHash = "sha256-Esfk7SvqiWeiobXSI+4wYVEH9yVkB+rO7bxUQ5TzvG4=";
proxyVendor = true;
postFixup = ''
mkdir -p $out/share/pufferpanel
cp -r ${src}/assets/email $out/share/pufferpanel/templates
cp -r ${frontend} $out/share/pufferpanel/www
# Generate code for Swagger documentation endpoints (see web/swagger/docs.go).
# Note that GOROOT embedded in go-swag is empty by default since it is built
# with -trimpath (see https://go.dev/cl/399214). It looks like go-swag skips
# file paths that start with $GOROOT, thus all files when it is empty.
preBuild = ''
GOROOT=''${GOROOT-$(go env GOROOT)} swag init --output web/swagger --generalInfo web/loader.go
'';
# Rename cmd to pufferpanel and remove other binaries.
mv $out/bin $TMPDIR/bin
mkdir $out/bin
mv $TMPDIR/bin/cmd $out/bin/pufferpanel
installPhase = ''
runHook preInstall
# Set up directory structure similar to the official PufferPanel releases.
mkdir -p $out/share/pufferpanel
cp "$GOPATH"/bin/cmd $out/share/pufferpanel/pufferpanel
cp -r $frontend $out/share/pufferpanel/www
cp -r $src/assets/email $out/share/pufferpanel/email
cp web/swagger/swagger.{json,yaml} $out/share/pufferpanel
# Wrap the binary with the path to the external files, but allow setting
# custom paths if needed.
wrapProgram $out/bin/pufferpanel \
makeWrapper $out/share/pufferpanel/pufferpanel $out/bin/pufferpanel \
--set-default GIN_MODE release \
--set-default PUFFER_PANEL_EMAIL_TEMPLATES $out/share/pufferpanel/templates/emails.json \
--set-default PUFFER_PANEL_WEB_FILES $out/share/pufferpanel/www \
--prefix PATH : ${lib.escapeShellArg (lib.makeBinPath pathDeps)}
--set-default PUFFER_PANEL_EMAIL_TEMPLATES $out/share/pufferpanel/email/emails.json \
--set-default PUFFER_PANEL_WEB_FILES $out/share/pufferpanel/www
runHook postInstall
'';
passthru.tests = {

View file

@ -1,6 +1,7 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, asciidoc
, libxcb
, xcbutil
@ -19,6 +20,15 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-OelMqenk0tiWMLraekS/ggGf6IsXP7Sz7bv75NvnNvI=";
};
patches = [
(fetchpatch {
# Fixes an issue with overlapping chords when using multiple keyboard layouts.
name = "sxhkd-mod5.patch";
url = "https://github.com/baskerville/sxhkd/pull/307/commits/35e64f1d7b54c97ccc02e84e278012dae9bc3941.patch";
hash = "sha256-bvXWEEITbHC/h0nXQx99SXjvkI/KO36XXNSa1O8KSY0=";
})
];
nativeBuildInputs = [
asciidoc
];
@ -36,7 +46,7 @@ stdenv.mkDerivation (finalAttrs: {
description = "Simple X hotkey daemon";
homepage = "https://github.com/baskerville/sxhkd";
license = licenses.bsd2;
maintainers = with maintainers; [ vyp AndersonTorres ];
maintainers = with maintainers; [ vyp AndersonTorres ncfavier ];
platforms = platforms.linux;
};
})

View file

@ -12,19 +12,19 @@
stdenv.mkDerivation rec {
pname = "uutils-coreutils";
version = "0.0.19";
version = "0.0.20";
src = fetchFromGitHub {
owner = "uutils";
repo = "coreutils";
rev = version;
sha256 = "sha256-ysMSO6VaiaL4Sh5F0VbeAQYOo78lhVQjewZ5lwaCLRM=";
sha256 = "sha256-Xr+RcWvAHyMMaHhcd3ArGeRZzpL76v7fXiHUSSxgj10=";
};
cargoDeps = rustPlatform.fetchCargoTarball {
inherit src;
name = "${pname}-${version}";
hash = "sha256-cBocRWIpG2BQZDPJq4cNNYrFg/MBR3o58fXGHanTn30=";
hash = "sha256-3hUEDE+Yup/+u/ACyAWXYTLerOqB/jtOzECdI540Ag0=";
};
nativeBuildInputs = [ rustPlatform.cargoSetupHook sphinx ];

View file

@ -9874,6 +9874,8 @@ with pkgs;
node2nix = nodePackages.node2nix;
notesnook = callPackage ../applications/misc/notesnook { };
openipmi = callPackage ../tools/system/openipmi { };
ox = callPackage ../applications/editors/ox { };
@ -18390,7 +18392,7 @@ with pkgs;
in if linker == "lld" then llvmPackages.bintools-unwrapped
else if linker == "cctools" then darwin.binutils-unwrapped
else if linker == "bfd" then binutils-unwrapped
else if linker == "gold" then binutils-unwrapped
else if linker == "gold" then binutils-unwrapped.override { enableGoldDefault = true; }
else null;
bintoolsNoLibc = wrapBintoolsWith {
bintools = bintools-unwrapped;
@ -18474,12 +18476,11 @@ with pkgs;
bpftools = callPackage ../os-specific/linux/bpftools { };
bcc = callPackage ../os-specific/linux/bcc {
python = python3;
llvmPackages = llvmPackages_14;
llvmPackages = llvmPackages_16;
};
bpftrace = callPackage ../os-specific/linux/bpftrace {
llvmPackages = llvmPackages_14;
llvmPackages = llvmPackages_16;
};
bpm-tools = callPackage ../tools/audio/bpm-tools { };
@ -35956,9 +35957,7 @@ with pkgs;
xaos = libsForQt5.callPackage ../applications/graphics/xaos { };
xastir = callPackage ../applications/misc/xastir {
rastermagick = imagemagick6;
};
xastir = callPackage ../applications/misc/xastir { };
xautomation = callPackage ../tools/X11/xautomation { };
@ -36473,6 +36472,10 @@ with pkgs;
go-exploitdb = callPackage ../tools/security/go-exploitdb { };
gridcoin-research = libsForQt5.callPackage ../applications/blockchains/gridcoin-research {
boost = boost179;
};
groestlcoin = libsForQt5.callPackage ../applications/blockchains/groestlcoin {
stdenv = darwin.apple_sdk_11_0.stdenv;
withGui = true;
@ -38007,6 +38010,8 @@ with pkgs;
enlightenment = recurseIntoAttrs (callPackage ../desktops/enlightenment { });
expidus = recurseIntoAttrs (callPackage ../desktops/expidus {});
gnome2 = recurseIntoAttrs (callPackage ../desktops/gnome-2 { });
gnome = recurseIntoAttrs (callPackage ../desktops/gnome { });

View file

@ -127,7 +127,6 @@ in {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
kernelPatches.CVE-2023-32233
];
};