Merge branch 'master' into staging-next

Fix eval of nixos/nginx
This commit is contained in:
Jan Tojnar 2020-03-29 00:35:29 +01:00
commit fa4e1bbe07
No known key found for this signature in database
GPG Key ID: 7FAB2A15F7A607A4
22 changed files with 785 additions and 318 deletions

View File

@ -697,6 +697,66 @@ auth required pam_succeed_if.so uid >= 1000 quiet
</para>
</warning>
</listitem>
<listitem>
<para>
<package>Hydra</package> has gained a massive performance improvement due to
<link xlink:href="https://github.com/NixOS/hydra/pull/710">some database schema
changes</link> by adding several IDs and better indexing. However, it's necessary
to upgrade Hydra in multiple steps:
<itemizedlist>
<listitem>
<para>
At first, an older version of Hydra needs to be deployed which adds those
(nullable) columns. When having set <link linkend="opt-system.stateVersion">stateVersion
</link> to a value older than <literal>20.03</literal>, this package will be selected
by default from the module when upgrading. Otherwise, the package can be deployed using
the following config:
<programlisting>{ pkgs, ... }: {
<link linkend="opt-services.hydra.package">services.hydra.package</link> = pkgs.hydra-migration;
}</programlisting>
</para>
</listitem>
<listitem>
<para>
Automatically fill the newly added ID columns on the server by running the following
command:
<screen>
<prompt>$ </prompt>hydra-backfill-ids
</screen>
<warning>
<para>Please note that this process can take a while depending on your database-size!</para>
</warning>
</para>
</listitem>
<listitem>
<para>
Deploy a newer version of Hydra to activate the DB optimizations. You can choose from
either <package>hydra-unstable</package> (latest <literal>master</literal> compiled
against <package>nixUnstable</package>) and <package>hydra-flakes</package> (latest
version with flake-support).
<warning>
<para>
If your <link linkend="opt-system.stateVersion">stateVersion</link> is set to
<literal>20.03</literal> or greater, <package>hydra-unstable</package> will be used
automatically! This will break your setup if you didn't run the migration.
</para>
</warning>
Please note that Hydra is currently not available with <package>nixStable</package>
as this doesn't compile anymore.
</para>
</listitem>
</itemizedlist>
<warning>
<para>
<package>pkgs.hydra</package> has been removed to ensure a graceful database-migration
using the dedicated package-attributes. If you still have <package>pkgs.hydra</package>
defined in e.g. an overlay, an assertion error will be thrown. To circumvent this,
you need to set <xref linkend="opt-services.hydra.package" /> to <package>pkgs.hydra</package>
explicitly and make sure you know what you're doing!
</para>
</warning>
</para>
</listitem>
</itemizedlist>
</section>

View File

@ -37,6 +37,8 @@ let
haveLocalDB = cfg.dbi == localDB;
inherit (config.system) stateVersion;
in
{
@ -63,8 +65,7 @@ in
};
package = mkOption {
type = types.path;
default = pkgs.hydra;
type = types.package;
defaultText = "pkgs.hydra";
description = "The Hydra package.";
};
@ -194,6 +195,34 @@ in
config = mkIf cfg.enable {
warnings = optional (cfg.package.migration or false) ''
You're currently deploying an older version of Hydra which is needed to
make some required database changes[1]. As soon as this is done, it's recommended
to run `hydra-backfill-ids` and set `services.hydra.package` to either `pkgs.hydra-unstable`
or `pkgs.hydra-flakes` after that.
[1] https://github.com/NixOS/hydra/pull/711
'';
services.hydra.package = with pkgs;
mkDefault (
if pkgs ? hydra
then throw ''
The Hydra package doesn't exist anymore in `nixpkgs`! It probably exists
due to an overlay. To upgrade Hydra, you need to take two steps as some
bigger changes in the database schema were implemented recently[1]. You first
need to deploy `pkgs.hydra-migration`, run `hydra-backfill-ids` on the server
and then deploy either `pkgs.hydra-unstable` or `pkgs.hydra-flakes`.
If you want to use `pkgs.hydra` from your overlay, please set `services.hydra.package`
explicitly to `pkgs.hydra` and make sure you know what you're doing.
[1] https://github.com/NixOS/hydra/pull/711
''
else if versionOlder stateVersion "20.03" then hydra-migration
else hydra-unstable
);
users.groups.hydra = {
gid = config.ids.gids.hydra;
};

View File

@ -77,6 +77,13 @@ in {
'';
};
package = mkOption {
type = types.path;
description = "The connman package / build flavor";
default = connman;
example = literalExample "pkgs.connmanFull";
};
};
};
@ -89,11 +96,13 @@ in {
assertion = !config.networking.useDHCP;
message = "You can not use services.connman with networking.useDHCP";
}{
# TODO: connman seemingly can be used along network manager and
# connmanFull supports this - so this should be worked out somehow
assertion = !config.networking.networkmanager.enable;
message = "You can not use services.connman with networking.networkmanager";
}];
environment.systemPackages = [ connman ];
environment.systemPackages = [ cfg.package ];
systemd.services.connman = {
description = "Connection service";
@ -105,7 +114,7 @@ in {
BusName = "net.connman";
Restart = "on-failure";
ExecStart = toString ([
"${pkgs.connman}/sbin/connmand"
"${cfg.package}/sbin/connmand"
"--config=${configFile}"
"--nodaemon"
] ++ optional enableIwd "--wifi=iwd_agent"
@ -122,7 +131,7 @@ in {
serviceConfig = {
Type = "dbus";
BusName = "net.connman.vpn";
ExecStart = "${pkgs.connman}/sbin/connman-vpnd -n";
ExecStart = "${cfg.package}/sbin/connman-vpnd -n";
StandardOutput = "null";
};
};
@ -132,7 +141,7 @@ in {
serviceConfig = {
Name = "net.connman.vpn";
before = [ "connman" ];
ExecStart = "${pkgs.connman}/sbin/connman-vpnd -n";
ExecStart = "${cfg.package}/sbin/connman-vpnd -n";
User = "root";
SystemdService = "connman-vpn.service";
};

View File

@ -176,7 +176,7 @@ let
${optionalString (cfg.httpConfig != "") ''
http {
${common.httpConfig}
${commonHttpConfig}
${cfg.httpConfig}
}''}

View File

@ -121,12 +121,16 @@ in
handbrake = handleTestOn ["x86_64-linux"] ./handbrake.nix {};
haproxy = handleTest ./haproxy.nix {};
hardened = handleTest ./hardened.nix {};
hibernate = handleTest ./hibernate.nix {};
# 9pnet_virtio used to mount /nix partition doesn't support
# hibernation. This test happens to work on x86_64-linux but
# not on other platforms.
hibernate = handleTestOn ["x86_64-linux"] ./hibernate.nix {};
hitch = handleTest ./hitch {};
hocker-fetchdocker = handleTest ./hocker-fetchdocker {};
home-assistant = handleTest ./home-assistant.nix {};
hound = handleTest ./hound.nix {};
hydra = handleTest ./hydra {};
hydra-db-migration = handleTest ./hydra/db-migration.nix {};
i3wm = handleTest ./i3wm.nix {};
icingaweb2 = handleTest ./icingaweb2.nix {};
iftop = handleTest ./iftop.nix {};

View File

@ -0,0 +1,47 @@
{ system, ... }:
{
baseConfig = { pkgs, ... }: let
trivialJob = pkgs.writeTextDir "trivial.nix" ''
{ trivial = builtins.derivation {
name = "trivial";
system = "${system}";
builder = "/bin/sh";
allowSubstitutes = false;
preferLocalBuild = true;
args = ["-c" "echo success > $out; exit 0"];
};
}
'';
createTrivialProject = pkgs.stdenv.mkDerivation {
name = "create-trivial-project";
dontUnpack = true;
buildInputs = [ pkgs.makeWrapper ];
installPhase = "install -m755 -D ${./create-trivial-project.sh} $out/bin/create-trivial-project.sh";
postFixup = ''
wrapProgram "$out/bin/create-trivial-project.sh" --prefix PATH ":" ${pkgs.stdenv.lib.makeBinPath [ pkgs.curl ]} --set EXPR_PATH ${trivialJob}
'';
};
in {
virtualisation.memorySize = 2048;
time.timeZone = "UTC";
environment.systemPackages = [ createTrivialProject pkgs.jq ];
services.hydra = {
enable = true;
# Hydra needs those settings to start up, so we add something not harmfull.
hydraURL = "example.com";
notificationSender = "example@example.com";
extraConfig = ''
email_notification = 1
'';
};
services.postfix.enable = true;
nix = {
buildMachines = [{
hostName = "localhost";
systems = [ system ];
}];
binaryCaches = [];
};
};
}

View File

@ -0,0 +1,86 @@
{ system ? builtins.currentSystem, ... }:
let inherit (import ./common.nix { inherit system; }) baseConfig; in
{ mig = import ../make-test-python.nix ({ pkgs, lib, ... }: {
name = "hydra-db-migration";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ ma27 ];
};
nodes = {
original = { pkgs, lib, ... }: {
imports = [ baseConfig ];
# An older version of Hydra before the db change
# for testing purposes.
services.hydra.package = pkgs.hydra-migration.overrideAttrs (old: {
inherit (old) pname;
version = "2020-02-06";
src = pkgs.fetchFromGitHub {
owner = "NixOS";
repo = "hydra";
rev = "2b4f14963b16b21ebfcd6b6bfa7832842e9b2afc";
sha256 = "16q0cffcsfx5pqd91n9k19850c1nbh4vvbd9h8yi64ihn7v8bick";
};
});
};
migration_phase1 = { pkgs, lib, ... }: {
imports = [ baseConfig ];
services.hydra.package = pkgs.hydra-migration;
};
finished = { pkgs, lib, ... }: {
imports = [ baseConfig ];
services.hydra.package = pkgs.hydra-unstable;
};
};
testScript = { nodes, ... }: let
next = nodes.migration_phase1.config.system.build.toplevel;
finished = nodes.finished.config.system.build.toplevel;
in ''
original.start()
original.wait_for_unit("multi-user.target")
original.wait_for_unit("postgresql.service")
original.wait_for_unit("hydra-init.service")
original.require_unit_state("hydra-queue-runner.service")
original.require_unit_state("hydra-evaluator.service")
original.require_unit_state("hydra-notify.service")
original.succeed("hydra-create-user admin --role admin --password admin")
original.wait_for_open_port(3000)
original.succeed("create-trivial-project.sh")
original.wait_until_succeeds(
'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq'
)
out = original.succeed("su -l postgres -c 'psql -d hydra <<< \"\\d+ jobs\" -A'")
assert "jobset_id" not in out
original.succeed(
"${next}/bin/switch-to-configuration test >&2"
)
original.wait_for_unit("hydra-init.service")
out = original.succeed("su -l postgres -c 'psql -d hydra <<< \"\\d+ jobs\" -A'")
assert "jobset_id|integer|||" in out
original.succeed("hydra-backfill-ids")
original.succeed(
"${finished}/bin/switch-to-configuration test >&2"
)
original.wait_for_unit("hydra-init.service")
out = original.succeed("su -l postgres -c 'psql -d hydra <<< \"\\d+ jobs\" -A'")
assert "jobset_id|integer||not null|" in out
original.wait_until_succeeds(
'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq'
)
original.shutdown()
'';
});
}

View File

@ -3,102 +3,57 @@
, pkgs ? import ../../.. { inherit system config; }
}:
with import ../../lib/testing-python.nix { inherit system pkgs; };
with pkgs.lib;
let
trivialJob = pkgs.writeTextDir "trivial.nix" ''
{ trivial = builtins.derivation {
name = "trivial";
system = "${system}";
builder = "/bin/sh";
allowSubstitutes = false;
preferLocalBuild = true;
args = ["-c" "echo success > $out; exit 0"];
};
}
'';
inherit (import ./common.nix { inherit system; }) baseConfig;
createTrivialProject = pkgs.stdenv.mkDerivation {
name = "create-trivial-project";
dontUnpack = true;
buildInputs = [ pkgs.makeWrapper ];
installPhase = "install -m755 -D ${./create-trivial-project.sh} $out/bin/create-trivial-project.sh";
postFixup = ''
wrapProgram "$out/bin/create-trivial-project.sh" --prefix PATH ":" ${pkgs.stdenv.lib.makeBinPath [ pkgs.curl ]} --set EXPR_PATH ${trivialJob}
hydraPkgs = {
inherit (pkgs) hydra-migration hydra-unstable hydra-flakes;
};
makeHydraTest = with pkgs.lib; name: package: makeTest {
name = "hydra-${name}";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ pstn lewo ma27 ];
};
machine = { pkgs, lib, ... }: {
imports = [ baseConfig ];
services.hydra = { inherit package; };
};
testScript = ''
# let the system boot up
machine.wait_for_unit("multi-user.target")
# test whether the database is running
machine.wait_for_unit("postgresql.service")
# test whether the actual hydra daemons are running
machine.wait_for_unit("hydra-init.service")
machine.require_unit_state("hydra-queue-runner.service")
machine.require_unit_state("hydra-evaluator.service")
machine.require_unit_state("hydra-notify.service")
machine.succeed("hydra-create-user admin --role admin --password admin")
# create a project with a trivial job
machine.wait_for_open_port(3000)
# make sure the build as been successfully built
machine.succeed("create-trivial-project.sh")
machine.wait_until_succeeds(
'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq'
)
machine.wait_until_succeeds(
'journalctl -eu hydra-notify.service -o cat | grep -q "sending mail notification to hydra@localhost"'
)
'';
};
callTest = f: f { inherit system pkgs; };
hydraPkgs = {
inherit (pkgs) nixStable nixUnstable nixFlakes;
};
tests = pkgs.lib.flip pkgs.lib.mapAttrs hydraPkgs (name: nix:
callTest (import ../make-test-python.nix ({ pkgs, lib, ... }:
{
name = "hydra-with-${name}";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ pstn lewo ma27 ];
};
machine = { pkgs, ... }:
{
virtualisation.memorySize = 1024;
time.timeZone = "UTC";
environment.systemPackages = [ createTrivialProject pkgs.jq ];
services.hydra = {
enable = true;
#Hydra needs those settings to start up, so we add something not harmfull.
hydraURL = "example.com";
notificationSender = "example@example.com";
package = pkgs.hydra.override { inherit nix; };
extraConfig = ''
email_notification = 1
'';
};
services.postfix.enable = true;
nix = {
buildMachines = [{
hostName = "localhost";
systems = [ system ];
}];
binaryCaches = [];
};
};
testScript = ''
# let the system boot up
machine.wait_for_unit("multi-user.target")
# test whether the database is running
machine.wait_for_unit("postgresql.service")
# test whether the actual hydra daemons are running
machine.wait_for_unit("hydra-init.service")
machine.require_unit_state("hydra-queue-runner.service")
machine.require_unit_state("hydra-evaluator.service")
machine.require_unit_state("hydra-notify.service")
machine.succeed("hydra-create-user admin --role admin --password admin")
# create a project with a trivial job
machine.wait_for_open_port(3000)
# make sure the build as been successfully built
machine.succeed("create-trivial-project.sh")
machine.wait_until_succeeds(
'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq'
)
machine.wait_until_succeeds(
'journalctl -eu hydra-notify.service -o cat | grep -q "sending mail notification to hydra@localhost"'
)
'';
})));
in
tests
mapAttrs makeHydraTest hydraPkgs

View File

@ -0,0 +1,42 @@
{ buildPythonApplication, fetchFromGitHub, lib, paramiko, peewee, pyqt5
, python-dateutil, APScheduler, psutil, qdarkstyle, secretstorage
, appdirs, setuptools, qt5
}:
buildPythonApplication rec {
pname = "vorta";
version = "0.6.24";
src = fetchFromGitHub {
owner = "borgbase";
repo = "vorta";
rev = "v${version}";
sha256 = "1xc4cng4npc7g739qd909a8wim6s6sn8h8bb1wpxzg4gcnfyin8z";
};
postPatch = ''
sed -i -e '/setuptools_git/d' -e '/pytest-runner/d' setup.cfg
'';
nativeBuildInputs = [ qt5.wrapQtAppsHook ];
propagatedBuildInputs = [
paramiko peewee pyqt5 python-dateutil APScheduler psutil qdarkstyle
secretstorage appdirs setuptools
];
# QT setup in tests broken.
doCheck = false;
postFixup = ''
wrapQtApp $out/bin/vorta
'';
meta = with lib; {
license = licenses.gpl3;
homepage = "https://vorta.borgbase.com/";
maintainers = with maintainers; [ ma27 ];
description = "Desktop Backup Client for Borg";
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,25 @@
{ lib, python3Packages, fetchFromGitHub }:
python3Packages.buildPythonApplication rec {
pname = "matrix-dl-unstable";
version = "2019-09-22";
src = fetchFromGitHub {
owner = "rubo77";
repo = "matrix-dl";
rev = "e91610f45b7b3b0aca34923309fc83ba377f8a69";
sha256 = "036xfdd21pcfjlilknc67z5jqpk0vz07853wwcsiac32iypc6f2q";
};
propagatedBuildInputs = with python3Packages; [
matrix-client
];
meta = with lib; {
description = "Download backlogs from Matrix as raw text";
homepage = src.meta.homepage;
license = licenses.unfree;
maintainers = with maintainers; [ aw ];
platforms = platforms.unix;
};
}

View File

@ -70,7 +70,7 @@ in mkYarnPackage rec {
comment = meta.description;
categories = "Network;InstantMessaging;Chat;";
extraEntries = ''
StartupWMClass="riot"
StartupWMClass=riot
'';
};

View File

@ -27,11 +27,11 @@ with stdenv.lib;
stdenv.mkDerivation rec {
pname = "mutt";
version = "1.13.4";
version = "1.13.5";
src = fetchurl {
url = "http://ftp.mutt.org/pub/mutt/${pname}-${version}.tar.gz";
sha256 = "016dzx2c0kr9xgnw4nfzpkn4nvpk56rdlcqhrwa820fq8083yzdm";
sha256 = "0lx65a44b03rbvcrz0y9syrik67fx3hvblxyyvz5l9bb7rdipmvc";
};
patches = optional smimeSupport (fetchpatch {

View File

@ -2,13 +2,13 @@
buildPythonApplication rec {
pname = "plex-mpv-shim";
version = "1.7.12";
version = "1.7.14";
src = fetchFromGitHub {
owner = "iwalton3";
repo = pname;
rev = "v${version}";
sha256 = "0l13g4vkvcd1q4lkdkbgv4hgkx5pql6ym2fap35581z7rzy9jhkq";
sha256 = "1rjifqvs59w2aacfird02myqfd34qadhacj9zpy5xjz25x410zza";
};
propagatedBuildInputs = [ mpv requests python-mpv-jsonipc ];

View File

@ -3,22 +3,23 @@
, fetchFromGitHub
, mock
, pytest
, requests
, unittest2
, six
}:
buildPythonPackage rec {
pname = "ntlm-auth";
version = "1.0.3";
version = "1.4.0";
src = fetchFromGitHub {
owner = "jborean93";
repo = "ntlm-auth";
rev = "v${version}";
sha256 = "09f2g4ivfi9lh1kr30hlg0q4n2imnvmd79w83gza11q9nmhhiwpz";
sha256 = "168k3ygwbvnfcwn7q1nv3vvy6b9jc4cnpix0xgg5j8av7v1x0grn";
};
checkInputs = [ mock pytest unittest2 ];
checkInputs = [ mock pytest requests unittest2 ];
propagatedBuildInputs = [ six ];
# Functional tests require networking
@ -28,8 +29,8 @@ buildPythonPackage rec {
meta = with lib; {
description = "Calculates NTLM Authentication codes";
homepage = https://github.com/jborean93/ntlm-auth;
license = licenses.lgpl3;
homepage = "https://github.com/jborean93/ntlm-auth";
license = licenses.mit;
maintainers = with maintainers; [ elasticdog ];
platforms = platforms.all;
};

View File

@ -5,11 +5,11 @@
buildPythonPackage rec {
pname = "xml2rfc";
version = "2.37.3";
version = "2.41.0";
src = fetchPypi {
inherit pname version;
sha256 = "4ae4e99a4b482caac89d8ffd93d16a4510db36907475b1879713a1dc885646ad";
sha256 = "0xmhgn62a8a7282yd003zz63mrgyajb6sg29bfyllx3mxmdlb0iz";
};
propagatedBuildInputs = [
@ -36,7 +36,7 @@ buildPythonPackage rec {
meta = with lib; {
description = "Tool generating IETF RFCs and drafts from XML sources";
homepage = https://tools.ietf.org/tools/xml2rfc/trac/;
homepage = "https://tools.ietf.org/tools/xml2rfc/trac/";
# Well, parts might be considered unfree, if being strict; see:
# http://metadata.ftp-master.debian.org/changelogs/non-free/x/xml2rfc/xml2rfc_2.9.6-1_copyright
license = licenses.bsd3;

View File

@ -0,0 +1,135 @@
{ stdenv, nix, perlPackages, buildEnv, fetchFromGitHub
, makeWrapper, autoconf, automake, libtool, unzip, pkgconfig, sqlite, libpqxx
, gitAndTools, mercurial, darcs, subversion, bazaar, openssl, bzip2, libxslt
, guile, perl, postgresql, nukeReferences, git, boehmgc, nlohmann_json
, docbook_xsl, openssh, gnused, coreutils, findutils, gzip, lzma, gnutar
, rpm, dpkg, cdrkit, pixz, lib, boost, autoreconfHook, src ? null, version ? null
, migration ? false
}:
with stdenv;
if lib.versions.major nix.version == "1"
then throw "This Hydra version doesn't support Nix 1.x"
else
let
perlDeps = buildEnv {
name = "hydra-perl-deps";
paths = with perlPackages; lib.closePropagation
[ ModulePluggable
CatalystActionREST
CatalystAuthenticationStoreDBIxClass
CatalystDevel
CatalystDispatchTypeRegex
CatalystPluginAccessLog
CatalystPluginAuthorizationRoles
CatalystPluginCaptcha
CatalystPluginSessionStateCookie
CatalystPluginSessionStoreFastMmap
CatalystPluginStackTrace
CatalystPluginUnicodeEncoding
CatalystTraitForRequestProxyBase
CatalystViewDownload
CatalystViewJSON
CatalystViewTT
CatalystXScriptServerStarman
CatalystXRoleApplicator
CryptRandPasswd
DBDPg
DBDSQLite
DataDump
DateTime
DigestSHA1
EmailMIME
EmailSender
FileSlurp
IOCompress
IPCRun
JSON
JSONAny
JSONXS
LWP
LWPProtocolHttps
NetAmazonS3
NetPrometheus
NetStatsd
PadWalker
Readonly
SQLSplitStatement
SetScalar
Starman
SysHostnameLong
TermSizeAny
TestMore
TextDiff
TextTable
XMLSimple
nix
nix.perl-bindings
git
boehmgc
];
};
in stdenv.mkDerivation rec {
pname = "hydra";
inherit stdenv src version;
buildInputs =
[ makeWrapper autoconf automake libtool unzip nukeReferences sqlite libpqxx
gitAndTools.top-git mercurial /*darcs*/ subversion bazaar openssl bzip2 libxslt
perlDeps perl nix
postgresql # for running the tests
nlohmann_json
boost
];
hydraPath = lib.makeBinPath (
[ sqlite subversion openssh nix coreutils findutils pixz
gzip bzip2 lzma gnutar unzip git gitAndTools.top-git mercurial /*darcs*/ gnused bazaar
] ++ lib.optionals stdenv.isLinux [ rpm dpkg cdrkit ] );
nativeBuildInputs = [ autoreconfHook pkgconfig ];
configureFlags = [ "--with-docbook-xsl=${docbook_xsl}/xml/xsl/docbook" ];
NIX_CFLAGS_COMPILE = "-pthread";
shellHook = ''
PATH=$(pwd)/src/script:$(pwd)/src/hydra-eval-jobs:$(pwd)/src/hydra-queue-runner:$(pwd)/src/hydra-evaluator:$PATH
PERL5LIB=$(pwd)/src/lib:$PERL5LIB;
'';
enableParallelBuilding = true;
preCheck = ''
patchShebangs .
export LOGNAME=''${LOGNAME:-foo}
'';
postInstall = ''
mkdir -p $out/nix-support
for i in $out/bin/*; do
read -n 4 chars < $i
if [[ $chars =~ ELF ]]; then continue; fi
wrapProgram $i \
--prefix PERL5LIB ':' $out/libexec/hydra/lib:$PERL5LIB \
--prefix PATH ':' $out/bin:$hydraPath \
--set HYDRA_RELEASE ${version} \
--set HYDRA_HOME $out/libexec/hydra \
--set NIX_RELEASE ${nix.name or "unknown"}
done
''; # */
dontStrip = true;
passthru = { inherit perlDeps migration; };
meta = with stdenv.lib; {
description = "Nix-based continuous build system";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ ma27 ];
};
}

View File

@ -1,143 +1,42 @@
{ stdenv, nix, perlPackages, buildEnv, fetchFromGitHub
, makeWrapper, autoconf, automake, libtool, unzip, pkgconfig, sqlite, libpqxx
, gitAndTools, mercurial, darcs, subversion, bazaar, openssl, bzip2, libxslt
, guile, perl, postgresql, nukeReferences, git, boehmgc, nlohmann_json
, docbook_xsl, openssh, gnused, coreutils, findutils, gzip, lzma, gnutar
, rpm, dpkg, cdrkit, pixz, lib, boost, autoreconfHook
}:
{ fetchFromGitHub, nixStable, nixUnstable, callPackage, nixFlakes }:
with stdenv;
if lib.versions.major nix.version == "1"
then throw "This Hydra version doesn't support Nix 1.x"
else
let
perlDeps = buildEnv {
name = "hydra-perl-deps";
paths = with perlPackages; lib.closePropagation
[ ModulePluggable
CatalystActionREST
CatalystAuthenticationStoreDBIxClass
CatalystDevel
CatalystDispatchTypeRegex
CatalystPluginAccessLog
CatalystPluginAuthorizationRoles
CatalystPluginCaptcha
CatalystPluginSessionStateCookie
CatalystPluginSessionStoreFastMmap
CatalystPluginStackTrace
CatalystPluginUnicodeEncoding
CatalystTraitForRequestProxyBase
CatalystViewDownload
CatalystViewJSON
CatalystViewTT
CatalystXScriptServerStarman
CatalystXRoleApplicator
CryptRandPasswd
DBDPg
DBDSQLite
DataDump
DateTime
DigestSHA1
EmailMIME
EmailSender
FileSlurp
IOCompress
IPCRun
JSON
JSONAny
JSONXS
LWP
LWPProtocolHttps
NetAmazonS3
NetPrometheus
NetStatsd
PadWalker
Readonly
SQLSplitStatement
SetScalar
Starman
SysHostnameLong
TermSizeAny
TestMore
TextDiff
TextTable
XMLSimple
nix
nix.perl-bindings
git
boehmgc
];
};
in stdenv.mkDerivation rec {
pname = "hydra";
version = "2020-02-06";
inherit stdenv;
src = fetchFromGitHub {
owner = "NixOS";
repo = pname;
rev = "2b4f14963b16b21ebfcd6b6bfa7832842e9b2afc";
sha256 = "16q0cffcsfx5pqd91n9k19850c1nbh4vvbd9h8yi64ihn7v8bick";
{
# Package for phase-1 of the db migration for Hydra.
# https://github.com/NixOS/hydra/pull/711
hydra-migration = callPackage ./common.nix {
version = "2020-02-10";
src = fetchFromGitHub {
owner = "NixOS";
repo = "hydra";
rev = "add4f610ce6f206fb44702b5a894d877b3a30e3a";
sha256 = "1d8hdgjx2ys0zmixi2ydmimdq7ml20h1ji4amwawcyw59kssh6l3";
};
nix = nixStable;
migration = true;
};
buildInputs =
[ makeWrapper autoconf automake libtool unzip nukeReferences sqlite libpqxx
gitAndTools.top-git mercurial darcs subversion bazaar openssl bzip2 libxslt
guile # optional, for Guile + Guix support
perlDeps perl nix
postgresql # for running the tests
nlohmann_json
boost
];
# Hydra from latest master (or flakes) branch. Contains breaking changes,
# so when having an older version, `pkgs.hydra-migration` should be deployed first.
hydraPath = lib.makeBinPath (
[ sqlite subversion openssh nix coreutils findutils pixz
gzip bzip2 lzma gnutar unzip git gitAndTools.top-git mercurial darcs gnused bazaar
] ++ lib.optionals stdenv.isLinux [ rpm dpkg cdrkit ] );
hydra-unstable = callPackage ./common.nix {
version = "2020-03-24";
src = fetchFromGitHub {
owner = "NixOS";
repo = "hydra";
rev = "12cc46cdb36321acd4c982429a86eb0f8f3cc969";
sha256 = "10ipxzdxr47c8w5jg69mbax2ykc7lb5fs9bbdd3iai9wzyfz17ln";
};
nix = nixUnstable;
};
nativeBuildInputs = [ autoreconfHook pkgconfig ];
configureFlags = [ "--with-docbook-xsl=${docbook_xsl}/xml/xsl/docbook" ];
NIX_CFLAGS_COMPILE = "-pthread";
shellHook = ''
PATH=$(pwd)/src/script:$(pwd)/src/hydra-eval-jobs:$(pwd)/src/hydra-queue-runner:$(pwd)/src/hydra-evaluator:$PATH
PERL5LIB=$(pwd)/src/lib:$PERL5LIB;
'';
enableParallelBuilding = true;
preCheck = ''
patchShebangs .
export LOGNAME=''${LOGNAME:-foo}
'';
postInstall = ''
mkdir -p $out/nix-support
for i in $out/bin/*; do
read -n 4 chars < $i
if [[ $chars =~ ELF ]]; then continue; fi
wrapProgram $i \
--prefix PERL5LIB ':' $out/libexec/hydra/lib:$PERL5LIB \
--prefix PATH ':' $out/bin:$hydraPath \
--set HYDRA_RELEASE ${version} \
--set HYDRA_HOME $out/libexec/hydra \
--set NIX_RELEASE ${nix.name or "unknown"}
done
''; # */
dontStrip = true;
passthru.perlDeps = perlDeps;
meta = with stdenv.lib; {
description = "Nix-based continuous build system";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ ma27 ];
hydra-flakes = callPackage ./common.nix {
version = "2020-03-27";
src = fetchFromGitHub {
owner = "NixOS";
repo = "hydra";
rev = "a7540b141d085a7e78c21fda8e8c05907c659b34";
sha256 = "08fs7593w5zs8vh4c66gvrxk6s840pp6hj8nwf51wsa27kg5a943";
};
nix = nixFlakes;
};
}

View File

@ -1,14 +1,17 @@
{ stdenv, mkDerivation, fetchFromGitHub, makeDesktopItem, makeWrapper
, python, pkgconfig, SDL2, SDL2_ttf, alsaLib, which, qtbase, libXinerama
, libpcap, CoreAudioKit, ForceFeedback
, installShellFiles }:
with stdenv;
let
majorVersion = "0";
minorVersion = "219";
desktopItem = makeDesktopItem {
name = "MAME";
exec = "mame${stdenv.lib.optionalString stdenv.is64bit "64"}";
exec = "mame${lib.optionalString stdenv.is64bit "64"}";
desktopName = "MAME";
genericName = "MAME is a multi-purpose emulation framework";
categories = "System;Emulator;";
@ -27,13 +30,22 @@ in mkDerivation {
};
hardeningDisable = [ "fortify" ];
NIX_CFLAGS_COMPILE = [ "-Wno-error=maybe-uninitialized" ];
NIX_CFLAGS_COMPILE = [ "-Wno-error=maybe-uninitialized" "-Wno-error=missing-braces" ];
makeFlags = [ "TOOLS=1" ];
makeFlags = [
"TOOLS=1"
"USE_LIBSDL=1"
]
++ lib.optionals stdenv.cc.isClang [ "CC=clang" "CXX=clang++" ]
;
dontWrapQtApps = true;
buildInputs = [ SDL2 SDL2_ttf alsaLib qtbase libXinerama ];
buildInputs =
[ SDL2 SDL2_ttf qtbase libXinerama ]
++ lib.optional stdenv.isLinux alsaLib
++ lib.optionals stdenv.isDarwin [ libpcap CoreAudioKit ForceFeedback ]
;
nativeBuildInputs = [ python pkgconfig which makeWrapper installShellFiles ];
# by default MAME assumes that paths with stock resources
@ -58,16 +70,18 @@ in mkDerivation {
installManPage ${dest}/docs/man/*.1 ${dest}/docs/man/*.6
mv artwork plugins samples ${dest}
'' + lib.optionalString stdenv.isLinux ''
mkdir -p $out/share
ln -s ${desktopItem}/share/applications $out/share
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "Is a multi-purpose emulation framework";
homepage = https://www.mamedev.org/;
license = with licenses; [ bsd3 gpl2Plus ];
platforms = [ "x86_64-linux" "i686-linux" ];
platforms = platforms.unix;
# makefile needs fixes for install target
badPlatforms = [ "aarch64-linux" ];
maintainers = with maintainers; [ gnidorah ];
};
}

View File

@ -0,0 +1,171 @@
{ stdenv
, fetchurl
, pkgconfig
, file
, glib
# always required runtime dependencies
, dbus
, libmnl
, gnutls
, readline
# configureable options
, firewallType ? "iptables" # or "nftables"
, iptables ? null
, libnftnl ? null # for nftables
, dnsType ? "internal" # or "systemd-resolved"
# optional features which are turned *on* by default
, enableOpenconnect ? true
, openconnect ? null
, enableOpenvpn ? true
, openvpn ? null
, enableVpnc ? true
, vpnc ? true
, enablePolkit ? true
, polkit ? null
, enablePptp ? true
, pptp ? null
, ppp ? null
, enableLoopback ? true
, enableEthernet ? true
, enableWireguard ? true
, enableGadget ? true
, enableWifi ? true
, enableBluetooth ? true
, enableOfono ? true
, enableDundee ? true
, enablePacrunner ? true
, enableNeard ? true
, enableWispr ? true
, enableTools ? true
, enableStats ? true
, enableClient ? true
, enableDatafiles ? true
# optional features which are turned *off* by default
, enableNetworkManager ? false
, enableHh2serialGps ? false
, enableL2tp ? false
, enableIospm ? false
, enableTist ? false
}:
assert stdenv.lib.asserts.assertOneOf "firewallType" firewallType [ "iptables" "nftables" ];
assert stdenv.lib.asserts.assertOneOf "dnsType" dnsType [ "internal" "systemd-resolved" ];
let inherit (stdenv.lib) optionals; in
stdenv.mkDerivation rec {
pname = "connman";
version = "1.38";
src = fetchurl {
url = "mirror://kernel/linux/network/connman/${pname}-${version}.tar.xz";
sha256 = "0awkqigvhwwxiapw0x6yd4whl465ka8a4al0v2pcqy9ggjlsqc6b";
};
buildInputs = [
glib
dbus
libmnl
gnutls
readline
];
nativeBuildInputs = [
pkgconfig
file
]
++ optionals (enablePolkit) [ polkit ]
++ optionals (enablePptp) [ pptp ppp ]
++ optionals (firewallType == "iptables") [ iptables ]
++ optionals (firewallType == "nftables") [ libnftnl ]
;
# fix invalid path to 'file'
postPatch = ''
sed -i "s/\/usr\/bin\/file/file/g" ./configure
'';
configureFlags = [
# directories flags
"--sysconfdir=${placeholder "out"}/etc"
"--localstatedir=/var"
"--with-dbusconfdir=${placeholder "out"}/share"
"--with-dbusdatadir=${placeholder "out"}/share"
"--with-tmpfilesdir=${placeholder "out"}/lib/tmpfiles.d"
"--with-systemdunitdir=${placeholder "out"}/lib/systemd/system"
"--with-dns-backend=${dnsType}"
"--with-firewall=${firewallType}"
# production build flags
"--disable-maintainer-mode"
"--enable-session-policy-local=builtin"
# for building and running tests
# "--enable-tests" # installs the tests, we don't want that
"--enable-tools"
]
++ optionals (!enableLoopback) [ "--disable-loopback" ]
++ optionals (!enableEthernet) [ "--disable-ethernet" ]
++ optionals (!enableWireguard) [ "--disable-wireguard" ]
++ optionals (!enableGadget) [ "--disable-gadget" ]
++ optionals (!enableWifi) [ "--disable-wifi" ]
# enable IWD support for wifi as it doesn't require any new dependencies
# and it's easier for the NixOS module to use only one connman package when
# IWD is requested
++ optionals (enableWifi) [ "--enable-iwd" ]
++ optionals (!enableBluetooth) [ "--disable-bluetooth" ]
++ optionals (!enableOfono) [ "--disable-ofono" ]
++ optionals (!enableDundee) [ "--disable-dundee" ]
++ optionals (!enablePacrunner) [ "--disable-pacrunner" ]
++ optionals (!enableNeard) [ "--disable-neard" ]
++ optionals (!enableWispr) [ "--disable-wispr" ]
++ optionals (!enableTools) [ "--disable-tools" ]
++ optionals (!enableStats) [ "--disable-stats" ]
++ optionals (!enableClient) [ "--disable-client" ]
++ optionals (!enableDatafiles) [ "--disable-datafiles" ]
++ optionals (enableOpenconnect) [
"--enable-openconnect=builtin"
"--with-openconnect=${openconnect}/sbin/openconnect"
]
++ optionals (enableOpenvpn) [
"--enable-openvpn=builtin"
"--with-openvpn=${openvpn}/sbin/openvpn"
]
++ optionals (enableVpnc) [
"--enable-vpnc=builtin"
"--with-vpnc=${vpnc}/sbin/vpnc"
]
++ optionals (enablePolkit) [
"--enable-polkit"
]
++ optionals (enablePptp) [
"--enable-pptp"
"--with-pptp=${pptp}/sbin/pptp"
]
++ optionals (!enableWireguard) [
"--disable-wireguard"
]
++ optionals (enableNetworkManager) [
"--enable-nmcompat"
]
++ optionals (enableHh2serialGps) [
"--enable-hh2serial-gps"
]
++ optionals (enableL2tp) [
"--enable-l2tp"
]
++ optionals (enableIospm) [
"--enable-iospm"
]
++ optionals (enableTist) [
"--enable-tist"
]
;
doCheck = true;
meta = with stdenv.lib; {
description = "A daemon for managing internet connections";
homepage = "https://01.org/connman";
maintainers = [ maintainers.matejc ];
platforms = platforms.linux;
license = licenses.gpl2;
};
}

View File

@ -1,61 +1,40 @@
{ stdenv, fetchurl, pkgconfig, openconnect, file, gawk,
openvpn, vpnc, glib, dbus, iptables, gnutls, polkit,
wpa_supplicant, readline6, pptp, ppp }:
{ callPackage }:
stdenv.mkDerivation rec {
pname = "connman";
version = "1.37";
src = fetchurl {
url = "mirror://kernel/linux/network/connman/${pname}-${version}.tar.xz";
sha256 = "05kfjiqhqfmbbwc4snnyvi5hc4zxanac62f6gcwaf5mvn0z9pqkc";
{
# All the defaults
connman = callPackage ./connman.nix { };
connmanFull = callPackage ./connman.nix {
# TODO: Why is this in `connmanFull` and not the default build? See TODO in
# nixos/modules/services/networking/connman.nix (near the assertions)
enableNetworkManager = true;
enableHh2serialGps = true;
enableL2tp = true;
enableIospm = true;
enableTist = true;
};
buildInputs = [ openconnect polkit
openvpn vpnc glib dbus iptables gnutls
wpa_supplicant readline6 pptp ppp ];
nativeBuildInputs = [ pkgconfig file gawk ];
preConfigure = ''
export WPASUPPLICANT=${wpa_supplicant}/sbin/wpa_supplicant
export PPPD=${ppp}/sbin/pppd
export AWK=${gawk}/bin/gawk
sed -i "s/\/usr\/bin\/file/file/g" ./configure
'';
configureFlags = [
"--sysconfdir=\${out}/etc"
"--localstatedir=/var"
"--with-dbusconfdir=${placeholder "out"}/share"
"--with-dbusdatadir=${placeholder "out"}/share"
"--disable-maintainer-mode"
"--enable-openconnect=builtin"
"--with-openconnect=${openconnect}/sbin/openconnect"
"--enable-openvpn=builtin"
"--with-openvpn=${openvpn}/sbin/openvpn"
"--enable-vpnc=builtin"
"--with-vpnc=${vpnc}/sbin/vpnc"
"--enable-session-policy-local=builtin"
"--enable-client"
"--enable-bluetooth"
"--enable-wifi"
"--enable-polkit"
"--enable-tools"
"--enable-datafiles"
"--enable-pptp"
"--with-pptp=${pptp}/sbin/pptp"
"--enable-iwd"
];
postInstall = ''
cp ./client/connmanctl $out/sbin/connmanctl
'';
meta = with stdenv.lib; {
description = "A daemon for managing internet connections";
homepage = https://01.org/connman;
maintainers = [ maintainers.matejc ];
platforms = platforms.linux;
license = licenses.gpl2;
connmanMinimal = callPackage ./connman.nix {
enableOpenconnect = false;
enableOpenvpn = false;
enableVpnc = false;
vpnc = false;
enablePolkit = false;
enablePptp = false;
enableLoopback = false;
# enableEthernet = false; # If disabled no ethernet connection can be performed
enableWireguard = false;
enableGadget = false;
# enableWifi = false; # If disabled no WiFi connection can be performed
enableBluetooth = false;
enableOfono = false;
enableDundee = false;
enablePacrunner = false;
enableNeard = false;
enableWispr = false;
enableTools = false;
enableStats = false;
enableClient = false;
# enableDatafiles = false; # If disabled, configuration and data files are not installed
};
}

View File

@ -9,16 +9,16 @@
rustPlatform.buildRustPackage rec {
pname = "findomain";
version = "1.4.2";
version = "1.4.5";
src = fetchFromGitHub {
owner = "Edu4rdSHL";
repo = pname;
rev = version;
sha256 = "0c6jjr1343lqwggvpxdhbjyi1far4f7f3yzq1y0nj1j952j7a36x";
sha256 = "1p4ddyqg1v27hf19n1ksmfvj5s6z2c8i13syb0anhlyzqy576hwb";
};
cargoSha256 = "1cyfxfhbc2xhavnkhva1xdcw8vy9i5pqhfbiwn6idpfy6hm1w0bx";
cargoSha256 = "0mdcj4almwziq1ph3imfdx41a96xq19sbjm7wsm9lxlzhvv256br";
nativeBuildInputs = [ installShellFiles perl ];
buildInputs = lib.optional stdenv.isDarwin Security;

View File

@ -2499,7 +2499,11 @@ in
conspy = callPackage ../os-specific/linux/conspy {};
connman = callPackage ../tools/networking/connman { };
inherit (callPackage ../tools/networking/connman {})
connman
connmanFull
connmanMinimal
;
connman-gtk = callPackage ../tools/networking/connman/connman-gtk { };
@ -3080,6 +3084,8 @@ in
volctl = callPackage ../tools/audio/volctl { };
vorta = python3Packages.callPackage ../applications/backup/vorta { };
wallutils = callPackage ../tools/graphics/wallutils { };
wev = callPackage ../tools/misc/wev { };
@ -12115,7 +12121,8 @@ in
hwloc = callPackage ../development/libraries/hwloc {};
hydra = callPackage ../development/tools/misc/hydra { };
inherit (callPackage ../development/tools/misc/hydra { })
hydra-migration hydra-unstable hydra-flakes;
hydra-cli = callPackage ../development/tools/misc/hydra-cli { };
@ -20472,6 +20479,8 @@ in
canonicaljson;
};
matrix-dl = callPackage ../applications/networking/instant-messengers/matrix-dl { };
matrix-recorder = callPackage ../applications/networking/instant-messengers/matrix-recorder {};
mblaze = callPackage ../applications/networking/mailreaders/mblaze { };
@ -25301,7 +25310,9 @@ in
icu = icu58;
};
mame = libsForQt5.callPackage ../misc/emulators/mame { };
mame = libsForQt5.callPackage ../misc/emulators/mame {
inherit (darwin.apple_sdk.frameworks) CoreAudioKit ForceFeedback;
};
martyr = callPackage ../development/libraries/martyr { };