Merge master into haskell-updates

This commit is contained in:
github-actions[bot] 2023-05-13 00:11:27 +00:00 committed by GitHub
commit d0e8d8f7cd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
243 changed files with 16489 additions and 6526 deletions

View file

@ -164,6 +164,26 @@ tests.fetchgit = testers.invalidateFetcherByDrvHash fetchgit {
};
```
## `runNixOSTest` {#tester-runNixOSTest}
A helper function that behaves exactly like the NixOS `runTest`, except it also assigns this Nixpkgs package set as the `pkgs` of the test and makes the `nixpkgs.*` options read-only.
If your test is part of the Nixpkgs repository, or if you need a more general entrypoint, see ["Calling a test" in the NixOS manual](https://nixos.org/manual/nixos/stable/index.html#sec-calling-nixos-tests).
Example:
```nix
pkgs.testers.runNixOSTest ({ lib, ... }: {
name = "hello";
nodes.machine = { pkgs, ... }: {
environment.systemPackages = [ pkgs.hello ];
};
testScript = ''
machine.succeed("hello")
'';
})
```
## `nixosTest` {#tester-nixosTest}
Run a NixOS VM network test using this evaluation of Nixpkgs.

View file

@ -535,7 +535,9 @@ directory of the `tokenizers` project's source archive, we use
```nix
{ fetchFromGitHub
, buildPythonPackage
, cargo
, rustPlatform
, rustc
, setuptools-rust
}:
@ -558,11 +560,12 @@ buildPythonPackage rec {
sourceRoot = "source/bindings/python";
nativeBuildInputs = [ setuptools-rust ] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
nativeBuildInputs = [
cargo
rustPlatform.cargoSetupHook
rustc
setuptools-rust
];
# ...
}

View file

@ -12656,9 +12656,9 @@
githubId = 17690377;
};
ppom = {
name = "Paco Pompeani";
email = "paco@ecomail.io";
github = "aopom";
name = "ppom";
email = "ppom@ecomail.fr";
github = "ppom0";
githubId = 38916722;
};
pradeepchhetri = {

View file

@ -4,7 +4,7 @@ This manual describes how to install, use and extend NixOS, a Linux distribution
Additional information regarding the Nix package manager and the Nixpkgs project can be found in respectively the [Nix manual](https://nixos.org/nix/manual) and the [Nixpkgs manual](https://nixos.org/nixpkgs/manual).
If you encounter problems, please report them on the [`Discourse`](https://discourse.nixos.org), the [Matrix room](https://matrix.to/#nix:nixos.org), or on the [`#nixos` channel on Libera.Chat](irc://irc.libera.chat/#nixos). Alternatively, consider [contributing to this manual](#chap-contributing). Bugs should be reported in [NixOS GitHub issue tracker](https://github.com/NixOS/nixpkgs/issues).
If you encounter problems, please report them on the [`Discourse`](https://discourse.nixos.org), the [Matrix room](https://matrix.to/#/%23nix:nixos.org), or on the [`#nixos` channel on Libera.Chat](irc://irc.libera.chat/#nixos). Alternatively, consider [contributing to this manual](#chap-contributing). Bugs should be reported in [NixOS GitHub issue tracker](https://github.com/NixOS/nixpkgs/issues).
::: {.note}
Commands prefixed with `#` have to be run as root, either requiring to login as root user or temporarily switching to it using `sudo` for example.

View file

@ -56,6 +56,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- [gemstash](https://github.com/rubygems/gemstash), a RubyGems.org cache and private gem server. Available as [services.gemstash](#opt-services.gemstash.enable).
- [gitea-actions-runner](https://gitea.com/gitea/act_runner), a CI runner for Gitea/Forgejo Actions. Available as [services.gitea-actions-runner](#opt-services.gitea-actions-runner.instances).
- [gmediarender](https://github.com/hzeller/gmrender-resurrect), a simple, headless UPnP/DLNA renderer. Available as [services.gmediarender](options.html#opt-services.gmediarender.enable).
- [harmonia](https://github.com/nix-community/harmonia/), Nix binary cache implemented in rust using libnix-store. Available as [services.harmonia](options.html#opt-services.harmonia.enable).
@ -265,6 +267,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- [services.xserver.videoDrivers](options.html#opt-services.xserver.videoDrivers) now defaults to the `modesetting` driver over device-specific ones. The `radeon`, `amdgpu` and `nouveau` drivers are still available, but effectively unmaintained and not recommended for use.
- [services.xserver.libinput.enable](options.html#opt-services.xserver.libinput.enable) is now set by default, enabling the more actively maintained and consistently behaved input device driver.
- To enable the HTTP3 (QUIC) protocol for a nginx virtual host, set the `quic` attribute on it to true, e.g. `services.nginx.virtualHosts.<name>.quic = true;`.
- In `services.fail2ban`, `bantime-increment.<name>` options now default to `null` (except `bantime-increment.enable`) and are used to set the corresponding option in `jail.local` only if not `null`. Also, enforce that `bantime-increment.formula` and `bantime-increment.multipliers` are not both specified.

View file

@ -374,6 +374,7 @@
./services/continuous-integration/buildbot/master.nix
./services/continuous-integration/buildbot/worker.nix
./services/continuous-integration/buildkite-agents.nix
./services/continuous-integration/gitea-actions-runner.nix
./services/continuous-integration/github-runner.nix
./services/continuous-integration/github-runners.nix
./services/continuous-integration/gitlab-runner.nix

View file

@ -0,0 +1,237 @@
{ config
, lib
, pkgs
, utils
, ...
}:
let
inherit (lib)
any
attrValues
concatStringsSep
escapeShellArg
hasInfix
hasSuffix
optionalAttrs
optionals
literalExpression
mapAttrs'
mkEnableOption
mkOption
mkPackageOptionMD
mkIf
nameValuePair
types
;
inherit (utils)
escapeSystemdPath
;
cfg = config.services.gitea-actions-runner;
# Check whether any runner instance label requires a container runtime
# Empty label strings result in the upstream defined defaultLabels, which require docker
# https://gitea.com/gitea/act_runner/src/tag/v0.1.5/internal/app/cmd/register.go#L93-L98
hasDockerScheme = instance:
instance.labels == [] || any (label: hasInfix ":docker:" label) instance.labels;
wantsContainerRuntime = any hasDockerScheme (attrValues cfg.instances);
hasHostScheme = instance: any (label: hasSuffix ":host" label) instance.labels;
# provide shorthands for whether container runtimes are enabled
hasDocker = config.virtualisation.docker.enable;
hasPodman = config.virtualisation.podman.enable;
tokenXorTokenFile = instance:
(instance.token == null && instance.tokenFile != null) ||
(instance.token != null && instance.tokenFile == null);
in
{
meta.maintainers = with lib.maintainers; [
hexa
];
options.services.gitea-actions-runner = with types; {
package = mkPackageOptionMD pkgs "gitea-actions-runner" { };
instances = mkOption {
default = {};
description = lib.mdDoc ''
Gitea Actions Runner instances.
'';
type = attrsOf (submodule {
options = {
enable = mkEnableOption (lib.mdDoc "Gitea Actions Runner instance");
name = mkOption {
type = str;
example = literalExpression "config.networking.hostName";
description = lib.mdDoc ''
The name identifying the runner instance towards the Gitea/Forgejo instance.
'';
};
url = mkOption {
type = str;
example = "https://forge.example.com";
description = lib.mdDoc ''
Base URL of your Gitea/Forgejo instance.
'';
};
token = mkOption {
type = nullOr str;
default = null;
description = lib.mdDoc ''
Plain token to register at the configured Gitea/Forgejo instance.
'';
};
tokenFile = mkOption {
type = nullOr (either str path);
default = null;
description = lib.mdDoc ''
Path to an environment file, containing the `TOKEN` environment
variable, that holds a token to register at the configured
Gitea/Forgejo instance.
'';
};
labels = mkOption {
type = listOf str;
example = literalExpression ''
[
# provide a debian base with nodejs for actions
"debian-latest:docker://node:18-bullseye"
# fake the ubuntu name, because node provides no ubuntu builds
"ubuntu-latest:docker://node:18-bullseye"
# provide native execution on the host
#"native:host"
]
'';
description = lib.mdDoc ''
Labels used to map jobs to their runtime environment. Changing these
labels currently requires a new registration token.
Many common actions require bash, git and nodejs, as well as a filesystem
that follows the filesystem hierarchy standard.
'';
};
hostPackages = mkOption {
type = listOf package;
default = with pkgs; [
bash
coreutils
curl
gawk
gitMinimal
gnused
nodejs
wget
];
defaultText = literalExpression ''
with pkgs; [
bash
coreutils
curl
gawk
gitMinimal
gnused
nodejs
wget
]
'';
description = lib.mdDoc ''
List of packages, that are available to actions, when the runner is configured
with a host execution label.
'';
};
};
});
};
};
config = mkIf (cfg.instances != {}) {
assertions = [ {
assertion = any tokenXorTokenFile (attrValues cfg.instances);
message = "Instances of gitea-actions-runner can have `token` or `tokenFile`, not both.";
} {
assertion = wantsContainerRuntime -> hasDocker || hasPodman;
message = "Label configuration on gitea-actions-runner instance requires either docker or podman.";
} ];
systemd.services = let
mkRunnerService = name: instance: let
wantsContainerRuntime = hasDockerScheme instance;
wantsHost = hasHostScheme instance;
wantsDocker = wantsContainerRuntime && config.virtualisation.docker.enable;
wantsPodman = wantsContainerRuntime && config.virtualisation.podman.enable;
in
nameValuePair "gitea-runner-${escapeSystemdPath name}" {
inherit (instance) enable;
description = "Gitea Actions Runner";
after = [
"network-online.target"
] ++ optionals (wantsDocker) [
"docker.service"
] ++ optionals (wantsPodman) [
"podman.service"
];
wantedBy = [
"multi-user.target"
];
environment = optionalAttrs (instance.token != null) {
TOKEN = "${instance.token}";
} // optionalAttrs (wantsPodman) {
DOCKER_HOST = "unix:///run/podman/podman.sock";
};
path = with pkgs; [
coreutils
] ++ lib.optionals wantsHost instance.hostPackages;
serviceConfig = {
DynamicUser = true;
User = "gitea-runner";
StateDirectory = "gitea-runner";
WorkingDirectory = "-/var/lib/gitea-runner/${name}";
ExecStartPre = pkgs.writeShellScript "gitea-register-runner-${name}" ''
export INSTANCE_DIR="$STATE_DIRECTORY/${name}"
mkdir -vp "$INSTANCE_DIR"
cd "$INSTANCE_DIR"
# force reregistration on changed labels
export LABELS_FILE="$INSTANCE_DIR/.labels"
export LABELS_WANTED="$(echo ${escapeShellArg (concatStringsSep "\n" instance.labels)} | sort)"
export LABELS_CURRENT="$(cat $LABELS_FILE 2>/dev/null || echo 0)"
if [ ! -e "$INSTANCE_DIR/.runner" ] || [ "$LABELS_WANTED" != "$LABELS_CURRENT" ]; then
# remove existing registration file, so that changing the labels forces a re-registation
rm -v "$INSTANCE_DIR/.runner" || true
# perform the registration
${cfg.package}/bin/act_runner register --no-interactive \
--instance ${escapeShellArg instance.url} \
--token "$TOKEN" \
--name ${escapeShellArg instance.name} \
--labels ${escapeShellArg (concatStringsSep "," instance.labels)}
# and write back the configured labels
echo "$LABELS_WANTED" > "$LABELS_FILE"
fi
'';
ExecStart = "${cfg.package}/bin/act_runner daemon";
SupplementaryGroups = optionals (wantsDocker) [
"docker"
] ++ optionals (wantsPodman) [
"podman"
];
} // optionalAttrs (instance.tokenFile != null) {
EnvironmentFile = instance.tokenFile;
};
};
in mapAttrs' mkRunnerService cfg.instances;
};
}

View file

@ -8,7 +8,8 @@ let
cmdArgs =
[ "--port" cfg.port ]
++ optionals (cfg.salt != null) [ "--salt" cfg.salt ]
++ optionals (cfg.certDir != null) [ "--tls" cfg.certDir ];
++ optionals (cfg.certDir != null) [ "--tls" cfg.certDir ]
++ cfg.extraArgs;
in
{
@ -33,7 +34,22 @@ in
default = null;
description = lib.mdDoc ''
Salt to allow room operator passwords generated by this server
instance to still work when the server is restarted.
instance to still work when the server is restarted. The salt will be
readable in the nix store and the processlist. If this is not
intended use `saltFile` instead. Mutually exclusive with
<option>services.syncplay.saltFile</option>.
'';
};
saltFile = mkOption {
type = types.nullOr types.path;
default = null;
description = lib.mdDoc ''
Path to the file that contains the server salt. This allows room
operator passwords generated by this server instance to still work
when the server is restarted. `null`, the server doesn't load the
salt from a file. Mutually exclusive with
<option>services.syncplay.salt</option>.
'';
};
@ -46,6 +62,14 @@ in
'';
};
extraArgs = mkOption {
type = types.listOf types.str;
default = [ ];
description = lib.mdDoc ''
Additional arguments to be passed to the service.
'';
};
user = mkOption {
type = types.str;
default = "nobody";
@ -74,21 +98,31 @@ in
};
config = mkIf cfg.enable {
assertions = [
{
assertion = cfg.salt == null || cfg.saltFile == null;
message = "services.syncplay.salt and services.syncplay.saltFile are mutually exclusive.";
}
];
systemd.services.syncplay = {
description = "Syncplay Service";
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" ];
serviceConfig = {
User = cfg.user;
Group = cfg.group;
LoadCredential = lib.mkIf (cfg.passwordFile != null) "password:${cfg.passwordFile}";
LoadCredential = lib.optional (cfg.passwordFile != null) "password:${cfg.passwordFile}"
++ lib.optional (cfg.saltFile != null) "salt:${cfg.saltFile}";
};
script = ''
${lib.optionalString (cfg.passwordFile != null) ''
export SYNCPLAY_PASSWORD=$(cat "''${CREDENTIALS_DIRECTORY}/password")
''}
${lib.optionalString (cfg.saltFile != null) ''
export SYNCPLAY_SALT=$(cat "''${CREDENTIALS_DIRECTORY}/salt")
''}
exec ${pkgs.syncplay-nogui}/bin/syncplay-server ${escapeShellArgs cmdArgs}
'';
};

View file

@ -260,7 +260,9 @@ in {
options = {
services.xserver.libinput = {
enable = mkEnableOption (lib.mdDoc "libinput");
enable = mkEnableOption (lib.mdDoc "libinput") // {
default = true;
};
mouse = mkConfigForDevice "mouse";
touchpad = mkConfigForDevice "touchpad";
};

View file

@ -1,5 +1,26 @@
import ./make-test-python.nix ({ pkgs, lib, ... }: let
inherit (import ./ssh-keys.nix pkgs) snakeOilPrivateKey snakeOilPublicKey;
mkNode = vlan: id: {
virtualisation.vlans = [ vlan ];
networking = {
useDHCP = false;
useNetworkd = true;
};
systemd.network = {
enable = true;
networks."10-eth${toString vlan}" = {
matchConfig.Name = "eth${toString vlan}";
linkConfig.RequiredForOnline = "no";
networkConfig = {
Address = "192.168.${toString vlan}.${toString id}/24";
IPForward = "yes";
};
};
};
};
in {
name = "systemd-networkd-vrf";
meta.maintainers = with lib.maintainers; [ ma27 ];
@ -54,7 +75,7 @@ in {
linkConfig.RequiredForOnline = "no";
networkConfig = {
VRF = "vrf1";
Address = "192.168.1.1";
Address = "192.168.1.1/24";
IPForward = "yes";
};
};
@ -63,78 +84,23 @@ in {
linkConfig.RequiredForOnline = "no";
networkConfig = {
VRF = "vrf2";
Address = "192.168.2.1";
Address = "192.168.2.1/24";
IPForward = "yes";
};
};
};
};
node1 = { pkgs, ... }: {
virtualisation.vlans = [ 1 ];
networking = {
useDHCP = false;
useNetworkd = true;
};
node1 = lib.mkMerge [
(mkNode 1 2)
{
services.openssh.enable = true;
users.users.root.openssh.authorizedKeys.keys = [ snakeOilPublicKey ];
}
];
services.openssh.enable = true;
users.users.root.openssh.authorizedKeys.keys = [ snakeOilPublicKey ];
systemd.network = {
enable = true;
networks."10-eth1" = {
matchConfig.Name = "eth1";
linkConfig.RequiredForOnline = "no";
networkConfig = {
Address = "192.168.1.2";
IPForward = "yes";
};
};
};
};
node2 = { pkgs, ... }: {
virtualisation.vlans = [ 2 ];
networking = {
useDHCP = false;
useNetworkd = true;
};
systemd.network = {
enable = true;
networks."10-eth2" = {
matchConfig.Name = "eth2";
linkConfig.RequiredForOnline = "no";
networkConfig = {
Address = "192.168.2.3";
IPForward = "yes";
};
};
};
};
node3 = { pkgs, ... }: {
virtualisation.vlans = [ 2 ];
networking = {
useDHCP = false;
useNetworkd = true;
};
systemd.network = {
enable = true;
networks."10-eth2" = {
matchConfig.Name = "eth2";
linkConfig.RequiredForOnline = "no";
networkConfig = {
Address = "192.168.2.4";
IPForward = "yes";
};
};
};
};
node2 = mkNode 2 3;
node3 = mkNode 2 4;
};
testScript = ''
@ -159,22 +125,6 @@ in {
node2.wait_for_unit("network.target")
node3.wait_for_unit("network.target")
client_ipv4_table = """
192.168.1.2 dev vrf1 proto static metric 100\x20
192.168.2.3 dev vrf2 proto static metric 100
""".strip()
vrf1_table = """
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1\x20
local 192.168.1.1 dev eth1 proto kernel scope host src 192.168.1.1\x20
broadcast 192.168.1.255 dev eth1 proto kernel scope link src 192.168.1.1
""".strip()
vrf2_table = """
192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.1\x20
local 192.168.2.1 dev eth2 proto kernel scope host src 192.168.2.1\x20
broadcast 192.168.2.255 dev eth2 proto kernel scope link src 192.168.2.1
""".strip()
# editorconfig-checker-enable
# Check that networkd properly configures the main routing table
# and the routing tables for the VRF.
with subtest("check vrf routing tables"):

13
package-lock.patch Normal file
View file

@ -0,0 +1,13 @@
diff --git a/package-lock.json b/package-lock.json
index 5a84fbe7..562051c7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12425,7 +12425,7 @@
"node_modules/pkg-up/node_modules/path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
"dev": true,
"engines": {
"node": ">=4"

View file

@ -2,6 +2,7 @@
, lib
, fetchFromGitLab
, cairo
, cargo
, desktop-file-utils
, gettext
, glib
@ -12,6 +13,7 @@
, pango
, pkg-config
, rustPlatform
, rustc
, wrapGAppsHook4
}:
@ -40,9 +42,9 @@ stdenv.mkDerivation rec {
meson
ninja
pkg-config
rustPlatform.rust.cargo
cargo
rustPlatform.cargoSetupHook
rustPlatform.rust.rustc
rustc
wrapGAppsHook4
];

View file

@ -1,6 +1,7 @@
{ lib
, stdenv
, fetchFromGitLab
, cargo
, meson
, ninja
, pkg-config
@ -14,6 +15,7 @@
, libxml2
, libxkbcommon
, rustPlatform
, rustc
, feedbackd
, wrapGAppsHook
, fetchpatch
@ -54,11 +56,10 @@ stdenv.mkDerivation rec {
glib
wayland
wrapGAppsHook
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
gtk3

View file

@ -2,12 +2,14 @@
, stdenv
, fetchFromGitLab
, rustPlatform
, cargo
, desktop-file-utils
, appstream-glib
, meson
, ninja
, pkg-config
, reuse
, rustc
, m4
, wrapGAppsHook4
, glib
@ -48,11 +50,10 @@ stdenv.mkDerivation rec {
reuse
m4
wrapGAppsHook4
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
glib

View file

@ -3,11 +3,13 @@
, rustPlatform
, fetchFromGitLab
, fetchpatch
, cargo
, meson
, ninja
, gettext
, python3
, pkg-config
, rustc
, glib
, libhandy
, gtk3
@ -55,9 +57,9 @@ stdenv.mkDerivation rec {
pkg-config
gettext
python3
rustPlatform.rust.cargo
cargo
rustPlatform.cargoSetupHook
rustPlatform.rust.rustc
rustc
wrapGAppsHook
glib
];

View file

@ -5,14 +5,14 @@
stdenv.mkDerivation rec {
pname = "helio-workstation";
version = "3.10";
version = "3.11";
src = fetchFromGitHub {
owner = "helio-fm";
repo = pname;
rev = version;
fetchSubmodules = true;
sha256 = "sha256-TqwebaFZXUto+azVJQlggqAc7WKDxAaXxyXcG8x5S/w=";
sha256 = "sha256-ec4ueg6TNo3AaZ81j01OQZzhgOfSzG1/Vd0QhEXOUl0=";
};
buildInputs = [

View file

@ -1,4 +1,5 @@
{ lib
, cargo
, clang
, desktop-file-utils
, fetchFromGitLab
@ -11,6 +12,7 @@
, pipewire
, pkg-config
, rustPlatform
, rustc
, stdenv
}:
@ -38,8 +40,8 @@ stdenv.mkDerivation rec {
ninja
pkg-config
rustPlatform.cargoSetupHook
rustPlatform.rust.cargo
rustPlatform.rust.rustc
cargo
rustc
rustPlatform.bindgenHook
];

View file

@ -2,6 +2,7 @@
, stdenv
, fetchFromGitHub
, appstream-glib
, cargo
, dbus
, desktop-file-utils
, glib
@ -16,6 +17,7 @@
, ninja
, pkg-config
, rustPlatform
, rustc
, wrapGAppsHook4
}:
@ -43,11 +45,10 @@ stdenv.mkDerivation rec {
ninja
pkg-config
wrapGAppsHook4
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
dbus

View file

@ -2,6 +2,7 @@
, stdenv
, fetchFromGitHub
, rustPlatform
, cargo
, meson
, ninja
, pkg-config
@ -10,6 +11,7 @@
, appstream-glib
, desktop-file-utils
, libxml2
, rustc
, wrapGAppsHook4
, openssl
, dbus
@ -47,11 +49,10 @@ stdenv.mkDerivation rec {
desktop-file-utils # update-desktop-database
libxml2 # xmllint
wrapGAppsHook4
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
openssl

View file

@ -5,13 +5,13 @@
stdenv.mkDerivation rec {
pname = "sfizz";
version = "1.2.0";
version = "1.2.1";
src = fetchFromGitHub {
owner = "sfztools";
repo = pname;
rev = version;
sha256 = "sha256-biHsB49Ym9NU4tMOVnUNuIxPtpcIi6oCAS7JBPhxwec=";
sha256 = "sha256-/G9tvJ4AcBSTmo44xDDKf6et1nSn/FV5m27ztDu10kI=";
fetchSubmodules = true;
};

View file

@ -1,6 +1,7 @@
{ stdenv
, lib
, fetchFromGitLab
, cargo
, dbus
, desktop-file-utils
, gdk-pixbuf
@ -15,6 +16,7 @@
, openssl
, pkg-config
, rustPlatform
, rustc
, sqlite
, wrapGAppsHook4
, cmake
@ -47,9 +49,9 @@ stdenv.mkDerivation rec {
meson
ninja
pkg-config
rustPlatform.rust.cargo
cargo
rustPlatform.cargoSetupHook
rustPlatform.rust.rustc
rustc
wrapGAppsHook4
cmake
];

View file

@ -7,7 +7,9 @@
, gettext
, python3
, desktop-file-utils
, cargo
, rustPlatform
, rustc
, pkg-config
, glib
, libadwaita
@ -45,9 +47,9 @@ stdenv.mkDerivation rec {
gtk4 # for gtk-update-icon-cache
glib # for glib-compile-schemas
desktop-file-utils
rustPlatform.rust.cargo
cargo
rustPlatform.cargoSetupHook
rustPlatform.rust.rustc
rustc
wrapGAppsHook4
];

File diff suppressed because it is too large Load diff

View file

@ -1,11 +0,0 @@
--- a/Cargo.lock 2022-04-27 17:25:49.017415644 +0300
+++ b/Cargo.lock 2022-04-27 17:25:51.307433984 +0300
@@ -1722,8 +1722,6 @@
[[package]]
name = "rspotify"
version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eefd7bb58b714606b30a490f751d7926942e2874eef5e82934d60d7a4a68dca4"
dependencies = [
"base64 0.10.1",
"chrono",

View file

@ -1,12 +0,0 @@
--- a/Cargo.toml 2022-04-25 18:20:04.329712912 +0200
+++ b/Cargo.toml 2022-04-25 18:20:44.296429608 +0200
@@ -29,6 +29,9 @@
rand = "0.8.3"
anyhow = "1.0.43"
+[patch.crates-io]
+rspotify = { path = "./rspotify-0.10.0" }
+
[[bin]]
bench = false
path = "src/main.rs"

View file

@ -1,9 +1,7 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchCrate
, fetchpatch
, rustPlatform
, fetchFromGitHub
, stdenv
, installShellFiles
, pkg-config
, openssl
@ -24,62 +22,25 @@ rustPlatform.buildRustPackage rec {
hash = "sha256-L5gg6tjQuYoAC89XfKE38KCFONwSAwfNoFEUPH4jNAI=";
};
cargoPatches = [
# Use patched rspotify
./Cargo.lock.patch
# Needed so that the patch below it applies.
(fetchpatch {
name = "update-dirs.patch";
url = "https://github.com/Rigellute/spotify-tui/commit/3881defc1ed0bcf79df1aef4836b857f64be657c.patch";
hash = "sha256-OGqiYLFojMwR3RgKbddXxPDiAdzPySnscVVsVmTT7t4=";
})
# https://github.com/Rigellute/spotify-tui/pull/990
(fetchpatch {
name = "update-socket2-for-rust-1.64.patch";
url = "https://github.com/Rigellute/spotify-tui/commit/14df9419cf72da13f3b55654686a95647ea9dfea.patch";
hash = "sha256-craY6UwmHDdxih3nZBdPkNJtQ6wvVgf09Ovqdxi0JZo=";
})
];
patches = [
# Use patched rspotify
./Cargo.toml.patch
];
preBuild = let
rspotify = stdenv.mkDerivation rec {
pname = "rspotify";
version = "0.10.0";
src = fetchCrate {
inherit pname version;
sha256 = "sha256-KDtqjVQlMHlhL1xXP3W1YG/YuX9pdCjwW/7g18469Ts=";
};
dontBuild = true;
installPhase = ''
mkdir $out
cp -R . $out
'';
patches = [
# add `collection` variant
./0001-Add-Collection-SearchType.patch
];
};
in ''
ln -s ${rspotify} ./rspotify-${rspotify.version}
'';
cargoHash = "sha256-aZJ6Q/rvqrv+wvQw2eKFPnSROhI5vXPvr5pu1hwtZKA=";
cargoLock = {
lockFile = ./Cargo.lock;
};
nativeBuildInputs = [ installShellFiles ] ++ lib.optionals stdenv.isLinux [ pkg-config python3 ];
buildInputs = [ ]
++ lib.optionals stdenv.isLinux [ openssl libxcb ]
++ lib.optionals stdenv.isDarwin [ AppKit Security ];
postPatch = ''
# update Cargo.lock to fix build
ln -sf ${./Cargo.lock} Cargo.lock
# Add patch adding the collection variant to rspotify used by spotify-tu
# This fixes the issue of getting an error when playing liked songs
# see https://github.com/NixOS/nixpkgs/pull/170915
patch -p1 -d $cargoDepsCopy/rspotify-0.10.0 < ${./0001-Add-Collection-SearchType.patch}
'';
postInstall = ''
for shell in bash fish zsh; do
$out/bin/spt --completions $shell > spt.$shell
@ -91,7 +52,7 @@ rustPlatform.buildRustPackage rec {
description = "Spotify for the terminal written in Rust";
homepage = "https://github.com/Rigellute/spotify-tui";
changelog = "https://github.com/Rigellute/spotify-tui/blob/v${version}/CHANGELOG.md";
license = licenses.mit;
license = with licenses; [ mit /* or */ asl20 ];
maintainers = with maintainers; [ jwijenbergh ];
mainProgram = "spt";
};

View file

@ -3,6 +3,7 @@
, fetchFromGitLab
, rustPlatform
, substituteAll
, cargo
, desktop-file-utils
, git
, itstool
@ -10,6 +11,7 @@
, ninja
, pkg-config
, python3
, rustc
, wrapGAppsHook4
, borgbackup
, gtk4
@ -55,11 +57,10 @@ stdenv.mkDerivation rec {
pkg-config
python3
wrapGAppsHook4
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
gtk4

View file

@ -35,8 +35,6 @@ in
haskell-unicode-input-method = callPackage ./manual-packages/haskell-unicode-input-method { };
header-file-mode = callPackage ./manual-packages/header-file-mode { };
helm-words = callPackage ./manual-packages/helm-words { };
idris2-mode = callPackage ./manual-packages/idris2-mode { };

View file

@ -1,34 +0,0 @@
{ trivialBuild
, lib
, fetchFromGitHub
}:
trivialBuild {
pname = "header-file-mode";
version = "unstable-2022-05-25";
src = fetchFromGitHub {
owner = "aidalgol";
repo = "header-file-mode";
rev = "cf6ce33b436ae9631aece1cd30a459cb0f89d1cd";
sha256 = "sha256-+TDJubmBc0Hl+2ms58rnOf3hTaQE3ayrIpGWl4j39GQ=";
};
postUnpack = ''
sourceRoot="$sourceRoot/lisp"
'';
postBuild = ''
emacs -L . --batch -l package --eval '(package-generate-autoloads "header-file" ".")'
'';
meta = {
description = ''
A major mode that, when associated with the .h file extension, will put
those file into the major mode of their corresponding implementation file.
'';
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ aidalgol ];
};
}

View file

@ -645,6 +645,22 @@ let
};
};
coder.coder-remote = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "coder-remote";
publisher = "coder";
version = "0.1.18";
sha256 = "soNGZuyvG5+haWRcwYmYB+0OcyDAm4UQ419UnEd8waA=";
};
meta = {
description = "An extension for Visual Studio Code to open any Coder workspace in VS Code with a single click.";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=coder.coder-remote";
homepage = "https://github.com/coder/vscode-coder";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.drupol ];
};
};
codezombiech.gitignore = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "gitignore";
@ -1442,11 +1458,31 @@ let
mktplcRef = {
name = "vscode-graphql";
publisher = "GraphQL";
version = "0.8.6";
sha256 = "sha256-iQWDYdz/TG8pxPEq9RirNtY4kwhpK+gO0It6OTdrM+0=";
version = "0.8.7";
sha256 = "sha256-u3VcpgLKiEeUr1I6w71wleKyaO6v0gmHiw5Ama6fv88=";
};
meta = {
description = "GraphQL extension for VSCode built with the aim to tightly integrate the GraphQL Ecosystem with VSCode for an awesome developer experience.";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql";
homepage = "https://github.com/graphql/graphiql/tree/main/packages/vscode-graphql";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.Enzime ];
};
};
graphql.vscode-graphql-syntax = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vscode-graphql-syntax";
publisher = "GraphQL";
version = "1.1.0";
sha256 = "sha256-qazU0UyZ9de6Huj2AYZqqBo4jVW/ZQmFJhV7XXAblxo=";
};
meta = {
description = "Adds full GraphQL syntax highlighting and language support such as bracket matching.";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql-syntax";
homepage = "https://github.com/graphql/graphiql/tree/main/packages/vscode-graphql-syntax";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.Enzime ];
};
};

View file

@ -12,13 +12,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "zsnes2";
version = "2.0.10";
version = "2.0.12";
src = fetchFromGitHub {
owner = "xyproto";
repo = "zsnes";
rev = finalAttrs.version;
hash = "sha256-QFPl3I2nFWMmgQRGxrlt4Vh5N4SygvBLjeFiQpgRr8o=";
hash = "sha256-Xz+9YgMpnHyno7vP67aut4tIyG/gTn7SnU2FO2QMND0=";
};
nativeBuildInputs = [

View file

@ -3,11 +3,13 @@
, fetchFromGitLab
, rustPlatform
, appstream-glib
, cargo
, desktop-file-utils
, glib
, meson
, ninja
, pkg-config
, rustc
, wrapGAppsHook4
, gtk4
, libadwaita
@ -43,11 +45,10 @@ stdenv.mkDerivation rec {
ninja
pkg-config
wrapGAppsHook4
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
gtk4

View file

@ -2,12 +2,14 @@
, stdenv
, fetchFromGitHub
, rustPlatform
, cargo
, pkg-config
, meson
, ninja
, glib
, gtk4
, libadwaita
, rustc
, wrapGAppsHook4
, appstream-glib
, desktop-file-utils
@ -37,11 +39,10 @@ stdenv.mkDerivation rec {
wrapGAppsHook4
appstream-glib
desktop-file-utils
] ++ (with rustPlatform; [
rust.cargo
rust.rustc
cargoSetupHook
]);
cargo
rustc
rustPlatform.cargoSetupHook
];
buildInputs = [
glib

View file

@ -3,9 +3,11 @@
, fetchFromGitLab
, libclang
, rustPlatform
, cargo
, meson
, ninja
, pkg-config
, rustc
, glib
, gtk4
, libadwaita
@ -46,11 +48,10 @@ clangStdenv.mkDerivation rec {
wrapGAppsHook4
appstream-glib
desktop-file-utils
] ++ (with rustPlatform; [
rust.cargo
rust.rustc
cargoSetupHook
]);
cargo
rustc
rustPlatform.cargoSetupHook
];
buildInputs = [
glib

View file

@ -1,11 +1,13 @@
{ stdenv
, lib
, fetchFromGitLab
, cargo
, gettext
, meson
, ninja
, pkg-config
, rustPlatform
, rustc
, wrapGAppsHook4
, appstream-glib
, desktop-file-utils
@ -40,8 +42,8 @@ stdenv.mkDerivation rec {
ninja
pkg-config
rustPlatform.cargoSetupHook
rustPlatform.rust.cargo
rustPlatform.rust.rustc
cargo
rustc
wrapGAppsHook4
appstream-glib
desktop-file-utils

View file

@ -1,5 +1,5 @@
{ stdenv, lib, fetchFromGitHub
, imagemagick, pkg-config, wayland, wayland-protocols
, imagemagick, pkg-config, wayland-scanner, wayland, wayland-protocols
, unstableGitUpdater
}:
@ -14,7 +14,8 @@ stdenv.mkDerivation {
sha256 = "NMQE2zU858b6OZhdS2oZnGvLK+eb7yU0nFaMAcpNw04=";
};
nativeBuildInputs = [ imagemagick pkg-config ];
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [ imagemagick pkg-config wayland-scanner ];
buildInputs = [ wayland wayland-protocols ];
installPhase = ''

View file

@ -6,11 +6,13 @@
, gtk4
, lib
, libadwaita
, cargo
, meson
, ninja
, nix-update-script
, pkg-config
, rustPlatform
, rustc
, stdenv
, wrapGAppsHook4
}:
@ -41,11 +43,10 @@ stdenv.mkDerivation rec {
ninja
pkg-config
wrapGAppsHook4
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
gst_all_1.gst-libav

View file

@ -2,9 +2,11 @@
, stdenv
, rustPlatform
, fetchFromGitHub
, cargo
, meson
, ninja
, pkg-config
, rustc
, wrapGAppsHook4
, appstream-glib
, desktop-file-utils
@ -37,11 +39,10 @@ stdenv.mkDerivation rec {
wrapGAppsHook4
appstream-glib
desktop-file-utils
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
glib

View file

@ -3,6 +3,7 @@
, fetchFromGitHub
, alsa-lib
, appstream-glib
, cargo
, cmake
, desktop-file-utils
, glib
@ -16,6 +17,7 @@
, poppler
, python3
, rustPlatform
, rustc
, shared-mime-info
, wrapGAppsHook4
, AudioUnit
@ -51,8 +53,8 @@ stdenv.mkDerivation rec {
python3 # For the postinstall script
rustPlatform.bindgenHook
rustPlatform.cargoSetupHook
rustPlatform.rust.cargo
rustPlatform.rust.rustc
cargo
rustc
shared-mime-info # For update-mime-database
wrapGAppsHook4
];

View file

@ -1,5 +1,6 @@
{ lib
, mkDerivation
, cargo
, cmake
, corrosion
, extra-cmake-modules
@ -17,6 +18,7 @@
, qqc2-desktop-style
, qtwebengine
, rustPlatform
, rustc
, srcs
# These must be updated in tandem with package updates.
@ -46,11 +48,10 @@ mkDerivation rec {
cmake
corrosion
extra-cmake-modules
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
kconfig

View file

@ -2,11 +2,13 @@
, stdenv
, fetchFromGitLab
, appstream-glib
, cargo
, desktop-file-utils
, meson
, ninja
, pkg-config
, rustPlatform
, rustc
, wrapGAppsHook4
, gdk-pixbuf
, glib
@ -45,12 +47,11 @@ stdenv.mkDerivation rec {
ninja
pkg-config
wrapGAppsHook4
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
bindgenHook
]);
rustPlatform.cargoSetupHook
cargo
rustc
rustPlatform.bindgenHook
];
buildInputs = [
gdk-pixbuf

View file

@ -1,4 +1,5 @@
{ darwin
{ cargo
, darwin
, desktop-file-utils
, fetchFromGitLab
, gettext
@ -12,6 +13,7 @@
, pkg-config
, poppler
, rustPlatform
, rustc
, stdenv
, testers
, wrapGAppsHook4
@ -43,8 +45,8 @@ stdenv.mkDerivation (finalAttrs: {
ninja
pkg-config
rustPlatform.cargoSetupHook
rustPlatform.rust.cargo
rustPlatform.rust.rustc
cargo
rustc
wrapGAppsHook4
];

View file

@ -0,0 +1,2 @@
source 'https://rubygems.org'
gem 'coltrane'

View file

@ -0,0 +1,45 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (7.0.4.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
cli-ui (1.5.1)
color (1.8)
coltrane (4.1.1)
activesupport (> 5.2)
color (~> 1.8)
dry-monads (~> 0.4)
gambiarra (~> 0)
paint (~> 2.0)
concurrent-ruby (1.2.2)
dry-core (0.9.1)
concurrent-ruby (~> 1.0)
zeitwerk (~> 2.6)
dry-equalizer (0.3.0)
dry-monads (0.4.0)
dry-core (~> 0.3, >= 0.3.3)
dry-equalizer
gambiarra (0.0.5)
activesupport (> 5.2)
cli-ui (~> 1.1)
thor (~> 1.1.0)
i18n (1.12.0)
concurrent-ruby (~> 1.0)
minitest (5.18.0)
paint (2.3.0)
thor (1.1.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
zeitwerk (2.6.7)
PLATFORMS
x86_64-linux
DEPENDENCIES
coltrane
BUNDLED WITH
2.3.26

View file

@ -0,0 +1,23 @@
{ lib
, bundlerApp
, bundlerUpdateScript
}:
bundlerApp rec {
pname = "coltrane";
gemdir = ./.;
exes = [ "coltrane" ];
passthru.updateScript = bundlerUpdateScript pname;
meta = with lib; {
homepage = "https://github.com/pedrozath/coltrane";
description = "A music calculation library/CLI";
longDescription = ''
coltrane allows to search for Notes, Chords, Scales for
guitar, bass, piano and ukelele
'';
license = licenses.mit;
maintainers = [ maintainers.panaeon ];
};
}

View file

@ -0,0 +1,159 @@
{
activesupport = {
dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0dmywys50074vj5rivpx188b00qimlc4jn84xzqlialrgp3ckq5f";
type = "gem";
};
version = "7.0.4.2";
};
cli-ui = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1aghiy4qrh6y6q421lcpal81c98zypj8jki4wymqnc8vjvqsyiv4";
type = "gem";
};
version = "1.5.1";
};
color = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "10kgsdy86p72q6cf2k92larmbjc0crvd5xq7hy919zm8yvn1518a";
type = "gem";
};
version = "1.8";
};
coltrane = {
dependencies = ["activesupport" "color" "dry-monads" "gambiarra" "paint"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0hchdllbbx2n2fl3ydidl17rsl18mb9953c8k1r6rw1ibzw8sm7f";
type = "gem";
};
version = "4.1.1";
};
concurrent-ruby = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0krcwb6mn0iklajwngwsg850nk8k9b35dhmc2qkbdqvmifdi2y9q";
type = "gem";
};
version = "1.2.2";
};
dry-core = {
dependencies = ["concurrent-ruby" "zeitwerk"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1dpm9dk11x2zcjsymkl5jcz5nxhffsg7qqy5p6h92cppzbwmm656";
type = "gem";
};
version = "0.9.1";
};
dry-equalizer = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0rsqpk0gjja6j6pjm0whx2px06cxr3h197vrwxp6k042p52r4v46";
type = "gem";
};
version = "0.3.0";
};
dry-monads = {
dependencies = ["dry-core" "dry-equalizer"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1fbji6crgqh88j0p4j1qlfpjnhyf8h1b991dh5wypib0xwzlc5an";
type = "gem";
};
version = "0.4.0";
};
gambiarra = {
dependencies = ["activesupport" "cli-ui" "thor"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "19kpbqp27fy6w990ciw3vx0z0bdmrcf14fr6dlfcn3r8xqpq56fr";
type = "gem";
};
version = "0.0.5";
};
i18n = {
dependencies = ["concurrent-ruby"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1vdcchz7jli1p0gnc669a7bj3q1fv09y9ppf0y3k0vb1jwdwrqwi";
type = "gem";
};
version = "1.12.0";
};
minitest = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0ic7i5z88zcaqnpzprf7saimq2f6sad57g5mkkqsrqrcd6h3mx06";
type = "gem";
};
version = "5.18.0";
};
paint = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1r9vx3wcx0x2xqlh6zqc81wcsn9qjw3xprcsv5drsq9q80z64z9j";
type = "gem";
};
version = "2.3.0";
};
thor = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "18yhlvmfya23cs3pvhr1qy38y41b6mhr5q9vwv5lrgk16wmf3jna";
type = "gem";
};
version = "1.1.0";
};
tzinfo = {
dependencies = ["concurrent-ruby"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "16w2g84dzaf3z13gxyzlzbf748kylk5bdgg3n1ipvkvvqy685bwd";
type = "gem";
};
version = "2.0.6";
};
zeitwerk = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "028ld9qmgdllxrl7d0qkl65s58wb1n3gv8yjs28g43a8b1hplxk1";
type = "gem";
};
version = "2.6.7";
};
}

View file

@ -1,5 +1,8 @@
{ lib, stdenv, fetchFromGitHub, rustPlatform, appstream-glib, desktop-file-utils
, glib, libadwaita, meson, ninja, pkg-config, wrapGAppsHook4, dbus , gtk4, sqlite }:
{ lib, stdenv, fetchFromGitHub, rustPlatform
, appstream-glib, cargo, desktop-file-utils, glib, libadwaita, meson, ninja
, pkg-config, rustc, wrapGAppsHook4
, dbus, gtk4, sqlite
}:
stdenv.mkDerivation rec {
pname = "furtherance";
@ -25,8 +28,8 @@ stdenv.mkDerivation rec {
ninja
pkg-config
rustPlatform.cargoSetupHook
rustPlatform.rust.cargo
rustPlatform.rust.rustc
cargo
rustc
wrapGAppsHook4
];

View file

@ -2,19 +2,19 @@
perlPackages.buildPerlPackage rec {
pname = "get_iplayer";
version = "3.27";
version = "3.31";
src = fetchFromGitHub {
owner = "get-iplayer";
repo = "get_iplayer";
rev = "v${version}";
sha256 = "077y31gg020wjpx5pcivqgkqawcjxh5kjnvq97x2gd7i3wwc30qi";
sha256 = "+ChCF27nmPKbqaZVxsZ6TlbzSdEz6RfMs87NE8xaSRw=";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ perl ];
propagatedBuildInputs = with perlPackages; [
HTMLParser HTTPCookies LWP LWPProtocolHttps XMLLibXML XMLSimple
HTMLParser HTTPCookies LWP LWPProtocolHttps XMLLibXML XMLSimple Mojolicious
];
preConfigure = "touch Makefile.PL";

View file

@ -3,10 +3,12 @@
, fetchFromGitLab
, fetchpatch
, rustPlatform
, cargo
, desktop-file-utils
, meson
, ninja
, pkg-config
, rustc
, wrapGAppsHook
, python3
, git
@ -55,11 +57,10 @@ stdenv.mkDerivation rec {
python3
git
desktop-file-utils
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
glib

View file

@ -6,7 +6,7 @@
buildGoModule rec {
pname = "itd";
version = "1.0.0";
version = "1.1.0";
# https://gitea.arsenm.dev/Arsen6331/itd/tags
src = fetchFromGitea {
@ -14,10 +14,10 @@ buildGoModule rec {
owner = "Arsen6331";
repo = "itd";
rev = "v${version}";
hash = "sha256-von/gvKnm69r/Z3Znm9IW97LfRq4v1cpv5z05h0ahek=";
hash = "sha256-95/9Qy0HhrX+ORuv6g1T4/Eq1hf539lYG5fTkLeY6B0=";
};
vendorHash = "sha256-Sj1ASrb80AgZDfIwmSspArRXSaxP8FlXYi9xyWfCYWk=";
vendorHash = "sha256-ZkAxNs4yDUFBhhmIRtzxQlEQtsa/BTuHy0g3taFcrMM=";
preBuild = ''
echo r${version} > version.txt

View file

@ -9,13 +9,13 @@
buildGoModule rec {
pname = "mob";
version = "4.4.1";
version = "4.4.2";
src = fetchFromGitHub {
owner = "remotemobprogramming";
repo = pname;
rev = "v${version}";
sha256 = "sha256-Ovp+JsNqFcOMk054khSdvPebFsv/fQD1Ghox8J3YcgA=";
sha256 = "sha256-muKlzOrqtegy35QcGJvwYqIJ9XZsaAvyofsrWPqCi7k=";
};
vendorHash = null;

View file

@ -1,9 +1,11 @@
{ lib
, stdenv
, fetchFromGitHub
, cargo
, cmake
, pkg-config
, rustPlatform
, rustc
, wrapQtAppsHook
, ibus
, qtbase
@ -25,8 +27,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [
cmake
pkg-config
rustPlatform.rust.cargo
rustPlatform.rust.rustc
cargo
rustc
rustPlatform.cargoSetupHook
wrapQtAppsHook
];

View file

@ -90,11 +90,11 @@ in
stdenv.mkDerivation rec {
pname = "brave";
version = "1.51.110";
version = "1.51.114";
src = fetchurl {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
sha256 = "sha256-O0nzJvnZU1xIzEtGdp/syQJqS4xMTrWBcNj01dLKc0U=";
sha256 = "sha256-lykwmfGqH5VuWazEQuvTpD4ett4m+LCFmmxzjkULfmk=";
};
dontConfigure = true;

View file

@ -27,7 +27,7 @@ in writeScript "update-${pname}" ''
HOME=`mktemp -d`
export GNUPGHOME=`mktemp -d`
gpg --receive-keys 14F26682D0916CDD81E37B6D61B7B526D98F0353
gpg --receive-keys ADD7079479700DCADFDD5337E36D3B13F3D93274
tmpfile=`mktemp`
url=${baseUrl}

View file

@ -22,7 +22,7 @@ writeScript "update-${attrPath}" ''
set -eux
HOME=`mktemp -d`
export GNUPGHOME=`mktemp -d`
gpg --receive-keys 14F26682D0916CDD81E37B6D61B7B526D98F0353
gpg --receive-keys ADD7079479700DCADFDD5337E36D3B13F3D93274
url=${baseUrl}

View file

@ -1,9 +1,9 @@
{ lib, buildGoModule, fetchFromGitHub, fetchzip, installShellFiles, stdenv }:
let
version = "2.0.0-rc.1";
sha256 = "0hy8jphb6pd24qifnjgzm2jwz93c5rsk08p8k9kl1fzlz7bivg9g";
manifestsSha256 = "0v6skn065hqk0pq5k7c48g68pnpj5har8cfhgbc8xjzg149a22wa";
version = "2.0.0-rc.2";
sha256 = "0b7ls2amzmfjy6hw6kwcmhjj2wdara4igwk2wby6ah2yj5nipb45";
manifestsSha256 = "1xj0g65czl20j8axi6n07sm9ijzmr7vhczfdpx4xqx6m3bl9vqxs";
manifests = fetchzip {
url =
@ -23,7 +23,7 @@ in buildGoModule rec {
inherit sha256;
};
vendorSha256 = "sha256-ifzzNEFXq2VzidaxCTdz7VZOCoA0zPcK6uL0CyBNrE4=";
vendorSha256 = "sha256-HWKpaMHBX8wvG2aDX/U9lI9KNMcbBNxxG3yigYa+VX8=";
postUnpack = ''
cp -r ${manifests} source/cmd/flux/manifests

File diff suppressed because it is too large Load diff

View file

@ -1,45 +1,66 @@
{ lib, fetchFromGitHub, rustPlatform, pkg-config
, libsodium, libarchive, openssl, zeromq }:
{ lib
, rustPlatform
, fetchFromGitHub
, pkg-config
, protobuf
, libsodium
, openssl
, xz
, zeromq
, cacert
}:
rustPlatform.buildRustPackage rec {
pname = "habitat";
# Newer versions required protobuf, which requires some finesse to get to
# compile with the vendored protobuf crate.
version = "0.90.6";
version = "1.6.652";
src = fetchFromGitHub {
owner = "habitat-sh";
repo = "habitat";
rev = version;
sha256 = "0rwi0lkmhlq4i8fba3s9nd9ajhz2dqxzkgfp5i8y0rvbfmhmfd6b";
hash = "sha256-aWQ4A8NxTOauwad1q58Q4IFDUImX/L/4YTCeVLaq8gw=";
};
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"ipc-channel-0.9.0" = "sha256-ZinW3vTsb6dWDRN1/P4TlOlbjiQSHkE6n6f1yEiKsbA=";
"nats-0.3.2" = "sha256-ebZSSczF76FMsYRC9hc4n9yTQVyAD4JgaqpFvGG+01U=";
"zmq-0.8.3" = "sha256-ZydP7ThHvLMWc8snm52Wlhji35Gn5Y2TzzN75UH5xLE=";
"clap-2.33.1" = "sha256-ixyNr91VNB2ce2cIr0CdPmvKYRlckhKLeaSbqxouIAY=";
"configopt-0.1.0" = "sha256-DvpC4WDIzknN5A6+68H7p8bG5lwZ2f+kc9yYhTl16ZM=";
"rants-0.6.0" = "sha256-B8uDoiqddCki3j7aC8kilEcmJjvB4ICjZjjTun2UEkY=";
"retry-1.0.0" = "sha256-ZaHnzOCelV4V0+MTIbH3DXxdz8QZVgcMq2YeV0S6X6o=";
"structopt-0.3.15" = "sha256-0vIX7J7VktKytT3ZnOm45qPRMHDkdJg20eU6pZBIH+Q=";
"zmq-0.9.2" = "sha256-bsDCPYLb9hUr6htPQ7rSoasKAqoWBx5FiEY1gOOtdJQ=";
};
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libsodium libarchive openssl zeromq ];
nativeBuildInputs = [
pkg-config
protobuf
];
cargoBuildFlags = ["--package hab"];
buildInputs = [
libsodium
openssl
xz
zeromq
];
checkPhase = ''
runHook preCheck
echo "Running cargo test"
cargo test --package hab
runHook postCheck
'';
cargoBuildFlags = [ "-p" "hab" ];
cargoTestFlags = cargoBuildFlags;
env = {
OPENSSL_NO_VENDOR = true;
SODIUM_USE_PKG_CONFIG = true;
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
};
meta = with lib; {
description = "An application automation framework";
homepage = "https://www.habitat.sh";
changelog = "https://github.com/habitat-sh/habitat/blob/${src.rev}/CHANGELOG.md";
license = licenses.asl20;
maintainers = with maintainers; [ rushmorem ];
mainProgram = "hab";
platforms = [ "x86_64-linux" ];
};
}

View file

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "kubeshark";
version = "40.1";
version = "40.2";
src = fetchFromGitHub {
owner = "kubeshark";
repo = "kubeshark";
rev = version;
sha256 = "sha256-hRAV8Nnph52Q7fdvW68Ma4DUM0lQdL6e0v1reR/G9Fs=";
sha256 = "sha256-E39Hr39fPiRKElploh2EEE35x0vnyAf2eWHr8Ifx0l0=";
};
vendorHash = "sha256-ckIjmrXkn1AVBQRwM6+wdRwwYHytxKm3rKEe+csORdU=";
@ -55,6 +55,6 @@ buildGoModule rec {
Think TCPDump and Wireshark re-invented for Kubernetes
capturing, dissecting and monitoring all traffic and payloads going in, out and across containers, pods, nodes and clusters.
'';
maintainers = with maintainers; [ bryanasdev000 ];
maintainers = with maintainers; [ bryanasdev000 qjoly ];
};
}

View file

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "rancher";
version = "2.6.11";
version = "2.7.0";
src = fetchFromGitHub {
owner = "rancher";
repo = "cli";
rev = "v${version}";
sha256 = "sha256-1hIYFQ9Uwrm6chPXka0yK2XoZYHqv5lJoyENZmgMAwc=";
sha256 = "sha256-co4LVd5A0bJ4CIuCfv6WyV8XCMbPCFAAcV12WekYrw4=";
};
ldflags = [

View file

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "dnscontrol";
version = "3.31.3";
version = "3.31.4";
src = fetchFromGitHub {
owner = "StackExchange";
repo = pname;
rev = "v${version}";
sha256 = "sha256-jGM/Of5/wSMs7cedbGmgJC05gxxHOCAjjEZ2Qmlxgew=";
sha256 = "sha256-BHsvw4X8HWxAACq+4/rR/XHjVVt0qmAxYETDyp1Z/cg=";
};
vendorHash = "sha256-N7KS48Kr9SipliZ9JhMo2u9pRoE8+pxhC8B/YcZlNyg=";

View file

@ -2,15 +2,15 @@
rustPlatform.buildRustPackage rec {
pname = "cfdyndns";
version = "0.0.3";
version = "0.0.4";
src = fetchFromGitHub {
owner = "colemickens";
repo = "cfdyndns";
rev = "v${version}";
sha256 = "1fba0w2979dmc2wyggqx4fj52rrl1s2vpjk6mkj1811a848l1hdi";
hash = "sha256-kgpTKhMvxuy+Q9M5U/PKJt7pZ2kSQxkCNjNu8aIyutg=";
};
cargoSha256 = "06qbagq4gvm5vk846lxskli02z9lqxsvis6ndq29bj0b9yyvdkay";
cargoHash = "sha256-78TQkRHEbSaCyCM48hH1h8GG0BGJmC2zc7gTZc2t9Nc=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ];

View file

@ -2,9 +2,11 @@
, stdenv
, rustPlatform
, fetchFromGitLab
, cargo
, meson
, ninja
, pkg-config
, rustc
, wrapGAppsHook4
, gdk-pixbuf
, glib
@ -65,11 +67,10 @@ stdenv.mkDerivation (finalAttrs: {
# Provides glib-compile-resources to compile gresources
glib
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
gtk4

View file

@ -7,11 +7,11 @@ let
python = python3.override {
packageOverrides = self: super: {
sqlalchemy = super.sqlalchemy.overridePythonAttrs (old: rec {
version = "1.4.47";
version = "1.4.48";
src = self.fetchPypi {
pname = "SQLAlchemy";
inherit version;
hash = "sha256-lfwC9/wfMZmqpHqKdXQ3E0z2GOnZlMhO/9U/Uww4WG8=";
hash = "sha256-tHvChwltmJoIOM6W99jpZpFKJNqHftQadTHUS1XNuN8=";
};
});
};
@ -19,7 +19,7 @@ let
in
python.pkgs.buildPythonApplication rec {
pname = "flexget";
version = "3.6.3";
version = "3.7.0";
format = "pyproject";
# Fetch from GitHub in order to use `requirements.in`
@ -27,7 +27,7 @@ python.pkgs.buildPythonApplication rec {
owner = "Flexget";
repo = "Flexget";
rev = "refs/tags/v${version}";
hash = "sha256-Z1tiIs4NHHsWa7agAl1dnwliQbgFEl/SPT6QLQkqTVA=";
hash = "sha256-H+R2NPHJbpQToKI1Op+DqPt82+w2xHxHC9NPpiF3aF0=";
};
postPatch = ''

View file

@ -1,6 +1,7 @@
{ lib
, stdenv
, fetchFromGitLab
, cargo
, meson
, ninja
, pkg-config
@ -8,6 +9,7 @@
, libsecret
, libadwaita
, rustPlatform
, rustc
, desktop-file-utils
, wrapGAppsHook4
}:
@ -40,11 +42,10 @@ stdenv.mkDerivation rec {
ninja
pkg-config
wrapGAppsHook4
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
libadwaita

View file

@ -1,9 +1,11 @@
{ stdenv
, lib
, fetchFromGitLab
, cargo
, meson
, ninja
, rustPlatform
, rustc
, pkg-config
, glib
, gtk4
@ -49,8 +51,8 @@ stdenv.mkDerivation rec {
pkg-config
rustPlatform.bindgenHook
rustPlatform.cargoSetupHook
rustPlatform.rust.cargo
rustPlatform.rust.rustc
cargo
rustc
desktop-file-utils
appstream-glib
wrapGAppsHook4

View file

@ -2,11 +2,13 @@
, lib
, fetchFromGitLab
, nix-update-script
, cargo
, meson
, ninja
, gettext
, python3
, rustPlatform
, rustc
, pkg-config
, gtksourceview4
, glib
@ -49,9 +51,9 @@ stdenv.mkDerivation rec {
ninja
pkg-config
python3
rustPlatform.rust.cargo
cargo
rustPlatform.cargoSetupHook
rustPlatform.rust.rustc
rustc
wrapGAppsHook
glib
];

View file

@ -1,59 +0,0 @@
{ stdenv
, lib
, fetchgit
, rustPlatform
, pkg-config
, openssl
, dbus
, sqlite
, file
, makeWrapper
, notmuch
# Build with support for notmuch backend
, withNotmuch ? true
}:
rustPlatform.buildRustPackage rec {
pname = "meli";
version = "alpha-0.7.2";
src = fetchgit {
url = "https://git.meli.delivery/meli/meli.git";
rev = version;
sha256 = "sha256-cbigEJhX6vL+gHa40cxplmPsDhsqujkzQxe0Dr6+SK0=";
};
cargoSha256 = "sha256-ZE653OtXyZ9454bKPApmuL2kVko/hGBWEAya1L1KIoc=";
nativeBuildInputs = [ pkg-config makeWrapper ];
buildInputs = [ openssl dbus sqlite ] ++ lib.optional withNotmuch notmuch;
nativeCheckInputs = [ file ];
buildFeatures = lib.optionals withNotmuch [ "notmuch" ];
postInstall = ''
mkdir -p $out/share/man/man1
gzip < docs/meli.1 > $out/share/man/man1/meli.1.gz
mkdir -p $out/share/man/man5
gzip < docs/meli.conf.5 > $out/share/man/man5/meli.conf.5.gz
gzip < docs/meli-themes.5 > $out/share/man/man5/meli-themes.5.gz
'' + lib.optionalString withNotmuch ''
# Fixes this runtime error when meli is started with notmuch configured:
# $ meli
# libnotmuch5 was not found in your system. Make sure it is installed and
# in the library paths.
# notmuch is not a valid mail backend
wrapProgram $out/bin/meli --set LD_LIBRARY_PATH ${notmuch}/lib
'';
meta = with lib; {
broken = (stdenv.isLinux && stdenv.isAarch64);
description = "Experimental terminal mail client aiming for configurability and extensibility with sane defaults";
homepage = "https://meli.delivery";
license = licenses.gpl3;
maintainers = with maintainers; [ _0x4A6F matthiasbeyer ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,553 @@
From f4cea62ed95e4967d8591f25e903f5e8fc2e2a30 Mon Sep 17 00:00:00 2001
From: Terry Geng <terry@terriex.com>
Date: Mon, 6 Dec 2021 10:45:11 -0500
Subject: [PATCH] BUILD(crypto): Migrate to OpenSSL 3.0-compatible API
OpenSSL 3.0 deprecated several low-level APIs and the usage of them
caused errors/warnings that prevent the binary from being built against
OpenSSL 3.0.
Some primitive efforts have been made in #5317 but were incomplete.
This commit follows https://www.openssl.org/docs/man3.0/man7/migration_guide.html,
https://code.woboq.org/qt6/qtopcua/src/opcua/x509/qopcuakeypair_openssl.cpp.html,
and clears all errors/warnings related to the usage of deprecated APIs.
Fixes #5277
Fixes #4266
---
src/SelfSignedCertificate.cpp | 235 +++++++++++-----------------------
src/SelfSignedCertificate.h | 5 +
src/crypto/CryptStateOCB2.cpp | 53 +++++---
src/crypto/CryptStateOCB2.h | 9 +-
4 files changed, 121 insertions(+), 181 deletions(-)
diff --git a/src/SelfSignedCertificate.cpp b/src/SelfSignedCertificate.cpp
index a77e5fad9..ea0dec4cc 100644
--- a/src/SelfSignedCertificate.cpp
+++ b/src/SelfSignedCertificate.cpp
@@ -5,8 +5,6 @@
#include "SelfSignedCertificate.h"
-#include <openssl/x509v3.h>
-
#define SSL_STRING(x) QString::fromLatin1(x).toUtf8().data()
static int add_ext(X509 *crt, int nid, char *value) {
@@ -28,108 +26,86 @@ static int add_ext(X509 *crt, int nid, char *value) {
return 1;
}
-bool SelfSignedCertificate::generate(CertificateType certificateType, QString clientCertName, QString clientCertEmail,
- QSslCertificate &qscCert, QSslKey &qskKey) {
- bool ok = true;
- X509 *x509 = nullptr;
- EVP_PKEY *pkey = nullptr;
- RSA *rsa = nullptr;
- BIGNUM *e = nullptr;
- X509_NAME *name = nullptr;
- ASN1_INTEGER *serialNumber = nullptr;
- ASN1_TIME *notBefore = nullptr;
- ASN1_TIME *notAfter = nullptr;
- QString commonName;
- bool isServerCert = certificateType == CertificateTypeServerCertificate;
-
- if (CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON) == -1) {
- ok = false;
- goto out;
+EVP_PKEY *SelfSignedCertificate::generate_rsa_keypair() {
+ EVP_PKEY *pkey = EVP_PKEY_new();
+ if (!pkey) {
+ return nullptr;
}
- x509 = X509_new();
- if (!x509) {
- ok = false;
- goto out;
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, nullptr);
+ if (!ctx) {
+ return nullptr;
}
-
- pkey = EVP_PKEY_new();
- if (!pkey) {
- ok = false;
- goto out;
+ if (EVP_PKEY_keygen_init(ctx) <= 0) {
+ return nullptr;
}
-
- rsa = RSA_new();
+ if (EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, 2048) <= 0) {
+ return nullptr;
+ }
+ if (EVP_PKEY_keygen(ctx, &pkey) <= 0) {
+ return nullptr;
+ }
+ EVP_PKEY_CTX_free(ctx);
+#else
+ RSA *rsa = RSA_new();
+ BIGNUM *e = BN_new();
if (!rsa) {
- ok = false;
- goto out;
+ return nullptr;
}
-
- e = BN_new();
if (!e) {
- ok = false;
- goto out;
+ return nullptr;
}
if (BN_set_word(e, 65537) == 0) {
- ok = false;
- goto out;
+ return nullptr;
}
-
if (RSA_generate_key_ex(rsa, 2048, e, nullptr) == 0) {
- ok = false;
- goto out;
+ return nullptr;
}
-
if (EVP_PKEY_assign_RSA(pkey, rsa) == 0) {
- ok = false;
- goto out;
+ return nullptr;
}
+ BN_free(e);
+ RSA_free(rsa);
+#endif
+ return pkey;
+}
- if (X509_set_version(x509, 2) == 0) {
- ok = false;
- goto out;
+#define CHECK(statement) \
+ if (!(statement)) { \
+ ok = false; \
+ goto out; \
}
- serialNumber = X509_get_serialNumber(x509);
- if (!serialNumber) {
- ok = false;
- goto out;
- }
- if (ASN1_INTEGER_set(serialNumber, 1) == 0) {
- ok = false;
- goto out;
- }
- notBefore = X509_get_notBefore(x509);
- if (!notBefore) {
- ok = false;
- goto out;
- }
- if (!X509_gmtime_adj(notBefore, 0)) {
- ok = false;
- goto out;
- }
+bool SelfSignedCertificate::generate(CertificateType certificateType, QString clientCertName, QString clientCertEmail,
+ QSslCertificate &qscCert, QSslKey &qskKey) {
+ bool ok = true;
+ EVP_PKEY *pkey = nullptr;
+ X509 *x509 = nullptr;
+ X509_NAME *name = nullptr;
+ ASN1_INTEGER *serialNumber = nullptr;
+ ASN1_TIME *notBefore = nullptr;
+ ASN1_TIME *notAfter = nullptr;
+ QString commonName;
+ bool isServerCert = certificateType == CertificateTypeServerCertificate;
- notAfter = X509_get_notAfter(x509);
- if (!notAfter) {
- ok = false;
- goto out;
- }
- if (!X509_gmtime_adj(notAfter, 60 * 60 * 24 * 365 * 20)) {
- ok = false;
- goto out;
- }
+ // In Qt 5.15, a class was added to wrap up the procedures of generating a self-signed certificate.
+ // See https://doc.qt.io/qt-5/qopcuax509certificatesigningrequest.html.
+ // We should consider migrating to this class after switching to Qt 5.15.
- if (X509_set_pubkey(x509, pkey) == 0) {
- ok = false;
- goto out;
- }
+ CHECK(pkey = generate_rsa_keypair());
- name = X509_get_subject_name(x509);
- if (!name) {
- ok = false;
- goto out;
- }
+ CHECK(x509 = X509_new());
+ CHECK(X509_set_version(x509, 2));
+ CHECK(serialNumber = X509_get_serialNumber(x509));
+ CHECK(ASN1_INTEGER_set(serialNumber, 1));
+ CHECK(notBefore = X509_get_notBefore(x509));
+ CHECK(X509_gmtime_adj(notBefore, 0));
+ CHECK(notAfter = X509_get_notAfter(x509));
+ CHECK(X509_gmtime_adj(notAfter, 60 * 60 * 24 * 365 * 20))
+ CHECK(X509_set_pubkey(x509, pkey));
+ CHECK(name = X509_get_subject_name(x509));
if (isServerCert) {
commonName = QLatin1String("Murmur Autogenerated Certificate v2");
@@ -141,120 +117,63 @@ bool SelfSignedCertificate::generate(CertificateType certificateType, QString cl
}
}
- if (X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_UTF8,
- reinterpret_cast< unsigned char * >(commonName.toUtf8().data()), -1, -1, 0)
- == 0) {
- ok = false;
- goto out;
- }
+ CHECK(X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_UTF8,
+ reinterpret_cast< unsigned char * >(commonName.toUtf8().data()), -1, -1, 0));
- if (X509_set_issuer_name(x509, name) == 0) {
- ok = false;
- goto out;
- }
+ CHECK(X509_set_issuer_name(x509, name));
- if (add_ext(x509, NID_basic_constraints, SSL_STRING("critical,CA:FALSE")) == 0) {
- ok = false;
- goto out;
- }
+ CHECK(add_ext(x509, NID_basic_constraints, SSL_STRING("critical,CA:FALSE")));
if (isServerCert) {
- if (add_ext(x509, NID_ext_key_usage, SSL_STRING("serverAuth,clientAuth")) == 0) {
- ok = false;
- goto out;
- }
+ CHECK(add_ext(x509, NID_ext_key_usage, SSL_STRING("serverAuth,clientAuth")))
} else {
- if (add_ext(x509, NID_ext_key_usage, SSL_STRING("clientAuth")) == 0) {
- ok = false;
- goto out;
- }
+ CHECK(add_ext(x509, NID_ext_key_usage, SSL_STRING("clientAuth")));
}
- if (add_ext(x509, NID_subject_key_identifier, SSL_STRING("hash")) == 0) {
- ok = false;
- goto out;
- }
+ CHECK(add_ext(x509, NID_subject_key_identifier, SSL_STRING("hash")));
if (isServerCert) {
- if (add_ext(x509, NID_netscape_comment, SSL_STRING("Generated from murmur")) == 0) {
- ok = false;
- goto out;
- }
+ CHECK(add_ext(x509, NID_netscape_comment, SSL_STRING("Generated from murmur")));
} else {
- if (add_ext(x509, NID_netscape_comment, SSL_STRING("Generated by Mumble")) == 0) {
- ok = false;
- goto out;
- }
+ CHECK(add_ext(x509, NID_netscape_comment, SSL_STRING("Generated by Mumble")));
}
if (!isServerCert) {
if (!clientCertEmail.trimmed().isEmpty()) {
- if (add_ext(x509, NID_subject_alt_name,
- QString::fromLatin1("email:%1").arg(clientCertEmail).toUtf8().data())
- == 0) {
- ok = false;
- goto out;
- }
+ CHECK(add_ext(x509, NID_subject_alt_name,
+ QString::fromLatin1("email:%1").arg(clientCertEmail).toUtf8().data()));
}
}
- if (X509_sign(x509, pkey, EVP_sha1()) == 0) {
- ok = false;
- goto out;
- }
+ CHECK(X509_sign(x509, pkey, EVP_sha1()));
{
QByteArray crt;
int len = i2d_X509(x509, nullptr);
- if (len <= 0) {
- ok = false;
- goto out;
- }
+ CHECK(len > 0);
crt.resize(len);
unsigned char *dptr = reinterpret_cast< unsigned char * >(crt.data());
- if (i2d_X509(x509, &dptr) != len) {
- ok = false;
- goto out;
- }
+ CHECK(i2d_X509(x509, &dptr) == len);
qscCert = QSslCertificate(crt, QSsl::Der);
- if (qscCert.isNull()) {
- ok = false;
- goto out;
- }
+ CHECK(!qscCert.isNull());
}
{
QByteArray key;
int len = i2d_PrivateKey(pkey, nullptr);
- if (len <= 0) {
- ok = false;
- goto out;
- }
+ CHECK(len > 0);
key.resize(len);
unsigned char *dptr = reinterpret_cast< unsigned char * >(key.data());
- if (i2d_PrivateKey(pkey, &dptr) != len) {
- ok = false;
- goto out;
- }
+ CHECK(i2d_PrivateKey(pkey, &dptr) == len);
qskKey = QSslKey(key, QSsl::Rsa, QSsl::Der);
- if (qskKey.isNull()) {
- ok = false;
- goto out;
- }
+ CHECK(!qskKey.isNull());
}
out:
- if (e) {
- BN_free(e);
- }
- // We only need to free the pkey pointer,
- // not the RSA pointer. We have assigned
- // our RSA key to pkey, and it will be freed
- // once we free pkey.
if (pkey) {
EVP_PKEY_free(pkey);
}
diff --git a/src/SelfSignedCertificate.h b/src/SelfSignedCertificate.h
index b85a8752b..7c5f59e9c 100644
--- a/src/SelfSignedCertificate.h
+++ b/src/SelfSignedCertificate.h
@@ -6,6 +6,10 @@
#ifndef MUMBLE_SELFSIGNEDCERTIFICATE_H_
#define MUMBLE_SELFSIGNEDCERTIFICATE_H_
+#include <openssl/evp.h>
+#include <openssl/rsa.h>
+#include <openssl/x509v3.h>
+
#include <QtCore/QString>
#include <QtNetwork/QSslCertificate>
#include <QtNetwork/QSslKey>
@@ -16,6 +20,7 @@ class SelfSignedCertificate {
private:
static bool generate(CertificateType certificateType, QString clientCertName, QString clientCertEmail,
QSslCertificate &qscCert, QSslKey &qskKey);
+ static EVP_PKEY *generate_rsa_keypair();
public:
static bool generateMumbleCertificate(QString name, QString email, QSslCertificate &qscCert, QSslKey &qskKey);
diff --git a/src/crypto/CryptStateOCB2.cpp b/src/crypto/CryptStateOCB2.cpp
index 2176d6488..640fdedac 100644
--- a/src/crypto/CryptStateOCB2.cpp
+++ b/src/crypto/CryptStateOCB2.cpp
@@ -30,7 +30,7 @@
#include <cstring>
#include <openssl/rand.h>
-CryptStateOCB2::CryptStateOCB2() : CryptState() {
+CryptStateOCB2::CryptStateOCB2() : CryptState(), enc_ctx(EVP_CIPHER_CTX_new()), dec_ctx(EVP_CIPHER_CTX_new()) {
for (int i = 0; i < 0x100; i++)
decrypt_history[i] = 0;
memset(raw_key, 0, AES_KEY_SIZE_BYTES);
@@ -38,6 +38,11 @@ CryptStateOCB2::CryptStateOCB2() : CryptState() {
memset(decrypt_iv, 0, AES_BLOCK_SIZE);
}
+CryptStateOCB2::~CryptStateOCB2() noexcept {
+ EVP_CIPHER_CTX_free(enc_ctx);
+ EVP_CIPHER_CTX_free(dec_ctx);
+}
+
bool CryptStateOCB2::isValid() const {
return bInit;
}
@@ -46,8 +51,6 @@ void CryptStateOCB2::genKey() {
CryptographicRandom::fillBuffer(raw_key, AES_KEY_SIZE_BYTES);
CryptographicRandom::fillBuffer(encrypt_iv, AES_BLOCK_SIZE);
CryptographicRandom::fillBuffer(decrypt_iv, AES_BLOCK_SIZE);
- AES_set_encrypt_key(raw_key, AES_KEY_SIZE_BITS, &encrypt_key);
- AES_set_decrypt_key(raw_key, AES_KEY_SIZE_BITS, &decrypt_key);
bInit = true;
}
@@ -56,8 +59,6 @@ bool CryptStateOCB2::setKey(const std::string &rkey, const std::string &eiv, con
memcpy(raw_key, rkey.data(), AES_KEY_SIZE_BYTES);
memcpy(encrypt_iv, eiv.data(), AES_BLOCK_SIZE);
memcpy(decrypt_iv, div.data(), AES_BLOCK_SIZE);
- AES_set_encrypt_key(raw_key, AES_KEY_SIZE_BITS, &encrypt_key);
- AES_set_decrypt_key(raw_key, AES_KEY_SIZE_BITS, &decrypt_key);
bInit = true;
return true;
}
@@ -256,10 +257,24 @@ static void inline ZERO(keyblock &block) {
block[i] = 0;
}
-#define AESencrypt(src, dst, key) \
- AES_encrypt(reinterpret_cast< const unsigned char * >(src), reinterpret_cast< unsigned char * >(dst), key);
-#define AESdecrypt(src, dst, key) \
- AES_decrypt(reinterpret_cast< const unsigned char * >(src), reinterpret_cast< unsigned char * >(dst), key);
+#define AESencrypt(src, dst, key) \
+ { \
+ int outlen = 0; \
+ EVP_EncryptInit_ex(enc_ctx, EVP_aes_128_ecb(), NULL, key, NULL); \
+ EVP_CIPHER_CTX_set_padding(enc_ctx, 0); \
+ EVP_EncryptUpdate(enc_ctx, reinterpret_cast< unsigned char * >(dst), &outlen, \
+ reinterpret_cast< const unsigned char * >(src), AES_BLOCK_SIZE); \
+ EVP_EncryptFinal_ex(enc_ctx, reinterpret_cast< unsigned char * >(dst + outlen), &outlen); \
+ }
+#define AESdecrypt(src, dst, key) \
+ { \
+ int outlen = 0; \
+ EVP_DecryptInit_ex(dec_ctx, EVP_aes_128_ecb(), NULL, key, NULL); \
+ EVP_CIPHER_CTX_set_padding(dec_ctx, 0); \
+ EVP_DecryptUpdate(dec_ctx, reinterpret_cast< unsigned char * >(dst), &outlen, \
+ reinterpret_cast< const unsigned char * >(src), AES_BLOCK_SIZE); \
+ EVP_DecryptFinal_ex(dec_ctx, reinterpret_cast< unsigned char * >(dst + outlen), &outlen); \
+ }
bool CryptStateOCB2::ocb_encrypt(const unsigned char *plain, unsigned char *encrypted, unsigned int len,
const unsigned char *nonce, unsigned char *tag, bool modifyPlainOnXEXStarAttack) {
@@ -267,7 +282,7 @@ bool CryptStateOCB2::ocb_encrypt(const unsigned char *plain, unsigned char *encr
bool success = true;
// Initialize
- AESencrypt(nonce, delta, &encrypt_key);
+ AESencrypt(nonce, delta, raw_key);
ZERO(checksum);
while (len > AES_BLOCK_SIZE) {
@@ -299,7 +314,7 @@ bool CryptStateOCB2::ocb_encrypt(const unsigned char *plain, unsigned char *encr
if (flipABit) {
*reinterpret_cast< unsigned char * >(tmp) ^= 1;
}
- AESencrypt(tmp, tmp, &encrypt_key);
+ AESencrypt(tmp, tmp, raw_key);
XOR(reinterpret_cast< subblock * >(encrypted), delta, tmp);
XOR(checksum, checksum, reinterpret_cast< const subblock * >(plain));
if (flipABit) {
@@ -315,7 +330,7 @@ bool CryptStateOCB2::ocb_encrypt(const unsigned char *plain, unsigned char *encr
ZERO(tmp);
tmp[BLOCKSIZE - 1] = SWAPPED(len * 8);
XOR(tmp, tmp, delta);
- AESencrypt(tmp, pad, &encrypt_key);
+ AESencrypt(tmp, pad, raw_key);
memcpy(tmp, plain, len);
memcpy(reinterpret_cast< unsigned char * >(tmp) + len, reinterpret_cast< const unsigned char * >(pad) + len,
AES_BLOCK_SIZE - len);
@@ -325,7 +340,7 @@ bool CryptStateOCB2::ocb_encrypt(const unsigned char *plain, unsigned char *encr
S3(delta);
XOR(tmp, delta, checksum);
- AESencrypt(tmp, tag, &encrypt_key);
+ AESencrypt(tmp, tag, raw_key);
return success;
}
@@ -336,13 +351,13 @@ bool CryptStateOCB2::ocb_decrypt(const unsigned char *encrypted, unsigned char *
bool success = true;
// Initialize
- AESencrypt(nonce, delta, &encrypt_key);
+ AESencrypt(nonce, delta, raw_key);
ZERO(checksum);
while (len > AES_BLOCK_SIZE) {
S2(delta);
XOR(tmp, delta, reinterpret_cast< const subblock * >(encrypted));
- AESdecrypt(tmp, tmp, &decrypt_key);
+ AESdecrypt(tmp, tmp, raw_key);
XOR(reinterpret_cast< subblock * >(plain), delta, tmp);
XOR(checksum, checksum, reinterpret_cast< const subblock * >(plain));
len -= AES_BLOCK_SIZE;
@@ -354,7 +369,7 @@ bool CryptStateOCB2::ocb_decrypt(const unsigned char *encrypted, unsigned char *
ZERO(tmp);
tmp[BLOCKSIZE - 1] = SWAPPED(len * 8);
XOR(tmp, tmp, delta);
- AESencrypt(tmp, pad, &encrypt_key);
+ AESencrypt(tmp, pad, raw_key);
memset(tmp, 0, AES_BLOCK_SIZE);
memcpy(tmp, encrypted, len);
XOR(tmp, tmp, pad);
@@ -372,7 +387,7 @@ bool CryptStateOCB2::ocb_decrypt(const unsigned char *encrypted, unsigned char *
S3(delta);
XOR(tmp, delta, checksum);
- AESencrypt(tmp, tag, &encrypt_key);
+ AESencrypt(tmp, tag, raw_key);
return success;
}
@@ -381,5 +396,5 @@ bool CryptStateOCB2::ocb_decrypt(const unsigned char *encrypted, unsigned char *
#undef SHIFTBITS
#undef SWAPPED
#undef HIGHBIT
-#undef AES_encrypt
-#undef AES_decrypt
+#undef AESencrypt
+#undef AESdecrypt
diff --git a/src/crypto/CryptStateOCB2.h b/src/crypto/CryptStateOCB2.h
index 53d4b4b6a..cc3f1c0bc 100644
--- a/src/crypto/CryptStateOCB2.h
+++ b/src/crypto/CryptStateOCB2.h
@@ -8,8 +8,9 @@
#include "CryptState.h"
-#include <openssl/aes.h>
+#include <openssl/evp.h>
+#define AES_BLOCK_SIZE 16
#define AES_KEY_SIZE_BITS 128
#define AES_KEY_SIZE_BYTES (AES_KEY_SIZE_BITS / 8)
@@ -17,7 +18,7 @@
class CryptStateOCB2 : public CryptState {
public:
CryptStateOCB2();
- ~CryptStateOCB2(){};
+ ~CryptStateOCB2() noexcept override;
virtual bool isValid() const Q_DECL_OVERRIDE;
virtual void genKey() Q_DECL_OVERRIDE;
@@ -43,8 +44,8 @@ private:
unsigned char decrypt_iv[AES_BLOCK_SIZE];
unsigned char decrypt_history[0x100];
- AES_KEY encrypt_key;
- AES_KEY decrypt_key;
+ EVP_CIPHER_CTX *enc_ctx;
+ EVP_CIPHER_CTX *dec_ctx;
};
--
2.38.4

View file

@ -20,6 +20,10 @@ let
pname = overrides.type;
version = source.version;
patches = [
./0001-BUILD-crypto-Migrate-to-OpenSSL-3.0-compatible-API.patch
];
nativeBuildInputs = [ cmake pkg-config python3 qt5.wrapQtAppsHook qt5.qttools ]
++ (overrides.nativeBuildInputs or [ ]);

View file

@ -3,6 +3,7 @@
, fetchFromGitLab
, fetchpatch
, appstream-glib
, cargo
, dbus
, desktop-file-utils
, git
@ -14,6 +15,7 @@
, openssl
, pkg-config
, rustPlatform
, rustc
, sqlite
, transmission
, wrapGAppsHook4
@ -56,11 +58,10 @@ in stdenv.mkDerivation rec {
ninja
pkg-config
wrapGAppsHook4
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
dbus

View file

@ -2,16 +2,16 @@
rustPlatform.buildRustPackage rec {
pname = "synapse-bt";
version = "1.0";
version = "unstable-2023-02-16";
src = fetchFromGitHub {
owner = "Luminarys";
repo = "synapse";
rev = version;
sha256 = "01npv3zwia5d534zdwisd9xfng507adv4qkljf8z0zm0khqqn71a";
rev = "2165fe22589d7255e497d196c1d42b4c2ace1408";
hash = "sha256-2irXNgEK9BjRuNu3DUMElmf2vIpGzwoFneAEe97GRh4=";
};
cargoSha256 = "0sy0vlpkj967g9lyyh7ska8cpw5xh0g04kj071a32idrqc3dcjb1";
cargoHash = "sha256-TwXouPYM7Hg1HEr2KnEPScYFkC52PcQ5kb5aGP1gj9U=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ]

View file

@ -1,8 +1,18 @@
{ lib, fetchFromGitHub, buildPythonApplication, pyside2, twisted, certifi, qt5, enableGUI ? true }:
{ lib
, stdenv
, fetchFromGitHub
, buildPythonApplication
, pyside6
, twisted
, certifi
, qt6
, appnope
, enableGUI ? true
}:
buildPythonApplication rec {
pname = "syncplay";
version = "1.6.9";
version = "1.7.0";
format = "other";
@ -10,14 +20,15 @@ buildPythonApplication rec {
owner = "Syncplay";
repo = "syncplay";
rev = "v${version}";
sha256 = "0qm3qn4a1nahhs7q81liz514n9blsi107g9s9xfw2i8pzi7v9v0v";
sha256 = "sha256-Te81yOv3D6M6aMfC5XrM6/I6BlMdlY1yRk1RRJa9Mxg=";
};
buildInputs = lib.optionals enableGUI [ qt5.qtwayland ];
buildInputs = lib.optionals enableGUI [ (if stdenv.isLinux then qt6.qtwayland else qt6.qtbase) ];
propagatedBuildInputs = [ twisted certifi ]
++ twisted.optional-dependencies.tls
++ lib.optional enableGUI pyside2;
nativeBuildInputs = lib.optionals enableGUI [ qt5.wrapQtAppsHook ];
++ lib.optional enableGUI pyside6
++ lib.optional (stdenv.isDarwin && enableGUI) appnope;
nativeBuildInputs = lib.optionals enableGUI [ qt6.wrapQtAppsHook ];
makeFlags = [ "DESTDIR=" "PREFIX=$(out)" ];
@ -29,7 +40,7 @@ buildPythonApplication rec {
homepage = "https://syncplay.pl/";
description = "Free software that synchronises media players";
license = licenses.asl20;
platforms = platforms.linux;
platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [ Enzime ];
};
}

View file

@ -2,6 +2,7 @@
, stdenv
, fetchFromGitLab
, appstream-glib
, cargo
, desktop-file-utils
, itstool
, meson
@ -9,6 +10,7 @@
, pkg-config
, python3
, rustPlatform
, rustc
, wrapGAppsHook4
, glib
, gtk4
@ -46,11 +48,10 @@ stdenv.mkDerivation rec {
pkg-config
python3
wrapGAppsHook4
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
glib

View file

@ -13,11 +13,11 @@
stdenv.mkDerivation rec {
pname = "appflowy";
version = "0.1.4";
version = "0.1.5";
src = fetchzip {
url = "https://github.com/AppFlowy-IO/appflowy/releases/download/${version}/AppFlowy_x86_64-unknown-linux-gnu_ubuntu-20.04.tar.gz";
sha256 = "sha256-hNk1sypMZYZA1s3rQyaOY5J829PWo2b9Q/VCDcfRKPM=";
sha256 = "sha256-fuA3/suJ9F3mHtNAxlefFGLX0+PHgFZpQycPpxztsPI=";
stripRoot = false;
};
@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
installPhase = ''
runHook preInstall
cd AppFlowy_x86_64-unknown-linux-gnu_ubuntu-20.04/AppFlowy/
cd AppFlowy/
mkdir -p $out/opt/
mkdir -p $out/bin/

View file

@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
meta = with lib; {
description = "Graphical user inteface for GAMESS-US";
description = "Graphical user interface for GAMESS-US";
homepage = "https://brettbode.github.io/wxmacmolplt/";
license = licenses.gpl2Plus;
platforms = platforms.linux;

View file

@ -16,6 +16,7 @@
, libunwind
, appstream
, nixosTests
, fetchpatch
}:
stdenv.mkDerivation rec {
@ -55,6 +56,15 @@ stdenv.mkDerivation rec {
libunwind
];
patches = [
# https://github.com/gnunn1/tilix/issues/2151
(fetchpatch {
name = "tilix-replace-std-xml-with-gmarkup.patch";
url = "https://github.com/gnunn1/tilix/commit/b02779737997a02b98b690e6f8478d28d5e931a5.patch";
hash = "sha256-6p+DomJEZ/hCW8RTjttKsTDsgHZ6eFKj/71TU5O/Ysg=";
})
];
postPatch = ''
chmod +x meson_post_install.py
patchShebangs meson_post_install.py

View file

@ -1,4 +1,4 @@
{ stdenv, lib, fetchFromGitHub, pkg-config, rustPlatform
{ stdenv, lib, fetchFromGitHub, cargo, pkg-config, rustPlatform
, bzip2, curl, zlib, zstd, libiconv, CoreServices
}:
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
};
nativeBuildInputs = [
pkg-config rustPlatform.cargoSetupHook rustPlatform.rust.cargo
pkg-config rustPlatform.cargoSetupHook cargo
];
buildInputs = [ bzip2 curl zlib zstd ]

View file

@ -1,6 +1,6 @@
{ lib, stdenv, fetchurl, fetchpatch, python3Packages, makeWrapper, gettext, installShellFiles
, re2Support ? true
, rustSupport ? stdenv.hostPlatform.isLinux, rustPlatform
, rustSupport ? stdenv.hostPlatform.isLinux, cargo, rustPlatform, rustc
, fullBuild ? false
, gitSupport ? fullBuild
, guiSupport ? fullBuild, tk
@ -44,11 +44,11 @@ let
++ lib.optional gitSupport pygit2
++ lib.optional highlightSupport pygments;
nativeBuildInputs = [ makeWrapper gettext installShellFiles ]
++ lib.optionals rustSupport (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
++ lib.optionals rustSupport [
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [ docutils ]
++ lib.optionals stdenv.isDarwin [ ApplicationServices ];

View file

@ -40,12 +40,12 @@ let
in
stdenv.mkDerivation rec {
pname = "p4";
version = "2022.1.2305383";
version = "2022.2.2407422";
src = fetchurl {
# Upstream replaces minor versions, so use archived URL.
url = "https://web.archive.org/web/20220901184735id_/https://ftp.perforce.com/perforce/r22.1/bin.tools/p4source.tgz";
sha256 = "27ab3ddd7b178b05cf0b710e941650dac0688d294110ebafda9027732c0944c6";
url = "https://web.archive.org/web/20230512173806id_/https://ftp.perforce.com/perforce/r22.2/bin.tools/p4source.tgz";
sha256 = "4355375def3f3d2256d4a92ac1b9960173e7aa97404346c0c74caf23a0905e1b";
};
nativeBuildInputs = [ jam ];

View file

@ -4,10 +4,12 @@
, fetchFromGitHub
, fetchurl
, sd
, cargo
, curl
, pkg-config
, openssl
, rustPlatform
, rustc
, fetchYarnDeps
, yarn
, nodejs
@ -147,11 +149,10 @@ python3Packages.buildPythonApplication {
nativeBuildInputs = [
curl
pkg-config
] ++ (with rustPlatform; [
myCargoSetupHook
rust.cargo
rust.rustc
]);
cargo
rustc
];
buildInputs = [
openssl

View file

@ -2,6 +2,7 @@
, stdenv
, fetchFromGitHub
, appstream-glib
, cargo
, desktop-file-utils
, glib
, gst_all_1
@ -14,6 +15,7 @@
, ninja
, pkg-config
, rustPlatform
, rustc
, wayland
, wrapGAppsHook4
}:
@ -42,8 +44,8 @@ stdenv.mkDerivation rec {
ninja
pkg-config
rustPlatform.cargoSetupHook
rustPlatform.rust.cargo
rustPlatform.rust.rustc
cargo
rustc
wrapGAppsHook4
];

View file

@ -1,25 +1,77 @@
{ stdenv, lib, buildPythonApplication, fetchFromGitHub, pycurl, python-dateutil, configobj, sqlalchemy, sdnotify, flask }:
{ stdenv, lib, python3, fetchFromGitHub, buildNpmPackage, jq }:
buildPythonApplication rec {
let
python = python3.override {
packageOverrides = self: super: {
# pyCA is incompatible with SQLAlchemy 2.0
sqlalchemy = super.sqlalchemy.overridePythonAttrs (old: rec {
version = "1.4.46";
src = self.fetchPypi {
pname = "SQLAlchemy";
inherit version;
hash = "sha256-aRO4JH2KKS74MVFipRkx4rQM6RaB8bbxj2lwRSAMSjA=";
};
});
};
};
frontend = buildNpmPackage rec {
pname = "pyca";
version = "4.5";
src = fetchFromGitHub {
owner = "opencast";
repo = "pyCA";
rev = "v${version}";
sha256 = "sha256-cTkWkOmgxJZlddqaSYKva2wih4Mvsdrd7LD4NggxKQk=";
};
npmDepsHash = "sha256-0U+semrNWTkNu3uQQkiJKZT1hB0/IfkL84G7/oP8XYY=";
nativeBuildInputs = [ jq python ];
postPatch = ''
${jq}/bin/jq '. += {"version": "${version}"}' < package.json > package.json.tmp
mv package.json.tmp package.json
'';
installPhase = ''
mkdir -p $out/static
cp -R pyca/ui/static/* $out/static/
'';
};
in
python3.pkgs.buildPythonApplication rec {
pname = "pyca";
version = "2.1";
version = "4.5";
src = fetchFromGitHub {
owner = "opencast";
repo = "pyCA";
rev = "v${version}";
sha256 = "0cvkmdlcax9da9iw4ls73vw0pxvm8wvchab5gwdy9w9ibqdpcmwh";
sha256 = "sha256-cTkWkOmgxJZlddqaSYKva2wih4Mvsdrd7LD4NggxKQk=";
};
propagatedBuildInputs = [
propagatedBuildInputs = with python.pkgs; [
pycurl
python-dateutil
configobj
sqlalchemy
sdnotify
psutil
flask
prometheus-client
];
postPatch = ''
sed -i -e 's#static_folder=.*#static_folder="${frontend}/static")#' pyca/ui/__init__.py
'';
passthru = {
inherit frontend;
};
meta = with lib; {
broken = stdenv.isDarwin;
description = "A fully functional Opencast capture agent written in Python";

View file

@ -2,8 +2,10 @@
, lib
, fetchFromGitLab
, rustPlatform
, cargo
, pkg-config
, meson
, rustc
, wrapGAppsHook4
, desktop-file-utils
, blueprint-compiler
@ -43,11 +45,10 @@ stdenv.mkDerivation rec {
# `gtk4-update-icon-cache` during installPhase, thanks to:
# https://gitlab.gnome.org/YaLTeR/video-trimmer/-/merge_requests/12
gtk4
] ++ (with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
]);
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
gtk4

View file

@ -5,9 +5,11 @@
, asciidoctor
, buildah
, buildah-unwrapped
, cargo
, libiconv
, libkrun
, makeWrapper
, rustc
, sigtool
}:
@ -27,10 +29,10 @@ stdenv.mkDerivation rec {
hash = "sha256-Y0FNi/+HuN5SqexHTKjcW6lEaeis7xZDYc2/FOAANIA=";
};
nativeBuildInputs = with rustPlatform; [
cargoSetupHook
rust.cargo
rust.rustc
nativeBuildInputs = [
rustPlatform.cargoSetupHook
cargo
rustc
asciidoctor
makeWrapper
] ++ lib.optionals stdenv.isDarwin [ sigtool ];

View file

@ -1,6 +1,7 @@
{ lib
, stdenv
, fetchFromGitHub
, cargo
, desktop-file-utils
, glib
, gtk4
@ -8,6 +9,7 @@
, ninja
, pkg-config
, rustPlatform
, rustc
, wrapGAppsHook4
, gtksourceview5
, libadwaita
@ -38,8 +40,8 @@ stdenv.mkDerivation rec {
ninja
pkg-config
rustPlatform.cargoSetupHook
rustPlatform.rust.cargo
rustPlatform.rust.rustc
cargo
rustc
wrapGAppsHook4
];

View file

@ -1,4 +1,4 @@
{ dotnetPackages, lib, xml2, stdenvNoCC }:
{ lib, python3, stdenvNoCC }:
{ name
, description ? ""
@ -10,21 +10,21 @@ let
inherit name;
meta.description = description;
nativeBuildInputs = [ dotnetPackages.Nuget xml2 ];
nativeBuildInputs = [ python3 ];
buildCommand = ''
export HOME=$(mktemp -d)
mkdir -p $out/{lib,share}
${lib.concatMapStringsSep "\n" (dep: ''
nuget init "${dep}" "$out/lib"
'') deps}
(
shopt -s nullglob
for nupkg in ${lib.concatMapStringsSep " " (dep: "\"${dep}\"/*.nupkg") deps}; do
cp --no-clobber "$nupkg" $out/lib
done
)
# Generates a list of all licenses' spdx ids, if available.
# Note that this currently ignores any license provided in plain text (e.g. "LICENSE.txt")
find "$out/lib" -name "*.nuspec" -exec sh -c \
"NUSPEC=\$(xml2 < {}) && echo "\$NUSPEC" | grep license/@type=expression | tr -s \ '\n' | grep "license=" | cut -d'=' -f2" \
\; | sort -u > $out/share/licenses
python ${./extract-licenses-from-nupkgs.py} $out/lib > $out/share/licenses
'';
} // { # We need data from `$out` for `meta`, so we have to use overrides as to not hit infinite recursion.
meta.licence = let

View file

@ -0,0 +1,30 @@
#!/usr/bin/env python3
"""
Opens each .nupkg file in a directory, and extracts the SPDX license identifiers
from them if they exist. The SPDX license identifier is stored in the
'<license type="expression">...</license>' tag in the .nuspec file.
All found license identifiers will be printed to stdout.
"""
from glob import glob
from pathlib import Path
import sys
import xml.etree.ElementTree as ET
import zipfile
all_licenses = set()
if len(sys.argv) < 2:
print(f"Usage: {sys.argv[0]} DIRECTORY")
sys.exit(1)
nupkg_dir = Path(sys.argv[1])
for nupkg_name in glob("*.nupkg", root_dir=nupkg_dir):
with zipfile.ZipFile(nupkg_dir / nupkg_name) as nupkg:
for nuspec_name in [name for name in nupkg.namelist() if name.endswith(".nuspec")]:
with nupkg.open(nuspec_name) as nuspec_stream:
nuspec = ET.parse(nuspec_stream)
licenses = nuspec.findall(".//{*}license[@type='expression']")
all_licenses.update([license.text for license in licenses])
print("\n".join(sorted(all_licenses)))

View file

@ -21,6 +21,7 @@ callPackage ./generic.nix envargs ({
LISPDIR=$out/share/emacs/site-lisp
install -d $LISPDIR
install *.el *.elc $LISPDIR
emacs --batch -l package --eval "(package-generate-autoloads \"${args.pname}\" \"$LISPDIR\")"
runHook postInstall
'';

View file

@ -3,7 +3,7 @@
{ pname, version, nativeBuildInputs ? [], enableParallelBuilding ? true, ... }@args:
let Dune =
let dune-version = args.duneVersion or "2"; in
let dune-version = args.duneVersion or "3"; in
{ "1" = dune_1; "2" = dune_2; "3" = dune_3; }."${dune-version}"
; in

View file

@ -94,6 +94,20 @@
else salted;
in checked;
# See doc/builders/testers.chapter.md or
# https://nixos.org/manual/nixpkgs/unstable/#tester-runNixOSTest
runNixOSTest =
let nixos = import ../../../nixos/lib {};
in testModule:
nixos.runTest {
_file = "pkgs.runNixOSTest implementation";
imports = [
(lib.setDefaultModuleLocation "the argument that was passed to pkgs.runNixOSTest" testModule)
];
hostPkgs = pkgs;
node.pkgs = pkgs;
};
# See doc/builders/testers.chapter.md or
# https://nixos.org/manual/nixpkgs/unstable/#tester-invalidateFetcherByDrvHash
nixosTest =

View file

@ -14,6 +14,17 @@ in
lib.recurseIntoAttrs {
hasPkgConfigModule = pkgs.callPackage ../hasPkgConfigModule/tests.nix { };
runNixOSTest-example = pkgs-with-overlay.testers.runNixOSTest ({ lib, ... }: {
name = "runNixOSTest-test";
nodes.machine = { pkgs, ... }: {
system.nixos = dummyVersioning;
environment.systemPackages = [ pkgs.proof-of-overlay-hello pkgs.figlet ];
};
testScript = ''
machine.succeed("hello | figlet >/dev/console")
'';
});
# Check that the wiring of nixosTest is correct.
# Correct operation of the NixOS test driver should be asserted elsewhere.
nixosTest-example = pkgs-with-overlay.testers.nixosTest ({ lib, pkgs, figlet, ... }: {

View file

@ -1,25 +1,27 @@
{ lib, fetchurl, stdenvNoCC }:
{ lib, fetchFromGitHub, stdenvNoCC }:
stdenvNoCC.mkDerivation rec {
pname = "carlito";
version = "20130920";
pname = "carlito-unstable";
version = "20230309";
src = fetchurl {
url = "https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/crosextrafonts-carlito-${version}.tar.gz";
sha256 = "sha256-S9ErbLwyHBzxbaduLFhcklzpVqCAZ65vbGTv9sz9r1o=";
src = fetchFromGitHub {
owner = "googlefonts";
repo = "carlito";
rev = "3a810cab78ebd6e2e4eed42af9e8453c4f9b850a";
hash = "sha256-U4TvZZ7n7dr1/14oZkF1Eo96ZcdWIDWron70um77w+E=";
};
installPhase = ''
mkdir -p $out/etc/fonts/conf.d
mkdir -p $out/share/fonts/truetype
cp -v *.ttf $out/share/fonts/truetype
cp -v fonts/ttf/*.ttf $out/share/fonts/truetype
cp -v ${./calibri-alias.conf} $out/etc/fonts/conf.d/30-calibri.conf
'';
meta = with lib; {
# This font doesn't appear to have any official web site but this
# one provides some good information and samples.
homepage = "http://openfontlibrary.org/en/font/carlito";
homepage = "https://github.com/googlefonts/carlito";
description = "A sans-serif font metric-compatible with Microsoft Calibri";
longDescription = ''
Carlito is a free font that is metric-compatible with the

View file

@ -2,11 +2,11 @@
stdenvNoCC.mkDerivation rec {
pname = "gentium";
version = "6.101";
version = "6.200";
src = fetchzip {
url = "http://software.sil.org/downloads/r/gentium/GentiumPlus-${version}.zip";
hash = "sha256-iKD1Q7/lsbZCuJQoJqySQHwplrHv8yzmph+QwKpYgMU=";
hash = "sha256-gpVOtmF4Kp3y1Rm00c4o3WQEskO7mY1Z5SVaYHI0hzg=";
};
installPhase = ''

View file

@ -16,11 +16,11 @@
stdenv.mkDerivation rec {
pname = "mate-terminal";
version = "1.26.0";
version = "1.26.1";
src = fetchurl {
url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "08mgxbviik2dwwnbclp0518wlag2fhcr6c2yadgcbhwiq4aff9vp";
sha256 = "fBMCBvC0eIfoySdOc/jBn65RETRXKGmnwjERt4nh4dA=";
};
nativeBuildInputs = [

View file

@ -10,11 +10,11 @@
stdenv.mkDerivation rec {
pname = "mate-user-guide";
version = "1.26.0";
version = "1.26.1";
src = fetchurl {
url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1h620ngryqc4m8ybvc92ba8404djnm0l65f34mlw38g9ad8d9085";
sha256 = "XQTJdLd/L/OQQkQ4mY6F7ErdjiJnJA51WnqODvd/wi8=";
};
nativeBuildInputs = [

View file

@ -19,11 +19,11 @@
stdenv.mkDerivation rec {
pname = "pluma";
version = "1.26.0";
version = "1.26.1";
src = fetchurl {
url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0lway12q2xygiwjgrx7chgka838jbnmlzz98g7agag1rwzd481ii";
sha256 = "WVns49cRjhBmWfZNIC0O0XY60Qu7ul0qzYy/ui45lPE=";
};
nativeBuildInputs = [

View file

@ -1,25 +1,36 @@
{ lib
, rustPlatform
, fetchCrate
, fetchpatch
, stdenv
, darwin
}:
rustPlatform.buildRustPackage rec {
pname = "hvm";
version = "1.0.0";
version = "1.0.8";
src = fetchCrate {
inherit pname version;
sha256 = "sha256-nPkUGUcekZ2fvQgiVTNvt8vfQsNMyqsrkT2zqEfu/bE=";
hash = "sha256-dPO3GWDojuz7nilOr09xC6tPhBZ95wjAk0ErItzAbxw=";
};
cargoSha256 = "sha256-EaZTpKFZPfDlP/2XylhJHznvlah7VNw4snrKDmT7ecw=";
cargoHash = "sha256-XsKVXlceg3HHGalHcXfmJPKhAQm4DqdsJ2c+NF+AOI4=";
buildInputs = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
darwin.apple_sdk.frameworks.IOKit
] ++ lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
darwin.apple_sdk_11_0.frameworks.Foundation
patches = [
# see https://github.com/higherorderco/hvm/pull/220
# this commit removes the feature to fix build with rust nightly
# but this feature is required with rust stable
(fetchpatch {
name = "revert-fix-remove-feature-automic-mut-ptr.patch";
url = "https://github.com/higherorderco/hvm/commit/c0e35c79b4e31c266ad33beadc397c428e4090ee.patch";
hash = "sha256-9xxu7NOtz3Tuzf5F0Mi4rw45Xnyh7h9hbTrzq4yfslg=";
revert = true;
})
];
buildInputs = lib.optionals stdenv.isDarwin [
darwin.apple_sdk_11_0.frameworks.IOKit
];
# tests are broken
@ -30,7 +41,7 @@ rustPlatform.buildRustPackage rec {
meta = with lib; {
description = "A pure functional compile target that is lazy, non-garbage-collected, and parallel";
homepage = "https://github.com/kindelia/hvm";
homepage = "https://github.com/higherorderco/hvm";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
};

View file

@ -0,0 +1,104 @@
{ autoPatchelfHook, fetchurl, lib, stdenv }:
let
skip_tests = [
# Test flaky on ofborg
"channels"
# Test flaky because of our RPATH patching
# https://github.com/NixOS/nixpkgs/pull/230965#issuecomment-1545336489
"compiler/codegen"
] ++ lib.optionals stdenv.isDarwin [
# Test flaky on ofborg
"FileWatching"
# Test requires pbcopy
"InteractiveUtils"
# Test requires network access
"Sockets"
] ++ lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
# Test Failed at $out/share/julia/stdlib/v1.8/LinearAlgebra/test/blas.jl:702
"LinearAlgebra/blas"
# Test Failed at $out/share/julia/test/misc.jl:724
"misc"
];
in
stdenv.mkDerivation rec {
pname = "julia-bin";
version = "1.9.0";
src = {
x86_64-linux = fetchurl {
url = "https://julialang-s3.julialang.org/bin/linux/x64/${lib.versions.majorMinor version}/julia-${version}-linux-x86_64.tar.gz";
hash = "sha256-AMYURm75gJwusjSA440ZaixXf/8nMMT4PRNbkT1HM1k=";
};
aarch64-linux = fetchurl {
url = "https://julialang-s3.julialang.org/bin/linux/aarch64/${lib.versions.majorMinor version}/julia-${version}-linux-aarch64.tar.gz";
hash = "sha256-ChQxW1Os2X8i0m1Kj9LCN+Uk6Vw77JjS14tU2Awrw2Q=";
};
x86_64-darwin = fetchurl {
url = "https://julialang-s3.julialang.org/bin/mac/x64/${lib.versions.majorMinor version}/julia-${version}-mac64.tar.gz";
hash = "sha256-ALxMJ+6xvr01BZcxL/CRkXYxX9MZnGPslj+0HjsEv68=";
};
aarch64-darwin = fetchurl {
url = "https://julialang-s3.julialang.org/bin/mac/aarch64/${lib.versions.majorMinor version}/julia-${version}-macaarch64.tar.gz";
hash = "sha256-U+YncKaZDVqJ56AB72iqJd4lEmo76DggDEyacF2uo3w=";
};
}.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
patches = [
# https://github.com/JuliaLang/julia/commit/f5eeba35d9bf20de251bb9160cc935c71e8b19ba
./patches/1.9-bin/0001-allow-skipping-internet-required-tests.patch
];
postPatch = ''
# Julia fails to pick up our Certification Authority root certificates, but
# it provides its own so we can simply disable the test. Patching in the
# dynamic path to ours require us to rebuild the Julia system image.
substituteInPlace share/julia/stdlib/v${lib.versions.majorMinor version}/NetworkOptions/test/runtests.jl \
--replace '@test ca_roots_path() != bundled_ca_roots()' \
'@test_skip ca_roots_path() != bundled_ca_roots()'
'';
nativeBuildInputs = lib.optionals stdenv.isLinux [
autoPatchelfHook
# https://github.com/JuliaLang/julia/blob/v1.9.0/NEWS.md#external-dependencies
stdenv.cc.cc
];
installPhase = ''
runHook preInstall
cp -r . $out
runHook postInstall
'';
# Breaks backtraces, etc.
dontStrip = true;
doInstallCheck = true;
preInstallCheck = ''
export JULIA_TEST_USE_MULTIPLE_WORKERS=true
# Some tests require read/write access to $HOME.
export HOME="$TMPDIR"
'';
installCheckPhase = ''
runHook preInstallCheck
# Command lifted from `test/Makefile`.
$out/bin/julia \
--check-bounds=yes \
--startup-file=no \
--depwarn=error \
$out/share/julia/test/runtests.jl \
--skip internet_required ${toString skip_tests}
runHook postInstallCheck
'';
meta = {
description = "High-level, high-performance, dynamic language for technical computing";
homepage = "https://julialang.org";
# Bundled and linked with various GPL code, although Julia itself is MIT.
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ raskin nickcao wegank ];
platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
mainProgram = "julia";
};
}

View file

@ -0,0 +1,50 @@
diff --git a/share/julia/test/choosetests.jl b/share/julia/test/choosetests.jl
index 334ef05..db5f795 100644
--- a/share/julia/test/choosetests.jl
+++ b/share/julia/test/choosetests.jl
@@ -31,6 +31,19 @@ const TESTNAMES = [
"smallarrayshrink", "opaque_closure", "filesystem", "download",
]
+const INTERNET_REQUIRED_LIST = [
+ "Artifacts",
+ "Downloads",
+ "LazyArtifacts",
+ "LibCURL",
+ "LibGit2",
+ "Pkg",
+ "download",
+ "TOML",
+]
+
+const NETWORK_REQUIRED_LIST = vcat(INTERNET_REQUIRED_LIST, ["Sockets"])
+
"""
`(; tests, net_on, exit_on_error, seed) = choosetests(choices)` selects a set of tests to be
run. `choices` should be a vector of test names; if empty or set to
@@ -149,6 +162,7 @@ function choosetests(choices = [])
filtertests!(tests, "compiler/EscapeAnalysis", [
"compiler/EscapeAnalysis/local", "compiler/EscapeAnalysis/interprocedural"])
filtertests!(tests, "stdlib", STDLIBS)
+ filtertests!(tests, "internet_required", INTERNET_REQUIRED_LIST)
# do ambiguous first to avoid failing if ambiguities are introduced by other tests
filtertests!(tests, "ambiguous")
@@ -164,16 +178,7 @@ function choosetests(choices = [])
filter!(x -> x != "rounding", tests)
end
- net_required_for = filter!(in(tests), [
- "Artifacts",
- "Downloads",
- "LazyArtifacts",
- "LibCURL",
- "LibGit2",
- "Sockets",
- "download",
- "TOML",
- ])
+ net_required_for = filter!(in(tests), NETWORK_REQUIRED_LIST)
net_on = true
JULIA_TEST_NETWORKING_AVAILABLE = get(ENV, "JULIA_TEST_NETWORKING_AVAILABLE", "") |>
strip |>

Some files were not shown because too many files have changed in this diff Show more