Merge branch 'master' into staging
This commit is contained in:
commit
28c9a794cf
|
@ -2,5 +2,9 @@
|
|||
"userBlacklist": [
|
||||
"civodul",
|
||||
"jhasse"
|
||||
]
|
||||
],
|
||||
"alwaysNotifyForPaths": [
|
||||
{ "name": "FRidh", "files": ["pkgs/top-level/python-packages.nix", "pkgs/development/interpreters/python/*", "pkgs/development/python-modules/*" ] }
|
||||
],
|
||||
"fileBlacklist": ["pkgs/top-level/all-packages.nix"]
|
||||
}
|
||||
|
|
|
@ -15,8 +15,6 @@ matrix:
|
|||
- os: osx
|
||||
osx_image: xcode7.3
|
||||
script: ./maintainers/scripts/travis-nox-review-pr.sh nox pr
|
||||
git:
|
||||
depth: 1
|
||||
env:
|
||||
global:
|
||||
- GITHUB_TOKEN=5edaaf1017f691ed34e7f80878f8f5fbd071603f
|
||||
|
|
|
@ -383,7 +383,7 @@ You can select a particular GHC version to compile with by setting the
|
|||
Stack choose what GHC version it wants based on the snapshot specified
|
||||
in `stack.yaml` (only works with Stack >= 1.1.3):
|
||||
|
||||
{nixpkgs ? import <nixpkgs> { }, ghc ? nixpkgs.ghc}
|
||||
{nixpkgs ? import <nixpkgs> { }, ghc ? nixpkgs.ghc}:
|
||||
|
||||
with nixpkgs;
|
||||
|
||||
|
|
|
@ -157,16 +157,16 @@ expression on standard output. For example:
|
|||
|
||||
<screen>
|
||||
$ nix-generate-from-cpan XML::Simple
|
||||
XMLSimple = buildPerlPackage {
|
||||
name = "XML-Simple-2.20";
|
||||
XMLSimple = buildPerlPackage rec {
|
||||
name = "XML-Simple-2.22";
|
||||
src = fetchurl {
|
||||
url = mirror://cpan/authors/id/G/GR/GRANTM/XML-Simple-2.20.tar.gz;
|
||||
sha256 = "5cff13d0802792da1eb45895ce1be461903d98ec97c9c953bc8406af7294434a";
|
||||
url = "mirror://cpan/authors/id/G/GR/GRANTM/${name}.tar.gz";
|
||||
sha256 = "b9450ef22ea9644ae5d6ada086dc4300fa105be050a2030ebd4efd28c198eb49";
|
||||
};
|
||||
propagatedBuildInputs = [ XMLNamespaceSupport XMLSAX XMLSAXExpat ];
|
||||
meta = {
|
||||
description = "Easily read/write XML (esp config files)";
|
||||
license = "perl";
|
||||
description = "An API for simple XML files";
|
||||
license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
|
||||
};
|
||||
};
|
||||
</screen>
|
||||
|
|
|
@ -470,6 +470,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
|
|||
fullName = "The Unlicense";
|
||||
};
|
||||
|
||||
upl = {
|
||||
fullName = "Universal Permissive License";
|
||||
url = "https://oss.oracle.com/licenses/upl/";
|
||||
};
|
||||
|
||||
vim = spdx {
|
||||
spdxId = "Vim";
|
||||
fullName = "Vim License";
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
anderspapitto = "Anders Papitto <anderspapitto@gmail.com>";
|
||||
andres = "Andres Loeh <ksnixos@andres-loeh.de>";
|
||||
andrewrk = "Andrew Kelley <superjoe30@gmail.com>";
|
||||
andsild = "Anders Sildnes <andsild@gmail.com>";
|
||||
aneeshusa = "Aneesh Agrawal <aneeshusa@gmail.com>";
|
||||
antono = "Antono Vasiljev <self@antono.info>";
|
||||
ardumont = "Antoine R. Dumont <eniotna.t@gmail.com>";
|
||||
|
@ -40,6 +41,7 @@
|
|||
arobyn = "Alexei Robyn <shados@shados.net>";
|
||||
artuuge = "Artur E. Ruuge <artuuge@gmail.com>";
|
||||
ashalkhakov = "Artyom Shalkhakov <artyom.shalkhakov@gmail.com>";
|
||||
aske = "Kirill Boltaev <aske@fmap.me>";
|
||||
asppsa = "Alastair Pharo <asppsa@gmail.com>";
|
||||
astsmtl = "Alexander Tsamutali <astsmtl@yandex.ru>";
|
||||
aszlig = "aszlig <aszlig@redmoonstudios.org>";
|
||||
|
@ -97,6 +99,7 @@
|
|||
cwoac = "Oliver Matthews <oliver@codersoffortune.net>";
|
||||
DamienCassou = "Damien Cassou <damien@cassou.me>";
|
||||
dasuxullebt = "Christoph-Simon Senjak <christoph.senjak@googlemail.com>";
|
||||
danbst = "Danylo Hlynskyi <abcz2.uprola@gmail.com>";
|
||||
davidak = "David Kleuker <post@davidak.de>";
|
||||
davidrusu = "David Rusu <davidrusu.me@gmail.com>";
|
||||
dbohdan = "Danyil Bohdan <danyil.bohdan@gmail.com>";
|
||||
|
@ -130,6 +133,7 @@
|
|||
ericsagnes = "Eric Sagnes <eric.sagnes@gmail.com>";
|
||||
erikryb = "Erik Rybakken <erik.rybakken@math.ntnu.no>";
|
||||
ertes = "Ertugrul Söylemez <esz@posteo.de>";
|
||||
ethercrow = "Dmitry Ivanov <ethercrow@gmail.com>";
|
||||
exi = "Reno Reckling <nixos@reckling.org>";
|
||||
exlevan = "Alexey Levan <exlevan@gmail.com>";
|
||||
expipiplus1 = "Joe Hermaszewski <nix@monoid.al>";
|
||||
|
|
|
@ -16,12 +16,22 @@ networking.networkmanager.enable = true;
|
|||
some desktop managers (e.g., GNOME) enable NetworkManager
|
||||
automatically for you.</para>
|
||||
|
||||
<para>All users that should have permission to change network settings
|
||||
must belong to the <code>networkmanager</code> group.</para>
|
||||
<para>All users that should have permission to change network settings must
|
||||
belong to the <code>networkmanager</code> group:
|
||||
|
||||
<programlisting>
|
||||
users.extraUsers.youruser.extraGroups = [ "networkmanager" ];
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
<para>NetworkManager is controlled using either <command>nmcli</command> or
|
||||
<command>nmtui</command> (curses-based terminal user interface). See their
|
||||
manual pages for details on their usage. Some desktop environments (GNOME, KDE)
|
||||
have their own configuration tools for NetworkManager.</para>
|
||||
|
||||
<note><para><code>networking.networkmanager</code> and
|
||||
<code>networking.wireless</code> can not be enabled at the same time:
|
||||
you can still connect to the wireless networks using
|
||||
<code>networking.wireless</code> (WPA Supplicant) cannot be enabled at the same
|
||||
time: you can still connect to the wireless networks using
|
||||
NetworkManager.</para></note>
|
||||
|
||||
</section>
|
||||
|
|
|
@ -157,9 +157,7 @@ rec {
|
|||
${coreutils}/bin/mkdir -p $TMPDIR
|
||||
cd $TMPDIR
|
||||
|
||||
$origBuilder $origArgs
|
||||
|
||||
exit $?
|
||||
exec $origBuilder $origArgs
|
||||
'';
|
||||
|
||||
testScript = ''
|
||||
|
@ -172,9 +170,20 @@ rec {
|
|||
'';
|
||||
|
||||
vmRunCommand = writeText "vm-run" ''
|
||||
xchg=vm-state-client/xchg
|
||||
${coreutils}/bin/mkdir $out
|
||||
${coreutils}/bin/mkdir -p vm-state-client/xchg
|
||||
export > vm-state-client/xchg/saved-env
|
||||
${coreutils}/bin/mkdir -p $xchg
|
||||
|
||||
for i in $passAsFile; do
|
||||
i2=''${i}Path
|
||||
_basename=$(${coreutils}/bin/basename ''${!i2})
|
||||
${coreutils}/bin/cp ''${!i2} $xchg/$_basename
|
||||
eval $i2=/tmp/xchg/$_basename
|
||||
${coreutils}/bin/ls -la $xchg
|
||||
done
|
||||
unset i i2 _basename xchg
|
||||
|
||||
export > $xchg/saved-env
|
||||
export tests='${testScript}'
|
||||
${testDriver}/bin/nixos-test-driver ${vm.config.system.build.vm}/bin/run-*-vm
|
||||
''; # */
|
||||
|
|
|
@ -11,17 +11,27 @@ with lib;
|
|||
# TODO: find another name for it.
|
||||
fonts = mkOption {
|
||||
type = types.listOf types.path;
|
||||
default = [];
|
||||
example = literalExample "[ pkgs.dejavu_fonts ]";
|
||||
description = "List of primary font paths.";
|
||||
};
|
||||
|
||||
enableDefaultFonts = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable a basic set of fonts providing several font styles
|
||||
and families and reasonable coverage of Unicode.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = {
|
||||
|
||||
fonts.fonts =
|
||||
fonts.fonts = mkIf config.fonts.enableDefaultFonts
|
||||
[
|
||||
pkgs.xorg.fontbhlucidatypewriter100dpi
|
||||
pkgs.xorg.fontbhlucidatypewriter75dpi
|
||||
|
|
|
@ -34,10 +34,10 @@ let
|
|||
config.programs.ssh.package
|
||||
pkgs.perl
|
||||
pkgs.procps
|
||||
pkgs.rsync
|
||||
pkgs.strace
|
||||
pkgs.su
|
||||
pkgs.time
|
||||
pkgs.texinfoInteractive
|
||||
pkgs.utillinux
|
||||
pkgs.which # 88K size
|
||||
];
|
||||
|
@ -104,7 +104,6 @@ in
|
|||
"/etc/xdg"
|
||||
"/etc/gtk-2.0"
|
||||
"/etc/gtk-3.0"
|
||||
"/info"
|
||||
"/lib" # FIXME: remove and update debug-info.nix
|
||||
"/sbin"
|
||||
"/share/applications"
|
||||
|
@ -112,7 +111,6 @@ in
|
|||
"/share/doc"
|
||||
"/share/emacs"
|
||||
"/share/icons"
|
||||
"/share/info"
|
||||
"/share/menus"
|
||||
"/share/mime"
|
||||
"/share/nano"
|
||||
|
|
|
@ -20,10 +20,9 @@ in
|
|||
example = literalExample "with pkgs.fcitx-engines; [ mozc hangul ]";
|
||||
description =
|
||||
let
|
||||
engines =
|
||||
lib.concatStringsSep ", "
|
||||
(map (name: "<literal>${name}</literal>")
|
||||
(lib.attrNames pkgs.fcitx-engines));
|
||||
enginesDrv = filterAttrs (const isDerivation) pkgs.fcitx-engines;
|
||||
engines = concatStringsSep ", "
|
||||
(map (name: "<literal>${name}</literal>") (attrNames enginesDrv));
|
||||
in
|
||||
"Enabled Fcitx engines. Available engines are: ${engines}.";
|
||||
};
|
||||
|
|
|
@ -30,10 +30,9 @@ in
|
|||
example = literalExample "with pkgs.ibus-engines; [ mozc hangul ]";
|
||||
description =
|
||||
let
|
||||
engines =
|
||||
lib.concatStringsSep ", "
|
||||
(map (name: "<literal>${name}</literal>")
|
||||
(lib.attrNames pkgs.ibus-engines));
|
||||
enginesDrv = filterAttrs (const isDerivation) pkgs.ibus-engines;
|
||||
engines = concatStringsSep ", "
|
||||
(map (name: "<literal>${name}</literal>") (attrNames enginesDrv));
|
||||
in
|
||||
"Enabled IBus engines. Available engines are: ${engines}.";
|
||||
};
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
x86_64-linux = "/nix/store/i4mwf2gpvar7dqvlpp5m86llbq3ahbvb-nix-1.11.4";
|
||||
i686-linux = "/nix/store/a3gjrbspb0q4hs3sv5g1y2nza43i8nzv-nix-1.11.4";
|
||||
x86_64-darwin = "/nix/store/7v21yd3qpv0nclcy5cqr5njj9bril12s-nix-1.11.4";
|
||||
}
|
|
@ -92,6 +92,7 @@ fi
|
|||
mkdir -m 0755 -p $mountPoint/dev $mountPoint/proc $mountPoint/sys $mountPoint/etc $mountPoint/run $mountPoint/home
|
||||
mkdir -m 01777 -p $mountPoint/tmp
|
||||
mkdir -m 0755 -p $mountPoint/tmp/root
|
||||
mkdir -m 0755 -p $mountPoint/var
|
||||
mkdir -m 0700 -p $mountPoint/root
|
||||
mount --rbind /dev $mountPoint/dev
|
||||
mount --rbind /proc $mountPoint/proc
|
||||
|
|
|
@ -261,9 +261,9 @@ fi
|
|||
prebuiltNix() {
|
||||
machine="$1"
|
||||
if [ "$machine" = x86_64 ]; then
|
||||
echo /nix/store/xryr9g56h8yjddp89d6dw12anyb4ch7c-nix-1.10
|
||||
echo @nix_x86_64_linux@
|
||||
elif [[ "$machine" =~ i.86 ]]; then
|
||||
echo /nix/store/2w92k5wlpspf0q2k9mnf2z42prx3bwmv-nix-1.10
|
||||
echo @nix_i686_linux@
|
||||
else
|
||||
echo "$0: unsupported platform"
|
||||
exit 1
|
||||
|
|
|
@ -32,11 +32,15 @@ let
|
|||
"cp refs $out";
|
||||
};
|
||||
|
||||
nixos-rebuild = makeProg {
|
||||
name = "nixos-rebuild";
|
||||
src = ./nixos-rebuild.sh;
|
||||
nix = config.nix.package.out;
|
||||
};
|
||||
nixos-rebuild =
|
||||
let fallback = import ./nix-fallback-paths.nix; in
|
||||
makeProg {
|
||||
name = "nixos-rebuild";
|
||||
src = ./nixos-rebuild.sh;
|
||||
nix = config.nix.package.out;
|
||||
nix_x86_64_linux = fallback.x86_64-linux;
|
||||
nix_i686_linux = fallback.i686-linux;
|
||||
};
|
||||
|
||||
nixos-generate-config = makeProg {
|
||||
name = "nixos-generate-config";
|
||||
|
|
|
@ -181,7 +181,6 @@
|
|||
systemd-timesync = 154;
|
||||
liquidsoap = 155;
|
||||
etcd = 156;
|
||||
docker-registry = 157;
|
||||
hbase = 158;
|
||||
opentsdb = 159;
|
||||
scollector = 160;
|
||||
|
@ -436,7 +435,6 @@
|
|||
systemd-timesync = 154;
|
||||
liquidsoap = 155;
|
||||
#etcd = 156; # unused
|
||||
#docker-registry = 157; # unused
|
||||
hbase = 158;
|
||||
opentsdb = 159;
|
||||
scollector = 160;
|
||||
|
|
|
@ -95,7 +95,7 @@ in
|
|||
nixosVersionSuffix = mkIf (pathIsDirectory gitRepo) (mkDefault (".git." + gitCommitId));
|
||||
|
||||
# Note: code names must only increase in alphabetical order.
|
||||
nixosCodeName = "Flounder";
|
||||
nixosCodeName = "Gorilla";
|
||||
};
|
||||
|
||||
# Generate /etc/os-release. See
|
||||
|
|
|
@ -66,8 +66,9 @@
|
|||
./programs/command-not-found/command-not-found.nix
|
||||
./programs/dconf.nix
|
||||
./programs/environment.nix
|
||||
./programs/freetds.nix
|
||||
./programs/fish.nix
|
||||
./programs/freetds.nix
|
||||
./programs/info.nix
|
||||
./programs/kbdlight.nix
|
||||
./programs/light.nix
|
||||
./programs/man.nix
|
||||
|
@ -228,7 +229,6 @@
|
|||
./services/misc/dictd.nix
|
||||
./services/misc/dysnomia.nix
|
||||
./services/misc/disnix.nix
|
||||
./services/misc/docker-registry.nix
|
||||
./services/misc/emby.nix
|
||||
./services/misc/etcd.nix
|
||||
./services/misc/felix.nix
|
||||
|
@ -332,7 +332,6 @@
|
|||
./services/networking/dnschain.nix
|
||||
./services/networking/dnscrypt-proxy.nix
|
||||
./services/networking/dnsmasq.nix
|
||||
./services/networking/docker-registry-server.nix
|
||||
./services/networking/ejabberd.nix
|
||||
./services/networking/fan.nix
|
||||
./services/networking/ferm.nix
|
||||
|
@ -388,6 +387,7 @@
|
|||
./services/networking/prayer.nix
|
||||
./services/networking/privoxy.nix
|
||||
./services/networking/prosody.nix
|
||||
./services/networking/quagga.nix
|
||||
./services/networking/quassel.nix
|
||||
./services/networking/racoon.nix
|
||||
./services/networking/radicale.nix
|
||||
|
|
|
@ -11,4 +11,7 @@ with lib;
|
|||
# This isn't perfect, but let's expect the user specifies an UTF-8 defaultLocale
|
||||
i18n.supportedLocales = [ (config.i18n.defaultLocale + "/UTF-8") ];
|
||||
services.nixosManual.enable = mkDefault false;
|
||||
|
||||
programs.man.enable = mkDefault false;
|
||||
programs.info.enable = mkDefault false;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
options = {
|
||||
|
||||
programs.info.enable = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to enable info pages and the <command>info</command> command.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
config = mkIf config.programs.info.enable {
|
||||
|
||||
environment.systemPackages = [ pkgs.texinfoInteractive ];
|
||||
|
||||
environment.pathsToLink = [ "/info" "/share/info" ];
|
||||
|
||||
environment.extraOutputsToInstall = [ "info" ];
|
||||
|
||||
};
|
||||
|
||||
}
|
|
@ -99,7 +99,6 @@ in
|
|||
groupdel = { rootOK = true; };
|
||||
login = { startSession = true; allowNullPassword = true; showMotd = true; updateWtmp = true; };
|
||||
chpasswd = { rootOK = true; };
|
||||
chgpasswd = { rootOK = true; };
|
||||
};
|
||||
|
||||
security.setuidPrograms = [ "su" "chfn" ]
|
||||
|
|
|
@ -56,7 +56,6 @@ in
|
|||
|
||||
setXAuthLocation = mkOption {
|
||||
type = types.bool;
|
||||
default = config.services.xserver.enable;
|
||||
description = ''
|
||||
Whether to set the path to <command>xauth</command> for X11-forwarded connections.
|
||||
This causes a dependency on X11 packages.
|
||||
|
@ -165,6 +164,9 @@ in
|
|||
|
||||
config = {
|
||||
|
||||
programs.ssh.setXAuthLocation =
|
||||
mkDefault (config.services.xserver.enable || config.programs.ssh.forwardX11);
|
||||
|
||||
assertions =
|
||||
[ { assertion = cfg.forwardX11 -> cfg.setXAuthLocation;
|
||||
message = "cannot enable X11 forwarding without setting XAuth location";
|
||||
|
|
|
@ -25,7 +25,10 @@ in
|
|||
enable = mkOption {
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to configure zsh as an interactive shell.
|
||||
Whether to configure zsh as an interactive shell. To enable zsh for
|
||||
a particular user, use the <option>users.users.<name?>.shell</option>
|
||||
option for that user. To enable zsh system-wide use the
|
||||
<option>users.defaultUserShell</option> option.
|
||||
'';
|
||||
type = types.bool;
|
||||
};
|
||||
|
|
|
@ -166,7 +166,8 @@ in
|
|||
++ concatLists (mapAttrsToList (name: root: [ "-d" (if root == null then name else "${name}:${root}")]) data.extraDomains);
|
||||
acmeService = {
|
||||
description = "Renew ACME Certificate for ${cert}";
|
||||
after = [ "network.target" ];
|
||||
after = [ "network.target" "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
SuccessExitStatus = [ "0" "1" ];
|
||||
|
|
|
@ -72,6 +72,8 @@ in
|
|||
(isNO "GRKERNSEC_NO_RBAC")
|
||||
];
|
||||
|
||||
nixpkgs.config.grsecurity = true;
|
||||
|
||||
# Install PaX related utillities into the system profile.
|
||||
environment.systemPackages = with pkgs; [ gradm paxctl pax-utils ];
|
||||
|
||||
|
|
|
@ -105,6 +105,16 @@ let
|
|||
'';
|
||||
};
|
||||
|
||||
setEnvironment = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether the service should set the environment variables
|
||||
listed in <option>environment.sessionVariables</option>
|
||||
using <literal>pam_env.so</literal>.
|
||||
'';
|
||||
};
|
||||
|
||||
setLoginUid = mkOption {
|
||||
type = types.bool;
|
||||
description = ''
|
||||
|
@ -284,7 +294,9 @@ let
|
|||
"password optional ${pkgs.samba}/lib/security/pam_smbpass.so nullok use_authtok try_first_pass"}
|
||||
|
||||
# Session management.
|
||||
session required pam_env.so envfile=${config.system.build.pamEnvironment}
|
||||
${optionalString cfg.setEnvironment ''
|
||||
session required pam_env.so envfile=${config.system.build.pamEnvironment}
|
||||
''}
|
||||
session required pam_unix.so
|
||||
${optionalString cfg.setLoginUid
|
||||
"session ${
|
||||
|
@ -477,6 +489,13 @@ in
|
|||
vlock = {};
|
||||
xlock = {};
|
||||
xscreensaver = {};
|
||||
|
||||
runuser = { rootOK = true; unixAuth = false; setEnvironment = false; };
|
||||
|
||||
/* FIXME: should runuser -l start a systemd session? Currently
|
||||
it complains "Cannot create session: Already running in a
|
||||
session". */
|
||||
runuser-l = { rootOK = true; unixAuth = false; };
|
||||
};
|
||||
|
||||
};
|
||||
|
|
|
@ -117,6 +117,7 @@ in
|
|||
|
||||
mkdir -p /run/setuid-wrapper-dirs
|
||||
wrapperDir=$(mktemp --directory --tmpdir=/run/setuid-wrapper-dirs setuid-wrappers.XXXXXXXXXX)
|
||||
chmod a+rx $wrapperDir
|
||||
|
||||
${concatMapStrings makeSetuidWrapper setuidPrograms}
|
||||
|
||||
|
@ -131,7 +132,7 @@ in
|
|||
# Compatibility with old state, just remove the folder and symlink
|
||||
rm -f ${wrapperDir}/*
|
||||
# if it happens to be a tmpfs
|
||||
umount ${wrapperDir} || true
|
||||
${pkgs.utillinux}/bin/umount ${wrapperDir} || true
|
||||
rm -d ${wrapperDir}
|
||||
ln -d --symbolic $wrapperDir ${wrapperDir}
|
||||
else
|
||||
|
|
|
@ -79,9 +79,13 @@ in {
|
|||
|
||||
environment.systemPackages = [ cfg.package editorScript ];
|
||||
|
||||
environment.variables = if cfg.defaultEditor then {
|
||||
EDITOR = mkOverride 900 "${editorScript}/bin/emacseditor";
|
||||
} else {};
|
||||
environment.variables = {
|
||||
# This is required so that GTK applications launched from Emacs
|
||||
# get properly themed:
|
||||
GTK_DATA_PREFIX = "${config.system.path}";
|
||||
} // (if cfg.defaultEditor then {
|
||||
EDITOR = mkOverride 900 "${editorScript}/bin/emacseditor";
|
||||
} else {});
|
||||
};
|
||||
|
||||
meta.doc = ./emacs.xml;
|
||||
|
|
|
@ -271,6 +271,9 @@ in
|
|||
{ assertion = cfg.showPAMFailure -> cfg.enablePAM;
|
||||
message = "dovecot is configured with showPAMFailure while enablePAM is disabled";
|
||||
}
|
||||
{ assertion = (cfg.sieveScripts != {}) -> ((cfg.mailUser != null) && (cfg.mailGroup != null));
|
||||
message = "dovecot requires mailUser and mailGroup to be set when sieveScripts is set";
|
||||
}
|
||||
];
|
||||
|
||||
};
|
||||
|
|
|
@ -1,81 +0,0 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.dockerRegistry;
|
||||
|
||||
in {
|
||||
###### interface
|
||||
|
||||
options.services.dockerRegistry = {
|
||||
enable = mkOption {
|
||||
description = "Whether to enable docker registry server.";
|
||||
default = false;
|
||||
type = types.bool;
|
||||
};
|
||||
|
||||
listenAddress = mkOption {
|
||||
description = "Docker registry host or ip to bind to.";
|
||||
default = "127.0.0.1";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
description = "Docker registry port to bind to.";
|
||||
default = 5000;
|
||||
type = types.int;
|
||||
};
|
||||
|
||||
storagePath = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/docker-registry";
|
||||
description = "Docker registry storage path.";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
description = ''
|
||||
Docker extra registry configuration. See
|
||||
<link xlink:href="https://github.com/docker/docker-registry/blob/master/config/config_sample.yml"/>
|
||||
'';
|
||||
default = {};
|
||||
type = types.attrsOf types.str;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.docker-registry = {
|
||||
description = "Docker Container Registry";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
|
||||
environment = {
|
||||
REGISTRY_HOST = cfg.listenAddress;
|
||||
REGISTRY_PORT = toString cfg.port;
|
||||
GUNICORN_OPTS = "[--preload]"; # see https://github.com/docker/docker-registry#sqlalchemy
|
||||
STORAGE_PATH = cfg.storagePath;
|
||||
} // cfg.extraConfig;
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.pythonPackages.docker_registry}/bin/docker-registry";
|
||||
User = "docker-registry";
|
||||
Group = "docker";
|
||||
PermissionsStartOnly = true;
|
||||
WorkingDirectory = cfg.storagePath;
|
||||
};
|
||||
|
||||
postStart = ''
|
||||
until ${pkgs.curl.bin}/bin/curl -s -o /dev/null 'http://${cfg.listenAddress}:${toString cfg.port}/'; do
|
||||
sleep 1;
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
users.extraGroups.docker.gid = mkDefault config.ids.gids.docker;
|
||||
users.extraUsers.docker-registry = {
|
||||
createHome = true;
|
||||
home = cfg.storagePath;
|
||||
uid = config.ids.uids.docker-registry;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -28,13 +28,13 @@ in {
|
|||
|
||||
listenClientUrls = mkOption {
|
||||
description = "Etcd list of URLs to listen on for client traffic.";
|
||||
default = ["http://localhost:4001"];
|
||||
default = ["http://127.0.0.1:2379"];
|
||||
type = types.listOf types.str;
|
||||
};
|
||||
|
||||
listenPeerUrls = mkOption {
|
||||
description = "Etcd list of URLs to listen on for peer traffic.";
|
||||
default = ["http://localhost:7001"];
|
||||
default = ["http://127.0.0.1:2380"];
|
||||
type = types.listOf types.str;
|
||||
};
|
||||
|
||||
|
@ -46,7 +46,7 @@ in {
|
|||
|
||||
initialCluster = mkOption {
|
||||
description = "Etcd initial cluster configuration for bootstrapping.";
|
||||
default = ["${cfg.name}=http://localhost:7001"];
|
||||
default = ["${cfg.name}=http://127.0.0.1:2380"];
|
||||
type = types.listOf types.str;
|
||||
};
|
||||
|
||||
|
@ -68,6 +68,54 @@ in {
|
|||
type = types.str;
|
||||
};
|
||||
|
||||
clientCertAuth = mkOption {
|
||||
description = "Whether to use certs for client authentication";
|
||||
default = false;
|
||||
type = types.bool;
|
||||
};
|
||||
|
||||
trustedCaFile = mkOption {
|
||||
description = "Certificate authority file to use for clients";
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
};
|
||||
|
||||
certFile = mkOption {
|
||||
description = "Cert file to use for clients";
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
};
|
||||
|
||||
keyFile = mkOption {
|
||||
description = "Key file to use for clients";
|
||||
default = null;
|
||||
type = types.nullOr types.path;
|
||||
};
|
||||
|
||||
peerCertFile = mkOption {
|
||||
description = "Cert file to use for peer to peer communication";
|
||||
default = cfg.certFile;
|
||||
type = types.nullOr types.path;
|
||||
};
|
||||
|
||||
peerKeyFile = mkOption {
|
||||
description = "Key file to use for peer to peer communication";
|
||||
default = cfg.keyFile;
|
||||
type = types.nullOr types.path;
|
||||
};
|
||||
|
||||
peerTrustedCaFile = mkOption {
|
||||
description = "Certificate authority file to use for peer to peer communication";
|
||||
default = cfg.trustedCaFile;
|
||||
type = types.nullOr types.path;
|
||||
};
|
||||
|
||||
peerClientCertAuth = mkOption {
|
||||
description = "Whether to check all incoming peer requests from the cluster for valid client certificates signed by the supplied CA";
|
||||
default = false;
|
||||
type = types.bool;
|
||||
};
|
||||
|
||||
extraConf = mkOption {
|
||||
description = ''
|
||||
Etcd extra configuration. See
|
||||
|
@ -99,7 +147,7 @@ in {
|
|||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-interfaces.target" ];
|
||||
|
||||
environment = {
|
||||
environment = (filterAttrs (n: v: v != null) {
|
||||
ETCD_NAME = cfg.name;
|
||||
ETCD_DISCOVERY = cfg.discovery;
|
||||
ETCD_DATA_DIR = cfg.dataDir;
|
||||
|
@ -107,7 +155,14 @@ in {
|
|||
ETCD_LISTEN_CLIENT_URLS = concatStringsSep "," cfg.listenClientUrls;
|
||||
ETCD_LISTEN_PEER_URLS = concatStringsSep "," cfg.listenPeerUrls;
|
||||
ETCD_INITIAL_ADVERTISE_PEER_URLS = concatStringsSep "," cfg.initialAdvertisePeerUrls;
|
||||
} // (optionalAttrs (cfg.discovery == ""){
|
||||
ETCD_PEER_TRUSTED_CA_FILE = cfg.peerTrustedCaFile;
|
||||
ETCD_PEER_CERT_FILE = cfg.peerCertFile;
|
||||
ETCD_PEER_KEY_FILE = cfg.peerKeyFile;
|
||||
ETCD_CLIENT_CERT_AUTH = toString cfg.peerClientCertAuth;
|
||||
ETCD_TRUSTED_CA_FILE = cfg.trustedCaFile;
|
||||
ETCD_CERT_FILE = cfg.certFile;
|
||||
ETCD_KEY_FILE = cfg.keyFile;
|
||||
}) // (optionalAttrs (cfg.discovery == ""){
|
||||
ETCD_INITIAL_CLUSTER = concatStringsSep "," cfg.initialCluster;
|
||||
ETCD_INITIAL_CLUSTER_STATE = cfg.initialClusterState;
|
||||
ETCD_INITIAL_CLUSTER_TOKEN = cfg.initialClusterToken;
|
||||
|
|
|
@ -75,7 +75,8 @@ in
|
|||
};
|
||||
|
||||
browseDomains = mkOption {
|
||||
default = [ "0pointer.de" "zeroconf.org" ];
|
||||
default = [ ];
|
||||
example = [ "0pointer.de" "zeroconf.org" ];
|
||||
description = ''
|
||||
List of non-local DNS domains to be browsed.
|
||||
'';
|
||||
|
|
|
@ -1,98 +0,0 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.nodeDockerRegistry;
|
||||
|
||||
in {
|
||||
options.services.nodeDockerRegistry = {
|
||||
enable = mkEnableOption "docker registry service";
|
||||
|
||||
port = mkOption {
|
||||
description = "Docker registry listening port.";
|
||||
default = 8080;
|
||||
type = types.int;
|
||||
};
|
||||
|
||||
users = mkOption {
|
||||
description = "Docker registry list of users.";
|
||||
default = [];
|
||||
options = [{
|
||||
user = mkOption {
|
||||
description = "Docker registry user username.";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
pass = mkOption {
|
||||
description = "Docker registry user password.";
|
||||
type = types.str;
|
||||
};
|
||||
}];
|
||||
type = types.listOf types.optionSet;
|
||||
};
|
||||
|
||||
onTag = mkOption {
|
||||
description = "Docker registry hook triggered when an image is tagged.";
|
||||
default = "";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
onImage = mkOption {
|
||||
description = "Docker registry hook triggered when an image metadata is uploaded.";
|
||||
default = "";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
onLayer = mkOption {
|
||||
description = "Docker registry hook triggered when an when an image layer is uploaded.";
|
||||
default = "";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
onVerify = mkOption {
|
||||
description = "Docker registry hook triggered when an image layer+metadata has been verified.";
|
||||
default = "";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
onIndex = mkOption {
|
||||
description = "Docker registry hook triggered when an when an image file system data has been indexed.";
|
||||
default = "";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
dataDir = mkOption {
|
||||
description = "Docker registry data directory";
|
||||
default = "/var/lib/docker-registry";
|
||||
type = types.path;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.docker-registry-server = {
|
||||
description = "Docker Registry Service.";
|
||||
wantedBy = ["multi-user.target"];
|
||||
after = ["network.target"];
|
||||
script = ''
|
||||
${pkgs.nodePackages.docker-registry-server}/bin/docker-registry-server \
|
||||
--dir ${cfg.dataDir} \
|
||||
--port ${toString cfg.port} \
|
||||
${concatMapStringsSep " " (u: "--user ${u.user}:${u.pass}") cfg.users} \
|
||||
${optionalString (cfg.onTag != "") "--on-tag '${cfg.onTag}'"} \
|
||||
${optionalString (cfg.onImage != "") "--on-image '${cfg.onImage}'"} \
|
||||
${optionalString (cfg.onVerify != "") "--on-verify '${cfg.onVerify}'"} \
|
||||
${optionalString (cfg.onIndex != "") "--on-index '${cfg.onIndex}'"}
|
||||
'';
|
||||
|
||||
serviceConfig.User = "docker-registry";
|
||||
};
|
||||
|
||||
users.extraUsers.docker-registry = {
|
||||
uid = config.ids.uids.docker-registry;
|
||||
description = "Docker registry user";
|
||||
createHome = true;
|
||||
home = cfg.dataDir;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -490,7 +490,8 @@ in
|
|||
|
||||
systemd.services.firewall = {
|
||||
description = "Firewall";
|
||||
wantedBy = [ "network-pre.target" ];
|
||||
wantedBy = [ "sysinit.target" ];
|
||||
wants = [ "network-pre.target" ];
|
||||
before = [ "network-pre.target" ];
|
||||
after = [ "systemd-modules-load.service" ];
|
||||
|
||||
|
@ -500,6 +501,7 @@ in
|
|||
# containers don't have CAP_SYS_MODULE. So the host system had
|
||||
# better have all necessary modules already loaded.
|
||||
unitConfig.ConditionCapability = "CAP_NET_ADMIN";
|
||||
unitConfig.DefaultDependencies = false;
|
||||
|
||||
reloadIfChanged = true;
|
||||
|
||||
|
|
|
@ -0,0 +1,187 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.quagga;
|
||||
|
||||
services = [ "babel" "bgp" "isis" "ospf6" "ospf" "pim" "rip" "ripng" ];
|
||||
allServices = services ++ [ "zebra" ];
|
||||
|
||||
isEnabled = service: cfg.${service}.enable;
|
||||
|
||||
daemonName = service: if service == "zebra" then service else "${service}d";
|
||||
|
||||
configFile = service:
|
||||
let
|
||||
scfg = cfg.${service};
|
||||
in
|
||||
if scfg.configFile != null then scfg.configFile
|
||||
else pkgs.writeText "${daemonName service}.conf"
|
||||
''
|
||||
! Quagga ${daemonName service} configuration
|
||||
!
|
||||
hostname ${config.networking.hostName}
|
||||
log syslog
|
||||
service password-encryption
|
||||
!
|
||||
${scfg.config}
|
||||
!
|
||||
end
|
||||
'';
|
||||
|
||||
serviceOptions = service:
|
||||
{
|
||||
enable = mkEnableOption "the Quagga ${toUpper service} routing protocol";
|
||||
|
||||
configFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
example = "/etc/quagga/${daemonName service}.conf";
|
||||
description = ''
|
||||
Configuration file to use for Quagga ${daemonName service}.
|
||||
By default the NixOS generated files are used.
|
||||
'';
|
||||
};
|
||||
|
||||
config = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
example =
|
||||
let
|
||||
examples = {
|
||||
rip = ''
|
||||
router rip
|
||||
network 10.0.0.0/8
|
||||
'';
|
||||
|
||||
ospf = ''
|
||||
router ospf
|
||||
network 10.0.0.0/8 area 0
|
||||
'';
|
||||
|
||||
bgp = ''
|
||||
router bgp 65001
|
||||
neighbor 10.0.0.1 remote-as 65001
|
||||
'';
|
||||
};
|
||||
in
|
||||
examples.${service} or "";
|
||||
description = ''
|
||||
${daemonName service} configuration statements.
|
||||
'';
|
||||
};
|
||||
|
||||
vtyListenAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = ''
|
||||
Address to bind to for the VTY interface.
|
||||
'';
|
||||
};
|
||||
|
||||
vtyListenPort = mkOption {
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
description = ''
|
||||
TCP Port to bind to for the VTY interface.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options.services.quagga =
|
||||
{
|
||||
|
||||
zebra = (serviceOptions "zebra") // {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = any isEnabled services;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to enable the Zebra routing manager.
|
||||
|
||||
The Zebra routing manager is automatically enabled
|
||||
if any routing protocols are configured.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
} // (genAttrs services serviceOptions);
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf (any isEnabled allServices) {
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.quagga # for the vtysh tool
|
||||
];
|
||||
|
||||
users.users.quagga = {
|
||||
description = "Quagga daemon user";
|
||||
isSystemUser = true;
|
||||
group = "quagga";
|
||||
};
|
||||
|
||||
users.groups = {
|
||||
quagga = {};
|
||||
# Members of the quaggavty group can use vtysh to inspect the Quagga daemons
|
||||
quaggavty = {};
|
||||
};
|
||||
|
||||
systemd.services =
|
||||
let
|
||||
quaggaService = service:
|
||||
let
|
||||
scfg = cfg.${service};
|
||||
daemon = daemonName service;
|
||||
in
|
||||
nameValuePair daemon ({
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
restartTriggers = [ (configFile service) ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "forking";
|
||||
PIDFile = "/run/quagga/${daemon}.pid";
|
||||
ExecStart = "@${pkgs.quagga}/libexec/quagga/${daemon} ${daemon} -d -f ${configFile service}"
|
||||
+ optionalString (scfg.vtyListenAddress != "") " -A ${scfg.vtyListenAddress}"
|
||||
+ optionalString (scfg.vtyListenPort != null) " -P ${toString scfg.vtyListenPort}";
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
Restart = "on-abort";
|
||||
};
|
||||
} // (
|
||||
if service == "zebra" then
|
||||
{
|
||||
description = "Quagga Zebra routing manager";
|
||||
unitConfig.Documentation = "man:zebra(8)";
|
||||
after = [ "network.target" ];
|
||||
preStart = ''
|
||||
install -m 0755 -o quagga -g quagga -d /run/quagga
|
||||
|
||||
${pkgs.iproute}/bin/ip route flush proto zebra
|
||||
'';
|
||||
}
|
||||
else
|
||||
{
|
||||
description = "Quagga ${toUpper service} routing daemon";
|
||||
unitConfig.Documentation = "man:${daemon}(8) man:zebra(8)";
|
||||
bindsTo = [ "zebra.service" ];
|
||||
after = [ "network.target" "zebra.service" ];
|
||||
}
|
||||
));
|
||||
in
|
||||
listToAttrs (map quaggaService (filter isEnabled allServices));
|
||||
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ tavyc ];
|
||||
|
||||
}
|
|
@ -52,8 +52,7 @@ in
|
|||
description = "A Simple Calendar and Contact Server";
|
||||
after = [ "network-interfaces.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
script = "${pkgs.pythonPackages.radicale}/bin/radicale -C ${confFile} -d";
|
||||
serviceConfig.Type = "forking";
|
||||
script = "${pkgs.pythonPackages.radicale}/bin/radicale -C ${confFile} -f";
|
||||
serviceConfig.User = "radicale";
|
||||
serviceConfig.Group = "radicale";
|
||||
};
|
||||
|
|
|
@ -85,7 +85,7 @@ in
|
|||
|
||||
forwardX11 = mkOption {
|
||||
type = types.bool;
|
||||
default = cfgc.setXAuthLocation;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to allow X11 connections to be forwarded.
|
||||
'';
|
||||
|
@ -227,6 +227,8 @@ in
|
|||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
programs.ssh.setXAuthLocation = mkForce cfg.forwardX11;
|
||||
|
||||
users.extraUsers.sshd =
|
||||
{ isSystemUser = true;
|
||||
description = "SSH privilege separation user";
|
||||
|
|
|
@ -84,7 +84,7 @@ in
|
|||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = [ pkgs.dbus.daemon pkgs.dbus_tools ];
|
||||
environment.systemPackages = [ pkgs.dbus.daemon pkgs.dbus ];
|
||||
|
||||
environment.etc = singleton
|
||||
{ source = configDir;
|
||||
|
@ -104,7 +104,7 @@ in
|
|||
|
||||
security.setuidOwners = singleton
|
||||
{ program = "dbus-daemon-launch-helper";
|
||||
source = "${pkgs.dbus_daemon.out}/libexec/dbus-daemon-launch-helper";
|
||||
source = "${pkgs.dbus.daemon}/libexec/dbus-daemon-launch-helper";
|
||||
owner = "root";
|
||||
group = "messagebus";
|
||||
setuid = true;
|
||||
|
|
|
@ -80,8 +80,7 @@ in
|
|||
};
|
||||
|
||||
systemd.services."container-getty@" =
|
||||
{ unitConfig.ConditionPathExists = "/dev/pts/%I"; # Work around being respawned when "machinectl login" exits.
|
||||
serviceConfig.ExecStart = gettyCmd "--noclear --keep-baud pts/%I 115200,38400,9600 $TERM";
|
||||
{ serviceConfig.ExecStart = gettyCmd "--noclear --keep-baud pts/%I 115200,38400,9600 $TERM";
|
||||
restartIfChanged = false;
|
||||
};
|
||||
|
||||
|
|
|
@ -114,17 +114,18 @@ let
|
|||
port = if vhost.port != null then vhost.port else (if ssl then 443 else 80);
|
||||
listenString = toString port + optionalString ssl " ssl http2"
|
||||
+ optionalString vhost.default " default";
|
||||
acmeLocation = optionalString vhost.enableACME ''
|
||||
acmeLocation = optionalString vhost.enableACME (''
|
||||
location /.well-known/acme-challenge {
|
||||
try_files $uri @acme-fallback;
|
||||
${optionalString (vhost.acmeFallbackHost != null) "try_files $uri @acme-fallback;"}
|
||||
root ${vhost.acmeRoot};
|
||||
auth_basic off;
|
||||
}
|
||||
'' + (optionalString (vhost.acmeFallbackHost != null) ''
|
||||
location @acme-fallback {
|
||||
auth_basic off;
|
||||
proxy_pass http://${vhost.acmeFallbackHost};
|
||||
}
|
||||
'';
|
||||
''));
|
||||
in ''
|
||||
${optionalString vhost.forceSSL ''
|
||||
server {
|
||||
|
|
|
@ -39,8 +39,8 @@ with lib;
|
|||
};
|
||||
|
||||
acmeFallbackHost = mkOption {
|
||||
type = types.str;
|
||||
default = "0.0.0.0";
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Host which to proxy requests to if acme challenge is not found. Useful
|
||||
if you want multiple hosts to be able to verify the same domain name.
|
||||
|
|
|
@ -10,6 +10,10 @@ in
|
|||
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = with maintainers; [ danbst ];
|
||||
};
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
@ -23,9 +27,9 @@ in
|
|||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.tomcat7;
|
||||
defaultText = "pkgs.tomcat7";
|
||||
example = lib.literalExample "pkgs.tomcat8";
|
||||
default = pkgs.tomcat85;
|
||||
defaultText = "pkgs.tomcat85";
|
||||
example = lib.literalExample "pkgs.tomcatUnstable";
|
||||
description = ''
|
||||
Which tomcat package to use.
|
||||
'';
|
||||
|
@ -74,8 +78,8 @@ in
|
|||
|
||||
webapps = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [ tomcat ];
|
||||
defaultText = "[ tomcat ]";
|
||||
default = [ tomcat.webapps ];
|
||||
defaultText = "[ tomcat.webapps ]";
|
||||
description = "List containing WAR files or directories with WAR files which are web applications to be deployed on Tomcat";
|
||||
};
|
||||
|
||||
|
@ -352,7 +356,7 @@ in
|
|||
${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c 'CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${cfg.jdk} JAVA_OPTS="${cfg.javaOpts}" CATALINA_OPTS="${cfg.catalinaOpts}" ${tomcat}/bin/startup.sh'
|
||||
'';
|
||||
|
||||
postStop = ''
|
||||
preStop = ''
|
||||
echo "Stopping tomcat..."
|
||||
CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${cfg.jdk} ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c ${tomcat}/bin/shutdown.sh
|
||||
'';
|
||||
|
|
|
@ -654,6 +654,8 @@ in
|
|||
${xrandrMonitorSections}
|
||||
'';
|
||||
|
||||
fonts.enableDefaultFonts = mkDefault true;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -12,11 +12,13 @@ let
|
|||
'';
|
||||
});
|
||||
|
||||
path = map getBin
|
||||
[ pkgs.coreutils pkgs.gnugrep pkgs.findutils
|
||||
pkgs.glibc # needed for getent
|
||||
pkgs.shadow
|
||||
pkgs.nettools # needed for hostname
|
||||
path = with pkgs; map getBin
|
||||
[ coreutils
|
||||
gnugrep
|
||||
findutils
|
||||
glibc # needed for getent
|
||||
shadow
|
||||
nettools # needed for hostname
|
||||
];
|
||||
|
||||
in
|
||||
|
@ -137,8 +139,13 @@ in
|
|||
|
||||
mkdir -m 1777 -p /var/tmp
|
||||
|
||||
# Empty, read-only home directory of many system accounts.
|
||||
mkdir -m 0555 -p /var/empty
|
||||
# Empty, immutable home directory of many system accounts.
|
||||
mkdir -p /var/empty
|
||||
# Make sure it's really empty
|
||||
${pkgs.e2fsprogs}/bin/chattr -i /var/empty
|
||||
find /var/empty -mindepth 1 -delete
|
||||
chmod 0555 /var/empty
|
||||
${pkgs.e2fsprogs}/bin/chattr +i /var/empty
|
||||
'';
|
||||
|
||||
system.activationScripts.usrbinenv = if config.environment.usrbinenv != null
|
||||
|
|
|
@ -203,6 +203,12 @@ in
|
|||
# Misc. stuff.
|
||||
"pcips2" "atkbd"
|
||||
|
||||
# Temporary fix for https://github.com/NixOS/nixpkgs/issues/18451
|
||||
# Remove as soon as upstream gets fixed - marking it:
|
||||
# TODO
|
||||
# FIXME
|
||||
"i8042"
|
||||
|
||||
# To wait for SCSI devices to appear.
|
||||
"scsi_wait_scan"
|
||||
|
||||
|
|
|
@ -677,7 +677,7 @@ in
|
|||
};
|
||||
|
||||
systemd.services.systemd-networkd-wait-online = {
|
||||
before = [ "network-online.target" "ip-up.target" ];
|
||||
before = [ "ip-up.target" ];
|
||||
wantedBy = [ "network-online.target" "ip-up.target" ];
|
||||
};
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ setPath "@path@"
|
|||
# Normally, stage 1 mounts the root filesystem read/writable.
|
||||
# However, in some environments, stage 2 is executed directly, and the
|
||||
# root is read-only. So make it writable here.
|
||||
if [ "$container" != systemd-nspawn ]; then
|
||||
if [ -z "$container" ]; then
|
||||
mount -n -o remount,rw none /
|
||||
fi
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ let
|
|||
upstreamSystemUnits =
|
||||
[ # Targets.
|
||||
"basic.target"
|
||||
"busnames.target"
|
||||
"sysinit.target"
|
||||
"sockets.target"
|
||||
"graphical.target"
|
||||
|
@ -140,6 +141,7 @@ let
|
|||
"user.slice"
|
||||
"machine.slice"
|
||||
"systemd-machined.service"
|
||||
"systemd-nspawn@.service"
|
||||
|
||||
# Temporary file creation / cleanup.
|
||||
"systemd-tmpfiles-clean.service"
|
||||
|
@ -727,16 +729,6 @@ in
|
|||
|
||||
systemd.targets.network-online.after = [ "ip-up.target" ];
|
||||
|
||||
systemd.targets.network-pre = {
|
||||
wantedBy = [ "network.target" ];
|
||||
before = [ "network.target" ];
|
||||
};
|
||||
|
||||
systemd.targets.remote-fs-pre = {
|
||||
wantedBy = [ "remote-fs.target" ];
|
||||
before = [ "remote-fs.target" ];
|
||||
};
|
||||
|
||||
systemd.units =
|
||||
mapAttrs' (n: v: nameValuePair "${n}.target" (targetToUnit n v)) cfg.targets
|
||||
// mapAttrs' (n: v: nameValuePair "${n}.service" (serviceToUnit n v)) cfg.services
|
||||
|
|
|
@ -286,11 +286,15 @@ in
|
|||
# Sync mount options with systemd's src/core/mount-setup.c: mount_table.
|
||||
boot.specialFileSystems = {
|
||||
"/proc" = { fsType = "proc"; options = [ "nosuid" "noexec" "nodev" ]; };
|
||||
"/sys" = { fsType = "sysfs"; options = [ "nosuid" "noexec" "nodev" ]; };
|
||||
"/run" = { fsType = "tmpfs"; options = [ "nosuid" "nodev" "strictatime" "mode=755" "size=${config.boot.runSize}" ]; };
|
||||
"/run" = { fsType = "tmpfs"; options = [ "nodev" "strictatime" "mode=755" "size=${config.boot.runSize}" ]; };
|
||||
"/dev" = { fsType = "devtmpfs"; options = [ "nosuid" "strictatime" "mode=755" "size=${config.boot.devSize}" ]; };
|
||||
"/dev/shm" = { fsType = "tmpfs"; options = [ "nosuid" "nodev" "strictatime" "mode=1777" "size=${config.boot.devShmSize}" ]; };
|
||||
"/dev/pts" = { fsType = "devpts"; options = [ "nosuid" "noexec" "mode=620" "gid=${toString config.ids.gids.tty}" ]; };
|
||||
} // optionalAttrs (!config.boot.isContainer) {
|
||||
# systemd-nspawn populates /sys by itself, and remounting it causes all
|
||||
# kinds of weird issues (most noticeably, waiting for host disk device
|
||||
# nodes).
|
||||
"/sys" = { fsType = "sysfs"; options = [ "nosuid" "noexec" "nodev" ]; };
|
||||
};
|
||||
|
||||
};
|
||||
|
|
|
@ -38,15 +38,17 @@ in
|
|||
default = null;
|
||||
example = 4000;
|
||||
description = ''
|
||||
Use fixed port for rpc.statd, useful if NFS server is behind firewall.
|
||||
Use a fixed port for <command>rpc.statd</command>. This is
|
||||
useful if the NFS server is behind a firewall.
|
||||
'';
|
||||
};
|
||||
lockdPort = mkOption {
|
||||
default = null;
|
||||
example = 4001;
|
||||
description = ''
|
||||
Use fixed port for NFS lock manager kernel module (lockd/nlockmgr),
|
||||
useful if NFS server is behind firewall.
|
||||
Use a fixed port for the NFS lock manager kernel module
|
||||
(<literal>lockd/nlockmgr</literal>). This is useful if the
|
||||
NFS server is behind a firewall.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
@ -68,13 +70,16 @@ in
|
|||
|
||||
boot.initrd.kernelModules = mkIf inInitrd [ "nfs" ];
|
||||
|
||||
# FIXME: should use upstream units from nfs-utils.
|
||||
|
||||
systemd.services.statd =
|
||||
{ description = "NFSv3 Network Status Monitor";
|
||||
|
||||
path = [ pkgs.nfs-utils pkgs.sysvtools pkgs.utillinux ];
|
||||
|
||||
wantedBy = [ "remote-fs-pre.target" ];
|
||||
wants = [ "remote-fs-pre.target" ];
|
||||
before = [ "remote-fs-pre.target" ];
|
||||
wantedBy = [ "remote-fs.target" ];
|
||||
requires = [ "basic.target" "rpcbind.service" ];
|
||||
after = [ "basic.target" "rpcbind.service" ];
|
||||
|
||||
|
@ -100,8 +105,9 @@ in
|
|||
|
||||
path = [ pkgs.sysvtools pkgs.utillinux ];
|
||||
|
||||
wantedBy = [ "remote-fs-pre.target" ];
|
||||
wants = [ "remote-fs-pre.target" ];
|
||||
before = [ "remote-fs-pre.target" ];
|
||||
wantedBy = [ "remote-fs.target" ];
|
||||
requires = [ "rpcbind.service" ];
|
||||
after = [ "rpcbind.service" ];
|
||||
|
||||
|
|
|
@ -73,6 +73,7 @@ in rec {
|
|||
(all nixos.tests.ipv6)
|
||||
(all nixos.tests.i3wm)
|
||||
(all nixos.tests.kde4)
|
||||
(all nixos.tests.kde5)
|
||||
#(all nixos.tests.lightdm)
|
||||
(all nixos.tests.login)
|
||||
(all nixos.tests.misc)
|
||||
|
@ -88,6 +89,7 @@ in rec {
|
|||
(all nixos.tests.networking.scripted.sit)
|
||||
(all nixos.tests.networking.scripted.vlan)
|
||||
(all nixos.tests.nfs3)
|
||||
(all nixos.tests.nfs4)
|
||||
(all nixos.tests.openssh)
|
||||
(all nixos.tests.printing)
|
||||
(all nixos.tests.proxy)
|
||||
|
|
|
@ -228,12 +228,12 @@ in rec {
|
|||
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.dockerRegistry = hydraJob (import tests/docker-registry.nix { system = "x86_64-linux"; });
|
||||
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
|
||||
tests.ecryptfs = callTest tests/ecryptfs.nix {};
|
||||
tests.etcd = hydraJob (import tests/etcd.nix { system = "x86_64-linux"; });
|
||||
tests.ec2-nixops = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-nixops;
|
||||
tests.ec2-config = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-config;
|
||||
tests.ferm = callTest tests/ferm.nix {};
|
||||
tests.firefox = callTest tests/firefox.nix {};
|
||||
tests.firewall = callTest tests/firewall.nix {};
|
||||
tests.fleet = hydraJob (import tests/fleet.nix { system = "x86_64-linux"; });
|
||||
|
@ -250,6 +250,7 @@ in rec {
|
|||
tests.ipv6 = callTest tests/ipv6.nix {};
|
||||
tests.jenkins = callTest tests/jenkins.nix {};
|
||||
tests.kde4 = callTest tests/kde4.nix {};
|
||||
tests.kde5 = callTest tests/kde5.nix {};
|
||||
tests.keymap = callSubTests tests/keymap.nix {};
|
||||
tests.initrdNetwork = callTest tests/initrd-network.nix {};
|
||||
tests.kubernetes = hydraJob (import tests/kubernetes.nix { system = "x86_64-linux"; });
|
||||
|
@ -279,10 +280,10 @@ in rec {
|
|||
tests.printing = callTest tests/printing.nix {};
|
||||
tests.proxy = callTest tests/proxy.nix {};
|
||||
tests.pumpio = callTest tests/pump.io.nix {};
|
||||
tests.quagga = callTest tests/quagga.nix {};
|
||||
tests.quake3 = callTest tests/quake3.nix {};
|
||||
tests.runInMachine = callTest tests/run-in-machine.nix {};
|
||||
tests.sddm = callTest tests/sddm.nix {};
|
||||
tests.sddm-kde5 = callTest tests/sddm-kde5.nix {};
|
||||
tests.simple = callTest tests/simple.nix {};
|
||||
tests.smokeping = callTest tests/smokeping.nix {};
|
||||
tests.taskserver = callTest tests/taskserver.nix {};
|
||||
|
|
|
@ -69,6 +69,7 @@ import ./make-test.nix ({ pkgs, ... }: with pkgs.pythonPackages; rec {
|
|||
sed -i \
|
||||
-e '1i import tempfile' \
|
||||
-e 's|_STORE_FILE_PATH = .*|_STORE_FILE_PATH = tempfile.gettempdir()|' \
|
||||
-e 's|DEFAULT_STORE_SIZE = .*|DEFAULT_STORE_SIZE = 409600|' \
|
||||
tests/loopbackedtestcase.py
|
||||
|
||||
PYTHONPATH=".:$(< "${pkgs.stdenv.mkDerivation {
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
# This test runs docker-registry and check if it works
|
||||
|
||||
import ./make-test.nix ({ pkgs, ...} : {
|
||||
name = "docker-registry";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ offline ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
registry = { config, pkgs, ... }: {
|
||||
services.dockerRegistry.enable = true;
|
||||
services.dockerRegistry.port = 8080;
|
||||
services.dockerRegistry.host = "0.0.0.0";
|
||||
networking.firewall.allowedTCPPorts = [ 8080 ];
|
||||
};
|
||||
|
||||
client1 = { config, pkgs, ...}: {
|
||||
virtualisation.docker.enable = true;
|
||||
virtualisation.docker.extraOptions = "--insecure-registry registry:8080";
|
||||
};
|
||||
|
||||
client2 = { config, pkgs, ...}: {
|
||||
virtualisation.docker.enable = true;
|
||||
virtualisation.docker.extraOptions = "--insecure-registry registry:8080";
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
$client1->start();
|
||||
$client1->waitForUnit("docker.service");
|
||||
$client1->succeed("tar cv --files-from /dev/null | docker import - scratch");
|
||||
$client1->succeed("docker tag scratch registry:8080/scratch");
|
||||
|
||||
$registry->start();
|
||||
$registry->waitForUnit("docker-registry.service");
|
||||
$client1->succeed("docker push registry:8080/scratch");
|
||||
|
||||
$client2->start();
|
||||
$client2->waitForUnit("docker.service");
|
||||
$client2->succeed("docker pull registry:8080/scratch");
|
||||
$client2->succeed("docker images | grep scratch");
|
||||
'';
|
||||
})
|
|
@ -0,0 +1,157 @@
|
|||
# This test runs simple etcd cluster
|
||||
|
||||
import ./make-test.nix ({ pkgs, ... } : let
|
||||
|
||||
runWithOpenSSL = file: cmd: pkgs.runCommand file {
|
||||
buildInputs = [ pkgs.openssl ];
|
||||
} cmd;
|
||||
|
||||
ca_key = runWithOpenSSL "ca-key.pem" "openssl genrsa -out $out 2048";
|
||||
ca_pem = runWithOpenSSL "ca.pem" ''
|
||||
openssl req \
|
||||
-x509 -new -nodes -key ${ca_key} \
|
||||
-days 10000 -out $out -subj "/CN=etcd-ca"
|
||||
'';
|
||||
etcd_key = runWithOpenSSL "etcd-key.pem" "openssl genrsa -out $out 2048";
|
||||
etcd_csr = runWithOpenSSL "etcd.csr" ''
|
||||
openssl req \
|
||||
-new -key ${etcd_key} \
|
||||
-out $out -subj "/CN=etcd" \
|
||||
-config ${openssl_cnf}
|
||||
'';
|
||||
etcd_cert = runWithOpenSSL "etcd.pem" ''
|
||||
openssl x509 \
|
||||
-req -in ${etcd_csr} \
|
||||
-CA ${ca_pem} -CAkey ${ca_key} \
|
||||
-CAcreateserial -out $out \
|
||||
-days 365 -extensions v3_req \
|
||||
-extfile ${openssl_cnf}
|
||||
'';
|
||||
|
||||
etcd_client_key = runWithOpenSSL "etcd-client-key.pem"
|
||||
"openssl genrsa -out $out 2048";
|
||||
|
||||
etcd_client_csr = runWithOpenSSL "etcd-client-key.pem" ''
|
||||
openssl req \
|
||||
-new -key ${etcd_client_key} \
|
||||
-out $out -subj "/CN=etcd-client" \
|
||||
-config ${client_openssl_cnf}
|
||||
'';
|
||||
|
||||
etcd_client_cert = runWithOpenSSL "etcd-client.crt" ''
|
||||
openssl x509 \
|
||||
-req -in ${etcd_client_csr} \
|
||||
-CA ${ca_pem} -CAkey ${ca_key} -CAcreateserial \
|
||||
-out $out -days 365 -extensions v3_req \
|
||||
-extfile ${client_openssl_cnf}
|
||||
'';
|
||||
|
||||
openssl_cnf = pkgs.writeText "openssl.cnf" ''
|
||||
ions = v3_req
|
||||
distinguished_name = req_distinguished_name
|
||||
[req_distinguished_name]
|
||||
[ v3_req ]
|
||||
basicConstraints = CA:FALSE
|
||||
keyUsage = digitalSignature, keyEncipherment
|
||||
extendedKeyUsage = serverAuth
|
||||
subjectAltName = @alt_names
|
||||
[alt_names]
|
||||
DNS.1 = node1
|
||||
DNS.2 = node2
|
||||
DNS.3 = node3
|
||||
IP.1 = 127.0.0.1
|
||||
'';
|
||||
|
||||
client_openssl_cnf = pkgs.writeText "client-openssl.cnf" ''
|
||||
ions = v3_req
|
||||
distinguished_name = req_distinguished_name
|
||||
[req_distinguished_name]
|
||||
[ v3_req ]
|
||||
basicConstraints = CA:FALSE
|
||||
keyUsage = digitalSignature, keyEncipherment
|
||||
extendedKeyUsage = clientAuth
|
||||
'';
|
||||
|
||||
nodeConfig = {
|
||||
services = {
|
||||
etcd = {
|
||||
enable = true;
|
||||
keyFile = etcd_key;
|
||||
certFile = etcd_cert;
|
||||
trustedCaFile = ca_pem;
|
||||
peerClientCertAuth = true;
|
||||
listenClientUrls = ["https://127.0.0.1:2379"];
|
||||
listenPeerUrls = ["https://0.0.0.0:2380"];
|
||||
};
|
||||
};
|
||||
|
||||
environment.variables = {
|
||||
ETCDCTL_CERT_FILE = "${etcd_client_cert}";
|
||||
ETCDCTL_KEY_FILE = "${etcd_client_key}";
|
||||
ETCDCTL_CA_FILE = "${ca_pem}";
|
||||
ETCDCTL_PEERS = "https://127.0.0.1:2379";
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 2380 ];
|
||||
};
|
||||
in {
|
||||
name = "etcd";
|
||||
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ offline ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
node1 = { config, pkgs, nodes, ... }: {
|
||||
require = [nodeConfig];
|
||||
services.etcd = {
|
||||
initialCluster = ["node1=https://node1:2380" "node2=https://node2:2380"];
|
||||
initialAdvertisePeerUrls = ["https://node1:2380"];
|
||||
};
|
||||
};
|
||||
|
||||
node2 = { config, pkgs, ... }: {
|
||||
require = [nodeConfig];
|
||||
services.etcd = {
|
||||
initialCluster = ["node1=https://node1:2380" "node2=https://node2:2380"];
|
||||
initialAdvertisePeerUrls = ["https://node2:2380"];
|
||||
};
|
||||
};
|
||||
|
||||
node3 = { config, pkgs, ... }: {
|
||||
require = [nodeConfig];
|
||||
services.etcd = {
|
||||
initialCluster = ["node1=https://node1:2380" "node2=https://node2:2380" "node3=https://node3:2380"];
|
||||
initialAdvertisePeerUrls = ["https://node3:2380"];
|
||||
initialClusterState = "existing";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
subtest "should start etcd cluster", sub {
|
||||
$node1->start();
|
||||
$node2->start();
|
||||
$node1->waitForUnit("etcd.service");
|
||||
$node2->waitForUnit("etcd.service");
|
||||
$node2->waitUntilSucceeds("etcdctl cluster-health");
|
||||
$node1->succeed("etcdctl set /foo/bar 'Hello world'");
|
||||
$node2->succeed("etcdctl get /foo/bar | grep 'Hello world'");
|
||||
};
|
||||
|
||||
subtest "should add another member", sub {
|
||||
$node1->succeed("etcdctl member add node3 https://node3:2380");
|
||||
$node3->start();
|
||||
$node3->waitForUnit("etcd.service");
|
||||
$node3->waitUntilSucceeds("etcdctl member list | grep 'node3'");
|
||||
$node3->succeed("etcdctl cluster-health");
|
||||
};
|
||||
|
||||
subtest "should survive member crash", sub {
|
||||
$node3->crash;
|
||||
$node1->succeed("etcdctl cluster-health");
|
||||
$node1->succeed("etcdctl set /foo/bar 'Hello degraded world'");
|
||||
$node1->succeed("etcdctl get /foo/bar | grep 'Hello degraded world'");
|
||||
};
|
||||
'';
|
||||
})
|
|
@ -1,111 +1,27 @@
|
|||
# This test runs etcd as single node, multy node and using discovery
|
||||
# This test runs simple etcd node
|
||||
|
||||
import ./make-test.nix ({ pkgs, ... } : {
|
||||
name = "etcd";
|
||||
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ offline ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
simple =
|
||||
{ config, pkgs, nodes, ... }:
|
||||
{
|
||||
services.etcd.enable = true;
|
||||
services.etcd.listenClientUrls = ["http://0.0.0.0:4001"];
|
||||
environment.systemPackages = [ pkgs.curl ];
|
||||
networking.firewall.allowedTCPPorts = [ 4001 ];
|
||||
};
|
||||
|
||||
|
||||
node1 =
|
||||
{ config, pkgs, nodes, ... }:
|
||||
{
|
||||
services = {
|
||||
etcd = {
|
||||
enable = true;
|
||||
listenPeerUrls = ["http://0.0.0.0:7001"];
|
||||
initialAdvertisePeerUrls = ["http://node1:7001"];
|
||||
initialCluster = ["node1=http://node1:7001" "node2=http://node2:7001"];
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 7001 ];
|
||||
};
|
||||
|
||||
node2 =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
services = {
|
||||
etcd = {
|
||||
enable = true;
|
||||
listenPeerUrls = ["http://0.0.0.0:7001"];
|
||||
initialAdvertisePeerUrls = ["http://node2:7001"];
|
||||
initialCluster = ["node1=http://node1:7001" "node2=http://node2:7001"];
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 7001 ];
|
||||
};
|
||||
|
||||
discovery1 =
|
||||
{ config, pkgs, nodes, ... }:
|
||||
{
|
||||
services = {
|
||||
etcd = {
|
||||
enable = true;
|
||||
listenPeerUrls = ["http://0.0.0.0:7001"];
|
||||
initialAdvertisePeerUrls = ["http://discovery1:7001"];
|
||||
discovery = "http://simple:4001/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/";
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 7001 ];
|
||||
};
|
||||
|
||||
discovery2 =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
services = {
|
||||
etcd = {
|
||||
enable = true;
|
||||
listenPeerUrls = ["http://0.0.0.0:7001"];
|
||||
initialAdvertisePeerUrls = ["http://discovery2:7001"];
|
||||
discovery = "http://simple:4001/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/";
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 7001 ];
|
||||
};
|
||||
node = { config, pkgs, nodes, ... }: {
|
||||
services.etcd.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
subtest "single node", sub {
|
||||
$simple->start();
|
||||
$simple->waitForUnit("etcd.service");
|
||||
$simple->waitUntilSucceeds("etcdctl set /foo/bar 'Hello world'");
|
||||
$simple->waitUntilSucceeds("etcdctl get /foo/bar | grep 'Hello world'");
|
||||
subtest "should start etcd node", sub {
|
||||
$node->start();
|
||||
$node->waitForUnit("etcd.service");
|
||||
};
|
||||
|
||||
subtest "multy node", sub {
|
||||
$node1->start();
|
||||
$node2->start();
|
||||
$node1->waitForUnit("etcd.service");
|
||||
$node2->waitForUnit("etcd.service");
|
||||
$node1->waitUntilSucceeds("etcdctl set /foo/bar 'Hello world'");
|
||||
$node2->waitUntilSucceeds("etcdctl get /foo/bar | grep 'Hello world'");
|
||||
$node1->shutdown();
|
||||
$node2->shutdown();
|
||||
};
|
||||
|
||||
subtest "discovery", sub {
|
||||
$simple->succeed("curl -X PUT http://localhost:4001/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/_config/size -d value=2");
|
||||
|
||||
$discovery1->start();
|
||||
$discovery2->start();
|
||||
$discovery1->waitForUnit("etcd.service");
|
||||
$discovery2->waitForUnit("etcd.service");
|
||||
$discovery1->waitUntilSucceeds("etcdctl set /foo/bar 'Hello world'");
|
||||
$discovery2->waitUntilSucceeds("etcdctl get /foo/bar | grep 'Hello world'");
|
||||
};
|
||||
subtest "should write and read some values to etcd", sub {
|
||||
$node->succeed("etcdctl set /foo/bar 'Hello world'");
|
||||
$node->succeed("etcdctl get /foo/bar | grep 'Hello world'");
|
||||
}
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
|
||||
import ./make-test.nix ({ pkgs, ...} : {
|
||||
name = "ferm";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ mic92 ];
|
||||
};
|
||||
|
||||
nodes =
|
||||
{ client =
|
||||
{ config, pkgs, ... }:
|
||||
with pkgs.lib;
|
||||
{
|
||||
networking = {
|
||||
interfaces.eth1.ip6 = mkOverride 0 [ { address = "fd00::2"; prefixLength = 64; } ];
|
||||
interfaces.eth1.ip4 = mkOverride 0 [ { address = "192.168.1.2"; prefixLength = 24; } ];
|
||||
};
|
||||
};
|
||||
server =
|
||||
{ config, pkgs, ... }:
|
||||
with pkgs.lib;
|
||||
{
|
||||
networking = {
|
||||
interfaces.eth1.ip6 = mkOverride 0 [ { address = "fd00::1"; prefixLength = 64; } ];
|
||||
interfaces.eth1.ip4 = mkOverride 0 [ { address = "192.168.1.1"; prefixLength = 24; } ];
|
||||
};
|
||||
|
||||
services = {
|
||||
ferm.enable = true;
|
||||
ferm.config = ''
|
||||
domain (ip ip6) table filter chain INPUT {
|
||||
interface lo ACCEPT;
|
||||
proto tcp dport 8080 REJECT reject-with tcp-reset;
|
||||
}
|
||||
'';
|
||||
nginx.enable = true;
|
||||
nginx.httpConfig = ''
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
listen 8080;
|
||||
listen [::]:8080;
|
||||
|
||||
location /status { stub_status on; }
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript =
|
||||
''
|
||||
startAll;
|
||||
|
||||
$client->waitForUnit("network.target");
|
||||
$server->waitForUnit("ferm.service");
|
||||
$server->waitForUnit("nginx.service");
|
||||
$server->waitUntilSucceeds("ss -ntl | grep -q 80");
|
||||
|
||||
subtest "port 80 is allowed", sub {
|
||||
$client->succeed("curl --fail -g http://192.168.1.1:80/status");
|
||||
$client->succeed("curl --fail -g http://[fd00::1]:80/status");
|
||||
};
|
||||
|
||||
subtest "port 8080 is not allowed", sub {
|
||||
$server->succeed("curl --fail -g http://192.168.1.1:8080/status");
|
||||
$server->succeed("curl --fail -g http://[fd00::1]:8080/status");
|
||||
|
||||
$client->fail("curl --fail -g http://192.168.1.1:8080/status");
|
||||
$client->fail("curl --fail -g http://[fd00::1]:8080/status");
|
||||
};
|
||||
'';
|
||||
})
|
|
@ -15,6 +15,16 @@ import ./make-test.nix ( { pkgs, ... } : {
|
|||
services.httpd.adminAddr = "foo@example.org";
|
||||
};
|
||||
|
||||
# Dummy configuration to check whether firewall.service will be honored
|
||||
# during system activation. This only needs to be different to the
|
||||
# original walled configuration so that there is a change in the service
|
||||
# file.
|
||||
walled2 =
|
||||
{ config, pkgs, nodes, ... }:
|
||||
{ networking.firewall.enable = true;
|
||||
networking.firewall.rejectPackets = true;
|
||||
};
|
||||
|
||||
attacker =
|
||||
{ config, pkgs, ... }:
|
||||
{ services.httpd.enable = true;
|
||||
|
@ -23,28 +33,33 @@ import ./make-test.nix ( { pkgs, ... } : {
|
|||
};
|
||||
};
|
||||
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
''
|
||||
startAll;
|
||||
testScript = { nodes, ... }: let
|
||||
newSystem = nodes.walled2.config.system.build.toplevel;
|
||||
in ''
|
||||
$walled->start;
|
||||
$attacker->start;
|
||||
|
||||
$walled->waitForUnit("firewall");
|
||||
$walled->waitForUnit("httpd");
|
||||
$attacker->waitForUnit("network.target");
|
||||
$walled->waitForUnit("firewall");
|
||||
$walled->waitForUnit("httpd");
|
||||
$attacker->waitForUnit("network.target");
|
||||
|
||||
# Local connections should still work.
|
||||
$walled->succeed("curl -v http://localhost/ >&2");
|
||||
# Local connections should still work.
|
||||
$walled->succeed("curl -v http://localhost/ >&2");
|
||||
|
||||
# Connections to the firewalled machine should fail, but ping should succeed.
|
||||
$attacker->fail("curl --fail --connect-timeout 2 http://walled/ >&2");
|
||||
$attacker->succeed("ping -c 1 walled >&2");
|
||||
# Connections to the firewalled machine should fail, but ping should succeed.
|
||||
$attacker->fail("curl --fail --connect-timeout 2 http://walled/ >&2");
|
||||
$attacker->succeed("ping -c 1 walled >&2");
|
||||
|
||||
# Outgoing connections/pings should still work.
|
||||
$walled->succeed("curl -v http://attacker/ >&2");
|
||||
$walled->succeed("ping -c 1 attacker >&2");
|
||||
# Outgoing connections/pings should still work.
|
||||
$walled->succeed("curl -v http://attacker/ >&2");
|
||||
$walled->succeed("ping -c 1 attacker >&2");
|
||||
|
||||
# If we stop the firewall, then connections should succeed.
|
||||
$walled->stopJob("firewall");
|
||||
$attacker->succeed("curl -v http://walled/ >&2");
|
||||
'';
|
||||
# If we stop the firewall, then connections should succeed.
|
||||
$walled->stopJob("firewall");
|
||||
$attacker->succeed("curl -v http://walled/ >&2");
|
||||
|
||||
# Check whether activation of a new configuration reloads the firewall.
|
||||
$walled->succeed("${newSystem}/bin/switch-to-configuration test 2>&1" .
|
||||
" | grep -qF firewall.service");
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -22,18 +22,15 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||
|
||||
# create database
|
||||
$one->succeed(q~
|
||||
curl -X POST 'http://localhost:8086/db?u=root&p=root' \
|
||||
-d '{"name": "test"}'
|
||||
curl -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE test"
|
||||
~);
|
||||
|
||||
# write some points and run simple query
|
||||
$one->succeed(q~
|
||||
curl -X POST 'http://localhost:8086/db/test/series?u=root&p=root' \
|
||||
-d '[{"name":"foo","columns":["val"],"points":[[6666]]}]'
|
||||
curl -XPOST 'http://localhost:8086/write?db=test' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'
|
||||
~);
|
||||
$one->succeed(q~
|
||||
curl -G 'http://localhost:8086/db/test/series?u=root&p=root' \
|
||||
--data-urlencode 'q=select * from foo limit 1' | grep 6666
|
||||
curl -GET 'http://localhost:8086/query' --data-urlencode "db=test" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west'" | grep "0\.64"
|
||||
~);
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -24,29 +24,26 @@ import ./make-test.nix ({ pkgs, ...} :
|
|||
|
||||
testScript = { nodes, ... }:
|
||||
let xdo = "${pkgs.xdotool}/bin/xdotool"; in
|
||||
''
|
||||
sub krunner {
|
||||
my ($win,) = @_;
|
||||
$machine->execute("${xdo} key Alt+F2 sleep 1 type $win");
|
||||
$machine->execute("${xdo} search --sync --onlyvisible --class krunner sleep 5 key Return");
|
||||
}
|
||||
''
|
||||
startAll;
|
||||
|
||||
$machine->waitForFile("/home/alice/.Xauthority");
|
||||
$machine->succeed("xauth merge ~alice/.Xauthority");
|
||||
|
||||
$machine->waitUntilSucceeds("pgrep plasmashell");
|
||||
$machine->succeed("xauth merge ~alice/.Xauthority");
|
||||
$machine->waitForWindow(qr/Desktop.*/);
|
||||
$machine->waitForWindow("^Desktop ");
|
||||
|
||||
# Check that logging in has given the user ownership of devices.
|
||||
$machine->succeed("getfacl /dev/snd/timer | grep -q alice");
|
||||
|
||||
krunner("dolphin");
|
||||
$machine->waitForWindow(qr/.*Dolphin/);
|
||||
|
||||
krunner("konsole");
|
||||
$machine->waitForWindow(qr/.*Konsole/);
|
||||
|
||||
krunner("systemsettings5");
|
||||
$machine->waitForWindow(qr/.*Settings/);
|
||||
$machine->sleep(20);
|
||||
|
||||
$machine->execute("su - alice -c 'DISPLAY=:0.0 dolphin &'");
|
||||
$machine->waitForWindow(" Dolphin");
|
||||
|
||||
$machine->execute("su - alice -c 'DISPLAY=:0.0 konsole &'");
|
||||
$machine->waitForWindow("Konsole");
|
||||
|
||||
$machine->execute("su - alice -c 'DISPLAY=:0.0 systemsettings5 &'");
|
||||
$machine->waitForWindow("Settings");
|
||||
|
||||
$machine->execute("${xdo} key Alt+F1 sleep 10");
|
||||
$machine->screenshot("screen");
|
|
@ -81,7 +81,7 @@ in {
|
|||
'';
|
||||
};
|
||||
systemd.services.mongodb.unitConfig.Before = "pump.io.service";
|
||||
systemd.services.mongodb.unitConfig.RequiredBy = "pump.io.service";
|
||||
systemd.services."pump.io".unitConfig.Requires = "mongodb.service";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
# This test runs Quagga and checks if OSPF routing works.
|
||||
#
|
||||
# Network topology:
|
||||
# [ client ]--net1--[ router1 ]--net2--[ router2 ]--net3--[ server ]
|
||||
#
|
||||
# All interfaces are in OSPF Area 0.
|
||||
|
||||
import ./make-test.nix ({ pkgs, ... }:
|
||||
let
|
||||
|
||||
ifAddr = node: iface: (pkgs.lib.head node.config.networking.interfaces.${iface}.ip4).address;
|
||||
|
||||
ospfConf = ''
|
||||
interface eth2
|
||||
ip ospf hello-interval 1
|
||||
ip ospf dead-interval 5
|
||||
!
|
||||
router ospf
|
||||
network 192.168.0.0/16 area 0
|
||||
'';
|
||||
|
||||
in
|
||||
{
|
||||
name = "quagga";
|
||||
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ tavyc ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
|
||||
client =
|
||||
{ config, pkgs, nodes, ... }:
|
||||
{
|
||||
virtualisation.vlans = [ 1 ];
|
||||
networking.defaultGateway = ifAddr nodes.router1 "eth1";
|
||||
};
|
||||
|
||||
router1 =
|
||||
{ config, pkgs, nodes, ... }:
|
||||
{
|
||||
virtualisation.vlans = [ 1 2 ];
|
||||
boot.kernel.sysctl."net.ipv4.ip_forward" = "1";
|
||||
networking.firewall.extraCommands = "iptables -A nixos-fw -i eth2 -p ospf -j ACCEPT";
|
||||
services.quagga.ospf = {
|
||||
enable = true;
|
||||
config = ospfConf;
|
||||
};
|
||||
};
|
||||
|
||||
router2 =
|
||||
{ config, pkgs, nodes, ... }:
|
||||
{
|
||||
virtualisation.vlans = [ 3 2 ];
|
||||
boot.kernel.sysctl."net.ipv4.ip_forward" = "1";
|
||||
networking.firewall.extraCommands = "iptables -A nixos-fw -i eth2 -p ospf -j ACCEPT";
|
||||
services.quagga.ospf = {
|
||||
enable = true;
|
||||
config = ospfConf;
|
||||
};
|
||||
};
|
||||
|
||||
server =
|
||||
{ config, pkgs, nodes, ... }:
|
||||
{
|
||||
virtualisation.vlans = [ 3 ];
|
||||
networking.defaultGateway = ifAddr nodes.router2 "eth1";
|
||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||
networking.firewall.allowPing = true;
|
||||
services.httpd.enable = true;
|
||||
services.httpd.adminAddr = "foo@example.com";
|
||||
};
|
||||
};
|
||||
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
''
|
||||
startAll;
|
||||
|
||||
# Wait for the networking to start on all machines
|
||||
$_->waitForUnit("network.target") foreach values %vms;
|
||||
|
||||
# Wait for OSPF to form adjacencies
|
||||
for my $gw ($router1, $router2) {
|
||||
$gw->waitForUnit("ospfd");
|
||||
$gw->waitUntilSucceeds("vtysh -c 'show ip ospf neighbor' | grep Full");
|
||||
$gw->waitUntilSucceeds("vtysh -c 'show ip route' | grep '^O>'");
|
||||
}
|
||||
|
||||
# Test ICMP.
|
||||
$client->succeed("ping -c 3 server >&2");
|
||||
|
||||
# Test whether HTTP works.
|
||||
$server->waitForUnit("httpd");
|
||||
$client->succeed("curl --fail http://server/ >&2");
|
||||
'';
|
||||
})
|
|
@ -27,6 +27,8 @@ rec {
|
|||
namecoin = callPackage ./namecoin.nix { inherit namecoind; };
|
||||
namecoind = callPackage ./namecoind.nix { };
|
||||
|
||||
ethabi = callPackage ./ethabi.nix { };
|
||||
|
||||
primecoin = callPackage ./primecoin.nix { withGui = true; };
|
||||
primecoind = callPackage ./primecoin.nix { withGui = false; };
|
||||
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
{ stdenv, fetchFromGitHub, rustPlatform }:
|
||||
|
||||
with rustPlatform;
|
||||
|
||||
buildRustPackage rec {
|
||||
name = "ethabi-${version}";
|
||||
version = "0.2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ethcore";
|
||||
repo = "ethabi";
|
||||
rev = "fbed04984cab0db8767e01054ee16271b8e36281";
|
||||
sha256 = "1zgyyg1i5wmz8l1405yg5jmq4ddq530sl7018pkkc7l6cjj3bbhd";
|
||||
};
|
||||
|
||||
depsSha256 = "0srxv0wbhvyflc967lkpd2mx5nk7asx2cbxa0qxvas16wy6vxz52";
|
||||
|
||||
meta = {
|
||||
description = "Ethereum function call encoding (ABI) utility";
|
||||
homepage = https://github.com/ethcore/ethabi/;
|
||||
maintainers = [stdenv.lib.maintainers.dbrock];
|
||||
inherit version;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
{ stdenv, cmake, fetchFromGitHub, file, gcc_multi, libX11, makeWrapper
|
||||
, overrideCC, qt5, requireFile, unzip, wineStable
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
version = "1.3.2";
|
||||
|
||||
airwave-src = fetchFromGitHub {
|
||||
owner = "phantom-code";
|
||||
repo = "airwave";
|
||||
rev = version;
|
||||
sha256 = "053kkx5yq1vas0qisidkgq0h6hzfwy3677jprjkcrwc4hp2i2v12";
|
||||
};
|
||||
|
||||
stdenv_multi = overrideCC stdenv gcc_multi;
|
||||
|
||||
vst-sdk = stdenv.mkDerivation rec {
|
||||
name = "vstsdk366_27_06_2016_build_61";
|
||||
src = requireFile {
|
||||
name = "${name}.zip";
|
||||
url = "http://www.steinberg.net/en/company/developers.html";
|
||||
sha256 = "05gsr13bpi2hhp34rvhllsvmn44rqvmjdpg9fsgfzgylfkz0kiki";
|
||||
};
|
||||
nativeBuildInputs = [ unzip ];
|
||||
installPhase = "cp -r . $out";
|
||||
};
|
||||
|
||||
wine-wow64 = wineStable.override {
|
||||
wineBuild = "wineWow";
|
||||
};
|
||||
|
||||
wine-xembed = wine-wow64.overrideDerivation (oldAttrs: {
|
||||
patchFlags = [ "-p2" ];
|
||||
patches = [ "${airwave-src}/fix-xembed-wine-windows.patch" ];
|
||||
});
|
||||
|
||||
in
|
||||
|
||||
stdenv_multi.mkDerivation {
|
||||
name = "airwave-${version}";
|
||||
|
||||
src = airwave-src;
|
||||
|
||||
nativeBuildInputs = [ cmake makeWrapper ];
|
||||
|
||||
buildInputs = [ file libX11 qt5.qtbase wine-xembed ];
|
||||
|
||||
postPatch = ''
|
||||
# Binaries not used directly should land in libexec/.
|
||||
substituteInPlace src/common/storage.cpp --replace '"/bin"' '"/libexec"'
|
||||
|
||||
# For airwave-host-32.exe.so, point wineg++ to 32-bit versions of
|
||||
# these libraries, as $NIX_LDFLAGS contains only 64-bit ones.
|
||||
substituteInPlace src/host/CMakeLists.txt --replace '-m32' \
|
||||
'-m32 -L${wine-xembed}/lib -L${wine-xembed}/lib/wine -L${stdenv_multi.cc.libc.out}/lib/32'
|
||||
'';
|
||||
|
||||
# libstdc++.so link gets lost in 64-bit executables during
|
||||
# shrinking.
|
||||
dontPatchELF = true;
|
||||
|
||||
cmakeFlags = "-DVSTSDK_PATH=${vst-sdk}";
|
||||
|
||||
postInstall = ''
|
||||
mv $out/bin $out/libexec
|
||||
mkdir $out/bin
|
||||
mv $out/libexec/airwave-manager $out/bin
|
||||
wrapProgram $out/libexec/airwave-host-32.exe --set WINELOADER ${wine-xembed}/bin/wine
|
||||
wrapProgram $out/libexec/airwave-host-64.exe --set WINELOADER ${wine-xembed}/bin/wine64
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "WINE-based VST bridge for Linux VST hosts";
|
||||
longDescription = ''
|
||||
Airwave is a wine based VST bridge, that allows for the use of
|
||||
Windows 32- and 64-bit VST 2.4 audio plugins with Linux VST
|
||||
hosts. Due to the use of shared memory, only one extra copying
|
||||
is made for each data transfer. Airwave also uses the XEMBED
|
||||
protocol to correctly embed the plugin editor into the host
|
||||
window.
|
||||
'';
|
||||
homepage = https://github.com/phantom-code/airwave;
|
||||
license = licenses.mit;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = with maintainers; [ michalrus ];
|
||||
hydraPlatforms = [];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
{ stdenv, lib, fetchFromGitHub, autoconf, automake, which, libtool, pkgconfig
|
||||
, ronn
|
||||
, pcaudiolibSupport ? true, pcaudiolib
|
||||
, sonicSupport ? true, sonic }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "espeak-ng-${version}";
|
||||
version = "2016-08-28";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "espeak-ng";
|
||||
repo = "espeak-ng";
|
||||
rev = "b784e77c5708b61feed780d8f1113c4c8eb92200";
|
||||
sha256 = "1whix4mv0qvsvifgpwwbdzhv621as3rxpn9ijqc2683h6k8pvcfk";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoconf automake which libtool pkgconfig ronn ];
|
||||
|
||||
buildInputs = lib.optional pcaudiolibSupport pcaudiolib
|
||||
++ lib.optional sonicSupport sonic;
|
||||
|
||||
preConfigure = "./autogen.sh";
|
||||
|
||||
postInstall = ''
|
||||
patchelf --set-rpath "$(patchelf --print-rpath $out/bin/espeak-ng)" $out/bin/speak-ng
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Open source speech synthesizer that supports over 70 languages, based on eSpeak";
|
||||
homepage = "https://github.com/espeak-ng/espeak-ng";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ aske ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -6,11 +6,11 @@
|
|||
pythonPackages.buildPythonApplication rec {
|
||||
name = "gpodder-${version}";
|
||||
|
||||
version = "3.9.0";
|
||||
version = "3.9.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://gpodder.org/src/${name}.tar.gz";
|
||||
sha256 = "1ik954idi0ldnw0wrv7mm71smyb6x66332jxcaf1dxsl12ccm44l";
|
||||
sha256 = "036p9vnkr3if0k548xhhjmcwdaimy3yd24s3xd8vzlp0wdzkzrhn";
|
||||
};
|
||||
|
||||
postPatch = with stdenv.lib; ''
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
{ stdenv, fetchFromGitHub
|
||||
, autoreconfHook, autoconf-archive, pkgconfig
|
||||
, libpulseaudio, ncurses }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "pamix-${version}";
|
||||
version = "1.4.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "patroclos";
|
||||
repo = "pamix";
|
||||
rev = "v${version}";
|
||||
sha256 = "06pxpalzynb8z7qwhkfs7sj823k9chdmpyj40rp27f2znf2qga19";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook autoconf-archive pkgconfig ];
|
||||
buildInputs = [ libpulseaudio ncurses ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Pulseaudio terminal mixer";
|
||||
homepage = https://github.com/patroclos/PAmix;
|
||||
license = licenses.mit;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ ericsagnes ];
|
||||
};
|
||||
}
|
|
@ -9,6 +9,8 @@ stdenv.mkDerivation rec {
|
|||
sha256 = "1qpyb7355s21sgy6gibkybxpzx4ikha57a8w644lca6qy9mhcwi3";
|
||||
};
|
||||
|
||||
patches = [ ./mutex_no_nameclash.patch ];
|
||||
|
||||
buildInputs = [ alsaLib gtkmm libjack2 ];
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
--- a/src/mutex.cpp
|
||||
+++ b/src/mutex.cpp
|
||||
@@ -20,23 +20,23 @@
|
||||
|
||||
#include "mutex.h"
|
||||
|
||||
-const pthread_mutex_t mutex::recmutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
|
||||
+const pthread_mutex_t mutex_no_nameclash::recmutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
|
||||
const pthread_cond_t condition_var::cond = PTHREAD_COND_INITIALIZER;
|
||||
|
||||
-mutex::mutex( )
|
||||
+mutex_no_nameclash::mutex_no_nameclash( )
|
||||
{
|
||||
m_mutex_lock = recmutex;
|
||||
}
|
||||
|
||||
void
|
||||
-mutex::lock( )
|
||||
+mutex_no_nameclash::lock( )
|
||||
{
|
||||
pthread_mutex_lock( &m_mutex_lock );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
-mutex::unlock( )
|
||||
+mutex_no_nameclash::unlock( )
|
||||
{
|
||||
pthread_mutex_unlock( &m_mutex_lock );
|
||||
}
|
||||
--- a/src/mutex.h
|
||||
+++ b/src/mutex.h
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
-class mutex {
|
||||
+class mutex_no_nameclash {
|
||||
|
||||
private:
|
||||
|
||||
@@ -37,14 +37,14 @@
|
||||
|
||||
public:
|
||||
|
||||
- mutex();
|
||||
+ mutex_no_nameclash();
|
||||
|
||||
void lock();
|
||||
void unlock();
|
||||
|
||||
};
|
||||
|
||||
-class condition_var : public mutex {
|
||||
+class condition_var : public mutex_no_nameclash {
|
||||
|
||||
private:
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{ fetchurl, stdenv, dpkg, xorg, alsaLib, makeWrapper, openssl, freetype
|
||||
, glib, pango, cairo, atk, gdk_pixbuf, gtk, cups, nspr, nss, libpng, GConf
|
||||
, libgcrypt, libudev, fontconfig, dbus, expat, ffmpeg_0_10, curl, zlib, gnome }:
|
||||
, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_0_10, curl, zlib, gnome }:
|
||||
|
||||
assert stdenv.system == "x86_64-linux";
|
||||
|
||||
|
@ -28,7 +28,7 @@ let
|
|||
nss
|
||||
pango
|
||||
stdenv.cc.cc
|
||||
libudev
|
||||
systemd
|
||||
xorg.libX11
|
||||
xorg.libXcomposite
|
||||
xorg.libXcursor
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
{ stdenv, fetchzip, lib, makeWrapper, alsaLib, atk, cairo, gdk_pixbuf
|
||||
, glib, gst_ffmpeg, gst_plugins_bad, gst_plugins_base
|
||||
, gst_plugins_good, gst_plugins_ugly, gstreamer, gtk2, libSM, libX11
|
||||
, libpng12, pango, zlib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "transcribe-${version}";
|
||||
version = "8.40";
|
||||
|
||||
src = if stdenv.system == "i686-linux" then
|
||||
fetchzip {
|
||||
url = "https://www.seventhstring.com/xscribe/downlinux32_old/xscsetup.tar.gz";
|
||||
sha256 = "1ngidmj9zz8bmv754s5xfsjv7v6xr03vck4kigzq4bpc9b1fdhjq";
|
||||
}
|
||||
else if stdenv.system == "x86_64-linux" then
|
||||
fetchzip {
|
||||
url = "https://www.seventhstring.com/xscribe/downlinux64_old/xsc64setup.tar.gz";
|
||||
sha256 = "0svzi8svj6zn06gj0hr8mpnhq4416dvb4g5al0gpb1g3paywdaf9";
|
||||
}
|
||||
else throw "Platform not supported";
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
buildInputs = [ gst_plugins_base gst_plugins_good
|
||||
gst_plugins_bad gst_plugins_ugly gst_ffmpeg ];
|
||||
|
||||
dontPatchELF = true;
|
||||
|
||||
libPath = lib.makeLibraryPath [
|
||||
stdenv.cc.cc glib gtk2 atk pango cairo gdk_pixbuf alsaLib
|
||||
libX11 libSM libpng12 gstreamer gst_plugins_base zlib
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin $out/libexec $out/share/doc
|
||||
cp transcribe $out/libexec
|
||||
cp xschelp.htb readme_gtk.html $out/share/doc
|
||||
cp -r gtkicons $out/share/icons
|
||||
|
||||
ln -s $out/share/doc/xschelp.htb $out/libexec
|
||||
|
||||
patchelf \
|
||||
--set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
|
||||
$out/libexec/transcribe
|
||||
|
||||
wrapProgram $out/libexec/transcribe \
|
||||
--prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" \
|
||||
--prefix LD_LIBRARY_PATH : "${libPath}"
|
||||
|
||||
ln -s $out/libexec/transcribe $out/bin/
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Software to help transcribe recorded music";
|
||||
longDescription = ''
|
||||
The Transcribe! application is an assistant for people who want
|
||||
to work out a piece of music from a recording, in order to write
|
||||
it out, or play it themselves, or both. It doesn't do the
|
||||
transcribing for you, but it is essentially a specialised player
|
||||
program which is optimised for the purpose of transcription. It
|
||||
has many transcription-specific features not found on
|
||||
conventional music players.
|
||||
'';
|
||||
homepage = https://www.seventhstring.com/xscribe/;
|
||||
license = licenses.unfree;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ michalrus ];
|
||||
};
|
||||
}
|
|
@ -54,6 +54,7 @@ let
|
|||
pkgsi686Linux.stdenv.cc.cc.lib
|
||||
# aapt wants libz.so.1
|
||||
zlib
|
||||
pkgsi686Linux.zlib
|
||||
# Support multiple monitors
|
||||
libXrandr
|
||||
]}"
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "atom-${version}";
|
||||
version = "1.9.9";
|
||||
version = "1.10.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
|
||||
sha256 = "1rgqajqc1z1n8ckwkxg61j0k6ridps25am54qdwjm25w53bd0z1x";
|
||||
sha256 = "0v03a93qa57ajji4sfz7hyr06n20jnlq87103nr7wqycv1v4dm85";
|
||||
name = "${name}.deb";
|
||||
};
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{ stdenv, fetchurl, buildEnv, gtk, glib, gdk_pixbuf, alsaLib, nss, nspr, gconf
|
||||
, cups, libgcrypt_1_5, libudev, makeWrapper, dbus }:
|
||||
, cups, libgcrypt_1_5, systemd, makeWrapper, dbus }:
|
||||
let
|
||||
bracketsEnv = buildEnv {
|
||||
name = "env-brackets";
|
||||
paths = [
|
||||
gtk glib gdk_pixbuf stdenv.cc.cc alsaLib nss nspr gconf cups libgcrypt_1_5
|
||||
dbus libudev.out
|
||||
dbus systemd.lib
|
||||
];
|
||||
};
|
||||
in
|
||||
|
@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
|
|||
rmdir $out/usr
|
||||
ln -sf $out/opt/brackets/brackets $out/bin/brackets
|
||||
|
||||
ln -s ${libudev.out}/lib/libudev.so.1 $out/opt/brackets/lib/libudev.so.0
|
||||
ln -s ${systemd.lib}/lib/libudev.so.1 $out/opt/brackets/lib/libudev.so.0
|
||||
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath "${bracketsEnv}/lib:${bracketsEnv}/lib64" \
|
||||
|
|
|
@ -19,12 +19,12 @@ rec {
|
|||
if stdenv.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk-x86_64.tar.gz;
|
||||
md5 = "54e2ce0660b2b1b0eb4267acf70ea66d";
|
||||
sha256 = "1ndvanxw62b5ywi6ww0dyimabfmjdsw9q3xpy95zd8d5ygj2qsgq";
|
||||
}
|
||||
else
|
||||
fetchurl {
|
||||
url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk.tar.gz;
|
||||
md5 = "bde55a2354dc224cf5f26e5320e72dac";
|
||||
sha256 = "0y5n0cyr9lgjmmzkfmav7j5w66rc1jq3300hcw3vrfjiv1k6ng3w";
|
||||
};
|
||||
};
|
||||
eclipse_sdk_35 = eclipse-sdk-35; # backward compatibility, added 2016-01-30
|
||||
|
@ -199,6 +199,23 @@ rec {
|
|||
};
|
||||
eclipse_cpp_45 = eclipse-cpp-45; # backward compatibility, added 2016-01-30
|
||||
|
||||
eclipse-cpp-46 = buildEclipse {
|
||||
name = "eclipse-cpp-4.6.0";
|
||||
description = "Eclipse IDE for C/C++ Developers, Neon release";
|
||||
src =
|
||||
if stdenv.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/neon/R/eclipse-cpp-neon-R-linux-gtk-x86_64.tar.gz;
|
||||
sha256 = "09fqsgvbjfdqvn7z03crkii34z4bsb34y272q68ib8741bxk0i6m";
|
||||
}
|
||||
else if stdenv.system == "i686-linux" then
|
||||
fetchurl {
|
||||
url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/neon/R/eclipse-cpp-neon-R-linux-gtk.tar.gz;
|
||||
sha256 = "0a12qmqq22v7sbmwn1hjv1zcrkmp64bf0ajmdjljhs9ac79mxn5h";
|
||||
}
|
||||
else throw "Unsupported system: ${stdenv.system}";
|
||||
};
|
||||
|
||||
eclipse-sdk-421 = buildEclipse {
|
||||
name = "eclipse-sdk-4.2.1";
|
||||
description = "Eclipse Classic";
|
||||
|
|
|
@ -152,12 +152,12 @@ rec {
|
|||
|
||||
cdt = buildEclipseUpdateSite rec {
|
||||
name = "cdt-${version}";
|
||||
version = "8.8.0";
|
||||
version = "9.0.1";
|
||||
|
||||
src = fetchzip {
|
||||
stripRoot = false;
|
||||
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/tools/cdt/releases/8.8/${name}.zip";
|
||||
sha256 = "1i1m7g5128q21njgrkiw71y4vi4aqzz8xdd4iv80j3nsvhbv6cnm";
|
||||
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/tools/cdt/releases/9.0/${name}.zip";
|
||||
sha256 = "0vdx0j9ci533wnk7y17qjvjyqx38hlrdw67z6pi05vfv3r6ys39x";
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -322,12 +322,12 @@ rec {
|
|||
|
||||
gnuarmeclipse = buildEclipseUpdateSite rec {
|
||||
name = "gnuarmeclipse-${version}";
|
||||
version = "2.11.1-201512141335";
|
||||
version = "3.1.1-201606210758";
|
||||
|
||||
src = fetchzip {
|
||||
stripRoot = false;
|
||||
url = "https://github.com/gnuarmeclipse/plug-ins/releases/download/v${version}/ilg.gnuarmeclipse.repository-${version}.zip";
|
||||
sha256 = "1ijvnahfw2wc860la7kj8b52z2sfm8k1yk62bl0d4lq60y3aycg9";
|
||||
sha256 = "1g77jlhfa3csaxxps1z5lasrd9l2p5ajnddnq9ra5syw8ggkdc2h";
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -358,6 +358,31 @@ rec {
|
|||
};
|
||||
};
|
||||
|
||||
rustdt = buildEclipseUpdateSite rec {
|
||||
name = "rustdt-${version}";
|
||||
version = "0.6.2";
|
||||
owner = "RustDT";
|
||||
repo = "rustdt.github.io";
|
||||
rev = "5cbe753008c40555c493092a6f4ae1ffbff0b3ce";
|
||||
|
||||
src = fetchzip {
|
||||
stripRoot = false;
|
||||
url = "https://github.com/${owner}/${repo}/archive/${rev}.zip";
|
||||
sha256 = "1xfj4j27d1h4bdf2v7f78zi8lz4zkkj7s9kskmsqx5jcs2d459yp";
|
||||
extraPostFetch =
|
||||
''
|
||||
mv "$out/${repo}-${rev}/releases/local-repo"/* "$out/"
|
||||
'';
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://github.com/RustDT;
|
||||
description = "Rust development tooling";
|
||||
license = licenses.epl10;
|
||||
platforms = platforms.all;
|
||||
};
|
||||
};
|
||||
|
||||
scala = buildEclipseUpdateSite rec {
|
||||
name = "scala-${version}";
|
||||
version = "4.4.1.201605041056";
|
||||
|
|
|
@ -175,10 +175,10 @@
|
|||
}) {};
|
||||
auctex = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "auctex";
|
||||
version = "11.89.4";
|
||||
version = "11.89.5";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/auctex-11.89.4.tar";
|
||||
sha256 = "06dxj9wflwgzy88vk47pdk6xln4f63cab7s73ynwp2bdqjs99f5b";
|
||||
url = "https://elpa.gnu.org/packages/auctex-11.89.5.tar";
|
||||
sha256 = "0scab76ks9wnv1wp9lrm6h9hag7p70zn950srp2p02vrzz2z5p53";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -618,10 +618,10 @@
|
|||
}) {};
|
||||
el-search = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
|
||||
pname = "el-search";
|
||||
version = "0.2.2";
|
||||
version = "0.2.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/el-search-0.2.2.tar";
|
||||
sha256 = "07b4jk143vi3sydg03mg12gy1rs21q0qvs7p303irwz4pv8bfwqj";
|
||||
url = "https://elpa.gnu.org/packages/el-search-0.2.3.tar";
|
||||
sha256 = "0icxfq6hd8pfg4r5q70ylm84wgv1jiijpv0d56x7kjdh7wrdalrb";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -1336,10 +1336,10 @@
|
|||
}) {};
|
||||
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "org";
|
||||
version = "20160829";
|
||||
version = "20160905";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/org-20160829.tar";
|
||||
sha256 = "1p0bxbzjzxmhsg1m4a3mlsphh7gcv6b97mfgkl22lfy0ia0g1fzv";
|
||||
url = "https://elpa.gnu.org/packages/org-20160905.tar";
|
||||
sha256 = "118xq8bsiwa6nfxm14ww5dmyf5r0cv69lf748cj39bcvg1qm94vn";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -98,6 +98,9 @@ self:
|
|||
# upstream issue: missing file header
|
||||
initsplit = markBroken super.initsplit;
|
||||
|
||||
# upstream issue: missing dependency
|
||||
jade = null;
|
||||
|
||||
# upstream issue: missing file header
|
||||
jsfmt = markBroken super.jsfmt;
|
||||
|
||||
|
|
|
@ -1061,12 +1061,12 @@
|
|||
anaconda-mode = callPackage ({ dash, emacs, f, fetchFromGitHub, fetchurl, lib, melpaBuild, pythonic, s }:
|
||||
melpaBuild {
|
||||
pname = "anaconda-mode";
|
||||
version = "0.1.3";
|
||||
version = "0.1.5";
|
||||
src = fetchFromGitHub {
|
||||
owner = "proofit404";
|
||||
repo = "anaconda-mode";
|
||||
rev = "7128978b571ec013ccfd91865029cc0d062c269c";
|
||||
sha256 = "0l683fk3l82w6097d1g8i9ka3sfv9vpa363i6500xwraa49fcq9i";
|
||||
rev = "359c9d62649ad3f2cb007c4d8871e5b051d695f6";
|
||||
sha256 = "1kwn5lln7l754x5l3glij7ci3r2g6p9sapc43bm2gmwbgxa9fgis";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/e03b698fd3fe5b80bdd24ce01f7fba28e9da0da8/recipes/anaconda-mode";
|
||||
|
@ -1166,12 +1166,12 @@
|
|||
annotate = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "annotate";
|
||||
version = "0.4.5";
|
||||
version = "0.4.6";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bastibe";
|
||||
repo = "annotate.el";
|
||||
rev = "067fe860eabcbad4894609c06f090c2c0f97773f";
|
||||
sha256 = "0s1yviv6sa05njlix7a88vhfz75mw056w2ac6cmw4wyhxcf4rwdv";
|
||||
rev = "9616c55812c4b6f11365e0f4e90f9357c95280ff";
|
||||
sha256 = "0wkdvmszabx1rcwqbm6rw07niwd7n4bdb9h2iav2miljwy68s40x";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/3aae88b8e3b080501195d291012deab31aaf35f7/recipes/annotate";
|
||||
|
@ -3019,12 +3019,12 @@
|
|||
cask = callPackage ({ cl-lib ? null, dash, epl, f, fetchFromGitHub, fetchurl, lib, melpaBuild, package-build, s, shut-up }:
|
||||
melpaBuild {
|
||||
pname = "cask";
|
||||
version = "0.7.4";
|
||||
version = "0.8.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "cask";
|
||||
repo = "cask";
|
||||
rev = "8337237449446e186ccd5ade0b0dc8c6ea7bd728";
|
||||
sha256 = "1hvm6r6a8rgjwnn2mcamwqrmhz424vlr4mbvbri3wmn0ikbk510l";
|
||||
rev = "f5b828ef4ff6c367f87181a5b998aa78e42c2f24";
|
||||
sha256 = "0kmm1dlyf4f8b7dy2v2n7nf6620v6cq70ndlv5607dibhmaa8ksr";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/b86c666ee9b0620390a250dddd42b17cbec2409f/recipes/cask";
|
||||
|
@ -3103,12 +3103,12 @@
|
|||
cbm = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "cbm";
|
||||
version = "0.3.2";
|
||||
version = "0.4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "akermu";
|
||||
repo = "cbm.el";
|
||||
rev = "3c7f33d26336776f94877974f5f7e1470ea1cbdd";
|
||||
sha256 = "0rrgi765x9p9wa14p2b5jhsk86cmiicx2a239jkxm00w3sdn7rn8";
|
||||
rev = "bd74f5f83ea1778d2e871cbcbedf458ccde40128";
|
||||
sha256 = "1smj2l0g0643qp2c5jgj7z9yk6y8yia5a33pfbdpa4qwgq1ap3m4";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/f28dbc97dc23cdb0b4c74f8805775c787635871e/recipes/cbm";
|
||||
|
@ -3418,12 +3418,12 @@
|
|||
cider-eval-sexp-fu = callPackage ({ emacs, eval-sexp-fu, fetchFromGitHub, fetchurl, highlight, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "cider-eval-sexp-fu";
|
||||
version = "1.0";
|
||||
version = "1.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "clojure-emacs";
|
||||
repo = "cider-eval-sexp-fu";
|
||||
rev = "dbe6a19c835ea42b099dd17f040db0baf9774aaf";
|
||||
sha256 = "1rkd76561h93si4lpisz3qnaj48dx8x01nd59a3lgpqsbbibnccf";
|
||||
rev = "6b437bf073b21543e72d76fd0392a28fba7cbfbe";
|
||||
sha256 = "1frpr5dwg7aa0pjr2sarck498lj11li8xi36s5qa8qhflgl29jpn";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/947f4d106d70f95ca8aac124ab0d90b2975208df/recipes/cider-eval-sexp-fu";
|
||||
|
@ -3478,6 +3478,27 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
circe-notifications = callPackage ({ alert, circe, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "circe-notifications";
|
||||
version = "1.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "eqyiel";
|
||||
repo = "circe-notifications";
|
||||
rev = "80c44441ecd3ae04ae63760aa20afa837c1ed05b";
|
||||
sha256 = "0s0iw5vclciziga78f1lvj6sdg84a132in39k4vz0pj598ypin1w";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/76c0408423c4e0728789de7b356b2971d6c446c7/recipes/circe-notifications";
|
||||
sha256 = "06y525x5yc0xgbw0cf16mc72ca9bv8j8z4gpgznbad2qp7psf53c";
|
||||
name = "circe-notifications";
|
||||
};
|
||||
packageRequires = [ alert circe emacs ];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/circe-notifications";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
cl-format = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "cl-format";
|
||||
|
@ -3765,12 +3786,12 @@
|
|||
closql = callPackage ({ emacs, emacsql-sqlite, fetchFromGitLab, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "closql";
|
||||
version = "0.1.0";
|
||||
version = "0.2.0";
|
||||
src = fetchFromGitLab {
|
||||
owner = "tarsius";
|
||||
repo = "closql";
|
||||
rev = "a8b6b2beaa10528b2fd5ed9759136e3959529266";
|
||||
sha256 = "1p251vyh8fc6xzaf0v7yvf4wkrvcfjdb3qr88ll4xcb61gj3vi3a";
|
||||
rev = "8e4d0b3b31913a2362a45fcdaf05745dfc188b66";
|
||||
sha256 = "1189drdpzp05kafg5wfi556n2v6a957qs9xm3v9k2rsbgnyd2hgk";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/c97468a71910ba6709792c060c1fb714004e24da/recipes/closql";
|
||||
|
@ -3828,12 +3849,12 @@
|
|||
cmake-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "cmake-mode";
|
||||
version = "3.6.1";
|
||||
version = "3.6.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Kitware";
|
||||
repo = "CMake";
|
||||
rev = "f59513140bf086eda2029c5b4e950fc58216c06e";
|
||||
sha256 = "0x32brljg3rv4nsj75sngzbwkfp908xz0ypmvwm1rb47jgds6aqd";
|
||||
rev = "c5dcd31e92c0a09009a340e3fe23ced4f6190b64";
|
||||
sha256 = "0k40czfgxwdn4yavkl10ab5ls57mdr7smxjjld20mfrjnfbmv0fc";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/598723893ae4bc2e60f527a072efe6ed9d4e2488/recipes/cmake-mode";
|
||||
|
@ -4143,12 +4164,12 @@
|
|||
company-ansible = callPackage ({ company, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "company-ansible";
|
||||
version = "0.1.1";
|
||||
version = "0.2.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "krzysztof-magosa";
|
||||
repo = "company-ansible";
|
||||
rev = "b9b4b22bc8c109de3ae3a5bb4c6b2be89bd644db";
|
||||
sha256 = "1dds3fynbd6yb0874aw6g4qk5zmq3pgl3jmcp38md027qalgqmym";
|
||||
rev = "09065115bead0a14c134d4419944eed7e999284c";
|
||||
sha256 = "1vygalvg3hky0hacvj8pgjiaym91yh0npq69q4qi3slz87rpl24c";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/7b44cd4bd9f9a7c942ca3f3bd88b2ce61ffff130/recipes/company-ansible";
|
||||
|
@ -4632,12 +4653,12 @@
|
|||
composer = callPackage ({ emacs, f, fetchFromGitHub, fetchurl, lib, melpaBuild, request, s }:
|
||||
melpaBuild {
|
||||
pname = "composer";
|
||||
version = "0.0.5";
|
||||
version = "0.0.6";
|
||||
src = fetchFromGitHub {
|
||||
owner = "zonuexe";
|
||||
repo = "composer.el";
|
||||
rev = "3b5a9b7364136c8dd85b8b3c1323790c8c38c2a8";
|
||||
sha256 = "0zk1rbnh423r1rsml4lbwzkajkq7h3k6dan4cjqbyiw8pd12hq3m";
|
||||
rev = "d955d9dd39b3bd0ba04ade648108ddb805bac4bc";
|
||||
sha256 = "1yxywibs7zdhc4kgl372rl49r1ivl96adnapz2k58kggjybjk778";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/39c5002f0688397a51b1b0c6c15f6ac07c3681bc/recipes/composer";
|
||||
|
@ -7375,12 +7396,12 @@
|
|||
elm-mode = callPackage ({ emacs, f, fetchFromGitHub, fetchurl, let-alist, lib, melpaBuild, s }:
|
||||
melpaBuild {
|
||||
pname = "elm-mode";
|
||||
version = "0.17.0";
|
||||
version = "0.19.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "jcollard";
|
||||
repo = "elm-mode";
|
||||
rev = "3112ff7964b596022de94c12b4676c6ca7a69c80";
|
||||
sha256 = "1n6gp3c4b3ryprw7hxd7447gkgjafxnlbfg75mjm96vfgxkb7abx";
|
||||
rev = "7e0da96f483703930919f04943f60f6eca3cb842";
|
||||
sha256 = "1y0prk4dbw6h26kj2l5vl3bakvc58aawjpkpb2r8wgb2b3fg9vl3";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/5d1a4d786b137f61ed3a1dd4ec236d0db120e571/recipes/elm-mode";
|
||||
|
@ -8153,12 +8174,12 @@
|
|||
eopengrok = callPackage ({ cl-lib ? null, dash, fetchFromGitHub, fetchurl, lib, magit, melpaBuild, s }:
|
||||
melpaBuild {
|
||||
pname = "eopengrok";
|
||||
version = "0.3.0";
|
||||
version = "0.4.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "youngker";
|
||||
repo = "eopengrok.el";
|
||||
rev = "30154a083b2fd8cbb9336d0d2134f790efd4163b";
|
||||
sha256 = "1yn9jn6jl6rmknj50g18z5yvpa1d8mzzx3j1pfdwfn36ak4nc9ba";
|
||||
rev = "0bf07c636f8d29a98e9776243ec9496875ddff51";
|
||||
sha256 = "0pmawjfyihqygqz7y0nvyrs6jcvckqzkq9k6z6yanpvkd2x5g13x";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/2b87ea158a6fdbc6b4e40fd7c0f6814d135f8545/recipes/eopengrok";
|
||||
|
@ -8195,12 +8216,12 @@
|
|||
epkg = callPackage ({ closql, dash, emacs, fetchFromGitLab, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "epkg";
|
||||
version = "1.0.1";
|
||||
version = "1.0.2";
|
||||
src = fetchFromGitLab {
|
||||
owner = "tarsius";
|
||||
repo = "epkg";
|
||||
rev = "17553458c01563170be9c74db37bcc359a4702d4";
|
||||
sha256 = "18am0nc2kjxbnkls7dl9j47cynwiiafx8w6rqa4d9dyx7khl2rmp";
|
||||
rev = "b0606f9800c971085d5fef17dfe242aece378fb3";
|
||||
sha256 = "195y4clhs8lwbl3f5a9181v60n424s69nfzy9xrwzqclbyj42lr3";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/c97468a71910ba6709792c060c1fb714004e24da/recipes/epkg";
|
||||
|
@ -9137,12 +9158,12 @@
|
|||
evil-matchit = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "evil-matchit";
|
||||
version = "2.1.4";
|
||||
version = "2.1.5";
|
||||
src = fetchFromGitHub {
|
||||
owner = "redguardtoo";
|
||||
repo = "evil-matchit";
|
||||
rev = "de6ce21e1e24b7a0370ca3a6ce83b529f772c8db";
|
||||
sha256 = "0dhk8ajn5b0y4qla4jak76zxqgiai9fcd1hpfh98pmsjy1jq5ll4";
|
||||
rev = "b01763bf766a7449626e6216c2d360ae1e80e5c1";
|
||||
sha256 = "197ycwx02mjlvck5xraw2jwlsv3ham5jm2yv8133i4cq8dszcfaa";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/aeab4a998bffbc784e8fb23927d348540baf9951/recipes/evil-matchit";
|
||||
|
@ -11307,12 +11328,12 @@
|
|||
fountain-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "fountain-mode";
|
||||
version = "2.2.0";
|
||||
version = "2.2.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "rnkn";
|
||||
repo = "fountain-mode";
|
||||
rev = "cffb48cfc3973155d34651996257a901e6f5f8d0";
|
||||
sha256 = "1bzbjv15bz0zfsizgd8yr6gin225qnq8g2795r14q7al8f71slv7";
|
||||
rev = "a31c19e88f403a8ebb2e6a5d27eef39fca595ba4";
|
||||
sha256 = "1sxr79gcj2xkh8qfp0h4r6iqmhm27qkibsk8l78gi2n3790sbnxk";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/913386ac8d5049d37154da3ab32bde408a226511/recipes/fountain-mode";
|
||||
|
@ -11557,12 +11578,12 @@
|
|||
fzf = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "fzf";
|
||||
version = "0.1";
|
||||
version = "0.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bling";
|
||||
repo = "fzf.el";
|
||||
rev = "bfc157a682b53927af633fd919c2e03235ea6599";
|
||||
sha256 = "0rjn4z7ssl1jy0brvsci44mhpig3zkdbcj8gcylzznhz0qfk1ljj";
|
||||
rev = "383a050920e9b99d37c21d041deb7f38b202485c";
|
||||
sha256 = "14drm6b6rxbcdilcms1jlqyrqbipcqbdil6q06ni9pgafi7xp8hz";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/1671e17c99ef1932c6a2e83fc4fa2e4eb6674bc8/recipes/fzf";
|
||||
|
@ -11977,12 +11998,12 @@
|
|||
git-gutter = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "git-gutter";
|
||||
version = "0.89";
|
||||
version = "0.90";
|
||||
src = fetchFromGitHub {
|
||||
owner = "syohex";
|
||||
repo = "emacs-git-gutter";
|
||||
rev = "02f67e207f0653077c06ddc8502c6a0cd28de260";
|
||||
sha256 = "04qkznd85f9msrgpwsfswbfi5nzvpy4mk5mcmv2cvbq68grs4c40";
|
||||
rev = "a786465bd527c13e32c73c02b95086560c1be878";
|
||||
sha256 = "1abagq0psip7cgsqbfjv72qy60ywsny0ibsfcn74ldj6a9v17mz5";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/81f0f525680fea98e804f39dbde1dada887e8821/recipes/git-gutter";
|
||||
|
@ -12352,22 +12373,22 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
glab = callPackage ({ fetchFromGitLab, fetchurl, lib, melpaBuild }:
|
||||
glab = callPackage ({ emacs, fetchFromGitLab, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "glab";
|
||||
version = "1.1.0";
|
||||
version = "1.1.1";
|
||||
src = fetchFromGitLab {
|
||||
owner = "tarsius";
|
||||
repo = "glab";
|
||||
rev = "7c022e55ec5d50f9f5b656b17823f7e165f2d056";
|
||||
sha256 = "0qmnz4zd6z0nhxxmwgk16mppf7i86na7c3nyc47jfw7xl63s98pk";
|
||||
rev = "5ced0214622450930bcea105b9aac785c594609d";
|
||||
sha256 = "100lz4dqn9ggvlvdrp909cy44br9hnlaa62pj0kp1vdqqxfxwfyn";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/9375cbae3ffe5bf4ba5606358860050f3005d9b7/recipes/glab";
|
||||
sha256 = "0z34kzly39mdqsyqpi3n5m3189g0d7lsvk2ksmh46zdziak715di";
|
||||
name = "glab";
|
||||
};
|
||||
packageRequires = [];
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/glab";
|
||||
license = lib.licenses.free;
|
||||
|
@ -12772,27 +12793,6 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
goose-theme = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "goose-theme";
|
||||
version = "1.0.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "thwg";
|
||||
repo = "goose-theme";
|
||||
rev = "52244bd5ee3e7b42599d9697007a5df3b026aafc";
|
||||
sha256 = "1d1x5ffpn9gq9byd0qavxr081sl3qf0lihdxfdqvhwd815kravxk";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/5fa2ce32adbccdbc3f1b642585b430202e7ae274/recipes/goose-theme";
|
||||
sha256 = "18kfz61mhf8pvp3z5cdvjklla9p840p1dazylrgjb1g5hdwqw0n9";
|
||||
name = "goose-theme";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/goose-theme";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
gotest = callPackage ({ emacs, f, fetchFromGitHub, fetchurl, go-mode, lib, melpaBuild, s }:
|
||||
melpaBuild {
|
||||
pname = "gotest";
|
||||
|
@ -13477,12 +13477,12 @@
|
|||
haskell-emacs = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "haskell-emacs";
|
||||
version = "4.0.2";
|
||||
version = "4.0.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "knupfer";
|
||||
repo = "haskell-emacs";
|
||||
rev = "7b840af4af0b03cbf8dad1b8ac6ca1dcd4b5ccd9";
|
||||
sha256 = "1d2b35qmsx3ayq8b6rh08dkmx2845nhswqqwpzg81zsna6d607mh";
|
||||
rev = "a2c6a079175904689eed7c6c200754bfa85d1ed9";
|
||||
sha256 = "1xpaqcj33vyzs5yv2w4dahw8a2vb6zcb3z7y2aqc5jdg3fx9ypam";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/5daff329a96a6d10bca11d838bbc95d1c8bcfbd9/recipes/haskell-emacs";
|
||||
|
@ -13498,12 +13498,12 @@
|
|||
haskell-emacs-base = callPackage ({ fetchFromGitHub, fetchurl, haskell-emacs, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "haskell-emacs-base";
|
||||
version = "4.0.2";
|
||||
version = "4.0.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "knupfer";
|
||||
repo = "haskell-emacs";
|
||||
rev = "7b840af4af0b03cbf8dad1b8ac6ca1dcd4b5ccd9";
|
||||
sha256 = "1d2b35qmsx3ayq8b6rh08dkmx2845nhswqqwpzg81zsna6d607mh";
|
||||
rev = "a2c6a079175904689eed7c6c200754bfa85d1ed9";
|
||||
sha256 = "1xpaqcj33vyzs5yv2w4dahw8a2vb6zcb3z7y2aqc5jdg3fx9ypam";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/5daff329a96a6d10bca11d838bbc95d1c8bcfbd9/recipes/haskell-emacs-base";
|
||||
|
@ -13519,12 +13519,12 @@
|
|||
haskell-emacs-text = callPackage ({ fetchFromGitHub, fetchurl, haskell-emacs, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "haskell-emacs-text";
|
||||
version = "4.0.2";
|
||||
version = "4.0.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "knupfer";
|
||||
repo = "haskell-emacs";
|
||||
rev = "7b840af4af0b03cbf8dad1b8ac6ca1dcd4b5ccd9";
|
||||
sha256 = "1d2b35qmsx3ayq8b6rh08dkmx2845nhswqqwpzg81zsna6d607mh";
|
||||
rev = "a2c6a079175904689eed7c6c200754bfa85d1ed9";
|
||||
sha256 = "1xpaqcj33vyzs5yv2w4dahw8a2vb6zcb3z7y2aqc5jdg3fx9ypam";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/5daff329a96a6d10bca11d838bbc95d1c8bcfbd9/recipes/haskell-emacs-text";
|
||||
|
@ -13665,16 +13665,16 @@
|
|||
helm = callPackage ({ async, emacs, fetchFromGitHub, fetchurl, helm-core, lib, melpaBuild, popup }:
|
||||
melpaBuild {
|
||||
pname = "helm";
|
||||
version = "2.0";
|
||||
version = "2.1.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "emacs-helm";
|
||||
repo = "helm";
|
||||
rev = "557786d0443791d5d0ccfbdc1dcc86004e31d218";
|
||||
sha256 = "0xk0hw08b335j3w2frxa61bg3521zjrjv35bw5qcd1z6b0n8gwks";
|
||||
rev = "7a7c9d990e924b9ac0e845afa4e539122f034e31";
|
||||
sha256 = "0rpjz3z5ainpxkdmdwpmb1an23qwvfyfjsfscw5kw7k915wak0kq";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/90ab37af6b0c85eac11c423bc8f0d93d6d8a9fd4/recipes/helm";
|
||||
sha256 = "0xsf4rg7kn0m5wjlbwhd1mc38lg2822037dyd0h66h6x2gbs3fd9";
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/7e8bccffdf69479892d76b9336a4bec3f35e919d/recipes/helm";
|
||||
sha256 = "03la01d0syikjgsjq0krlp3p894djwfxqfmd2srddwks7ish6xjf";
|
||||
name = "helm";
|
||||
};
|
||||
packageRequires = [ async emacs helm-core popup ];
|
||||
|
@ -13875,12 +13875,12 @@
|
|||
helm-core = callPackage ({ async, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "helm-core";
|
||||
version = "2.0";
|
||||
version = "2.1.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "emacs-helm";
|
||||
repo = "helm";
|
||||
rev = "557786d0443791d5d0ccfbdc1dcc86004e31d218";
|
||||
sha256 = "0xk0hw08b335j3w2frxa61bg3521zjrjv35bw5qcd1z6b0n8gwks";
|
||||
rev = "7a7c9d990e924b9ac0e845afa4e539122f034e31";
|
||||
sha256 = "0rpjz3z5ainpxkdmdwpmb1an23qwvfyfjsfscw5kw7k915wak0kq";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/ef7a700c5665e6d72cb4cecf7fb5a2dd43ef9bf7/recipes/helm-core";
|
||||
|
@ -15051,12 +15051,12 @@
|
|||
hindent = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "hindent";
|
||||
version = "5.2.0";
|
||||
version = "5.2.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "chrisdone";
|
||||
repo = "hindent";
|
||||
rev = "7d883bfa80dcb6fd2bf6c559cc8250fe0c4f80d7";
|
||||
sha256 = "1dil3lspcidvdq99h7an7n6mvylwmf8s4xmaqbpdbc4rwiijjhkl";
|
||||
rev = "5de979e1e001608c9fe73d552c4e29110957bbb8";
|
||||
sha256 = "1qaklfhf92zibj2wrpiyjqrzba7j00iqzb46nd7p64wyqqhh7ncp";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/dbae71a47446095f768be35e689025aed57f462f/recipes/hindent";
|
||||
|
@ -17400,12 +17400,12 @@
|
|||
keymap-utils = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "keymap-utils";
|
||||
version = "1.0.0";
|
||||
version = "2.0.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tarsius";
|
||||
repo = "keymap-utils";
|
||||
rev = "34e28d4c88ad9c71aee3dd226817c6eb6927b2c7";
|
||||
sha256 = "17bfxn1bl2by3vnp24hnk6qjxx6av1fayrsw9hlldwhgp4ayhy48";
|
||||
rev = "14c86914b708081299cf6a290570ff8e11853cab";
|
||||
sha256 = "15zsx296cqzmwivrkkknr8lmdsr6dkggxbwp2yggr20278vsvbhv";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/c03acebf1462dea36c81d4b9ab41e2e5739be3c3/recipes/keymap-utils";
|
||||
|
@ -17736,12 +17736,12 @@
|
|||
leanote = callPackage ({ async, cl-lib ? null, emacs, fetchFromGitHub, fetchurl, let-alist, lib, melpaBuild, pcache, request, s }:
|
||||
melpaBuild {
|
||||
pname = "leanote";
|
||||
version = "0.3.6";
|
||||
version = "0.4.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "aborn";
|
||||
repo = "leanote-emacs";
|
||||
rev = "60368f2629ec4eac97c2a9d1ad043efd84454925";
|
||||
sha256 = "01y4ilrjhf7y3a1r514ahxpa7cl1w5xdj01lxal2a3bhxbkzcvrp";
|
||||
rev = "1bd49fdf13ef707bae7edaa724a1592aa7fb002f";
|
||||
sha256 = "1k58rhk5p819cvfa6zg7j3ysvzhq6dc433fzhh1ff0gwga2vrqbz";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/b00b806ae4562ca5a74f41c12ef35bfa597bcfa8/recipes/leanote";
|
||||
|
@ -20416,12 +20416,12 @@
|
|||
nix-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "nix-mode";
|
||||
version = "1.11.3";
|
||||
version = "1.11.4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "NixOS";
|
||||
repo = "nix";
|
||||
rev = "2ac966a464a830f52a9101c0a9d65f6a95cbfa0e";
|
||||
sha256 = "003lxk19z8wq0i6ah7xf14cgqgxww50337vgp66gi3kc0lscfdbf";
|
||||
rev = "fb577a431f5ef1a29fdf3b818dceb4f6b4e8fa52";
|
||||
sha256 = "1vzs5y0ib9bqvcyap7f6v75pf8z0xpdwgq554zxci4dlwp68fp2p";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/f2b542189cfde5b9b1ebee4625684949b6704ded/recipes/nix-mode";
|
||||
|
@ -20458,12 +20458,12 @@
|
|||
no-littering = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "no-littering";
|
||||
version = "0.3.0";
|
||||
version = "0.4.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tarsius";
|
||||
repo = "no-littering";
|
||||
rev = "6e4c239f58645d6cee3ed4aa180ae484f677a7ab";
|
||||
sha256 = "1j5agcq56mphpbpxdaklvl1y2689sfny4l6wknvrwxnqyl48yzkb";
|
||||
rev = "537e584d115fb056a23a0b055e0a28f543182c45";
|
||||
sha256 = "1cma5047c3486bjfshb612iq6j3yml0c02gqy8d0ms9507r60igq";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/cf5d2152c91b7c5c38181b551db3287981657ce3/recipes/no-littering";
|
||||
|
@ -20958,12 +20958,12 @@
|
|||
olivetti = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "olivetti";
|
||||
version = "1.5.2";
|
||||
version = "1.5.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "rnkn";
|
||||
repo = "olivetti";
|
||||
rev = "d2c54acf566a9ee38021261f7d8f43a94c9eee8c";
|
||||
sha256 = "1rh6vi2vi50zkmcd5jyfnhhsdrfn6l9abd43l8ppgr3k93l3m5bl";
|
||||
rev = "1553934954ea47e4d2de676c42324ed4790cfd14";
|
||||
sha256 = "1n978yv19bsy5876lnp16xs1qg1frdbicf9c9h2rvil5myrljhyj";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/697334ca3cdb9630572ae267811bd5c2a67d2a95/recipes/olivetti";
|
||||
|
@ -21450,12 +21450,12 @@
|
|||
org-journal = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "org-journal";
|
||||
version = "1.11.1";
|
||||
version = "1.11.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bastibe";
|
||||
repo = "org-journal";
|
||||
rev = "51aec969cc0dc8e0c81220f020d643861d2f5c9b";
|
||||
sha256 = "0j3z2imv5w6cndnxdyy0pf9la6qxbgwdwr7vr8mr47frqpjb4i63";
|
||||
rev = "5f1445e9bafa252c8708b3bc223f30032f5ae82b";
|
||||
sha256 = "0aip4krrl5cyaa2agmmzipqw139zar3j6594vba93axalfdx9i9z";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/7fabdb05de9b8ec18a3a566f99688b50443b6b44/recipes/org-journal";
|
||||
|
@ -22621,12 +22621,12 @@
|
|||
pandoc-mode = callPackage ({ dash, fetchFromGitHub, fetchurl, hydra, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "pandoc-mode";
|
||||
version = "2.18";
|
||||
version = "2.19";
|
||||
src = fetchFromGitHub {
|
||||
owner = "joostkremers";
|
||||
repo = "pandoc-mode";
|
||||
rev = "e641d91c2886800871769e8e0e6554d2f8001e79";
|
||||
sha256 = "1lv3iiwidlvr6jsldd2s9apir1jzpynii8vp58gxq9kxbm4rzb42";
|
||||
rev = "4a8173071bb67d1e12640abcd6b45c37ba882cd2";
|
||||
sha256 = "1pzk6bhr65p7asw28lk4g85vv9rdfa1aqrxcgppjvc0xmvqvrgv0";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/4e39cd8e8b4f61c04fa967def6a653bb22f45f5b/recipes/pandoc-mode";
|
||||
|
@ -23331,7 +23331,7 @@
|
|||
phpunit = callPackage ({ cl-lib ? null, emacs, f, fetchFromGitHub, fetchurl, lib, melpaBuild, pkg-info, s }:
|
||||
melpaBuild {
|
||||
pname = "phpunit";
|
||||
version = "0.12.0";
|
||||
version = "0.13.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "nlamirault";
|
||||
repo = "phpunit.el";
|
||||
|
@ -23496,6 +23496,27 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
plain-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "plain-theme";
|
||||
version = "1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "yegortimoshenko";
|
||||
repo = "plain-theme";
|
||||
rev = "4210122812df9b5fe375ad35a3b933bf040460a3";
|
||||
sha256 = "184rw6pri55mkab8wv2n483zp0cvd6j911abq290pcqw1pgswcgh";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/d7ad3737f081f101500317f7e183be6b1e7e8122/recipes/plain-theme";
|
||||
sha256 = "0igncivhnzzirglmz451czx69cwshjkigqvqddj0a77b1cwszfw8";
|
||||
name = "plain-theme";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/plain-theme";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
platformio-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild, projectile }:
|
||||
melpaBuild {
|
||||
pname = "platformio-mode";
|
||||
|
@ -24063,12 +24084,12 @@
|
|||
projectile-rails = callPackage ({ emacs, f, fetchFromGitHub, fetchurl, inf-ruby, inflections, lib, melpaBuild, projectile, rake }:
|
||||
melpaBuild {
|
||||
pname = "projectile-rails";
|
||||
version = "0.10.1";
|
||||
version = "0.10.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "asok";
|
||||
repo = "projectile-rails";
|
||||
rev = "9a8a4641be1f2eae7f6f42d13db24c10bfa0c974";
|
||||
sha256 = "0v5mm9v4wd3yfnlx7zbb48lsxz7fyv4vcdszdpr5nswynmihxfi5";
|
||||
rev = "70ec237ce49172ccc4daa536505749e3d4701469";
|
||||
sha256 = "0jvj0lxy7mhkv8ql472zz6wyrmh72cw1z9n1200z5g8p4n7jfjsj";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/b16532bb8d08f7385bca4b83ab4e030d7b453524/recipes/projectile-rails";
|
||||
|
@ -24168,12 +24189,12 @@
|
|||
protobuf-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "protobuf-mode";
|
||||
version = "3.0.0";
|
||||
version = "3.0.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "google";
|
||||
repo = "protobuf";
|
||||
rev = "e8ae137c96444ea313485ed1118c5e43b2099cf1";
|
||||
sha256 = "05qkcl96lkdama848m7q3nzzzdckjc158iiyvgmln0zi232xx7g7";
|
||||
rev = "1a586735085e817b1f52e53feec92ce418049f69";
|
||||
sha256 = "16wmr1fgdqpf84fkq90cxvccfsxx7h0q0wzqkbg8vdjmka412g09";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/b4e7f5f641251e17add561991d3bcf1fde23467b/recipes/protobuf-mode";
|
||||
|
@ -24942,6 +24963,27 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
rc-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "rc-mode";
|
||||
version = "1.0.6";
|
||||
src = fetchFromGitHub {
|
||||
owner = "mrhmouse";
|
||||
repo = "rc-mode.el";
|
||||
rev = "b9b48e24a55083e4911f2b497ed4d9676a192e88";
|
||||
sha256 = "06ln916fim58q44g67zlnsipfxcramyrqbm9adh52mdbk44j4bf9";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/d8062b2e5b2744a6e614b389cca7e7f21b582f6f/recipes/rc-mode";
|
||||
sha256 = "0p77mckw8jyxcwspj1ffm8mz0k01ddm67hh9j8rw812wddwnj7qf";
|
||||
name = "rc-mode";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/rc-mode";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
rcirc-styles = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "rcirc-styles";
|
||||
|
@ -25999,8 +26041,8 @@
|
|||
src = fetchFromGitHub {
|
||||
owner = "ensime";
|
||||
repo = "emacs-scala-mode";
|
||||
rev = "a0b73b25377f5aedf50abe198d6b6111310735be";
|
||||
sha256 = "0b2gm1mfxiqm86m5156scmzvn10dl0idgxpzgki1k0cpy4xf4qfa";
|
||||
rev = "387e93c70a3703e55f717d3285912ad12cfee947";
|
||||
sha256 = "0xwwarla3m9cr1mpnlhsknfvxw1xyf85cxjkzg42q12k7i0yad5w";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/564aa1637485192a97803af46b3a1f8e0d042c9a/recipes/scala-mode";
|
||||
|
@ -27570,12 +27612,12 @@
|
|||
sqlup-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "sqlup-mode";
|
||||
version = "0.6.1";
|
||||
version = "0.7.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Trevoke";
|
||||
repo = "sqlup-mode.el";
|
||||
rev = "6140e23a2902616da5894dc676b47a8748faf016";
|
||||
sha256 = "0dczcmibvr9m5isn9isgl01q9x97yfdcs21qa57ds2b3nmqaqy4p";
|
||||
rev = "4bf563b0b95f5a1e627e55d52d1c2fd0dd3af95f";
|
||||
sha256 = "0hxkkpylnf5phavcd2y3bxzikcnr7cdk3rbqgp3nw74sxz0223w2";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/7fabdb05de9b8ec18a3a566f99688b50443b6b44/recipes/sqlup-mode";
|
||||
|
@ -30698,12 +30740,12 @@
|
|||
with-editor = callPackage ({ async, dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "with-editor";
|
||||
version = "2.5.2";
|
||||
version = "2.5.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "magit";
|
||||
repo = "with-editor";
|
||||
rev = "4929d430266925c1145adef9987e2acdb829395b";
|
||||
sha256 = "12613xwd05l26p2v9jxjxcqf4v20j6fq5wpmnj45spg0ngalwzg4";
|
||||
rev = "6f41998405796336575b1fce49b84667feaa9b9f";
|
||||
sha256 = "12bw86l8756rwfgnik0kywqafw8idv8ncdxlbaybix70r2iaa61y";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/8c52c840dc35f3fd17ec660e113ddbb53aa99076/recipes/with-editor";
|
||||
|
|
|
@ -35,10 +35,6 @@ self:
|
|||
});
|
||||
|
||||
overrides = {
|
||||
ac-php = super.ac-php.override {
|
||||
inherit (self.melpaPackages) company popup;
|
||||
};
|
||||
|
||||
# upstream issue: mismatched filename
|
||||
ack-menu = markBroken super.ack-menu;
|
||||
|
||||
|
@ -95,6 +91,9 @@ self:
|
|||
# upstream issue: missing file header
|
||||
initsplit = markBroken super.initsplit;
|
||||
|
||||
# upstream issue: missing dependency
|
||||
jade = null;
|
||||
|
||||
# upstream issue: missing file header
|
||||
jsfmt = markBroken super.jsfmt;
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
{ callPackage }: {
|
||||
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "org";
|
||||
version = "20160725";
|
||||
version = "20160905";
|
||||
src = fetchurl {
|
||||
url = "http://orgmode.org/elpa/org-20160725.tar";
|
||||
sha256 = "1d2v6w93z543jnmz6a1kmp61rmznjnw6pvd9ia2pm42rzhsgydy5";
|
||||
url = "http://orgmode.org/elpa/org-20160905.tar";
|
||||
sha256 = "01zm7s5qbh1xvxddd93i6cmz3m7x2s67zwzah5q5l3hgnvbx750q";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -14,10 +14,10 @@
|
|||
}) {};
|
||||
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "org-plus-contrib";
|
||||
version = "20160725";
|
||||
version = "20160905";
|
||||
src = fetchurl {
|
||||
url = "http://orgmode.org/elpa/org-plus-contrib-20160725.tar";
|
||||
sha256 = "0bxxbcln7npffvd947052sjp59ypxdfwkp2ja7mbs28pzzb25xxi";
|
||||
url = "http://orgmode.org/elpa/org-plus-contrib-20160905.tar";
|
||||
sha256 = "1wx51iqg1cfrf220yslp2lq9s7klbv6bbxq0d2ygj47yjikkf39r";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
|
|
@ -5,8 +5,8 @@ stdenv.mkDerivation (rec {
|
|||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/ProofGeneral/PG.git";
|
||||
rev = "16991280fb09743ae7320aef77f6a166afb907d7";
|
||||
sha256 = "1yakjxfz6a09m7lrxff04sj1717gpmhq2bsibd5f9lkp6z0w2i0q";
|
||||
rev = "64ca55b1593fff8cfffab89c51d7e92c1a68dc27";
|
||||
sha256 = "1gz13fagxf0w2zgp7qd0w328qiv97295jwq7ra8vj61pdfi8xklj";
|
||||
};
|
||||
|
||||
buildInputs = [ emacs texinfo perl which ] ++ stdenv.lib.optional enableDoc texLive;
|
||||
|
|
|
@ -119,6 +119,18 @@ in
|
|||
|
||||
{
|
||||
clion = buildClion rec {
|
||||
name = "clion-${version}";
|
||||
version = "2016.2.2";
|
||||
description = "C/C++ IDE. New. Intelligent. Cross-platform";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
|
||||
sha256 = "06aq3lfccki9203gjvibzj3gn9d82pc6s5z0m3fnf049zxk58ndi";
|
||||
};
|
||||
wmClass = "jetbrains-clion";
|
||||
};
|
||||
|
||||
clion1 = buildClion rec {
|
||||
name = "clion-${version}";
|
||||
version = "1.2.5";
|
||||
description = "C/C++ IDE. New. Intelligent. Cross-platform";
|
||||
|
@ -144,12 +156,12 @@ in
|
|||
|
||||
idea-community = buildIdea rec {
|
||||
name = "idea-community-${version}";
|
||||
version = "2016.2";
|
||||
version = "2016.2.3";
|
||||
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
|
||||
license = stdenv.lib.licenses.asl20;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
|
||||
sha256 = "164x4l0q31zpc1jh3js1xx9y6afrzsshmnkx1mwhmq8qmvzc4w32";
|
||||
sha256 = "014fddfxzc8nwhp1nz8mb9p7zwk73azvlgmzy2jd9ypfwi3dwgrs";
|
||||
};
|
||||
wmClass = "jetbrains-idea-ce";
|
||||
};
|
||||
|
@ -180,17 +192,29 @@ in
|
|||
|
||||
idea-ultimate = buildIdea rec {
|
||||
name = "idea-ultimate-${version}";
|
||||
version = "2016.2.2";
|
||||
version = "2016.2.3";
|
||||
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz";
|
||||
sha256 = "1z5kr47n3hhx0ck163193lwlh76sykgchnq9hw1ihi25n6655j1z";
|
||||
sha256 = "1y8y3kav4icpsb85p5csag6f16jqg4gnvagsl5k1c793ccbl63yk";
|
||||
};
|
||||
wmClass = "jetbrains-idea";
|
||||
};
|
||||
|
||||
ruby-mine = buildRubyMine rec {
|
||||
name = "ruby-mine-${version}";
|
||||
version = "2016.2.2";
|
||||
description = "The Most Intelligent Ruby and Rails IDE";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
|
||||
sha256 = "1ck4axjbrvq2n1j2rvf9a2f7dqvalg2b8sqy9n9qkzdn04szaqsl";
|
||||
};
|
||||
wmClass = "jetbrains-rubymine";
|
||||
};
|
||||
|
||||
ruby-mine7 = buildRubyMine rec {
|
||||
name = "ruby-mine-${version}";
|
||||
version = "7.1.5";
|
||||
description = "The Most Intelligent Ruby and Rails IDE";
|
||||
|
@ -202,31 +226,55 @@ in
|
|||
wmClass = "jetbrains-rubymine";
|
||||
};
|
||||
|
||||
ruby-mine8 = buildRubyMine rec {
|
||||
name = "ruby-mine-${version}";
|
||||
version = "8.0.4";
|
||||
description = "The Most Intelligent Ruby and Rails IDE";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
|
||||
sha256 = "0hipxib7377232w1jbf8h98bmh0djkllsrq3lq0w3fdxqglma43a";
|
||||
};
|
||||
wmClass = "jetbrains-rubymine";
|
||||
};
|
||||
|
||||
pycharm-community = buildPycharm rec {
|
||||
name = "pycharm-community-${version}";
|
||||
version = "2016.1.3";
|
||||
version = "2016.2.2";
|
||||
description = "PyCharm Community Edition";
|
||||
license = stdenv.lib.licenses.asl20;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
||||
sha256 = "1ks7crrfnhzkdxban2hh2pnr986vqwmac5zybmb1ighcyamhdi4q";
|
||||
sha256 = "1v6vy4xh0n8wdjc25clxg57z7ria11x1zdba4j1hjs2z6l80kxbb";
|
||||
};
|
||||
wmClass = "jetbrains-pycharm-ce";
|
||||
};
|
||||
|
||||
pycharm-professional = buildPycharm rec {
|
||||
name = "pycharm-professional-${version}";
|
||||
version = "2016.1.3";
|
||||
version = "2016.2.2";
|
||||
description = "PyCharm Professional Edition";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
||||
sha256 = "1rn0i5qbvfjbl4v571ngmyslispibcq5ab0fb7xjl38vr1y417f2";
|
||||
sha256 = "08x2x6lhr9100lmw1dq8rkz4mlyj4avcj2hpbd5qqybx9j4g6g44";
|
||||
};
|
||||
wmClass = "jetbrains-pycharm";
|
||||
};
|
||||
|
||||
phpstorm = buildPhpStorm rec {
|
||||
name = "phpstorm-${version}";
|
||||
version = "2016.2.1";
|
||||
description = "Professional IDE for Web and PHP developers";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
|
||||
sha256 = "0vgr0ds6z0y8qw2v55nr3pi5zb5x0n6pxm13hcp44iradns5kmbp";
|
||||
};
|
||||
wmClass = "jetbrains-phpstorm";
|
||||
};
|
||||
|
||||
phpstorm10 = buildPhpStorm rec {
|
||||
name = "phpstorm-${version}";
|
||||
version = "10.0.4";
|
||||
description = "Professional IDE for Web and PHP developers";
|
||||
|
@ -239,6 +287,18 @@ in
|
|||
};
|
||||
|
||||
webstorm = buildWebStorm rec {
|
||||
name = "webstorm-${version}";
|
||||
version = "2016.2.2";
|
||||
description = "Professional IDE for Web and JavaScript development";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
|
||||
sha256 = "0n2fvhjasklshyfcbwwn6wahzld8x65bid08245awdqv33p87bq6";
|
||||
};
|
||||
wmClass = "jetbrains-webstorm";
|
||||
};
|
||||
|
||||
webstorm10 = buildWebStorm rec {
|
||||
name = "webstorm-${version}";
|
||||
version = "10.0.5";
|
||||
description = "Professional IDE for Web and JavaScript development";
|
||||
|
@ -250,4 +310,15 @@ in
|
|||
wmClass = "jetbrains-webstorm";
|
||||
};
|
||||
|
||||
webstorm11 = buildWebStorm rec {
|
||||
name = "webstorm-${version}";
|
||||
version = "11.0.4";
|
||||
description = "Professional IDE for Web and JavaScript development";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
|
||||
sha256 = "17agyqdyz6naxyx6p0y240ar93gja0ypw01nm2qmfzvh7ch03r24";
|
||||
};
|
||||
wmClass = "jetbrains-webstorm";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{ stdenv, fetchurl, buildEnv, zlib, glib, alsaLib, makeDesktopItem
|
||||
, dbus, gtk, atk, pango, freetype, fontconfig, libgnome_keyring3, gdk_pixbuf
|
||||
, cairo, cups, expat, libgpgerror, nspr, gnome3, nss, xorg, libudev, libnotify
|
||||
, cairo, cups, expat, libgpgerror, nspr, gnome3, nss, xorg, systemd, libnotify
|
||||
}:
|
||||
|
||||
let
|
||||
|
@ -45,9 +45,9 @@ stdenv.mkDerivation rec {
|
|||
|
||||
mv $out/share/LightTable/light $out/bin/light
|
||||
|
||||
ln -sf ${libudev.out}/lib/libudev.so.1 $out/share/LightTable/libudev.so.0
|
||||
ln -sf ${systemd.lib}/lib/libudev.so.1 $out/share/LightTable/libudev.so.0
|
||||
substituteInPlace $out/bin/light \
|
||||
--replace "/usr/lib/x86_64-linux-gnu" "${libudev.out}/lib" \
|
||||
--replace "/usr/lib/x86_64-linux-gnu" "${systemd.lib}/lib" \
|
||||
--replace "/lib/x86_64-linux-gnu" "$out/share/LightTable" \
|
||||
--replace 'HERE=`dirname $(readlink -f $0)`' "HERE=$out/share/LightTable"
|
||||
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
{ stdenv, makeWrapper, fetchurl, xlibsWrapper, imlib2, libjpeg, libpng
|
||||
, libXinerama, curl, libexif, perlPackages }:
|
||||
{ stdenv, fetchurl, makeWrapper, xorg, imlib2, libjpeg, libpng
|
||||
, curl, libexif, perlPackages }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "feh-2.16.1";
|
||||
name = "feh-2.17.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://feh.finalrewind.org/${name}.tar.bz2";
|
||||
sha256 = "1cxnc8dxyl7s4qnkvdjaqx7gdvc6brxpq0qbg91mljg47fd2hmbf";
|
||||
sha256 = "0lyq17kkmjxj3vxpmri56linr1bnfmx5568pgrcjgd3amnj1is59";
|
||||
};
|
||||
|
||||
outputs = [ "out" "doc" ];
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [ xlibsWrapper imlib2 libjpeg libpng libXinerama curl libexif ]
|
||||
nativeBuildInputs = [ makeWrapper xorg.libXt ]
|
||||
++ stdenv.lib.optional doCheck [ perlPackages.TestCommand perlPackages.TestHarness ];
|
||||
|
||||
buildInputs = [ xorg.libX11 xorg.libXinerama imlib2 libjpeg libpng curl libexif ];
|
||||
|
||||
preBuild = ''
|
||||
makeFlags="PREFIX=$out exif=1"
|
||||
'';
|
||||
|
|
|
@ -10,7 +10,7 @@ stdenv.mkDerivation {
|
|||
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/gqview/gqview-2.1.5.tar.gz;
|
||||
md5 = "4644187d9b14b1dc11ac3bb146f262ea";
|
||||
sha256 = "0ilm5s7ps9kg4f5hzgjhg0xhn6zg0v9i7jnd67zrx9h7wsaa9zhj";
|
||||
};
|
||||
|
||||
buildInputs = [pkgconfig gtk libpng];
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
, libjpeg, libpng, libtiff, libxml2, zlib, libtool, xz
|
||||
, libX11, libwebp, quantumdepth ? 8}:
|
||||
|
||||
let version = "1.3.24"; in
|
||||
let version = "1.3.25"; in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "graphicsmagick-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/graphicsmagick/GraphicsMagick-${version}.tar.xz";
|
||||
sha256 = "1q40w5hcl8rcpszm0r7rpr3a9lj390p39zfvavkvlgxyyk7bmgsj";
|
||||
sha256 = "17xcc7pfcmiwpfr1g8ys5a7bdnvqzka53vg3kkzhwwz0s99gljyn";
|
||||
};
|
||||
|
||||
patches = [ ./disable-popen.patch ];
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
{ stdenv, fetchurl, unzip, ftgl, glew, asciidoc
|
||||
{ stdenv, fetchFromGitHub, unzip, ftgl, glew, asciidoc
|
||||
, cmake, mesa, zlib, python, expat, libxml2, libsigcxx, libuuid, freetype
|
||||
, libpng, boost, doxygen, cairomm, pkgconfig, imagemagick, libjpeg, libtiff
|
||||
, gettext, intltool, perl, gtkmm, glibmm, gtkglext, pangox_compat, libXmu }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.8.0.3";
|
||||
version = "0.8.0.5";
|
||||
name = "k3d-${version}";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/K-3D/k3d/archive/${name}.zip";
|
||||
sha256 = "09ywwvlk8hh1357pnal96kc40ma4jq7776hqk0609rgz13s6babp";
|
||||
src = fetchFromGitHub {
|
||||
owner = "K-3D";
|
||||
repo = "k3d";
|
||||
rev = name;
|
||||
sha256 = "0q05d51vhnmrq887n15frpwkhx8w7n20h2sc1lpr338jzpryihb3";
|
||||
};
|
||||
|
||||
cmakeFlags = "-DK3D_BUILD_DOCS=false -DK3D_BUILD_GUIDE=false";
|
||||
|
|
|
@ -61,7 +61,7 @@ let
|
|||
inherit version;
|
||||
src = fetchurl {
|
||||
url = "http://www.hackenberger.at/ktikz/ktikz_${version}.tar.gz";
|
||||
md5 = "e8f0826cba2447250bcdcd389a71a2ac";
|
||||
sha256 = "19jl49r7dw3vb3hg52man8p2lszh71pvnx7d0xawyyi0x6r8ml9i";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
|
|
@ -4,8 +4,8 @@ stdenv.mkDerivation rec {
|
|||
name = "sane-frontends-1.0.14";
|
||||
|
||||
src = fetchurl {
|
||||
url = "ftp://ftp.sane-project.org/pub/sane/sane-frontends-1.0.14/${name}.tar.gz";
|
||||
md5 = "c63bf7b0bb5f530cf3c08715db721cd3";
|
||||
url = "https://alioth.debian.org/frs/download.php/file/1140/${name}.tar.gz";
|
||||
sha256 = "1ad4zr7rcxpda8yzvfkq1rfjgx9nl6lan5a628wvpdbh3fn9v0z7";
|
||||
};
|
||||
|
||||
preConfigure = ''
|
||||
|
|
|
@ -1,29 +1,50 @@
|
|||
{ stdenv, fetchurl, python, pyqt5, sip, poppler_utils, pkgconfig, libpng
|
||||
{ stdenv, fetchurl, fetchpatch, python, pyqt5, sip, poppler_utils, pkgconfig, libpng
|
||||
, imagemagick, libjpeg, fontconfig, podofo, qtbase, qmakeHook, icu, sqlite
|
||||
, makeWrapper, unrarSupport ? false, chmlib, pythonPackages, xz, libusb1, libmtp
|
||||
, xdg_utils, makeDesktopItem
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2.64.0";
|
||||
version = "2.66.0";
|
||||
name = "calibre-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.calibre-ebook.com/${version}/${name}.tar.xz";
|
||||
sha256 = "0jjbkhd3n7rh5q6cl6yy51hyjbxmgm6xj7i2a1d3h2ggrip1zmr9";
|
||||
sha256 = "1dbv6p9cq9zj51zvhfy2b7aic2zqa44lmfmq7k7fkqcgb6wmanic";
|
||||
};
|
||||
|
||||
inherit python;
|
||||
|
||||
patches = [
|
||||
# Patch from Debian that switches the version update change from
|
||||
# enabled by default to disabled by default.
|
||||
./no_updates_dialog.patch
|
||||
# Patches from Debian that:
|
||||
# - disable plugin installation (very insecure)
|
||||
# - disables loading of web bug for privacy
|
||||
# - switches the version update from enabled to disabled by default
|
||||
(fetchpatch {
|
||||
name = "disable_plugins.patch";
|
||||
url = "http://bazaar.launchpad.net/~calibre-packagers/calibre/debian/download/head:/disable_plugins.py-20111220183043-dcl08ccfagjxt1dv-1/disable_plugins.py";
|
||||
sha256 = "19spdx52dhbrfn9lm084yl3cfwm6f90imd51k97sf7flmpl569pk";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "links_privacy.patch";
|
||||
url = "http://bazaar.launchpad.net/~calibre-packagers/calibre/debian/download/head:/linksprivacy.patch-20160417214308-6hvive72pc0r4awc-1/links-privacy.patch";
|
||||
sha256 = "0f6pq2b7q56pxrq2j8yqd7bksc623q2zgq29qcli30f13vga1w60";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "no_updates_dialog.patch";
|
||||
url = "http://bazaar.launchpad.net/~calibre-packagers/calibre/debian/download/head:/no_updates_dialog.pa-20081231120426-rzzufl0zo66t3mtc-16/no_updates_dialog.patch";
|
||||
sha256 = "16xwa2fa47jvs954fjrwr8rhh89aljgi1d1wrfxa40sknlmfwxif";
|
||||
})
|
||||
# the unrar patch is not from debian
|
||||
] ++ stdenv.lib.optional (!unrarSupport) ./dont_build_unrar_plugin.patch;
|
||||
|
||||
prePatch = ''
|
||||
sed -i "/pyqt_sip_dir/ s:=.*:= '${pyqt5}/share/sip/PyQt5':" \
|
||||
setup/build_environment.py
|
||||
|
||||
# Remove unneeded files and libs
|
||||
rm -rf resources/calibre-portable.* \
|
||||
src/{chardet,cherrypy,html5lib,odf,routes}
|
||||
'';
|
||||
|
||||
dontUseQmakeConfigure = true;
|
||||
|
@ -34,14 +55,14 @@ stdenv.mkDerivation rec {
|
|||
|
||||
nativeBuildInputs = [ makeWrapper pkgconfig qmakeHook ];
|
||||
|
||||
buildInputs =
|
||||
[ python pyqt5 sip poppler_utils libpng imagemagick libjpeg
|
||||
fontconfig podofo qtbase chmlib icu sqlite libusb1 libmtp xdg_utils
|
||||
pythonPackages.mechanize pythonPackages.lxml pythonPackages.dateutil
|
||||
pythonPackages.cssutils pythonPackages.beautifulsoup pythonPackages.pillow
|
||||
pythonPackages.sqlite3 pythonPackages.netifaces pythonPackages.apsw
|
||||
pythonPackages.cssselect
|
||||
];
|
||||
buildInputs = [
|
||||
python pyqt5 sip poppler_utils libpng imagemagick libjpeg
|
||||
fontconfig podofo qtbase chmlib icu sqlite libusb1 libmtp xdg_utils
|
||||
] ++ (with pythonPackages; [
|
||||
apsw beautifulsoup cssselect cssutils dateutil lxml mechanize netifaces pillow sqlite3
|
||||
# the following are distributed with calibre, but we use upstream instead
|
||||
chardet cherrypy html5lib odfpy routes
|
||||
]);
|
||||
|
||||
installPhase = ''
|
||||
export HOME=$TMPDIR/fakehome
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
# Description: Disable update check by default.
|
||||
Index: calibre/src/calibre/gui2/main.py
|
||||
===================================================================
|
||||
--- calibre.orig/src/calibre/gui2/main.py 2014-02-02 10:41:28.470954623 +0100
|
||||
+++ calibre/src/calibre/gui2/main.py 2014-02-02 10:41:56.546954247 +0100
|
||||
@@ -37,8 +37,8 @@
|
||||
help=_('Start minimized to system tray.'))
|
||||
parser.add_option('-v', '--verbose', default=0, action='count',
|
||||
help=_('Ignored, do not use. Present only for legacy reasons'))
|
||||
- parser.add_option('--no-update-check', default=False, action='store_true',
|
||||
- help=_('Do not check for updates'))
|
||||
+ parser.add_option('--update-check', dest='no_update_check', default=True, action='store_false',
|
||||
+ help=_('Check for updates'))
|
||||
parser.add_option('--ignore-plugins', default=False, action='store_true',
|
||||
help=_('Ignore custom plugins, useful if you installed a plugin'
|
||||
' that is preventing calibre from starting'))
|
|
@ -0,0 +1,42 @@
|
|||
{ stdenv, lib, fetchurl, dpkg, gtk, atk, glib, pango, gdk_pixbuf, cairo
|
||||
, freetype, fontconfig, dbus, libXi, libXcursor, libXdamage, libXrandr
|
||||
, libXcomposite, libXext, libXfixes, libXrender, libX11, libXtst, libXScrnSaver
|
||||
, GConf, nss, nspr, alsaLib, cups, expat, libudev, libpulseaudio }:
|
||||
|
||||
let
|
||||
libPath = stdenv.lib.makeLibraryPath [
|
||||
stdenv.cc.cc gtk atk glib pango gdk_pixbuf cairo freetype fontconfig dbus
|
||||
libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes
|
||||
libXrender libX11 libXtst libXScrnSaver GConf nss nspr alsaLib cups expat libudev libpulseaudio
|
||||
];
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.7.6";
|
||||
name = "hyperterm-${version}";
|
||||
src = fetchurl {
|
||||
url = https://github.com/zeit/hyperterm/releases/download/v0.7.1/hyperterm-0.7.1.deb;
|
||||
sha256 = "1xdwhmzlkg1ly1xgsbv99xk4x1g1x270vx1b12dvf10ck5x9v63a";
|
||||
};
|
||||
buildInputs = [ dpkg ];
|
||||
unpackPhase = ''
|
||||
mkdir pkg
|
||||
dpkg-deb -x $src pkg
|
||||
sourceRoot=pkg
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p "$out/bin"
|
||||
ln -s "$out/opt/HyperTerm/HyperTerm" "$out/bin/HyperTerm"
|
||||
mv opt "$out/"
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "${libPath}:\$ORIGIN" "$out/opt/HyperTerm/HyperTerm"
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc ]}" "$out/opt/HyperTerm/resources/app/node_modules/child_pty/build/Release/exechelper"
|
||||
mv usr/* "$out/"
|
||||
'';
|
||||
dontPatchELF = true;
|
||||
meta = with lib; {
|
||||
description = "A terminal built on web technologies";
|
||||
homepage = https://hyperterm.org/;
|
||||
maintainers = with maintainers; [ puffnfresh ];
|
||||
license = licenses.mit;
|
||||
platforms = [ "i686-linux" "x86_64-linux" ];
|
||||
};
|
||||
}
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "josm-${version}";
|
||||
version = "9979";
|
||||
version = "10966";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar";
|
||||
sha256 = "0zy88f4h71qyj7vlhiwnayaaz50gg6bj5pfypy43ghmjrh01d9vh";
|
||||
sha256 = "0ggiilqfr7n4b2qik1ddlx9h0dwzglfk10y1zmzw9ij0gfbxn791";
|
||||
};
|
||||
|
||||
phases = [ "installPhase" ];
|
||||
|
|
|
@ -29,8 +29,6 @@ stdenv.mkDerivation rec {
|
|||
|
||||
# python is run during runtime to do various tasks
|
||||
postFixup = ''
|
||||
sed '1s:/usr/bin/python:${python}/bin/python:'
|
||||
|
||||
wrapProgram "$out/bin/lyx" \
|
||||
--prefix PATH : '${python}/bin'
|
||||
'';
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
{ stdenv, fetchurl, zlib } :
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "osmctools-${version}";
|
||||
version = "0.8.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = http://m.m.i24.cc/osmconvert.c;
|
||||
sha256 = "9da0940912d1bc62223b962483fd796f92c959c48749806aee5806164e5875d7";
|
||||
};
|
||||
|
||||
buildInputs = [ zlib ];
|
||||
|
||||
phases = [ "buildPhase" "installPhase" ];
|
||||
|
||||
buildPhase = ''
|
||||
cc $src -lz -O3 -o osmconvert
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
mv osmconvert $out/bin
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Converter between various Open Street Map file formats";
|
||||
homepage = http://wiki.openstreetmap.org/wiki/Osmconvert;
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
|
@ -1,17 +1,17 @@
|
|||
{ stdenv, fetchurl, cmake, pkgconfig, gtk3, perl, vte }:
|
||||
{ stdenv, fetchurl, cmake, pkgconfig, gtk3, perl, vte, pcre, glib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "sakura-${version}";
|
||||
version = "3.2.0";
|
||||
version = "3.3.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://launchpad.net/sakura/trunk/${version}/+download/${name}.tar.bz2";
|
||||
sha256 = "1pfvc35kckrzik5wx8ywhkhclr52rfp2syg46ix2nsdm72q6dl90";
|
||||
sha256 = "1fnkrkzf2ysav1ljgi4y4w8kvbwiwgmg1462xhizlla8jqa749r7";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake perl pkgconfig ];
|
||||
|
||||
buildInputs = [ gtk3 vte ];
|
||||
buildInputs = [ gtk3 vte pcre glib ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A terminal emulator based on GTK and VTE";
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue