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, example ? null,
# String describing the option. # String describing the option.
description ? null, 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, relatedPackages ? null,
# Option type, providing type-checking and value merging. # Option type, providing type-checking and value merging.
type ? null, type ? null,

View File

@ -1724,6 +1724,16 @@
fingerprint = "389A 78CB CD88 5E0C 4701 DEB9 FD42 C7D0 D414 94C8"; 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 = { dxf = {
email = "dingxiangfei2009@gmail.com"; email = "dingxiangfei2009@gmail.com";
github = "dingxiangfei2009"; github = "dingxiangfei2009";
@ -2853,6 +2863,15 @@
githubId = 1383440; githubId = 1383440;
name = "Jason Gilliland"; 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 = { jdehaas = {
email = "qqlq@nullptr.club"; email = "qqlq@nullptr.club";
github = "jeroendehaas"; github = "jeroendehaas";
@ -6549,6 +6568,12 @@
githubId = 1525767; githubId = 1525767;
name = "Vaibhav Sagar"; name = "Vaibhav Sagar";
}; };
valebes = {
email = "valebes@gmail.com";
github = "valebes";
githubid = 10956211;
name = "Valerio Besozzi";
};
valeriangalliat = { valeriangalliat = {
email = "val@codejam.info"; email = "val@codejam.info";
github = "valeriangalliat"; github = "valeriangalliat";

View File

@ -284,6 +284,13 @@
Squid 3 has been removed and the <option>squid</option> derivation now refers to Squid 4. Squid 3 has been removed and the <option>squid</option> derivation now refers to Squid 4.
</para> </para>
</listitem> </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> </itemizedlist>
</section> </section>
@ -506,6 +513,20 @@
been removed. been removed.
</para> </para>
</listitem> </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> </itemizedlist>
</section> </section>
</section> </section>

View File

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

View File

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

View File

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

View File

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

View File

@ -103,7 +103,6 @@ in
LockPersonality = true; LockPersonality = true;
RestrictRealtime = true; RestrictRealtime = true;
PrivateMounts = true; PrivateMounts = true;
PrivateUsers = true;
MemoryDenyWriteExecute = 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; "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 = { services = {
fcgiwrap = lib.mkIf useNginx { fcgiwrap = lib.mkIf useNginx {

View File

@ -136,10 +136,16 @@ in
"/.dns/127.0.0.1#${toString cfg.dns.port}" "/.dns/127.0.0.1#${toString cfg.dns.port}"
]; ];
services.pdns-recursor.forwardZones = mkIf cfgs.pdns-recursor.resolveDNSChainQueries services.pdns-recursor = mkIf cfgs.pdns-recursor.resolveDNSChainQueries {
{ bit = "127.0.0.1:${toString cfg.dns.port}"; forwardZones =
dns = "127.0.0.1:${toString cfg.dns.port}"; { 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 { users.users = singleton {
name = username; name = username;

View File

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

View File

@ -6,25 +6,27 @@ let
dataDir = "/var/lib/pdns-recursor"; dataDir = "/var/lib/pdns-recursor";
username = "pdns-recursor"; username = "pdns-recursor";
cfg = config.services.pdns-recursor; cfg = config.services.pdns-recursor;
zones = mapAttrsToList (zone: uri: "${zone}.=${uri}") cfg.forwardZones;
configFile = pkgs.writeText "recursor.conf" '' oneOrMore = type: with types; either type (listOf type);
local-address=${cfg.dns.address} valueType = with types; oneOf [ int str bool path ];
local-port=${toString cfg.dns.port} configType = with types; attrsOf (nullOr (oneOrMore valueType));
allow-from=${concatStringsSep "," cfg.dns.allowFrom}
webserver-address=${cfg.api.address} toBool = val: if val then "yes" else "no";
webserver-port=${toString cfg.api.port} serialize = val: with types;
webserver-allow-from=${concatStringsSep "," cfg.api.allowFrom} 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} configFile = pkgs.writeText "recursor.conf"
export-etc-hosts=${if cfg.exportHosts then "yes" else "no"} (concatStringsSep "\n"
dnssec=${cfg.dnssecValidation} (flip mapAttrsToList cfg.settings
serve-rfc1918=${if cfg.serveRFC1918 then "yes" else "no"} (name: val: "${name}=${serialize val}")));
${cfg.extraConfig} mkDefaultAttrs = mapAttrs (n: v: mkDefault v);
'';
in { in {
options.services.pdns-recursor = { 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; type = types.lines;
default = ""; default = "";
description = '' 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 { 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}" = { users.users."${username}" = {
home = dataDir; home = dataDir;
createHome = true; createHome = true;
@ -150,8 +190,7 @@ in {
AmbientCapabilities = "cap_net_bind_service"; AmbientCapabilities = "cap_net_bind_service";
ExecStart = ''${pkgs.pdns-recursor}/bin/pdns_recursor \ ExecStart = ''${pkgs.pdns-recursor}/bin/pdns_recursor \
--config-dir=${dataDir} \ --config-dir=${dataDir} \
--socket-dir=${dataDir} \ --socket-dir=${dataDir}
--disable-syslog
''; '';
}; };
@ -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"; Type = "simple";
ExecStart = "${(removeSuffix "\n" cmd)} start"; ExecStart = "${(removeSuffix "\n" cmd)} start";
ExecStop = "${(removeSuffix "\n" cmd)} stop"; ExecStop = "${(removeSuffix "\n" cmd)} stop";
Restart = "on-failure";
User = "unifi"; User = "unifi";
UMask = "0077"; UMask = "0077";
WorkingDirectory = "${stateDir}"; WorkingDirectory = "${stateDir}";

View File

@ -84,6 +84,18 @@ in
The directory where transmission will create files. 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.ExecStartPre = preStart;
serviceConfig.ExecStart = "${pkgs.transmission}/bin/transmission-daemon -f --port ${toString config.services.transmission.port}"; serviceConfig.ExecStart = "${pkgs.transmission}/bin/transmission-daemon -f --port ${toString config.services.transmission.port}";
serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; 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) # NOTE: transmission has an internal umask that also must be set (in settings.json)
serviceConfig.UMask = "0002"; serviceConfig.UMask = "0002";
}; };
@ -107,14 +120,19 @@ in
# It's useful to have transmission in path, e.g. for remote control # It's useful to have transmission in path, e.g. for remote control
environment.systemPackages = [ pkgs.transmission ]; environment.systemPackages = [ pkgs.transmission ];
users.groups.transmission.gid = config.ids.gids.transmission; users.users = optionalAttrs (cfg.user == "transmission") (singleton
users.users.transmission = { { name = "transmission";
group = "transmission"; group = cfg.group;
uid = config.ids.uids.transmission; uid = config.ids.uids.transmission;
description = "Transmission BitTorrent user"; description = "Transmission BitTorrent user";
home = homeDir; home = homeDir;
createHome = true; createHome = true;
}; });
users.groups = optionalAttrs (cfg.group == "transmission") (singleton
{ name = "transmission";
gid = config.ids.gids.transmission;
});
# AppArmor profile # AppArmor profile
security.apparmor.profiles = mkIf apparmor [ 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 # Use User-Private Group scheme to protect Matomo data, but allow administration / backup via 'matomo' group
# Copy config folder # Copy config folder
chmod g+s "${dataDir}" 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}" chmod -R u+rwX,g+rwX,o-rwx "${dataDir}"
# check whether user setup has already been done # 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; with lib;
let let
cfg = config.services.xserver.desktopManager.gnome3; cfg = config.services.xserver.desktopManager.gnome3;
serviceCfg = config.services.gnome3;
# Prioritize nautilus by default when opening directories # Prioritize nautilus by default when opening directories
mimeAppsList = pkgs.writeTextFile { mimeAppsList = pkgs.writeTextFile {
@ -45,10 +47,19 @@ let
flashbackEnabled = cfg.flashback.enableMetacity || length cfg.flashback.customSessions > 0; flashbackEnabled = cfg.flashback.enableMetacity || length cfg.flashback.customSessions > 0;
in { in
{
options = { 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 = { services.xserver.desktopManager.gnome3 = {
enable = mkOption { enable = mkOption {
default = false; 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. services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ];
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 ];
# Enable default programs environment.extraInit = ''
programs.dconf.enable = true; ${concatMapStrings (p: ''
programs.evince.enable = mkDefault true; if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
programs.file-roller.enable = mkDefault true; export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
programs.gnome-disks.enable = mkDefault true; fi
programs.gnome-documents.enable = mkDefault true;
programs.gnome-terminal.enable = mkDefault true;
# If gnome3 is installed, build vim for gtk3 too. if [ -d "${p}/lib/girepository-1.0" ]; then
nixpkgs.config.vim.gui = "gtk3"; 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 = [ environment.systemPackages = cfg.sessionPath;
pkgs.dejavu_fonts pkgs.cantarell-fonts
pkgs.source-sans-pro
pkgs.source-code-pro # Default monospace font in 3.32
];
services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ] environment.variables.GNOME_SESSION_DEBUG = mkIf cfg.debug "1";
++ map
# 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 { (wm: pkgs.gnome3.gnome-flashback.mkSessionForWm {
inherit (wm) wmName wmLabel wmCommand; inherit (wm) wmName wmLabel wmCommand;
}) (optional cfg.flashback.enableMetacity { }) (optional cfg.flashback.enableMetacity {
@ -186,73 +174,152 @@ in {
wmCommand = "${pkgs.gnome3.metacity}/bin/metacity"; wmCommand = "${pkgs.gnome3.metacity}/bin/metacity";
} ++ cfg.flashback.customSessions); } ++ cfg.flashback.customSessions);
environment.extraInit = '' security.pam.services.gnome-screensaver = {
${concatMapStrings (p: '' enableGnomeKeyring = true;
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 [ -d "${p}/lib/girepository-1.0" ]; then services.dbus.packages = [
export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0 pkgs.gnome3.gnome-screensaver
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib ];
fi })
'') cfg.sessionPath}
'';
(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; xdg.portal.enable = true;
# GNOME should have its own geoclue agent xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
services.geoclue2.enableDemoAgent = false;
services.geoclue2.appConfig."gnome-datetime-panel" = { networking.networkmanager.enable = mkDefault true;
isAllowed = true;
isSystem = true;
};
services.geoclue2.appConfig."gnome-color-panel" = {
isAllowed = true;
isSystem = true;
};
services.geoclue2.appConfig."org.gnome.Shell" = {
isAllowed = true;
isSystem = true;
};
environment.variables.GNOME_SESSION_DEBUG = optionalString cfg.debug "1"; # Use the correct gnome3 packageSet
networking.networkmanager.basePackages = {
# Override default mimeapps inherit (pkgs) networkmanager modemmanager wpa_supplicant crda;
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;
inherit (pkgs.gnome3) networkmanager-openvpn networkmanager-vpnc inherit (pkgs.gnome3) networkmanager-openvpn networkmanager-vpnc
networkmanager-openconnect networkmanager-fortisslvpn networkmanager-openconnect networkmanager-fortisslvpn
networkmanager-iodine networkmanager-l2tp; }; networkmanager-iodine networkmanager-l2tp;
};
# Needed for themes and backgrounds services.xserver.updateDbusEnvironment = true;
environment.pathsToLink = [
"/share"
"/share/nautilus-python/extensions"
];
security.pam.services.gnome-screensaver = mkIf flashbackEnabled { # Needed for themes and backgrounds
enableGnomeKeyring = true; 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 { systemd.enableCgroupAccounting = mkOption {
default = false; default = true;
type = types.bool; type = types.bool;
description = '' description = ''
Whether to enable cgroup accounting. Whether to enable cgroup accounting.
@ -804,10 +804,10 @@ in
[Manager] [Manager]
${optionalString config.systemd.enableCgroupAccounting '' ${optionalString config.systemd.enableCgroupAccounting ''
DefaultCPUAccounting=yes DefaultCPUAccounting=yes
DefaultBlockIOAccounting=yes
DefaultIOAccounting=yes DefaultIOAccounting=yes
DefaultBlockIOAccounting=yes DefaultBlockIOAccounting=yes
DefaultMemoryAccounting=yes DefaultIPAccounting=yes
DefaultTasksAccounting=yes
''} ''}
DefaultLimitCORE=infinity DefaultLimitCORE=infinity
${config.systemd.extraConfig} ${config.systemd.extraConfig}

View File

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

View File

@ -5,9 +5,17 @@ import ./make-test.nix ({ pkgs, ... }: {
}; };
nodes = { nodes = {
# Testing the Byzantine Fault Tolerant protocol
bft = { ... }: { bft = { ... }: {
environment.systemPackages = [ pkgs.jormungandr ]; 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.enable = true;
services.jormungandr.genesisBlockFile = "/var/lib/jormungandr/block-0.bin"; services.jormungandr.genesisBlockFile = "/var/lib/jormungandr/block-0.bin";
services.jormungandr.secretFile = "/etc/secrets/jormungandr.yaml"; services.jormungandr.secretFile = "/etc/secrets/jormungandr.yaml";
@ -17,6 +25,7 @@ import ./make-test.nix ({ pkgs, ... }: {
testScript = '' testScript = ''
startAll; startAll;
## Testing BFT
# Let's wait for the StateDirectory # Let's wait for the StateDirectory
$bft->waitForFile("/var/lib/jormungandr/"); $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 # 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"); $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->waitForUnit('multi-user.target');
$machine->succeed('sysctl net.core.default_qdisc | grep -q "fq_codel"'); $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"; sha256 = "06ij9v7zbdnhxq9429nnxiw655cp8idldj18l7fmj94gqx07n5vh";
}; };
patches = [ ./fix-bitcoin-qt-build.patch ];
nativeBuildInputs = [ pkgconfig autoreconfHook ]; nativeBuildInputs = [ pkgconfig autoreconfHook ];
buildInputs = [ openssl db48 boost zlib buildInputs = [ openssl db48 boost zlib
miniupnpc utillinux protobuf libevent ] miniupnpc utillinux protobuf libevent ]
++ optionals withGui [ qtbase qttools qrencode ]; ++ optionals withGui [ qtbase qttools qrencode ];
configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ] 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; enableParallelBuilding = true;

View File

@ -24,6 +24,22 @@ rustPlatform.buildRustPackage rec {
nativeBuildInputs = [ pkgconfig protobuf ]; nativeBuildInputs = [ pkgconfig protobuf ];
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ]; 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"; PROTOC = "${protobuf}/bin/protoc";
# Disabling integration tests # Disabling integration tests

View File

@ -28,13 +28,13 @@ let
in in
with stdenv.lib; stdenv.mkDerivation rec { with stdenv.lib; stdenv.mkDerivation rec {
pname = "VCV-Rack"; pname = "VCV-Rack";
version = "1.1.3"; version = "1.1.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "VCVRack"; owner = "VCVRack";
repo = "Rack"; repo = "Rack";
rev = "v${version}"; rev = "v${version}";
sha256 = "16q3x0jpwkdwwvh7rn472w7nfjf81s10z9c7bx011kk7rgk88hh2"; sha256 = "04kg0nm7w19s2zfrsxjfl3bs4sy3bzf28kzl4hayzwv480667ybx";
fetchSubmodules = true; 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 # The source is BSD-3 licensed, some of the art is CC-BY-NC 4.0 or under a
# no-derivatives clause # no-derivatives clause
license = with licenses; [ bsd3 cc-by-nc-40 unfreeRedistributable ]; license = with licenses; [ bsd3 cc-by-nc-40 unfreeRedistributable ];
maintainers = with maintainers; [ moredread ]; maintainers = with maintainers; [ moredread nathyong ];
platforms = platforms.linux; 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; inherit (import ./libgenerated.nix lib self) melpaDerivation;
super = lib.listToAttrs (map (melpaDerivation variant) (lib.importJSON archiveJson)); super = lib.listToAttrs (map (melpaDerivation variant) (lib.importJSON archiveJson));
generic = import ./melpa-generic.nix;
overrides = rec { overrides = rec {
shared = { shared = {
# Expects bash to be at /bin/bash # 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 # upstream issue: missing file header
initsplit = markBroken super.initsplit; initsplit = markBroken super.initsplit;
irony = super.irony.overrideAttrs(old: { irony = super.irony.overrideAttrs (old: {
cmakeFlags = old.cmakeFlags or [] ++ [ "-DCMAKE_INSTALL_BINDIR=bin" ];
preConfigure = '' preConfigure = ''
cd server cd server
''; '';
preBuild = '' preBuild = ''
make make
install -D bin/irony-server $out/bin/irony-server
cd ..
''; '';
postInstall = '' checkPhase = ''
mkdir -p $out
mv $out/share/emacs/site-lisp/elpa/*/server/bin $out
rm -rf $out/share/emacs/site-lisp/elpa/*/server
'';
preCheck = ''
cd source/server cd source/server
make check
cd ../..
''; '';
dontUseCmakeBuildDir = true; dontUseCmakeBuildDir = true;
doCheck = 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 # Expects bash to be at /bin/bash
helm-rtags = markBroken super.helm-rtags; 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 = orgit =
(super.orgit.overrideAttrs (attrs: { (super.orgit.overrideAttrs (attrs: {
# searches for Git at build time # searches for Git at build time

View File

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

View File

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

View File

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

View File

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

View File

@ -1,7 +1,7 @@
{ stdenv, pkgconfig, fetchurl, buildPythonApplication { stdenv, pkgconfig, fetchurl, buildPythonApplication
, autoreconfHook, wrapGAppsHook, gobject-introspection , autoreconfHook, wrapGAppsHook, gobject-introspection
, intltool, yelp-tools, itstool, libxmlxx3 , 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 , at-spi2-atk, at-spi2-core, pyatspi, dbus, dbus-python, pyxdg
, xkbcomp, procps, lsof, coreutils, gsettings-desktop-schemas , xkbcomp, procps, lsof, coreutils, gsettings-desktop-schemas
, speechd, brltty, liblouis, setproctitle, gst_all_1, gst-python , speechd, brltty, liblouis, setproctitle, gst_all_1, gst-python
@ -31,6 +31,7 @@ buildPythonApplication rec {
nativeBuildInputs = [ nativeBuildInputs = [
autoreconfHook wrapGAppsHook pkgconfig libxmlxx3 autoreconfHook wrapGAppsHook pkgconfig libxmlxx3
intltool yelp-tools itstool gobject-introspection intltool yelp-tools itstool gobject-introspection
hicolor-icon-theme # setup-hook
]; ];
propagatedBuildInputs = [ 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 { stdenv.mkDerivation rec {
pname = "yate"; pname = "yate";
version = "6.0.0-1"; version = "6.1.0-1";
src = fetchurl { src = fetchurl {
url = "http://voip.null.ro/tarballs/yate${lib.versions.major version}/${pname}-${version}.tar.gz"; url = "http://voip.null.ro/tarballs/yate${lib.versions.major version}/${pname}-${version}.tar.gz";
sha256 = "05qqdhi3rp5660gq1484jkmxkm9vq81j0yr765h0gf0xclan1dqa"; sha256 = "0xx3i997nsf2wzbv6m5n6adsym0qhgc6xg4rsv0fwqrgisf5327d";
}; };
# TODO zaptel ? postgres ? # TODO zaptel ? postgres ?
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
buildInputs = [ qt4 openssl autoconf automake ]; buildInputs = [ qt4 openssl ];
# /dev/null is used when linking which is a impure path for the wrapper # /dev/null is used when linking which is a impure path for the wrapper
preConfigure = preConfigure =

View File

@ -94,17 +94,17 @@ let
envVars.NIX_CHROMIUM_PLUGIN_PATH_WIDEVINE = "@out@/lib"; envVars.NIX_CHROMIUM_PLUGIN_PATH_WIDEVINE = "@out@/lib";
}} }}
''; '';
meta.platforms = platforms.x86_64; meta.platforms = platforms.x86_64;
}; };
flash = stdenv.mkDerivation rec { flash = stdenv.mkDerivation rec {
pname = "flashplayer-ppapi"; pname = "flashplayer-ppapi";
version = "32.0.0.223"; version = "32.0.0.238";
src = fetchzip { src = fetchzip {
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz"; url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
sha256 = "0xm6jcdip4gki267ldw106l5j43im0ji2zjsarvi7n2nvvnwwgnl"; sha256 = "0jqx68lfqjpy6wbxdi0giclvh9mc9rha92hqdj1nx42v95k3gc65";
stripRoot = false; stripRoot = false;
}; };
@ -135,7 +135,7 @@ let
''; '';
dontStrip = true; dontStrip = true;
meta.platforms = platforms.x86_64; meta.platforms = platforms.x86_64;
}; };

View File

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

View File

@ -5,20 +5,20 @@ buildGoPackage rec {
/* Do not use "dev" as a version. If you do, Tilt will consider itself /* 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 running in development environment and try to serve assets from the
source tree, which is not there once build completes. */ source tree, which is not there once build completes. */
version = "0.9.7"; version = "0.10.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "windmilleng"; owner = "windmilleng";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "0b7jk7iwjzdsb2wp9qx4gs9g3gi2vcqw5ilkax3gfz7wsplm0n65"; sha256 = "0nxgmldbcaj91jq47qxpf6jqwvi9bhg243qchdkiliphybvilcrg";
}; };
goPackagePath = "github.com/windmilleng/tilt"; goPackagePath = "github.com/windmilleng/tilt";
subPackages = [ "cmd/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; { meta = with stdenv.lib; {
description = "Local development tool to manage your developer instance when your team deploys to Kubernetes in production"; 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; offline_cache = linkFarm "offline" packages;
packages = [ packages = [
{ {
name = "_types_node___node_9.6.45.tgz"; name = "_types_node___node_9.6.45.tgz";
path = fetchurl { path = fetchurl {
@ -10,7 +9,6 @@
sha1 = "a9e5cfd026a3abaaf17e3c0318a470da9f2f178e"; sha1 = "a9e5cfd026a3abaaf17e3c0318a470da9f2f178e";
}; };
} }
{ {
name = "ajv___ajv_6.10.0.tgz"; name = "ajv___ajv_6.10.0.tgz";
path = fetchurl { path = fetchurl {
@ -19,7 +17,6 @@
sha1 = "90d0d54439da587cd7e843bfb7045f50bd22bdf1"; sha1 = "90d0d54439da587cd7e843bfb7045f50bd22bdf1";
}; };
} }
{ {
name = "applescript___applescript_1.0.0.tgz"; name = "applescript___applescript_1.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -28,7 +25,6 @@
sha1 = "bb87af568cad034a4e48c4bdaf6067a3a2701317"; sha1 = "bb87af568cad034a4e48c4bdaf6067a3a2701317";
}; };
} }
{ {
name = "asn1___asn1_0.2.4.tgz"; name = "asn1___asn1_0.2.4.tgz";
path = fetchurl { path = fetchurl {
@ -37,7 +33,6 @@
sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136"; sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
}; };
} }
{ {
name = "assert_plus___assert_plus_1.0.0.tgz"; name = "assert_plus___assert_plus_1.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -46,7 +41,6 @@
sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"; sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
}; };
} }
{ {
name = "asynckit___asynckit_0.4.0.tgz"; name = "asynckit___asynckit_0.4.0.tgz";
path = fetchurl { path = fetchurl {
@ -55,7 +49,6 @@
sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"; sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
}; };
} }
{ {
name = "auto_launch___auto_launch_5.0.5.tgz"; name = "auto_launch___auto_launch_5.0.5.tgz";
path = fetchurl { path = fetchurl {
@ -64,7 +57,6 @@
sha1 = "d14bd002b1ef642f85e991a6195ff5300c8ad3c0"; sha1 = "d14bd002b1ef642f85e991a6195ff5300c8ad3c0";
}; };
} }
{ {
name = "aws_sign2___aws_sign2_0.7.0.tgz"; name = "aws_sign2___aws_sign2_0.7.0.tgz";
path = fetchurl { path = fetchurl {
@ -73,7 +65,6 @@
sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"; sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
}; };
} }
{ {
name = "aws4___aws4_1.8.0.tgz"; name = "aws4___aws4_1.8.0.tgz";
path = fetchurl { path = fetchurl {
@ -82,7 +73,6 @@
sha1 = "f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"; sha1 = "f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f";
}; };
} }
{ {
name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz"; name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
path = fetchurl { path = fetchurl {
@ -91,7 +81,6 @@
sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"; sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
}; };
} }
{ {
name = "bignumber.js___bignumber.js_2.4.0.tgz"; name = "bignumber.js___bignumber.js_2.4.0.tgz";
path = fetchurl { path = fetchurl {
@ -100,7 +89,6 @@
sha1 = "838a992da9f9d737e0f4b2db0be62bb09dd0c5e8"; sha1 = "838a992da9f9d737e0f4b2db0be62bb09dd0c5e8";
}; };
} }
{ {
name = "bmp_js___bmp_js_0.0.3.tgz"; name = "bmp_js___bmp_js_0.0.3.tgz";
path = fetchurl { path = fetchurl {
@ -109,7 +97,6 @@
sha1 = "64113e9c7cf1202b376ed607bf30626ebe57b18a"; sha1 = "64113e9c7cf1202b376ed607bf30626ebe57b18a";
}; };
} }
{ {
name = "buffer_equal___buffer_equal_0.0.1.tgz"; name = "buffer_equal___buffer_equal_0.0.1.tgz";
path = fetchurl { path = fetchurl {
@ -118,7 +105,6 @@
sha1 = "91bc74b11ea405bc916bc6aa908faafa5b4aac4b"; sha1 = "91bc74b11ea405bc916bc6aa908faafa5b4aac4b";
}; };
} }
{ {
name = "caseless___caseless_0.12.0.tgz"; name = "caseless___caseless_0.12.0.tgz";
path = fetchurl { path = fetchurl {
@ -127,7 +113,6 @@
sha1 = "1b681c21ff84033c826543090689420d187151dc"; sha1 = "1b681c21ff84033c826543090689420d187151dc";
}; };
} }
{ {
name = "combined_stream___combined_stream_1.0.7.tgz"; name = "combined_stream___combined_stream_1.0.7.tgz";
path = fetchurl { path = fetchurl {
@ -136,7 +121,6 @@
sha1 = "2d1d24317afb8abe95d6d2c0b07b57813539d828"; sha1 = "2d1d24317afb8abe95d6d2c0b07b57813539d828";
}; };
} }
{ {
name = "conf___conf_2.2.0.tgz"; name = "conf___conf_2.2.0.tgz";
path = fetchurl { path = fetchurl {
@ -145,7 +129,6 @@
sha1 = "ee282efafc1450b61e205372041ad7d866802d9a"; sha1 = "ee282efafc1450b61e205372041ad7d866802d9a";
}; };
} }
{ {
name = "core_util_is___core_util_is_1.0.2.tgz"; name = "core_util_is___core_util_is_1.0.2.tgz";
path = fetchurl { path = fetchurl {
@ -154,7 +137,6 @@
sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7"; sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
}; };
} }
{ {
name = "dashdash___dashdash_1.14.1.tgz"; name = "dashdash___dashdash_1.14.1.tgz";
path = fetchurl { path = fetchurl {
@ -163,7 +145,6 @@
sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"; sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
}; };
} }
{ {
name = "deep_equal___deep_equal_1.0.1.tgz"; name = "deep_equal___deep_equal_1.0.1.tgz";
path = fetchurl { path = fetchurl {
@ -172,7 +153,6 @@
sha1 = "f5d260292b660e084eff4cdbc9f08ad3247448b5"; sha1 = "f5d260292b660e084eff4cdbc9f08ad3247448b5";
}; };
} }
{ {
name = "define_properties___define_properties_1.1.3.tgz"; name = "define_properties___define_properties_1.1.3.tgz";
path = fetchurl { path = fetchurl {
@ -181,7 +161,6 @@
sha1 = "cf88da6cbee26fe6db7094f61d870cbd84cee9f1"; sha1 = "cf88da6cbee26fe6db7094f61d870cbd84cee9f1";
}; };
} }
{ {
name = "delayed_stream___delayed_stream_1.0.0.tgz"; name = "delayed_stream___delayed_stream_1.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -190,7 +169,6 @@
sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619"; sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
}; };
} }
{ {
name = "dom_walk___dom_walk_0.1.1.tgz"; name = "dom_walk___dom_walk_0.1.1.tgz";
path = fetchurl { path = fetchurl {
@ -199,7 +177,6 @@
sha1 = "672226dc74c8f799ad35307df936aba11acd6018"; sha1 = "672226dc74c8f799ad35307df936aba11acd6018";
}; };
} }
{ {
name = "dot_prop___dot_prop_4.2.0.tgz"; name = "dot_prop___dot_prop_4.2.0.tgz";
path = fetchurl { path = fetchurl {
@ -208,7 +185,6 @@
sha1 = "1f19e0c2e1aa0e32797c49799f2837ac6af69c57"; sha1 = "1f19e0c2e1aa0e32797c49799f2837ac6af69c57";
}; };
} }
{ {
name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz"; name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
path = fetchurl { path = fetchurl {
@ -217,7 +193,6 @@
sha1 = "3a83a904e54353287874c564b7549386849a98c9"; sha1 = "3a83a904e54353287874c564b7549386849a98c9";
}; };
} }
{ {
name = "electron_store___electron_store_2.0.0.tgz"; name = "electron_store___electron_store_2.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -226,7 +201,6 @@
sha1 = "1035cca2a95409d1f54c7466606345852450d64a"; sha1 = "1035cca2a95409d1f54c7466606345852450d64a";
}; };
} }
{ {
name = "electron_window_state___electron_window_state_4.1.1.tgz"; name = "electron_window_state___electron_window_state_4.1.1.tgz";
path = fetchurl { path = fetchurl {
@ -235,7 +209,6 @@
sha1 = "6b34fdc31b38514dfec8b7c8f7b5d4addb67632d"; sha1 = "6b34fdc31b38514dfec8b7c8f7b5d4addb67632d";
}; };
} }
{ {
name = "env_paths___env_paths_1.0.0.tgz"; name = "env_paths___env_paths_1.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -244,7 +217,6 @@
sha1 = "4168133b42bb05c38a35b1ae4397c8298ab369e0"; sha1 = "4168133b42bb05c38a35b1ae4397c8298ab369e0";
}; };
} }
{ {
name = "es_abstract___es_abstract_1.13.0.tgz"; name = "es_abstract___es_abstract_1.13.0.tgz";
path = fetchurl { path = fetchurl {
@ -253,7 +225,6 @@
sha1 = "ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"; sha1 = "ac86145fdd5099d8dd49558ccba2eaf9b88e24e9";
}; };
} }
{ {
name = "es_to_primitive___es_to_primitive_1.2.0.tgz"; name = "es_to_primitive___es_to_primitive_1.2.0.tgz";
path = fetchurl { path = fetchurl {
@ -262,7 +233,6 @@
sha1 = "edf72478033456e8dda8ef09e00ad9650707f377"; sha1 = "edf72478033456e8dda8ef09e00ad9650707f377";
}; };
} }
{ {
name = "es6_promise___es6_promise_3.3.1.tgz"; name = "es6_promise___es6_promise_3.3.1.tgz";
path = fetchurl { path = fetchurl {
@ -271,7 +241,6 @@
sha1 = "a08cdde84ccdbf34d027a1451bc91d4bcd28a613"; sha1 = "a08cdde84ccdbf34d027a1451bc91d4bcd28a613";
}; };
} }
{ {
name = "exif_parser___exif_parser_0.1.12.tgz"; name = "exif_parser___exif_parser_0.1.12.tgz";
path = fetchurl { path = fetchurl {
@ -280,7 +249,6 @@
sha1 = "58a9d2d72c02c1f6f02a0ef4a9166272b7760922"; sha1 = "58a9d2d72c02c1f6f02a0ef4a9166272b7760922";
}; };
} }
{ {
name = "extend___extend_3.0.2.tgz"; name = "extend___extend_3.0.2.tgz";
path = fetchurl { path = fetchurl {
@ -289,7 +257,6 @@
sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa"; sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
}; };
} }
{ {
name = "extsprintf___extsprintf_1.3.0.tgz"; name = "extsprintf___extsprintf_1.3.0.tgz";
path = fetchurl { path = fetchurl {
@ -298,7 +265,6 @@
sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05"; sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
}; };
} }
{ {
name = "extsprintf___extsprintf_1.4.0.tgz"; name = "extsprintf___extsprintf_1.4.0.tgz";
path = fetchurl { path = fetchurl {
@ -307,7 +273,6 @@
sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f"; sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
}; };
} }
{ {
name = "fast_deep_equal___fast_deep_equal_2.0.1.tgz"; name = "fast_deep_equal___fast_deep_equal_2.0.1.tgz";
path = fetchurl { path = fetchurl {
@ -316,7 +281,6 @@
sha1 = "7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"; sha1 = "7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49";
}; };
} }
{ {
name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz"; name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -325,7 +289,6 @@
sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2"; sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
}; };
} }
{ {
name = "file_type___file_type_3.9.0.tgz"; name = "file_type___file_type_3.9.0.tgz";
path = fetchurl { path = fetchurl {
@ -334,7 +297,6 @@
sha1 = "257a078384d1db8087bc449d107d52a52672b9e9"; sha1 = "257a078384d1db8087bc449d107d52a52672b9e9";
}; };
} }
{ {
name = "find_up___find_up_2.1.0.tgz"; name = "find_up___find_up_2.1.0.tgz";
path = fetchurl { path = fetchurl {
@ -343,7 +305,6 @@
sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7"; sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
}; };
} }
{ {
name = "for_each___for_each_0.3.3.tgz"; name = "for_each___for_each_0.3.3.tgz";
path = fetchurl { path = fetchurl {
@ -352,7 +313,6 @@
sha1 = "69b447e88a0a5d32c3e7084f3f1710034b21376e"; sha1 = "69b447e88a0a5d32c3e7084f3f1710034b21376e";
}; };
} }
{ {
name = "forever_agent___forever_agent_0.6.1.tgz"; name = "forever_agent___forever_agent_0.6.1.tgz";
path = fetchurl { path = fetchurl {
@ -361,7 +321,6 @@
sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"; sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
}; };
} }
{ {
name = "form_data___form_data_2.3.3.tgz"; name = "form_data___form_data_2.3.3.tgz";
path = fetchurl { path = fetchurl {
@ -370,7 +329,6 @@
sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6"; sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6";
}; };
} }
{ {
name = "function_bind___function_bind_1.1.1.tgz"; name = "function_bind___function_bind_1.1.1.tgz";
path = fetchurl { path = fetchurl {
@ -379,7 +337,6 @@
sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d"; sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
}; };
} }
{ {
name = "getpass___getpass_0.1.7.tgz"; name = "getpass___getpass_0.1.7.tgz";
path = fetchurl { path = fetchurl {
@ -388,7 +345,6 @@
sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa"; sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
}; };
} }
{ {
name = "global___global_4.3.2.tgz"; name = "global___global_4.3.2.tgz";
path = fetchurl { path = fetchurl {
@ -397,7 +353,6 @@
sha1 = "e76989268a6c74c38908b1305b10fc0e394e9d0f"; sha1 = "e76989268a6c74c38908b1305b10fc0e394e9d0f";
}; };
} }
{ {
name = "graceful_fs___graceful_fs_4.1.15.tgz"; name = "graceful_fs___graceful_fs_4.1.15.tgz";
path = fetchurl { path = fetchurl {
@ -406,7 +361,6 @@
sha1 = "ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"; sha1 = "ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00";
}; };
} }
{ {
name = "har_schema___har_schema_2.0.0.tgz"; name = "har_schema___har_schema_2.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -415,7 +369,6 @@
sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92"; sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
}; };
} }
{ {
name = "har_validator___har_validator_5.1.3.tgz"; name = "har_validator___har_validator_5.1.3.tgz";
path = fetchurl { path = fetchurl {
@ -424,7 +377,6 @@
sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080"; sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080";
}; };
} }
{ {
name = "has_symbols___has_symbols_1.0.0.tgz"; name = "has_symbols___has_symbols_1.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -433,7 +385,6 @@
sha1 = "ba1a8f1af2a0fc39650f5c850367704122063b44"; sha1 = "ba1a8f1af2a0fc39650f5c850367704122063b44";
}; };
} }
{ {
name = "has___has_1.0.3.tgz"; name = "has___has_1.0.3.tgz";
path = fetchurl { path = fetchurl {
@ -442,7 +393,6 @@
sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796"; sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
}; };
} }
{ {
name = "http_signature___http_signature_1.2.0.tgz"; name = "http_signature___http_signature_1.2.0.tgz";
path = fetchurl { path = fetchurl {
@ -451,7 +401,6 @@
sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1"; sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
}; };
} }
{ {
name = "imurmurhash___imurmurhash_0.1.4.tgz"; name = "imurmurhash___imurmurhash_0.1.4.tgz";
path = fetchurl { path = fetchurl {
@ -460,7 +409,6 @@
sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea"; sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
}; };
} }
{ {
name = "ip_regex___ip_regex_1.0.3.tgz"; name = "ip_regex___ip_regex_1.0.3.tgz";
path = fetchurl { path = fetchurl {
@ -469,7 +417,6 @@
sha1 = "dc589076f659f419c222039a33316f1c7387effd"; sha1 = "dc589076f659f419c222039a33316f1c7387effd";
}; };
} }
{ {
name = "is_callable___is_callable_1.1.4.tgz"; name = "is_callable___is_callable_1.1.4.tgz";
path = fetchurl { path = fetchurl {
@ -478,7 +425,6 @@
sha1 = "1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"; sha1 = "1e1adf219e1eeb684d691f9d6a05ff0d30a24d75";
}; };
} }
{ {
name = "is_date_object___is_date_object_1.0.1.tgz"; name = "is_date_object___is_date_object_1.0.1.tgz";
path = fetchurl { path = fetchurl {
@ -487,7 +433,6 @@
sha1 = "9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"; sha1 = "9aa20eb6aeebbff77fbd33e74ca01b33581d3a16";
}; };
} }
{ {
name = "is_function___is_function_1.0.1.tgz"; name = "is_function___is_function_1.0.1.tgz";
path = fetchurl { path = fetchurl {
@ -496,7 +441,6 @@
sha1 = "12cfb98b65b57dd3d193a3121f5f6e2f437602b5"; sha1 = "12cfb98b65b57dd3d193a3121f5f6e2f437602b5";
}; };
} }
{ {
name = "is_obj___is_obj_1.0.1.tgz"; name = "is_obj___is_obj_1.0.1.tgz";
path = fetchurl { path = fetchurl {
@ -505,7 +449,6 @@
sha1 = "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"; sha1 = "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f";
}; };
} }
{ {
name = "is_regex___is_regex_1.0.4.tgz"; name = "is_regex___is_regex_1.0.4.tgz";
path = fetchurl { path = fetchurl {
@ -514,7 +457,6 @@
sha1 = "5517489b547091b0930e095654ced25ee97e9491"; sha1 = "5517489b547091b0930e095654ced25ee97e9491";
}; };
} }
{ {
name = "is_symbol___is_symbol_1.0.2.tgz"; name = "is_symbol___is_symbol_1.0.2.tgz";
path = fetchurl { path = fetchurl {
@ -523,7 +465,6 @@
sha1 = "a055f6ae57192caee329e7a860118b497a950f38"; sha1 = "a055f6ae57192caee329e7a860118b497a950f38";
}; };
} }
{ {
name = "is_typedarray___is_typedarray_1.0.0.tgz"; name = "is_typedarray___is_typedarray_1.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -532,7 +473,6 @@
sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a"; sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
}; };
} }
{ {
name = "isstream___isstream_0.1.2.tgz"; name = "isstream___isstream_0.1.2.tgz";
path = fetchurl { path = fetchurl {
@ -541,7 +481,6 @@
sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a"; sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
}; };
} }
{ {
name = "jimp___jimp_0.2.28.tgz"; name = "jimp___jimp_0.2.28.tgz";
path = fetchurl { path = fetchurl {
@ -550,7 +489,6 @@
sha1 = "dd529a937190f42957a7937d1acc3a7762996ea2"; sha1 = "dd529a937190f42957a7937d1acc3a7762996ea2";
}; };
} }
{ {
name = "jpeg_js___jpeg_js_0.2.0.tgz"; name = "jpeg_js___jpeg_js_0.2.0.tgz";
path = fetchurl { path = fetchurl {
@ -559,7 +497,6 @@
sha1 = "53e448ec9d263e683266467e9442d2c5a2ef5482"; sha1 = "53e448ec9d263e683266467e9442d2c5a2ef5482";
}; };
} }
{ {
name = "jsbn___jsbn_0.1.1.tgz"; name = "jsbn___jsbn_0.1.1.tgz";
path = fetchurl { path = fetchurl {
@ -568,7 +505,6 @@
sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"; sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
}; };
} }
{ {
name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz"; name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
path = fetchurl { path = fetchurl {
@ -577,7 +513,6 @@
sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660"; sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
}; };
} }
{ {
name = "json_schema___json_schema_0.2.3.tgz"; name = "json_schema___json_schema_0.2.3.tgz";
path = fetchurl { path = fetchurl {
@ -586,7 +521,6 @@
sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13"; sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
}; };
} }
{ {
name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz"; name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
path = fetchurl { path = fetchurl {
@ -595,7 +529,6 @@
sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"; sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
}; };
} }
{ {
name = "jsonfile___jsonfile_2.4.0.tgz"; name = "jsonfile___jsonfile_2.4.0.tgz";
path = fetchurl { path = fetchurl {
@ -604,7 +537,6 @@
sha1 = "3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"; sha1 = "3736a2b428b87bbda0cc83b53fa3d633a35c2ae8";
}; };
} }
{ {
name = "jsprim___jsprim_1.4.1.tgz"; name = "jsprim___jsprim_1.4.1.tgz";
path = fetchurl { path = fetchurl {
@ -613,7 +545,6 @@
sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"; sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
}; };
} }
{ {
name = "load_bmfont___load_bmfont_1.4.0.tgz"; name = "load_bmfont___load_bmfont_1.4.0.tgz";
path = fetchurl { path = fetchurl {
@ -622,7 +553,6 @@
sha1 = "75f17070b14a8c785fe7f5bee2e6fd4f98093b6b"; sha1 = "75f17070b14a8c785fe7f5bee2e6fd4f98093b6b";
}; };
} }
{ {
name = "locate_path___locate_path_2.0.0.tgz"; name = "locate_path___locate_path_2.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -631,7 +561,6 @@
sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"; sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
}; };
} }
{ {
name = "make_dir___make_dir_1.3.0.tgz"; name = "make_dir___make_dir_1.3.0.tgz";
path = fetchurl { path = fetchurl {
@ -640,7 +569,6 @@
sha1 = "79c1033b80515bd6d24ec9933e860ca75ee27f0c"; sha1 = "79c1033b80515bd6d24ec9933e860ca75ee27f0c";
}; };
} }
{ {
name = "mime_db___mime_db_1.38.0.tgz"; name = "mime_db___mime_db_1.38.0.tgz";
path = fetchurl { path = fetchurl {
@ -649,7 +577,6 @@
sha1 = "1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad"; sha1 = "1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad";
}; };
} }
{ {
name = "mime_types___mime_types_2.1.22.tgz"; name = "mime_types___mime_types_2.1.22.tgz";
path = fetchurl { path = fetchurl {
@ -658,7 +585,6 @@
sha1 = "fe6b355a190926ab7698c9a0556a11199b2199bd"; sha1 = "fe6b355a190926ab7698c9a0556a11199b2199bd";
}; };
} }
{ {
name = "mime___mime_1.6.0.tgz"; name = "mime___mime_1.6.0.tgz";
path = fetchurl { path = fetchurl {
@ -667,7 +593,6 @@
sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1"; sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
}; };
} }
{ {
name = "min_document___min_document_2.19.0.tgz"; name = "min_document___min_document_2.19.0.tgz";
path = fetchurl { path = fetchurl {
@ -676,7 +601,6 @@
sha1 = "7bd282e3f5842ed295bb748cdd9f1ffa2c824685"; sha1 = "7bd282e3f5842ed295bb748cdd9f1ffa2c824685";
}; };
} }
{ {
name = "minimist___minimist_0.0.8.tgz"; name = "minimist___minimist_0.0.8.tgz";
path = fetchurl { path = fetchurl {
@ -685,7 +609,6 @@
sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d"; sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
}; };
} }
{ {
name = "minimist___minimist_1.2.0.tgz"; name = "minimist___minimist_1.2.0.tgz";
path = fetchurl { path = fetchurl {
@ -694,7 +617,6 @@
sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284"; sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
}; };
} }
{ {
name = "mkdirp___mkdirp_0.5.1.tgz"; name = "mkdirp___mkdirp_0.5.1.tgz";
path = fetchurl { path = fetchurl {
@ -703,7 +625,6 @@
sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903"; sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
}; };
} }
{ {
name = "oauth_sign___oauth_sign_0.9.0.tgz"; name = "oauth_sign___oauth_sign_0.9.0.tgz";
path = fetchurl { path = fetchurl {
@ -712,7 +633,6 @@
sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455"; sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
}; };
} }
{ {
name = "object_keys___object_keys_1.1.0.tgz"; name = "object_keys___object_keys_1.1.0.tgz";
path = fetchurl { path = fetchurl {
@ -721,7 +641,6 @@
sha1 = "11bd22348dd2e096a045ab06f6c85bcc340fa032"; sha1 = "11bd22348dd2e096a045ab06f6c85bcc340fa032";
}; };
} }
{ {
name = "p_limit___p_limit_1.3.0.tgz"; name = "p_limit___p_limit_1.3.0.tgz";
path = fetchurl { path = fetchurl {
@ -730,7 +649,6 @@
sha1 = "b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"; sha1 = "b86bd5f0c25690911c7590fcbfc2010d54b3ccb8";
}; };
} }
{ {
name = "p_locate___p_locate_2.0.0.tgz"; name = "p_locate___p_locate_2.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -739,7 +657,6 @@
sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43"; sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
}; };
} }
{ {
name = "p_try___p_try_1.0.0.tgz"; name = "p_try___p_try_1.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -748,7 +665,6 @@
sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"; sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
}; };
} }
{ {
name = "parse_bmfont_ascii___parse_bmfont_ascii_1.0.6.tgz"; name = "parse_bmfont_ascii___parse_bmfont_ascii_1.0.6.tgz";
path = fetchurl { path = fetchurl {
@ -757,7 +673,6 @@
sha1 = "11ac3c3ff58f7c2020ab22769079108d4dfa0285"; sha1 = "11ac3c3ff58f7c2020ab22769079108d4dfa0285";
}; };
} }
{ {
name = "parse_bmfont_binary___parse_bmfont_binary_1.0.6.tgz"; name = "parse_bmfont_binary___parse_bmfont_binary_1.0.6.tgz";
path = fetchurl { path = fetchurl {
@ -766,7 +681,6 @@
sha1 = "d038b476d3e9dd9db1e11a0b0e53a22792b69006"; sha1 = "d038b476d3e9dd9db1e11a0b0e53a22792b69006";
}; };
} }
{ {
name = "parse_bmfont_xml___parse_bmfont_xml_1.1.4.tgz"; name = "parse_bmfont_xml___parse_bmfont_xml_1.1.4.tgz";
path = fetchurl { path = fetchurl {
@ -775,7 +689,6 @@
sha1 = "015319797e3e12f9e739c4d513872cd2fa35f389"; sha1 = "015319797e3e12f9e739c4d513872cd2fa35f389";
}; };
} }
{ {
name = "parse_headers___parse_headers_2.0.2.tgz"; name = "parse_headers___parse_headers_2.0.2.tgz";
path = fetchurl { path = fetchurl {
@ -784,7 +697,6 @@
sha1 = "9545e8a4c1ae5eaea7d24992bca890281ed26e34"; sha1 = "9545e8a4c1ae5eaea7d24992bca890281ed26e34";
}; };
} }
{ {
name = "path_exists___path_exists_3.0.0.tgz"; name = "path_exists___path_exists_3.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -793,7 +705,6 @@
sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"; sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
}; };
} }
{ {
name = "path_is_absolute___path_is_absolute_1.0.1.tgz"; name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
path = fetchurl { path = fetchurl {
@ -802,7 +713,6 @@
sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"; sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
}; };
} }
{ {
name = "performance_now___performance_now_2.1.0.tgz"; name = "performance_now___performance_now_2.1.0.tgz";
path = fetchurl { path = fetchurl {
@ -811,7 +721,6 @@
sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"; sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
}; };
} }
{ {
name = "phin___phin_2.9.3.tgz"; name = "phin___phin_2.9.3.tgz";
path = fetchurl { path = fetchurl {
@ -820,7 +729,6 @@
sha1 = "f9b6ac10a035636fb65dfc576aaaa17b8743125c"; sha1 = "f9b6ac10a035636fb65dfc576aaaa17b8743125c";
}; };
} }
{ {
name = "pify___pify_3.0.0.tgz"; name = "pify___pify_3.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -829,7 +737,6 @@
sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"; sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
}; };
} }
{ {
name = "pixelmatch___pixelmatch_4.0.2.tgz"; name = "pixelmatch___pixelmatch_4.0.2.tgz";
path = fetchurl { path = fetchurl {
@ -838,7 +745,6 @@
sha1 = "8f47dcec5011b477b67db03c243bc1f3085e8854"; sha1 = "8f47dcec5011b477b67db03c243bc1f3085e8854";
}; };
} }
{ {
name = "pkg_up___pkg_up_2.0.0.tgz"; name = "pkg_up___pkg_up_2.0.0.tgz";
path = fetchurl { path = fetchurl {
@ -847,7 +753,6 @@
sha1 = "c819ac728059a461cab1c3889a2be3c49a004d7f"; sha1 = "c819ac728059a461cab1c3889a2be3c49a004d7f";
}; };
} }
{ {
name = "png_to_ico___png_to_ico_1.0.7.tgz"; name = "png_to_ico___png_to_ico_1.0.7.tgz";
path = fetchurl { path = fetchurl {
@ -856,7 +761,6 @@
sha1 = "9346b5f4d6fd7e94cb08fd49eeb585f501c3e5f2"; sha1 = "9346b5f4d6fd7e94cb08fd49eeb585f501c3e5f2";
}; };
} }
{ {
name = "pngjs___pngjs_3.4.0.tgz"; name = "pngjs___pngjs_3.4.0.tgz";
path = fetchurl { path = fetchurl {
@ -865,7 +769,6 @@
sha1 = "99ca7d725965fb655814eaf65f38f12bbdbf555f"; sha1 = "99ca7d725965fb655814eaf65f38f12bbdbf555f";
}; };
} }
{ {
name = "process___process_0.5.2.tgz"; name = "process___process_0.5.2.tgz";
path = fetchurl { path = fetchurl {
@ -874,7 +777,6 @@
sha1 = "1638d8a8e34c2f440a91db95ab9aeb677fc185cf"; sha1 = "1638d8a8e34c2f440a91db95ab9aeb677fc185cf";
}; };
} }
{ {
name = "psl___psl_1.1.31.tgz"; name = "psl___psl_1.1.31.tgz";
path = fetchurl { path = fetchurl {
@ -883,7 +785,6 @@
sha1 = "e9aa86d0101b5b105cbe93ac6b784cd547276184"; sha1 = "e9aa86d0101b5b105cbe93ac6b784cd547276184";
}; };
} }
{ {
name = "punycode___punycode_1.4.1.tgz"; name = "punycode___punycode_1.4.1.tgz";
path = fetchurl { path = fetchurl {
@ -892,7 +793,6 @@
sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"; sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
}; };
} }
{ {
name = "punycode___punycode_2.1.1.tgz"; name = "punycode___punycode_2.1.1.tgz";
path = fetchurl { path = fetchurl {
@ -901,7 +801,6 @@
sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec"; sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
}; };
} }
{ {
name = "qs___qs_6.5.2.tgz"; name = "qs___qs_6.5.2.tgz";
path = fetchurl { path = fetchurl {
@ -910,7 +809,6 @@
sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36"; sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
}; };
} }
{ {
name = "read_chunk___read_chunk_1.0.1.tgz"; name = "read_chunk___read_chunk_1.0.1.tgz";
path = fetchurl { path = fetchurl {
@ -919,7 +817,6 @@
sha1 = "5f68cab307e663f19993527d9b589cace4661194"; sha1 = "5f68cab307e663f19993527d9b589cace4661194";
}; };
} }
{ {
name = "request___request_2.88.0.tgz"; name = "request___request_2.88.0.tgz";
path = fetchurl { path = fetchurl {
@ -928,7 +825,6 @@
sha1 = "9c2fca4f7d35b592efe57c7f0a55e81052124fef"; sha1 = "9c2fca4f7d35b592efe57c7f0a55e81052124fef";
}; };
} }
{ {
name = "safe_buffer___safe_buffer_5.1.2.tgz"; name = "safe_buffer___safe_buffer_5.1.2.tgz";
path = fetchurl { path = fetchurl {
@ -937,7 +833,6 @@
sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d"; sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
}; };
} }
{ {
name = "safer_buffer___safer_buffer_2.1.2.tgz"; name = "safer_buffer___safer_buffer_2.1.2.tgz";
path = fetchurl { path = fetchurl {
@ -946,7 +841,6 @@
sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a"; sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
}; };
} }
{ {
name = "sax___sax_1.2.4.tgz"; name = "sax___sax_1.2.4.tgz";
path = fetchurl { path = fetchurl {
@ -955,7 +849,6 @@
sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9"; sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
}; };
} }
{ {
name = "signal_exit___signal_exit_3.0.2.tgz"; name = "signal_exit___signal_exit_3.0.2.tgz";
path = fetchurl { path = fetchurl {
@ -964,7 +857,6 @@
sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d"; sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
}; };
} }
{ {
name = "sshpk___sshpk_1.16.1.tgz"; name = "sshpk___sshpk_1.16.1.tgz";
path = fetchurl { path = fetchurl {
@ -973,7 +865,6 @@
sha1 = "fb661c0bef29b39db40769ee39fa70093d6f6877"; sha1 = "fb661c0bef29b39db40769ee39fa70093d6f6877";
}; };
} }
{ {
name = "stream_to_buffer___stream_to_buffer_0.1.0.tgz"; name = "stream_to_buffer___stream_to_buffer_0.1.0.tgz";
path = fetchurl { path = fetchurl {
@ -982,7 +873,6 @@
sha1 = "26799d903ab2025c9bd550ac47171b00f8dd80a9"; sha1 = "26799d903ab2025c9bd550ac47171b00f8dd80a9";
}; };
} }
{ {
name = "stream_to___stream_to_0.2.2.tgz"; name = "stream_to___stream_to_0.2.2.tgz";
path = fetchurl { path = fetchurl {
@ -991,7 +881,6 @@
sha1 = "84306098d85fdb990b9fa300b1b3ccf55e8ef01d"; sha1 = "84306098d85fdb990b9fa300b1b3ccf55e8ef01d";
}; };
} }
{ {
name = "string.prototype.trim___string.prototype.trim_1.1.2.tgz"; name = "string.prototype.trim___string.prototype.trim_1.1.2.tgz";
path = fetchurl { path = fetchurl {
@ -1000,7 +889,6 @@
sha1 = "d04de2c89e137f4d7d206f086b5ed2fae6be8cea"; sha1 = "d04de2c89e137f4d7d206f086b5ed2fae6be8cea";
}; };
} }
{ {
name = "tinycolor2___tinycolor2_1.4.1.tgz"; name = "tinycolor2___tinycolor2_1.4.1.tgz";
path = fetchurl { path = fetchurl {
@ -1009,7 +897,6 @@
sha1 = "f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"; sha1 = "f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8";
}; };
} }
{ {
name = "tough_cookie___tough_cookie_2.4.3.tgz"; name = "tough_cookie___tough_cookie_2.4.3.tgz";
path = fetchurl { path = fetchurl {
@ -1018,7 +905,6 @@
sha1 = "53f36da3f47783b0925afa06ff9f3b165280f781"; sha1 = "53f36da3f47783b0925afa06ff9f3b165280f781";
}; };
} }
{ {
name = "tunnel_agent___tunnel_agent_0.6.0.tgz"; name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
path = fetchurl { path = fetchurl {
@ -1027,7 +913,6 @@
sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd"; sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
}; };
} }
{ {
name = "tweetnacl___tweetnacl_0.14.5.tgz"; name = "tweetnacl___tweetnacl_0.14.5.tgz";
path = fetchurl { path = fetchurl {
@ -1036,7 +921,6 @@
sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64"; sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
}; };
} }
{ {
name = "untildify___untildify_3.0.3.tgz"; name = "untildify___untildify_3.0.3.tgz";
path = fetchurl { path = fetchurl {
@ -1045,7 +929,6 @@
sha1 = "1e7b42b140bcfd922b22e70ca1265bfe3634c7c9"; sha1 = "1e7b42b140bcfd922b22e70ca1265bfe3634c7c9";
}; };
} }
{ {
name = "uri_js___uri_js_4.2.2.tgz"; name = "uri_js___uri_js_4.2.2.tgz";
path = fetchurl { path = fetchurl {
@ -1054,7 +937,6 @@
sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0"; sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
}; };
} }
{ {
name = "url_regex___url_regex_3.2.0.tgz"; name = "url_regex___url_regex_3.2.0.tgz";
path = fetchurl { path = fetchurl {
@ -1063,7 +945,6 @@
sha1 = "dbad1e0c9e29e105dd0b1f09f6862f7fdb482724"; sha1 = "dbad1e0c9e29e105dd0b1f09f6862f7fdb482724";
}; };
} }
{ {
name = "uuid___uuid_3.3.2.tgz"; name = "uuid___uuid_3.3.2.tgz";
path = fetchurl { path = fetchurl {
@ -1072,7 +953,6 @@
sha1 = "1b4af4955eb3077c501c23872fc6513811587131"; sha1 = "1b4af4955eb3077c501c23872fc6513811587131";
}; };
} }
{ {
name = "verror___verror_1.10.0.tgz"; name = "verror___verror_1.10.0.tgz";
path = fetchurl { path = fetchurl {
@ -1081,7 +961,6 @@
sha1 = "3a105ca17053af55d6e270c1f8288682e18da400"; sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
}; };
} }
{ {
name = "winreg___winreg_1.2.4.tgz"; name = "winreg___winreg_1.2.4.tgz";
path = fetchurl { path = fetchurl {
@ -1090,7 +969,6 @@
sha1 = "ba065629b7a925130e15779108cf540990e98d1b"; sha1 = "ba065629b7a925130e15779108cf540990e98d1b";
}; };
} }
{ {
name = "write_file_atomic___write_file_atomic_2.4.2.tgz"; name = "write_file_atomic___write_file_atomic_2.4.2.tgz";
path = fetchurl { path = fetchurl {
@ -1099,7 +977,6 @@
sha1 = "a7181706dfba17855d221140a9c06e15fcdd87b9"; sha1 = "a7181706dfba17855d221140a9c06e15fcdd87b9";
}; };
} }
{ {
name = "xhr___xhr_2.5.0.tgz"; name = "xhr___xhr_2.5.0.tgz";
path = fetchurl { path = fetchurl {
@ -1108,7 +985,6 @@
sha1 = "bed8d1676d5ca36108667692b74b316c496e49dd"; sha1 = "bed8d1676d5ca36108667692b74b316c496e49dd";
}; };
} }
{ {
name = "xml_parse_from_string___xml_parse_from_string_1.0.1.tgz"; name = "xml_parse_from_string___xml_parse_from_string_1.0.1.tgz";
path = fetchurl { path = fetchurl {
@ -1117,7 +993,6 @@
sha1 = "a9029e929d3dbcded169f3c6e28238d95a5d5a28"; sha1 = "a9029e929d3dbcded169f3c6e28238d95a5d5a28";
}; };
} }
{ {
name = "xml2js___xml2js_0.4.19.tgz"; name = "xml2js___xml2js_0.4.19.tgz";
path = fetchurl { path = fetchurl {
@ -1126,7 +1001,6 @@
sha1 = "686c20f213209e94abf0d1bcf1efaa291c7827a7"; sha1 = "686c20f213209e94abf0d1bcf1efaa291c7827a7";
}; };
} }
{ {
name = "xmlbuilder___xmlbuilder_9.0.7.tgz"; name = "xmlbuilder___xmlbuilder_9.0.7.tgz";
path = fetchurl { path = fetchurl {
@ -1135,7 +1009,6 @@
sha1 = "132ee63d2ec5565c557e20f4c22df9aca686b10d"; sha1 = "132ee63d2ec5565c557e20f4c22df9aca686b10d";
}; };
} }
{ {
name = "xtend___xtend_4.0.1.tgz"; name = "xtend___xtend_4.0.1.tgz";
path = fetchurl { 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: # Notes for maintainers:
# Versions of `riot-web` and `riot-desktop` should be kept in sync. # * 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>`
with (import ./yarn2nix.nix { inherit pkgs; });
let let
executableName = "riot-desktop"; executableName = "riot-desktop";
@ -15,18 +14,13 @@ let
sha256 = "1nzzxcz4r9932cha80q1bzn1425m67fsl89pn7n7ybrv6y0jnxpc"; sha256 = "1nzzxcz4r9932cha80q1bzn1425m67fsl89pn7n7ybrv6y0jnxpc";
}; };
in mkYarnPackage rec { in yarn2nix-moretea.mkYarnPackage rec {
name = "riot-desktop-${version}"; name = "riot-desktop-${version}";
inherit version; inherit version;
src = "${riot-web-src}/electron_app"; 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; 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; yarnNix = ./riot-desktop-yarndeps.nix;
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
@ -36,7 +30,9 @@ in mkYarnPackage rec {
mkdir -p "$out/share/riot" mkdir -p "$out/share/riot"
ln -s '${riot-web}' "$out/share/riot/webapp" ln -s '${riot-web}' "$out/share/riot/webapp"
cp -r '${riot-web-src}/origin_migrator' "$out/share/riot/origin_migrator" 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 # icons
for icon in $out/share/riot/electron/build/icons/*.png; do 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 let
version = "4.0.1"; version = "4.0.2";
rpath = stdenv.lib.makeLibraryPath [ rpath = stdenv.lib.makeLibraryPath [
alsaLib alsaLib
@ -51,7 +51,7 @@ let
if stdenv.hostPlatform.system == "x86_64-linux" then if stdenv.hostPlatform.system == "x86_64-linux" then
fetchurl { fetchurl {
url = "https://downloads.slack-edge.com/linux_releases/slack-desktop-${version}-amd64.deb"; url = "https://downloads.slack-edge.com/linux_releases/slack-desktop-${version}-amd64.deb";
sha256 = "1g7c8jka750pblsfzjvfyf7sp1m409kybqagml9miif1v71scxv2"; sha256 = "053j5py16ilpwy868rhh5l2g93xj1fq4fwxrsi2bkfsnmq261hkm";
} }
else else
throw "Slack is not supported on ${stdenv.hostPlatform.system}"; throw "Slack is not supported on ${stdenv.hostPlatform.system}";

View File

@ -12,10 +12,10 @@ in stdenv.mkDerivation {
installPhase = '' installPhase = ''
mkdir -p $out/lib 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) '' ${lib.optionalString (mumble_i686 != null) ''
mkdir -p $out/lib32 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 install -Dm755 scripts/mumble-overlay $out/bin/mumble-overlay
sed -i "s,/usr/lib,$out/lib,g" $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 { stdenv, fetchurl, adns, curl, gettext, gmp, gnutls, libextractor
, libgcrypt, libgnurl, libidn, libmicrohttpd, libtool, libunistring , libgcrypt, libgnurl, libidn, libmicrohttpd, libtool, libunistring
, makeWrapper, ncurses, pkgconfig, libxml2, sqlite, zlib , makeWrapper, ncurses, pkgconfig, libxml2, sqlite, zlib
, libpulseaudio, libopus, libogg }: , libpulseaudio, libopus, libogg, jansson }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gnunet-0.11.0"; pname = "gnunet";
version = "0.11.6";
src = fetchurl { src = fetchurl {
url = "mirror://gnu/gnunet/${name}.tar.gz"; url = "mirror://gnu/gnunet/${pname}-${version}.tar.gz";
sha256 = "16kydkrjlf2vxflgls46bwaf9kjczf621p456q0qlphd7cy7lixp"; sha256 = "1gspr1lh885sb9r2anh7bi4zan3zjqx33lpyhq9hm2g0n5ip187q";
}; };
enableParallelBuilding = true;
nativeBuildInputs = [ pkgconfig libtool makeWrapper ];
buildInputs = [ buildInputs = [
adns curl gettext gmp gnutls libextractor libgcrypt libgnurl libidn adns curl gmp gnutls libextractor libgcrypt libgnurl libidn
libmicrohttpd libtool libunistring libxml2 makeWrapper ncurses libmicrohttpd libunistring libxml2 ncurses gettext
pkgconfig sqlite zlib libpulseaudio libopus libogg sqlite zlib libpulseaudio libopus libogg jansson
]; ];
preConfigure = '' preConfigure = ''
@ -29,26 +33,18 @@ stdenv.mkDerivation rec {
find . \( -iname \*test\*.c -or -name \*.conf \) | \ find . \( -iname \*test\*.c -or -name \*.conf \) | \
xargs sed -ie "s|/tmp|$TMPDIR|g" 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' \ sed -ie 's|@LDFLAGS@|@LDFLAGS@ $(Z_LIBS)|g' \
src/regex/Makefile.in \ src/regex/Makefile.in \
src/fs/Makefile.in src/fs/Makefile.in
''; '';
# unfortunately, there's still a few failures with impure tests
doCheck = false; doCheck = false;
checkPhase = ''
/* FIXME: Tests must be run this way, but there are still a couple of export GNUNET_PREFIX="$out"
failures. export PATH="$out/bin:$PATH"
make -k check
postInstall = '';
'' export GNUNET_PREFIX="$out"
export PATH="$out/bin:$PATH"
make -k check
'';
*/
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "GNU's decentralized anonymous and censorship-resistant P2P framework"; description = "GNU's decentralized anonymous and censorship-resistant P2P framework";
@ -69,9 +65,7 @@ stdenv.mkDerivation rec {
''; '';
homepage = https://gnunet.org/; homepage = https://gnunet.org/;
license = licenses.gpl2Plus; license = licenses.gpl2Plus;
maintainers = with maintainers; [ vrthra ]; maintainers = with maintainers; [ vrthra ];
platforms = platforms.gnu ++ platforms.linux; 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 { stdenv, fetchurl, pkgconfig, pcre, perl, flex, bison, gettext, libpcap, libnl, c-ares
, gnutls, libgcrypt, libgpgerror, geoip, openssl, lua5, python3, libcap, glib , 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 , withQt ? true, qt5 ? null
, ApplicationServices, SystemConfiguration, gmp , ApplicationServices, SystemConfiguration, gmp
}: }:
@ -29,7 +29,7 @@ in stdenv.mkDerivation {
]; ];
nativeBuildInputs = [ nativeBuildInputs = [
bison cmake extra-cmake-modules flex pkgconfig bison cmake flex pkgconfig
] ++ optional withQt qt5.wrapQtAppsHook; ] ++ optional withQt qt5.wrapQtAppsHook;
buildInputs = [ buildInputs = [

View File

@ -1,13 +1,13 @@
{ appimageTools, symlinkJoin, lib, fetchurl, makeDesktopItem }: { appimageTools, symlinkJoin, lib, fetchurl, makeDesktopItem }:
let let
pname = "patchwork"; pname = "ssb-patchwork";
version = "3.14.1"; version = "3.16.2";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/ssbc/patchwork/releases/download/v${version}/ssb-${pname}-${version}-x86_64.AppImage"; url = "https://github.com/ssbc/patchwork/releases/download/v${version}/${pname}-${version}-x86_64.AppImage";
sha256 = "01vsldabv9nmbx8kzlgw275zykm72s1dxglnaq4jz5vbysbyn0qd"; sha256 = "0hi9ysmwhiiww82a3mqdd2b1anj7qa41b46f6zb3q9d0b8nmvlz4";
}; };
binary = appimageTools.wrapType2 { binary = appimageTools.wrapType2 {
@ -20,8 +20,8 @@ let
}; };
desktopItem = makeDesktopItem { desktopItem = makeDesktopItem {
name = "patchwork"; name = "ssb-patchwork";
exec = "${binary}/bin/patchwork"; exec = "${binary}/bin/ssb-patchwork";
icon = "ssb-patchwork.png"; icon = "ssb-patchwork.png";
comment = "Decentralized messaging and sharing app"; comment = "Decentralized messaging and sharing app";
desktopName = "Patchwork"; 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, cmake, boost, bison, flex, fetchFromGitHub, perl, python3, python3Packages, zlib, minisatUnstable, cryptominisat }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2.2.0";
pname = "stp"; pname = "stp";
version = "2.3.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "stp"; owner = "stp";
repo = "stp"; repo = "stp";
rev = "stp-${version}"; rev = version;
sha256 = "1jh23wjm62nnqfx447g2y53bbangq04hjrvqc35v9xxpcjgj3i49"; sha256 = "1yg2v4wmswh1sigk47drwsxyayr472mf4i47lqmlcgn9hhbx1q87";
}; };
buildInputs = [ boost zlib minisatUnstable cryptominisat python3 ]; 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`: # seems to build fine now, may revert if concurrency does become an issue
# include/stp/AST/UsefulDefs.h:41:29: fatal error: stp/AST/ASTKind.h: No such file or directory enableParallelBuilding = true;
enableParallelBuilding = false;
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Simple Theorem Prover"; description = "Simple Theorem Prover";

View File

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

View File

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

View File

@ -1,22 +1,21 @@
{ stdenv, fetchFromGitHub, cmake, qtbase }: { mkDerivation, lib, fetchFromGitHub, cmake, qtbase }:
stdenv.mkDerivation rec { mkDerivation rec {
name = "qgit-2.8"; pname = "qgit";
version = "2.9";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tibirna"; owner = "tibirna";
repo = "qgit"; repo = "qgit";
rev = name; rev = "${pname}-${version}";
sha256 = "01l6mz2f333x3zbfr68mizwpsh6sdsnadcavpasidiych1m5ry8f"; sha256 = "0n4dq9gffm9yd7n5p5qcdfgrmg2kwnfd51hfx10adgj9ibxlnc3z";
}; };
buildInputs = [ qtbase ]; buildInputs = [ qtbase ];
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
enableParallelBuilding = true; meta = with lib; {
meta = with stdenv.lib; {
license = licenses.gpl2; license = licenses.gpl2;
homepage = https://github.com/tibirna/qgit; homepage = https://github.com/tibirna/qgit;
description = "Graphical front-end to Git"; 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 , pkgconfig, cmake, gnumake, yasm, python2Packages
, libgcrypt, libgpgerror, libunistring , libgcrypt, libgpgerror, libunistring
, boost, avahi, lame, autoreconfHook , boost, avahi, lame, autoreconfHook
@ -42,21 +42,36 @@ assert usbSupport -> libusb != null && ! udevSupport; # libusb won't be used i
assert vdpauSupport -> libvdpau != null; assert vdpauSupport -> libvdpau != null;
assert useWayland -> wayland != null && wayland-protocols != null && waylandpp != null && libxkbcommon != 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 let
kodiReleaseDate = "20190129"; kodiReleaseDate = "20190627";
kodiVersion = "18.1"; kodiVersion = "18.3";
rel = "Leia"; rel = "Leia";
kodi_src = fetchFromGitHub { kodi_src = fetchFromGitHub {
owner = "xbmc"; owner = "xbmc";
repo = "xbmc"; repo = "xbmc";
rev = "${kodiVersion}-${rel}"; 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: kodiDependency = { name, version, rev, sha256, ... } @attrs:
let let
attrs' = builtins.removeAttrs attrs ["name" "version" "rev" "sha256"]; attrs' = builtins.removeAttrs attrs ["name" "version" "rev" "sha256"];
@ -83,16 +98,25 @@ let
nativeBuildInputs = [ cmake nasm pkgconfig ]; nativeBuildInputs = [ cmake nasm pkgconfig ];
}; };
# we should be able to build these externally and have kodi reference them as buildInputs. # We can build these externally but FindLibDvd.cmake forces us to build it
# Doesn't work ATM though so we just use them for the src # them, so we currently just use them for the src.
libdvdcss = kodiDependency rec { libdvdcss = kodiDependency rec {
name = "libdvdcss"; name = "libdvdcss";
version = "1.4.2"; version = "1.4.2";
rev = "${version}-${rel}-Beta-5"; rev = "${version}-${rel}-Beta-5";
sha256 = "0j41ydzx0imaix069s3z07xqw9q95k7llh06fc27dcn6f7b8ydyl"; sha256 = "0j41ydzx0imaix069s3z07xqw9q95k7llh06fc27dcn6f7b8ydyl";
buildInputs = [ libdvdread ]; buildInputs = [ linuxHeaders ];
nativeBuildInputs = [ autoreconfHook pkgconfig ]; 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 { libdvdnav = kodiDependency rec {
@ -100,8 +124,12 @@ let
version = "6.0.0"; version = "6.0.0";
rev = "${version}-${rel}-Alpha-3"; rev = "${version}-${rel}-Alpha-3";
sha256 = "0qwlf4lgahxqxk1r2pzl866mi03pbp7l1fc0rk522sc0ak2s9jhb"; sha256 = "0qwlf4lgahxqxk1r2pzl866mi03pbp7l1fc0rk522sc0ak2s9jhb";
buildInputs = [ libdvdread ]; buildInputs = [ libdvdcss libdvdread ];
nativeBuildInputs = [ autoreconfHook pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig ];
postPatch = cmakeProtoPatch;
postInstall = ''
mv $out/lib/liblibdvdnav.so $out/lib/libdvdnav.so
'';
}; };
libdvdread = kodiDependency rec { libdvdread = kodiDependency rec {
@ -109,7 +137,10 @@ let
version = "6.0.0"; version = "6.0.0";
rev = "${version}-${rel}-Alpha-3"; rev = "${version}-${rel}-Alpha-3";
sha256 = "1xxn01mhkdnp10cqdr357wx77vyzfb5glqpqyg8m0skyi75aii59"; sha256 = "1xxn01mhkdnp10cqdr357wx77vyzfb5glqpqyg8m0skyi75aii59";
nativeBuildInputs = [ autoreconfHook pkgconfig ]; buildInputs = [ libdvdcss ];
nativeBuildInputs = [ cmake pkgconfig ];
configureFlags = [ "--with-libdvdcss" ];
postPatch = cmakeProtoPatch;
}; };
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
@ -160,7 +191,7 @@ in stdenv.mkDerivation rec {
makeWrapper makeWrapper
which which
pkgconfig gnumake 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 ]; ] ++ lib.optional useWayland [ wayland-protocols ];
cmakeFlags = [ cmakeFlags = [

View File

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

View File

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

View File

@ -2,24 +2,22 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "theme-obsidian2"; pname = "theme-obsidian2";
version = "2.8"; version = "2.9";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "madmaxms"; owner = "madmaxms";
repo = "theme-obsidian-2"; repo = "theme-obsidian-2";
rev = "v${version}"; rev = "v${version}";
sha256 = "0qryqpyxbhr0kyar2cshwhzv4da6rfz9gi4wjb6xvcb6szxhlcaq"; sha256 = "1m89ws2a4nms4m8187d5cxi281b66i59xa5shlp3g1r2jc4312cy";
}; };
propagatedUserEnvPkgs = [ gtk-engine-murrine ]; propagatedUserEnvPkgs = [ gtk-engine-murrine ];
postPatch = ''
sed -i -e 's|Obsidian-2-Local|Obsidian-2|' Obsidian-2/index.theme
'';
installPhase = '' installPhase = ''
runHook preInstall
mkdir -p $out/share/themes mkdir -p $out/share/themes
cp -a Obsidian-2 $out/share/themes cp -a Obsidian-2 $out/share/themes
runHook postInstall
''; '';
meta = with stdenv.lib; { 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 let
pname = "gnome-color-manager"; pname = "gnome-color-manager";
@ -11,7 +11,12 @@ in stdenv.mkDerivation rec {
sha256 = "1vpxa2zjz3lkq9ldjg0fl65db9s6b4kcs8nyaqfz3jygma7ifg3w"; 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 ]; buildInputs = [ glib gtk3 libexif libtiff colord colord-gtk libcanberra-gtk3 lcms2 vte exiv2 ];
passthru = { passthru = {

View File

@ -1,29 +1,85 @@
{ stdenv, fetchurl, lib, wrapGAppsHook { stdenv
, pkgconfig, gnome3, gtk3, glib, intltool, libXtst, libnotify, libsoup , fetchFromGitLab
, telepathySupport ? false, dbus-glib ? null, telepathy-glib ? null , wrapGAppsHook
, libsecret, gnutls, libgcrypt, avahi, zlib, libjpeg, libXdamage, libXfixes, libXext , pkgconfig
, networkmanager }: , gnome3
, gtk3
with lib; , 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 { stdenv.mkDerivation rec {
pname = "vino"; pname = "vino";
version = "3.22.0"; version = "unstable-2019-07-08";
src = fetchurl { src = fetchFromGitLab {
url = "mirror://gnome/sources/vino/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; domain = "gitlab.gnome.org";
sha256 = "2911c779b6a2c46e5bc8e5a0c94c2a4d5bd4a1ee7e35f2818702cb13d9d23bab"; owner = "GNOME";
repo = "vino";
rev = "aed81a798558c8127b765cd4fb4dc726d10f1e21";
sha256 = "16r4cj5nsygmd9v97nq6d1yhynzak9hdnaprcdbmwfhh0c9w8jv3";
}; };
doCheck = true; doCheck = true;
nativeBuildInputs = [ intltool wrapGAppsHook pkgconfig ]; nativeBuildInputs = [
autoconf
automake
gnome-common
intltool
libtool
pkgconfig
wrapGAppsHook
];
buildInputs = [ buildInputs = [
gnome3.adwaita-icon-theme gtk3 glib libXtst libnotify libsoup avahi
libsecret gnutls libgcrypt avahi zlib libjpeg glib
libXdamage libXfixes libXext networkmanager gnome3.adwaita-icon-theme
] ++ optionals telepathySupport [ dbus-glib telepathy-glib ]; 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 = { passthru = {
updateScript = gnome3.updateScript { updateScript = gnome3.updateScript {
@ -35,7 +91,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Projects/Vino; homepage = https://wiki.gnome.org/Projects/Vino;
description = "GNOME desktop sharing server"; description = "GNOME desktop sharing server";
maintainers = with maintainers; [ lethalman domenkozar ]; maintainers = gnome3.maintainers;
license = licenses.gpl2; license = licenses.gpl2;
platforms = platforms.linux; 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 ]; 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; }; libsoup = pkgs.libsoup.override { gnomeSupport = true; };
libchamplain = pkgs.libchamplain.override { libsoup = libsoup; }; libchamplain = pkgs.libchamplain.override { libsoup = libsoup; };
gnome3 = self // { recurseForDerivations = false; }; gnome3 = self // { recurseForDerivations = false; };
@ -385,4 +355,9 @@ lib.makeScope pkgs.newScope (self: with self; {
rest = librest; rest = librest;
pidgin-im-gnome-shell-extension = pkgs.gnomeExtensions.pidgin-im-integration; # added 2019-08-01 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 }: libconfig }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "compton-conf"; pname = "compton-conf";
version = "0.14.1"; version = "0.14.1";
@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" \ --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"; description = "GUI configuration tool for compton X composite manager";
homepage = https://github.com/lxqt/compton-conf; homepage = https://github.com/lxqt/compton-conf;
license = licenses.lgpl21; 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, pcre, libexif, xorg, libfm, menu-cache,
qtx11extras, qttools qtx11extras, qttools
}: }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "libfm-qt"; pname = "libfm-qt";
version = "0.14.1"; version = "0.14.1";
@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
menu-cache menu-cache
]; ];
meta = with stdenv.lib; { meta = with lib; {
description = "Core library of PCManFM-Qt (Qt binding for libfm)"; description = "Core library of PCManFM-Qt (Qt binding for libfm)";
homepage = https://github.com/lxqt/libfm-qt; homepage = https://github.com/lxqt/libfm-qt;
license = licenses.lgpl21; 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 }: qttools, qtsvg, libqtxdg, polkit-qt, kwindowsystem, xorg }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "liblxqt"; pname = "liblxqt";
version = "0.14.1"; version = "0.14.1";
@ -27,18 +27,11 @@ stdenv.mkDerivation rec {
xorg.libXScrnSaver xorg.libXScrnSaver
]; ];
cmakeFlags = [
"-DLXQT_ETC_XDG_DIR=/run/current-system/sw/etc/xdg"
];
postPatch = '' 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 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"; description = "Core utility library for all LXQt components";
homepage = https://github.com/lxqt/liblxqt; homepage = https://github.com/lxqt/liblxqt;
license = licenses.lgpl21Plus; 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"; pname = "libqtxdg";
version = "3.3.1"; 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"; description = "Qt implementation of freedesktop.org xdg specs";
homepage = https://github.com/lxqt/libqtxdg; homepage = https://github.com/lxqt/libqtxdg;
license = licenses.lgpl21; 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"; pname = "libsysstat";
version = "0.4.2"; version = "0.4.2";
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
buildInputs = [ qtbase ]; buildInputs = [ qtbase ];
meta = with stdenv.lib; { meta = with lib; {
description = "Library used to query system info and statistics"; description = "Library used to query system info and statistics";
homepage = https://github.com/lxqt/libsysstat; homepage = https://github.com/lxqt/libsysstat;
license = licenses.lgpl21Plus; 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 }: qtx11extras, qtsvg, xorg, lxqt-build-tools, libfm-qt, libexif }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "lximage-qt"; pname = "lximage-qt";
version = "0.14.1"; version = "0.14.1";
@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
libexif libexif
]; ];
meta = with stdenv.lib; { meta = with lib; {
description = "The image viewer and screenshot tool for lxqt"; description = "The image viewer and screenshot tool for lxqt";
homepage = https://github.com/lxqt/lximage-qt; homepage = https://github.com/lxqt/lximage-qt;
license = licenses.gpl2; 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"; pname = "lxqt-about";
version = "0.14.1"; version = "0.14.1";
@ -25,12 +25,7 @@ stdenv.mkDerivation rec {
libqtxdg libqtxdg
]; ];
postPatch = '' meta = with lib; {
substituteInPlace CMakeLists.txt \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
'';
meta = with stdenv.lib; {
description = "Dialogue window providing information about LXQt and the system it's running on"; description = "Dialogue window providing information about LXQt and the system it's running on";
homepage = https://github.com/lxqt/lxqt-about; homepage = https://github.com/lxqt/lxqt-about;
license = licenses.lgpl21; 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"; pname = "lxqt-admin";
version = "0.14.1"; version = "0.14.1";
@ -29,14 +29,9 @@ stdenv.mkDerivation rec {
postPatch = '' postPatch = ''
sed "s|\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR}|''${out}/share/polkit-1/actions|" \ sed "s|\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR}|''${out}/share/polkit-1/actions|" \
-i lxqt-admin-user/CMakeLists.txt -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"; description = "LXQt system administration tool";
homepage = https://github.com/lxqt/lxqt-admin; homepage = https://github.com/lxqt/lxqt-admin;
license = licenses.lgpl21; 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"; pname = "lxqt-archiver";
version = "0.0.96"; version = "0.0.96";
@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
hardeningDisable = [ "format" ]; hardeningDisable = [ "format" ];
meta = with stdenv.lib; { meta = with lib; {
description = "Archive tool for the LXQt desktop environment"; description = "Archive tool for the LXQt desktop environment";
homepage = https://github.com/lxqt/lxqt-archiver/; homepage = https://github.com/lxqt/lxqt-archiver/;
license = licenses.gpl2; 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"; pname = "lxqt-build-tools";
version = "0.6.0"; version = "0.6.0";
@ -11,13 +11,20 @@ stdenv.mkDerivation rec {
sha256 = "0i7m9s4g5rsw28vclc9nh0zcapx85cqfwxkx7rrw7wa12svy7pm2"; sha256 = "0i7m9s4g5rsw28vclc9nh0zcapx85cqfwxkx7rrw7wa12svy7pm2";
}; };
nativeBuildInputs = [ cmake pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig setupHook ];
buildInputs = [ qtbase glib pcre ]; 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"; description = "Various packaging tools and scripts for LXQt applications";
homepage = https://github.com/lxqt/lxqt-build-tools; homepage = https://github.com/lxqt/lxqt-build-tools;
license = licenses.lgpl21; 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, qtx11extras, qttools, qtsvg, kwindowsystem, libkscreen, liblxqt,
libqtxdg, xorg }: libqtxdg, xorg }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "lxqt-config"; pname = "lxqt-config";
version = "0.14.1"; version = "0.14.1";
@ -38,27 +38,10 @@ stdenv.mkDerivation rec {
]; ];
postPatch = '' 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 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"; description = "Tools to configure LXQt and the underlying operating system";
homepage = https://github.com/lxqt/lxqt-config; homepage = https://github.com/lxqt/lxqt-config;
license = licenses.lgpl21; 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"; pname = "lxqt-globalkeys";
version = "0.14.1"; version = "0.14.1";
@ -26,17 +26,7 @@ stdenv.mkDerivation rec {
libqtxdg libqtxdg
]; ];
postPatch = '' meta = with lib; {
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; {
description = "Daemon used to register global keyboard shortcuts"; description = "Daemon used to register global keyboard shortcuts";
homepage = https://github.com/lxqt/lxqt-globalkeys; homepage = https://github.com/lxqt/lxqt-globalkeys;
license = licenses.lgpl21; 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"; pname = "lxqt-notificationd";
version = "0.14.1"; version = "0.14.1";
@ -16,16 +16,6 @@ stdenv.mkDerivation rec {
lxqt-build-tools 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 = [ buildInputs = [
qtbase qtbase
qttools qttools
@ -36,7 +26,7 @@ stdenv.mkDerivation rec {
qtx11extras qtx11extras
]; ];
meta = with stdenv.lib; { meta = with lib; {
description = "The LXQt notification daemon"; description = "The LXQt notification daemon";
homepage = https://github.com/lxqt/lxqt-notificationd; homepage = https://github.com/lxqt/lxqt-notificationd;
license = licenses.lgpl21; 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"; pname = "lxqt-openssh-askpass";
version = "0.14.1"; version = "0.14.1";
@ -26,12 +26,7 @@ stdenv.mkDerivation rec {
libqtxdg libqtxdg
]; ];
postPatch = '' meta = with lib; {
substituteInPlace CMakeLists.txt \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
'';
meta = with stdenv.lib; {
description = "GUI to query passwords on behalf of SSH agents"; description = "GUI to query passwords on behalf of SSH agents";
homepage = https://github.com/lxqt/lxqt-openssh-askpass; homepage = https://github.com/lxqt/lxqt-openssh-askpass;
license = licenses.lgpl21; license = licenses.lgpl21;

View File

@ -1,5 +1,5 @@
{ {
stdenv, fetchFromGitHub, lib, mkDerivation, fetchFromGitHub,
cmake, pkgconfig, lxqt-build-tools, cmake, pkgconfig, lxqt-build-tools,
qtbase, qttools, qtx11extras, qtsvg, libdbusmenu, kwindowsystem, solid, qtbase, qttools, qtx11extras, qtsvg, libdbusmenu, kwindowsystem, solid,
kguiaddons, liblxqt, libqtxdg, lxqt-globalkeys, libsysstat, kguiaddons, liblxqt, libqtxdg, lxqt-globalkeys, libsysstat,
@ -7,7 +7,7 @@
lxmenu-data, pcre, libXdamage lxmenu-data, pcre, libXdamage
}: }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "lxqt-panel"; pname = "lxqt-panel";
version = "0.14.1"; version = "0.14.1";
@ -49,21 +49,7 @@ stdenv.mkDerivation rec {
libXdamage libXdamage
]; ];
postPatch = '' meta = with lib; {
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; {
description = "The LXQt desktop panel"; description = "The LXQt desktop panel";
homepage = https://github.com/lxqt/lxqt-panel; homepage = https://github.com/lxqt/lxqt-panel;
license = licenses.lgpl21; 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, qtbase, qttools, qtx11extras, qtsvg, polkit-qt, kwindowsystem, liblxqt,
libqtxdg, pcre libqtxdg, pcre
}: }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "lxqt-policykit"; pname = "lxqt-policykit";
version = "0.14.1"; version = "0.14.1";
@ -33,15 +33,7 @@ stdenv.mkDerivation rec {
pcre pcre
]; ];
postPatch = '' meta = with lib; {
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; {
description = "The LXQt PolicyKit agent"; description = "The LXQt PolicyKit agent";
homepage = https://github.com/lxqt/lxqt-policykit; homepage = https://github.com/lxqt/lxqt-policykit;
license = licenses.lgpl21; 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"; pname = "lxqt-powermanagement";
version = "0.14.1"; version = "0.14.1";
@ -28,17 +28,7 @@ stdenv.mkDerivation rec {
libqtxdg libqtxdg
]; ];
postPatch = '' meta = with lib; {
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; {
description = "Power management module for LXQt"; description = "Power management module for LXQt";
homepage = https://github.com/lxqt/lxqt-powermanagement; homepage = https://github.com/lxqt/lxqt-powermanagement;
license = licenses.lgpl21; license = licenses.lgpl21;

View File

@ -1,10 +1,10 @@
{ {
stdenv, fetchFromGitHub, lib, mkDerivation, fetchFromGitHub,
cmake, lxqt-build-tools, cmake, lxqt-build-tools,
qtbase, qtx11extras, qttools, qtsvg, libdbusmenu, libqtxdg, libfm-qt qtbase, qtx11extras, qttools, qtsvg, libdbusmenu, libqtxdg, libfm-qt
}: }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "lxqt-qtplugin"; pname = "lxqt-qtplugin";
version = "0.14.0"; version = "0.14.0";
@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
--replace "DESTINATION \"\''${QT_PLUGINS_DIR}" "DESTINATION \"$qtPluginPrefix" --replace "DESTINATION \"\''${QT_PLUGINS_DIR}" "DESTINATION \"$qtPluginPrefix"
''; '';
meta = with stdenv.lib; { meta = with lib; {
description = "LXQt Qt platform integration plugin"; description = "LXQt Qt platform integration plugin";
homepage = https://github.com/lxqt/lxqt-qtplugin; homepage = https://github.com/lxqt/lxqt-qtplugin;
license = licenses.lgpl21; 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 }: menu-cache, muparser, pcre }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "lxqt-runner"; pname = "lxqt-runner";
version = "0.14.1"; version = "0.14.1";
@ -32,15 +32,7 @@ stdenv.mkDerivation rec {
pcre pcre
]; ];
postPatch = '' meta = with lib; {
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; {
description = "Tool used to launch programs quickly by typing their names"; description = "Tool used to launch programs quickly by typing their names";
homepage = https://github.com/lxqt/lxqt-runner; homepage = https://github.com/lxqt/lxqt-runner;
license = licenses.lgpl21; 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"; pname = "lxqt-session";
version = "0.14.1"; version = "0.14.1";
@ -30,19 +30,7 @@ stdenv.mkDerivation rec {
xdg-user-dirs xdg-user-dirs
]; ];
postPatch = '' meta = with lib; {
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; {
description = "An alternative session manager ported from the original razor-session"; description = "An alternative session manager ported from the original razor-session";
homepage = https://github.com/lxqt/lxqt-session; homepage = https://github.com/lxqt/lxqt-session;
license = licenses.lgpl21; 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"; pname = "lxqt-sudo";
version = "0.14.1"; version = "0.14.1";
@ -27,12 +27,7 @@ stdenv.mkDerivation rec {
sudo sudo
]; ];
postPatch = '' meta = with lib; {
substituteInPlace CMakeLists.txt \
--replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations"
'';
meta = with stdenv.lib; {
description = "GUI frontend for sudo/su"; description = "GUI frontend for sudo/su";
homepage = https://github.com/lxqt/lxqt-sudo; homepage = https://github.com/lxqt/lxqt-sudo;
license = licenses.lgpl21; 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"; pname = "lxqt-themes";
version = "0.14.0"; version = "0.14.0";
@ -16,14 +16,7 @@ stdenv.mkDerivation rec {
lxqt-build-tools lxqt-build-tools
]; ];
postPatch = '' meta = with lib; {
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; {
description = "Themes, graphics and icons for LXQt"; description = "Themes, graphics and icons for LXQt";
homepage = https://github.com/lxqt/lxqt-themes; homepage = https://github.com/lxqt/lxqt-themes;
license = licenses.lgpl21; 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 }: qtx11extras, xorg, lxqt-build-tools, openbox, hicolor-icon-theme }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "obconf-qt"; pname = "obconf-qt";
version = "0.14.1"; version = "0.14.1";
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
hicolor-icon-theme hicolor-icon-theme
]; ];
meta = with stdenv.lib; { meta = with lib; {
description = "The Qt port of obconf, the Openbox configuration tool"; description = "The Qt port of obconf, the Openbox configuration tool";
homepage = https://github.com/lxqt/obconf-qt; homepage = https://github.com/lxqt/obconf-qt;
license = licenses.gpl2; 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 }: pcre, qtbase, qttools, qtx11extras }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "pavucontrol-qt"; pname = "pavucontrol-qt";
version = "0.14.1"; version = "0.14.1";
@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
pcre pcre
]; ];
meta = with stdenv.lib; { meta = with lib; {
description = "A Pulseaudio mixer in Qt (port of pavucontrol)"; description = "A Pulseaudio mixer in Qt (port of pavucontrol)";
homepage = https://github.com/lxqt/pavucontrol-qt; homepage = https://github.com/lxqt/pavucontrol-qt;
license = licenses.gpl2; 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 }: qtx11extras, libfm-qt, menu-cache, lxmenu-data }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "pcmanfm-qt"; pname = "pcmanfm-qt";
version = "0.14.1"; version = "0.14.1";
@ -28,14 +28,7 @@ stdenv.mkDerivation rec {
lxmenu-data lxmenu-data
]; ];
postPatch = '' meta = with lib; {
for dir in autostart config; do
substituteInPlace $dir/CMakeLists.txt \
--replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg"
done
'';
meta = with stdenv.lib; {
description = "File manager and desktop icon manager (Qt port of PCManFM and libfm)"; description = "File manager and desktop icon manager (Qt port of PCManFM and libfm)";
homepage = https://github.com/lxqt/pcmanfm-qt; homepage = https://github.com/lxqt/pcmanfm-qt;
license = licenses.gpl2; 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"; pname = "qlipper";
version = "5.1.1"; version = "5.1.1";
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
buildInputs = [ qtbase qttools ]; buildInputs = [ qtbase qttools ];
meta = with stdenv.lib; { meta = with lib; {
description = "Cross-platform clipboard history applet"; description = "Cross-platform clipboard history applet";
homepage = https://github.com/pvanek/qlipper; homepage = https://github.com/pvanek/qlipper;
license = licenses.gpl2Plus; 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 }: lxqt-build-tools }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "qps"; pname = "qps";
version = "1.10.20"; version = "1.10.20";
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
buildInputs = [ qtbase qtx11extras qttools ]; buildInputs = [ qtbase qtx11extras qttools ];
meta = with stdenv.lib; { meta = with lib; {
description = "The Qt process manager"; description = "The Qt process manager";
homepage = https://github.com/lxqt/qps; homepage = https://github.com/lxqt/qps;
license = licenses.gpl2; 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 }: qtbase, qttools, qtx11extras }:
stdenv.mkDerivation rec { mkDerivation rec {
pname = "qterminal"; pname = "qterminal";
version = "0.14.1"; version = "0.14.1";
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
qtermwidget qtermwidget
]; ];
meta = with stdenv.lib; { meta = with lib; {
description = "A lightweight Qt-based terminal emulator"; description = "A lightweight Qt-based terminal emulator";
homepage = https://github.com/lxqt/qterminal; homepage = https://github.com/lxqt/qterminal;
license = licenses.gpl2; 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"; pname = "qtermwidget";
version = "0.14.1"; version = "0.14.1";
@ -13,9 +13,9 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake lxqt-build-tools ]; 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"; description = "A terminal emulator widget for Qt 5";
homepage = https://github.com/lxqt/qtermwidget; homepage = https://github.com/lxqt/qtermwidget;
license = licenses.gpl2; 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"; pname = "screengrab";
version = "1.101"; version = "1.101";
@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
xorg.libXdmcp xorg.libXdmcp
]; ];
meta = with stdenv.lib; { meta = with lib; {
description = "Crossplatform tool for fast making screenshots"; description = "Crossplatform tool for fast making screenshots";
homepage = https://github.com/lxqt/screengrab; homepage = https://github.com/lxqt/screengrab;
license = licenses.gpl2; license = licenses.gpl2;

View File

@ -200,5 +200,12 @@ in rec {
binary = binaryCrystal_0_29; 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 # 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 { stdenv.mkDerivation rec {
pname = "fsharp"; pname = "fsharp";
version = "4.1.7"; version = "4.1.34";
src = fetchurl { src = fetchurl {
url = "https://github.com/fsharp/fsharp/archive/${version}.tar.gz"; url = "https://github.com/fsharp/fsharp/archive/${version}.tar.gz";
sha256 = "0rfkrk4mzi4w54mfqilvng9ar5swhmnwhsyjc54rx3fd0np3jiyl"; sha256 = "0cv6p5pin962vhbpsji40nkckkag5c96kq5qihvg60pc1z821p0i";
}; };
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
@ -17,12 +17,16 @@ stdenv.mkDerivation rec {
automake automake
which which
mono mono
msbuild
dotnetbuildhelpers dotnetbuildhelpers
dotnetPackages.FsCheck262 dotnetPackages.FsCheck262
dotnetPackages.FSharpCompilerTools dotnetPackages.FSharpCompilerTools
dotnetPackages.FSharpCore dotnetPackages.FSharpCore302
dotnetPackages.FSharpCore3125
dotnetPackages.FSharpCore4001
dotnetPackages.FSharpCore4117
dotnetPackages.FSharpData225 dotnetPackages.FSharpData225
dotnetPackages.FsLexYacc704 dotnetPackages.FsLexYacc706
dotnetPackages.MicrosoftDiaSymReader dotnetPackages.MicrosoftDiaSymReader
dotnetPackages.MicrosoftDiaSymReaderPortablePdb dotnetPackages.MicrosoftDiaSymReaderPortablePdb
dotnetPackages.NUnit350 dotnetPackages.NUnit350
@ -31,6 +35,14 @@ stdenv.mkDerivation rec {
dotnetPackages.SystemValueTuple 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 = '' configurePhase = ''
substituteInPlace ./autogen.sh --replace "/usr/bin/env sh" "${stdenv.shell}" substituteInPlace ./autogen.sh --replace "/usr/bin/env sh" "${stdenv.shell}"
./autogen.sh --prefix $out ./autogen.sh --prefix $out
@ -47,24 +59,30 @@ stdenv.mkDerivation rec {
mkdir packages mkdir packages
ln -s ${dotnetPackages.FsCheck262}/lib/dotnet/FsCheck packages/FsCheck.2.6.2 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.FSharpCompilerTools}/lib/dotnet/FSharp.Compiler.Tools packages/FSharp.Compiler.Tools.4.1.27
ln -s ${dotnetPackages.FSharpCore}/lib/dotnet/FSharp.Core/ packages/FSharp.Core.4.0.0.1 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.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.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.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.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.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.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, # 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
# and set up some symlinks for backwards compatibility. # 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 = '' 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/fsharpc $out/bin/fsc
ln -s $out/bin/fsharpi $out/bin/fsi ln -s $out/bin/fsharpi $out/bin/fsi
for dll in "$out/lib/mono/fsharp"/FSharp*.dll for dll in "$out/lib/mono/fsharp"/FSharp*.dll
@ -73,6 +91,26 @@ stdenv.mkDerivation rec {
done 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: # To fix this error when running:
# The file "/nix/store/path/whatever.exe" is an not a valid CIL image # The file "/nix/store/path/whatever.exe" is an not a valid CIL image
dontStrip = true; 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 in
stdenv.mkDerivation (rec { stdenv.mkDerivation (rec {
version = "8.8.0.20190721"; version = "8.8.1";
name = "${targetPrefix}ghc-${version}"; name = "${targetPrefix}ghc-${version}";
src = fetchurl { src = fetchurl {
url = "https://downloads.haskell.org/ghc/8.8.1-rc1/ghc-${version}-src.tar.xz"; url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz";
sha256 = "1ih76zpxk8ay84xjyaflqc754002y8pdaainqfvb4cnhy6lpb1br"; sha256 = "06kj4fhvijinjafiy4s873n60qly323rdlz9bmc79nhlp3cq72lh";
}; };
enableParallelBuilding = true; 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 let
llvm = callPackage ./llvm.nix { }; llvm = callPackage ./llvm.nix { };
@ -9,7 +12,7 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
inherit sha256; 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 = buildInputs =

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