Project import generated by Copybara.

GitOrigin-RevId: 9e377a6ce42dccd9b624ae4ce8f978dc892ba0e2
This commit is contained in:
Default email 2021-04-08 18:26:57 +02:00
parent e4fa16c0f8
commit 849ee4d900
409 changed files with 16636 additions and 6496 deletions

View file

@ -94,6 +94,10 @@
/pkgs/applications/science/math/R @peti
/pkgs/development/r-modules @peti
# Ruby
/pkgs/development/interpreters/ruby @marsam
/pkgs/development/ruby-modules @marsam
# Rust
/pkgs/development/compilers/rust @Mic92 @LnL7 @zowoq
/pkgs/build-support/rust @andir @danieldk @zowoq
@ -135,7 +139,7 @@
/pkgs/development/libraries/qt-5 @ttuegel
# PostgreSQL and related stuff
/pkgs/servers/sql/postgresql @thoughtpolice
/pkgs/servers/sql/postgresql @thoughtpolice @marsam
/nixos/modules/services/databases/postgresql.xml @thoughtpolice
/nixos/modules/services/databases/postgresql.nix @thoughtpolice
/nixos/tests/postgresql.nix @thoughtpolice

View file

@ -147,6 +147,10 @@ Create a Docker image with many of the store paths being on their own layer to i
: Shell commands to run while building the final layer, without access to most of the layer contents. Changes to this layer are "on top" of all the other layers, so can create additional directories and files.
`fakeRootCommands` _optional_
: Shell commands to run while creating the archive for the final layer in a fakeroot environment. Unlike `extraCommands`, you can run `chown` to change the owners of the files in the archive, changing fakeroot's state instead of the real filesystem. The latter would require privileges that the build user does not have. Static binaries do not interact with the fakeroot environment. By default all files in the archive will be owned by root.
### Behavior of `contents` in the final image {#dockerTools-buildLayeredImage-arg-contents}
Each path directly listed in `contents` will have a symlink in the root of the image.

View file

@ -698,6 +698,16 @@
githubId = 1078530;
name = "Alexandre Peyroux";
};
applePrincess = {
email = "appleprincess@appleprincess.io";
github = "applePrincess";
githubId = 17154507;
name = "Lein Matsumaru";
keys = [{
longkeyid = "rsa4096/0xAAA50652F0479205";
fingerprint = "BF8B F725 DA30 E53E 7F11 4ED8 AAA5 0652 F047 9205";
}];
};
ar1a = {
email = "aria@ar1as.space";
github = "ar1a";
@ -2781,6 +2791,12 @@
githubId = 1753498;
name = "Dejan Lukan";
};
electrified = {
email = "ed@maidavale.org";
github = "electrified";
githubId = 103082;
name = "Ed Brindley";
};
elliottvillars = {
email = "elliottvillars@gmail.com";
github = "elliottvillars";
@ -3689,6 +3705,12 @@
githubId = 343415;
name = "Greg Roodt";
};
gschwartz = {
email = "gsch@pennmedicine.upenn.edu";
github = "GregorySchwartz";
githubId = 2490088;
name = "Gregory Schwartz";
};
gtrunsec = {
email = "gtrunsec@hardenedlinux.org";
github = "GTrunSec";
@ -8145,6 +8167,12 @@
githubId = 16779;
name = "Rickard Nilsson";
};
riey = {
email = "creeper844@gmail.com";
github = "Riey";
githubId = 14910534;
name = "Riey";
};
rika = {
email = "rika@paymentswit.ch";
github = "NekomimiScience";
@ -8693,6 +8721,12 @@
githubId = 19472270;
name = "Sebastian";
};
sebbadk = {
email = "sebastian@sebba.dk";
github = "SEbbaDK";
githubId = 1567527;
name = "Sebastian Hyberts";
};
sellout = {
email = "greg@technomadic.org";
github = "sellout";

View file

@ -87,6 +87,16 @@ with lib.maintainers; {
scope = "Maintain GNOME desktop environment and platform.";
};
home-assistant = {
members = [
fab
globin
hexa
mic92
];
scope = "Maintain the Home Assistant ecosystem";
};
jitsi = {
members = [
mmilata

View file

@ -118,6 +118,16 @@
<xref linkend="opt-services.samba-wsdd.enable" /> Web Services Dynamic Discovery host daemon
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://www.discourse.org/">Discourse</link>, a
modern and open source discussion platform.
</para>
<para>
See the <link linkend="module-services-discourse">Discourse
section of the NixOS manual</link> for more information.
</para>
</listitem>
</itemizedlist>
</section>

View file

@ -1,9 +0,0 @@
{ config, lib, ... }:
with lib;
{
config = mkIf (elem "amdgpu" config.services.xserver.videoDrivers) {
boot.blacklistedKernelModules = [ "radeon" ];
};
}

View file

@ -74,7 +74,6 @@
./hardware/sata.nix
./hardware/wooting.nix
./hardware/uinput.nix
./hardware/video/amdgpu.nix
./hardware/video/amdgpu-pro.nix
./hardware/video/ati.nix
./hardware/video/capture/mwprocapture.nix
@ -126,6 +125,7 @@
./programs/dconf.nix
./programs/digitalbitbox/default.nix
./programs/dmrconfig.nix
./programs/droidcam.nix
./programs/environment.nix
./programs/evince.nix
./programs/file-roller.nix
@ -357,6 +357,7 @@
./services/development/jupyter/default.nix
./services/development/jupyterhub/default.nix
./services/development/lorri.nix
./services/display-managers/greetd.nix
./services/editors/emacs.nix
./services/editors/infinoted.nix
./services/games/factorio.nix
@ -896,6 +897,7 @@
./services/web-apps/calibre-web.nix
./services/web-apps/convos.nix
./services/web-apps/cryptpad.nix
./services/web-apps/discourse.nix
./services/web-apps/documize.nix
./services/web-apps/dokuwiki.nix
./services/web-apps/engelsystem.nix

View file

@ -0,0 +1,16 @@
{ lib, pkgs, config, ... }:
with lib;
{
options.programs.droidcam = {
enable = mkEnableOption "DroidCam client";
};
config = lib.mkIf config.programs.droidcam.enable {
environment.systemPackages = [ pkgs.droidcam ];
boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
boot.kernelModules = [ "v4l2loopback" "snd-aloop" ];
};
}

View file

@ -65,7 +65,7 @@ let
in {
imports = [
(mkRenamedOptionModule [ "services" "snapserver" "controlPort"] [ "services" "snapserver" "tcp" "port" ])
(mkRenamedOptionModule [ "services" "snapserver" "controlPort" ] [ "services" "snapserver" "tcp" "port" ])
];
###### interface
@ -200,12 +200,21 @@ in {
location = mkOption {
type = types.oneOf [ types.path types.str ];
description = ''
The location of the pipe, file, Librespot/Airplay/process binary, or a TCP address.
Use an empty string for alsa.
For type <literal>pipe</literal> or <literal>file</literal>, the path to the pipe or file.
For type <literal>librespot</literal>, <literal>airplay</literal> or <literal>process</literal>, the path to the corresponding binary.
For type <literal>tcp</literal>, the <literal>host:port</literal> address to connect to or listen on.
For type <literal>meta</literal>, a list of stream names in the form <literal>/one/two/...</literal>. Don't forget the leading slash.
For type <literal>alsa</literal>, use an empty string.
'';
example = literalExample ''
"/path/to/pipe"
"/path/to/librespot"
"192.168.1.2:4444"
"/MyTCP/Spotify/MyPipe"
'';
};
type = mkOption {
type = types.enum [ "pipe" "librespot" "airplay" "file" "process" "tcp" "alsa" "spotify" ];
type = types.enum [ "pipe" "librespot" "airplay" "file" "process" "tcp" "alsa" "spotify" "meta" ];
default = "pipe";
description = ''
The type of input stream.

View file

@ -266,7 +266,7 @@ in
gitMinimal
openssh
util-linux
iproute
iproute2
ethtool
thin-provisioning-tools
iptables

View file

@ -8,7 +8,13 @@
}
],
"actions": {
"update-props": {}
"update-props": {
"bluez5.reconnect-profiles": [
"hfp_hf",
"hsp_hs",
"a2dp_sink"
]
}
}
},
{

View file

@ -0,0 +1,106 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.greetd;
tty = "tty${toString cfg.vt}";
settingsFormat = pkgs.formats.toml {};
in
{
options.services.greetd = {
enable = mkEnableOption "greetd";
package = mkOption {
type = types.package;
default = pkgs.greetd.greetd;
defaultText = "pkgs.greetd.greetd";
description = "The greetd package that should be used.";
};
settings = mkOption {
type = settingsFormat.type;
example = literalExample ''
{
default_session = {
command = "''${pkgs.greetd.greetd}/bin/agreety --cmd sway";
};
}
'';
description = ''
greetd configuration (<link xlink:href="https://man.sr.ht/~kennylevinsen/greetd/">documentation</link>)
as a Nix attribute set.
'';
};
vt = mkOption {
type = types.int;
default = 1;
description = ''
The virtual console (tty) that greetd should use. This option also disables getty on that tty.
'';
};
restart = mkOption {
type = types.bool;
default = !(cfg.settings ? initial_session);
defaultText = "!(config.services.greetd.settings ? initial_session)";
description = ''
Wether to restart greetd when it terminates (e.g. on failure).
This is usually desirable so a user can always log in, but should be disabled when using 'settings.initial_session' (autologin),
because every greetd restart will trigger the autologin again.
'';
};
};
config = mkIf cfg.enable {
services.greetd.settings.terminal.vt = mkDefault cfg.vt;
services.greetd.settings.default_session = mkDefault "greeter";
security.pam.services.greetd = {
allowNullPassword = true;
startSession = true;
};
# This prevents nixos-rebuild from killing greetd by activating getty again
systemd.services."autovt@${tty}".enable = false;
systemd.services.greetd = {
unitConfig = {
Wants = [
"systemd-user-sessions.service"
];
After = [
"systemd-user-sessions.service"
"plymouth-quit-wait.service"
"getty@${tty}.service"
];
Conflicts = [
"getty@${tty}.service"
];
};
serviceConfig = {
ExecStart = "${pkgs.greetd.greetd}/bin/greetd --config ${settingsFormat.generate "greetd.toml" cfg.settings}";
Restart = mkIf cfg.restart "always";
# Defaults from greetd upstream configuration
IgnoreSIGPIPE = false;
SendSIGHUP = true;
TimeoutStopSec = "30s";
KeyringMode = "shared";
};
# Don't kill a user session when using nixos-rebuild
restartIfChanged = false;
wantedBy = [ "graphical.target" ];
};
systemd.defaultUnit = "graphical.target";
users.users.greeter.isSystemUser = true;
};
meta.maintainers = with maintainers; [ queezle ];
}

View file

@ -119,8 +119,9 @@ let
backup = {
path = cfg.backup.path;
keep_time = cfg.backup.keepTime;
} // (optionalAttrs (cfg.backup.uploadOptions != {}) {
upload = cfg.backup.uploadOptions;
};
});
gitlab_shell = {
path = "${cfg.packages.gitlab-shell}";
hooks_path = "${cfg.statePath}/shell/hooks";

View file

@ -50,10 +50,15 @@ let
# List of components used in config
extraComponents = filter useComponent availableComponents;
package = if (cfg.autoExtraComponents && cfg.config != null)
testedPackage = if (cfg.autoExtraComponents && cfg.config != null)
then (cfg.package.override { inherit extraComponents; })
else cfg.package;
# overridePythonAttrs has to be applied after override
package = testedPackage.overridePythonAttrs (oldAttrs: {
doCheck = false;
});
# If you are changing this, please update the description in applyDefaultConfig
defaultConfig = {
homeassistant.time_zone = config.time.timeZone;
@ -63,7 +68,7 @@ let
};
in {
meta.maintainers = with maintainers; [ dotlambda ];
meta.maintainers = teams.home-assistant.members;
options.services.home-assistant = {
enable = mkEnableOption "Home Assistant";
@ -183,13 +188,9 @@ in {
};
package = mkOption {
default = pkgs.home-assistant.overridePythonAttrs (oldAttrs: {
doCheck = false;
});
default = pkgs.home-assistant;
defaultText = literalExample ''
pkgs.home-assistant.overridePythonAttrs (oldAttrs: {
doCheck = false;
})
pkgs.home-assistant
'';
type = types.package;
example = literalExample ''
@ -198,10 +199,12 @@ in {
}
'';
description = ''
Home Assistant package to use. By default the tests are disabled, as they take a considerable amout of time to complete.
Home Assistant package to use. Tests are automatically disabled, as they take a considerable amout of time to complete.
Override <literal>extraPackages</literal> or <literal>extraComponents</literal> in order to add additional dependencies.
If you specify <option>config</option> and do not set <option>autoExtraComponents</option>
to <literal>false</literal>, overriding <literal>extraComponents</literal> will have no effect.
Avoid <literal>home-assistant.overridePythonAttrs</literal> if you use
<literal>autoExtraComponents</literal>.
'';
};

View file

@ -1,55 +1,60 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.packagekit;
packagekitConf = ''
[Daemon]
DefaultBackend=${cfg.backend}
KeepCache=false
'';
inherit (lib)
mkEnableOption mkOption mkIf mkRemovedOptionModule types
listToAttrs recursiveUpdate;
vendorConf = ''
[PackagesNotFound]
DefaultUrl=https://github.com/NixOS/nixpkgs
CodecUrl=https://github.com/NixOS/nixpkgs
HardwareUrl=https://github.com/NixOS/nixpkgs
FontUrl=https://github.com/NixOS/nixpkgs
MimeUrl=https://github.com/NixOS/nixpkgs
'';
iniFmt = pkgs.formats.ini { };
confFiles = [
(iniFmt.generate "PackageKit.conf" (recursiveUpdate
{
Daemon = {
DefaultBackend = "test_nop";
KeepCache = false;
};
}
cfg.settings))
(iniFmt.generate "Vendor.conf" (recursiveUpdate
{
PackagesNotFound = rec {
DefaultUrl = "https://github.com/NixOS/nixpkgs";
CodecUrl = DefaultUrl;
HardwareUrl = DefaultUrl;
FontUrl = DefaultUrl;
MimeUrl = DefaultUrl;
};
}
cfg.vendorSettings))
];
in
{
imports = [
(mkRemovedOptionModule [ "services" "packagekit" "backend" ] "The only backend that doesn't blow up is `test_nop`.")
];
options = {
services.packagekit = {
enable = mkEnableOption
''
options.services.packagekit = {
enable = mkEnableOption ''
PackageKit provides a cross-platform D-Bus abstraction layer for
installing software. Software utilizing PackageKit can install
software regardless of the package manager.
'';
# TODO: integrate with PolicyKit if the nix backend matures to the point
# where it will require elevated permissions
backend = mkOption {
type = types.enum [ "test_nop" ];
default = "test_nop";
description = ''
PackageKit supports multiple different backends and <literal>auto</literal> which
should do the right thing.
</para>
<para>
On NixOS however, we do not have a backend compatible with nix 2.0
(refer to <link xlink:href="https://github.com/NixOS/nix/issues/233">this issue</link> so we have to force
it to <literal>test_nop</literal> for now.
'';
settings = mkOption {
type = iniFmt.type;
default = { };
description = "Additional settings passed straight through to PackageKit.conf";
};
vendorSettings = mkOption {
type = iniFmt.type;
default = { };
description = "Additional settings passed straight through to Vendor.conf";
};
};
@ -59,7 +64,9 @@ in
systemd.packages = with pkgs; [ packagekit ];
environment.etc."PackageKit/PackageKit.conf".text = packagekitConf;
environment.etc."PackageKit/Vendor.conf".text = vendorConf;
environment.etc = listToAttrs (map
(e:
lib.nameValuePair "PackageKit/${e.name}" { source = e; })
confFiles);
};
}

View file

@ -25,6 +25,7 @@ let
"artifactory"
"bind"
"bird"
"bitcoin"
"blackbox"
"collectd"
"dnsmasq"

View file

@ -0,0 +1,82 @@
{ config, lib, pkgs, options }:
with lib;
let
cfg = config.services.prometheus.exporters.bitcoin;
in
{
port = 9332;
extraOpts = {
rpcUser = mkOption {
type = types.str;
default = "bitcoinrpc";
description = ''
RPC user name.
'';
};
rpcPasswordFile = mkOption {
type = types.path;
description = ''
File containing RPC password.
'';
};
rpcScheme = mkOption {
type = types.enum [ "http" "https" ];
default = "http";
description = ''
Whether to connect to bitcoind over http or https.
'';
};
rpcHost = mkOption {
type = types.str;
default = "localhost";
description = ''
RPC host.
'';
};
rpcPort = mkOption {
type = types.port;
default = 8332;
description = ''
RPC port number.
'';
};
refreshSeconds = mkOption {
type = types.ints.unsigned;
default = 300;
description = ''
How often to ask bitcoind for metrics.
'';
};
extraEnv = mkOption {
type = types.attrsOf types.str;
default = {};
description = ''
Extra environment variables for the exporter.
'';
};
};
serviceOpts = {
script = ''
export BITCOIN_RPC_PASSWORD=$(cat ${cfg.rpcPasswordFile})
exec ${pkgs.prometheus-bitcoin-exporter}/bin/bitcoind-monitor.py
'';
environment = {
BITCOIN_RPC_USER = cfg.rpcUser;
BITCOIN_RPC_SCHEME = cfg.rpcScheme;
BITCOIN_RPC_HOST = cfg.rpcHost;
BITCOIN_RPC_PORT = toString cfg.rpcPort;
METRICS_ADDR = cfg.listenAddress;
METRICS_PORT = toString cfg.port;
REFRESH_SECONDS = toString cfg.refreshSeconds;
} // cfg.extraEnv;
};
}

View file

@ -156,7 +156,6 @@ in
securityType = mkOption {
type = types.str;
default = "user";
example = "share";
description = "Samba security type";
};

View file

@ -27,7 +27,7 @@ let
text = ''
#! /bin/sh
export PATH=$PATH:${pkgs.iproute}/sbin
export PATH=$PATH:${pkgs.iproute2}/sbin
ip link set $IFNAME up
ip address add ${cfg.ipAddress} dev $IFNAME

View file

@ -91,7 +91,7 @@ in
description = "Internet Key Exchange (IKE) Protocol Daemon for IPsec";
path = [
"${pkgs.libreswan}"
"${pkgs.iproute}"
"${pkgs.iproute2}"
"${pkgs.procps}"
"${pkgs.nssTools}"
"${pkgs.iptables}"
@ -115,8 +115,8 @@ in
ExecStart = "${libexec}/pluto --config ${configFile} --nofork \$PLUTO_OPTIONS";
ExecStop = "${libexec}/whack --shutdown";
ExecStopPost = [
"${pkgs.iproute}/bin/ip xfrm policy flush"
"${pkgs.iproute}/bin/ip xfrm state flush"
"${pkgs.iproute2}/bin/ip xfrm policy flush"
"${pkgs.iproute2}/bin/ip xfrm state flush"
"${ipsec} --stopnflog"
];
ExecReload = "${libexec}/whack --listen";

View file

@ -28,7 +28,7 @@ with lib;
"systemd-resolved.service"
];
path = [
pkgs.iproute
pkgs.iproute2
# Needed for ping
"/run/wrappers"
];

View file

@ -119,7 +119,7 @@ in
path = cfg.extraPackages ++ (with pkgs; [
# Client mode requires at least the following:
coreutils
iproute
iproute2
iptables
]);

View file

@ -164,7 +164,7 @@ in
preStart = ''
install -m 0755 -o quagga -g quagga -d /run/quagga
${pkgs.iproute}/bin/ip route flush proto zebra
${pkgs.iproute2}/bin/ip route flush proto zebra
'';
}
else

View file

@ -39,11 +39,11 @@ in {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = map ( x:
"${pkgs.iproute}/bin/rdma link add rxe_${x} type rxe netdev ${x}"
"${pkgs.iproute2}/bin/rdma link add rxe_${x} type rxe netdev ${x}"
) cfg.interfaces;
ExecStop = map ( x:
"${pkgs.iproute}/bin/rdma link delete rxe_${x}"
"${pkgs.iproute2}/bin/rdma link delete rxe_${x}"
) cfg.interfaces;
};
};

View file

@ -28,6 +28,7 @@ in {
systemd.packages = [ cfg.package ];
systemd.services.tailscaled = {
wantedBy = [ "multi-user.target" ];
path = [ pkgs.openresolv ];
serviceConfig.Environment = "PORT=${toString cfg.port}";
};
};

View file

@ -57,7 +57,7 @@ let
preUp = mkOption {
example = literalExample ''
${pkgs.iproute}/bin/ip netns add foo
${pkgs.iproute2}/bin/ip netns add foo
'';
default = "";
type = with types; coercedTo (listOf str) (concatStringsSep "\n") lines;
@ -68,7 +68,7 @@ let
preDown = mkOption {
example = literalExample ''
${pkgs.iproute}/bin/ip netns del foo
${pkgs.iproute2}/bin/ip netns del foo
'';
default = "";
type = with types; coercedTo (listOf str) (concatStringsSep "\n") lines;
@ -79,7 +79,7 @@ let
postUp = mkOption {
example = literalExample ''
${pkgs.iproute}/bin/ip netns add foo
${pkgs.iproute2}/bin/ip netns add foo
'';
default = "";
type = with types; coercedTo (listOf str) (concatStringsSep "\n") lines;
@ -90,7 +90,7 @@ let
postDown = mkOption {
example = literalExample ''
${pkgs.iproute}/bin/ip netns del foo
${pkgs.iproute2}/bin/ip netns del foo
'';
default = "";
type = with types; coercedTo (listOf str) (concatStringsSep "\n") lines;

View file

@ -5,7 +5,7 @@ with lib;
let cfg = config.services.cloud-init;
path = with pkgs; [
cloud-init
iproute
iproute2
nettools
openssh
shadow

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,323 @@
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0"
xml:id="module-services-discourse">
<title>Discourse</title>
<para>
<link xlink:href="https://www.discourse.org/">Discourse</link> is a
modern and open source discussion platform.
</para>
<section xml:id="module-services-discourse-basic-usage">
<title>Basic usage</title>
<para>
A minimal configuration using Let's Encrypt for TLS certificates looks like this:
<programlisting>
services.discourse = {
<link linkend="opt-services.discourse.enable">enable</link> = true;
<link linkend="opt-services.discourse.hostname">hostname</link> = "discourse.example.com";
admin = {
<link linkend="opt-services.discourse.admin.email">email</link> = "admin@example.com";
<link linkend="opt-services.discourse.admin.username">username</link> = "admin";
<link linkend="opt-services.discourse.admin.fullName">fullName</link> = "Administrator";
<link linkend="opt-services.discourse.admin.passwordFile">passwordFile</link> = "/path/to/password_file";
};
<link linkend="opt-services.discourse.secretKeyBaseFile">secretKeyBaseFile</link> = "/path/to/secret_key_base_file";
};
<link linkend="opt-security.acme.email">security.acme.email</link> = "me@example.com";
<link linkend="opt-security.acme.acceptTerms">security.acme.acceptTerms</link> = true;
</programlisting>
</para>
<para>
Provided a proper DNS setup, you'll be able to connect to the
instance at <literal>discourse.example.com</literal> and log in
using the credentials provided in
<literal>services.discourse.admin</literal>.
</para>
</section>
<section xml:id="module-services-discourse-tls">
<title>Using a regular TLS certificate</title>
<para>
To set up TLS using a regular certificate and key on file, use
the <xref linkend="opt-services.discourse.sslCertificate" />
and <xref linkend="opt-services.discourse.sslCertificateKey" />
options:
<programlisting>
services.discourse = {
<link linkend="opt-services.discourse.enable">enable</link> = true;
<link linkend="opt-services.discourse.hostname">hostname</link> = "discourse.example.com";
<link linkend="opt-services.discourse.sslCertificate">sslCertificate</link> = "/path/to/ssl_certificate";
<link linkend="opt-services.discourse.sslCertificateKey">sslCertificateKey</link> = "/path/to/ssl_certificate_key";
admin = {
<link linkend="opt-services.discourse.admin.email">email</link> = "admin@example.com";
<link linkend="opt-services.discourse.admin.username">username</link> = "admin";
<link linkend="opt-services.discourse.admin.fullName">fullName</link> = "Administrator";
<link linkend="opt-services.discourse.admin.passwordFile">passwordFile</link> = "/path/to/password_file";
};
<link linkend="opt-services.discourse.secretKeyBaseFile">secretKeyBaseFile</link> = "/path/to/secret_key_base_file";
};
</programlisting>
</para>
</section>
<section xml:id="module-services-discourse-database">
<title>Database access</title>
<para>
<productname>Discourse</productname> uses
<productname>PostgreSQL</productname> to store most of its
data. A database will automatically be enabled and a database
and role created unless <xref
linkend="opt-services.discourse.database.host" /> is changed from
its default of <literal>null</literal> or <xref
linkend="opt-services.discourse.database.createLocally" /> is set
to <literal>false</literal>.
</para>
<para>
External database access can also be configured by setting
<xref linkend="opt-services.discourse.database.host" />, <xref
linkend="opt-services.discourse.database.username" /> and <xref
linkend="opt-services.discourse.database.passwordFile" /> as
appropriate. Note that you need to manually create a database
called <literal>discourse</literal> (or the name you chose in
<xref linkend="opt-services.discourse.database.name" />) and
allow the configured database user full access to it.
</para>
</section>
<section xml:id="module-services-discourse-mail">
<title>Email</title>
<para>
In addition to the basic setup, you'll want to configure an SMTP
server <productname>Discourse</productname> can use to send user
registration and password reset emails, among others. You can
also optionally let <productname>Discourse</productname> receive
email, which enables people to reply to threads and conversations
via email.
</para>
<para>
A basic setup which assumes you want to use your configured <link
linkend="opt-services.discourse.hostname">hostname</link> as
email domain can be done like this:
<programlisting>
services.discourse = {
<link linkend="opt-services.discourse.enable">enable</link> = true;
<link linkend="opt-services.discourse.hostname">hostname</link> = "discourse.example.com";
<link linkend="opt-services.discourse.sslCertificate">sslCertificate</link> = "/path/to/ssl_certificate";
<link linkend="opt-services.discourse.sslCertificateKey">sslCertificateKey</link> = "/path/to/ssl_certificate_key";
admin = {
<link linkend="opt-services.discourse.admin.email">email</link> = "admin@example.com";
<link linkend="opt-services.discourse.admin.username">username</link> = "admin";
<link linkend="opt-services.discourse.admin.fullName">fullName</link> = "Administrator";
<link linkend="opt-services.discourse.admin.passwordFile">passwordFile</link> = "/path/to/password_file";
};
mail.outgoing = {
<link linkend="opt-services.discourse.mail.outgoing.serverAddress">serverAddress</link> = "smtp.emailprovider.com";
<link linkend="opt-services.discourse.mail.outgoing.port">port</link> = 587;
<link linkend="opt-services.discourse.mail.outgoing.username">username</link> = "user@emailprovider.com";
<link linkend="opt-services.discourse.mail.outgoing.passwordFile">passwordFile</link> = "/path/to/smtp_password_file";
};
<link linkend="opt-services.discourse.mail.incoming.enable">mail.incoming.enable</link> = true;
<link linkend="opt-services.discourse.secretKeyBaseFile">secretKeyBaseFile</link> = "/path/to/secret_key_base_file";
};
</programlisting>
This assumes you have set up an MX record for the address you've
set in <link linkend="opt-services.discourse.hostname">hostname</link> and
requires proper SPF, DKIM and DMARC configuration to be done for
the domain you're sending from, in order for email to be reliably delivered.
</para>
<para>
If you want to use a different domain for your outgoing email
(for example <literal>example.com</literal> instead of
<literal>discourse.example.com</literal>) you should set
<xref linkend="opt-services.discourse.mail.notificationEmailAddress" /> and
<xref linkend="opt-services.discourse.mail.contactEmailAddress" /> manually.
</para>
<note>
<para>
Setup of TLS for incoming email is currently only configured
automatically when a regular TLS certificate is used, i.e. when
<xref linkend="opt-services.discourse.sslCertificate" /> and
<xref linkend="opt-services.discourse.sslCertificateKey" /> are
set.
</para>
</note>
</section>
<section xml:id="module-services-discourse-settings">
<title>Additional settings</title>
<para>
Additional site settings and backend settings, for which no
explicit <productname>NixOS</productname> options are provided,
can be set in <xref linkend="opt-services.discourse.siteSettings" /> and
<xref linkend="opt-services.discourse.backendSettings" /> respectively.
</para>
<section xml:id="module-services-discourse-site-settings">
<title>Site settings</title>
<para>
<quote>Site settings</quote> are the settings that can be
changed through the <productname>Discourse</productname>
UI. Their <emphasis>default</emphasis> values can be set using
<xref linkend="opt-services.discourse.siteSettings" />.
</para>
<para>
Settings are expressed as a Nix attribute set which matches the
structure of the configuration in
<link xlink:href="https://github.com/discourse/discourse/blob/master/config/site_settings.yml">config/site_settings.yml</link>.
To find a setting's path, you only need to care about the first
two levels; i.e. its category (e.g. <literal>login</literal>)
and name (e.g. <literal>invite_only</literal>).
</para>
<para>
Settings containing secret data should be set to an attribute
set containing the attribute <literal>_secret</literal> - a
string pointing to a file containing the value the option
should be set to. See the example.
</para>
</section>
<section xml:id="module-services-discourse-backend-settings">
<title>Backend settings</title>
<para>
Settings are expressed as a Nix attribute set which matches the
structure of the configuration in
<link xlink:href="https://github.com/discourse/discourse/blob/stable/config/discourse_defaults.conf">config/discourse.conf</link>.
Empty parameters can be defined by setting them to
<literal>null</literal>.
</para>
</section>
<section xml:id="module-services-discourse-settings-example">
<title>Example</title>
<para>
The following example sets the title and description of the
<productname>Discourse</productname> instance and enables
<productname>GitHub</productname> login in the site settings,
and changes a few request limits in the backend settings:
<programlisting>
services.discourse = {
<link linkend="opt-services.discourse.enable">enable</link> = true;
<link linkend="opt-services.discourse.hostname">hostname</link> = "discourse.example.com";
<link linkend="opt-services.discourse.sslCertificate">sslCertificate</link> = "/path/to/ssl_certificate";
<link linkend="opt-services.discourse.sslCertificateKey">sslCertificateKey</link> = "/path/to/ssl_certificate_key";
admin = {
<link linkend="opt-services.discourse.admin.email">email</link> = "admin@example.com";
<link linkend="opt-services.discourse.admin.username">username</link> = "admin";
<link linkend="opt-services.discourse.admin.fullName">fullName</link> = "Administrator";
<link linkend="opt-services.discourse.admin.passwordFile">passwordFile</link> = "/path/to/password_file";
};
mail.outgoing = {
<link linkend="opt-services.discourse.mail.outgoing.serverAddress">serverAddress</link> = "smtp.emailprovider.com";
<link linkend="opt-services.discourse.mail.outgoing.port">port</link> = 587;
<link linkend="opt-services.discourse.mail.outgoing.username">username</link> = "user@emailprovider.com";
<link linkend="opt-services.discourse.mail.outgoing.passwordFile">passwordFile</link> = "/path/to/smtp_password_file";
};
<link linkend="opt-services.discourse.mail.incoming.enable">mail.incoming.enable</link> = true;
<link linkend="opt-services.discourse.siteSettings">siteSettings</link> = {
required = {
title = "My Cats";
site_description = "Discuss My Cats (and be nice plz)";
};
login = {
enable_github_logins = true;
github_client_id = "a2f6dfe838cb3206ce20";
github_client_secret._secret = /run/keys/discourse_github_client_secret;
};
};
<link linkend="opt-services.discourse.backendSettings">backendSettings</link> = {
max_reqs_per_ip_per_minute = 300;
max_reqs_per_ip_per_10_seconds = 60;
max_asset_reqs_per_ip_per_10_seconds = 250;
max_reqs_per_ip_mode = "warn+block";
};
<link linkend="opt-services.discourse.secretKeyBaseFile">secretKeyBaseFile</link> = "/path/to/secret_key_base_file";
};
</programlisting>
</para>
<para>
In the resulting site settings file, the
<literal>login.github_client_secret</literal> key will be set
to the contents of the
<filename>/run/keys/discourse_github_client_secret</filename>
file.
</para>
</section>
</section>
<section xml:id="module-services-discourse-plugins">
<title>Plugins</title>
<para>
You can install <productname>Discourse</productname> plugins
using the <xref linkend="opt-services.discourse.plugins" />
option. As long as a plugin supports the standard install
method, packaging it should only require fetching its source
with an appropriate fetcher.
</para>
<para>
Some plugins provide <link
linkend="module-services-discourse-site-settings">site
settings</link>. Their defaults can be configured using <xref
linkend="opt-services.discourse.siteSettings" />, just like
regular site settings. To find the names of these settings, look
in the <literal>config/settings.yml</literal> file of the plugin
repo.
</para>
<para>
For example, to add the <link
xlink:href="https://github.com/discourse/discourse-spoiler-alert">discourse-spoiler-alert</link>
plugin and disable it by default:
<programlisting>
services.discourse = {
<link linkend="opt-services.discourse.enable">enable</link> = true;
<link linkend="opt-services.discourse.hostname">hostname</link> = "discourse.example.com";
<link linkend="opt-services.discourse.sslCertificate">sslCertificate</link> = "/path/to/ssl_certificate";
<link linkend="opt-services.discourse.sslCertificateKey">sslCertificateKey</link> = "/path/to/ssl_certificate_key";
admin = {
<link linkend="opt-services.discourse.admin.email">email</link> = "admin@example.com";
<link linkend="opt-services.discourse.admin.username">username</link> = "admin";
<link linkend="opt-services.discourse.admin.fullName">fullName</link> = "Administrator";
<link linkend="opt-services.discourse.admin.passwordFile">passwordFile</link> = "/path/to/password_file";
};
mail.outgoing = {
<link linkend="opt-services.discourse.mail.outgoing.serverAddress">serverAddress</link> = "smtp.emailprovider.com";
<link linkend="opt-services.discourse.mail.outgoing.port">port</link> = 587;
<link linkend="opt-services.discourse.mail.outgoing.username">username</link> = "user@emailprovider.com";
<link linkend="opt-services.discourse.mail.outgoing.passwordFile">passwordFile</link> = "/path/to/smtp_password_file";
};
<link linkend="opt-services.discourse.mail.incoming.enable">mail.incoming.enable</link> = true;
<link linkend="opt-services.discourse.mail.incoming.enable">plugins</link> = [
(pkgs.fetchFromGitHub {
owner = "discourse";
repo = "discourse-spoiler-alert";
rev = "e200cfa571d252cab63f3d30d619b370986e4cee";
sha256 = "0ya69ix5g77wz4c9x9gmng6l25ghb5xxlx3icr6jam16q14dzc33";
})
];
<link linkend="opt-services.discourse.siteSettings">siteSettings</link> = {
plugins = {
spoiler_enabled = false;
};
};
<link linkend="opt-services.discourse.secretKeyBaseFile">secretKeyBaseFile</link> = "/path/to/secret_key_base_file";
};
</programlisting>
</para>
</section>
</chapter>

View file

@ -397,6 +397,9 @@ in
default = pkgs.nginxStable;
defaultText = "pkgs.nginxStable";
type = types.package;
apply = p: p.override {
modules = p.modules ++ cfg.additionalModules;
};
description = "
Nginx package to use. This defaults to the stable version. Note
that the nginx team recommends to use the mainline version which
@ -404,6 +407,17 @@ in
";
};
additionalModules = mkOption {
default = [];
type = types.listOf (types.attrsOf types.anything);
example = literalExample "[ pkgs.nginxModules.brotli ]";
description = ''
Additional <link xlink:href="https://www.nginx.com/resources/wiki/modules/">third-party nginx modules</link>
to install. Packaged modules are available in
<literal>pkgs.nginxModules</literal>.
'';
};
logError = mkOption {
default = "stderr";
type = types.str;

View file

@ -55,7 +55,7 @@ in
# The shared libraries are required for DNS resolution
boot.initrd.extraUtilsCommands = ''
copy_bin_and_libs ${pkgs.openvpn}/bin/openvpn
copy_bin_and_libs ${pkgs.iproute}/bin/ip
copy_bin_and_libs ${pkgs.iproute2}/bin/ip
cp -pv ${pkgs.glibc}/lib/libresolv.so.2 $out/lib
cp -pv ${pkgs.glibc}/lib/libnss_dns.so.2 $out/lib

View file

@ -1144,7 +1144,7 @@ in
environment.systemPackages =
[ pkgs.host
pkgs.iproute
pkgs.iproute2
pkgs.iputils
pkgs.nettools
]

View file

@ -88,6 +88,7 @@ in
croc = handleTest ./croc.nix {};
deluge = handleTest ./deluge.nix {};
dhparams = handleTest ./dhparams.nix {};
discourse = handleTest ./discourse.nix {};
dnscrypt-proxy2 = handleTestOn ["x86_64-linux"] ./dnscrypt-proxy2.nix {};
dnscrypt-wrapper = handleTestOn ["x86_64-linux"] ./dnscrypt-wrapper {};
doas = handleTest ./doas.nix {};
@ -193,9 +194,7 @@ in
keepalived = handleTest ./keepalived.nix {};
keepassxc = handleTest ./keepassxc.nix {};
kerberos = handleTest ./kerberos/default.nix {};
kernel-latest = handleTest ./kernel-latest.nix {};
kernel-lts = handleTest ./kernel-lts.nix {};
kernel-testing = handleTest ./kernel-testing.nix {};
kernel-generic = handleTest ./kernel-generic.nix {};
kernel-latest-ath-user-regd = handleTest ./kernel-latest-ath-user-regd.nix {};
keycloak = discoverTests (import ./keycloak.nix);
keymap = handleTest ./keymap.nix {};

View file

@ -0,0 +1,197 @@
# This tests Discourse by:
# 1. logging in as the admin user
# 2. sending a private message to the admin user through the API
# 3. replying to that message via email.
import ./make-test-python.nix (
{ pkgs, lib, ... }:
let
certs = import ./common/acme/server/snakeoil-certs.nix;
clientDomain = "client.fake.domain";
discourseDomain = certs.domain;
adminPassword = "eYAX85qmMJ5GZIHLaXGDAoszD7HSZp5d";
secretKeyBase = "381f4ac6d8f5e49d804dae72aa9c046431d2f34c656a705c41cd52fed9b4f6f76f51549f0b55db3b8b0dded7a00d6a381ebe9a4367d2d44f5e743af6628b4d42";
admin = {
email = "alice@${clientDomain}";
username = "alice";
fullName = "Alice Admin";
passwordFile = "${pkgs.writeText "admin-pass" adminPassword}";
};
in
{
name = "discourse";
meta = with pkgs.lib.maintainers; {
maintainers = [ talyz ];
};
nodes.discourse =
{ nodes, ... }:
{
virtualisation.memorySize = 2048;
imports = [ common/user-account.nix ];
security.pki.certificateFiles = [
certs.ca.cert
];
networking.extraHosts = ''
127.0.0.1 ${discourseDomain}
${nodes.client.config.networking.primaryIPAddress} ${clientDomain}
'';
services.postfix = {
enableSubmission = true;
enableSubmissions = true;
submissionsOptions = {
smtpd_sasl_auth_enable = "yes";
smtpd_client_restrictions = "permit";
};
};
environment.systemPackages = [ pkgs.jq ];
services.discourse = {
enable = true;
inherit admin;
hostname = discourseDomain;
sslCertificate = "${certs.${discourseDomain}.cert}";
sslCertificateKey = "${certs.${discourseDomain}.key}";
secretKeyBaseFile = "${pkgs.writeText "secret-key-base" secretKeyBase}";
enableACME = false;
mail.outgoing.serverAddress = clientDomain;
mail.incoming.enable = true;
siteSettings = {
posting = {
min_post_length = 5;
min_first_post_length = 5;
min_personal_message_post_length = 5;
};
};
unicornTimeout = 900;
};
networking.firewall.allowedTCPPorts = [ 25 465 ];
};
nodes.client =
{ nodes, ... }:
{
imports = [ common/user-account.nix ];
security.pki.certificateFiles = [
certs.ca.cert
];
networking.extraHosts = ''
127.0.0.1 ${clientDomain}
${nodes.discourse.config.networking.primaryIPAddress} ${discourseDomain}
'';
services.dovecot2 = {
enable = true;
protocols = [ "imap" ];
modules = [ pkgs.dovecot_pigeonhole ];
};
services.postfix = {
enable = true;
origin = clientDomain;
relayDomains = [ clientDomain ];
config = {
compatibility_level = "2";
smtpd_banner = "ESMTP server";
myhostname = clientDomain;
mydestination = clientDomain;
};
};
environment.systemPackages =
let
replyToEmail = pkgs.writeScriptBin "reply-to-email" ''
#!${pkgs.python3.interpreter}
import imaplib
import smtplib
import ssl
import email.header
from email import message_from_bytes
from email.message import EmailMessage
with imaplib.IMAP4('localhost') as imap:
imap.login('alice', 'foobar')
imap.select()
status, data = imap.search(None, 'ALL')
assert status == 'OK'
nums = data[0].split()
assert len(nums) == 1
status, msg_data = imap.fetch(nums[0], '(RFC822)')
assert status == 'OK'
msg = email.message_from_bytes(msg_data[0][1])
subject = str(email.header.make_header(email.header.decode_header(msg['Subject'])))
reply_to = email.header.decode_header(msg['Reply-To'])[0][0]
message_id = email.header.decode_header(msg['Message-ID'])[0][0]
date = email.header.decode_header(msg['Date'])[0][0]
ctx = ssl.create_default_context()
with smtplib.SMTP_SSL(host='${discourseDomain}', context=ctx) as smtp:
reply = EmailMessage()
reply['Subject'] = 'Re: ' + subject
reply['To'] = reply_to
reply['From'] = 'alice@${clientDomain}'
reply['In-Reply-To'] = message_id
reply['References'] = message_id
reply['Date'] = date
reply.set_content("Test reply.")
smtp.send_message(reply)
smtp.quit()
'';
in
[ replyToEmail ];
networking.firewall.allowedTCPPorts = [ 25 ];
};
testScript = { nodes }:
let
request = builtins.toJSON {
title = "Private message";
raw = "This is a test message.";
target_usernames = admin.username;
archetype = "private_message";
};
in ''
discourse.start()
client.start()
discourse.wait_for_unit("discourse.service")
discourse.wait_for_file("/run/discourse/sockets/unicorn.sock")
discourse.wait_until_succeeds("curl -sS -f https://${discourseDomain}")
discourse.succeed(
"curl -sS -f https://${discourseDomain}/session/csrf -c cookie -b cookie -H 'Accept: application/json' | jq -r '\"X-CSRF-Token: \" + .csrf' > csrf_token",
"curl -sS -f https://${discourseDomain}/session -c cookie -b cookie -H @csrf_token -H 'Accept: application/json' -d 'login=${nodes.discourse.config.services.discourse.admin.username}' -d \"password=${adminPassword}\" | jq -e '.user.username == \"${nodes.discourse.config.services.discourse.admin.username}\"'",
"curl -sS -f https://${discourseDomain}/login -v -H 'Accept: application/json' -c cookie -b cookie 2>&1 | grep ${nodes.discourse.config.services.discourse.admin.username}",
)
client.wait_for_unit("postfix.service")
client.wait_for_unit("dovecot2.service")
discourse.succeed(
"sudo -u discourse discourse-rake api_key:create_master[master] >api_key",
'curl -sS -f https://${discourseDomain}/posts -X POST -H "Content-Type: application/json" -H "Api-Key: $(<api_key)" -H "Api-Username: system" -d \'${request}\' ',
)
client.wait_until_succeeds("reply-to-email")
discourse.wait_until_succeeds(
'curl -sS -f https://${discourseDomain}/topics/private-messages/system -H "Accept: application/json" -H "Api-Key: $(<api_key)" -H "Api-Username: system" | jq -e \'if .topic_list.topics[0].id != null then .topic_list.topics[0].id else null end\' >topic_id'
)
discourse.succeed(
'curl -sS -f https://${discourseDomain}/t/$(<topic_id) -H "Accept: application/json" -H "Api-Key: $(<api_key)" -H "Api-Username: system" | jq -e \'if .post_stream.posts[1].cooked == "<p>Test reply.</p>" then true else null end\' '
)
'';
})

View file

@ -313,5 +313,13 @@ import ./make-test-python.nix ({ pkgs, ... }: {
docker.succeed(
"docker images --format '{{.Repository}}' | grep -F '${examples.prefixedLayeredImage.imageName}'"
)
with subtest("buildLayeredImage supports running chown with fakeRootCommands"):
docker.succeed(
"docker load --input='${examples.layeredImageWithFakeRootCommands}'"
)
docker.succeed(
"docker run --rm ${examples.layeredImageWithFakeRootCommands.imageName} sh -c 'stat -c '%u' /home/jane | grep -E ^1000$'"
)
'';
})

View file

@ -0,0 +1,37 @@
{ system ? builtins.currentSystem
, config ? { }
, pkgs ? import ../.. { inherit system config; }
}:
with pkgs.lib;
let
makeKernelTest = version: linuxPackages: (import ./make-test-python.nix ({ pkgs, ... }: {
name = "kernel-${version}";
meta = with pkgs.lib.maintainers; {
maintainers = [ nequissimus ];
};
machine = { ... }:
{
boot.kernelPackages = linuxPackages;
};
testScript =
''
assert "Linux" in machine.succeed("uname -s")
assert "${linuxPackages.kernel.modDirVersion}" in machine.succeed("uname -a")
'';
}));
in
with pkgs; {
linux_4_4 = makeKernelTest "4.4" linuxPackages_4_4;
linux_4_9 = makeKernelTest "4.9" linuxPackages_4_9;
linux_4_14 = makeKernelTest "4.14" linuxPackages_4_14;
linux_4_19 = makeKernelTest "4.19" linuxPackages_4_19;
linux_5_4 = makeKernelTest "5.4" linuxPackages_5_4;
linux_5_10 = makeKernelTest "5.10" linuxPackages_5_10;
linux_5_11 = makeKernelTest "5.11" linuxPackages_5_11;
linux_testing = makeKernelTest "testing" linuxPackages_testing;
}

View file

@ -1,17 +0,0 @@
import ./make-test-python.nix ({ pkgs, ...} : {
name = "kernel-latest";
meta = with pkgs.lib.maintainers; {
maintainers = [ nequissimus ];
};
machine = { pkgs, ... }:
{
boot.kernelPackages = pkgs.linuxPackages_latest;
};
testScript =
''
assert "Linux" in machine.succeed("uname -s")
assert "${pkgs.linuxPackages_latest.kernel.version}" in machine.succeed("uname -a")
'';
})

View file

@ -1,17 +0,0 @@
import ./make-test-python.nix ({ pkgs, ...} : {
name = "kernel-lts";
meta = with pkgs.lib.maintainers; {
maintainers = [ nequissimus ];
};
machine = { pkgs, ... }:
{
boot.kernelPackages = pkgs.linuxPackages;
};
testScript =
''
assert "Linux" in machine.succeed("uname -s")
assert "${pkgs.linuxPackages.kernel.version}" in machine.succeed("uname -a")
'';
})

View file

@ -1,17 +0,0 @@
import ./make-test-python.nix ({ pkgs, ...} : {
name = "kernel-testing";
meta = with pkgs.lib.maintainers; {
maintainers = [ nequissimus ];
};
machine = { pkgs, ... }:
{
boot.kernelPackages = pkgs.linuxPackages_testing;
};
testScript =
''
assert "Linux" in machine.succeed("uname -s")
assert "${pkgs.linuxPackages_testing.kernel.modDirVersion}" in machine.succeed("uname -a")
'';
})

View file

@ -136,6 +136,24 @@ let
'';
};
bitcoin = {
exporterConfig = {
enable = true;
rpcUser = "bitcoinrpc";
rpcPasswordFile = pkgs.writeText "password" "hunter2";
};
metricProvider = {
services.bitcoind.default.enable = true;
services.bitcoind.default.rpc.users.bitcoinrpc.passwordHMAC = "e8fe33f797e698ac258c16c8d7aadfbe$872bdb8f4d787367c26bcfd75e6c23c4f19d44a69f5d1ad329e5adf3f82710f7";
};
exporterTest = ''
wait_for_unit("prometheus-bitcoin-exporter.service")
wait_for_unit("bitcoind-default.service")
wait_for_open_port(9332)
succeed("curl -sSf http://localhost:9332/metrics | grep -q '^bitcoin_blocks '")
'';
};
blackbox = {
exporterConfig = {
enable = true;

View file

@ -34,6 +34,10 @@ in {
type = "tcp";
location = "127.0.0.1:${toString tcpStreamPort}";
};
meta = {
type = "meta";
location = "/mpd/bluetooth/tcp";
};
};
};
};

View file

@ -43,7 +43,7 @@ import ./make-test-python.nix ({pkgs, ...}: {
# Everyone on the "isp" machine will be able to add routes to the kernel.
security.wrappers.add-dhcpd-lease = {
source = pkgs.writeShellScript "add-dhcpd-lease" ''
exec ${pkgs.iproute}/bin/ip -6 route replace "$1" via "$2"
exec ${pkgs.iproute2}/bin/ip -6 route replace "$1" via "$2"
'';
capabilities = "cap_net_admin+ep";
};

View file

@ -6,11 +6,11 @@
stdenv.mkDerivation rec {
pname = "bitwig-studio";
version = "3.3.6";
version = "3.3.7";
src = fetchurl {
url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
sha256 = "sha256-k7L6CU2lY9192tfaWtVOxq9BCY7FZZdxmHT8EA+ZFsk=";
sha256 = "13jr45kzv0xjhhqk30qpq793349qyx8jpas4kl6i6bk3xfrd3fbz";
};
nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ];

View file

@ -13,13 +13,13 @@
stdenv.mkDerivation rec {
pname = "ft2-clone";
version = "1.44_fix";
version = "1.46";
src = fetchFromGitHub {
owner = "8bitbubsy";
repo = "ft2-clone";
rev = "v${version}";
sha256 = "sha256-2HhG2cDzAvpSm655M1KQnjbfVvqqOZDz2ty7xnttskA=";
sha256 = "sha256-Y6FgIbNCsxnM/B2bEB7oufBjU1BnBYaz7/oysWttIOc=";
};
# Adapt the linux-only CMakeLists to darwin (more reliable than make-macos.sh)

View file

@ -2,13 +2,13 @@
rustPlatform.buildRustPackage rec {
pname = "netease-music-tui";
version = "v0.1.2";
version = "0.1.3";
src = fetchFromGitHub {
owner = "betta-cyber";
repo = "netease-music-tui";
rev = version;
sha256 = "0m5b3q493d32kxznm4apn56216l07b1c49km236i03mpfvdw7m1f";
rev = "v${version}";
sha256 = "09355a6d197ckayh9833y39dsarklgpgrq3raapiv25z59di30qq";
};
cargoPatches = [ ./cargo-lock.patch ];
@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec {
nativeBuildInputs = [ pkg-config ];
buildInputs = [ alsaLib openssl ];
cargoSha256 = "1kfbnwy3lkbhz0ggxwr5n6qd1plipkr1ycr3z2r7c0amrzzbkc7l";
cargoSha256 = "0f06wc7h2zjipifvxsskxvihjf6mykrjrm7yk0zf98ra079bc9g9";
meta = with lib; {
homepage = "https://github.com/betta-cyber/netease-music-tui";

View file

@ -0,0 +1,20 @@
#!nix-shell
#!nix-shell -i bash -p coreutils gnugrep git cargo
# This updates cargo-lock.patch for the netease-music-tui version listed in
# default.nix.
set -eu -o verbose
here=$PWD
version=$(cat default.nix | grep '^ version = "' | cut -d '"' -f 2)
checkout=$(mktemp -d)
git clone -b "$version" --depth=1 https://github.com/betta-cyber/netease-music-tui "$checkout"
cd "$checkout"
cargo generate-lockfile
git add -f Cargo.lock
git diff HEAD -- Cargo.lock > "$here"/cargo-lock.patch
cd "$here"
rm -rf "$checkout"

View file

@ -2,7 +2,7 @@
buildGoModule rec {
pname = "NoiseTorch";
version = "0.9.0";
version = "0.10.1";
src = fetchFromGitHub {
owner = "lawl";
@ -11,7 +11,10 @@ buildGoModule rec {
sha256 = "1a4g112h83m55pga8kq2a1wzxpycj59v4bygyjfyi1s09q1y97qg";
};
patches = [ ./version.patch ];
patches = [
# Get version from environment instead of git tags
./version.patch
];
vendorSha256 = null;

View file

@ -20,8 +20,8 @@ let
aixlog = dependency {
name = "aixlog";
version = "1.4.0";
sha256 = "0f2bs5j1jjajcpa251dslnwkgglaam3b0cm6wdx5l7mbwvnmib2g";
version = "1.5.0";
sha256 = "09mnkrans9zmwfxsiwgkm0rba66c11kg5zby9x3rjic34gnmw6ay";
};
popl = dependency {
@ -34,13 +34,13 @@ in
stdenv.mkDerivation rec {
pname = "snapcast";
version = "0.23.0";
version = "0.24.0";
src = fetchFromGitHub {
owner = "badaix";
repo = "snapcast";
rev = "v${version}";
sha256 = "0183hhghzn0fhw2qzc1s009q7miabpcf0pxaqjdscsl8iivxqknd";
sha256 = "13yz8alplnqwkcns3mcli01qbyy6l3h62xx0v71ygcrz371l4g9g";
};
nativeBuildInputs = [ cmake pkg-config boost170.dev ];
@ -64,6 +64,6 @@ stdenv.mkDerivation rec {
description = "Synchronous multi-room audio player";
homepage = "https://github.com/badaix/snapcast";
maintainers = with maintainers; [ fpletz ];
license = licenses.gpl3;
license = licenses.gpl3Plus;
};
}

View file

@ -1,6 +1,6 @@
import ./generic.nix (rec {
version = "27.1";
sha256 = "0h9f2wpmp6rb5rfwvqwv1ia1nw86h74p7hnz3vb3gjazj67i4k2a";
version = "27.2";
sha256 = "sha256-tKfMTnjmPzeGJOCRkhW5EK9bsqCvyBn60pgnLp9Awbk=";
patches = [
./tramp-detect-wrapped-gvfsd.patch
];

View file

@ -1,12 +1,11 @@
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 34a234c..b5a471c 100644
index 9e26c8fd6d..fa220e513c 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -122,6 +122,7 @@
(tramp-compat-funcall 'dbus-get-unique-name :system)
(tramp-compat-funcall 'dbus-get-unique-name :session)
(or (tramp-compat-process-running-p "gvfs-fuse-daemon")
@@ -125,5 +125,6 @@
;; for some processes. Better we don't check.
(<= emacs-major-version 25)
(tramp-compat-process-running-p "gvfs-fuse-daemon")
+ (tramp-compat-process-running-p ".gvfsd-fuse-wrapped")
(tramp-compat-process-running-p "gvfsd-fuse"))))
"Non-nil when GVFS is available.")

View file

@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
if stdenv.hostPlatform.system == "i686-linux" then
fetchurl {
name = "sublimetext-2.0.2.tar.bz2";
url = [
urls = [
"http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2"
"https://download.sublimetext.com/Sublime%20Text%202.0.2.tar.bz2"
];
@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
else
fetchurl {
name = "sublimetext-2.0.2.tar.bz2";
url = [
urls = [
"http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2"
"https://download.sublimetext.com/Sublime%20Text%202.0.2%20x64.tar.bz2"
];

View file

@ -0,0 +1,32 @@
{ stdenv, lib, makeWrapper, ghcWithPackages, packages ? (_:[]) }:
let
blucontrolEnv = ghcWithPackages (self: [ self.blucontrol ] ++ packages self);
in
stdenv.mkDerivation {
pname = "blucontrol-with-packages";
version = blucontrolEnv.version;
nativeBuildInputs = [ makeWrapper ];
buildCommand = ''
makeWrapper ${blucontrolEnv}/bin/blucontrol $out/bin/blucontrol \
--prefix PATH : ${lib.makeBinPath [ blucontrolEnv ]}
'';
# trivial derivation
preferLocalBuild = true;
allowSubstitues = false;
meta = with lib; {
description = "Configurable blue light filter";
longDescription = ''
This application is a blue light filter, with the main focus on configurability.
Configuration is done in Haskell in the style of xmonad.
Blucontrol makes use of monad transformers and allows monadic calculation of gamma values and recoloring. The user chooses, what will be captured in the monadic state.
'';
license = licenses.bsd3;
homepage = "https://github.com/jumper149/blucontrol";
platforms = platforms.unix;
maintainers = with maintainers; [ jumper149 ];
};
}

View file

@ -1,4 +1,4 @@
{ lib, stdenv, fetchFromGitHub, fetchpatch, python3Packages }:
{ lib, stdenv, fetchFromGitHub, fetchpatch, python3Packages, libspnav }:
let
@ -32,6 +32,35 @@ let
};
};
rawmouse = stdenv.mkDerivation rec {
pname = "RawMouse";
version = "1.0.13";
src = fetchFromGitHub {
owner = "smartavionics";
repo = pname;
rev = version;
sha256 = "1cj40pgsfcwliz47mkiqjbslkwcm34qb1pajc2mcljgflcnickly";
};
buildPhase = ''
substituteInPlace RawMouse/config.json --replace \
/usr/local/lib/libspnav.so ${libspnav}/lib/libspnav.so
'';
installPhase = ''
mkdir -p $out/lib/cura/plugins/RawMouse
cp -rv . $out/lib/cura/plugins/RawMouse/
'';
meta = with lib; {
description = "Cura plugin for HID mice such as 3Dconnexion spacemouse";
homepage = "https://github.com/smartavionics/RawMouse";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ gebner ];
};
};
};
in self

View file

@ -18,13 +18,13 @@
stdenv.mkDerivation rec {
pname = "dbeaver-ce";
version = "21.0.1"; # When updating also update fetchedMavenDeps.sha256
version = "21.0.2"; # When updating also update fetchedMavenDeps.sha256
src = fetchFromGitHub {
owner = "dbeaver";
repo = "dbeaver";
rev = version;
sha256 = "sha256-9l8604STqmdoUjD+EJCp4aDk4juKsPCmFnD/WYpajxo=";
sha256 = "sha256-3EMSiEq1wdg4dxBU90RVVv0Hrf5dXPc1MPI0+WMk48k=";
};
fetchedMavenDeps = stdenv.mkDerivation {

View file

@ -1,17 +1,18 @@
{ lib, stdenv, fetchFromGitHub, meson, ninja, gettext, python3,
pkg-config, libxml2, json-glib , sqlite, itstool, librsvg, yelp-tools,
vala, gtk3, gnome3, desktop-file-utils, wrapGAppsHook, gobject-introspection
pkg-config, libxml2, json-glib , sqlite, itstool, yelp-tools,
vala, gtk3, gnome3, desktop-file-utils, wrapGAppsHook, gobject-introspection,
libsoup, webkitgtk
}:
stdenv.mkDerivation rec {
pname = "font-manager";
version = "0.7.9";
version = "0.8.5-1";
src = fetchFromGitHub {
owner = "FontManager";
repo = "master";
rev = version;
sha256 = "1nc0i824v2szz0j9a5rwl8gygih15xbxnxpnx9d3wr0yq9057q6q";
sha256 = "1p0hfnf06892hn25a6zv8fnhbh4ln11nn2fv1vjqs63rr59fprbk";
};
nativeBuildInputs = [
@ -33,9 +34,10 @@ stdenv.mkDerivation rec {
libxml2
json-glib
sqlite
librsvg
gtk3
gnome3.adwaita-icon-theme
libsoup
webkitgtk
];
postPatch = ''
@ -55,7 +57,7 @@ stdenv.mkDerivation rec {
Font Manager is NOT a professional-grade font management solution.
'';
license = licenses.gpl3;
license = licenses.gpl3Plus;
platforms = platforms.unix;
maintainers = [ maintainers.romildo ];
};

View file

@ -1,6 +1,8 @@
{ lib
, stdenv
, fetchFromGitHub
, makeDesktopItem
, copyDesktopItems
, pkg-config
, gtk3
, alsaLib
@ -17,7 +19,7 @@ stdenv.mkDerivation rec {
sha256 = "sha256-Htk2NHgYVL622URx67BUtounAUopLTahaSqfAqd3+ZI=";
};
nativeBuildInputs = [ pkg-config ];
nativeBuildInputs = [ copyDesktopItems pkg-config ];
buildInputs = [ gtk3 alsaLib ];
postPatch = ''
@ -55,6 +57,29 @@ stdenv.mkDerivation rec {
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = "com.thomasokken.free42bin";
desktopName = "Free42Bin";
genericName = "Calculator";
exec = "free42bin";
type = "Application";
comment = meta.description;
categories = "Utility;Calculator;";
terminal = "false";
})
(makeDesktopItem {
name = "com.thomasokken.free42dec";
desktopName = "Free42Dec";
genericName = "Calculator";
exec = "free42dec";
type = "Application";
comment = meta.description;
categories = "Utility;Calculator;";
terminal = "false";
})
];
meta = with lib; {
homepage = "https://github.com/thomasokken/free42";
description = "A software clone of HP-42S Calculator";

View file

@ -17,7 +17,7 @@
python3.pkgs.buildPythonApplication rec {
pname = "metadata-cleaner";
version = "1.0.3";
version = "1.0.4";
format = "other";
@ -25,7 +25,7 @@ python3.pkgs.buildPythonApplication rec {
owner = "rmnvgr";
repo = "metadata-cleaner";
rev = "v${version}";
sha256 = "06dzfcnjb1xd8lk0r7bi4i784gfj8r7habbjbk2c4vn2847v71lf";
sha256 = "sha256-F/xh4dFX7W50kFzpWpGKyMUhxOlDO3WDXBzXVsDViY8=";
};
nativeBuildInputs = [

View file

@ -1,11 +1,27 @@
{ stdenv, lib, fetchurl, fetchpatch, pkg-config, freetype, harfbuzz, openjpeg
, jbig2dec, libjpeg , darwin
{ stdenv
, lib
, fetchurl
, fetchpatch
, pkg-config
, freetype
, harfbuzz
, openjpeg
, jbig2dec
, libjpeg
, darwin
, gumbo
, enableX11 ? true, libX11, libXext, libXi, libXrandr
, enableCurl ? true, curl, openssl
, enableGL ? true, freeglut, libGLU
, enableX11 ? true
, libX11
, libXext
, libXi
, libXrandr
, enableCurl ? true
, curl
, openssl
, enableGL ? true
, freeglut
, libGLU
}:
let
# OpenJPEG version is hardcoded in package source
@ -13,7 +29,8 @@ let
lib.versions.majorMinor (lib.getVersion openjpeg);
in stdenv.mkDerivation rec {
in
stdenv.mkDerivation rec {
version = "1.18.0";
pname = "mupdf";
@ -52,16 +69,20 @@ in stdenv.mkDerivation rec {
# Use shared libraries to decrease size
buildFlags = [ "shared" ];
makeFlags = [ "prefix=$(out) USE_SYSTEM_LIBS=yes" ];
makeFlags = [ "prefix=$(out)" "USE_SYSTEM_LIBS=yes" ]
++ lib.optionals (!enableX11) [ "HAVE_X11=no" ]
++ lib.optionals (!enableGL) [ "HAVE_GLUT=no" ];
nativeBuildInputs = [ pkg-config ];
buildInputs = [ freetype harfbuzz openjpeg jbig2dec libjpeg freeglut libGLU gumbo ]
buildInputs = [ freetype harfbuzz openjpeg jbig2dec libjpeg gumbo ]
++ lib.optionals enableX11 [ libX11 libXext libXi libXrandr ]
++ lib.optionals enableCurl [ curl openssl ]
++ lib.optionals enableGL (
if stdenv.isDarwin then
with darwin.apple_sdk.frameworks; [ GLUT OpenGL ]
else
[ freeglut libGLU ])
[ freeglut libGLU ]
)
;
outputs = [ "bin" "dev" "out" "man" "doc" ];
@ -85,6 +106,7 @@ in stdenv.mkDerivation rec {
EOF
moveToOutput "bin" "$bin"
'' + lib.optionalString enableX11 ''
ln -s "$bin/bin/mupdf-x11" "$bin/bin/mupdf"
mkdir -p $bin/share/applications
cat > $bin/share/applications/mupdf.desktop <<EOF

View file

@ -0,0 +1,86 @@
# This file contains all runtime glue: Bindings to optional runtime dependencies
# for pdfSupport, presentationSupport, and media playback.
{ lib, mkDerivation, wrapGAppsHook, python3Packages
# qt deps
, qtbase, qtmultimedia
# optional deps
, pdfSupport ? false, mupdf # alternatively could use ghostscript
, presentationSupport ? false, libreoffice-unwrapped
, vlcSupport ? false
, gstreamerSupport ? false, gst_all_1, gstPlugins ? (gst: [
gst.gst-plugins-base
gst.gst-plugins-good
gst.gst-plugins-bad
gst.gst-plugins-ugly
])
#, enableMySql ? false # Untested. If interested, contact maintainer.
#, enablePostgreSql ? false # Untested. If interested, contact maintainer.
#, enableJenkinsApi ? false # Untested. If interested, contact maintainer.
}:
let p = gstPlugins gst_all_1;
# If gstreamer is activated but no plugins are given, it will at runtime
# create the false illusion of being usable.
in assert gstreamerSupport -> (builtins.isList p && builtins.length p > 0);
let
# optional packages
libreofficePath = "${libreoffice-unwrapped}/lib/libreoffice/program";
# lib functions
inherit (lib.lists) optional optionals;
wrapSetVar = var: ''--set ${var} "''$${var}"'';
# base pkg/lib
baseLib = python3Packages.callPackage ./lib.nix { };
in mkDerivation {
inherit (baseLib) pname version src;
nativeBuildInputs = [ python3Packages.wrapPython wrapGAppsHook ];
buildInputs = [ qtbase ] ++ optionals gstreamerSupport
([ qtmultimedia.bin gst_all_1.gstreamer ] ++ gstPlugins gst_all_1);
propagatedBuildInputs = optional pdfSupport mupdf
++ optional presentationSupport libreoffice-unwrapped;
pythonPath = [ baseLib ] ++ optional vlcSupport python3Packages.python-vlc;
# ++ optional enableMySql mysql-connector # Untested. If interested, contact maintainer.
# ++ optional enablePostgreSql psycopg2 # Untested. If interested, contact maintainer.
# ++ optional enableJenkinsApi jenkinsapi # Untested. If interested, contact maintainer.
PYTHONPATH = libreofficePath;
URE_BOOTSTRAP = "vnd.sun.star.pathname:${libreofficePath}/fundamentalrc";
UNO_PATH = libreofficePath;
LD_LIBRARY_PATH = libreofficePath;
JAVA_HOME = "${libreoffice-unwrapped.jdk.home}";
dontWrapQtApps = true;
dontWrapGApps = true;
# defined in gappsWrapperHook
wrapPrefixVariables = optionals presentationSupport
[ "PYTHONPATH" "LD_LIBRARY_PATH" "JAVA_HOME" ];
makeWrapperArgs = [
"\${gappsWrapperArgs[@]}"
"\${qtWrapperArgs[@]}"
] ++ optionals presentationSupport
([ "--prefix PATH : ${libreoffice-unwrapped}/bin" ]
++ map wrapSetVar [ "URE_BOOTSTRAP" "UNO_PATH" ]);
installPhase = ''
install -D openlp.py $out/bin/openlp
'';
preFixup = ''
wrapPythonPrograms
'';
meta = baseLib.meta // {
hydraPlatforms = [ ]; # this is only the wrapper; baseLib gets built
};
passthru = {
inherit baseLib;
};
}

View file

@ -0,0 +1,103 @@
# This file contains the base package, some of which is compiled.
# Runtime glue to optinal runtime dependencies is in 'default.nix'.
{ fetchurl, lib, qt5
# python deps
, python, buildPythonPackage
, alembic, beautifulsoup4, chardet, lxml, Mako, pyenchant
, pyqt5_with_qtwebkit, pyxdg, sip, sqlalchemy, sqlalchemy_migrate
}:
buildPythonPackage rec {
pname = "openlp";
version = "2.4.6";
src = fetchurl {
url = "https://get.openlp.org/${version}/OpenLP-${version}.tar.gz";
sha256 = "f63dcf5f1f8a8199bf55e806b44066ad920d26c9cf67ae432eb8cdd1e761fc30";
};
doCheck = false;
# FIXME: checks must be disabled because they are lacking the qt env.
# They fail like this, even if built and wrapped with all Qt and
# runtime dependencies:
#
# running install tests
# qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""
# This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
#
# Available platform plugins are: wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx.
#
# See also https://discourse.nixos.org/t/qt-plugin-path-unset-in-test-phase/
#checkInputs = [ mock nose ];
nativeBuildInputs = [ qt5.qttools ];
propagatedBuildInputs = [
alembic
beautifulsoup4
chardet
lxml
Mako
pyenchant
pyqt5_with_qtwebkit
pyxdg
sip
sqlalchemy
sqlalchemy_migrate
];
prePatch = ''
echo 'from vlc import *' > openlp/core/ui/media/vendor/vlc.py
'';
dontWrapQtApps = true;
dontWrapGApps = true;
postInstall = ''
( # use subshell because of cd
tdestdir="$out/i18n"
mkdir -p "$tdestdir"
cd ./resources/i18n
for file in *.ts; do
lconvert -i "$file" -o "$tdestdir/''${file%%ts}qm"
done
)
'';
preFixup = ''
rm -r $out/${python.sitePackages}/tests
rm -r $out/bin
'';
meta = with lib; {
description = "Free church presentation software";
homepage = "https://openlp.org/";
downloadPage = "https://openlp.org/#downloads";
platforms = platforms.unix;
license = licenses.gpl2Only;
maintainers = [ maintainers.jorsn ];
longDescription = ''
OpenLP is a free church presentation software.
Features:
* Cross platform between Linux, Windows, OS X and FreeBSD
* Display songs, Bible verses, presentations, images, audio and video
* Control OpenLP remotely via the Android remote, iOS remote or mobile web browser
* Quickly and easily import songs from other popular presentation packages
* Easy enough to use to get up and running in less than 10 minutes
Remark: This pkg only supports sqlite dbs. If you wish to have support for
mysql or postgresql dbs, or Jenkins, please contact the maintainer.
Bugs which affect this software packaged in Nixpkgs:
1. The package must disable checks, because they are lacking the qt env.
(see pkg source and https://discourse.nixos.org/t/qt-plugin-path-unset-in-test-phase/)
2. There is a segfault on exit. Not a real problem, according to debug log, everything
shuts down correctly. Maybe related to https://forums.openlp.org/discussion/3620/crash-on-exit.
Plan: Wait for OpenLP-3, since it is already in beta 1
(2021-02-09; news: https://openlp.org/blog/).
'';
};
}

View file

@ -10,18 +10,20 @@
, qtsvg
, qtxmlpatterns
, qttools
, lib, stdenv
, lib
, stdenv
, installShellFiles
}:
mkDerivationWith stdenv.mkDerivation rec {
pname = "qcad";
version = "3.26.0.1";
version = "3.26.1.0";
src = fetchFromGitHub {
owner = "qcad";
repo = "qcad";
rev = "v${version}";
sha256 = "sha256-V+QlwM8BWmcarwZtqJfc+MYHOZgIH1W5R8m2EHhNJls=";
sha256 = "sha256-OWAc7g8DiJR3z6dUF5D0Yo3wnRKd1Xe7D1eq15NRW5c=";
};
patches = [
@ -65,13 +67,25 @@ mkDerivationWith stdenv.mkDerivation rec {
cp -r scripts $out/lib
cp -r plugins $out/lib/plugins
cp -r patterns $out/lib/patterns
cp -r fonts $out/lib/fonts
cp -r libraries $out/lib/libraries
cp -r linetypes $out/lib/linetypes
cp -r ts $out/lib/ts
# workaround to fix the library browser:
rm -r $out/lib/plugins/sqldrivers
ln -s -t $out/lib/plugins ${qtbase}/${qtbase.qtPluginPrefix}/sqldrivers
rm -r $out/lib/plugins/printsupport
ln -s -t $out/lib/plugins ${qtbase}/${qtbase.qtPluginPrefix}/printsupport
rm -r $out/lib/plugins/imageformats
ln -s -t $out/lib/plugins ${qtbase}/${qtbase.qtPluginPrefix}/imageformats
install -Dm644 scripts/qcad_icon.svg $out/share/icons/hicolor/scalable/apps/qcad.svg
installManPage qcad.1
runHook postInstall
'';
@ -89,6 +103,7 @@ mkDerivationWith stdenv.mkDerivation rec {
pkg-config
qmake
qttools
installShellFiles
];
meta = with lib; {

View file

@ -1,60 +1,57 @@
{ fetchurl, fetchpatch, lib, stdenv, makeWrapper
, pkg-config, intltool, gettext, gtk2, expat, curl
, gpsd, bc, file, gnome-doc-utils, libexif, libxml2, libxslt, scrollkeeper
, docbook_xml_dtd_412, gexiv2, gpsbabel, expect
{ lib, stdenv, fetchurl
, docbook_xml_dtd_45, docbook_xsl, intltool, itstool, libxslt, pkg-config, wrapGAppsHook, yelp-tools
, curl, gdk-pixbuf, gtk3, json-glib, libxml2
, gpsbabel
, withGeoClue ? true, geoclue2
, withGeoTag ? true, gexiv2
, withMagic ? true, file
, withMapnik ? false, mapnik
, withMBTiles ? true, sqlite
, withOAuth ? true, liboauth
, withMd5Hash ? true, nettle
, withGeoClue ? true, geoclue2 }:
, withOAuth ? true, liboauth
, withRealtimeGPSTracking ? true, gpsd
}:
stdenv.mkDerivation rec {
pname = "viking";
version = "1.8";
version = "1.9";
src = fetchurl {
url = "mirror://sourceforge/viking/viking/viking-${version}.tar.bz2";
sha256 = "1a0g0fbj4q5s9p8fv0mqvxws10q3naj81l72sz30vvqpbz6vqp45";
url = "mirror://sourceforge/viking/viking-${version}.tar.bz2";
sha256 = "0fybpy6k0vmjp231h5ckysl3c0rcnh2afznijwq6y78j4hywyjpy";
};
patches = [
# Fix build without mapnik and sqlite https://github.com/viking-gps/viking/pull/79
(fetchpatch {
url = "https://github.com/viking-gps/viking/commit/995feefcb97bdb1590ed018224cf47ce197fe0c1.patch";
sha256 = "1xb0b76kg690fag9mw3yfj5k766jmqp1sm8q4f29n1h3nz5g8izd";
})
];
nativeBuildInputs = [ docbook_xml_dtd_45 docbook_xsl intltool itstool libxslt pkg-config wrapGAppsHook yelp-tools ];
nativeBuildInputs = [ pkg-config makeWrapper ];
buildInputs = [ intltool gettext gtk2 expat curl gpsd bc file gnome-doc-utils
libexif libxml2 libxslt scrollkeeper docbook_xml_dtd_412 gexiv2
] ++ lib.optional withMapnik mapnik
buildInputs = [ curl gdk-pixbuf gtk3 json-glib libxml2 ]
++ lib.optional withGeoClue geoclue2
++ lib.optional withGeoTag gexiv2
++ lib.optional withMagic file
++ lib.optional withMapnik mapnik
++ lib.optional withMBTiles sqlite
++ lib.optional withMd5Hash nettle
++ lib.optional withOAuth liboauth
++ lib.optional withMBTiles sqlite;
++ lib.optional withRealtimeGPSTracking gpsd;
configureFlags = [
"--disable-scrollkeeper"
(lib.enableFeature withMapnik "mapnik")
(lib.enableFeature withGeoClue "geoclue")
(lib.enableFeature withGeoTag "geotag")
(lib.enableFeature withMagic "magic")
(lib.enableFeature withMapnik "mapnik")
(lib.enableFeature withMBTiles "mbtiles")
(lib.enableFeature withMd5Hash "nettle")
(lib.enableFeature withOAuth "oauth")
(lib.enableFeature withMBTiles "mbtiles")
(lib.enableFeature withRealtimeGPSTracking "realtime-gps-tracking")
];
preBuild = ''
sed -i help/Makefile \
-e 's|--noout|--noout --nonet --path "${scrollkeeper}/share/xml/scrollkeeper/dtds"|g'
sed -i help/Makefile -e 's|--postvalid||g'
'';
hardeningDisable = [ "format" ];
doCheck = true;
postInstall = ''
wrapProgram $out/bin/viking \
--prefix PATH : "${gpsbabel}/bin" \
--prefix PATH : "${expect}/bin"
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : ${lib.makeBinPath [ gpsbabel ]}
)
'';
meta = with lib; {

View file

@ -48,6 +48,7 @@
, python37Packages
, stdenv
, systemd
, xdg-utils
, zlib
}:
with lib;
@ -92,7 +93,7 @@ let
systemd
zlib
];
rpath = lib.makeLibraryPath deps ;
rpath = lib.makeLibraryPath deps;
in
stdenv.mkDerivation rec {
pname = "appgate-sdp";
@ -171,6 +172,7 @@ stdenv.mkDerivation rec {
wrapProgram $out/opt/appgate/appgate-driver --prefix PATH : ${lib.makeBinPath [ iproute2 networkmanager dnsmasq ]}
wrapProgram $out/opt/appgate/linux/set_dns --set PYTHONPATH $PYTHONPATH
wrapProgram $out/bin/appgate --prefix PATH : ${xdg-utils}/bin
'';
meta = with lib; {
description = "Appgate SDP (Software Defined Perimeter) desktop client";

View file

@ -18,9 +18,9 @@
}
},
"beta": {
"version": "90.0.4430.51",
"sha256": "1k87fw0pv0d2zlxm0il9b5p60gdz6l44jssmsns4zy2fmd9316wr",
"sha256bin64": "0q5yx7bc266azs3nl29ksz4yafvy2nmzn09ifcgr69fjkvsr1qh7",
"version": "90.0.4430.61",
"sha256": "01vssy3q64pv9rw4cdxv5rdg7yrxmhyc03a5r75fhxc95fj66iac",
"sha256bin64": "07l8dzyv0hav1gls3xw91q9ay2l8xxmsf7yagg940cya9ncl0lhi",
"deps": {
"gn": {
"version": "2021-02-09",

View file

@ -16,14 +16,14 @@ let
in stdenv.mkDerivation rec {
pname = "palemoon";
version = "29.1.0";
version = "29.1.1";
src = fetchFromGitHub {
githubBase = "repo.palemoon.org";
owner = "MoonchildProductions";
repo = "Pale-Moon";
rev = "${version}_Release";
sha256 = "02blhk3v7gpnicd7s5l5fpqvdvj2279g3rq8xyhcd4sw6qnms8m6";
sha256 = "1ppdmj816zwccb0l0mgpq14ckdwg785wmqz41wran0nl63fg6i1x";
fetchSubmodules = true;
};

View file

@ -1,8 +1,8 @@
{ lib, buildGoModule, fetchFromGitHub, installShellFiles, k3sVersion ? "1.20.4-k3s1" }:
{ lib, buildGoModule, fetchFromGitHub, installShellFiles, k3sVersion ? "1.20.5-k3s1" }:
buildGoModule rec {
pname = "kube3d";
version = "4.4.0";
version = "4.4.1";
excludedPackages = "tools";
@ -10,7 +10,7 @@ buildGoModule rec {
owner = "rancher";
repo = "k3d";
rev = "v${version}";
sha256 = "sha256-+9VtFHZ4ZZiX04u5YvPoQaelH9Q9oKMrbFHFFiNUxBA=";
sha256 = "sha256-u9P+7qNomamd4BkqWBxA6rDom0hF6t10QfDTjqOMGeE=";
};
vendorSha256 = null;

View file

@ -10,16 +10,16 @@
buildGoModule rec {
pname = "nerdctl";
version = "0.7.2";
version = "0.7.3";
src = fetchFromGitHub {
owner = "containerd";
repo = pname;
rev = "v${version}";
sha256 = "sha256-0q3UmlXzW0fGYPc1IptuIbCMnKW4pyDm1KxkRqU2voA=";
sha256 = "sha256-4NIyit2HnDXWnHALGzz5KWxe4PU8CwMRwCoIlN/WX78=";
};
vendorSha256 = "sha256-QVvID9rrOFngL94LWN75HSnyTgh3F0KaScWxMIKUqDM=";
vendorSha256 = "sha256-qwUAC8LURsn6C3zKzcsuFsOTurjPV9V8Z/1Y9G0eohk=";
nativeBuildInputs = [ makeWrapper installShellFiles ];

View file

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "qbec";
version = "0.14.1";
version = "0.14.2";
src = fetchFromGitHub {
owner = "splunk";
repo = "qbec";
rev = "v${version}";
sha256 = "sha256-+CzY/ifH+U3I36uHXyO2FSkPCz+SWRpSPnxfd2LHHhY=";
sha256 = "sha256-F5xnW9069Xrl6isvmeYtfTZUZSiSq47HLs5/p3HCf6E=";
};
vendorSha256 = "sha256-wtpXqIixjRYYSIPe43Q5627g6mu05WdvwCi9cXVgCBs=";

View file

@ -157,8 +157,8 @@ in rec {
});
terraform_0_14 = pluggable (generic {
version = "0.14.9";
sha256 = "0r9d28mbj7h9prr39gm5kd49l7sm8l1ab9rwrkpyhwgr119zf35b";
version = "0.14.10";
sha256 = "05vfb8hzma3qxq4w1h25mmgv96g90if214zlar0sm9fq8zsvb1yw";
vendorSha256 = "1d93aqkjdrvabkvix6h1qaxpjzv7w1wa7xa44czdnjs2lapx4smm";
patches = [ ./provider-path.patch ];
passthru = { inherit plugins; };

View file

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "velero";
version = "1.5.3";
version = "1.5.4";
src = fetchFromGitHub {
rev = "v${version}";
owner = "vmware-tanzu";
repo = "velero";
sha256 = "sha256-DZ6phJxc8n9LCSsER09K3j+pUJxkYrBZQaI4h+bcV94=";
sha256 = "sha256-YHBqIM3NV2L13w9WCzldUWmdBMec7ZndzYgGHblS8Dg=";
};
buildFlagsArray = ''

View file

@ -29,11 +29,11 @@
assert pulseaudioSupport -> libpulseaudio != null;
let
version = "5.5.7938.0228";
version = "5.6.13632.0328";
srcs = {
x86_64-linux = fetchurl {
url = "https://zoom.us/client/${version}/zoom_x86_64.pkg.tar.xz";
sha256 = "KM8o2tgIn0lecOM4gKdTOdk/zsohlFqtNX+ca/S6FGY=";
sha256 = "0nskpg3rbv40jcbih95sfdr0kfv5hjv50z9jdz1cddl8v7hbqg71";
};
};

View file

@ -26,13 +26,14 @@
let
pname = "pcloud";
version = "1.8.9";
version = "1.9.1";
code = "XZXB3fXZgXyQbnTkTm5XOJH9i6NsKX9lL21V";
name = "${pname}-${version}";
# Archive link's code thanks to: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=pcloud-drive
src = fetchzip {
url = "https://api.pcloud.com/getpubzip?code=XZjfKzXZ6h3uGRFId48VRNHHkuqajhRvMlPV&filename=${name}.zip";
hash = "sha256:1bwdwfwgy3wwzlggi8qhf5q2bq2kqiqi3mgvsr9w0mxyaxxv13r8";
url = "https://api.pcloud.com/getpubzip?code=${code}&filename=${name}.zip";
hash = "sha256-vUrz4thp9tcU9T8d52DJUAbt6Jnv+E3pbUytzMR8d/E=";
};
appimageContents = appimageTools.extractType2 {

View file

@ -74,7 +74,7 @@ in stdenv.mkDerivation {
install -Dm644 ../image/wsicon.svg $out/share/icons/wireshark.svg
mkdir $dev/include/{epan/{wmem,ftypes,dfilter},wsutil,wiretap} -pv
cp config.h $dev/include/
cp config.h $dev/include/wireshark/
cp ../ws_*.h $dev/include
cp ../epan/*.h $dev/include/epan/
cp ../epan/wmem/*.h $dev/include/epan/wmem/

View file

@ -1,4 +1,7 @@
{ lib, stdenv, buildGoModule, fetchFromGitHub, buildPackages, installShellFiles }:
{ lib, stdenv, buildGoModule, fetchFromGitHub, buildPackages, installShellFiles
, makeWrapper
, enableCmount ? true, fuse, macfuse-stubs
}:
buildGoModule rec {
pname = "rclone";
@ -17,9 +20,11 @@ buildGoModule rec {
outputs = [ "out" "man" ];
nativeBuildInputs = [ installShellFiles ];
buildInputs = lib.optional enableCmount (if stdenv.isDarwin then macfuse-stubs else fuse);
nativeBuildInputs = [ installShellFiles makeWrapper ];
buildFlagsArray = [ "-ldflags=-s -w -X github.com/rclone/rclone/fs.Version=${version}" ];
buildFlagsArray = lib.optionals enableCmount [ "-tags=cmount" ]
++ [ "-ldflags=-s -w -X github.com/rclone/rclone/fs.Version=${version}" ];
postInstall =
let
@ -34,6 +39,8 @@ buildGoModule rec {
${rcloneBin}/bin/rclone genautocomplete $shell rclone.$shell
installShellCompletion rclone.$shell
done
'' + lib.optionalString (enableCmount && !stdenv.isDarwin) ''
wrapProgram $out/bin/rclone --prefix LD_LIBRARY_PATH : "${fuse}/lib"
'';
meta = with lib; {

View file

@ -1,44 +1,52 @@
{ lib
, buildPythonApplication
, fetchPypi
, python3
, fetchpatch
, makeDesktopItem
, makePythonPath
, dateutil
, matplotlib
, numpy
, pyenchant
, pyqt5
, pytest
, python
, qtsvg
, runtimeShell
, wrapQtAppsHook
}:
buildPythonApplication rec {
python3.pkgs.buildPythonApplication rec {
pname = "pyspread";
version = "1.99.5";
version = "1.99.6";
src = fetchPypi {
src = python3.pkgs.fetchPypi {
inherit pname version;
sha256 = "sha256-05bC+Uvx72FAh3qxkgXm8jdb/gHRv1D/M7tjOEdE3Xg=";
sha256 = "sha256-B1oyWUAXn63mmVFN9brJwbHxi7I5nYrK2JJU1DjAlb8=";
};
pythonLibs = [
patches = [
# https://gitlab.com/pyspread/pyspread/-/merge_requests/34
(fetchpatch {
name = "entry-points.patch";
url = "https://gitlab.com/pyspread/pyspread/-/commit/3d8da6a7a7d76f7027d77ca95fac103961d729a2.patch";
excludes = [ "bin/pyspread" "bin/pyspread.bat" ];
sha256 = "1l614k7agv339hrin23jj7s1mq576vkdfkdim6wp224k7y37bnil";
})
];
nativeBuildInputs = [
wrapQtAppsHook
];
buildInputs = [
qtsvg
];
propagatedBuildInputs = with python3.pkgs; [
dateutil
markdown2
matplotlib
numpy
pyenchant
pyqt5
];
nativeBuildInputs = [ wrapQtAppsHook ];
buildInputs = pythonLibs ++ [
qtsvg
setuptools
];
doCheck = false; # it fails miserably with a core dump
pythonImportsCheck = [ "pyspread" ];
desktopItem = makeDesktopItem rec {
name = pname;
exec = name;
@ -50,20 +58,11 @@ buildPythonApplication rec {
};
postInstall = ''
runHook preInstall
install -D $out/share/applications
install -m 644 $desktopItem/share/applications/* $out/share/applications
runHook postInstall
install -m 444 -Dt $out/share/applications ${desktopItem}/share/applications/*
'';
fixupPhase = ''
runHook preFixup
sed -i -e "s|#!/bin/bash|#!${runtimeShell}|" $out/bin/pyspread
wrapProgram $out/bin/pyspread \
--prefix PYTHONPATH ':' $(toPythonPath $out):${makePythonPath pythonLibs} \
--prefix PATH ':' ${python}/bin/ \
''${qtWrapperArgs[@]}
runHook postFixup
preFixup = ''
makeWrapperArgs+=("''${qtWrapperArgs[@]}")
'';
meta = with lib; {

View file

@ -19,16 +19,16 @@ let
maintainers = with maintainers; [ fliegendewurst ];
};
version = "0.46.6";
version = "0.46.7";
desktopSource = {
url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-${version}.tar.xz";
sha256 = "0nxlph23gkxrn10gnm0ncsy54fzcmbqcrrk492ygfgw8a8pl4ah1";
sha256 = "0saqj32jcb9ga418bpdxy93hf1z8nmwzf76rfgnnac7286ciyinr";
};
serverSource = {
url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-server-${version}.tar.xz";
sha256 = "0z9wg84sdbpk8zhljydm05z7cqqv2ly9s921cli7rs8hcpl175cz";
sha256 = "0b9bbm1iyaa5wf758085m6kfbq4li1iimj11ryf9xv9fzrbc4gvs";
};
in {

View file

@ -1,10 +1,8 @@
{ lib, stdenv, fetchFromGitHub, qt4, qmake4Hook, libpulseaudio }:
let
version = "1.1.9";
in
stdenv.mkDerivation {
{ lib, stdenv, fetchFromGitHub, cmake, libpulseaudio, libX11 }:
stdenv.mkDerivation rec {
pname = "multimon-ng";
inherit version;
version = "1.1.9";
src = fetchFromGitHub {
owner = "EliasOenal";
@ -13,16 +11,9 @@ stdenv.mkDerivation {
sha256 = "01716cfhxfzsab9zjply9giaa4nn4b7rm3p3vizrwi7n253yiwm2";
};
buildInputs = [ qt4 libpulseaudio ];
buildInputs = [ libpulseaudio libX11 ];
nativeBuildInputs = [ qmake4Hook ];
qmakeFlags = [ "multimon-ng.pro" ];
installPhase = ''
mkdir -p $out/bin
cp multimon-ng $out/bin
'';
nativeBuildInputs = [ cmake ];
meta = with lib; {
description = "Multimon is a digital baseband audio protocol decoder";
@ -39,6 +30,6 @@ stdenv.mkDerivation {
homepage = "https://github.com/EliasOenal/multimon-ng";
license = licenses.gpl2Only;
platforms = platforms.linux;
maintainers = [ maintainers.markuskowa ];
maintainers = with maintainers; [ markuskowa ];
};
}

View file

@ -0,0 +1,21 @@
{ lib, stdenv, fetchurl, python3, perl, glibc, zlib }:
stdenv.mkDerivation rec {
pname = "meme-suite";
version = "5.1.1";
src = fetchurl {
url = "https://meme-suite.org/meme-software/${version}/meme-${version}.tar.gz";
sha256 = "38d73d256d431ad4eb7da2c817ce56ff2b4e26c39387ff0d6ada088938b38eb5";
};
buildInputs = [ zlib ];
nativeBuildInputs = [ perl python3 ];
meta = with lib; {
description = "Motif-based sequence analysis tools";
license = licenses.unfree;
maintainers = with maintainers; [ gschwartz ];
platforms = platforms.linux;
};
}

View file

@ -1,7 +1,7 @@
{ lib, stdenv, unzip, fetchurl, electron_6, makeWrapper, geogebra }:
let
pname = "geogebra";
version = "6-0-620-0";
version = "6-0-631-0";
srcIcon = geogebra.srcIcon;
desktopItem = geogebra.desktopItem;
@ -18,9 +18,9 @@ let
src = fetchurl {
urls = [
"https://download.geogebra.org/installers/6.0/GeoGebra-Linux64-Portable-${version}.zip"
"https://web.archive.org/web/20210101214511/https://download.geogebra.org/installers/6.0/GeoGebra-Linux64-Portable-${version}.zip"
"https://web.archive.org/web/20210406083122/https://download.geogebra.org/installers/6.0/GeoGebra-Linux64-Portable-${version}.zip"
];
sha256 = "0xxzmphbfvmhnxnc1pkjgdhccjndyzmlvvaa8xfdrvswwwk7zh43";
sha256 = "1k4jxcvxxjxfrdghs4a29zpp4yid2vh1mfgp8xxr3qlzxnqv92ha";
};
dontConfigure = true;
@ -53,9 +53,9 @@ let
src = fetchurl {
urls = [
"https://download.geogebra.org/installers/6.0/GeoGebra-Classic-6-MacOS-Portable-${version}.zip"
"https://web.archive.org/web/20210101214236/https://download.geogebra.org/installers/6.0/GeoGebra-Classic-6-MacOS-Portable-${version}.zip"
"https://web.archive.org/web/20210406084052/https://download.geogebra.org/installers/6.0/GeoGebra-Classic-6-MacOS-Portable-${version}.zip"
];
sha256 = "13g05d45j6dn9zwxpxnln83j7w1cvcd7l8jnir30pxlmdi7h8r78";
sha256 = "0fa680yyz4nry1xvb9v6qqh1mib6grff5d3p7d90nyjlv101p262";
};
dontUnpack = true;

View file

@ -6,11 +6,11 @@
stdenv.mkDerivation rec {
pname = "root";
version = "6.22.06";
version = "6.22.08";
src = fetchurl {
url = "https://root.cern.ch/download/root_v${version}.source.tar.gz";
sha256 = "0mqvj42nax0bmz8h83jjlwjm3xxjy1n0n10inc8csip9ly28fs64";
sha256 = "0vrgi83hrw4n9zgx873fn4ba3vk54slrwk1cl4cc4plgxzv1y1kg";
};
nativeBuildInputs = [ makeWrapper cmake pkg-config ];

View file

@ -6,7 +6,7 @@
mkDerivation rec {
pname = "qgroundcontrol";
version = "4.1.1";
version = "4.1.2";
qtInputs = [
qtbase qtcharts qtlocation qtserialport qtsvg qtquickcontrols2
@ -63,7 +63,7 @@ mkDerivation rec {
owner = "mavlink";
repo = pname;
rev = "v${version}";
sha256 = "1dji7jmwsrgcgzhra94wrgz67ydsdra7p10fw8gbw54gf6ncjfjm";
sha256 = "16q0g9b1kyan3qhhp5mmfnrx9h8q7qn83baplbiprqjgpvkxfll4";
fetchSubmodules = true;
};

View file

@ -46,10 +46,12 @@ mkDerivation rec {
++ lib.optionals (!withGui) [ "--disable-qtgui" "--disable-x11mon" ]
++ (if stdenv.isLinux then [ "--with-inotify" ] else [ "--without-inotify" ]);
nativeBuildInputs = [ pkg-config ];
nativeBuildInputs = [
file pkg-config python3Packages.setuptools which
];
buildInputs = with python3Packages; [
bison chmlib file python setuptools which xapian zlib
buildInputs = [
bison chmlib python3Packages.python xapian zlib
] ++ lib.optional withGui qtbase
++ lib.optional stdenv.isDarwin libiconv;
@ -98,6 +100,6 @@ mkDerivation rec {
homepage = "https://www.lesbonscomptes.com/recoll/";
license = licenses.gpl2;
platforms = platforms.unix;
maintainers = [ maintainers.jcumming ];
maintainers = with maintainers; [ jcumming kiyengar ];
};
}

View file

@ -13,11 +13,11 @@ let
in
stdenv.mkDerivation rec {
pname = "gitkraken";
version = "7.5.3";
version = "7.5.4";
src = fetchzip {
url = "https://release.axocdn.com/linux/GitKraken-v${version}.tar.gz";
sha256 = "0vxvfq0dh6l1plqbq67gfydr8bh5w3q6d5y3bn3rdia10wa1dac6";
sha256 = "1laqki01zcmsl9s18dnwg3x3jbbs0xcipiyj2qlsb1sx9y4x05wm";
};
dontBuild = true;

View file

@ -1,13 +1,13 @@
{
"version": "13.9.4",
"repo_hash": "0gwxjmph3ac5v0h5zz8664412yq09cka5p4amdbxk7hna24igksz",
"version": "13.10.2",
"repo_hash": "1q3qnfzhikbbsmzzbldwn6xvsyxr1jgv5lj7mgcji11j8qv1a625",
"owner": "gitlab-org",
"repo": "gitlab",
"rev": "v13.9.4-ee",
"rev": "v13.10.2-ee",
"passthru": {
"GITALY_SERVER_VERSION": "13.9.4",
"GITLAB_PAGES_VERSION": "1.35.0",
"GITALY_SERVER_VERSION": "13.10.2",
"GITLAB_PAGES_VERSION": "1.36.0",
"GITLAB_SHELL_VERSION": "13.17.0",
"GITLAB_WORKHORSE_VERSION": "8.63.2"
"GITLAB_WORKHORSE_VERSION": "13.10.2"
}
}

View file

@ -1,7 +1,7 @@
{ stdenv, lib, fetchurl, fetchFromGitLab, bundlerEnv
, ruby, tzdata, git, nettools, nixosTests, nodejs, openssl
, gitlabEnterprise ? false, callPackage, yarn
, fixup_yarn_lock, replace
, fixup_yarn_lock, replace, file
}:
let
@ -32,6 +32,10 @@ let
openssl = x.openssl // {
buildInputs = [ openssl ];
};
ruby-magic-static = x.ruby-magic-static // {
buildInputs = [ file ];
buildFlags = [ "--enable-system-libraries" ];
};
};
groups = [
"default" "unicorn" "ed25519" "metrics" "development" "puma" "test" "kerberos"

View file

@ -1,6 +1,6 @@
source 'https://rubygems.org'
gem 'rugged', '~> 1.0.1'
gem 'rugged', '~> 1.1'
gem 'github-linguist', '~> 7.12', require: 'linguist'
gem 'gitlab-markup', '~> 1.7.1'
gem 'activesupport', '~> 6.0.3.4'

View file

@ -183,7 +183,7 @@ GEM
rubocop-ast (0.2.0)
parser (>= 2.7.0.1)
ruby-progressbar (1.10.1)
rugged (1.0.1)
rugged (1.1.0)
sanitize (4.6.6)
crass (~> 1.0.2)
nokogiri (>= 1.4.4)
@ -233,7 +233,7 @@ DEPENDENCIES
rspec
rspec-parameterized
rubocop (~> 0.69)
rugged (~> 1.0.1)
rugged (~> 1.1)
sentry-raven (~> 3.0)
timecop

View file

@ -4,18 +4,6 @@
, libgit2, openssl, zlib, pcre, http-parser }:
let
# libgit2 was updated to 1.1.0 in nixpkgs, but gitlab doesn't support that yet.
# See https://github.com/NixOS/nixpkgs/pull/106909
libgit = libgit2.overrideAttrs (attrs: rec {
version = "1.0.0";
src = fetchFromGitHub {
owner = "libgit2";
repo = "libgit2";
rev = "v${version}";
sha256 = "06cwrw93ycpfb5kisnsa5nsy95pm11dbh0vvdjg1jn25h9q5d3vc";
};
});
rubyEnv = bundlerEnv rec {
name = "gitaly-env";
inherit ruby;
@ -33,17 +21,17 @@ let
};
};
in buildGoModule rec {
version = "13.9.4";
version = "13.10.2";
pname = "gitaly";
src = fetchFromGitLab {
owner = "gitlab-org";
repo = "gitaly";
rev = "v${version}";
sha256 = "sha256-6ocP4SMafvLI2jfvcB8jk1AemAI/TiBQ1iaVxK7I54A=";
sha256 = "sha256-5CjZs5tpEEsgQGBFa8BeZ7SDhIeGKqAHWwbR8hSoCPs=";
};
vendorSha256 = "10ssx0dvbzg70vr2sgnhzijnjxfw6533wdjxwakj62rpfayklp51";
vendorSha256 = "sha256-8AopoiLmg6kfvYbZDOfFWBy1o5tbnxsKxSBX20OasIE=";
passthru = {
inherit rubyEnv;
@ -51,7 +39,7 @@ in buildGoModule rec {
buildFlags = [ "-tags=static,system_libgit2" ];
nativeBuildInputs = [ pkg-config ];
buildInputs = [ rubyEnv.wrappedRuby libgit openssl zlib pcre http-parser ];
buildInputs = [ rubyEnv.wrappedRuby libgit2 openssl zlib pcre http-parser ];
doCheck = false;
postInstall = ''

View file

@ -829,10 +829,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "056bwiwxvnbkbgsr2wqcsknnc73nqasqdnjcpgj2r61wkm8mzmbn";
sha256 = "04aq913plcxjw71l5r62qgz3bx3466p0wvgyfqahg5n3nybmcwqy";
type = "gem";
};
version = "1.0.1";
version = "1.1.0";
};
sanitize = {
dependencies = ["crass" "nokogiri" "nokogumbo"];

View file

@ -1,18 +1,22 @@
{ lib, fetchFromGitLab, git, buildGoModule }:
let
data = (builtins.fromJSON (builtins.readFile ../data.json));
in
buildGoModule rec {
pname = "gitlab-workhorse";
version = "8.63.2";
version = "13.10.2";
src = fetchFromGitLab {
owner = "gitlab-org";
repo = "gitlab-workhorse";
rev = "v${version}";
sha256 = "1vjk7r7228p2gblx9nmqiz70ckbllg1p3bwkyfd4m49jhp13hryi";
owner = data.owner;
repo = data.repo;
rev = data.rev;
sha256 = data.repo_hash;
};
vendorSha256 = "0hc02nxw5jp1mhpjcx1f2a2dfaq7ji4qkf5g7lbpd1rzhqwp6zsz";
sourceRoot = "source/workhorse";
vendorSha256 = "sha256-UCkUSv1ZjDHmTFnETU8dz4moYRDCvy6AYTTfjHBGKeE=";
buildInputs = [ git ];
buildFlagsArray = "-ldflags=-X main.Version=${version}";
doCheck = false;

View file

@ -17,7 +17,7 @@ gem 'default_value_for', '~> 3.4.0'
# Supported DBs
gem 'pg', '~> 1.1'
gem 'rugged', '~> 1.0.1'
gem 'rugged', '~> 1.1'
gem 'grape-path-helpers', '~> 1.6.1'
gem 'faraday', '~> 1.0'
@ -25,13 +25,13 @@ gem 'marginalia', '~> 1.10.0'
# Authentication libraries
gem 'devise', '~> 4.7.2'
# TODO: verify ARM compile issue on 3.1.13+ version (see https://gitlab.com/gitlab-org/gitlab/-/merge_requests/18828)
gem 'bcrypt', '3.1.12'
gem 'bcrypt', '~> 3.1', '>= 3.1.14'
gem 'doorkeeper', '~> 5.5.0.rc2'
gem 'doorkeeper-openid_connect', '~> 1.7.5'
gem 'omniauth', '~> 1.8'
gem 'omniauth-auth0', '~> 2.0.0'
gem 'omniauth-azure-oauth2', '~> 0.0.9'
gem 'omniauth-azure-activedirectory-v2', '~> 0.1'
gem 'omniauth-azure-oauth2', '~> 0.0.9' # Deprecated v1 version
gem 'omniauth-cas3', '~> 1.1.4'
gem 'omniauth-facebook', '~> 4.0.0'
gem 'omniauth-github', '~> 1.4'
@ -73,6 +73,9 @@ gem 'acme-client', '~> 2.0', '>= 2.0.6'
# Browser detection
gem 'browser', '~> 4.2'
# OS detection for usage ping
gem 'ohai', '~> 16.10'
# GPG
gem 'gpgme', '~> 2.0.19'
@ -88,7 +91,7 @@ gem 'grape-entity', '~> 0.7.1'
gem 'rack-cors', '~> 1.0.6', require: 'rack/cors'
# GraphQL API
gem 'graphql', '~> 1.11.4'
gem 'graphql', '~> 1.11.8'
# NOTE: graphiql-rails v1.5+ doesn't work: https://gitlab.com/gitlab-org/gitlab/issues/31771
# TODO: remove app/views/graphiql/rails/editors/show.html.erb when https://github.com/rmosolgo/graphiql-rails/pull/71 is released:
# https://gitlab.com/gitlab-org/gitlab/issues/31747
@ -112,16 +115,16 @@ gem 'carrierwave', '~> 1.3'
gem 'mini_magick', '~> 4.10.1'
# for backups
gem 'fog-aws', '~> 3.8'
gem 'fog-aws', '~> 3.9'
# Locked until fog-google resolves https://github.com/fog/fog-google/issues/421.
# Also see config/initializers/fog_core_patch.rb.
gem 'fog-core', '= 2.1.0'
gem 'fog-google', '~> 1.12'
gem 'gitlab-fog-google', '~> 1.13', require: 'fog/google'
gem 'fog-local', '~> 0.6'
gem 'fog-openstack', '~> 1.0'
gem 'fog-rackspace', '~> 0.1.1'
gem 'fog-aliyun', '~> 0.3'
gem 'gitlab-fog-azure-rm', '~> 1.0', require: false
gem 'gitlab-fog-azure-rm', '~> 1.0.1', require: false
# for Google storage
gem 'google-api-client', '~> 0.33'
@ -195,7 +198,7 @@ gem 'acts-as-taggable-on', '~> 7.0'
gem 'sidekiq', '~> 5.2.7'
gem 'sidekiq-cron', '~> 1.0'
gem 'redis-namespace', '~> 1.7.0'
gem 'gitlab-sidekiq-fetcher', '0.5.2', require: 'sidekiq-reliable-fetch'
gem 'gitlab-sidekiq-fetcher', '0.5.5', require: 'sidekiq-reliable-fetch'
# Cron Parser
gem 'fugit', '~> 1.2.1'
@ -233,10 +236,7 @@ gem 'connection_pool', '~> 2.0'
gem 'redis-rails', '~> 5.0.2'
# Discord integration
gem 'discordrb-webhooks-blackst0ne', '~> 3.3', require: false
# HipChat integration
gem 'hipchat', '~> 1.5.0'
gem 'discordrb-webhooks', '~> 3.4', require: false
# Jira integration
gem 'jira-ruby', '~> 2.1.4'
@ -274,7 +274,10 @@ gem 'licensee', '~> 9.14.1'
gem 'charlock_holmes', '~> 0.7.7'
# Detect mime content type from content
gem 'mimemagic', '~> 0.3.2'
gem 'ruby-magic-static', '~> 0.3.4'
# Fake version of the gem to trick bundler
gem 'mimemagic', '~> 0.3.10'
# Faster blank
gem 'fast_blank'
@ -309,7 +312,7 @@ gem 'pg_query', '~> 1.3.0'
gem 'premailer-rails', '~> 1.10.3'
# LabKit: Tracing and Correlation
gem 'gitlab-labkit', '0.14.0'
gem 'gitlab-labkit', '~> 0.16.1'
# Thrift is a dependency of gitlab-labkit, we want a version higher than 0.14.0
# because of https://gitlab.com/gitlab-org/gitlab/-/issues/321900
gem 'thrift', '>= 0.14.0'
@ -321,7 +324,7 @@ gem 'gettext_i18n_rails', '~> 1.8.0'
gem 'gettext_i18n_rails_js', '~> 1.3'
gem 'gettext', '~> 3.3', require: false, group: :development
gem 'batch-loader', '~> 1.4.0'
gem 'batch-loader', '~> 2.0.1'
# Perf bar
gem 'peek', '~> 1.1'
@ -341,7 +344,6 @@ end
group :development do
gem 'brakeman', '~> 4.2', require: false
gem 'danger', '~> 8.0.6', require: false
gem 'lefthook', '~> 0.7', require: false
gem 'letter_opener_web', '~> 1.3.4'
@ -375,9 +377,8 @@ group :development, :test do
gem 'spring', '~> 2.1.0'
gem 'spring-commands-rspec', '~> 1.0.4'
gem 'gitlab-styles', '~> 6.0.0', require: false
gem 'gitlab-styles', '~> 6.1.0', require: false
gem 'scss_lint', '~> 0.59.0', require: false
gem 'haml_lint', '~> 0.36.0', require: false
gem 'bundler-audit', '~> 0.7.0.1', require: false
@ -397,6 +398,11 @@ group :development, :test do
gem 'rblineprof', '~> 0.3.6', platform: :mri, require: false
end
group :development, :test, :danger do
gem 'danger-gitlab', '~> 8.0', require: false
gem 'gitlab-dangerfiles', '~> 0.8.0', require: false
end
group :development, :test, :coverage do
gem 'simplecov', '~> 0.18.5', require: false
gem 'simplecov-cobertura', '~> 1.3.1', require: false
@ -433,7 +439,7 @@ end
gem 'octokit', '~> 4.15'
# https://gitlab.com/gitlab-org/gitlab/issues/207207
gem 'gitlab-mail_room', '~> 0.0.8', require: 'mail_room'
gem 'gitlab-mail_room', '~> 0.0.9', require: 'mail_room'
gem 'email_reply_trimmer', '~> 0.1'
gem 'html2text'
@ -482,7 +488,7 @@ gem 'flipper', '~> 0.17.1'
gem 'flipper-active_record', '~> 0.17.1'
gem 'flipper-active_support_cache_store', '~> 0.17.1'
gem 'unleash', '~> 0.1.5'
gem 'gitlab-experiment', '~> 0.4.9'
gem 'gitlab-experiment', '~> 0.5.0'
# Structured logging
gem 'lograge', '~> 0.5'

View file

@ -88,7 +88,7 @@ GEM
asciidoctor (~> 2.0)
asciidoctor-plantuml (0.0.12)
asciidoctor (>= 1.5.6, < 3.0.0)
ast (2.4.1)
ast (2.4.2)
atlassian-jwt (0.2.0)
jwt (~> 2.1.0)
attr_encrypted (3.1.0)
@ -127,8 +127,8 @@ GEM
nokogiri (~> 1.11.0.rc2)
babosa (1.0.2)
base32 (0.3.2)
batch-loader (1.4.0)
bcrypt (3.1.12)
batch-loader (2.0.1)
bcrypt (3.1.16)
bcrypt_pbkdf (1.0.0)
benchmark-ips (2.3.0)
benchmark-memory (0.1.2)
@ -172,6 +172,14 @@ GEM
cbor (0.5.9.6)
character_set (1.4.0)
charlock_holmes (0.7.7)
chef-config (16.10.17)
addressable
chef-utils (= 16.10.17)
fuzzyurl
mixlib-config (>= 2.2.12, < 4.0)
mixlib-shellout (>= 2.0, < 4.0)
tomlrb (~> 1.2)
chef-utils (16.10.17)
childprocess (3.0.0)
chunky_png (1.3.5)
citrus (3.0.2)
@ -187,7 +195,7 @@ GEM
concord (0.1.5)
adamantium (~> 0.2.0)
equalizer (~> 0.0.9)
concurrent-ruby (1.1.7)
concurrent-ruby (1.1.8)
connection_pool (2.2.2)
contracts (0.11.0)
cork (0.3.0)
@ -208,7 +216,7 @@ GEM
css_parser (1.7.0)
addressable
daemons (1.3.1)
danger (8.0.6)
danger (8.2.3)
claide (~> 1.0)
claide-plugins (>= 0.9.2)
colored2 (~> 3.1)
@ -220,7 +228,10 @@ GEM
kramdown-parser-gfm (~> 1.0)
no_proxy_fix
octokit (~> 4.7)
terminal-table (~> 1)
terminal-table (>= 1, < 4)
danger-gitlab (8.0.0)
danger
gitlab (~> 4.2, >= 4.2.0)
database_cleaner (1.7.0)
debugger-ruby_core_source (1.3.8)
deckar01-task_list (2.3.1)
@ -257,8 +268,8 @@ GEM
diff-lcs (1.4.4)
diff_match_patch (0.1.0)
diffy (3.3.0)
discordrb-webhooks-blackst0ne (3.3.0)
rest-client (~> 2.0)
discordrb-webhooks (3.4.2)
rest-client (>= 2.0.0)
docile (1.3.2)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
@ -348,6 +359,8 @@ GEM
ffi-compiler (1.0.1)
ffi (>= 1.0.0)
rake
ffi-yajl (2.3.4)
libyajl2 (~> 1.2)
flipper (0.17.1)
flipper-active_record (0.17.1)
activerecord (>= 4.2, < 7)
@ -363,7 +376,7 @@ GEM
fog-json
ipaddress (~> 0.8)
xml-simple (~> 1.1)
fog-aws (3.8.0)
fog-aws (3.9.0)
fog-core (~> 2.1)
fog-json (~> 1.1)
fog-xml (~> 0.1)
@ -373,12 +386,6 @@ GEM
excon (~> 0.58)
formatador (~> 0.2)
mime-types
fog-google (1.12.0)
fog-core (<= 2.1.0)
fog-json (~> 1.2)
fog-xml (~> 0.1.0)
google-api-client (>= 0.44.2, < 0.51)
google-cloud-env (~> 1.2)
fog-json (1.2.0)
fog-core
multi_json (~> 1.10)
@ -403,6 +410,7 @@ GEM
fuubar (2.2.0)
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
fuzzyurl (0.9.0)
gemoji (3.0.1)
gemojione (3.3.0)
json
@ -423,38 +431,49 @@ GEM
gitaly (13.9.0.pre.rc1)
grpc (~> 1.0)
github-markup (1.7.0)
gitlab (4.16.1)
httparty (~> 0.14, >= 0.14.0)
terminal-table (~> 1.5, >= 1.5.1)
gitlab-chronic (0.10.5)
numerizer (~> 0.2)
gitlab-experiment (0.4.9)
gitlab-dangerfiles (0.8.0)
danger
gitlab-experiment (0.5.0)
activesupport (>= 3.0)
scientist (~> 1.5, >= 1.5.0)
gitlab-fog-azure-rm (1.0.0)
gitlab-fog-azure-rm (1.0.1)
azure-storage-blob (~> 2.0)
azure-storage-common (~> 2.0)
fog-core (= 2.1.0)
fog-json (~> 1.2.0)
mime-types
ms_rest_azure (~> 0.12.0)
gitlab-labkit (0.14.0)
gitlab-fog-google (1.13.0)
addressable (>= 2.7.0)
fog-core (<= 2.1.0)
fog-json (~> 1.2)
fog-xml (~> 0.1.0)
google-api-client (>= 0.44.2, < 0.51)
google-cloud-env (~> 1.2)
gitlab-labkit (0.16.1)
actionpack (>= 5.0.0, < 7.0.0)
activesupport (>= 5.0.0, < 7.0.0)
gitlab-pg_query (~> 1.3)
grpc (~> 1.19)
jaeger-client (~> 1.1)
opentracing (~> 0.4)
pg_query (~> 1.3)
redis (> 3.0.0, < 5.0.0)
gitlab-license (1.3.0)
gitlab-mail_room (0.0.8)
gitlab-license (1.3.1)
gitlab-mail_room (0.0.9)
gitlab-markup (1.7.1)
gitlab-net-dns (0.9.1)
gitlab-pg_query (1.3.1)
gitlab-pry-byebug (3.9.0)
byebug (~> 11.0)
pry (~> 0.13.0)
gitlab-sidekiq-fetcher (0.5.2)
gitlab-sidekiq-fetcher (0.5.5)
sidekiq (~> 5)
gitlab-styles (6.0.0)
rubocop (~> 0.91.1)
gitlab-styles (6.1.0)
rubocop (~> 0.91, >= 0.91.1)
rubocop-gitlab-security (~> 0.1.1)
rubocop-performance (~> 1.9.2)
rubocop-rails (~> 2.9)
@ -520,7 +539,7 @@ GEM
faraday (>= 1.0)
faraday_middleware
graphql-client
graphql (1.11.4)
graphql (1.11.8)
graphql-client (0.16.0)
activesupport (>= 3.0)
graphql (~> 1.8)
@ -574,9 +593,6 @@ GEM
railties (>= 5.0)
heapy (0.2.0)
thor
hipchat (1.5.2)
httparty
mimemagic
html-pipeline (2.13.2)
activesupport (>= 2)
nokogiri (>= 1.4)
@ -598,7 +614,7 @@ GEM
mime-types (~> 3.0)
multi_xml (>= 0.5.2)
httpclient (2.8.3)
i18n (1.8.7)
i18n (1.8.9)
concurrent-ruby (~> 1.0)
i18n_data (0.8.0)
icalendar (2.4.1)
@ -668,6 +684,7 @@ GEM
actionmailer (>= 3.2)
letter_opener (~> 1.0)
railties (>= 3.2)
libyajl2 (1.2.0)
license_finder (6.0.0)
bundler
rubyzip (>= 1, < 3)
@ -711,12 +728,20 @@ GEM
mime-types (3.3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2020.0512)
mimemagic (0.3.5)
mimemagic (0.3.10)
nokogiri (~> 1)
rake
mini_histogram (0.3.1)
mini_magick (4.10.1)
mini_mime (1.0.2)
mini_portile2 (2.5.0)
minitest (5.11.3)
mixlib-cli (2.1.8)
mixlib-config (3.0.9)
tomlrb
mixlib-log (3.0.9)
mixlib-shellout (3.2.5)
chef-utils
ms_rest (0.7.6)
concurrent-ruby (~> 1.0)
faraday (>= 0.9, < 2.0.0)
@ -737,10 +762,12 @@ GEM
mustermann (>= 1.0.0)
nap (1.1.0)
nenv (0.3.0)
net-http-persistent (4.0.0)
net-http-persistent (4.0.1)
connection_pool (~> 2.2)
net-ldap (0.16.3)
net-ntp (2.1.3)
net-scp (3.0.0)
net-ssh (>= 2.6.5, < 7.0.0)
net-ssh (6.0.0)
netrc (0.11.0)
nio4r (2.5.4)
@ -764,6 +791,19 @@ GEM
octokit (4.20.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
ohai (16.10.6)
chef-config (>= 12.8, < 17)
chef-utils (>= 16.0, < 17)
ffi (~> 1.9)
ffi-yajl (~> 2.2)
ipaddress
mixlib-cli (>= 1.7.0)
mixlib-config (>= 2.0, < 4.0)
mixlib-log (>= 2.0.1, < 4.0)
mixlib-shellout (>= 2.0, < 4.0)
plist (~> 3.1)
train-core
wmi-lite (~> 1.0)
oj (3.10.6)
omniauth (1.9.0)
hashie (>= 3.4.6, < 3.7.0)
@ -776,6 +816,8 @@ GEM
omniauth-authentiq (0.3.3)
jwt (>= 1.5)
omniauth-oauth2 (>= 1.5)
omniauth-azure-activedirectory-v2 (0.1.1)
omniauth-oauth2
omniauth-azure-oauth2 (0.0.10)
jwt (>= 1.0, < 3.0)
omniauth (~> 1.0)
@ -855,6 +897,7 @@ GEM
railties (>= 4.0.0)
pg (1.2.3)
pg_query (1.3.0)
plist (3.6.0)
png_quantizator (0.2.1)
po_to_json (1.0.1)
json (>= 1.6.0)
@ -1041,16 +1084,16 @@ GEM
pg
rails
sqlite3
rubocop (0.91.1)
rubocop (0.93.1)
parallel (~> 1.10)
parser (>= 2.7.1.1)
parser (>= 2.7.1.5)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.7)
regexp_parser (>= 1.8)
rexml
rubocop-ast (>= 0.4.0, < 1.0)
rubocop-ast (>= 0.6.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 2.0)
rubocop-ast (0.8.0)
rubocop-ast (1.4.1)
parser (>= 2.7.1.5)
rubocop-gitlab-security (0.1.1)
rubocop (>= 0.51)
@ -1068,6 +1111,8 @@ GEM
i18n
ruby-fogbugz (0.2.1)
crack (~> 0.4)
ruby-magic-static (0.3.5)
mini_portile2 (~> 2.5.0)
ruby-prof (1.3.1)
ruby-progressbar (1.11.0)
ruby-saml (1.7.2)
@ -1079,7 +1124,7 @@ GEM
rubyntlm (0.6.2)
rubypants (0.2.0)
rubyzip (2.0.0)
rugged (1.0.1)
rugged (1.1.0)
safe_yaml (1.0.4)
safety_net_attestation (0.4.0)
jwt (~> 2.0)
@ -1104,9 +1149,7 @@ GEM
sawyer (0.8.2)
addressable (>= 2.3.5)
faraday (> 0.8, < 2.0)
scientist (1.5.0)
scss_lint (0.59.0)
sass (~> 3.5, >= 3.5.5)
scientist (1.6.0)
securecompare (1.0.0)
seed-fu (2.3.7)
activerecord (>= 3.1)
@ -1196,9 +1239,17 @@ GEM
parslet (~> 1.8.0)
toml-rb (1.0.0)
citrus (~> 3.0, > 3.0)
tomlrb (1.3.0)
tpm-key_attestation (0.9.0)
bindata (~> 2.4)
openssl-signature_algorithm (~> 0.4.0)
train-core (3.4.9)
addressable (~> 2.5)
ffi (!= 1.13.0)
json (>= 1.8, < 3.0)
mixlib-shellout (>= 2.0, < 4.0)
net-scp (>= 1.2, < 4.0)
net-ssh (>= 2.9, < 7.0)
truncato (0.7.11)
htmlentities (~> 4.3.1)
nokogiri (>= 1.7.0, <= 2.0)
@ -1235,7 +1286,7 @@ GEM
validate_email (0.1.6)
activemodel (>= 3.0)
mail (>= 2.2.5)
validate_url (1.0.8)
validate_url (1.0.13)
activemodel (>= 3.0.0)
public_suffix
validates_hostname (1.0.11)
@ -1271,6 +1322,7 @@ GEM
expression_parser
rinku
with_env (1.1.0)
wmi-lite (1.0.5)
xml-simple (1.1.5)
xpath (3.2.0)
nokogiri (~> 1.8)
@ -1302,8 +1354,8 @@ DEPENDENCIES
aws-sdk-s3 (~> 1)
babosa (~> 1.0.2)
base32 (~> 0.3.0)
batch-loader (~> 1.4.0)
bcrypt (= 3.1.12)
batch-loader (~> 2.0.1)
bcrypt (~> 3.1, >= 3.1.14)
bcrypt_pbkdf (~> 1.0)
benchmark-ips (~> 2.3.0)
benchmark-memory (~> 0.1)
@ -1324,7 +1376,7 @@ DEPENDENCIES
countries (~> 3.0)
creole (~> 0.5.0)
crystalball (~> 0.7.0)
danger (~> 8.0.6)
danger-gitlab (~> 8.0)
database_cleaner (~> 1.7.0)
deckar01-task_list (= 2.3.1)
default_value_for (~> 3.4.0)
@ -1335,7 +1387,7 @@ DEPENDENCIES
devise-two-factor (~> 3.1.0)
diff_match_patch (~> 0.1.0)
diffy (~> 3.3)
discordrb-webhooks-blackst0ne (~> 3.3)
discordrb-webhooks (~> 3.4)
doorkeeper (~> 5.5.0.rc2)
doorkeeper-openid_connect (~> 1.7.5)
ed25519 (~> 1.2)
@ -1356,9 +1408,8 @@ DEPENDENCIES
flipper-active_support_cache_store (~> 0.17.1)
flowdock (~> 0.7)
fog-aliyun (~> 0.3)
fog-aws (~> 3.8)
fog-aws (~> 3.9)
fog-core (= 2.1.0)
fog-google (~> 1.12)
fog-local (~> 0.6)
fog-openstack (~> 1.0)
fog-rackspace (~> 0.1.1)
@ -1371,16 +1422,18 @@ DEPENDENCIES
gitaly (~> 13.9.0.pre.rc1)
github-markup (~> 1.7.0)
gitlab-chronic (~> 0.10.5)
gitlab-experiment (~> 0.4.9)
gitlab-fog-azure-rm (~> 1.0)
gitlab-labkit (= 0.14.0)
gitlab-dangerfiles (~> 0.8.0)
gitlab-experiment (~> 0.5.0)
gitlab-fog-azure-rm (~> 1.0.1)
gitlab-fog-google (~> 1.13)
gitlab-labkit (~> 0.16.1)
gitlab-license (~> 1.3)
gitlab-mail_room (~> 0.0.8)
gitlab-mail_room (~> 0.0.9)
gitlab-markup (~> 1.7.1)
gitlab-net-dns (~> 0.9.1)
gitlab-pry-byebug
gitlab-sidekiq-fetcher (= 0.5.2)
gitlab-styles (~> 6.0.0)
gitlab-sidekiq-fetcher (= 0.5.5)
gitlab-styles (~> 6.1.0)
gitlab_chronic_duration (~> 0.10.6.2)
gitlab_omniauth-ldap (~> 2.1.1)
gon (~> 6.2)
@ -1393,7 +1446,7 @@ DEPENDENCIES
grape_logging (~> 1.7)
graphiql-rails (~> 1.4.10)
graphlient (~> 0.4.0)
graphql (~> 1.11.4)
graphql (~> 1.11.8)
graphql-docs (~> 1.6.0)
grpc (~> 1.30.2)
gssapi
@ -1404,7 +1457,6 @@ DEPENDENCIES
hashie
hashie-forbidden_attributes
health_check (~> 3.0)
hipchat (~> 1.5.0)
html-pipeline (~> 2.13.2)
html2text
httparty (~> 0.16.4)
@ -1433,7 +1485,7 @@ DEPENDENCIES
marginalia (~> 1.10.0)
memory_profiler (~> 0.9)
method_source (~> 1.0)
mimemagic (~> 0.3.2)
mimemagic (~> 0.3.10)
mini_magick (~> 4.10.1)
minitest (~> 5.11.0)
multi_json (~> 1.14.1)
@ -1443,11 +1495,13 @@ DEPENDENCIES
nokogiri (~> 1.11.1)
oauth2 (~> 1.4)
octokit (~> 4.15)
ohai (~> 16.10)
oj (~> 3.10.6)
omniauth (~> 1.8)
omniauth-atlassian-oauth2 (~> 0.2.0)
omniauth-auth0 (~> 2.0.0)
omniauth-authentiq (~> 0.3.3)
omniauth-azure-activedirectory-v2 (~> 0.1)
omniauth-azure-oauth2 (~> 0.0.9)
omniauth-cas3 (~> 1.1.4)
omniauth-facebook (~> 4.0.0)
@ -1505,14 +1559,14 @@ DEPENDENCIES
rspec_junit_formatter
rspec_profiling (~> 0.0.6)
ruby-fogbugz (~> 0.2.1)
ruby-magic-static (~> 0.3.4)
ruby-prof (~> 1.3.0)
ruby-progressbar (~> 1.10)
ruby_parser (~> 3.15)
rubyzip (~> 2.0.0)
rugged (~> 1.0.1)
rugged (~> 1.1)
sanitize (~> 5.2.1)
sassc-rails (~> 2.1.0)
scss_lint (~> 0.59.0)
seed-fu (~> 2.3.7)
selenium-webdriver (~> 3.142)
sentry-raven (~> 3.0)

View file

@ -285,10 +285,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1l3468czzjmxl93ap40hp7z94yxp4nbag0bxqs789bm30md90m2a";
sha256 = "04nc8x27hlzlrr5c2gn7mar4vdr0apw5xg22wp6m8dx3wqr04a0y";
type = "gem";
};
version = "2.4.1";
version = "2.4.2";
};
atlassian-jwt = {
dependencies = ["jwt"];
@ -475,20 +475,20 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "09jaxxddqpgq8ynwd2gpjq5rkhw00zdjnqisk9qbpjgxzk6f8gwi";
sha256 = "17d8wwj880zar5h8zxdmw878shgmljmmv957802fw5nkg3gi3xwk";
type = "gem";
};
version = "1.4.0";
version = "2.0.1";
};
bcrypt = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
sha256 = "02r1c3isfchs5fxivbq99gc3aq4vfyn8snhcy707dal1p8qz12qb";
type = "gem";
};
version = "3.1.12";
version = "3.1.16";
};
bcrypt_pbkdf = {
groups = ["ed25519"];
@ -703,6 +703,27 @@
};
version = "0.7.7";
};
chef-config = {
dependencies = ["addressable" "chef-utils" "fuzzyurl" "mixlib-config" "mixlib-shellout" "tomlrb"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0z3lashvhqy9v5b3xn8vzzf07gnjw4mgdiiryxsg6kdasvj62j8z";
type = "gem";
};
version = "16.10.17";
};
chef-utils = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1cypir7fza7jfqaj1j1jh37d3i6bvrmm6jamjlngk3xbdbd56hm7";
type = "gem";
};
version = "16.10.17";
};
childprocess = {
groups = ["default" "test"];
platforms = [];
@ -805,10 +826,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1vnxrbhi7cq3p4y2v9iwd10v1c7l15is4var14hwnb2jip4fyjzz";
sha256 = "0mr23wq0szj52xnj0zcn1k0c7j4v79wlwbijkpfcscqww3l6jlg3";
type = "gem";
};
version = "1.1.7";
version = "1.1.8";
};
connection_pool = {
groups = ["default"];
@ -928,14 +949,25 @@
};
danger = {
dependencies = ["claide" "claide-plugins" "colored2" "cork" "faraday" "faraday-http-cache" "git" "kramdown" "kramdown-parser-gfm" "no_proxy_fix" "octokit" "terminal-table"];
groups = ["development"];
groups = ["danger" "default" "development" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0lrifb0kbjk9033pzjnp8qqqkg2z212h8dgj71k15c6wb6rycqa7";
sha256 = "1nv02gq90nngnfa6hgiyyk60a31xfayk67va98k41gy9arhdkz5g";
type = "gem";
};
version = "8.0.6";
version = "8.2.3";
};
danger-gitlab = {
dependencies = ["danger" "gitlab"];
groups = ["danger" "development" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1a530kx5s5rbx5yx3jqay56lkksqh0yj468hcpg16faiyv8dfza9";
type = "gem";
};
version = "8.0.0";
};
database_cleaner = {
groups = ["development" "test"];
@ -1087,16 +1119,16 @@
};
version = "3.3.0";
};
discordrb-webhooks-blackst0ne = {
discordrb-webhooks = {
dependencies = ["rest-client"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1f0dw6ci5cbrxrvvqw2kqabpzyjisd4hflbi370rpb4cakkzgw39";
sha256 = "0viw73jd9vs9f92a9q2vxcd29755h7w8jwz36jmvcdl2najainyg";
type = "gem";
};
version = "3.3.0";
version = "3.4.2";
};
docile = {
groups = ["default" "development" "test"];
@ -1563,6 +1595,17 @@
};
version = "1.0.1";
};
ffi-yajl = {
dependencies = ["libyajl2"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1pfmn0gprc3c15baxa9rx64pqllk64m60f5vg4gp0icpafkp0jx5";
type = "gem";
};
version = "2.3.4";
};
flipper = {
groups = ["default"];
platforms = [];
@ -1623,10 +1666,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1q7n8r03akjbdz3r2bgsl6wcjvdlf0k508z8bsd9zgs43qg14vc9";
sha256 = "10y32rm3vcfh82p2fdr2zq8ibknx1jslmai5m0r261bdr3brkssm";
type = "gem";
};
version = "3.8.0";
version = "3.9.0";
};
fog-core = {
dependencies = ["builder" "excon" "formatador" "mime-types"];
@ -1639,17 +1682,6 @@
};
version = "2.1.0";
};
fog-google = {
dependencies = ["fog-core" "fog-json" "fog-xml" "google-api-client" "google-cloud-env"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1cl6rprichdn1i40c2ndri1c53cfb0x2xk58l9arwip9ivkasln4";
type = "gem";
};
version = "1.12.0";
};
fog-json = {
dependencies = ["fog-core" "multi_json"];
groups = ["default"];
@ -1737,6 +1769,16 @@
};
version = "2.2.0";
};
fuzzyurl = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "03qchs33vfwbsv5awxg3acfmlcrf5xbhnbrc83fdpamwya0glbjl";
type = "gem";
};
version = "0.9.0";
};
gemoji = {
groups = ["default" "development" "test"];
platforms = [];
@ -1834,6 +1876,17 @@
};
version = "1.7.0";
};
gitlab = {
dependencies = ["httparty" "terminal-table"];
groups = ["danger" "default" "development" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0kq77304vn733xc8iipq4wpdk5qb0zwjryhm3fia3mfsrdcp1z8k";
type = "gem";
};
version = "4.16.1";
};
gitlab-chronic = {
dependencies = ["numerizer"];
groups = ["default"];
@ -1845,16 +1898,27 @@
};
version = "0.10.5";
};
gitlab-dangerfiles = {
dependencies = ["danger"];
groups = ["danger" "development" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "09ggs890b5gfphnz7ayavs55l6xhw323spfd22dg246g0rw9vliy";
type = "gem";
};
version = "0.8.0";
};
gitlab-experiment = {
dependencies = ["activesupport" "scientist"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0skqg90i6qdpm7dhy8bv99gk8siwgm6mpr675790ngri1ns4f5xk";
sha256 = "0x4hyva7ypi2mx5jcyxac8w7ffai1pkkjc49fk3avqh4aimlibfr";
type = "gem";
};
version = "0.4.9";
version = "0.5.0";
};
gitlab-fog-azure-rm = {
dependencies = ["azure-storage-blob" "azure-storage-common" "fog-core" "fog-json" "mime-types" "ms_rest_azure"];
@ -1862,41 +1926,52 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "04l7ps0vvrqq8i25q7ic2zy2n8f8f1l7sn1shf5wccy1cbyj9pig";
sha256 = "05yc5fp45v7y6h838zrj4666ar1ddhn8i5bbdxm8j73yrn2kjnal";
type = "gem";
};
version = "1.0.0";
version = "1.0.1";
};
gitlab-labkit = {
dependencies = ["actionpack" "activesupport" "gitlab-pg_query" "grpc" "jaeger-client" "opentracing" "redis"];
gitlab-fog-google = {
dependencies = ["addressable" "fog-core" "fog-json" "fog-xml" "google-api-client" "google-cloud-env"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0l4sbvlk6qc0x8372rp1gc2ihmx3vp0afrm5cy55xhflq16y7sl1";
sha256 = "0ybmiclsdpkp1l91z6d4qkhha6cik6kgf4kzs3a2c26mhnnj6gxy";
type = "gem";
};
version = "0.14.0";
version = "1.13.0";
};
gitlab-labkit = {
dependencies = ["actionpack" "activesupport" "grpc" "jaeger-client" "opentracing" "pg_query" "redis"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "03i8fc1yzm5yzqxb8bxhjkhqpj17fy71vg2z02bcj4mzbj0piflx";
type = "gem";
};
version = "0.16.1";
};
gitlab-license = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "04846kr8pw0fkw4mavakai978raq5d2kjna4rawxpc3dqlr897g4";
sha256 = "01z5pb6fg1j83p73vys2fhj7qh60zkqbgiyp4nvw013a6hjlv3qk";
type = "gem";
};
version = "1.3.0";
version = "1.3.1";
};
gitlab-mail_room = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "05j8rpsbl2l5q4xnfh2cnws9axy1a19asg8nlw6jngba94raw5ir";
sha256 = "0745kls2bazgk6kbmlq1dmd42z8bgxkyn6ki9snxka8abi5kf037";
type = "gem";
};
version = "0.0.8";
version = "0.0.9";
};
gitlab-markup = {
groups = ["default"];
@ -1918,16 +1993,6 @@
};
version = "0.9.1";
};
gitlab-pg_query = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1rybirjyclavp641qdx27483xx0zpmc577wdzfgdnjd7753bya7g";
type = "gem";
};
version = "1.3.1";
};
gitlab-pry-byebug = {
dependencies = ["byebug" "pry"];
groups = ["development" "test"];
@ -1949,10 +2014,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0dvx2klf1a1xyf15q34fn59291v6jwx3z315rxb2dmkvcr9873m1";
sha256 = "055v0cxvxgy12iwhqa2xbsxa9j6ww7p1f5jqwncwsnr7l6f1f4c9";
type = "gem";
};
version = "0.5.2";
version = "0.5.5";
};
gitlab-styles = {
dependencies = ["rubocop" "rubocop-gitlab-security" "rubocop-performance" "rubocop-rails" "rubocop-rspec"];
@ -1960,10 +2025,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "17d238cy031gnjmrk6wl3qyk5kqhqjxrb68813n4y9ia817xmwyp";
sha256 = "0y3livdpkdzp4cy47ycpwqa7nhrf6fb1ff2lwhh4l5n4dpqympwn";
type = "gem";
};
version = "6.0.0";
version = "6.1.0";
};
gitlab_chronic_duration = {
dependencies = ["numerizer"];
@ -2145,10 +2210,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "01ldxhn59lfg5ivxc9m11v1qhw29ql95qcvwwcap49n0z7d1i3k5";
sha256 = "0rm59b6klp97287h01aj8hr12mhsya585as2z1sk8hq2lp51imfn";
type = "gem";
};
version = "1.11.4";
version = "1.11.8";
};
graphql-client = {
dependencies = ["activesupport" "graphql"];
@ -2332,17 +2397,6 @@
};
version = "0.2.0";
};
hipchat = {
dependencies = ["httparty" "mimemagic"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0hgy5jav479vbzzk53lazhpjj094dcsqw6w1d6zjn52p72bwq60k";
type = "gem";
};
version = "1.5.2";
};
html-pipeline = {
dependencies = ["activesupport" "nokogiri"];
groups = ["default" "development" "test"];
@ -2455,10 +2509,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1kr0bx9323fv5ys6nlhsy05kmwcbs94h6ac7ka9qqywy0vbdvrrv";
sha256 = "08p6b13p99j1rrcrw1l3v0kb9mxbsvy6nk31r8h4rnszdgzpga32";
type = "gem";
};
version = "1.8.7";
version = "1.8.9";
};
i18n_data = {
groups = ["default"];
@ -2758,6 +2812,16 @@
};
version = "1.3.4";
};
libyajl2 = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0n5j0p8dxf9xzb9n4bkdr8w0a8gg3jzrn9indri3n0fv90gcs5qi";
type = "gem";
};
version = "1.2.0";
};
license_finder = {
dependencies = ["rubyzip" "thor" "toml" "with_env" "xml-simple"];
groups = ["development" "omnibus" "test"];
@ -2953,14 +3017,15 @@
version = "3.2020.0512";
};
mimemagic = {
dependencies = ["nokogiri" "rake"];
groups = ["default" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1qfqb9w76kmpb48frbzbyvjc0dfxh5qiw1kxdbv2y2kp6fxpa1kf";
sha256 = "0cqm9n9122qpksn9v6mp0gn3lrzxhh72lwl7yb6j75gykdan6h41";
type = "gem";
};
version = "0.3.5";
version = "0.3.10";
};
mini_histogram = {
groups = ["default" "test"];
@ -3012,6 +3077,48 @@
};
version = "5.11.3";
};
mixlib-cli = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1ydxlfgd7nnj3rp1y70k4yk96xz5cywldjii2zbnw3sq9pippwp6";
type = "gem";
};
version = "2.1.8";
};
mixlib-config = {
dependencies = ["tomlrb"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1askip583sfnz25gywd508l3vj5wnvx9vp7gm1sfnixm7amssrwq";
type = "gem";
};
version = "3.0.9";
};
mixlib-log = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0n5dm5iz90ijvjn59jfm8gb8hgsvbj0f1kpzbl38b02z0z4a4v7x";
type = "gem";
};
version = "3.0.9";
};
mixlib-shellout = {
dependencies = ["chef-utils"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1g99c3s5zvrwvlv3gjw5fvpdimybpfazqyszjim5kdjjbq0586hj";
type = "gem";
};
version = "3.2.5";
};
ms_rest = {
dependencies = ["concurrent-ruby" "faraday" "timeliness"];
groups = ["default"];
@ -3132,10 +3239,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0sbdvkn7mzl883iykz74hgp14qj041gldf2vdk9g3gyqc843l2vr";
sha256 = "1yfypmfg1maf20yfd22zzng8k955iylz7iip0mgc9lazw36g8li7";
type = "gem";
};
version = "4.0.0";
version = "4.0.1";
};
net-ldap = {
groups = ["default"];
@ -3157,6 +3264,17 @@
};
version = "2.1.3";
};
net-scp = {
dependencies = ["net-ssh"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0b4h3ip8d1gkrc0znnw54hbxillk73mdnaf5pz330lmrcl1wiilg";
type = "gem";
};
version = "3.0.0";
};
net-ssh = {
groups = ["default"];
platforms = [];
@ -3272,6 +3390,17 @@
};
version = "4.20.0";
};
ohai = {
dependencies = ["chef-config" "chef-utils" "ffi" "ffi-yajl" "ipaddress" "mixlib-cli" "mixlib-config" "mixlib-log" "mixlib-shellout" "plist" "train-core" "wmi-lite"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "08pc5l9p741g08x7xzbkkyi2kz5m5xr8rdj6hfna9bjzb1p80ddq";
type = "gem";
};
version = "16.10.6";
};
oj = {
groups = ["default"];
platforms = [];
@ -3326,6 +3455,17 @@
};
version = "0.3.3";
};
omniauth-azure-activedirectory-v2 = {
dependencies = ["omniauth-oauth2"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0bgdyzjh7x9knkzaa6bl9f5fvh05nd0gqxrqassww0vqh5qgyfpy";
type = "gem";
};
version = "0.1.1";
};
omniauth-azure-oauth2 = {
dependencies = ["jwt" "omniauth" "omniauth-oauth2"];
groups = ["default"];
@ -3667,6 +3807,16 @@
};
version = "1.3.0";
};
plist = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1whhr897z6z6av85x2cipyjk46bwh6s4wx6nbrcd3iifnzvbqs7l";
type = "gem";
};
version = "3.6.0";
};
png_quantizator = {
groups = ["development" "test"];
platforms = [];
@ -4479,10 +4629,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "19nmdwz6mc5ah0xqlj1j58ylcp9zsckb1xm7p1z51abnqhcq5c06";
sha256 = "0phrig25dykgi42z6mf1abllh3ws6sv7awa82hzvvvbjx2xlzd3k";
type = "gem";
};
version = "0.91.1";
version = "0.93.1";
};
rubocop-ast = {
dependencies = ["parser"];
@ -4490,10 +4640,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "165ws2vwnw33nlqgzvzzjjp1zhkc712a92lbpbjx8j83g44dmdy4";
sha256 = "0gkf1p8yal38nlvdb39qaiy0gr85fxfr09j5dxh8qvrgpncpnk78";
type = "gem";
};
version = "0.8.0";
version = "1.4.1";
};
rubocop-gitlab-security = {
dependencies = ["rubocop"];
@ -4561,6 +4711,17 @@
};
version = "0.2.1";
};
ruby-magic-static = {
dependencies = ["mini_portile2"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0whs2i868g1bgglrxl6aba47h8n9zqglsipskk6l83rfkm85ik3g";
type = "gem";
};
version = "0.3.5";
};
ruby-prof = {
groups = ["default"];
platforms = [];
@ -4658,10 +4819,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "056bwiwxvnbkbgsr2wqcsknnc73nqasqdnjcpgj2r61wkm8mzmbn";
sha256 = "04aq913plcxjw71l5r62qgz3bx3466p0wvgyfqahg5n3nybmcwqy";
type = "gem";
};
version = "1.0.1";
version = "1.1.0";
};
safe_yaml = {
groups = ["default" "test"];
@ -4755,21 +4916,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "09565ppvd851zxpspn5d5q28wqkfjyfxhvda9w80i16p3y937155";
sha256 = "0jklwk9aldvlmdv17m77g2f82j383alqd4jjnwn4c564q9wvz3fp";
type = "gem";
};
version = "1.5.0";
};
scss_lint = {
dependencies = ["sass"];
groups = ["development" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1s6dzk4n9pnmqciliggwpiny43vc3cx3n2d5gqa9aqng77ff7yv7";
type = "gem";
};
version = "0.59.0";
version = "1.6.0";
};
securecompare = {
groups = ["default"];
@ -5273,6 +5423,16 @@
};
version = "1.0.0";
};
tomlrb = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "00x5y9h4fbvrv4xrjk4cqlkm4vq8gv73ax4alj3ac2x77zsnnrk8";
type = "gem";
};
version = "1.3.0";
};
tpm-key_attestation = {
dependencies = ["bindata" "openssl-signature_algorithm"];
groups = ["default"];
@ -5284,6 +5444,17 @@
};
version = "0.9.0";
};
train-core = {
dependencies = ["addressable" "ffi" "json" "mixlib-shellout" "net-scp" "net-ssh"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1pbfbmi9l5hxr1zly1bc72fk8a6by4d19wdap8q3mi3rlflqzbfp";
type = "gem";
};
version = "3.4.9";
};
truncato = {
dependencies = ["htmlentities" "nokogiri"];
groups = ["default"];
@ -5459,10 +5630,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1k0bfxzvdcf1nrqhvnyhijc4mwab9wn4qvqb0ynq6p8dj0f866zi";
sha256 = "1bwj34rz7961rrl545f006m2jdz1nrc0m72gfqmnb41xwsvpagbk";
type = "gem";
};
version = "1.0.8";
version = "1.0.13";
};
validates_hostname = {
dependencies = ["activerecord" "activesupport"];
@ -5591,6 +5762,16 @@
};
version = "1.1.0";
};
wmi-lite = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "110dv4arvwyky6f2pq19f20f1xcjpiz3zfbals0y49ijpq8agvql";
type = "gem";
};
version = "1.0.5";
};
xml-simple = {
groups = ["default" "development" "test"];
platforms = [];

View file

@ -68,7 +68,10 @@ class GitLabRepo:
version = self.rev2version(rev)
passthru = {v: self.get_file(v, rev).strip() for v in ['GITALY_SERVER_VERSION', 'GITLAB_PAGES_VERSION',
'GITLAB_SHELL_VERSION', 'GITLAB_WORKHORSE_VERSION']}
'GITLAB_SHELL_VERSION']}
passthru["GITLAB_WORKHORSE_VERSION"] = version
return dict(version=self.rev2version(rev),
repo_hash=self.get_git_hash(rev),
owner=self.owner,
@ -181,9 +184,6 @@ def update_gitlab_shell():
gitlab_shell_version = data['passthru']['GITLAB_SHELL_VERSION']
_call_nix_update('gitlab-shell', gitlab_shell_version)
repo = GitLabRepo(repo='gitlab-shell')
gitlab_shell_dir = pathlib.Path(__file__).parent / 'gitlab-shell'
@cli.command('update-gitlab-workhorse')
def update_gitlab_workhorse():
@ -192,8 +192,6 @@ def update_gitlab_workhorse():
gitlab_workhorse_version = data['passthru']['GITLAB_WORKHORSE_VERSION']
_call_nix_update('gitlab-workhorse', gitlab_workhorse_version)
repo = GitLabRepo('gitlab-org', 'gitlab-workhorse')
gitlab_workhorse_dir = pathlib.Path(__file__).parent / 'gitlab-workhorse'
@cli.command('update-all')
@click.option('--rev', default='latest', help='The rev to use (vX.Y.Z-ee), or \'latest\'')

File diff suppressed because it is too large Load diff

View file

@ -44,7 +44,7 @@
continue
- ui.write('<tag revision="%d" node="%s" name="%s"/>\n'
+ ui.write(b'<tag revision="%d" node="%s" name="%s"/>\n'
% (r, _x(node.hex(n)), _x(t)))
% (r, _x(node.hex(n)), _u(t)))
def _branches(ui, repo):
@@ -104,136 +107,148 @@ def _branches(ui, repo):
@ -59,7 +59,7 @@
if lookup(r, n) in branchheads(t):
- ui.write('<branch revision="%d" node="%s" name="%s"/>\n'
+ ui.write(b'<branch revision="%d" node="%s" name="%s"/>\n'
% (r, _x(node.hex(n)), _x(t)))
% (r, _x(node.hex(n)), _u(t)))
def _manifest(ui, repo, path, rev):
ctx = _changectx(repo, rev)

View file

@ -1,28 +1,34 @@
source 'https://rubygems.org'
ruby '>= 2.3.0', '< 2.7.0' if Bundler::VERSION >= '1.12.0'
gem "bundler", ">= 1.5.0"
ruby '>= 2.4.0', '< 2.8.0'
gem 'bundler', '>= 1.12.0'
gem 'rails', '5.2.4.5'
gem 'rails', '5.2.5'
gem 'sprockets', '~> 3.7.2' if RUBY_VERSION < '2.5'
gem "rouge", "~> 3.12.0"
gem "request_store", "~> 1.4.1"
gem 'rouge', '~> 3.26.0'
gem 'request_store', '~> 1.5.0'
gem "mini_mime", "~> 1.0.1"
gem "actionpack-xml_parser"
gem "roadie-rails", (RUBY_VERSION < "2.5" ? "~> 1.3.0" : "~> 2.1.0")
gem "mimemagic"
gem 'roadie-rails', (RUBY_VERSION < '2.5' ? '~> 1.3.0' : '~> 2.2.0')
gem 'marcel'
gem "mail", "~> 2.7.1"
gem 'csv', (RUBY_VERSION < '2.5' ? ['>= 3.1.1', '<= 3.1.5'] : '~> 3.1.1')
gem 'nokogiri', (RUBY_VERSION < '2.5' ? '~> 1.10.0' : '~> 1.11.1')
gem "i18n", "~> 1.6.0"
gem 'i18n', '~> 1.8.2'
gem "rbpdf", "~> 1.20.0"
gem 'addressable'
gem 'rubyzip', '~> 2.3.0'
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :x64_mingw, :mswin]
# TOTP-based 2-factor authentication
gem 'rotp'
gem 'rqrcode'
# Optional gem for LDAP authentication
group :ldap do
gem "net-ldap", "~> 0.16.0"
gem 'net-ldap', '~> 0.17.0'
end
# Optional gem for OpenID authentication
@ -33,7 +39,7 @@ end
# Optional gem for exporting the gantt to a PNG file
group :minimagick do
gem "mini_magick", "~> 4.9.5"
gem 'mini_magick', '~> 4.11.0'
end
# Optional Markdown support, not for JRuby
@ -43,7 +49,7 @@ end
# Include database gems for the database adapters NixOS supports
gem "mysql2", "~> 0.5.0", :platforms => [:mri, :mingw, :x64_mingw]
gem "pg", "~> 1.1.4", :platforms => [:mri, :mingw, :x64_mingw]
gem "pg", "~> 1.2.2", :platforms => [:mri, :mingw, :x64_mingw]
group :development do
gem "yard"
@ -52,16 +58,17 @@ end
group :test do
gem "rails-dom-testing"
gem 'mocha', '>= 1.4.0'
gem "simplecov", "~> 0.17.0", :require => false
gem 'simplecov', '~> 0.18.5', :require => false
gem "ffi", platforms: [:mingw, :x64_mingw, :mswin]
# For running system tests
gem 'puma', '~> 3.7'
gem "capybara", (RUBY_VERSION < "2.4" ? "~> 3.15.1" : "~> 3.25.0")
gem 'puma'
gem 'capybara', '~> 3.31.0'
gem "selenium-webdriver"
gem 'webdrivers', '~> 4.4', require: false
# RuboCop
gem 'rubocop', '~> 0.76.0'
gem 'rubocop-performance', '~> 1.5.0'
gem 'rubocop-rails', '~> 2.3.0'
gem 'rubocop', '~> 1.12.0'
gem 'rubocop-performance', '~> 1.10.1'
gem 'rubocop-rails', '~> 2.9.0'
end
local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")

View file

@ -1,19 +1,19 @@
GEM
remote: https://rubygems.org/
specs:
actioncable (5.2.4.5)
actionpack (= 5.2.4.5)
actioncable (5.2.5)
actionpack (= 5.2.5)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailer (5.2.4.5)
actionpack (= 5.2.4.5)
actionview (= 5.2.4.5)
activejob (= 5.2.4.5)
actionmailer (5.2.5)
actionpack (= 5.2.5)
actionview (= 5.2.5)
activejob (= 5.2.5)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.2.4.5)
actionview (= 5.2.4.5)
activesupport (= 5.2.4.5)
actionpack (5.2.5)
actionview (= 5.2.5)
activesupport (= 5.2.5)
rack (~> 2.0, >= 2.0.8)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
@ -21,26 +21,26 @@ GEM
actionpack-xml_parser (2.0.1)
actionpack (>= 5.0)
railties (>= 5.0)
actionview (5.2.4.5)
activesupport (= 5.2.4.5)
actionview (5.2.5)
activesupport (= 5.2.5)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
activejob (5.2.4.5)
activesupport (= 5.2.4.5)
activejob (5.2.5)
activesupport (= 5.2.5)
globalid (>= 0.3.6)
activemodel (5.2.4.5)
activesupport (= 5.2.4.5)
activerecord (5.2.4.5)
activemodel (= 5.2.4.5)
activesupport (= 5.2.4.5)
activemodel (5.2.5)
activesupport (= 5.2.5)
activerecord (5.2.5)
activemodel (= 5.2.5)
activesupport (= 5.2.5)
arel (>= 9.0)
activestorage (5.2.4.5)
actionpack (= 5.2.4.5)
activerecord (= 5.2.4.5)
marcel (~> 0.3.1)
activesupport (5.2.4.5)
activestorage (5.2.5)
actionpack (= 5.2.5)
activerecord (= 5.2.5)
marcel (~> 1.0.0)
activesupport (5.2.5)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
@ -50,7 +50,7 @@ GEM
arel (9.0.0)
ast (2.4.2)
builder (3.2.4)
capybara (3.25.0)
capybara (3.31.0)
addressable
mini_mime (>= 0.1.3)
nokogiri (~> 1.8)
@ -59,6 +59,7 @@ GEM
regexp_parser (~> 1.5)
xpath (~> 3.2)
childprocess (3.0.0)
chunky_png (1.4.0)
concurrent-ruby (1.1.8)
crass (1.0.6)
css_parser (1.9.0)
@ -69,26 +70,22 @@ GEM
globalid (0.4.2)
activesupport (>= 4.2.0)
htmlentities (4.3.4)
i18n (1.6.0)
i18n (1.8.9)
concurrent-ruby (~> 1.0)
jaro_winkler (1.5.4)
json (2.5.1)
loofah (2.9.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
mini_mime (>= 0.1.1)
marcel (0.3.3)
mimemagic (~> 0.3.2)
marcel (1.0.0)
method_source (1.0.0)
mimemagic (0.3.5)
mini_magick (4.9.5)
mini_mime (1.0.2)
mini_magick (4.11.0)
mini_mime (1.0.3)
mini_portile2 (2.5.0)
minitest (5.14.4)
mocha (1.12.0)
mysql2 (0.5.3)
net-ldap (0.16.3)
net-ldap (0.17.0)
nio4r (2.5.7)
nokogiri (1.11.2)
mini_portile2 (~> 2.5.0)
@ -96,9 +93,10 @@ GEM
parallel (1.20.1)
parser (3.0.0.0)
ast (~> 2.4.1)
pg (1.1.4)
pg (1.2.3)
public_suffix (4.0.6)
puma (3.12.6)
puma (5.2.2)
nio4r (~> 2.0)
racc (1.5.2)
rack (2.2.3)
rack-openid (1.4.2)
@ -106,27 +104,27 @@ GEM
ruby-openid (>= 2.1.8)
rack-test (1.1.0)
rack (>= 1.0, < 3)
rails (5.2.4.5)
actioncable (= 5.2.4.5)
actionmailer (= 5.2.4.5)
actionpack (= 5.2.4.5)
actionview (= 5.2.4.5)
activejob (= 5.2.4.5)
activemodel (= 5.2.4.5)
activerecord (= 5.2.4.5)
activestorage (= 5.2.4.5)
activesupport (= 5.2.4.5)
rails (5.2.5)
actioncable (= 5.2.5)
actionmailer (= 5.2.5)
actionpack (= 5.2.5)
actionview (= 5.2.5)
activejob (= 5.2.5)
activemodel (= 5.2.5)
activerecord (= 5.2.5)
activestorage (= 5.2.5)
activesupport (= 5.2.5)
bundler (>= 1.3.0)
railties (= 5.2.4.5)
railties (= 5.2.5)
sprockets-rails (>= 2.0.0)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.3.0)
loofah (~> 2.3)
railties (5.2.4.5)
actionpack (= 5.2.4.5)
activesupport (= 5.2.4.5)
railties (5.2.5)
actionpack (= 5.2.5)
activesupport (= 5.2.5)
method_source
rake (>= 0.8.7)
thor (>= 0.19.0, < 2.0)
@ -138,38 +136,49 @@ GEM
rbpdf-font (1.19.1)
redcarpet (3.5.1)
regexp_parser (1.8.2)
request_store (1.4.1)
request_store (1.5.0)
rack (>= 1.4)
rexml (3.2.4)
roadie (4.0.0)
css_parser (~> 1.4)
nokogiri (~> 1.8)
roadie-rails (2.1.1)
railties (>= 5.1, < 6.1)
roadie-rails (2.2.0)
railties (>= 5.1, < 6.2)
roadie (>= 3.1, < 5.0)
rouge (3.12.0)
rubocop (0.76.0)
jaro_winkler (~> 1.5.1)
rotp (6.2.0)
rouge (3.26.0)
rqrcode (1.2.0)
chunky_png (~> 1.0)
rqrcode_core (~> 0.2)
rqrcode_core (0.2.0)
rubocop (1.12.0)
parallel (~> 1.10)
parser (>= 2.6)
parser (>= 3.0.0.0)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml
rubocop-ast (>= 1.2.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 1.7)
rubocop-performance (1.5.2)
rubocop (>= 0.71.0)
rubocop-rails (2.3.2)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.4.1)
parser (>= 2.7.1.5)
rubocop-performance (1.10.2)
rubocop (>= 0.90.0, < 2.0)
rubocop-ast (>= 0.4.0)
rubocop-rails (2.9.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 0.72.0)
rubocop (>= 0.90.0, < 2.0)
ruby-openid (2.9.2)
ruby-progressbar (1.11.0)
rubyzip (2.3.0)
selenium-webdriver (3.142.7)
childprocess (>= 0.5, < 4.0)
rubyzip (>= 1.2.2)
simplecov (0.17.1)
simplecov (0.18.5)
docile (~> 1.1)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.2)
simplecov-html (~> 0.11)
simplecov-html (0.12.3)
sprockets (4.0.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
@ -181,7 +190,11 @@ GEM
thread_safe (0.3.6)
tzinfo (1.2.9)
thread_safe (~> 0.1)
unicode-display_width (1.6.1)
unicode-display_width (2.0.0)
webdrivers (4.6.0)
nokogiri (~> 1.6)
rubyzip (>= 1.3.0)
selenium-webdriver (>= 3.0, < 4.0)
websocket-driver (0.7.3)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
@ -194,36 +207,41 @@ PLATFORMS
DEPENDENCIES
actionpack-xml_parser
bundler (>= 1.5.0)
capybara (~> 3.25.0)
addressable
bundler (>= 1.12.0)
capybara (~> 3.31.0)
csv (~> 3.1.1)
ffi
i18n (~> 1.6.0)
i18n (~> 1.8.2)
mail (~> 2.7.1)
mimemagic
mini_magick (~> 4.9.5)
marcel
mini_magick (~> 4.11.0)
mini_mime (~> 1.0.1)
mocha (>= 1.4.0)
mysql2 (~> 0.5.0)
net-ldap (~> 0.16.0)
net-ldap (~> 0.17.0)
nokogiri (~> 1.11.1)
pg (~> 1.1.4)
puma (~> 3.7)
pg (~> 1.2.2)
puma
rack-openid
rails (= 5.2.4.5)
rails (= 5.2.5)
rails-dom-testing
rbpdf (~> 1.20.0)
redcarpet (~> 3.5.1)
request_store (~> 1.4.1)
roadie-rails (~> 2.1.0)
rouge (~> 3.12.0)
rubocop (~> 0.76.0)
rubocop-performance (~> 1.5.0)
rubocop-rails (~> 2.3.0)
request_store (~> 1.5.0)
roadie-rails (~> 2.2.0)
rotp
rouge (~> 3.26.0)
rqrcode
rubocop (~> 1.12.0)
rubocop-performance (~> 1.10.1)
rubocop-rails (~> 2.9.0)
ruby-openid (~> 2.9.2)
rubyzip (~> 2.3.0)
selenium-webdriver
simplecov (~> 0.17.0)
simplecov (~> 0.18.5)
tzinfo-data
webdrivers (~> 4.4)
yard
RUBY VERSION

View file

@ -1,7 +1,7 @@
{ lib, stdenv, fetchurl, bundlerEnv, ruby, makeWrapper }:
let
version = "4.1.2";
version = "4.2.0";
rubyEnv = bundlerEnv {
name = "redmine-env-${version}";
@ -16,7 +16,7 @@ in
src = fetchurl {
url = "https://www.redmine.org/releases/${pname}-${version}.tar.gz";
sha256 = "13i2rlkpdwkdhidpdb5r2zxwxna00r71rh248kzfhgy5a5rkj8ky";
sha256 = "1r87gy73dclnvcz55vziv6kbgyck0v8jlzx1wwkak8mgh32n8n19";
};
nativeBuildInputs = [ makeWrapper ];

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