forked from mirrors/nixpkgs
Merge remote-tracking branch 'upstream/master' into gcc-6
This commit is contained in:
commit
563dd7886c
|
@ -1401,8 +1401,15 @@ These can be toggled using the <varname>stdenv.mkDerivation</varname> parameters
|
|||
<varname>hardeningDisable</varname> and <varname>hardeningEnable</varname>.
|
||||
</para>
|
||||
|
||||
<para>The following flags are enabled by default and might require disabling
|
||||
if the program to package is incompatible.
|
||||
<para>
|
||||
Both parameters take a list of flags as strings. The special
|
||||
<varname>"all"</varname> flag can be passed to <varname>hardeningDisable</varname>
|
||||
to turn off all hardening. These flags can also be used as environment variables
|
||||
for testing or development purposes.
|
||||
</para>
|
||||
|
||||
<para>The following flags are enabled by default and might require disabling with
|
||||
<varname>hardeningDisable</varname> if the program to package is incompatible.
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
@ -1563,7 +1570,8 @@ intel_drv.so: undefined symbol: vgaHWFreeHWRec
|
|||
</variablelist>
|
||||
|
||||
<para>The following flags are disabled by default and should be enabled
|
||||
for packages that take untrusted input, like network services.
|
||||
with <varname>hardeningEnable</varname> for packages that take untrusted
|
||||
input like network services.
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
akaWolf = "Artjom Vejsel <akawolf0@gmail.com>";
|
||||
akc = "Anders Claesson <akc@akc.is>";
|
||||
algorith = "Dries Van Daele <dries_van_daele@telenet.be>";
|
||||
alibabzo = "Alistair Bill <alistair.bill@gmail.com>";
|
||||
all = "Nix Committers <nix-commits@lists.science.uu.nl>";
|
||||
ambrop72 = "Ambroz Bizjak <ambrop7@gmail.com>";
|
||||
amiddelk = "Arie Middelkoop <amiddelk@gmail.com>";
|
||||
|
@ -102,6 +103,7 @@
|
|||
corngood = "David McFarland <corngood@gmail.com>";
|
||||
coroa = "Jonas Hörsch <jonas@chaoflow.net>";
|
||||
couchemar = "Andrey Pavlov <couchemar@yandex.ru>";
|
||||
cpages = "Carles Pagès <page@ruiec.cat>";
|
||||
cransom = "Casey Ransom <cransom@hubns.net>";
|
||||
cryptix = "Henry Bubert <cryptix@riseup.net>";
|
||||
CrystalGamma = "Jona Stubbe <nixos@crystalgamma.de>";
|
||||
|
@ -350,7 +352,6 @@
|
|||
osener = "Ozan Sener <ozan@ozansener.com>";
|
||||
otwieracz = "Slawomir Gonet <slawek@otwiera.cz>";
|
||||
oxij = "Jan Malakhovski <oxij@oxij.org>";
|
||||
page = "Carles Pagès <page@cubata.homelinux.net>";
|
||||
paholg = "Paho Lurie-Gregg <paho@paholg.com>";
|
||||
pakhfn = "Fedor Pakhomov <pakhfn@gmail.com>";
|
||||
palo = "Ingolf Wanger <palipalo9@googlemail.com>";
|
||||
|
|
|
@ -13,7 +13,7 @@ let
|
|||
|
||||
resolvconfOptions = cfg.resolvconfOptions
|
||||
++ optional cfg.dnsSingleRequest "single-request"
|
||||
++ optional cfg.dnsExtensionMechanism "ends0";
|
||||
++ optional cfg.dnsExtensionMechanism "edns0";
|
||||
in
|
||||
|
||||
{
|
||||
|
|
|
@ -10,6 +10,11 @@ let
|
|||
check = x: (lib.types.package.check x) && (attrByPath ["meta" "isIbusEngine"] false x);
|
||||
};
|
||||
|
||||
impanel =
|
||||
if cfg.panel != null
|
||||
then "--panel=${cfg.panel}"
|
||||
else "";
|
||||
|
||||
ibusAutostart = pkgs.writeTextFile {
|
||||
name = "autostart-ibus-daemon";
|
||||
destination = "/etc/xdg/autostart/ibus-daemon.desktop";
|
||||
|
@ -17,7 +22,7 @@ let
|
|||
[Desktop Entry]
|
||||
Name=IBus
|
||||
Type=Application
|
||||
Exec=${ibusPackage}/bin/ibus-daemon --daemonize --xim
|
||||
Exec=${ibusPackage}/bin/ibus-daemon --daemonize --xim ${impanel}
|
||||
'';
|
||||
};
|
||||
in
|
||||
|
@ -36,6 +41,12 @@ in
|
|||
in
|
||||
"Enabled IBus engines. Available engines are: ${engines}.";
|
||||
};
|
||||
panel = mkOption {
|
||||
type = with types; nullOr path;
|
||||
default = null;
|
||||
example = literalExample "${pkgs.kde5.plasma-desktop}/lib/libexec/kimpanel-ibus-panel";
|
||||
description = "Replace the IBus panel with another panel.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -283,6 +283,7 @@
|
|||
keystone = 265;
|
||||
glance = 266;
|
||||
couchpotato = 267;
|
||||
gogs = 268;
|
||||
|
||||
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
||||
|
||||
|
@ -536,6 +537,7 @@
|
|||
keystone = 265;
|
||||
glance = 266;
|
||||
couchpotato = 267;
|
||||
gogs = 268;
|
||||
|
||||
# When adding a gid, make sure it doesn't match an existing
|
||||
# uid. Users and groups with the same name should have equal
|
||||
|
|
|
@ -258,6 +258,7 @@
|
|||
#./services/misc/gitit.nix
|
||||
./services/misc/gitlab.nix
|
||||
./services/misc/gitolite.nix
|
||||
./services/misc/gogs.nix
|
||||
./services/misc/gpsd.nix
|
||||
./services/misc/ihaskell.nix
|
||||
./services/misc/leaps.nix
|
||||
|
@ -311,6 +312,7 @@
|
|||
./services/monitoring/monit.nix
|
||||
./services/monitoring/munin.nix
|
||||
./services/monitoring/nagios.nix
|
||||
./services/monitoring/netdata.nix
|
||||
./services/monitoring/prometheus/default.nix
|
||||
./services/monitoring/prometheus/alertmanager.nix
|
||||
./services/monitoring/prometheus/blackbox-exporter.nix
|
||||
|
|
215
nixos/modules/services/misc/gogs.nix
Normal file
215
nixos/modules/services/misc/gogs.nix
Normal file
|
@ -0,0 +1,215 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.gogs;
|
||||
configFile = pkgs.writeText "app.ini" ''
|
||||
APP_NAME = ${cfg.appName}
|
||||
RUN_USER = ${cfg.user}
|
||||
RUN_MODE = prod
|
||||
|
||||
[database]
|
||||
DB_TYPE = ${cfg.database.type}
|
||||
HOST = ${cfg.database.host}:${toString cfg.database.port}
|
||||
NAME = ${cfg.database.name}
|
||||
USER = ${cfg.database.user}
|
||||
PASSWD = ${cfg.database.password}
|
||||
PATH = ${cfg.database.path}
|
||||
|
||||
[repository]
|
||||
ROOT = ${cfg.repositoryRoot}
|
||||
|
||||
[server]
|
||||
DOMAIN = ${cfg.domain}
|
||||
HTTP_ADDR = ${cfg.httpAddress}
|
||||
HTTP_PORT = ${toString cfg.httpPort}
|
||||
ROOT_URL = ${cfg.rootUrl}
|
||||
|
||||
[security]
|
||||
SECRET_KEY = #secretkey#
|
||||
INSTALL_LOCK = true
|
||||
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.gogs = {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = "Enable Go Git Service.";
|
||||
};
|
||||
|
||||
useWizard = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = "Do not generate a configuration and use Gogs' installation wizard instead. The first registered user will be administrator.";
|
||||
};
|
||||
|
||||
stateDir = mkOption {
|
||||
default = "/var/lib/gogs";
|
||||
type = types.str;
|
||||
description = "Gogs data directory.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "gogs";
|
||||
description = "User account under which Gogs runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "gogs";
|
||||
description = "Group account under which Gogs runs.";
|
||||
};
|
||||
|
||||
database = {
|
||||
type = mkOption {
|
||||
type = types.enum [ "sqlite3" "mysql" "postgres" ];
|
||||
example = "mysql";
|
||||
default = "sqlite3";
|
||||
description = "Database engine to use.";
|
||||
};
|
||||
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = "Database host address.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.int;
|
||||
default = 3306;
|
||||
description = "Database host port.";
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
default = "gogs";
|
||||
description = "Database name.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "gogs";
|
||||
description = "Database user.";
|
||||
};
|
||||
|
||||
password = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = "Database password.";
|
||||
};
|
||||
|
||||
path = mkOption {
|
||||
type = types.str;
|
||||
default = "${cfg.stateDir}/data/gogs.db";
|
||||
description = "Path to the sqlite3 database file.";
|
||||
};
|
||||
};
|
||||
|
||||
appName = mkOption {
|
||||
type = types.str;
|
||||
default = "Gogs: Go Git Service";
|
||||
description = "Application name.";
|
||||
};
|
||||
|
||||
repositoryRoot = mkOption {
|
||||
type = types.str;
|
||||
default = "${cfg.stateDir}/repositories";
|
||||
description = "Path to the git repositories.";
|
||||
};
|
||||
|
||||
domain = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
description = "Domain name of your server.";
|
||||
};
|
||||
|
||||
rootUrl = mkOption {
|
||||
type = types.str;
|
||||
default = "http://localhost:3000/";
|
||||
description = "Full public URL of Gogs server.";
|
||||
};
|
||||
|
||||
httpAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "0.0.0.0";
|
||||
description = "HTTP listen address.";
|
||||
};
|
||||
|
||||
httpPort = mkOption {
|
||||
type = types.int;
|
||||
default = 3000;
|
||||
description = "HTTP listen port.";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = "Configuration lines appended to the generated Gogs configuration file.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
systemd.services.gogs = {
|
||||
description = "Gogs (Go Git Service)";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ pkgs.gogs.bin ];
|
||||
|
||||
preStart = ''
|
||||
# copy custom configuration and generate a random secret key if needed
|
||||
${optionalString (cfg.useWizard == false) ''
|
||||
mkdir -p ${cfg.stateDir}/custom/conf
|
||||
cp -f ${configFile} ${cfg.stateDir}/custom/conf/app.ini
|
||||
KEY=$(head -c 16 /dev/urandom | tr -dc A-Za-z0-9)
|
||||
sed -i "s,#secretkey#,$KEY,g" ${cfg.stateDir}/custom/conf/app.ini
|
||||
''}
|
||||
|
||||
mkdir -p ${cfg.repositoryRoot}
|
||||
# update all hooks' binary paths
|
||||
HOOKS=$(find ${cfg.repositoryRoot} -mindepth 4 -maxdepth 4 -type f -wholename "*git/hooks/*")
|
||||
if [ "$HOOKS" ]
|
||||
then
|
||||
sed -ri 's,/nix/store/[a-z0-9.-]+/bin/gogs,${pkgs.gogs.bin}/bin/gogs,g' $HOOKS
|
||||
sed -ri 's,/nix/store/[a-z0-9.-]+/bin/env,${pkgs.coreutils}/bin/env,g' $HOOKS
|
||||
sed -ri 's,/nix/store/[a-z0-9.-]+/bin/bash,${pkgs.bash}/bin/bash,g' $HOOKS
|
||||
sed -ri 's,/nix/store/[a-z0-9.-]+/bin/perl,${pkgs.perl}/bin/perl,g' $HOOKS
|
||||
fi
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
WorkingDirectory = cfg.stateDir;
|
||||
ExecStart = "${pkgs.gogs.bin}/bin/gogs web";
|
||||
Restart = "always";
|
||||
};
|
||||
|
||||
environment = {
|
||||
USER = cfg.user;
|
||||
HOME = cfg.stateDir;
|
||||
GOGS_WORK_DIR = cfg.stateDir;
|
||||
};
|
||||
};
|
||||
|
||||
users = {
|
||||
extraUsers.gogs = {
|
||||
description = "Go Git Service";
|
||||
uid = config.ids.uids.gogs;
|
||||
group = "gogs";
|
||||
home = cfg.stateDir;
|
||||
createHome = true;
|
||||
};
|
||||
extraGroups.gogs.gid = config.ids.gids.gogs;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -16,12 +16,30 @@ in {
|
|||
type = types.bool;
|
||||
};
|
||||
|
||||
ip = mkOption {
|
||||
description = "IP address to listen on.";
|
||||
default = "0.0.0.0";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
description = "Mesos Master port";
|
||||
default = 5050;
|
||||
type = types.int;
|
||||
};
|
||||
|
||||
advertiseIp = mkOption {
|
||||
description = "IP address advertised to reach this master.";
|
||||
default = null;
|
||||
type = types.nullOr types.str;
|
||||
};
|
||||
|
||||
advertisePort = mkOption {
|
||||
description = "Port advertised to reach this Mesos master.";
|
||||
default = null;
|
||||
type = types.nullOr types.int;
|
||||
};
|
||||
|
||||
zk = mkOption {
|
||||
description = ''
|
||||
ZooKeeper URL (used for leader election amongst masters).
|
||||
|
@ -84,7 +102,10 @@ in {
|
|||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.mesos}/bin/mesos-master \
|
||||
--ip=${cfg.ip} \
|
||||
--port=${toString cfg.port} \
|
||||
${optionalString (cfg.advertiseIp != null) "--advertise_ip=${cfg.advertiseIp}"} \
|
||||
${optionalString (cfg.advertisePort != null) "--advertise_port=${toString cfg.advertisePort}"} \
|
||||
${if cfg.quorum == 0
|
||||
then "--registry=in_memory"
|
||||
else "--zk=${cfg.zk} --registry=replicated_log --quorum=${toString cfg.quorum}"} \
|
||||
|
|
|
@ -12,7 +12,23 @@ let
|
|||
attribsArg = optionalString (cfg.attributes != {})
|
||||
"--attributes=${mkAttributes cfg.attributes}";
|
||||
|
||||
containerizers = [ "mesos" ] ++ (optional cfg.withDocker "docker");
|
||||
containerizersArg = concatStringsSep "," (
|
||||
lib.unique (
|
||||
cfg.containerizers ++ (optional cfg.withDocker "docker")
|
||||
)
|
||||
);
|
||||
|
||||
imageProvidersArg = concatStringsSep "," (
|
||||
lib.unique (
|
||||
cfg.imageProviders ++ (optional cfg.withDocker "docker")
|
||||
)
|
||||
);
|
||||
|
||||
isolationArg = concatStringsSep "," (
|
||||
lib.unique (
|
||||
cfg.isolation ++ (optionals cfg.withDocker [ "filesystem/linux" "docker/runtime"])
|
||||
)
|
||||
);
|
||||
|
||||
in {
|
||||
|
||||
|
@ -27,7 +43,7 @@ in {
|
|||
ip = mkOption {
|
||||
description = "IP address to listen on.";
|
||||
default = "0.0.0.0";
|
||||
type = types.string;
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
|
@ -36,6 +52,53 @@ in {
|
|||
type = types.int;
|
||||
};
|
||||
|
||||
advertiseIp = mkOption {
|
||||
description = "IP address advertised to reach this agent.";
|
||||
default = null;
|
||||
type = types.nullOr types.str;
|
||||
};
|
||||
|
||||
advertisePort = mkOption {
|
||||
description = "Port advertised to reach this agent.";
|
||||
default = null;
|
||||
type = types.nullOr types.int;
|
||||
};
|
||||
|
||||
containerizers = mkOption {
|
||||
description = ''
|
||||
List of containerizer implementations to compose in order to provide
|
||||
containerization. Available options are mesos and docker.
|
||||
The order the containerizers are specified is the order they are tried.
|
||||
'';
|
||||
default = [ "mesos" ];
|
||||
type = types.listOf types.str;
|
||||
};
|
||||
|
||||
imageProviders = mkOption {
|
||||
description = "List of supported image providers, e.g., APPC,DOCKER.";
|
||||
default = [ ];
|
||||
type = types.listOf types.str;
|
||||
};
|
||||
|
||||
imageProvisionerBackend = mkOption {
|
||||
description = ''
|
||||
Strategy for provisioning container rootfs from images,
|
||||
e.g., aufs, bind, copy, overlay.
|
||||
'';
|
||||
default = "copy";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
isolation = mkOption {
|
||||
description = ''
|
||||
Isolation mechanisms to use, e.g., posix/cpu,posix/mem, or
|
||||
cgroups/cpu,cgroups/mem, or network/port_mapping, or `gpu/nvidia` for nvidia
|
||||
specific gpu isolation.
|
||||
'';
|
||||
default = [ "posix/cpu" "posix/mem" ];
|
||||
type = types.listOf types.str;
|
||||
};
|
||||
|
||||
master = mkOption {
|
||||
description = ''
|
||||
May be one of:
|
||||
|
@ -57,6 +120,16 @@ in {
|
|||
type = types.bool;
|
||||
};
|
||||
|
||||
dockerRegistry = mkOption {
|
||||
description = ''
|
||||
The default url for pulling Docker images.
|
||||
It could either be a Docker registry server url,
|
||||
or a local path in which Docker image archives are stored.
|
||||
'';
|
||||
default = null;
|
||||
type = types.nullOr (types.either types.str types.path);
|
||||
};
|
||||
|
||||
workDir = mkOption {
|
||||
description = "The Mesos work directory.";
|
||||
default = "/var/lib/mesos/slave";
|
||||
|
@ -96,28 +169,45 @@ in {
|
|||
host = "aabc123";
|
||||
os = "nixos"; };
|
||||
};
|
||||
|
||||
executorEnvironmentVariables = mkOption {
|
||||
description = ''
|
||||
The environment variables that should be passed to the executor, and thus subsequently task(s).
|
||||
'';
|
||||
default = {
|
||||
PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
|
||||
};
|
||||
type = types.attrsOf types.str;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.mesos-slave = {
|
||||
description = "Mesos Slave";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
environment.MESOS_CONTAINERIZERS = concatStringsSep "," containerizers;
|
||||
path = [ pkgs.stdenv.shellPackage ];
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.mesos}/bin/mesos-slave \
|
||||
--containerizers=${containerizersArg} \
|
||||
--image_providers=${imageProvidersArg} \
|
||||
--image_provisioner_backend=${cfg.imageProvisionerBackend} \
|
||||
--isolation=${isolationArg} \
|
||||
--ip=${cfg.ip} \
|
||||
--port=${toString cfg.port} \
|
||||
${optionalString (cfg.advertiseIp != null) "--advertise_ip=${cfg.advertiseIp}"} \
|
||||
${optionalString (cfg.advertisePort != null) "--advertise_port=${toString cfg.advertisePort}"} \
|
||||
--master=${cfg.master} \
|
||||
--work_dir=${cfg.workDir} \
|
||||
--logging_level=${cfg.logLevel} \
|
||||
${attribsArg} \
|
||||
${optionalString cfg.withHadoop "--hadoop-home=${pkgs.hadoop}"} \
|
||||
${optionalString cfg.withDocker "--docker=${pkgs.docker}/libexec/docker/docker"} \
|
||||
${optionalString (cfg.dockerRegistry != null) "--docker_registry=${cfg.dockerRegistry}"} \
|
||||
--executor_environment_variables=${lib.escapeShellArg (builtins.toJSON cfg.executorEnvironmentVariables)} \
|
||||
${toString cfg.extraCmdLineOptions}
|
||||
'';
|
||||
PermissionsStartOnly = true;
|
||||
|
|
78
nixos/modules/services/monitoring/netdata.nix
Normal file
78
nixos/modules/services/monitoring/netdata.nix
Normal file
|
@ -0,0 +1,78 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.netdata;
|
||||
|
||||
configFile = pkgs.writeText "netdata.conf" cfg.configText;
|
||||
|
||||
defaultUser = "netdata";
|
||||
|
||||
in {
|
||||
options = {
|
||||
services.netdata = {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = "Whether to enable netdata monitoring.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "netdata";
|
||||
description = "User account under which netdata runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "netdata";
|
||||
description = "Group under which netdata runs.";
|
||||
};
|
||||
|
||||
configText = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = "netdata.conf configuration.";
|
||||
example = ''
|
||||
[global]
|
||||
debug log = syslog
|
||||
access log = syslog
|
||||
error log = syslog
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.netdata = {
|
||||
description = "Real time performance monitoring";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
preStart = concatStringsSep "\n" (map (dir: ''
|
||||
mkdir -vp ${dir}
|
||||
chmod 750 ${dir}
|
||||
chown -R ${cfg.user}:${cfg.group} ${dir}
|
||||
'') [ "/var/cache/netdata"
|
||||
"/var/log/netdata"
|
||||
"/var/lib/netdata" ]);
|
||||
serviceConfig = {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
PermissionsStartOnly = true;
|
||||
ExecStart = "${pkgs.netdata}/bin/netdata -D -c ${configFile}";
|
||||
TimeoutStopSec = 60;
|
||||
};
|
||||
};
|
||||
|
||||
users.extraUsers = optional (cfg.user == defaultUser) {
|
||||
name = defaultUser;
|
||||
};
|
||||
|
||||
users.extraGroups = optional (cfg.group == defaultUser) {
|
||||
name = defaultUser;
|
||||
};
|
||||
|
||||
};
|
||||
}
|
|
@ -149,6 +149,6 @@ in {
|
|||
serviceConfig.ExecStart = "${cfg.package}/bin/flannel";
|
||||
};
|
||||
|
||||
services.etcd.enable = mkDefault cfg.etcd.endpoints == ["http://127.0.0.1:2379"];
|
||||
services.etcd.enable = mkDefault (cfg.etcd.endpoints == ["http://127.0.0.1:2379"]);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -174,7 +174,7 @@ in {
|
|||
|
||||
assertions = [{
|
||||
assertion = config.networking.wireless.enable == false;
|
||||
message = "You can not use networking.networkmanager with services.networking.wireless";
|
||||
message = "You can not use networking.networkmanager with networking.wireless";
|
||||
}];
|
||||
|
||||
boot.kernelModules = [ "ppp_mppe" ]; # Needed for most (all?) PPTP VPN connections.
|
||||
|
@ -239,7 +239,8 @@ in {
|
|||
# Turn off NixOS' network management
|
||||
networking = {
|
||||
useDHCP = false;
|
||||
wireless.enable = false;
|
||||
# use mkDefault to trigger the assertion about the conflict above
|
||||
wireless.enable = lib.mkDefault false;
|
||||
};
|
||||
|
||||
powerManagement.resumeCommands = ''
|
||||
|
|
|
@ -20,6 +20,7 @@ let
|
|||
${optionalString (cfg.defaultUser != null) ("default_user " + cfg.defaultUser)}
|
||||
${optionalString (cfg.defaultUser != null) ("focus_password yes")}
|
||||
${optionalString cfg.autoLogin "auto_login yes"}
|
||||
${optionalString (cfg.consoleCmd != null) "console_cmd ${cfg.consoleCmd}"}
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
||||
|
@ -105,6 +106,18 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
consoleCmd = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = ''
|
||||
${pkgs.xterm}/bin/xterm -C -fg white -bg black +sb -T "Console login" -e ${pkgs.shadow}/bin/login
|
||||
'';
|
||||
defaultText = ''
|
||||
''${pkgs.xterm}/bin/xterm -C -fg white -bg black +sb -T "Console login" -e ''${pkgs.shadow}/bin/login
|
||||
'';
|
||||
description = ''
|
||||
The command to run when "console" is given as the username.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
|
|
@ -28,6 +28,8 @@ def write_loader_conf(generation):
|
|||
if "@timeout@" != "":
|
||||
f.write("timeout @timeout@\n")
|
||||
f.write("default nixos-generation-%d\n" % generation)
|
||||
if not @editor@:
|
||||
f.write("editor 0");
|
||||
os.rename("@efiSysMountPoint@/loader/loader.conf.tmp", "@efiSysMountPoint@/loader/loader.conf")
|
||||
|
||||
def copy_from_profile(generation, name, dry_run=False):
|
||||
|
|
|
@ -20,6 +20,8 @@ let
|
|||
|
||||
timeout = if config.boot.loader.timeout != null then config.boot.loader.timeout else "";
|
||||
|
||||
editor = if cfg.editor then "True" else "False";
|
||||
|
||||
inherit (efi) efiSysMountPoint canTouchEfiVariables;
|
||||
};
|
||||
in {
|
||||
|
@ -36,6 +38,20 @@ in {
|
|||
|
||||
description = "Whether to enable the systemd-boot (formerly gummiboot) EFI boot manager";
|
||||
};
|
||||
|
||||
editor = mkOption {
|
||||
default = true;
|
||||
|
||||
type = types.bool;
|
||||
|
||||
description = ''
|
||||
Whether to allow editing the kernel command-line before
|
||||
boot. It is recommended to set this to false, as it allows
|
||||
gaining root access by passing init=/bin/sh as a kernel
|
||||
parameter. However, it is enabled by default for backwards
|
||||
compatibility.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
|
|
@ -1,32 +1,91 @@
|
|||
import ./make-test.nix ({ pkgs, ...} : {
|
||||
name = "simple";
|
||||
import ./make-test.nix ({ pkgs, ...} : rec {
|
||||
name = "mesos";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ offline ];
|
||||
maintainers = [ offline kamilchm cstrahan ];
|
||||
};
|
||||
|
||||
machine = { config, pkgs, ... }: {
|
||||
services.zookeeper.enable = true;
|
||||
virtualisation.docker.enable = true;
|
||||
services.mesos = {
|
||||
slave = {
|
||||
enable = true;
|
||||
master = "zk://localhost:2181/mesos";
|
||||
attributes = {
|
||||
tag1 = "foo";
|
||||
tag2 = "bar";
|
||||
};
|
||||
};
|
||||
master = {
|
||||
enable = true;
|
||||
zk = "zk://localhost:2181/mesos";
|
||||
nodes = {
|
||||
master = { config, pkgs, ... }: {
|
||||
networking.firewall.enable = false;
|
||||
services.zookeeper.enable = true;
|
||||
services.mesos.master = {
|
||||
enable = true;
|
||||
zk = "zk://master:2181/mesos";
|
||||
};
|
||||
};
|
||||
|
||||
slave = { config, pkgs, ... }: {
|
||||
networking.firewall.enable = false;
|
||||
networking.nat.enable = true;
|
||||
virtualisation.docker.enable = true;
|
||||
services.mesos = {
|
||||
slave = {
|
||||
enable = true;
|
||||
master = "master:5050";
|
||||
dockerRegistry = registry;
|
||||
executorEnvironmentVariables = {
|
||||
PATH = "/run/current-system/sw/bin";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
simpleDocker = pkgs.dockerTools.buildImage {
|
||||
name = "echo";
|
||||
contents = [ pkgs.stdenv.shellPackage pkgs.coreutils ];
|
||||
config = {
|
||||
Env = [
|
||||
# When shell=true, mesos invokes "sh -c '<cmd>'", so make sure "sh" is
|
||||
# on the PATH.
|
||||
"PATH=${pkgs.stdenv.shellPackage}/bin:${pkgs.coreutils}/bin"
|
||||
];
|
||||
Entrypoint = [ "echo" ];
|
||||
};
|
||||
};
|
||||
|
||||
registry = pkgs.runCommand "registry" { } ''
|
||||
mkdir -p $out
|
||||
cp ${simpleDocker} $out/echo:latest.tar
|
||||
'';
|
||||
|
||||
testFramework = pkgs.pythonPackages.buildPythonPackage {
|
||||
name = "mesos-tests";
|
||||
propagatedBuildInputs = [ pkgs.mesos ];
|
||||
catchConflicts = false;
|
||||
src = ./mesos_test.py;
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
installPhase = ''
|
||||
mkdir $out
|
||||
cp $src $out/mesos_test.py
|
||||
chmod +x $out/mesos_test.py
|
||||
|
||||
echo "done" > test.result
|
||||
tar czf $out/test.tar.gz test.result
|
||||
'';
|
||||
};
|
||||
|
||||
testScript =
|
||||
''
|
||||
startAll;
|
||||
$machine->waitForUnit("mesos-master.service");
|
||||
$machine->waitForUnit("mesos-slave.service");
|
||||
$master->waitForUnit("mesos-master.service");
|
||||
$slave->waitForUnit("mesos-slave.service");
|
||||
|
||||
$master->waitForOpenPort(5050);
|
||||
$slave->waitForOpenPort(5051);
|
||||
|
||||
# is slave registred?
|
||||
$master->waitUntilSucceeds("curl -s --fail http://master:5050/master/slaves".
|
||||
" | grep -q \"\\\"hostname\\\":\\\"slave\\\"\"");
|
||||
|
||||
# try to run docker image
|
||||
$master->succeed("${pkgs.mesos}/bin/mesos-execute --master=master:5050".
|
||||
" --resources=\"cpus:0.1;mem:32\" --name=simple-docker".
|
||||
" --containerizer=mesos --docker_image=echo:latest".
|
||||
" --shell=true --command=\"echo done\" | grep -q TASK_FINISHED");
|
||||
|
||||
# simple command with .tar.gz uri
|
||||
$master->succeed("${testFramework}/mesos_test.py master ".
|
||||
"${testFramework}/test.tar.gz");
|
||||
'';
|
||||
})
|
||||
|
|
72
nixos/tests/mesos_test.py
Normal file
72
nixos/tests/mesos_test.py
Normal file
|
@ -0,0 +1,72 @@
|
|||
#!/usr/bin/env python
|
||||
import uuid
|
||||
import time
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
import sys
|
||||
|
||||
from mesos.interface import Scheduler
|
||||
from mesos.native import MesosSchedulerDriver
|
||||
from mesos.interface import mesos_pb2
|
||||
|
||||
def log(msg):
|
||||
process = subprocess.Popen("systemd-cat", stdin=subprocess.PIPE)
|
||||
(out,err) = process.communicate(msg)
|
||||
|
||||
class NixosTestScheduler(Scheduler):
|
||||
def __init__(self):
|
||||
self.master_ip = sys.argv[1]
|
||||
self.download_uri = sys.argv[2]
|
||||
|
||||
def resourceOffers(self, driver, offers):
|
||||
log("XXX got resource offer")
|
||||
|
||||
offer = offers[0]
|
||||
task = self.new_task(offer)
|
||||
uri = task.command.uris.add()
|
||||
uri.value = self.download_uri
|
||||
task.command.value = "cat test.result"
|
||||
driver.launchTasks(offer.id, [task])
|
||||
|
||||
def statusUpdate(self, driver, update):
|
||||
log("XXX status update")
|
||||
if update.state == mesos_pb2.TASK_FAILED:
|
||||
log("XXX test task failed with message: " + update.message)
|
||||
driver.stop()
|
||||
sys.exit(1)
|
||||
elif update.state == mesos_pb2.TASK_FINISHED:
|
||||
driver.stop()
|
||||
sys.exit(0)
|
||||
|
||||
def new_task(self, offer):
|
||||
task = mesos_pb2.TaskInfo()
|
||||
id = uuid.uuid4()
|
||||
task.task_id.value = str(id)
|
||||
task.slave_id.value = offer.slave_id.value
|
||||
task.name = "task {}".format(str(id))
|
||||
|
||||
cpus = task.resources.add()
|
||||
cpus.name = "cpus"
|
||||
cpus.type = mesos_pb2.Value.SCALAR
|
||||
cpus.scalar.value = 0.1
|
||||
|
||||
mem = task.resources.add()
|
||||
mem.name = "mem"
|
||||
mem.type = mesos_pb2.Value.SCALAR
|
||||
mem.scalar.value = 32
|
||||
|
||||
return task
|
||||
|
||||
if __name__ == '__main__':
|
||||
log("XXX framework started")
|
||||
|
||||
framework = mesos_pb2.FrameworkInfo()
|
||||
framework.user = "root"
|
||||
framework.name = "nixos-test-framework"
|
||||
driver = MesosSchedulerDriver(
|
||||
NixosTestScheduler(),
|
||||
framework,
|
||||
sys.argv[1] + ":5050"
|
||||
)
|
||||
driver.run()
|
|
@ -1,12 +1,12 @@
|
|||
{ stdenv, fetchurl, makeWrapper, xulrunner }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2.0.18";
|
||||
version = "2.0.21";
|
||||
name = "pencil-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/prikhi/pencil/releases/download/v${version}/Pencil-${version}-linux-pkg.tar.gz";
|
||||
sha256 = "0x0kibb2na12fwl0x68xhkjpbm5h2widm346cx2r29gp1kq9kklc";
|
||||
sha256 = "0xq3gczqy7gzf1997qxdql5z7qqk1vabr0rzgakmsi4dq2q4d3kq";
|
||||
};
|
||||
|
||||
buildPhase = "";
|
||||
|
@ -32,8 +32,5 @@ stdenv.mkDerivation rec {
|
|||
license = licenses.gpl2; # Commercial license is also available
|
||||
maintainers = with maintainers; [ bjornfor prikhi ];
|
||||
platforms = platforms.linux;
|
||||
# See https://github.com/prikhi/pencil/issues/840
|
||||
# ("Error: Platform version '47.0' is not compatible with minVersion >= 36.0 maxVersion <= 46.*")
|
||||
broken = true;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,34 +1,30 @@
|
|||
{ stdenv, fetchurl, qtbase, qtsvg, qtserialport, qtwebkit, qtmultimedia
|
||||
, qttools, yacc, flex, zlib, config, qmakeHook, makeQtWrapper }:
|
||||
{ stdenv, fetchurl
|
||||
, qtbase, qtsvg, qtserialport, qtwebkit, qtmultimedia, qttools, qtconnectivity
|
||||
, yacc, flex, zlib, config, qmakeHook, makeQtWrapper
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
name = "golden-cheetah-${version}";
|
||||
version = "4.0-DEV1603";
|
||||
version = "3.4";
|
||||
src = fetchurl {
|
||||
name = "${name}.tar.gz";
|
||||
url = "https://github.com/GoldenCheetah/GoldenCheetah/archive/V${version}.tar.gz";
|
||||
sha256 = "12knlzqmq8b3nyl3kvcsnzrbjksgd83mzwzj97wccyfiffjl4wah";
|
||||
sha256 = "0fiz2pj155cd357kph50lc6rjyzwp045glfv4y68qls9j7m9ayaf";
|
||||
};
|
||||
buildInputs = [
|
||||
qtInputs = [
|
||||
qtbase qtsvg qtserialport qtwebkit qtmultimedia qttools yacc flex zlib
|
||||
qtconnectivity
|
||||
];
|
||||
nativeBuildInputs = [ makeQtWrapper qmakeHook ];
|
||||
nativeBuildInputs = [ makeQtWrapper qmakeHook ] ++ qtInputs;
|
||||
preConfigure = ''
|
||||
cp src/gcconfig.pri.in src/gcconfig.pri
|
||||
cp qwt/qwtconfig.pri.in qwt/qwtconfig.pri
|
||||
echo 'QMAKE_LRELEASE = ${qttools.dev}/bin/lrelease' >> src/gcconfig.pri
|
||||
sed -i -e '21,23d' qwt/qwtconfig.pri # Removed forced installation to /usr/local
|
||||
'';
|
||||
#postConfigure =
|
||||
# + (
|
||||
# with (config.golden-cheetah);
|
||||
# stdenv.lib.optionalString (dropbox-client-id != null && dropbox-client-secret != null) ''
|
||||
# echo 'DEFINES += GC_DROPBOX_CLIENT_ID=\\\"${config.golden-cheetah.dropbox-client-id}\\\"' >> src/gcconfig.pri
|
||||
# echo 'DEFINES += GC_DROPBOX_CLIENT_SECRET=\\\"${config.golden-cheetah.dropbox-client-secret}\\\"' >> src/gcconfig.pri
|
||||
# '');
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp src/GoldenCheetah $out/bin
|
||||
wrapQtProgram $out/bin/GoldenCheetah --set LD_LIBRARY_PATH "${zlib.out}/lib" # patchelf doesn't seem to work
|
||||
wrapQtProgram $out/bin/GoldenCheetah --set LD_LIBRARY_PATH "${zlib.out}/lib"
|
||||
'';
|
||||
meta = {
|
||||
description = "Performance software for cyclists, runners and triathletes";
|
||||
|
|
|
@ -35,6 +35,7 @@ let
|
|||
homepage = https://github.com/thestinger/termite/;
|
||||
maintainers = with maintainers; [ koral garbas ];
|
||||
platforms = platforms.all;
|
||||
broken = true;
|
||||
};
|
||||
};
|
||||
in if configFile == null then termite else symlinkJoin {
|
||||
|
|
94
pkgs/applications/networking/browsers/palemoon/default.nix
Normal file
94
pkgs/applications/networking/browsers/palemoon/default.nix
Normal file
|
@ -0,0 +1,94 @@
|
|||
{ stdenv, fetchFromGitHub, makeDesktopItem
|
||||
, pkgconfig, autoconf213, alsaLib, bzip2, cairo
|
||||
, dbus, dbus_glib, file, fontconfig, freetype
|
||||
, gstreamer, gst_plugins_base, gst_all_1
|
||||
, gtk2, hunspell, icu, libevent, libjpeg, libnotify
|
||||
, libstartup_notification, libvpx, makeWrapper, mesa
|
||||
, nspr, nss, pango, perl, python, libpulseaudio, sqlite
|
||||
, unzip, xlibs, which, yasm, zip, zlib
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "palemoon-${version}";
|
||||
version = "27.0.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
name = "palemoon-src";
|
||||
owner = "MoonchildProductions";
|
||||
repo = "Pale-Moon";
|
||||
rev = "c09119484da17c682a66e32bacbffb8cff411608";
|
||||
sha256 = "1i4hp1lz0xaryy4zpncr67gbqg8v7a2cnyqjwvs2an86rk1vg913";
|
||||
};
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "palemoon";
|
||||
exec = "palemoon %U";
|
||||
desktopName = "Pale Moon";
|
||||
genericName = "Web Browser";
|
||||
categories = "Application;Network;WebBrowser;";
|
||||
mimeType = stdenv.lib.concatStringsSep ";" [
|
||||
"text/html"
|
||||
"text/xml"
|
||||
"application/xhtml+xml"
|
||||
"application/vnd.mozilla.xul+xml"
|
||||
"x-scheme-handler/http"
|
||||
"x-scheme-handler/https"
|
||||
"x-scheme-handler/ftp"
|
||||
];
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
alsaLib bzip2 cairo dbus dbus_glib file fontconfig freetype
|
||||
gst_plugins_base gstreamer gst_all_1.gst-plugins-base gtk2
|
||||
hunspell icu libevent libjpeg libnotify libstartup_notification
|
||||
libvpx makeWrapper mesa nspr nss pango perl pkgconfig python
|
||||
libpulseaudio sqlite unzip which yasm zip zlib
|
||||
] ++ (with xlibs; [
|
||||
libX11 libXext libXft libXi libXrender libXScrnSaver
|
||||
libXt pixman scrnsaverproto xextproto
|
||||
]);
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
configurePhase = ''
|
||||
export AUTOCONF=${autoconf213}/bin/autoconf
|
||||
export MOZBUILD_STATE_PATH=$(pwd)/.mozbuild
|
||||
export MOZ_CONFIG=$(pwd)/.mozconfig
|
||||
export builddir=$(pwd)/build
|
||||
mkdir -p $MOZBUILD_STATE_PATH $builddir
|
||||
echo > $MOZ_CONFIG "
|
||||
. $src/build/mozconfig.common
|
||||
ac_add_options --prefix=$out
|
||||
ac_add_options --enable-application=browser
|
||||
ac_add_options --enable-official-branding
|
||||
ac_add_options --enable-optimize="-O2"
|
||||
ac_add_options --enable-jemalloc
|
||||
ac_add_options --enable-shared-js
|
||||
ac_add_options --disable-tests
|
||||
"
|
||||
'';
|
||||
|
||||
patchPhase = ''
|
||||
chmod u+w .
|
||||
sed -i /status4evar/d browser/installer/package-manifest.in
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
cd $builddir
|
||||
$src/mach build
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cd $builddir
|
||||
$src/mach install
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A web browser";
|
||||
homepage = https://www.palemoon.org/;
|
||||
license = licenses.mpl20;
|
||||
maintainers = with maintainers; [ rnhmjoj ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
|
||||
}
|
|
@ -15,7 +15,7 @@ assert mouseSupport -> gpm-ncurses != null;
|
|||
with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "w3m-v0.5.3+git20161120";
|
||||
name = "w3m-0.5.3+git20161120";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tats";
|
||||
|
|
|
@ -2,16 +2,27 @@
|
|||
, automake115x, libtool, unzip, gnutar, jdk, maven, python, wrapPython
|
||||
, setuptools, boto, pythonProtobuf, apr, subversion, gzip, systemd
|
||||
, leveldb, glog, perf, utillinux, libnl, iproute, openssl, libevent
|
||||
, ethtool, coreutils
|
||||
, ethtool, coreutils, which, iptables
|
||||
, bash
|
||||
}:
|
||||
|
||||
let
|
||||
mavenRepo = import ./mesos-deps.nix { inherit stdenv curl; };
|
||||
soext = if stdenv.system == "x86_64-darwin" then "dylib" else "so";
|
||||
# `tar -z` requires gzip on $PATH, so wrap tar.
|
||||
# At some point, we should try to patch mesos so we add gzip to the PATH when
|
||||
# tar is invoked. I think that only needs to be done here:
|
||||
# src/common/command_utils.cpp
|
||||
# https://github.com/NixOS/nixpkgs/issues/13783
|
||||
tarWithGzip = lib.overrideDerivation gnutar (oldAttrs: {
|
||||
buildInputs = (oldAttrs.buildInputs or []) ++ [ makeWrapper ];
|
||||
postInstall = (oldAttrs.postInstall or "") + ''
|
||||
wrapProgram $out/bin/tar --prefix PATH ":" "${gzip}/bin"
|
||||
'';
|
||||
});
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
version = "1.0.1";
|
||||
version = "1.1.0";
|
||||
name = "mesos-${version}";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
@ -19,17 +30,14 @@ in stdenv.mkDerivation rec {
|
|||
|
||||
src = fetchurl {
|
||||
url = "mirror://apache/mesos/${version}/${name}.tar.gz";
|
||||
sha256 = "1hdh2wh11ck98ycfrxfzgivgk2pjl3638vkyw14xj7faj9qxjlz0";
|
||||
sha256 = "1hdjd4syyp88l0bnh88bhzvn9466ad2ysfp9pq3kwj3qzwg5jv8g";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# https://reviews.apache.org/r/36610/
|
||||
# TODO: is this still needed?
|
||||
./rb36610.patch
|
||||
|
||||
# https://issues.apache.org/jira/browse/MESOS-6013
|
||||
./rb51324.patch
|
||||
./rb51325.patch
|
||||
|
||||
# see https://github.com/cstrahan/mesos/tree/nixos-${version}
|
||||
./nixos.patch
|
||||
];
|
||||
|
@ -46,33 +54,55 @@ in stdenv.mkDerivation rec {
|
|||
pythonProtobuf
|
||||
];
|
||||
|
||||
# note that we *must* statically link libprotobuf.
|
||||
# if we dynamically link the lib, we get these errors:
|
||||
# https://github.com/NixOS/nixpkgs/pull/19064#issuecomment-255082684
|
||||
preConfigure = ''
|
||||
substituteInPlace 3rdparty/stout/include/stout/os/posix/chown.hpp \
|
||||
--subst-var-by chown ${coreutils}/bin/chown
|
||||
|
||||
substituteInPlace 3rdparty/stout/Makefile.am \
|
||||
--replace "-lprotobuf" \
|
||||
"${pythonProtobuf.protobuf.lib}/lib/libprotobuf.a"
|
||||
|
||||
substituteInPlace 3rdparty/stout/include/stout/os/posix/fork.hpp \
|
||||
--subst-var-by sh ${bash}/bin/bash
|
||||
|
||||
substituteInPlace 3rdparty/stout/include/stout/os/posix/shell.hpp \
|
||||
--subst-var-by sh ${bash}/bin/bash
|
||||
|
||||
substituteInPlace src/Makefile.am \
|
||||
--subst-var-by mavenRepo ${mavenRepo}
|
||||
substituteInPlace 3rdparty/stout/include/stout/posix/os.hpp \
|
||||
--subst-var-by tar ${tarWithGzip}/bin/tar
|
||||
|
||||
substituteInPlace src/cli/mesos-scp \
|
||||
--subst-var-by scp ${openssh}/bin/scp
|
||||
|
||||
substituteInPlace src/common/command_utils.cpp \
|
||||
--subst-var-by curl ${curl}/bin/curl \
|
||||
--subst-var-by gzip ${gzip}/bin/gzip \
|
||||
--subst-var-by sha512sum ${coreutils}/bin/sha512sum \
|
||||
--subst-var-by tar ${tarWithGzip}/bin/tar
|
||||
|
||||
substituteInPlace src/launcher/fetcher.cpp \
|
||||
--subst-var-by cp ${coreutils}/bin/cp \
|
||||
--subst-var-by gzip ${gzip}/bin/gzip \
|
||||
--subst-var-by tar ${gnutar}/bin/tar \
|
||||
--subst-var-by tar ${tarWithGzip}/bin/tar \
|
||||
--subst-var-by unzip ${unzip}/bin/unzip
|
||||
|
||||
substituteInPlace src/python/cli/src/mesos/cli.py \
|
||||
--subst-var-by mesos-resolve $out/bin/mesos-resolve
|
||||
|
||||
substituteInPlace src/python/native_common/ext_modules.py.in \
|
||||
--replace "-lprotobuf" \
|
||||
"${pythonProtobuf.protobuf.lib}/lib/libprotobuf.a"
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/gpu/volume.cpp \
|
||||
--subst-var-by cp ${coreutils}/bin/cp \
|
||||
--subst-var-by which ${which}/bin/which
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/posix/disk.cpp \
|
||||
--subst-var-by du ${coreutils}/bin/du \
|
||||
--subst-var-by cp ${coreutils}/bin/cp
|
||||
--subst-var-by du ${coreutils}/bin/du
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/provisioner/backends/copy.cpp \
|
||||
--subst-var-by cp ${coreutils}/bin/cp
|
||||
--subst-var-by cp ${coreutils}/bin/cp \
|
||||
--subst-var-by rm ${coreutils}/bin/rm
|
||||
|
||||
substituteInPlace src/uri/fetchers/copy.cpp \
|
||||
--subst-var-by cp ${coreutils}/bin/cp
|
||||
|
@ -83,23 +113,48 @@ in stdenv.mkDerivation rec {
|
|||
substituteInPlace src/uri/fetchers/docker.cpp \
|
||||
--subst-var-by curl ${curl}/bin/curl
|
||||
|
||||
substituteInPlace src/Makefile.am \
|
||||
--subst-var-by mavenRepo ${mavenRepo} \
|
||||
--replace "-lprotobuf" \
|
||||
"${pythonProtobuf.protobuf.lib}/lib/libprotobuf.a"
|
||||
|
||||
'' + lib.optionalString stdenv.isLinux ''
|
||||
|
||||
substituteInPlace src/linux/perf.cpp \
|
||||
--subst-var-by perf ${perf}/bin/perf
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp \
|
||||
--subst-var-by mount ${utillinux}/bin/mount
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/filesystem/linux.cpp \
|
||||
--subst-var-by mount ${utillinux}/bin/mount
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/filesystem/shared.cpp \
|
||||
--subst-var-by mount ${utillinux}/bin/mount
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/gpu/isolator.cpp \
|
||||
--subst-var-by mount ${utillinux}/bin/mount
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/namespaces/pid.cpp \
|
||||
--subst-var-by mount ${utillinux}/bin/mount
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/network/cni/cni.cpp \
|
||||
--subst-var-by mount ${utillinux}/bin/mount
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp \
|
||||
--subst-var-by iptables ${iptables}/bin/iptables
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/network/port_mapping.cpp \
|
||||
--subst-var-by tc ${iproute}/bin/tc \
|
||||
--subst-var-by ethtool ${ethtool}/sbin/ethtool \
|
||||
--subst-var-by ip ${iproute}/bin/ip \
|
||||
--subst-var-by mount ${utillinux}/bin/mount \
|
||||
--subst-var-by sh ${stdenv.shell} \
|
||||
--subst-var-by ethtool ${ethtool}/sbin/ethtool
|
||||
--subst-var-by tc ${iproute}/bin/tc
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/volume/image.cpp \
|
||||
--subst-var-by mount ${utillinux}/bin/mount
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp \
|
||||
--subst-var-by mount ${utillinux}/bin/mount
|
||||
'';
|
||||
|
||||
configureFlags = [
|
||||
|
@ -108,7 +163,6 @@ in stdenv.mkDerivation rec {
|
|||
"--with-svn=${subversion.dev}"
|
||||
"--with-leveldb=${leveldb}"
|
||||
"--with-glog=${glog}"
|
||||
"--with-glog=${glog}"
|
||||
"--enable-optimize"
|
||||
"--disable-python-dependency-install"
|
||||
"--enable-ssl"
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index ae2740a..1df91a7 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -1310,7 +1310,7 @@ if HAS_JAVA
|
||||
|
||||
$(MESOS_JAR): $(MESOS_JAR_SOURCE) $(MESOS_JAR_GENERATED) java/mesos.pom
|
||||
@echo "Building mesos-$(PACKAGE_VERSION).jar ..."
|
||||
- @cd $(abs_top_builddir)/src/java && $(MVN) -f mesos.pom clean package
|
||||
+ @cd $(abs_top_builddir)/src/java && $(MVN) -f mesos.pom -Dmaven.repo.local=@mavenRepo@ clean package
|
||||
|
||||
# Convenience library for JNI bindings.
|
||||
# TODO(Charles Reiss): We really should be building the Java library
|
|
@ -1,5 +1,18 @@
|
|||
diff --git a/3rdparty/stout/include/stout/os/posix/chown.hpp b/3rdparty/stout/include/stout/os/posix/chown.hpp
|
||||
index c82e2e574..15d332107 100644
|
||||
--- a/3rdparty/stout/include/stout/os/posix/chown.hpp
|
||||
+++ b/3rdparty/stout/include/stout/os/posix/chown.hpp
|
||||
@@ -34,7 +34,7 @@ inline Try<Nothing> chown(
|
||||
// TODO(bmahler): Consider walking the file tree instead. We would need
|
||||
// to be careful to not miss dotfiles.
|
||||
std::string command =
|
||||
- "chown -R " + stringify(uid) + ':' + stringify(gid) + " '" + path + "'";
|
||||
+ "@chown@ -R " + stringify(uid) + ':' + stringify(gid) + " '" + path + "'";
|
||||
|
||||
int status = os::system(command);
|
||||
if (status != 0) {
|
||||
diff --git a/3rdparty/stout/include/stout/os/posix/fork.hpp b/3rdparty/stout/include/stout/os/posix/fork.hpp
|
||||
index a29967d..290b98b 100644
|
||||
index a29967dcb..290b98b50 100644
|
||||
--- a/3rdparty/stout/include/stout/os/posix/fork.hpp
|
||||
+++ b/3rdparty/stout/include/stout/os/posix/fork.hpp
|
||||
@@ -369,7 +369,7 @@ private:
|
||||
|
@ -11,48 +24,97 @@ index a29967d..290b98b 100644
|
|||
EXIT(EXIT_FAILURE)
|
||||
<< "Failed to execute '" << command << "': " << os::strerror(errno);
|
||||
} else if (wait.isSome()) {
|
||||
diff --git a/3rdparty/stout/include/stout/os/posix/shell.hpp b/3rdparty/stout/include/stout/os/posix/shell.hpp
|
||||
index 1d73ae5..9bf89b5 100644
|
||||
--- a/3rdparty/stout/include/stout/os/posix/shell.hpp
|
||||
+++ b/3rdparty/stout/include/stout/os/posix/shell.hpp
|
||||
@@ -37,7 +37,7 @@ namespace Shell {
|
||||
// received by the callee, usually the command name and `arg1` is the
|
||||
// second command argument received by the callee.
|
||||
|
||||
-constexpr const char* name = "sh";
|
||||
+constexpr const char* name = "@sh@";
|
||||
constexpr const char* arg0 = "sh";
|
||||
constexpr const char* arg1 = "-c";
|
||||
diff --git a/3rdparty/stout/include/stout/posix/os.hpp b/3rdparty/stout/include/stout/posix/os.hpp
|
||||
index c37e64db6..d3d87b7f0 100644
|
||||
--- a/3rdparty/stout/include/stout/posix/os.hpp
|
||||
+++ b/3rdparty/stout/include/stout/posix/os.hpp
|
||||
@@ -375,7 +375,7 @@ inline Option<std::string> getenv(const std::string& key)
|
||||
inline Try<Nothing> tar(const std::string& path, const std::string& archive)
|
||||
{
|
||||
Try<std::string> tarOut =
|
||||
- os::shell("tar %s %s %s", "-czf", archive.c_str(), path.c_str());
|
||||
+ os::shell("@tar@ %s %s %s", "-czf", archive.c_str(), path.c_str());
|
||||
|
||||
if (tarOut.isError()) {
|
||||
return Error("Failed to archive " + path + ": " + tarOut.error());
|
||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index 28dd151..36fc6ec 100644
|
||||
index 3bcc0f2df..e5cbc57e8 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -1528,7 +1528,8 @@ if HAS_JAVA
|
||||
@@ -1545,7 +1545,7 @@ if HAS_JAVA
|
||||
|
||||
$(MESOS_JAR): $(MESOS_JAR_SOURCE) $(MESOS_JAR_GENERATED) java/mesos.pom
|
||||
@echo "Building mesos-$(PACKAGE_VERSION).jar ..."
|
||||
- @cd $(abs_top_builddir)/src/java && $(MVN) -B -f mesos.pom clean package
|
||||
+ @cd $(abs_top_builddir)/src/java && $(MVN) -B -f mesos.pom -Dmaven.repo.local=@mavenRepo@ clean package
|
||||
+
|
||||
|
||||
# Convenience library for JNI bindings.
|
||||
# TODO(Charles Reiss): We really should be building the Java library
|
||||
diff --git a/src/cli/mesos-scp b/src/cli/mesos-scp
|
||||
index a71ab07..feed8c4 100755
|
||||
index a71ab0708..1043d1b3c 100755
|
||||
--- a/src/cli/mesos-scp
|
||||
+++ b/src/cli/mesos-scp
|
||||
@@ -19,7 +19,7 @@ if sys.version_info < (2,6,0):
|
||||
@@ -19,7 +19,8 @@ if sys.version_info < (2,6,0):
|
||||
|
||||
|
||||
def scp(host, src, dst):
|
||||
- cmd = 'scp -pr %s %s' % (src, host + ':' + dst)
|
||||
+ cmd = '@scp@ -pr %s %s' % (src, host + ':' + dst)
|
||||
+
|
||||
try:
|
||||
process = subprocess.Popen(
|
||||
cmd,
|
||||
diff --git a/src/common/command_utils.cpp b/src/common/command_utils.cpp
|
||||
index 09e805140..90bf65896 100644
|
||||
--- a/src/common/command_utils.cpp
|
||||
+++ b/src/common/command_utils.cpp
|
||||
@@ -140,7 +140,7 @@ Future<Nothing> tar(
|
||||
|
||||
argv.emplace_back(input);
|
||||
|
||||
- return launch("tar", argv)
|
||||
+ return launch("@tar@", argv)
|
||||
.then([]() { return Nothing(); });
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@ Future<Nothing> untar(
|
||||
argv.emplace_back(directory.get());
|
||||
}
|
||||
|
||||
- return launch("tar", argv)
|
||||
+ return launch("@tar@", argv)
|
||||
.then([]() { return Nothing(); });
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ Future<Nothing> untar(
|
||||
Future<string> sha512(const Path& input)
|
||||
{
|
||||
#ifdef __linux__
|
||||
- const string cmd = "sha512sum";
|
||||
+ const string cmd = "@sha512sum@";
|
||||
vector<string> argv = {
|
||||
cmd,
|
||||
input // Input file to compute shasum.
|
||||
@@ -206,7 +206,7 @@ Future<Nothing> gzip(const Path& input)
|
||||
input
|
||||
};
|
||||
|
||||
- return launch("gzip", argv)
|
||||
+ return launch("@gzip@", argv)
|
||||
.then([]() { return Nothing(); });
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@ Future<Nothing> decompress(const Path& input)
|
||||
input
|
||||
};
|
||||
|
||||
- return launch("gzip", argv)
|
||||
+ return launch("@gzip@", argv)
|
||||
.then([]() { return Nothing(); });
|
||||
}
|
||||
|
||||
diff --git a/src/launcher/fetcher.cpp b/src/launcher/fetcher.cpp
|
||||
index 4456c28..e22c8fc 100644
|
||||
index 4456c2813..e22c8fc03 100644
|
||||
--- a/src/launcher/fetcher.cpp
|
||||
+++ b/src/launcher/fetcher.cpp
|
||||
@@ -68,13 +68,13 @@ static Try<bool> extract(
|
||||
|
@ -82,11 +144,11 @@ index 4456c28..e22c8fc 100644
|
|||
LOG(INFO) << "Copying resource with command:" << command;
|
||||
|
||||
diff --git a/src/linux/perf.cpp b/src/linux/perf.cpp
|
||||
index ea823b3..170f54d 100644
|
||||
index aa31982eb..8b5331b17 100644
|
||||
--- a/src/linux/perf.cpp
|
||||
+++ b/src/linux/perf.cpp
|
||||
@@ -125,7 +125,7 @@ private:
|
||||
// NOTE: The watchdog process places perf in its own process group
|
||||
@@ -127,7 +127,7 @@ private:
|
||||
// NOTE: The supervisor childhook places perf in its own process group
|
||||
// and will kill the perf process when the parent dies.
|
||||
Try<Subprocess> _perf = subprocess(
|
||||
- "perf",
|
||||
|
@ -104,37 +166,51 @@ index ea823b3..170f54d 100644
|
|||
command << " --event " << event;
|
||||
}
|
||||
diff --git a/src/linux/systemd.cpp b/src/linux/systemd.cpp
|
||||
index 619aa27..c1cbfe4 100644
|
||||
index 6318f48fc..394d88d47 100644
|
||||
--- a/src/linux/systemd.cpp
|
||||
+++ b/src/linux/systemd.cpp
|
||||
@@ -196,12 +196,19 @@ bool exists()
|
||||
@@ -196,13 +196,21 @@ bool exists()
|
||||
// This is static as the init system should not change while we are running.
|
||||
static const bool exists = []() -> bool {
|
||||
// (1) Test whether `/sbin/init` links to systemd.
|
||||
- const Result<string> realpath = os::realpath("/sbin/init");
|
||||
- if (realpath.isError() || realpath.isNone()) {
|
||||
- LOG(WARNING) << "Failed to test /sbin/init for systemd environment: "
|
||||
- << realpath.error();
|
||||
- << (realpath.isError() ? realpath.error()
|
||||
- : "does not exist");
|
||||
-
|
||||
- return false;
|
||||
+ // cstrahan: first assume we're on NixOS, then try non-NixOS
|
||||
+ // cstrahan(nixos): first assume we're on NixOS, then try non-NixOS
|
||||
+ Result<string> realpath = os::realpath("/run/current-system/systemd/lib/systemd/systemd");
|
||||
+ Result<string> realpathNixOS = realpath;
|
||||
+ if (realpathNixOS.isError() || realpathNixOS.isNone()) {
|
||||
+ Result<string> realpathNonNixOS = realpath = os::realpath("/sbin/init");
|
||||
+ if (realpathNonNixOS.isError() || realpathNonNixOS.isNone()) {
|
||||
+ LOG(WARNING) << "Failed to test /run/current-system/systemd/lib/systemd/systemd for systemd environment: "
|
||||
+ << realpathNixOS.error();
|
||||
+ << (realpathNixOS.isError() ? realpathNixOS.error()
|
||||
+ : "does not exist");
|
||||
+ LOG(WARNING) << "Failed to test /sbin/init for systemd environment: "
|
||||
+ << realpathNonNixOS.error();
|
||||
+ << (realpathNonNixOS.isError() ? realpathNonNixOS.error()
|
||||
+ : "does not exist");
|
||||
+
|
||||
+ return false;
|
||||
+ }
|
||||
}
|
||||
|
||||
CHECK_SOME(realpath);
|
||||
@@ -278,6 +286,10 @@ Path hierarchy()
|
||||
|
||||
Try<Nothing> daemonReload()
|
||||
{
|
||||
+ // cstrahan(nixos): should we patch these `systemctl`s?
|
||||
+ // probably don't want to hard-code a particular systemd store path here,
|
||||
+ // but if we use /run/current-system/sw/bin/systemctl,
|
||||
+ // we won't be able to support non-NixOS distros.
|
||||
Try<string> daemonReload = os::shell("systemctl daemon-reload");
|
||||
if (daemonReload.isError()) {
|
||||
return Error("Failed to reload systemd daemon: " + daemonReload.error());
|
||||
diff --git a/src/python/cli/src/mesos/cli.py b/src/python/cli/src/mesos/cli.py
|
||||
index f342992..354abf4 100644
|
||||
index f342992e0..354abf443 100644
|
||||
--- a/src/python/cli/src/mesos/cli.py
|
||||
+++ b/src/python/cli/src/mesos/cli.py
|
||||
@@ -40,7 +40,7 @@ def resolve(master):
|
||||
|
@ -146,11 +222,70 @@ index f342992..354abf4 100644
|
|||
stdin=None,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
diff --git a/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp b/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp
|
||||
index af9f3736b..f8554d414 100644
|
||||
--- a/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp
|
||||
+++ b/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp
|
||||
@@ -499,7 +499,7 @@ Future<Option<ContainerLaunchInfo>> DockerVolumeIsolatorProcess::_prepare(
|
||||
// unsafe arbitrary commands).
|
||||
CommandInfo* command = launchInfo.add_pre_exec_commands();
|
||||
command->set_shell(false);
|
||||
- command->set_value("mount");
|
||||
+ command->set_value("@mount@");
|
||||
command->add_arguments("mount");
|
||||
command->add_arguments("-n");
|
||||
command->add_arguments("--rbind");
|
||||
diff --git a/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp b/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
|
||||
index df16b8fee..4a17475bd 100644
|
||||
--- a/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
|
||||
+++ b/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
|
||||
@@ -159,9 +159,9 @@ Try<Isolator*> LinuxFilesystemIsolatorProcess::create(const Flags& flags)
|
||||
// here because 'create' will only be invoked during
|
||||
// initialization.
|
||||
Try<string> mount = os::shell(
|
||||
- "mount --bind %s %s && "
|
||||
- "mount --make-private %s && "
|
||||
- "mount --make-shared %s",
|
||||
+ "@mount@ --bind %s %s && "
|
||||
+ "@mount@ --make-private %s && "
|
||||
+ "@mount@ --make-shared %s",
|
||||
workDir->c_str(),
|
||||
workDir->c_str(),
|
||||
workDir->c_str(),
|
||||
@@ -180,8 +180,8 @@ Try<Isolator*> LinuxFilesystemIsolatorProcess::create(const Flags& flags)
|
||||
LOG(INFO) << "Making '" << workDir.get() << "' a shared mount";
|
||||
|
||||
Try<string> mount = os::shell(
|
||||
- "mount --make-private %s && "
|
||||
- "mount --make-shared %s",
|
||||
+ "@mount@ --make-private %s && "
|
||||
+ "@mount@ --make-shared %s",
|
||||
workDir->c_str(),
|
||||
workDir->c_str());
|
||||
|
||||
@@ -404,7 +404,7 @@ Try<vector<CommandInfo>> LinuxFilesystemIsolatorProcess::getPreExecCommands(
|
||||
|
||||
CommandInfo command;
|
||||
command.set_shell(false);
|
||||
- command.set_value("mount");
|
||||
+ command.set_value("@mount@");
|
||||
command.add_arguments("mount");
|
||||
command.add_arguments("-n");
|
||||
command.add_arguments("--rbind");
|
||||
@@ -569,7 +569,7 @@ Try<vector<CommandInfo>> LinuxFilesystemIsolatorProcess::getPreExecCommands(
|
||||
// TODO(jieyu): Consider the mode in the volume.
|
||||
CommandInfo command;
|
||||
command.set_shell(false);
|
||||
- command.set_value("mount");
|
||||
+ command.set_value("@mount@");
|
||||
command.add_arguments("mount");
|
||||
command.add_arguments("-n");
|
||||
command.add_arguments("--rbind");
|
||||
diff --git a/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp b/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
|
||||
index 51d1518..783adb5 100644
|
||||
index a1283e5ee..a918427bf 100644
|
||||
--- a/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
|
||||
+++ b/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
|
||||
@@ -204,7 +204,7 @@ Future<Option<ContainerLaunchInfo>> SharedFilesystemIsolatorProcess::prepare(
|
||||
@@ -207,7 +207,7 @@ Future<Option<ContainerLaunchInfo>> SharedFilesystemIsolatorProcess::prepare(
|
||||
}
|
||||
|
||||
launchInfo.add_pre_exec_commands()->set_value(
|
||||
|
@ -159,36 +294,148 @@ index 51d1518..783adb5 100644
|
|||
}
|
||||
|
||||
return launchInfo;
|
||||
diff --git a/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp b/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
|
||||
index e3756c920..cfe458b59 100644
|
||||
--- a/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
|
||||
+++ b/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
|
||||
@@ -355,7 +355,7 @@ Future<Option<ContainerLaunchInfo>> NvidiaGpuIsolatorProcess::_prepare(
|
||||
}
|
||||
|
||||
launchInfo.add_pre_exec_commands()->set_value(
|
||||
- "mount --no-mtab --rbind --read-only " +
|
||||
+ "@mount@ --no-mtab --rbind --read-only " +
|
||||
volume.HOST_PATH() + " " + target);
|
||||
}
|
||||
|
||||
diff --git a/src/slave/containerizer/mesos/isolators/gpu/volume.cpp b/src/slave/containerizer/mesos/isolators/gpu/volume.cpp
|
||||
index 478752f37..ab527f0cd 100644
|
||||
--- a/src/slave/containerizer/mesos/isolators/gpu/volume.cpp
|
||||
+++ b/src/slave/containerizer/mesos/isolators/gpu/volume.cpp
|
||||
@@ -281,7 +281,7 @@ Try<NvidiaVolume> NvidiaVolume::create()
|
||||
string path = path::join(hostPath, "bin", binary);
|
||||
|
||||
if (!os::exists(path)) {
|
||||
- string command = "which " + binary;
|
||||
+ string command = "@which@ " + binary;
|
||||
Try<string> which = os::shell(command);
|
||||
|
||||
if (which.isSome()) {
|
||||
@@ -295,7 +295,7 @@ Try<NvidiaVolume> NvidiaVolume::create()
|
||||
: "No such file or directory"));
|
||||
}
|
||||
|
||||
- command = "cp " + realpath.get() + " " + path;
|
||||
+ command = "@cp@ " + realpath.get() + " " + path;
|
||||
Try<string> cp = os::shell(command);
|
||||
if (cp.isError()) {
|
||||
return Error("Failed to os::shell '" + command + "': " + cp.error());
|
||||
@@ -367,7 +367,7 @@ Try<NvidiaVolume> NvidiaVolume::create()
|
||||
Path(realpath.get()).basename());
|
||||
|
||||
if (!os::exists(libraryPath)) {
|
||||
- string command = "cp " + realpath.get() + " " + libraryPath;
|
||||
+ string command = "@cp@ " + realpath.get() + " " + libraryPath;
|
||||
Try<string> cp = os::shell(command);
|
||||
if (cp.isError()) {
|
||||
return Error("Failed to os::shell '" + command + "':"
|
||||
diff --git a/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp b/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
|
||||
index b41e266..e07c163 100644
|
||||
index 0d9ec57d9..a177e4476 100644
|
||||
--- a/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
|
||||
+++ b/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
|
||||
@@ -163,7 +163,7 @@ Future<Option<ContainerLaunchInfo>> NamespacesPidIsolatorProcess::prepare(
|
||||
// containers cannot see the namespace bind mount of other
|
||||
// containers.
|
||||
launchInfo.add_pre_exec_commands()->set_value(
|
||||
- "mount -n --bind " + string(PID_NS_BIND_MOUNT_MASK_DIR) +
|
||||
+ "@mount@ -n --bind " + string(PID_NS_BIND_MOUNT_MASK_DIR) +
|
||||
" " + string(PID_NS_BIND_MOUNT_ROOT));
|
||||
|
||||
// Mount /proc for the container's pid namespace to show the
|
||||
@@ -176,9 +176,9 @@ Future<Option<ContainerLaunchInfo>> NamespacesPidIsolatorProcess::prepare(
|
||||
// -n flag so the mount is not added to the mtab where it will not
|
||||
// be correctly removed with the namespace terminates.
|
||||
launchInfo.add_pre_exec_commands()->set_value(
|
||||
- "mount none /proc --make-private -o rec");
|
||||
+ "@mount@ none /proc --make-private -o rec");
|
||||
@@ -94,7 +94,7 @@ Future<Option<ContainerLaunchInfo>> NamespacesPidIsolatorProcess::prepare(
|
||||
//
|
||||
// TOOD(jieyu): Consider unmount the existing /proc.
|
||||
launchInfo.add_pre_exec_commands()->set_value(
|
||||
- "mount -n -t proc proc /proc -o nosuid,noexec,nodev");
|
||||
+ "@mount@ -n -t proc proc /proc -o nosuid,noexec,nodev");
|
||||
|
||||
return launchInfo;
|
||||
}
|
||||
diff --git a/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp b/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
|
||||
index c87e6715a..6601cd1b3 100644
|
||||
--- a/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
|
||||
+++ b/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
|
||||
@@ -262,9 +262,9 @@ Try<Isolator*> NetworkCniIsolatorProcess::create(const Flags& flags)
|
||||
// here because 'create' will only be invoked during
|
||||
// initialization.
|
||||
Try<string> mount = os::shell(
|
||||
- "mount --bind %s %s && "
|
||||
- "mount --make-private %s && "
|
||||
- "mount --make-shared %s",
|
||||
+ "@mount@ --bind %s %s && "
|
||||
+ "@mount@ --make-private %s && "
|
||||
+ "@mount@ --make-shared %s",
|
||||
rootDir->c_str(),
|
||||
rootDir->c_str(),
|
||||
rootDir->c_str(),
|
||||
@@ -284,8 +284,8 @@ Try<Isolator*> NetworkCniIsolatorProcess::create(const Flags& flags)
|
||||
LOG(INFO) << "Making '" << rootDir.get() << "' a shared mount";
|
||||
|
||||
Try<string> mount = os::shell(
|
||||
- "mount --make-private %s && "
|
||||
- "mount --make-shared %s",
|
||||
+ "@mount@ --make-private %s && "
|
||||
+ "@mount@ --make-shared %s",
|
||||
rootDir->c_str(),
|
||||
rootDir->c_str());
|
||||
|
||||
diff --git a/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp b/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp
|
||||
index b470f0c82..6110a43ee 100644
|
||||
--- a/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp
|
||||
+++ b/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp
|
||||
@@ -303,7 +303,7 @@ Try<Nothing> PortMapper::addPortMapping(
|
||||
# Check if the `chain` exists in the iptable. If it does not
|
||||
# exist go ahead and install the chain in the iptables NAT
|
||||
# table.
|
||||
- iptables -w -t nat --list %s
|
||||
+ @iptables@ -w -t nat --list %s
|
||||
if [ $? -ne 0 ]; then
|
||||
# NOTE: When we create the chain, there is a possibility of a
|
||||
# race due to which a container launch can fail. This can
|
||||
@@ -317,25 +317,25 @@ Try<Nothing> PortMapper::addPortMapping(
|
||||
# since it can happen only when the chain is created the first
|
||||
# time and two commands for creation of the chain are executed
|
||||
# simultaneously.
|
||||
- (iptables -w -t nat -N %s || exit 1)
|
||||
+ (@iptables@ -w -t nat -N %s || exit 1)
|
||||
|
||||
# Once the chain has been installed add a rule in the PREROUTING
|
||||
# chain to jump to this chain for any packets that are
|
||||
# destined to a local address.
|
||||
- (iptables -w -t nat -A PREROUTING \
|
||||
+ (@iptables@ -w -t nat -A PREROUTING \
|
||||
-m addrtype --dst-type LOCAL -j %s || exit 1)
|
||||
|
||||
# For locally generated packets we need a rule in the OUTPUT
|
||||
# chain as well, since locally generated packets directly hit
|
||||
# the output CHAIN, bypassing PREROUTING.
|
||||
- (iptables -w -t nat -A OUTPUT \
|
||||
+ (@iptables@ -w -t nat -A OUTPUT \
|
||||
! -d 127.0.0.0/8 -m addrtype \
|
||||
--dst-type LOCAL -j %s || exit 1)
|
||||
fi
|
||||
|
||||
# Within the `chain` go ahead and install the DNAT rule, if it
|
||||
# does not exist.
|
||||
- (iptables -w -t nat -C %s || iptables -t nat -A %s))~",
|
||||
+ (@iptables@ -w -t nat -C %s || @iptables@ -t nat -A %s))~",
|
||||
chain,
|
||||
chain,
|
||||
chain,
|
||||
@@ -362,7 +362,7 @@ Try<Nothing> PortMapper::delPortMapping()
|
||||
# The iptables command searches for the DNAT rules with tag
|
||||
# "container_id: <CNI_CONTAINERID>", and if it exists goes ahead
|
||||
# and deletes it.
|
||||
- iptables -w -t nat -S %s | sed "/%s/ s/-A/iptables -w -t nat -D/e")~",
|
||||
+ @iptables@ -w -t nat -S %s | sed "/%s/ s/-A/@iptables@ -w -t nat -D/e")~",
|
||||
chain,
|
||||
getIptablesRuleTag()).get();
|
||||
|
||||
diff --git a/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp b/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
|
||||
index 79ee960..d55a353 100644
|
||||
index 20fb6ab35..46c160977 100644
|
||||
--- a/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
|
||||
+++ b/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
|
||||
@@ -1392,19 +1392,19 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
|
||||
@@ -1393,19 +1393,19 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
|
||||
// Check the availability of a few Linux commands that we will use.
|
||||
// We use the blocking os::shell here because 'create' will only be
|
||||
// invoked during initialization.
|
||||
|
@ -211,7 +458,7 @@ index 79ee960..d55a353 100644
|
|||
if (checkCommandIp.isError()) {
|
||||
return Error("Check command 'ip' failed: " + checkCommandIp.error());
|
||||
}
|
||||
@@ -1924,9 +1924,9 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
|
||||
@@ -1925,9 +1925,9 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
|
||||
// visible. It's OK to use the blocking os::shell here because
|
||||
// 'create' will only be invoked during initialization.
|
||||
Try<string> mount = os::shell(
|
||||
|
@ -224,7 +471,7 @@ index 79ee960..d55a353 100644
|
|||
bindMountRoot->c_str(),
|
||||
bindMountRoot->c_str(),
|
||||
bindMountRoot->c_str(),
|
||||
@@ -1943,8 +1943,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
|
||||
@@ -1944,8 +1944,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
|
||||
// shared mount yet (possibly due to slave crash while preparing
|
||||
// the work directory mount). It's safe to re-do the following.
|
||||
Try<string> mount = os::shell(
|
||||
|
@ -235,7 +482,7 @@ index 79ee960..d55a353 100644
|
|||
bindMountRoot->c_str(),
|
||||
bindMountRoot->c_str());
|
||||
|
||||
@@ -1963,8 +1963,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
|
||||
@@ -1964,8 +1964,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
|
||||
// so that they are in different peer groups.
|
||||
if (entry.shared() == bindMountEntry->shared()) {
|
||||
Try<string> mount = os::shell(
|
||||
|
@ -246,14 +493,16 @@ index 79ee960..d55a353 100644
|
|||
bindMountRoot->c_str(),
|
||||
bindMountRoot->c_str());
|
||||
|
||||
@@ -3916,13 +3916,13 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
@@ -3911,6 +3911,8 @@ Try<Nothing> PortMappingIsolatorProcess::removeHostIPFilters(
|
||||
// TODO(jieyu): Use the Subcommand abstraction to remove most of the
|
||||
// logic here. Completely remove this function once we can assume a
|
||||
// newer kernel where 'setns' works for mount namespaces.
|
||||
+// cstrahan(nixos): this is executed in the container,
|
||||
+// so we don't want to substitute paths here.
|
||||
string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
{
|
||||
ostringstream script;
|
||||
|
||||
- script << "#!/bin/sh\n";
|
||||
+ script << "#!@sh@\n";
|
||||
script << "set -xe\n";
|
||||
|
||||
@@ -3921,7 +3923,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
// Mark the mount point PORT_MAPPING_BIND_MOUNT_ROOT() as slave
|
||||
// mount so that changes in the container will not be propagated to
|
||||
// the host.
|
||||
|
@ -262,7 +511,7 @@ index 79ee960..d55a353 100644
|
|||
|
||||
// Disable IPv6 when IPv6 module is loaded as IPv6 packets won't be
|
||||
// forwarded anyway.
|
||||
@@ -3930,7 +3930,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
@@ -3929,7 +3931,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
<< " echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6\n";
|
||||
|
||||
// Configure lo and eth0.
|
||||
|
@ -271,7 +520,7 @@ index 79ee960..d55a353 100644
|
|||
<< " mtu " << hostEth0MTU << " up\n";
|
||||
|
||||
// NOTE: This is mostly a kernel issue: in veth_xmit() the kernel
|
||||
@@ -3939,12 +3939,12 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
@@ -3938,12 +3940,12 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
// when we receive a packet with a bad checksum. Disabling rx
|
||||
// checksum offloading ensures the TCP layer will checksum and drop
|
||||
// it.
|
||||
|
@ -288,7 +537,7 @@ index 79ee960..d55a353 100644
|
|||
|
||||
// Restrict the ephemeral ports that can be used by the container.
|
||||
script << "echo " << info->ephemeralPorts.lower() << " "
|
||||
@@ -3973,19 +3973,19 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
@@ -3972,19 +3974,19 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
}
|
||||
|
||||
// Set up filters on lo and eth0.
|
||||
|
@ -312,7 +561,7 @@ index 79ee960..d55a353 100644
|
|||
<< " protocol ip"
|
||||
<< " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
|
||||
<< " flowid ffff:0"
|
||||
@@ -3996,7 +3996,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
@@ -3995,7 +3997,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
foreach (const PortRange& range,
|
||||
getPortRanges(info->nonEphemeralPorts + info->ephemeralPorts)) {
|
||||
// Local traffic inside a container will not be redirected to eth0.
|
||||
|
@ -321,7 +570,7 @@ index 79ee960..d55a353 100644
|
|||
<< " protocol ip"
|
||||
<< " prio " << Priority(IP_FILTER_PRIORITY, HIGH).get() << " u32"
|
||||
<< " flowid ffff:0"
|
||||
@@ -4005,7 +4005,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
@@ -4004,7 +4006,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
|
||||
// Traffic going to host loopback IP and ports assigned to this
|
||||
// container will be redirected to lo.
|
||||
|
@ -330,7 +579,7 @@ index 79ee960..d55a353 100644
|
|||
<< " protocol ip"
|
||||
<< " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
|
||||
<< " flowid ffff:0"
|
||||
@@ -4017,14 +4017,14 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
@@ -4016,14 +4018,14 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
}
|
||||
|
||||
// Do not forward the ICMP packet if the destination IP is self.
|
||||
|
@ -347,7 +596,7 @@ index 79ee960..d55a353 100644
|
|||
<< " protocol ip"
|
||||
<< " prio " << Priority(ICMP_FILTER_PRIORITY, NORMAL).get() << " u32"
|
||||
<< " flowid ffff:0"
|
||||
@@ -4033,9 +4033,9 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
@@ -4032,9 +4034,9 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
<< net::IPNetwork::LOOPBACK_V4().address() << "\n";
|
||||
|
||||
// Display the filters created on eth0 and lo.
|
||||
|
@ -359,7 +608,7 @@ index 79ee960..d55a353 100644
|
|||
<< " parent " << ingress::HANDLE << "\n";
|
||||
|
||||
// If throughput limit for container egress traffic exists, use HTB
|
||||
@@ -4047,9 +4047,9 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
@@ -4046,9 +4048,9 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
// throughput. TBF requires other parameters such as 'burst' that
|
||||
// HTB already has default values for.
|
||||
if (egressRateLimitPerContainer.isSome()) {
|
||||
|
@ -371,12 +620,12 @@ index 79ee960..d55a353 100644
|
|||
<< CONTAINER_TX_HTB_HANDLE << " classid "
|
||||
<< CONTAINER_TX_HTB_CLASS_ID << " htb rate "
|
||||
<< egressRateLimitPerContainer.get().bytes() * 8 << "bit\n";
|
||||
@@ -4060,12 +4060,12 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
@@ -4059,12 +4061,12 @@ string PortMappingIsolatorProcess::scripts(Info* info)
|
||||
// fq_codel, which has a larger buffer and better control on
|
||||
// buffer bloat.
|
||||
// TODO(cwang): Verity that fq_codel qdisc is available.
|
||||
- script << "tc qdisc add dev " << eth0
|
||||
+ script << "@tC@ qdisc add dev " << eth0
|
||||
+ script << "@tc@ qdisc add dev " << eth0
|
||||
<< " parent " << CONTAINER_TX_HTB_CLASS_ID << " fq_codel\n";
|
||||
|
||||
// Display the htb qdisc and class created on eth0.
|
||||
|
@ -388,11 +637,11 @@ index 79ee960..d55a353 100644
|
|||
|
||||
return script.str();
|
||||
diff --git a/src/slave/containerizer/mesos/isolators/posix/disk.cpp b/src/slave/containerizer/mesos/isolators/posix/disk.cpp
|
||||
index 3dfe7ad..4288666 100644
|
||||
index db0583386..542586370 100644
|
||||
--- a/src/slave/containerizer/mesos/isolators/posix/disk.cpp
|
||||
+++ b/src/slave/containerizer/mesos/isolators/posix/disk.cpp
|
||||
@@ -492,7 +492,7 @@ private:
|
||||
// NOTE: The monitor watchdog will watch the parent process and kill
|
||||
@@ -540,7 +540,7 @@ private:
|
||||
// NOTE: The supervisor childhook will watch the parent process and kill
|
||||
// the 'du' process in case that the parent die.
|
||||
Try<Subprocess> s = subprocess(
|
||||
- "du",
|
||||
|
@ -400,11 +649,37 @@ index 3dfe7ad..4288666 100644
|
|||
command,
|
||||
Subprocess::PATH("/dev/null"),
|
||||
Subprocess::PIPE(),
|
||||
diff --git a/src/slave/containerizer/mesos/isolators/volume/image.cpp b/src/slave/containerizer/mesos/isolators/volume/image.cpp
|
||||
index 210e67ad0..60b3a15e4 100644
|
||||
--- a/src/slave/containerizer/mesos/isolators/volume/image.cpp
|
||||
+++ b/src/slave/containerizer/mesos/isolators/volume/image.cpp
|
||||
@@ -214,7 +214,7 @@ Future<Option<ContainerLaunchInfo>> VolumeImageIsolatorProcess::_prepare(
|
||||
|
||||
CommandInfo* command = launchInfo.add_pre_exec_commands();
|
||||
command->set_shell(false);
|
||||
- command->set_value("mount");
|
||||
+ command->set_value("@mount@");
|
||||
command->add_arguments("mount");
|
||||
command->add_arguments("-n");
|
||||
command->add_arguments("--rbind");
|
||||
diff --git a/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp b/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp
|
||||
index 7b976d292..474dcd486 100644
|
||||
--- a/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp
|
||||
+++ b/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp
|
||||
@@ -240,7 +240,7 @@ Future<Option<ContainerLaunchInfo>> VolumeSandboxPathIsolatorProcess::prepare(
|
||||
|
||||
CommandInfo* command = launchInfo.add_pre_exec_commands();
|
||||
command->set_shell(false);
|
||||
- command->set_value("mount");
|
||||
+ command->set_value("@mount@");
|
||||
command->add_arguments("mount");
|
||||
command->add_arguments("-n");
|
||||
command->add_arguments("--rbind");
|
||||
diff --git a/src/slave/containerizer/mesos/provisioner/backends/copy.cpp b/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
|
||||
index b9f6d7a..0fcf455 100644
|
||||
index 9c5354e5f..a73a9692e 100644
|
||||
--- a/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
|
||||
+++ b/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
|
||||
@@ -141,7 +141,7 @@ Future<Nothing> CopyBackendProcess::_provision(
|
||||
@@ -147,7 +147,7 @@ Future<Nothing> CopyBackendProcess::_provision(
|
||||
#endif // __APPLE__ || __FreeBSD__
|
||||
|
||||
Try<Subprocess> s = subprocess(
|
||||
|
@ -413,11 +688,20 @@ index b9f6d7a..0fcf455 100644
|
|||
args,
|
||||
Subprocess::PATH("/dev/null"),
|
||||
Subprocess::PATH("/dev/null"),
|
||||
@@ -180,7 +180,7 @@ Future<bool> CopyBackendProcess::destroy(const string& rootfs)
|
||||
vector<string> argv{"rm", "-rf", rootfs};
|
||||
|
||||
Try<Subprocess> s = subprocess(
|
||||
- "rm",
|
||||
+ "@rm@",
|
||||
argv,
|
||||
Subprocess::PATH("/dev/null"),
|
||||
Subprocess::FD(STDOUT_FILENO),
|
||||
diff --git a/src/uri/fetchers/copy.cpp b/src/uri/fetchers/copy.cpp
|
||||
index f095ad6..ee0c2a7 100644
|
||||
index 2cfef5ab0..8a62f7699 100644
|
||||
--- a/src/uri/fetchers/copy.cpp
|
||||
+++ b/src/uri/fetchers/copy.cpp
|
||||
@@ -88,7 +88,7 @@ Future<Nothing> CopyFetcherPlugin::fetch(
|
||||
@@ -97,7 +97,7 @@ Future<Nothing> CopyFetcherPlugin::fetch(
|
||||
const vector<string> argv = {"cp", "-a", uri.path(), directory};
|
||||
|
||||
Try<Subprocess> s = subprocess(
|
||||
|
@ -427,10 +711,10 @@ index f095ad6..ee0c2a7 100644
|
|||
Subprocess::PATH("/dev/null"),
|
||||
Subprocess::PIPE(),
|
||||
diff --git a/src/uri/fetchers/curl.cpp b/src/uri/fetchers/curl.cpp
|
||||
index cc3f9ee..691d2d9 100644
|
||||
index 7b746d619..12bbb04df 100644
|
||||
--- a/src/uri/fetchers/curl.cpp
|
||||
+++ b/src/uri/fetchers/curl.cpp
|
||||
@@ -98,7 +98,7 @@ Future<Nothing> CurlFetcherPlugin::fetch(
|
||||
@@ -107,7 +107,7 @@ Future<Nothing> CurlFetcherPlugin::fetch(
|
||||
};
|
||||
|
||||
Try<Subprocess> s = subprocess(
|
||||
|
@ -440,10 +724,10 @@ index cc3f9ee..691d2d9 100644
|
|||
Subprocess::PATH("/dev/null"),
|
||||
Subprocess::PIPE(),
|
||||
diff --git a/src/uri/fetchers/docker.cpp b/src/uri/fetchers/docker.cpp
|
||||
index 211be6f..d7e3771 100644
|
||||
index 3f38dddfb..fd991ee74 100644
|
||||
--- a/src/uri/fetchers/docker.cpp
|
||||
+++ b/src/uri/fetchers/docker.cpp
|
||||
@@ -113,7 +113,7 @@ static Future<http::Response> curl(
|
||||
@@ -114,7 +114,7 @@ static Future<http::Response> curl(
|
||||
|
||||
// TODO(jieyu): Kill the process if discard is called.
|
||||
Try<Subprocess> s = subprocess(
|
||||
|
@ -452,7 +736,7 @@ index 211be6f..d7e3771 100644
|
|||
argv,
|
||||
Subprocess::PATH("/dev/null"),
|
||||
Subprocess::PIPE(),
|
||||
@@ -212,7 +212,7 @@ static Future<int> download(
|
||||
@@ -213,7 +213,7 @@ static Future<int> download(
|
||||
|
||||
// TODO(jieyu): Kill the process if discard is called.
|
||||
Try<Subprocess> s = subprocess(
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
diff --git a/src/linux/fs.cpp b/src/linux/fs.cpp
|
||||
index ea0891e320154b85a21ed2d138c192821efae9cd..7b24c377c9a28cad91738305c273fb53a4dc7365 100644
|
||||
index 913e233..c2917a6 100644
|
||||
--- a/src/linux/fs.cpp
|
||||
+++ b/src/linux/fs.cpp
|
||||
@@ -19,6 +19,7 @@
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
+#include <syscall.h>
|
||||
|
||||
|
||||
#include <linux/limits.h>
|
||||
#include <linux/unistd.h>
|
||||
|
|
|
@ -1,71 +0,0 @@
|
|||
diff --git a/3rdparty/stout/include/stout/os/ls.hpp b/3rdparty/stout/include/stout/os/ls.hpp
|
||||
index f8da9ef..6d549d3 100644
|
||||
--- a/3rdparty/stout/include/stout/os/ls.hpp
|
||||
+++ b/3rdparty/stout/include/stout/os/ls.hpp
|
||||
@@ -18,6 +18,7 @@
|
||||
#else
|
||||
#include <dirent.h>
|
||||
#endif // __WINDOWS__
|
||||
+
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <list>
|
||||
@@ -26,8 +27,6 @@
|
||||
#include <stout/error.hpp>
|
||||
#include <stout/try.hpp>
|
||||
|
||||
-#include <stout/os/direntsize.hpp>
|
||||
-
|
||||
|
||||
namespace os {
|
||||
|
||||
@@ -36,36 +35,32 @@ inline Try<std::list<std::string>> ls(const std::string& directory)
|
||||
DIR* dir = opendir(directory.c_str());
|
||||
|
||||
if (dir == nullptr) {
|
||||
- // Preserve `opendir` error.
|
||||
return ErrnoError("Failed to opendir '" + directory + "'");
|
||||
}
|
||||
|
||||
- dirent* temp = (dirent*) malloc(os::dirent_size(dir));
|
||||
-
|
||||
- if (temp == nullptr) {
|
||||
- // Preserve `malloc` error.
|
||||
- ErrnoError error("Failed to allocate directory entries");
|
||||
- closedir(dir);
|
||||
- return error;
|
||||
- }
|
||||
-
|
||||
std::list<std::string> result;
|
||||
struct dirent* entry;
|
||||
- int error;
|
||||
|
||||
- while ((error = readdir_r(dir, temp, &entry)) == 0 && entry != nullptr) {
|
||||
+ // Zero `errno` before starting to call `readdir`. This is necessary
|
||||
+ // to allow us to determine when `readdir` returns an error.
|
||||
+ errno = 0;
|
||||
+
|
||||
+ while ((entry = readdir(dir)) != NULL) {
|
||||
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
|
||||
continue;
|
||||
}
|
||||
result.push_back(entry->d_name);
|
||||
}
|
||||
|
||||
- free(temp);
|
||||
- closedir(dir);
|
||||
+ if (errno != 0) {
|
||||
+ // Preserve `readdir` error.
|
||||
+ Error error = ErrnoError("Failed to read directory");
|
||||
+ closedir(dir);
|
||||
+ return error;
|
||||
+ }
|
||||
|
||||
- if (error != 0) {
|
||||
- // Preserve `readdir_r` error.
|
||||
- return ErrnoError("Failed to read directories");
|
||||
+ if (closedir(dir) == -1) {
|
||||
+ return ErrnoError("Failed to close directory");
|
||||
}
|
||||
|
||||
return result;
|
|
@ -1,157 +0,0 @@
|
|||
diff --git a/3rdparty/stout/include/Makefile.am b/3rdparty/stout/include/Makefile.am
|
||||
index 1f2ee85..b0b08d8 100644
|
||||
--- a/3rdparty/stout/include/Makefile.am
|
||||
+++ b/3rdparty/stout/include/Makefile.am
|
||||
@@ -64,7 +64,6 @@ nobase_include_HEADERS = \
|
||||
stout/os/chroot.hpp \
|
||||
stout/os/close.hpp \
|
||||
stout/os/constants.hpp \
|
||||
- stout/os/direntsize.hpp \
|
||||
stout/os/environment.hpp \
|
||||
stout/os/exists.hpp \
|
||||
stout/os/fcntl.hpp \
|
||||
@@ -108,7 +107,6 @@ nobase_include_HEADERS = \
|
||||
stout/os/posix/chown.hpp \
|
||||
stout/os/posix/chroot.hpp \
|
||||
stout/os/posix/close.hpp \
|
||||
- stout/os/posix/direntsize.hpp \
|
||||
stout/os/posix/exists.hpp \
|
||||
stout/os/posix/fcntl.hpp \
|
||||
stout/os/posix/fork.hpp \
|
||||
@@ -134,7 +132,6 @@ nobase_include_HEADERS = \
|
||||
stout/os/windows/bootid.hpp \
|
||||
stout/os/windows/chroot.hpp \
|
||||
stout/os/windows/close.hpp \
|
||||
- stout/os/windows/direntsize.hpp \
|
||||
stout/os/windows/exists.hpp \
|
||||
stout/os/windows/fcntl.hpp \
|
||||
stout/os/windows/fork.hpp \
|
||||
diff --git a/3rdparty/stout/include/stout/os/direntsize.hpp b/3rdparty/stout/include/stout/os/direntsize.hpp
|
||||
deleted file mode 100644
|
||||
index 819f99a..0000000
|
||||
--- a/3rdparty/stout/include/stout/os/direntsize.hpp
|
||||
+++ /dev/null
|
||||
@@ -1,26 +0,0 @@
|
||||
-// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
-// you may not use this file except in compliance with the License.
|
||||
-// You may obtain a copy of the License at
|
||||
-//
|
||||
-// http://www.apache.org/licenses/LICENSE-2.0
|
||||
-//
|
||||
-// Unless required by applicable law or agreed to in writing, software
|
||||
-// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
-// See the License for the specific language governing permissions and
|
||||
-// limitations under the License.
|
||||
-
|
||||
-#ifndef __STOUT_OS_DIRENTSIZE_HPP__
|
||||
-#define __STOUT_OS_DIRENTSIZE_HPP__
|
||||
-
|
||||
-
|
||||
-// For readability, we minimize the number of #ifdef blocks in the code by
|
||||
-// splitting platform specifc system calls into separate directories.
|
||||
-#ifdef __WINDOWS__
|
||||
-#include <stout/os/windows/direntsize.hpp>
|
||||
-#else
|
||||
-#include <stout/os/posix/direntsize.hpp>
|
||||
-#endif // __WINDOWS__
|
||||
-
|
||||
-
|
||||
-#endif // __STOUT_OS_DIRENTSIZE_HPP__
|
||||
diff --git a/3rdparty/stout/include/stout/os/posix/direntsize.hpp b/3rdparty/stout/include/stout/os/posix/direntsize.hpp
|
||||
deleted file mode 100644
|
||||
index 9d8f72e..0000000
|
||||
--- a/3rdparty/stout/include/stout/os/posix/direntsize.hpp
|
||||
+++ /dev/null
|
||||
@@ -1,42 +0,0 @@
|
||||
-// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
-// you may not use this file except in compliance with the License.
|
||||
-// You may obtain a copy of the License at
|
||||
-//
|
||||
-// http://www.apache.org/licenses/LICENSE-2.0
|
||||
-//
|
||||
-// Unless required by applicable law or agreed to in writing, software
|
||||
-// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
-// See the License for the specific language governing permissions and
|
||||
-// limitations under the License.
|
||||
-
|
||||
-#ifndef __STOUT_OS_POSIX_DIRENTSIZE_HPP__
|
||||
-#define __STOUT_OS_POSIX_DIRENTSIZE_HPP__
|
||||
-
|
||||
-#include <dirent.h>
|
||||
-#include <unistd.h>
|
||||
-
|
||||
-
|
||||
-namespace os {
|
||||
-
|
||||
-inline size_t dirent_size(DIR* dir)
|
||||
-{
|
||||
- // Calculate the size for a "directory entry".
|
||||
- long name_max = fpathconf(dirfd(dir), _PC_NAME_MAX);
|
||||
-
|
||||
- // If we don't get a valid size, check NAME_MAX, but fall back on
|
||||
- // 255 in the worst case ... Danger, Will Robinson!
|
||||
- if (name_max == -1) {
|
||||
- name_max = (NAME_MAX > 255) ? NAME_MAX : 255;
|
||||
- }
|
||||
-
|
||||
- size_t name_end = (size_t) offsetof(dirent, d_name) + name_max + 1;
|
||||
-
|
||||
- size_t size = (name_end > sizeof(dirent) ? name_end : sizeof(dirent));
|
||||
-
|
||||
- return size;
|
||||
-}
|
||||
-
|
||||
-} // namespace os {
|
||||
-
|
||||
-#endif // __STOUT_OS_POSIX_DIRENTSIZE_HPP__
|
||||
diff --git a/3rdparty/stout/include/stout/os/windows/direntsize.hpp b/3rdparty/stout/include/stout/os/windows/direntsize.hpp
|
||||
deleted file mode 100644
|
||||
index 7c8c7a0..0000000
|
||||
--- a/3rdparty/stout/include/stout/os/windows/direntsize.hpp
|
||||
+++ /dev/null
|
||||
@@ -1,43 +0,0 @@
|
||||
-// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
-// you may not use this file except in compliance with the License.
|
||||
-// You may obtain a copy of the License at
|
||||
-//
|
||||
-// http://www.apache.org/licenses/LICENSE-2.0
|
||||
-//
|
||||
-// Unless required by applicable law or agreed to in writing, software
|
||||
-// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
-// See the License for the specific language governing permissions and
|
||||
-// limitations under the License.
|
||||
-
|
||||
-#ifndef __STOUT_OS_WINDOWS_DIRENTSIZE_HPP__
|
||||
-#define __STOUT_OS_WINDOWS_DIRENTSIZE_HPP__
|
||||
-
|
||||
-#include <stout/internal/windows/dirent.hpp>
|
||||
-
|
||||
-#include <stout/windows.hpp>
|
||||
-
|
||||
-
|
||||
-namespace os {
|
||||
-
|
||||
-inline size_t dirent_size(DIR* dir)
|
||||
-{
|
||||
- // NOTE: Size calculation logic here is much simpler than on POSIX because
|
||||
- // our implementation of `dirent` is constant-sized. In particular, on POSIX,
|
||||
- // we usually have to calculate the maximum name size for a path before we
|
||||
- // can alloc a correctly-size `dirent`, but on Windows, `dirent.d_name` is
|
||||
- // always `MAX_PATH` bytes in size.
|
||||
- //
|
||||
- // This follows closely from the Windows standard API data structures for
|
||||
- // manipulating and querying directories. For example, the structures
|
||||
- // `WIN32_FIND_DATA`[1] (which in many ways is the Windows equivalent of
|
||||
- // `dirent`) has a field `cFileName` (which is much like `d_name`) that is
|
||||
- // also `MAX_PATH` in size.
|
||||
- //
|
||||
- // [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa365740(v=vs.85).aspx
|
||||
- return sizeof(dirent);
|
||||
-}
|
||||
-
|
||||
-} // namespace os {
|
||||
-
|
||||
-#endif // __STOUT_OS_WINDOWS_DIRENTSIZE_HPP__
|
|
@ -1,13 +1,13 @@
|
|||
{ stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext
|
||||
, pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla, nettle }:
|
||||
|
||||
let version = "3.23.0.2"; in
|
||||
let version = "3.24.0"; in
|
||||
stdenv.mkDerivation {
|
||||
name = "filezilla-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
|
||||
sha256 = "0bq22nq2g1b0x5msm9if74ync2qk13n2782mwj2r1r7hsmx4liiz";
|
||||
sha256 = "1bacrl8lj90hqbh129hpbgqj78k1i84j83rkzn507jnykj4x8p9x";
|
||||
};
|
||||
|
||||
configureFlags = [
|
||||
|
|
|
@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
|
|||
patches = [
|
||||
(fetchurl {
|
||||
name = "gajim-icon-index.patch";
|
||||
url = "http://hg.gajim.org/gajim/raw-rev/b9ec78663dfb";
|
||||
url = "https://dev.gajim.org/gajim/gajim/commit/7d20ed2b98a3070add188efab7308a5a06d9f4a2.diff";
|
||||
sha256 = "0w54hr5dq9y36val55kmh8d6cid7h4fs2nghx09714jylz2nyxxv";
|
||||
})
|
||||
];
|
||||
|
|
|
@ -13,6 +13,8 @@ stdenv.mkDerivation rec {
|
|||
sha256 = "0h7wdsic4v6ys130w61zvxm5s2vc7y574hn7zby12rq88lhhrjh7";
|
||||
};
|
||||
|
||||
patches = [ ./uchar.patch ];
|
||||
|
||||
buildInputs = with ocamlPackages; [
|
||||
ocaml ocamlbuild findlib topkg ppx_sexp_conv
|
||||
erm_xmpp_0_3 tls nocrypto x509 ocaml_lwt otr astring
|
||||
|
|
|
@ -0,0 +1,302 @@
|
|||
diff --git a/_tags b/_tags
|
||||
index 88318d9..b433ee8 100644
|
||||
--- a/_tags
|
||||
+++ b/_tags
|
||||
@@ -7,9 +7,11 @@ true : package(sexplib astring)
|
||||
|
||||
<src/xconfig.ml>: package(otr ppx_sexp_conv)
|
||||
<src/utils.ml>: package(uutf)
|
||||
+<src/muc.ml>: package(uchar)
|
||||
+<src/contact.mli>: package(uchar)
|
||||
<src/persistency.ml>: package(lwt nocrypto)
|
||||
<src/xjid.{ml,mli}>: package(ppx_sexp_conv erm_xmpp)
|
||||
-<src/user.{ml,mli}>: package(ppx_sexp_conv otr hex ptime ptime.clock.os)
|
||||
+<src/user.{ml,mli}>: package(uchar ppx_sexp_conv otr hex ptime ptime.clock.os)
|
||||
<src/xmpp_callbacks.ml>: package(erm_xmpp lwt tls tls.lwt ptime)
|
||||
<src/xmpp_connection.ml>: package(erm_xmpp lwt tls tls.lwt)
|
||||
|
||||
@@ -18,6 +20,6 @@ true : package(sexplib astring)
|
||||
<cli/cli_input.ml>: package(notty lwt erm_xmpp otr)
|
||||
<cli/cli_commands.ml>: package(lwt otr erm_xmpp)
|
||||
<cli/cli_config.ml>: package(lwt nocrypto otr notty tls.lwt x509)
|
||||
-<cli/cli_state.ml>: package(hex lwt nocrypto erm_xmpp tls.lwt x509)
|
||||
+<cli/cli_state.ml>: package(uchar hex lwt nocrypto erm_xmpp tls.lwt x509)
|
||||
|
||||
<bin/jackline.{ml,byte,native}>: package(erm_xmpp hex lwt notty notty.lwt nocrypto otr sexplib tls tls.lwt ptime ptime.clock.os)
|
||||
diff --git a/cli/cli_config.ml b/cli/cli_config.ml
|
||||
index 618d655..dac6e68 100644
|
||||
--- a/cli/cli_config.ml
|
||||
+++ b/cli/cli_config.ml
|
||||
@@ -34,7 +34,7 @@ let rewrap term above below (prefix, inp, inp2) (width, _) =
|
||||
let height = if col mod width = 0 then succ h else h in
|
||||
(succ (col mod width), height)
|
||||
in
|
||||
- Notty_lwt.Term.cursor term (Some (col, row))
|
||||
+ Notty_lwt.Term.cursor term (Some (col - 1, row - 1))
|
||||
|
||||
let read_line ?(above = []) ?(prefix = "") ?default ?(below = []) term =
|
||||
let rec go (pre, post) =
|
||||
@@ -56,8 +56,8 @@ let read_line ?(above = []) ?(prefix = "") ?default ?(below = []) term =
|
||||
| `Unhandled k ->
|
||||
match k with
|
||||
| `Key (`Enter, []) -> Lwt.return (char_list_to_str (pre @ post))
|
||||
- | `Key (`Uchar 0x43, [`Ctrl]) -> Lwt.fail (Invalid_argument "Ctrl-c")
|
||||
- | `Key (`Uchar 0x44, [`Ctrl]) -> Lwt.fail (Invalid_argument "Ctrl-d")
|
||||
+ | `Key (`Uchar u, [`Ctrl]) when Uchar.to_int u = 0x43 -> Lwt.fail (Invalid_argument "Ctrl-c")
|
||||
+ | `Key (`Uchar u, [`Ctrl]) when Uchar.to_int u = 0x44 -> Lwt.fail (Invalid_argument "Ctrl-d")
|
||||
| _ -> go (pre, post)
|
||||
in
|
||||
let pre = Utils.option [] str_to_char_list default in
|
||||
@@ -180,7 +180,7 @@ let configure term () =
|
||||
let pw = "Password: " in
|
||||
let chars = match password with
|
||||
| None -> I.string A.empty "will be asked at startup"
|
||||
- | Some _ -> I.uchar A.empty 0x2605 5 1
|
||||
+ | Some _ -> I.uchar A.empty (Uchar.of_int 0x2605) 5 1
|
||||
in
|
||||
above @ [I.(string A.empty pw <|> chars)]
|
||||
in
|
||||
diff --git a/cli/cli_input.ml b/cli/cli_input.ml
|
||||
index 34b4288..07488f2 100644
|
||||
--- a/cli/cli_input.ml
|
||||
+++ b/cli/cli_input.ml
|
||||
@@ -314,19 +314,19 @@ let read_terminal term mvar input_mvar () =
|
||||
| `Key (`Arrow `Up, []) -> p (fun s -> ok (history s Up)) >>= fun () -> loop ()
|
||||
| `Key (`Arrow `Down, []) -> p (fun s -> ok (history s Down)) >>= fun () -> loop ()
|
||||
|
||||
- | `Key (`Uchar 0x44, [`Ctrl]) (* C-d *) -> p (fun s -> Lwt.return (`Quit s))
|
||||
+ | `Key (`Uchar u, [`Ctrl]) when Uchar.to_int u = 0x44 (* C-d *) -> p (fun s -> Lwt.return (`Quit s))
|
||||
|
||||
(* UI navigation and toggles *)
|
||||
| `Key (`Page `Up, []) -> p (fun s -> ok (navigate_buddy_list s Up)) >>= fun () -> loop ()
|
||||
| `Key (`Page `Down, []) -> p (fun s -> ok (navigate_buddy_list s Down)) >>= fun () -> loop ()
|
||||
|
||||
| `Key (`Page `Up, [`Ctrl]) -> p (fun s -> ok (navigate_message_buffer s Up)) >>= fun () -> loop ()
|
||||
- | `Key (`Uchar 0x50, [`Ctrl]) (* C-p *) -> p (fun s -> ok (navigate_message_buffer s Up)) >>= fun () -> loop ()
|
||||
+ | `Key (`Uchar u, [`Ctrl]) when Uchar.to_int u = 0x50 (* C-p *) -> p (fun s -> ok (navigate_message_buffer s Up)) >>= fun () -> loop ()
|
||||
| `Key (`Page `Down, [`Ctrl]) -> p (fun s -> ok (navigate_message_buffer s Down)) >>= fun () -> loop ()
|
||||
- | `Key (`Uchar 0x4E, [`Ctrl]) (* C-n *) -> p (fun s -> ok (navigate_message_buffer s Down)) >>= fun () -> loop ()
|
||||
+ | `Key (`Uchar u, [`Ctrl]) when Uchar.to_int u = 0x4E (* C-n *) -> p (fun s -> ok (navigate_message_buffer s Down)) >>= fun () -> loop ()
|
||||
|
||||
- | `Key (`Uchar 0x58, [`Ctrl]) (* C-x *) -> p (fun s -> ok (activate_contact s s.last_active_contact)) >>= fun () -> loop ()
|
||||
- | `Key (`Uchar 0x51, [`Ctrl]) (* C-q *) ->
|
||||
+ | `Key (`Uchar u, [`Ctrl]) when Uchar.to_int u = 0x58 (* C-x *) -> p (fun s -> ok (activate_contact s s.last_active_contact)) >>= fun () -> loop ()
|
||||
+ | `Key (`Uchar u, [`Ctrl]) when Uchar.to_int u = 0x51 (* C-q *) ->
|
||||
let handle s =
|
||||
let s = match List.rev s.notifications with
|
||||
| x::_ -> activate_contact s x
|
||||
diff --git a/cli/cli_state.ml b/cli/cli_state.ml
|
||||
index 5603cfe..ee320ce 100644
|
||||
--- a/cli/cli_state.ml
|
||||
+++ b/cli/cli_state.ml
|
||||
@@ -24,7 +24,7 @@ type connect_v =
|
||||
| Reconnect
|
||||
| Presence of (User.presence * string option * int option)
|
||||
|
||||
-type input = int list * int list
|
||||
+type input = Uchar.t list * Uchar.t list
|
||||
|
||||
type state = {
|
||||
(* set only initially *)
|
||||
diff --git a/cli/cli_support.ml b/cli/cli_support.ml
|
||||
index 1c54df6..8275c38 100644
|
||||
--- a/cli/cli_support.ml
|
||||
+++ b/cli/cli_support.ml
|
||||
@@ -4,17 +4,17 @@ open Notty
|
||||
module Char = struct
|
||||
let hdash a w =
|
||||
if !Utils.unicode then
|
||||
- I.uchar a 0x2500 w 1
|
||||
+ I.uchar a (Uchar.of_int 0x2500) w 1
|
||||
else
|
||||
I.char a '-' w 1
|
||||
and vdash a h =
|
||||
if !Utils.unicode then
|
||||
- I.uchar a 0x2502 1 h
|
||||
+ I.uchar a (Uchar.of_int 0x2502) 1 h
|
||||
else
|
||||
I.char a '|' 1 h
|
||||
and star a w =
|
||||
if !Utils.unicode then
|
||||
- I.uchar a 0x2605 w 1
|
||||
+ I.uchar a (Uchar.of_int 0x2605) w 1
|
||||
else
|
||||
I.char a '*' w 1
|
||||
end
|
||||
@@ -186,8 +186,8 @@ let v_center left right width =
|
||||
and rw = I.width right
|
||||
in
|
||||
match rw, lw >= width with
|
||||
- | 0, true -> (I.hcrop (lw - width + 1) 0 left, width)
|
||||
- | 0, false -> (left, succ lw)
|
||||
+ | 0, true -> (I.hcrop (lw - width + 1) 0 left, width - 1)
|
||||
+ | 0, false -> (left, lw)
|
||||
| _, _ ->
|
||||
if lw + rw >= width then
|
||||
let leftw = min (max (width - rw) (width / 2)) lw in
|
||||
@@ -195,11 +195,11 @@ let v_center left right width =
|
||||
let l = I.hcrop (lw - leftw) 0 left
|
||||
and r = I.hcrop 0 (rw - rightw) right
|
||||
in
|
||||
- (I.(l <|> r), succ leftw)
|
||||
+ (I.(l <|> r), leftw)
|
||||
else
|
||||
- (I.(left <|> right), succ lw)
|
||||
+ (I.(left <|> right), lw)
|
||||
|
||||
-let str_to_char_list str : int list =
|
||||
+let str_to_char_list str : Uchar.t list =
|
||||
let open Uutf in
|
||||
List.rev (String.fold_utf_8 (fun acc _ -> function `Uchar i -> i :: acc | `Malformed _ -> acc) [] str)
|
||||
|
||||
@@ -236,22 +236,26 @@ let readline_input = function
|
||||
| k -> `Unhandled k
|
||||
|
||||
let emacs_bindings = function
|
||||
- | `Key (`Uchar 0x41, [`Ctrl]) (* C-a *) -> `Ok (fun (pre, post) -> ([], pre @ post))
|
||||
- | `Key (`Uchar 0x45, [`Ctrl]) (* C-e *) -> `Ok (fun (pre, post) -> (pre @ post, []))
|
||||
+ | `Key (`Uchar u, [`Ctrl]) as k ->
|
||||
+ begin match Uchar.to_int u with
|
||||
+ | 0x41 (* C-a *) -> `Ok (fun (pre, post) -> ([], pre @ post))
|
||||
+ | 0x45 (* C-e *) -> `Ok (fun (pre, post) -> (pre @ post, []))
|
||||
|
||||
- | `Key (`Uchar 0x4b, [`Ctrl]) (* C-k *) -> `Ok (fun (pre, _) -> (pre, []))
|
||||
- | `Key (`Uchar 0x55, [`Ctrl]) (* C-u *) -> `Ok (fun (_, post) -> ([], post))
|
||||
+ | 0x4b (* C-k *) -> `Ok (fun (pre, _) -> (pre, []))
|
||||
+ | 0x55 (* C-u *) -> `Ok (fun (_, post) -> ([], post))
|
||||
|
||||
- | `Key (`Uchar 0x46, [`Ctrl]) (* C-f *) ->
|
||||
+ | 0x46 (* C-f *) ->
|
||||
`Ok (fun (pre, post) ->
|
||||
match post with
|
||||
| [] -> (pre, post)
|
||||
| hd::tl -> (pre @ [hd], tl))
|
||||
- | `Key (`Uchar 0x42, [`Ctrl]) (* C-b *) ->
|
||||
+ | 0x42 (* C-b *) ->
|
||||
`Ok (fun (pre, post) ->
|
||||
match List.rev pre with
|
||||
| [] -> ([], post)
|
||||
| hd::tl -> (List.rev tl, hd :: post))
|
||||
+ | _ -> `Unhandled k
|
||||
+ end
|
||||
|
||||
| `Key (`Arrow `Left, [`Ctrl]) ->
|
||||
`Ok (fun (pre, post) ->
|
||||
diff --git a/src/contact.mli b/src/contact.mli
|
||||
index 6926296..d6c795b 100644
|
||||
--- a/src/contact.mli
|
||||
+++ b/src/contact.mli
|
||||
@@ -8,7 +8,7 @@ val bare : contact -> Xjid.bare_jid
|
||||
val preserve_messages : contact -> bool
|
||||
val expanded : contact -> bool
|
||||
val messages : contact -> User.message list
|
||||
-val input_buffer : contact -> (int list * int list)
|
||||
+val input_buffer : contact -> (Uchar.t list * Uchar.t list)
|
||||
|
||||
val readline_history : contact -> string list
|
||||
val add_readline_history : contact -> string -> contact
|
||||
@@ -18,7 +18,7 @@ val set_history_position : contact -> int -> contact
|
||||
val received : contact -> string -> contact
|
||||
|
||||
val expand : contact -> contact
|
||||
-val set_input_buffer : contact -> (int list * int list) -> contact
|
||||
+val set_input_buffer : contact -> (Uchar.t list * Uchar.t list) -> contact
|
||||
val set_preserve_messages : contact -> bool -> contact
|
||||
|
||||
val reset : contact -> contact
|
||||
diff --git a/src/muc.ml b/src/muc.ml
|
||||
index 1c98037..3293541 100644
|
||||
--- a/src/muc.ml
|
||||
+++ b/src/muc.ml
|
||||
@@ -132,7 +132,7 @@ type groupchat = {
|
||||
expand : bool ;
|
||||
preserve_messages : bool ;
|
||||
message_history : User.message list ; (* persistent if preserve_messages *)
|
||||
- input_buffer : (int list * int list) ;
|
||||
+ input_buffer : (Uchar.t list * Uchar.t list) ;
|
||||
readline_history : string list ;
|
||||
history_position : int ;
|
||||
autojoin : bool ;
|
||||
diff --git a/src/user.ml b/src/user.ml
|
||||
index d039278..42a8c47 100644
|
||||
--- a/src/user.ml
|
||||
+++ b/src/user.ml
|
||||
@@ -229,7 +229,7 @@ type user = {
|
||||
properties : property list ;
|
||||
preserve_messages : bool ;
|
||||
message_history : message list ; (* persistent if preserve_messages is true *)
|
||||
- input_buffer: (int list * int list) ; (* not persistent *)
|
||||
+ input_buffer: (Uchar.t list * Uchar.t list) ; (* not persistent *)
|
||||
readline_history : string list ; (* not persistent *)
|
||||
history_position : int ; (* not persistent *)
|
||||
otr_fingerprints : fingerprint list ;
|
||||
diff --git a/src/user.mli b/src/user.mli
|
||||
index 52b503d..5ce41be 100644
|
||||
--- a/src/user.mli
|
||||
+++ b/src/user.mli
|
||||
@@ -118,7 +118,7 @@ type user = {
|
||||
properties : property list ;
|
||||
preserve_messages : bool ;
|
||||
message_history : message list ; (* persistent if preserve_messages is true *)
|
||||
- input_buffer: (int list * int list) ; (* not persistent *)
|
||||
+ input_buffer: (Uchar.t list * Uchar.t list) ; (* not persistent *)
|
||||
readline_history : string list ; (* not persistent *)
|
||||
history_position : int ;
|
||||
otr_fingerprints : fingerprint list ;
|
||||
diff --git a/src/utils.ml b/src/utils.ml
|
||||
index 0b4a3a7..cd9cb10 100644
|
||||
--- a/src/utils.ml
|
||||
+++ b/src/utils.ml
|
||||
@@ -30,31 +30,33 @@ let validate_utf8 txt =
|
||||
let rec loop d buf = match Uutf.decode d with
|
||||
| `Await -> Buffer.contents buf
|
||||
| `End -> Buffer.contents buf
|
||||
- | `Malformed _ -> if !unicode then Uutf.Buffer.add_utf_8 buf 0xFFFD; loop d buf
|
||||
- | `Uchar 0x000A -> (* newline *) Uutf.Buffer.add_utf_8 buf 0x000A ; loop d buf
|
||||
- | `Uchar 0x0009 -> (* tab -> 4 spaces *) Uutf.Buffer.add_utf_8 buf 0x0020 ; Uutf.Buffer.add_utf_8 buf 0x0020 ; Uutf.Buffer.add_utf_8 buf 0x0020 ; Uutf.Buffer.add_utf_8 buf 0x0020 ; loop d buf
|
||||
- | `Uchar 0x007F (* DEL *)
|
||||
+ | `Malformed _ -> if !unicode then Uutf.Buffer.add_utf_8 buf (Uchar.of_int 0xFFFD); loop d buf
|
||||
+ | `Uchar u ->
|
||||
+ match Uchar.to_int u with
|
||||
+ | 0x000A -> (* newline *) Uutf.Buffer.add_utf_8 buf (Uchar.of_int 0x000A) ; loop d buf
|
||||
+ | 0x0009 -> (* tab -> 4 spaces *) Uutf.Buffer.add_utf_8 buf (Uchar.of_int 0x0020) ; Uutf.Buffer.add_utf_8 buf (Uchar.of_int 0x0020) ; Uutf.Buffer.add_utf_8 buf (Uchar.of_int 0x0020) ; Uutf.Buffer.add_utf_8 buf (Uchar.of_int 0x0020) ; loop d buf
|
||||
+ | 0x007F (* DEL *)
|
||||
(* See https://en.wikipedia.org/wiki/Unicode_control_characters / https://en.wikipedia.org/wiki/Bi-directional_text *)
|
||||
- | `Uchar 0x200E | `Uchar 0x200F (* left-to-right / right-to-left *)
|
||||
- | `Uchar 0x202A | `Uchar 0x202D (* left-to-right embedding / override *)
|
||||
- | `Uchar 0x202B | `Uchar 0x202E (* right-to-left embedding / override *)
|
||||
- | `Uchar 0x202C (* pop directional format *)
|
||||
- | `Uchar 0x2066 | `Uchar 0x2067 (* l-t-r isolate r-t-l isolate *)
|
||||
- | `Uchar 0x2068 | `Uchar 0x2069 (* first strong isolate / pop directional isolate *)
|
||||
- | `Uchar 0x2028 | `Uchar 0x2029 (* line separator / page separator *) ->
|
||||
- if !unicode then Uutf.Buffer.add_utf_8 buf 0xFFFD ; loop d buf
|
||||
- | `Uchar x when x < 0x20 ->
|
||||
+ | 0x200E | 0x200F (* left-to-right / right-to-left *)
|
||||
+ | 0x202A | 0x202D (* left-to-right embedding / override *)
|
||||
+ | 0x202B | 0x202E (* right-to-left embedding / override *)
|
||||
+ | 0x202C (* pop directional format *)
|
||||
+ | 0x2066 | 0x2067 (* l-t-r isolate r-t-l isolate *)
|
||||
+ | 0x2068 | 0x2069 (* first strong isolate / pop directional isolate *)
|
||||
+ | 0x2028 | 0x2029 (* line separator / page separator *) ->
|
||||
+ if !unicode then Uutf.Buffer.add_utf_8 buf (Uchar.of_int 0xFFFD) ; loop d buf
|
||||
+ | x when x < 0x20 ->
|
||||
(* other control characters *)
|
||||
- if !unicode then Uutf.Buffer.add_utf_8 buf 0xFFFD ; loop d buf
|
||||
- | `Uchar x when x >= 0x0080 && x <= 0x009F ->
|
||||
+ if !unicode then Uutf.Buffer.add_utf_8 buf (Uchar.of_int 0xFFFD) ; loop d buf
|
||||
+ | x when x >= 0x0080 && x <= 0x009F ->
|
||||
(* ctrl chars used in conjunction with ISO 8859 character sets (C0/C1) *)
|
||||
- if !unicode then Uutf.Buffer.add_utf_8 buf 0xFFFD ; loop d buf
|
||||
+ if !unicode then Uutf.Buffer.add_utf_8 buf (Uchar.of_int 0xFFFD) ; loop d buf
|
||||
|
||||
- | `Uchar x ->
|
||||
+ | x ->
|
||||
let c = if !unicode then x else if x > 0xff then 0x3f else x in
|
||||
- Uutf.Buffer.add_utf_8 buf c ; loop d buf
|
||||
+ Uutf.Buffer.add_utf_8 buf (Uchar.of_int c) ; loop d buf
|
||||
in
|
||||
- let nln = `Readline 0x000A in
|
||||
+ let nln = `Readline (Uchar.of_int 0x000A) in
|
||||
loop (Uutf.decoder ~nln ~encoding:`UTF_8 (`String txt)) (Buffer.create (String.length txt))
|
||||
|
||||
let version = "%%VERSION_NUM%%"
|
|
@ -1,19 +0,0 @@
|
|||
{stdenv, fetchurl, readline, libssh, intltool, libbsd, pkgconfig}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "yafc-1.3.6";
|
||||
src = fetchurl {
|
||||
url = "http://www.yafc-ftp.com/downloads/${name}.tar.xz";
|
||||
sha256 = "0wvrljihliggysfnzczc0s74i3ab2c1kzjjs99iqk98nxmb2b8v3";
|
||||
};
|
||||
|
||||
buildInputs = [ readline libssh intltool libbsd pkgconfig ];
|
||||
|
||||
meta = {
|
||||
description = "ftp/sftp client with readline, autocompletion and bookmarks";
|
||||
homepage = http://www.yafc-ftp.com;
|
||||
maintainers = [ stdenv.lib.maintainers.page ];
|
||||
license = stdenv.lib.licenses.gpl2Plus;
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "alt-ergo-${version}";
|
||||
version = "0.99.1";
|
||||
version = "1.30";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://alt-ergo.ocamlpro.com/download_manager.php?target=${name}.tar.gz";
|
||||
name = "${name}.tar.gz";
|
||||
sha256 = "0lnlf56ysisa45dxvbwzhl4fgyxyfz35psals2kv9x8gyq54zwpm";
|
||||
sha256 = "025pacb4ax864fn5x8k78mw6hiig4jcazblj18gzxspg4f1l5n1g";
|
||||
};
|
||||
|
||||
buildInputs = with ocamlPackages;
|
||||
[ ocaml findlib ocamlgraph zarith lablgtk ];
|
||||
[ ocaml findlib camlzip ocamlgraph zarith lablgtk ocplib-simplex ];
|
||||
|
||||
meta = {
|
||||
description = "High-performance theorem prover and SMT solver";
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "why3-${version}";
|
||||
version = "0.87.1";
|
||||
version = "0.87.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = https://gforge.inria.fr/frs/download.php/file/35893/why3-0.87.1.tar.gz;
|
||||
sha256 = "1ssik2f6fkpvwpdmxz8hrm3p62qas3sjlqya0r57s60ilpkgiwwb";
|
||||
url = https://gforge.inria.fr/frs/download.php/file/36398/why3-0.87.3.tar.gz;
|
||||
sha256 = "1fn9v6w1ilkrm2n4rz31w8qvjnchyvwxiqs67z3f59b5k99wb2ka";
|
||||
};
|
||||
|
||||
buildInputs = (with ocamlPackages; [
|
||||
|
|
48
pkgs/applications/version-management/gogs/default.nix
Normal file
48
pkgs/applications/version-management/gogs/default.nix
Normal file
|
@ -0,0 +1,48 @@
|
|||
{ stdenv, buildGoPackage, fetchFromGitHub, makeWrapper
|
||||
, git, coreutils, bash, gzip, openssh
|
||||
, sqliteSupport ? true
|
||||
}:
|
||||
|
||||
buildGoPackage rec {
|
||||
name = "gogs-${version}";
|
||||
version = "0.9.113";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gogits";
|
||||
repo = "gogs";
|
||||
rev = "v${version}";
|
||||
sha256 = "1zk83c9jiazfw3221yi2sidp7917q3dxb2xb7wrjg4an18gj46j7";
|
||||
};
|
||||
|
||||
patchPhase = ''
|
||||
substituteInPlace models/repo.go \
|
||||
--replace '#!/usr/bin/env' '#!${coreutils}/bin/env'
|
||||
'';
|
||||
|
||||
buildInputs = [ makeWrapper ];
|
||||
|
||||
buildFlags = stdenv.lib.optionalString sqliteSupport "-tags sqlite";
|
||||
|
||||
outputs = [ "bin" "out" "data" ];
|
||||
|
||||
postInstall = ''
|
||||
mkdir $data
|
||||
cp -R $src/{public,templates} $data
|
||||
|
||||
wrapProgram $bin/bin/gogs \
|
||||
--prefix PATH : ${stdenv.lib.makeBinPath [ bash git gzip openssh ]} \
|
||||
--run 'export GOGS_WORK_DIR=''${GOGS_WORK_DIR:-$PWD}' \
|
||||
--run 'mkdir -p "$GOGS_WORK_DIR" && cd "$GOGS_WORK_DIR"' \
|
||||
--run "ln -fs $data/{public,templates} ."
|
||||
'';
|
||||
|
||||
goPackagePath = "github.com/gogits/gogs";
|
||||
goDeps = ./deps.nix;
|
||||
|
||||
meta = {
|
||||
description = "A painless self-hosted Git service";
|
||||
homepage = "https://gogs.io";
|
||||
license = stdenv.lib.licenses.mit;
|
||||
maintainers = with stdenv.lib.maintainers; [ schneefux ];
|
||||
};
|
||||
}
|
443
pkgs/applications/version-management/gogs/deps.nix
Normal file
443
pkgs/applications/version-management/gogs/deps.nix
Normal file
|
@ -0,0 +1,443 @@
|
|||
[
|
||||
{
|
||||
goPackagePath = "github.com/Unknwon/cae";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/Unknwon/cae";
|
||||
rev = "c6aac99ea2cae2ebaf23f26f76b04fe3fcfc9f8c";
|
||||
sha256 = "0j6l1fcs6gp4qw6b9w3pg9fgah18lh1hanfz5y64r6ks244v3l7s";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/Unknwon/com";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/Unknwon/com";
|
||||
rev = "28b053d5a2923b87ce8c5a08f3af779894a72758";
|
||||
sha256 = "09i9slj4zbsqmwkkx9bqi7cgpv6hqby6r98l6qx1wag89qijybz2";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/Unknwon/i18n";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/Unknwon/i18n";
|
||||
rev = "39d6f2727e0698b1021ceb6a77c1801aa92e7d5d";
|
||||
sha256 = "1f4s9srdaqw2yqgc3d76vww3glbwka2f5q4zrwn8bb66kcazbfb7";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/Unknwon/paginater";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/Unknwon/paginater";
|
||||
rev = "701c23f468663c34d1b1768c3ae1bcc57e11c5b3";
|
||||
sha256 = "09h3gyd9wyzgbkny5g5ihd4ckmv0bams8g5y2xfkd55gizlmx07p";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/bradfitz/gomemcache";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/bradfitz/gomemcache";
|
||||
rev = "2fafb84a66c4911e11a8f50955b01e74fe3ab9c5";
|
||||
sha256 = "1k3vqmq008gad1cq1gaqa35k5ldn0z8fcx07c15x9v8p9xjbhkc9";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-macaron/binding";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-macaron/binding";
|
||||
rev = "48920167fa152d02f228cfbece7e0f1e452d200a";
|
||||
sha256 = "00h4mdyhqkh75vgafyyyn54kdpwj82ifg9l6lxv9gnkw6frxhkan";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-macaron/cache";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-macaron/cache";
|
||||
rev = "56173531277692bc2925924d51fda1cd0a6b8178";
|
||||
sha256 = "1116a22wm43q2l54nnycgli90kix787j20mpgya9qb6xnglcck59";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-macaron/captcha";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-macaron/captcha";
|
||||
rev = "8aa5919789ab301e865595eb4b1114d6b9847deb";
|
||||
sha256 = "0wdihxbl7yw4wg2x0wb09kv9swfpr5j06wsj4hxn3xcbpqi9viwm";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-macaron/csrf";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-macaron/csrf";
|
||||
rev = "6a9a7df172cc1fcd81e4585f44b09200b6087cc0";
|
||||
sha256 = "173da2hl9fcfgkn0nv1ws3pr0gyyp88amhj2bfk4414k5a3r0nsa";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-macaron/gzip";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-macaron/gzip";
|
||||
rev = "cad1c6580a07c56f5f6bc52d66002a05985c5854";
|
||||
sha256 = "12mq3dd1vd0jbi80fxab4ysmipbz9zhbm9nw6y6a6bw3byc8w4jf";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-macaron/i18n";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-macaron/i18n";
|
||||
rev = "ef57533c3b0fc2d8581deda14937e52f11a203ab";
|
||||
sha256 = "1nkrcnpjl3x6fhjss2vp29mnvam20vpvxvxpfg1zspi1rjmpyhqy";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-macaron/inject";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-macaron/inject";
|
||||
rev = "d8a0b8677191f4380287cfebd08e462217bac7ad";
|
||||
sha256 = "0p47pz699xhmi8yxhahvrpai9r49rqap5ckwmz1dlkrnh3zwhrhh";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-macaron/session";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-macaron/session";
|
||||
rev = "b8a2b5ef7fb4c91c1c8ca23e2a52e29a4bcbb22f";
|
||||
sha256 = "1nz823fn23wp87pzzhpxlbr6j7q4khywa9n0h1kpdikiy87z5k5m";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-macaron/toolbox";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-macaron/toolbox";
|
||||
rev = "99a42f20e9e88daec5c0d7beb4e7eac134680ab0";
|
||||
sha256 = "0r6ksiqzrii7b9vv8daz68044pyifsxmpz48m6h8m6l3h9ygz8cx";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-sql-driver/mysql";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-sql-driver/mysql";
|
||||
rev = "2e00b5cd70399450106cec6431c2e2ce3cae5034";
|
||||
sha256 = "085g48jq9hzmlcxg122n0c4pi41sc1nn2qpx1vrl2jfa8crsppa5";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-xorm/builder";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-xorm/builder";
|
||||
rev = "db75972580de4a7c6c20fff5b16a924c3de3fa12";
|
||||
sha256 = "0qgrvjfghkgfhbrm989yhrwgs36d6wxcap012glpmd2ddp5klw46";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-xorm/core";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-xorm/core";
|
||||
rev = "2fbe2c76c6781d9e1c0398fc25386426e611f975";
|
||||
sha256 = "1rfry5md6g8b6d6vyqpqys3wl2mxf6v55d2aapxlx3hqn6lz0lax";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/go-xorm/xorm";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/go-xorm/xorm";
|
||||
rev = "2189b36884a485d1d609fc5690bfc71a8a7de8c3";
|
||||
sha256 = "02z140xbwqins6ql8hwdr6ar3d67jqrkm22bamqbj2rmfl7z0846";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/gogits/chardet";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/gogits/chardet";
|
||||
rev = "2404f777256163ea3eadb273dada5dcb037993c0";
|
||||
sha256 = "1dki2pqhnzcmzlqrq4d4jwknnjxm82xqnmizjjdblb6h98ans1cd";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/gogits/cron";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/gogits/cron";
|
||||
rev = "2fc07a4c4f1e3c4d2301c5ed578d5e2c31c70421";
|
||||
sha256 = "0a153pspisnhjpxjsryqdb29y6b8ics0203icbq5lps2g5jyaiw0";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/gogits/git-module";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/gogits/git-module";
|
||||
rev = "df1013f8eb4dc70de90bc5597bf560a4b7da802e";
|
||||
sha256 = "1vnfiwdwp210hn7z7fgi5i80mggk76blbhykqg8wvx8bi0wxlrs8";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/gogits/go-gogs-client";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/gogits/go-gogs-client";
|
||||
rev = "98046bb98061fc6baa5bb86359af0b7c300d384a";
|
||||
sha256 = "1wsg70irk4lwyak4kn2ml64j1fglqkyzs2lgc2mk4n4j5kn9hs1k";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/gogits/go-libravatar";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/gogits/go-libravatar";
|
||||
rev = "cd1abbd55d09b793672732a7a1dfdaa12a40dfd0";
|
||||
sha256 = "00xvnddfh1m5g17mrnvp505i4sgwpk1r0wqz6a15bp6lvadwwlnj";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/issue9/identicon";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/issue9/identicon";
|
||||
rev = "d36b54562f4cf70c83653e13dc95c220c79ef521";
|
||||
sha256 = "0y82b3gq8rpqglvf3lsqhgp5djfdammwd1w24k3i97iqls0rch7l";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/jaytaylor/html2text";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/jaytaylor/html2text";
|
||||
rev = "4b9124c9b0a2279e2092c4a9aaf1c83bbd2dcffc";
|
||||
sha256 = "1yp0rawzziia9diffxs6k5g85acq3a62yb5ajbvy04r2p04dv85h";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/klauspost/compress";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/klauspost/compress";
|
||||
rev = "e3b7981a12dd3cab49afa1d3a50e715846f23732";
|
||||
sha256 = "0hxciiaqrbf7rr112r7rwk7jcwhvjpbhnp8ikszp56zwqd64k9vn";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/klauspost/cpuid";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/klauspost/cpuid";
|
||||
rev = "09cded8978dc9e80714c4d85b0322337b0a1e5e0";
|
||||
sha256 = "05l8pfch0gvxh0khapwxhsk4xajn40vbjr360n49vh2z5531v2xq";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/klauspost/crc32";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/klauspost/crc32";
|
||||
rev = "cb6bfca970f6908083f26f39a79009d608efd5cd";
|
||||
sha256 = "0q4yr4isgmph1yf1vq527lpmid7vqv56q7vxh3gkp5679fb90q6n";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/lib/pq";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/lib/pq";
|
||||
rev = "8df6253d1317616f36b0c3740eb30c239a7372cb";
|
||||
sha256 = "0djs6k6rdh06v8bz0msn0lv532hk2vrljj1pz4kgmbqcmd17y31k";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mcuadros/go-version";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mcuadros/go-version";
|
||||
rev = "257f7b9a7d87427c8d7f89469a5958d57f8abd7c";
|
||||
sha256 = "0mpbcc698503hbrlc74l3nqd6hdr0n6vybfzw10pg7qx3cpmn512";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/microcosm-cc/bluemonday";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/microcosm-cc/bluemonday";
|
||||
rev = "e79763773ab6222ca1d5a7cbd9d62d83c1f77081";
|
||||
sha256 = "04rd8jzy8kzzm0j0k7wy90pykl8ws43yhhwl2gkyz6rak10jhqpz";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/nfnt/resize";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/nfnt/resize";
|
||||
rev = "891127d8d1b52734debe1b3c3d7e747502b6c366";
|
||||
sha256 = "08lg2v4s1iyzqja7xb69d57gpz1y43yqfwv7i4fa7a06m595r9iw";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/russross/blackfriday";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/russross/blackfriday";
|
||||
rev = "5f33e7b7878355cd2b7e6b8eefc48a5472c69f70";
|
||||
sha256 = "0d7faqxrxvh8hwc1r8gbasgmr8x5blxvzciwspir2yafjfbqy87k";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/satori/go.uuid";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/satori/go.uuid";
|
||||
rev = "b061729afc07e77a8aa4fad0a2fd840958f1942a";
|
||||
sha256 = "0q87n5an7ha2d8kl6gn9wi41rq0whsxq68w5x3nxz7w9vgkfnq1k";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/sergi/go-diff";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/sergi/go-diff";
|
||||
rev = "83532ca1c1caa393179c677b6facf48e61f4ca5d";
|
||||
sha256 = "08niiivkn9a1hdl738w2sq4vq6csqhw91an8wq83dk40q62f4sq8";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/shurcooL/sanitized_anchor_name";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/shurcooL/sanitized_anchor_name";
|
||||
rev = "1dba4b3954bc059efc3991ec364f9f9a35f597d2";
|
||||
sha256 = "0pwap8lp79pldd95a1qi3xhlsa17m8zddpgc5jzvk6d1cjpsm6qg";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/urfave/cli";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/urfave/cli";
|
||||
rev = "0bdeddeeb0f650497d603c4ad7b20cfe685682f6";
|
||||
sha256 = "1ny63c7bfwfrsp7vfkvb4i0xhq4v7yxqnwxa52y4xlfxs4r6v6fg";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/crypto";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/crypto";
|
||||
rev = "cb497ae8f18e3c55f81bc9f3876c8f4c3d8a2813";
|
||||
sha256 = "0zah08y0a9rqk1ggp0ylkpycr3amrc22ncsppyrymry44g56xyfj";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/net";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/net";
|
||||
rev = "ae05321a78c1401cec22ba7bc203b597ea372496";
|
||||
sha256 = "1fzbijklrmhwj4mlwrnrxbbrhlzpgrsbv05zldbkvhic14g0ii2c";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/text";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/text";
|
||||
rev = "44f4f658a783b0cee41fe0a23b8fc91d9c120558";
|
||||
sha256 = "1hgwc2p5azfyzvl7i47my3wnbp2g7814a2sshqw63dvggs9mszcx";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "gopkg.in/asn1-ber.v1";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://gopkg.in/asn1-ber.v1";
|
||||
rev = "4e86f4367175e39f69d9358a5f17b4dda270378d";
|
||||
sha256 = "13p8s74kzklb5lklfpxwxb78rknihawv1civ4s9bfqx565010fwk";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "gopkg.in/bufio.v1";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://gopkg.in/bufio.v1";
|
||||
rev = "567b2bfa514e796916c4747494d6ff5132a1dfce";
|
||||
sha256 = "1z5pj778hdianlfj14p0d67g69v4gc2kvn6jg27z5jf75a88l19b";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "gopkg.in/editorconfig/editorconfig-core-go.v1";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://gopkg.in/editorconfig/editorconfig-core-go.v1";
|
||||
rev = "a872f05c2e34b37b567401384d202aff11ba06d4";
|
||||
sha256 = "17mc7rm0fl5vi7ky95c2bd7c8ck0ms5bghzmgx9qk7x1zrw91335";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "gopkg.in/gomail.v2";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://gopkg.in/gomail.v2";
|
||||
rev = "81ebce5c23dfd25c6c67194b37d3dd3f338c98b1";
|
||||
sha256 = "0zdykrv5s19lnq0g49p6njldy4cpk4g161vyjafiw7f84h8r28mc";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "gopkg.in/ini.v1";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://gopkg.in/ini.v1";
|
||||
rev = "6f66b0e091edb3c7b380f7c4f0f884274d550b67";
|
||||
sha256 = "1n09b7ypbayhk6x7qi3g3hrqjlmj5yszwl5d8jykjd5azp6h8sb8";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "gopkg.in/ldap.v2";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://gopkg.in/ldap.v2";
|
||||
rev = "8168ee085ee43257585e50c6441aadf54ecb2c9f";
|
||||
sha256 = "1w0993i8bl8sap01gwm1v6hjp0rsanj2mbpyabwcwnns2g79n895";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "gopkg.in/macaron.v1";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://gopkg.in/macaron.v1";
|
||||
rev = "ddb19a9f3e8cedd44696b9dd5854dc8a43f3dd6c";
|
||||
sha256 = "0riggdq8zxy5x6zhks66slvsg22b9i4399f7ns2l6daj79myqyvy";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "gopkg.in/redis.v2";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://gopkg.in/redis.v2";
|
||||
rev = "e6179049628164864e6e84e973cfb56335748dea";
|
||||
sha256 = "02hifpgak39y39lbn7v2ybbpk3rmb8nvmb3h3490frr8s4pfkb8h";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mattn/go-sqlite3";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mattn/go-sqlite3";
|
||||
rev = "b4142c444a8941d0d92b0b7103a24df9cd815e42";
|
||||
sha256 = "0xq2y4am8dz9w9aaq24s1npg1sn8pf2gn4nki73ylz2fpjwq9vla";
|
||||
};
|
||||
}
|
||||
]
|
|
@ -232,7 +232,7 @@ in
|
|||
homepage = https://github.com/kodi-pvr/pvr.hts;
|
||||
description = "Kodi's Tvheadend HTSP client addon";
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ page ];
|
||||
maintainers = with maintainers; [ cpages ];
|
||||
};
|
||||
}).override {
|
||||
buildInputs = [ cmake kodi libcec_platform kodi-platform ];
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{ stdenv, fetchurl, qmakeHook, qtscript }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "smplayer-16.11.0";
|
||||
name = "smplayer-17.1.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/smplayer/${name}.tar.bz2";
|
||||
sha256 = "0nhbr33p21qb7n6wry0nkavl5nfjzl5yylrhnxz0pyv69n5msfp5";
|
||||
sha256 = "0wgw940gxf3gqh6xzxvz037ipvr1xcw86gf0myvpb4lkwqh5jds0";
|
||||
};
|
||||
|
||||
buildInputs = [ qtscript ];
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{ stdenv, lib, fetchFromGitHub, makeWrapper, pkgconfig, go-md2man
|
||||
, go, containerd, runc
|
||||
, go, containerd, runc, docker-proxy, tini
|
||||
, sqlite, iproute, bridge-utils, devicemapper, systemd
|
||||
, btrfs-progs, iptables, e2fsprogs, xz, utillinux, xfsprogs
|
||||
, procps
|
||||
|
@ -11,15 +11,53 @@ with lib;
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "docker-${version}";
|
||||
version = "1.12.6";
|
||||
version = "1.13.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "docker";
|
||||
repo = "docker";
|
||||
rev = "v${version}";
|
||||
sha256 = "10jhjas07xxlxjsxby8865rr0d0zsc5azy16rsz1idmy7f7lk6jh";
|
||||
sha256 = "03b181xiqgnwanc567w9p6rbdgdvrfv0lk4r7b604ksm0fr4cz23";
|
||||
};
|
||||
|
||||
docker-runc = runc.overrideAttrs (oldAttrs: rec {
|
||||
name = "docker-runc";
|
||||
src = fetchFromGitHub {
|
||||
owner = "docker";
|
||||
repo = "runc";
|
||||
rev = "2f7393a47307a16f8cee44a37b262e8b81021e3e";
|
||||
sha256 = "1s5nfnbinzmcnm8avhvsniz0ihxyva4w5qz1hzzyqdyr0w2scnbj";
|
||||
};
|
||||
# docker/runc already include these patches / are not applicable
|
||||
patches = [];
|
||||
});
|
||||
docker-containerd = containerd.overrideAttrs (oldAttrs: rec {
|
||||
name = "docker-containerd";
|
||||
src = fetchFromGitHub {
|
||||
owner = "docker";
|
||||
repo = "containerd";
|
||||
rev = "03e5862ec0d8d3b3f750e19fca3ee367e13c090e";
|
||||
sha256 = "184sd9dwkcba3zhxnz9grw8p81x05977p36cif2dgkhjdhv12map";
|
||||
};
|
||||
});
|
||||
docker-tini = tini.overrideAttrs (oldAttrs: rec {
|
||||
name = "docker-init";
|
||||
src = fetchFromGitHub {
|
||||
owner = "krallin";
|
||||
repo = "tini";
|
||||
rev = "949e6facb77383876aeff8a6944dde66b3089574";
|
||||
sha256 = "0zj4kdis1vvc6dwn4gplqna0bs7v6d1y2zc8v80s3zi018inhznw";
|
||||
};
|
||||
|
||||
# Do not remove static from make files as we want a static binary
|
||||
patchPhase = ''
|
||||
'';
|
||||
|
||||
NIX_CFLAGS_COMPILE = [
|
||||
"-DMINIMAL=ON"
|
||||
];
|
||||
});
|
||||
|
||||
buildInputs = [
|
||||
makeWrapper pkgconfig go-md2man go
|
||||
sqlite devicemapper btrfs-progs systemd
|
||||
|
@ -52,16 +90,17 @@ stdenv.mkDerivation rec {
|
|||
installPhase = ''
|
||||
install -Dm755 ./bundles/${version}/dynbinary-client/docker-${version} $out/libexec/docker/docker
|
||||
install -Dm755 ./bundles/${version}/dynbinary-daemon/dockerd-${version} $out/libexec/docker/dockerd
|
||||
install -Dm755 ./bundles/${version}/dynbinary-daemon/docker-proxy-${version} $out/libexec/docker/docker-proxy
|
||||
makeWrapper $out/libexec/docker/docker $out/bin/docker \
|
||||
--prefix PATH : "$out/libexec/docker:$extraPath"
|
||||
makeWrapper $out/libexec/docker/dockerd $out/bin/dockerd \
|
||||
--prefix PATH : "$out/libexec/docker:$extraPath"
|
||||
|
||||
# docker uses containerd now
|
||||
ln -s ${containerd}/bin/containerd $out/libexec/docker/docker-containerd
|
||||
ln -s ${containerd}/bin/containerd-shim $out/libexec/docker/docker-containerd-shim
|
||||
ln -s ${runc}/bin/runc $out/libexec/docker/docker-runc
|
||||
ln -s ${docker-containerd}/bin/containerd $out/libexec/docker/docker-containerd
|
||||
ln -s ${docker-containerd}/bin/containerd-shim $out/libexec/docker/docker-containerd-shim
|
||||
ln -s ${docker-runc}/bin/runc $out/libexec/docker/docker-runc
|
||||
ln -s ${docker-proxy}/bin/docker-proxy $out/libexec/docker/docker-proxy
|
||||
ln -s ${docker-tini}/bin/tini-static $out/libexec/docker/docker-init
|
||||
|
||||
# systemd
|
||||
install -Dm644 ./contrib/init/systemd/docker.service $out/etc/systemd/system/docker.service
|
||||
|
|
36
pkgs/applications/virtualization/docker/proxy.nix
Normal file
36
pkgs/applications/virtualization/docker/proxy.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{ stdenv, lib, fetchFromGitHub, go, docker }:
|
||||
|
||||
with lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "docker-proxy-${rev}";
|
||||
rev = "0f534354b813003a754606689722fe253101bc4e";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
inherit rev;
|
||||
owner = "docker";
|
||||
repo = "libnetwork";
|
||||
sha256 = "1ah7h417llcq0xzdbp497pchb9m9qvjhrwajcjb0ybrs8v889m31";
|
||||
};
|
||||
|
||||
buildInputs = [ go ];
|
||||
|
||||
buildPhase = ''
|
||||
mkdir -p .gopath/src/github.com/docker
|
||||
ln -sf $(pwd) .gopath/src/github.com/docker/libnetwork
|
||||
GOPATH="$(pwd)/.gopath:$(pwd)/Godeps/_workspace" go build -ldflags="$PROXY_LDFLAGS" -o docker-proxy ./cmd/proxy
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp docker-proxy $out/bin
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Docker proxy binary to forward traffic between host and containers";
|
||||
license = licenses.asl20;
|
||||
homepage = https://github.com/docker/libnetwork;
|
||||
maintainers = with maintainers; [vdemeester];
|
||||
platforms = docker.meta.platforms;
|
||||
};
|
||||
}
|
|
@ -1,18 +1,20 @@
|
|||
{ stdenv, fetchurl, cmake }:
|
||||
{ stdenv, fetchFromGitHub, cmake, glibc }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.8.3";
|
||||
version = "0.13.1";
|
||||
name = "tini-${version}";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/krallin/tini/archive/v0.8.3.tar.gz";
|
||||
sha256 ="1w7rj4crrcyv25idmh4asbp2sxzwyihy5mbpw384bzxjzaxn9xpa";
|
||||
src = fetchFromGitHub {
|
||||
owner = "krallin";
|
||||
repo = "tini";
|
||||
rev = "v${version}";
|
||||
sha256 ="1g4n8v5d197zcb41fcpbhip2x342383zw1d2zkv57w73vkqgv6z6";
|
||||
};
|
||||
patchPhase = "sed -i /tini-static/d CMakeLists.txt";
|
||||
NIX_CFLAGS_COMPILE = [
|
||||
"-DPR_SET_CHILD_SUBREAPER=36"
|
||||
"-DPR_GET_CHILD_SUBREAPER=37"
|
||||
];
|
||||
buildInputs = [ cmake ];
|
||||
buildInputs = [ cmake glibc glibc.static ];
|
||||
meta = with stdenv.lib; {
|
||||
description = "A tiny but valid init for containers";
|
||||
homepage = https://github.com/krallin/tini;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{ stdenv, fetchurl, unzip }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "paratype-pt-sane";
|
||||
name = "paratype-pt-sans";
|
||||
|
||||
src = fetchurl rec {
|
||||
url = "http://www.paratype.ru/uni/public/PTSans.zip";
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
|
||||
, itstool, libxml2, python3Packages, at_spi2_core
|
||||
, dbus, intltool, libwnck3 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "accerciser-3.14.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/accerciser/3.14/${name}.tar.xz";
|
||||
sha256 = "0x05gpajpcs01g7m34g6fxz8122cf9kx3k0lchwl34jy8xfr39gm";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
pkgconfig gtk3 wrapGAppsHook itstool libxml2 python3Packages.python python3Packages.pyatspi
|
||||
python3Packages.pygobject3 python3Packages.ipython
|
||||
at_spi2_core dbus intltool libwnck3 gnome3.defaultIconTheme
|
||||
];
|
||||
|
||||
wrapPrefixVariables = [ "PYTHONPATH" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Accerciser;
|
||||
description = "Interactive Python accessibility explorer";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.bsd3;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, pkgconfig, glib
|
||||
, evolution_data_server, evolution, sqlite
|
||||
, makeWrapper, itstool, desktop_file_utils
|
||||
, clutter_gtk, libuuid, webkitgtk, zeitgeist
|
||||
, gnome3, librsvg, gdk_pixbuf, libxml2 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
|
||||
|
||||
buildInputs = [ pkgconfig glib intltool itstool libxml2
|
||||
clutter_gtk libuuid webkitgtk gnome3.tracker
|
||||
gnome3.gnome_online_accounts zeitgeist desktop_file_utils
|
||||
gnome3.gsettings_desktop_schemas makeWrapper
|
||||
gdk_pixbuf gnome3.defaultIconTheme librsvg
|
||||
evolution_data_server evolution sqlite ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
preFixup = ''
|
||||
wrapProgram "$out/bin/bijiben" \
|
||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
||||
--prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Bijiben;
|
||||
description = "Note editor designed to remain simple to use";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "bijiben-3.20.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/bijiben/3.20/bijiben-3.20.2.tar.xz;
|
||||
sha256 = "5774dfdedb79f5ffe5bac3cebe0816dc7e6410381744dcb999815061dee6a981";
|
||||
};
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, wrapGAppsHook, gnome-video-effects, libcanberra_gtk3
|
||||
, pkgconfig, gtk3, glib, clutter_gtk, clutter-gst, udev, gst_all_1, itstool
|
||||
, libgudev
|
||||
, adwaita-icon-theme, librsvg, gdk_pixbuf, gnome3, gnome_desktop, libxml2 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
buildInputs = [ pkgconfig gtk3 glib intltool wrapGAppsHook gnome-video-effects itstool
|
||||
gdk_pixbuf adwaita-icon-theme librsvg udev gst_all_1.gstreamer libxml2
|
||||
gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gnome_desktop
|
||||
gst_all_1.gst-plugins-bad clutter_gtk clutter-gst
|
||||
libcanberra_gtk3 libgudev ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Cheese;
|
||||
description = "Take photos and videos with your webcam, with fun graphical effects";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "cheese-3.20.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/cheese/3.20/cheese-3.20.2.tar.xz;
|
||||
sha256 = "b7c18719b708e039c063ef09278ee813923556e06af4a7e9598c5d3bdeb83775";
|
||||
};
|
||||
}
|
|
@ -1,47 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, libxml2, webkitgtk, highlight
|
||||
, pkgconfig, gtk3, glib, libnotify, gtkspell3
|
||||
, wrapGAppsHook, itstool, shared_mime_info, libical, db, gcr, sqlite
|
||||
, gnome3, librsvg, gdk_pixbuf, libsecret, nss, nspr, icu, libtool
|
||||
, libcanberra_gtk3, bogofilter, gst_all_1, procps, p11_kit, dconf }:
|
||||
|
||||
let
|
||||
majVer = gnome3.version;
|
||||
in stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard
|
||||
gnome3.evolution_data_server ];
|
||||
|
||||
propagatedBuildInputs = [ gnome3.gtkhtml ];
|
||||
|
||||
buildInputs = [ gtk3 glib intltool itstool libxml2 libtool
|
||||
gdk_pixbuf gnome3.defaultIconTheme librsvg db icu
|
||||
gnome3.evolution_data_server libsecret libical gcr
|
||||
webkitgtk shared_mime_info gnome3.gnome_desktop gtkspell3
|
||||
libcanberra_gtk3 bogofilter gnome3.libgdata sqlite
|
||||
gst_all_1.gstreamer gst_all_1.gst-plugins-base p11_kit
|
||||
nss nspr libnotify procps highlight gnome3.libgweather
|
||||
gnome3.gsettings_desktop_schemas dconf
|
||||
gnome3.libgnome_keyring gnome3.glib_networking ];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||
|
||||
configureFlags = [ "--disable-spamassassin" "--disable-pst-import" "--disable-autoar"
|
||||
"--disable-libcryptui" ];
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${nspr.dev}/include/nspr -I${nss.dev}/include/nss -I${glib.dev}/include/gio-unix-2.0";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Evolution;
|
||||
description = "Personal information management application that provides integrated mail, calendaring and address book functionality";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.lgpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "evolution-3.20.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/evolution/3.20/evolution-3.20.5.tar.xz;
|
||||
sha256 = "2e13551ce0996963506f0bdde5e01c3b8aa0622849a272ff12877cd595baeb6e";
|
||||
};
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
{ stdenv, fetchurl, glib, pkgconfig, gnome3, intltool, itstool, libxml2, libarchive
|
||||
, attr, bzip2, acl, wrapGAppsHook, librsvg, gdk_pixbuf, libnotify, nautilus }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||
|
||||
buildInputs = [ glib gnome3.gtk intltool itstool libxml2 libarchive
|
||||
gnome3.defaultIconTheme attr bzip2 acl gdk_pixbuf librsvg
|
||||
gnome3.dconf libnotify nautilus ];
|
||||
|
||||
installFlags = [ "nautilus_extensiondir=$(out)/lib/nautilus/extensions-3.0" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/FileRoller;
|
||||
description = "Archive manager for the GNOME desktop environment";
|
||||
platforms = platforms.linux;
|
||||
maintainers = gnome3.maintainers;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "file-roller-3.20.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/file-roller/3.20/file-roller-3.20.3.tar.xz;
|
||||
sha256 = "6b5c2de4c6bd52318cacd2a398cdfa45a5f1df8a77c6652a38a6a1d3e53644e9";
|
||||
};
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, enchant, isocodes
|
||||
, pkgconfig, gtk3, glib
|
||||
, bash, wrapGAppsHook, itstool, libsoup, libxml2
|
||||
, gnome3, librsvg, gdk_pixbuf, file, gspell }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||
|
||||
buildInputs = [ gtk3 glib intltool itstool enchant isocodes
|
||||
gdk_pixbuf gnome3.defaultIconTheme librsvg libsoup
|
||||
gnome3.libpeas gnome3.gtksourceview libxml2
|
||||
gnome3.gsettings_desktop_schemas gnome3.dconf file gspell ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ gnome3.libpeas gnome3.gtksourceview ]}")
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Gedit;
|
||||
description = "Official text editor of the GNOME desktop environment";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "gedit-3.20.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gedit/3.20/gedit-3.20.2.tar.xz;
|
||||
sha256 = "32a1276a71a0d4a5af4e20a87bc273170ba8e075fc1ca7f51c8d3a6c150463f8";
|
||||
};
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, python
|
||||
, pkgconfig, gtk3, glib
|
||||
, makeWrapper, itstool, libxml2, docbook_xsl
|
||||
, gnome3, librsvg, gdk_pixbuf, libxslt }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
|
||||
|
||||
buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 python
|
||||
gnome3.gsettings_desktop_schemas makeWrapper docbook_xsl
|
||||
gdk_pixbuf gnome3.defaultIconTheme librsvg libxslt ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
preFixup = ''
|
||||
wrapProgram "$out/bin/glade" \
|
||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
||||
--prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Glade;
|
||||
description = "User interface designer for GTK+ applications";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.lgpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "glade-3.20.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/glade/3.20/glade-3.20.0.tar.xz;
|
||||
sha256 = "82d96dca5dec40ee34e2f41d49c13b4ea50da8f32a3a49ca2da802ff14dc18fe";
|
||||
};
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
{ stdenv, fetchurl, makeWrapper, pkgconfig, intltool, itstool, libvirt-glib
|
||||
, glib, gobjectIntrospection, libxml2, gtk3, gtkvnc, libvirt, spice_gtk
|
||||
, spice_protocol, libuuid, libsoup, libosinfo, systemd, tracker, vala_0_32
|
||||
, libcap_ng, libcap, yajl, gmp, gdbm, cyrus_sasl, gnome3, librsvg
|
||||
, desktop_file_utils, mtools, cdrkit, libcdio, numactl, xen
|
||||
, libusb, libarchive, acl, libgudev, qemu
|
||||
}:
|
||||
|
||||
# TODO: ovirt (optional)
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
buildInputs = [
|
||||
makeWrapper pkgconfig intltool itstool libvirt-glib glib
|
||||
gobjectIntrospection libxml2 gtk3 gtkvnc libvirt spice_gtk spice_protocol
|
||||
libuuid libsoup libosinfo systemd tracker vala_0_32 libcap_ng libcap yajl gmp
|
||||
gdbm cyrus_sasl gnome3.defaultIconTheme libusb libarchive
|
||||
librsvg desktop_file_utils acl libgudev numactl xen
|
||||
];
|
||||
|
||||
preFixup = ''
|
||||
for prog in "$out/bin/"*; do
|
||||
wrapProgram "$prog" \
|
||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
||||
--prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
|
||||
--prefix PATH : "${stdenv.lib.makeBinPath [ mtools cdrkit libcdio qemu ]}"
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Simple GNOME 3 application to access remote or virtual systems";
|
||||
homepage = https://wiki.gnome.org/action/show/Apps/Boxes;
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ bjornfor ];
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "gnome-boxes-3.20.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gnome-boxes/3.20/gnome-boxes-3.20.2.tar.xz;
|
||||
sha256 = "c0379ce1de9d2a43a6875cbe1f2ef7ef69161b284926d59c44246a9142130fc5";
|
||||
};
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
|
||||
, intltool, evolution_data_server, sqlite, libxml2, libsoup
|
||||
, glib, gnome_online_accounts }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
|
||||
|
||||
buildInputs = [
|
||||
pkgconfig gtk3 wrapGAppsHook intltool evolution_data_server
|
||||
sqlite libxml2 libsoup glib gnome3.defaultIconTheme gnome_online_accounts
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Calendar;
|
||||
description = "Simple and beautiful calendar application for GNOME";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "gnome-calendar-3.20.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gnome-calendar/3.20/gnome-calendar-3.20.2.tar.xz;
|
||||
sha256 = "f132cff56310b83cf086628e949685b04cdaf872e989d67dbb8a3e4e9943deee";
|
||||
};
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
|
||||
, intltool, gjs, gdk_pixbuf, librsvg }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
buildInputs = [
|
||||
pkgconfig gtk3 wrapGAppsHook intltool gjs gdk_pixbuf
|
||||
librsvg gnome3.defaultIconTheme
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Design/Apps/CharacterMap;
|
||||
description = "Simple utility application to find and insert unusual characters";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "gnome-characters-3.20.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gnome-characters/3.20/gnome-characters-3.20.1.tar.xz;
|
||||
sha256 = "6891eed27a5b023200992540266a9216d081eef890d6d0836380dc3c0033857c";
|
||||
};
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, libgweather, libnotify
|
||||
, pkgconfig, gtk3, glib, gsound
|
||||
, makeWrapper, itstool, libcanberra_gtk3, libtool
|
||||
, gnome3, librsvg, gdk_pixbuf, geoclue2, wrapGAppsHook }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
buildInputs = [ pkgconfig gtk3 glib intltool itstool libcanberra_gtk3
|
||||
gnome3.gsettings_desktop_schemas makeWrapper
|
||||
gdk_pixbuf gnome3.defaultIconTheme librsvg
|
||||
gnome3.gnome_desktop gnome3.geocode_glib geoclue2
|
||||
libgweather libnotify libtool gsound
|
||||
wrapGAppsHook ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Clocks;
|
||||
description = "Clock application designed for GNOME 3";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "gnome-clocks-3.20.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gnome-clocks/3.20/gnome-clocks-3.20.1.tar.xz;
|
||||
sha256 = "92ad7b409c5118464af49ca28262ae43e9d377435ad2b10048b23e6e11ae476f";
|
||||
};
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, evince, gjs
|
||||
, pkgconfig, gtk3, glib
|
||||
, makeWrapper, itstool, libxslt, webkitgtk
|
||||
, gnome3, librsvg, gdk_pixbuf, libsoup, docbook_xsl
|
||||
, gobjectIntrospection, json_glib, inkscape, poppler_utils
|
||||
, gmp, desktop_file_utils, wrapGAppsHook }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
configureFlags = [ "--enable-getting-started" ];
|
||||
|
||||
buildInputs = [ pkgconfig gtk3 glib intltool itstool libxslt
|
||||
docbook_xsl desktop_file_utils inkscape poppler_utils
|
||||
gnome3.gsettings_desktop_schemas makeWrapper gmp
|
||||
gdk_pixbuf gnome3.defaultIconTheme librsvg evince
|
||||
libsoup webkitgtk gjs gobjectIntrospection gnome3.rest
|
||||
gnome3.tracker gnome3.libgdata gnome3.gnome_online_accounts
|
||||
gnome3.gnome_desktop gnome3.libzapojit json_glib
|
||||
wrapGAppsHook ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
preFixup = ''
|
||||
substituteInPlace $out/bin/gnome-documents --replace gapplication "${glib.dev}/bin/gapplication"
|
||||
|
||||
gappsWrapperArgs+=(--run 'if [ -z "$XDG_CACHE_DIR" ]; then XDG_CACHE_DIR=$HOME/.cache; fi; if [ -w "$XDG_CACHE_DIR/.." ]; then mkdir -p "$XDG_CACHE_DIR/gnome-documents"; fi')
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Documents;
|
||||
description = "Document manager application designed to work with GNOME 3";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "gnome-documents-3.20.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gnome-documents/3.20/gnome-documents-3.20.0.tar.xz;
|
||||
sha256 = "a5fa496c5e80eccb8d2e5bba7f4d7dc4cc6c9f53d5bc028402428771be1237d2";
|
||||
};
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
{ stdenv, fetchurl, gnome3, intltool, itstool, libxml2 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
buildInputs = [ intltool itstool libxml2 ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://live.gnome.org/DocumentationProject;
|
||||
description = "Help a new user get started in GNOME";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.cc-by-sa-30;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "gnome-getting-started-docs-3.20.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gnome-getting-started-docs/3.20/gnome-getting-started-docs-3.20.0.tar.xz;
|
||||
sha256 = "0dc3a69d646c3ee3c6ef1a34dbc7f469d66275bd20215071fd495ae5900fcfdc";
|
||||
};
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
|
||||
, intltool, itstool, libxml2, systemd }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
configureFlags = [ "--disable-tests" ];
|
||||
|
||||
buildInputs = [
|
||||
pkgconfig gtk3 wrapGAppsHook intltool itstool libxml2
|
||||
systemd gnome3.defaultIconTheme
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Logs;
|
||||
description = "A log viewer for the systemd journal";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "gnome-logs-3.20.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gnome-logs/3.20/gnome-logs-3.20.1.tar.xz;
|
||||
sha256 = "b797841faac4e176c64497837de27b1b953d16d2482e8a773a48b38117b1367e";
|
||||
};
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
{ stdenv, fetchurl, intltool, pkgconfig, gnome3, gtk3
|
||||
, gobjectIntrospection, gdk_pixbuf, librsvg, autoreconfHook
|
||||
, geoclue2, wrapGAppsHook, folks, libchamplain, gfbgraph, file, libsoup
|
||||
, webkitgtk }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
buildInputs = [ pkgconfig intltool gobjectIntrospection wrapGAppsHook
|
||||
gtk3 geoclue2 gnome3.gjs gnome3.libgee folks gfbgraph
|
||||
gnome3.geocode_glib libchamplain file libsoup
|
||||
gdk_pixbuf librsvg autoreconfHook
|
||||
gnome3.gsettings_desktop_schemas gnome3.evolution_data_server
|
||||
gnome3.gnome_online_accounts gnome3.defaultIconTheme
|
||||
webkitgtk ];
|
||||
|
||||
patches = [ ./soup.patch ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Maps;
|
||||
description = "A map application for GNOME 3";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
--- gnome-maps-3.18.0/configure.ac.orig 2015-09-24 18:38:31.912498368 +0200
|
||||
+++ gnome-maps-3.18.0/configure.ac 2015-09-24 18:38:40.783320413 +0200
|
||||
@@ -50,8 +50,9 @@
|
||||
folks >= $FOLKS_MIN_VERSION
|
||||
geocode-glib-1.0 >= $GEOCODE_MIN_VERSION
|
||||
champlain-0.12 >= $CHAMPLAIN_MIN_VERSION
|
||||
libxml-2.0
|
||||
rest-0.7
|
||||
+ libsoup-2.4
|
||||
])
|
||||
AC_SUBST(GNOME_MAPS_LIB_CFLAGS)
|
||||
AC_SUBST(GNOME_MAPS_LIB_LIBS)
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "gnome-maps-3.20.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gnome-maps/3.20/gnome-maps-3.20.2.tar.xz;
|
||||
sha256 = "e860144795339fdbb2f1239c4db092ad12beb9acaa3f3f8aa1d935c36d86bc3f";
|
||||
};
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, gdk_pixbuf, tracker
|
||||
, libxml2, python3Packages, libnotify, wrapGAppsHook
|
||||
, pkgconfig, gtk3, glib, cairo
|
||||
, makeWrapper, itstool, gnome3, librsvg, gst_all_1 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
|
||||
|
||||
buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.libmediaart
|
||||
gdk_pixbuf gnome3.defaultIconTheme librsvg python3Packages.python
|
||||
gnome3.grilo gnome3.grilo-plugins gnome3.totem-pl-parser libxml2 libnotify
|
||||
python3Packages.pycairo python3Packages.dbus-python python3Packages.requests2
|
||||
python3Packages.pygobject3 gst_all_1.gstreamer gst_all_1.gst-plugins-base
|
||||
gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad wrapGAppsHook
|
||||
gnome3.gsettings_desktop_schemas makeWrapper tracker ];
|
||||
|
||||
wrapPrefixVariables = [ "PYTHONPATH" ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Music;
|
||||
description = "Music player and management application for the GNOME desktop environment";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "gnome-music-3.20.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gnome-music/3.20/gnome-music-3.20.2.tar.xz;
|
||||
sha256 = "ca328bfd85ba8cb651e4e3c5d56499b111cb95b4f3e9b2e482cca7830213c7a0";
|
||||
};
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
|
||||
, libgtop, intltool, itstool, libxml2, nmap, inetutils }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "gnome-nettool-3.8.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/gnome-nettool/3.8/${name}.tar.xz";
|
||||
sha256 = "1c9cvzvyqgfwa5zzyvp7118pkclji62fkbb33g4y9sp5kw6m397h";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
pkgconfig gtk3 wrapGAppsHook libgtop intltool itstool libxml2
|
||||
gnome3.defaultIconTheme
|
||||
];
|
||||
|
||||
propagatedUserEnvPkgs = [ nmap inetutils ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://projects.gnome.org/gnome-network;
|
||||
description = "A collection of networking tools";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, exempi, libxml2
|
||||
, pkgconfig, gtk3, glib
|
||||
, makeWrapper, itstool, gegl, babl, lcms2
|
||||
, desktop_file_utils, gmp, libmediaart, wrapGAppsHook
|
||||
, gnome3, librsvg, gdk_pixbuf, libexif, gexiv2 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
# doCheck = true;
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
|
||||
|
||||
buildInputs = [ pkgconfig gtk3 glib intltool itstool gegl babl gnome3.libgdata
|
||||
gnome3.gsettings_desktop_schemas makeWrapper gmp libmediaart
|
||||
gdk_pixbuf gnome3.defaultIconTheme librsvg exempi
|
||||
gnome3.gfbgraph gnome3.grilo-plugins gnome3.grilo
|
||||
gnome3.gnome_online_accounts gnome3.gnome_desktop
|
||||
lcms2 libexif gnome3.tracker libxml2 desktop_file_utils
|
||||
wrapGAppsHook gexiv2 ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Photos;
|
||||
description = "Photos is an application to access, organize and share your photos with GNOME 3";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "gnome-photos-3.20.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gnome-photos/3.20/gnome-photos-3.20.3.tar.xz;
|
||||
sha256 = "d1dd8bd8178dd1d0120abd2ff3e959fb1199f4e1751558f925ce7f1278548996";
|
||||
};
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook, gjs
|
||||
, libgweather, intltool, itstool, geoclue2 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
buildInputs = [
|
||||
pkgconfig gtk3 wrapGAppsHook gjs intltool itstool
|
||||
libgweather gnome3.defaultIconTheme geoclue2
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Weather;
|
||||
description = "Access current weather conditions and forecasts";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "gnome-weather-3.20.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gnome-weather/3.20/gnome-weather-3.20.1.tar.xz;
|
||||
sha256 = "e310ecd56f396ac0e8e5652ac8b63258720034e23afbf32fbb2d509f25bbb2b6";
|
||||
};
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
{ stdenv, fetchurl, glib, pkgconfig, gnome3, intltool
|
||||
, gobjectIntrospection, makeWrapper }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "nautilus-sendto-${version}";
|
||||
|
||||
version = "3.8.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/nautilus-sendto/3.8/${name}.tar.xz";
|
||||
sha256 = "03fa46bff271acdbdedab6243b2a84e5ed3daa19c81b69d087b3e852c8fe5dab";
|
||||
};
|
||||
|
||||
buildInputs = [ glib pkgconfig gobjectIntrospection intltool makeWrapper ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Integrates Evolution and Pidgin into the Nautilus file manager";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, gdk_pixbuf, adwaita-icon-theme
|
||||
, telepathy_glib, gjs, itstool, telepathy_idle
|
||||
, pkgconfig, gtk3, glib, librsvg, gnome3, wrapGAppsHook }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
propagatedUserEnvPkgs = [ telepathy_idle ];
|
||||
|
||||
buildInputs = [ pkgconfig gtk3 glib intltool itstool adwaita-icon-theme wrapGAppsHook
|
||||
telepathy_glib gjs gdk_pixbuf librsvg ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Polari;
|
||||
description = "IRC chat client designed to integrate with the GNOME desktop";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "polari-3.20.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/polari/3.20/polari-3.20.2.tar.xz;
|
||||
sha256 = "4b7641e54ee8a2e6018e1b4cea4802d94d90c2f09b9558e0a767838effd1347f";
|
||||
};
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, vala_0_32
|
||||
, pkgconfig, gtk3, glib
|
||||
, makeWrapper, itstool, gnupg, libsoup
|
||||
, gnome3, librsvg, gdk_pixbuf, gpgme
|
||||
, libsecret, avahi, p11_kit, openssh }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
|
||||
|
||||
buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.gcr
|
||||
gnome3.gsettings_desktop_schemas makeWrapper gnupg
|
||||
gdk_pixbuf gnome3.defaultIconTheme librsvg gpgme
|
||||
libsecret avahi libsoup p11_kit vala_0_32 gnome3.gcr
|
||||
openssh ];
|
||||
|
||||
preFixup = ''
|
||||
wrapProgram "$out/bin/seahorse" \
|
||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
||||
--prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Seahorse;
|
||||
description = "Application for managing encryption keys and passwords in the GnomeKeyring";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "seahorse-3.20.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/seahorse/3.20/seahorse-3.20.0.tar.xz;
|
||||
sha256 = "e2b07461ed54a8333e5628e9b8e517ec2b731068377bf376570aad998274c6df";
|
||||
};
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, vte, libxml2, gtkvnc, intltool
|
||||
, libsecret, itstool, makeWrapper, librsvg }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
buildInputs = [ pkgconfig gtk3 vte libxml2 gtkvnc intltool libsecret
|
||||
itstool makeWrapper gnome3.defaultIconTheme librsvg ];
|
||||
|
||||
preFixup = ''
|
||||
wrapProgram "$out/bin/vinagre" \
|
||||
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:$out/share"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Vinagre;
|
||||
description = "Remote desktop viewer for GNOME";
|
||||
platforms = platforms.linux;
|
||||
maintainers = gnome3.maintainers;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "vinagre-3.20.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/vinagre/3.20/vinagre-3.20.2.tar.xz;
|
||||
sha256 = "5fc78ef9ab9ee7d4e3c50d38d82d9bcbd915191bcf0349d55a2fd56eaa87eaa0";
|
||||
};
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
{ stdenv, fetchurl, pkgconfig, intltool, gnome3
|
||||
, iconnamingutils, gtk, gdk_pixbuf, librsvg, hicolor_icon_theme }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
# For convenience, we can specify adwaita-icon-theme only in packages
|
||||
propagatedBuildInputs = [ hicolor_icon_theme ];
|
||||
|
||||
buildInputs = [ gdk_pixbuf librsvg ];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig intltool iconnamingutils gtk ];
|
||||
|
||||
# remove a tree of dirs with no files within
|
||||
postInstall = '' rm -rf "$out/locale" '';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
platforms = platforms.linux;
|
||||
maintainers = gnome3.maintainers;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "adwaita-icon-theme-3.20";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/adwaita-icon-theme/3.20/adwaita-icon-theme-3.20.tar.xz;
|
||||
sha256 = "7a0a887349f340dd644032f89d81264b694c4b006bd51af1c2c368d431e7ae35";
|
||||
};
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, vala_0_32, libgtop
|
||||
, pkgconfig, gtk3, glib
|
||||
, bash, makeWrapper, itstool, libxml2
|
||||
, gnome3, librsvg, gdk_pixbuf, file }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
|
||||
|
||||
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
|
||||
|
||||
buildInputs = [ vala_0_32 pkgconfig gtk3 glib libgtop intltool itstool libxml2
|
||||
gnome3.gsettings_desktop_schemas makeWrapper file
|
||||
gdk_pixbuf gnome3.defaultIconTheme librsvg ];
|
||||
|
||||
preFixup = ''
|
||||
wrapProgram "$out/bin/baobab" \
|
||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
||||
--prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Baobab;
|
||||
description = "Graphical application to analyse disk usage in any Gnome environment";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "baobab-3.20.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/baobab/3.20/baobab-3.20.1.tar.xz;
|
||||
sha256 = "e9dff12a76b0d730ce224215860512eb0188280c622faf186937563b96249d1f";
|
||||
};
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
{ fetchurl, stdenv, pkgconfig, gnome3, clutter, dbus, pythonPackages, libxml2, autoconf
|
||||
, libxklavier, libXtst, gtk2, intltool, libxslt, at_spi2_core, automake114x }:
|
||||
|
||||
let
|
||||
majorVersion = "0.4";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "caribou-${majorVersion}.18.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/caribou/${majorVersion}/${name}.tar.xz";
|
||||
sha256 = "0l1ikx56ddgayvny3s2xv8hs3p23xsclw4zljs3cczv4b89dzymf";
|
||||
};
|
||||
|
||||
buildInputs = with gnome3;
|
||||
[ glib pkgconfig gtk clutter at_spi2_core dbus pythonPackages.python automake114x
|
||||
pythonPackages.pygobject3 libxml2 libXtst gtk2 intltool libxslt autoconf ];
|
||||
|
||||
propagatedBuildInputs = [ gnome3.libgee libxklavier ];
|
||||
|
||||
preBuild = ''
|
||||
patchShebangs .
|
||||
substituteInPlace libcaribou/Makefile.am --replace "--shared-library=libcaribou.so.0" "--shared-library=$out/lib/libcaribou.so.0"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
platforms = platforms.linux;
|
||||
maintainers = gnome3.maintainers;
|
||||
};
|
||||
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
{ stdenv, fetchurl, vala_0_32, libxslt, pkgconfig, glib, dbus_glib, gnome3
|
||||
, libxml2, intltool, docbook_xsl_ns, docbook_xsl, wrapGAppsHook }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||
|
||||
buildInputs = [ vala_0_32 libxslt glib dbus_glib gnome3.gtk libxml2 gnome3.defaultIconTheme
|
||||
intltool docbook_xsl docbook_xsl_ns gnome3.dconf ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
platforms = platforms.linux;
|
||||
maintainers = gnome3.maintainers;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "dconf-editor-3.20.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/dconf-editor/3.20/dconf-editor-3.20.3.tar.xz;
|
||||
sha256 = "a8721499a277550b28d8dd94dafbea6efeb95fa153020da10603d0d4d628c579";
|
||||
};
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
{ stdenv, fetchurl, vala_0_32, libxslt, pkgconfig, glib, dbus_glib, gnome3
|
||||
, libxml2, intltool, docbook_xsl_ns, docbook_xsl, makeWrapper }:
|
||||
|
||||
let
|
||||
majorVersion = "0.24";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "dconf-${version}";
|
||||
version = "${majorVersion}.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/dconf/${majorVersion}/${name}.tar.xz";
|
||||
sha256 = "4373e0ced1f4d7d68d518038796c073696280e22957babb29feb0267c630fec2";
|
||||
};
|
||||
|
||||
buildInputs = [ vala_0_32 libxslt pkgconfig glib dbus_glib gnome3.gtk libxml2
|
||||
intltool docbook_xsl docbook_xsl_ns makeWrapper ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
platforms = platforms.linux;
|
||||
maintainers = gnome3.maintainers;
|
||||
};
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib
|
||||
, file, librsvg, gnome3, gdk_pixbuf
|
||||
, dbus_glib, dbus_libs, telepathy_glib, telepathy_farstream
|
||||
, clutter_gtk, clutter-gst, gst_all_1, cogl, gnome_online_accounts
|
||||
, gcr, libsecret, folks, libpulseaudio, telepathy_mission_control
|
||||
, telepathy_logger, libnotify, clutter, libsoup, gnutls
|
||||
, evolution_data_server
|
||||
, libcanberra_gtk3, p11_kit, farstream, libtool, shared_mime_info
|
||||
, bash, makeWrapper, itstool, libxml2, libxslt, icu, libgee }:
|
||||
|
||||
# TODO: enable more features
|
||||
|
||||
let
|
||||
majorVersion = "3.12";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "empathy-${majorVersion}.11";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/empathy/${majorVersion}/${name}.tar.xz";
|
||||
sha256 = "11yl8msyf017197fm6h15yw159yjp9i08566l967yashbx7gzr6i";
|
||||
};
|
||||
|
||||
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard
|
||||
gnome_online_accounts shared_mime_info ];
|
||||
propagatedBuildInputs = [ folks telepathy_logger evolution_data_server
|
||||
telepathy_mission_control ];
|
||||
buildInputs = [ pkgconfig gtk3 glib webkitgtk intltool itstool
|
||||
libxml2 libxslt icu file makeWrapper
|
||||
telepathy_glib clutter_gtk clutter-gst cogl
|
||||
gst_all_1.gstreamer gst_all_1.gst-plugins-base
|
||||
gcr libsecret libpulseaudio gnome3.yelp_xsl gdk_pixbuf
|
||||
libnotify clutter libsoup gnutls libgee p11_kit
|
||||
libcanberra_gtk3 telepathy_farstream farstream
|
||||
gnome3.defaultIconTheme gnome3.gsettings_desktop_schemas
|
||||
file libtool librsvg ];
|
||||
|
||||
NIX_CFLAGS_COMPILE = [ "-I${dbus_glib.dev}/include/dbus-1.0"
|
||||
"-I${dbus_libs.dev}/include/dbus-1.0"
|
||||
"-I${dbus_libs.dev}/lib/dbus-1.0/include" ];
|
||||
|
||||
preFixup = ''
|
||||
for f in $out/bin/* $out/libexec/*; do
|
||||
wrapProgram $f \
|
||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
||||
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Empathy;
|
||||
description = "Messaging program which supports text, voice, video chat, and file transfers over many different protocols";
|
||||
maintainers = gnome3.maintainers;
|
||||
# TODO: license = [ licenses.gpl2 licenses.lgpl2 ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
{ fetchurl, stdenv, intltool, pkgconfig, itstool, libxml2, libjpeg, gnome3
|
||||
, shared_mime_info, wrapGAppsHook, librsvg, libexif }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||
|
||||
buildInputs = with gnome3;
|
||||
[ intltool itstool libxml2 libjpeg gtk glib libpeas librsvg
|
||||
gsettings_desktop_schemas shared_mime_info adwaita-icon-theme
|
||||
gnome_desktop libexif dconf ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/EyeOfGnome;
|
||||
platforms = platforms.linux;
|
||||
description = "GNOME image viewer";
|
||||
maintainers = gnome3.maintainers;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "eog-3.20.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/eog/3.20/eog-3.20.4.tar.xz;
|
||||
sha256 = "1qsv3brhi8l8fr22nd3d0fwq5xhwspqw0bammhkkq3ga0z6791wn";
|
||||
};
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
{ stdenv, intltool, fetchurl, pkgconfig, gtk3, glib, nspr, icu
|
||||
, bash, wrapGAppsHook, gnome3, libwnck3, libxml2, libxslt, libtool
|
||||
, webkitgtk214x, libsoup, glib_networking, libsecret, gnome_desktop, libnotify, p11_kit
|
||||
, sqlite, gcr, avahi, nss, isocodes, itstool, file, which
|
||||
, gdk_pixbuf, librsvg, gnome_common, gst_all_1 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (import ./src.nix fetchurl) name src;
|
||||
|
||||
# Tests need an X display
|
||||
configureFlags = [ "--disable-static --disable-tests" ];
|
||||
|
||||
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig file wrapGAppsHook ];
|
||||
|
||||
buildInputs = [ gtk3 glib intltool libwnck3 libxml2 libxslt pkgconfig file
|
||||
webkitgtk214x libsoup libsecret gnome_desktop libnotify libtool
|
||||
sqlite isocodes nss itstool p11_kit nspr icu gnome3.yelp_tools
|
||||
gdk_pixbuf gnome3.defaultIconTheme librsvg which gnome_common
|
||||
gcr avahi gnome3.gsettings_desktop_schemas gnome3.dconf
|
||||
gnome3.glib_networking gst_all_1.gstreamer gst_all_1.gst-plugins-base
|
||||
gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad gst_all_1.gst-plugins-ugly
|
||||
gst_all_1.gst-libav];
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${nspr.dev}/include/nspr -I${nss.dev}/include/nss -I${glib.dev}/include/gio-unix-2.0";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/Apps/Epiphany;
|
||||
description = "WebKit based web browser for GNOME";
|
||||
maintainers = gnome3.maintainers;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Autogenerated by maintainers/scripts/gnome.sh update
|
||||
|
||||
fetchurl: {
|
||||
name = "epiphany-3.20.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/epiphany/3.20/epiphany-3.20.4.tar.xz;
|
||||
sha256 = "051av2xcg7ii2y273vqmdkzanygws9qsaq7ks0070y06d4rhl6xy";
|
||||
};
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue