mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-13 21:25:30 +03:00
Merge master into staging-next
This commit is contained in:
commit
901fb5e64e
87 changed files with 3511 additions and 1315 deletions
|
@ -207,6 +207,12 @@
|
||||||
The <option>security.hideProcessInformation</option> module has been removed.
|
The <option>security.hideProcessInformation</option> module has been removed.
|
||||||
It was broken since the switch to cgroups-v2.
|
It was broken since the switch to cgroups-v2.
|
||||||
</para>
|
</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>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<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.
|
This prevents NVRAM from filling up, which ensures the latest diagnostic data is always stored and alleviates problems with writing new boot configurations.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</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>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
@ -316,8 +316,9 @@ class Machine:
|
||||||
start_command += "-cdrom " + args["cdrom"] + " "
|
start_command += "-cdrom " + args["cdrom"] + " "
|
||||||
|
|
||||||
if "usb" in args:
|
if "usb" in args:
|
||||||
|
# https://github.com/qemu/qemu/blob/master/docs/usb2.txt
|
||||||
start_command += (
|
start_command += (
|
||||||
"-device piix3-usb-uhci -drive "
|
"-device usb-ehci -drive "
|
||||||
+ "id=usbdisk,file="
|
+ "id=usbdisk,file="
|
||||||
+ args["usb"]
|
+ args["usb"]
|
||||||
+ ",if=none,readonly "
|
+ ",if=none,readonly "
|
||||||
|
|
|
@ -63,8 +63,7 @@ in
|
||||||
description = ''
|
description = ''
|
||||||
On 64-bit systems, whether to support Direct Rendering for
|
On 64-bit systems, whether to support Direct Rendering for
|
||||||
32-bit applications (such as Wine). This is currently only
|
32-bit applications (such as Wine). This is currently only
|
||||||
supported for the <literal>nvidia</literal> and
|
supported for the <literal>nvidia</literal> as well as
|
||||||
<literal>ati_unfree</literal> drivers, as well as
|
|
||||||
<literal>Mesa</literal>.
|
<literal>Mesa</literal>.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -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";
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -76,7 +76,6 @@
|
||||||
./hardware/wooting.nix
|
./hardware/wooting.nix
|
||||||
./hardware/uinput.nix
|
./hardware/uinput.nix
|
||||||
./hardware/video/amdgpu-pro.nix
|
./hardware/video/amdgpu-pro.nix
|
||||||
./hardware/video/ati.nix
|
|
||||||
./hardware/video/capture/mwprocapture.nix
|
./hardware/video/capture/mwprocapture.nix
|
||||||
./hardware/video/bumblebee.nix
|
./hardware/video/bumblebee.nix
|
||||||
./hardware/video/displaylink.nix
|
./hardware/video/displaylink.nix
|
||||||
|
@ -806,6 +805,7 @@
|
||||||
./services/networking/smartdns.nix
|
./services/networking/smartdns.nix
|
||||||
./services/networking/smokeping.nix
|
./services/networking/smokeping.nix
|
||||||
./services/networking/softether.nix
|
./services/networking/softether.nix
|
||||||
|
./services/networking/solanum.nix
|
||||||
./services/networking/spacecookie.nix
|
./services/networking/spacecookie.nix
|
||||||
./services/networking/spiped.nix
|
./services/networking/spiped.nix
|
||||||
./services/networking/squid.nix
|
./services/networking/squid.nix
|
||||||
|
|
|
@ -31,11 +31,11 @@
|
||||||
<link linkend="opt-services.mailman.enable">enable</link> = true;
|
<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.serve.enable">serve.enable</link> = true;
|
||||||
<link linkend="opt-services.mailman.hyperkitty.enable">hyperkitty.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.webHosts">webHosts</link> = ["lists.example.org"];
|
||||||
<link linkend="opt-services.mailman.hyperkitty.enable">siteOwner</link> = "mailman@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.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>
|
}</programlisting>
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
|
|
|
@ -386,6 +386,10 @@ let
|
||||||
List of relabel configurations.
|
List of relabel configurations.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
metric_relabel_configs = mkOpt (types.listOf promTypes.relabel_config) ''
|
||||||
|
List of metric relabel configurations.
|
||||||
|
'';
|
||||||
|
|
||||||
sample_limit = mkDefOpt types.int "0" ''
|
sample_limit = mkDefOpt types.int "0" ''
|
||||||
Per-scrape limit on number of scraped samples that will be accepted.
|
Per-scrape limit on number of scraped samples that will be accepted.
|
||||||
If more than this number of samples are present after metric relabelling
|
If more than this number of samples are present after metric relabelling
|
||||||
|
|
104
nixos/modules/services/networking/solanum.nix
Normal file
104
nixos/modules/services/networking/solanum.nix
Normal 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;
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
}
|
|
@ -384,6 +384,7 @@ in
|
||||||
snapcast = handleTest ./snapcast.nix {};
|
snapcast = handleTest ./snapcast.nix {};
|
||||||
snapper = handleTest ./snapper.nix {};
|
snapper = handleTest ./snapper.nix {};
|
||||||
sogo = handleTest ./sogo.nix {};
|
sogo = handleTest ./sogo.nix {};
|
||||||
|
solanum = handleTest ./solanum.nix {};
|
||||||
solr = handleTest ./solr.nix {};
|
solr = handleTest ./solr.nix {};
|
||||||
sonarr = handleTest ./sonarr.nix {};
|
sonarr = handleTest ./sonarr.nix {};
|
||||||
spacecookie = handleTest ./spacecookie.nix {};
|
spacecookie = handleTest ./spacecookie.nix {};
|
||||||
|
|
89
nixos/tests/solanum.nix
Normal file
89
nixos/tests/solanum.nix
Normal 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));
|
||||||
|
})
|
|
@ -14,11 +14,10 @@
|
||||||
, musepackSupport ? true, libmpc, libmpcdec, taglib
|
, musepackSupport ? true, libmpc, libmpcdec, taglib
|
||||||
, vorbisSupport ? true, libvorbis
|
, vorbisSupport ? true, libvorbis
|
||||||
, speexSupport ? true, speex
|
, speexSupport ? true, speex
|
||||||
, ffmpegSupport ? true, ffmpeg_3
|
, ffmpegSupport ? true, ffmpeg
|
||||||
, sndfileSupport ? true, libsndfile
|
, sndfileSupport ? true, libsndfile
|
||||||
, wavpackSupport ? true, wavpack
|
, wavpackSupport ? true, wavpack
|
||||||
# Misc
|
# Misc
|
||||||
, withffmpeg4 ? false, ffmpeg_4
|
|
||||||
, curlSupport ? true, curl
|
, curlSupport ? true, curl
|
||||||
, samplerateSupport ? true, libsamplerate
|
, samplerateSupport ? true, libsamplerate
|
||||||
, withDebug ? false
|
, withDebug ? false
|
||||||
|
@ -39,7 +38,7 @@ in stdenv.mkDerivation rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = []
|
patches = []
|
||||||
++ opt withffmpeg4 ./moc-ffmpeg4.patch
|
++ opt ffmpegSupport ./moc-ffmpeg4.patch
|
||||||
++ opt pulseSupport ./pulseaudio.patch;
|
++ opt pulseSupport ./pulseaudio.patch;
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config ]
|
nativeBuildInputs = [ pkg-config ]
|
||||||
|
@ -60,8 +59,7 @@ in stdenv.mkDerivation rec {
|
||||||
++ lib.optionals musepackSupport [ libmpc libmpcdec taglib ]
|
++ lib.optionals musepackSupport [ libmpc libmpcdec taglib ]
|
||||||
++ opt vorbisSupport libvorbis
|
++ opt vorbisSupport libvorbis
|
||||||
++ opt speexSupport speex
|
++ opt speexSupport speex
|
||||||
++ opt (ffmpegSupport && !withffmpeg4) ffmpeg_3
|
++ opt ffmpegSupport ffmpeg
|
||||||
++ opt (ffmpegSupport && withffmpeg4) ffmpeg_4
|
|
||||||
++ opt sndfileSupport libsndfile
|
++ opt sndfileSupport libsndfile
|
||||||
++ opt wavpackSupport wavpack
|
++ opt wavpackSupport wavpack
|
||||||
# Misc
|
# Misc
|
||||||
|
|
|
@ -655,10 +655,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "corfu";
|
pname = "corfu";
|
||||||
ename = "corfu";
|
ename = "corfu";
|
||||||
version = "0.6";
|
version = "0.8";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/corfu-0.6.tar";
|
url = "https://elpa.gnu.org/packages/corfu-0.8.tar";
|
||||||
sha256 = "0zl769l3mmy4b0pj70dwjllq0224r2w4l45xvaqbj75qfqclj6cj";
|
sha256 = "1qrrky1g4k5vw56435dgkwnmnri7i51gkydd76as3l0ixm4pnp05";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1738,6 +1738,21 @@
|
||||||
license = lib.licenses.free;
|
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 }:
|
iterators = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "iterators";
|
pname = "iterators";
|
||||||
|
@ -2544,10 +2559,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "org";
|
pname = "org";
|
||||||
ename = "org";
|
ename = "org";
|
||||||
version = "9.4.5";
|
version = "9.4.6";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/org-9.4.5.tar";
|
url = "https://elpa.gnu.org/packages/org-9.4.6.tar";
|
||||||
sha256 = "0h5qhrd984vf17qc227wz68191xfgbpq32dyhw0lcz2d9i0pl3xk";
|
sha256 = "1k49ymsi77366as2wi4kzv2f1xnbwpb47iw7iw07yxwlhmm7vskq";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -2829,10 +2844,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "pyim";
|
pname = "pyim";
|
||||||
ename = "pyim";
|
ename = "pyim";
|
||||||
version = "3.7.5";
|
version = "3.7.6";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/pyim-3.7.5.tar";
|
url = "https://elpa.gnu.org/packages/pyim-3.7.6.tar";
|
||||||
sha256 = "09f34wgzckbxgr5xvaqrj0wdcmnfsb31a6m460f5g0acys20ams5";
|
sha256 = "1crimmvyppjmds9shfvxy9j5zi3mk133bv5av0fgicm7ddkivksr";
|
||||||
};
|
};
|
||||||
packageRequires = [ async emacs xr ];
|
packageRequires = [ async emacs xr ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -3955,10 +3970,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "vertico";
|
pname = "vertico";
|
||||||
ename = "vertico";
|
ename = "vertico";
|
||||||
version = "0.8";
|
version = "0.10";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/vertico-0.8.tar";
|
url = "https://elpa.gnu.org/packages/vertico-0.10.tar";
|
||||||
sha256 = "1cdq49csd57vqhrs1nbif79yw4s8c0p2i2ww5n5znzj7rnxwpva4";
|
sha256 = "07bzhxgp3k6q4wl9ijhx4vg8diinn782xhr8axn790a5vj199j78";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
|
@ -5,8 +5,9 @@
|
||||||
To update the list of packages from MELPA,
|
To update the list of packages from MELPA,
|
||||||
|
|
||||||
1. Run `./update-elpa`.
|
1. Run `./update-elpa`.
|
||||||
2. Check for evaluation errors: `nix-instantiate ../../../.. -A emacs.pkgs.elpaPackages`.
|
2. Check for evaluation errors:
|
||||||
3. `git commit -m "elpa-packages $(date -Idate)" -- elpa-generated.nix`
|
`nix-instantiate ../../../../../ -A emacs.pkgs.elpaPackages`.
|
||||||
|
3. Run `git commit -m "elpa-packages $(date -Idate)" -- elpa-generated.nix`
|
||||||
|
|
||||||
## Update from overlay
|
## Update from overlay
|
||||||
|
|
||||||
|
@ -15,8 +16,8 @@ Alternatively, run the following command:
|
||||||
./update-from-overlay
|
./update-from-overlay
|
||||||
|
|
||||||
It will update both melpa and elpa packages using
|
It will update both melpa and elpa packages using
|
||||||
https://github.com/nix-community/emacs-overlay. It's almost
|
https://github.com/nix-community/emacs-overlay. It's almost instantenous and
|
||||||
instantenous and formats commits for you.
|
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 lib stdenv texinfo writeText;
|
||||||
inherit (self) emacs;
|
inherit (self) emacs;
|
||||||
};
|
};
|
|
@ -1,5 +1,5 @@
|
||||||
let
|
let
|
||||||
pkgs = import ../../../.. { };
|
pkgs = import ../../../../.. { };
|
||||||
|
|
||||||
src = pkgs.fetchgit {
|
src = pkgs.fetchgit {
|
||||||
url = "https://github.com/ttuegel/emacs2nix.git";
|
url = "https://github.com/ttuegel/emacs2nix.git";
|
|
@ -211,13 +211,19 @@
|
||||||
# From old emacsPackages (pre emacsPackagesNg)
|
# From old emacsPackages (pre emacsPackagesNg)
|
||||||
cedet = callPackage ./cedet { };
|
cedet = callPackage ./cedet { };
|
||||||
cedille = callPackage ./cedille { cedille = pkgs.cedille; };
|
cedille = callPackage ./cedille { cedille = pkgs.cedille; };
|
||||||
colorThemeSolarized = callPackage ./color-theme-solarized { };
|
color-theme-solarized = callPackage ./color-theme-solarized { };
|
||||||
emacsSessionManagement = callPackage ./session-management-for-emacs { };
|
session-management-for-emacs = callPackage ./session-management-for-emacs { };
|
||||||
hsc3-mode = callPackage ./hsc3 { };
|
hsc3-mode = callPackage ./hsc3 { };
|
||||||
ido-ubiquitous = callPackage ./ido-ubiquitous { };
|
ido-ubiquitous = callPackage ./ido-ubiquitous { };
|
||||||
prolog-mode = callPackage ./prolog { };
|
prolog-mode = callPackage ./prolog { };
|
||||||
rectMark = callPackage ./rect-mark { };
|
rect-mark = callPackage ./rect-mark { };
|
||||||
sunriseCommander = callPackage ./sunrise-commander { };
|
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
|
# Legacy aliases, these try to mostly map to melpa stable because it's
|
||||||
# closer to the old outdated package infra.
|
# closer to the old outdated package infra.
|
|
@ -4,11 +4,11 @@
|
||||||
|
|
||||||
To update the list of packages from MELPA,
|
To update the list of packages from MELPA,
|
||||||
|
|
||||||
1. Run ./update-melpa
|
1. Run `./update-melpa`
|
||||||
2. Check for evaluation errors:
|
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.melpaStablePackages
|
||||||
env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacs.pkgs..melpaPackages
|
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`
|
3. Run `git commit -m "melpa-packages: $(date -Idate)" recipes-archive-melpa.json`
|
||||||
|
|
||||||
## Update from overlay
|
## Update from overlay
|
||||||
|
|
||||||
|
@ -17,8 +17,8 @@ Alternatively, run the following command:
|
||||||
./update-from-overlay
|
./update-from-overlay
|
||||||
|
|
||||||
It will update both melpa and elpa packages using
|
It will update both melpa and elpa packages using
|
||||||
https://github.com/nix-community/emacs-overlay. It's almost
|
https://github.com/nix-community/emacs-overlay. It's almost instantenous and
|
||||||
instantenous and formats commits for you.
|
formats commits for you.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "org";
|
pname = "org";
|
||||||
ename = "org";
|
ename = "org";
|
||||||
version = "20210510";
|
version = "20210519";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://orgmode.org/elpa/org-20210510.tar";
|
url = "https://orgmode.org/elpa/org-20210519.tar";
|
||||||
sha256 = "015c68pk52vksar7kpyb0nkcyjihlczmpq4h5vdv8xayas2qlzc7";
|
sha256 = "14vchfg69wai1yxv1fzvjk185gnfr7d9qrdijf0qmbbr5znci8rf";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -19,10 +19,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "org-plus-contrib";
|
pname = "org-plus-contrib";
|
||||||
ename = "org-plus-contrib";
|
ename = "org-plus-contrib";
|
||||||
version = "20210510";
|
version = "20210519";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://orgmode.org/elpa/org-plus-contrib-20210510.tar";
|
url = "https://orgmode.org/elpa/org-plus-contrib-20210519.tar";
|
||||||
sha256 = "0pdwjnpcsk75jv4qs8n4xia6vspwn6dndbdx9z7kq5vqz7w4ykmw";
|
sha256 = "0g765fsc7ssn779xnhjzrxy1sz5b019h7dk1q26yk2w6i540ybfl";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
|
@ -5,8 +5,8 @@
|
||||||
To update the list of packages from Org (ELPA),
|
To update the list of packages from Org (ELPA),
|
||||||
|
|
||||||
1. Run `./update-org`.
|
1. Run `./update-org`.
|
||||||
2. Check for evaluation errors: `nix-instantiate ../../../.. -A emacs.pkgs.orgPackages`.
|
2. Check for evaluation errors: `nix-instantiate ../../../../.. -A emacs.pkgs.orgPackages`.
|
||||||
3. `git commit -m "org-packages $(date -Idate)" -- org-generated.nix`
|
3. Run `git commit -m "org-packages $(date -Idate)" -- org-generated.nix`
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -8,14 +8,14 @@ export NIXPKGS_ALLOW_BROKEN=1
|
||||||
# You can use this to avoid running lengthy code generation jobs locally
|
# 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
|
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
|
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
|
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
|
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
|
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.melpaStablePackages
|
||||||
nix-instantiate --show-trace ../../../../ -A emacs.pkgs.melpaPackages
|
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
|
git diff --exit-code recipes-archive-melpa.json > /dev/null || git commit -m "emacs.pkgs.melpa-packages: $(date --iso)" -- recipes-archive-melpa.json
|
|
@ -1,5 +1,5 @@
|
||||||
let
|
let
|
||||||
pkgs = import ../../../.. {};
|
pkgs = import ../../../../.. {};
|
||||||
|
|
||||||
emacsEnv = pkgs.emacs.pkgs.withPackages (epkgs: let
|
emacsEnv = pkgs.emacs.pkgs.withPackages (epkgs: let
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ lib, stdenv, makeDesktopItem, fetchurl, unzip
|
{ 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
|
, 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 {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -33,6 +33,8 @@ stdenv.mkDerivation rec {
|
||||||
udev
|
udev
|
||||||
libX11
|
libX11
|
||||||
libxcb
|
libxcb
|
||||||
|
libxshmfence
|
||||||
|
libxkbcommon
|
||||||
libXi
|
libXi
|
||||||
libXcursor
|
libXcursor
|
||||||
libXdamage
|
libXdamage
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "cloudflared";
|
pname = "cloudflared";
|
||||||
version = "2021.5.7";
|
version = "2021.5.9";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cloudflare";
|
owner = "cloudflare";
|
||||||
repo = "cloudflared";
|
repo = "cloudflared";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-ekQ5cfQo6/IUIhYaVgyAqbHAaHABL55zhIpqLy6tQ8g=";
|
sha256 = "sha256-Ojbn4QRNZWkSF9RUtFt7roGbt/6l5SFAqEXBCcTJvRI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = null;
|
vendorSha256 = null;
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
, cyrus_sasl
|
, cyrus_sasl
|
||||||
, fetchFromGitLab
|
, fetchFromGitLab
|
||||||
, fetchurl
|
, fetchurl
|
||||||
, ffmpeg_3
|
, ffmpeg
|
||||||
, gdk-pixbuf
|
, gdk-pixbuf
|
||||||
, glib
|
, glib
|
||||||
, gnused
|
, gnused
|
||||||
|
@ -87,7 +87,7 @@ mkDerivation rec {
|
||||||
bzrtp
|
bzrtp
|
||||||
cairo
|
cairo
|
||||||
cyrus_sasl
|
cyrus_sasl
|
||||||
ffmpeg_3
|
ffmpeg
|
||||||
gdk-pixbuf
|
gdk-pixbuf
|
||||||
glib
|
glib
|
||||||
gtk2
|
gtk2
|
||||||
|
|
26
pkgs/desktops/gnome/extensions/README.md
Normal file
26
pkgs/desktops/gnome/extensions/README.md
Normal 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 extension’s 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 don’t 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.
|
54
pkgs/desktops/gnome/extensions/buildGnomeExtension.nix
Normal file
54
pkgs/desktops/gnome/extensions/buildGnomeExtension.nix
Normal 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
|
42
pkgs/desktops/gnome/extensions/collisions.json
Normal file
42
pkgs/desktops/gnome/extensions/collisions.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
73
pkgs/desktops/gnome/extensions/default.nix
Normal file
73
pkgs/desktops/gnome/extensions/default.nix
Normal 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";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
29
pkgs/desktops/gnome/extensions/extensionRenames.nix
Normal file
29
pkgs/desktops/gnome/extensions/extensionRenames.nix
Normal 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;
|
||||||
|
}
|
450
pkgs/desktops/gnome/extensions/extensions.json
Normal file
450
pkgs/desktops/gnome/extensions/extensions.json
Normal file
File diff suppressed because one or more lines are too long
40
pkgs/desktops/gnome/extensions/manuallyPackaged.nix
Normal file
40
pkgs/desktops/gnome/extensions/manuallyPackaged.nix
Normal 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 { };
|
||||||
|
}
|
284
pkgs/desktops/gnome/extensions/update-extensions.py
Executable file
284
pkgs/desktops/gnome/extensions/update-extensions.py
Executable 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")
|
|
@ -6,13 +6,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "intel-media-driver";
|
pname = "intel-media-driver";
|
||||||
version = "21.2.0";
|
version = "21.2.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "intel";
|
owner = "intel";
|
||||||
repo = "media-driver";
|
repo = "media-driver";
|
||||||
rev = "intel-media-${version}";
|
rev = "intel-media-${version}";
|
||||||
sha256 = "101wbg5j00amdbfz4p6mpg90wi549dl78jd34mac5g6zhcpwqbh9";
|
sha256 = "0a49087ca3li1cbsdcwp31zlakfw9dxcr2lnxzm5s3x63jvwlbag";
|
||||||
};
|
};
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
, cyrus_sasl
|
, cyrus_sasl
|
||||||
, doxygen
|
, doxygen
|
||||||
, fetchFromGitLab
|
, fetchFromGitLab
|
||||||
, ffmpeg_3
|
, ffmpeg
|
||||||
, gdk-pixbuf
|
, gdk-pixbuf
|
||||||
, glib
|
, glib
|
||||||
, graphviz
|
, graphviz
|
||||||
|
@ -73,7 +73,7 @@ stdenv.mkDerivation rec {
|
||||||
bzrtp
|
bzrtp
|
||||||
cairo
|
cairo
|
||||||
cyrus_sasl
|
cyrus_sasl
|
||||||
ffmpeg_3
|
ffmpeg
|
||||||
gdk-pixbuf
|
gdk-pixbuf
|
||||||
glib
|
glib
|
||||||
gtk2
|
gtk2
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
, cmake
|
, cmake
|
||||||
, doxygen
|
, doxygen
|
||||||
, fetchFromGitLab
|
, fetchFromGitLab
|
||||||
, ffmpeg_3
|
, ffmpeg
|
||||||
, glew
|
, glew
|
||||||
, gsm
|
, gsm
|
||||||
, intltool
|
, intltool
|
||||||
|
@ -65,7 +65,7 @@ stdenv.mkDerivation rec {
|
||||||
alsaLib
|
alsaLib
|
||||||
bctoolbox
|
bctoolbox
|
||||||
bzrtp
|
bzrtp
|
||||||
ffmpeg_3
|
ffmpeg
|
||||||
glew
|
glew
|
||||||
gsm
|
gsm
|
||||||
libGL
|
libGL
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "octomap";
|
pname = "octomap";
|
||||||
version = "1.9.6";
|
version = "1.9.7";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "OctoMap";
|
owner = "OctoMap";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "03v341dffa0pfzmf2431xb5nq50zq9zlhgl6k2aa3fsza5xmbb70";
|
sha256 = "1pb58w6vka7wzs533lcy7i6y5nwjfrzy6b35fhrb1dhq2mgszc79";
|
||||||
};
|
};
|
||||||
sourceRoot = "source/octomap";
|
sourceRoot = "source/octomap";
|
||||||
|
|
||||||
|
|
|
@ -11,14 +11,14 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "aiodiscover";
|
pname = "aiodiscover";
|
||||||
version = "1.4.0";
|
version = "1.4.2";
|
||||||
disabled = pythonOlder "3.7";
|
disabled = pythonOlder "3.7";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "bdraco";
|
owner = "bdraco";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-t0bs3n0eLUR22i1lZkepCffjiUFzvXBdP7Xq49KXeS4=";
|
sha256 = "sha256-xiIN/YLIOdPuqenyxybu0iUpYEy3MyBssXswza5InU0=";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "karton-asciimagic";
|
pname = "karton-asciimagic";
|
||||||
version = "1.0.1";
|
version = "1.1.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "CERT-Polska";
|
owner = "CERT-Polska";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0d15fhb3y0jpwdfm4y11i6pmfa9szr943cm6slvf0ir31f9nznyz";
|
sha256 = "0vj4b8man81g99g4c53zyvp1gc47c2imj5ha9r4z4bf8gs3aqsv6";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
, ipykernel
|
, ipykernel
|
||||||
, jupyter_client
|
, jupyter_client
|
||||||
, nbformat
|
, nbformat
|
||||||
|
, pytestCheckHook
|
||||||
, pytest
|
, pytest
|
||||||
, six
|
, six
|
||||||
, glibcLocales
|
, glibcLocales
|
||||||
|
@ -23,7 +24,7 @@ buildPythonPackage rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
checkInputs = [
|
checkInputs = [
|
||||||
pytest
|
pytestCheckHook
|
||||||
matplotlib
|
matplotlib
|
||||||
sympy
|
sympy
|
||||||
pytestcov
|
pytestcov
|
||||||
|
@ -40,14 +41,15 @@ buildPythonPackage rec {
|
||||||
six
|
six
|
||||||
];
|
];
|
||||||
|
|
||||||
# Set HOME so that matplotlib doesn't try to use
|
pytestFlagsArray = [
|
||||||
# /homeless-shelter/.config/matplotlib, otherwise some of the tests fail for
|
"tests"
|
||||||
# having an unexpected warning on stderr produced by matplotlib.
|
# These are the main tests but they're fragile so skip them. They error
|
||||||
# Ignore impure tests.
|
# whenever matplotlib outputs any unexpected warnings, e.g. deprecation
|
||||||
checkPhase = ''
|
# warnings.
|
||||||
export HOME=$(mktemp -d)
|
"--ignore=tests/test_unit_tests_in_notebooks.py"
|
||||||
pytest tests --ignore tests/test_timeouts.py
|
# Impure
|
||||||
'';
|
"--ignore=tests/test_timeouts.py"
|
||||||
|
];
|
||||||
|
|
||||||
# Some of the tests use localhost networking.
|
# Some of the tests use localhost networking.
|
||||||
__darwinAllowLocalNetworking = true;
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
|
@ -14,12 +14,12 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
version = "0.12.4";
|
version = "0.13";
|
||||||
pname = "pybids";
|
pname = "pybids";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "830f3f518ab0d2e058e9ba6d6ff9a942792909c874433b3ad58a3339a23f46bf";
|
sha256 = "sha256-zVFaGAKgTP9UiUdmO4+Tut8Qc64xuGyB26cQLRHOqYw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
{ lib, stdenv, fetchFromGitHub, fetchpatch,
|
{ lib, stdenv, fetchFromGitHub,
|
||||||
fetchHex, erlang, makeWrapper,
|
fetchHex, erlang, makeWrapper,
|
||||||
writeScript, common-updater-scripts, coreutils, git, gnused, nix, rebar3-nix }:
|
writeScript, common-updater-scripts, coreutils, git, gnused, nix, rebar3-nix }:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "3.15.1";
|
version = "3.16.0";
|
||||||
owner = "erlang";
|
owner = "erlang";
|
||||||
deps = import ./rebar-deps.nix { inherit fetchFromGitHub fetchHex; };
|
deps = import ./rebar-deps.nix { inherit fetchFromGitHub fetchHex; };
|
||||||
rebar3 = stdenv.mkDerivation rec {
|
rebar3 = stdenv.mkDerivation rec {
|
||||||
|
@ -16,20 +16,11 @@ let
|
||||||
inherit owner;
|
inherit owner;
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "1pcy5m79g0l9l3d8lkbx6cq1w87z1g3sa6wwvgbgraj2v3wkyy5g";
|
sha256 = "1yqvm37l5rn5dyg4sc2hv47930s2524qrdpnjwy3zqa27r7k5n36";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ erlang ];
|
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 = ''
|
postPatch = ''
|
||||||
mkdir -p _checkouts _build/default/lib/
|
mkdir -p _checkouts _build/default/lib/
|
||||||
|
|
||||||
|
@ -109,7 +100,7 @@ let
|
||||||
# global-deps.patch makes it possible to use REBAR_GLOBAL_PLUGINS to
|
# global-deps.patch makes it possible to use REBAR_GLOBAL_PLUGINS to
|
||||||
# instruct rebar3 to always load a certain plugin. It is necessary since
|
# instruct rebar3 to always load a certain plugin. It is necessary since
|
||||||
# REBAR_GLOBAL_CONFIG_DIR doesn't seem to work for this.
|
# 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 {
|
in stdenv.mkDerivation {
|
||||||
pname = "rebar3-with-plugins";
|
pname = "rebar3-with-plugins";
|
||||||
|
|
|
@ -16,11 +16,6 @@
|
||||||
version = "1.8.1";
|
version = "1.8.1";
|
||||||
sha256 = "sha256-5FdFrenEdqmkaeoIQOQYqxk2DcRPAaIzME4RikRIa6A=";
|
sha256 = "sha256-5FdFrenEdqmkaeoIQOQYqxk2DcRPAaIzME4RikRIa6A=";
|
||||||
};
|
};
|
||||||
parse_trans = fetchHex {
|
|
||||||
pkg = "parse_trans";
|
|
||||||
version = "3.3.1";
|
|
||||||
sha256 = "sha256-B82Vd4hfVjYtQU6MTE5r3xDUOodnq7ktJMvoskxUiIs=";
|
|
||||||
};
|
|
||||||
getopt = fetchHex {
|
getopt = fetchHex {
|
||||||
pkg = "getopt";
|
pkg = "getopt";
|
||||||
version = "1.0.1";
|
version = "1.0.1";
|
||||||
|
@ -33,8 +28,8 @@
|
||||||
};
|
};
|
||||||
erlware_commons = fetchHex {
|
erlware_commons = fetchHex {
|
||||||
pkg = "erlware_commons";
|
pkg = "erlware_commons";
|
||||||
version = "1.4.0";
|
version = "1.5.0";
|
||||||
sha256 = "sha256-GF7PXPQ7qzoBPds2FM57un9seoJ5BOZOV9pU/N/c4uY=";
|
sha256 = "sha256-PnxvsrpMKbDdXf6dAxtmRJ4giOzsGoFGW9n94F7X0Ns=";
|
||||||
};
|
};
|
||||||
cth_readable = fetchHex {
|
cth_readable = fetchHex {
|
||||||
pkg = "cth_readable";
|
pkg = "cth_readable";
|
||||||
|
@ -48,8 +43,8 @@
|
||||||
};
|
};
|
||||||
certifi = fetchHex {
|
certifi = fetchHex {
|
||||||
pkg = "certifi";
|
pkg = "certifi";
|
||||||
version = "2.5.3";
|
version = "2.6.1";
|
||||||
sha256 = "sha256-7VFqyzkpsQEgip1wAGLVIPOVPaO2uRjYZhBv+pgOHBA=";
|
sha256 = "sha256-UkyXtJkbOEndXBemMSI4licsawr0RneLpGdaHf9Tu34=";
|
||||||
};
|
};
|
||||||
bbmustache = fetchHex {
|
bbmustache = fetchHex {
|
||||||
pkg = "bbmustache";
|
pkg = "bbmustache";
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "wally-cli";
|
pname = "wally-cli";
|
||||||
version = "2.0.0";
|
version = "2.0.1";
|
||||||
|
|
||||||
subPackages = [ "." ];
|
subPackages = [ "." ];
|
||||||
|
|
||||||
|
@ -14,15 +14,12 @@ buildGoModule rec {
|
||||||
owner = "zsa";
|
owner = "zsa";
|
||||||
repo = "wally-cli";
|
repo = "wally-cli";
|
||||||
rev = "${version}-linux";
|
rev = "${version}-linux";
|
||||||
sha256 = "0xz3z18bbnf736ngjj6jhnp3p2j55m5jhnb2xl6l5hybracfyhm7";
|
sha256 = "NuyQHEygy4LNqLtrpdwfCR+fNy3ZUxOClVdRen6AXMc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = "0jqx38x5qvir6zc5yq9p2adafwqhy4hil1k5g81rr1fvbn06k3a6";
|
vendorSha256 = "AVYG+aLpAXohUOORV/uPw7vro+Kg98+AmSmYGHtOals=";
|
||||||
runVend = true;
|
runVend = true;
|
||||||
|
|
||||||
# Can be removed when https://github.com/zsa/wally-cli/pull/1 is merged.
|
|
||||||
doCheck = false;
|
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A tool to flash firmware to mechanical keyboards";
|
description = "A tool to flash firmware to mechanical keyboards";
|
||||||
homepage = "https://ergodox-ez.com/pages/wally-planck";
|
homepage = "https://ergodox-ez.com/pages/wally-planck";
|
||||||
|
|
|
@ -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 ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -5,19 +5,17 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "betterlockscreen";
|
pname = "betterlockscreen";
|
||||||
version = "3.0.1";
|
version = "3.1.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "pavanjadhaw";
|
owner = "pavanjadhaw";
|
||||||
repo = "betterlockscreen";
|
repo = "betterlockscreen";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0jc8ifb69shmd0avx6vny4m1w5dfxkkf5vnm7qcrmc8yflb0s3z6";
|
sha256 = "14vkgdzw7mprjsvmhm3aav8gds73ngn2xxij4syq7l1mhk701wak";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
patches = [ ./replace-i3lock.patch ];
|
|
||||||
|
|
||||||
installPhase =
|
installPhase =
|
||||||
let
|
let
|
||||||
PATH =
|
PATH =
|
||||||
|
|
|
@ -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' \
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ lib, stdenv, fetchurl, fetchpatch, kernel }:
|
{ lib, stdenv, fetchurl, kernel }:
|
||||||
|
|
||||||
let cfg = import ./version.nix; in
|
let cfg = import ./version.nix; in
|
||||||
|
|
||||||
|
@ -11,14 +11,6 @@ stdenv.mkDerivation rec {
|
||||||
sha256 = cfg.sha256.${pname};
|
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;
|
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||||
|
|
||||||
hardeningDisable = [ "pic" ];
|
hardeningDisable = [ "pic" ];
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
{
|
{
|
||||||
version = "2021.0";
|
version = "2021.1";
|
||||||
|
|
||||||
sha256 = {
|
sha256 = {
|
||||||
batman-adv = "1898y0m8sgca0dmhyfkpmx2g6qc0b1xvh5nm7cvnhwl9h2jrp62s";
|
batman-adv = "1l1lk41h4chymrb41ihqrr3p80xdwhhp1kkksr157mzailyq8xxz";
|
||||||
alfred = "0jr4wbz81ijd03ssfxb9mqlj3zbx2k495lsl0np262hyla6w0qm0";
|
alfred = "122y92vqrpp3g6dbjfv8hkhwjlfa3skr91lbzicr0pw8mm6wzqll";
|
||||||
batctl = "1r01a8zxivq4slwc81dgg9qknqsli8qw17csfj95321gjpqqpv4w";
|
batctl = "0xp1cqcw0g0irgw9yhkch01rbn39gzvfxv8b2yya32vbnkmqrcj4";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -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" }
|
||||||
]
|
]
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
matrix-synapse-ldap3 = callPackage ./ldap3.nix { };
|
matrix-synapse-ldap3 = callPackage ./ldap3.nix { };
|
||||||
|
matrix-synapse-mjolnir-antispam = callPackage ./mjolnir-antispam.nix { };
|
||||||
matrix-synapse-pam = callPackage ./pam.nix { };
|
matrix-synapse-pam = callPackage ./pam.nix { };
|
||||||
matrix-synapse-shared-secret-auth = callPackage ./shared-secret-auth.nix { };
|
matrix-synapse-shared-secret-auth = callPackage ./shared-secret-auth.nix { };
|
||||||
}
|
}
|
||||||
|
|
32
pkgs/servers/matrix-synapse/plugins/mjolnir-antispam.nix
Normal file
32
pkgs/servers/matrix-synapse/plugins/mjolnir-antispam.nix
Normal 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 ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "grafana";
|
pname = "grafana";
|
||||||
version = "7.5.6";
|
version = "7.5.7";
|
||||||
|
|
||||||
excludedPackages = [ "release_publisher" ];
|
excludedPackages = [ "release_publisher" ];
|
||||||
|
|
||||||
|
@ -10,15 +10,15 @@ buildGoModule rec {
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
owner = "grafana";
|
owner = "grafana";
|
||||||
repo = "grafana";
|
repo = "grafana";
|
||||||
sha256 = "1683as90p4zkzhaj52vy60bcmpr77zynys87mjzh3s6ks3xfxn2x";
|
sha256 = "sha256-GTQK02zxOBTE+93vT0zLMhAeZ7F3Cq/0lbvbzwB2QZA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
srcStatic = fetchurl {
|
srcStatic = fetchurl {
|
||||||
url = "https://dl.grafana.com/oss/release/grafana-${version}.linux-amd64.tar.gz";
|
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:
|
# grafana-aws-sdk is specified with two versions which causes a problem later:
|
||||||
# go: inconsistent vendoring in /build/source:
|
# go: inconsistent vendoring in /build/source:
|
||||||
|
|
|
@ -16,8 +16,10 @@ let
|
||||||
passthru.tests = nixosTests.nextcloud;
|
passthru.tests = nixosTests.nextcloud;
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
mkdir -p $out/
|
mkdir -p $out/
|
||||||
cp -R . $out/
|
cp -R . $out/
|
||||||
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
@ -58,8 +60,8 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
nextcloud21 = generic {
|
nextcloud21 = generic {
|
||||||
version = "21.0.1";
|
version = "21.0.2";
|
||||||
sha256 = "dd7c8ccc01547914a75b44bbf86028289c8919dc39f4e2e720147b6bd596aebe";
|
sha256 = "5e5b38109a3485db5fd2d248f24478eabe6c0790ec10b030acbbee207d5511fe";
|
||||||
};
|
};
|
||||||
# tip: get she sha with:
|
# tip: get she sha with:
|
||||||
# curl 'https://download.nextcloud.com/server/releases/nextcloud-${version}.tar.bz2.sha256'
|
# curl 'https://download.nextcloud.com/server/releases/nextcloud-${version}.tar.bz2.sha256'
|
||||||
|
|
35
pkgs/servers/pr-tracker/default.nix
Normal file
35
pkgs/servers/pr-tracker/default.nix
Normal 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 ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "tailscale";
|
pname = "tailscale";
|
||||||
version = "1.8.3";
|
version = "1.8.5";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "tailscale";
|
owner = "tailscale";
|
||||||
repo = "tailscale";
|
repo = "tailscale";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0q0nk0ychb00xhycq3kda57dzrswl8yhci7fzv8yiqzrv3ygpvyd";
|
sha256 = "0wr6zb8v5082gbh0isz8inmndvqfqgmh5bgaz8ij2id5qwx5znx6";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
34
pkgs/tools/audio/stt/default.nix
Normal file
34
pkgs/tools/audio/stt/default.nix
Normal 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 ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -5,13 +5,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "ipinfo";
|
pname = "ipinfo";
|
||||||
version = "1.1.4";
|
version = "1.1.5";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = pname;
|
owner = pname;
|
||||||
repo = "cli";
|
repo = "cli";
|
||||||
rev = "${pname}-${version}";
|
rev = "${pname}-${version}";
|
||||||
sha256 = "1j50bbq7skbh1pffkmrbs1cyz2x22bniwcdw27rjzmvjixs4wj6h";
|
sha256 = "16i5vmx39j7l5mhs28niapki9530nsbw6xik8rsky55v9i5pr72d";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = null;
|
vendorSha256 = null;
|
||||||
|
|
|
@ -167,6 +167,7 @@ mapAliases ({
|
||||||
deadpixi-sam = deadpixi-sam-unstable;
|
deadpixi-sam = deadpixi-sam-unstable;
|
||||||
debian_devscripts = debian-devscripts; # added 2016-03-23
|
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
|
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
|
desktop_file_utils = desktop-file-utils; # added 2018-02-25
|
||||||
devicemapper = lvm2; # added 2018-04-25
|
devicemapper = lvm2; # added 2018-04-25
|
||||||
digikam5 = digikam; # added 2017-02-18
|
digikam5 = digikam; # added 2017-02-18
|
||||||
|
|
|
@ -7871,6 +7871,8 @@ in
|
||||||
|
|
||||||
polygraph = callPackage ../tools/networking/polygraph { };
|
polygraph = callPackage ../tools/networking/polygraph { };
|
||||||
|
|
||||||
|
pr-tracker = callPackage ../servers/pr-tracker { };
|
||||||
|
|
||||||
progress = callPackage ../tools/misc/progress { };
|
progress = callPackage ../tools/misc/progress { };
|
||||||
|
|
||||||
ps3netsrv = callPackage ../servers/ps3netsrv { };
|
ps3netsrv = callPackage ../servers/ps3netsrv { };
|
||||||
|
@ -28674,6 +28676,8 @@ in
|
||||||
|
|
||||||
streamlit = python3Packages.callPackage ../applications/science/machine-learning/streamlit { };
|
streamlit = python3Packages.callPackage ../applications/science/machine-learning/streamlit { };
|
||||||
|
|
||||||
|
stt = callPackage ../tools/audio/stt { };
|
||||||
|
|
||||||
stuntrally = callPackage ../games/stuntrally {
|
stuntrally = callPackage ../games/stuntrally {
|
||||||
ogre = ogre1_9;
|
ogre = ogre1_9;
|
||||||
mygui = mygui.override {
|
mygui = mygui.override {
|
||||||
|
@ -28939,51 +28943,10 @@ in
|
||||||
|
|
||||||
gnome = recurseIntoAttrs (callPackage ../desktops/gnome { });
|
gnome = recurseIntoAttrs (callPackage ../desktops/gnome { });
|
||||||
|
|
||||||
gnomeExtensions = recurseIntoAttrs {
|
inherit (callPackage ../desktops/gnome/extensions { })
|
||||||
appindicator = callPackage ../desktops/gnome/extensions/appindicator { };
|
gnomeExtensions
|
||||||
arcmenu = callPackage ../desktops/gnome/extensions/arcmenu { };
|
gnome38Extensions
|
||||||
caffeine = callPackage ../desktops/gnome/extensions/caffeine { };
|
gnome40Extensions;
|
||||||
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
|
|
||||||
};
|
|
||||||
|
|
||||||
gnome-connections = callPackage ../desktops/gnome/apps/gnome-connections { };
|
gnome-connections = callPackage ../desktops/gnome/apps/gnome-connections { };
|
||||||
|
|
||||||
|
@ -30172,8 +30135,6 @@ in
|
||||||
|
|
||||||
dbus-map = callPackage ../tools/misc/dbus-map { };
|
dbus-map = callPackage ../tools/misc/dbus-map { };
|
||||||
|
|
||||||
deepspeech = callPackage ../misc/deepspeech { };
|
|
||||||
|
|
||||||
dell-530cdn = callPackage ../misc/drivers/dell-530cdn {};
|
dell-530cdn = callPackage ../misc/drivers/dell-530cdn {};
|
||||||
|
|
||||||
demjson = with python3Packages; toPythonApplication demjson;
|
demjson = with python3Packages; toPythonApplication demjson;
|
||||||
|
|
|
@ -25,21 +25,21 @@
|
||||||
|
|
||||||
let
|
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 (pkgs) stdenv texinfo writeText;
|
||||||
inherit lib;
|
inherit lib;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Contains both melpa stable & unstable
|
# 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;
|
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;
|
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;
|
inherit lib pkgs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue