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/applications/science/math/R @peti
/pkgs/development/r-modules @peti /pkgs/development/r-modules @peti
# Ruby
/pkgs/development/interpreters/ruby @marsam
/pkgs/development/ruby-modules @marsam
# Rust # Rust
/pkgs/development/compilers/rust @Mic92 @LnL7 @zowoq /pkgs/development/compilers/rust @Mic92 @LnL7 @zowoq
/pkgs/build-support/rust @andir @danieldk @zowoq /pkgs/build-support/rust @andir @danieldk @zowoq
@ -135,7 +139,7 @@
/pkgs/development/libraries/qt-5 @ttuegel /pkgs/development/libraries/qt-5 @ttuegel
# PostgreSQL and related stuff # 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.xml @thoughtpolice
/nixos/modules/services/databases/postgresql.nix @thoughtpolice /nixos/modules/services/databases/postgresql.nix @thoughtpolice
/nixos/tests/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. : 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} ### 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. Each path directly listed in `contents` will have a symlink in the root of the image.

View file

@ -698,6 +698,16 @@
githubId = 1078530; githubId = 1078530;
name = "Alexandre Peyroux"; 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 = { ar1a = {
email = "aria@ar1as.space"; email = "aria@ar1as.space";
github = "ar1a"; github = "ar1a";
@ -2781,6 +2791,12 @@
githubId = 1753498; githubId = 1753498;
name = "Dejan Lukan"; name = "Dejan Lukan";
}; };
electrified = {
email = "ed@maidavale.org";
github = "electrified";
githubId = 103082;
name = "Ed Brindley";
};
elliottvillars = { elliottvillars = {
email = "elliottvillars@gmail.com"; email = "elliottvillars@gmail.com";
github = "elliottvillars"; github = "elliottvillars";
@ -3689,6 +3705,12 @@
githubId = 343415; githubId = 343415;
name = "Greg Roodt"; name = "Greg Roodt";
}; };
gschwartz = {
email = "gsch@pennmedicine.upenn.edu";
github = "GregorySchwartz";
githubId = 2490088;
name = "Gregory Schwartz";
};
gtrunsec = { gtrunsec = {
email = "gtrunsec@hardenedlinux.org"; email = "gtrunsec@hardenedlinux.org";
github = "GTrunSec"; github = "GTrunSec";
@ -8145,6 +8167,12 @@
githubId = 16779; githubId = 16779;
name = "Rickard Nilsson"; name = "Rickard Nilsson";
}; };
riey = {
email = "creeper844@gmail.com";
github = "Riey";
githubId = 14910534;
name = "Riey";
};
rika = { rika = {
email = "rika@paymentswit.ch"; email = "rika@paymentswit.ch";
github = "NekomimiScience"; github = "NekomimiScience";
@ -8693,6 +8721,12 @@
githubId = 19472270; githubId = 19472270;
name = "Sebastian"; name = "Sebastian";
}; };
sebbadk = {
email = "sebastian@sebba.dk";
github = "SEbbaDK";
githubId = 1567527;
name = "Sebastian Hyberts";
};
sellout = { sellout = {
email = "greg@technomadic.org"; email = "greg@technomadic.org";
github = "sellout"; github = "sellout";

View file

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

View file

@ -118,6 +118,16 @@
<xref linkend="opt-services.samba-wsdd.enable" /> Web Services Dynamic Discovery host daemon <xref linkend="opt-services.samba-wsdd.enable" /> Web Services Dynamic Discovery host daemon
</para> </para>
</listitem> </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> </itemizedlist>
</section> </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/sata.nix
./hardware/wooting.nix ./hardware/wooting.nix
./hardware/uinput.nix ./hardware/uinput.nix
./hardware/video/amdgpu.nix
./hardware/video/amdgpu-pro.nix ./hardware/video/amdgpu-pro.nix
./hardware/video/ati.nix ./hardware/video/ati.nix
./hardware/video/capture/mwprocapture.nix ./hardware/video/capture/mwprocapture.nix
@ -126,6 +125,7 @@
./programs/dconf.nix ./programs/dconf.nix
./programs/digitalbitbox/default.nix ./programs/digitalbitbox/default.nix
./programs/dmrconfig.nix ./programs/dmrconfig.nix
./programs/droidcam.nix
./programs/environment.nix ./programs/environment.nix
./programs/evince.nix ./programs/evince.nix
./programs/file-roller.nix ./programs/file-roller.nix
@ -357,6 +357,7 @@
./services/development/jupyter/default.nix ./services/development/jupyter/default.nix
./services/development/jupyterhub/default.nix ./services/development/jupyterhub/default.nix
./services/development/lorri.nix ./services/development/lorri.nix
./services/display-managers/greetd.nix
./services/editors/emacs.nix ./services/editors/emacs.nix
./services/editors/infinoted.nix ./services/editors/infinoted.nix
./services/games/factorio.nix ./services/games/factorio.nix
@ -896,6 +897,7 @@
./services/web-apps/calibre-web.nix ./services/web-apps/calibre-web.nix
./services/web-apps/convos.nix ./services/web-apps/convos.nix
./services/web-apps/cryptpad.nix ./services/web-apps/cryptpad.nix
./services/web-apps/discourse.nix
./services/web-apps/documize.nix ./services/web-apps/documize.nix
./services/web-apps/dokuwiki.nix ./services/web-apps/dokuwiki.nix
./services/web-apps/engelsystem.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

@ -200,12 +200,21 @@ in {
location = mkOption { location = mkOption {
type = types.oneOf [ types.path types.str ]; type = types.oneOf [ types.path types.str ];
description = '' description = ''
The location of the pipe, file, Librespot/Airplay/process binary, or a TCP address. For type <literal>pipe</literal> or <literal>file</literal>, the path to the pipe or file.
Use an empty string for alsa. 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 = 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"; default = "pipe";
description = '' description = ''
The type of input stream. The type of input stream.

View file

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

View file

@ -8,7 +8,13 @@
} }
], ],
"actions": { "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 = { backup = {
path = cfg.backup.path; path = cfg.backup.path;
keep_time = cfg.backup.keepTime; keep_time = cfg.backup.keepTime;
} // (optionalAttrs (cfg.backup.uploadOptions != {}) {
upload = cfg.backup.uploadOptions; upload = cfg.backup.uploadOptions;
}; });
gitlab_shell = { gitlab_shell = {
path = "${cfg.packages.gitlab-shell}"; path = "${cfg.packages.gitlab-shell}";
hooks_path = "${cfg.statePath}/shell/hooks"; hooks_path = "${cfg.statePath}/shell/hooks";

View file

@ -50,10 +50,15 @@ let
# List of components used in config # List of components used in config
extraComponents = filter useComponent availableComponents; extraComponents = filter useComponent availableComponents;
package = if (cfg.autoExtraComponents && cfg.config != null) testedPackage = if (cfg.autoExtraComponents && cfg.config != null)
then (cfg.package.override { inherit extraComponents; }) then (cfg.package.override { inherit extraComponents; })
else cfg.package; 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 # If you are changing this, please update the description in applyDefaultConfig
defaultConfig = { defaultConfig = {
homeassistant.time_zone = config.time.timeZone; homeassistant.time_zone = config.time.timeZone;
@ -63,7 +68,7 @@ let
}; };
in { in {
meta.maintainers = with maintainers; [ dotlambda ]; meta.maintainers = teams.home-assistant.members;
options.services.home-assistant = { options.services.home-assistant = {
enable = mkEnableOption "Home Assistant"; enable = mkEnableOption "Home Assistant";
@ -183,13 +188,9 @@ in {
}; };
package = mkOption { package = mkOption {
default = pkgs.home-assistant.overridePythonAttrs (oldAttrs: { default = pkgs.home-assistant;
doCheck = false;
});
defaultText = literalExample '' defaultText = literalExample ''
pkgs.home-assistant.overridePythonAttrs (oldAttrs: { pkgs.home-assistant
doCheck = false;
})
''; '';
type = types.package; type = types.package;
example = literalExample '' example = literalExample ''
@ -198,10 +199,12 @@ in {
} }
''; '';
description = '' 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. 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> 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. 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, ... }: { config, lib, pkgs, ... }:
with lib;
let let
cfg = config.services.packagekit; cfg = config.services.packagekit;
packagekitConf = '' inherit (lib)
[Daemon] mkEnableOption mkOption mkIf mkRemovedOptionModule types
DefaultBackend=${cfg.backend} listToAttrs recursiveUpdate;
KeepCache=false
'';
vendorConf = '' iniFmt = pkgs.formats.ini { };
[PackagesNotFound]
DefaultUrl=https://github.com/NixOS/nixpkgs confFiles = [
CodecUrl=https://github.com/NixOS/nixpkgs (iniFmt.generate "PackageKit.conf" (recursiveUpdate
HardwareUrl=https://github.com/NixOS/nixpkgs {
FontUrl=https://github.com/NixOS/nixpkgs Daemon = {
MimeUrl=https://github.com/NixOS/nixpkgs 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 in
{ {
imports = [
(mkRemovedOptionModule [ "services" "packagekit" "backend" ] "The only backend that doesn't blow up is `test_nop`.")
];
options = { options.services.packagekit = {
enable = mkEnableOption ''
services.packagekit = {
enable = mkEnableOption
''
PackageKit provides a cross-platform D-Bus abstraction layer for PackageKit provides a cross-platform D-Bus abstraction layer for
installing software. Software utilizing PackageKit can install installing software. Software utilizing PackageKit can install
software regardless of the package manager. software regardless of the package manager.
''; '';
# TODO: integrate with PolicyKit if the nix backend matures to the point settings = mkOption {
# where it will require elevated permissions type = iniFmt.type;
backend = mkOption { default = { };
type = types.enum [ "test_nop" ]; description = "Additional settings passed straight through to PackageKit.conf";
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.
'';
}; };
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 ]; systemd.packages = with pkgs; [ packagekit ];
environment.etc."PackageKit/PackageKit.conf".text = packagekitConf; environment.etc = listToAttrs (map
environment.etc."PackageKit/Vendor.conf".text = vendorConf; (e:
lib.nameValuePair "PackageKit/${e.name}" { source = e; })
confFiles);
}; };
} }

View file

@ -25,6 +25,7 @@ let
"artifactory" "artifactory"
"bind" "bind"
"bird" "bird"
"bitcoin"
"blackbox" "blackbox"
"collectd" "collectd"
"dnsmasq" "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 { securityType = mkOption {
type = types.str; type = types.str;
default = "user"; default = "user";
example = "share";
description = "Samba security type"; description = "Samba security type";
}; };

View file

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

View file

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

View file

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

View file

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

View file

@ -164,7 +164,7 @@ in
preStart = '' preStart = ''
install -m 0755 -o quagga -g quagga -d /run/quagga 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 else

View file

@ -39,11 +39,11 @@ in {
Type = "oneshot"; Type = "oneshot";
RemainAfterExit = true; RemainAfterExit = true;
ExecStart = map ( x: 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; ) cfg.interfaces;
ExecStop = map ( x: ExecStop = map ( x:
"${pkgs.iproute}/bin/rdma link delete rxe_${x}" "${pkgs.iproute2}/bin/rdma link delete rxe_${x}"
) cfg.interfaces; ) cfg.interfaces;
}; };
}; };

View file

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

View file

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

View file

@ -5,7 +5,7 @@ with lib;
let cfg = config.services.cloud-init; let cfg = config.services.cloud-init;
path = with pkgs; [ path = with pkgs; [
cloud-init cloud-init
iproute iproute2
nettools nettools
openssh openssh
shadow 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; default = pkgs.nginxStable;
defaultText = "pkgs.nginxStable"; defaultText = "pkgs.nginxStable";
type = types.package; type = types.package;
apply = p: p.override {
modules = p.modules ++ cfg.additionalModules;
};
description = " description = "
Nginx package to use. This defaults to the stable version. Note Nginx package to use. This defaults to the stable version. Note
that the nginx team recommends to use the mainline version which 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 { logError = mkOption {
default = "stderr"; default = "stderr";
type = types.str; type = types.str;

View file

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

View file

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

View file

@ -88,6 +88,7 @@ in
croc = handleTest ./croc.nix {}; croc = handleTest ./croc.nix {};
deluge = handleTest ./deluge.nix {}; deluge = handleTest ./deluge.nix {};
dhparams = handleTest ./dhparams.nix {}; dhparams = handleTest ./dhparams.nix {};
discourse = handleTest ./discourse.nix {};
dnscrypt-proxy2 = handleTestOn ["x86_64-linux"] ./dnscrypt-proxy2.nix {}; dnscrypt-proxy2 = handleTestOn ["x86_64-linux"] ./dnscrypt-proxy2.nix {};
dnscrypt-wrapper = handleTestOn ["x86_64-linux"] ./dnscrypt-wrapper {}; dnscrypt-wrapper = handleTestOn ["x86_64-linux"] ./dnscrypt-wrapper {};
doas = handleTest ./doas.nix {}; doas = handleTest ./doas.nix {};
@ -193,9 +194,7 @@ in
keepalived = handleTest ./keepalived.nix {}; keepalived = handleTest ./keepalived.nix {};
keepassxc = handleTest ./keepassxc.nix {}; keepassxc = handleTest ./keepassxc.nix {};
kerberos = handleTest ./kerberos/default.nix {}; kerberos = handleTest ./kerberos/default.nix {};
kernel-latest = handleTest ./kernel-latest.nix {}; kernel-generic = handleTest ./kernel-generic.nix {};
kernel-lts = handleTest ./kernel-lts.nix {};
kernel-testing = handleTest ./kernel-testing.nix {};
kernel-latest-ath-user-regd = handleTest ./kernel-latest-ath-user-regd.nix {}; kernel-latest-ath-user-regd = handleTest ./kernel-latest-ath-user-regd.nix {};
keycloak = discoverTests (import ./keycloak.nix); keycloak = discoverTests (import ./keycloak.nix);
keymap = handleTest ./keymap.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.succeed(
"docker images --format '{{.Repository}}' | grep -F '${examples.prefixedLayeredImage.imageName}'" "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 = { blackbox = {
exporterConfig = { exporterConfig = {
enable = true; enable = true;

View file

@ -34,6 +34,10 @@ in {
type = "tcp"; type = "tcp";
location = "127.0.0.1:${toString tcpStreamPort}"; 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. # Everyone on the "isp" machine will be able to add routes to the kernel.
security.wrappers.add-dhcpd-lease = { security.wrappers.add-dhcpd-lease = {
source = pkgs.writeShellScript "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"; capabilities = "cap_net_admin+ep";
}; };

View file

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

View file

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

View file

@ -2,13 +2,13 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "netease-music-tui"; pname = "netease-music-tui";
version = "v0.1.2"; version = "0.1.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "betta-cyber"; owner = "betta-cyber";
repo = "netease-music-tui"; repo = "netease-music-tui";
rev = version; rev = "v${version}";
sha256 = "0m5b3q493d32kxznm4apn56216l07b1c49km236i03mpfvdw7m1f"; sha256 = "09355a6d197ckayh9833y39dsarklgpgrq3raapiv25z59di30qq";
}; };
cargoPatches = [ ./cargo-lock.patch ]; cargoPatches = [ ./cargo-lock.patch ];
@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec {
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];
buildInputs = [ alsaLib openssl ]; buildInputs = [ alsaLib openssl ];
cargoSha256 = "1kfbnwy3lkbhz0ggxwr5n6qd1plipkr1ycr3z2r7c0amrzzbkc7l"; cargoSha256 = "0f06wc7h2zjipifvxsskxvihjf6mykrjrm7yk0zf98ra079bc9g9";
meta = with lib; { meta = with lib; {
homepage = "https://github.com/betta-cyber/netease-music-tui"; 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 { buildGoModule rec {
pname = "NoiseTorch"; pname = "NoiseTorch";
version = "0.9.0"; version = "0.10.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "lawl"; owner = "lawl";
@ -11,7 +11,10 @@ buildGoModule rec {
sha256 = "1a4g112h83m55pga8kq2a1wzxpycj59v4bygyjfyi1s09q1y97qg"; sha256 = "1a4g112h83m55pga8kq2a1wzxpycj59v4bygyjfyi1s09q1y97qg";
}; };
patches = [ ./version.patch ]; patches = [
# Get version from environment instead of git tags
./version.patch
];
vendorSha256 = null; vendorSha256 = null;

View file

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

View file

@ -1,6 +1,6 @@
import ./generic.nix (rec { import ./generic.nix (rec {
version = "27.1"; version = "27.2";
sha256 = "0h9f2wpmp6rb5rfwvqwv1ia1nw86h74p7hnz3vb3gjazj67i4k2a"; sha256 = "sha256-tKfMTnjmPzeGJOCRkhW5EK9bsqCvyBn60pgnLp9Awbk=";
patches = [ patches = [
./tramp-detect-wrapped-gvfsd.patch ./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 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 --- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el
@@ -122,6 +122,7 @@ @@ -125,5 +125,6 @@
(tramp-compat-funcall 'dbus-get-unique-name :system) ;; for some processes. Better we don't check.
(tramp-compat-funcall 'dbus-get-unique-name :session) (<= emacs-major-version 25)
(or (tramp-compat-process-running-p "gvfs-fuse-daemon") (tramp-compat-process-running-p "gvfs-fuse-daemon")
+ (tramp-compat-process-running-p ".gvfsd-fuse-wrapped") + (tramp-compat-process-running-p ".gvfsd-fuse-wrapped")
(tramp-compat-process-running-p "gvfsd-fuse")))) (tramp-compat-process-running-p "gvfsd-fuse"))))
"Non-nil when GVFS is available.") "Non-nil when GVFS is available.")

View file

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

View file

@ -18,13 +18,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "dbeaver-ce"; 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 { src = fetchFromGitHub {
owner = "dbeaver"; owner = "dbeaver";
repo = "dbeaver"; repo = "dbeaver";
rev = version; rev = version;
sha256 = "sha256-9l8604STqmdoUjD+EJCp4aDk4juKsPCmFnD/WYpajxo="; sha256 = "sha256-3EMSiEq1wdg4dxBU90RVVv0Hrf5dXPc1MPI0+WMk48k=";
}; };
fetchedMavenDeps = stdenv.mkDerivation { fetchedMavenDeps = stdenv.mkDerivation {

View file

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

View file

@ -1,6 +1,8 @@
{ lib { lib
, stdenv , stdenv
, fetchFromGitHub , fetchFromGitHub
, makeDesktopItem
, copyDesktopItems
, pkg-config , pkg-config
, gtk3 , gtk3
, alsaLib , alsaLib
@ -17,7 +19,7 @@ stdenv.mkDerivation rec {
sha256 = "sha256-Htk2NHgYVL622URx67BUtounAUopLTahaSqfAqd3+ZI="; sha256 = "sha256-Htk2NHgYVL622URx67BUtounAUopLTahaSqfAqd3+ZI=";
}; };
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ copyDesktopItems pkg-config ];
buildInputs = [ gtk3 alsaLib ]; buildInputs = [ gtk3 alsaLib ];
postPatch = '' postPatch = ''
@ -55,6 +57,29 @@ stdenv.mkDerivation rec {
runHook postInstall 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; { meta = with lib; {
homepage = "https://github.com/thomasokken/free42"; homepage = "https://github.com/thomasokken/free42";
description = "A software clone of HP-42S Calculator"; description = "A software clone of HP-42S Calculator";

View file

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

View file

@ -1,11 +1,27 @@
{ stdenv, lib, fetchurl, fetchpatch, pkg-config, freetype, harfbuzz, openjpeg { stdenv
, jbig2dec, libjpeg , darwin , lib
, fetchurl
, fetchpatch
, pkg-config
, freetype
, harfbuzz
, openjpeg
, jbig2dec
, libjpeg
, darwin
, gumbo , gumbo
, enableX11 ? true, libX11, libXext, libXi, libXrandr , enableX11 ? true
, enableCurl ? true, curl, openssl , libX11
, enableGL ? true, freeglut, libGLU , libXext
, libXi
, libXrandr
, enableCurl ? true
, curl
, openssl
, enableGL ? true
, freeglut
, libGLU
}: }:
let let
# OpenJPEG version is hardcoded in package source # OpenJPEG version is hardcoded in package source
@ -13,7 +29,8 @@ let
lib.versions.majorMinor (lib.getVersion openjpeg); lib.versions.majorMinor (lib.getVersion openjpeg);
in stdenv.mkDerivation rec { in
stdenv.mkDerivation rec {
version = "1.18.0"; version = "1.18.0";
pname = "mupdf"; pname = "mupdf";
@ -52,16 +69,20 @@ in stdenv.mkDerivation rec {
# Use shared libraries to decrease size # Use shared libraries to decrease size
buildFlags = [ "shared" ]; 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 ]; 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 enableX11 [ libX11 libXext libXi libXrandr ]
++ lib.optionals enableCurl [ curl openssl ] ++ lib.optionals enableCurl [ curl openssl ]
++ lib.optionals enableGL ( ++ lib.optionals enableGL (
if stdenv.isDarwin then if stdenv.isDarwin then
with darwin.apple_sdk.frameworks; [ GLUT OpenGL ] with darwin.apple_sdk.frameworks; [ GLUT OpenGL ]
else else
[ freeglut libGLU ]) [ freeglut libGLU ]
)
; ;
outputs = [ "bin" "dev" "out" "man" "doc" ]; outputs = [ "bin" "dev" "out" "man" "doc" ];
@ -85,6 +106,7 @@ in stdenv.mkDerivation rec {
EOF EOF
moveToOutput "bin" "$bin" moveToOutput "bin" "$bin"
'' + lib.optionalString enableX11 ''
ln -s "$bin/bin/mupdf-x11" "$bin/bin/mupdf" ln -s "$bin/bin/mupdf-x11" "$bin/bin/mupdf"
mkdir -p $bin/share/applications mkdir -p $bin/share/applications
cat > $bin/share/applications/mupdf.desktop <<EOF 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 , qtsvg
, qtxmlpatterns , qtxmlpatterns
, qttools , qttools
, lib, stdenv , lib
, stdenv
, installShellFiles
}: }:
mkDerivationWith stdenv.mkDerivation rec { mkDerivationWith stdenv.mkDerivation rec {
pname = "qcad"; pname = "qcad";
version = "3.26.0.1"; version = "3.26.1.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "qcad"; owner = "qcad";
repo = "qcad"; repo = "qcad";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-V+QlwM8BWmcarwZtqJfc+MYHOZgIH1W5R8m2EHhNJls="; sha256 = "sha256-OWAc7g8DiJR3z6dUF5D0Yo3wnRKd1Xe7D1eq15NRW5c=";
}; };
patches = [ patches = [
@ -65,13 +67,25 @@ mkDerivationWith stdenv.mkDerivation rec {
cp -r scripts $out/lib cp -r scripts $out/lib
cp -r plugins $out/lib/plugins cp -r plugins $out/lib/plugins
cp -r patterns $out/lib/patterns 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: # workaround to fix the library browser:
rm -r $out/lib/plugins/sqldrivers rm -r $out/lib/plugins/sqldrivers
ln -s -t $out/lib/plugins ${qtbase}/${qtbase.qtPluginPrefix}/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 install -Dm644 scripts/qcad_icon.svg $out/share/icons/hicolor/scalable/apps/qcad.svg
installManPage qcad.1
runHook postInstall runHook postInstall
''; '';
@ -89,6 +103,7 @@ mkDerivationWith stdenv.mkDerivation rec {
pkg-config pkg-config
qmake qmake
qttools qttools
installShellFiles
]; ];
meta = with lib; { meta = with lib; {

View file

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

View file

@ -48,6 +48,7 @@
, python37Packages , python37Packages
, stdenv , stdenv
, systemd , systemd
, xdg-utils
, zlib , zlib
}: }:
with lib; with lib;
@ -171,6 +172,7 @@ stdenv.mkDerivation rec {
wrapProgram $out/opt/appgate/appgate-driver --prefix PATH : ${lib.makeBinPath [ iproute2 networkmanager dnsmasq ]} 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/opt/appgate/linux/set_dns --set PYTHONPATH $PYTHONPATH
wrapProgram $out/bin/appgate --prefix PATH : ${xdg-utils}/bin
''; '';
meta = with lib; { meta = with lib; {
description = "Appgate SDP (Software Defined Perimeter) desktop client"; description = "Appgate SDP (Software Defined Perimeter) desktop client";

View file

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

View file

@ -16,14 +16,14 @@ let
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
pname = "palemoon"; pname = "palemoon";
version = "29.1.0"; version = "29.1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
githubBase = "repo.palemoon.org"; githubBase = "repo.palemoon.org";
owner = "MoonchildProductions"; owner = "MoonchildProductions";
repo = "Pale-Moon"; repo = "Pale-Moon";
rev = "${version}_Release"; rev = "${version}_Release";
sha256 = "02blhk3v7gpnicd7s5l5fpqvdvj2279g3rq8xyhcd4sw6qnms8m6"; sha256 = "1ppdmj816zwccb0l0mgpq14ckdwg785wmqz41wran0nl63fg6i1x";
fetchSubmodules = true; 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 { buildGoModule rec {
pname = "kube3d"; pname = "kube3d";
version = "4.4.0"; version = "4.4.1";
excludedPackages = "tools"; excludedPackages = "tools";
@ -10,7 +10,7 @@ buildGoModule rec {
owner = "rancher"; owner = "rancher";
repo = "k3d"; repo = "k3d";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-+9VtFHZ4ZZiX04u5YvPoQaelH9Q9oKMrbFHFFiNUxBA="; sha256 = "sha256-u9P+7qNomamd4BkqWBxA6rDom0hF6t10QfDTjqOMGeE=";
}; };
vendorSha256 = null; vendorSha256 = null;

View file

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

View file

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

View file

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

View file

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

View file

@ -29,11 +29,11 @@
assert pulseaudioSupport -> libpulseaudio != null; assert pulseaudioSupport -> libpulseaudio != null;
let let
version = "5.5.7938.0228"; version = "5.6.13632.0328";
srcs = { srcs = {
x86_64-linux = fetchurl { x86_64-linux = fetchurl {
url = "https://zoom.us/client/${version}/zoom_x86_64.pkg.tar.xz"; 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 let
pname = "pcloud"; pname = "pcloud";
version = "1.8.9"; version = "1.9.1";
code = "XZXB3fXZgXyQbnTkTm5XOJH9i6NsKX9lL21V";
name = "${pname}-${version}"; name = "${pname}-${version}";
# Archive link's code thanks to: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=pcloud-drive # Archive link's code thanks to: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=pcloud-drive
src = fetchzip { src = fetchzip {
url = "https://api.pcloud.com/getpubzip?code=XZjfKzXZ6h3uGRFId48VRNHHkuqajhRvMlPV&filename=${name}.zip"; url = "https://api.pcloud.com/getpubzip?code=${code}&filename=${name}.zip";
hash = "sha256:1bwdwfwgy3wwzlggi8qhf5q2bq2kqiqi3mgvsr9w0mxyaxxv13r8"; hash = "sha256-vUrz4thp9tcU9T8d52DJUAbt6Jnv+E3pbUytzMR8d/E=";
}; };
appimageContents = appimageTools.extractType2 { appimageContents = appimageTools.extractType2 {

View file

@ -74,7 +74,7 @@ in stdenv.mkDerivation {
install -Dm644 ../image/wsicon.svg $out/share/icons/wireshark.svg install -Dm644 ../image/wsicon.svg $out/share/icons/wireshark.svg
mkdir $dev/include/{epan/{wmem,ftypes,dfilter},wsutil,wiretap} -pv 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 ../ws_*.h $dev/include
cp ../epan/*.h $dev/include/epan/ cp ../epan/*.h $dev/include/epan/
cp ../epan/wmem/*.h $dev/include/epan/wmem/ 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 { buildGoModule rec {
pname = "rclone"; pname = "rclone";
@ -17,9 +20,11 @@ buildGoModule rec {
outputs = [ "out" "man" ]; 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 = postInstall =
let let
@ -34,6 +39,8 @@ buildGoModule rec {
${rcloneBin}/bin/rclone genautocomplete $shell rclone.$shell ${rcloneBin}/bin/rclone genautocomplete $shell rclone.$shell
installShellCompletion rclone.$shell installShellCompletion rclone.$shell
done done
'' + lib.optionalString (enableCmount && !stdenv.isDarwin) ''
wrapProgram $out/bin/rclone --prefix LD_LIBRARY_PATH : "${fuse}/lib"
''; '';
meta = with lib; { meta = with lib; {

View file

@ -1,44 +1,52 @@
{ lib { lib
, buildPythonApplication , python3
, fetchPypi , fetchpatch
, makeDesktopItem , makeDesktopItem
, makePythonPath
, dateutil
, matplotlib
, numpy
, pyenchant
, pyqt5
, pytest
, python
, qtsvg , qtsvg
, runtimeShell
, wrapQtAppsHook , wrapQtAppsHook
}: }:
buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "pyspread"; pname = "pyspread";
version = "1.99.5"; version = "1.99.6";
src = fetchPypi { src = python3.pkgs.fetchPypi {
inherit pname version; 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 dateutil
markdown2
matplotlib matplotlib
numpy numpy
pyenchant pyenchant
pyqt5 pyqt5
]; setuptools
nativeBuildInputs = [ wrapQtAppsHook ];
buildInputs = pythonLibs ++ [
qtsvg
]; ];
doCheck = false; # it fails miserably with a core dump doCheck = false; # it fails miserably with a core dump
pythonImportsCheck = [ "pyspread" ];
desktopItem = makeDesktopItem rec { desktopItem = makeDesktopItem rec {
name = pname; name = pname;
exec = name; exec = name;
@ -50,20 +58,11 @@ buildPythonApplication rec {
}; };
postInstall = '' postInstall = ''
runHook preInstall install -m 444 -Dt $out/share/applications ${desktopItem}/share/applications/*
install -D $out/share/applications
install -m 644 $desktopItem/share/applications/* $out/share/applications
runHook postInstall
''; '';
fixupPhase = '' preFixup = ''
runHook preFixup makeWrapperArgs+=("''${qtWrapperArgs[@]}")
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
''; '';
meta = with lib; { meta = with lib; {

View file

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

View file

@ -1,10 +1,8 @@
{ lib, stdenv, fetchFromGitHub, qt4, qmake4Hook, libpulseaudio }: { lib, stdenv, fetchFromGitHub, cmake, libpulseaudio, libX11 }:
let
version = "1.1.9"; stdenv.mkDerivation rec {
in
stdenv.mkDerivation {
pname = "multimon-ng"; pname = "multimon-ng";
inherit version; version = "1.1.9";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "EliasOenal"; owner = "EliasOenal";
@ -13,16 +11,9 @@ stdenv.mkDerivation {
sha256 = "01716cfhxfzsab9zjply9giaa4nn4b7rm3p3vizrwi7n253yiwm2"; sha256 = "01716cfhxfzsab9zjply9giaa4nn4b7rm3p3vizrwi7n253yiwm2";
}; };
buildInputs = [ qt4 libpulseaudio ]; buildInputs = [ libpulseaudio libX11 ];
nativeBuildInputs = [ qmake4Hook ]; nativeBuildInputs = [ cmake ];
qmakeFlags = [ "multimon-ng.pro" ];
installPhase = ''
mkdir -p $out/bin
cp multimon-ng $out/bin
'';
meta = with lib; { meta = with lib; {
description = "Multimon is a digital baseband audio protocol decoder"; description = "Multimon is a digital baseband audio protocol decoder";
@ -39,6 +30,6 @@ stdenv.mkDerivation {
homepage = "https://github.com/EliasOenal/multimon-ng"; homepage = "https://github.com/EliasOenal/multimon-ng";
license = licenses.gpl2Only; license = licenses.gpl2Only;
platforms = platforms.linux; 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 }: { lib, stdenv, unzip, fetchurl, electron_6, makeWrapper, geogebra }:
let let
pname = "geogebra"; pname = "geogebra";
version = "6-0-620-0"; version = "6-0-631-0";
srcIcon = geogebra.srcIcon; srcIcon = geogebra.srcIcon;
desktopItem = geogebra.desktopItem; desktopItem = geogebra.desktopItem;
@ -18,9 +18,9 @@ let
src = fetchurl { src = fetchurl {
urls = [ urls = [
"https://download.geogebra.org/installers/6.0/GeoGebra-Linux64-Portable-${version}.zip" "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; dontConfigure = true;
@ -53,9 +53,9 @@ let
src = fetchurl { src = fetchurl {
urls = [ urls = [
"https://download.geogebra.org/installers/6.0/GeoGebra-Classic-6-MacOS-Portable-${version}.zip" "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; dontUnpack = true;

View file

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

View file

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

View file

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

View file

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

View file

@ -1,13 +1,13 @@
{ {
"version": "13.9.4", "version": "13.10.2",
"repo_hash": "0gwxjmph3ac5v0h5zz8664412yq09cka5p4amdbxk7hna24igksz", "repo_hash": "1q3qnfzhikbbsmzzbldwn6xvsyxr1jgv5lj7mgcji11j8qv1a625",
"owner": "gitlab-org", "owner": "gitlab-org",
"repo": "gitlab", "repo": "gitlab",
"rev": "v13.9.4-ee", "rev": "v13.10.2-ee",
"passthru": { "passthru": {
"GITALY_SERVER_VERSION": "13.9.4", "GITALY_SERVER_VERSION": "13.10.2",
"GITLAB_PAGES_VERSION": "1.35.0", "GITLAB_PAGES_VERSION": "1.36.0",
"GITLAB_SHELL_VERSION": "13.17.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 { stdenv, lib, fetchurl, fetchFromGitLab, bundlerEnv
, ruby, tzdata, git, nettools, nixosTests, nodejs, openssl , ruby, tzdata, git, nettools, nixosTests, nodejs, openssl
, gitlabEnterprise ? false, callPackage, yarn , gitlabEnterprise ? false, callPackage, yarn
, fixup_yarn_lock, replace , fixup_yarn_lock, replace, file
}: }:
let let
@ -32,6 +32,10 @@ let
openssl = x.openssl // { openssl = x.openssl // {
buildInputs = [ openssl ]; buildInputs = [ openssl ];
}; };
ruby-magic-static = x.ruby-magic-static // {
buildInputs = [ file ];
buildFlags = [ "--enable-system-libraries" ];
};
}; };
groups = [ groups = [
"default" "unicorn" "ed25519" "metrics" "development" "puma" "test" "kerberos" "default" "unicorn" "ed25519" "metrics" "development" "puma" "test" "kerberos"

View file

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

View file

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

View file

@ -4,18 +4,6 @@
, libgit2, openssl, zlib, pcre, http-parser }: , libgit2, openssl, zlib, pcre, http-parser }:
let 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 { rubyEnv = bundlerEnv rec {
name = "gitaly-env"; name = "gitaly-env";
inherit ruby; inherit ruby;
@ -33,17 +21,17 @@ let
}; };
}; };
in buildGoModule rec { in buildGoModule rec {
version = "13.9.4"; version = "13.10.2";
pname = "gitaly"; pname = "gitaly";
src = fetchFromGitLab { src = fetchFromGitLab {
owner = "gitlab-org"; owner = "gitlab-org";
repo = "gitaly"; repo = "gitaly";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-6ocP4SMafvLI2jfvcB8jk1AemAI/TiBQ1iaVxK7I54A="; sha256 = "sha256-5CjZs5tpEEsgQGBFa8BeZ7SDhIeGKqAHWwbR8hSoCPs=";
}; };
vendorSha256 = "10ssx0dvbzg70vr2sgnhzijnjxfw6533wdjxwakj62rpfayklp51"; vendorSha256 = "sha256-8AopoiLmg6kfvYbZDOfFWBy1o5tbnxsKxSBX20OasIE=";
passthru = { passthru = {
inherit rubyEnv; inherit rubyEnv;
@ -51,7 +39,7 @@ in buildGoModule rec {
buildFlags = [ "-tags=static,system_libgit2" ]; buildFlags = [ "-tags=static,system_libgit2" ];
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];
buildInputs = [ rubyEnv.wrappedRuby libgit openssl zlib pcre http-parser ]; buildInputs = [ rubyEnv.wrappedRuby libgit2 openssl zlib pcre http-parser ];
doCheck = false; doCheck = false;
postInstall = '' postInstall = ''

View file

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

View file

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

View file

@ -17,7 +17,7 @@ gem 'default_value_for', '~> 3.4.0'
# Supported DBs # Supported DBs
gem 'pg', '~> 1.1' gem 'pg', '~> 1.1'
gem 'rugged', '~> 1.0.1' gem 'rugged', '~> 1.1'
gem 'grape-path-helpers', '~> 1.6.1' gem 'grape-path-helpers', '~> 1.6.1'
gem 'faraday', '~> 1.0' gem 'faraday', '~> 1.0'
@ -25,13 +25,13 @@ gem 'marginalia', '~> 1.10.0'
# Authentication libraries # Authentication libraries
gem 'devise', '~> 4.7.2' 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', '>= 3.1.14'
gem 'bcrypt', '3.1.12'
gem 'doorkeeper', '~> 5.5.0.rc2' gem 'doorkeeper', '~> 5.5.0.rc2'
gem 'doorkeeper-openid_connect', '~> 1.7.5' gem 'doorkeeper-openid_connect', '~> 1.7.5'
gem 'omniauth', '~> 1.8' gem 'omniauth', '~> 1.8'
gem 'omniauth-auth0', '~> 2.0.0' 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-cas3', '~> 1.1.4'
gem 'omniauth-facebook', '~> 4.0.0' gem 'omniauth-facebook', '~> 4.0.0'
gem 'omniauth-github', '~> 1.4' gem 'omniauth-github', '~> 1.4'
@ -73,6 +73,9 @@ gem 'acme-client', '~> 2.0', '>= 2.0.6'
# Browser detection # Browser detection
gem 'browser', '~> 4.2' gem 'browser', '~> 4.2'
# OS detection for usage ping
gem 'ohai', '~> 16.10'
# GPG # GPG
gem 'gpgme', '~> 2.0.19' gem 'gpgme', '~> 2.0.19'
@ -88,7 +91,7 @@ gem 'grape-entity', '~> 0.7.1'
gem 'rack-cors', '~> 1.0.6', require: 'rack/cors' gem 'rack-cors', '~> 1.0.6', require: 'rack/cors'
# GraphQL API # 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 # 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: # 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 # https://gitlab.com/gitlab-org/gitlab/issues/31747
@ -112,16 +115,16 @@ gem 'carrierwave', '~> 1.3'
gem 'mini_magick', '~> 4.10.1' gem 'mini_magick', '~> 4.10.1'
# for backups # 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. # Locked until fog-google resolves https://github.com/fog/fog-google/issues/421.
# Also see config/initializers/fog_core_patch.rb. # Also see config/initializers/fog_core_patch.rb.
gem 'fog-core', '= 2.1.0' 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-local', '~> 0.6'
gem 'fog-openstack', '~> 1.0' gem 'fog-openstack', '~> 1.0'
gem 'fog-rackspace', '~> 0.1.1' gem 'fog-rackspace', '~> 0.1.1'
gem 'fog-aliyun', '~> 0.3' 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 # for Google storage
gem 'google-api-client', '~> 0.33' gem 'google-api-client', '~> 0.33'
@ -195,7 +198,7 @@ gem 'acts-as-taggable-on', '~> 7.0'
gem 'sidekiq', '~> 5.2.7' gem 'sidekiq', '~> 5.2.7'
gem 'sidekiq-cron', '~> 1.0' gem 'sidekiq-cron', '~> 1.0'
gem 'redis-namespace', '~> 1.7.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 # Cron Parser
gem 'fugit', '~> 1.2.1' gem 'fugit', '~> 1.2.1'
@ -233,10 +236,7 @@ gem 'connection_pool', '~> 2.0'
gem 'redis-rails', '~> 5.0.2' gem 'redis-rails', '~> 5.0.2'
# Discord integration # Discord integration
gem 'discordrb-webhooks-blackst0ne', '~> 3.3', require: false gem 'discordrb-webhooks', '~> 3.4', require: false
# HipChat integration
gem 'hipchat', '~> 1.5.0'
# Jira integration # Jira integration
gem 'jira-ruby', '~> 2.1.4' gem 'jira-ruby', '~> 2.1.4'
@ -274,7 +274,10 @@ gem 'licensee', '~> 9.14.1'
gem 'charlock_holmes', '~> 0.7.7' gem 'charlock_holmes', '~> 0.7.7'
# Detect mime content type from content # 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 # Faster blank
gem 'fast_blank' gem 'fast_blank'
@ -309,7 +312,7 @@ gem 'pg_query', '~> 1.3.0'
gem 'premailer-rails', '~> 1.10.3' gem 'premailer-rails', '~> 1.10.3'
# LabKit: Tracing and Correlation # 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 # 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 # because of https://gitlab.com/gitlab-org/gitlab/-/issues/321900
gem 'thrift', '>= 0.14.0' 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_i18n_rails_js', '~> 1.3'
gem 'gettext', '~> 3.3', require: false, group: :development gem 'gettext', '~> 3.3', require: false, group: :development
gem 'batch-loader', '~> 1.4.0' gem 'batch-loader', '~> 2.0.1'
# Perf bar # Perf bar
gem 'peek', '~> 1.1' gem 'peek', '~> 1.1'
@ -341,7 +344,6 @@ end
group :development do group :development do
gem 'brakeman', '~> 4.2', require: false gem 'brakeman', '~> 4.2', require: false
gem 'danger', '~> 8.0.6', require: false
gem 'lefthook', '~> 0.7', require: false gem 'lefthook', '~> 0.7', require: false
gem 'letter_opener_web', '~> 1.3.4' gem 'letter_opener_web', '~> 1.3.4'
@ -375,9 +377,8 @@ group :development, :test do
gem 'spring', '~> 2.1.0' gem 'spring', '~> 2.1.0'
gem 'spring-commands-rspec', '~> 1.0.4' 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 'haml_lint', '~> 0.36.0', require: false
gem 'bundler-audit', '~> 0.7.0.1', 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 gem 'rblineprof', '~> 0.3.6', platform: :mri, require: false
end 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 group :development, :test, :coverage do
gem 'simplecov', '~> 0.18.5', require: false gem 'simplecov', '~> 0.18.5', require: false
gem 'simplecov-cobertura', '~> 1.3.1', require: false gem 'simplecov-cobertura', '~> 1.3.1', require: false
@ -433,7 +439,7 @@ end
gem 'octokit', '~> 4.15' gem 'octokit', '~> 4.15'
# https://gitlab.com/gitlab-org/gitlab/issues/207207 # 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 'email_reply_trimmer', '~> 0.1'
gem 'html2text' gem 'html2text'
@ -482,7 +488,7 @@ gem 'flipper', '~> 0.17.1'
gem 'flipper-active_record', '~> 0.17.1' gem 'flipper-active_record', '~> 0.17.1'
gem 'flipper-active_support_cache_store', '~> 0.17.1' gem 'flipper-active_support_cache_store', '~> 0.17.1'
gem 'unleash', '~> 0.1.5' gem 'unleash', '~> 0.1.5'
gem 'gitlab-experiment', '~> 0.4.9' gem 'gitlab-experiment', '~> 0.5.0'
# Structured logging # Structured logging
gem 'lograge', '~> 0.5' gem 'lograge', '~> 0.5'

View file

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

View file

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

View file

@ -68,7 +68,10 @@ class GitLabRepo:
version = self.rev2version(rev) version = self.rev2version(rev)
passthru = {v: self.get_file(v, rev).strip() for v in ['GITALY_SERVER_VERSION', 'GITLAB_PAGES_VERSION', 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), return dict(version=self.rev2version(rev),
repo_hash=self.get_git_hash(rev), repo_hash=self.get_git_hash(rev),
owner=self.owner, owner=self.owner,
@ -181,9 +184,6 @@ def update_gitlab_shell():
gitlab_shell_version = data['passthru']['GITLAB_SHELL_VERSION'] gitlab_shell_version = data['passthru']['GITLAB_SHELL_VERSION']
_call_nix_update('gitlab-shell', 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') @cli.command('update-gitlab-workhorse')
def update_gitlab_workhorse(): def update_gitlab_workhorse():
@ -192,8 +192,6 @@ def update_gitlab_workhorse():
gitlab_workhorse_version = data['passthru']['GITLAB_WORKHORSE_VERSION'] gitlab_workhorse_version = data['passthru']['GITLAB_WORKHORSE_VERSION']
_call_nix_update('gitlab-workhorse', 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') @cli.command('update-all')
@click.option('--rev', default='latest', help='The rev to use (vX.Y.Z-ee), or \'latest\'') @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 continue
- ui.write('<tag revision="%d" node="%s" name="%s"/>\n' - ui.write('<tag revision="%d" node="%s" name="%s"/>\n'
+ ui.write(b'<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): def _branches(ui, repo):
@@ -104,136 +107,148 @@ def _branches(ui, repo): @@ -104,136 +107,148 @@ def _branches(ui, repo):
@ -59,7 +59,7 @@
if lookup(r, n) in branchheads(t): if lookup(r, n) in branchheads(t):
- ui.write('<branch revision="%d" node="%s" name="%s"/>\n' - ui.write('<branch revision="%d" node="%s" name="%s"/>\n'
+ ui.write(b'<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): def _manifest(ui, repo, path, rev):
ctx = _changectx(repo, rev) ctx = _changectx(repo, rev)

View file

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

View file

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

View file

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

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