mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-12 05:16:25 +03:00
Merge remote-tracking branch 'upstream/master' into hardened-stdenv
This commit is contained in:
commit
63c7b4f9a7
701 changed files with 12952 additions and 15151 deletions
|
@ -251,16 +251,13 @@ bound to the variable name <varname>e2fsprogs</varname> in
|
||||||
|
|
||||||
<listitem><para>The version part of the <literal>name</literal>
|
<listitem><para>The version part of the <literal>name</literal>
|
||||||
attribute <emphasis>must</emphasis> start with a digit (following a
|
attribute <emphasis>must</emphasis> start with a digit (following a
|
||||||
dash) — e.g., <literal>"hello-0.3-pre-r3910"</literal> instead of
|
dash) — e.g., <literal>"hello-0.3.1rc2"</literal>.</para></listitem>
|
||||||
<literal>"hello-svn-r3910"</literal>, as the latter would be seen as
|
|
||||||
a package named <literal>hello-svn</literal> by
|
|
||||||
<command>nix-env</command>.</para></listitem>
|
|
||||||
|
|
||||||
<listitem><para>If package is fetched from git's commit then
|
<listitem><para>If a package is not a release but a commit from a repository, then
|
||||||
the version part of the name <emphasis>must</emphasis> be the date of that
|
the version part of the name <emphasis>must</emphasis> be the date of that
|
||||||
(fetched) commit. The date must be in <literal>"YYYY-MM-DD"</literal> format.
|
(fetched) commit. The date must be in <literal>"YYYY-MM-DD"</literal> format.
|
||||||
Also add <literal>"git"</literal> to the name - e.g.,
|
Also append <literal>"unstable"</literal> to the name - e.g.,
|
||||||
<literal>"pkgname-git-2014-09-23"</literal>.</para></listitem>
|
<literal>"pkgname-unstable-2014-09-23"</literal>.</para></listitem>
|
||||||
|
|
||||||
<listitem><para>Dashes in the package name should be preserved
|
<listitem><para>Dashes in the package name should be preserved
|
||||||
in new variable names, rather than converted to underscores
|
in new variable names, rather than converted to underscores
|
||||||
|
|
|
@ -195,6 +195,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
|
||||||
fullName = "Unspecified free software license";
|
fullName = "Unspecified free software license";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
g4sl = {
|
||||||
|
fullName = "Geant4 Software License";
|
||||||
|
url = https://geant4.web.cern.ch/geant4/license/LICENSE.html;
|
||||||
|
};
|
||||||
|
|
||||||
gpl1 = spdx {
|
gpl1 = spdx {
|
||||||
spdxId = "GPL-1.0";
|
spdxId = "GPL-1.0";
|
||||||
fullName = "GNU General Public License v1.0 only";
|
fullName = "GNU General Public License v1.0 only";
|
||||||
|
|
|
@ -338,6 +338,7 @@
|
||||||
robberer = "Longrin Wischnewski <robberer@freakmail.de>";
|
robberer = "Longrin Wischnewski <robberer@freakmail.de>";
|
||||||
robbinch = "Robbin C. <robbinch33@gmail.com>";
|
robbinch = "Robbin C. <robbinch33@gmail.com>";
|
||||||
robgssp = "Rob Glossop <robgssp@gmail.com>";
|
robgssp = "Rob Glossop <robgssp@gmail.com>";
|
||||||
|
roblabla = "Robin Lambertz <robinlambertz+dev@gmail.com>";
|
||||||
roconnor = "Russell O'Connor <roconnor@theorem.ca>";
|
roconnor = "Russell O'Connor <roconnor@theorem.ca>";
|
||||||
romildo = "José Romildo Malaquias <malaquias@gmail.com>";
|
romildo = "José Romildo Malaquias <malaquias@gmail.com>";
|
||||||
rszibele = "Richard Szibele <richard_szibele@hotmail.com>";
|
rszibele = "Richard Szibele <richard_szibele@hotmail.com>";
|
||||||
|
|
|
@ -55,10 +55,11 @@ rec {
|
||||||
# packed-refs file, so we have to grep through it:
|
# packed-refs file, so we have to grep through it:
|
||||||
else if lib.pathExists packedRefsName
|
else if lib.pathExists packedRefsName
|
||||||
then
|
then
|
||||||
let packedRefs = lib.splitString "\n" (readFile packedRefsName);
|
let fileContent = readFile packedRefsName;
|
||||||
matchRule = match ("^(.*) " + file + "$");
|
matchRef = match ".*\n([^\n ]*) " + file + "\n.*" fileContent;
|
||||||
matchedRefs = lib.flatten (lib.filter (m: ! (isNull m)) (map matchRule packedRefs));
|
in if isNull matchRef
|
||||||
in lib.head matchedRefs
|
then throw ("Could not find " + file + " in " + packedRefsName)
|
||||||
|
else lib.head matchRef
|
||||||
else throw ("Not a .git directory: " + path);
|
else throw ("Not a .git directory: " + path);
|
||||||
in lib.flip readCommitFromFile "HEAD";
|
in lib.flip readCommitFromFile "HEAD";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
./maintainers/scripts/fetch-kde-qt.sh \
|
./maintainers/scripts/fetch-kde-qt.sh \
|
||||||
http://download.kde.org/stable/plasma/5.7.1/ -A '*.tar.xz' \
|
http://download.kde.org/stable/plasma/5.7.2/ -A '*.tar.xz' \
|
||||||
>pkgs/desktops/kde-5/plasma/srcs.nix
|
>pkgs/desktops/kde-5/plasma/srcs.nix
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
./fetch-kde-qt.sh http://download.qt.io/official_releases/qt/5.6/5.6.1/submodules/ -A '*.tar.xz'
|
./maintainers/scripts/fetch-kde-qt.sh \
|
||||||
|
http://download.qt.io/official_releases/qt/5.7/5.7.0/submodules/ \
|
||||||
|
-A '*.tar.xz' \
|
||||||
|
>pkgs/development/libraries/qt-5/5.7/srcs.nix
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
{ pkgs, options, version, revision, extraSources ? [] }:
|
{ pkgs, options, version, revision, extraSources ? [] }:
|
||||||
|
|
||||||
with pkgs;
|
with pkgs;
|
||||||
with pkgs.lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
lib = pkgs.lib;
|
||||||
|
|
||||||
# Remove invisible and internal options.
|
# Remove invisible and internal options.
|
||||||
optionsList = filter (opt: opt.visible && !opt.internal) (optionAttrSetToDocList options);
|
optionsList = lib.filter (opt: opt.visible && !opt.internal) (lib.optionAttrSetToDocList options);
|
||||||
|
|
||||||
# Replace functions by the string <function>
|
# Replace functions by the string <function>
|
||||||
substFunction = x:
|
substFunction = x:
|
||||||
if builtins.isAttrs x then mapAttrs (name: substFunction) x
|
if builtins.isAttrs x then lib.mapAttrs (name: substFunction) x
|
||||||
else if builtins.isList x then map substFunction x
|
else if builtins.isList x then map substFunction x
|
||||||
else if builtins.isFunction x then "<function>"
|
else if builtins.isFunction x then "<function>"
|
||||||
else x;
|
else x;
|
||||||
|
|
||||||
# Clean up declaration sites to not refer to the NixOS source tree.
|
# Clean up declaration sites to not refer to the NixOS source tree.
|
||||||
optionsList' = flip map optionsList (opt: opt // {
|
optionsList' = lib.flip map optionsList (opt: opt // {
|
||||||
declarations = map stripAnyPrefixes opt.declarations;
|
declarations = map stripAnyPrefixes opt.declarations;
|
||||||
}
|
}
|
||||||
// optionalAttrs (opt ? example) { example = substFunction opt.example; }
|
// lib.optionalAttrs (opt ? example) { example = substFunction opt.example; }
|
||||||
// optionalAttrs (opt ? default) { default = substFunction opt.default; }
|
// lib.optionalAttrs (opt ? default) { default = substFunction opt.default; }
|
||||||
// optionalAttrs (opt ? type) { type = substFunction opt.type; });
|
// lib.optionalAttrs (opt ? type) { type = substFunction opt.type; });
|
||||||
|
|
||||||
# We need to strip references to /nix/store/* from options,
|
# We need to strip references to /nix/store/* from options,
|
||||||
# including any `extraSources` if some modules came from elsewhere,
|
# including any `extraSources` if some modules came from elsewhere,
|
||||||
|
@ -30,7 +30,7 @@ let
|
||||||
# E.g. if some `options` came from modules in ${pkgs.customModules}/nix,
|
# E.g. if some `options` came from modules in ${pkgs.customModules}/nix,
|
||||||
# you'd need to include `extraSources = [ pkgs.customModules ]`
|
# you'd need to include `extraSources = [ pkgs.customModules ]`
|
||||||
prefixesToStrip = map (p: "${toString p}/") ([ ../../.. ] ++ extraSources);
|
prefixesToStrip = map (p: "${toString p}/") ([ ../../.. ] ++ extraSources);
|
||||||
stripAnyPrefixes = flip (fold removePrefix) prefixesToStrip;
|
stripAnyPrefixes = lib.flip (lib.fold lib.removePrefix) prefixesToStrip;
|
||||||
|
|
||||||
# Convert the list of options into an XML file.
|
# Convert the list of options into an XML file.
|
||||||
optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsList');
|
optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsList');
|
||||||
|
@ -49,7 +49,7 @@ let
|
||||||
-o $out ${./options-to-docbook.xsl} $optionsXML
|
-o $out ${./options-to-docbook.xsl} $optionsXML
|
||||||
'';
|
'';
|
||||||
|
|
||||||
sources = sourceFilesBySuffices ./. [".xml"];
|
sources = lib.sourceFilesBySuffices ./. [".xml"];
|
||||||
|
|
||||||
copySources =
|
copySources =
|
||||||
''
|
''
|
||||||
|
@ -143,7 +143,7 @@ in rec {
|
||||||
mkdir -p $dst
|
mkdir -p $dst
|
||||||
|
|
||||||
cp ${builtins.toFile "options.json" (builtins.unsafeDiscardStringContext (builtins.toJSON
|
cp ${builtins.toFile "options.json" (builtins.unsafeDiscardStringContext (builtins.toJSON
|
||||||
(listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList'))))
|
(builtins.listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList'))))
|
||||||
} $dst/options.json
|
} $dst/options.json
|
||||||
|
|
||||||
mkdir -p $out/nix-support
|
mkdir -p $out/nix-support
|
||||||
|
@ -193,6 +193,43 @@ in rec {
|
||||||
allowedReferences = ["out"];
|
allowedReferences = ["out"];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
manualEpub = stdenv.mkDerivation {
|
||||||
|
name = "nixos-manual-epub";
|
||||||
|
|
||||||
|
inherit sources;
|
||||||
|
|
||||||
|
buildInputs = [ libxml2 libxslt zip ];
|
||||||
|
|
||||||
|
buildCommand = ''
|
||||||
|
${copySources}
|
||||||
|
|
||||||
|
# Check the validity of the manual sources.
|
||||||
|
xmllint --noout --nonet --xinclude --noxincludenode \
|
||||||
|
--relaxng ${docbook5}/xml/rng/docbook/docbook.rng \
|
||||||
|
manual.xml
|
||||||
|
|
||||||
|
# Generate the epub manual.
|
||||||
|
dst=$out/share/doc/nixos
|
||||||
|
|
||||||
|
xsltproc \
|
||||||
|
${manualXsltprocOptions} \
|
||||||
|
--stringparam target.database.document "${olinkDB}/olinkdb.xml" \
|
||||||
|
--nonet --xinclude --output $dst/epub/ \
|
||||||
|
${docbook5_xsl}/xml/xsl/docbook/epub/docbook.xsl ./manual.xml
|
||||||
|
|
||||||
|
mkdir -p $dst/epub/OEBPS/images/callouts
|
||||||
|
cp -r ${docbook5_xsl}/xml/xsl/docbook/images/callouts/*.gif $dst/epub/OEBPS/images/callouts
|
||||||
|
echo "application/epub+zip" > mimetype
|
||||||
|
zip -0Xq "$dst/NixOS Manual - NixOS community.epub" mimetype
|
||||||
|
zip -Xr9D "$dst/NixOS Manual - NixOS community.epub" $dst/epub/*
|
||||||
|
|
||||||
|
mkdir -p $out/nix-support
|
||||||
|
echo "doc-epub manual $dst/NixOS Manual - NixOS community.epub" >> $out/nix-support/hydra-build-products
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
manualPDF = stdenv.mkDerivation {
|
manualPDF = stdenv.mkDerivation {
|
||||||
name = "nixos-manual-pdf";
|
name = "nixos-manual-pdf";
|
||||||
|
|
||||||
|
|
|
@ -9,11 +9,36 @@ let
|
||||||
|
|
||||||
systemWide = cfg.enable && cfg.systemWide;
|
systemWide = cfg.enable && cfg.systemWide;
|
||||||
nonSystemWide = cfg.enable && !cfg.systemWide;
|
nonSystemWide = cfg.enable && !cfg.systemWide;
|
||||||
|
hasZeroconf = let z = cfg.zeroconf; in z.publish.enable || z.discovery.enable;
|
||||||
|
|
||||||
|
overriddenPackage = cfg.package.override
|
||||||
|
(optionalAttrs hasZeroconf { zeroconfSupport = true; });
|
||||||
|
binary = "${getBin overriddenPackage}/bin/pulseaudio";
|
||||||
|
binaryNoDaemon = "${binary} --daemonize=no";
|
||||||
|
|
||||||
# Forces 32bit pulseaudio and alsaPlugins to be built/supported for apps
|
# Forces 32bit pulseaudio and alsaPlugins to be built/supported for apps
|
||||||
# using 32bit alsa on 64bit linux.
|
# using 32bit alsa on 64bit linux.
|
||||||
enable32BitAlsaPlugins = cfg.support32Bit && stdenv.isx86_64 && (pkgs_i686.alsaLib != null && pkgs_i686.libpulseaudio != null);
|
enable32BitAlsaPlugins = cfg.support32Bit && stdenv.isx86_64 && (pkgs_i686.alsaLib != null && pkgs_i686.libpulseaudio != null);
|
||||||
|
|
||||||
|
|
||||||
|
myConfigFile =
|
||||||
|
let
|
||||||
|
addModuleIf = cond: mod: optionalString cond "load-module ${mod}";
|
||||||
|
allAnon = optional cfg.tcp.anonymousClients.allowAll "auth-anonymous=1";
|
||||||
|
ipAnon = let a = cfg.tcp.anonymousClients.allowedIpRanges;
|
||||||
|
in optional (a != []) ''auth-ip-acl=${concatStringsSep ";" a}'';
|
||||||
|
in writeTextFile {
|
||||||
|
name = "default.pa";
|
||||||
|
text = ''
|
||||||
|
.include ${cfg.configFile}
|
||||||
|
${addModuleIf cfg.zeroconf.publish.enable "module-zeroconf-publish"}
|
||||||
|
${addModuleIf cfg.zeroconf.discovery.enable "module-zeroconf-discover"}
|
||||||
|
${addModuleIf cfg.tcp.enable (concatStringsSep " "
|
||||||
|
([ "load-module module-native-protocol-tcp" ] ++ allAnon ++ ipAnon))}
|
||||||
|
${cfg.extraConfig}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
ids = config.ids;
|
ids = config.ids;
|
||||||
|
|
||||||
uid = ids.uids.pulseaudio;
|
uid = ids.uids.pulseaudio;
|
||||||
|
@ -26,7 +51,7 @@ let
|
||||||
# are built with PulseAudio support (like KDE).
|
# are built with PulseAudio support (like KDE).
|
||||||
clientConf = writeText "client.conf" ''
|
clientConf = writeText "client.conf" ''
|
||||||
autospawn=${if nonSystemWide then "yes" else "no"}
|
autospawn=${if nonSystemWide then "yes" else "no"}
|
||||||
${optionalString nonSystemWide "daemon-binary=${cfg.package.out}/bin/pulseaudio"}
|
${optionalString nonSystemWide "daemon-binary=${binary}"}
|
||||||
${cfg.extraClientConf}
|
${cfg.extraClientConf}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -44,7 +69,7 @@ let
|
||||||
hint.description "Default Audio Device (via PulseAudio)"
|
hint.description "Default Audio Device (via PulseAudio)"
|
||||||
}
|
}
|
||||||
ctl_type.pulse {
|
ctl_type.pulse {
|
||||||
libs.native = ${alsaPlugins}/lib/alsa-lib/libasound_module_ctl_pulse.so ;
|
libs.native = ${pkgs.alsaPlugins}/lib/alsa-lib/libasound_module_ctl_pulse.so ;
|
||||||
${lib.optionalString enable32BitAlsaPlugins
|
${lib.optionalString enable32BitAlsaPlugins
|
||||||
"libs.32Bit = ${pkgs_i686.alsaPlugins}/lib/alsa-lib/libasound_module_ctl_pulse.so ;"}
|
"libs.32Bit = ${pkgs_i686.alsaPlugins}/lib/alsa-lib/libasound_module_ctl_pulse.so ;"}
|
||||||
}
|
}
|
||||||
|
@ -89,16 +114,25 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
configFile = mkOption {
|
configFile = mkOption {
|
||||||
type = types.path;
|
type = types.nullOr types.path;
|
||||||
description = ''
|
description = ''
|
||||||
The path to the configuration the PulseAudio server
|
The path to the default configuration options the PulseAudio server
|
||||||
should use. By default, the "default.pa" configuration
|
should use. By default, the "default.pa" configuration
|
||||||
from the PulseAudio distribution is used.
|
from the PulseAudio distribution is used.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Literal string to append to <literal>configFile</literal>
|
||||||
|
and the config file generated by the pulseaudio module.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
extraClientConf = mkOption {
|
extraClientConf = mkOption {
|
||||||
type = types.str;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
description = ''
|
description = ''
|
||||||
Extra configuration appended to pulse/client.conf file.
|
Extra configuration appended to pulse/client.conf file.
|
||||||
|
@ -127,6 +161,31 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
zeroconf = {
|
||||||
|
discovery.enable =
|
||||||
|
mkEnableOption "discovery of pulseaudio sinks in the local network";
|
||||||
|
publish.enable =
|
||||||
|
mkEnableOption "publishing the pulseaudio sink in the local network";
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: enable by default?
|
||||||
|
tcp = {
|
||||||
|
enable = mkEnableOption "tcp streaming support";
|
||||||
|
|
||||||
|
anonymousClients = {
|
||||||
|
allowAll = mkEnableOption "all anonymous clients to stream to the server";
|
||||||
|
allowedIpRanges = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [];
|
||||||
|
example = literalExample ''[ "127.0.0.1" "192.168.1.0/24" ]'';
|
||||||
|
description = ''
|
||||||
|
A list of IP subnets that are allowed to stream to the server.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -139,11 +198,11 @@ in {
|
||||||
source = clientConf;
|
source = clientConf;
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.pulseaudio.configFile = mkDefault "${getBin cfg.package}/etc/pulse/default.pa";
|
hardware.pulseaudio.configFile = mkDefault "${getBin overriddenPackage}/etc/pulse/default.pa";
|
||||||
}
|
}
|
||||||
|
|
||||||
(mkIf cfg.enable {
|
(mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = [ overriddenPackage ];
|
||||||
|
|
||||||
environment.etc = singleton {
|
environment.etc = singleton {
|
||||||
target = "asound.conf";
|
target = "asound.conf";
|
||||||
|
@ -152,12 +211,21 @@ in {
|
||||||
|
|
||||||
# Allow PulseAudio to get realtime priority using rtkit.
|
# Allow PulseAudio to get realtime priority using rtkit.
|
||||||
security.rtkit.enable = true;
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
(mkIf hasZeroconf {
|
||||||
|
services.avahi.enable = true;
|
||||||
|
})
|
||||||
|
(mkIf cfg.zeroconf.publish.enable {
|
||||||
|
services.avahi.publish.enable = true;
|
||||||
|
services.avahi.publish.userServices = true;
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf nonSystemWide {
|
(mkIf nonSystemWide {
|
||||||
environment.etc = singleton {
|
environment.etc = singleton {
|
||||||
target = "pulse/default.pa";
|
target = "pulse/default.pa";
|
||||||
source = cfg.configFile;
|
source = myConfigFile;
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user = {
|
systemd.user = {
|
||||||
|
@ -167,10 +235,12 @@ in {
|
||||||
wantedBy = [ "default.target" ];
|
wantedBy = [ "default.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "notify";
|
Type = "notify";
|
||||||
ExecStart = "${getBin cfg.package}/bin/pulseaudio --daemonize=no";
|
ExecStart = binaryNoDaemon;
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
|
RestartSec = "500ms";
|
||||||
};
|
};
|
||||||
environment = { DISPLAY = ":${toString config.services.xserver.display}"; };
|
environment = { DISPLAY = ":${toString config.services.xserver.display}"; };
|
||||||
|
restartIfChanged = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
sockets.pulseaudio = {
|
sockets.pulseaudio = {
|
||||||
|
@ -205,8 +275,9 @@ in {
|
||||||
environment.PULSE_RUNTIME_PATH = stateDir;
|
environment.PULSE_RUNTIME_PATH = stateDir;
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "notify";
|
Type = "notify";
|
||||||
ExecStart = "${getBin cfg.package}/bin/pulseaudio --daemonize=no --log-level=${cfg.daemon.logLevel} --system -n --file=${cfg.configFile}";
|
ExecStart = "${binaryNoDaemon} --log-level=${cfg.daemon.logLevel} --system -n --file=${myConfigFile}";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
|
RestartSec = "500ms";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
|
@ -473,7 +473,7 @@
|
||||||
./services/web-servers/lighttpd/gitweb.nix
|
./services/web-servers/lighttpd/gitweb.nix
|
||||||
./services/web-servers/lighttpd/inginious.nix
|
./services/web-servers/lighttpd/inginious.nix
|
||||||
./services/web-servers/nginx/default.nix
|
./services/web-servers/nginx/default.nix
|
||||||
./services/web-servers/phpfpm/default.nix
|
./services/web-servers/phpfpm.nix
|
||||||
./services/web-servers/shellinabox.nix
|
./services/web-servers/shellinabox.nix
|
||||||
./services/web-servers/tomcat.nix
|
./services/web-servers/tomcat.nix
|
||||||
./services/web-servers/uwsgi.nix
|
./services/web-servers/uwsgi.nix
|
||||||
|
|
|
@ -100,6 +100,12 @@ in
|
||||||
Password used for SMTP auth. (STORED PLAIN TEXT, WORLD-READABLE IN NIX STORE)
|
Password used for SMTP auth. (STORED PLAIN TEXT, WORLD-READABLE IN NIX STORE)
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
setSendmail = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Whether to set the system sendmail to ssmtp's.";
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -122,6 +128,13 @@ in
|
||||||
'';
|
'';
|
||||||
|
|
||||||
environment.systemPackages = [pkgs.ssmtp];
|
environment.systemPackages = [pkgs.ssmtp];
|
||||||
|
|
||||||
|
services.mail.sendmailSetuidWrapper = mkIf cfg.setSendmail {
|
||||||
|
program = "sendmail";
|
||||||
|
source = "${pkgs.ssmtp}/bin/sendmail";
|
||||||
|
setuid = false;
|
||||||
|
setgid = false;
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ let
|
||||||
set -g status-keys ${cfg.keyMode}
|
set -g status-keys ${cfg.keyMode}
|
||||||
set -g mode-keys ${cfg.keyMode}
|
set -g mode-keys ${cfg.keyMode}
|
||||||
|
|
||||||
${if cfg.keyMode == "vi" then ''
|
${if cfg.keyMode == "vi" && cfg.customPaneNavigationAndResize then ''
|
||||||
bind h select-pane -L
|
bind h select-pane -L
|
||||||
bind j select-pane -D
|
bind j select-pane -D
|
||||||
bind k select-pane -U
|
bind k select-pane -U
|
||||||
|
@ -86,6 +86,13 @@ in {
|
||||||
description = "Use 24 hour clock.";
|
description = "Use 24 hour clock.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
customPaneNavigationAndResize = mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
type = types.bool;
|
||||||
|
description = "Override the hjkl and HJKL bindings for pane navigation and resizing in VI mode.";
|
||||||
|
};
|
||||||
|
|
||||||
escapeTime = mkOption {
|
escapeTime = mkOption {
|
||||||
default = 500;
|
default = 500;
|
||||||
example = 0;
|
example = 0;
|
||||||
|
|
|
@ -47,6 +47,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
configuration = mkOption {
|
configuration = mkOption {
|
||||||
|
default = "";
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
description = ''
|
description = ''
|
||||||
The configuration that Mopidy should use.
|
The configuration that Mopidy should use.
|
||||||
|
|
|
@ -67,33 +67,33 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
packages = mkOption {
|
packages = mkOption {
|
||||||
default = [ pkgs.stdenv pkgs.jre config.programs.ssh.package pkgs.nix ];
|
default = [ pkgs.stdenv pkgs.jre pkgs.git config.programs.ssh.package pkgs.nix ];
|
||||||
type = types.listOf types.package;
|
type = types.listOf types.package;
|
||||||
description = ''
|
description = ''
|
||||||
Packages to add to PATH for the Go.CD server's process.
|
Packages to add to PATH for the Go.CD server's process.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
heapSize = mkOption {
|
initialJavaHeapSize = mkOption {
|
||||||
default = "512m";
|
default = "512m";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = ''
|
description = ''
|
||||||
Specifies the java heap memory size for the Go.CD server's java process.
|
Specifies the initial java heap memory size for the Go.CD server's java process.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
maxMemory = mkOption {
|
maxJavaHeapMemory = mkOption {
|
||||||
default = "1024m";
|
default = "1024m";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = ''
|
description = ''
|
||||||
Specifies the java maximum memory size for the Go.CD server's java process.
|
Specifies the java maximum heap memory size for the Go.CD server's java process.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
extraOptions = mkOption {
|
extraOptions = mkOption {
|
||||||
default = [
|
default = [
|
||||||
"-Xms${cfg.heapSize}"
|
"-Xms${cfg.initialJavaHeapSize}"
|
||||||
"-Xmx${cfg.maxMemory}"
|
"-Xmx${cfg.maxJavaHeapMemory}"
|
||||||
"-Dcruise.listen.host=${cfg.listenAddress}"
|
"-Dcruise.listen.host=${cfg.listenAddress}"
|
||||||
"-Duser.language=en"
|
"-Duser.language=en"
|
||||||
"-Djruby.rack.request.size.threshold.bytes=30000000"
|
"-Djruby.rack.request.size.threshold.bytes=30000000"
|
||||||
|
|
|
@ -51,12 +51,6 @@ in
|
||||||
description = "Logging verbosity level.";
|
description = "Logging verbosity level.";
|
||||||
};
|
};
|
||||||
|
|
||||||
watchdogTimeout = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 10;
|
|
||||||
description = "Set watchdog timeout value in seconds.";
|
|
||||||
};
|
|
||||||
|
|
||||||
filterWorkers = mkOption {
|
filterWorkers = mkOption {
|
||||||
type = types.int;
|
type = types.int;
|
||||||
default = 1;
|
default = 1;
|
||||||
|
@ -140,7 +134,6 @@ in
|
||||||
"-w ${toString cfg.filterWorkers} " +
|
"-w ${toString cfg.filterWorkers} " +
|
||||||
ops havePluginPath "--pluginpath ${pluginPath} " +
|
ops havePluginPath "--pluginpath ${pluginPath} " +
|
||||||
"${verbosityFlag} " +
|
"${verbosityFlag} " +
|
||||||
"--watchdog-timeout ${toString cfg.watchdogTimeout} " +
|
|
||||||
"-f ${writeText "logstash.conf" ''
|
"-f ${writeText "logstash.conf" ''
|
||||||
input {
|
input {
|
||||||
${cfg.inputConfig}
|
${cfg.inputConfig}
|
||||||
|
|
|
@ -75,7 +75,7 @@ in
|
||||||
|
|
||||||
bindUnixSockets = mkOption {
|
bindUnixSockets = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = ["/run/rmilter.sock"];
|
default = ["/run/rmilter/rmilter.sock"];
|
||||||
description = ''
|
description = ''
|
||||||
Unix domain sockets to listen for MTA requests.
|
Unix domain sockets to listen for MTA requests.
|
||||||
'';
|
'';
|
||||||
|
@ -114,7 +114,7 @@ in
|
||||||
|
|
||||||
servers = mkOption {
|
servers = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = ["r:/run/rspamd.sock"];
|
default = ["r:/run/rspamd/rspamd.sock"];
|
||||||
description = ''
|
description = ''
|
||||||
Spamd socket definitions.
|
Spamd socket definitions.
|
||||||
Is server name is prefixed with r: it is rspamd server.
|
Is server name is prefixed with r: it is rspamd server.
|
||||||
|
@ -197,7 +197,7 @@ milter_default_action = accept
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkgs.rmilter}/bin/rmilter ${optionalString cfg.debug "-d"} -n -c ${rmilterConfigFile}";
|
ExecStart = "${pkgs.rmilter}/bin/rmilter ${optionalString cfg.debug "-d"} -n -c ${rmilterConfigFile}";
|
||||||
ExecReload = "/bin/kill -USR1 $MAINPID";
|
ExecReload = "${pkgs.coreutils}/bin/kill -USR1 $MAINPID";
|
||||||
User = cfg.user;
|
User = cfg.user;
|
||||||
Group = cfg.group;
|
Group = cfg.group;
|
||||||
PermissionsStartOnly = true;
|
PermissionsStartOnly = true;
|
||||||
|
@ -212,10 +212,10 @@ milter_default_action = accept
|
||||||
description = "Rmilter service socket";
|
description = "Rmilter service socket";
|
||||||
wantedBy = [ "sockets.target" ];
|
wantedBy = [ "sockets.target" ];
|
||||||
socketConfig = {
|
socketConfig = {
|
||||||
ListenStream = cfg.bindUnixSockets ++ cfg.bindInetSockets;
|
ListenStream = cfg.bindUnixSockets ++ cfg.bindInetSockets;
|
||||||
SocketUser = cfg.user;
|
SocketUser = cfg.user;
|
||||||
SocketGroup = cfg.group;
|
SocketGroup = cfg.group;
|
||||||
SocketMode = "0660";
|
SocketMode = "0666";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ let
|
||||||
|
|
||||||
mkBindSockets = socks: concatStringsSep "\n" (map (each: " bind_socket = \"${each}\"") socks);
|
mkBindSockets = socks: concatStringsSep "\n" (map (each: " bind_socket = \"${each}\"") socks);
|
||||||
|
|
||||||
rspamdConf =
|
rspamdConfFile = pkgs.writeText "rspamd.conf"
|
||||||
''
|
''
|
||||||
.include "$CONFDIR/common.conf"
|
.include "$CONFDIR/common.conf"
|
||||||
|
|
||||||
|
@ -18,8 +18,7 @@ let
|
||||||
}
|
}
|
||||||
|
|
||||||
logging {
|
logging {
|
||||||
type = "file";
|
type = "syslog";
|
||||||
filename = "$LOGDIR/rspamd.log";
|
|
||||||
.include "$CONFDIR/logging.inc"
|
.include "$CONFDIR/logging.inc"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +32,6 @@ let
|
||||||
.include "$CONFDIR/worker-controller.inc"
|
.include "$CONFDIR/worker-controller.inc"
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
rspamdConfFile = pkgs.writeText "rspamd.conf" rspamdConf;
|
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
|
@ -45,10 +43,7 @@ in
|
||||||
|
|
||||||
services.rspamd = {
|
services.rspamd = {
|
||||||
|
|
||||||
enable = mkOption {
|
enable = mkEnableOption "Whether to run the rspamd daemon.";
|
||||||
default = false;
|
|
||||||
description = "Whether to run the rspamd daemon.";
|
|
||||||
};
|
|
||||||
|
|
||||||
debug = mkOption {
|
debug = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
|
@ -58,7 +53,7 @@ in
|
||||||
bindSocket = mkOption {
|
bindSocket = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = [
|
default = [
|
||||||
"/run/rspamd.sock mode=0666 owner=${cfg.user}"
|
"/run/rspamd/rspamd.sock mode=0666 owner=${cfg.user}"
|
||||||
];
|
];
|
||||||
description = ''
|
description = ''
|
||||||
List of sockets to listen, in format acceptable by rspamd
|
List of sockets to listen, in format acceptable by rspamd
|
||||||
|
@ -97,7 +92,6 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -128,18 +122,15 @@ in
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkgs.rspamd}/bin/rspamd ${optionalString cfg.debug "-d"} --user=${cfg.user} --group=${cfg.group} --pid=/run/rspamd.pid -c ${rspamdConfFile} -f";
|
ExecStart = "${pkgs.rspamd}/bin/rspamd ${optionalString cfg.debug "-d"} --user=${cfg.user} --group=${cfg.group} --pid=/run/rspamd.pid -c ${rspamdConfFile} -f";
|
||||||
RuntimeDirectory = "/var/lib/rspamd";
|
|
||||||
PermissionsStartOnly = true;
|
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
|
RuntimeDirectory = "rspamd";
|
||||||
|
PrivateTmp = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
preStart = ''
|
preStart = ''
|
||||||
${pkgs.coreutils}/bin/mkdir -p /var/{lib,log}/rspamd
|
${pkgs.coreutils}/bin/mkdir -p /var/lib/rspamd
|
||||||
${pkgs.coreutils}/bin/chown ${cfg.user}:${cfg.group} /var/lib/rspamd
|
${pkgs.coreutils}/bin/chown ${cfg.user}:${cfg.group} /var/lib/rspamd
|
||||||
'';
|
'';
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -522,10 +522,12 @@ in {
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
preStart = ''
|
preStart = ''
|
||||||
mkdir -p /var/lib/matrix-synapse
|
if ! test -e /var/lib/matrix-synapse; then
|
||||||
chmod 700 /var/lib/matrix-synapse
|
mkdir -p /var/lib/matrix-synapse
|
||||||
chown -R matrix-synapse:matrix-synapse /var/lib/matrix-synapse
|
chmod 700 /var/lib/matrix-synapse
|
||||||
${cfg.package}/bin/homeserver --config-path ${configFile} --keys-directory /var/lib/matrix-synapse/ --generate-keys
|
chown -R matrix-synapse:matrix-synapse /var/lib/matrix-synapse
|
||||||
|
${cfg.package}/bin/homeserver --config-path ${configFile} --keys-directory /var/lib/matrix-synapse/ --generate-keys
|
||||||
|
fi
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
|
|
|
@ -72,6 +72,7 @@ let
|
||||||
postgresqlConfig = pkgs.writeText "postgres.yaml" cfg.postgresqlConfig;
|
postgresqlConfig = pkgs.writeText "postgres.yaml" cfg.postgresqlConfig;
|
||||||
nginxConfig = pkgs.writeText "nginx.yaml" cfg.nginxConfig;
|
nginxConfig = pkgs.writeText "nginx.yaml" cfg.nginxConfig;
|
||||||
mongoConfig = pkgs.writeText "mongo.yaml" cfg.mongoConfig;
|
mongoConfig = pkgs.writeText "mongo.yaml" cfg.mongoConfig;
|
||||||
|
jmxConfig = pkgs.writeText "jmx.yaml" cfg.jmxConfig;
|
||||||
|
|
||||||
etcfiles =
|
etcfiles =
|
||||||
[ { source = ddConf;
|
[ { source = ddConf;
|
||||||
|
@ -94,6 +95,10 @@ let
|
||||||
(optional (cfg.mongoConfig != null)
|
(optional (cfg.mongoConfig != null)
|
||||||
{ source = mongoConfig;
|
{ source = mongoConfig;
|
||||||
target = "dd-agent/conf.d/mongo.yaml";
|
target = "dd-agent/conf.d/mongo.yaml";
|
||||||
|
}) ++
|
||||||
|
(optional (cfg.jmxConfig != null)
|
||||||
|
{ source = jmxConfig;
|
||||||
|
target = "dd-agent/conf.d/jmx.yaml";
|
||||||
});
|
});
|
||||||
|
|
||||||
in {
|
in {
|
||||||
|
@ -141,6 +146,13 @@ in {
|
||||||
default = null;
|
default = null;
|
||||||
type = types.uniq (types.nullOr types.string);
|
type = types.uniq (types.nullOr types.string);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
jmxConfig = mkOption {
|
||||||
|
description = "JMX integration configuration";
|
||||||
|
default = null;
|
||||||
|
type = types.uniq (types.nullOr types.string);
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -167,7 +179,7 @@ in {
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = 2;
|
RestartSec = 2;
|
||||||
};
|
};
|
||||||
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig ];
|
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig jmxConfig ];
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.dogstatsd = {
|
systemd.services.dogstatsd = {
|
||||||
|
@ -183,7 +195,21 @@ in {
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = 2;
|
RestartSec = 2;
|
||||||
};
|
};
|
||||||
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig ];
|
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig jmxConfig ];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.dd-jmxfetch = lib.mkIf (cfg.jmxConfig != null) {
|
||||||
|
description = "Datadog JMX Fetcher";
|
||||||
|
path = [ pkgs."dd-agent" pkgs.python pkgs.sysstat pkgs.procps pkgs.jdk ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.dd-agent}/bin/dd-jmxfetch";
|
||||||
|
User = "datadog";
|
||||||
|
Group = "datadog";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 2;
|
||||||
|
};
|
||||||
|
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig jmxConfig ];
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.etc = etcfiles;
|
environment.etc = etcfiles;
|
||||||
|
|
|
@ -101,9 +101,22 @@ let
|
||||||
# Perform a reverse-path test to refuse spoofers
|
# Perform a reverse-path test to refuse spoofers
|
||||||
# For now, we just drop, as the raw table doesn't have a log-refuse yet
|
# For now, we just drop, as the raw table doesn't have a log-refuse yet
|
||||||
${optionalString (kernelHasRPFilter && cfg.checkReversePath) ''
|
${optionalString (kernelHasRPFilter && cfg.checkReversePath) ''
|
||||||
if ! ip46tables -A PREROUTING -t raw -m rpfilter --invert -j DROP; then
|
# Clean up rpfilter rules
|
||||||
echo "<2>failed to initialise rpfilter support" >&2
|
ip46tables -t raw -D PREROUTING -j nixos-fw-rpfilter 2> /dev/null || true
|
||||||
fi
|
ip46tables -t raw -F nixos-fw-rpfilter 2> /dev/null || true
|
||||||
|
ip46tables -t raw -N nixos-fw-rpfilter 2> /dev/null || true
|
||||||
|
|
||||||
|
ip46tables -t raw -A nixos-fw-rpfilter -m rpfilter -j RETURN
|
||||||
|
|
||||||
|
# Allows this host to act as a DHCPv4 server
|
||||||
|
iptables -t raw -A nixos-fw-rpfilter -s 0.0.0.0 -d 255.255.255.255 -p udp --sport 68 --dport 67 -j RETURN
|
||||||
|
|
||||||
|
${optionalString cfg.logReversePathDrops ''
|
||||||
|
ip46tables -t raw -A nixos-fw-rpfilter -j LOG --log-level info --log-prefix "rpfilter drop: "
|
||||||
|
''}
|
||||||
|
ip46tables -t raw -A nixos-fw-rpfilter -j DROP
|
||||||
|
|
||||||
|
ip46tables -t raw -A PREROUTING -j nixos-fw-rpfilter
|
||||||
''}
|
''}
|
||||||
|
|
||||||
# Accept all traffic on the trusted interfaces.
|
# Accept all traffic on the trusted interfaces.
|
||||||
|
@ -188,9 +201,7 @@ let
|
||||||
ip46tables -D INPUT -j nixos-fw 2>/dev/null || true
|
ip46tables -D INPUT -j nixos-fw 2>/dev/null || true
|
||||||
|
|
||||||
${optionalString (kernelHasRPFilter && cfg.checkReversePath) ''
|
${optionalString (kernelHasRPFilter && cfg.checkReversePath) ''
|
||||||
if ! ip46tables -D PREROUTING -t raw -m rpfilter --invert -j DROP; then
|
ip46tables -t raw -D PREROUTING -j nixos-fw-rpfilter 2>/dev/null || true
|
||||||
echo "<2>failed to stop rpfilter support" >&2
|
|
||||||
fi
|
|
||||||
''}
|
''}
|
||||||
|
|
||||||
${cfg.extraStopCommands}
|
${cfg.extraStopCommands}
|
||||||
|
@ -376,6 +387,16 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
networking.firewall.logReversePathDrops = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description =
|
||||||
|
''
|
||||||
|
Logs dropped packets failing the reverse path filter test if
|
||||||
|
the option networking.firewall.checkReversePath is enabled.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
networking.firewall.connectionTrackingModules = mkOption {
|
networking.firewall.connectionTrackingModules = mkOption {
|
||||||
default = [ "ftp" ];
|
default = [ "ftp" ];
|
||||||
example = [ "ftp" "irc" "sane" "sip" "tftp" "amanda" "h323" "netbios_sn" "pptp" "snmp" ];
|
example = [ "ftp" "irc" "sane" "sip" "tftp" "amanda" "h323" "netbios_sn" "pptp" "snmp" ];
|
||||||
|
|
|
@ -114,8 +114,8 @@ in
|
||||||
|
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.services.syncthing = mkIf cfg.systemService
|
systemd.services = mkIf cfg.systemService {
|
||||||
header // {
|
syncthing = header // {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig = service // {
|
serviceConfig = service // {
|
||||||
User = cfg.user;
|
User = cfg.user;
|
||||||
|
@ -124,6 +124,7 @@ in
|
||||||
ExecStart = "${cfg.package}/bin/syncthing -no-browser -home=${cfg.dataDir}";
|
ExecStart = "${cfg.package}/bin/syncthing -no-browser -home=${cfg.dataDir}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
systemd.user.services.syncthing =
|
systemd.user.services.syncthing =
|
||||||
header // {
|
header // {
|
||||||
|
|
|
@ -157,6 +157,7 @@ in
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
PIDFile = "/run/tinc.${network}.pid";
|
PIDFile = "/run/tinc.${network}.pid";
|
||||||
|
Restart = "on-failure";
|
||||||
};
|
};
|
||||||
preStart = ''
|
preStart = ''
|
||||||
mkdir -p /etc/tinc/${network}/hosts
|
mkdir -p /etc/tinc/${network}/hosts
|
||||||
|
|
|
@ -17,6 +17,7 @@ let
|
||||||
else cfg.database.port;
|
else cfg.database.port;
|
||||||
|
|
||||||
poolName = "tt-rss";
|
poolName = "tt-rss";
|
||||||
|
phpfpmSocketName = "/var/run/phpfpm/${poolName}.sock";
|
||||||
virtualHostName = "tt-rss";
|
virtualHostName = "tt-rss";
|
||||||
|
|
||||||
tt-rss-config = pkgs.writeText "config.php" ''
|
tt-rss-config = pkgs.writeText "config.php" ''
|
||||||
|
@ -448,23 +449,21 @@ let
|
||||||
root = "/var/lib/tt-rss";
|
root = "/var/lib/tt-rss";
|
||||||
in mkIf cfg.enable {
|
in mkIf cfg.enable {
|
||||||
|
|
||||||
services.phpfpm.pools = if cfg.pool == "${poolName}" then {
|
services.phpfpm.poolConfigs = if cfg.pool == "${poolName}" then {
|
||||||
"${poolName}" = {
|
"${poolName}" = ''
|
||||||
listen = "/var/run/phpfpm/${poolName}.sock";
|
listen = "${phpfpmSocketName}";
|
||||||
extraConfig = ''
|
listen.owner = nginx
|
||||||
listen.owner = nginx
|
listen.group = nginx
|
||||||
listen.group = nginx
|
listen.mode = 0600
|
||||||
listen.mode = 0600
|
user = nginx
|
||||||
user = nginx
|
pm = dynamic
|
||||||
pm = dynamic
|
pm.max_children = 75
|
||||||
pm.max_children = 75
|
pm.start_servers = 10
|
||||||
pm.start_servers = 10
|
pm.min_spare_servers = 5
|
||||||
pm.min_spare_servers = 5
|
pm.max_spare_servers = 20
|
||||||
pm.max_spare_servers = 20
|
pm.max_requests = 500
|
||||||
pm.max_requests = 500
|
catch_workers_output = 1
|
||||||
catch_workers_output = 1
|
'';
|
||||||
'';
|
|
||||||
};
|
|
||||||
} else {};
|
} else {};
|
||||||
|
|
||||||
# TODO: Re-enable after https://github.com/NixOS/nixpkgs/pull/15862 is merged
|
# TODO: Re-enable after https://github.com/NixOS/nixpkgs/pull/15862 is merged
|
||||||
|
@ -486,7 +485,7 @@ let
|
||||||
# locations."~ \.php$" = {
|
# locations."~ \.php$" = {
|
||||||
# extraConfig = ''
|
# extraConfig = ''
|
||||||
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||||
# fastcgi_pass unix:${config.services.phpfpm.pools."${cfg.pool}".listen};
|
# fastcgi_pass unix:${phpfpmSocketName};
|
||||||
# fastcgi_index index.php;
|
# fastcgi_index index.php;
|
||||||
# fastcgi_param SCRIPT_FILENAME ${root}/$fastcgi_script_name;
|
# fastcgi_param SCRIPT_FILENAME ${root}/$fastcgi_script_name;
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,11 @@ in
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
systemd.services.lighttpd.preStart = ''
|
||||||
|
mkdir -p /var/cache/cgit
|
||||||
|
chown lighttpd:lighttpd /var/cache/cgit
|
||||||
|
'';
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -224,12 +224,6 @@ in
|
||||||
description = "Lighttpd Web Server";
|
description = "Lighttpd Web Server";
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
preStart = ''
|
|
||||||
${if cfg.cgit.enable then ''
|
|
||||||
mkdir -p /var/cache/cgit
|
|
||||||
chown lighttpd:lighttpd /var/cache/cgit
|
|
||||||
'' else ""}
|
|
||||||
'';
|
|
||||||
serviceConfig.ExecStart = "${pkgs.lighttpd}/sbin/lighttpd -D -f ${configFile}";
|
serviceConfig.ExecStart = "${pkgs.lighttpd}/sbin/lighttpd -D -f ${configFile}";
|
||||||
# SIGINT => graceful shutdown
|
# SIGINT => graceful shutdown
|
||||||
serviceConfig.KillSignal = "SIGINT";
|
serviceConfig.KillSignal = "SIGINT";
|
||||||
|
|
|
@ -9,12 +9,6 @@ let
|
||||||
|
|
||||||
pidFile = "${stateDir}/phpfpm.pid";
|
pidFile = "${stateDir}/phpfpm.pid";
|
||||||
|
|
||||||
mkPool = n: p: ''
|
|
||||||
[${n}]
|
|
||||||
listen = ${p.listen}
|
|
||||||
${p.extraConfig}
|
|
||||||
'';
|
|
||||||
|
|
||||||
cfgFile = pkgs.writeText "phpfpm.conf" ''
|
cfgFile = pkgs.writeText "phpfpm.conf" ''
|
||||||
[global]
|
[global]
|
||||||
pid = ${pidFile}
|
pid = ${pidFile}
|
||||||
|
@ -22,7 +16,7 @@ let
|
||||||
daemonize = yes
|
daemonize = yes
|
||||||
${cfg.extraConfig}
|
${cfg.extraConfig}
|
||||||
|
|
||||||
${concatStringsSep "\n" (mapAttrsToList mkPool cfg.pools)}
|
${concatStringsSep "\n" (mapAttrsToList (n: v: "[${n}]\n${v}") cfg.poolConfigs)}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
phpIni = pkgs.writeText "php.ini" ''
|
phpIni = pkgs.writeText "php.ini" ''
|
||||||
|
@ -67,19 +61,33 @@ in {
|
||||||
"Options appended to the PHP configuration file <filename>php.ini</filename>.";
|
"Options appended to the PHP configuration file <filename>php.ini</filename>.";
|
||||||
};
|
};
|
||||||
|
|
||||||
pools = mkOption {
|
poolConfigs = mkOption {
|
||||||
type = types.attrsOf (types.submodule (import ./pool-options.nix {
|
type = types.attrsOf types.lines;
|
||||||
inherit lib;
|
|
||||||
}));
|
|
||||||
default = {};
|
default = {};
|
||||||
|
example = literalExample ''
|
||||||
|
{ mypool = '''
|
||||||
|
listen = /run/phpfpm/mypool
|
||||||
|
user = nobody
|
||||||
|
pm = dynamic
|
||||||
|
pm.max_children = 75
|
||||||
|
pm.start_servers = 10
|
||||||
|
pm.min_spare_servers = 5
|
||||||
|
pm.max_spare_servers = 20
|
||||||
|
pm.max_requests = 500
|
||||||
|
''';
|
||||||
|
}
|
||||||
|
'';
|
||||||
description = ''
|
description = ''
|
||||||
If no pools are defined, the phpfpm service is disabled.
|
A mapping between PHP FPM pool names and their configurations.
|
||||||
|
See the documentation on <literal>php-fpm.conf</literal> for
|
||||||
|
details on configuration directives. If no pools are defined,
|
||||||
|
the phpfpm service is disabled.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.pools != {}) {
|
config = mkIf (cfg.poolConfigs != {}) {
|
||||||
|
|
||||||
systemd.services.phpfpm = {
|
systemd.services.phpfpm = {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
|
@ -1,35 +0,0 @@
|
||||||
{ lib }:
|
|
||||||
|
|
||||||
with lib; {
|
|
||||||
|
|
||||||
options = {
|
|
||||||
|
|
||||||
listen = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
example = "/path/to/unix/socket";
|
|
||||||
description = ''
|
|
||||||
The address on which to accept FastCGI requests.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = mkOption {
|
|
||||||
type = types.lines;
|
|
||||||
example = ''
|
|
||||||
user = nobody
|
|
||||||
pm = dynamic
|
|
||||||
pm.max_children = 75
|
|
||||||
pm.start_servers = 10
|
|
||||||
pm.min_spare_servers = 5
|
|
||||||
pm.max_spare_servers = 20
|
|
||||||
pm.max_requests = 500
|
|
||||||
'';
|
|
||||||
|
|
||||||
description = ''
|
|
||||||
Extra lines that go into the pool configuration.
|
|
||||||
See the documentation on <literal>php-fpm.conf</literal> for
|
|
||||||
details on configuration directives.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
|
@ -84,7 +84,7 @@ in {
|
||||||
|
|
||||||
environment.gnome3.packageSet = mkOption {
|
environment.gnome3.packageSet = mkOption {
|
||||||
default = null;
|
default = null;
|
||||||
example = literalExample "pkgs.gnome3_18";
|
example = literalExample "pkgs.gnome3_20";
|
||||||
description = "Which GNOME 3 package set to use.";
|
description = "Which GNOME 3 package set to use.";
|
||||||
apply = p: if p == null then pkgs.gnome3 else p;
|
apply = p: if p == null then pkgs.gnome3 else p;
|
||||||
};
|
};
|
||||||
|
|
|
@ -148,7 +148,7 @@ in
|
||||||
kde5.kde-gtk-config
|
kde5.kde-gtk-config
|
||||||
|
|
||||||
pkgs.phonon-backend-gstreamer
|
pkgs.phonon-backend-gstreamer
|
||||||
pkgs.kde5.phonon-backend-gstreamer
|
pkgs.qt5.phonon-backend-gstreamer
|
||||||
]
|
]
|
||||||
|
|
||||||
# Plasma 5.5 and later has a Breeze GTK theme.
|
# Plasma 5.5 and later has a Breeze GTK theme.
|
||||||
|
@ -214,7 +214,7 @@ in
|
||||||
services.xserver.displayManager.sddm = {
|
services.xserver.displayManager.sddm = {
|
||||||
theme = "breeze";
|
theme = "breeze";
|
||||||
themes = [
|
themes = [
|
||||||
kde5.extra-cmake-modules # for the setup-hook
|
kde5.ecm # for the setup-hook
|
||||||
kde5.plasma-workspace
|
kde5.plasma-workspace
|
||||||
kde5.breeze-icons
|
kde5.breeze-icons
|
||||||
(kde5.oxygen-icons or kde5.oxygen-icons5)
|
(kde5.oxygen-icons or kde5.oxygen-icons5)
|
||||||
|
|
|
@ -18,6 +18,7 @@ in
|
||||||
./i3.nix
|
./i3.nix
|
||||||
./jwm.nix
|
./jwm.nix
|
||||||
./metacity.nix
|
./metacity.nix
|
||||||
|
./mwm.nix
|
||||||
./openbox.nix
|
./openbox.nix
|
||||||
./pekwm.nix
|
./pekwm.nix
|
||||||
./notion.nix
|
./notion.nix
|
||||||
|
|
25
nixos/modules/services/x11/window-managers/mwm.nix
Normal file
25
nixos/modules/services/x11/window-managers/mwm.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.xserver.windowManager.mwm;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
###### interface
|
||||||
|
options = {
|
||||||
|
services.xserver.windowManager.mwm.enable = mkEnableOption "mwm";
|
||||||
|
};
|
||||||
|
|
||||||
|
###### implementation
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.xserver.windowManager.session = singleton {
|
||||||
|
name = "mwm";
|
||||||
|
start = ''
|
||||||
|
${pkgs.motif}/bin/mwm &
|
||||||
|
waitPID=$!
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
environment.systemPackages = [ pkgs.motif ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -14,9 +14,6 @@ let
|
||||||
# Map video driver names to driver packages. FIXME: move into card-specific modules.
|
# Map video driver names to driver packages. FIXME: move into card-specific modules.
|
||||||
knownVideoDrivers = {
|
knownVideoDrivers = {
|
||||||
virtualbox = { modules = [ kernelPackages.virtualboxGuestAdditions ]; driverName = "vboxvideo"; };
|
virtualbox = { modules = [ kernelPackages.virtualboxGuestAdditions ]; driverName = "vboxvideo"; };
|
||||||
ati = { modules = with pkgs.xorg; [ xf86videoati glamoregl ]; };
|
|
||||||
intel = { modules = with pkgs.xorg; [ xf86videointel glamoregl ]; };
|
|
||||||
modesetting = { modules = []; };
|
|
||||||
};
|
};
|
||||||
|
|
||||||
fontsForXServer =
|
fontsForXServer =
|
||||||
|
@ -512,7 +509,7 @@ in
|
||||||
XKB_BINDIR = "${xorg.xkbcomp}/bin"; # Needed for the Xkb extension.
|
XKB_BINDIR = "${xorg.xkbcomp}/bin"; # Needed for the Xkb extension.
|
||||||
XORG_DRI_DRIVER_PATH = "/run/opengl-driver/lib/dri"; # !!! Depends on the driver selected at runtime.
|
XORG_DRI_DRIVER_PATH = "/run/opengl-driver/lib/dri"; # !!! Depends on the driver selected at runtime.
|
||||||
LD_LIBRARY_PATH = concatStringsSep ":" (
|
LD_LIBRARY_PATH = concatStringsSep ":" (
|
||||||
[ "${xorg.libX11.out}/lib" "${xorg.libXext.out}/lib" ]
|
[ "${xorg.libX11.out}/lib" "${xorg.libXext.out}/lib" "/run/opengl-driver/lib" ]
|
||||||
++ concatLists (catAttrs "libPath" cfg.drivers));
|
++ concatLists (catAttrs "libPath" cfg.drivers));
|
||||||
} // cfg.displayManager.job.environment;
|
} // cfg.displayManager.job.environment;
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,33 @@ sub atomicSymlink {
|
||||||
# current configuration.
|
# current configuration.
|
||||||
atomicSymlink $etc, $static or die;
|
atomicSymlink $etc, $static or die;
|
||||||
|
|
||||||
|
# Returns 1 if the argument points to the files in /etc/static. That
|
||||||
|
# means either argument is a symlink to a file in /etc/static or a
|
||||||
|
# directory with all children being static.
|
||||||
|
sub isStatic {
|
||||||
|
my $path = shift;
|
||||||
|
|
||||||
|
if (-l $path) {
|
||||||
|
my $target = readlink $path;
|
||||||
|
return substr($target, 0, length "/etc/static/") eq "/etc/static/";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-d $path) {
|
||||||
|
opendir DIR, "$path" or return 0;
|
||||||
|
my @names = readdir DIR or die;
|
||||||
|
closedir DIR;
|
||||||
|
|
||||||
|
foreach my $name (@names) {
|
||||||
|
next if $name eq "." || $name eq "..";
|
||||||
|
unless (isStatic("$path/$name")) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
# Remove dangling symlinks that point to /etc/static. These are
|
# Remove dangling symlinks that point to /etc/static. These are
|
||||||
# configuration files that existed in a previous configuration but not
|
# configuration files that existed in a previous configuration but not
|
||||||
|
@ -63,6 +90,16 @@ sub link {
|
||||||
my $target = "/etc/$fn";
|
my $target = "/etc/$fn";
|
||||||
File::Path::make_path(dirname $target);
|
File::Path::make_path(dirname $target);
|
||||||
$created{$fn} = 1;
|
$created{$fn} = 1;
|
||||||
|
|
||||||
|
# Rename doesn't work if target is directory.
|
||||||
|
if (-l $_ && -d $target) {
|
||||||
|
if (isStatic $target) {
|
||||||
|
rmtree $target or warn;
|
||||||
|
} else {
|
||||||
|
warn "$target directory contains user files. Symlinking may fail.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (-e "$_.mode") {
|
if (-e "$_.mode") {
|
||||||
my $mode = read_file("$_.mode"); chomp $mode;
|
my $mode = read_file("$_.mode"); chomp $mode;
|
||||||
if ($mode eq "direct-symlink") {
|
if ($mode eq "direct-symlink") {
|
||||||
|
|
|
@ -6,37 +6,212 @@ let
|
||||||
|
|
||||||
# The container's init script, a small wrapper around the regular
|
# The container's init script, a small wrapper around the regular
|
||||||
# NixOS stage-2 init script.
|
# NixOS stage-2 init script.
|
||||||
containerInit = pkgs.writeScript "container-init"
|
containerInit = (cfg:
|
||||||
|
let
|
||||||
|
renderExtraVeth = (name: cfg:
|
||||||
|
''
|
||||||
|
echo "Bringing ${name} up"
|
||||||
|
ip link set dev ${name} up
|
||||||
|
${optionalString (cfg . "localAddress" or null != null) ''
|
||||||
|
echo "Setting ip for ${name}"
|
||||||
|
ip addr add ${cfg . "localAddress"} dev ${name}
|
||||||
|
''}
|
||||||
|
${optionalString (cfg . "localAddress6" or null != null) ''
|
||||||
|
echo "Setting ip6 for ${name}"
|
||||||
|
ip -6 addr add ${cfg . "localAddress6"} dev ${name}
|
||||||
|
''}
|
||||||
|
${optionalString (cfg . "hostAddress" or null != null) ''
|
||||||
|
echo "Setting route to host for ${name}"
|
||||||
|
ip route add ${cfg . "hostAddress"} dev ${name}
|
||||||
|
''}
|
||||||
|
${optionalString (cfg . "hostAddress6" or null != null) ''
|
||||||
|
echo "Setting route6 to host for ${name}"
|
||||||
|
ip -6 route add ${cfg . "hostAddress6"} dev ${name}
|
||||||
|
''}
|
||||||
|
''
|
||||||
|
);
|
||||||
|
in
|
||||||
|
pkgs.writeScript "container-init"
|
||||||
|
''
|
||||||
|
#! ${pkgs.stdenv.shell} -e
|
||||||
|
|
||||||
|
# Initialise the container side of the veth pair.
|
||||||
|
if [ "$PRIVATE_NETWORK" = 1 ]; then
|
||||||
|
|
||||||
|
ip link set host0 name eth0
|
||||||
|
ip link set dev eth0 up
|
||||||
|
|
||||||
|
if [ -n "$LOCAL_ADDRESS" ]; then
|
||||||
|
ip addr add $LOCAL_ADDRESS dev eth0
|
||||||
|
fi
|
||||||
|
if [ -n "$LOCAL_ADDRESS6" ]; then
|
||||||
|
ip -6 addr add $LOCAL_ADDRESS6 dev eth0
|
||||||
|
fi
|
||||||
|
if [ -n "$HOST_ADDRESS" ]; then
|
||||||
|
ip route add $HOST_ADDRESS dev eth0
|
||||||
|
ip route add default via $HOST_ADDRESS
|
||||||
|
fi
|
||||||
|
if [ -n "$HOST_ADDRESS6" ]; then
|
||||||
|
ip -6 route add $HOST_ADDRESS6 dev eth0
|
||||||
|
ip -6 route add default via $HOST_ADDRESS6
|
||||||
|
fi
|
||||||
|
|
||||||
|
${concatStringsSep "\n" (mapAttrsToList renderExtraVeth cfg . "extraVeths" or {})}
|
||||||
|
ip a
|
||||||
|
ip r
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start the regular stage 1 script.
|
||||||
|
exec "$1"
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
|
nspawnExtraVethArgs = (name: cfg: "--network-veth-extra=${name}");
|
||||||
|
startScript = (cfg:
|
||||||
''
|
''
|
||||||
#! ${pkgs.stdenv.shell} -e
|
mkdir -p -m 0755 "$root/etc" "$root/var/lib"
|
||||||
|
mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/containers
|
||||||
|
if ! [ -e "$root/etc/os-release" ]; then
|
||||||
|
touch "$root/etc/os-release"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [ -e "$root/etc/machine-id" ]; then
|
||||||
|
touch "$root/etc/machine-id"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p -m 0755 \
|
||||||
|
"/nix/var/nix/profiles/per-container/$INSTANCE" \
|
||||||
|
"/nix/var/nix/gcroots/per-container/$INSTANCE"
|
||||||
|
|
||||||
|
cp --remove-destination /etc/resolv.conf "$root/etc/resolv.conf"
|
||||||
|
|
||||||
# Initialise the container side of the veth pair.
|
|
||||||
if [ "$PRIVATE_NETWORK" = 1 ]; then
|
if [ "$PRIVATE_NETWORK" = 1 ]; then
|
||||||
|
extraFlags+=" --network-veth"
|
||||||
ip link set host0 name eth0
|
if [ -n "$HOST_BRIDGE" ]; then
|
||||||
ip link set dev eth0 up
|
extraFlags+=" --network-bridge=$HOST_BRIDGE"
|
||||||
|
|
||||||
if [ -n "$LOCAL_ADDRESS" ]; then
|
|
||||||
ip addr add $LOCAL_ADDRESS dev eth0
|
|
||||||
fi
|
|
||||||
if [ -n "$LOCAL_ADDRESS6" ]; then
|
|
||||||
ip -6 addr add $LOCAL_ADDRESS6 dev eth0
|
|
||||||
fi
|
|
||||||
if [ -n "$HOST_ADDRESS" ]; then
|
|
||||||
ip route add $HOST_ADDRESS dev eth0
|
|
||||||
ip route add default via $HOST_ADDRESS
|
|
||||||
fi
|
|
||||||
if [ -n "$HOST_ADDRESS6" ]; then
|
|
||||||
ip -6 route add $HOST_ADDRESS6 dev eth0
|
|
||||||
ip -6 route add default via $HOST_ADDRESS6
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Start the regular stage 1 script, passing the bind-mounted
|
${if cfg . "extraVeths" or null != null then
|
||||||
# notification socket from the host to allow the container
|
''extraFlags+=" ${concatStringsSep " " (mapAttrsToList nspawnExtraVethArgs cfg . "extraVeths" or {})}"''
|
||||||
# systemd to signal readiness to the host systemd.
|
else
|
||||||
NOTIFY_SOCKET=/var/lib/private/host-notify exec "$1"
|
''# No extra veth pairs to create''
|
||||||
'';
|
}
|
||||||
|
|
||||||
|
for iface in $INTERFACES; do
|
||||||
|
extraFlags+=" --network-interface=$iface"
|
||||||
|
done
|
||||||
|
|
||||||
|
for iface in $MACVLANS; do
|
||||||
|
extraFlags+=" --network-macvlan=$iface"
|
||||||
|
done
|
||||||
|
|
||||||
|
# If the host is 64-bit and the container is 32-bit, add a
|
||||||
|
# --personality flag.
|
||||||
|
${optionalString (config.nixpkgs.system == "x86_64-linux") ''
|
||||||
|
if [ "$(< ''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system)" = i686-linux ]; then
|
||||||
|
extraFlags+=" --personality=x86"
|
||||||
|
fi
|
||||||
|
''}
|
||||||
|
|
||||||
|
# Run systemd-nspawn without startup notification (we'll
|
||||||
|
# wait for the container systemd to signal readiness).
|
||||||
|
EXIT_ON_REBOOT=1 \
|
||||||
|
exec ${config.systemd.package}/bin/systemd-nspawn \
|
||||||
|
--keep-unit \
|
||||||
|
-M "$INSTANCE" -D "$root" $extraFlags \
|
||||||
|
$EXTRA_NSPAWN_FLAGS \
|
||||||
|
--notify-ready=yes \
|
||||||
|
--bind-ro=/nix/store \
|
||||||
|
--bind-ro=/nix/var/nix/db \
|
||||||
|
--bind-ro=/nix/var/nix/daemon-socket \
|
||||||
|
--bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \
|
||||||
|
--bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \
|
||||||
|
--setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \
|
||||||
|
--setenv HOST_BRIDGE="$HOST_BRIDGE" \
|
||||||
|
--setenv HOST_ADDRESS="$HOST_ADDRESS" \
|
||||||
|
--setenv LOCAL_ADDRESS="$LOCAL_ADDRESS" \
|
||||||
|
--setenv HOST_ADDRESS6="$HOST_ADDRESS6" \
|
||||||
|
--setenv LOCAL_ADDRESS6="$LOCAL_ADDRESS6" \
|
||||||
|
--setenv PATH="$PATH" \
|
||||||
|
${containerInit cfg} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init"
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
|
preStartScript = (cfg:
|
||||||
|
''
|
||||||
|
# Clean up existing machined registration and interfaces.
|
||||||
|
machinectl terminate "$INSTANCE" 2> /dev/null || true
|
||||||
|
|
||||||
|
if [ "$PRIVATE_NETWORK" = 1 ]; then
|
||||||
|
ip link del dev "ve-$INSTANCE" 2> /dev/null || true
|
||||||
|
ip link del dev "vb-$INSTANCE" 2> /dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
${concatStringsSep "\n" (
|
||||||
|
mapAttrsToList (name: cfg:
|
||||||
|
''ip link del dev ${name} 2> /dev/null || true ''
|
||||||
|
) cfg . "extraVeths" or {}
|
||||||
|
)}
|
||||||
|
''
|
||||||
|
);
|
||||||
|
postStartScript = (cfg:
|
||||||
|
let
|
||||||
|
ipcall = (cfg: ipcmd: variable: attribute:
|
||||||
|
if cfg . attribute or null == null then
|
||||||
|
''
|
||||||
|
if [ -n "${variable}" ]; then
|
||||||
|
${ipcmd} add ${variable} dev $ifaceHost
|
||||||
|
fi
|
||||||
|
''
|
||||||
|
else
|
||||||
|
''${ipcmd} add ${cfg . attribute} dev $ifaceHost''
|
||||||
|
);
|
||||||
|
renderExtraVeth = (name: cfg:
|
||||||
|
if cfg . "hostBridge" or null != null then
|
||||||
|
''
|
||||||
|
# Add ${name} to bridge ${cfg.hostBridge}
|
||||||
|
ip link set dev ${name} master ${cfg.hostBridge} up
|
||||||
|
''
|
||||||
|
else
|
||||||
|
''
|
||||||
|
# Set IPs and routes for ${name}
|
||||||
|
${optionalString (cfg . "hostAddress" or null != null) ''
|
||||||
|
ip addr add ${cfg . "hostAddress"} dev ${name}
|
||||||
|
''}
|
||||||
|
${optionalString (cfg . "hostAddress6" or null != null) ''
|
||||||
|
ip -6 addr add ${cfg . "hostAddress6"} dev ${name}
|
||||||
|
''}
|
||||||
|
${optionalString (cfg . "localAddress" or null != null) ''
|
||||||
|
ip route add ${cfg . "localAddress"} dev ${name}
|
||||||
|
''}
|
||||||
|
${optionalString (cfg . "localAddress6" or null != null) ''
|
||||||
|
ip -6 route add ${cfg . "localAddress6"} dev ${name}
|
||||||
|
''}
|
||||||
|
''
|
||||||
|
);
|
||||||
|
in
|
||||||
|
''
|
||||||
|
if [ "$PRIVATE_NETWORK" = 1 ]; then
|
||||||
|
if [ -z "$HOST_BRIDGE" ]; then
|
||||||
|
ifaceHost=ve-$INSTANCE
|
||||||
|
ip link set dev $ifaceHost up
|
||||||
|
|
||||||
|
${ipcall cfg "ip addr" "$HOST_ADDRESS" "hostAddress"}
|
||||||
|
${ipcall cfg "ip -6 addr" "$HOST_ADDRESS6" "hostAddress6"}
|
||||||
|
${ipcall cfg "ip route" "$LOCAL_ADDRESS" "localAddress"}
|
||||||
|
${ipcall cfg "ip -6 route" "$LOCAL_ADDRESS6" "localAddress6"}
|
||||||
|
fi
|
||||||
|
${concatStringsSep "\n" (mapAttrsToList renderExtraVeth cfg . "extraVeths" or {})}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the leader PID so that we can signal it in
|
||||||
|
# preStop. We can't use machinectl there because D-Bus
|
||||||
|
# might be shutting down. FIXME: in systemd 219 we can
|
||||||
|
# just signal systemd-nspawn to do a clean shutdown.
|
||||||
|
machinectl show "$INSTANCE" | sed 's/Leader=\(.*\)/\1/;t;d' > "/run/containers/$INSTANCE.pid"
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
system = config.nixpkgs.system;
|
system = config.nixpkgs.system;
|
||||||
|
|
||||||
|
@ -75,6 +250,63 @@ let
|
||||||
|
|
||||||
mkBindFlags = bs: concatMapStrings mkBindFlag (lib.attrValues bs);
|
mkBindFlags = bs: concatMapStrings mkBindFlag (lib.attrValues bs);
|
||||||
|
|
||||||
|
networkOptions = {
|
||||||
|
hostBridge = mkOption {
|
||||||
|
type = types.nullOr types.string;
|
||||||
|
default = null;
|
||||||
|
example = "br0";
|
||||||
|
description = ''
|
||||||
|
Put the host-side of the veth-pair into the named bridge.
|
||||||
|
Only one of hostAddress* or hostBridge can be given.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
hostAddress = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
example = "10.231.136.1";
|
||||||
|
description = ''
|
||||||
|
The IPv4 address assigned to the host interface.
|
||||||
|
(Not used when hostBridge is set.)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
hostAddress6 = mkOption {
|
||||||
|
type = types.nullOr types.string;
|
||||||
|
default = null;
|
||||||
|
example = "fc00::1";
|
||||||
|
description = ''
|
||||||
|
The IPv6 address assigned to the host interface.
|
||||||
|
(Not used when hostBridge is set.)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
localAddress = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
example = "10.231.136.2";
|
||||||
|
description = ''
|
||||||
|
The IPv4 address assigned to the interface in the container.
|
||||||
|
If a hostBridge is used, this should be given with netmask to access
|
||||||
|
the whole network. Otherwise the default netmask is /32 and routing is
|
||||||
|
set up from localAddress to hostAddress and back.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
localAddress6 = mkOption {
|
||||||
|
type = types.nullOr types.string;
|
||||||
|
default = null;
|
||||||
|
example = "fc00::2";
|
||||||
|
description = ''
|
||||||
|
The IPv6 address assigned to the interface in the container.
|
||||||
|
If a hostBridge is used, this should be given with netmask to access
|
||||||
|
the whole network. Otherwise the default netmask is /128 and routing is
|
||||||
|
set up from localAddress6 to hostAddress6 and back.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -135,56 +367,6 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
hostBridge = mkOption {
|
|
||||||
type = types.nullOr types.string;
|
|
||||||
default = null;
|
|
||||||
example = "br0";
|
|
||||||
description = ''
|
|
||||||
Put the host-side of the veth-pair into the named bridge.
|
|
||||||
Only one of hostAddress* or hostBridge can be given.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
hostAddress = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
default = null;
|
|
||||||
example = "10.231.136.1";
|
|
||||||
description = ''
|
|
||||||
The IPv4 address assigned to the host interface.
|
|
||||||
(Not used when hostBridge is set.)
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
hostAddress6 = mkOption {
|
|
||||||
type = types.nullOr types.string;
|
|
||||||
default = null;
|
|
||||||
example = "fc00::1";
|
|
||||||
description = ''
|
|
||||||
The IPv6 address assigned to the host interface.
|
|
||||||
(Not used when hostBridge is set.)
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
localAddress = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
default = null;
|
|
||||||
example = "10.231.136.2";
|
|
||||||
description = ''
|
|
||||||
The IPv4 address assigned to <literal>eth0</literal>
|
|
||||||
in the container.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
localAddress6 = mkOption {
|
|
||||||
type = types.nullOr types.string;
|
|
||||||
default = null;
|
|
||||||
example = "fc00::2";
|
|
||||||
description = ''
|
|
||||||
The IPv6 address assigned to <literal>eth0</literal>
|
|
||||||
in the container.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
interfaces = mkOption {
|
interfaces = mkOption {
|
||||||
type = types.listOf types.string;
|
type = types.listOf types.string;
|
||||||
default = [];
|
default = [];
|
||||||
|
@ -194,6 +376,15 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraVeths = mkOption {
|
||||||
|
type = types.attrsOf types.optionSet;
|
||||||
|
default = {};
|
||||||
|
options = networkOptions;
|
||||||
|
description = ''
|
||||||
|
Extra veth-pairs to be created for the container
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
autoStart = mkOption {
|
autoStart = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
|
@ -216,7 +407,7 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
} // networkOptions;
|
||||||
|
|
||||||
config = mkMerge
|
config = mkMerge
|
||||||
[ (mkIf options.config.isDefined {
|
[ (mkIf options.config.isDefined {
|
||||||
|
@ -274,110 +465,11 @@ in
|
||||||
environment.INSTANCE = "%i";
|
environment.INSTANCE = "%i";
|
||||||
environment.root = "/var/lib/containers/%i";
|
environment.root = "/var/lib/containers/%i";
|
||||||
|
|
||||||
preStart =
|
preStart = preStartScript {};
|
||||||
''
|
|
||||||
# Clean up existing machined registration and interfaces.
|
|
||||||
machinectl terminate "$INSTANCE" 2> /dev/null || true
|
|
||||||
|
|
||||||
if [ "$PRIVATE_NETWORK" = 1 ]; then
|
script = startScript {};
|
||||||
ip link del dev "ve-$INSTANCE" 2> /dev/null || true
|
|
||||||
ip link del dev "vb-$INSTANCE" 2> /dev/null || true
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
script =
|
postStart = postStartScript {};
|
||||||
''
|
|
||||||
mkdir -p -m 0755 "$root/etc" "$root/var/lib"
|
|
||||||
mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/containers
|
|
||||||
if ! [ -e "$root/etc/os-release" ]; then
|
|
||||||
touch "$root/etc/os-release"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! [ -e "$root/etc/machine-id" ]; then
|
|
||||||
touch "$root/etc/machine-id"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p -m 0755 \
|
|
||||||
"/nix/var/nix/profiles/per-container/$INSTANCE" \
|
|
||||||
"/nix/var/nix/gcroots/per-container/$INSTANCE"
|
|
||||||
|
|
||||||
cp --remove-destination /etc/resolv.conf "$root/etc/resolv.conf"
|
|
||||||
|
|
||||||
if [ "$PRIVATE_NETWORK" = 1 ]; then
|
|
||||||
extraFlags+=" --network-veth"
|
|
||||||
if [ -n "$HOST_BRIDGE" ]; then
|
|
||||||
extraFlags+=" --network-bridge=$HOST_BRIDGE"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
for iface in $INTERFACES; do
|
|
||||||
extraFlags+=" --network-interface=$iface"
|
|
||||||
done
|
|
||||||
|
|
||||||
for iface in $MACVLANS; do
|
|
||||||
extraFlags+=" --network-macvlan=$iface"
|
|
||||||
done
|
|
||||||
|
|
||||||
# If the host is 64-bit and the container is 32-bit, add a
|
|
||||||
# --personality flag.
|
|
||||||
${optionalString (config.nixpkgs.system == "x86_64-linux") ''
|
|
||||||
if [ "$(< ''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system)" = i686-linux ]; then
|
|
||||||
extraFlags+=" --personality=x86"
|
|
||||||
fi
|
|
||||||
''}
|
|
||||||
|
|
||||||
rm -f $root/var/lib/private/host-notify
|
|
||||||
|
|
||||||
# Run systemd-nspawn without startup notification (we'll
|
|
||||||
# wait for the container systemd to signal readiness).
|
|
||||||
EXIT_ON_REBOOT=1 NOTIFY_SOCKET= \
|
|
||||||
exec ${config.systemd.package}/bin/systemd-nspawn \
|
|
||||||
--keep-unit \
|
|
||||||
-M "$INSTANCE" -D "$root" $extraFlags \
|
|
||||||
$EXTRA_NSPAWN_FLAGS \
|
|
||||||
--bind-ro=/nix/store \
|
|
||||||
--bind-ro=/nix/var/nix/db \
|
|
||||||
--bind-ro=/nix/var/nix/daemon-socket \
|
|
||||||
--bind=/run/systemd/notify:/var/lib/private/host-notify \
|
|
||||||
--bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \
|
|
||||||
--bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \
|
|
||||||
--setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \
|
|
||||||
--setenv HOST_BRIDGE="$HOST_BRIDGE" \
|
|
||||||
--setenv HOST_ADDRESS="$HOST_ADDRESS" \
|
|
||||||
--setenv LOCAL_ADDRESS="$LOCAL_ADDRESS" \
|
|
||||||
--setenv HOST_ADDRESS6="$HOST_ADDRESS6" \
|
|
||||||
--setenv LOCAL_ADDRESS6="$LOCAL_ADDRESS6" \
|
|
||||||
--setenv PATH="$PATH" \
|
|
||||||
${containerInit} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init"
|
|
||||||
'';
|
|
||||||
|
|
||||||
postStart =
|
|
||||||
''
|
|
||||||
if [ "$PRIVATE_NETWORK" = 1 ]; then
|
|
||||||
if [ -z "$HOST_BRIDGE" ]; then
|
|
||||||
ifaceHost=ve-$INSTANCE
|
|
||||||
ip link set dev $ifaceHost up
|
|
||||||
if [ -n "$HOST_ADDRESS" ]; then
|
|
||||||
ip addr add $HOST_ADDRESS dev $ifaceHost
|
|
||||||
fi
|
|
||||||
if [ -n "$HOST_ADDRESS6" ]; then
|
|
||||||
ip -6 addr add $HOST_ADDRESS6 dev $ifaceHost
|
|
||||||
fi
|
|
||||||
if [ -n "$LOCAL_ADDRESS" ]; then
|
|
||||||
ip route add $LOCAL_ADDRESS dev $ifaceHost
|
|
||||||
fi
|
|
||||||
if [ -n "$LOCAL_ADDRESS6" ]; then
|
|
||||||
ip -6 route add $LOCAL_ADDRESS6 dev $ifaceHost
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get the leader PID so that we can signal it in
|
|
||||||
# preStop. We can't use machinectl there because D-Bus
|
|
||||||
# might be shutting down. FIXME: in systemd 219 we can
|
|
||||||
# just signal systemd-nspawn to do a clean shutdown.
|
|
||||||
machinectl show "$INSTANCE" | sed 's/Leader=\(.*\)/\1/;t;d' > "/run/containers/$INSTANCE.pid"
|
|
||||||
'';
|
|
||||||
|
|
||||||
preStop =
|
preStop =
|
||||||
''
|
''
|
||||||
|
@ -404,8 +496,6 @@ in
|
||||||
|
|
||||||
Type = "notify";
|
Type = "notify";
|
||||||
|
|
||||||
NotifyAccess = "all";
|
|
||||||
|
|
||||||
# Note that on reboot, systemd-nspawn returns 133, so this
|
# Note that on reboot, systemd-nspawn returns 133, so this
|
||||||
# unit will be restarted. On poweroff, it returns 0, so the
|
# unit will be restarted. On poweroff, it returns 0, so the
|
||||||
# unit won't be restarted.
|
# unit won't be restarted.
|
||||||
|
@ -421,6 +511,8 @@ in
|
||||||
# after the timeout). So send an ignored signal.
|
# after the timeout). So send an ignored signal.
|
||||||
KillMode = "mixed";
|
KillMode = "mixed";
|
||||||
KillSignal = "WINCH";
|
KillSignal = "WINCH";
|
||||||
|
|
||||||
|
DevicePolicy = "closed";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
|
@ -429,15 +521,20 @@ in
|
||||||
[{ name = "container@"; value = unit; }]
|
[{ name = "container@"; value = unit; }]
|
||||||
# declarative containers
|
# declarative containers
|
||||||
++ (mapAttrsToList (name: cfg: nameValuePair "container@${name}" (
|
++ (mapAttrsToList (name: cfg: nameValuePair "container@${name}" (
|
||||||
|
unit // {
|
||||||
|
preStart = preStartScript cfg;
|
||||||
|
script = startScript cfg;
|
||||||
|
postStart = postStartScript cfg;
|
||||||
|
} // (
|
||||||
if cfg.autoStart then
|
if cfg.autoStart then
|
||||||
unit // {
|
{
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
wants = [ "network.target" ];
|
wants = [ "network.target" ];
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
restartTriggers = [ cfg.path ];
|
restartTriggers = [ cfg.path ];
|
||||||
reloadIfChanged = true;
|
reloadIfChanged = true;
|
||||||
}
|
}
|
||||||
else null
|
else {})
|
||||||
)) config.containers)
|
)) config.containers)
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -466,11 +563,11 @@ in
|
||||||
LOCAL_ADDRESS6=${cfg.localAddress6}
|
LOCAL_ADDRESS6=${cfg.localAddress6}
|
||||||
''}
|
''}
|
||||||
''}
|
''}
|
||||||
INTERFACES="${toString cfg.interfaces}"
|
INTERFACES="${toString cfg.interfaces}"
|
||||||
${optionalString cfg.autoStart ''
|
${optionalString cfg.autoStart ''
|
||||||
AUTO_START=1
|
AUTO_START=1
|
||||||
''}
|
''}
|
||||||
EXTRA_NSPAWN_FLAGS="${mkBindFlags cfg.bindMounts}"
|
EXTRA_NSPAWN_FLAGS="${mkBindFlags cfg.bindMounts}"
|
||||||
'';
|
'';
|
||||||
}) config.containers;
|
}) config.containers;
|
||||||
|
|
||||||
|
|
|
@ -95,6 +95,7 @@ in rec {
|
||||||
channel = import lib/make-channel.nix { inherit pkgs nixpkgs version versionSuffix; };
|
channel = import lib/make-channel.nix { inherit pkgs nixpkgs version versionSuffix; };
|
||||||
|
|
||||||
manual = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manual);
|
manual = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manual);
|
||||||
|
manualEpub = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manualEpub));
|
||||||
manualPDF = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manualPDF)).x86_64-linux;
|
manualPDF = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manualPDF)).x86_64-linux;
|
||||||
manpages = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manpages);
|
manpages = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manpages);
|
||||||
options = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.optionsJSON)).x86_64-linux;
|
options = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.optionsJSON)).x86_64-linux;
|
||||||
|
@ -217,6 +218,7 @@ in rec {
|
||||||
tests.containers-ipv6 = callTest tests/containers-ipv6.nix {};
|
tests.containers-ipv6 = callTest tests/containers-ipv6.nix {};
|
||||||
tests.containers-bridge = callTest tests/containers-bridge.nix {};
|
tests.containers-bridge = callTest tests/containers-bridge.nix {};
|
||||||
tests.containers-imperative = callTest tests/containers-imperative.nix {};
|
tests.containers-imperative = callTest tests/containers-imperative.nix {};
|
||||||
|
tests.containers-extra_veth = callTest tests/containers-extra_veth.nix {};
|
||||||
tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
|
tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
|
||||||
tests.dockerRegistry = hydraJob (import tests/docker-registry.nix { system = "x86_64-linux"; });
|
tests.dockerRegistry = hydraJob (import tests/docker-registry.nix { system = "x86_64-linux"; });
|
||||||
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
|
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
|
||||||
|
|
|
@ -10,7 +10,7 @@ in
|
||||||
import ./make-test.nix ({ pkgs, ...} : {
|
import ./make-test.nix ({ pkgs, ...} : {
|
||||||
name = "containers-bridge";
|
name = "containers-bridge";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ aristid aszlig eelco chaoflow ];
|
maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ];
|
||||||
};
|
};
|
||||||
|
|
||||||
machine =
|
machine =
|
||||||
|
|
103
nixos/tests/containers-extra_veth.nix
Normal file
103
nixos/tests/containers-extra_veth.nix
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
# Test for NixOS' container support.
|
||||||
|
|
||||||
|
import ./make-test.nix ({ pkgs, ...} : {
|
||||||
|
name = "containers-bridge";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ kampfschlaefer ];
|
||||||
|
};
|
||||||
|
|
||||||
|
machine =
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{ imports = [ ../modules/installer/cd-dvd/channel.nix ];
|
||||||
|
virtualisation.writableStore = true;
|
||||||
|
virtualisation.memorySize = 768;
|
||||||
|
virtualisation.vlans = [];
|
||||||
|
|
||||||
|
networking.bridges = {
|
||||||
|
br0 = {
|
||||||
|
interfaces = [];
|
||||||
|
};
|
||||||
|
br1 = { interfaces = []; };
|
||||||
|
};
|
||||||
|
networking.interfaces = {
|
||||||
|
br0 = {
|
||||||
|
ip4 = [{ address = "192.168.0.1"; prefixLength = 24; }];
|
||||||
|
ip6 = [{ address = "fc00::1"; prefixLength = 7; }];
|
||||||
|
};
|
||||||
|
br1 = {
|
||||||
|
ip4 = [{ address = "192.168.1.1"; prefixLength = 24; }];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
containers.webserver =
|
||||||
|
{
|
||||||
|
autoStart = true;
|
||||||
|
privateNetwork = true;
|
||||||
|
hostBridge = "br0";
|
||||||
|
localAddress = "192.168.0.100/24";
|
||||||
|
localAddress6 = "fc00::2/7";
|
||||||
|
extraVeths = {
|
||||||
|
veth1 = { hostBridge = "br1"; localAddress = "192.168.1.100/24"; };
|
||||||
|
veth2 = { hostAddress = "192.168.2.1"; localAddress = "192.168.2.100"; };
|
||||||
|
};
|
||||||
|
config =
|
||||||
|
{
|
||||||
|
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||||
|
networking.firewall.allowPing = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript =
|
||||||
|
''
|
||||||
|
$machine->waitForUnit("default.target");
|
||||||
|
$machine->succeed("nixos-container list") =~ /webserver/ or die;
|
||||||
|
|
||||||
|
# Status of the webserver container.
|
||||||
|
$machine->succeed("nixos-container status webserver") =~ /up/ or die;
|
||||||
|
|
||||||
|
# Debug
|
||||||
|
#$machine->succeed("nixos-container run webserver -- ip link >&2");
|
||||||
|
|
||||||
|
# Ensure that the veths are inside the container
|
||||||
|
$machine->succeed("nixos-container run webserver -- ip link show veth1") =~ /state UP/ or die;
|
||||||
|
$machine->succeed("nixos-container run webserver -- ip link show veth2") =~ /state UP/ or die;
|
||||||
|
|
||||||
|
# Debug
|
||||||
|
#$machine->succeed("ip link >&2");
|
||||||
|
|
||||||
|
# Ensure the presence of the extra veths
|
||||||
|
$machine->succeed("ip link show veth1") =~ /state UP/ or die;
|
||||||
|
$machine->succeed("ip link show veth2") =~ /state UP/ or die;
|
||||||
|
|
||||||
|
# Ensure the veth1 is part of br1 on the host
|
||||||
|
$machine->succeed("ip link show veth1") =~ /master br1/ or die;
|
||||||
|
|
||||||
|
# Debug
|
||||||
|
#$machine->succeed("ip -4 a >&2");
|
||||||
|
#$machine->succeed("ip -4 r >&2");
|
||||||
|
#$machine->succeed("nixos-container run webserver -- ip link >&2");
|
||||||
|
#$machine->succeed("nixos-container run webserver -- ip -4 a >&2");
|
||||||
|
#$machine->succeed("nixos-container run webserver -- ip -4 r >&2");
|
||||||
|
|
||||||
|
# Ping on main veth
|
||||||
|
$machine->succeed("ping -n -c 1 192.168.0.100");
|
||||||
|
$machine->succeed("ping6 -n -c 1 fc00::2");
|
||||||
|
|
||||||
|
# Ping on the first extra veth
|
||||||
|
$machine->succeed("ping -n -c 1 192.168.1.100 >&2");
|
||||||
|
|
||||||
|
# Ping on the second extra veth
|
||||||
|
$machine->succeed("ping -n -c 1 192.168.2.100 >&2");
|
||||||
|
|
||||||
|
# Stop the container.
|
||||||
|
$machine->succeed("nixos-container stop webserver");
|
||||||
|
$machine->fail("ping -n -c 1 192.168.1.100 >&2");
|
||||||
|
$machine->fail("ping -n -c 1 192.168.2.100 >&2");
|
||||||
|
|
||||||
|
# Destroying a declarative container should fail.
|
||||||
|
$machine->fail("nixos-container destroy webserver");
|
||||||
|
'';
|
||||||
|
})
|
|
@ -3,7 +3,7 @@
|
||||||
import ./make-test.nix ({ pkgs, ...} : {
|
import ./make-test.nix ({ pkgs, ...} : {
|
||||||
name = "containers-imperative";
|
name = "containers-imperative";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ aristid aszlig eelco chaoflow ];
|
maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ];
|
||||||
};
|
};
|
||||||
|
|
||||||
machine =
|
machine =
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import ./make-test.nix ({ pkgs, ...} : {
|
import ./make-test.nix ({ pkgs, ...} : {
|
||||||
name = "containers-ipv4";
|
name = "containers-ipv4";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ aristid aszlig eelco chaoflow ];
|
maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ];
|
||||||
};
|
};
|
||||||
|
|
||||||
machine =
|
machine =
|
||||||
|
|
|
@ -8,7 +8,7 @@ in
|
||||||
import ./make-test.nix ({ pkgs, ...} : {
|
import ./make-test.nix ({ pkgs, ...} : {
|
||||||
name = "containers-ipv6";
|
name = "containers-ipv6";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ aristid aszlig eelco chaoflow ];
|
maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ];
|
||||||
};
|
};
|
||||||
|
|
||||||
machine =
|
machine =
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
import ./make-test.nix ({ pkgs, ...} : {
|
|
||||||
name = "gnome3-gdm";
|
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
|
||||||
maintainers = [ lethalman ];
|
|
||||||
};
|
|
||||||
|
|
||||||
machine =
|
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{ imports = [ ./common/user-account.nix ];
|
|
||||||
|
|
||||||
services.xserver.enable = true;
|
|
||||||
|
|
||||||
services.xserver.displayManager.gdm = {
|
|
||||||
enable = true;
|
|
||||||
autoLogin = {
|
|
||||||
enable = true;
|
|
||||||
user = "alice";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.xserver.desktopManager.gnome3.enable = true;
|
|
||||||
environment.gnome3.packageSet = pkgs.gnome3_20;
|
|
||||||
|
|
||||||
virtualisation.memorySize = 512;
|
|
||||||
};
|
|
||||||
|
|
||||||
testScript =
|
|
||||||
''
|
|
||||||
$machine->waitForX;
|
|
||||||
$machine->sleep(15);
|
|
||||||
|
|
||||||
# Check that logging in has given the user ownership of devices.
|
|
||||||
$machine->succeed("getfacl /dev/snd/timer | grep -q alice");
|
|
||||||
|
|
||||||
$machine->succeed("su - alice -c 'DISPLAY=:0.0 gnome-terminal &'");
|
|
||||||
$machine->succeed("xauth merge ~alice/.Xauthority");
|
|
||||||
$machine->waitForWindow(qr/Terminal/);
|
|
||||||
$machine->sleep(20);
|
|
||||||
$machine->screenshot("screen");
|
|
||||||
'';
|
|
||||||
})
|
|
|
@ -1,38 +0,0 @@
|
||||||
import ./make-test.nix ({ pkgs, ...} : {
|
|
||||||
name = "gnome3";
|
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
|
||||||
maintainers = [ domenkozar eelco chaoflow lethalman ];
|
|
||||||
};
|
|
||||||
|
|
||||||
machine =
|
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{ imports = [ ./common/user-account.nix ];
|
|
||||||
|
|
||||||
services.xserver.enable = true;
|
|
||||||
|
|
||||||
services.xserver.displayManager.auto.enable = true;
|
|
||||||
services.xserver.displayManager.auto.user = "alice";
|
|
||||||
services.xserver.desktopManager.gnome3.enable = true;
|
|
||||||
|
|
||||||
environment.gnome3.packageSet = pkgs.gnome3_18;
|
|
||||||
|
|
||||||
virtualisation.memorySize = 512;
|
|
||||||
};
|
|
||||||
|
|
||||||
testScript =
|
|
||||||
''
|
|
||||||
$machine->waitForX;
|
|
||||||
$machine->sleep(15);
|
|
||||||
|
|
||||||
# Check that logging in has given the user ownership of devices.
|
|
||||||
$machine->succeed("getfacl /dev/snd/timer | grep -q alice");
|
|
||||||
|
|
||||||
$machine->succeed("su - alice -c 'DISPLAY=:0.0 gnome-terminal &'");
|
|
||||||
$machine->succeed("xauth merge ~alice/.Xauthority");
|
|
||||||
$machine->waitForWindow(qr/Terminal/);
|
|
||||||
$machine->mustSucceed("timeout 900 bash -c 'journalctl -f|grep -m 1 \"GNOME Shell started\"'");
|
|
||||||
$machine->sleep(10);
|
|
||||||
$machine->screenshot("screen");
|
|
||||||
'';
|
|
||||||
})
|
|
|
@ -1,27 +1,31 @@
|
||||||
{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2gui }:
|
{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2gui }:
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "CharacterCompressor-${version}";
|
name = "CharacterCompressor-${version}";
|
||||||
version = "0.2";
|
version = "0.3.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "magnetophon";
|
owner = "magnetophon";
|
||||||
repo = "CharacterCompressor";
|
repo = "CharacterCompressor";
|
||||||
rev = "v${version}";
|
rev = "V${version}";
|
||||||
sha256 = "0fvi8m4nshcxypn4jgxhnh7pxp68wshhav3k8wn3il7qpw71pdxi";
|
sha256 = "0ci27v5k10prsmcd0g6q5vhr31mz8hsmrsdk436vfbcv3s108rcc";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ faust2jaqt faust2lv2gui ];
|
buildInputs = [ faust2jaqt faust2lv2gui ];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
faust2jaqt -t 99999 CharacterCompressor.dsp
|
faust2jaqt -vec -time -t 99999 CharacterCompressor.dsp
|
||||||
faust2lv2 -gui -t 99999 CharacterCompressor.dsp
|
faust2lv2 -vec -time -gui -t 99999 CharacterCompressor.dsp
|
||||||
|
faust2jaqt -vec -time -t 99999 CharacterCompressorMono.dsp
|
||||||
|
faust2lv2 -vec -time -gui -t 99999 CharacterCompressorMono.dsp
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
cp CharacterCompressor $out/bin/
|
cp CharacterCompressor $out/bin/
|
||||||
|
cp CharacterCompressorMono $out/bin/
|
||||||
mkdir -p $out/lib/lv2
|
mkdir -p $out/lib/lv2
|
||||||
cp -r CharacterCompressor.lv2/ $out/lib/lv2
|
cp -r CharacterCompressor.lv2/ $out/lib/lv2
|
||||||
|
cp -r CharacterCompressorMono.lv2/ $out/lib/lv2
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|
|
@ -170,8 +170,8 @@ let
|
||||||
--set FAUST_LIB_PATH "${faust}/lib/faust" \
|
--set FAUST_LIB_PATH "${faust}/lib/faust" \
|
||||||
--prefix PATH : "$PATH" \
|
--prefix PATH : "$PATH" \
|
||||||
--prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
|
--prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
|
||||||
--set NIX_CFLAGS_COMPILE "\"$NIX_CFLAGS_COMPILE\"" \
|
--set NIX_CFLAGS_COMPILE "$NIX_CFLAGS_COMPILE" \
|
||||||
--set NIX_LDFLAGS "\"$NIX_LDFLAGS\""
|
--set NIX_LDFLAGS "$NIX_LDFLAGS"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
|
|
@ -9,12 +9,12 @@ with stdenv.lib.strings;
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
version = "2016-04-27";
|
version = "2016-07-19";
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "git://git.code.sf.net/p/faudiostream/code";
|
url = "git://git.code.sf.net/p/faudiostream/code";
|
||||||
rev = "931fca3e649f99ef09025d37bd6a7dc70a03e6f6";
|
rev = "16c22dc0193c10521b1dc16f98443d9c206bb5dd";
|
||||||
sha256 = "1h2qfwxqf9406v0w6kqyxlzn88zw3xmwgxg9f01n4jvd72zxll78";
|
sha256 = "01rbcjfhpd5casi72ffi1j95f65ji60l629sgav93pvs0kpdacz5";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -175,8 +175,8 @@ let
|
||||||
--set FAUSTINC "${faust}/include/faust" \
|
--set FAUSTINC "${faust}/include/faust" \
|
||||||
--prefix PATH : "$PATH" \
|
--prefix PATH : "$PATH" \
|
||||||
--prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
|
--prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
|
||||||
--set NIX_CFLAGS_COMPILE "\"$NIX_CFLAGS_COMPILE\"" \
|
--set NIX_CFLAGS_COMPILE "$NIX_CFLAGS_COMPILE" \
|
||||||
--set NIX_LDFLAGS "\"$NIX_LDFLAGS\""
|
--set NIX_LDFLAGS "$NIX_LDFLAGS"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
|
|
@ -196,8 +196,8 @@ let
|
||||||
--set FAUST_LIB_PATH "${faust}/lib/faust" \
|
--set FAUST_LIB_PATH "${faust}/lib/faust" \
|
||||||
--prefix PATH : "$PATH" \
|
--prefix PATH : "$PATH" \
|
||||||
--prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
|
--prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
|
||||||
--set NIX_CFLAGS_COMPILE "\"$NIX_CFLAGS_COMPILE\"" \
|
--set NIX_CFLAGS_COMPILE "$NIX_CFLAGS_COMPILE" \
|
||||||
--set NIX_LDFLAGS "\"$NIX_LDFLAGS\""
|
--set NIX_LDFLAGS "$NIX_LDFLAGS"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,13 +3,13 @@
|
||||||
pythonPackages.buildPythonApplication rec {
|
pythonPackages.buildPythonApplication rec {
|
||||||
name = "mopidy-musicbox-webclient-${version}";
|
name = "mopidy-musicbox-webclient-${version}";
|
||||||
|
|
||||||
version = "2.2.0";
|
version = "2.3.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "pimusicbox";
|
owner = "pimusicbox";
|
||||||
repo = "mopidy-musicbox-webclient";
|
repo = "mopidy-musicbox-webclient";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0v09wy40ipl0b0dpgmcdl15c5g732c9jl7zipm4sy4pr8xiy6baa";
|
sha256 = "1jcfrwsi7axiph3jplqzmcqia9pc46xb2yf13d8h6lnh3h49rwvz";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [ mopidy ];
|
propagatedBuildInputs = [ mopidy ];
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "plugin-torture-${version}";
|
name = "plugin-torture-${version}";
|
||||||
version = "5";
|
version = "2016-07-25";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cth103";
|
owner = "cth103";
|
||||||
repo = "plugin-torture";
|
repo = "plugin-torture";
|
||||||
rev = "v${version}";
|
rev = "8b9c43197dca372da6b9c8212224ec86b5f16b4a";
|
||||||
sha256 = "1mlgxjsyaz86wm4k32ll2w5nghjffnsdqlm6kjv02a4dpb2bfrih";
|
sha256 = "1xyhvhm85d9z0kw716cjllrrzksn4s4bw34layg8hf4m5m31sp2p";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ boost ladspaH lilv lv2 pkgconfig serd sord sratom ];
|
buildInputs = [ boost ladspaH lilv lv2 pkgconfig serd sord sratom ];
|
||||||
|
|
62
pkgs/applications/audio/rhythmbox/default.nix
Normal file
62
pkgs/applications/audio/rhythmbox/default.nix
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
{ stdenv, fetchurl, pkgconfig
|
||||||
|
, python3
|
||||||
|
, perl
|
||||||
|
, perlPackages
|
||||||
|
, gtk3
|
||||||
|
, intltool
|
||||||
|
, libsoup
|
||||||
|
, gnome3
|
||||||
|
, tdb
|
||||||
|
, json_glib
|
||||||
|
, itstool
|
||||||
|
, wrapGAppsHook
|
||||||
|
, gst_all_1
|
||||||
|
, gst_plugins ? with gst_all_1; [ gst-plugins-good gst-plugins-ugly ]
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
version = "${major}.${minor}";
|
||||||
|
major = "3.2";
|
||||||
|
minor = "1";
|
||||||
|
|
||||||
|
in stdenv.mkDerivation rec {
|
||||||
|
name = "rhythmbox-${version}";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "mirror://gnome/sources/rhythmbox/${major}/${name}.tar.xz";
|
||||||
|
sha256 = "0f3radhlji7rxl760yl2vm49fvfslympxrpm8497acbmbd7wlhxz";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
pkgconfig
|
||||||
|
|
||||||
|
python3
|
||||||
|
perl
|
||||||
|
perlPackages.XMLParser
|
||||||
|
|
||||||
|
intltool
|
||||||
|
libsoup
|
||||||
|
tdb
|
||||||
|
json_glib
|
||||||
|
itstool
|
||||||
|
|
||||||
|
gtk3
|
||||||
|
gnome3.libpeas
|
||||||
|
gnome3.totem-pl-parser
|
||||||
|
gnome3.defaultIconTheme
|
||||||
|
|
||||||
|
gst_all_1.gstreamer
|
||||||
|
gst_all_1.gst-plugins-base
|
||||||
|
|
||||||
|
wrapGAppsHook
|
||||||
|
] ++ gst_plugins;
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://wiki.gnome.org/Apps/Rhythmbox;
|
||||||
|
description = "A music playing application for GNOME";
|
||||||
|
license = licenses.gpl2;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = [ maintainers.rasendubi ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "4.7.0";
|
version = "4.7.0";
|
||||||
rev = "1"; #tracks unversioned changes that occur on download.code42.com from time to time
|
rev = "2"; #tracks unversioned changes that occur on download.code42.com from time to time
|
||||||
|
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
name = "crashplan-${version}-r${rev}";
|
name = "crashplan-${version}-r${rev}";
|
||||||
|
|
||||||
crashPlanArchive = fetchurl {
|
crashPlanArchive = fetchurl {
|
||||||
url = "https://download.code42.com/installs/linux/install/CrashPlan/CrashPlan_${version}_Linux.tgz";
|
url = "https://download.code42.com/installs/linux/install/CrashPlan/CrashPlan_${version}_Linux.tgz";
|
||||||
sha256 = "1r50fyswvqjxsdslbyibbxwz2fs8iim15hxr0k05jrzmkhjm4g5v";
|
sha256 = "1vi6dqf8kc90axrgdcf6rwnhynxgxkc0qn6pbdp2gvkxdqxrprn8";
|
||||||
};
|
};
|
||||||
|
|
||||||
srcs = [ crashPlanArchive ];
|
srcs = [ crashPlanArchive ];
|
||||||
|
|
|
@ -171,12 +171,12 @@ rec {
|
||||||
|
|
||||||
checkstyle = buildEclipseUpdateSite rec {
|
checkstyle = buildEclipseUpdateSite rec {
|
||||||
name = "checkstyle-${version}";
|
name = "checkstyle-${version}";
|
||||||
version = "6.19.0.201606092149";
|
version = "6.19.1.201607051943";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
url = "mirror://sourceforge/project/eclipse-cs/Eclipse%20Checkstyle%20Plug-in/6.19.0/net.sf.eclipsecs-updatesite_${version}.zip";
|
url = "mirror://sourceforge/project/eclipse-cs/Eclipse%20Checkstyle%20Plug-in/6.19.1/net.sf.eclipsecs-updatesite_${version}.zip";
|
||||||
sha256 = "0d066fihvdkisic0lsdvh947yd2v20xc8h4aknfcyg2mq3xzi0x7";
|
sha256 = "03aah57g0cgxym95p1wcj2h69xy3r9c0vv7js3gpmw1hx8w9sjsf";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -341,12 +341,12 @@ rec {
|
||||||
|
|
||||||
jdt = buildEclipseUpdateSite rec {
|
jdt = buildEclipseUpdateSite rec {
|
||||||
name = "jdt-${version}";
|
name = "jdt-${version}";
|
||||||
version = "4.5.2";
|
version = "4.6";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.5.2-201602121500/org.eclipse.jdt-4.5.2.zip";
|
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.6-201606061100/org.eclipse.jdt-4.6.zip";
|
||||||
sha256 = "0v4cfq4z62k60l8l014wqgbjnd6a93dwcp6qvr5y7q1v9jr2na5g";
|
sha256 = "0raz8d09fnnx19l012l5frca97qavfivvygn3mvsllcyskhqc5hg";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
|
|
@ -25,13 +25,13 @@ let
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "emacs-25.0.95";
|
name = "emacs-25.1-rc1";
|
||||||
|
|
||||||
builder = ./builder.sh;
|
builder = ./builder.sh;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "ftp://alpha.gnu.org/gnu/emacs/pretest/${name}.tar.xz";
|
url = "ftp://alpha.gnu.org/gnu/emacs/pretest/${name}.tar.xz";
|
||||||
sha256 = "0bmvg7cbrwfa9rbryjrqv2qcllgwja92sx9ikirl80r5d09caf0l";
|
sha256 = "0cv1hars9zxlv040h7f3zz50fhn67dqa18ms4hg9sdblckk50360";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = lib.optionals stdenv.isDarwin [
|
patches = lib.optionals stdenv.isDarwin [
|
||||||
|
|
|
@ -95,10 +95,10 @@
|
||||||
ahungry-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
ahungry-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ahungry-theme";
|
pname = "ahungry-theme";
|
||||||
version = "1.2.0";
|
version = "1.3.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ahungry-theme-1.2.0.tar";
|
url = "https://elpa.gnu.org/packages/ahungry-theme-1.3.0.tar";
|
||||||
sha256 = "04z9d8xszgsl6p02gf3yixgj8kwwb6rfc6bq1b3sz95n3v9wmg9d";
|
sha256 = "1p2zaq0s4bbl5cx6wyab24wamw7m0mysb0v47dqjmnvfc25z84rq";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -175,10 +175,10 @@
|
||||||
}) {};
|
}) {};
|
||||||
auctex = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
auctex = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "auctex";
|
pname = "auctex";
|
||||||
version = "11.89.3";
|
version = "11.89.4";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/auctex-11.89.3.tar";
|
url = "https://elpa.gnu.org/packages/auctex-11.89.4.tar";
|
||||||
sha256 = "16yjalh8qf1m3zgwxf1h3dkjq7hkb9895g2lb6ajwjfn02yiav80";
|
sha256 = "06dxj9wflwgzy88vk47pdk6xln4f63cab7s73ynwp2bdqjs99f5b";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -228,10 +228,10 @@
|
||||||
}) {};
|
}) {};
|
||||||
beacon = callPackage ({ elpaBuild, fetchurl, lib, seq }: elpaBuild {
|
beacon = callPackage ({ elpaBuild, fetchurl, lib, seq }: elpaBuild {
|
||||||
pname = "beacon";
|
pname = "beacon";
|
||||||
version = "1.3.0";
|
version = "1.3.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/beacon-1.3.0.el";
|
url = "https://elpa.gnu.org/packages/beacon-1.3.1.el";
|
||||||
sha256 = "00hab8w01p43iscpr0hh1s2w80ara2y8d5ccz37i2nl54gj8lpw3";
|
sha256 = "19dw9650kk4rch2qpp42wdq9687m3svj1addbp3yz4dijy7lx2mj";
|
||||||
};
|
};
|
||||||
packageRequires = [ seq ];
|
packageRequires = [ seq ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -282,10 +282,10 @@
|
||||||
}) {};
|
}) {};
|
||||||
cl-generic = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
cl-generic = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "cl-generic";
|
pname = "cl-generic";
|
||||||
version = "0.2";
|
version = "0.3";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/cl-generic-0.2.el";
|
url = "https://elpa.gnu.org/packages/cl-generic-0.3.el";
|
||||||
sha256 = "0b2y114f14fdlk5hkb0fvdbv6pqm9ifw0vwzri1vqp1xq1l1f9p3";
|
sha256 = "0vb338bhjpsnrf60qgxny4z5rjrnifahnrv9axd4shay89d894zq";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -319,13 +319,26 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
compact-docstrings = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
|
pname = "compact-docstrings";
|
||||||
|
version = "0.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/compact-docstrings-0.1.el";
|
||||||
|
sha256 = "1qmxn1i07nnzfckl06lg3xpvccx2hjgpypgc9v4pdihjfdwnifm5";
|
||||||
|
};
|
||||||
|
packageRequires = [];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/compact-docstrings.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
company = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
company = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "company";
|
pname = "company";
|
||||||
version = "0.8.12";
|
version = "0.9.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/company-0.8.12.tar";
|
url = "https://elpa.gnu.org/packages/company-0.9.0.tar";
|
||||||
sha256 = "1r7q813rjs4dgknsfqi354ahsvk8k4ld4xh1fkp8lbxb13da6gqx";
|
sha256 = "1d090j1xv97nbxzz0iq4gmzjijggm8wsd0y1zfsa8syrq8qa0ajs";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs ];
|
packageRequires = [ cl-lib emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -361,15 +374,15 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
context-coloring = callPackage ({ elpaBuild, emacs, fetchurl, js2-mode, lib }:
|
context-coloring = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "context-coloring";
|
pname = "context-coloring";
|
||||||
version = "7.2.1";
|
version = "8.0.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/context-coloring-7.2.1.el";
|
url = "https://elpa.gnu.org/packages/context-coloring-8.0.1.tar";
|
||||||
sha256 = "1lh2p3fsym73h0dcj1gqg1xsw3lcikmcskbx8y3j0ds30l4xs13d";
|
sha256 = "0c7sb8dzx6f40hz2l6zicc0shpxj3vzsmvdxzx65c4vgvr462js2";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs js2-mode ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://elpa.gnu.org/packages/context-coloring.html";
|
homepage = "https://elpa.gnu.org/packages/context-coloring.html";
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
|
@ -401,6 +414,19 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
cycle-quotes = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
|
pname = "cycle-quotes";
|
||||||
|
version = "0.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/cycle-quotes-0.1.tar";
|
||||||
|
sha256 = "0aa6ykblgb6anqmi4qxakbvyrq9v02skgayhfb2qddffiww404ka";
|
||||||
|
};
|
||||||
|
packageRequires = [];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/cycle-quotes.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
darkroom = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
darkroom = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "darkroom";
|
pname = "darkroom";
|
||||||
|
@ -445,10 +471,10 @@
|
||||||
debbugs = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib, soap-client }:
|
debbugs = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib, soap-client }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "debbugs";
|
pname = "debbugs";
|
||||||
version = "0.9.5";
|
version = "0.9.7";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/debbugs-0.9.5.tar";
|
url = "https://elpa.gnu.org/packages/debbugs-0.9.7.tar";
|
||||||
sha256 = "1m23rghdykx1fvji6in0xp0bxhjcf7ynm14nl4fhiki2nhhwczxh";
|
sha256 = "07w73if4lmh23ih2v3p0197f781002dywd5fzdbmr4hcqvvi97qq";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib soap-client ];
|
packageRequires = [ cl-lib soap-client ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -456,6 +482,19 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
delight = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
|
pname = "delight";
|
||||||
|
version = "1.5";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/delight-1.5.el";
|
||||||
|
sha256 = "0kzlvzwmn6zj0874086q2xw0pclyi7wlkq48zh2lkd2796xm8vw7";
|
||||||
|
};
|
||||||
|
packageRequires = [];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/delight.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
dict-tree = callPackage ({ elpaBuild, fetchurl, heap, lib, tNFA, trie }:
|
dict-tree = callPackage ({ elpaBuild, fetchurl, heap, lib, tNFA, trie }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "dict-tree";
|
pname = "dict-tree";
|
||||||
|
@ -473,10 +512,10 @@
|
||||||
diff-hl = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
diff-hl = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "diff-hl";
|
pname = "diff-hl";
|
||||||
version = "1.8.3";
|
version = "1.8.4";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/diff-hl-1.8.3.tar";
|
url = "https://elpa.gnu.org/packages/diff-hl-1.8.4.tar";
|
||||||
sha256 = "1i3ngx5gmjl1a15y6d0xmcgdimn7ghrqkbzqisz4ra3dgwbbb3f9";
|
sha256 = "0axhidc3cym7a2x4rpxf4745qss9s9ajyg4s9h5b4zn7v7fyp71n";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib ];
|
packageRequires = [ cl-lib ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -566,10 +605,10 @@
|
||||||
}) {};
|
}) {};
|
||||||
el-search = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
|
el-search = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
|
||||||
pname = "el-search";
|
pname = "el-search";
|
||||||
version = "0.2";
|
version = "0.2.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/el-search-0.2.el";
|
url = "https://elpa.gnu.org/packages/el-search-0.2.1.el";
|
||||||
sha256 = "1ps4p79xrvsdys9yh1wyk4zdly6c55agbqa6f8q3xkwc9sva9lw9";
|
sha256 = "1ralag6a4752mqbsz92prd1f75380q5f7j4k3ajhv66krhd1w0k6";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -646,10 +685,10 @@
|
||||||
excorporate = callPackage ({ elpaBuild, emacs, fetchurl, fsm, lib, soap-client, url-http-ntlm }:
|
excorporate = callPackage ({ elpaBuild, emacs, fetchurl, fsm, lib, soap-client, url-http-ntlm }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "excorporate";
|
pname = "excorporate";
|
||||||
version = "0.7.3";
|
version = "0.7.5";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/excorporate-0.7.3.tar";
|
url = "https://elpa.gnu.org/packages/excorporate-0.7.5.tar";
|
||||||
sha256 = "053pcqv5gcwnl57kcxsm3v60nmi5sm4myjca2xqraldp27k6qd1q";
|
sha256 = "0w828zv8968ryphhi1zaizrs6fnxkgxdwjlhpriyc9129qnwx0cg";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs fsm soap-client url-http-ntlm ];
|
packageRequires = [ emacs fsm soap-client url-http-ntlm ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -659,10 +698,10 @@
|
||||||
}) {};
|
}) {};
|
||||||
exwm = callPackage ({ elpaBuild, fetchurl, lib, xelb }: elpaBuild {
|
exwm = callPackage ({ elpaBuild, fetchurl, lib, xelb }: elpaBuild {
|
||||||
pname = "exwm";
|
pname = "exwm";
|
||||||
version = "0.4";
|
version = "0.6";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/exwm-0.4.tar";
|
url = "https://elpa.gnu.org/packages/exwm-0.6.tar";
|
||||||
sha256 = "1qlplx88mk8c5sahlymxxh46bzf6bxnsqk92wliv5ji4ai5373fb";
|
sha256 = "0fxkhpc87wd7crzwwj9r5r3s07pznsphk4hi8jinx91641szi1px";
|
||||||
};
|
};
|
||||||
packageRequires = [ xelb ];
|
packageRequires = [ xelb ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -701,10 +740,10 @@
|
||||||
fsm = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
fsm = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "fsm";
|
pname = "fsm";
|
||||||
version = "0.2";
|
version = "0.2.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/fsm-0.2.el";
|
url = "https://elpa.gnu.org/packages/fsm-0.2.1.el";
|
||||||
sha256 = "1kh1r5by1q2x8bbg0z2jzmb5i6blvlf105mavrnbcxa6ghbiz6iy";
|
sha256 = "1jyxyqdbfl8nv7c50q0sg3w5p7whp1sqgi7w921k5hfar4d11qqp";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs ];
|
packageRequires = [ cl-lib emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -876,10 +915,10 @@
|
||||||
js2-mode = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
js2-mode = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "js2-mode";
|
pname = "js2-mode";
|
||||||
version = "20150909";
|
version = "20160623";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/js2-mode-20150909.tar";
|
url = "https://elpa.gnu.org/packages/js2-mode-20160623.tar";
|
||||||
sha256 = "1ha696jl9k1325r3xlr11rx6lmd545p42f8biw4hb0q1zsr2306h";
|
sha256 = "057djy6amda8kyprkb3v733d21nlmq5fgfazi65fywlfwyq1adxs";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs ];
|
packageRequires = [ cl-lib emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1123,6 +1162,19 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
myers = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
|
||||||
|
pname = "myers";
|
||||||
|
version = "0.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/myers-0.1.el";
|
||||||
|
sha256 = "0yrxklkksj16cfbvwmdxjj43vngjd6q0fivib1xim3c9g3c9b670";
|
||||||
|
};
|
||||||
|
packageRequires = [ emacs ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/myers.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
nameless = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
|
nameless = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
|
||||||
pname = "nameless";
|
pname = "nameless";
|
||||||
version = "1.0.1";
|
version = "1.0.1";
|
||||||
|
@ -1217,10 +1269,10 @@
|
||||||
}) {};
|
}) {};
|
||||||
oauth2 = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
oauth2 = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "oauth2";
|
pname = "oauth2";
|
||||||
version = "0.10";
|
version = "0.11";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/oauth2-0.10.el";
|
url = "https://elpa.gnu.org/packages/oauth2-0.11.el";
|
||||||
sha256 = "0rlxmbb88dp0yqw9d5mdx0nxv5l5618scmg5872scbnc735f2yna";
|
sha256 = "0ydkc9jazsnbbvfhd47mql52y7k06n3z7r0naqxkwb99j9blqsmp";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1257,10 +1309,10 @@
|
||||||
}) {};
|
}) {};
|
||||||
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "org";
|
pname = "org";
|
||||||
version = "20160516";
|
version = "20160725";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/org-20160516.tar";
|
url = "https://elpa.gnu.org/packages/org-20160725.tar";
|
||||||
sha256 = "164v1zddgyfy9v1qhl1fqz2vcgm5w4dhfmra5ngpgnjh1402l0pm";
|
sha256 = "05ky7hlsjqlml14ss9hcj2756clvsi1f26gv7a01d923m3drkqjc";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1337,10 +1389,10 @@
|
||||||
python = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
python = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "python";
|
pname = "python";
|
||||||
version = "0.25.1";
|
version = "0.25.2";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/python-0.25.1.el";
|
url = "https://elpa.gnu.org/packages/python-0.25.2.el";
|
||||||
sha256 = "16r1sjq5fagrvlnrnbxmf6h2yxrcbhqlaa3ppqsa14vqrj09gisd";
|
sha256 = "1ac2ipyg49sb0lz3n0ykj2s6592abd38l5d1cpbmv73j13l8zq5i";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs ];
|
packageRequires = [ cl-lib emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1427,14 +1479,15 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
rudel = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
rudel = callPackage ({ cl-generic, cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||||
|
elpaBuild {
|
||||||
pname = "rudel";
|
pname = "rudel";
|
||||||
version = "0.3";
|
version = "0.3";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/rudel-0.3.tar";
|
url = "https://elpa.gnu.org/packages/rudel-0.3.tar";
|
||||||
sha256 = "041yac9a7hbz1fpmjlmc31ggcgg90fmw08z6bkzly2141yky8yh1";
|
sha256 = "041yac9a7hbz1fpmjlmc31ggcgg90fmw08z6bkzly2141yky8yh1";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [ cl-generic cl-lib emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://elpa.gnu.org/packages/rudel.html";
|
homepage = "https://elpa.gnu.org/packages/rudel.html";
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
|
@ -1468,10 +1521,10 @@
|
||||||
}) {};
|
}) {};
|
||||||
seq = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
seq = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "seq";
|
pname = "seq";
|
||||||
version = "2.15";
|
version = "2.16";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/seq-2.15.tar";
|
url = "https://elpa.gnu.org/packages/seq-2.16.tar";
|
||||||
sha256 = "09wi1765bmn7i8fg6ajjfaxgs4ipc42d58zx2fdqpidrdg9c7q73";
|
sha256 = "1fc1cjbb3lrxgkhzvg4bkpxr408hhg8kqa07n0jfalrdzaa3bika";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1918,10 +1971,10 @@
|
||||||
xelb = callPackage ({ cl-generic, elpaBuild, emacs, fetchurl, lib }:
|
xelb = callPackage ({ cl-generic, elpaBuild, emacs, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "xelb";
|
pname = "xelb";
|
||||||
version = "0.7";
|
version = "0.9";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/xelb-0.7.tar";
|
url = "https://elpa.gnu.org/packages/xelb-0.9.tar";
|
||||||
sha256 = "0i4336a8xns6zp82dj77w5gjgv3mfngcjsw7ghyf7bb7flh8ipw1";
|
sha256 = "19gv08wxs2s337y1wv2i19a0vk8w6733l9mryn334yy2m5031vxh";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-generic emacs ];
|
packageRequires = [ cl-generic emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1945,10 +1998,10 @@
|
||||||
yasnippet = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
yasnippet = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "yasnippet";
|
pname = "yasnippet";
|
||||||
version = "0.9.1";
|
version = "0.10.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/yasnippet-0.9.1.tar";
|
url = "https://elpa.gnu.org/packages/yasnippet-0.10.0.tar";
|
||||||
sha256 = "0b88q10dxa13afjzpkwgjlrzzvwiiqsi9jr73pxnsy4q1n1n2vml";
|
sha256 = "0vh70i73rknaxzglr4nragassgpjy2lj5mca2x6wqiqmv7mc8xdv";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib ];
|
packageRequires = [ cl-lib ];
|
||||||
meta = {
|
meta = {
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -56,9 +56,6 @@ self:
|
||||||
# upstream issue: missing file header
|
# upstream issue: missing file header
|
||||||
connection = markBroken super.connection;
|
connection = markBroken super.connection;
|
||||||
|
|
||||||
# upstream issue: missing file header
|
|
||||||
crux = markBroken super.crux;
|
|
||||||
|
|
||||||
# upstream issue: missing file header
|
# upstream issue: missing file header
|
||||||
dictionary = markBroken super.dictionary;
|
dictionary = markBroken super.dictionary;
|
||||||
|
|
||||||
|
@ -135,10 +132,6 @@ self:
|
||||||
# upstream issue: missing file header
|
# upstream issue: missing file header
|
||||||
qiita = markBroken super.qiita;
|
qiita = markBroken super.qiita;
|
||||||
|
|
||||||
spaceline = super.spaceline.override {
|
|
||||||
inherit (self.melpaPackages) powerline;
|
|
||||||
};
|
|
||||||
|
|
||||||
# upstream issue: missing file header
|
# upstream issue: missing file header
|
||||||
speech-tagger = markBroken super.speech-tagger;
|
speech-tagger = markBroken super.speech-tagger;
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{ callPackage }: {
|
{ callPackage }: {
|
||||||
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "org";
|
pname = "org";
|
||||||
version = "20160516";
|
version = "20160725";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://orgmode.org/elpa/org-20160516.tar";
|
url = "http://orgmode.org/elpa/org-20160725.tar";
|
||||||
sha256 = "0zr87i55l92n1m8fgzvpdm40gh4fjwzsvgq47cmviqjr38kzdxv0";
|
sha256 = "1d2v6w93z543jnmz6a1kmp61rmznjnw6pvd9ia2pm42rzhsgydy5";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -14,10 +14,10 @@
|
||||||
}) {};
|
}) {};
|
||||||
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "org-plus-contrib";
|
pname = "org-plus-contrib";
|
||||||
version = "20160516";
|
version = "20160725";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://orgmode.org/elpa/org-plus-contrib-20160516.tar";
|
url = "http://orgmode.org/elpa/org-plus-contrib-20160725.tar";
|
||||||
sha256 = "1g1a9qsn1i1fh5ppa2jimfqvzkd7rhq5a7xz73lkaw8j3niqy62s";
|
sha256 = "0bxxbcln7npffvd947052sjp59ypxdfwkp2ja7mbs28pzzb25xxi";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
|
|
@ -31,7 +31,7 @@ let
|
||||||
buildInputs = x.buildInputs ++ [ makeWrapper ];
|
buildInputs = x.buildInputs ++ [ makeWrapper ];
|
||||||
installPhase = x.installPhase + ''
|
installPhase = x.installPhase + ''
|
||||||
wrapProgram "$out/bin/android-studio" \
|
wrapProgram "$out/bin/android-studio" \
|
||||||
--set ANDROID_HOME "${androidsdk}/libexec/android-sdk-linux/" \
|
--set ANDROID_HOME "${androidsdk}/libexec/" \
|
||||||
--set LD_LIBRARY_PATH "${stdenv.cc.cc.lib}/lib" # Gradle installs libnative-platform.so in ~/.gradle, that requires libstdc++.so.6
|
--set LD_LIBRARY_PATH "${stdenv.cc.cc.lib}/lib" # Gradle installs libnative-platform.so in ~/.gradle, that requires libstdc++.so.6
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
|
33
pkgs/applications/editors/kakoune/default.nix
Normal file
33
pkgs/applications/editors/kakoune/default.nix
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{ stdenv, fetchFromGitHub, ncurses, boost, asciidoc, docbook_xsl, libxslt }:
|
||||||
|
|
||||||
|
with stdenv.lib;
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "kakoune-nightly-${version}";
|
||||||
|
version = "2016-07-26";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
repo = "kakoune";
|
||||||
|
owner = "mawww";
|
||||||
|
rev = "0d2c5072b083a893843e4fa87f9f702979069e14";
|
||||||
|
sha256 = "01qqs5yr9xvvklg3gg45lgnyh6gji28m854mi1snzvjd7fksf50n";
|
||||||
|
};
|
||||||
|
buildInputs = [ ncurses boost asciidoc docbook_xsl libxslt ];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
sed -ie 's#--no-xmllint#--no-xmllint --xsltproc-opts="--nonet"#g' src/Makefile
|
||||||
|
export PREFIX=$out
|
||||||
|
(cd src && make )
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
(cd src && make install)
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = http://kakoune.org/;
|
||||||
|
description = "A vim inspired text editor";
|
||||||
|
license = licenses.publicDomain;
|
||||||
|
maintainers = with maintainers; [ vrthra ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
|
@ -12,10 +12,10 @@ with stdenv.lib;
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "nano-${version}";
|
name = "nano-${version}";
|
||||||
version = "2.6.1";
|
version = "2.6.2";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://nano-editor.org/dist/v2.6/${name}.tar.gz";
|
url = "https://nano-editor.org/dist/v2.6/${name}.tar.gz";
|
||||||
sha256 = "56f2ba1c532647bee36abd5f87a714400af0be084cf857a65bc8f41a0dc28fe5";
|
sha256 = "11c9iqiah4q7q3ndn7z9192a796vp4fffkg27s6q1dn8avp06dj5";
|
||||||
};
|
};
|
||||||
nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext;
|
nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext;
|
||||||
buildInputs = [ ncurses ];
|
buildInputs = [ ncurses ];
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
assert stdenv.isLinux;
|
assert stdenv.isLinux;
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "nedit-5.6";
|
name = "nedit-5.6a";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/nedit/nedit-source/${name}-src.tar.gz";
|
url = "mirror://sourceforge/nedit/nedit-source/${name}-src.tar.gz";
|
||||||
sha256 = "023hwpqc57mnzvg6p7jda6193afgjzxzajlhwhqvk3jq2kdv6zna";
|
sha256 = "1v8y8vwj3kn91crsddqkz843y6csgw7wkjnd3zdcb4bcrf1pjrsk";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ xlibsWrapper motif libXpm ];
|
buildInputs = [ xlibsWrapper motif libXpm ];
|
||||||
|
|
31
pkgs/applications/misc/catclock/default.nix
Normal file
31
pkgs/applications/misc/catclock/default.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{ stdenv, fetchFromGitHub, xlibsWrapper, motif }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "catclock-2015-10-04";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "BarkyTheDog";
|
||||||
|
repo = "catclock";
|
||||||
|
rev = "d20b8825b38477a144e8a2a4bbd4779adb3620ac";
|
||||||
|
sha256 = "0fiv9rj8p8mifv24cxljdrrmh357q70zmzdci9bpbxnhs1gdpr63";
|
||||||
|
};
|
||||||
|
|
||||||
|
preInstall = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
mkdir -p $out/share/man/man1
|
||||||
|
cp xclock.man $out/share/man/man1/xclock.1
|
||||||
|
'';
|
||||||
|
|
||||||
|
makeFlags = [
|
||||||
|
"DESTINATION=$(out)/bin/"
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [ xlibsWrapper motif ];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = http://codefromabove.com/2014/05/catclock/;
|
||||||
|
license = with licenses; mit;
|
||||||
|
maintainers = with maintainers; [ ramkromberg ];
|
||||||
|
platforms = with platforms; linux;
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,16 +1,20 @@
|
||||||
{ stdenv, fetchurl, pkgs, python2Packages }:
|
{ stdenv, fetchurl, glibcLocales, python3Packages }:
|
||||||
|
|
||||||
python2Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
version = "0.9.0";
|
version = "0.11.1";
|
||||||
name = "khard-${version}";
|
name = "khard-${version}";
|
||||||
namePrefix = "";
|
namePrefix = "";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/scheibler/khard/archive/v${version}.tar.gz";
|
url = "https://github.com/scheibler/khard/archive/v${version}.tar.gz";
|
||||||
sha256 = "1cj6rlvbk05cfjkl1lnyvq12sb847jjwqy5j8906p2b2x4wq72qi";
|
sha256 = "0055xx9icmsr6l7v0iqrndmygygdpdv10550w6pyrb96svzhry27";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = with python2Packages; [
|
# setup.py reads the UTF-8 encoded readme.
|
||||||
|
LC_ALL = "en_US.UTF-8";
|
||||||
|
buildInputs = [ glibcLocales ];
|
||||||
|
|
||||||
|
propagatedBuildInputs = with python3Packages; [
|
||||||
atomicwrites
|
atomicwrites
|
||||||
configobj
|
configobj
|
||||||
vobject
|
vobject
|
||||||
|
@ -18,6 +22,9 @@ python2Packages.buildPythonApplication rec {
|
||||||
pyyaml
|
pyyaml
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# Fails; but there are no tests anyway.
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = https://github.com/scheibler/khard;
|
homepage = https://github.com/scheibler/khard;
|
||||||
description = "Console carddav client";
|
description = "Console carddav client";
|
||||||
|
|
|
@ -7,20 +7,15 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "lenmus-${version}";
|
name = "lenmus-${version}";
|
||||||
version = "5.4.1";
|
version = "5.4.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "lenmus";
|
owner = "lenmus";
|
||||||
repo = "lenmus";
|
repo = "lenmus";
|
||||||
rev = "Release_${version}";
|
rev = "Release_${version}";
|
||||||
sha256 = "03xar8x38x20cns2gnv34jp0hw0k16sa62kkfhka9iiiw90wfyrp";
|
sha256 = "1n639xr1qxx6rhqs0c6sjxp3bv8cwkmw1vfk1cji7514gj2a9v3p";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
substituteInPlace CMakeLists.txt \
|
|
||||||
--replace "DESTINATION \"/usr/share" "DESTINATION \"$out/share"
|
|
||||||
'';
|
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
"-DCMAKE_INSALL_PREFIX=$out"
|
"-DCMAKE_INSALL_PREFIX=$out"
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,17 +1,21 @@
|
||||||
{ stdenv, fetchurl, cmake, boost }:
|
{ stdenv, fetchFromGitHub, cmake, boost, miniupnpc, pkgconfig, unbound }:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "0.8.8.4";
|
version = "0.9.4";
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "monero-${version}";
|
name = "monero-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchFromGitHub {
|
||||||
url = "https://github.com/monero-project/bitmonero/archive/v${version}.tar.gz";
|
owner = "monero-project";
|
||||||
sha256 = "0bbhqjjzh922aymjqrnl2hd3r8x6p7x5aa5jidv3l4d77drhlgzy";
|
repo = "bitmonero";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "1qzpy1mxz0ky6hfk1gf67ybbr9xy6p6irh6zwri35h1gb97sbc3c";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ cmake boost ];
|
nativeBuildInputs = [ cmake pkgconfig ];
|
||||||
|
|
||||||
|
buildInputs = [ boost miniupnpc unbound ];
|
||||||
|
|
||||||
# these tests take a long time and don't
|
# these tests take a long time and don't
|
||||||
# always complete in the build environment
|
# always complete in the build environment
|
||||||
|
@ -20,14 +24,17 @@ stdenv.mkDerivation {
|
||||||
NIX_CFLAGS_COMPILE = "-Wno-error=cpp";
|
NIX_CFLAGS_COMPILE = "-Wno-error=cpp";
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
checkTarget = "test-release"; # this would be the target
|
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
install -Dt "$out/bin/" \
|
install -Dt "$out/bin/" \
|
||||||
src/bitmonerod \
|
bin/bitmonerod \
|
||||||
src/connectivity_tool \
|
bin/blockchain_converter \
|
||||||
src/simpleminer \
|
bin/blockchain_dump \
|
||||||
src/simplewallet
|
bin/blockchain_export \
|
||||||
|
bin/blockchain_import \
|
||||||
|
bin/cn_deserialize \
|
||||||
|
bin/simpleminer \
|
||||||
|
bin/simplewallet
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
|
|
@ -16,11 +16,13 @@ stdenv.mkDerivation {
|
||||||
postUnpack = "sourceRoot=\${sourceRoot}/src";
|
postUnpack = "sourceRoot=\${sourceRoot}/src";
|
||||||
|
|
||||||
configurePhase = ''
|
configurePhase = ''
|
||||||
|
runHook preConfigure
|
||||||
qmake $qmakeFlags \
|
qmake $qmakeFlags \
|
||||||
PREFIX=$out \
|
PREFIX=$out \
|
||||||
DESKTOPDIR=$out/share/applications \
|
DESKTOPDIR=$out/share/applications \
|
||||||
ICONDIR=$out/share/pixmaps \
|
ICONDIR=$out/share/pixmaps \
|
||||||
QtBitcoinTrader_Desktop.pro
|
QtBitcoinTrader_Desktop.pro
|
||||||
|
runHook postConfigure
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib;
|
meta = with stdenv.lib;
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
{ stdenv, fetchFromGitHub, pkgs, lib, python, pythonPackages }:
|
{ stdenv, fetchFromGitHub, pkgs, lib, python, pythonPackages }:
|
||||||
|
|
||||||
pythonPackages.buildPythonApplication rec {
|
pythonPackages.buildPythonApplication rec {
|
||||||
version = "1.9.0";
|
version = "1.10.0";
|
||||||
name = "rtv-${version}";
|
name = "rtv-${version}";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "michael-lazar";
|
owner = "michael-lazar";
|
||||||
repo = "rtv";
|
repo = "rtv";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "18r3i2zlcprj6d4nzhhbd6sm1fs2x28924xsm6lcxa1643gkyb7i";
|
sha256 = "1gm5jyqqssf69lfx0svhzsb9m0dffm6zsf9jqnwh6gjihfz25a45";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = with pythonPackages; [
|
propagatedBuildInputs = with pythonPackages; [
|
||||||
|
@ -18,6 +18,7 @@ pythonPackages.buildPythonApplication rec {
|
||||||
praw
|
praw
|
||||||
kitchen
|
kitchen
|
||||||
python.modules.curses
|
python.modules.curses
|
||||||
|
praw
|
||||||
] ++ lib.optional (!pythonPackages.isPy3k) futures;
|
] ++ lib.optional (!pythonPackages.isPy3k) futures;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "timewarrior-${version}";
|
name = "timewarrior-${version}";
|
||||||
version = "0.9.5.alpha";
|
version = "1.0.0.beta1";
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://taskwarrior.org/download/timew-${version}.tar.gz";
|
url = "https://taskwarrior.org/download/timew-${version}.tar.gz";
|
||||||
sha256 = "154d5sgxcmz1b7g401c7s6sf7pkk0hh74dx6rss3vkamsjc4wgl8";
|
sha256 = "1gkh07mw8hiqslw8ps35r9lp5jbdy93s0sdrcbp34dd5h99qx587";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
{ stdenv, fetchurl, xorg, ncurses, freetype, fontconfig, pkgconfig }:
|
{ stdenv, fetchurl, xorg, ncurses, freetype, fontconfig, pkgconfig
|
||||||
|
, enableDecLocator ? true
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "xterm-325";
|
name = "xterm-325";
|
||||||
|
@ -27,9 +29,8 @@ stdenv.mkDerivation rec {
|
||||||
"--enable-doublechars"
|
"--enable-doublechars"
|
||||||
"--enable-luit"
|
"--enable-luit"
|
||||||
"--enable-mini-luit"
|
"--enable-mini-luit"
|
||||||
"--enable-dec-locator"
|
|
||||||
"--with-tty-group=tty"
|
"--with-tty-group=tty"
|
||||||
];
|
] ++ stdenv.lib.optional enableDecLocator "--enable-dec-locator";
|
||||||
|
|
||||||
# Work around broken "plink.sh".
|
# Work around broken "plink.sh".
|
||||||
NIX_LDFLAGS = "-lXmu -lXt -lICE -lX11 -lfontconfig";
|
NIX_LDFLAGS = "-lXmu -lXt -lICE -lX11 -lfontconfig";
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
{ stdenv, fetchurl, cmake, pkgconfig, intltool, vala, makeWrapper
|
{ stdenv, fetchurl, cmake, pkgconfig, intltool, vala, makeWrapper
|
||||||
, gtk3, webkitgtk, librsvg, libnotify, sqlite
|
, gtk3, webkitgtk, librsvg, libnotify, sqlite
|
||||||
, glib_networking, gsettings_desktop_schemas, libsoup
|
, glib_networking, gsettings_desktop_schemas, libsoup, pcre, gnome3
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "0.5.8";
|
version = "0.5.11";
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "midori-${version}";
|
name = "midori-${version}";
|
||||||
|
|
||||||
meta = {
|
meta = with stdenv.lib; {
|
||||||
description = "Lightweight WebKitGTK+ web browser";
|
description = "Lightweight WebKitGTK+ web browser";
|
||||||
homepage = "http://midori-browser.org";
|
homepage = "http://midori-browser.org";
|
||||||
license = stdenv.lib.licenses.lgpl21Plus;
|
license = licenses.lgpl21Plus;
|
||||||
platforms = stdenv.lib.platforms.linux;
|
platforms = platforms.linux;
|
||||||
maintainers = with stdenv.lib.maintainers; [ raskin ];
|
maintainers = with maintainers; [ raskin ramkromberg ];
|
||||||
};
|
};
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
|
@ -23,21 +23,21 @@ stdenv.mkDerivation rec {
|
||||||
"http://mirrors-ru.go-parts.com/blfs/conglomeration/midori/midori_${version}_all_.tar.bz2"
|
"http://mirrors-ru.go-parts.com/blfs/conglomeration/midori/midori_${version}_all_.tar.bz2"
|
||||||
];
|
];
|
||||||
name = "midori_${version}_all_.tar.bz2";
|
name = "midori_${version}_all_.tar.bz2";
|
||||||
sha256 = "10ckm98rfqfbwr84b8mc1ssgj84wjgkr4dadvx2l7c64sigi66dg";
|
sha256 = "0gcwqkcyliqz10i33ww3wl02mmfnl7jzl2d493l4l53ipsb1l6cn";
|
||||||
};
|
};
|
||||||
|
|
||||||
sourceRoot = ".";
|
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
cmake pkgconfig intltool vala makeWrapper
|
cmake pkgconfig intltool vala makeWrapper
|
||||||
webkitgtk librsvg libnotify sqlite gsettings_desktop_schemas
|
webkitgtk librsvg libnotify sqlite gsettings_desktop_schemas pcre gnome3.gcr
|
||||||
(libsoup.override {gnomeSupport = true;})
|
(libsoup.override {gnomeSupport = true; valaSupport = true;})
|
||||||
];
|
];
|
||||||
|
|
||||||
cmakeFlags = ''
|
cmakeFlags = [
|
||||||
-DHALF_BRO_INCOM_WEBKIT2=ON
|
"-DCMAKE_BUILD_TYPE=Release"
|
||||||
-DUSE_ZEITGEIST=OFF
|
"-DUSE_ZEITGEIST=OFF"
|
||||||
'';
|
"-DHALF_BRO_INCOM_WEBKIT2=OFF"
|
||||||
|
"-DUSE_GTK3=1"
|
||||||
|
];
|
||||||
|
|
||||||
NIX_LDFLAGS="-lX11";
|
NIX_LDFLAGS="-lX11";
|
||||||
|
|
||||||
|
|
|
@ -17,11 +17,11 @@ in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "bluejeans-${version}";
|
name = "bluejeans-${version}";
|
||||||
|
|
||||||
version = "2.160.63.8";
|
version = "2.160.66.8";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://swdl.bluejeans.com/skinny/bjnplugin_${version}-1_amd64.deb";
|
url = "https://swdl.bluejeans.com/skinny/bjnplugin_${version}-1_amd64.deb";
|
||||||
sha256 = "1sfz9xvvrbw7gg7fxxwg9wmgbxgv3fa14p7i4m85mg10l3qxaqfc";
|
sha256 = "1wf9jgd2717gfzm2wb0hxj4i76kczhgnwfhhpiy15zkqdcsmczsr";
|
||||||
};
|
};
|
||||||
|
|
||||||
phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
|
phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
, jinja2, pygments, pyyaml, pypeg2, gst-plugins-base, gst-plugins-good
|
, jinja2, pygments, pyyaml, pypeg2, gst-plugins-base, gst-plugins-good
|
||||||
, gst-plugins-bad, gst-libav, wrapGAppsHook, glib_networking, makeQtWrapper }:
|
, gst-plugins-bad, gst-libav, wrapGAppsHook, glib_networking, makeQtWrapper }:
|
||||||
|
|
||||||
let version = "0.7.0"; in
|
let version = "0.8.1"; in
|
||||||
|
|
||||||
buildPythonApplication rec {
|
buildPythonApplication rec {
|
||||||
name = "qutebrowser-${version}";
|
name = "qutebrowser-${version}";
|
||||||
|
@ -10,7 +10,7 @@ buildPythonApplication rec {
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/The-Compiler/qutebrowser/releases/download/v${version}/${name}.tar.gz";
|
url = "https://github.com/The-Compiler/qutebrowser/releases/download/v${version}/${name}.tar.gz";
|
||||||
sha256 = "17xvv4h86frcn7zmi0y9gjsz2cazlb59v3dqi9mdc11w00b1cqbn";
|
sha256 = "18hj95pgybpavwwnyczh6s94spljfngz684y1jlhqnpbp14pkflh";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Needs tox
|
# Needs tox
|
||||||
|
|
|
@ -48,6 +48,9 @@ in stdenv.mkDerivation rec {
|
||||||
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/posix/os.hpp \
|
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/posix/os.hpp \
|
||||||
--replace '"sh"' '"${bash}/bin/bash"'
|
--replace '"sh"' '"${bash}/bin/bash"'
|
||||||
|
|
||||||
|
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/shell.hpp \
|
||||||
|
--replace '"sh"' '"${bash}/bin/bash"'
|
||||||
|
|
||||||
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/fork.hpp \
|
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/fork.hpp \
|
||||||
--replace '"sh"' '"${bash}/bin/bash"'
|
--replace '"sh"' '"${bash}/bin/bash"'
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
{ stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext
|
{ stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext
|
||||||
, pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla, nettle }:
|
, pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla, nettle }:
|
||||||
|
|
||||||
let version = "3.19.0"; in
|
let version = "3.20.0"; in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "filezilla-${version}";
|
name = "filezilla-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
|
url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
|
||||||
sha256 = "0827z1jmn8pkzrcpjgh5yh2r23vgv73yb4rikraxa9i7l118g9l2";
|
sha256 = "0clfw266c980w2kjl4xm56d80ixpv8lj675p58hv2bz70ihxpwaa";
|
||||||
};
|
};
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
, cyrus_sasl, gdbm, gpgme, kerberos, libidn, notmuch, openssl }:
|
, cyrus_sasl, gdbm, gpgme, kerberos, libidn, notmuch, openssl }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "20160611";
|
version = "20160723";
|
||||||
name = "neomutt-${version}";
|
name = "neomutt-${version}";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "neomutt";
|
owner = "neomutt";
|
||||||
repo = "neomutt";
|
repo = "neomutt";
|
||||||
rev = "neomutt-${version}";
|
rev = "neomutt-${version}";
|
||||||
sha256 = "12487hydn9x1yyxzc0x7hssgjwji3i64glmbi7synjc8arfqc5zs";
|
sha256 = "16xjyad435n03qvmqysgsf4k36cfcv2k4irg92ajhm4dbz9d9l3j";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs =
|
buildInputs =
|
||||||
|
|
|
@ -11,7 +11,7 @@ assert withQt -> !withGtk && qt4 != null;
|
||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "2.0.4";
|
version = "2.0.5";
|
||||||
variant = if withGtk then "gtk" else if withQt then "qt" else "cli";
|
variant = if withGtk then "gtk" else if withQt then "qt" else "cli";
|
||||||
in
|
in
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ stdenv.mkDerivation {
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.bz2";
|
url = "http://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.bz2";
|
||||||
sha256 = "19g11m8m8qd7dkcvcb27lyppklg608d9ap7wr3mr88clm4nwiacy";
|
sha256 = "02xi3fz8blcz9cf75rs11g7bijk06wm45vpgnksp72c2609j9q0c";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
|
|
||||||
stdenv.mkDerivation (rec {
|
stdenv.mkDerivation (rec {
|
||||||
|
|
||||||
name = "unison-2.48.3";
|
name = "unison-2.48.4";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://www.seas.upenn.edu/~bcpierce/unison/download/releases/stable/${name}.tar.gz";
|
url = "http://www.seas.upenn.edu/~bcpierce/unison/download/releases/stable/${name}.tar.gz";
|
||||||
sha256 = "10sln52rnnsj213jy3166m0q97qpwnrwl6mm529xfy10x3xkq3gl";
|
sha256 = "30aa53cd671d673580104f04be3cf81ac1e20a2e8baaf7274498739d59e99de8";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ ocaml makeWrapper ncurses ];
|
buildInputs = [ ocaml makeWrapper ncurses ];
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
{ stdenv, fetchgit, go }:
|
{ stdenv, fetchFromGitHub, go }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "0.14.0";
|
version = "0.14.3";
|
||||||
name = "syncthing-${version}";
|
name = "syncthing-${version}";
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchFromGitHub {
|
||||||
url = https://github.com/syncthing/syncthing;
|
owner = "syncthing";
|
||||||
rev = "refs/tags/v${version}";
|
repo = "syncthing";
|
||||||
sha256 = "15l3q3r6i3q95i474winswx4y149b5ic7xhpnj52s78fxd4va2q2";
|
rev = "v${version}";
|
||||||
|
sha256 = "114i0911h3q6dn3j9x2qcm5lzpqclvrpf5vk87qpqp9qy62jp3az";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ go ];
|
buildInputs = [ go ];
|
||||||
|
@ -32,7 +33,7 @@ stdenv.mkDerivation rec {
|
||||||
homepage = https://www.syncthing.net/;
|
homepage = https://www.syncthing.net/;
|
||||||
description = "Open Source Continuous File Synchronization";
|
description = "Open Source Continuous File Synchronization";
|
||||||
license = stdenv.lib.licenses.mpl20;
|
license = stdenv.lib.licenses.mpl20;
|
||||||
maintainers = with stdenv.lib.maintainers; [pshendry];
|
maintainers = with stdenv.lib.maintainers; [ pshendry joko peterhoeg ];
|
||||||
platforms = with stdenv.lib.platforms; linux ++ freebsd ++ openbsd ++ netbsd;
|
platforms = with stdenv.lib.platforms; linux ++ freebsd ++ openbsd ++ netbsd;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
38
pkgs/applications/networking/syncthing/inotify-deps.json
Normal file
38
pkgs/applications/networking/syncthing/inotify-deps.json
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"goPackagePath": "github.com/cenkalti/backoff",
|
||||||
|
"fetch": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/cenkalti/backoff",
|
||||||
|
"rev": "cdf48bbc1eb78d1349cbda326a4a037f7ba565c6",
|
||||||
|
"sha256": "0dg7hvpv0a1db8qriygz1jqgp16v8k505b197x9902z7z6lldgbh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"goPackagePath": "github.com/gobwas/glob",
|
||||||
|
"fetch": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/gobwas/glob",
|
||||||
|
"rev": "ce6abff51712df5da11095fb41dd4b0353559797",
|
||||||
|
"sha256": "1gxv4nnn3f9hw1ncdmhsr8fbfdma2h713ima7b4k28gxydfa8i9m"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"goPackagePath": "github.com/syncthing/syncthing",
|
||||||
|
"fetch": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/syncthing/syncthing",
|
||||||
|
"rev": "66a506e72b9dcc749d09a03cb120ba86bbf3d7f8",
|
||||||
|
"sha256": "0is4f1r3im2bbmbca9fafzxffikxaf86vd6f851831fk5wi4pzw9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"goPackagePath": "github.com/zillode/notify",
|
||||||
|
"fetch": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/zillode/notify",
|
||||||
|
"rev": "2da5cc9881e8f16bab76b63129c7781898f97d16",
|
||||||
|
"sha256": "0qwsj730p5mivp2xw9zr5vq8xr7rr9cxjmi564wgmsn7dcvqnr40"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
26
pkgs/applications/networking/syncthing/inotify.nix
Normal file
26
pkgs/applications/networking/syncthing/inotify.nix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{ stdenv, buildGoPackage, fetchFromGitHub }:
|
||||||
|
|
||||||
|
buildGoPackage rec {
|
||||||
|
name = "syncthing-inotify-${version}";
|
||||||
|
version = "0.8.3";
|
||||||
|
|
||||||
|
goPackagePath = "github.com/syncthing/syncthing-inotify";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "syncthing";
|
||||||
|
repo = "syncthing-inotify";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "194pbz9zzxaz0vri93czpbsxl85znlba2gy61mjgyr0dm2h4s6yw";
|
||||||
|
};
|
||||||
|
|
||||||
|
goDeps = ./inotify-deps.json;
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = https://github.com/syncthing/syncthing-inotify;
|
||||||
|
description = "File watcher intended for use with Syncthing";
|
||||||
|
license = stdenv.lib.licenses.mpl20;
|
||||||
|
maintainers = with stdenv.lib.maintainers; [ joko ];
|
||||||
|
platforms = with stdenv.lib.platforms; linux ++ freebsd ++ openbsd ++ netbsd;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -1,23 +1,74 @@
|
||||||
{stdenv, fetchurl, xproto, motif, libX11, libXt, libXpm, bison, flex}:
|
{ stdenv, fetchurl
|
||||||
|
, xproto, motif, libX11, libXt, libXpm, bison
|
||||||
|
, flex, automake, autoconf, libtool
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation rec {
|
||||||
name = "alliance-5.0-20070718";
|
name = "alliance-${version}";
|
||||||
|
version = "5.1.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = http://www-asim.lip6.fr/pub/alliance/distribution/5.0/alliance-5.0-20070718.tar.gz;
|
url = "http://www-asim.lip6.fr/pub/alliance/distribution/5.0/${name}.tar.bz2";
|
||||||
sha256 = "4e17c8f9f4d344061166856d47e58527c6ae870fda0c73b5ba0200967d23af9f";
|
sha256 = "046c9qwl1vbww0ljm4xyxf5jpz9nq62b2q0wdz9xjimgh4c207w1";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ xproto motif xproto libX11 libXt libXpm bison flex];
|
|
||||||
|
|
||||||
patchPhase = ''
|
nativeBuildInputs = [ libtool automake autoconf flex ];
|
||||||
sed -i -e \
|
buildInputs = [ xproto motif xproto libX11 libXt libXpm bison ];
|
||||||
"s/private: static void operator delete/public: static void operator delete/" \
|
|
||||||
nero/src/ADefs.h
|
sourceRoot = "alliance/src/";
|
||||||
|
|
||||||
|
configureFlags = [
|
||||||
|
"--prefix=$(out)"
|
||||||
|
"--disable-static"
|
||||||
|
];
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
mkdir -p $out/etc
|
||||||
|
|
||||||
|
#texlive for docs seems extreme
|
||||||
|
mkdir -p $out/share/alliance
|
||||||
|
mv ./documentation $out/share/alliance
|
||||||
|
substituteInPlace autostuff \
|
||||||
|
--replace "$newdirs documentation" "$newdirs" \
|
||||||
|
--replace documentation Solaris
|
||||||
|
|
||||||
|
substituteInPlace sea/src/DEF_grammar_lex.l \
|
||||||
|
--replace "ifndef FLEX_BETA" "if (YY_FLEX_MAJOR_VERSION <= 2) && (YY_FLEX_MINOR_VERSION < 6)"
|
||||||
|
./autostuff
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
allianceInstaller = ''
|
||||||
description = "Complete set of free CAD tools and portable libraries for VLSI design";
|
#!${stdenv.shell}
|
||||||
homepage = http://www-asim.lip6.fr/recherche/alliance/;
|
cp -v -r -n --no-preserve=mode $out/etc/* /etc/ > /etc/alliance-install.log
|
||||||
|
'';
|
||||||
|
|
||||||
|
allianceUnInstaller = ''
|
||||||
|
#!${stdenv.shell}
|
||||||
|
awk '{print \$3}' /etc/alliance-install.log | xargs rm
|
||||||
|
awk '{print \$3}' /etc/alliance-install.log | xargs rmdir
|
||||||
|
rm /etc/alliance-install.log
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
sed -i "s|ALLIANCE_TOP|$out|" distrib/*.desktop
|
||||||
|
mkdir -p $out/share/applications
|
||||||
|
cp -p distrib/*.desktop $out/share/applications/
|
||||||
|
mkdir -p $out/icons/hicolor/48x48/apps/
|
||||||
|
cp -p distrib/*.png $out/icons/hicolor/48x48/apps/
|
||||||
|
|
||||||
|
echo "${allianceInstaller}" > $out/bin/alliance-install
|
||||||
|
chmod +x $out/bin/alliance-install
|
||||||
|
|
||||||
|
echo "${allianceUnInstaller}" > $out/bin/alliance-uninstall
|
||||||
|
chmod +x $out/bin/alliance-uninstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Complete set of free CAD tools and portable libraries for VLSI design";
|
||||||
|
homepage = http://www-asim.lip6.fr/recherche/alliance/;
|
||||||
|
license = with licenses; gpl2Plus;
|
||||||
|
maintainers = with maintainers; [ ];
|
||||||
|
platforms = with platforms; linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,19 +9,17 @@ let
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "hol_light-2015-11-02";
|
name = "hol_light-2016-07-23";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "jrh13";
|
owner = "jrh13";
|
||||||
repo = "hol-light";
|
repo = "hol-light";
|
||||||
rev = "10265313397476ddff4ce13e7bbb588025e7272c";
|
rev = "67cff936dda719f0e0ee57ab9d07c779ff664660";
|
||||||
sha256 = "17b6a7vk9fhppl0h366y7pw6a9sknq1a8gxqg67dzqpb47vda1n0";
|
sha256 = "0r85ifdvsvk2cdv7s4a0kf9ha6jdznqmz7swvp577f8r182klr28";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ ocaml camlp5 ];
|
buildInputs = [ ocaml camlp5 ];
|
||||||
|
|
||||||
patches = [ ./Makefile.patch ];
|
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p "$out/lib/hol_light" "$out/bin"
|
mkdir -p "$out/lib/hol_light" "$out/bin"
|
||||||
cp -a . $out/lib/hol_light
|
cp -a . $out/lib/hol_light
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
{ stdenv, fetchFromGitHub, cmake, gmp, mpfr, luajit, boost, python
|
{ stdenv, fetchFromGitHub, cmake, gmp, mpfr, boost, python
|
||||||
, gperftools, ninja, makeWrapper }:
|
, gperftools, ninja, makeWrapper }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "lean-${version}";
|
name = "lean-${version}";
|
||||||
version = "20160117";
|
version = "2016-07-05";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "leanprover";
|
owner = "leanprover";
|
||||||
repo = "lean";
|
repo = "lean";
|
||||||
rev = "b2554dcb8f45899ccce84f226cd67b6460442930";
|
rev = "cc70845332e63a1f1be21dc1f96d17269fc85909";
|
||||||
sha256 = "1gr024bly92kdjky5qvcm96gn86ijakziiyrsz91h643n1iyxhms";
|
sha256 = "09qz2vjw7whiggvw0cdaa4i2f49wnch2sd4r43glq181ssln27d6";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ gmp mpfr luajit boost cmake python gperftools ninja makeWrapper ];
|
buildInputs = [ gmp mpfr boost cmake python gperftools ninja makeWrapper ];
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
|
@ -26,11 +26,11 @@ stdenv.mkDerivation rec {
|
||||||
wrapProgram $out/bin/linja --prefix PATH : $out/bin:${ninja}/bin
|
wrapProgram $out/bin/linja --prefix PATH : $out/bin:${ninja}/bin
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = with stdenv.lib; {
|
||||||
description = "Automatic and interactive theorem prover";
|
description = "Automatic and interactive theorem prover";
|
||||||
homepage = "http://leanprover.github.io";
|
homepage = "http://leanprover.github.io";
|
||||||
license = stdenv.lib.licenses.asl20;
|
license = licenses.asl20;
|
||||||
platforms = stdenv.lib.platforms.unix;
|
platforms = platforms.unix;
|
||||||
maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
|
maintainers = with maintainers; [ thoughtpolice gebner ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,64 +1,37 @@
|
||||||
x@{builderDefsPackage
|
{ stdenv, fetchurl, makeWrapper, eprover, ocaml, perl, zlib }:
|
||||||
, ocaml, eprover, zlib
|
|
||||||
, ...}:
|
|
||||||
builderDefsPackage
|
|
||||||
(a :
|
|
||||||
let
|
|
||||||
helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++
|
|
||||||
["eprover"];
|
|
||||||
|
|
||||||
buildInputs = map (n: builtins.getAttr n x)
|
stdenv.mkDerivation rec {
|
||||||
(builtins.attrNames (builtins.removeAttrs x helperArgNames));
|
name = "leo2-${version}";
|
||||||
sourceInfo = rec {
|
version = "1.6.2";
|
||||||
baseName="leo2";
|
|
||||||
version = "1.6.2";
|
src = fetchurl {
|
||||||
name="${baseName}_v${version}";
|
|
||||||
url = "http://page.mi.fu-berlin.de/cbenzmueller/leo/leo2_v${version}.tgz";
|
url = "http://page.mi.fu-berlin.de/cbenzmueller/leo/leo2_v${version}.tgz";
|
||||||
hash="d46a94f5991623386eb9061cfb0d748e258359a8c690fded173d35303e0e9e3a";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
rec {
|
|
||||||
src = a.fetchurl {
|
|
||||||
url = sourceInfo.url;
|
|
||||||
sha256 = "1wjpmizb181iygnd18lx7p77fwaci2clgzs5ix5j51cc8f3pazmv";
|
sha256 = "1wjpmizb181iygnd18lx7p77fwaci2clgzs5ix5j51cc8f3pazmv";
|
||||||
};
|
};
|
||||||
|
|
||||||
name = "${sourceInfo.baseName}-${sourceInfo.version}";
|
buildInputs = [ makeWrapper eprover ocaml perl zlib ];
|
||||||
inherit buildInputs;
|
|
||||||
|
|
||||||
phaseNames = ["makeInstallationDir" "doUnpack" "doMake" "doFinalize"];
|
sourceRoot = "leo2/src";
|
||||||
|
|
||||||
makeInstallationDir = a.fullDepEntry (''
|
preConfigure = "patchShebangs configure";
|
||||||
mkdir -p "$out/share/leo2/build-dir"
|
|
||||||
cd "$out/share/leo2/build-dir"
|
|
||||||
'') ["minInit" "defEnsureDir"];
|
|
||||||
|
|
||||||
goSrcDir = "cd src/";
|
buildFlags = [ "opt" ];
|
||||||
|
|
||||||
doFinalize = a.fullDepEntry (''
|
preInstall = "mkdir -p $out/bin";
|
||||||
mkdir -p "$out/bin"
|
|
||||||
echo -e "#! /bin/sh\\n$PWD/../bin/leo --atprc $out/etc/leoatprc \"\$@\"\\n" > "$out/bin/leo"
|
postInstall = ''
|
||||||
chmod a+x "$out/bin/leo"
|
|
||||||
mkdir -p "$out/etc"
|
mkdir -p "$out/etc"
|
||||||
echo -e "e = ${eprover}/bin/eprover\\nepclextract = ${eprover}/bin/epclextract" > "$out/etc/leoatprc"
|
echo -e "e = ${eprover}/bin/eprover\\nepclextract = ${eprover}/bin/epclextract" > "$out/etc/leoatprc"
|
||||||
'') ["minInit" "doMake" "defEnsureDir"];
|
|
||||||
|
|
||||||
makeFlags = [
|
wrapProgram $out/bin/leo \
|
||||||
"SHELL=${a.stdenv.shell}"
|
--add-flags "--atprc $out/etc/leoatprc"
|
||||||
];
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = with stdenv.lib; {
|
||||||
description = "A high-performance typed higher order prover";
|
description = "A high-performance typed higher order prover";
|
||||||
maintainers = with a.lib.maintainers;
|
maintainers = [ maintainers.raskin ];
|
||||||
[
|
platforms = platforms.linux;
|
||||||
raskin
|
license = licenses.bsd3;
|
||||||
];
|
homepage = http://www.leoprover.org/;
|
||||||
platforms = with a.lib.platforms;
|
|
||||||
linux;
|
|
||||||
license = a.lib.licenses.bsd3;
|
|
||||||
inherit (sourceInfo) version;
|
|
||||||
homepage = "http://page.mi.fu-berlin.de/cbenzmueller/leo/";
|
|
||||||
downloadPage = "http://page.mi.fu-berlin.de/cbenzmueller/leo/download.html";
|
|
||||||
};
|
};
|
||||||
}) x
|
}
|
||||||
|
|
||||||
|
|
75
pkgs/applications/science/math/scilab-bin/default.nix
Normal file
75
pkgs/applications/science/math/scilab-bin/default.nix
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
{ stdenv, fetchurl, lib, xlibs }:
|
||||||
|
|
||||||
|
let
|
||||||
|
name = "scilab-bin-${ver}";
|
||||||
|
|
||||||
|
ver = "5.5.2";
|
||||||
|
|
||||||
|
majorVer = builtins.elemAt (lib.splitString "." ver) 0;
|
||||||
|
|
||||||
|
badArch = throw "${name} requires i686-linux or x86_64-linux";
|
||||||
|
|
||||||
|
architecture =
|
||||||
|
if stdenv.system == "i686-linux" then
|
||||||
|
"i686"
|
||||||
|
else if stdenv.system == "x86_64-linux" then
|
||||||
|
"x86_64"
|
||||||
|
else
|
||||||
|
badArch;
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
inherit name;
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "http://www.scilab.org/download/${ver}/scilab-${ver}.bin.linux-${architecture}.tar.gz";
|
||||||
|
sha256 =
|
||||||
|
if stdenv.system == "i686-linux" then
|
||||||
|
"6143a95ded40411a35630a89b365875a6526cd4db1e2865ac5612929a7db937a"
|
||||||
|
else if stdenv.system == "x86_64-linux" then
|
||||||
|
"c0dd7a5f06ec7a1df7a6b1b8b14407ff7f45e56821dff9b3c46bd09d4df8d350"
|
||||||
|
else
|
||||||
|
badArch;
|
||||||
|
};
|
||||||
|
|
||||||
|
libPath = lib.makeLibraryPath [
|
||||||
|
stdenv.cc.cc
|
||||||
|
xlibs.libX11
|
||||||
|
xlibs.libXext
|
||||||
|
xlibs.libXi
|
||||||
|
xlibs.libXrender
|
||||||
|
xlibs.libXtst
|
||||||
|
xlibs.libXxf86vm
|
||||||
|
];
|
||||||
|
|
||||||
|
phases = [ "unpackPhase" "fixupPhase" "installPhase" ];
|
||||||
|
|
||||||
|
fixupPhase = ''
|
||||||
|
sed -i 's|\$(/bin/|$(|g' bin/scilab
|
||||||
|
sed -i 's|/usr/bin/||g' bin/scilab
|
||||||
|
|
||||||
|
sci="$out/opt/scilab-${ver}"
|
||||||
|
fullLibPath="$sci/lib/scilab:$sci/lib/thirdparty:$libPath"
|
||||||
|
fullLibPath="$fullLibPath:$sci/lib/thirdparty/redist"
|
||||||
|
|
||||||
|
patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
|
||||||
|
--set-rpath "$fullLibPath" bin/scilab-bin
|
||||||
|
find . -name '*.so' -type f | while read file; do
|
||||||
|
patchelf --set-rpath "$fullLibPath" "$file" 2>/dev/null
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p "$out/opt/scilab-${ver}"
|
||||||
|
cp -r . "$out/opt/scilab-${ver}/"
|
||||||
|
mkdir "$out/bin"
|
||||||
|
ln -s "$out/opt/scilab-${ver}/bin/scilab" "$out/bin/scilab-${ver}"
|
||||||
|
ln -s "scilab-${ver}" "$out/bin/scilab-${majorVer}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = http://www.scilab.org/;
|
||||||
|
description = "Scientific software package for numerical computations (Matlab lookalike)";
|
||||||
|
# see http://www.scilab.org/legal_notice
|
||||||
|
license = "Scilab";
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,16 +1,23 @@
|
||||||
{ stdenv, fetchurl, fetchpatch, cmake, pkgconfig, python
|
{ stdenv, fetchurl, fetchpatch, cmake, pkgconfig, python
|
||||||
, libX11, libXpm, libXft, libXext, zlib, lzma }:
|
, libX11, libXpm, libXft, libXext, zlib, lzma, gsl }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "root-${version}";
|
name = "root-${version}";
|
||||||
version = "6.04.16";
|
version = "6.04.18";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://root.cern.ch/download/root_v${version}.source.tar.gz";
|
url = "https://root.cern.ch/download/root_v${version}.source.tar.gz";
|
||||||
sha256 = "0f58dg83aqhggkxmimsfkd1qyni2vhmykq4qa89cz6jr9p73i1vm";
|
sha256 = "00f3v3l8nimfkcxpn9qpyh3h23na0mi4wkds2y5gwqh8wh3jryq9";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ cmake pkgconfig python libX11 libXpm libXft libXext zlib lzma ];
|
buildInputs = [ cmake pkgconfig python libX11 libXpm libXft libXext zlib lzma gsl ];
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/root-mirror/root/commit/ee9964210c56e7c1868618a4434c5340fef38fe4.patch";
|
||||||
|
sha256 = "186i7ni75yvjydy6lpmaplqxfb5z2019bgpbhff1n6zn2qlrff2r";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
patchShebangs build/unix/
|
patchShebangs build/unix/
|
||||||
|
@ -23,6 +30,8 @@ stdenv.mkDerivation rec {
|
||||||
]
|
]
|
||||||
++ stdenv.lib.optional (stdenv.cc.libc != null) "-DC_INCLUDE_DIRS=${stdenv.cc.libc}/include";
|
++ stdenv.lib.optional (stdenv.cc.libc != null) "-DC_INCLUDE_DIRS=${stdenv.cc.libc}/include";
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://root.cern.ch/";
|
homepage = "https://root.cern.ch/";
|
||||||
description = "A data analysis framework";
|
description = "A data analysis framework";
|
||||||
|
|
|
@ -15,6 +15,7 @@ let
|
||||||
perlPackages.MIMEBase64 perlPackages.AuthenSASL
|
perlPackages.MIMEBase64 perlPackages.AuthenSASL
|
||||||
perlPackages.DigestHMAC
|
perlPackages.DigestHMAC
|
||||||
];
|
];
|
||||||
|
gitwebPerlLibs = with perlPackages; [ CGI HTMLParser ];
|
||||||
};
|
};
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
, gnugrep, gzip, openssh
|
, gnugrep, gzip, openssh
|
||||||
, asciidoc, texinfo, xmlto, docbook2x, docbook_xsl, docbook_xml_dtd_45
|
, asciidoc, texinfo, xmlto, docbook2x, docbook_xsl, docbook_xml_dtd_45
|
||||||
, libxslt, tcl, tk, makeWrapper, libiconv
|
, libxslt, tcl, tk, makeWrapper, libiconv
|
||||||
, svnSupport, subversionClient, perlLibs, smtpPerlLibs
|
, svnSupport, subversionClient, perlLibs, smtpPerlLibs, gitwebPerlLibs
|
||||||
, guiSupport
|
, guiSupport
|
||||||
, withManual ? true
|
, withManual ? true
|
||||||
, pythonSupport ? true
|
, pythonSupport ? true
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "2.9.1";
|
version = "2.9.2";
|
||||||
svn = subversionClient.override { perlBindings = true; };
|
svn = subversionClient.override { perlBindings = true; };
|
||||||
in
|
in
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ stdenv.mkDerivation {
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz";
|
url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz";
|
||||||
sha256 = "18l2jb4bkp9ljz6p2aviwzxqyzza9z3v6h1pnkz7kjf1fay61zp8";
|
sha256 = "1d9dmhgzcnwc2jbib4q23ypjbnw1gh1w8gif63qldwkpixj4dxgq";
|
||||||
};
|
};
|
||||||
|
|
||||||
hardeningDisable = [ "format" ];
|
hardeningDisable = [ "format" ];
|
||||||
|
@ -104,6 +104,11 @@ stdenv.mkDerivation {
|
||||||
# gitweb.cgi, need to patch so that it's found
|
# gitweb.cgi, need to patch so that it's found
|
||||||
sed -i -e "s|'compressor' => \['gzip'|'compressor' => ['${gzip}/bin/gzip'|" \
|
sed -i -e "s|'compressor' => \['gzip'|'compressor' => ['${gzip}/bin/gzip'|" \
|
||||||
$out/share/gitweb/gitweb.cgi
|
$out/share/gitweb/gitweb.cgi
|
||||||
|
# Give access to CGI.pm and friends (was removed from perl core in 5.22)
|
||||||
|
for p in ${stdenv.lib.concatStringsSep " " gitwebPerlLibs}; do
|
||||||
|
sed -i -e "/use CGI /i use lib \"$p/lib/perl5/site_perl\";" \
|
||||||
|
"$out/share/gitweb/gitweb.cgi"
|
||||||
|
done
|
||||||
|
|
||||||
# Also put git-http-backend into $PATH, so that we can use smart
|
# Also put git-http-backend into $PATH, so that we can use smart
|
||||||
# HTTP(s) transports for pushing
|
# HTTP(s) transports for pushing
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
{ stdenv, fetchurl, itstool, buildPythonApplication, python27, intltool, makeWrapper
|
{ stdenv, fetchurl, itstool, buildPythonApplication, python27, intltool, wrapGAppsHook
|
||||||
, libxml2, pygobject3, gobjectIntrospection, gtk3, gnome3, pycairo, cairo
|
, libxml2, pygobject3, gobjectIntrospection, gtk3, gnome3, pycairo, cairo, file
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
|
||||||
let
|
let
|
||||||
minor = "3.16";
|
minor = "3.16";
|
||||||
version = "${minor}.1";
|
version = "${minor}.2";
|
||||||
in
|
in
|
||||||
|
|
||||||
buildPythonApplication rec {
|
buildPythonApplication rec {
|
||||||
|
@ -14,13 +14,13 @@ buildPythonApplication rec {
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnome/sources/meld/${minor}/meld-${version}.tar.xz";
|
url = "mirror://gnome/sources/meld/${minor}/meld-${version}.tar.xz";
|
||||||
sha256 = "1bec697aa1ababa315ca8241ade65dc68ea87f0d316632f590975afcf967cfab";
|
sha256 = "2dd3f58b95444bf721e0c912668c29cf8f47a402440b772ea12c4b9a0c94966f";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
python27 intltool makeWrapper itstool libxml2
|
python27 intltool wrapGAppsHook itstool libxml2
|
||||||
gnome3.gtksourceview gnome3.gsettings_desktop_schemas pycairo cairo
|
gnome3.gtksourceview gnome3.gsettings_desktop_schemas pycairo cairo
|
||||||
gnome3.defaultIconTheme
|
gnome3.defaultIconTheme gnome3.dconf file
|
||||||
];
|
];
|
||||||
propagatedBuildInputs = [ gobjectIntrospection pygobject3 gtk3 ];
|
propagatedBuildInputs = [ gobjectIntrospection pygobject3 gtk3 ];
|
||||||
|
|
||||||
|
@ -37,13 +37,6 @@ buildPythonApplication rec {
|
||||||
mv $out/share/glib-2.0 $out/share/gsettings-schemas/$name/
|
mv $out/share/glib-2.0 $out/share/gsettings-schemas/$name/
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preFixup = ''
|
|
||||||
wrapProgram $out/bin/meld \
|
|
||||||
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
|
|
||||||
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:$out/share" \
|
|
||||||
--prefix GIO_EXTRA_MODULES : "${gnome3.dconf}/lib/gio/modules"
|
|
||||||
'';
|
|
||||||
|
|
||||||
patchPhase = ''
|
patchPhase = ''
|
||||||
patchShebangs bin/meld
|
patchShebangs bin/meld
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -10,13 +10,13 @@ with stdenv.lib;
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "mkvtoolnix-${version}";
|
name = "mkvtoolnix-${version}";
|
||||||
version = "9.2.0";
|
version = "9.3.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mbunkus";
|
owner = "mbunkus";
|
||||||
repo = "mkvtoolnix";
|
repo = "mkvtoolnix";
|
||||||
rev = "release-${version}";
|
rev = "release-${version}";
|
||||||
sha256 = "02w3161iqaijs3bz5w2wily9nz55xnhq1bdm2s5qi8v3sbcqd6df";
|
sha256 = "1vipznja07nr7gmzdbv93dv2ggmw4x1bh6xxnn13k3fk6ysqh163";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig autoconf automake gettext ruby ];
|
nativeBuildInputs = [ pkgconfig autoconf automake gettext ruby ];
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
# often change with updating of git or cgit.
|
# often change with updating of git or cgit.
|
||||||
# stripLen acts as the -p parameter when applying a patch.
|
# stripLen acts as the -p parameter when applying a patch.
|
||||||
|
|
||||||
{ fetchurl, patchutils }:
|
{ lib, fetchurl, patchutils }:
|
||||||
{ stripLen ? 0, ... }@args:
|
{ stripLen ? 0, addPrefixes ? false, ... }@args:
|
||||||
|
|
||||||
fetchurl ({
|
fetchurl ({
|
||||||
postFetch = ''
|
postFetch = ''
|
||||||
|
@ -16,8 +16,12 @@ fetchurl ({
|
||||||
"${patchutils}/bin/filterdiff" \
|
"${patchutils}/bin/filterdiff" \
|
||||||
--include={} \
|
--include={} \
|
||||||
--strip=${toString stripLen} \
|
--strip=${toString stripLen} \
|
||||||
|
${lib.optionalString addPrefixes ''
|
||||||
|
--addoldprefix=a/ \
|
||||||
|
--addnewprefix=b/ \
|
||||||
|
''} \
|
||||||
--clean "$out" > "$tmpfile"
|
--clean "$out" > "$tmpfile"
|
||||||
mv "$tmpfile" "$out"
|
mv "$tmpfile" "$out"
|
||||||
${args.postFetch or ""}
|
${args.postFetch or ""}
|
||||||
'';
|
'';
|
||||||
} // builtins.removeAttrs args ["stripLen"])
|
} // builtins.removeAttrs args ["stripLen" "addPrefixes"])
|
||||||
|
|
|
@ -28,7 +28,7 @@ stdenv.mkDerivation (
|
||||||
postPhases =
|
postPhases =
|
||||||
["generateWrappersPhase" "finalPhase"];
|
["generateWrappersPhase" "finalPhase"];
|
||||||
|
|
||||||
prePhases =
|
prePhases =
|
||||||
["antSetupPhase"];
|
["antSetupPhase"];
|
||||||
|
|
||||||
antSetupPhase = with stdenv.lib; ''
|
antSetupPhase = with stdenv.lib; ''
|
||||||
|
@ -41,8 +41,10 @@ stdenv.mkDerivation (
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
mkdir -p $out/share/java
|
mkdir -p $out/share/java
|
||||||
${ if jars == [] then ''
|
${ if jars == [] then ''
|
||||||
find . -name "*.jar" | xargs -I{} cp -v {} $out/share/java
|
find . -name "*.jar" | xargs -I{} cp -v {} $out/share/java
|
||||||
'' else stdenv.lib.concatMapStrings (j: ''
|
'' else stdenv.lib.concatMapStrings (j: ''
|
||||||
cp -v ${j} $out/share/java
|
cp -v ${j} $out/share/java
|
||||||
|
@ -53,13 +55,15 @@ stdenv.mkDerivation (
|
||||||
canonicalizeJar $j
|
canonicalizeJar $j
|
||||||
echo file jar $j >> $out/nix-support/hydra-build-products
|
echo file jar $j >> $out/nix-support/hydra-build-products
|
||||||
done
|
done
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
generateWrappersPhase =
|
generateWrappersPhase =
|
||||||
let
|
let
|
||||||
cp = w: "-cp '${lib.optionalString (w ? classPath) w.classPath}${lib.optionalString (w ? mainClass) ":$out/share/java/*"}'";
|
cp = w: "-cp '${lib.optionalString (w ? classPath) w.classPath}${lib.optionalString (w ? mainClass) ":$out/share/java/*"}'";
|
||||||
in
|
in
|
||||||
''
|
''
|
||||||
header "Generating jar wrappers"
|
header "Generating jar wrappers"
|
||||||
'' + (stdenv.lib.concatMapStrings (w: ''
|
'' + (stdenv.lib.concatMapStrings (w: ''
|
||||||
|
|
||||||
|
@ -75,15 +79,19 @@ stdenv.mkDerivation (
|
||||||
closeNest
|
closeNest
|
||||||
'';
|
'';
|
||||||
|
|
||||||
buildPhase = if antTargets == [] then ''
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
'' + (if antTargets == [] then ''
|
||||||
header "Building default ant target"
|
header "Building default ant target"
|
||||||
ant ${antFlags}
|
ant ${antFlags}
|
||||||
closeNest
|
closeNest
|
||||||
'' else stdenv.lib.concatMapStrings (t: ''
|
'' else stdenv.lib.concatMapStrings (t: ''
|
||||||
header "Building '${t}' target"
|
header "Building '${t}' target"
|
||||||
ant ${antFlags} ${t}
|
ant ${antFlags} ${t}
|
||||||
closeNest
|
closeNest
|
||||||
'') antTargets;
|
'') antTargets) + ''
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
finalPhase =
|
finalPhase =
|
||||||
''
|
''
|
||||||
|
@ -95,11 +103,11 @@ stdenv.mkDerivation (
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
||||||
// removeAttrs args ["antProperties" "buildInputs" "pkgs" "jarWrappers"] //
|
// removeAttrs args ["antProperties" "buildInputs" "pkgs" "jarWrappers"] //
|
||||||
|
|
||||||
{
|
{
|
||||||
name = name + (if src ? version then "-" + src.version else "");
|
name = name + (if src ? version then "-" + src.version else "");
|
||||||
|
|
||||||
buildInputs = [ant jre zip unzip] ++ stdenv.lib.optional (args ? buildInputs) args.buildInputs ;
|
buildInputs = [ant jre zip unzip] ++ stdenv.lib.optional (args ? buildInputs) args.buildInputs ;
|
||||||
|
|
||||||
postHook = ''
|
postHook = ''
|
||||||
|
@ -109,6 +117,6 @@ stdenv.mkDerivation (
|
||||||
|
|
||||||
origSrc=$src
|
origSrc=$src
|
||||||
src=$(findTarball $src)
|
src=$(findTarball $src)
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
{stdenv, fetchurl, unzip}:
|
{stdenv, fetchurl, unzip}:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation rec {
|
||||||
name = "hasklig-0.4";
|
name = "hasklig-${version}";
|
||||||
|
version = "0.9";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/i-tu/Hasklig/releases/download/0.4/Hasklig-0.4.zip";
|
url = "https://github.com/i-tu/Hasklig/releases/download/${version}/Hasklig-${version}.zip";
|
||||||
sha256 = "14j0zfapw6s6x5psp1rvx2i59rxdwb1jgwfgfhzhypr22qy40xi8";
|
sha256 = "0rav55f6j1b8pqjgwvw52b92j2m630ampamlsiiym2xf684wnw2d";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ unzip ];
|
buildInputs = [ unzip ];
|
||||||
|
@ -24,6 +25,6 @@ stdenv.mkDerivation {
|
||||||
description = "A font with ligatures for Haskell code based off Source Code Pro";
|
description = "A font with ligatures for Haskell code based off Source Code Pro";
|
||||||
license = licenses.ofl;
|
license = licenses.ofl;
|
||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
maintainers = with maintainers; [ davidrusu ];
|
maintainers = with maintainers; [ davidrusu profpatsch ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
|
|
||||||
, itstool, libxml2, python3, python3Packages, pyatspi, 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 python3 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.18.2";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = mirror://gnome/sources/bijiben/3.18/bijiben-3.18.2.tar.xz;
|
|
||||||
sha256 = "45fed3242ba092138760b99e725f0a4d3c8d749ef37c607d43c8f010e11a645d";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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.18.1";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = mirror://gnome/sources/cheese/3.18/cheese-3.18.1.tar.xz;
|
|
||||||
sha256 = "fc9d8798b1f0c6b35731f063869a32c6910bab6d0386b9ea36386ebda0d57177";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,49 +0,0 @@
|
||||||
{ stdenv, intltool, fetchurl, libxml2, webkitgtk, highlight
|
|
||||||
, pkgconfig, gtk3, glib, libnotify, gtkspell3
|
|
||||||
, makeWrapper, 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 }:
|
|
||||||
|
|
||||||
let
|
|
||||||
majVer = gnome3.version;
|
|
||||||
in stdenv.mkDerivation rec {
|
|
||||||
inherit (import ./src.nix fetchurl) name src;
|
|
||||||
|
|
||||||
doCheck = true;
|
|
||||||
|
|
||||||
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
|
|
||||||
|
|
||||||
propagatedBuildInputs = [ gnome3.gtkhtml ];
|
|
||||||
|
|
||||||
buildInputs = [ pkgconfig 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 makeWrapper ];
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
preFixup = ''
|
|
||||||
for f in $out/bin/* $out/libexec/*; do
|
|
||||||
wrapProgram "$f" \
|
|
||||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
|
||||||
--prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
|
|
||||||
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.18.4";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = mirror://gnome/sources/evolution/3.18/evolution-3.18.4.tar.xz;
|
|
||||||
sha256 = "8161a0ebc77e61904dfaca9745595fefbf84d834a07ee1132d1f8d030dabfefb";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
{ stdenv, fetchurl, glib, pkgconfig, gnome3, intltool, itstool, libxml2, libarchive
|
|
||||||
, attr, bzip2, acl, wrapGAppsHook, librsvg, libnotify, gdk_pixbuf }:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
inherit (import ./src.nix fetchurl) name src;
|
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
|
||||||
|
|
||||||
buildInputs = [ glib gnome3.gtk intltool itstool libxml2 libarchive libnotify
|
|
||||||
gnome3.defaultIconTheme attr bzip2 acl gdk_pixbuf librsvg
|
|
||||||
gnome3.dconf ];
|
|
||||||
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue