mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-01 23:22:37 +00:00
Merge branch 'master.upstream' into staging.upstream
This commit is contained in:
commit
a2da9cfcaf
@ -179,6 +179,15 @@ nix-env -f "<nixpkgs>" -iA haskellPackages.cabal-install
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>locate</literal> service no longer indexes the Nix store
|
||||
by default, preventing packages with potentially numerous versions from
|
||||
cluttering the output. Indexing the store can be activated by setting
|
||||
<literal>services.locate.includeStore = true</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
|
@ -52,9 +52,9 @@ in
|
||||
systemd.services.bumblebeed = {
|
||||
description = "Bumblebee Hybrid Graphics Switcher";
|
||||
wantedBy = [ "display-manager.service" ];
|
||||
script = "bumblebeed --use-syslog -g ${config.hardware.bumblebee.group}";
|
||||
path = [ kernel.bbswitch bumblebee ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${bumblebee}/bin/bumblebeed --use-syslog -g ${config.hardware.bumblebee.group}";
|
||||
Restart = "always";
|
||||
RestartSec = 60;
|
||||
CPUSchedulingPolicy = "idle";
|
||||
|
@ -227,6 +227,7 @@
|
||||
riemanntools = 203;
|
||||
subsonic = 204;
|
||||
riak = 205;
|
||||
shout = 206;
|
||||
|
||||
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
||||
|
||||
@ -432,6 +433,7 @@
|
||||
riemanntools = 203;
|
||||
subsonic = 204;
|
||||
riak = 205;
|
||||
#shout = 206; #unused
|
||||
|
||||
# When adding a gid, make sure it doesn't match an existing
|
||||
# uid. Users and groups with the same name should have equal
|
||||
|
@ -35,7 +35,7 @@ in {
|
||||
type = types.listOf types.str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
Extra flags to append to <command>updatedb</command>.
|
||||
Extra flags to pass to <command>updatedb</command>.
|
||||
'';
|
||||
};
|
||||
|
||||
@ -56,6 +56,14 @@ in {
|
||||
'';
|
||||
};
|
||||
|
||||
includeStore = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to include <filename>/nix/store<filename> in the locate database.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
@ -63,7 +71,6 @@ in {
|
||||
###### implementation
|
||||
|
||||
config = {
|
||||
|
||||
systemd.services.update-locatedb =
|
||||
{ description = "Update Locate Database";
|
||||
path = [ pkgs.su ];
|
||||
@ -71,8 +78,9 @@ in {
|
||||
''
|
||||
mkdir -m 0755 -p $(dirname ${toString cfg.output})
|
||||
exec updatedb \
|
||||
--localuser=${cfg.localuser} \
|
||||
--output=${toString cfg.output} ${concatStringsSep " " cfg.extraFlags}
|
||||
--localuser=${cfg.localuser} \
|
||||
${optionalString (!cfg.includeStore) "--prunepaths='/nix/store'"} \
|
||||
--output=${toString cfg.output} ${concatStringsSep " " cfg.extraFlags}
|
||||
'';
|
||||
serviceConfig.Nice = 19;
|
||||
serviceConfig.IOSchedulingClass = "idle";
|
||||
|
@ -328,6 +328,7 @@
|
||||
./services/networking/searx.nix
|
||||
./services/networking/seeks.nix
|
||||
./services/networking/skydns.nix
|
||||
./services/networking/shout.nix
|
||||
./services/networking/spiped.nix
|
||||
./services/networking/sslh.nix
|
||||
./services/networking/ssh/lshd.nix
|
||||
|
@ -76,7 +76,7 @@ in
|
||||
};
|
||||
|
||||
kernelPCRs = mkOption {
|
||||
default = "10,11";
|
||||
default = "8,9,10,11,12";
|
||||
type = types.string;
|
||||
description = "PCR indices used in the TPM for kernel measurements.";
|
||||
};
|
||||
|
@ -8,6 +8,8 @@ let
|
||||
|
||||
homeDir = "/var/lib/gitit";
|
||||
|
||||
toYesNo = b: if b then "yes" else "no";
|
||||
|
||||
gititShared = with cfg.haskellPackages; gitit + "/share/" + pkgs.stdenv.system + "-" + ghc.name + "/" + gitit.pname + "-" + gitit.version;
|
||||
|
||||
gititWithPkgs = hsPkgs: extras: hsPkgs.ghcWithPackages (self: with self; [ gitit ] ++ (extras self));
|
||||
@ -17,9 +19,6 @@ let
|
||||
in writeScript "gitit" ''
|
||||
#!${stdenv.shell}
|
||||
cd $HOME
|
||||
export PATH="${makeSearchPath "bin" (
|
||||
[ git curl ] ++ (if cfg.pdfExport == "yes" then [texLiveFull] else [])
|
||||
)}:$PATH";
|
||||
export NIX_GHC="${env}/bin/ghc"
|
||||
export NIX_GHCPKG="${env}/bin/ghc-pkg"
|
||||
export NIX_GHC_DOCDIR="${env}/share/doc/ghc/html"
|
||||
@ -27,11 +26,7 @@ let
|
||||
${env}/bin/gitit -f ${configFile}
|
||||
'';
|
||||
|
||||
gititOptions = let
|
||||
|
||||
yesNo = types.enum [ "yes" "no" ];
|
||||
|
||||
in {
|
||||
gititOptions = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
@ -202,8 +197,8 @@ let
|
||||
};
|
||||
|
||||
showLhsBirdTracks = mkOption {
|
||||
type = yesNo;
|
||||
default = "no";
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Specifies whether to show Haskell code blocks in "bird style", with
|
||||
"> " at the beginning of each line.
|
||||
@ -283,8 +278,8 @@ let
|
||||
};
|
||||
|
||||
tableOfContents = mkOption {
|
||||
type = yesNo;
|
||||
default = "yes";
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Specifies whether to print a tables of contents (with links to
|
||||
sections) on each wiki page.
|
||||
@ -292,22 +287,18 @@ let
|
||||
};
|
||||
|
||||
plugins = mkOption {
|
||||
type = types.path;
|
||||
type = with types; listOf str;
|
||||
description = ''
|
||||
Specifies a list of plugins to load. Plugins may be specified either
|
||||
by their path or by their module name. If the plugin name starts
|
||||
Specifies a list of plugins to load. Plugins may be specified either
|
||||
by their path or by their module name. If the plugin name starts
|
||||
with Gitit.Plugin., gitit will assume that the plugin is an installed
|
||||
module and will not try to find a source file.
|
||||
Examples:
|
||||
plugins: plugins/DotPlugin.hs, CapitalizeEmphasisPlugin.hs
|
||||
plugins: plugins/DotPlugin
|
||||
plugins: Gitit.Plugin.InterwikiLinks
|
||||
'';
|
||||
};
|
||||
|
||||
useCache = mkOption {
|
||||
type = yesNo;
|
||||
default = "no";
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Specifies whether to cache rendered pages. Note that if use-feed is
|
||||
selected, feeds will be cached regardless of the value of use-cache.
|
||||
@ -338,14 +329,14 @@ let
|
||||
};
|
||||
|
||||
debugMode = mkOption {
|
||||
type = yesNo;
|
||||
default = "no";
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Causes debug information to be logged while gitit is running.";
|
||||
};
|
||||
|
||||
compressResponses = mkOption {
|
||||
type = yesNo;
|
||||
default = "yes";
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Specifies whether HTTP responses should be compressed.";
|
||||
};
|
||||
|
||||
@ -357,16 +348,18 @@ let
|
||||
line of the file should contain two fields, separated by whitespace.
|
||||
The first field is the mime type, the second is a file extension.
|
||||
For example:
|
||||
video/x-ms-wmx wmx
|
||||
<programlisting>
|
||||
video/x-ms-wmx wmx
|
||||
</programlisting>
|
||||
If the file is not found, some simple defaults will be used.
|
||||
'';
|
||||
};
|
||||
|
||||
useReCaptcha = mkOption {
|
||||
type = yesNo;
|
||||
default = "no";
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
If "yes", causes gitit to use the reCAPTCHA service
|
||||
If true, causes gitit to use the reCAPTCHA service
|
||||
(http://recaptcha.net) to prevent bots from creating accounts.
|
||||
'';
|
||||
};
|
||||
@ -471,8 +464,8 @@ let
|
||||
};
|
||||
|
||||
useFeed = mkOption {
|
||||
type = yesNo;
|
||||
default = "no";
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Specifies whether an ATOM feed should be enabled (for the site and
|
||||
for individual pages).
|
||||
@ -484,19 +477,19 @@ let
|
||||
default = null;
|
||||
description = ''
|
||||
The base URL of the wiki, to be used in constructing feed IDs and RPX
|
||||
token_urls. Set this if use-feed is 'yes' or authentication-method
|
||||
token_urls. Set this if useFeed is false or authentication-method
|
||||
is 'rpx'.
|
||||
'';
|
||||
};
|
||||
|
||||
absoluteUrls = mkOption {
|
||||
type = yesNo;
|
||||
default = "no";
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Make wikilinks absolute with respect to the base-url. So, for
|
||||
example, in a wiki served at the base URL '/wiki', on a page
|
||||
Sub/Page, the wikilink '[Cactus]()' will produce a link to
|
||||
'/wiki/Cactus' if absolute-urls is 'yes', and a relative link to
|
||||
'/wiki/Cactus' if absoluteUrls is true, and a relative link to
|
||||
'Cactus' (referring to '/wiki/Sub/Cactus') if absolute-urls is 'no'.
|
||||
'';
|
||||
};
|
||||
@ -514,10 +507,10 @@ let
|
||||
};
|
||||
|
||||
pdfExport = mkOption {
|
||||
type = yesNo;
|
||||
default = "no";
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
If yes, PDF will appear in export options. PDF will be created using
|
||||
If true, PDF will appear in export options. PDF will be created using
|
||||
pdflatex, which must be installed and in the path. Note that PDF
|
||||
exports create significant additional server load.
|
||||
'';
|
||||
@ -537,10 +530,10 @@ let
|
||||
};
|
||||
|
||||
xssSanitize = mkOption {
|
||||
type = yesNo;
|
||||
default = "yes";
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
If yes, all HTML (including that produced by pandoc) is filtered
|
||||
If true, all HTML (including that produced by pandoc) is filtered
|
||||
through xss-sanitize. Set to no only if you trust all of your users.
|
||||
'';
|
||||
};
|
||||
@ -560,7 +553,7 @@ let
|
||||
default-page-type: ${cfg.defaultPageType}
|
||||
math: ${cfg.math}
|
||||
mathjax-script: ${cfg.mathJaxScript}
|
||||
show-lhs-bird-tracks: ${cfg.showLhsBirdTracks}
|
||||
show-lhs-bird-tracks: ${toYesNo cfg.showLhsBirdTracks}
|
||||
templates-dir: ${cfg.templatesDir}
|
||||
log-file: ${cfg.logFile}
|
||||
log-level: ${cfg.logLevel}
|
||||
@ -568,16 +561,16 @@ let
|
||||
no-delete: ${cfg.noDelete}
|
||||
no-edit: ${cfg.noEdit}
|
||||
default-summary: ${cfg.defaultSummary}
|
||||
table-of-contents: ${cfg.tableOfContents}
|
||||
plugins: ${cfg.plugins}
|
||||
use-cache: ${cfg.useCache}
|
||||
table-of-contents: ${toYesNo cfg.tableOfContents}
|
||||
plugins: ${concatStringsSep "," cfg.plugins}
|
||||
use-cache: ${toYesNo cfg.useCache}
|
||||
cache-dir: ${cfg.cacheDir}
|
||||
max-upload-size: ${cfg.maxUploadSize}
|
||||
max-page-size: ${cfg.maxPageSize}
|
||||
debug-mode: ${cfg.debugMode}
|
||||
compress-responses: ${cfg.compressResponses}
|
||||
debug-mode: ${toYesNo cfg.debugMode}
|
||||
compress-responses: ${toYesNo cfg.compressResponses}
|
||||
mime-types-file: ${cfg.mimeTypesFile}
|
||||
use-recaptcha: ${cfg.useReCaptcha}
|
||||
use-recaptcha: ${toYesNo cfg.useReCaptcha}
|
||||
recaptcha-private-key: ${toString cfg.reCaptchaPrivateKey}
|
||||
recaptcha-public-key: ${toString cfg.reCaptchaPublicKey}
|
||||
access-question: ${cfg.accessQuestion}
|
||||
@ -586,14 +579,14 @@ let
|
||||
rpx-key: ${toString cfg.rpxKey}
|
||||
mail-command: ${cfg.mailCommand}
|
||||
reset-password-message: ${cfg.resetPasswordMessage}
|
||||
use-feed: ${cfg.useFeed}
|
||||
use-feed: ${toYesNo cfg.useFeed}
|
||||
base-url: ${toString cfg.baseUrl}
|
||||
absolute-urls: ${cfg.absoluteUrls}
|
||||
absolute-urls: ${toYesNo cfg.absoluteUrls}
|
||||
feed-days: ${toString cfg.feedDays}
|
||||
feed-refresh-time: ${toString cfg.feedRefreshTime}
|
||||
pdf-export: ${cfg.pdfExport}
|
||||
pdf-export: ${toYesNo cfg.pdfExport}
|
||||
pandoc-user-data: ${toString cfg.pandocUserData}
|
||||
xss-sanitize: ${cfg.xssSanitize}
|
||||
xss-sanitize: ${toYesNo cfg.xssSanitize}
|
||||
'';
|
||||
|
||||
in
|
||||
@ -608,7 +601,7 @@ in
|
||||
haskellPackages = mkDefault pkgs.haskellPackages;
|
||||
staticDir = gititShared + "/data/static";
|
||||
templatesDir = gititShared + "/data/templates";
|
||||
plugins = gititShared + "/plugins/Dot.hs";
|
||||
plugins = [ ];
|
||||
};
|
||||
|
||||
users.extraUsers.gitit = {
|
||||
@ -628,8 +621,16 @@ in
|
||||
description = "Git and Pandoc Powered Wiki";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = with pkgs; [ curl ]
|
||||
++ optional cfg.pdfExport texLiveFull
|
||||
++ optional (cfg.repositoryType == "darcs") darcs
|
||||
++ optional (cfg.repositoryType == "mercurial") mercurial
|
||||
++ optional (cfg.repositoryType == "git") git;
|
||||
|
||||
preStart = with cfg; ''
|
||||
preStart = let
|
||||
gm = "gitit@${config.networking.hostName}";
|
||||
in
|
||||
with cfg; ''
|
||||
chown ${uid}:${gid} -R ${homeDir}
|
||||
for dir in ${repositoryPath} ${staticDir} ${templatesDir} ${cacheDir}
|
||||
do
|
||||
@ -641,14 +642,35 @@ in
|
||||
fi
|
||||
done
|
||||
cd ${repositoryPath}
|
||||
if [ ! -d .git ]
|
||||
then
|
||||
${pkgs.git}/bin/git init
|
||||
${pkgs.git}/bin/git config user.email "gitit@${config.networking.hostName}"
|
||||
${pkgs.git}/bin/git config user.name "gitit"
|
||||
chown ${uid}:${gid} -R {repositoryPath}
|
||||
fi
|
||||
cd -
|
||||
${
|
||||
if repositoryType == "darcs" then
|
||||
''
|
||||
if [ ! -d _darcs ]
|
||||
then
|
||||
${pkgs.darcs}/bin/darcs initialize
|
||||
echo "${gm}" > _darcs/prefs/email
|
||||
''
|
||||
else if repositoryType == "mercurial" then
|
||||
''
|
||||
if [ ! -d .hg ]
|
||||
then
|
||||
${pkgs.mercurial}/bin/hg init
|
||||
cat >> .hg/hgrc <<NAMED
|
||||
[ui]
|
||||
username = gitit ${gm}
|
||||
NAMED
|
||||
''
|
||||
else
|
||||
''
|
||||
if [ ! -d .git ]
|
||||
then
|
||||
${pkgs.git}/bin/git init
|
||||
${pkgs.git}/bin/git config user.email "${gm}"
|
||||
${pkgs.git}/bin/git config user.name "gitit"
|
||||
''}
|
||||
chown ${uid}:${gid} -R ${repositoryPath}
|
||||
fi
|
||||
cd -
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
|
@ -51,12 +51,37 @@ let
|
||||
# ganglia_port: 8651
|
||||
'';
|
||||
|
||||
diskConfig = pkgs.writeText "disk.yaml" ''
|
||||
init_config:
|
||||
|
||||
instances:
|
||||
- use_mount: no
|
||||
'';
|
||||
|
||||
networkConfig = pkgs.writeText "network.yaml" ''
|
||||
init_config:
|
||||
|
||||
instances:
|
||||
# Network check only supports one configured instance
|
||||
- collect_connection_state: false
|
||||
excluded_interfaces:
|
||||
- lo
|
||||
- lo0
|
||||
'';
|
||||
|
||||
postgresqlConfig = pkgs.writeText "postgres.yaml" cfg.postgresqlConfig;
|
||||
nginxConfig = pkgs.writeText "nginx.yaml" cfg.nginxConfig;
|
||||
|
||||
mongoConfig = pkgs.writeText "mongo.yaml" cfg.mongoConfig;
|
||||
|
||||
etcfiles =
|
||||
[ { source = ddConf;
|
||||
target = "dd-agent/datadog.conf";
|
||||
}
|
||||
{ source = diskConfig;
|
||||
target = "dd-agent/conf.d/disk.yaml";
|
||||
}
|
||||
{ source = networkConfig;
|
||||
target = "dd-agent/conf.d/network.yaml";
|
||||
} ] ++
|
||||
(optional (cfg.postgresqlConfig != null)
|
||||
{ source = postgresqlConfig;
|
||||
@ -65,6 +90,10 @@ let
|
||||
(optional (cfg.nginxConfig != null)
|
||||
{ source = nginxConfig;
|
||||
target = "dd-agent/conf.d/nginx.yaml";
|
||||
}) ++
|
||||
(optional (cfg.mongoConfig != null)
|
||||
{ source = mongoConfig;
|
||||
target = "dd-agent/conf.d/mongo.yaml";
|
||||
});
|
||||
|
||||
in {
|
||||
@ -106,6 +135,12 @@ in {
|
||||
default = null;
|
||||
type = types.uniq (types.nullOr types.string);
|
||||
};
|
||||
|
||||
mongoConfig = mkOption {
|
||||
description = "MongoDB integration configuration";
|
||||
default = null;
|
||||
type = types.uniq (types.nullOr types.string);
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
@ -123,7 +158,7 @@ in {
|
||||
|
||||
systemd.services.dd-agent = {
|
||||
description = "Datadog agent monitor";
|
||||
path = [ pkgs."dd-agent" pkgs.python pkgs.sysstat pkgs.procps];
|
||||
path = [ pkgs."dd-agent" pkgs.python pkgs.sysstat pkgs.procps ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.dd-agent}/bin/dd-agent foreground";
|
||||
@ -132,7 +167,7 @@ in {
|
||||
Restart = "always";
|
||||
RestartSec = 2;
|
||||
};
|
||||
restartTriggers = [ pkgs.dd-agent ddConf postgresqlConfig nginxConfig ];
|
||||
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig ];
|
||||
};
|
||||
|
||||
systemd.services.dogstatsd = {
|
||||
@ -149,7 +184,7 @@ in {
|
||||
RestartSec = 2;
|
||||
};
|
||||
environment.SSL_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt";
|
||||
restartTriggers = [ pkgs.dd-agent ddConf postgresqlConfig nginxConfig ];
|
||||
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig ];
|
||||
};
|
||||
|
||||
environment.etc = etcfiles;
|
||||
|
80
nixos/modules/services/networking/shout.nix
Normal file
80
nixos/modules/services/networking/shout.nix
Normal file
@ -0,0 +1,80 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.shout;
|
||||
shoutHome = "/var/lib/shout";
|
||||
|
||||
in {
|
||||
options.services.shout = {
|
||||
enable = mkEnableOption "Shout web IRC client";
|
||||
|
||||
private = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Make your shout instance private. You will need to configure user
|
||||
accounts by adding entries in <filename>${shoutHome}/users</filename>.
|
||||
'';
|
||||
};
|
||||
|
||||
host = mkOption {
|
||||
type = types.string;
|
||||
default = "0.0.0.0";
|
||||
description = "IP interface to listen on for http connections.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.int;
|
||||
default = 9000;
|
||||
description = "TCP port to listen on for http connections.";
|
||||
};
|
||||
|
||||
configFile = mkOption {
|
||||
type = types.nullOr types.lines;
|
||||
default = null;
|
||||
description = ''
|
||||
Contents of Shout's <filename>config.js</filename> file. If left empty,
|
||||
Shout will generate from its defaults at first startup.
|
||||
|
||||
Documentation: http://shout-irc.com/docs/server/configuration.html
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
users.extraUsers = singleton {
|
||||
name = "shout";
|
||||
uid = config.ids.uids.shout;
|
||||
description = "Shout daemon user";
|
||||
home = shoutHome;
|
||||
createHome = true;
|
||||
};
|
||||
|
||||
systemd.services.shout = {
|
||||
description = "Shout web IRC client";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
preStart = if isNull cfg.configFile then null
|
||||
else ''
|
||||
ln -sf ${pkgs.writeText "config.js" cfg.configFile} \
|
||||
${shoutHome}/config.js
|
||||
'';
|
||||
script = concatStringsSep " " [
|
||||
"${pkgs.shout}/bin/shout"
|
||||
(if cfg.private then "--private" else "--public")
|
||||
"--port" (toString cfg.port)
|
||||
"--host" (toString cfg.host)
|
||||
"--home" shoutHome
|
||||
];
|
||||
serviceConfig = {
|
||||
User = "shout";
|
||||
ProtectHome = "true";
|
||||
ProtectSystem = "full";
|
||||
PrivateTmp = "true";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{ stdenv, fetchurl, cmake, pkgconfig, intltool, vala, makeWrapper
|
||||
, gtk3, webkitgtk, librsvg, libnotify, sqlite
|
||||
, glib_networking, gsettings_desktop_schemas
|
||||
, glib_networking, gsettings_desktop_schemas, libsoup
|
||||
}:
|
||||
|
||||
let
|
||||
@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
|
||||
buildInputs = [
|
||||
cmake pkgconfig intltool vala makeWrapper
|
||||
webkitgtk librsvg libnotify sqlite
|
||||
(libsoup.override {gnomeSupport = true;})
|
||||
];
|
||||
|
||||
cmakeFlags = ''
|
||||
|
49
pkgs/applications/networking/irc/shout/default.nix
Normal file
49
pkgs/applications/networking/irc/shout/default.nix
Normal file
@ -0,0 +1,49 @@
|
||||
{ stdenv, fetchFromGitHub, callPackage, python, utillinux }:
|
||||
|
||||
with stdenv.lib;
|
||||
|
||||
let
|
||||
nodePackages = callPackage (import ../../../../top-level/node-packages.nix) {
|
||||
neededNatives = [ python ] ++ optional (stdenv.isLinux) utillinux;
|
||||
self = nodePackages;
|
||||
generated = ./package.nix;
|
||||
};
|
||||
|
||||
in nodePackages.buildNodePackage rec {
|
||||
name = "shout-${version}";
|
||||
version = "0.51.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "erming";
|
||||
repo = "shout";
|
||||
rev = "2cee0ea6ef5ee51de0190332f976934b55bbc8e4";
|
||||
sha256 = "1kci1qha1csb9sqb4ig487q612hgdn5lycbcpad7m9r6chn835qg";
|
||||
};
|
||||
|
||||
buildInputs = nodePackages.nativeDeps."shout" or [];
|
||||
|
||||
deps = [
|
||||
nodePackages.by-spec."bcrypt-nodejs"."0.0.3"
|
||||
nodePackages.by-spec."cheerio"."^0.17.0"
|
||||
nodePackages.by-spec."commander"."^2.3.0"
|
||||
nodePackages.by-spec."event-stream"."^3.1.7"
|
||||
nodePackages.by-spec."express"."^4.9.5"
|
||||
nodePackages.by-spec."lodash"."~2.4.1"
|
||||
nodePackages.by-spec."mkdirp"."^0.5.0"
|
||||
nodePackages.by-spec."moment"."~2.7.0"
|
||||
nodePackages.by-spec."read"."^1.0.5"
|
||||
nodePackages.by-spec."request"."^2.51.0"
|
||||
nodePackages.by-spec."slate-irc"."~0.7.3"
|
||||
nodePackages.by-spec."socket.io"."~1.0.6"
|
||||
];
|
||||
|
||||
peerDependencies = [];
|
||||
|
||||
meta = {
|
||||
description = "Web IRC client that you host on your own server";
|
||||
license = licenses.mit;
|
||||
homepage = http://shout-irc.com/;
|
||||
maintainers = with maintainers; [ benley ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
5049
pkgs/applications/networking/irc/shout/package.nix
Normal file
5049
pkgs/applications/networking/irc/shout/package.nix
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,13 +1,13 @@
|
||||
{ stdenv, fetchurl, makeDesktopItem, qt4 }:
|
||||
{ stdenv, fetchurl, ffmpeg, makeDesktopItem, qt4 }:
|
||||
|
||||
let version = "3.4.11"; in
|
||||
let version = "3.5.1"; in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "clipgrab-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
sha256 = "10xxcnib7xkvrx7wma2vbya5fz5s5f6syc9dmr395c83lpcwpxs8";
|
||||
# The "Download" button is a .tar.gz, but there's a .tar.bz2 further down:
|
||||
url = "http://download.clipgrab.de/${name}.tar.bz2";
|
||||
sha256 = "16hm7zv0yhxj7gdd8q462jcxy0jk6hicsk1mkhmarwrhifwsy4g9";
|
||||
# The .tar.bz2 "Download" link is a binary blob, the source is .tar.gz!
|
||||
url = "http://download.clipgrab.de/${name}.tar.gz";
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
@ -20,11 +20,17 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
homepage = http://clipgrab.org/;
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = with platforms; linux;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ nckx ];
|
||||
};
|
||||
|
||||
buildInputs = [ qt4 ];
|
||||
buildInputs = [ ffmpeg qt4 ];
|
||||
|
||||
postPatch = stdenv.lib.optionalString (ffmpeg != null) ''
|
||||
substituteInPlace converter_ffmpeg.cpp \
|
||||
--replace '"ffmpeg"' '"${ffmpeg}/bin/ffmpeg"' \
|
||||
--replace '"ffmpeg ' '"${ffmpeg}/bin/ffmpeg '
|
||||
'';
|
||||
|
||||
configurePhase = ''
|
||||
qmake clipgrab.pro
|
||||
|
@ -1,6 +1,6 @@
|
||||
{ stdenv, fetchurl, pkgconfig
|
||||
, libxml2, libXinerama, libXcursor, libXau, libXrandr
|
||||
, imlib2, pango, libstartup_notification, makeWrapper}:
|
||||
, imlib2, pango, libstartup_notification, makeWrapper }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "openbox-3.5.2";
|
||||
@ -8,8 +8,11 @@ stdenv.mkDerivation rec {
|
||||
buildInputs = [
|
||||
pkgconfig libxml2
|
||||
libXinerama libXcursor libXau libXrandr
|
||||
imlib2 pango libstartup_notification
|
||||
makeWrapper
|
||||
libstartup_notification makeWrapper
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
pango imlib2
|
||||
];
|
||||
|
||||
src = fetchurl {
|
||||
|
@ -8,7 +8,7 @@ let
|
||||
|
||||
# Annoyingly, these files are updated without a change in URL. This means that
|
||||
# builds will start failing every month or so, until the hashes are updated.
|
||||
version = "2015-07-30";
|
||||
version = "2015-08-03";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "geolite-legacy-${version}";
|
||||
@ -27,10 +27,10 @@ stdenv.mkDerivation {
|
||||
"0j5dq06pjrh6d94wczsg6qdys4v164nvp2a7qqrg8w4knh94qp6n";
|
||||
srcGeoIPASNum = fetchDB
|
||||
"asnum/GeoIPASNum.dat.gz" "GeoIPASNum.dat.gz"
|
||||
"16lfazhyhwmh8fyd7pxzwxp5sxszbqw4xdx3avv78hglhyb2ijkw";
|
||||
"04qlh6zr8m5qxl2gcysb721bqlnqrxhngh128zj1w8rhqckjndgj";
|
||||
srcGeoIPASNumv6 = fetchDB
|
||||
"asnum/GeoIPASNumv6.dat.gz" "GeoIPASNumv6.dat.gz"
|
||||
"16jd6f2pwy8616jb78x8j6zda7h0p1bp786y86rq3ipgcw6g0jgn";
|
||||
"06p9wnypnffsmqg5bszwygb73in4gc0h5l26wk0s43pdaldrdrx0";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
inherit version;
|
||||
|
@ -53,7 +53,7 @@ let
|
||||
gegl_0_3 = pkgs.gegl_0_3.override { inherit gtk; };
|
||||
|
||||
version = "3.16";
|
||||
maintainers = with pkgs.lib.maintainers; [ lethalman ];
|
||||
maintainers = with pkgs.lib.maintainers; [ lethalman jgeerds ];
|
||||
|
||||
# Simplify the nixos module and gnome packages
|
||||
defaultIconTheme = adwaita-icon-theme;
|
||||
|
@ -0,0 +1,123 @@
|
||||
From 175218579aa2b4f4974ff1cf4fd1ac93082a4714 Mon Sep 17 00:00:00 2001
|
||||
From: Jascha Geerds <jg@ekby.de>
|
||||
Date: Sat, 1 Aug 2015 21:01:11 +0200
|
||||
Subject: [PATCH 1/1] Search for themes and icons in system data dirs
|
||||
|
||||
---
|
||||
gtweak/tweaks/tweak_group_interface.py | 17 ++++-------------
|
||||
gtweak/tweaks/tweak_group_keymouse.py | 7 ++-----
|
||||
gtweak/utils.py | 17 +++++++++++++++++
|
||||
3 files changed, 23 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/gtweak/tweaks/tweak_group_interface.py b/gtweak/tweaks/tweak_group_interface.py
|
||||
index ed2ad5f..a319907 100644
|
||||
--- a/gtweak/tweaks/tweak_group_interface.py
|
||||
+++ b/gtweak/tweaks/tweak_group_interface.py
|
||||
@@ -26,7 +26,7 @@ from gi.repository import Gtk
|
||||
from gi.repository import GLib
|
||||
|
||||
import gtweak
|
||||
-from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file
|
||||
+from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs
|
||||
from gtweak.tweakmodel import Tweak, TWEAK_GROUP_APPEARANCE
|
||||
from gtweak.gshellwrapper import GnomeShellFactory
|
||||
from gtweak.gsettings import GSettingsSetting
|
||||
@@ -46,10 +46,7 @@ class GtkThemeSwitcher(GSettingsComboTweak):
|
||||
|
||||
def _get_valid_themes(self):
|
||||
""" Only shows themes that have variations for gtk+-3 and gtk+-2 """
|
||||
- dirs = ( os.path.join(gtweak.DATA_DIR, "themes"),
|
||||
- os.path.join(GLib.get_user_data_dir(), "themes"),
|
||||
- os.path.join(os.path.expanduser("~"), ".themes"))
|
||||
- valid = walk_directories(dirs, lambda d:
|
||||
+ valid = walk_directories(get_resource_dirs('themes'), lambda d:
|
||||
os.path.exists(os.path.join(d, "gtk-2.0")) and \
|
||||
os.path.exists(os.path.join(d, "gtk-3.0")))
|
||||
return valid
|
||||
@@ -64,10 +61,7 @@ class IconThemeSwitcher(GSettingsComboTweak):
|
||||
**options)
|
||||
|
||||
def _get_valid_icon_themes(self):
|
||||
- dirs = ( os.path.join(gtweak.DATA_DIR, "icons"),
|
||||
- os.path.join(GLib.get_user_data_dir(), "icons"),
|
||||
- os.path.join(os.path.expanduser("~"), ".icons"))
|
||||
- valid = walk_directories(dirs, lambda d:
|
||||
+ valid = walk_directories(get_resource_dirs("icons"), lambda d:
|
||||
os.path.isdir(d) and \
|
||||
os.path.exists(os.path.join(d, "index.theme")))
|
||||
return valid
|
||||
@@ -82,10 +76,7 @@ class CursorThemeSwitcher(GSettingsComboTweak):
|
||||
**options)
|
||||
|
||||
def _get_valid_cursor_themes(self):
|
||||
- dirs = ( os.path.join(gtweak.DATA_DIR, "icons"),
|
||||
- os.path.join(GLib.get_user_data_dir(), "icons"),
|
||||
- os.path.join(os.path.expanduser("~"), ".icons"))
|
||||
- valid = walk_directories(dirs, lambda d:
|
||||
+ valid = walk_directories(get_resource_dirs("icons"), lambda d:
|
||||
os.path.isdir(d) and \
|
||||
os.path.exists(os.path.join(d, "cursors")))
|
||||
return valid
|
||||
diff --git a/gtweak/tweaks/tweak_group_keymouse.py b/gtweak/tweaks/tweak_group_keymouse.py
|
||||
index b56a4f4..3486098 100644
|
||||
--- a/gtweak/tweaks/tweak_group_keymouse.py
|
||||
+++ b/gtweak/tweaks/tweak_group_keymouse.py
|
||||
@@ -20,7 +20,7 @@ import os.path
|
||||
from gi.repository import GLib
|
||||
|
||||
import gtweak
|
||||
-from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default
|
||||
+from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs
|
||||
from gtweak.widgets import ListBoxTweakGroup, GSettingsComboTweak, GSettingsSwitchTweak, GetterSetterSwitchTweak, Title
|
||||
|
||||
class PrimaryPasteTweak(GetterSetterSwitchTweak):
|
||||
@@ -47,10 +47,7 @@ class KeyThemeSwitcher(GSettingsComboTweak):
|
||||
**options)
|
||||
|
||||
def _get_valid_key_themes(self):
|
||||
- dirs = ( os.path.join(gtweak.DATA_DIR, "themes"),
|
||||
- os.path.join(GLib.get_user_data_dir(), "themes"),
|
||||
- os.path.join(os.path.expanduser("~"), ".themes"))
|
||||
- valid = walk_directories(dirs, lambda d:
|
||||
+ valid = walk_directories(get_resource_dirs("themes"), lambda d:
|
||||
os.path.isfile(os.path.join(d, "gtk-3.0", "gtk-keys.css")) and \
|
||||
os.path.isfile(os.path.join(d, "gtk-2.0-key", "gtkrc")))
|
||||
return valid
|
||||
diff --git a/gtweak/utils.py b/gtweak/utils.py
|
||||
index 3d20425..0fcb51d 100644
|
||||
--- a/gtweak/utils.py
|
||||
+++ b/gtweak/utils.py
|
||||
@@ -21,6 +21,7 @@ import tempfile
|
||||
import shutil
|
||||
import subprocess
|
||||
import glob
|
||||
+import itertools
|
||||
|
||||
import gtweak
|
||||
from gtweak.gsettings import GSettingsSetting
|
||||
@@ -114,6 +115,22 @@ def execute_subprocess(cmd_then_args, block=True):
|
||||
stdout, stderr = p.communicate()
|
||||
return stdout, stderr, p.returncode
|
||||
|
||||
+def get_resource_dirs(resource):
|
||||
+ """Returns a list of all known resource dirs for a given resource.
|
||||
+
|
||||
+ :param str resource:
|
||||
+ Name of the resource (e.g. "themes")
|
||||
+ :return:
|
||||
+ A list of resource dirs
|
||||
+ """
|
||||
+ dirs = [os.path.join(dir, resource)
|
||||
+ for dir in itertools.chain(GLib.get_system_data_dirs(),
|
||||
+ (gtweak.DATA_DIR,
|
||||
+ GLib.get_user_data_dir()))]
|
||||
+ dirs += [os.path.join(os.path.expanduser("~"), ".{}".format(resource))]
|
||||
+
|
||||
+ return [dir for dir in dirs if os.path.isdir(dir)]
|
||||
+
|
||||
@singleton
|
||||
class AutostartManager:
|
||||
|
||||
--
|
||||
2.4.5
|
||||
|
@ -0,0 +1,103 @@
|
||||
From edd3203c7b7d5ba596df9f148c443cdfc8a58d88 Mon Sep 17 00:00:00 2001
|
||||
From: Jascha Geerds <jg@ekby.de>
|
||||
Date: Sat, 1 Aug 2015 21:26:57 +0200
|
||||
Subject: [PATCH 1/1] Don't show multiple entries for a single theme
|
||||
|
||||
---
|
||||
gtweak/tweaks/tweak_group_interface.py | 8 ++++----
|
||||
gtweak/tweaks/tweak_group_keymouse.py | 4 ++--
|
||||
gtweak/utils.py | 16 ++++++++++++++++
|
||||
3 files changed, 22 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/gtweak/tweaks/tweak_group_interface.py b/gtweak/tweaks/tweak_group_interface.py
|
||||
index a319907..82c0286 100644
|
||||
--- a/gtweak/tweaks/tweak_group_interface.py
|
||||
+++ b/gtweak/tweaks/tweak_group_interface.py
|
||||
@@ -26,7 +26,7 @@ from gi.repository import Gtk
|
||||
from gi.repository import GLib
|
||||
|
||||
import gtweak
|
||||
-from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs
|
||||
+from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs, get_unique_resources
|
||||
from gtweak.tweakmodel import Tweak, TWEAK_GROUP_APPEARANCE
|
||||
from gtweak.gshellwrapper import GnomeShellFactory
|
||||
from gtweak.gsettings import GSettingsSetting
|
||||
@@ -49,7 +49,7 @@ class GtkThemeSwitcher(GSettingsComboTweak):
|
||||
valid = walk_directories(get_resource_dirs('themes'), lambda d:
|
||||
os.path.exists(os.path.join(d, "gtk-2.0")) and \
|
||||
os.path.exists(os.path.join(d, "gtk-3.0")))
|
||||
- return valid
|
||||
+ return get_unique_resources(valid)
|
||||
|
||||
class IconThemeSwitcher(GSettingsComboTweak):
|
||||
def __init__(self, **options):
|
||||
@@ -64,7 +64,7 @@ class IconThemeSwitcher(GSettingsComboTweak):
|
||||
valid = walk_directories(get_resource_dirs("icons"), lambda d:
|
||||
os.path.isdir(d) and \
|
||||
os.path.exists(os.path.join(d, "index.theme")))
|
||||
- return valid
|
||||
+ return get_unique_resources(valid)
|
||||
|
||||
class CursorThemeSwitcher(GSettingsComboTweak):
|
||||
def __init__(self, **options):
|
||||
@@ -79,7 +79,7 @@ class CursorThemeSwitcher(GSettingsComboTweak):
|
||||
valid = walk_directories(get_resource_dirs("icons"), lambda d:
|
||||
os.path.isdir(d) and \
|
||||
os.path.exists(os.path.join(d, "cursors")))
|
||||
- return valid
|
||||
+ return get_unique_resources(valid)
|
||||
|
||||
class ShellThemeTweak(Gtk.Box, Tweak):
|
||||
|
||||
diff --git a/gtweak/tweaks/tweak_group_keymouse.py b/gtweak/tweaks/tweak_group_keymouse.py
|
||||
index 3486098..9f53425 100644
|
||||
--- a/gtweak/tweaks/tweak_group_keymouse.py
|
||||
+++ b/gtweak/tweaks/tweak_group_keymouse.py
|
||||
@@ -20,7 +20,7 @@ import os.path
|
||||
from gi.repository import GLib
|
||||
|
||||
import gtweak
|
||||
-from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs
|
||||
+from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs, get_unique_resources
|
||||
from gtweak.widgets import ListBoxTweakGroup, GSettingsComboTweak, GSettingsSwitchTweak, GetterSetterSwitchTweak, Title
|
||||
|
||||
class PrimaryPasteTweak(GetterSetterSwitchTweak):
|
||||
@@ -50,7 +50,7 @@ class KeyThemeSwitcher(GSettingsComboTweak):
|
||||
valid = walk_directories(get_resource_dirs("themes"), lambda d:
|
||||
os.path.isfile(os.path.join(d, "gtk-3.0", "gtk-keys.css")) and \
|
||||
os.path.isfile(os.path.join(d, "gtk-2.0-key", "gtkrc")))
|
||||
- return valid
|
||||
+ return get_unique_resources(valid)
|
||||
|
||||
TWEAK_GROUPS = [
|
||||
ListBoxTweakGroup(_("Keyboard and Mouse"),
|
||||
diff --git a/gtweak/utils.py b/gtweak/utils.py
|
||||
index 0fcb51d..ce8e12e 100644
|
||||
--- a/gtweak/utils.py
|
||||
+++ b/gtweak/utils.py
|
||||
@@ -131,6 +131,22 @@ def get_resource_dirs(resource):
|
||||
|
||||
return [dir for dir in dirs if os.path.isdir(dir)]
|
||||
|
||||
+def get_unique_resources(dirs):
|
||||
+ """Filter out duplicated resources.
|
||||
+
|
||||
+ :param list dirs:
|
||||
+ List of resource dirs (e.g. /usr/share/themes/Adwaita)
|
||||
+ :return:
|
||||
+ List of dirs without duplicated resources
|
||||
+ """
|
||||
+ unique_dirs = {}
|
||||
+ for dir in dirs:
|
||||
+ basename = os.path.basename(dir)
|
||||
+ if basename not in unique_dirs:
|
||||
+ unique_dirs[basename] = dir
|
||||
+
|
||||
+ return unique_dirs
|
||||
+
|
||||
@singleton
|
||||
class AutostartManager:
|
||||
|
||||
--
|
||||
2.4.5
|
||||
|
@ -0,0 +1,29 @@
|
||||
From dea8fc3c37c43f4fbbcc658ee995a95b93452b3c Mon Sep 17 00:00:00 2001
|
||||
From: Jascha Geerds <jg@ekby.de>
|
||||
Date: Sun, 2 Aug 2015 12:01:20 +0200
|
||||
Subject: [PATCH 1/1] Create config dir if it doesn't exist
|
||||
|
||||
Otherwise gnome-tweak-tool can't enable the dark theme and fails
|
||||
without a clear error message.
|
||||
---
|
||||
gtweak/gtksettings.py | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/gtweak/gtksettings.py b/gtweak/gtksettings.py
|
||||
index bcec9f1..f39991b 100644
|
||||
--- a/gtweak/gtksettings.py
|
||||
+++ b/gtweak/gtksettings.py
|
||||
@@ -35,6 +35,10 @@ class GtkSettingsManager:
|
||||
def _get_keyfile(self):
|
||||
keyfile = None
|
||||
try:
|
||||
+ config_dir = os.path.dirname(self._path)
|
||||
+ if not os.path.isdir(config_dir):
|
||||
+ os.makedirs(config_dir)
|
||||
+
|
||||
keyfile = GLib.KeyFile()
|
||||
keyfile.load_from_file(self._path, 0)
|
||||
except MemoryError:
|
||||
--
|
||||
2.4.5
|
||||
|
@ -28,12 +28,17 @@ stdenv.mkDerivation rec {
|
||||
preFixup = ''
|
||||
wrapProgram "$out/bin/gnome-tweak-tool" \
|
||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
||||
--prefix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
|
||||
--suffix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
|
||||
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
|
||||
--prefix PYTHONPATH : "$PYTHONPATH:$(toPythonPath $out)"
|
||||
'';
|
||||
|
||||
patches = [ ./find_gsettings.patch ];
|
||||
patches = [
|
||||
./find_gsettings.patch
|
||||
./0001-Search-for-themes-and-icons-in-system-data-dirs.patch
|
||||
./0002-Don-t-show-multiple-entries-for-a-single-theme.patch
|
||||
./0003-Create-config-dir-if-it-doesn-t-exist.patch
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://wiki.gnome.org/action/show/Apps/GnomeTweakTool;
|
||||
|
@ -26,14 +26,6 @@ stdenv.mkDerivation {
|
||||
src = fetchurl {
|
||||
inherit (s) url sha256;
|
||||
};
|
||||
patches = [ ./libffi-prefix.patch ];
|
||||
preConfigure = ''
|
||||
(cd src ; libtoolize -f)
|
||||
(cd src ; autoheader -f)
|
||||
(cd src ; aclocal)
|
||||
(cd src ; automake --add-missing -c)
|
||||
(cd src ; autoconf -f)
|
||||
'';
|
||||
configureFlags = [
|
||||
"--enable-threads"
|
||||
"--with-gmp-prefix=${gmp}"
|
||||
|
@ -1,14 +1,16 @@
|
||||
{stdenv, fetchurl, pkgconfig, libsoup, glib, libxml2}:
|
||||
{ stdenv, fetchurl, pkgconfig, libsoup, glib }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "gssdp-0.12.2.1";
|
||||
name = "gssdp-0.14.11";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/gssdp/0.14/gssdp-0.14.6.tar.xz;
|
||||
sha256 = "1kgakr0rpdpm7nkp4ycka12nndga16wmzim79v1nbcc0j2wxxkws";
|
||||
url = mirror://gnome/sources/gssdp/0.14/gssdp-0.14.11.tar.xz;
|
||||
sha256 = "0njkqr2y7c6linnw4wkc4y2vq5dfkpryqcinbzn0pzhr46psxxbv";
|
||||
};
|
||||
|
||||
buildInputs = [pkgconfig libsoup glib libxml2];
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
buildInputs = [ libsoup ];
|
||||
propagatedBuildInputs = [ glib ];
|
||||
|
||||
meta = {
|
||||
description = "GObject-based API for handling resource discovery and announcement over SSDP";
|
||||
|
@ -1,21 +1,22 @@
|
||||
{ stdenv, fetchurl, gupnp, pkgconfig }:
|
||||
{ stdenv, fetchurl, pkgconfig, gupnp, glib, libxml2 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "gupnp-av-${version}";
|
||||
majorVersion = "0.12";
|
||||
version = "${majorVersion}.4";
|
||||
version = "${majorVersion}.7";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/gupnp-av/${majorVersion}/gupnp-av-${version}.tar.xz";
|
||||
sha256 = "0nvsvpiyfslz54j4hjh2gsdjkbi2qj2f4k0aw8s7f05kibprr2jl";
|
||||
url = "mirror://gnome/sources/gupnp-av/${majorVersion}/${name}.tar.xz";
|
||||
sha256 = "35e775bc4f7801d65dcb710905a6b8420ce751a239b5651e6d830615dc906ea8";
|
||||
};
|
||||
|
||||
buildInputs = [ gupnp pkgconfig ];
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
buildInputs = [ gupnp glib libxml2 ];
|
||||
|
||||
meta = {
|
||||
homepage = http://gupnp.org/;
|
||||
description = "A collection of helpers for building AV (audio/video) applications using GUPnP";
|
||||
longDescription = "GUPnP implements the UPnP specification: resource announcement and discovery, description, control, event notification, and presentation (GUPnP includes basic web server functionality through libsoup). GUPnP does not include helpers for construction or control of specific standardized resources (e.g. MediaServer); this is left for higher level libraries utilizing the GUPnP framework.";
|
||||
license = stdenv.lib.licenses.gpl2;
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +1,22 @@
|
||||
{ stdenv, fetchurl, pkgconfig, glib, gupnp, python, pygobject }:
|
||||
{ stdenv, fetchurl, pkgconfig, glib, gupnp }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "gupnp-igd-0.2.1";
|
||||
name = "gupnp-igd-${version}";
|
||||
majorVersion = "0.2";
|
||||
version = "${majorVersion}.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = https://launchpad.net/ubuntu/+archive/primary/+files/gupnp-igd_0.2.1.orig.tar.gz;
|
||||
sha256 = "18ia8l24hbylz3dnbg2jf848bmbx0hjkq4fkwzzfn57z021f0fh2";
|
||||
url = "mirror://gnome/sources/gupnp-igd/${majorVersion}/${name}.tar.xz";
|
||||
sha256 = "38c4a6d7718d17eac17df95a3a8c337677eda77e58978129ad3182d769c38e44";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ gupnp ];
|
||||
|
||||
buildInputs = [ glib python pygobject ];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
propagatedBuildInputs = [ glib gupnp ];
|
||||
|
||||
meta = {
|
||||
homepage = http://www.gupnp.org/;
|
||||
license = stdenv.lib.licenses.lgpl21;
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1,24 +1,23 @@
|
||||
{ stdenv, fetchurl, pkgconfig, glib, libxml2, gssdp, libsoup, libuuid }:
|
||||
{ stdenv, fetchurl, pkgconfig, glib, gssdp, libsoup, libxml2, libuuid }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "gupnp-${version}";
|
||||
majorVersion = "0.20";
|
||||
version = "${majorVersion}.9";
|
||||
version = "${majorVersion}.14";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/gupnp/${majorVersion}/gupnp-${version}.tar.xz";
|
||||
sha256 = "0vicydn3f72x1rqql7857ans85mg7dfap7n7h8xrfyb9whxhlrb1";
|
||||
sha256 = "77ffb940ba77c4a6426d09d41004c75d92652dcbde86c84ac1c847dbd9ad59bd";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ libxml2 libsoup gssdp ];
|
||||
buildInputs = [ glib libuuid ];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
propagatedBuildInputs = [ glib gssdp libsoup libxml2 libuuid ];
|
||||
|
||||
postInstall = ''
|
||||
cp -r ${libsoup}/include/libsoup-2.4/libsoup $out/include
|
||||
cp -r ${gssdp}/include/gssdp-1.0/libgssdp $out/include
|
||||
cp -r ${libxml2}/include/libxml2/libxml $out/include
|
||||
'';
|
||||
postInstall = ''
|
||||
ln -sv ${libsoup}/include/*/libsoup $out/include
|
||||
ln -sv ${libxml2}/include/*/libxml $out/include
|
||||
ln -sv ${gssdp}/include/*/libgssdp $out/include
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = http://www.gupnp.org/;
|
||||
|
@ -16,9 +16,11 @@ stdenv.mkDerivation rec {
|
||||
|
||||
configureFlags = [ "--with-ssl=${openssl}" "--with-drill" ];
|
||||
|
||||
meta = {
|
||||
meta = with stdenv.lib; {
|
||||
description = "Library with the aim of simplifying DNS programming in C";
|
||||
license = stdenv.lib.licenses.bsd3;
|
||||
license = licenses.bsd3;
|
||||
homepage = "http://www.nlnetlabs.nl/projects/ldns/";
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ jgeerds ];
|
||||
};
|
||||
}
|
||||
|
@ -1,14 +1,16 @@
|
||||
{ stdenv, fetchurl, pkgconfig, glib, gupnp_igd, gstreamer, gst_plugins_base }:
|
||||
{ stdenv, fetchurl, pkgconfig, glib, gupnp_igd, gst_all_1 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "libnice-0.1.4";
|
||||
name = "libnice-0.1.13";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://nice.freedesktop.org/releases/${name}.tar.gz";
|
||||
sha256 = "0mxzr3y91hkjxdz1mzhxwi59la86hw2rzmd3y9c32801kkg1gra4";
|
||||
sha256 = "1q8rhklbz1zla67r4mw0f7v3m5b32maj0prnr0kshcz97fgjs4b1";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig glib gupnp_igd gstreamer gst_plugins_base ];
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
buildInputs = [ gst_all_1.gstreamer gst_all_1.gst-plugins-base ];
|
||||
propagatedBuildInputs = [ glib gupnp_igd ];
|
||||
|
||||
meta = {
|
||||
homepage = http://nice.freedesktop.org/wiki/;
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- a/setup.py 2014-03-20 22:27:14.000000000 +0100
|
||||
+++ b/setup.py 2015-07-10 21:18:30.156196111 +0200
|
||||
@@ -49,7 +49,7 @@
|
||||
scripts = ['scripts/poezio'],
|
||||
data_files = [('share/man/man1/', ['data/poezio.1'])],
|
||||
|
||||
- install_requires = ['sleekxmpp==1.2.4',
|
||||
+ install_requires = ['sleekxmpp==1.2.5',
|
||||
'dnspython3>=1.11.1'],
|
||||
extras_require = {'OTR plugin': 'python-potr>=1.0',
|
||||
'Screen autoaway plugin': 'pyinotify==0.9.4'}
|
@ -1,25 +1,25 @@
|
||||
diff -ruN a/src/config.py b/src/config.py
|
||||
--- a/src/config.py 2014-03-20 22:27:05.000000000 +0100
|
||||
+++ b/src/config.py 2015-07-10 21:24:37.583136078 +0200
|
||||
@@ -18,6 +18,7 @@
|
||||
--- a/src/config.py 2015-07-31 19:35:37.000000000 +0000
|
||||
+++ b/src/config.py 2015-08-03 09:23:34.322098081 +0000
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
import logging.config
|
||||
import os
|
||||
import logging
|
||||
+import stat
|
||||
import sys
|
||||
import pkg_resources
|
||||
|
||||
from configparser import RawConfigParser, NoOptionError, NoSectionError
|
||||
from os import environ, makedirs, path, remove
|
||||
@@ -279,6 +280,13 @@
|
||||
copy2(default, options.filename)
|
||||
elif path.isfile(other):
|
||||
copy2(other, options.filename)
|
||||
@@ -563,6 +564,13 @@
|
||||
copy2(default, options.filename)
|
||||
elif path.isfile(other):
|
||||
copy2(other, options.filename)
|
||||
+
|
||||
+ # Inside the nixstore, the reference file is readonly, so is the copy.
|
||||
+ # Make it writable by the user who just created it.
|
||||
+ if os.path.exists(options.filename):
|
||||
+ os.chmod(options.filename,
|
||||
+ os.stat(options.filename).st_mode | stat.S_IWUSR)
|
||||
+ # Inside the nixstore, the reference file is readonly, so is the copy.
|
||||
+ # Make it writable by the user who just created it.
|
||||
+ if os.path.exists(options.filename):
|
||||
+ os.chmod(options.filename,
|
||||
+ os.stat(options.filename).st_mode | stat.S_IWUSR)
|
||||
+
|
||||
firstrun = True
|
||||
global firstrun
|
||||
firstrun = True
|
||||
|
||||
try:
|
||||
|
@ -2,16 +2,16 @@ source $stdenv/setup
|
||||
|
||||
unpackPhase
|
||||
|
||||
mkdir -p $out
|
||||
cp -r $name/* $out
|
||||
mkdir -p $out/maven
|
||||
cp -r $name/* $out/maven
|
||||
|
||||
wrapProgram $out/bin/mvn --set JAVA_HOME "$jdk"
|
||||
makeWrapper $out/maven/bin/mvn $out/bin/mvn --set JAVA_HOME "$jdk"
|
||||
|
||||
# Add the maven-axis and JIRA plugin by default when using maven 1.x
|
||||
if [ -e $out/bin/maven ]
|
||||
if [ -e $out/maven/bin/maven ]
|
||||
then
|
||||
export OLD_HOME=$HOME
|
||||
export HOME=.
|
||||
$out/bin/maven plugin:download -DgroupId=maven-plugins -DartifactId=maven-axis-plugin -Dversion=0.7
|
||||
$out/maven/bin/maven plugin:download -DgroupId=maven-plugins -DartifactId=maven-axis-plugin -Dversion=0.7
|
||||
export HOME=OLD_HOME
|
||||
fi
|
||||
|
@ -9,10 +9,10 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -pv $out
|
||||
cp -rv lib $out
|
||||
mkdir -pv $out/gradle
|
||||
cp -rv lib $out/gradle
|
||||
|
||||
gradle_launcher_jar=$(echo $out/lib/gradle-launcher-*.jar)
|
||||
gradle_launcher_jar=$(echo $out/gradle/lib/gradle-launcher-*.jar)
|
||||
test -f $gradle_launcher_jar
|
||||
makeWrapper ${jdk}/bin/java $out/bin/gradle \
|
||||
--set JAVA_HOME ${jdk} \
|
||||
|
@ -1,32 +0,0 @@
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1085663
|
||||
|
||||
Reported-by: Florian Weimer <fweimer at redhat.com>
|
||||
Signed-off-by: Mark Wielaard <mjw at redhat.com>
|
||||
---
|
||||
libdw/dwarf_begin_elf.c | 8 +++++++-
|
||||
2 files changed, 12 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c
|
||||
index 79daeac..34ea373 100644
|
||||
--- a/libdw/dwarf_begin_elf.c
|
||||
+++ b/libdw/dwarf_begin_elf.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Create descriptor from ELF descriptor for processing file.
|
||||
- Copyright (C) 2002-2011 Red Hat, Inc.
|
||||
+ Copyright (C) 2002-2011, 2014 Red Hat, Inc.
|
||||
This file is part of elfutils.
|
||||
Written by Ulrich Drepper <drepper at redhat.com>, 2002.
|
||||
|
||||
@@ -282,6 +282,12 @@ check_section (Dwarf *result, GElf_Ehdr *ehdr, Elf_Scn *scn, bool inscngrp)
|
||||
memcpy (&size, data->d_buf + 4, sizeof size);
|
||||
size = be64toh (size);
|
||||
|
||||
+ /* Check for unsigned overflow so malloc always allocated
|
||||
+ enough memory for both the Elf_Data header and the
|
||||
+ uncompressed section data. */
|
||||
+ if (unlikely (sizeof (Elf_Data) + size < size))
|
||||
+ break;
|
||||
+
|
||||
Elf_Data *zdata = malloc (sizeof (Elf_Data) + size);
|
||||
if (unlikely (zdata == NULL))
|
||||
break;
|
@ -3,21 +3,20 @@
|
||||
# TODO: Look at the hardcoded paths to kernel, modules etc.
|
||||
stdenv.mkDerivation rec {
|
||||
name = "elfutils-${version}";
|
||||
version = "0.158";
|
||||
version = "0.163";
|
||||
|
||||
src = fetchurl {
|
||||
urls = [
|
||||
"http://fedorahosted.org/releases/e/l/elfutils/${version}/${name}.tar.bz2"
|
||||
"mirror://gentoo/distfiles/${name}.tar.bz2"
|
||||
];
|
||||
sha256 = "0z9rprmizd7rwb3xwfmz5liii7hbiv3g2arl23h56brm45fay9xy";
|
||||
sha256 = "7c774f1eef329309f3b05e730bdac50013155d437518a2ec0e24871d312f2e23";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./CVE-2014-0172.patch
|
||||
(fetchurl {
|
||||
url = "http://fedorahosted.org/releases/e/l/elfutils/${version}/elfutils-portability.patch";
|
||||
sha256 = "0y2fyjis5xrd3g2pcbcm145q2kmh52n5c74w8dwv3hqdp5ky7igd";
|
||||
url = "http://fedorahosted.org/releases/e/l/elfutils/${version}/elfutils-portability-${version}.patch";
|
||||
sha256 = "e4e82315dad2efaa4e4476503e7537e01b7c1b1f98a96de4ca1c7fa85f4f1045";
|
||||
}) ];
|
||||
|
||||
# We need bzip2 in NativeInputs because otherwise we can't unpack the src,
|
||||
|
@ -1,14 +1,14 @@
|
||||
{ stdenv, gcc5, pkgconfig, cmake, bluez, ffmpeg, libao, mesa, gtk2, glib
|
||||
, gettext, git, libpthreadstubs, libXrandr, libXext, readline
|
||||
, openal, libXdmcp, portaudio, SDL, fetchgit, libusb
|
||||
, openal, libXdmcp, portaudio, fetchgit, libusb, libevdev
|
||||
, libpulseaudio ? null }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "dolphin-emu-20150609";
|
||||
name = "dolphin-emu-20150802";
|
||||
src = fetchgit {
|
||||
url = git://github.com/dolphin-emu/dolphin.git;
|
||||
rev = "e47e4c677ad22895f8c8bc78676dd295e36f2695";
|
||||
sha256 = "0g176x0rw9lssw68alr83cakldq1q38mzjwxdaf524bkvnn7fl3r";
|
||||
rev = "5097a22844b850b429872f4de390bd958b11a616";
|
||||
sha256 = "1qizkahbimpmgjs51av1cdmnnyvbz0j0gknmi5vdc38vrzxvwkrf";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
|
||||
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
buildInputs = [ gcc5 pkgconfig cmake bluez ffmpeg libao mesa gtk2 glib
|
||||
gettext libpthreadstubs libXrandr libXext readline openal
|
||||
git libXdmcp portaudio SDL libusb libpulseaudio ];
|
||||
libevdev git libXdmcp portaudio libusb libpulseaudio ];
|
||||
|
||||
meta = {
|
||||
homepage = http://dolphin-emu.org/;
|
||||
|
20
pkgs/misc/ghostscript/CVE-2015-3228.patch
Normal file
20
pkgs/misc/ghostscript/CVE-2015-3228.patch
Normal file
@ -0,0 +1,20 @@
|
||||
Description: Sanity check for memory allocation.
|
||||
In gs_heap_alloc_bytes(), add a sanity check to ensure we don't overflow the
|
||||
variable holding the actual number of bytes we allocate.
|
||||
Origin: upstream, http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=0c0b085
|
||||
Author: Chris Liddell <chris.liddell@artifex.com>
|
||||
Forwarded: yes
|
||||
Bug-Debian: http://bugs.debian.org/793489
|
||||
Last-Update: 2015-07-26
|
||||
|
||||
--- a/base/gsmalloc.c
|
||||
+++ b/base/gsmalloc.c
|
||||
@@ -178,7 +178,7 @@
|
||||
} else {
|
||||
uint added = size + sizeof(gs_malloc_block_t);
|
||||
|
||||
- if (mmem->limit - added < mmem->used)
|
||||
+ if (added <= size || mmem->limit - added < mmem->used)
|
||||
set_msg("exceeded limit");
|
||||
else if ((ptr = (byte *) Memento_label(malloc(added), cname)) == 0)
|
||||
set_msg("failed");
|
@ -57,6 +57,12 @@ stdenv.mkDerivation rec {
|
||||
# [] # maybe sometimes jpeg2000 support
|
||||
;
|
||||
|
||||
patches = [
|
||||
./urw-font-files.patch
|
||||
# fetched from debian's ghostscript 9.15_dfsg-1 (called 020150707~0c0b085.patch there)
|
||||
./CVE-2015-3228.patch
|
||||
];
|
||||
|
||||
makeFlags = [ "cups_serverroot=$(out)" "cups_serverbin=$(out)/lib/cups" ];
|
||||
|
||||
preConfigure = ''
|
||||
|
@ -1,12 +1,12 @@
|
||||
{ stdenv, fetchurl, ... } @ args:
|
||||
|
||||
import ./generic.nix (args // rec {
|
||||
version = "3.10.84";
|
||||
version = "3.10.85";
|
||||
extraMeta.branch = "3.10";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
|
||||
sha256 = "042cybswcxxzi22h96i4h73a4hcb4drhifs6l9jqlqamdn6xabd3";
|
||||
sha256 = "1zn8113m6y1wqmnr6gjzrr7ly2l8860fp2kr4q9di3c2vmnmd9v9";
|
||||
};
|
||||
|
||||
features.iwlwifi = true;
|
||||
|
@ -1,12 +1,12 @@
|
||||
{ stdenv, fetchurl, ... } @ args:
|
||||
|
||||
import ./generic.nix (args // rec {
|
||||
version = "3.12.44";
|
||||
version = "3.12.45";
|
||||
extraMeta.branch = "3.12";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
|
||||
sha256 = "05fyb49ibijq2iv4x25m5a77n8609b4lz8x8n8wfkdywm13479h8";
|
||||
sha256 = "01p3zbhngqnkmzw38xmxd0lf97kf2h7ihgss6bgdnkpqrbzb1pqf";
|
||||
};
|
||||
|
||||
features.iwlwifi = true;
|
||||
|
@ -1,12 +1,12 @@
|
||||
{ stdenv, fetchurl, ... } @ args:
|
||||
|
||||
import ./generic.nix (args // rec {
|
||||
version = "4.1.3";
|
||||
version = "4.1.4";
|
||||
extraMeta.branch = "4.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
|
||||
sha256 = "02z3palvki31qimmycz4y4wl4lb46n662qql46iah224k0q2rpcn";
|
||||
sha256 = "17whsim5l9i486y5kchfpm9jhbr9lak4a1gdqygp5kwfrfyz5qiy";
|
||||
};
|
||||
|
||||
features.iwlwifi = true;
|
||||
|
@ -1,13 +1,13 @@
|
||||
{ stdenv, fetchurl, ... } @ args:
|
||||
|
||||
import ./generic.nix (args // rec {
|
||||
version = "4.2-rc2";
|
||||
modDirVersion = "4.2.0-rc2";
|
||||
version = "4.2-rc5";
|
||||
modDirVersion = "4.2.0-rc5";
|
||||
extraMeta.branch = "4.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kernel/linux/kernel/v4.x/testing/linux-${version}.tar.xz";
|
||||
sha256 = "068g71ns8d2j66hppmnssilf185p33w7argb0r2w9kplqq2ac99w";
|
||||
sha256 = "1ir3g5in53qq50ygnwgkzjkl1pzb12ar8k1zvfzcxapddvnhayr0";
|
||||
};
|
||||
|
||||
features.iwlwifi = true;
|
||||
|
@ -1,7 +1,7 @@
|
||||
{ stdenv, fetchFromGitHub, autoreconfHook }:
|
||||
|
||||
let version = "3.0.10"; in
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
name = "xdelta-${version}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
@ -15,16 +15,16 @@ stdenv.mkDerivation rec {
|
||||
|
||||
postPatch = ''
|
||||
cd xdelta3
|
||||
'' + stdenv.lib.optionalString doCheck ''
|
||||
mkdir tmp
|
||||
substituteInPlace testing/file.h --replace /tmp tmp
|
||||
substituteInPlace xdelta3-test.h --replace /tmp $PWD/tmp
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
doCheck = true;
|
||||
checkPhase = ''
|
||||
mkdir $PWD/tmp
|
||||
for i in testing/file.h xdelta3-test.h; do
|
||||
substituteInPlace $i --replace /tmp $PWD/tmp
|
||||
done
|
||||
./xdelta3regtest
|
||||
'';
|
||||
|
||||
|
@ -20,7 +20,7 @@ let
|
||||
canEfi = any (system: stdenv.system == system) (mapAttrsToList (name: _: name) efiSystems);
|
||||
inPCSystems = any (system: stdenv.system == system) (mapAttrsToList (name: _: name) pcSystems);
|
||||
|
||||
version = "2.x-2015-07-05";
|
||||
version = "2.x-2015-07-27";
|
||||
|
||||
unifont_bdf = fetchurl {
|
||||
url = "http://unifoundry.com/unifont-5.1.20080820.bdf.gz";
|
||||
@ -43,8 +43,8 @@ stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchFromSavannah {
|
||||
repo = "grub";
|
||||
rev = "0d7c7f751dc5a8338497bef8b38f78153c4f0464";
|
||||
sha256 = "1vkd7na3kp9ri4xsd3zznvnrjzz1qsz62fycg941pm2k18r3m7xd";
|
||||
rev = "72fc110d95129410443b898e931ff7a1db75312e";
|
||||
sha256 = "0l2hws8h1jhww5s0m8pkwdggacpqb7fvz2jx83syg7ynczpgzbxs";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autogen flex bison python autoconf automake ];
|
||||
|
@ -11,7 +11,7 @@ let
|
||||
|
||||
inPCSystems = any (system: stdenv.system == system) (mapAttrsToList (name: _: name) pcSystems);
|
||||
|
||||
version = "2.0-git-2015-07-04";
|
||||
version = "1.2.0";
|
||||
|
||||
unifont_bdf = fetchurl {
|
||||
url = "http://unifoundry.com/unifont-5.1.20080820.bdf.gz";
|
||||
@ -28,12 +28,12 @@ let
|
||||
in (
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "trustedGRUB-${version}";
|
||||
name = "trustedGRUB2-${version}";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/Sirrix-AG/TrustedGRUB2";
|
||||
rev = "1865d07bdef7f39916790c77103fb85e99de14a4";
|
||||
sha256 = "e6bd9edfeb653e98e585fd691a31533b649b2fca1f4a903c70f6ea371014c9f7";
|
||||
rev = "1ff54a5fbe02ea01df5a7de59b1e0201e08d4f76";
|
||||
sha256 = "8c17bd7e14dd96ae9c4e98723f4e18ec6b21d45ac486ecf771447649829d0b34";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autogen flex bison python autoconf automake ];
|
||||
|
42
pkgs/tools/misc/ipad_charge/default.nix
Normal file
42
pkgs/tools/misc/ipad_charge/default.nix
Normal file
@ -0,0 +1,42 @@
|
||||
{ stdenv, fetchFromGitHub, libusb }:
|
||||
|
||||
let version = "2015-02-03"; in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ipad_charge-${version}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
sha256 = "0f40hqx1dbqpwrhyf42h5982jwqv8j5zp5hwwakz6600hyqvnnz7";
|
||||
rev = "bb24e1c3a79016cfdffb9d28189485766d655ec6";
|
||||
repo = "ipad_charge";
|
||||
owner = "mkorenkov";
|
||||
};
|
||||
|
||||
buildInputs = [ libusb ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace Makefile \
|
||||
--replace " -o root -g root" "" \
|
||||
--replace "/usr" "$out"
|
||||
sed "/rules\.d/d" -i Makefile
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
preInstall = ''
|
||||
mkdir -p $out/bin
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
inherit version;
|
||||
inherit (src.meta) homepage;
|
||||
description = "Apple device USB charging utility for Linux";
|
||||
longDescription = ''
|
||||
USB charging control utility used to enable/disable charging of an Apple
|
||||
device connected to USB port. For a list of supported devices, see
|
||||
https://github.com/mkorenkov/ipad_charge#supported-devices.
|
||||
'';
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ nckx ];
|
||||
};
|
||||
}
|
@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
|
||||
pythonPackages.simplejson
|
||||
pythonPackages.pyyaml
|
||||
pythonPackages.requests
|
||||
pythonPackages.pymongo
|
||||
];
|
||||
propagatedBuildInputs = [ python tornado ];
|
||||
|
||||
|
@ -11,11 +11,11 @@ let
|
||||
]);
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "dnsmasq-2.73";
|
||||
name = "dnsmasq-2.75";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.thekelleys.org.uk/dnsmasq/${name}.tar.xz";
|
||||
sha256 = "1xnqfaw2l78f4zw4z9sgr9nl9yc233gxc3sd7hxapz2k7q883zqb";
|
||||
sha256 = "1wa1d4if9q6k3hklv8xi06a59k3aqb7pik8rhi2l53i99hflw334";
|
||||
};
|
||||
|
||||
preBuild = ''
|
||||
|
@ -10,7 +10,10 @@ stdenv.mkDerivation rec {
|
||||
name = "ntopng-1.2.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/project/ntop/ntopng/${name}.tgz";
|
||||
urls = [
|
||||
"mirror://sourceforge/project/ntop/ntopng/old/${name}.tgz"
|
||||
"mirror://sourceforge/project/ntop/ntopng/${name}.tgz"
|
||||
];
|
||||
sha256 = "1db83cd1v4ivl8hxzzdvvdcgk22ji7mwrfnd5nnwll6kb11i364v";
|
||||
};
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
{ stdenv, fetchurl, gmp, pkgconfig, python, autoreconfHook }:
|
||||
{ stdenv, fetchurl, gmp, pkgconfig, python, autoreconfHook
|
||||
, curl, trousers, sqlite
|
||||
, enableTNC ? false }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "strongswan-5.3.2";
|
||||
@ -10,7 +12,9 @@ stdenv.mkDerivation rec {
|
||||
|
||||
dontPatchELF = true;
|
||||
|
||||
buildInputs = [ gmp pkgconfig python autoreconfHook ];
|
||||
buildInputs =
|
||||
[ gmp pkgconfig python autoreconfHook ]
|
||||
++ stdenv.lib.optionals enableTNC [ curl trousers sqlite ];
|
||||
|
||||
patches = [
|
||||
./ext_auth-path.patch
|
||||
@ -18,7 +22,17 @@ stdenv.mkDerivation rec {
|
||||
./updown-path.patch
|
||||
];
|
||||
|
||||
configureFlags = [ "--enable-swanctl" "--enable-cmd" ];
|
||||
configureFlags =
|
||||
[ "--enable-swanctl" "--enable-cmd" ]
|
||||
++ stdenv.lib.optionals enableTNC [
|
||||
"--disable-gmp" "--disable-aes" "--disable-md5" "--disable-sha1" "--disable-sha2" "--disable-fips-prf"
|
||||
"--enable-curl" "--enable-openssl" "--enable-eap-identity" "--enable-eap-md5" "--enable-eap-mschapv2"
|
||||
"--enable-eap-tnc" "--enable-eap-ttls" "--enable-eap-dynamic" "--enable-tnccs-20"
|
||||
"--enable-tnc-imc" "--enable-imc-os" "--enable-imc-attestation"
|
||||
"--enable-tnc-imv" "--enable-imv-attestation"
|
||||
"--with-tss=trousers"
|
||||
"--enable-aikgen"
|
||||
"--enable-sqlite" ];
|
||||
|
||||
NIX_LDFLAGS = "-lgcc_s" ;
|
||||
|
||||
|
25
pkgs/tools/security/minisign/default.nix
Normal file
25
pkgs/tools/security/minisign/default.nix
Normal file
@ -0,0 +1,25 @@
|
||||
{ stdenv, fetchurl, cmake, libsodium }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "minisign-${version}";
|
||||
version = "0.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/jedisct1/minisign/archive/${version}.tar.gz";
|
||||
sha256 = "1k1dk6piaz8pw4b9zg55n4wcpyc301mkxb873njm8mki7r8raxnw";
|
||||
};
|
||||
|
||||
buildInputs = [ cmake libsodium ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A simple tool for signing files and verifying signatures";
|
||||
longDescription = ''
|
||||
minisign uses public key cryptography to help facilitate secure (but not
|
||||
necessarily private) file transfer, e.g., of software artefacts. minisign
|
||||
is similar to and compatible with OpenBSD's signify.
|
||||
'';
|
||||
homepage = https://jedisct1.github.io/minisign/;
|
||||
license = licenses.isc;
|
||||
maintainers = with maintainers; [ joachifm ];
|
||||
};
|
||||
}
|
39
pkgs/tools/security/omapd/default.nix
Normal file
39
pkgs/tools/security/omapd/default.nix
Normal file
@ -0,0 +1,39 @@
|
||||
{ stdenv, fetchurl, cmake, qt4, gdb, zlib }:
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
name = "omapd-${version}";
|
||||
version = "0.9.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://omapd.googlecode.com/files/${name}.tgz";
|
||||
sha256 = "0d7lgv957jhbsav60j50jhdy3rpcqgql74qsniwnnpm3yqj9p0xc";
|
||||
};
|
||||
|
||||
patches = [ ./zlib.patch ];
|
||||
|
||||
buildInputs = [ cmake qt4 zlib gdb ];
|
||||
|
||||
phases = [ "unpackPhase" "patchPhase" "buildPhase" "installPhase" ];
|
||||
|
||||
buildPhase = ''
|
||||
(cd plugins/RAMHashTables; qmake; make)
|
||||
qmake
|
||||
make
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out $out/bin $out/etc $out/usr/lib/omapd/plugins
|
||||
cp omapd $out/bin/.
|
||||
cp omapd.conf $out/etc/.
|
||||
cp plugins/libRAMHashTables.so $out/usr/lib/omapd/plugins/.
|
||||
ln -s $out/usr/lib/omapd/plugins $out/bin/plugins
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://code.google.com/p/omapd;
|
||||
description = "IF-MAP Server that implements the IF-MAP v1.1 and v2.0 specifications published by the Trusted Computing Group (TCG)";
|
||||
license = licenses.gpl3;
|
||||
maintainers = [ maintainers.tstrobel ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
9
pkgs/tools/security/omapd/zlib.patch
Normal file
9
pkgs/tools/security/omapd/zlib.patch
Normal file
@ -0,0 +1,9 @@
|
||||
diff -uNr omapd-0.9.2-old/omapd.pro omapd-0.9.2/omapd.pro
|
||||
--- omapd-0.9.2-old/omapd.pro 2015-08-03 09:46:47.463420480 +0200
|
||||
+++ omapd-0.9.2/omapd.pro 2015-08-03 09:48:32.238657105 +0200
|
||||
@@ -37,4 +37,4 @@
|
||||
clientconfiguration.h \
|
||||
managementserver.h \
|
||||
json.h
|
||||
-INCLUDEPATH += $$[QT_INSTALL_PREFIX]/src/3rdparty/zlib
|
||||
+LIBS += -lz
|
@ -1,11 +1,11 @@
|
||||
{ stdenv, fetchurl, attr, keyutils }:
|
||||
|
||||
let version = "0.04.13"; in
|
||||
let version = "0.04.14"; in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "stress-ng-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
sha256 = "0h4alfylf15q1rdf9v42fy0bhh4c1s1fagiym445qb3yacf5p9g3";
|
||||
sha256 = "17lgsxg2k7w12i1wmzq4zqavkicikzkgz2h7mzl8lrk8c85mwf3m";
|
||||
url = "http://kernel.ubuntu.com/~cking/tarballs/stress-ng/${name}.tar.gz";
|
||||
};
|
||||
|
||||
|
@ -1918,6 +1918,8 @@ let
|
||||
|
||||
iodine = callPackage ../tools/networking/iodine { };
|
||||
|
||||
ipad_charge = callPackage ../tools/misc/ipad_charge { };
|
||||
|
||||
iperf2 = callPackage ../tools/networking/iperf/2.nix { };
|
||||
iperf3 = callPackage ../tools/networking/iperf/3.nix { };
|
||||
iperf = iperf3;
|
||||
@ -2026,6 +2028,8 @@ let
|
||||
|
||||
minidlna = callPackage ../tools/networking/minidlna { };
|
||||
|
||||
minisign = callPackage ../tools/security/minisign { };
|
||||
|
||||
mmv = callPackage ../tools/misc/mmv { };
|
||||
|
||||
morituri = callPackage ../applications/audio/morituri { };
|
||||
@ -2947,6 +2951,8 @@ let
|
||||
|
||||
shotwell = callPackage ../applications/graphics/shotwell { };
|
||||
|
||||
shout = callPackage ../applications/networking/irc/shout { };
|
||||
|
||||
shellinabox = callPackage ../servers/shellinabox { };
|
||||
|
||||
sic = callPackage ../applications/networking/irc/sic { };
|
||||
@ -3062,6 +3068,8 @@ let
|
||||
|
||||
strongswan = callPackage ../tools/networking/strongswan { };
|
||||
|
||||
strongswanTNC = callPackage ../tools/networking/strongswan { enableTNC=true; };
|
||||
|
||||
su = shadow.su;
|
||||
|
||||
subsonic = callPackage ../servers/misc/subsonic { };
|
||||
@ -3187,6 +3195,8 @@ let
|
||||
|
||||
trousers = callPackage ../tools/security/trousers { };
|
||||
|
||||
omapd = callPackage ../tools/security/omapd { };
|
||||
|
||||
ttf2pt1 = callPackage ../tools/misc/ttf2pt1 { };
|
||||
|
||||
ttfautohint = callPackage ../tools/misc/ttfautohint { };
|
||||
|
@ -2374,10 +2374,10 @@ let self = _self // overrides; _self = with self; {
|
||||
};
|
||||
|
||||
DateTimeFormatNatural = buildPerlPackage {
|
||||
name = "DateTime-Format-Natural-1.02";
|
||||
name = "DateTime-Format-Natural-1.03";
|
||||
src = fetchurl {
|
||||
url = mirror://cpan/authors/id/S/SC/SCHUBIGER/DateTime-Format-Natural-1.02.tar.gz;
|
||||
sha256 = "5479c48ade5eca9712784afee18c58308d56742a204d5ea9040d011f705303e3";
|
||||
url = mirror://cpan/authors/id/S/SC/SCHUBIGER/DateTime-Format-Natural-1.03.tar.gz;
|
||||
sha256 = "1m3bmv90kww8xr4dda75isvzigy8y3clgvk58zp0bxc5d7k4qdxi";
|
||||
};
|
||||
buildInputs = [ ModuleUtil TestMockTime ];
|
||||
propagatedBuildInputs = [ Clone DateTime DateTimeTimeZone ListMoreUtils ParamsValidate boolean ];
|
||||
|
@ -275,6 +275,26 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
aiodns = buildPythonPackage rec {
|
||||
name = "aiodns-${version}";
|
||||
version = "0.3.2";
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://pypi.python.org/packages/source/a/aiodns/${name}.tar.gz";
|
||||
sha256 = "0i9ypv9l4d59j87kkrsh1livfgnspyzcbx26jw9x58xs5z05xj7k";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with self ; [
|
||||
pycares
|
||||
] ++ optional (isPy33) self.asyncio
|
||||
++ optional (isPy26 || isPy27) self.trollius;
|
||||
|
||||
meta = {
|
||||
homepage = http://github.com/saghul/aiodns;
|
||||
license = licenses.mit;
|
||||
description = "Simple DNS resolver for asyncio";
|
||||
};
|
||||
};
|
||||
|
||||
alabaster = buildPythonPackage rec {
|
||||
name = "alabaster-0.7.3";
|
||||
@ -517,6 +537,24 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
asyncio = buildPythonPackage rec {
|
||||
name = "asyncio-${version}";
|
||||
version = "3.4.3";
|
||||
|
||||
disabled = (!isPy33);
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://pypi.python.org/packages/source/a/asyncio/${name}.tar.gz";
|
||||
sha256 = "0hfbqwk9y0bbfgxzg93s2wyk6gcjsdxlr5jwy97hx64ppkw0ydl3";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "reference implementation of PEP 3156";
|
||||
homepage = http://www.python.org/dev/peps/pep-3156;
|
||||
license = licenses.free;
|
||||
};
|
||||
};
|
||||
|
||||
funcsigs = buildPythonPackage rec {
|
||||
name = "funcsigs-0.4";
|
||||
disabled = ! (isPy26 || isPy27 || isPy33 || isPyPy);
|
||||
@ -4198,6 +4236,23 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
pycares = buildPythonPackage rec {
|
||||
name = "pycares-${version}";
|
||||
version = "0.7.0";
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://pypi.python.org/packages/source/p/pycares/${name}.tar.gz";
|
||||
sha256 = "10lr3ij67khmfm14cb3sqch3vhv37f3j1whwznq6qy4prfmz5gvl";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ pkgs.c-ares ];
|
||||
|
||||
meta = {
|
||||
homepage = http://github.com/saghul/pycares;
|
||||
description = "Interface for c-ares";
|
||||
license = licenses.mit;
|
||||
};
|
||||
};
|
||||
|
||||
pyramid = buildPythonPackage rec {
|
||||
name = "pyramid-1.5.2";
|
||||
@ -8079,6 +8134,26 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
slixmpp = buildPythonPackage rec {
|
||||
name = "slixmpp-${version}";
|
||||
version = "1.0.post5";
|
||||
|
||||
disabled = (!isPy34);
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://pypi.python.org/packages/source/s/slixmpp/${name}.tar.gz";
|
||||
sha256 = "0ik23w3y52m30z56874wgac07j70k7b06n20j44slii8avf58p4b";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with self ; [ aiodns pyasn1 ];
|
||||
|
||||
meta = {
|
||||
meta = "Elegant Python library for XMPP";
|
||||
license = licenses.mit;
|
||||
homepage = https://dev.louiz.org/projects/slixmpp;
|
||||
};
|
||||
};
|
||||
|
||||
netaddr = buildPythonPackage rec {
|
||||
name = "netaddr-0.7.5";
|
||||
|
||||
@ -16747,21 +16822,20 @@ let
|
||||
|
||||
poezio = buildPythonPackage rec {
|
||||
name = "poezio-${version}";
|
||||
version = "0.8.1";
|
||||
version = "0.9";
|
||||
|
||||
namePrefix = "";
|
||||
disabled = (!isPy3k);
|
||||
propagatedBuildInputs = with self ; [ dnspython3 sleekxmpp ];
|
||||
disabled = (!isPy34);
|
||||
propagatedBuildInputs = with self ; [ aiodns slixmpp ];
|
||||
|
||||
patches =
|
||||
let patch_base = ../development/python-modules/poezio ;
|
||||
in [ "${patch_base}/make_default_config_writable.patch"
|
||||
"${patch_base}/fix_requirements.patch"
|
||||
];
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "http://dev.louiz.org/attachments/download/52/${name}.tar.xz";
|
||||
sha256 = "0n3phh3lc82609ssfvqvd4papvhykd1sf2bm88dggh2x4mypwjff";
|
||||
url = "http://dev.louiz.org/attachments/download/91/${name}.tar.xz";
|
||||
sha256 = "1vc7zn4rp0ds0cdh1xcmbwx6w2qh4pnpzi5mdnj3rpl7xdr6jqzi";
|
||||
};
|
||||
|
||||
meta = {
|
||||
@ -16825,4 +16899,27 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
mps-youtube = buildPythonPackage rec {
|
||||
name = "mps-youtube-${version}";
|
||||
version = "0.2.5";
|
||||
|
||||
disabled = (!isPy3k);
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "mps-youtube";
|
||||
repo = "mps-youtube";
|
||||
rev = "7e457d2b4700387b88a3c96579e13cb76ca1f06b";
|
||||
sha256 = "1811vlhgfi4rasjfsfdl7x174s75zk3x08p2z05wfcvinflfgxly";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with self; [ pafy ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Terminal based YouTube player and downloader";
|
||||
homepage = http://github.com/np1/mps-youtube;
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ odi ];
|
||||
};
|
||||
};
|
||||
|
||||
}; in pythonPackages
|
||||
|
@ -7,15 +7,15 @@
|
||||
{ runCommand, fetchFromGitHub, git }:
|
||||
|
||||
let
|
||||
version = "2015-07-07";
|
||||
rev = "fd9e3e4a350f5df0d975913bcc29d2051a509199";
|
||||
version = "2015-08-03";
|
||||
rev = "dd3e0cecc30d0efbb50dfe76c83900568502af45";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
inherit rev;
|
||||
|
||||
owner = "rust-lang";
|
||||
repo = "crates.io-index";
|
||||
sha256 = "1vm28gfq4fmialz5ab8cxk5q1kdf6hlg3ni41qpy9k61pp9bqdwr";
|
||||
sha256 = "0wlbaspa0mvljhkjjnglxwpp9b4mzcxpkdzrciljxwdsr8jvlz30";
|
||||
};
|
||||
|
||||
in
|
||||
|
Loading…
Reference in New Issue
Block a user