Merge master into staging-next

This commit is contained in:
Frederik Rietdijk 2019-08-27 16:36:47 +02:00
commit 98640fd482
271 changed files with 5293 additions and 2782 deletions

View File

@ -36,7 +36,7 @@ rec {
example ? null,
# String describing the option.
description ? null,
# Related packages used in the manual (see `genRelatedPackages` in ../nixos/doc/manual/default.nix).
# Related packages used in the manual (see `genRelatedPackages` in ../nixos/lib/make-options-doc/default.nix).
relatedPackages ? null,
# Option type, providing type-checking and value merging.
type ? null,

View File

@ -1724,6 +1724,16 @@
fingerprint = "389A 78CB CD88 5E0C 4701 DEB9 FD42 C7D0 D414 94C8";
}];
};
dump_stack = {
email = "root@dumpstack.io";
github = "jollheef";
githubId = 1749762;
name = "Mikhail Klementev";
keys = [{
longkeyid = "rsa4096/0x1525585D1B43C62A";
fingerprint = "5DD7 C6F6 0630 F08E DAE7 4711 1525 585D 1B43 C62A";
}];
};
dxf = {
email = "dingxiangfei2009@gmail.com";
github = "dingxiangfei2009";
@ -2853,6 +2863,15 @@
githubId = 1383440;
name = "Jason Gilliland";
};
jdanek = {
email = "jdanek@redhat.com";
github = "jdanekrh";
keys = [{
longkeyid = "ed25519/0x69275CADF15D872E";
fingerprint = "D4A6 F051 AD58 2E7C BCED 5439 6927 5CAD F15D 872E";
}];
name = "Jiri Daněk";
};
jdehaas = {
email = "qqlq@nullptr.club";
github = "jeroendehaas";
@ -6549,6 +6568,12 @@
githubId = 1525767;
name = "Vaibhav Sagar";
};
valebes = {
email = "valebes@gmail.com";
github = "valebes";
githubid = 10956211;
name = "Valerio Besozzi";
};
valeriangalliat = {
email = "val@codejam.info";
github = "valeriangalliat";

View File

@ -284,6 +284,13 @@
Squid 3 has been removed and the <option>squid</option> derivation now refers to Squid 4.
</para>
</listitem>
<listitem>
<para>
The <option>services.pdns-recursor.extraConfig</option> option has been replaced by
<option>services.pdns-recursor.settings</option>. The new option allows setting extra
configuration while being better type-checked and mergeable.
</para>
</listitem>
</itemizedlist>
</section>
@ -506,6 +513,20 @@
been removed.
</para>
</listitem>
<listitem>
<para>
The <literal>rmilter</literal> package was removed with associated module and options due deprecation by upstream developer.
Use <literal>rspamd</literal> in proxy mode instead.
</para>
</listitem>
<listitem>
<para>
systemd cgroup accounting via the
<link linkend="opt-systemd.enableCgroupAccounting">systemd.enableCgroupAccounting</link>
option is now enabled by default. It now also enables the more recent Block IO and IP accounting
features.
</para>
</listitem>
</itemizedlist>
</section>
</section>

View File

@ -267,6 +267,7 @@ foreach my $line (-f "/etc/shadow" ? read_file("/etc/shadow") : ()) {
next if !defined $u;
$hashedPassword = "!" if !$spec->{mutableUsers};
$hashedPassword = $u->{hashedPassword} if defined $u->{hashedPassword} && !$spec->{mutableUsers}; # FIXME
chomp $hashedPassword;
push @shadowNew, join(":", $name, $hashedPassword, @rest) . "\n";
$shadowSeen{$name} = 1;
}

View File

@ -251,7 +251,7 @@
gale = 223;
matrix-synapse = 224;
rspamd = 225;
rmilter = 226;
# rmilter = 226; # unused, removed 2019-08-22
cfdyndns = 227;
gammu-smsd = 228;
pdnsd = 229;
@ -340,6 +340,7 @@
cockroachdb = 313;
zoneminder = 314;
paperless = 315;
mailman = 316;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
@ -559,7 +560,7 @@
gale = 223;
matrix-synapse = 224;
rspamd = 225;
rmilter = 226;
# rmilter = 226; # unused, removed 2019-08-22
cfdyndns = 227;
pdnsd = 229;
octoprint = 230;
@ -640,6 +641,7 @@
cockroachdb = 313;
zoneminder = 314;
paperless = 315;
mailman = 316;
# When adding a gid, make sure it doesn't match an existing
# uid. Users and groups with the same name should have equal

View File

@ -387,7 +387,6 @@
./services/mail/spamassassin.nix
./services/mail/rspamd.nix
./services/mail/rss2email.nix
./services/mail/rmilter.nix
./services/mail/roundcube.nix
./services/mail/nullmailer.nix
./services/misc/airsonic.nix
@ -790,6 +789,7 @@
./services/web-apps/mattermost.nix
./services/web-apps/mediawiki.nix
./services/web-apps/miniflux.nix
./services/web-apps/moodle.nix
./services/web-apps/nextcloud.nix
./services/web-apps/nexus.nix
./services/web-apps/pgpkeyserver-lite.nix
@ -803,6 +803,7 @@
./services/web-apps/zabbix.nix
./services/web-servers/apache-httpd/default.nix
./services/web-servers/caddy.nix
./services/web-servers/darkhttpd.nix
./services/web-servers/fcgiwrap.nix
./services/web-servers/hitch/default.nix
./services/web-servers/hydron.nix

View File

@ -72,8 +72,8 @@ with lib;
# PAM
(mkRenamedOptionModule [ "security" "pam" "enableU2F" ] [ "security" "pam" "u2f" "enable" ])
(mkRemovedOptionModule [ "services" "rmilter" "bindInetSockets" ] "Use services.rmilter.bindSocket.* instead")
(mkRemovedOptionModule [ "services" "rmilter" "bindUnixSockets" ] "Use services.rmilter.bindSocket.* instead")
# rmilter/rspamd
(mkRemovedOptionModule [ "services" "rmilter" ] "Use services.rspamd.* instead to set up milter service")
# Xsession script
(mkRenamedOptionModule [ "services" "xserver" "displayManager" "job" "logsXsession" ] [ "services" "xserver" "displayManager" "job" "logToFile" ])

View File

@ -103,7 +103,6 @@ in
LockPersonality = true;
RestrictRealtime = true;
PrivateMounts = true;
PrivateUsers = true;
MemoryDenyWriteExecute = true;
};
};

View File

@ -1,252 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
rspamdCfg = config.services.rspamd;
postfixCfg = config.services.postfix;
cfg = config.services.rmilter;
inetSocket = addr: port: "inet:${addr}:${toString port}";
unixSocket = sock: "unix:${sock}";
systemdSocket = if cfg.bindSocket.type == "unix" then cfg.bindSocket.path
else "${cfg.bindSocket.address}:${toString cfg.bindSocket.port}";
rmilterSocket = if cfg.bindSocket.type == "unix" then unixSocket cfg.bindSocket.path
else inetSocket cfg.bindSocket.address cfg.bindSocket.port;
rmilterConf = ''
pidfile = /run/rmilter/rmilter.pid;
bind_socket = ${if cfg.socketActivation then "fd:3" else rmilterSocket};
tempdir = /tmp;
'' + (with cfg.rspamd; if enable then ''
spamd {
servers = ${concatStringsSep ", " servers};
connect_timeout = 1s;
results_timeout = 20s;
error_time = 10;
dead_time = 300;
maxerrors = 10;
reject_message = "${rejectMessage}";
${optionalString (length whitelist != 0) "whitelist = ${concatStringsSep ", " whitelist};"}
# rspamd_metric - metric for using with rspamd
# Default: "default"
rspamd_metric = "default";
${extraConfig}
};
'' else "") + cfg.extraConfig;
rmilterConfigFile = pkgs.writeText "rmilter.conf" rmilterConf;
in
{
###### interface
options = {
services.rmilter = {
enable = mkOption {
type = types.bool;
default = false;
description = "Whether to run the rmilter daemon.";
};
debug = mkOption {
type = types.bool;
default = false;
description = "Whether to run the rmilter daemon in debug mode.";
};
user = mkOption {
type = types.string;
default = "rmilter";
description = ''
User to use when no root privileges are required.
'';
};
group = mkOption {
type = types.string;
default = "rmilter";
description = ''
Group to use when no root privileges are required.
'';
};
bindSocket.type = mkOption {
type = types.enum [ "unix" "inet" ];
default = "unix";
description = ''
What kind of socket rmilter should listen on. Either "unix"
for an Unix domain socket or "inet" for a TCP socket.
'';
};
bindSocket.path = mkOption {
type = types.str;
default = "/run/rmilter.sock";
description = ''
Path to Unix domain socket to listen on.
'';
};
bindSocket.address = mkOption {
type = types.str;
default = "[::1]";
example = "0.0.0.0";
description = ''
Inet address to listen on.
'';
};
bindSocket.port = mkOption {
type = types.int;
default = 11990;
description = ''
Inet port to listen on.
'';
};
socketActivation = mkOption {
type = types.bool;
default = true;
description = ''
Enable systemd socket activation for rmilter.
Disabling socket activation is not recommended when a Unix
domain socket is used and could lead to incorrect
permissions.
'';
};
rspamd = {
enable = mkOption {
type = types.bool;
default = rspamdCfg.enable;
description = "Whether to use rspamd to filter mails";
};
servers = mkOption {
type = types.listOf types.str;
default = ["r:/run/rspamd/rspamd.sock"];
description = ''
Spamd socket definitions.
Is server name is prefixed with r: it is rspamd server.
'';
};
whitelist = mkOption {
type = types.listOf types.str;
default = [ ];
description = "list of ips or nets that should be not checked with spamd";
};
rejectMessage = mkOption {
type = types.str;
default = "Spam message rejected; If this is not spam contact abuse";
description = "reject message for spam";
};
extraConfig = mkOption {
type = types.lines;
default = "";
description = "Custom snippet to append to end of `spamd' section";
};
};
extraConfig = mkOption {
type = types.lines;
default = "";
description = "Custom snippet to append to rmilter config";
};
postfix = {
enable = mkOption {
type = types.bool;
default = false;
description = "Add rmilter to postfix main.conf";
};
configFragment = mkOption {
type = types.str;
description = "Addon to postfix configuration";
default = ''
smtpd_milters = ${rmilterSocket}
milter_protocol = 6
milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}
'';
};
};
};
};
###### implementation
config = mkMerge [
(mkIf cfg.enable {
warnings = [
''`config.services.rmilter' is deprecated, `rmilter' deprecated and unsupported by upstream, and will be removed from next releases. Use built-in rspamd milter instead.''
];
users.users = singleton {
name = cfg.user;
description = "rmilter daemon";
uid = config.ids.uids.rmilter;
group = cfg.group;
};
users.groups = singleton {
name = cfg.group;
gid = config.ids.gids.rmilter;
};
systemd.services.rmilter = {
description = "Rmilter Service";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
ExecStart = "${pkgs.rmilter}/bin/rmilter ${optionalString cfg.debug "-d"} -n -c ${rmilterConfigFile}";
ExecReload = "${pkgs.coreutils}/bin/kill -USR1 $MAINPID";
User = cfg.user;
Group = cfg.group;
PermissionsStartOnly = true;
Restart = "always";
RuntimeDirectory = "rmilter";
RuntimeDirectoryMode = "0750";
};
};
systemd.sockets.rmilter = mkIf cfg.socketActivation {
description = "Rmilter service socket";
wantedBy = [ "sockets.target" ];
socketConfig = {
ListenStream = systemdSocket;
SocketUser = cfg.user;
SocketGroup = cfg.group;
SocketMode = "0660";
};
};
})
(mkIf (cfg.enable && cfg.rspamd.enable && rspamdCfg.enable) {
users.users.${cfg.user}.extraGroups = [ rspamdCfg.group ];
})
(mkIf (cfg.enable && cfg.postfix.enable) {
services.postfix.extraConfig = cfg.postfix.configFragment;
users.users.${postfixCfg.user}.extraGroups = [ cfg.group ];
})
];
}

View File

@ -200,7 +200,10 @@ in {
"zoneminder/80-nixos.conf".source = configFile;
};
networking.firewall.allowedTCPPorts = lib.mkIf cfg.openFirewall [ cfg.port ];
networking.firewall.allowedTCPPorts = lib.mkIf cfg.openFirewall [
cfg.port
6802 # zmtrigger
];
services = {
fcgiwrap = lib.mkIf useNginx {

View File

@ -136,10 +136,16 @@ in
"/.dns/127.0.0.1#${toString cfg.dns.port}"
];
services.pdns-recursor.forwardZones = mkIf cfgs.pdns-recursor.resolveDNSChainQueries
{ bit = "127.0.0.1:${toString cfg.dns.port}";
dns = "127.0.0.1:${toString cfg.dns.port}";
};
services.pdns-recursor = mkIf cfgs.pdns-recursor.resolveDNSChainQueries {
forwardZones =
{ bit = "127.0.0.1:${toString cfg.dns.port}";
dns = "127.0.0.1:${toString cfg.dns.port}";
};
luaConfig =''
addNTA("bit", "namecoin doesn't support DNSSEC")
addNTA("dns", "namecoin doesn't support DNSSEC")
'';
};
users.users = singleton {
name = username;

View File

@ -13,7 +13,7 @@ let
configSettings = {
storage = dataDir;
p2p = {
public_address = "/ip4/127.0.0.1/tcp/8606";
public_address = "/ip4/127.0.0.1/tcp/8299";
messages = "high";
blocks = "high";
};

View File

@ -6,25 +6,27 @@ let
dataDir = "/var/lib/pdns-recursor";
username = "pdns-recursor";
cfg = config.services.pdns-recursor;
zones = mapAttrsToList (zone: uri: "${zone}.=${uri}") cfg.forwardZones;
cfg = config.services.pdns-recursor;
configFile = pkgs.writeText "recursor.conf" ''
local-address=${cfg.dns.address}
local-port=${toString cfg.dns.port}
allow-from=${concatStringsSep "," cfg.dns.allowFrom}
oneOrMore = type: with types; either type (listOf type);
valueType = with types; oneOf [ int str bool path ];
configType = with types; attrsOf (nullOr (oneOrMore valueType));
webserver-address=${cfg.api.address}
webserver-port=${toString cfg.api.port}
webserver-allow-from=${concatStringsSep "," cfg.api.allowFrom}
toBool = val: if val then "yes" else "no";
serialize = val: with types;
if str.check val then val
else if int.check val then toString val
else if path.check val then toString val
else if bool.check val then toBool val
else if builtins.isList val then (concatMapStringsSep "," serialize val)
else "";
forward-zones=${concatStringsSep "," zones}
export-etc-hosts=${if cfg.exportHosts then "yes" else "no"}
dnssec=${cfg.dnssecValidation}
serve-rfc1918=${if cfg.serveRFC1918 then "yes" else "no"}
configFile = pkgs.writeText "recursor.conf"
(concatStringsSep "\n"
(flip mapAttrsToList cfg.settings
(name: val: "${name}=${serialize val}")));
${cfg.extraConfig}
'';
mkDefaultAttrs = mapAttrs (n: v: mkDefault v);
in {
options.services.pdns-recursor = {
@ -117,17 +119,55 @@ in {
'';
};
extraConfig = mkOption {
settings = mkOption {
type = configType;
default = { };
example = literalExample ''
{
loglevel = 8;
log-common-errors = true;
}
'';
description = ''
PowerDNS Recursor settings. Use this option to configure Recursor
settings not exposed in a NixOS option or to bypass one.
See the full documentation at
<link xlink:href="https://doc.powerdns.com/recursor/settings.html"/>
for the available options.
'';
};
luaConfig = mkOption {
type = types.lines;
default = "";
description = ''
Extra options to be appended to the configuration file.
The content Lua configuration file for PowerDNS Recursor. See
<link xlink:href="https://doc.powerdns.com/recursor/lua-config/index.html"/>.
'';
};
};
config = mkIf cfg.enable {
services.pdns-recursor.settings = mkDefaultAttrs {
local-address = cfg.dns.address;
local-port = cfg.dns.port;
allow-from = cfg.dns.allowFrom;
webserver-address = cfg.api.address;
webserver-port = cfg.api.port;
webserver-allow-from = cfg.api.allowFrom;
forward-zones = mapAttrsToList (zone: uri: "${zone}.=${uri}") cfg.forwardZones;
export-etc-hosts = cfg.exportHosts;
dnssec = cfg.dnssecValidation;
serve-rfc1918 = cfg.serveRFC1918;
lua-config-file = pkgs.writeText "recursor.lua" cfg.luaConfig;
log-timestamp = false;
disable-syslog = true;
};
users.users."${username}" = {
home = dataDir;
createHome = true;
@ -150,8 +190,7 @@ in {
AmbientCapabilities = "cap_net_bind_service";
ExecStart = ''${pkgs.pdns-recursor}/bin/pdns_recursor \
--config-dir=${dataDir} \
--socket-dir=${dataDir} \
--disable-syslog
--socket-dir=${dataDir}
'';
};
@ -165,4 +204,10 @@ in {
'';
};
};
imports = [
(mkRemovedOptionModule [ "services" "pdns-recursor" "extraConfig" ]
"To change extra Recursor settings use services.pdns-recursor.settings instead.")
];
}

View File

@ -176,6 +176,7 @@ in
Type = "simple";
ExecStart = "${(removeSuffix "\n" cmd)} start";
ExecStop = "${(removeSuffix "\n" cmd)} stop";
Restart = "on-failure";
User = "unifi";
UMask = "0077";
WorkingDirectory = "${stateDir}";

View File

@ -84,6 +84,18 @@ in
The directory where transmission will create files.
'';
};
user = mkOption {
type = types.str;
default = "transmission";
description = "User account under which Transmission runs.";
};
group = mkOption {
type = types.str;
default = "transmission";
description = "Group account under which Transmission runs.";
};
};
};
@ -99,7 +111,8 @@ in
serviceConfig.ExecStartPre = preStart;
serviceConfig.ExecStart = "${pkgs.transmission}/bin/transmission-daemon -f --port ${toString config.services.transmission.port}";
serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
serviceConfig.User = "transmission";
serviceConfig.User = cfg.user;
serviceConfig.Group = cfg.group;
# NOTE: transmission has an internal umask that also must be set (in settings.json)
serviceConfig.UMask = "0002";
};
@ -107,14 +120,19 @@ in
# It's useful to have transmission in path, e.g. for remote control
environment.systemPackages = [ pkgs.transmission ];
users.groups.transmission.gid = config.ids.gids.transmission;
users.users.transmission = {
group = "transmission";
uid = config.ids.uids.transmission;
description = "Transmission BitTorrent user";
home = homeDir;
createHome = true;
};
users.users = optionalAttrs (cfg.user == "transmission") (singleton
{ name = "transmission";
group = cfg.group;
uid = config.ids.uids.transmission;
description = "Transmission BitTorrent user";
home = homeDir;
createHome = true;
});
users.groups = optionalAttrs (cfg.group == "transmission") (singleton
{ name = "transmission";
gid = config.ids.gids.transmission;
});
# AppArmor profile
security.apparmor.profiles = mkIf apparmor [

View File

@ -176,7 +176,7 @@ in {
# Use User-Private Group scheme to protect Matomo data, but allow administration / backup via 'matomo' group
# Copy config folder
chmod g+s "${dataDir}"
cp -r "${cfg.package}/config" "${dataDir}/"
cp -r "${cfg.package}/share/config" "${dataDir}/"
chmod -R u+rwX,g+rwX,o-rwx "${dataDir}"
# check whether user setup has already been done

View File

@ -0,0 +1,300 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkDefault mkEnableOption mkForce mkIf mkMerge mkOption types;
inherit (lib) concatStringsSep literalExample mapAttrsToList optional optionalString;
cfg = config.services.moodle;
fpm = config.services.phpfpm.pools.moodle;
user = "moodle";
group = config.services.httpd.group;
stateDir = "/var/lib/moodle";
moodleConfig = pkgs.writeText "config.php" ''
<?php // Moodle configuration file
unset($CFG);
global $CFG;
$CFG = new stdClass();
$CFG->dbtype = '${ { "mysql" = "mariadb"; "pgsql" = "pgsql"; }.${cfg.database.type} }';
$CFG->dblibrary = 'native';
$CFG->dbhost = '${cfg.database.host}';
$CFG->dbname = '${cfg.database.name}';
$CFG->dbuser = '${cfg.database.user}';
${optionalString (cfg.database.passwordFile != null) "$CFG->dbpass = file_get_contents('${cfg.database.passwordFile}');"}
$CFG->prefix = 'mdl_';
$CFG->dboptions = array (
'dbpersist' => 0,
'dbport' => '${toString cfg.database.port}',
${optionalString (cfg.database.socket != null) "'dbsocket' => '${cfg.database.socket}',"}
'dbcollation' => 'utf8mb4_unicode_ci',
);
$CFG->wwwroot = '${if cfg.virtualHost.enableSSL then "https" else "http"}://${cfg.virtualHost.hostName}';
$CFG->dataroot = '${stateDir}';
$CFG->admin = 'admin';
$CFG->directorypermissions = 02777;
$CFG->disableupdateautodeploy = true;
$CFG->pathtogs = '${pkgs.ghostscript}/bin/gs';
$CFG->pathtophp = '${pkgs.php}/bin/php';
$CFG->pathtodu = '${pkgs.coreutils}/bin/du';
$CFG->aspellpath = '${pkgs.aspell}/bin/aspell';
$CFG->pathtodot = '${pkgs.graphviz}/bin/dot';
require_once('${cfg.package}/share/moodle/lib/setup.php');
// There is no php closing tag in this file,
// it is intentional because it prevents trailing whitespace problems!
'';
mysqlLocal = cfg.database.createLocally && cfg.database.type == "mysql";
pgsqlLocal = cfg.database.createLocally && cfg.database.type == "pgsql";
in
{
# interface
options.services.moodle = {
enable = mkEnableOption "Moodle web application";
package = mkOption {
type = types.package;
default = pkgs.moodle;
defaultText = "pkgs.moodle";
description = "The Moodle package to use.";
};
initialPassword = mkOption {
type = types.str;
example = "correcthorsebatterystaple";
description = ''
Specifies the initial password for the admin, i.e. the password assigned if the user does not already exist.
The password specified here is world-readable in the Nix store, so it should be changed promptly.
'';
};
database = {
type = mkOption {
type = types.enum [ "mysql" "pgsql" ];
default = "mysql";
description = ''Database engine to use.'';
};
host = mkOption {
type = types.str;
default = "localhost";
description = "Database host address.";
};
port = mkOption {
type = types.int;
description = "Database host port.";
default = {
"mysql" = 3306;
"pgsql" = 5432;
}.${cfg.database.type};
defaultText = "3306";
};
name = mkOption {
type = types.str;
default = "moodle";
description = "Database name.";
};
user = mkOption {
type = types.str;
default = "moodle";
description = "Database user.";
};
passwordFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/keys/moodle-dbpassword";
description = ''
A file containing the password corresponding to
<option>database.user</option>.
'';
};
socket = mkOption {
type = types.nullOr types.path;
default =
if mysqlLocal then "/run/mysqld/mysqld.sock"
else if pgsqlLocal then "/run/postgresql"
else null;
defaultText = "/run/mysqld/mysqld.sock";
description = "Path to the unix socket file to use for authentication.";
};
createLocally = mkOption {
type = types.bool;
default = true;
description = "Create the database and database user locally.";
};
};
virtualHost = mkOption {
type = types.submodule ({
options = import ../web-servers/apache-httpd/per-server-options.nix {
inherit lib;
forMainServer = false;
};
});
example = {
hostName = "moodle.example.org";
enableSSL = true;
adminAddr = "webmaster@example.org";
sslServerCert = "/var/lib/acme/moodle.example.org/full.pem";
sslServerKey = "/var/lib/acme/moodle.example.org/key.pem";
};
description = ''
Apache configuration can be done by adapting <option>services.httpd.virtualHosts</option>.
See <xref linkend="opt-services.httpd.virtualHosts"/> for further information.
'';
};
poolConfig = mkOption {
type = with types; attrsOf (oneOf [ str int bool ]);
default = {
"pm" = "dynamic";
"pm.max_children" = 32;
"pm.start_servers" = 2;
"pm.min_spare_servers" = 2;
"pm.max_spare_servers" = 4;
"pm.max_requests" = 500;
};
description = ''
Options for the Moodle PHP pool. See the documentation on <literal>php-fpm.conf</literal>
for details on configuration directives.
'';
};
};
# implementation
config = mkIf cfg.enable {
assertions = [
{ assertion = cfg.database.createLocally -> cfg.database.user == user;
message = "services.moodle.database.user must be set to ${user} if services.moodle.database.createLocally is set true";
}
{ assertion = cfg.database.createLocally -> cfg.database.passwordFile == null;
message = "a password cannot be specified if services.moodle.database.createLocally is set to true";
}
];
services.mysql = mkIf mysqlLocal {
enable = true;
package = mkDefault pkgs.mariadb;
ensureDatabases = [ cfg.database.name ];
ensureUsers = [
{ name = cfg.database.user;
ensurePermissions = {
"${cfg.database.name}.*" = "SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER";
};
}
];
};
services.postgresql = mkIf pgsqlLocal {
enable = true;
ensureDatabases = [ cfg.database.name ];
ensureUsers = [
{ name = cfg.database.user;
ensurePermissions = { "DATABASE ${cfg.database.name}" = "ALL PRIVILEGES"; };
}
];
};
services.phpfpm.pools.moodle = {
inherit user group;
phpEnv.MOODLE_CONFIG = "${moodleConfig}";
phpOptions = ''
zend_extension = opcache.so
opcache.enable = 1
'';
settings = {
"listen.owner" = config.services.httpd.user;
"listen.group" = config.services.httpd.group;
} // cfg.poolConfig;
};
services.httpd = {
enable = true;
adminAddr = mkDefault cfg.virtualHost.adminAddr;
extraModules = [ "proxy_fcgi" ];
virtualHosts = [ (mkMerge [
cfg.virtualHost {
documentRoot = mkForce "${cfg.package}/share/moodle";
extraConfig = ''
<Directory "${cfg.package}/share/moodle">
<FilesMatch "\.php$">
<If "-f %{REQUEST_FILENAME}">
SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/"
</If>
</FilesMatch>
Options -Indexes
DirectoryIndex index.php
</Directory>
'';
}
]) ];
};
systemd.tmpfiles.rules = [
"d '${stateDir}' 0750 ${user} ${group} - -"
];
systemd.services.moodle-init = {
wantedBy = [ "multi-user.target" ];
before = [ "phpfpm-moodle.service" ];
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
environment.MOODLE_CONFIG = moodleConfig;
script = ''
${pkgs.php}/bin/php ${cfg.package}/share/moodle/admin/cli/check_database_schema.php && rc=$? || rc=$?
[ "$rc" == 1 ] && ${pkgs.php}/bin/php ${cfg.package}/share/moodle/admin/cli/upgrade.php \
--non-interactive \
--allow-unstable
[ "$rc" == 2 ] && ${pkgs.php}/bin/php ${cfg.package}/share/moodle/admin/cli/install_database.php \
--agree-license \
--adminpass=${cfg.initialPassword}
true
'';
serviceConfig = {
User = user;
Group = group;
Type = "oneshot";
};
};
systemd.services.moodle-cron = {
description = "Moodle cron service";
after = [ "moodle-init.service" ];
environment.MOODLE_CONFIG = moodleConfig;
serviceConfig = {
User = user;
Group = group;
ExecStart = "${pkgs.php}/bin/php ${cfg.package}/share/moodle/admin/cli/cron.php";
};
};
systemd.timers.moodle-cron = {
description = "Moodle cron timer";
wantedBy = [ "timers.target" ];
timerConfig = {
OnCalendar = "minutely";
};
};
systemd.services.httpd.after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
users.users."${user}".group = group;
};
}

View File

@ -0,0 +1,77 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.darkhttpd;
args = concatStringsSep " " ([
cfg.rootDir
"--port ${toString cfg.port}"
"--addr ${cfg.address}"
] ++ cfg.extraArgs
++ optional cfg.hideServerId "--no-server-id"
++ optional config.networking.enableIPv6 "--ipv6");
in {
options.services.darkhttpd = with types; {
enable = mkEnableOption "DarkHTTPd web server";
port = mkOption {
default = 80;
type = ints.u16;
description = ''
Port to listen on.
Pass 0 to let the system choose any free port for you.
'';
};
address = mkOption {
default = "127.0.0.1";
type = str;
description = ''
Address to listen on.
Pass `all` to listen on all interfaces.
'';
};
rootDir = mkOption {
type = path;
description = ''
Path from which to serve files.
'';
};
hideServerId = mkOption {
type = bool;
default = true;
description = ''
Don't identify the server type in headers or directory listings.
'';
};
extraArgs = mkOption {
type = listOf str;
default = [];
description = ''
Additional configuration passed to the executable.
'';
};
};
config = mkIf cfg.enable {
systemd.services.darkhttpd = {
description = "Dark HTTPd";
wants = [ "network.target" ];
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
DynamicUser = true;
ExecStart = "${cfg.package}/bin/darkhttpd ${args}";
AmbientCapabilities = lib.mkIf (cfg.port < 1024) [ "CAP_NET_BIND_SERVICE" ];
Restart = "on-failure";
RestartSec = "2s";
};
};
};
}

View File

@ -3,7 +3,9 @@
with lib;
let
cfg = config.services.xserver.desktopManager.gnome3;
serviceCfg = config.services.gnome3;
# Prioritize nautilus by default when opening directories
mimeAppsList = pkgs.writeTextFile {
@ -45,10 +47,19 @@ let
flashbackEnabled = cfg.flashback.enableMetacity || length cfg.flashback.customSessions > 0;
in {
in
{
options = {
services.gnome3 = {
core-os-services.enable = mkEnableOption "essential services for GNOME3";
core-shell.enable = mkEnableOption "GNOME Shell services";
core-utilities.enable = mkEnableOption "GNOME core utilities";
games.enable = mkEnableOption "GNOME games";
};
services.xserver.desktopManager.gnome3 = {
enable = mkOption {
default = false;
@ -121,63 +132,40 @@ in {
};
config = mkIf cfg.enable {
config = mkMerge [
(mkIf (cfg.enable || flashbackEnabled) {
services.gnome3.core-os-services.enable = true;
services.gnome3.core-shell.enable = true;
services.gnome3.core-utilities.enable = mkDefault true;
# Enable helpful DBus services.
security.polkit.enable = true;
services.udisks2.enable = true;
services.accounts-daemon.enable = true;
services.dleyna-renderer.enable = mkDefault true;
services.dleyna-server.enable = mkDefault true;
services.gnome3.at-spi2-core.enable = true;
services.gnome3.evolution-data-server.enable = true;
services.gnome3.glib-networking.enable = true;
services.gnome3.gnome-keyring.enable = true;
services.gnome3.gnome-online-accounts.enable = mkDefault true;
services.gnome3.gnome-remote-desktop.enable = mkDefault true;
services.gnome3.gnome-settings-daemon.enable = true;
services.gnome3.gnome-user-share.enable = mkDefault true;
services.gvfs.enable = true;
services.gnome3.rygel.enable = mkDefault true;
services.gnome3.seahorse.enable = mkDefault true;
services.gnome3.sushi.enable = mkDefault true;
services.gnome3.tracker.enable = mkDefault true;
services.gnome3.tracker-miners.enable = mkDefault true;
hardware.pulseaudio.enable = mkDefault true;
services.telepathy.enable = mkDefault true;
networking.networkmanager.enable = mkDefault true;
services.upower.enable = config.powerManagement.enable;
services.dbus.packages =
optional config.services.printing.enable pkgs.system-config-printer ++
optional flashbackEnabled pkgs.gnome3.gnome-screensaver;
services.colord.enable = mkDefault true;
services.packagekit.enable = mkDefault true;
hardware.bluetooth.enable = mkDefault true;
services.hardware.bolt.enable = mkDefault true;
services.xserver.libinput.enable = mkDefault true; # for controlling touchpad settings via gnome control center
systemd.packages = [ pkgs.gnome3.vino ];
xdg.portal.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ];
# Enable default programs
programs.dconf.enable = true;
programs.evince.enable = mkDefault true;
programs.file-roller.enable = mkDefault true;
programs.gnome-disks.enable = mkDefault true;
programs.gnome-documents.enable = mkDefault true;
programs.gnome-terminal.enable = mkDefault true;
environment.extraInit = ''
${concatMapStrings (p: ''
if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
fi
# If gnome3 is installed, build vim for gtk3 too.
nixpkgs.config.vim.gui = "gtk3";
if [ -d "${p}/lib/girepository-1.0" ]; then
export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
fi
'') cfg.sessionPath}
'';
fonts.fonts = [
pkgs.dejavu_fonts pkgs.cantarell-fonts
pkgs.source-sans-pro
pkgs.source-code-pro # Default monospace font in 3.32
];
environment.systemPackages = cfg.sessionPath;
services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ]
++ map
environment.variables.GNOME_SESSION_DEBUG = mkIf cfg.debug "1";
# Override GSettings schemas
environment.variables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
# If gnome3 is installed, build vim for gtk3 too.
nixpkgs.config.vim.gui = "gtk3";
})
(mkIf flashbackEnabled {
services.xserver.displayManager.extraSessionFilePackages = map
(wm: pkgs.gnome3.gnome-flashback.mkSessionForWm {
inherit (wm) wmName wmLabel wmCommand;
}) (optional cfg.flashback.enableMetacity {
@ -186,73 +174,152 @@ in {
wmCommand = "${pkgs.gnome3.metacity}/bin/metacity";
} ++ cfg.flashback.customSessions);
environment.extraInit = ''
${concatMapStrings (p: ''
if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
fi
security.pam.services.gnome-screensaver = {
enableGnomeKeyring = true;
};
if [ -d "${p}/lib/girepository-1.0" ]; then
export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
fi
'') cfg.sessionPath}
'';
services.dbus.packages = [
pkgs.gnome3.gnome-screensaver
];
})
(mkIf serviceCfg.core-os-services.enable {
hardware.bluetooth.enable = mkDefault true;
hardware.pulseaudio.enable = mkDefault true;
programs.dconf.enable = true;
security.polkit.enable = true;
services.accounts-daemon.enable = true;
services.dleyna-renderer.enable = mkDefault true;
services.dleyna-server.enable = mkDefault true;
services.gnome3.at-spi2-core.enable = true;
services.gnome3.evolution-data-server.enable = true;
services.gnome3.gnome-keyring.enable = true;
services.gnome3.gnome-online-accounts.enable = mkDefault true;
services.gnome3.gnome-online-miners.enable = true;
services.gnome3.tracker-miners.enable = mkDefault true;
services.gnome3.tracker.enable = mkDefault true;
services.hardware.bolt.enable = mkDefault true;
services.packagekit.enable = mkDefault true;
services.udisks2.enable = true;
services.upower.enable = config.powerManagement.enable;
services.xserver.libinput.enable = mkDefault true; # for controlling touchpad settings via gnome control center
services.geoclue2.enable = mkDefault true;
# GNOME should have its own geoclue agent
services.geoclue2.enableDemoAgent = false;
xdg.portal.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
services.geoclue2.appConfig."gnome-datetime-panel" = {
isAllowed = true;
isSystem = true;
};
services.geoclue2.appConfig."gnome-color-panel" = {
isAllowed = true;
isSystem = true;
};
services.geoclue2.appConfig."org.gnome.Shell" = {
isAllowed = true;
isSystem = true;
};
networking.networkmanager.enable = mkDefault true;
environment.variables.GNOME_SESSION_DEBUG = optionalString cfg.debug "1";
# Override default mimeapps
environment.variables.XDG_DATA_DIRS = [ "${mimeAppsList}/share" ];
# Override GSettings schemas
environment.variables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
# Let nautilus find extensions
# TODO: Create nautilus-with-extensions package
environment.variables.NAUTILUS_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-3.0";
services.xserver.updateDbusEnvironment = true;
environment.systemPackages = pkgs.gnome3.corePackages ++ cfg.sessionPath
++ (pkgs.gnome3.removePackagesByName pkgs.gnome3.optionalPackages config.environment.gnome3.excludePackages) ++ [
pkgs.xdg-user-dirs # Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
];
# Use the correct gnome3 packageSet
networking.networkmanager.basePackages =
{ inherit (pkgs) networkmanager modemmanager wpa_supplicant crda;
# Use the correct gnome3 packageSet
networking.networkmanager.basePackages = {
inherit (pkgs) networkmanager modemmanager wpa_supplicant crda;
inherit (pkgs.gnome3) networkmanager-openvpn networkmanager-vpnc
networkmanager-openconnect networkmanager-fortisslvpn
networkmanager-iodine networkmanager-l2tp; };
networkmanager-openconnect networkmanager-fortisslvpn
networkmanager-iodine networkmanager-l2tp;
};
# Needed for themes and backgrounds
environment.pathsToLink = [
"/share"
"/share/nautilus-python/extensions"
];
services.xserver.updateDbusEnvironment = true;
security.pam.services.gnome-screensaver = mkIf flashbackEnabled {
enableGnomeKeyring = true;
};
};
# Needed for themes and backgrounds
environment.pathsToLink = [
"/share" # TODO: https://github.com/NixOS/nixpkgs/issues/47173
];
})
(mkIf serviceCfg.core-shell.enable {
services.colord.enable = mkDefault true;
services.gnome3.glib-networking.enable = true;
services.gnome3.gnome-remote-desktop.enable = mkDefault true;
services.gnome3.gnome-settings-daemon.enable = true;
services.gnome3.gnome-user-share.enable = mkDefault true;
services.gnome3.rygel.enable = mkDefault true;
services.gvfs.enable = true;
services.telepathy.enable = mkDefault true;
systemd.packages = [ pkgs.gnome3.vino ];
services.dbus.packages =
optional config.services.printing.enable pkgs.system-config-printer;
services.geoclue2.enable = mkDefault true;
services.geoclue2.enableDemoAgent = false; # GNOME has its own geoclue agent
services.geoclue2.appConfig."gnome-datetime-panel" = {
isAllowed = true;
isSystem = true;
};
services.geoclue2.appConfig."gnome-color-panel" = {
isAllowed = true;
isSystem = true;
};
services.geoclue2.appConfig."org.gnome.Shell" = {
isAllowed = true;
isSystem = true;
};
fonts.fonts = with pkgs; [
cantarell-fonts
dejavu_fonts
source-code-pro # Default monospace font in 3.32
source-sans-pro
];
environment.systemPackages = with pkgs.gnome3; [
adwaita-icon-theme
gnome-backgrounds
gnome-bluetooth
gnome-control-center
gnome-getting-started-docs
gnome-shell
gnome-shell-extensions
gnome-themes-extra
gnome-user-docs
pkgs.glib # for gsettings
pkgs.gnome-menus
pkgs.gtk3.out # for gtk-launch
pkgs.hicolor-icon-theme
pkgs.shared-mime-info # for update-mime-database
pkgs.xdg-user-dirs # Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
vino
];
})
(mkIf serviceCfg.core-utilities.enable {
environment.systemPackages = (with pkgs.gnome3; removePackagesByName [
baobab eog epiphany evince gucharmap nautilus totem yelp gnome-calculator
gnome-contacts gnome-font-viewer gnome-screenshot gnome-system-monitor simple-scan
gnome-terminal evolution file-roller gedit gnome-clocks gnome-music gnome-tweaks
pkgs.gnome-photos nautilus-sendto dconf-editor vinagre gnome-weather gnome-logs
gnome-maps gnome-characters gnome-calendar accerciser gnome-nettool gnome-packagekit
gnome-software gnome-power-manager gnome-todo pkgs.gnome-usage
] config.environment.gnome3.excludePackages);
# Enable default programs
programs.evince.enable = mkDefault true;
programs.file-roller.enable = mkDefault true;
programs.gnome-disks.enable = mkDefault true;
programs.gnome-documents.enable = mkDefault true;
programs.gnome-terminal.enable = mkDefault true;
services.gnome3.seahorse.enable = mkDefault true;
services.gnome3.sushi.enable = mkDefault true;
# Let nautilus find extensions
# TODO: Create nautilus-with-extensions package
environment.variables.NAUTILUS_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-3.0";
# Override default mimeapps for nautilus
environment.variables.XDG_DATA_DIRS = [ "${mimeAppsList}/share" ];
environment.pathsToLink = [
"/share/nautilus-python/extensions"
];
})
(mkIf serviceCfg.games.enable {
environment.systemPackages = (with pkgs.gnome3; removePackagesByName [
aisleriot atomix five-or-more four-in-a-row gnome-chess gnome-klotski
gnome-mahjongg gnome-mines gnome-nibbles gnome-robots gnome-sudoku
gnome-taquin gnome-tetravex hitori iagno lightsoff quadrapassel
swell-foop tali
] config.environment.gnome3.excludePackages);
})
];
}

View File

@ -537,7 +537,7 @@ in
};
systemd.enableCgroupAccounting = mkOption {
default = false;
default = true;
type = types.bool;
description = ''
Whether to enable cgroup accounting.
@ -804,10 +804,10 @@ in
[Manager]
${optionalString config.systemd.enableCgroupAccounting ''
DefaultCPUAccounting=yes
DefaultBlockIOAccounting=yes
DefaultIOAccounting=yes
DefaultBlockIOAccounting=yes
DefaultMemoryAccounting=yes
DefaultTasksAccounting=yes
DefaultIPAccounting=yes
''}
DefaultLimitCORE=infinity
${config.systemd.extraConfig}

View File

@ -161,6 +161,7 @@ in
minio = handleTest ./minio.nix {};
misc = handleTest ./misc.nix {};
mongodb = handleTest ./mongodb.nix {};
moodle = handleTest ./moodle.nix {};
morty = handleTest ./morty.nix {};
mosquitto = handleTest ./mosquitto.nix {};
mpd = handleTest ./mpd.nix {};

View File

@ -5,9 +5,17 @@ import ./make-test.nix ({ pkgs, ... }: {
};
nodes = {
# Testing the Byzantine Fault Tolerant protocol
bft = { ... }: {
environment.systemPackages = [ pkgs.jormungandr ];
services.jormungandr.enable = true;
services.jormungandr.genesisBlockFile = "/var/lib/jormungandr/block-0.bin";
services.jormungandr.secretFile = "/etc/secrets/jormungandr.yaml";
};
# Testing the Ouroboros Genesis Praos protocol
genesis = { ... }: {
environment.systemPackages = [ pkgs.jormungandr ];
services.jormungandr.enable = true;
services.jormungandr.genesisBlockFile = "/var/lib/jormungandr/block-0.bin";
services.jormungandr.secretFile = "/etc/secrets/jormungandr.yaml";
@ -17,6 +25,7 @@ import ./make-test.nix ({ pkgs, ... }: {
testScript = ''
startAll;
## Testing BFT
# Let's wait for the StateDirectory
$bft->waitForFile("/var/lib/jormungandr/");
@ -45,5 +54,24 @@ import ./make-test.nix ({ pkgs, ... }: {
# Now we can test if we are able to reach the REST API
$bft->waitUntilSucceeds("curl -L http://localhost:8607/api/v0/node/stats | grep uptime");
## Testing Genesis
# Let's wait for the StateDirectory
$genesis->waitForFile("/var/lib/jormungandr/");
# Bootstraping the configuration
$genesis->succeed("jormungandr-bootstrap -g -p 8607 -s 1");
# Moving generated files in place
$genesis->succeed("mkdir -p /etc/secrets");
$genesis->succeed("mv pool-secret1.yaml /etc/secrets/jormungandr.yaml");
$genesis->succeed("mv block-0.bin /var/lib/jormungandr/");
# We should have everything to start the service now
$genesis->succeed("systemctl restart jormungandr");
$genesis->waitForUnit("jormungandr.service");
# Now we can create and delegate an account
$genesis->succeed("./create-account-and-delegate.sh | tee -a /tmp/delegate.log");
'';
})

22
nixos/tests/moodle.nix Normal file
View File

@ -0,0 +1,22 @@
import ./make-test.nix ({ pkgs, lib, ... }: {
name = "moodle";
meta.maintainers = [ lib.maintainers.aanderse ];
machine =
{ ... }:
{ services.moodle.enable = true;
services.moodle.virtualHost.hostName = "localhost";
services.moodle.virtualHost.adminAddr = "root@example.com";
services.moodle.initialPassword = "correcthorsebatterystaple";
# Ensure the virtual machine has enough memory to avoid errors like:
# Fatal error: Out of memory (allocated 152047616) (tried to allocate 33554440 bytes)
virtualisation.memorySize = 2000;
};
testScript = ''
startAll;
$machine->waitForUnit('phpfpm-moodle.service');
$machine->succeed('curl http://localhost/') =~ /You are not logged in/ or die;
'';
})

View File

@ -89,5 +89,12 @@ import ./make-test.nix ({ pkgs, ... }: {
$machine->waitForUnit('multi-user.target');
$machine->succeed('sysctl net.core.default_qdisc | grep -q "fq_codel"');
};
# Test cgroup accounting is enabled
subtest "systemd cgroup accounting is enabled", sub {
$machine->waitForUnit('multi-user.target');
$machine->succeed('systemctl show testservice1.service -p IOAccounting | grep -q "yes"');
$machine->succeed('systemctl status testservice1.service | grep -q "CPU:"');
};
'';
})

View File

@ -16,15 +16,15 @@ stdenv.mkDerivation rec {
sha256 = "06ij9v7zbdnhxq9429nnxiw655cp8idldj18l7fmj94gqx07n5vh";
};
patches = [ ./fix-bitcoin-qt-build.patch ];
nativeBuildInputs = [ pkgconfig autoreconfHook ];
buildInputs = [ openssl db48 boost zlib
miniupnpc utillinux protobuf libevent ]
++ optionals withGui [ qtbase qttools qrencode ];
configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ]
++ optionals withGui [ "--with-gui=qt5" ];
++ optionals withGui [ "--with-gui=qt5"
"--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin"
];
enableParallelBuilding = true;

View File

@ -24,6 +24,22 @@ rustPlatform.buildRustPackage rec {
nativeBuildInputs = [ pkgconfig protobuf ];
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
patchPhase = ''
sed -i "s~SCRIPTPATH=.*~SCRIPTPATH=$out/templates/~g" scripts/bootstrap
'';
installPhase = ''
install -d $out/bin $out/templates
install -m755 target/*/release/jormungandr $out/bin/
install -m755 target/*/release/jcli $out/bin/
install -m755 scripts/send-transaction $out/templates
install -m755 scripts/jcli-helpers $out/bin/
install -m755 scripts/bootstrap $out/bin/jormungandr-bootstrap
install -m644 scripts/faucet-send-money.shtempl $out/templates/
install -m644 scripts/create-account-and-delegate.shtempl $out/templates/
install -m644 scripts/faucet-send-certificate.shtempl $out/templates/
'';
PROTOC = "${protobuf}/bin/protoc";
# Disabling integration tests

View File

@ -28,13 +28,13 @@ let
in
with stdenv.lib; stdenv.mkDerivation rec {
pname = "VCV-Rack";
version = "1.1.3";
version = "1.1.4";
src = fetchFromGitHub {
owner = "VCVRack";
repo = "Rack";
rev = "v${version}";
sha256 = "16q3x0jpwkdwwvh7rn472w7nfjf81s10z9c7bx011kk7rgk88hh2";
sha256 = "04kg0nm7w19s2zfrsxjfl3bs4sy3bzf28kzl4hayzwv480667ybx";
fetchSubmodules = true;
};
@ -78,7 +78,7 @@ with stdenv.lib; stdenv.mkDerivation rec {
# The source is BSD-3 licensed, some of the art is CC-BY-NC 4.0 or under a
# no-derivatives clause
license = with licenses; [ bsd3 cc-by-nc-40 unfreeRedistributable ];
maintainers = with maintainers; [ moredread ];
maintainers = with maintainers; [ moredread nathyong ];
platforms = platforms.linux;
};
}

View File

@ -33,8 +33,6 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
inherit (import ./libgenerated.nix lib self) melpaDerivation;
super = lib.listToAttrs (map (melpaDerivation variant) (lib.importJSON archiveJson));
generic = import ./melpa-generic.nix;
overrides = rec {
shared = {
# Expects bash to be at /bin/bash
@ -131,20 +129,20 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
# upstream issue: missing file header
initsplit = markBroken super.initsplit;
irony = super.irony.overrideAttrs(old: {
irony = super.irony.overrideAttrs (old: {
cmakeFlags = old.cmakeFlags or [] ++ [ "-DCMAKE_INSTALL_BINDIR=bin" ];
preConfigure = ''
cd server
'';
preBuild = ''
make
install -D bin/irony-server $out/bin/irony-server
cd ..
'';
postInstall = ''
mkdir -p $out
mv $out/share/emacs/site-lisp/elpa/*/server/bin $out
rm -rf $out/share/emacs/site-lisp/elpa/*/server
'';
preCheck = ''
checkPhase = ''
cd source/server
make check
cd ../..
'';
dontUseCmakeBuildDir = true;
doCheck = true;
@ -396,13 +394,6 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
# Expects bash to be at /bin/bash
helm-rtags = markBroken super.helm-rtags;
# Fails with "package does not untar cleanly into ..."
irony = shared.irony.overrideAttrs(old: {
meta = old.meta // {
broken = true;
};
});
orgit =
(super.orgit.overrideAttrs (attrs: {
# searches for Git at build time

View File

@ -20,11 +20,11 @@ let
in stdenv.mkDerivation rec {
pname = "nano";
version = "4.3";
version = "4.4";
src = fetchurl {
url = "mirror://gnu/nano/${pname}-${version}.tar.xz";
sha256 = "108dzj6azqmini9bvgl26r0q1y59s3nnrw75hfzv91bs50davlq0";
sha256 = "1iw2ypq34g1gfqyhgka2fz5yj5vrlz85q6zk7amgyj286ph25wia";
};
nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext;

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, pkgconfig, qmake
{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig, qmake
, python, qtbase, qttools }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "tiled";
version = "1.2.4";

View File

@ -2,7 +2,7 @@
buildGoModule rec {
pname = "hugo";
version = "0.55.4";
version = "0.57.2";
goPackagePath = "github.com/gohugoio/hugo";
@ -10,10 +10,10 @@ buildGoModule rec {
owner = "gohugoio";
repo = "hugo";
rev = "v${version}";
sha256 = "0hbkl8dhhdic0admrkvlp1h1bmfrrwfnvipx27clyk0f88jcvb7y";
sha256 = "1cqvm2fj6hh2n9iv67vamhn23fbxmmwciks0r4h4y0hapzlzpyd8";
};
modSha256 = "0yrwkaaasj9ihjjfbywnzkppix1y2znagg3dkyikk21sl5n0nz23";
modSha256 = "09r7r1s5b2fvnzpzjarpv2lnvp6bxdfschiq6352hw631n7kkyz1";
buildFlags = "-tags extended";

View File

@ -17,9 +17,7 @@
, lsb-release
, mkDerivation
, pkgconfig
, qmake
, qtbase
, qtsvg
, qttools
, sqlite
, swig
@ -29,13 +27,13 @@
mkDerivation rec {
pname = "megasync";
version = "4.1.1.0";
version = "4.2.3.0";
src = fetchFromGitHub {
owner = "meganz";
repo = "MEGAsync";
rev = "v${version}_Linux";
sha256 = "0lc228q3s9xp78dxjn22g6anqlsy1hi7a6yfs4q3l6gyfc3qcxl2";
sha256 = "0l4yfrxjb62vc9dnlzy8rjqi68ga1bys5x5rfzs40daw13yf1adv";
fetchSubmodules = true;
};
@ -45,7 +43,6 @@ mkDerivation rec {
doxygen
lsb-release
pkgconfig
qmake
qttools
swig
];
@ -62,7 +59,6 @@ mkDerivation rec {
libuv
libzen
qtbase
qtsvg
sqlite
unzip
wget

View File

@ -1,7 +1,7 @@
{ stdenv, pkgconfig, fetchurl, buildPythonApplication
, autoreconfHook, wrapGAppsHook, gobject-introspection
, intltool, yelp-tools, itstool, libxmlxx3
, python, pygobject3, gtk3, gnome3, substituteAll
, python, pygobject3, gtk3, gnome3, substituteAll, hicolor-icon-theme
, at-spi2-atk, at-spi2-core, pyatspi, dbus, dbus-python, pyxdg
, xkbcomp, procps, lsof, coreutils, gsettings-desktop-schemas
, speechd, brltty, liblouis, setproctitle, gst_all_1, gst-python
@ -31,6 +31,7 @@ buildPythonApplication rec {
nativeBuildInputs = [
autoreconfHook wrapGAppsHook pkgconfig libxmlxx3
intltool yelp-tools itstool gobject-introspection
hicolor-icon-theme # setup-hook
];
propagatedBuildInputs = [

View File

@ -0,0 +1,24 @@
{ stdenv, rustPlatform, fetchFromGitHub }:
rustPlatform.buildRustPackage rec {
pname = "rsClock";
version = "0.1.0";
src = fetchFromGitHub {
owner = "valebes";
repo = pname;
rev = "v${version}";
sha256 = "1fpidswkgpf9yr4vxqn38livz6r3z5i0lhg7ngj9f1ki4yqxn9zh";
};
cargoSha256 = "1m0lm8xh1qp0cbx870xy2m0bv047mb00vcwzq7r5gxqx8n61qm4n";
meta = with stdenv.lib; {
description = "A simple terminal clock written in Rust";
homepage = "https://github.com/valebes/rsClock";
license = licenses.mit;
maintainers = with maintainers; [valebes];
platforms = platforms.all;
};
}

View File

@ -1,17 +1,17 @@
{ stdenv, fetchurl, lib, qt4, openssl, autoconf, automake, pkgconfig }:
{ stdenv, fetchurl, lib, qt4, openssl, pkgconfig }:
stdenv.mkDerivation rec {
pname = "yate";
version = "6.0.0-1";
version = "6.1.0-1";
src = fetchurl {
url = "http://voip.null.ro/tarballs/yate${lib.versions.major version}/${pname}-${version}.tar.gz";
sha256 = "05qqdhi3rp5660gq1484jkmxkm9vq81j0yr765h0gf0xclan1dqa";
sha256 = "0xx3i997nsf2wzbv6m5n6adsym0qhgc6xg4rsv0fwqrgisf5327d";
};
# TODO zaptel ? postgres ?
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ qt4 openssl autoconf automake ];
buildInputs = [ qt4 openssl ];
# /dev/null is used when linking which is a impure path for the wrapper
preConfigure =

View File

@ -100,11 +100,11 @@ let
flash = stdenv.mkDerivation rec {
pname = "flashplayer-ppapi";
version = "32.0.0.223";
version = "32.0.0.238";
src = fetchzip {
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
sha256 = "0xm6jcdip4gki267ldw106l5j43im0ji2zjsarvi7n2nvvnwwgnl";
sha256 = "0jqx68lfqjpy6wbxdi0giclvh9mc9rha92hqdj1nx42v95k3gc65";
stripRoot = false;
};

View File

@ -17,11 +17,11 @@ let
vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi";
in stdenv.mkDerivation rec {
pname = "vivaldi";
version = "2.6.1566.51-1";
version = "2.7.1628.30-1";
src = fetchurl {
url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}_amd64.deb";
sha256 = "0582f16saldgn482806f9igb97is4p3ayvh99j0wx9plxnyq5xmm";
sha256 = "1lz8adwiwll8g246s5pa0ipfraph51s9f4lcfysdrp1s3s1qhw8x";
};
unpackPhase = ''

View File

@ -5,20 +5,20 @@ buildGoPackage rec {
/* Do not use "dev" as a version. If you do, Tilt will consider itself
running in development environment and try to serve assets from the
source tree, which is not there once build completes. */
version = "0.9.7";
version = "0.10.4";
src = fetchFromGitHub {
owner = "windmilleng";
repo = pname;
rev = "v${version}";
sha256 = "0b7jk7iwjzdsb2wp9qx4gs9g3gi2vcqw5ilkax3gfz7wsplm0n65";
sha256 = "0nxgmldbcaj91jq47qxpf6jqwvi9bhg243qchdkiliphybvilcrg";
};
goPackagePath = "github.com/windmilleng/tilt";
subPackages = [ "cmd/tilt" ];
buildFlagsArray = ("-ldflags=-X main.version=${version} -X main.date=2019-07-30");
buildFlagsArray = ("-ldflags=-X main.version=${version} -X main.date=2019-08-14");
meta = with stdenv.lib; {
description = "Local development tool to manage your developer instance when your team deploys to Kubernetes in production";

View File

@ -1,7 +1,6 @@
{fetchurl, linkFarm}: rec {
{ fetchurl, fetchgit, linkFarm, runCommandNoCC, gnutar }: rec {
offline_cache = linkFarm "offline" packages;
packages = [
{
name = "_types_node___node_9.6.45.tgz";
path = fetchurl {
@ -10,7 +9,6 @@
sha1 = "a9e5cfd026a3abaaf17e3c0318a470da9f2f178e";
};
}
{
name = "ajv___ajv_6.10.0.tgz";
path = fetchurl {
@ -19,7 +17,6 @@
sha1 = "90d0d54439da587cd7e843bfb7045f50bd22bdf1";
};
}
{
name = "applescript___applescript_1.0.0.tgz";
path = fetchurl {
@ -28,7 +25,6 @@
sha1 = "bb87af568cad034a4e48c4bdaf6067a3a2701317";
};
}
{
name = "asn1___asn1_0.2.4.tgz";
path = fetchurl {
@ -37,7 +33,6 @@
sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
};
}
{
name = "assert_plus___assert_plus_1.0.0.tgz";
path = fetchurl {
@ -46,7 +41,6 @@
sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
};
}
{
name = "asynckit___asynckit_0.4.0.tgz";
path = fetchurl {
@ -55,7 +49,6 @@
sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
};
}
{
name = "auto_launch___auto_launch_5.0.5.tgz";
path = fetchurl {
@ -64,7 +57,6 @@
sha1 = "d14bd002b1ef642f85e991a6195ff5300c8ad3c0";
};
}
{
name = "aws_sign2___aws_sign2_0.7.0.tgz";
path = fetchurl {
@ -73,7 +65,6 @@
sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
};
}
{
name = "aws4___aws4_1.8.0.tgz";
path = fetchurl {
@ -82,7 +73,6 @@
sha1 = "f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f";
};
}
{
name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
path = fetchurl {
@ -91,7 +81,6 @@
sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
};
}
{
name = "bignumber.js___bignumber.js_2.4.0.tgz";
path = fetchurl {
@ -100,7 +89,6 @@
sha1 = "838a992da9f9d737e0f4b2db0be62bb09dd0c5e8";
};
}
{
name = "bmp_js___bmp_js_0.0.3.tgz";
path = fetchurl {
@ -109,7 +97,6 @@
sha1 = "64113e9c7cf1202b376ed607bf30626ebe57b18a";
};
}
{
name = "buffer_equal___buffer_equal_0.0.1.tgz";
path = fetchurl {
@ -118,7 +105,6 @@
sha1 = "91bc74b11ea405bc916bc6aa908faafa5b4aac4b";
};
}
{
name = "caseless___caseless_0.12.0.tgz";
path = fetchurl {
@ -127,7 +113,6 @@
sha1 = "1b681c21ff84033c826543090689420d187151dc";
};
}
{
name = "combined_stream___combined_stream_1.0.7.tgz";
path = fetchurl {
@ -136,7 +121,6 @@
sha1 = "2d1d24317afb8abe95d6d2c0b07b57813539d828";
};
}
{
name = "conf___conf_2.2.0.tgz";
path = fetchurl {
@ -145,7 +129,6 @@
sha1 = "ee282efafc1450b61e205372041ad7d866802d9a";
};
}
{
name = "core_util_is___core_util_is_1.0.2.tgz";
path = fetchurl {
@ -154,7 +137,6 @@
sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
};
}
{
name = "dashdash___dashdash_1.14.1.tgz";
path = fetchurl {
@ -163,7 +145,6 @@
sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
};
}
{
name = "deep_equal___deep_equal_1.0.1.tgz";
path = fetchurl {
@ -172,7 +153,6 @@
sha1 = "f5d260292b660e084eff4cdbc9f08ad3247448b5";
};
}
{
name = "define_properties___define_properties_1.1.3.tgz";
path = fetchurl {
@ -181,7 +161,6 @@
sha1 = "cf88da6cbee26fe6db7094f61d870cbd84cee9f1";
};
}
{
name = "delayed_stream___delayed_stream_1.0.0.tgz";
path = fetchurl {
@ -190,7 +169,6 @@
sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
};
}
{
name = "dom_walk___dom_walk_0.1.1.tgz";
path = fetchurl {
@ -199,7 +177,6 @@
sha1 = "672226dc74c8f799ad35307df936aba11acd6018";
};
}
{
name = "dot_prop___dot_prop_4.2.0.tgz";
path = fetchurl {
@ -208,7 +185,6 @@
sha1 = "1f19e0c2e1aa0e32797c49799f2837ac6af69c57";
};
}
{
name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
path = fetchurl {
@ -217,7 +193,6 @@
sha1 = "3a83a904e54353287874c564b7549386849a98c9";
};
}
{
name = "electron_store___electron_store_2.0.0.tgz";
path = fetchurl {
@ -226,7 +201,6 @@
sha1 = "1035cca2a95409d1f54c7466606345852450d64a";
};
}
{
name = "electron_window_state___electron_window_state_4.1.1.tgz";
path = fetchurl {
@ -235,7 +209,6 @@
sha1 = "6b34fdc31b38514dfec8b7c8f7b5d4addb67632d";
};
}
{
name = "env_paths___env_paths_1.0.0.tgz";
path = fetchurl {
@ -244,7 +217,6 @@
sha1 = "4168133b42bb05c38a35b1ae4397c8298ab369e0";
};
}
{
name = "es_abstract___es_abstract_1.13.0.tgz";
path = fetchurl {
@ -253,7 +225,6 @@
sha1 = "ac86145fdd5099d8dd49558ccba2eaf9b88e24e9";
};
}
{
name = "es_to_primitive___es_to_primitive_1.2.0.tgz";
path = fetchurl {
@ -262,7 +233,6 @@
sha1 = "edf72478033456e8dda8ef09e00ad9650707f377";
};
}
{
name = "es6_promise___es6_promise_3.3.1.tgz";
path = fetchurl {
@ -271,7 +241,6 @@
sha1 = "a08cdde84ccdbf34d027a1451bc91d4bcd28a613";
};
}
{
name = "exif_parser___exif_parser_0.1.12.tgz";
path = fetchurl {
@ -280,7 +249,6 @@
sha1 = "58a9d2d72c02c1f6f02a0ef4a9166272b7760922";
};
}
{
name = "extend___extend_3.0.2.tgz";
path = fetchurl {
@ -289,7 +257,6 @@
sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
};
}
{
name = "extsprintf___extsprintf_1.3.0.tgz";
path = fetchurl {
@ -298,7 +265,6 @@
sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
};
}
{
name = "extsprintf___extsprintf_1.4.0.tgz";
path = fetchurl {
@ -307,7 +273,6 @@
sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
};
}
{
name = "fast_deep_equal___fast_deep_equal_2.0.1.tgz";
path = fetchurl {
@ -316,7 +281,6 @@
sha1 = "7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49";
};
}
{
name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
path = fetchurl {
@ -325,7 +289,6 @@
sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
};
}
{
name = "file_type___file_type_3.9.0.tgz";
path = fetchurl {
@ -334,7 +297,6 @@
sha1 = "257a078384d1db8087bc449d107d52a52672b9e9";
};
}
{
name = "find_up___find_up_2.1.0.tgz";
path = fetchurl {
@ -343,7 +305,6 @@
sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
};
}
{
name = "for_each___for_each_0.3.3.tgz";
path = fetchurl {
@ -352,7 +313,6 @@
sha1 = "69b447e88a0a5d32c3e7084f3f1710034b21376e";
};
}
{
name = "forever_agent___forever_agent_0.6.1.tgz";
path = fetchurl {
@ -361,7 +321,6 @@
sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
};
}
{
name = "form_data___form_data_2.3.3.tgz";
path = fetchurl {
@ -370,7 +329,6 @@
sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6";
};
}
{
name = "function_bind___function_bind_1.1.1.tgz";
path = fetchurl {
@ -379,7 +337,6 @@
sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
};
}
{
name = "getpass___getpass_0.1.7.tgz";
path = fetchurl {
@ -388,7 +345,6 @@
sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
};
}
{
name = "global___global_4.3.2.tgz";
path = fetchurl {
@ -397,7 +353,6 @@
sha1 = "e76989268a6c74c38908b1305b10fc0e394e9d0f";
};
}
{
name = "graceful_fs___graceful_fs_4.1.15.tgz";
path = fetchurl {
@ -406,7 +361,6 @@
sha1 = "ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00";
};
}
{
name = "har_schema___har_schema_2.0.0.tgz";
path = fetchurl {
@ -415,7 +369,6 @@
sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
};
}
{
name = "har_validator___har_validator_5.1.3.tgz";
path = fetchurl {
@ -424,7 +377,6 @@
sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080";
};
}
{
name = "has_symbols___has_symbols_1.0.0.tgz";
path = fetchurl {
@ -433,7 +385,6 @@
sha1 = "ba1a8f1af2a0fc39650f5c850367704122063b44";
};
}
{
name = "has___has_1.0.3.tgz";
path = fetchurl {
@ -442,7 +393,6 @@
sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
};
}
{
name = "http_signature___http_signature_1.2.0.tgz";
path = fetchurl {
@ -451,7 +401,6 @@
sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
};
}
{
name = "imurmurhash___imurmurhash_0.1.4.tgz";
path = fetchurl {
@ -460,7 +409,6 @@
sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
};
}
{
name = "ip_regex___ip_regex_1.0.3.tgz";
path = fetchurl {
@ -469,7 +417,6 @@
sha1 = "dc589076f659f419c222039a33316f1c7387effd";
};
}
{
name = "is_callable___is_callable_1.1.4.tgz";
path = fetchurl {
@ -478,7 +425,6 @@
sha1 = "1e1adf219e1eeb684d691f9d6a05ff0d30a24d75";
};
}
{
name = "is_date_object___is_date_object_1.0.1.tgz";
path = fetchurl {
@ -487,7 +433,6 @@
sha1 = "9aa20eb6aeebbff77fbd33e74ca01b33581d3a16";
};
}
{
name = "is_function___is_function_1.0.1.tgz";
path = fetchurl {
@ -496,7 +441,6 @@
sha1 = "12cfb98b65b57dd3d193a3121f5f6e2f437602b5";
};
}
{
name = "is_obj___is_obj_1.0.1.tgz";
path = fetchurl {
@ -505,7 +449,6 @@
sha1 = "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f";
};
}
{
name = "is_regex___is_regex_1.0.4.tgz";
path = fetchurl {
@ -514,7 +457,6 @@
sha1 = "5517489b547091b0930e095654ced25ee97e9491";
};
}
{
name = "is_symbol___is_symbol_1.0.2.tgz";
path = fetchurl {
@ -523,7 +465,6 @@
sha1 = "a055f6ae57192caee329e7a860118b497a950f38";
};
}
{
name = "is_typedarray___is_typedarray_1.0.0.tgz";
path = fetchurl {
@ -532,7 +473,6 @@
sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
};
}
{
name = "isstream___isstream_0.1.2.tgz";
path = fetchurl {
@ -541,7 +481,6 @@
sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
};
}
{
name = "jimp___jimp_0.2.28.tgz";
path = fetchurl {
@ -550,7 +489,6 @@
sha1 = "dd529a937190f42957a7937d1acc3a7762996ea2";
};
}
{
name = "jpeg_js___jpeg_js_0.2.0.tgz";
path = fetchurl {
@ -559,7 +497,6 @@
sha1 = "53e448ec9d263e683266467e9442d2c5a2ef5482";
};
}
{
name = "jsbn___jsbn_0.1.1.tgz";
path = fetchurl {
@ -568,7 +505,6 @@
sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
};
}
{
name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
path = fetchurl {
@ -577,7 +513,6 @@
sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
};
}
{
name = "json_schema___json_schema_0.2.3.tgz";
path = fetchurl {
@ -586,7 +521,6 @@
sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
};
}
{
name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
path = fetchurl {
@ -595,7 +529,6 @@
sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
};
}
{
name = "jsonfile___jsonfile_2.4.0.tgz";
path = fetchurl {
@ -604,7 +537,6 @@
sha1 = "3736a2b428b87bbda0cc83b53fa3d633a35c2ae8";
};
}
{
name = "jsprim___jsprim_1.4.1.tgz";
path = fetchurl {
@ -613,7 +545,6 @@
sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
};
}
{
name = "load_bmfont___load_bmfont_1.4.0.tgz";
path = fetchurl {
@ -622,7 +553,6 @@
sha1 = "75f17070b14a8c785fe7f5bee2e6fd4f98093b6b";
};
}
{
name = "locate_path___locate_path_2.0.0.tgz";
path = fetchurl {
@ -631,7 +561,6 @@
sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
};
}
{
name = "make_dir___make_dir_1.3.0.tgz";
path = fetchurl {
@ -640,7 +569,6 @@
sha1 = "79c1033b80515bd6d24ec9933e860ca75ee27f0c";
};
}
{
name = "mime_db___mime_db_1.38.0.tgz";
path = fetchurl {
@ -649,7 +577,6 @@
sha1 = "1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad";
};
}
{
name = "mime_types___mime_types_2.1.22.tgz";
path = fetchurl {
@ -658,7 +585,6 @@
sha1 = "fe6b355a190926ab7698c9a0556a11199b2199bd";
};
}
{
name = "mime___mime_1.6.0.tgz";
path = fetchurl {
@ -667,7 +593,6 @@
sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
};
}
{
name = "min_document___min_document_2.19.0.tgz";
path = fetchurl {
@ -676,7 +601,6 @@
sha1 = "7bd282e3f5842ed295bb748cdd9f1ffa2c824685";
};
}
{
name = "minimist___minimist_0.0.8.tgz";
path = fetchurl {
@ -685,7 +609,6 @@
sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
};
}
{
name = "minimist___minimist_1.2.0.tgz";
path = fetchurl {
@ -694,7 +617,6 @@
sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
};
}
{
name = "mkdirp___mkdirp_0.5.1.tgz";
path = fetchurl {
@ -703,7 +625,6 @@
sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
};
}
{
name = "oauth_sign___oauth_sign_0.9.0.tgz";
path = fetchurl {
@ -712,7 +633,6 @@
sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
};
}
{
name = "object_keys___object_keys_1.1.0.tgz";
path = fetchurl {
@ -721,7 +641,6 @@
sha1 = "11bd22348dd2e096a045ab06f6c85bcc340fa032";
};
}
{
name = "p_limit___p_limit_1.3.0.tgz";
path = fetchurl {
@ -730,7 +649,6 @@
sha1 = "b86bd5f0c25690911c7590fcbfc2010d54b3ccb8";
};
}
{
name = "p_locate___p_locate_2.0.0.tgz";
path = fetchurl {
@ -739,7 +657,6 @@
sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
};
}
{
name = "p_try___p_try_1.0.0.tgz";
path = fetchurl {
@ -748,7 +665,6 @@
sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
};
}
{
name = "parse_bmfont_ascii___parse_bmfont_ascii_1.0.6.tgz";
path = fetchurl {
@ -757,7 +673,6 @@
sha1 = "11ac3c3ff58f7c2020ab22769079108d4dfa0285";
};
}
{
name = "parse_bmfont_binary___parse_bmfont_binary_1.0.6.tgz";
path = fetchurl {
@ -766,7 +681,6 @@
sha1 = "d038b476d3e9dd9db1e11a0b0e53a22792b69006";
};
}
{
name = "parse_bmfont_xml___parse_bmfont_xml_1.1.4.tgz";
path = fetchurl {
@ -775,7 +689,6 @@
sha1 = "015319797e3e12f9e739c4d513872cd2fa35f389";
};
}
{
name = "parse_headers___parse_headers_2.0.2.tgz";
path = fetchurl {
@ -784,7 +697,6 @@
sha1 = "9545e8a4c1ae5eaea7d24992bca890281ed26e34";
};
}
{
name = "path_exists___path_exists_3.0.0.tgz";
path = fetchurl {
@ -793,7 +705,6 @@
sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
};
}
{
name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
path = fetchurl {
@ -802,7 +713,6 @@
sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
};
}
{
name = "performance_now___performance_now_2.1.0.tgz";
path = fetchurl {
@ -811,7 +721,6 @@
sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
};
}
{
name = "phin___phin_2.9.3.tgz";
path = fetchurl {
@ -820,7 +729,6 @@
sha1 = "f9b6ac10a035636fb65dfc576aaaa17b8743125c";
};
}
{
name = "pify___pify_3.0.0.tgz";
path = fetchurl {
@ -829,7 +737,6 @@
sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
};
}
{
name = "pixelmatch___pixelmatch_4.0.2.tgz";
path = fetchurl {
@ -838,7 +745,6 @@
sha1 = "8f47dcec5011b477b67db03c243bc1f3085e8854";
};
}
{
name = "pkg_up___pkg_up_2.0.0.tgz";
path = fetchurl {
@ -847,7 +753,6 @@
sha1 = "c819ac728059a461cab1c3889a2be3c49a004d7f";
};
}
{
name = "png_to_ico___png_to_ico_1.0.7.tgz";
path = fetchurl {
@ -856,7 +761,6 @@
sha1 = "9346b5f4d6fd7e94cb08fd49eeb585f501c3e5f2";
};
}
{
name = "pngjs___pngjs_3.4.0.tgz";
path = fetchurl {
@ -865,7 +769,6 @@
sha1 = "99ca7d725965fb655814eaf65f38f12bbdbf555f";
};
}
{
name = "process___process_0.5.2.tgz";
path = fetchurl {
@ -874,7 +777,6 @@
sha1 = "1638d8a8e34c2f440a91db95ab9aeb677fc185cf";
};
}
{
name = "psl___psl_1.1.31.tgz";
path = fetchurl {
@ -883,7 +785,6 @@
sha1 = "e9aa86d0101b5b105cbe93ac6b784cd547276184";
};
}
{
name = "punycode___punycode_1.4.1.tgz";
path = fetchurl {
@ -892,7 +793,6 @@
sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
};
}
{
name = "punycode___punycode_2.1.1.tgz";
path = fetchurl {
@ -901,7 +801,6 @@
sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
};
}
{
name = "qs___qs_6.5.2.tgz";
path = fetchurl {
@ -910,7 +809,6 @@
sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
};
}
{
name = "read_chunk___read_chunk_1.0.1.tgz";
path = fetchurl {
@ -919,7 +817,6 @@
sha1 = "5f68cab307e663f19993527d9b589cace4661194";
};
}
{
name = "request___request_2.88.0.tgz";
path = fetchurl {
@ -928,7 +825,6 @@
sha1 = "9c2fca4f7d35b592efe57c7f0a55e81052124fef";
};
}
{
name = "safe_buffer___safe_buffer_5.1.2.tgz";
path = fetchurl {
@ -937,7 +833,6 @@
sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
};
}
{
name = "safer_buffer___safer_buffer_2.1.2.tgz";
path = fetchurl {
@ -946,7 +841,6 @@
sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
};
}
{
name = "sax___sax_1.2.4.tgz";
path = fetchurl {
@ -955,7 +849,6 @@
sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
};
}
{
name = "signal_exit___signal_exit_3.0.2.tgz";
path = fetchurl {
@ -964,7 +857,6 @@
sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
};
}
{
name = "sshpk___sshpk_1.16.1.tgz";
path = fetchurl {
@ -973,7 +865,6 @@
sha1 = "fb661c0bef29b39db40769ee39fa70093d6f6877";
};
}
{
name = "stream_to_buffer___stream_to_buffer_0.1.0.tgz";
path = fetchurl {
@ -982,7 +873,6 @@
sha1 = "26799d903ab2025c9bd550ac47171b00f8dd80a9";
};
}
{
name = "stream_to___stream_to_0.2.2.tgz";
path = fetchurl {
@ -991,7 +881,6 @@
sha1 = "84306098d85fdb990b9fa300b1b3ccf55e8ef01d";
};
}
{
name = "string.prototype.trim___string.prototype.trim_1.1.2.tgz";
path = fetchurl {
@ -1000,7 +889,6 @@
sha1 = "d04de2c89e137f4d7d206f086b5ed2fae6be8cea";
};
}
{
name = "tinycolor2___tinycolor2_1.4.1.tgz";
path = fetchurl {
@ -1009,7 +897,6 @@
sha1 = "f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8";
};
}
{
name = "tough_cookie___tough_cookie_2.4.3.tgz";
path = fetchurl {
@ -1018,7 +905,6 @@
sha1 = "53f36da3f47783b0925afa06ff9f3b165280f781";
};
}
{
name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
path = fetchurl {
@ -1027,7 +913,6 @@
sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
};
}
{
name = "tweetnacl___tweetnacl_0.14.5.tgz";
path = fetchurl {
@ -1036,7 +921,6 @@
sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
};
}
{
name = "untildify___untildify_3.0.3.tgz";
path = fetchurl {
@ -1045,7 +929,6 @@
sha1 = "1e7b42b140bcfd922b22e70ca1265bfe3634c7c9";
};
}
{
name = "uri_js___uri_js_4.2.2.tgz";
path = fetchurl {
@ -1054,7 +937,6 @@
sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
};
}
{
name = "url_regex___url_regex_3.2.0.tgz";
path = fetchurl {
@ -1063,7 +945,6 @@
sha1 = "dbad1e0c9e29e105dd0b1f09f6862f7fdb482724";
};
}
{
name = "uuid___uuid_3.3.2.tgz";
path = fetchurl {
@ -1072,7 +953,6 @@
sha1 = "1b4af4955eb3077c501c23872fc6513811587131";
};
}
{
name = "verror___verror_1.10.0.tgz";
path = fetchurl {
@ -1081,7 +961,6 @@
sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
};
}
{
name = "winreg___winreg_1.2.4.tgz";
path = fetchurl {
@ -1090,7 +969,6 @@
sha1 = "ba065629b7a925130e15779108cf540990e98d1b";
};
}
{
name = "write_file_atomic___write_file_atomic_2.4.2.tgz";
path = fetchurl {
@ -1099,7 +977,6 @@
sha1 = "a7181706dfba17855d221140a9c06e15fcdd87b9";
};
}
{
name = "xhr___xhr_2.5.0.tgz";
path = fetchurl {
@ -1108,7 +985,6 @@
sha1 = "bed8d1676d5ca36108667692b74b316c496e49dd";
};
}
{
name = "xml_parse_from_string___xml_parse_from_string_1.0.1.tgz";
path = fetchurl {
@ -1117,7 +993,6 @@
sha1 = "a9029e929d3dbcded169f3c6e28238d95a5d5a28";
};
}
{
name = "xml2js___xml2js_0.4.19.tgz";
path = fetchurl {
@ -1126,7 +1001,6 @@
sha1 = "686c20f213209e94abf0d1bcf1efaa291c7827a7";
};
}
{
name = "xmlbuilder___xmlbuilder_9.0.7.tgz";
path = fetchurl {
@ -1135,7 +1009,6 @@
sha1 = "132ee63d2ec5565c557e20f4c22df9aca686b10d";
};
}
{
name = "xtend___xtend_4.0.1.tgz";
path = fetchurl {

View File

@ -1,9 +1,8 @@
{ pkgs, stdenv, fetchFromGitHub, makeWrapper, makeDesktopItem, electron_5, riot-web }:
{ pkgs, stdenv, fetchFromGitHub, makeWrapper, makeDesktopItem, electron_5, riot-web, yarn2nix-moretea }:
# Note for maintainers:
# Versions of `riot-web` and `riot-desktop` should be kept in sync.
with (import ./yarn2nix.nix { inherit pkgs; });
# Notes for maintainers:
# * versions of `riot-web` and `riot-desktop` should be kept in sync.
# * the Yarn dependency expression must be updated with `./update-riot-desktop.sh <git release tag>`
let
executableName = "riot-desktop";
@ -15,18 +14,13 @@ let
sha256 = "1nzzxcz4r9932cha80q1bzn1425m67fsl89pn7n7ybrv6y0jnxpc";
};
in mkYarnPackage rec {
in yarn2nix-moretea.mkYarnPackage rec {
name = "riot-desktop-${version}";
inherit version;
src = "${riot-web-src}/electron_app";
# The package manifest should be copied on each update of this package.
# > cp ${riot-web-src}/electron_app/package.json riot-desktop-package.json
packageJSON = ./riot-desktop-package.json;
# The dependency expression can be regenerated using nixos.yarn2nix with the following command:
# > yarn2nix --lockfile=${riot-web-src}/electron_app/yarn.lock > riot-desktop-yarndeps.nix
yarnNix = ./riot-desktop-yarndeps.nix;
nativeBuildInputs = [ makeWrapper ];
@ -36,7 +30,9 @@ in mkYarnPackage rec {
mkdir -p "$out/share/riot"
ln -s '${riot-web}' "$out/share/riot/webapp"
cp -r '${riot-web-src}/origin_migrator' "$out/share/riot/origin_migrator"
cp -r '.' "$out/share/riot/electron"
cp -r './deps/riot-web' "$out/share/riot/electron"
rm "$out/share/riot/electron/node_modules"
cp -r './node_modules' "$out/share/riot/electron"
# icons
for icon in $out/share/riot/electron/build/icons/*.png; do

View File

@ -0,0 +1,17 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=../../../../../ -i bash -p wget yarn2nix-moretea.yarn2nix
set -euo pipefail
if [ "$#" -ne 1 ] || [[ "$1" == -* ]]; then
echo "Regenerates the Yarn dependency lock files for the riot-desktop package."
echo "Usage: $0 <git release tag>"
exit 1
fi
RIOT_WEB_SRC="https://raw.githubusercontent.com/vector-im/riot-web/$1"
wget "$RIOT_WEB_SRC/electron_app/package.json" -O riot-desktop-package.json
wget "$RIOT_WEB_SRC/electron_app/yarn.lock" -O riot-desktop-yarndeps.lock
yarn2nix --lockfile=riot-desktop-yarndeps.lock > riot-desktop-yarndeps.nix
rm riot-desktop-yarndeps.lock

View File

@ -1,320 +0,0 @@
{ pkgs ? import <nixpkgs> {}
, nodejs ? pkgs.nodejs
, yarn ? pkgs.yarn
}:
let
inherit (pkgs) stdenv lib fetchurl linkFarm;
in rec {
# Export yarn again to make it easier to find out which yarn was used.
inherit yarn;
# Re-export pkgs
inherit pkgs;
unlessNull = item: alt:
if item == null then alt else item;
reformatPackageName = pname:
let
# regex adapted from `validate-npm-package-name`
# will produce 3 parts e.g.
# "@someorg/somepackage" -> [ "@someorg/" "someorg" "somepackage" ]
# "somepackage" -> [ null null "somepackage" ]
parts = builtins.tail (builtins.match "^(@([^/]+)/)?([^/]+)$" pname);
# if there is no organisation we need to filter out null values.
non-null = builtins.filter (x: x != null) parts;
in builtins.concatStringsSep "-" non-null;
# https://docs.npmjs.com/files/package.json#license
# TODO: support expression syntax (OR, AND, etc)
spdxLicense = licstr:
if licstr == "UNLICENSED" then
lib.licenses.unfree
else
lib.findFirst
(l: l ? spdxId && l.spdxId == licstr)
{ shortName = licstr; }
(builtins.attrValues lib.licenses);
# Generates the yarn.nix from the yarn.lock file
mkYarnNix = yarnLock:
pkgs.runCommand "yarn.nix" {}
"${yarn2nix}/bin/yarn2nix --lockfile ${yarnLock} --no-patch > $out";
# Loads the generated offline cache. This will be used by yarn as
# the package source.
importOfflineCache = yarnNix:
let
pkg = import yarnNix { inherit fetchurl linkFarm; };
in
pkg.offline_cache;
defaultYarnFlags = [
"--offline"
"--frozen-lockfile"
"--ignore-engines"
"--ignore-scripts"
];
mkYarnModules = {
name,
pname,
packageJSON,
yarnLock,
yarnNix ? mkYarnNix yarnLock,
yarnFlags ? defaultYarnFlags,
pkgConfig ? {},
preBuild ? "",
workspaceDependencies ? [],
}:
let
offlineCache = importOfflineCache yarnNix;
extraBuildInputs = (lib.flatten (builtins.map (key:
pkgConfig.${key} . buildInputs or []
) (builtins.attrNames pkgConfig)));
postInstall = (builtins.map (key:
if (pkgConfig.${key} ? postInstall) then
''
for f in $(find -L -path '*/node_modules/${key}' -type d); do
(cd "$f" && (${pkgConfig.${key}.postInstall}))
done
''
else
""
) (builtins.attrNames pkgConfig));
workspaceJSON = pkgs.writeText
"${name}-workspace-package.json"
(builtins.toJSON { private = true; workspaces = ["deps/**"]; }); # scoped packages need second splat
workspaceDependencyLinks = lib.concatMapStringsSep "\n"
(dep: ''
mkdir -p "deps/${dep.pname}"
ln -sf ${dep.packageJSON} "deps/${dep.pname}/package.json"
'')
workspaceDependencies;
in stdenv.mkDerivation {
inherit preBuild name;
phases = ["configurePhase" "buildPhase"];
buildInputs = [ yarn nodejs ] ++ extraBuildInputs;
configurePhase = ''
# Yarn writes cache directories etc to $HOME.
export HOME=$PWD/yarn_home
'';
buildPhase = ''
runHook preBuild
mkdir -p "deps/${pname}"
cp ${packageJSON} "deps/${pname}/package.json"
cp ${workspaceJSON} ./package.json
cp ${yarnLock} ./yarn.lock
chmod +w ./yarn.lock
yarn config --offline set yarn-offline-mirror ${offlineCache}
# Do not look up in the registry, but in the offline cache.
# TODO: Ask upstream to fix this mess.
sed -i -E '/resolved /{s|https://registry.yarnpkg.com/||;s|[@/:-]|_|g}' yarn.lock
${workspaceDependencyLinks}
yarn install ${lib.escapeShellArgs yarnFlags}
${lib.concatStringsSep "\n" postInstall}
mkdir $out
mv node_modules $out/
mv deps $out/
patchShebangs $out
'';
};
# This can be used as a shellHook in mkYarnPackage. It brings the built node_modules into
# the shell-hook environment.
linkNodeModulesHook = ''
if [[ -d node_modules || -L node_modules ]]; then
echo "./node_modules is present. Replacing."
rm -rf node_modules
fi
ln -s "$node_modules" node_modules
'';
mkYarnWorkspace = {
src,
packageJSON ? src+"/package.json",
yarnLock ? src+"/yarn.lock",
packageOverrides ? {},
...
}@attrs:
let
package = lib.importJSON packageJSON;
packageGlobs = package.workspaces;
globElemToRegex = lib.replaceStrings ["*"] [".*"];
# PathGlob -> [PathGlobElem]
splitGlob = lib.splitString "/";
# Path -> [PathGlobElem] -> [Path]
# Note: Only directories are included, everything else is filtered out
expandGlobList = base: globElems:
let
elemRegex = globElemToRegex (lib.head globElems);
rest = lib.tail globElems;
children = lib.attrNames (lib.filterAttrs (name: type: type == "directory") (builtins.readDir base));
matchingChildren = lib.filter (child: builtins.match elemRegex child != null) children;
in if globElems == []
then [ base ]
else lib.concatMap (child: expandGlobList (base+("/"+child)) rest) matchingChildren;
# Path -> PathGlob -> [Path]
expandGlob = base: glob: expandGlobList base (splitGlob glob);
packagePaths = lib.concatMap (expandGlob src) packageGlobs;
packages = lib.listToAttrs (map (src:
let
packageJSON = src+"/package.json";
package = lib.importJSON packageJSON;
allDependencies = lib.foldl (a: b: a // b) {} (map (field: lib.attrByPath [field] {} package) ["dependencies" "devDependencies"]);
in rec {
name = reformatPackageName package.name;
value = mkYarnPackage (builtins.removeAttrs attrs ["packageOverrides"] // {
inherit src packageJSON yarnLock;
workspaceDependencies = lib.mapAttrsToList (name: version: packages.${name})
(lib.filterAttrs (name: version: packages ? ${name}) allDependencies);
} // lib.attrByPath [name] {} packageOverrides);
}) packagePaths);
in packages;
mkYarnPackage = {
name ? null,
src,
packageJSON ? src + "/package.json",
yarnLock ? src + "/yarn.lock",
yarnNix ? mkYarnNix yarnLock,
yarnFlags ? defaultYarnFlags,
yarnPreBuild ? "",
pkgConfig ? {},
extraBuildInputs ? [],
publishBinsFor ? null,
workspaceDependencies ? [],
...
}@attrs:
let
package = lib.importJSON packageJSON;
pname = package.name;
safeName = reformatPackageName pname;
version = package.version;
baseName = unlessNull name "${safeName}-${version}";
deps = mkYarnModules {
name = "${safeName}-modules-${version}";
preBuild = yarnPreBuild;
workspaceDependencies = workspaceDependenciesTransitive;
inherit packageJSON pname yarnLock yarnNix yarnFlags pkgConfig;
};
publishBinsFor_ = unlessNull publishBinsFor [pname];
linkDirFunction = ''
linkDirToDirLinks() {
target=$1
if [ ! -f "$target" ]; then
mkdir -p "$target"
elif [ -L "$target" ]; then
local new=$(mktemp -d)
trueSource=$(realpath "$target")
if [ "$(ls $trueSource | wc -l)" -gt 0 ]; then
ln -s $trueSource/* $new/
fi
rm -r "$target"
mv "$new" "$target"
fi
}
'';
workspaceDependenciesTransitive = lib.unique ((lib.flatten (builtins.map (dep: dep.workspaceDependencies) workspaceDependencies)) ++ workspaceDependencies);
workspaceDependencyCopy = lib.concatMapStringsSep "\n"
(dep: ''
# ensure any existing scope directory is not a symlink
linkDirToDirLinks "$(dirname node_modules/${dep.pname})"
mkdir -p "deps/${dep.pname}"
tar -xf "${dep}/tarballs/${dep.name}.tgz" --directory "deps/${dep.pname}" --strip-components=1
if [ ! -e "deps/${dep.pname}/node_modules" ]; then
ln -s "${deps}/deps/${dep.pname}/node_modules" "deps/${dep.pname}/node_modules"
fi
'')
workspaceDependenciesTransitive;
in stdenv.mkDerivation (builtins.removeAttrs attrs ["pkgConfig" "workspaceDependencies"] // {
inherit src;
name = baseName;
buildInputs = [ yarn nodejs ] ++ extraBuildInputs;
node_modules = deps + "/node_modules";
configurePhase = attrs.configurePhase or ''
runHook preConfigure
for localDir in npm-packages-offline-cache node_modules; do
if [[ -d $localDir || -L $localDir ]]; then
echo "$localDir dir present. Removing."
rm -rf $localDir
fi
done
mkdir -p "deps/${pname}"
shopt -s extglob
cp -r !(deps) "deps/${pname}"
shopt -u extglob
ln -s ${deps}/deps/${pname}/node_modules "deps/${pname}/node_modules"
cp -r $node_modules node_modules
chmod -R +w node_modules
${linkDirFunction}
linkDirToDirLinks "$(dirname node_modules/${pname})"
ln -s "deps/${pname}" "node_modules/${pname}"
${workspaceDependencyCopy}
# Help yarn commands run in other phases find the package
echo "--cwd deps/${pname}" > .yarnrc
runHook postConfigure
'';
# Replace this phase on frontend packages where only the generated
# files are an interesting output.
installPhase = attrs.installPhase or ''
runHook preInstall
mkdir -p $out/{bin,libexec/${pname}}
mv node_modules $out/libexec/${pname}/node_modules
mv deps $out/libexec/${pname}/deps
node ${./nix/fixup_bin.js} $out/bin $out/libexec/${pname}/node_modules ${lib.concatStringsSep " " publishBinsFor_}
runHook postInstall
'';
doDist = true;
distPhase = attrs.distPhase or ''
# pack command ignores cwd option
rm -f .yarnrc
cd $out/libexec/${pname}/deps/${pname}
mkdir -p $out/tarballs/
yarn pack --ignore-scripts --filename $out/tarballs/${baseName}.tgz
'';
passthru = {
inherit pname package packageJSON deps;
workspaceDependencies = workspaceDependenciesTransitive;
} // (attrs.passthru or {});
meta = {
inherit (nodejs.meta) platforms;
description = packageJSON.description or "";
homepage = packageJSON.homepage or "";
version = packageJSON.version or "";
license = if packageJSON ? license then spdxLicense packageJSON.license else "";
} // (attrs.meta or {});
});
yarn2nix = mkYarnPackage {
src = ./.;
# yarn2nix is the only package that requires the yarnNix option.
# All the other projects can auto-generate that file.
yarnNix = ./yarn.nix;
};
}

View File

@ -6,7 +6,7 @@ at-spi2-atk, libuuid, nodePackages
let
version = "4.0.1";
version = "4.0.2";
rpath = stdenv.lib.makeLibraryPath [
alsaLib
@ -51,7 +51,7 @@ let
if stdenv.hostPlatform.system == "x86_64-linux" then
fetchurl {
url = "https://downloads.slack-edge.com/linux_releases/slack-desktop-${version}-amd64.deb";
sha256 = "1g7c8jka750pblsfzjvfyf7sp1m409kybqagml9miif1v71scxv2";
sha256 = "053j5py16ilpwy868rhh5l2g93xj1fq4fwxrsi2bkfsnmq261hkm";
}
else
throw "Slack is not supported on ${stdenv.hostPlatform.system}";

View File

@ -12,10 +12,10 @@ in stdenv.mkDerivation {
installPhase = ''
mkdir -p $out/lib
ln -s ${mumble}/lib/libmumble.so.1.* $out/lib/libmumble.so.1
ln -s ${mumble}/lib/libmumble.so.1.2.* $out/lib/libmumble.so.1
${lib.optionalString (mumble_i686 != null) ''
mkdir -p $out/lib32
ln -s ${mumble_i686}/lib/libmumble.so.1.* $out/lib32/libmumble.so.1
ln -s ${mumble_i686}/lib/libmumble.so.1.2.* $out/lib32/libmumble.so.1
''}
install -Dm755 scripts/mumble-overlay $out/bin/mumble-overlay
sed -i "s,/usr/lib,$out/lib,g" $out/bin/mumble-overlay

View File

@ -1,20 +1,24 @@
{ stdenv, fetchurl, adns, curl, gettext, gmp, gnutls, libextractor
, libgcrypt, libgnurl, libidn, libmicrohttpd, libtool, libunistring
, makeWrapper, ncurses, pkgconfig, libxml2, sqlite, zlib
, libpulseaudio, libopus, libogg }:
, libpulseaudio, libopus, libogg, jansson }:
stdenv.mkDerivation rec {
name = "gnunet-0.11.0";
pname = "gnunet";
version = "0.11.6";
src = fetchurl {
url = "mirror://gnu/gnunet/${name}.tar.gz";
sha256 = "16kydkrjlf2vxflgls46bwaf9kjczf621p456q0qlphd7cy7lixp";
url = "mirror://gnu/gnunet/${pname}-${version}.tar.gz";
sha256 = "1gspr1lh885sb9r2anh7bi4zan3zjqx33lpyhq9hm2g0n5ip187q";
};
enableParallelBuilding = true;
nativeBuildInputs = [ pkgconfig libtool makeWrapper ];
buildInputs = [
adns curl gettext gmp gnutls libextractor libgcrypt libgnurl libidn
libmicrohttpd libtool libunistring libxml2 makeWrapper ncurses
pkgconfig sqlite zlib libpulseaudio libopus libogg
adns curl gmp gnutls libextractor libgcrypt libgnurl libidn
libmicrohttpd libunistring libxml2 ncurses gettext
sqlite zlib libpulseaudio libopus libogg jansson
];
preConfigure = ''
@ -29,26 +33,18 @@ stdenv.mkDerivation rec {
find . \( -iname \*test\*.c -or -name \*.conf \) | \
xargs sed -ie "s|/tmp|$TMPDIR|g"
# Ensure NSS installation works fine
configureFlags="$configureFlags --with-nssdir=$out/lib"
patchShebangs src/gns/nss/install-nss-plugin.sh
sed -ie 's|@LDFLAGS@|@LDFLAGS@ $(Z_LIBS)|g' \
src/regex/Makefile.in \
src/fs/Makefile.in
'';
# unfortunately, there's still a few failures with impure tests
doCheck = false;
/* FIXME: Tests must be run this way, but there are still a couple of
failures.
postInstall =
'' export GNUNET_PREFIX="$out"
export PATH="$out/bin:$PATH"
make -k check
'';
*/
checkPhase = ''
export GNUNET_PREFIX="$out"
export PATH="$out/bin:$PATH"
make -k check
'';
meta = with stdenv.lib; {
description = "GNU's decentralized anonymous and censorship-resistant P2P framework";
@ -69,9 +65,7 @@ stdenv.mkDerivation rec {
'';
homepage = https://gnunet.org/;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ vrthra ];
platforms = platforms.gnu ++ platforms.linux;
};

View File

@ -0,0 +1,56 @@
{ lib
, fetchFromGitHub
, python3
}:
python3.pkgs.buildPythonApplication rec {
pname = "stig";
# This project has a different concept for pre release / alpha,
# Read the project's README for details: https://github.com/rndusr/stig#stig
version = "0.10.1a";
src = fetchFromGitHub {
owner = "rndusr";
repo = "stig";
rev = "v${version}";
sha256 = "076rlial6h1nhwdxf1mx5nf2zld5ci43cadj9wf8xms7zn8s6c8v";
};
# urwidtrees 1.0.3 is requested by the developer because 1.0.2 (which is packaged
# in nixpkgs) is not uploaded to pypi and 1.0.1 has a problematic `setup.py`.
# As long as we don't have any problems installing it, no special features / specific bugs
# were fixed in 1.0.3 that aren't available in 1.0.2 are used by stig.
# See https://github.com/rndusr/stig/issues/120
postPatch = ''
substituteInPlace setup.py \
--replace "urwidtrees>=1.0.3dev0" "urwidtrees"
'';
buildInputs = with python3.pkgs; [
urwid
urwidtrees
aiohttp
async-timeout
pyxdg
blinker
natsort
maxminddb
setproctitle
];
checkInputs = with python3.pkgs; [
asynctest
pytest
];
checkPhase = ''
pytest tests
'';
meta = with lib; {
description = "TUI and CLI for the BitTorrent client Transmission";
homepage = "https://github.com/rndusr/stig";
license = licenses.gpl3;
maintainers = with maintainers; [ doronbehar ];
};
}

View File

@ -1,6 +1,6 @@
{ stdenv, fetchurl, pkgconfig, pcre, perl, flex, bison, gettext, libpcap, libnl, c-ares
, gnutls, libgcrypt, libgpgerror, geoip, openssl, lua5, python3, libcap, glib
, libssh, nghttp2, zlib, cmake, extra-cmake-modules, fetchpatch, makeWrapper
, libssh, nghttp2, zlib, cmake, fetchpatch, makeWrapper
, withQt ? true, qt5 ? null
, ApplicationServices, SystemConfiguration, gmp
}:
@ -29,7 +29,7 @@ in stdenv.mkDerivation {
];
nativeBuildInputs = [
bison cmake extra-cmake-modules flex pkgconfig
bison cmake flex pkgconfig
] ++ optional withQt qt5.wrapQtAppsHook;
buildInputs = [

View File

@ -1,13 +1,13 @@
{ appimageTools, symlinkJoin, lib, fetchurl, makeDesktopItem }:
let
pname = "patchwork";
version = "3.14.1";
pname = "ssb-patchwork";
version = "3.16.2";
name = "${pname}-${version}";
src = fetchurl {
url = "https://github.com/ssbc/patchwork/releases/download/v${version}/ssb-${pname}-${version}-x86_64.AppImage";
sha256 = "01vsldabv9nmbx8kzlgw275zykm72s1dxglnaq4jz5vbysbyn0qd";
url = "https://github.com/ssbc/patchwork/releases/download/v${version}/${pname}-${version}-x86_64.AppImage";
sha256 = "0hi9ysmwhiiww82a3mqdd2b1anj7qa41b46f6zb3q9d0b8nmvlz4";
};
binary = appimageTools.wrapType2 {
@ -20,8 +20,8 @@ let
};
desktopItem = makeDesktopItem {
name = "patchwork";
exec = "${binary}/bin/patchwork";
name = "ssb-patchwork";
exec = "${binary}/bin/ssb-patchwork";
icon = "ssb-patchwork.png";
comment = "Decentralized messaging and sharing app";
desktopName = "Patchwork";

View File

@ -0,0 +1,74 @@
{
boost,
cm256cc,
cmake,
codec2,
fetchFromGitHub,
fftwFloat,
glew,
lib,
libav,
libiio,
libopus,
libpulseaudio,
libusb,
limesuite,
mkDerivation,
ocl-icd,
opencv3,
pkgconfig,
qtbase,
qtmultimedia,
qtwebsockets,
serialdv
}:
let
codec2' = codec2.overrideAttrs (old: {
src = fetchFromGitHub {
owner = "drowe67";
repo = "codec2";
rev = "567346818c0d4d697773cf66d925fdb031e15668";
sha256 = "0ngqlh2cw5grx2lg7xj8baz6p55gfhq4caggxkb4pxlg817pwbpa";
};
});
in mkDerivation rec {
pname = "sdrangel";
version = "4.11.7";
src = fetchFromGitHub {
owner = "f4exb";
repo = "sdrangel";
rev = "v${version}";
sha256 = "0zbx0gklylk8npb3wnnmqpam0pdxl40f20i3wzwwh4gqrppxywzx";
fetchSubmodules = false;
};
nativeBuildInputs = [ cmake pkgconfig ];
buildInputs = [
glew opencv3 libusb boost libopus limesuite libav libiio libpulseaudio
qtbase qtwebsockets qtmultimedia
fftwFloat
codec2' cm256cc serialdv
];
cmakeFlags = [
"-DLIBSERIALDV_INCLUDE_DIR:PATH=${serialdv}/include/serialdv"
"-DLIMESUITE_INCLUDE_DIR:PATH=${limesuite}/include"
"-DLIMESUITE_LIBRARY:FILEPATH=${limesuite}/lib/libLimeSuite.so"
];
LD_LIBRARY_PATH = "${ocl-icd}/lib";
meta = with lib; {
description = "Software defined radio (SDR) software";
longDescription = ''
SDRangel is an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.
'';
homepage = "https://github.com/f4exb/sdrangel";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ alkeryn ];
};
}

View File

@ -1,14 +1,14 @@
{ stdenv, cmake, boost, bison, flex, fetchFromGitHub, perl, python3, python3Packages, zlib, minisatUnstable, cryptominisat }:
stdenv.mkDerivation rec {
version = "2.2.0";
pname = "stp";
version = "2.3.3";
src = fetchFromGitHub {
owner = "stp";
repo = "stp";
rev = "stp-${version}";
sha256 = "1jh23wjm62nnqfx447g2y53bbangq04hjrvqc35v9xxpcjgj3i49";
rev = version;
sha256 = "1yg2v4wmswh1sigk47drwsxyayr472mf4i47lqmlcgn9hhbx1q87";
};
buildInputs = [ boost zlib minisatUnstable cryptominisat python3 ];
@ -23,9 +23,8 @@ stdenv.mkDerivation rec {
)
'';
# `make -f lib/Interface/CMakeFiles/cppinterface.dir/build.make lib/Interface/CMakeFiles/cppinterface.dir/cpp_interface.cpp.o`:
# include/stp/AST/UsefulDefs.h:41:29: fatal error: stp/AST/ASTKind.h: No such file or directory
enableParallelBuilding = false;
# seems to build fine now, may revert if concurrency does become an issue
enableParallelBuilding = true;
meta = with stdenv.lib; {
description = "Simple Theorem Prover";

View File

@ -1,19 +1,16 @@
{ stdenv, fetchFromGitHub, fetchpatch, z3, zlib, git }:
{ stdenv, fetchFromGitHub, fetchpatch, z3, zlib }:
stdenv.mkDerivation rec {
version = "4.2.2";
pname = "vampire";
version = "4.4";
src = fetchFromGitHub {
owner = "vprover";
repo = "vampire";
rev = version;
sha256 = "03dqjxr3cwz4h6sn9074kc6b6wjz12kpsvsi0mq2w0j5l9f8d80y";
#fetchSubmodules = true;
#leaveDotGit = true;
sha256 = "0v2fdfnk7l5xr5c4y54r25g1nbp4vi85zv29nbklh3r7aws3w9q1";
};
nativeBuildInputs = [ git ];
buildInputs = [ z3 zlib ];
makeFlags = [ "vampire_z3_rel" "CC:=$(CC)" "CXX:=$(CXX)" ];

View File

@ -1,14 +1,14 @@
{ stdenv, fetchFromGitHub }:
stdenv.mkDerivation rec {
version = "1.20170611";
version = "1.20181219";
pname = "blackbox";
src = fetchFromGitHub {
owner = "stackexchange";
repo = pname;
rev = "v${version}";
sha256 = "1jnzhlj54c0szw9l9wib07i2375pbm402bx9wagspcmwc0qw43p6";
sha256 = "1lpwwwc3rf992vdf3iy1ds07n1xkmad065im2bqzc6kdsbkn7rjx";
};
installPhase = ''

View File

@ -1,22 +1,21 @@
{ stdenv, fetchFromGitHub, cmake, qtbase }:
{ mkDerivation, lib, fetchFromGitHub, cmake, qtbase }:
stdenv.mkDerivation rec {
name = "qgit-2.8";
mkDerivation rec {
pname = "qgit";
version = "2.9";
src = fetchFromGitHub {
owner = "tibirna";
repo = "qgit";
rev = name;
sha256 = "01l6mz2f333x3zbfr68mizwpsh6sdsnadcavpasidiych1m5ry8f";
rev = "${pname}-${version}";
sha256 = "0n4dq9gffm9yd7n5p5qcdfgrmg2kwnfd51hfx10adgj9ibxlnc3z";
};
buildInputs = [ qtbase ];
nativeBuildInputs = [ cmake ];
enableParallelBuilding = true;
meta = with stdenv.lib; {
meta = with lib; {
license = licenses.gpl2;
homepage = https://github.com/tibirna/qgit;
description = "Graphical front-end to Git";

View File

@ -1,4 +1,4 @@
{ stdenv, lib, fetchFromGitHub, autoconf, automake, libtool, makeWrapper
{ stdenv, lib, fetchurl, fetchFromGitHub, autoconf, automake, libtool, makeWrapper, linuxHeaders
, pkgconfig, cmake, gnumake, yasm, python2Packages
, libgcrypt, libgpgerror, libunistring
, boost, avahi, lame, autoreconfHook
@ -42,21 +42,36 @@ assert usbSupport -> libusb != null && ! udevSupport; # libusb won't be used i
assert vdpauSupport -> libvdpau != null;
assert useWayland -> wayland != null && wayland-protocols != null && waylandpp != null && libxkbcommon != null;
# TODO for Kodi 18.0
# - check if dbus support PR has been merged and add dbus as a buildInput
let
kodiReleaseDate = "20190129";
kodiVersion = "18.1";
kodiReleaseDate = "20190627";
kodiVersion = "18.3";
rel = "Leia";
kodi_src = fetchFromGitHub {
owner = "xbmc";
repo = "xbmc";
rev = "${kodiVersion}-${rel}";
sha256 = "1w26aqvzxv4c70gcd1vw1pldapsc2xcacwq9b7dqx5m44j0zx1dc";
sha256 = "18fbl5hs3aqccrn0m3x7hp95wlafjav0yvrwmb5q3gj24mwf6jld";
};
cmakeProto = fetchurl {
url = "https://raw.githubusercontent.com/pramsey/libght/ca9b1121c352ea10170636e170040e1af015bad1/cmake/modules/CheckPrototypeExists.cmake";
sha256 = "1zai82gm5x55n3xvdv7mns3ja6a2k81x9zz0nk42j6s2yb0fkjxh";
};
cmakeProtoPatch = ''
# get rid of windows headers as they will otherwise be found first
rm -rf msvc
cp ${cmakeProto} cmake/${cmakeProto.name}
# we need to enable support for C++ for check_prototype_exists to do its thing
substituteInPlace CMakeLists.txt --replace 'LANGUAGES C' 'LANGUAGES C CXX'
if [ -f cmake/CheckHeadersSTDC.cmake ]; then
sed -i cmake/CheckHeadersSTDC.cmake \
-e '7iinclude(CheckPrototypeExists)'
fi
'';
kodiDependency = { name, version, rev, sha256, ... } @attrs:
let
attrs' = builtins.removeAttrs attrs ["name" "version" "rev" "sha256"];
@ -83,16 +98,25 @@ let
nativeBuildInputs = [ cmake nasm pkgconfig ];
};
# we should be able to build these externally and have kodi reference them as buildInputs.
# Doesn't work ATM though so we just use them for the src
# We can build these externally but FindLibDvd.cmake forces us to build it
# them, so we currently just use them for the src.
libdvdcss = kodiDependency rec {
name = "libdvdcss";
version = "1.4.2";
rev = "${version}-${rel}-Beta-5";
sha256 = "0j41ydzx0imaix069s3z07xqw9q95k7llh06fc27dcn6f7b8ydyl";
buildInputs = [ libdvdread ];
nativeBuildInputs = [ autoreconfHook pkgconfig ];
buildInputs = [ linuxHeaders ];
nativeBuildInputs = [ cmake pkgconfig ];
postPatch = ''
rm -rf msvc
substituteInPlace config.h.cm \
--replace '#cmakedefine O_BINARY "''${O_BINARY}"' '#define O_BINARY 0'
'';
cmakeFlags = [
"-DBUILD_SHARED_LIBS=1"
"-DHAVE_LINUX_DVD_STRUCT=1"
];
};
libdvdnav = kodiDependency rec {
@ -100,8 +124,12 @@ let
version = "6.0.0";
rev = "${version}-${rel}-Alpha-3";
sha256 = "0qwlf4lgahxqxk1r2pzl866mi03pbp7l1fc0rk522sc0ak2s9jhb";
buildInputs = [ libdvdread ];
nativeBuildInputs = [ autoreconfHook pkgconfig ];
buildInputs = [ libdvdcss libdvdread ];
nativeBuildInputs = [ cmake pkgconfig ];
postPatch = cmakeProtoPatch;
postInstall = ''
mv $out/lib/liblibdvdnav.so $out/lib/libdvdnav.so
'';
};
libdvdread = kodiDependency rec {
@ -109,7 +137,10 @@ let
version = "6.0.0";
rev = "${version}-${rel}-Alpha-3";
sha256 = "1xxn01mhkdnp10cqdr357wx77vyzfb5glqpqyg8m0skyi75aii59";
nativeBuildInputs = [ autoreconfHook pkgconfig ];
buildInputs = [ libdvdcss ];
nativeBuildInputs = [ cmake pkgconfig ];
configureFlags = [ "--with-libdvdcss" ];
postPatch = cmakeProtoPatch;
};
in stdenv.mkDerivation rec {
@ -160,7 +191,7 @@ in stdenv.mkDerivation rec {
makeWrapper
which
pkgconfig gnumake
autoconf automake libtool # still needed for some components. Check if that is the case with 18.0
autoconf automake libtool # still needed for some components. Check if that is the case with 19.0
] ++ lib.optional useWayland [ wayland-protocols ];
cmakeFlags = [

View File

@ -31,6 +31,11 @@ buildGoPackage rec {
nativeBuildInputs = [ removeReferencesTo utillinux which makeWrapper ];
propagatedBuildInputs = [ coreutils squashfsTools ];
prePatch = ''
substituteInPlace internal/pkg/build/copy/copy.go \
--replace /bin/cp ${coreutils}/bin/cp
'';
postConfigure = ''
cd go/src/github.com/sylabs/singularity

View File

@ -8,13 +8,13 @@
stdenv.mkDerivation rec {
pname = "sway";
version = "1.1.1";
version = "1.2";
src = fetchFromGitHub {
owner = "swaywm";
repo = "sway";
rev = version;
sha256 = "0yhn9zdg9mzfhn97c440lk3pw6122nrhx0is5sqmvgr6p814f776";
sha256 = "0vch2zm5afc76ia78p3vg71zr2fyda67l9hd2h0x1jq3mnvfbxnd";
};
patches = [
@ -41,10 +41,6 @@ stdenv.mkDerivation rec {
wrapProgram $out/bin/sway --prefix PATH : "${swaybg}/bin"
'';
postPatch = ''
sed -i "s/version: '1.0'/version: '${version}'/" meson.build
'';
meta = with stdenv.lib; {
description = "i3-compatible tiling Wayland compositor";
homepage = https://swaywm.org;

View File

@ -2,24 +2,22 @@
stdenv.mkDerivation rec {
pname = "theme-obsidian2";
version = "2.8";
version = "2.9";
src = fetchFromGitHub {
owner = "madmaxms";
repo = "theme-obsidian-2";
rev = "v${version}";
sha256 = "0qryqpyxbhr0kyar2cshwhzv4da6rfz9gi4wjb6xvcb6szxhlcaq";
sha256 = "1m89ws2a4nms4m8187d5cxi281b66i59xa5shlp3g1r2jc4312cy";
};
propagatedUserEnvPkgs = [ gtk-engine-murrine ];
postPatch = ''
sed -i -e 's|Obsidian-2-Local|Obsidian-2|' Obsidian-2/index.theme
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/themes
cp -a Obsidian-2 $out/share/themes
runHook postInstall
'';
meta = with stdenv.lib; {

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, itstool, desktop-file-utils, gnome3, glib, gtk3, libexif, libtiff, colord, colord-gtk, libcanberra-gtk3, lcms2, vte, exiv2 }:
{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, itstool, desktop-file-utils, gnome3, glib, gtk3, libexif, libtiff, colord, colord-gtk, libcanberra-gtk3, lcms2, vte, exiv2, hicolor-icon-theme }:
let
pname = "gnome-color-manager";
@ -11,7 +11,12 @@ in stdenv.mkDerivation rec {
sha256 = "1vpxa2zjz3lkq9ldjg0fl65db9s6b4kcs8nyaqfz3jygma7ifg3w";
};
nativeBuildInputs = [ meson ninja pkgconfig gettext itstool desktop-file-utils ];
nativeBuildInputs = [
meson ninja pkgconfig gettext itstool desktop-file-utils
# setup-hook
hicolor-icon-theme
];
buildInputs = [ glib gtk3 libexif libtiff colord colord-gtk libcanberra-gtk3 lcms2 vte exiv2 ];
passthru = {

View File

@ -1,29 +1,85 @@
{ stdenv, fetchurl, lib, wrapGAppsHook
, pkgconfig, gnome3, gtk3, glib, intltool, libXtst, libnotify, libsoup
, telepathySupport ? false, dbus-glib ? null, telepathy-glib ? null
, libsecret, gnutls, libgcrypt, avahi, zlib, libjpeg, libXdamage, libXfixes, libXext
, networkmanager }:
with lib;
{ stdenv
, fetchFromGitLab
, wrapGAppsHook
, pkgconfig
, gnome3
, gtk3
, glib
, intltool
, libXtst
, libnotify
, libsoup
, libsecret
, gnutls
, libgcrypt
, avahi
, zlib
, libjpeg
, libXdamage
, libXfixes
, libXext
, networkmanager
, gnome-common
, libtool
, automake
, autoconf
, telepathySupport ? false
, dbus-glib ? null
, telepathy-glib ? null
}:
stdenv.mkDerivation rec {
pname = "vino";
version = "3.22.0";
version = "unstable-2019-07-08";
src = fetchurl {
url = "mirror://gnome/sources/vino/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "2911c779b6a2c46e5bc8e5a0c94c2a4d5bd4a1ee7e35f2818702cb13d9d23bab";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "GNOME";
repo = "vino";
rev = "aed81a798558c8127b765cd4fb4dc726d10f1e21";
sha256 = "16r4cj5nsygmd9v97nq6d1yhynzak9hdnaprcdbmwfhh0c9w8jv3";
};
doCheck = true;
nativeBuildInputs = [ intltool wrapGAppsHook pkgconfig ];
nativeBuildInputs = [
autoconf
automake
gnome-common
intltool
libtool
pkgconfig
wrapGAppsHook
];
buildInputs = [
gnome3.adwaita-icon-theme gtk3 glib libXtst libnotify libsoup
libsecret gnutls libgcrypt avahi zlib libjpeg
libXdamage libXfixes libXext networkmanager
] ++ optionals telepathySupport [ dbus-glib telepathy-glib ];
avahi
glib
gnome3.adwaita-icon-theme
gnutls
gtk3
libXdamage
libXext
libXfixes
libXtst
libgcrypt
libjpeg
libnotify
libsecret
libsoup
networkmanager
zlib
]
++ stdenv.lib.optionals telepathySupport [ dbus-glib telepathy-glib ]
;
preConfigure = ''
NOCONFIGURE=1 ./autogen.sh
'';
postInstall = stdenv.lib.optionalString (!telepathySupport) ''
rm -f $out/share/dbus-1/services/org.freedesktop.Telepathy.Client.Vino.service
'';
passthru = {
updateScript = gnome3.updateScript {
@ -35,7 +91,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Projects/Vino;
description = "GNOME desktop sharing server";
maintainers = with maintainers; [ lethalman domenkozar ];
maintainers = gnome3.maintainers;
license = licenses.gpl2;
platforms = platforms.linux;
};

View File

@ -21,36 +21,6 @@ lib.makeScope pkgs.newScope (self: with self; {
maintainers = with pkgs.lib.maintainers; [ lethalman jtojnar hedning worldofpeace ];
corePackages = with gnome3; [
pkgs.desktop-file-utils
pkgs.shared-mime-info # for update-mime-database
pkgs.glib # for gsettings
pkgs.gtk3.out # for gtk-update-icon-cache
glib-networking gvfs dconf gnome-backgrounds gnome-control-center
pkgs.gnome-menus gnome-settings-daemon gnome-shell
gnome-themes-extra adwaita-icon-theme gnome-shell-extensions
pkgs.hicolor-icon-theme
];
optionalPackages = with gnome3; [ baobab eog epiphany evince
gucharmap nautilus totem vino yelp gnome-bluetooth
gnome-calculator gnome-contacts gnome-font-viewer gnome-screenshot
gnome-system-monitor simple-scan
gnome-terminal gnome-user-docs evolution file-roller gedit
gnome-clocks gnome-music gnome-tweaks pkgs.gnome-photos
nautilus-sendto dconf-editor vinagre gnome-weather gnome-logs
gnome-maps gnome-characters gnome-calendar accerciser gnome-nettool
gnome-getting-started-docs gnome-packagekit gnome-software
gnome-power-manager gnome-todo pkgs.gnome-usage
];
gamesPackages = with gnome3; [ swell-foop lightsoff iagno
tali quadrapassel gnome-sudoku atomix aisleriot five-or-more
four-in-a-row gnome-chess gnome-klotski gnome-mahjongg
gnome-mines gnome-nibbles gnome-robots gnome-tetravex
hitori gnome-taquin
];
libsoup = pkgs.libsoup.override { gnomeSupport = true; };
libchamplain = pkgs.libchamplain.override { libsoup = libsoup; };
gnome3 = self // { recurseForDerivations = false; };
@ -385,4 +355,9 @@ lib.makeScope pkgs.newScope (self: with self; {
rest = librest;
pidgin-im-gnome-shell-extension = pkgs.gnomeExtensions.pidgin-im-integration; # added 2019-08-01
# added 2019-08-25
corePackages = throw "deprecated 2019-08-25: please use `services.gnome3.core-shell.enable`";
optionalPackages = throw "deprecated 2019-08-25: please use `services.gnome3.core-utilities.enable`";
gamesPackages = throw "deprecated 2019-08-25: please use `services.gnome3.games.enable`";
})

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, lxqt,
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, lxqt,
libconfig }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "compton-conf";
version = "0.14.1";
@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" \
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "GUI configuration tool for compton X composite manager";
homepage = https://github.com/lxqt/compton-conf;
license = licenses.lgpl21;

View File

@ -1,10 +1,10 @@
{
stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools,
lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools,
pcre, libexif, xorg, libfm, menu-cache,
qtx11extras, qttools
}:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "libfm-qt";
version = "0.14.1";
@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
menu-cache
];
meta = with stdenv.lib; {
meta = with lib; {
description = "Core library of PCManFM-Qt (Qt binding for libfm)";
homepage = https://github.com/lxqt/libfm-qt;
license = licenses.lgpl21;

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras,
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras,
qttools, qtsvg, libqtxdg, polkit-qt, kwindowsystem, xorg }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "liblxqt";
version = "0.14.1";
@ -27,18 +27,11 @@ stdenv.mkDerivation rec {
xorg.libXScrnSaver
];
cmakeFlags = [
"-DLXQT_ETC_XDG_DIR=/run/current-system/sw/etc/xdg"
];
postPatch = ''
sed -i 's|set(LXQT_SHARE_DIR .*)|set(LXQT_SHARE_DIR "/run/current-system/sw/share/lxqt")|' CMakeLists.txt
sed -i "s|\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR}|''${out}/share/polkit-1/actions|" CMakeLists.txt
substituteInPlace CMakeLists.txt \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "Core utility library for all LXQt components";
homepage = https://github.com/lxqt/liblxqt;
license = licenses.lgpl21Plus;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, qtbase, qtsvg, lxqt-build-tools }:
{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, qtsvg, lxqt-build-tools }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "libqtxdg";
version = "3.3.1";
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
)
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "Qt implementation of freedesktop.org xdg specs";
homepage = https://github.com/lxqt/libqtxdg;
license = licenses.lgpl21;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, qtbase, lxqt-build-tools }:
{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, lxqt-build-tools }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "libsysstat";
version = "0.4.2";
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
buildInputs = [ qtbase ];
meta = with stdenv.lib; {
meta = with lib; {
description = "Library used to query system info and statistics";
homepage = https://github.com/lxqt/libsysstat;
license = licenses.lgpl21Plus;

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools,
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools,
qtx11extras, qtsvg, xorg, lxqt-build-tools, libfm-qt, libexif }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lximage-qt";
version = "0.14.1";
@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
libexif
];
meta = with stdenv.lib; {
meta = with lib; {
description = "The image viewer and screenshot tool for lxqt";
homepage = https://github.com/lxqt/lximage-qt;
license = licenses.gpl2;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg }:
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-about";
version = "0.14.1";
@ -25,12 +25,7 @@ stdenv.mkDerivation rec {
libqtxdg
];
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "Dialogue window providing information about LXQt and the system it's running on";
homepage = https://github.com/lxqt/lxqt-about;
license = licenses.lgpl21;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, polkit-qt }:
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, polkit-qt }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-admin";
version = "0.14.1";
@ -29,14 +29,9 @@ stdenv.mkDerivation rec {
postPatch = ''
sed "s|\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR}|''${out}/share/polkit-1/actions|" \
-i lxqt-admin-user/CMakeLists.txt
for f in lxqt-admin-{user,time}/CMakeLists.txt; do
substituteInPlace $f \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
done
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "LXQt system administration tool";
homepage = https://github.com/lxqt/lxqt-admin;
license = licenses.lgpl21;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, json-glib, libfm-qt, qtbase, qttools, qtx11extras }:
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, json-glib, libfm-qt, qtbase, qttools, qtx11extras }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-archiver";
version = "0.0.96";
@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
hardeningDisable = [ "format" ];
meta = with stdenv.lib; {
meta = with lib; {
description = "Archive tool for the LXQt desktop environment";
homepage = https://github.com/lxqt/lxqt-archiver/;
license = licenses.gpl2;

View File

@ -0,0 +1,7 @@
add_definitions("-DLXQT_RELATIVE_SHARE_DIR=\"${LXQT_RELATIVE_SHARE_DIR}\"")
add_definitions("-DLXQT_SHARE_DIR=\"${LXQT_SHARE_DIR}\"")
add_definitions("-DLXQT_RELATIVE_SHARE_TRANSLATIONS_DIR=\"${LXQT_RELATIVE_TRANSLATIONS_DIR}\"")
add_definitions("-DLXQT_SHARE_TRANSLATIONS_DIR=\"${LXQT_TRANSLATIONS_DIR}\"")
add_definitions("-DLXQT_GRAPHICS_DIR=\"${LXQT_GRAPHICS_DIR}\"")
add_definitions("-DLXQT_ETC_XDG_DIR=\"${LXQT_ETC_XDG_DIR}\"")
add_definitions("-DLXQT_DATA_DIR=\"${LXQT_DATA_DIR}\"")

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, pcre, qtbase, glib }:
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, pcre, qtbase, glib }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-build-tools";
version = "0.6.0";
@ -11,13 +11,20 @@ stdenv.mkDerivation rec {
sha256 = "0i7m9s4g5rsw28vclc9nh0zcapx85cqfwxkx7rrw7wa12svy7pm2";
};
nativeBuildInputs = [ cmake pkgconfig ];
nativeBuildInputs = [ cmake pkgconfig setupHook ];
buildInputs = [ qtbase glib pcre ];
preConfigure = ''cmakeFlags+=" -DLXQT_ETC_XDG_DIR=$out/etc/xdg"'';
setupHook = ./setup-hook.sh;
meta = with stdenv.lib; {
# We're dependent on this macro doing add_definitions in most places
# But we have the setup-hook to set the values.
postInstall = ''
rm $out/share/cmake/lxqt-build-tools/modules/LXQtConfigVars.cmake
cp ${./LXQtConfigVars.cmake} $out/share/cmake/lxqt-build-tools/modules/LXQtConfigVars.cmake
'';
meta = with lib; {
description = "Various packaging tools and scripts for LXQt applications";
homepage = https://github.com/lxqt/lxqt-build-tools;
license = licenses.lgpl21;

View File

@ -0,0 +1,15 @@
LXQtCMakePostHook() {
cmakeFlagsArray+=(
-DLXQT_LIBRARY_NAME=lxqt
-DLXQT_SHARE_DIR=$out/share/lxqt
-DLXQT_TRANSLATIONS_DIR=$out/share/lxqt/translations
-DLXQT_GRAPHICS_DIR=$out/share/lxqt/graphics
-DLXQT_ETC_XDG_DIR=$out/etc/xdg
-DLXQT_DATA_DIR=$out/share
-DLXQT_RELATIVE_SHARE_DIR=lxqt
-DLXQT_RELATIVE_SHARE_TRANSLATIONS_DIR=lxqt/translations
)
}
postHooks+=(LXQtCMakePostHook)

View File

@ -1,8 +1,8 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase,
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase,
qtx11extras, qttools, qtsvg, kwindowsystem, libkscreen, liblxqt,
libqtxdg, xorg }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-config";
version = "0.14.1";
@ -38,27 +38,10 @@ stdenv.mkDerivation rec {
];
postPatch = ''
substituteInPlace src/CMakeLists.txt \
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg"
for f in \
lxqt-config-file-associations/CMakeLists.txt \
lxqt-config-brightness/CMakeLists.txt \
lxqt-config-appearance/CMakeLists.txt \
lxqt-config-locale/CMakeLists.txt \
lxqt-config-monitor/CMakeLists.txt \
lxqt-config-input/CMakeLists.txt \
liblxqt-config-cursor/CMakeLists.txt \
src/CMakeLists.txt
do
substituteInPlace $f \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
done
sed -i "/\''${XORG_LIBINPUT_INCLUDE_DIRS}/a ${xorg.xf86inputlibinput.dev}/include/xorg" lxqt-config-input/CMakeLists.txt
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "Tools to configure LXQt and the underlying operating system";
homepage = https://github.com/lxqt/lxqt-config;
license = licenses.lgpl21;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, liblxqt, libqtxdg }:
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, liblxqt, libqtxdg }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-globalkeys";
version = "0.14.1";
@ -26,17 +26,7 @@ stdenv.mkDerivation rec {
libqtxdg
];
postPatch = ''
for dir in autostart xdg; do
substituteInPlace $dir/CMakeLists.txt \
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg"
done
substituteInPlace config/CMakeLists.txt \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "Daemon used to register global keyboard shortcuts";
homepage = https://github.com/lxqt/lxqt-globalkeys;
license = licenses.lgpl21;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, qtx11extras }:
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, qtx11extras }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-notificationd";
version = "0.14.1";
@ -16,16 +16,6 @@ stdenv.mkDerivation rec {
lxqt-build-tools
];
postPatch = ''
substituteInPlace autostart/CMakeLists.txt \
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg"
for f in {config,src}/CMakeLists.txt; do
substituteInPlace $f \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
done
'';
buildInputs = [
qtbase
qttools
@ -36,7 +26,7 @@ stdenv.mkDerivation rec {
qtx11extras
];
meta = with stdenv.lib; {
meta = with lib; {
description = "The LXQt notification daemon";
homepage = https://github.com/lxqt/lxqt-notificationd;
license = licenses.lgpl21;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtsvg, qtx11extras, kwindowsystem, liblxqt, libqtxdg }:
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtsvg, qtx11extras, kwindowsystem, liblxqt, libqtxdg }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-openssh-askpass";
version = "0.14.1";
@ -26,12 +26,7 @@ stdenv.mkDerivation rec {
libqtxdg
];
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "GUI to query passwords on behalf of SSH agents";
homepage = https://github.com/lxqt/lxqt-openssh-askpass;
license = licenses.lgpl21;

View File

@ -1,5 +1,5 @@
{
stdenv, fetchFromGitHub,
lib, mkDerivation, fetchFromGitHub,
cmake, pkgconfig, lxqt-build-tools,
qtbase, qttools, qtx11extras, qtsvg, libdbusmenu, kwindowsystem, solid,
kguiaddons, liblxqt, libqtxdg, lxqt-globalkeys, libsysstat,
@ -7,7 +7,7 @@
lxmenu-data, pcre, libXdamage
}:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-panel";
version = "0.14.1";
@ -49,21 +49,7 @@ stdenv.mkDerivation rec {
libXdamage
];
postPatch = ''
for dir in autostart menu; do
substituteInPlace $dir/CMakeLists.txt \
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg"
done
substituteInPlace panel/CMakeLists.txt \
--replace "DESTINATION \''${LXQT_ETC_XDG_DIR}" "DESTINATION etc/xdg"
for f in cmake/BuildPlugin.cmake panel/CMakeLists.txt; do
substituteInPlace $f \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
done
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "The LXQt desktop panel";
homepage = https://github.com/lxqt/lxqt-panel;
license = licenses.lgpl21;

View File

@ -1,10 +1,10 @@
{
stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools,
lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools,
qtbase, qttools, qtx11extras, qtsvg, polkit-qt, kwindowsystem, liblxqt,
libqtxdg, pcre
}:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-policykit";
version = "0.14.1";
@ -33,15 +33,7 @@ stdenv.mkDerivation rec {
pcre
];
postPatch = ''
substituteInPlace autostart/CMakeLists.txt \
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg"
substituteInPlace CMakeLists.txt \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "The LXQt PolicyKit agent";
homepage = https://github.com/lxqt/lxqt-policykit;
license = licenses.lgpl21;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, solid, kidletime, liblxqt, libqtxdg }:
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, solid, kidletime, liblxqt, libqtxdg }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-powermanagement";
version = "0.14.1";
@ -28,17 +28,7 @@ stdenv.mkDerivation rec {
libqtxdg
];
postPatch = ''
substituteInPlace autostart/CMakeLists.txt \
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg"
for f in {config,src}/CMakeLists.txt; do
substituteInPlace $f \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
done
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "Power management module for LXQt";
homepage = https://github.com/lxqt/lxqt-powermanagement;
license = licenses.lgpl21;

View File

@ -1,10 +1,10 @@
{
stdenv, fetchFromGitHub,
lib, mkDerivation, fetchFromGitHub,
cmake, lxqt-build-tools,
qtbase, qtx11extras, qttools, qtsvg, libdbusmenu, libqtxdg, libfm-qt
}:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-qtplugin";
version = "0.14.0";
@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
--replace "DESTINATION \"\''${QT_PLUGINS_DIR}" "DESTINATION \"$qtPluginPrefix"
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "LXQt Qt platform integration plugin";
homepage = https://github.com/lxqt/lxqt-qtplugin;
license = licenses.lgpl21;

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, lxqt-globalkeys, qtx11extras,
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, lxqt-globalkeys, qtx11extras,
menu-cache, muparser, pcre }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-runner";
version = "0.14.1";
@ -32,15 +32,7 @@ stdenv.mkDerivation rec {
pcre
];
postPatch = ''
substituteInPlace autostart/CMakeLists.txt \
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg"
substituteInPlace CMakeLists.txt \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "Tool used to launch programs quickly by typing their names";
homepage = https://github.com/lxqt/lxqt-runner;
license = licenses.lgpl21;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase, qttools, qtsvg, qtx11extras, kwindowsystem, liblxqt, libqtxdg, xorg, xdg-user-dirs }:
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase, qttools, qtsvg, qtx11extras, kwindowsystem, liblxqt, libqtxdg, xorg, xdg-user-dirs }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-session";
version = "0.14.1";
@ -30,19 +30,7 @@ stdenv.mkDerivation rec {
xdg-user-dirs
];
postPatch = ''
for dir in autostart config; do
substituteInPlace $dir/CMakeLists.txt \
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg"
done
for f in lxqt-{config-session,leave,session}/CMakeLists.txt; do
substituteInPlace $f \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
done
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "An alternative session manager ported from the original razor-session";
homepage = https://github.com/lxqt/lxqt-session;
license = licenses.lgpl21;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, liblxqt, libqtxdg, sudo }:
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, liblxqt, libqtxdg, sudo }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-sudo";
version = "0.14.1";
@ -27,12 +27,7 @@ stdenv.mkDerivation rec {
sudo
];
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "GUI frontend for sudo/su";
homepage = https://github.com/lxqt/lxqt-sudo;
license = licenses.lgpl21;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools }:
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "lxqt-themes";
version = "0.14.0";
@ -16,14 +16,7 @@ stdenv.mkDerivation rec {
lxqt-build-tools
];
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace "DESTINATION \"\''${LXQT_GRAPHICS_DIR}" "DESTINATION \"share/lxqt/graphics"
substituteInPlace themes/CMakeLists.txt \
--replace "DESTINATION \"\''${LXQT_SHARE_DIR}" "DESTINATION \"share/lxqt"
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "Themes, graphics and icons for LXQt";
homepage = https://github.com/lxqt/lxqt-themes;
license = licenses.lgpl21;

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, pcre, qtbase, qttools,
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, pcre, qtbase, qttools,
qtx11extras, xorg, lxqt-build-tools, openbox, hicolor-icon-theme }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "obconf-qt";
version = "0.14.1";
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
hicolor-icon-theme
];
meta = with stdenv.lib; {
meta = with lib; {
description = "The Qt port of obconf, the Openbox configuration tool";
homepage = https://github.com/lxqt/obconf-qt;
license = licenses.gpl2;

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt, libpulseaudio,
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt, libpulseaudio,
pcre, qtbase, qttools, qtx11extras }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "pavucontrol-qt";
version = "0.14.1";
@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
pcre
];
meta = with stdenv.lib; {
meta = with lib; {
description = "A Pulseaudio mixer in Qt (port of pavucontrol)";
homepage = https://github.com/lxqt/pavucontrol-qt;
license = licenses.gpl2;

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt, qtbase, qttools,
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, lxqt, qtbase, qttools,
qtx11extras, libfm-qt, menu-cache, lxmenu-data }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "pcmanfm-qt";
version = "0.14.1";
@ -28,14 +28,7 @@ stdenv.mkDerivation rec {
lxmenu-data
];
postPatch = ''
for dir in autostart config; do
substituteInPlace $dir/CMakeLists.txt \
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg"
done
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "File manager and desktop icon manager (Qt port of PCManFM and libfm)";
homepage = https://github.com/lxqt/pcmanfm-qt;
license = licenses.gpl2;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, qtbase, qttools }:
{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, qttools }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "qlipper";
version = "5.1.1";
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
buildInputs = [ qtbase qttools ];
meta = with stdenv.lib; {
meta = with lib; {
description = "Cross-platform clipboard history applet";
homepage = https://github.com/pvanek/qlipper;
license = licenses.gpl2Plus;

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, qtbase, qtx11extras, qttools,
{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, qtx11extras, qttools,
lxqt-build-tools }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "qps";
version = "1.10.20";
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
buildInputs = [ qtbase qtx11extras qttools ];
meta = with stdenv.lib; {
meta = with lib; {
description = "The Qt process manager";
homepage = https://github.com/lxqt/qps;
license = licenses.gpl2;

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtermwidget,
{ lib, mkDerivation, fetchFromGitHub, cmake, lxqt-build-tools, qtermwidget,
qtbase, qttools, qtx11extras }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "qterminal";
version = "0.14.1";
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
qtermwidget
];
meta = with stdenv.lib; {
meta = with lib; {
description = "A lightweight Qt-based terminal emulator";
homepage = https://github.com/lxqt/qterminal;
license = licenses.gpl2;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, qtbase, qttools, lxqt-build-tools }:
{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, qttools, lxqt-build-tools }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "qtermwidget";
version = "0.14.1";
@ -13,9 +13,9 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake lxqt-build-tools ];
buildInputs = [ qtbase qttools];
buildInputs = [ qtbase qttools ];
meta = with stdenv.lib; {
meta = with lib; {
description = "A terminal emulator widget for Qt 5";
homepage = https://github.com/lxqt/qtermwidget;
license = licenses.gpl2;

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, libqtxdg, xorg, autoPatchelfHook }:
{ lib, mkDerivation, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, libqtxdg, xorg, autoPatchelfHook }:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "screengrab";
version = "1.101";
@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
xorg.libXdmcp
];
meta = with stdenv.lib; {
meta = with lib; {
description = "Crossplatform tool for fast making screenshots";
homepage = https://github.com/lxqt/screengrab;
license = licenses.gpl2;

View File

@ -200,5 +200,12 @@ in rec {
binary = binaryCrystal_0_29;
};
crystal = crystal_0_29;
crystal_0_30 = generic {
version = "0.30.1";
sha256 = "0fbk784zjflsl3hys5a1xmn8mda8kb2z7ql58wpyfavivswxanbs";
doCheck = false; # 6 checks are failing now
binary = binaryCrystal_0_29;
};
crystal = crystal_0_30;
}

View File

@ -1,14 +1,14 @@
# Temporaririly avoid dependency on dotnetbuildhelpers to avoid rebuilding many times while working on it
{ stdenv, fetchurl, pkgconfig, autoconf, automake, which, mono, dotnetbuildhelpers, dotnetPackages }:
{ stdenv, fetchurl, pkgconfig, autoconf, automake, which, mono, msbuild, dotnetbuildhelpers, dotnetPackages }:
stdenv.mkDerivation rec {
pname = "fsharp";
version = "4.1.7";
version = "4.1.34";
src = fetchurl {
url = "https://github.com/fsharp/fsharp/archive/${version}.tar.gz";
sha256 = "0rfkrk4mzi4w54mfqilvng9ar5swhmnwhsyjc54rx3fd0np3jiyl";
sha256 = "0cv6p5pin962vhbpsji40nkckkag5c96kq5qihvg60pc1z821p0i";
};
nativeBuildInputs = [ pkgconfig ];
@ -17,12 +17,16 @@ stdenv.mkDerivation rec {
automake
which
mono
msbuild
dotnetbuildhelpers
dotnetPackages.FsCheck262
dotnetPackages.FSharpCompilerTools
dotnetPackages.FSharpCore
dotnetPackages.FSharpCore302
dotnetPackages.FSharpCore3125
dotnetPackages.FSharpCore4001
dotnetPackages.FSharpCore4117
dotnetPackages.FSharpData225
dotnetPackages.FsLexYacc704
dotnetPackages.FsLexYacc706
dotnetPackages.MicrosoftDiaSymReader
dotnetPackages.MicrosoftDiaSymReaderPortablePdb
dotnetPackages.NUnit350
@ -31,6 +35,14 @@ stdenv.mkDerivation rec {
dotnetPackages.SystemValueTuple
];
# https://github.com/mono/mono/tree/fe0f311a848068ab2d17a9b9dd15326e5712d520/packaging/MacSDK/patches
# https://github.com/mono/mono/issues/7805
patches = [
./fsharp-IsPathRooted-type-inference.patch
./fsharp-string-switchName.patch
./fsharp-path-overloads.patch
];
configurePhase = ''
substituteInPlace ./autogen.sh --replace "/usr/bin/env sh" "${stdenv.shell}"
./autogen.sh --prefix $out
@ -47,24 +59,30 @@ stdenv.mkDerivation rec {
mkdir packages
ln -s ${dotnetPackages.FsCheck262}/lib/dotnet/FsCheck packages/FsCheck.2.6.2
ln -s ${dotnetPackages.FSharpCompilerTools}/lib/dotnet/FSharp.Compiler.Tools packages/FSharp.Compiler.Tools.4.1.4
ln -s ${dotnetPackages.FSharpCore}/lib/dotnet/FSharp.Core/ packages/FSharp.Core.4.0.0.1
ln -s ${dotnetPackages.FSharpCompilerTools}/lib/dotnet/FSharp.Compiler.Tools packages/FSharp.Compiler.Tools.4.1.27
ln -s ${dotnetPackages.FSharpCore302}/lib/dotnet/FSharp.Core/ packages/FSharp.Core.3.0.2
ln -s ${dotnetPackages.FSharpCore3125}/lib/dotnet/FSharp.Core/ packages/FSharp.Core.3.1.2.5
ln -s ${dotnetPackages.FSharpCore4001}/lib/dotnet/FSharp.Core/ packages/FSharp.Core.4.0.0.1
ln -s ${dotnetPackages.FSharpCore4117}/lib/dotnet/FSharp.Core/ packages/FSharp.Core.4.1.17
ln -s ${dotnetPackages.FSharpData225}/lib/dotnet/FSharp.Data/ packages/FSharp.Data.2.2.5
ln -s ${dotnetPackages.FsLexYacc704}/lib/dotnet/FsLexYacc/ packages/FsLexYacc.7.0.4
ln -s ${dotnetPackages.FsLexYacc706}/lib/dotnet/FsLexYacc/ packages/FsLexYacc.7.0.6
ln -s ${dotnetPackages.MicrosoftDiaSymReader}/lib/dotnet/Microsoft.DiaSymReader/ packages/Microsoft.DiaSymReader.1.1.0
ln -s ${dotnetPackages.MicrosoftDiaSymReaderPortablePdb}/lib/dotnet/Microsoft.DiaSymReader.PortablePdb/ packages/Microsoft.DiaSymReader.PortablePdb.1.2.0
ln -s ${dotnetPackages.NUnit350}/lib/dotnet/NUnit/ packages/NUnit.3.5.0
ln -s ${dotnetPackages.SystemCollectionsImmutable131}/lib/dotnet/System.Collections.Immutable/ packages/System.Collections.Immutable.1.3.1
ln -s ${dotnetPackages.SystemReflectionMetadata}/lib/dotnet/System.Reflection.Metadata/ packages/System.Reflection.Metadata.1.4.2
ln -s ${dotnetPackages.SystemValueTuple}/lib/dotnet/System.ValueTuple/ packages/System.ValueTuple.4.3.0
ln -s ${dotnetPackages.SystemValueTuple}/lib/dotnet/System.ValueTuple/ packages/System.ValueTuple.4.3.1
'';
# Make sure the executables use the right mono binary,
# and set up some symlinks for backwards compatibility.
# Signing /home/jdanek/nix/nixpkgs/build/fss/fsharp-4.1.34/again/fsharp-4.1.34/Release/fsharp30/net40/bin/FSharp.Core.dll with Mono key
# ERROR: Unknown error during processing: System.UnauthorizedAccessException: Access to the path
# "Release/fsharp30/net40/bin/FSharp.Core.dll" is denied.
preInstall = ''
find Release/ -name FSharp.Core.dll -exec chmod u+w {} \;
'';
# Set up some symlinks for backwards compatibility.
postInstall = ''
substituteInPlace $out/bin/fsharpc --replace " mono " " ${mono}/bin/mono "
substituteInPlace $out/bin/fsharpi --replace " mono " " ${mono}/bin/mono "
substituteInPlace $out/bin/fsharpiAnyCpu --replace " mono " " ${mono}/bin/mono "
ln -s $out/bin/fsharpc $out/bin/fsc
ln -s $out/bin/fsharpi $out/bin/fsi
for dll in "$out/lib/mono/fsharp"/FSharp*.dll
@ -73,6 +91,26 @@ stdenv.mkDerivation rec {
done
'';
doInstallCheck = true;
installCheckPhase = ''
echo 'printf "int = %i" (6 * 7);;' > script.fsx
$out/bin/fsi --exec script.fsx | grep "int = 42"
$out/bin/fsharpi --exec script.fsx | grep "int = 42"
$out/bin/fsharpiAnyCpu --exec script.fsx | grep "int = 42"
cat > answer.fs <<EOF
open System
[<EntryPoint>]
let main argv =
printfn "int = %i" (6 * 7)
0
EOF
$out/bin/fsc answer.fs
${mono}/bin/mono answer.exe | grep "int = 42"
'';
# To fix this error when running:
# The file "/nix/store/path/whatever.exe" is an not a valid CIL image
dontStrip = true;

View File

@ -0,0 +1,21 @@
commit c37fce5b3019c7a150203fc3a484885591b194de
Author: Alexis Christoforides <alexis@thenull.net>
Date: Sun Dec 2 00:10:24 2018 -0500
Help Path.IsPathRooted method overload selection.
.NET Core, and Mono after merging https://github.com/mono/mono/pull/11342, introduce ambiguity with a new overload.
diff --git a/src/scripts/scriptlib.fsx b/src/scripts/scriptlib.fsx
index cc797e305..699c7bb93 100644
--- a/src/scripts/scriptlib.fsx
+++ b/src/scripts/scriptlib.fsx
@@ -92,7 +92,7 @@ module Scripting =
module Process =
- let processExePath baseDir exe =
+ let processExePath baseDir (exe:string) =
if Path.IsPathRooted(exe) then exe
else
match Path.GetDirectoryName(exe) with

View File

@ -0,0 +1,22 @@
diff --git a/src/scripts/scriptlib.fsx b/src/scripts/scriptlib.fsx
index cc797e305..ae8a6d3cc 100644
--- a/src/scripts/scriptlib.fsx
+++ b/src/scripts/scriptlib.fsx
@@ -59,12 +59,12 @@ module Scripting =
let (++) a b = Path.Combine(a,b)
- let getBasename a = Path.GetFileNameWithoutExtension a
- let getFullPath a = Path.GetFullPath a
- let getFilename a = Path.GetFileName a
- let getDirectoryName a = Path.GetDirectoryName a
+ let getBasename (path: string) = Path.GetFileNameWithoutExtension path
+ let getFullPath (path: string) = Path.GetFullPath path
+ let getFilename (path: string) = Path.GetFileName path
+ let getDirectoryName (path: string) = Path.GetDirectoryName path
- let copyFile source dir =
+ let copyFile (source: string) dir =
let dest =
if not (Directory.Exists dir) then Directory.CreateDirectory dir |>ignore
let result = Path.Combine(dir, Path.GetFileName source)

View File

@ -0,0 +1,13 @@
diff --git a/src/scripts/scriptlib.fsx b/src/scripts/scriptlib.fsx
index cc797e305..5a7be7d2b 100644
--- a/src/scripts/scriptlib.fsx
+++ b/src/scripts/scriptlib.fsx
@@ -36,7 +36,7 @@ module Scripting =
#if INTERACTIVE
let argv = Microsoft.FSharp.Compiler.Interactive.Settings.fsi.CommandLineArgs |> Seq.skip 1 |> Seq.toArray
- let getCmdLineArgOptional switchName =
+ let getCmdLineArgOptional (switchName: string) =
argv |> Array.filter(fun t -> t.StartsWith(switchName)) |> Array.map(fun t -> t.Remove(0, switchName.Length).Trim()) |> Array.tryHead
let getCmdLineArg switchName defaultValue =

View File

@ -86,12 +86,12 @@ let
in
stdenv.mkDerivation (rec {
version = "8.8.0.20190721";
version = "8.8.1";
name = "${targetPrefix}ghc-${version}";
src = fetchurl {
url = "https://downloads.haskell.org/ghc/8.8.1-rc1/ghc-${version}-src.tar.xz";
sha256 = "1ih76zpxk8ay84xjyaflqc754002y8pdaainqfvb4cnhy6lpb1br";
url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz";
sha256 = "06kj4fhvijinjafiy4s873n60qly323rdlz9bmc79nhlp3cq72lh";
};
enableParallelBuilding = true;

View File

@ -0,0 +1,9 @@
{ callPackage, Foundation, libobjc }:
callPackage ./generic.nix (rec {
inherit Foundation libobjc;
version = "6.0.0.313";
srcArchiveSuffix = "tar.xz";
sha256 = "0l0cd6q5xh1vdm6zr78rkfqdsmrgzanjgpxvgig0pyd3glfyjim9";
enableParallelBuilding = true;
})

View File

@ -1,4 +1,7 @@
{ stdenv, fetchurl, bison, pkgconfig, glib, gettext, perl, libgdiplus, libX11, callPackage, ncurses, zlib, withLLVM ? false, cacert, Foundation, libobjc, python, version, sha256, autoconf, libtool, automake, cmake, which, enableParallelBuilding ? true }:
{ stdenv, fetchurl, bison, pkgconfig, glib, gettext, perl, libgdiplus, libX11, callPackage, ncurses, zlib, withLLVM ? false, cacert, Foundation, libobjc, python, version, sha256, autoconf, libtool, automake, cmake, which
, enableParallelBuilding ? true
, srcArchiveSuffix ? "tar.bz2"
}:
let
llvm = callPackage ./llvm.nix { };
@ -9,7 +12,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
inherit sha256;
url = "https://download.mono-project.com/sources/mono/${pname}-${version}.tar.bz2";
url = "https://download.mono-project.com/sources/mono/${pname}-${version}.${srcArchiveSuffix}";
};
buildInputs =

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