Merge master into staging-next

master
github-actions[bot] 2021-05-22 00:56:03 +00:00 committed by GitHub
commit 901fb5e64e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
87 changed files with 3511 additions and 1315 deletions

View File

@ -207,6 +207,12 @@
The <option>security.hideProcessInformation</option> module has been removed.
It was broken since the switch to cgroups-v2.
</para>
</listitem>
<listitem>
<para>
The <literal>linuxPackages.ati_drivers_x11</literal> kernel modules have been removed.
The drivers only supported kernels prior to 4.2, and thus have become obsolete.
</para>
</listitem>
<listitem>
<para>
@ -1113,6 +1119,11 @@ environment.systemPackages = [
This prevents NVRAM from filling up, which ensures the latest diagnostic data is always stored and alleviates problems with writing new boot configurations.
</para>
</listitem>
<listitem>
<para>
Nixpkgs now contains <link xlink:href="https://github.com/NixOS/nixpkgs/pull/118232">automatically packaged GNOME Shell extensions</link> from the <link xlink:href="https://extensions.gnome.org/">GNOME Extensions</link> portal. You can find them, filed by their UUID, under <literal>gnome38Extensions</literal> attribute for GNOME 3.38 and under <literal>gnome40Extensions</literal> for GNOME 40. Finally, the <literal>gnomeExtensions</literal> attribute contains extensions for the latest GNOME Shell version in Nixpkgs, listed under a more human-friendly name. The unqualified attribute scope also contains manually packaged extensions. Note that the automatically packaged extensions are provided for convenience and are not checked or guaranteed to work.
</para>
</listitem>
</itemizedlist>
</section>
</section>

View File

@ -316,8 +316,9 @@ class Machine:
start_command += "-cdrom " + args["cdrom"] + " "
if "usb" in args:
# https://github.com/qemu/qemu/blob/master/docs/usb2.txt
start_command += (
"-device piix3-usb-uhci -drive "
"-device usb-ehci -drive "
+ "id=usbdisk,file="
+ args["usb"]
+ ",if=none,readonly "

View File

@ -63,8 +63,7 @@ in
description = ''
On 64-bit systems, whether to support Direct Rendering for
32-bit applications (such as Wine). This is currently only
supported for the <literal>nvidia</literal> and
<literal>ati_unfree</literal> drivers, as well as
supported for the <literal>nvidia</literal> as well as
<literal>Mesa</literal>.
'';
};

View File

@ -1,40 +0,0 @@
# This module provides the proprietary ATI X11 / OpenGL drivers.
{ config, lib, pkgs, ... }:
with lib;
let
drivers = config.services.xserver.videoDrivers;
enabled = elem "ati_unfree" drivers;
ati_x11 = config.boot.kernelPackages.ati_drivers_x11;
in
{
config = mkIf enabled {
nixpkgs.config.xorg.abiCompat = "1.17";
services.xserver.drivers = singleton
{ name = "fglrx"; modules = [ ati_x11 ]; display = true; };
hardware.opengl.package = ati_x11;
hardware.opengl.package32 = pkgs.pkgsi686Linux.linuxPackages.ati_drivers_x11.override { libsOnly = true; kernel = null; };
hardware.opengl.setLdLibraryPath = true;
environment.systemPackages = [ ati_x11 ];
boot.extraModulePackages = [ ati_x11 ];
boot.blacklistedKernelModules = [ "radeon" ];
environment.etc.ati.source = "${ati_x11}/etc/ati";
};
}

View File

@ -76,7 +76,6 @@
./hardware/wooting.nix
./hardware/uinput.nix
./hardware/video/amdgpu-pro.nix
./hardware/video/ati.nix
./hardware/video/capture/mwprocapture.nix
./hardware/video/bumblebee.nix
./hardware/video/displaylink.nix
@ -806,6 +805,7 @@
./services/networking/smartdns.nix
./services/networking/smokeping.nix
./services/networking/softether.nix
./services/networking/solanum.nix
./services/networking/spacecookie.nix
./services/networking/spiped.nix
./services/networking/squid.nix

View File

@ -31,11 +31,11 @@
<link linkend="opt-services.mailman.enable">enable</link> = true;
<link linkend="opt-services.mailman.serve.enable">serve.enable</link> = true;
<link linkend="opt-services.mailman.hyperkitty.enable">hyperkitty.enable</link> = true;
<link linkend="opt-services.mailman.hyperkitty.enable">webHosts</link> = ["lists.example.org"];
<link linkend="opt-services.mailman.hyperkitty.enable">siteOwner</link> = "mailman@example.org";
<link linkend="opt-services.mailman.webHosts">webHosts</link> = ["lists.example.org"];
<link linkend="opt-services.mailman.siteOwner">siteOwner</link> = "mailman@example.org";
};
<link linkend="opt-services.nginx.virtualHosts._name_.enableACME">services.nginx.virtualHosts."lists.example.org".enableACME</link> = true;
<link linkend="opt-services.mailman.hyperkitty.enable">networking.firewall.allowedTCPPorts</link> = [ 25 80 443 ];
<link linkend="opt-networking.firewall.allowedTCPPorts">networking.firewall.allowedTCPPorts</link> = [ 25 80 443 ];
}</programlisting>
</para>
<para>

View File

@ -386,6 +386,10 @@ let
List of relabel configurations.
'';
metric_relabel_configs = mkOpt (types.listOf promTypes.relabel_config) ''
List of metric relabel configurations.
'';
sample_limit = mkDefOpt types.int "0" ''
Per-scrape limit on number of scraped samples that will be accepted.
If more than this number of samples are present after metric relabelling

View File

@ -0,0 +1,104 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkEnableOption mkIf mkOption types;
inherit (pkgs) solanum;
cfg = config.services.solanum;
configFile = pkgs.writeText "solanum.conf" cfg.config;
in
{
###### interface
options = {
services.solanum = {
enable = mkEnableOption "Solanum IRC daemon";
config = mkOption {
type = types.str;
default = ''
serverinfo {
name = "irc.example.com";
sid = "1ix";
description = "irc!";
vhost = "0.0.0.0";
vhost6 = "::";
};
listen {
host = "0.0.0.0";
port = 6667;
};
auth {
user = "*@*";
class = "users";
flags = exceed_limit;
};
channel {
default_split_user_count = 0;
};
'';
description = ''
Solanum IRC daemon configuration file.
check <link xlink:href="https://github.com/solanum-ircd/solanum/blob/main/doc/reference.conf"/> for all options.
'';
};
openFilesLimit = mkOption {
type = types.int;
default = 1024;
description = ''
Maximum number of open files. Limits the clients and server connections.
'';
};
motd = mkOption {
type = types.nullOr types.lines;
default = null;
description = ''
Solanum MOTD text.
Solanum will read its MOTD from <literal>/etc/solanum/ircd.motd</literal>.
If set, the value of this option will be written to this path.
'';
};
};
};
###### implementation
config = mkIf cfg.enable (lib.mkMerge [
{
systemd.services.solanum = {
description = "Solanum IRC daemon";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
environment = {
BANDB_DBPATH = "/var/lib/solanum/ban.db";
};
serviceConfig = {
ExecStart = "${solanum}/bin/solanum -foreground -logfile /dev/stdout -configfile ${configFile} -pidfile /run/solanum/ircd.pid";
DynamicUser = true;
User = "solanum";
StateDirectory = "solanum";
RuntimeDirectory = "solanum";
LimitNOFILE = "${toString cfg.openFilesLimit}";
};
};
}
(mkIf (cfg.motd != null) {
environment.etc."solanum/ircd.motd".text = cfg.motd;
})
]);
}

View File

@ -384,6 +384,7 @@ in
snapcast = handleTest ./snapcast.nix {};
snapper = handleTest ./snapper.nix {};
sogo = handleTest ./sogo.nix {};
solanum = handleTest ./solanum.nix {};
solr = handleTest ./solr.nix {};
sonarr = handleTest ./sonarr.nix {};
spacecookie = handleTest ./spacecookie.nix {};

89
nixos/tests/solanum.nix Normal file
View File

@ -0,0 +1,89 @@
let
clients = [
"ircclient1"
"ircclient2"
];
server = "solanum";
ircPort = 6667;
channel = "nixos-cat";
iiDir = "/tmp/irc";
in
import ./make-test-python.nix ({ pkgs, lib, ... }: {
name = "solanum";
nodes = {
"${server}" = {
networking.firewall.allowedTCPPorts = [ ircPort ];
services.solanum = {
enable = true;
};
};
} // lib.listToAttrs (builtins.map (client: lib.nameValuePair client {
imports = [
./common/user-account.nix
];
systemd.services.ii = {
requires = [ "network.target" ];
wantedBy = [ "default.target" ];
serviceConfig = {
Type = "simple";
ExecPreStartPre = "mkdir -p ${iiDir}";
ExecStart = ''
${lib.getBin pkgs.ii}/bin/ii -n ${client} -s ${server} -i ${iiDir}
'';
User = "alice";
};
};
}) clients);
testScript =
let
msg = client: "Hello, my name is ${client}";
clientScript = client: [
''
${client}.wait_for_unit("network.target")
${client}.systemctl("start ii")
${client}.wait_for_unit("ii")
${client}.wait_for_file("${iiDir}/${server}/out")
''
# wait until first PING from server arrives before joining,
# so we don't try it too early
''
${client}.wait_until_succeeds("grep 'PING' ${iiDir}/${server}/out")
''
# join ${channel}
''
${client}.succeed("echo '/j #${channel}' > ${iiDir}/${server}/in")
${client}.wait_for_file("${iiDir}/${server}/#${channel}/in")
''
# send a greeting
''
${client}.succeed(
"echo '${msg client}' > ${iiDir}/${server}/#${channel}/in"
)
''
# check that all greetings arrived on all clients
] ++ builtins.map (other: ''
${client}.succeed(
"grep '${msg other}$' ${iiDir}/${server}/#${channel}/out"
)
'') clients;
# foldl', but requires a non-empty list instead of a start value
reduce = f: list:
builtins.foldl' f (builtins.head list) (builtins.tail list);
in ''
start_all()
${server}.systemctl("status solanum")
${server}.wait_for_open_port(${toString ircPort})
# run clientScript for all clients so that every list
# entry is executed by every client before advancing
# to the next one.
'' + lib.concatStrings
(reduce
(lib.zipListsWith (cs: c: cs + c))
(builtins.map clientScript clients));
})

View File

@ -14,11 +14,10 @@
, musepackSupport ? true, libmpc, libmpcdec, taglib
, vorbisSupport ? true, libvorbis
, speexSupport ? true, speex
, ffmpegSupport ? true, ffmpeg_3
, ffmpegSupport ? true, ffmpeg
, sndfileSupport ? true, libsndfile
, wavpackSupport ? true, wavpack
# Misc
, withffmpeg4 ? false, ffmpeg_4
, curlSupport ? true, curl
, samplerateSupport ? true, libsamplerate
, withDebug ? false
@ -39,7 +38,7 @@ in stdenv.mkDerivation rec {
};
patches = []
++ opt withffmpeg4 ./moc-ffmpeg4.patch
++ opt ffmpegSupport ./moc-ffmpeg4.patch
++ opt pulseSupport ./pulseaudio.patch;
nativeBuildInputs = [ pkg-config ]
@ -60,8 +59,7 @@ in stdenv.mkDerivation rec {
++ lib.optionals musepackSupport [ libmpc libmpcdec taglib ]
++ opt vorbisSupport libvorbis
++ opt speexSupport speex
++ opt (ffmpegSupport && !withffmpeg4) ffmpeg_3
++ opt (ffmpegSupport && withffmpeg4) ffmpeg_4
++ opt ffmpegSupport ffmpeg
++ opt sndfileSupport libsndfile
++ opt wavpackSupport wavpack
# Misc

View File

@ -655,10 +655,10 @@
elpaBuild {
pname = "corfu";
ename = "corfu";
version = "0.6";
version = "0.8";
src = fetchurl {
url = "https://elpa.gnu.org/packages/corfu-0.6.tar";
sha256 = "0zl769l3mmy4b0pj70dwjllq0224r2w4l45xvaqbj75qfqclj6cj";
url = "https://elpa.gnu.org/packages/corfu-0.8.tar";
sha256 = "1qrrky1g4k5vw56435dgkwnmnri7i51gkydd76as3l0ixm4pnp05";
};
packageRequires = [ emacs ];
meta = {
@ -1738,6 +1738,21 @@
license = lib.licenses.free;
};
}) {};
isearch-mb = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "isearch-mb";
ename = "isearch-mb";
version = "0.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/isearch-mb-0.2.tar";
sha256 = "1mfjppv33cb5f5f6cc1486msxjxfjnnkryc1yax43k6fgzjr0j4h";
};
packageRequires = [ emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/isearch-mb.html";
license = lib.licenses.free;
};
}) {};
iterators = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "iterators";
@ -2544,10 +2559,10 @@
elpaBuild {
pname = "org";
ename = "org";
version = "9.4.5";
version = "9.4.6";
src = fetchurl {
url = "https://elpa.gnu.org/packages/org-9.4.5.tar";
sha256 = "0h5qhrd984vf17qc227wz68191xfgbpq32dyhw0lcz2d9i0pl3xk";
url = "https://elpa.gnu.org/packages/org-9.4.6.tar";
sha256 = "1k49ymsi77366as2wi4kzv2f1xnbwpb47iw7iw07yxwlhmm7vskq";
};
packageRequires = [ emacs ];
meta = {
@ -2829,10 +2844,10 @@
elpaBuild {
pname = "pyim";
ename = "pyim";
version = "3.7.5";
version = "3.7.6";
src = fetchurl {
url = "https://elpa.gnu.org/packages/pyim-3.7.5.tar";
sha256 = "09f34wgzckbxgr5xvaqrj0wdcmnfsb31a6m460f5g0acys20ams5";
url = "https://elpa.gnu.org/packages/pyim-3.7.6.tar";
sha256 = "1crimmvyppjmds9shfvxy9j5zi3mk133bv5av0fgicm7ddkivksr";
};
packageRequires = [ async emacs xr ];
meta = {
@ -3955,10 +3970,10 @@
elpaBuild {
pname = "vertico";
ename = "vertico";
version = "0.8";
version = "0.10";
src = fetchurl {
url = "https://elpa.gnu.org/packages/vertico-0.8.tar";
sha256 = "1cdq49csd57vqhrs1nbif79yw4s8c0p2i2ww5n5znzj7rnxwpva4";
url = "https://elpa.gnu.org/packages/vertico-0.10.tar";
sha256 = "07bzhxgp3k6q4wl9ijhx4vg8diinn782xhr8axn790a5vj199j78";
};
packageRequires = [ emacs ];
meta = {

View File

@ -5,8 +5,9 @@
To update the list of packages from MELPA,
1. Run `./update-elpa`.
2. Check for evaluation errors: `nix-instantiate ../../../.. -A emacs.pkgs.elpaPackages`.
3. `git commit -m "elpa-packages $(date -Idate)" -- elpa-generated.nix`
2. Check for evaluation errors:
`nix-instantiate ../../../../../ -A emacs.pkgs.elpaPackages`.
3. Run `git commit -m "elpa-packages $(date -Idate)" -- elpa-generated.nix`
## Update from overlay
@ -15,8 +16,8 @@ Alternatively, run the following command:
./update-from-overlay
It will update both melpa and elpa packages using
https://github.com/nix-community/emacs-overlay. It's almost
instantenous and formats commits for you.
https://github.com/nix-community/emacs-overlay. It's almost instantenous and
formats commits for you.
*/
@ -30,7 +31,7 @@ self: let
});
};
elpaBuild = import ../../../build-support/emacs/elpa.nix {
elpaBuild = import ../../../../build-support/emacs/elpa.nix {
inherit lib stdenv texinfo writeText;
inherit (self) emacs;
};

View File

@ -1,5 +1,5 @@
let
pkgs = import ../../../.. { };
pkgs = import ../../../../.. { };
src = pkgs.fetchgit {
url = "https://github.com/ttuegel/emacs2nix.git";

View File

@ -211,13 +211,19 @@
# From old emacsPackages (pre emacsPackagesNg)
cedet = callPackage ./cedet { };
cedille = callPackage ./cedille { cedille = pkgs.cedille; };
colorThemeSolarized = callPackage ./color-theme-solarized { };
emacsSessionManagement = callPackage ./session-management-for-emacs { };
color-theme-solarized = callPackage ./color-theme-solarized { };
session-management-for-emacs = callPackage ./session-management-for-emacs { };
hsc3-mode = callPackage ./hsc3 { };
ido-ubiquitous = callPackage ./ido-ubiquitous { };
prolog-mode = callPackage ./prolog { };
rectMark = callPackage ./rect-mark { };
sunriseCommander = callPackage ./sunrise-commander { };
rect-mark = callPackage ./rect-mark { };
sunrise-commander = callPackage ./sunrise-commander { };
# camelCase aliases for some of the kebab-case expressions above
colorThemeSolarized = color-theme-solarized;
emacsSessionManagement = session-management-for-emacs;
rectMark = rect-mark;
sunriseCommander = sunrise-commander;
# Legacy aliases, these try to mostly map to melpa stable because it's
# closer to the old outdated package infra.

View File

@ -4,11 +4,11 @@
To update the list of packages from MELPA,
1. Run ./update-melpa
1. Run `./update-melpa`
2. Check for evaluation errors:
env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacs.pkgs..melpaStablePackages
env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacs.pkgs..melpaPackages
3. `git commit -m "melpa-packages: $(date -Idate)" recipes-archive-melpa.json`
env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../../ -A emacs.pkgs.melpaStablePackages
env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../../ -A emacs.pkgs.melpaPackages
3. Run `git commit -m "melpa-packages: $(date -Idate)" recipes-archive-melpa.json`
## Update from overlay
@ -17,8 +17,8 @@ Alternatively, run the following command:
./update-from-overlay
It will update both melpa and elpa packages using
https://github.com/nix-community/emacs-overlay. It's almost
instantenous and formats commits for you.
https://github.com/nix-community/emacs-overlay. It's almost instantenous and
formats commits for you.
*/

View File

@ -4,10 +4,10 @@
elpaBuild {
pname = "org";
ename = "org";
version = "20210510";
version = "20210519";
src = fetchurl {
url = "https://orgmode.org/elpa/org-20210510.tar";
sha256 = "015c68pk52vksar7kpyb0nkcyjihlczmpq4h5vdv8xayas2qlzc7";
url = "https://orgmode.org/elpa/org-20210519.tar";
sha256 = "14vchfg69wai1yxv1fzvjk185gnfr7d9qrdijf0qmbbr5znci8rf";
};
packageRequires = [];
meta = {
@ -19,10 +19,10 @@
elpaBuild {
pname = "org-plus-contrib";
ename = "org-plus-contrib";
version = "20210510";
version = "20210519";
src = fetchurl {
url = "https://orgmode.org/elpa/org-plus-contrib-20210510.tar";
sha256 = "0pdwjnpcsk75jv4qs8n4xia6vspwn6dndbdx9z7kq5vqz7w4ykmw";
url = "https://orgmode.org/elpa/org-plus-contrib-20210519.tar";
sha256 = "0g765fsc7ssn779xnhjzrxy1sz5b019h7dk1q26yk2w6i540ybfl";
};
packageRequires = [];
meta = {

View File

@ -5,8 +5,8 @@
To update the list of packages from Org (ELPA),
1. Run `./update-org`.
2. Check for evaluation errors: `nix-instantiate ../../../.. -A emacs.pkgs.orgPackages`.
3. `git commit -m "org-packages $(date -Idate)" -- org-generated.nix`
2. Check for evaluation errors: `nix-instantiate ../../../../.. -A emacs.pkgs.orgPackages`.
3. Run `git commit -m "org-packages $(date -Idate)" -- org-generated.nix`
*/

View File

@ -8,14 +8,14 @@ export NIXPKGS_ALLOW_BROKEN=1
# You can use this to avoid running lengthy code generation jobs locally
curl -s -O https://raw.githubusercontent.com/nix-community/emacs-overlay/master/repos/elpa/elpa-generated.nix
nix-instantiate ../../../.. -A emacs.pkgs.elpaPackages --show-trace
nix-instantiate ../../../../../ -A emacs.pkgs.elpaPackages --show-trace
git diff --exit-code elpa-generated.nix > /dev/null || git commit -m "emacs.pkgs.elpa-packages: $(date --iso)" -- elpa-generated.nix
curl -s -O https://raw.githubusercontent.com/nix-community/emacs-overlay/master/repos/org/org-generated.nix
nix-instantiate ../../../.. -A emacs.pkgs.orgPackages --show-trace
nix-instantiate ../../../../../ -A emacs.pkgs.orgPackages --show-trace
git diff --exit-code org-generated.nix > /dev/null || git commit -m "emacs.pkgs.org-packages: $(date --iso)" -- org-generated.nix
curl -s -O https://raw.githubusercontent.com/nix-community/emacs-overlay/master/repos/melpa/recipes-archive-melpa.json
nix-instantiate --show-trace ../../../../ -A emacs.pkgs.melpaStablePackages
nix-instantiate --show-trace ../../../../ -A emacs.pkgs.melpaPackages
nix-instantiate --show-trace ../../../../../ -A emacs.pkgs.melpaStablePackages
nix-instantiate --show-trace ../../../../../ -A emacs.pkgs.melpaPackages
git diff --exit-code recipes-archive-melpa.json > /dev/null || git commit -m "emacs.pkgs.melpa-packages: $(date --iso)" -- recipes-archive-melpa.json

View File

@ -1,5 +1,5 @@
let
pkgs = import ../../../.. {};
pkgs = import ../../../../.. {};
emacsEnv = pkgs.emacs.pkgs.withPackages (epkgs: let

View File

@ -1,6 +1,6 @@
{ lib, stdenv, makeDesktopItem, fetchurl, unzip
, gdk-pixbuf, glib, gtk3, atk, at-spi2-atk, pango, cairo, freetype, fontconfig, dbus, nss, nspr, alsaLib, cups, expat, udev, gnome
, xorg, mozjpeg, makeWrapper, wrapGAppsHook, libuuid, at-spi2-core, libdrm, mesa
, xorg, mozjpeg, makeWrapper, wrapGAppsHook, libuuid, at-spi2-core, libdrm, mesa, libxkbcommon
}:
stdenv.mkDerivation rec {
@ -33,6 +33,8 @@ stdenv.mkDerivation rec {
udev
libX11
libxcb
libxshmfence
libxkbcommon
libXi
libXcursor
libXdamage

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "cloudflared";
version = "2021.5.7";
version = "2021.5.9";
src = fetchFromGitHub {
owner = "cloudflare";
repo = "cloudflared";
rev = version;
sha256 = "sha256-ekQ5cfQo6/IUIhYaVgyAqbHAaHABL55zhIpqLy6tQ8g=";
sha256 = "sha256-Ojbn4QRNZWkSF9RUtFt7roGbt/6l5SFAqEXBCcTJvRI=";
};
vendorSha256 = null;

View File

@ -10,7 +10,7 @@
, cyrus_sasl
, fetchFromGitLab
, fetchurl
, ffmpeg_3
, ffmpeg
, gdk-pixbuf
, glib
, gnused
@ -87,7 +87,7 @@ mkDerivation rec {
bzrtp
cairo
cyrus_sasl
ffmpeg_3
ffmpeg
gdk-pixbuf
glib
gtk2

View File

@ -0,0 +1,26 @@
# GNOME Shell extensions
All extensions are packaged automatically. They can be found in the `pkgs.gnomeXYExtensions` for XY being a GNOME version. The package names are the extensions UUID, which can be a bit unwieldy to use. `pkgs.gnomeExtensions` is a set of manually curated extensions that match the current `gnome.gnome-shell` versions. Their name is human-friendly, compared to the other extensions sets. Some of its extensions are manually packaged.
## Automatically packaged extensions
The actual packages are created by `buildGnomeExtensions.nix`, provided the correct arguments are fed into it. The important extension data is stored in `extensions.json`, one line/item per extension. That file is generated by running `update-extensions.py`. Furthermore, the automatic generated names are dumped in `collisions.json` for manual inspection. `extensionRenames.nix` contains provides new names for all extensions that collide.
### Extensions updates
For everyday updates,
1. Run `update-extensions.py`.
2. Update `extensionRenames.nix` according to the comment at the top.
For GNOME updates,
1. Add a new `gnomeXYExtensions` set
2. Remove old ones for GNOME versions we dont want to support any more
3. Update `supported_versions` in `./update-extensions.py` and re-run it
4. Change `gnomeExtensions` to the new version
5. Update `./extensionsRenames.nix` accordingly
## Manually packaged extensions
Manually packaged extensions overwrite some of the automatically packaged ones in `pkgs.gnomeExtensions`. They are listed in `manuallyPackaged.nix`, every extension has its own sub-folder.

View File

@ -0,0 +1,54 @@
{ pkgs, lib, stdenv, fetchzip }:
let
buildGnomeExtension = {
# Every gnome extension has a UUID. It's the name of the extension folder once unpacked
# and can always be found in the metadata.json of every extension.
uuid,
name,
pname,
description,
# extensions.gnome.org extension URL
link,
# Extension version numbers are integers
version,
sha256,
# Hex-encoded string of JSON bytes
metadata,
}:
stdenv.mkDerivation {
inherit pname;
version = builtins.toString version;
src = fetchzip {
url = "https://extensions.gnome.org/extension-data/${
builtins.replaceStrings [ "@" ] [ "" ] uuid
}.v${builtins.toString version}.shell-extension.zip";
inherit sha256;
stripRoot = false;
# The download URL may change content over time. This is because the
# metadata.json is automatically generated, and parts of it can be changed
# without making a new release. We simply substitute the possibly changed fields
# with their content from when we last updated, and thus get a deterministic output
# hash.
extraPostFetch = ''
echo "${metadata}" | base64 --decode > $out/metadata.json
'';
};
buildCommand = ''
mkdir -p $out/share/gnome-shell/extensions/
cp -r -T $src $out/share/gnome-shell/extensions/${uuid}
'';
meta = {
description = builtins.head (lib.splitString "\n" description);
longDescription = description;
homepage = link;
license = lib.licenses.gpl2Plus; # https://wiki.gnome.org/Projects/GnomeShell/Extensions/Review#Licensing
maintainers = with lib.maintainers; [ piegames ];
};
# Store the extension's UUID, because we might need it at some places
passthru.extensionUuid = uuid;
};
in
lib.makeOverridable buildGnomeExtension

View File

@ -0,0 +1,42 @@
{
"38": {
"applications-menu": [
"apps-menu@gnome-shell-extensions.gcampax.github.com",
"Applications_Menu@rmy.pobox.com"
],
"workspace-indicator": [
"workspace-indicator@gnome-shell-extensions.gcampax.github.com",
"horizontal-workspace-indicator@tty2.io"
],
"lock-keys": [
"lockkeys@vaina.lt",
"lockkeys@fawtytoo"
],
"fuzzy-clock": [
"Fuzzy_Clock@dallagi",
"fuzzy-clock@keepawayfromfire.co.uk"
],
"transparent-window": [
"transparent-window@pbxqdown.github.com",
"transparentwindows.mdirshad07"
],
"floating-dock": [
"floatingDock@sun.wxg@gmail.com",
"floating-dock@nandoferreira_prof@hotmail.com"
]
},
"40": {
"applications-menu": [
"apps-menu@gnome-shell-extensions.gcampax.github.com",
"Applications_Menu@rmy.pobox.com"
],
"workspace-indicator": [
"workspace-indicator@gnome-shell-extensions.gcampax.github.com",
"horizontal-workspace-indicator@tty2.io"
],
"lock-keys": [
"lockkeys@vaina.lt",
"lockkeys@fawtytoo"
]
}
}

View File

@ -0,0 +1,73 @@
{ lib
, callPackage
, config
}:
let
buildShellExtension = callPackage ./buildGnomeExtension.nix { };
# Index of all scraped extensions (with supported versions)
extensionsIndex = lib.importJSON ./extensions.json;
# A list of UUIDs that have the same pname and we need to rename them
extensionRenames = import ./extensionRenames.nix;
# Take all extensions from the index that match the gnome version, build them and put them into a list of derivations
produceExtensionsList = shell-version:
lib.trivial.pipe extensionsIndex [
# Does a given extension match our current shell version?
(builtins.filter
(extension: (builtins.hasAttr shell-version extension."shell_version_map"))
)
# Take in an `extension` object from the JSON and transform it into the correct args to call `buildShellExtension`
(map
(extension: {
inherit (extension) uuid name description link pname;
inherit (extension.shell_version_map.${shell-version}) version sha256 metadata;
})
)
# Build them
(map buildShellExtension)
];
# Map the list of extensions to an attrset based on the UUID as key
mapUuidNames = extensions:
lib.trivial.pipe extensions [
(map (extension: lib.nameValuePair extension.extensionUuid extension))
builtins.listToAttrs
];
# Map the list of extensions to an attrset based on the pname as key, which is more human readable than the UUID
# We also take care of conflict renaming in here
mapReadableNames = extensionsList: lib.trivial.pipe extensionsList [
# Filter out all extensions that map to null
(lib.filter (extension:
!(
(builtins.hasAttr extension.extensionUuid extensionRenames)
&& ((builtins.getAttr extension.extensionUuid extensionRenames) == null)
)
))
# Map all extensions to their pname, with potential overwrites
(map (extension:
lib.nameValuePair (extensionRenames.${extension.extensionUuid} or extension.pname) extension
))
builtins.listToAttrs
];
in rec {
inherit buildShellExtension;
gnome38Extensions = mapUuidNames (produceExtensionsList "38");
gnome40Extensions = mapUuidNames (produceExtensionsList "40");
gnomeExtensions = lib.recurseIntoAttrs (
(mapReadableNames (produceExtensionsList "40"))
// (callPackage ./manuallyPackaged.nix {})
// lib.optionalAttrs (config.allowAliases or false) {
unite-shell = gnomeExtensions.unite; # added 2021-01-19
arc-menu = gnomeExtensions.arcmenu; # added 2021-02-14
nohotcorner = throw "gnomeExtensions.nohotcorner removed since 2019-10-09: Since 3.34, it is a part of GNOME Shell configurable through GNOME Tweaks.";
mediaplayer = throw "gnomeExtensions.mediaplayer deprecated since 2019-09-23: retired upstream https://github.com/JasonLG1979/gnome-shell-extensions-mediaplayer/blob/master/README.md";
}
);
}

View File

@ -0,0 +1,29 @@
# A list of UUIDs that have the same pname and we need to rename them
# MAINTENANCE:
# - Every item from ./collisions.json (for the respective Shell version) should have an entry in here
# - Set the value to `null` for filtering (duplicate or unmaintained extensions)
# - Sort the entries in order of appearance in the collisions.json
{
"apps-menu@gnome-shell-extensions.gcampax.github.com" = "applications-menu";
"Applications_Menu@rmy.pobox.com" = "frippery-applications-menu";
"workspace-indicator@gnome-shell-extensions.gcampax.github.com" = "workspace-indicator";
"horizontal-workspace-indicator@tty2.io" = "workspace-indicator-2";
"lockkeys@vaina.lt" = "lock-keys";
"lockkeys@fawtytoo" = "lock-keys-2";
# These are conflicts for 3.38 extensions. They will very probably come back
# once more of them support 40.
# See https://github.com/pbxqdown/gnome-shell-extension-transparent-window/issues/12#issuecomment-800765381
#"transparent-window@pbxqdown.github.com" = "transparent-window";
#"transparentwindows.mdirshad07" = null;
#"floatingDock@sun.wxg@gmail.com" = "floating-dock";
#"floating-dock@nandoferreira_prof@hotmail.com" = "floating-dock-2";
# That extension is broken because of https://github.com/NixOS/nixpkgs/issues/118612
#"flypie@schneegans.github.com" = null;
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,40 @@
{ callPackage }:
{
appindicator = callPackage ./appindicator { };
arcmenu = callPackage ./arcmenu { };
caffeine = callPackage ./caffeine { };
clipboard-indicator = callPackage ./clipboard-indicator { };
clock-override = callPackage ./clock-override { };
dash-to-dock = callPackage ./dash-to-dock { };
dash-to-panel = callPackage ./dash-to-panel { };
disable-unredirect = callPackage ./disable-unredirect { };
draw-on-your-screen = callPackage ./draw-on-your-screen { };
drop-down-terminal = callPackage ./drop-down-terminal { };
dynamic-panel-transparency = callPackage ./dynamic-panel-transparency { };
easyScreenCast = callPackage ./EasyScreenCast { };
emoji-selector = callPackage ./emoji-selector { };
freon = callPackage ./freon { };
fuzzy-app-search = callPackage ./fuzzy-app-search { };
gsconnect = callPackage ./gsconnect { };
hot-edge = callPackage ./hot-edge { };
icon-hider = callPackage ./icon-hider { };
impatience = callPackage ./impatience { };
material-shell = callPackage ./material-shell { };
mpris-indicator-button = callPackage ./mpris-indicator-button { };
night-theme-switcher = callPackage ./night-theme-switcher { };
no-title-bar = callPackage ./no-title-bar { };
noannoyance = callPackage ./noannoyance { };
paperwm = callPackage ./paperwm { };
pidgin-im-integration = callPackage ./pidgin-im-integration { };
remove-dropdown-arrows = callPackage ./remove-dropdown-arrows { };
sound-output-device-chooser = callPackage ./sound-output-device-chooser { };
system-monitor = callPackage ./system-monitor { };
taskwhisperer = callPackage ./taskwhisperer { };
tilingnome = callPackage ./tilingnome { };
timepp = callPackage ./timepp { };
topicons-plus = callPackage ./topicons-plus { };
unite = callPackage ./unite { };
window-corner-preview = callPackage ./window-corner-preview { };
window-is-ready-remover = callPackage ./window-is-ready-remover { };
workspace-matrix = callPackage ./workspace-matrix { };
}

View File

@ -0,0 +1,284 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=../../../.. -i python3 -p python3
import json
import urllib.request
import urllib.error
from typing import List, Dict, Optional, Any, Tuple
import logging
from operator import itemgetter
import subprocess
import zipfile
import io
import base64
# We don't want all those deprecated legacy extensions
# Group extensions by GNOME "major" version for compatibility reasons
supported_versions = {
"38": "3.38",
"40": "40",
}
# Some type alias to increase readility of complex compound types
PackageName = str
ShellVersion = str
Uuid = str
ExtensionVersion = int
# Keep track of all names that have been used till now to detect collisions.
# This works because we deterministically process all extensions in historical order
# The outer dict level is the shell version, as we are tracking duplicates only per same Shell version.
# key: shell version, value: Dict with key: pname, value: list of UUIDs with that pname
package_name_registry: Dict[ShellVersion, Dict[PackageName, List[Uuid]]] = {}
for shell_version in supported_versions.keys():
package_name_registry[shell_version] = {}
def fetch_extension_data(uuid: str, version: str) -> Tuple[str, str]:
"""
Download the extension and hash it. We use `nix-prefetch-url` for this for efficiency reasons.
Returns a tuple with the hash (Nix-compatible) of the zip file's content and the base64-encoded content of its metadata.json.
"""
# The download URLs follow this schema
uuid = uuid.replace("@", "")
url: str = f"https://extensions.gnome.org/extension-data/{uuid}.v{version}.shell-extension.zip"
# Yes, we download that file three times:
# The first time is for the maintainter, so they may have a personal backup to fix potential issues
# subprocess.run(
# ["wget", url], capture_output=True, text=True
# )
# The second time, we extract the metadata.json because we need it too
with urllib.request.urlopen(url) as response:
data = zipfile.ZipFile(io.BytesIO(response.read()), 'r')
metadata = base64.b64encode(data.read('metadata.json')).decode()
# The third time is to get the file into the store and to get its hash
hash = subprocess.run(
["nix-prefetch-url", "--unpack", url], capture_output=True, text=True
).stdout.strip()
return hash, metadata
def generate_extension_versions(
extension_version_map: Dict[ShellVersion, ExtensionVersion], uuid: str
) -> Dict[ShellVersion, Dict[str, str]]:
"""
Takes in a mapping from shell versions to extension versions and transforms it the way we need it:
- Only take one extension version per GNOME Shell major version (as per `supported_versions`)
- Filter out versions that only support old GNOME versions
- Download the extension and hash it
"""
extension_versions: Dict[ShellVersion, Dict[str, str]] = {}
for shell_version, version_prefix in supported_versions.items():
# Newest compatible extension version
extension_version: Optional[int] = max(
(
int(ext_ver)
for shell_ver, ext_ver in extension_version_map.items()
if (shell_ver.startswith(version_prefix))
),
default=None,
)
# Extension is not compatible with this GNOME version
if not extension_version:
continue
logging.debug(
f"[{shell_version}] Downloading '{uuid}' v{extension_version}"
)
sha256, metadata = fetch_extension_data(uuid, str(extension_version))
extension_versions[shell_version] = {
"version": str(extension_version),
"sha256": sha256,
# The downloads are impure, their metadata.json may change at any time.
# Thus, be back it up / pin it to remain deterministic
# Upstream issue: https://gitlab.gnome.org/Infrastructure/extensions-web/-/issues/137
"metadata": metadata,
}
return extension_versions
def pname_from_url(url: str) -> Tuple[str, str]:
"""
Parse something like "/extension/1475/battery-time/" and output ("battery-time", "1475")
"""
url = url.split("/") # type: ignore
return (url[3], url[2])
def process_extension(extension: Dict[str, Any]) -> Optional[Dict[str, Any]]:
"""
Process an extension. It takes in raw scraped data and downloads all the necessary information that buildGnomeExtension.nix requires
Input: a json object of one extension queried from the site. It has the following schema (only important key listed):
{
"uuid": str,
"name": str,
"description": str,
"link": str,
"shell_version_map": {
str: { "version": int, },
},
}
"uuid" is an extension UUID that looks like this (most of the time): "extension-name@username.domain.tld".
Don't make any assumptions on it, and treat it like an opaque string!
"link" follows the following schema: "/extension/$number/$string/"
The number is monotonically increasing and unique to every extension.
The string is usually derived from the extensions's name (but shortened, kebab-cased and URL friendly).
It may diverge from the actual name.
The keys of "shell_version_map" are GNOME Shell version numbers.
Output: a json object to be stored, or None if the extension should be skipped. Schema:
{
"uuid": str,
"name": str,
"pname": str,
"description": str,
"link": str,
"shell_version_map": {
str: { "version": int, "sha256": str, "metadata": <hex> },
}
}
Only "uuid" gets passed along unmodified. "name", "description" and "link" are taken from the input, but sanitized.
"pname" gets generated from other fields and "shell_version_map" has a completely different structure than the input
field with the same name.
"""
uuid = extension["uuid"]
# Yeah, there are some extensions without any releases
if not extension["shell_version_map"]:
return None
logging.info(f"Processing '{uuid}'")
# Input is a mapping str -> { version: int, … }
# We want to map shell versions to extension versions
shell_version_map: Dict[ShellVersion, int] = {
k: v["version"] for k, v in extension["shell_version_map"].items()
}
# Transform shell_version_map to be more useful for us. Also throw away unwanted versions
shell_version_map: Dict[ShellVersion, Dict[str, str]] = generate_extension_versions(shell_version_map, uuid) # type: ignore
# No compatible versions found
if not shell_version_map:
return None
# Fetch a human-readable name for the package.
(pname, _pname_id) = pname_from_url(extension["link"])
for shell_version in shell_version_map.keys():
if pname in package_name_registry[shell_version]:
logging.warning(f"Package name '{pname}' is colliding.")
package_name_registry[shell_version][pname].append(uuid)
else:
package_name_registry[shell_version][pname] = [uuid]
return {
"uuid": uuid,
"name": extension["name"],
"pname": pname,
"description": extension["description"],
"link": "https://extensions.gnome.org" + extension["link"],
"shell_version_map": shell_version_map,
}
def scrape_extensions_index() -> List[Dict[str, Any]]:
"""
Scrape the list of extensions by sending search queries to the API. We simply go over it
page by page until we hit a non-full page or a 404 error.
The returned list is sorted by the age of the extension, in order to be deterministic.
"""
page = 0
extensions = []
while True:
page += 1
logging.info("Scraping page " + str(page))
try:
with urllib.request.urlopen(
f"https://extensions.gnome.org/extension-query/?n_per_page=25&page={page}"
) as response:
data = json.loads(response.read().decode())["extensions"]
responseLength = len(data)
for extension in data:
extensions.append(extension)
# If our page isn't "full", it must have been the last one
if responseLength < 25:
logging.debug(
f"\tThis page only has {responseLength} entries, so it must be the last one."
)
break
except urllib.error.HTTPError as e:
if e.code == 404:
# We reached past the last page and are done now
break
else:
raise
# `pk` is the primary key in the extensions.gnome.org database. Sorting on it will give us a stable,
# deterministic ordering.
extensions.sort(key=itemgetter("pk"))
return extensions
if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG)
raw_extensions = scrape_extensions_index()
logging.info(f"Downloaded {len(raw_extensions)} extensions. Processing …")
processed_extensions: List[Dict[str, Any]] = []
for num, raw_extension in enumerate(raw_extensions):
processed_extension = process_extension(raw_extension)
if processed_extension:
processed_extensions.append(processed_extension)
logging.debug(f"Processed {num + 1} / {len(raw_extensions)}")
logging.info(
f"Done. Writing results to extensions.json ({len(processed_extensions)} extensions in total)"
)
with open("extensions.json", "w") as out:
# Manually pretty-print the outer level, but then do one compact line per extension
# This allows for the diffs to be manageable (one line of change per extension) despite their quantity
for index, extension in enumerate(processed_extensions):
if index == 0:
out.write("[ ")
else:
out.write(", ")
json.dump(extension, out, ensure_ascii=False)
out.write("\n")
out.write("]\n")
with open("extensions.json", "r") as out:
# Check that the generated file actually is valid JSON, just to be sure
json.load(out)
logging.info(
"Done. Writing name collisions to collisions.json (please check manually)"
)
with open("collisions.json", "w") as out:
# Filter out those that are not duplicates
package_name_registry_filtered: Dict[ShellVersion, Dict[PackageName, List[Uuid]]] = {
# The outer level keys are shell versions
shell_version: {
# The inner keys are extension names, with a list of all extensions with that name as value.
pname: extensions for pname, extensions in collisions.items() if len(extensions) > 1
} for shell_version, collisions in package_name_registry.items()
}
json.dump(package_name_registry_filtered, out, indent=2, ensure_ascii=False)
out.write("\n")

View File

@ -6,13 +6,13 @@
stdenv.mkDerivation rec {
pname = "intel-media-driver";
version = "21.2.0";
version = "21.2.1";
src = fetchFromGitHub {
owner = "intel";
repo = "media-driver";
rev = "intel-media-${version}";
sha256 = "101wbg5j00amdbfz4p6mpg90wi549dl78jd34mac5g6zhcpwqbh9";
sha256 = "0a49087ca3li1cbsdcwp31zlakfw9dxcr2lnxzm5s3x63jvwlbag";
};
cmakeFlags = [

View File

@ -10,7 +10,7 @@
, cyrus_sasl
, doxygen
, fetchFromGitLab
, ffmpeg_3
, ffmpeg
, gdk-pixbuf
, glib
, graphviz
@ -73,7 +73,7 @@ stdenv.mkDerivation rec {
bzrtp
cairo
cyrus_sasl
ffmpeg_3
ffmpeg
gdk-pixbuf
glib
gtk2

View File

@ -4,7 +4,7 @@
, cmake
, doxygen
, fetchFromGitLab
, ffmpeg_3
, ffmpeg
, glew
, gsm
, intltool
@ -65,7 +65,7 @@ stdenv.mkDerivation rec {
alsaLib
bctoolbox
bzrtp
ffmpeg_3
ffmpeg
glew
gsm
libGL

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "octomap";
version = "1.9.6";
version = "1.9.7";
src = fetchFromGitHub {
owner = "OctoMap";
repo = pname;
rev = "v${version}";
sha256 = "03v341dffa0pfzmf2431xb5nq50zq9zlhgl6k2aa3fsza5xmbb70";
sha256 = "1pb58w6vka7wzs533lcy7i6y5nwjfrzy6b35fhrb1dhq2mgszc79";
};
sourceRoot = "source/octomap";

View File

@ -11,14 +11,14 @@
buildPythonPackage rec {
pname = "aiodiscover";
version = "1.4.0";
version = "1.4.2";
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "bdraco";
repo = pname;
rev = "v${version}";
sha256 = "sha256-t0bs3n0eLUR22i1lZkepCffjiUFzvXBdP7Xq49KXeS4=";
sha256 = "sha256-xiIN/YLIOdPuqenyxybu0iUpYEy3MyBssXswza5InU0=";
};
propagatedBuildInputs = [

View File

@ -7,13 +7,13 @@
buildPythonPackage rec {
pname = "karton-asciimagic";
version = "1.0.1";
version = "1.1.0";
src = fetchFromGitHub {
owner = "CERT-Polska";
repo = pname;
rev = "v${version}";
sha256 = "0d15fhb3y0jpwdfm4y11i6pmfa9szr943cm6slvf0ir31f9nznyz";
sha256 = "0vj4b8man81g99g4c53zyvp1gc47c2imj5ha9r4z4bf8gs3aqsv6";
};
propagatedBuildInputs = [

View File

@ -5,6 +5,7 @@
, ipykernel
, jupyter_client
, nbformat
, pytestCheckHook
, pytest
, six
, glibcLocales
@ -23,7 +24,7 @@ buildPythonPackage rec {
};
checkInputs = [
pytest
pytestCheckHook
matplotlib
sympy
pytestcov
@ -40,14 +41,15 @@ buildPythonPackage rec {
six
];
# Set HOME so that matplotlib doesn't try to use
# /homeless-shelter/.config/matplotlib, otherwise some of the tests fail for
# having an unexpected warning on stderr produced by matplotlib.
# Ignore impure tests.
checkPhase = ''
export HOME=$(mktemp -d)
pytest tests --ignore tests/test_timeouts.py
'';
pytestFlagsArray = [
"tests"
# These are the main tests but they're fragile so skip them. They error
# whenever matplotlib outputs any unexpected warnings, e.g. deprecation
# warnings.
"--ignore=tests/test_unit_tests_in_notebooks.py"
# Impure
"--ignore=tests/test_timeouts.py"
];
# Some of the tests use localhost networking.
__darwinAllowLocalNetworking = true;

View File

@ -14,12 +14,12 @@
}:
buildPythonPackage rec {
version = "0.12.4";
version = "0.13";
pname = "pybids";
src = fetchPypi {
inherit pname version;
sha256 = "830f3f518ab0d2e058e9ba6d6ff9a942792909c874433b3ad58a3339a23f46bf";
sha256 = "sha256-zVFaGAKgTP9UiUdmO4+Tut8Qc64xuGyB26cQLRHOqYw=";
};
propagatedBuildInputs = [

View File

@ -1,9 +1,9 @@
{ lib, stdenv, fetchFromGitHub, fetchpatch,
{ lib, stdenv, fetchFromGitHub,
fetchHex, erlang, makeWrapper,
writeScript, common-updater-scripts, coreutils, git, gnused, nix, rebar3-nix }:
let
version = "3.15.1";
version = "3.16.0";
owner = "erlang";
deps = import ./rebar-deps.nix { inherit fetchFromGitHub fetchHex; };
rebar3 = stdenv.mkDerivation rec {
@ -16,20 +16,11 @@ let
inherit owner;
repo = pname;
rev = version;
sha256 = "1pcy5m79g0l9l3d8lkbx6cq1w87z1g3sa6wwvgbgraj2v3wkyy5g";
sha256 = "1yqvm37l5rn5dyg4sc2hv47930s2524qrdpnjwy3zqa27r7k5n36";
};
buildInputs = [ erlang ];
patches = [
# TODO: remove this on next rebar3 release
(fetchpatch {
name = "escriptize-erl-libs";
url = "https://github.com/erlang/rebar3/commit/8049a92512420b0967a4c23acfa304d8ca7a712e.patch";
sha256 = "0jzdy7n2nz4v38nn76bgjcmssvqgvdhy9v2gl867ylwqn1y5sdm1";
})
];
postPatch = ''
mkdir -p _checkouts _build/default/lib/
@ -109,7 +100,7 @@ let
# global-deps.patch makes it possible to use REBAR_GLOBAL_PLUGINS to
# instruct rebar3 to always load a certain plugin. It is necessary since
# REBAR_GLOBAL_CONFIG_DIR doesn't seem to work for this.
patches = old.patches ++ [ ./skip-plugins.patch ./global-plugins.patch ];
patches = [ ./skip-plugins.patch ./global-plugins.patch ];
}));
in stdenv.mkDerivation {
pname = "rebar3-with-plugins";

View File

@ -16,11 +16,6 @@
version = "1.8.1";
sha256 = "sha256-5FdFrenEdqmkaeoIQOQYqxk2DcRPAaIzME4RikRIa6A=";
};
parse_trans = fetchHex {
pkg = "parse_trans";
version = "3.3.1";
sha256 = "sha256-B82Vd4hfVjYtQU6MTE5r3xDUOodnq7ktJMvoskxUiIs=";
};
getopt = fetchHex {
pkg = "getopt";
version = "1.0.1";
@ -33,8 +28,8 @@
};
erlware_commons = fetchHex {
pkg = "erlware_commons";
version = "1.4.0";
sha256 = "sha256-GF7PXPQ7qzoBPds2FM57un9seoJ5BOZOV9pU/N/c4uY=";
version = "1.5.0";
sha256 = "sha256-PnxvsrpMKbDdXf6dAxtmRJ4giOzsGoFGW9n94F7X0Ns=";
};
cth_readable = fetchHex {
pkg = "cth_readable";
@ -48,8 +43,8 @@
};
certifi = fetchHex {
pkg = "certifi";
version = "2.5.3";
sha256 = "sha256-7VFqyzkpsQEgip1wAGLVIPOVPaO2uRjYZhBv+pgOHBA=";
version = "2.6.1";
sha256 = "sha256-UkyXtJkbOEndXBemMSI4licsawr0RneLpGdaHf9Tu34=";
};
bbmustache = fetchHex {
pkg = "bbmustache";

View File

@ -2,7 +2,7 @@
buildGoModule rec {
pname = "wally-cli";
version = "2.0.0";
version = "2.0.1";
subPackages = [ "." ];
@ -14,15 +14,12 @@ buildGoModule rec {
owner = "zsa";
repo = "wally-cli";
rev = "${version}-linux";
sha256 = "0xz3z18bbnf736ngjj6jhnp3p2j55m5jhnb2xl6l5hybracfyhm7";
sha256 = "NuyQHEygy4LNqLtrpdwfCR+fNy3ZUxOClVdRen6AXMc=";
};
vendorSha256 = "0jqx38x5qvir6zc5yq9p2adafwqhy4hil1k5g81rr1fvbn06k3a6";
vendorSha256 = "AVYG+aLpAXohUOORV/uPw7vro+Kg98+AmSmYGHtOals=";
runVend = true;
# Can be removed when https://github.com/zsa/wally-cli/pull/1 is merged.
doCheck = false;
meta = with lib; {
description = "A tool to flash firmware to mechanical keyboards";
homepage = "https://ergodox-ez.com/pages/wally-planck";

View File

@ -1,34 +0,0 @@
{ stdenv, lib, fetchurl, autoPatchelfHook }:
stdenv.mkDerivation rec {
pname = "deepspeech";
version = "0.9.3";
src = fetchurl {
url = "https://github.com/mozilla/DeepSpeech/releases/download/v${version}/native_client.amd64.cpu.linux.tar.xz";
sha256 = "1qy2gspprcxi76jk06ljp028xl0wkk1m3mqaxyf5qbhhfbvvpfap";
};
setSourceRoot = "sourceRoot=`pwd`";
nativeBuildInputs = [
autoPatchelfHook
];
buildInputs = [
stdenv.cc.cc.lib
];
installPhase = ''
install -D deepspeech $out/bin/deepspeech
install -D deepspeech.h $out/include/deepspeech.h
install -D libdeepspeech.so $out/lib/libdeepspeech.so
'';
meta = with lib; {
homepage = https://github.com/mozilla/DeepSpeech;
description = "Open source embedded (offline, on-device) speech-to-text engine, which can run in real time on broad range of devices";
license = licenses.mpl20;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ rvolosatovs ];
};
}

View File

@ -5,19 +5,17 @@
stdenv.mkDerivation rec {
pname = "betterlockscreen";
version = "3.0.1";
version = "3.1.0";
src = fetchFromGitHub {
owner = "pavanjadhaw";
repo = "betterlockscreen";
rev = version;
sha256 = "0jc8ifb69shmd0avx6vny4m1w5dfxkkf5vnm7qcrmc8yflb0s3z6";
sha256 = "14vkgdzw7mprjsvmhm3aav8gds73ngn2xxij4syq7l1mhk701wak";
};
nativeBuildInputs = [ makeWrapper ];
patches = [ ./replace-i3lock.patch ];
installPhase =
let
PATH =

View File

@ -1,12 +0,0 @@
--- a/betterlockscreen
+++ b/betterlockscreen
@@ -76,7 +76,7 @@ prelock() {
lock() {
#$1 image path
- i3lock \
+ i3lock-color \
-t -i "$1" \
--timepos='x+110:h-70' \
--datepos='x+43:h-45' \

View File

@ -1,4 +1,4 @@
{ lib, stdenv, fetchurl, fetchpatch, kernel }:
{ lib, stdenv, fetchurl, kernel }:
let cfg = import ./version.nix; in
@ -11,14 +11,6 @@ stdenv.mkDerivation rec {
sha256 = cfg.sha256.${pname};
};
patches = [
(fetchpatch {
# Fix build with Kernel>=5.12, remove for batman-adv>=2021.1
url = "https://git.open-mesh.org/batman-adv.git/patch/6d67ca7f530d4620e3d066b02aefbfd8893d6c05?hp=362da918384286a959ad7c3455d9d33d9ff99d7d";
sha256 = "039x67yfkwl0b8af8vwx5m58ji2qn8x44rr1rkzi5j43cvmnh2cg";
})
];
nativeBuildInputs = kernel.moduleBuildDependencies;
hardeningDisable = [ "pic" ];

View File

@ -1,9 +1,9 @@
{
version = "2021.0";
version = "2021.1";
sha256 = {
batman-adv = "1898y0m8sgca0dmhyfkpmx2g6qc0b1xvh5nm7cvnhwl9h2jrp62s";
alfred = "0jr4wbz81ijd03ssfxb9mqlj3zbx2k495lsl0np262hyla6w0qm0";
batctl = "1r01a8zxivq4slwc81dgg9qknqsli8qw17csfj95321gjpqqpv4w";
batman-adv = "1l1lk41h4chymrb41ihqrr3p80xdwhhp1kkksr157mzailyq8xxz";
alfred = "122y92vqrpp3g6dbjfv8hkhwjlfa3skr91lbzicr0pw8mm6wzqll";
batctl = "0xp1cqcw0g0irgw9yhkch01rbn39gzvfxv8b2yya32vbnkmqrcj4";
};
}

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,3 @@
[
{"matrix-appservice-irc": "git+https://github.com/matrix-org/matrix-appservice-irc.git#0.25.0" }
{"matrix-appservice-irc": "git+https://github.com/matrix-org/matrix-appservice-irc.git#0.26.0" }
]

View File

@ -2,6 +2,7 @@
{
matrix-synapse-ldap3 = callPackage ./ldap3.nix { };
matrix-synapse-mjolnir-antispam = callPackage ./mjolnir-antispam.nix { };
matrix-synapse-pam = callPackage ./pam.nix { };
matrix-synapse-shared-secret-auth = callPackage ./shared-secret-auth.nix { };
}

View File

@ -0,0 +1,32 @@
{ lib, buildPythonPackage, fetchFromGitHub, matrix-synapse }:
buildPythonPackage rec {
pname = "matrix-synapse-mjolnir-antispam";
version = "0.1.17";
src = fetchFromGitHub {
owner = "matrix-org";
repo = "mjolnir";
rev = "v${version}";
sha256 = "sha256-uBI5AllXWgl3eL60WZ/j11Tt7QpY7CKcmFQOU74/Qjs=";
};
sourceRoot = "./source/synapse_antispam";
propagatedBuildInputs = [ matrix-synapse ];
doCheck = false; # no tests
pythonImportsCheck = [ "mjolnir" ];
meta = with lib; {
description = "AntiSpam / Banlist plugin to be used with mjolnir";
longDescription = ''
Primarily meant to block invites from undesired homeservers/users,
Mjolnir's Synapse module is a way to interpret ban lists and apply
them to your entire homeserver.
'';
homepage = "https://github.com/matrix-org/mjolnir#synapse-module";
license = licenses.asl20;
maintainers = with maintainers; [ jojosch ];
};
}

View File

@ -2,7 +2,7 @@
buildGoModule rec {
pname = "grafana";
version = "7.5.6";
version = "7.5.7";
excludedPackages = [ "release_publisher" ];
@ -10,15 +10,15 @@ buildGoModule rec {
rev = "v${version}";
owner = "grafana";
repo = "grafana";
sha256 = "1683as90p4zkzhaj52vy60bcmpr77zynys87mjzh3s6ks3xfxn2x";
sha256 = "sha256-GTQK02zxOBTE+93vT0zLMhAeZ7F3Cq/0lbvbzwB2QZA=";
};
srcStatic = fetchurl {
url = "https://dl.grafana.com/oss/release/grafana-${version}.linux-amd64.tar.gz";
sha256 = "1mywvm4d116y56rffiywk1hx6wxj1418gf7q0v0hfdlwk1lqi9nz";
sha256 = "sha256-IQ7aAuUrNa+bSh5ld6IttujM8AgKUSlu8H7pwzDi164=";
};
vendorSha256 = "01a5v292x59fmayjkqnf4c8k8viasxr2s2khs4yrv6p829lx3hq2";
vendorSha256 = "sha256-AsPRaRLomp090XAKLXLXKm40ESPO4im9qi6VLpLYRQU=";
# grafana-aws-sdk is specified with two versions which causes a problem later:
# go: inconsistent vendoring in /build/source:

View File

@ -16,8 +16,10 @@ let
passthru.tests = nixosTests.nextcloud;
installPhase = ''
runHook preInstall
mkdir -p $out/
cp -R . $out/
runHook postInstall
'';
meta = with lib; {
@ -58,8 +60,8 @@ in {
};
nextcloud21 = generic {
version = "21.0.1";
sha256 = "dd7c8ccc01547914a75b44bbf86028289c8919dc39f4e2e720147b6bd596aebe";
version = "21.0.2";
sha256 = "5e5b38109a3485db5fd2d248f24478eabe6c0790ec10b030acbbee207d5511fe";
};
# tip: get she sha with:
# curl 'https://download.nextcloud.com/server/releases/nextcloud-${version}.tar.bz2.sha256'

View File

@ -0,0 +1,35 @@
{ rustPlatform
, lib
, fetchgit
, openssl
, pkg-config
, systemd
}:
rustPlatform.buildRustPackage rec {
pname = "pr-tracker";
version = "1.0.0";
src = fetchgit {
url = "https://git.qyliss.net/pr-tracker";
rev = version;
sha256 = "sha256-NHtY05Llrvfvcb3uyagLd6kaVW630TIP3IreFrY3wl0=";
};
cargoSha256 = "sha256-SgSASfIanADV31pVy+VIwozTLxq7P3oMDIiAAQ8s+k0=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl systemd ];
meta = with lib; {
description = "Nixpkgs pull request channel tracker";
longDescription = ''
A web server that displays the path a Nixpkgs pull request will take
through the various release channels.
'';
platforms = platforms.linux;
homepage = "https://git.qyliss.net/pr-tracker";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ sumnerevans ];
};
}

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "tailscale";
version = "1.8.3";
version = "1.8.5";
src = fetchFromGitHub {
owner = "tailscale";
repo = "tailscale";
rev = "v${version}";
sha256 = "0q0nk0ychb00xhycq3kda57dzrswl8yhci7fzv8yiqzrv3ygpvyd";
sha256 = "0wr6zb8v5082gbh0isz8inmndvqfqgmh5bgaz8ij2id5qwx5znx6";
};
nativeBuildInputs = [ makeWrapper ];

View File

@ -0,0 +1,34 @@
{ stdenv, lib, fetchurl, autoPatchelfHook }:
stdenv.mkDerivation rec {
pname = "stt";
version = "0.9.3";
src = fetchurl {
url = "https://github.com/coqui-ai/STT/releases/download/v${version}/native_client.tf.Linux.tar.xz";
sha256 = "0axwys8vis4f0m7d1i2r3dfqlc8p3yj2nisvc7pdi5qs741xgy8w";
};
setSourceRoot = "sourceRoot=`pwd`";
nativeBuildInputs = [
autoPatchelfHook
];
buildInputs = [
stdenv.cc.cc.lib
];
installPhase = ''
install -D stt $out/bin/stt
install -D coqui-stt.h $out/include/coqui-stt.h
install -D libstt.so $out/lib/libstt.so
'';
meta = with lib; {
homepage = https://github.com/coqui-ai/STT;
description = "Deep learning toolkit for Speech-to-Text, battle-tested in research and production";
license = licenses.mpl20;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ rvolosatovs ];
};
}

View File

@ -5,13 +5,13 @@
buildGoModule rec {
pname = "ipinfo";
version = "1.1.4";
version = "1.1.5";
src = fetchFromGitHub {
owner = pname;
repo = "cli";
rev = "${pname}-${version}";
sha256 = "1j50bbq7skbh1pffkmrbs1cyz2x22bniwcdw27rjzmvjixs4wj6h";
sha256 = "16i5vmx39j7l5mhs28niapki9530nsbw6xik8rsky55v9i5pr72d";
};
vendorSha256 = null;

View File

@ -167,6 +167,7 @@ mapAliases ({
deadpixi-sam = deadpixi-sam-unstable;
debian_devscripts = debian-devscripts; # added 2016-03-23
deepin = throw "deepin was a work in progress and it has been canceled and removed https://github.com/NixOS/nixpkgs/issues/94870"; # added 2020-08-31
deepspeech = throw "deepspeech was removed in favor of stt. https://github.com/NixOS/nixpkgs/issues/119496"; # added 2021-05-05
desktop_file_utils = desktop-file-utils; # added 2018-02-25
devicemapper = lvm2; # added 2018-04-25
digikam5 = digikam; # added 2017-02-18

View File

@ -7871,6 +7871,8 @@ in
polygraph = callPackage ../tools/networking/polygraph { };
pr-tracker = callPackage ../servers/pr-tracker { };
progress = callPackage ../tools/misc/progress { };
ps3netsrv = callPackage ../servers/ps3netsrv { };
@ -28674,6 +28676,8 @@ in
streamlit = python3Packages.callPackage ../applications/science/machine-learning/streamlit { };
stt = callPackage ../tools/audio/stt { };
stuntrally = callPackage ../games/stuntrally {
ogre = ogre1_9;
mygui = mygui.override {
@ -28939,51 +28943,10 @@ in
gnome = recurseIntoAttrs (callPackage ../desktops/gnome { });
gnomeExtensions = recurseIntoAttrs {
appindicator = callPackage ../desktops/gnome/extensions/appindicator { };
arcmenu = callPackage ../desktops/gnome/extensions/arcmenu { };
caffeine = callPackage ../desktops/gnome/extensions/caffeine { };
clipboard-indicator = callPackage ../desktops/gnome/extensions/clipboard-indicator { };
clock-override = callPackage ../desktops/gnome/extensions/clock-override { };
dash-to-dock = callPackage ../desktops/gnome/extensions/dash-to-dock { };
dash-to-panel = callPackage ../desktops/gnome/extensions/dash-to-panel { };
disable-unredirect = callPackage ../desktops/gnome/extensions/disable-unredirect { };
draw-on-your-screen = callPackage ../desktops/gnome/extensions/draw-on-your-screen { };
drop-down-terminal = callPackage ../desktops/gnome/extensions/drop-down-terminal { };
dynamic-panel-transparency = callPackage ../desktops/gnome/extensions/dynamic-panel-transparency { };
easyScreenCast = callPackage ../desktops/gnome/extensions/EasyScreenCast { };
emoji-selector = callPackage ../desktops/gnome/extensions/emoji-selector { };
freon = callPackage ../desktops/gnome/extensions/freon { };
fuzzy-app-search = callPackage ../desktops/gnome/extensions/fuzzy-app-search { };
gsconnect = callPackage ../desktops/gnome/extensions/gsconnect { };
hot-edge = callPackage ../desktops/gnome/extensions/hot-edge { };
icon-hider = callPackage ../desktops/gnome/extensions/icon-hider { };
impatience = callPackage ../desktops/gnome/extensions/impatience { };
material-shell = callPackage ../desktops/gnome/extensions/material-shell { };
mpris-indicator-button = callPackage ../desktops/gnome/extensions/mpris-indicator-button { };
night-theme-switcher = callPackage ../desktops/gnome/extensions/night-theme-switcher { };
no-title-bar = callPackage ../desktops/gnome/extensions/no-title-bar { };
noannoyance = callPackage ../desktops/gnome/extensions/noannoyance { };
paperwm = callPackage ../desktops/gnome/extensions/paperwm { };
pidgin-im-integration = callPackage ../desktops/gnome/extensions/pidgin-im-integration { };
remove-dropdown-arrows = callPackage ../desktops/gnome/extensions/remove-dropdown-arrows { };
sound-output-device-chooser = callPackage ../desktops/gnome/extensions/sound-output-device-chooser { };
system-monitor = callPackage ../desktops/gnome/extensions/system-monitor { };
taskwhisperer = callPackage ../desktops/gnome/extensions/taskwhisperer { };
tilingnome = callPackage ../desktops/gnome/extensions/tilingnome { };
timepp = callPackage ../desktops/gnome/extensions/timepp { };
topicons-plus = callPackage ../desktops/gnome/extensions/topicons-plus { };
unite = callPackage ../desktops/gnome/extensions/unite { };
window-corner-preview = callPackage ../desktops/gnome/extensions/window-corner-preview { };
window-is-ready-remover = callPackage ../desktops/gnome/extensions/window-is-ready-remover { };
workspace-matrix = callPackage ../desktops/gnome/extensions/workspace-matrix { };
nohotcorner = throw "gnomeExtensions.nohotcorner removed since 2019-10-09: Since 3.34, it is a part of GNOME Shell configurable through GNOME Tweaks.";
mediaplayer = throw "gnomeExtensions.mediaplayer deprecated since 2019-09-23: retired upstream https://github.com/JasonLG1979/gnome-shell-extensions-mediaplayer/blob/master/README.md";
} // lib.optionalAttrs (config.allowAliases or false) {
unite-shell = gnomeExtensions.unite; # added 2021-01-19
arc-menu = gnomeExtensions.arcmenu; # added 2021-02-14
};
inherit (callPackage ../desktops/gnome/extensions { })
gnomeExtensions
gnome38Extensions
gnome40Extensions;
gnome-connections = callPackage ../desktops/gnome/apps/gnome-connections { };
@ -30172,8 +30135,6 @@ in
dbus-map = callPackage ../tools/misc/dbus-map { };
deepspeech = callPackage ../misc/deepspeech { };
dell-530cdn = callPackage ../misc/drivers/dell-530cdn {};
demjson = with python3Packages; toPythonApplication demjson;

View File

@ -25,21 +25,21 @@
let
mkElpaPackages = { pkgs, lib }: import ../applications/editors/emacs-modes/elpa-packages.nix {
mkElpaPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/elpa-packages.nix {
inherit (pkgs) stdenv texinfo writeText;
inherit lib;
};
# Contains both melpa stable & unstable
melpaGeneric = { pkgs, lib }: import ../applications/editors/emacs-modes/melpa-packages.nix {
melpaGeneric = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/melpa-packages.nix {
inherit lib pkgs;
};
mkOrgPackages = { lib }: import ../applications/editors/emacs-modes/org-packages.nix {
mkOrgPackages = { lib }: import ../applications/editors/emacs/elisp-packages/org-packages.nix {
inherit lib;
};
mkManualPackages = { pkgs, lib }: import ../applications/editors/emacs-modes/manual-packages.nix {
mkManualPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/manual-packages.nix {
inherit lib pkgs;
};