Merge branch 'master' into staging
This commit is contained in:
commit
86e4c9ed46
@ -4,7 +4,7 @@ matrix:
|
||||
- os: linux
|
||||
sudo: false
|
||||
script:
|
||||
- ./maintainers/scripts/travis-nox-review-pr.sh nixpkgs-verify nixpkgs-manual nixpkgs-tarball
|
||||
- ./maintainers/scripts/travis-nox-review-pr.sh nixpkgs-verify nixpkgs-manual nixpkgs-tarball nixpkgs-unstable
|
||||
- ./maintainers/scripts/travis-nox-review-pr.sh nixos-options nixos-manual
|
||||
- os: linux
|
||||
sudo: required
|
||||
|
@ -382,4 +382,138 @@ it. Place the resulting <filename>package.nix</filename> file into
|
||||
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-steam">
|
||||
|
||||
<title>Steam</title>
|
||||
|
||||
<section xml:id="sec-steam-nix">
|
||||
|
||||
<title>Steam in Nix</title>
|
||||
|
||||
<para>
|
||||
Steam is distributed as a <filename>.deb</filename> file, for now only
|
||||
as an i686 package (the amd64 package only has documentation).
|
||||
When unpacked, it has a script called <filename>steam</filename> that
|
||||
in ubuntu (their target distro) would go to <filename>/usr/bin
|
||||
</filename>. When run for the first time, this script copies some
|
||||
files to the user's home, which include another script that is the
|
||||
ultimate responsible for launching the steam binary, which is also
|
||||
in $HOME.
|
||||
</para>
|
||||
<para>
|
||||
Nix problems and constraints:
|
||||
<itemizedlist>
|
||||
<listitem><para>We don't have <filename>/bin/bash</filename> and many
|
||||
scripts point there. Similarly for <filename>/usr/bin/python</filename>
|
||||
.</para></listitem>
|
||||
<listitem><para>We don't have the dynamic loader in <filename>/lib
|
||||
</filename>.</para></listitem>
|
||||
<listitem><para>The <filename>steam.sh</filename> script in $HOME can
|
||||
not be patched, as it is checked and rewritten by steam.</para></listitem>
|
||||
<listitem><para>The steam binary cannot be patched, it's also checked.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<para>
|
||||
The current approach to deploy Steam in NixOS is composing a FHS-compatible
|
||||
chroot environment, as documented
|
||||
<link xlink:href="http://sandervanderburg.blogspot.nl/2013/09/composing-fhs-compatible-chroot.html">here</link>.
|
||||
This allows us to have binaries in the expected paths without disrupting the system,
|
||||
and to avoid patching them to work in a non FHS environment.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-steam-play">
|
||||
|
||||
<title>How to play</title>
|
||||
|
||||
<para>
|
||||
For 64-bit systems it's important to have
|
||||
<programlisting>hardware.opengl.driSupport32Bit = true;</programlisting>
|
||||
in your <filename>/etc/nixos/configuration.nix</filename>. You'll also need
|
||||
<programlisting>hardware.pulseaudio.support32Bit = true;</programlisting>
|
||||
if you are using PulseAudio - this will enable 32bit ALSA apps integration.
|
||||
To use the Steam controller, you need to add
|
||||
<programlisting>services.udev.extraRules = ''
|
||||
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666"
|
||||
KERNEL=="uinput", MODE="0660", GROUP="users", OPTIONS+="static_node=uinput"
|
||||
'';</programlisting>
|
||||
to your configuration.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-steam-troub">
|
||||
|
||||
<title>Troubleshooting</title>
|
||||
|
||||
<para>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term>Steam fails to start. What do I do?</term>
|
||||
<listitem><para>Try to run
|
||||
<programlisting>strace steam</programlisting>
|
||||
to see what is causing steam to fail.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Using the FOSS Radeon drivers</term>
|
||||
<listitem><itemizedlist><listitem><para>
|
||||
The open source radeon drivers need a newer libc++ than is provided
|
||||
by the default runtime, which leads to a crash on launch. Use
|
||||
<programlisting>environment.systemPackages = [(pkgs.steam.override { newStdcpp = true; })];</programlisting>
|
||||
in your config if you get an error like
|
||||
<programlisting>
|
||||
libGL error: unable to load driver: radeonsi_dri.so
|
||||
libGL error: driver pointer missing
|
||||
libGL error: failed to load driver: radeonsi
|
||||
libGL error: unable to load driver: swrast_dri.so
|
||||
libGL error: failed to load driver: swrast</programlisting></para></listitem>
|
||||
<listitem><para>
|
||||
Steam ships statically linked with a version of libcrypto that
|
||||
conflics with the one dynamically loaded by radeonsi_dri.so.
|
||||
If you get the error
|
||||
<programlisting>steam.sh: line 713: 7842 Segmentation fault (core dumped)</programlisting>
|
||||
have a look at <link xlink:href="https://github.com/NixOS/nixpkgs/pull/20269">this pull request</link>.
|
||||
</para></listitem>
|
||||
|
||||
</itemizedlist></listitem></varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Java</term>
|
||||
<listitem><orderedlist>
|
||||
<listitem><para>
|
||||
There is no java in steam chrootenv by default. If you get a message like
|
||||
<programlisting>/home/foo/.local/share/Steam/SteamApps/common/towns/towns.sh: line 1: java: command not found</programlisting>
|
||||
You need to add
|
||||
<programlisting> steam.override { withJava = true; };</programlisting>
|
||||
to your configuration.
|
||||
</para></listitem>
|
||||
</orderedlist></listitem></varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section xml:id="sec-steam-run">
|
||||
|
||||
<title>steam-run</title>
|
||||
<para>
|
||||
The FHS-compatible chroot used for steam can also be used to run
|
||||
other linux games that expect a FHS environment.
|
||||
To do it, add
|
||||
<programlisting>pkgs.(steam.override {
|
||||
nativeOnly = true;
|
||||
newStdcpp = true;
|
||||
}).run</programlisting>
|
||||
to your configuration, rebuild, and run the game with
|
||||
<programlisting>steam-run ./foo</programlisting>
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
|
@ -132,6 +132,7 @@
|
||||
drets = "Dmytro Rets <dmitryrets@gmail.com>";
|
||||
drewkett = "Andrew Burkett <burkett.andrew@gmail.com>";
|
||||
dtzWill = "Will Dietz <nix@wdtz.org>";
|
||||
e-user = "Alexander Kahl <nixos@sodosopa.io>";
|
||||
ebzzry = "Rommel Martinez <ebzzry@gmail.com>";
|
||||
ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>";
|
||||
eduarrrd = "Eduard Bachmakov <e.bachmakov@gmail.com>";
|
||||
@ -187,6 +188,7 @@
|
||||
gridaphobe = "Eric Seidel <eric@seidel.io>";
|
||||
guibert = "David Guibert <david.guibert@gmail.com>";
|
||||
guillaumekoenig = "Guillaume Koenig <guillaume.edward.koenig@gmail.com>";
|
||||
guyonvarch = "Joris Guyonvarch <joris@guyonvarch.me>";
|
||||
hakuch = "Jesse Haber-Kucharsky <hakuch@gmail.com>";
|
||||
havvy = "Ryan Scheel <ryan.havvy@gmail.com>";
|
||||
hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>";
|
||||
@ -242,6 +244,7 @@
|
||||
leonardoce = "Leonardo Cecchi <leonardo.cecchi@gmail.com>";
|
||||
lethalman = "Luca Bruno <lucabru@src.gnome.org>";
|
||||
lewo = "Antoine Eiche <lewo@abesis.fr>";
|
||||
lheckemann = "Linus Heckemann <git@sphalerite.org>";
|
||||
lhvwb = "Nathaniel Baxter <nathaniel.baxter@gmail.com>";
|
||||
lihop = "Leroy Hopson <nixos@leroy.geek.nz>";
|
||||
linquize = "Linquize <linquize@yahoo.com.hk>";
|
||||
@ -273,6 +276,7 @@
|
||||
matthiasbeyer = "Matthias Beyer <mail@beyermatthias.de>";
|
||||
maurer = "Matthew Maurer <matthew.r.maurer+nix@gmail.com>";
|
||||
mbakke = "Marius Bakke <mbakke@fastmail.com>";
|
||||
mbbx6spp = "Susan Potter <me@susanpotter.net>";
|
||||
mbe = "Brandon Edens <brandonedens@gmail.com>";
|
||||
mboes = "Mathieu Boespflug <mboes@tweag.net>";
|
||||
mcmtroffaes = "Matthias C. M. Troffaes <matthias.troffaes@gmail.com>";
|
||||
@ -383,6 +387,7 @@
|
||||
retrry = "Tadas Barzdžius <retrry@gmail.com>";
|
||||
rick68 = "Wei-Ming Yang <rick68@gmail.com>";
|
||||
rickynils = "Rickard Nilsson <rickynils@gmail.com>";
|
||||
rlupton20 = "Richard Lupton <richard.lupton@gmail.com>";
|
||||
rnhmjoj = "Michele Guerini Rocco <micheleguerinirocco@me.com>";
|
||||
rob = "Rob Vermaas <rob.vermaas@gmail.com>";
|
||||
robberer = "Longrin Wischnewski <robberer@freakmail.de>";
|
||||
|
@ -38,6 +38,12 @@ while test -n "$1"; do
|
||||
nix-build $TRAVIS_BUILD_DIR/pkgs/top-level/release.nix --attr tarball --show-trace
|
||||
;;
|
||||
|
||||
nixpkgs-unstable)
|
||||
echo "=== Checking nixpkgs unstable job"
|
||||
|
||||
nix-instantiate $TRAVIS_BUILD_DIR/pkgs/top-level/release.nix --attr unstable --show-trace
|
||||
;;
|
||||
|
||||
nixpkgs-lint)
|
||||
echo "=== Checking nixpkgs lint"
|
||||
|
||||
|
@ -129,7 +129,7 @@ default; run <literal>nix-env -i nix-repl</literal> to get it. A
|
||||
typical use:
|
||||
|
||||
<screen>
|
||||
$ nix-repl '<nixos>'
|
||||
$ nix-repl '<nixpkgs/nixos>'
|
||||
|
||||
nix-repl> config.networking.hostName
|
||||
"mandark"
|
||||
|
@ -68,7 +68,7 @@ desired operation. It must be one of the following:
|
||||
<listitem>
|
||||
<para>Build and activate the new configuration, and make it the
|
||||
boot default. That is, the configuration is added to the GRUB
|
||||
boot menu as the default meny entry, so that subsequent reboots
|
||||
boot menu as the default menu entry, so that subsequent reboots
|
||||
will boot the system into the new configuration. Previous
|
||||
configurations activated with <command>nixos-rebuild
|
||||
switch</command> or <command>nixos-rebuild boot</command> remain
|
||||
|
@ -7,8 +7,8 @@ with lib;
|
||||
gnu = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description =
|
||||
'' When enabled, GNU software is chosen by default whenever a there is
|
||||
description = ''
|
||||
When enabled, GNU software is chosen by default whenever a there is
|
||||
a choice between GNU and non-GNU software (e.g., GNU lsh
|
||||
vs. OpenSSH).
|
||||
'';
|
||||
|
@ -84,6 +84,18 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
networking.timeServers = mkOption {
|
||||
default = [
|
||||
"0.nixos.pool.ntp.org"
|
||||
"1.nixos.pool.ntp.org"
|
||||
"2.nixos.pool.ntp.org"
|
||||
"3.nixos.pool.ntp.org"
|
||||
];
|
||||
description = ''
|
||||
The set of NTP servers from which to synchronise.
|
||||
'';
|
||||
};
|
||||
|
||||
networking.proxy = {
|
||||
|
||||
default = lib.mkOption {
|
||||
|
@ -10,9 +10,21 @@ let
|
||||
inherit (config.services.samba) nsswins;
|
||||
ldap = (config.users.ldap.enable && config.users.ldap.nsswitch);
|
||||
|
||||
in
|
||||
hostArray = [ "files" "mymachines" ]
|
||||
++ optionals nssmdns [ "mdns_minimal [!UNAVAIL=return]" ]
|
||||
++ optionals nsswins [ "wins" ]
|
||||
++ [ "dns" ]
|
||||
++ optionals nssmdns [ "mdns" ]
|
||||
++ ["myhostname" ];
|
||||
|
||||
{
|
||||
passwdArray = [ "files" ]
|
||||
++ optionals ldap [ "ldap" ]
|
||||
++ [ "mymachines" ];
|
||||
|
||||
shadowArray = [ "files" ]
|
||||
++ optionals ldap [ "ldap" ];
|
||||
|
||||
in {
|
||||
options = {
|
||||
|
||||
# NSS modules. Hacky!
|
||||
@ -39,16 +51,18 @@ in
|
||||
# Name Service Switch configuration file. Required by the C
|
||||
# library. !!! Factor out the mdns stuff. The avahi module
|
||||
# should define an option used by this module.
|
||||
environment.etc."nsswitch.conf".text =
|
||||
''
|
||||
passwd: files ${optionalString ldap "ldap"}
|
||||
group: files ${optionalString ldap "ldap"}
|
||||
shadow: files ${optionalString ldap "ldap"}
|
||||
hosts: files ${optionalString nssmdns "mdns_minimal [NOTFOUND=return]"} dns ${optionalString nssmdns "mdns"} ${optionalString nsswins "wins"} myhostname mymachines
|
||||
networks: files dns
|
||||
environment.etc."nsswitch.conf".text = ''
|
||||
passwd: ${concatStringsSep " " passwdArray}
|
||||
group: ${concatStringsSep " " passwdArray}
|
||||
shadow: ${concatStringsSep " " shadowArray}
|
||||
|
||||
hosts: ${concatStringsSep " " hostArray}
|
||||
networks: files
|
||||
|
||||
ethers: files
|
||||
services: files
|
||||
protocols: files
|
||||
rpc: files
|
||||
'';
|
||||
|
||||
# Systemd provides nss-myhostname to ensure that our hostname
|
||||
@ -56,7 +70,7 @@ in
|
||||
# configured IP addresses, or ::1 and 127.0.0.2 as
|
||||
# fallbacks. Systemd also provides nss-mymachines to return IP
|
||||
# addresses of local containers.
|
||||
system.nssModules = [ config.systemd.package ];
|
||||
system.nssModules = [ config.systemd.package.out ];
|
||||
|
||||
};
|
||||
}
|
||||
|
@ -211,7 +211,6 @@
|
||||
lambdabot = 191;
|
||||
asterisk = 192;
|
||||
plex = 193;
|
||||
bird = 195;
|
||||
grafana = 196;
|
||||
skydns = 197;
|
||||
ripple-rest = 198;
|
||||
@ -281,6 +280,7 @@
|
||||
stanchion = 262;
|
||||
riak-cs = 263;
|
||||
infinoted = 264;
|
||||
keystone = 265;
|
||||
|
||||
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
||||
|
||||
@ -470,7 +470,6 @@
|
||||
#asterisk = 192; # unused
|
||||
plex = 193;
|
||||
sabnzbd = 194;
|
||||
bird = 195;
|
||||
#grafana = 196; #unused
|
||||
#skydns = 197; #unused
|
||||
#ripple-rest = 198; #unused
|
||||
@ -532,6 +531,7 @@
|
||||
stanchion = 262;
|
||||
riak-cs = 263;
|
||||
infinoted = 264;
|
||||
keystone = 265;
|
||||
|
||||
# When adding a gid, make sure it doesn't match an existing
|
||||
# uid. Users and groups with the same name should have equal
|
||||
|
@ -133,9 +133,11 @@
|
||||
./services/cluster/fleet.nix
|
||||
./services/cluster/kubernetes.nix
|
||||
./services/cluster/panamax.nix
|
||||
./services/computing/boinc/client.nix
|
||||
./services/computing/torque/server.nix
|
||||
./services/computing/torque/mom.nix
|
||||
./services/computing/slurm/slurm.nix
|
||||
./services/continuous-integration/buildbot/master.nix
|
||||
./services/continuous-integration/buildkite-agent.nix
|
||||
./services/continuous-integration/hydra/default.nix
|
||||
./services/continuous-integration/gitlab-runner.nix
|
||||
@ -629,4 +631,5 @@
|
||||
./virtualisation/vmware-guest.nix
|
||||
./virtualisation/xen-dom0.nix
|
||||
./virtualisation/xe-guest-utilities.nix
|
||||
./virtualisation/openstack/keystone.nix
|
||||
]
|
||||
|
@ -484,7 +484,7 @@ in {
|
||||
|
||||
clusterDns = mkOption {
|
||||
description = "Use alternative dns.";
|
||||
default = "10.10.1.1";
|
||||
default = "10.10.0.1";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
|
@ -48,7 +48,7 @@ in
|
||||
only the hosts listed in <varname>dataDir</varname>/remote_hosts.cfg will be allowed to
|
||||
connect.
|
||||
|
||||
See also: <ulink url="http://boinc.berkeley.edu/wiki/Controlling_BOINC_remotely#Remote_access"/>
|
||||
See also: <link xlink:href="http://boinc.berkeley.edu/wiki/Controlling_BOINC_remotely#Remote_access"/>
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
@ -0,0 +1,250 @@
|
||||
# NixOS module for Buildbot continous integration server.
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.buildbot-master;
|
||||
escapeStr = s: escape ["'"] s;
|
||||
masterCfg = pkgs.writeText "master.cfg" ''
|
||||
from buildbot.plugins import *
|
||||
factory = util.BuildFactory()
|
||||
c = BuildmasterConfig = dict(
|
||||
workers = [${concatStringsSep "," cfg.workers}],
|
||||
protocols = { 'pb': {'port': ${cfg.bpPort} } },
|
||||
title = '${escapeStr cfg.title}',
|
||||
titleURL = '${escapeStr cfg.titleUrl}',
|
||||
buildbotURL = '${escapeStr cfg.buildbotUrl}',
|
||||
db = dict(db_url='${escapeStr cfg.dbUrl}'),
|
||||
www = dict(port=${toString cfg.port}),
|
||||
change_source = [ ${concatStringsSep "," cfg.changeSource} ],
|
||||
schedulers = [ ${concatStringsSep "," cfg.schedulers} ],
|
||||
builders = [ ${concatStringsSep "," cfg.builders} ],
|
||||
status = [ ${concatStringsSep "," cfg.status} ],
|
||||
)
|
||||
for step in [ ${concatStringsSep "," cfg.factorySteps} ]:
|
||||
factory.addStep(step)
|
||||
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
||||
configFile = if cfg.masterCfg == null then masterCfg else cfg.masterCfg;
|
||||
|
||||
in {
|
||||
options = {
|
||||
services.buildbot-master = {
|
||||
|
||||
factorySteps = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "Factory Steps";
|
||||
default = [];
|
||||
example = [
|
||||
"steps.Git(repourl='git://github.com/buildbot/pyflakes.git', mode='incremental')"
|
||||
"steps.ShellCommand(command=['trial', 'pyflakes'])"
|
||||
];
|
||||
};
|
||||
|
||||
changeSource = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "List of Change Sources.";
|
||||
default = [];
|
||||
example = [
|
||||
"changes.GitPoller('git://github.com/buildbot/pyflakes.git', workdir='gitpoller-workdir', branch='master', pollinterval=300)"
|
||||
];
|
||||
};
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Whether to enable the Buildbot continuous integration server.";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.str;
|
||||
description = "Extra configuration to append to master.cfg";
|
||||
default = "";
|
||||
};
|
||||
|
||||
masterCfg = mkOption {
|
||||
type = with types; nullOr path;
|
||||
description = ''
|
||||
Optionally pass path to raw master.cfg file.
|
||||
Other options in this configuration will be ignored.
|
||||
'';
|
||||
default = null;
|
||||
example = literalExample ''
|
||||
pkgs.writeText "master.cfg" "BuildmasterConfig = c = {}"
|
||||
'';
|
||||
};
|
||||
|
||||
schedulers = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "List of Schedulers.";
|
||||
default = [
|
||||
"schedulers.SingleBranchScheduler(name='all', change_filter=util.ChangeFilter(branch='master'), treeStableTimer=None, builderNames=['runtests'])"
|
||||
"schedulers.ForceScheduler(name='force',builderNames=['runtests'])"
|
||||
];
|
||||
};
|
||||
|
||||
builders = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "List of Builders.";
|
||||
default = [
|
||||
"util.BuilderConfig(name='runtests',workernames=['default-worker'],factory=factory)"
|
||||
];
|
||||
};
|
||||
|
||||
workers = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "List of Workers.";
|
||||
default = [
|
||||
"worker.Worker('default-worker', 'password')"
|
||||
];
|
||||
example = [ "worker.LocalWorker('default-worker')" ];
|
||||
};
|
||||
|
||||
status = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.str;
|
||||
description = "List of status notification endpoints.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
default = "buildbot";
|
||||
type = types.str;
|
||||
description = "User the buildbot server should execute under.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
default = "buildbot";
|
||||
type = types.str;
|
||||
description = "Primary group of buildbot user.";
|
||||
};
|
||||
|
||||
extraGroups = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ "nixbld" ];
|
||||
description = "List of extra groups that the buildbot user should be a part of.";
|
||||
};
|
||||
|
||||
home = mkOption {
|
||||
default = "/home/buildbot";
|
||||
type = types.path;
|
||||
description = "Buildbot home directory.";
|
||||
};
|
||||
|
||||
buildbotDir = mkOption {
|
||||
default = "${cfg.home}/master";
|
||||
type = types.path;
|
||||
description = "Specifies the Buildbot directory.";
|
||||
};
|
||||
|
||||
bpPort = mkOption {
|
||||
default = "9989";
|
||||
type = types.string;
|
||||
example = "tcp:10000:interface=127.0.0.1";
|
||||
description = "Port where the master will listen to Buildbot Worker.";
|
||||
};
|
||||
|
||||
listenAddress = mkOption {
|
||||
default = "0.0.0.0";
|
||||
type = types.str;
|
||||
description = "Specifies the bind address on which the buildbot HTTP interface listens.";
|
||||
};
|
||||
|
||||
buildbotUrl = mkOption {
|
||||
default = "http://localhost:8010/";
|
||||
type = types.str;
|
||||
description = "Specifies the Buildbot URL.";
|
||||
};
|
||||
|
||||
title = mkOption {
|
||||
default = "Buildbot";
|
||||
type = types.str;
|
||||
description = "Specifies the Buildbot Title.";
|
||||
};
|
||||
|
||||
titleUrl = mkOption {
|
||||
default = "Buildbot";
|
||||
type = types.str;
|
||||
description = "Specifies the Buildbot TitleURL.";
|
||||
};
|
||||
|
||||
dbUrl = mkOption {
|
||||
default = "sqlite:///state.sqlite";
|
||||
type = types.str;
|
||||
description = "Specifies the database connection string.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
default = 8010;
|
||||
type = types.int;
|
||||
description = "Specifies port number on which the buildbot HTTP interface listens.";
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.buildbot-ui;
|
||||
description = ''
|
||||
Package to use for buildbot.
|
||||
<literal>buildbot-full</literal> is required in order to use local workers.
|
||||
'';
|
||||
example = pkgs.buildbot-full;
|
||||
};
|
||||
|
||||
packages = mkOption {
|
||||
default = [ ];
|
||||
example = [ pkgs.git ];
|
||||
type = types.listOf types.package;
|
||||
description = "Packages to add to PATH for the buildbot process.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
users.extraGroups = optional (cfg.group == "buildbot") {
|
||||
name = "buildbot";
|
||||
};
|
||||
|
||||
users.extraUsers = optional (cfg.user == "buildbot") {
|
||||
name = "buildbot";
|
||||
description = "buildbot user";
|
||||
isNormalUser = true;
|
||||
createHome = true;
|
||||
home = cfg.home;
|
||||
group = cfg.group;
|
||||
extraGroups = cfg.extraGroups;
|
||||
useDefaultShell = true;
|
||||
};
|
||||
|
||||
systemd.services.buildbot-master = {
|
||||
description = "Buildbot Continuous Integration Server";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = cfg.packages;
|
||||
|
||||
serviceConfig = {
|
||||
Type = "forking";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
WorkingDirectory = cfg.home;
|
||||
ExecStart = "${cfg.package}/bin/buildbot start ${cfg.buildbotDir}";
|
||||
};
|
||||
|
||||
preStart = ''
|
||||
mkdir -vp ${cfg.buildbotDir}
|
||||
chown -c ${cfg.user}:${cfg.group} ${cfg.buildbotDir}
|
||||
ln -sf ${configFile} ${cfg.buildbotDir}/master.cfg
|
||||
${cfg.package}/bin/buildbot create-master ${cfg.buildbotDir}
|
||||
'';
|
||||
|
||||
postStart = ''
|
||||
until [[ $(${pkgs.curl}/bin/curl -s --head -w '\n%{http_code}' http://localhost:${toString cfg.port} | tail -n1) =~ ^(200|403)$ ]]; do
|
||||
sleep 1
|
||||
done
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
}
|
@ -162,7 +162,7 @@ in {
|
||||
|
||||
if [ "$(id -u)" = 0 ]; then
|
||||
chown ${cfg.user}:${cfg.group} `dirname ${cfg.uriFile}`;
|
||||
(-f ${cfg.uriFile} && chown ${cfg.user}:${cfg.group} ${cfg.uriFile}) || true
|
||||
(test -f ${cfg.uriFile} && chown ${cfg.user}:${cfg.group} ${cfg.uriFile}) || true
|
||||
chown ${cfg.user}:${cfg.group} ${cfg.databaseDir}
|
||||
chown ${cfg.user}:${cfg.group} ${cfg.viewIndexDir}
|
||||
chown ${cfg.user}:${cfg.group} ${cfg.configFile}
|
||||
|
@ -86,6 +86,12 @@ in {
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
{ assertion = cfg.users != [];
|
||||
message = "services.psd.users must contain at least one user";
|
||||
}
|
||||
];
|
||||
|
||||
systemd = {
|
||||
services = {
|
||||
psd = {
|
||||
|
@ -64,7 +64,7 @@ in
|
||||
};
|
||||
|
||||
worldPath = mkOption {
|
||||
type = types.path;
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = ''
|
||||
The path to the world file (<literal>.wld</literal>) which should be loaded.
|
||||
@ -126,8 +126,8 @@ in
|
||||
User = "terraria";
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
ExecStart = "${pkgs.tmux.bin}/bin/tmux -S /var/lib/terraria/terraria.sock new -d ${pkgs.terraria-server}/bin/TerrariaServer ${concatStringsSep " " flags}";
|
||||
ExecStop = "${pkgs.tmux.bin}/bin/tmux -S /var/lib/terraria/terraria.sock send-keys Enter \"exit\" Enter";
|
||||
ExecStart = "${getBin pkgs.tmux}/bin/tmux -S /var/lib/terraria/terraria.sock new -d ${pkgs.terraria-server}/bin/TerrariaServer ${concatStringsSep " " flags}";
|
||||
ExecStop = "${getBin pkgs.tmux}/bin/tmux -S /var/lib/terraria/terraria.sock send-keys Enter \"exit\" Enter";
|
||||
};
|
||||
|
||||
postStart = ''
|
||||
|
@ -100,6 +100,12 @@ in
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
assertions =
|
||||
[ { assertion = !config.services.rsyslogd.enable;
|
||||
message = "rsyslogd conflicts with syslogd";
|
||||
}
|
||||
];
|
||||
|
||||
environment.systemPackages = [ pkgs.sysklogd ];
|
||||
|
||||
services.syslogd.extraParams = optional cfg.enableNetworkInput "-r";
|
||||
|
@ -20,17 +20,29 @@ in {
|
||||
description = "Whether to enable the postsrsd SRS server for Postfix.";
|
||||
};
|
||||
|
||||
domain = mkOption {
|
||||
type = types.str;
|
||||
description = "Domain name for rewrite";
|
||||
};
|
||||
|
||||
secretsFile = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/postsrsd/postsrsd.secret";
|
||||
description = "Secret keys used for signing and verification";
|
||||
};
|
||||
|
||||
domain = mkOption {
|
||||
type = types.str;
|
||||
description = "Domain name for rewrite";
|
||||
};
|
||||
|
||||
separator = mkOption {
|
||||
type = types.enum ["-" "=" "+"];
|
||||
default = "=";
|
||||
description = "First separator character in generated addresses";
|
||||
};
|
||||
|
||||
# bindAddress = mkOption { # uncomment once 1.5 is released
|
||||
# type = types.str;
|
||||
# default = "127.0.0.1";
|
||||
# description = "Socket listen address";
|
||||
# };
|
||||
|
||||
forwardPort = mkOption {
|
||||
type = types.int;
|
||||
default = 10001;
|
||||
@ -43,6 +55,18 @@ in {
|
||||
description = "Port for the reverse SRS lookup";
|
||||
};
|
||||
|
||||
timeout = mkOption {
|
||||
type = types.int;
|
||||
default = 1800;
|
||||
description = "Timeout for idle client connections in seconds";
|
||||
};
|
||||
|
||||
excludeDomains = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = "Origin domains to exclude from rewriting in addition to primary domain";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "postsrsd";
|
||||
@ -86,7 +110,7 @@ in {
|
||||
path = [ pkgs.coreutils ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = ''${pkgs.postsrsd}/sbin/postsrsd "-s${cfg.secretsFile}" "-d${cfg.domain}" -f${toString cfg.forwardPort} -r${toString cfg.reversePort}'';
|
||||
ExecStart = ''${pkgs.postsrsd}/sbin/postsrsd "-s${cfg.secretsFile}" "-d${cfg.domain}" -a${cfg.separator} -f${toString cfg.forwardPort} -r${toString cfg.reversePort} -t${toString cfg.timeout} "-X${concatStringsSep "," cfg.excludeDomains}"'';
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
PermissionsStartOnly = true;
|
||||
|
@ -108,7 +108,8 @@ in {
|
||||
};
|
||||
|
||||
preStart = ''
|
||||
mkdir -m 0700 -p ${cfg.dataDir}
|
||||
mkdir -p ${cfg.dataDir}
|
||||
chmod 755 ${cfg.dataDir}
|
||||
install -D /dev/null ${cfg.pidFile}
|
||||
if [ "$(id -u)" = 0 ]; then
|
||||
chown -R ${cfg.user} ${cfg.dataDir};
|
||||
|
@ -1,76 +1,68 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkEnableOption mkIf mkOption singleton types;
|
||||
inherit (pkgs) bird;
|
||||
cfg = config.services.bird;
|
||||
inherit (lib) mkEnableOption mkIf mkOption types;
|
||||
|
||||
configFile = pkgs.writeText "bird.conf" ''
|
||||
${cfg.config}
|
||||
generic = variant:
|
||||
let
|
||||
cfg = config.services.${variant};
|
||||
pkg = pkgs.${variant};
|
||||
birdc = if variant == "bird6" then "birdc6" else "birdc";
|
||||
configFile = pkgs.stdenv.mkDerivation {
|
||||
name = "${variant}.conf";
|
||||
text = cfg.config;
|
||||
preferLocalBuild = true;
|
||||
buildCommand = ''
|
||||
echo -n "$text" > $out
|
||||
${pkg}/bin/${variant} -d -p -c $out
|
||||
'';
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
};
|
||||
in {
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.bird = {
|
||||
|
||||
services.${variant} = {
|
||||
enable = mkEnableOption "BIRD Internet Routing Daemon";
|
||||
|
||||
config = mkOption {
|
||||
type = types.string;
|
||||
type = types.lines;
|
||||
description = ''
|
||||
BIRD Internet Routing Daemon configuration file.
|
||||
<link xlink:href='http://bird.network.cz/'/>
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.string;
|
||||
default = "bird";
|
||||
description = ''
|
||||
BIRD Internet Routing Daemon user.
|
||||
'';
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.string;
|
||||
default = "bird";
|
||||
description = ''
|
||||
BIRD Internet Routing Daemon group.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
users.extraUsers = singleton {
|
||||
name = cfg.user;
|
||||
description = "BIRD Internet Routing Daemon user";
|
||||
uid = config.ids.uids.bird;
|
||||
group = cfg.group;
|
||||
};
|
||||
|
||||
users.extraGroups = singleton {
|
||||
name = cfg.group;
|
||||
gid = config.ids.gids.bird;
|
||||
};
|
||||
|
||||
systemd.services.bird = {
|
||||
systemd.services.${variant} = {
|
||||
description = "BIRD Internet Routing Daemon";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${bird}/bin/bird -d -c ${configFile} -s /var/run/bird.ctl -u ${cfg.user} -g ${cfg.group}";
|
||||
Type = "forking";
|
||||
Restart = "on-failure";
|
||||
ExecStart = "${pkg}/bin/${variant} -c ${configFile} -u ${variant} -g ${variant}";
|
||||
ExecReload = "${pkg}/bin/${birdc} configure";
|
||||
ExecStop = "${pkg}/bin/${birdc} down";
|
||||
CapabilityBoundingSet = [ "CAP_CHOWN" "CAP_FOWNER" "CAP_DAC_OVERRIDE" "CAP_SETUID" "CAP_SETGID"
|
||||
# see bird/sysdep/linux/syspriv.h
|
||||
"CAP_NET_BIND_SERVICE" "CAP_NET_BROADCAST" "CAP_NET_ADMIN" "CAP_NET_RAW" ];
|
||||
ProtectSystem = "full";
|
||||
ProtectHome = "yes";
|
||||
SystemCallFilter="~@cpu-emulation @debug @keyring @module @mount @obsolete @raw-io";
|
||||
MemoryDenyWriteExecute = "yes";
|
||||
};
|
||||
};
|
||||
users = {
|
||||
extraUsers.${variant} = {
|
||||
description = "BIRD Internet Routing Daemon user";
|
||||
group = "${variant}";
|
||||
};
|
||||
extraGroups.${variant} = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
inherit (config.services) bird bird6;
|
||||
in {
|
||||
imports = [(generic "bird") (generic "bird6")];
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ in
|
||||
};
|
||||
|
||||
servers = mkOption {
|
||||
default = config.services.ntp.servers;
|
||||
default = config.networking.timeServers;
|
||||
description = ''
|
||||
The set of NTP servers from which to synchronise.
|
||||
'';
|
||||
@ -102,7 +102,7 @@ in
|
||||
home = stateDir;
|
||||
};
|
||||
|
||||
systemd.services.ntpd.enable = mkForce false;
|
||||
systemd.services.timesyncd.enable = mkForce false;
|
||||
|
||||
systemd.services.chronyd =
|
||||
{ description = "chrony NTP daemon";
|
||||
|
@ -22,7 +22,7 @@ in
|
||||
|
||||
config = mkOption {
|
||||
default = null;
|
||||
type = types.str;
|
||||
type = types.nullOr types.str;
|
||||
description = ''
|
||||
Contents of Dante's configuration file
|
||||
NOTE: user.privileged/user.unprivileged are set by the service
|
||||
|
@ -51,6 +51,7 @@ in {
|
||||
before = [ "network-pre.target" ];
|
||||
wants = [ "network-pre.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
reloadIfChanged = true;
|
||||
serviceConfig = {
|
||||
Type="oneshot";
|
||||
RemainAfterExit = "yes";
|
||||
|
@ -34,7 +34,7 @@ in
|
||||
services.ntp = {
|
||||
|
||||
enable = mkOption {
|
||||
default = !config.boot.isContainer;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to synchronise your machine's time using the NTP
|
||||
protocol.
|
||||
@ -42,12 +42,7 @@ in
|
||||
};
|
||||
|
||||
servers = mkOption {
|
||||
default = [
|
||||
"0.nixos.pool.ntp.org"
|
||||
"1.nixos.pool.ntp.org"
|
||||
"2.nixos.pool.ntp.org"
|
||||
"3.nixos.pool.ntp.org"
|
||||
];
|
||||
default = config.networking.timeServers;
|
||||
description = ''
|
||||
The set of NTP servers from which to synchronise.
|
||||
'';
|
||||
@ -70,6 +65,7 @@ in
|
||||
|
||||
# Make tools such as ntpq available in the system path.
|
||||
environment.systemPackages = [ pkgs.ntp ];
|
||||
services.timesyncd.enable = mkForce false;
|
||||
|
||||
users.extraUsers = singleton
|
||||
{ name = ntpUser;
|
||||
|
@ -34,7 +34,7 @@ with lib;
|
||||
|
||||
assertions = singleton
|
||||
{ assertion = !(config.services.openfire.usePostgreSQL -> config.services.postgresql.enable);
|
||||
message = "OpenFire assertion failed.";
|
||||
message = "OpenFire configured to use PostgreSQL but services.postgresql.enable is not enabled.";
|
||||
};
|
||||
|
||||
systemd.services.openfire = {
|
||||
|
@ -49,7 +49,7 @@ in
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.ntp.enable = mkForce false;
|
||||
services.timesyncd.enable = mkForce false;
|
||||
|
||||
# Add ntpctl to the environment for status checking
|
||||
environment.systemPackages = [ package ];
|
||||
|
@ -31,18 +31,22 @@ let
|
||||
default = null;
|
||||
example = "rVXs/Ni9tu3oDBLS4hOyAUAa1qTWVA3loR8eL20os3I=";
|
||||
type = with types; nullOr str;
|
||||
description = ''base64 preshared key generated by wg genpsk. Optional,
|
||||
description = ''
|
||||
base64 preshared key generated by wg genpsk. Optional,
|
||||
and may be omitted. This option adds an additional layer of
|
||||
symmetric-key cryptography to be mixed into the already existing
|
||||
public-key cryptography, for post-quantum resistance.'';
|
||||
public-key cryptography, for post-quantum resistance.
|
||||
'';
|
||||
};
|
||||
|
||||
listenPort = mkOption {
|
||||
default = null;
|
||||
type = with types; nullOr int;
|
||||
example = 51820;
|
||||
description = ''16-bit port for listening. Optional; if not specified,
|
||||
automatically generated based on interface name.'';
|
||||
description = ''
|
||||
16-bit port for listening. Optional; if not specified,
|
||||
automatically generated based on interface name.
|
||||
'';
|
||||
};
|
||||
|
||||
preSetup = mkOption {
|
||||
@ -51,8 +55,9 @@ let
|
||||
''];
|
||||
default = [];
|
||||
type = with types; listOf str;
|
||||
description = ''A list of commands called at the start of the interface
|
||||
setup.'';
|
||||
description = ''
|
||||
A list of commands called at the start of the interface setup.
|
||||
'';
|
||||
};
|
||||
|
||||
postSetup = mkOption {
|
||||
|
@ -75,7 +75,7 @@ let
|
||||
'') cfg.listenAddresses}
|
||||
Listen /var/run/cups/cups.sock
|
||||
|
||||
SetEnv PATH ${bindir}/lib/cups/filter:${bindir}/bin
|
||||
SetEnv PATH /var/lib/cups/path/lib/cups/filter:/var/lib/cups/path/bin
|
||||
|
||||
DefaultShared ${if cfg.defaultShared then "Yes" else "No"}
|
||||
|
||||
@ -310,6 +310,13 @@ in
|
||||
for i in *; do
|
||||
[ ! -e "/var/lib/cups/$i" ] && ln -s "${rootdir}/etc/cups/$i" "/var/lib/cups/$i"
|
||||
done
|
||||
|
||||
#update path reference
|
||||
[ -L /var/lib/cups/path ] && \
|
||||
rm /var/lib/cups/path
|
||||
[ ! -e /var/lib/cups/path ] && \
|
||||
ln -s ${bindir} /var/lib/cups/path
|
||||
|
||||
${optionalString cfg.gutenprint ''
|
||||
if [ -d /var/lib/cups/ppd ]; then
|
||||
${gutenprint}/bin/cups-genppdupdate -p /var/lib/cups/ppd
|
||||
|
@ -143,7 +143,7 @@ in
|
||||
services.fail2ban.jails.ssh-iptables =
|
||||
''
|
||||
filter = sshd
|
||||
action = iptables[name=SSH, port=ssh, protocol=tcp]
|
||||
action = iptables-multiport[name=SSH, port="${concatMapStringsSep "," (p: toString p) config.services.openssh.ports}", protocol=tcp]
|
||||
maxretry = 5
|
||||
'';
|
||||
|
||||
|
@ -4,6 +4,14 @@ with lib;
|
||||
|
||||
let
|
||||
|
||||
# Remove packages of ys from xs, based on their names
|
||||
removePackagesByName = xs: ys:
|
||||
let
|
||||
pkgName = drv: (builtins.parseDrvName drv.name).name;
|
||||
ysNames = map pkgName ys;
|
||||
in
|
||||
filter (x: !(builtins.elem (pkgName x) ysNames)) xs;
|
||||
|
||||
xcfg = config.services.xserver;
|
||||
cfg = xcfg.desktopManager.lxqt;
|
||||
|
||||
@ -18,8 +26,14 @@ in
|
||||
description = "Enable the LXQt desktop manager";
|
||||
};
|
||||
|
||||
environment.lxqt.excludePackages = mkOption {
|
||||
default = [];
|
||||
example = literalExample "[ pkgs.lxqt.qterminal ]";
|
||||
type = types.listOf types.package;
|
||||
description = "Which LXQt packages to exclude from the default environment";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf (xcfg.enable && cfg.enable) {
|
||||
|
||||
@ -31,47 +45,12 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.kde5.kwindowsystem # provides some QT5 plugins needed by lxqt-panel
|
||||
pkgs.kde5.libkscreen # provides plugins for screen management software
|
||||
pkgs.kde5.oxygen-icons5 # default icon theme
|
||||
pkgs.libfm
|
||||
pkgs.libfm-extra
|
||||
pkgs.lxmenu-data
|
||||
pkgs.lxqt.compton-conf
|
||||
pkgs.lxqt.libfm-qt
|
||||
pkgs.lxqt.liblxqt
|
||||
pkgs.lxqt.libqtxdg
|
||||
pkgs.lxqt.libsysstat
|
||||
pkgs.lxqt.lximage-qt
|
||||
pkgs.lxqt.lxqt-about
|
||||
pkgs.lxqt.lxqt-admin
|
||||
pkgs.lxqt.lxqt-common
|
||||
pkgs.lxqt.lxqt-config
|
||||
pkgs.lxqt.lxqt-globalkeys
|
||||
pkgs.lxqt.lxqt-l10n
|
||||
pkgs.lxqt.lxqt-notificationd
|
||||
pkgs.lxqt.lxqt-openssh-askpass
|
||||
pkgs.lxqt.lxqt-panel
|
||||
pkgs.lxqt.lxqt-policykit
|
||||
pkgs.lxqt.lxqt-powermanagement
|
||||
pkgs.lxqt.lxqt-qtplugin
|
||||
pkgs.lxqt.lxqt-runner
|
||||
pkgs.lxqt.lxqt-session
|
||||
pkgs.lxqt.lxqt-sudo
|
||||
pkgs.lxqt.obconf-qt
|
||||
pkgs.lxqt.pavucontrol-qt
|
||||
pkgs.lxqt.pcmanfm-qt
|
||||
pkgs.lxqt.qlipper
|
||||
pkgs.lxqt.qps
|
||||
pkgs.lxqt.qterminal
|
||||
pkgs.lxqt.qtermwidget
|
||||
pkgs.lxqt.screengrab
|
||||
pkgs.menu-cache
|
||||
pkgs.openbox # default window manager
|
||||
pkgs.qt5.qtsvg # provides QT5 plugins for svg icons
|
||||
pkgs.xscreensaver
|
||||
];
|
||||
environment.systemPackages =
|
||||
pkgs.lxqt.preRequisitePackages ++
|
||||
pkgs.lxqt.corePackages ++
|
||||
(removePackagesByName
|
||||
pkgs.lxqt.optionalPackages
|
||||
config.environment.lxqt.excludePackages);
|
||||
|
||||
# Link some extra directories in /run/current-system/software/share
|
||||
environment.pathsToLink = [
|
||||
@ -80,5 +59,8 @@ in
|
||||
"/share/lxqt"
|
||||
];
|
||||
|
||||
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.gvfs}/lib/gio/modules" ];
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -32,6 +32,7 @@ in {
|
||||
|
||||
services.urxvtd = {
|
||||
description = "urxvt terminal daemon";
|
||||
path = [ pkgs.xsel ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.rxvt_unicode-with-plugins}/bin/urxvtd -o";
|
||||
Environment = "RXVT_SOCKET=%t/urxvtd-socket";
|
||||
|
@ -44,10 +44,10 @@ in
|
||||
copyKernels = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = "
|
||||
description = ''
|
||||
Whether copy the necessary boot files into /boot, so
|
||||
/nix/store is not needed by the boot loader.
|
||||
";
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -165,6 +165,11 @@ let
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = "Extra configuration append to unit";
|
||||
};
|
||||
};
|
||||
|
||||
linkOptions = commonNetworkOptions // {
|
||||
@ -515,6 +520,8 @@ let
|
||||
''
|
||||
[Link]
|
||||
${attrsToSection def.linkConfig}
|
||||
|
||||
${def.extraConfig}
|
||||
'';
|
||||
};
|
||||
|
||||
@ -565,6 +572,7 @@ let
|
||||
${attrsToSection def.bondConfig}
|
||||
|
||||
''}
|
||||
${def.extraConfig}
|
||||
'';
|
||||
};
|
||||
|
||||
@ -603,9 +611,14 @@ let
|
||||
${attrsToSection x.routeConfig}
|
||||
|
||||
'')}
|
||||
${def.extraConfig}
|
||||
'';
|
||||
};
|
||||
|
||||
unitFiles = map (name: {
|
||||
target = "systemd/network/${name}";
|
||||
source = "${cfg.units.${name}.unit}/${name}";
|
||||
}) (attrNames cfg.units);
|
||||
in
|
||||
|
||||
{
|
||||
@ -657,17 +670,15 @@ in
|
||||
systemd.additionalUpstreamSystemUnits =
|
||||
[ "systemd-networkd.service" "systemd-networkd-wait-online.service" ];
|
||||
|
||||
systemd.network.units =
|
||||
mapAttrs' (n: v: nameValuePair "${n}.link" (linkToUnit n v)) cfg.links
|
||||
systemd.network.units = mapAttrs' (n: v: nameValuePair "${n}.link" (linkToUnit n v)) cfg.links
|
||||
// mapAttrs' (n: v: nameValuePair "${n}.netdev" (netdevToUnit n v)) cfg.netdevs
|
||||
// mapAttrs' (n: v: nameValuePair "${n}.network" (networkToUnit n v)) cfg.networks;
|
||||
|
||||
environment.etc."systemd/network".source =
|
||||
generateUnits "network" cfg.units [] [];
|
||||
environment.etc = unitFiles;
|
||||
|
||||
systemd.services.systemd-networkd = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
restartTriggers = [ config.environment.etc."systemd/network".source ];
|
||||
restartTriggers = map (f: f.source) (unitFiles);
|
||||
};
|
||||
|
||||
systemd.services.systemd-networkd-wait-online = {
|
||||
@ -687,8 +698,5 @@ in
|
||||
};
|
||||
|
||||
services.resolved.enable = mkDefault true;
|
||||
services.timesyncd.enable = mkDefault config.services.ntp.enable;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -6,14 +6,21 @@ with lib;
|
||||
|
||||
options = {
|
||||
|
||||
services.timesyncd.enable = mkOption {
|
||||
default = false;
|
||||
services.timesyncd = {
|
||||
enable = mkOption {
|
||||
default = !config.boot.isContainer;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Enables the systemd NTP client daemon.
|
||||
'';
|
||||
};
|
||||
|
||||
servers = mkOption {
|
||||
default = config.networking.timeServers;
|
||||
description = ''
|
||||
The set of NTP servers from which to synchronise.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf config.services.timesyncd.enable {
|
||||
@ -30,8 +37,6 @@ with lib;
|
||||
NTP=${concatStringsSep " " config.services.ntp.servers}
|
||||
'';
|
||||
|
||||
systemd.services.ntpd.enable = false;
|
||||
|
||||
users.extraUsers.systemd-timesync.uid = config.ids.uids.systemd-timesync;
|
||||
users.extraGroups.systemd-timesync.gid = config.ids.gids.systemd-timesync;
|
||||
|
||||
|
@ -9,6 +9,15 @@ let kernel = config.boot.kernelPackages.kernel; in
|
||||
|
||||
{
|
||||
|
||||
# This option is a dummy that if used in conjunction with
|
||||
# modules/virtualisation/qemu-vm.nix gets merged with the same option defined
|
||||
# there and only is declared here because some modules use
|
||||
# test-instrumentation.nix but not qemu-vm.nix.
|
||||
#
|
||||
# One particular example are the boot tests where we want instrumentation
|
||||
# within the images but not other stuff like setting up 9p filesystems.
|
||||
options.virtualisation.qemu.program = mkOption { type = types.path; };
|
||||
|
||||
config = {
|
||||
|
||||
systemd.services.backdoor =
|
||||
@ -110,6 +119,9 @@ let kernel = config.boot.kernelPackages.kernel; in
|
||||
|
||||
networking.usePredictableInterfaceNames = false;
|
||||
|
||||
# Make sure we use a patched QEMU that ignores file ownership.
|
||||
virtualisation.qemu.program = "${pkgs.qemu_test}/bin/qemu-kvm";
|
||||
|
||||
# Make it easy to log in as root when running the test interactively.
|
||||
users.extraUsers.root.initialHashedPassword = mkOverride 150 "";
|
||||
|
||||
|
@ -476,6 +476,17 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
macvlans = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
example = [ "eth1" "eth2" ];
|
||||
description = ''
|
||||
The list of host interfaces from which macvlans will be
|
||||
created. For each interface specified, a macvlan interface
|
||||
will be created and moved to the container.
|
||||
'';
|
||||
};
|
||||
|
||||
extraVeths = mkOption {
|
||||
type = with types; attrsOf (submodule { options = networkOptions; });
|
||||
default = {};
|
||||
@ -654,6 +665,7 @@ in
|
||||
''}
|
||||
''}
|
||||
INTERFACES="${toString cfg.interfaces}"
|
||||
MACVLANS="${toString cfg.macvlans}"
|
||||
${optionalString cfg.autoStart ''
|
||||
AUTO_START=1
|
||||
''}
|
||||
@ -664,7 +676,7 @@ in
|
||||
# Generate /etc/hosts entries for the containers.
|
||||
networking.extraHosts = concatStrings (mapAttrsToList (name: cfg: optionalString (cfg.localAddress != null)
|
||||
''
|
||||
${cfg.localAddress} ${name}.containers
|
||||
${head (splitString "/" cfg.localAddress)} ${name}.containers
|
||||
'') config.containers);
|
||||
|
||||
networking.dhcpcd.denyInterfaces = [ "ve-*" "vb-*" ];
|
||||
|
@ -125,7 +125,7 @@ in
|
||||
169.254.169.254 metadata.google.internal metadata
|
||||
'';
|
||||
|
||||
services.ntp.servers = [ "metadata.google.internal" ];
|
||||
networking.timeServers = [ "metadata.google.internal" ];
|
||||
|
||||
networking.usePredictableInterfaceNames = false;
|
||||
|
||||
|
54
nixos/modules/virtualisation/openstack/common.nix
Normal file
54
nixos/modules/virtualisation/openstack/common.nix
Normal file
@ -0,0 +1,54 @@
|
||||
{ lib }:
|
||||
|
||||
with lib;
|
||||
|
||||
rec {
|
||||
# A shell script string helper to get the value of a secret at
|
||||
# runtime.
|
||||
getSecret = secretOption:
|
||||
if secretOption.storage == "fromFile"
|
||||
then ''$(cat ${secretOption.value})''
|
||||
else ''${secretOption.value}'';
|
||||
|
||||
|
||||
# A shell script string help to replace at runtime in a file the
|
||||
# pattern of a secret by its value.
|
||||
replaceSecret = secretOption: filename: ''
|
||||
sed -i "s/${secretOption.pattern}/${getSecret secretOption}/g" ${filename}
|
||||
'';
|
||||
|
||||
# This generates an option that can be used to declare secrets which
|
||||
# can be stored in the nix store, or not. A pattern is written in
|
||||
# the nix store to represent the secret. The pattern can
|
||||
# then be overwritten with the value of the secret at runtime.
|
||||
mkSecretOption = {name, description ? ""}:
|
||||
mkOption {
|
||||
description = description;
|
||||
type = types.submodule ({
|
||||
options = {
|
||||
pattern = mkOption {
|
||||
type = types.str;
|
||||
default = "##${name}##";
|
||||
description = "The pattern that represent the secret.";
|
||||
};
|
||||
storage = mkOption {
|
||||
type = types.enum [ "fromNixStore" "fromFile" ];
|
||||
description = ''
|
||||
Choose the way the password is provisionned. If
|
||||
fromNixStore is used, the value is the password and it is
|
||||
written in the nix store. If fromFile is used, the value
|
||||
is a path from where the password will be read at
|
||||
runtime. This is generally used with <link
|
||||
xlink:href="https://nixos.org/nixops/manual/#opt-deployment.keys">
|
||||
deployment keys</link> of Nixops.
|
||||
'';};
|
||||
value = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
If the storage is fromNixStore, the value is the password itself,
|
||||
otherwise it is a path to the file that contains the password.
|
||||
'';
|
||||
};
|
||||
};});
|
||||
};
|
||||
}
|
220
nixos/modules/virtualisation/openstack/keystone.nix
Normal file
220
nixos/modules/virtualisation/openstack/keystone.nix
Normal file
@ -0,0 +1,220 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib; with import ./common.nix {inherit lib;};
|
||||
|
||||
let
|
||||
cfg = config.virtualisation.openstack.keystone;
|
||||
keystoneConfTpl = pkgs.writeText "keystone.conf" ''
|
||||
[DEFAULT]
|
||||
admin_token = ${cfg.adminToken.pattern}
|
||||
policy_file=${cfg.package}/etc/policy.json
|
||||
|
||||
[database]
|
||||
|
||||
connection = "mysql://${cfg.database.user}:${cfg.database.password.pattern}@${cfg.database.host}/${cfg.database.name}"
|
||||
|
||||
[paste_deploy]
|
||||
config_file = ${cfg.package}/etc/keystone-paste.ini
|
||||
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
keystoneConf = "/var/lib/keystone/keystone.conf";
|
||||
|
||||
in {
|
||||
options.virtualisation.openstack.keystone = {
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
example = literalExample "pkgs.keystone";
|
||||
description = ''
|
||||
Keystone package to use.
|
||||
'';
|
||||
};
|
||||
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Enable Keystone, the OpenStack Identity Service
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Additional text appended to <filename>keystone.conf</filename>,
|
||||
the main Keystone configuration file.
|
||||
'';
|
||||
};
|
||||
|
||||
adminToken = mkSecretOption {
|
||||
name = "adminToken";
|
||||
description = ''
|
||||
This is the admin token used to boostrap keystone,
|
||||
ie. to provision first resources.
|
||||
'';
|
||||
};
|
||||
|
||||
bootstrap = {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Bootstrap the Keystone service by creating the service
|
||||
tenant, an admin account and a public endpoint. This options
|
||||
provides a ready-to-use admin account. This is only done at
|
||||
the first Keystone execution by the systemd post start.
|
||||
|
||||
Note this option is a helper for setting up development or
|
||||
testing environments.
|
||||
'';
|
||||
};
|
||||
|
||||
endpointPublic = mkOption {
|
||||
type = types.str;
|
||||
default = "http://localhost:5000/v2.0";
|
||||
description = ''
|
||||
The public identity endpoint. The link <link
|
||||
xlink:href="http://docs.openstack.org/liberty/install-guide-rdo/keystone-services.html">
|
||||
create keystone endpoint</link> provides more informations
|
||||
about that.
|
||||
'';
|
||||
};
|
||||
|
||||
adminUsername = mkOption {
|
||||
type = types.str;
|
||||
default = "admin";
|
||||
description = ''
|
||||
A keystone admin username.
|
||||
'';
|
||||
};
|
||||
|
||||
adminPassword = mkSecretOption {
|
||||
name = "keystoneAdminPassword";
|
||||
description = ''
|
||||
The keystone admin user's password.
|
||||
'';
|
||||
};
|
||||
|
||||
adminTenant = mkOption {
|
||||
type = types.str;
|
||||
default = "admin";
|
||||
description = ''
|
||||
A keystone admin tenant name.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
database = {
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
description = ''
|
||||
Host of the database.
|
||||
'';
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
default = "keystone";
|
||||
description = ''
|
||||
Name of the existing database.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "keystone";
|
||||
description = ''
|
||||
The database user. The user must exist and has access to
|
||||
the specified database.
|
||||
'';
|
||||
};
|
||||
password = mkSecretOption {
|
||||
name = "mysqlPassword";
|
||||
description = "The database user's password";};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# Note: when changing the default, make it conditional on
|
||||
# ‘system.stateVersion’ to maintain compatibility with existing
|
||||
# systems!
|
||||
virtualisation.openstack.keystone.package = mkDefault pkgs.keystone;
|
||||
|
||||
users.extraUsers = [{
|
||||
name = "keystone";
|
||||
group = "keystone";
|
||||
uid = config.ids.uids.keystone;
|
||||
}];
|
||||
users.extraGroups = [{
|
||||
name = "keystone";
|
||||
gid = config.ids.gids.keystone;
|
||||
}];
|
||||
|
||||
systemd.services.keystone-all = {
|
||||
description = "OpenStack Keystone Daemon";
|
||||
after = [ "network.target"];
|
||||
path = [ cfg.package pkgs.mysql pkgs.curl pkgs.pythonPackages.keystoneclient pkgs.gawk ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
preStart = ''
|
||||
mkdir -m 755 -p /var/lib/keystone
|
||||
|
||||
cp ${keystoneConfTpl} ${keystoneConf};
|
||||
chown keystone:keystone ${keystoneConf};
|
||||
chmod 640 ${keystoneConf}
|
||||
|
||||
${replaceSecret cfg.database.password keystoneConf}
|
||||
${replaceSecret cfg.adminToken keystoneConf}
|
||||
|
||||
# Initialise the database
|
||||
${cfg.package}/bin/keystone-manage --config-file=${keystoneConf} db_sync
|
||||
# Set up the keystone's PKI infrastructure
|
||||
${cfg.package}/bin/keystone-manage --config-file=${keystoneConf} pki_setup --keystone-user keystone --keystone-group keystone
|
||||
'';
|
||||
postStart = optionalString cfg.bootstrap.enable ''
|
||||
set -eu
|
||||
# Wait until the keystone is available for use
|
||||
count=0
|
||||
while ! curl --fail -s http://localhost:35357/v2.0 > /dev/null
|
||||
do
|
||||
if [ $count -eq 30 ]
|
||||
then
|
||||
echo "Tried 30 times, giving up..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Keystone not yet started. Waiting for 1 second..."
|
||||
count=$((count++))
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# We use the service token to create a first admin user
|
||||
export OS_SERVICE_ENDPOINT=http://localhost:35357/v2.0
|
||||
export OS_SERVICE_TOKEN=${getSecret cfg.adminToken}
|
||||
|
||||
# If the tenant service doesn't exist, we consider
|
||||
# keystone is not initialized
|
||||
if ! keystone tenant-get service
|
||||
then
|
||||
keystone tenant-create --name service
|
||||
keystone tenant-create --name ${cfg.bootstrap.adminTenant}
|
||||
keystone user-create --name ${cfg.bootstrap.adminUsername} --tenant ${cfg.bootstrap.adminTenant} --pass ${getSecret cfg.bootstrap.adminPassword}
|
||||
keystone role-create --name admin
|
||||
keystone role-create --name Member
|
||||
keystone user-role-add --tenant ${cfg.bootstrap.adminTenant} --user ${cfg.bootstrap.adminUsername} --role admin
|
||||
keystone service-create --type identity --name keystone
|
||||
ID=$(keystone service-get keystone | awk '/ id / { print $4 }')
|
||||
keystone endpoint-create --region RegionOne --service $ID --publicurl ${cfg.bootstrap.endpointPublic} --adminurl http://localhost:35357/v2.0 --internalurl http://localhost:5000/v2.0
|
||||
fi
|
||||
'';
|
||||
serviceConfig = {
|
||||
PermissionsStartOnly = true; # preStart must be run as root
|
||||
TimeoutStartSec = "600"; # 10min for initial db migrations
|
||||
User = "keystone";
|
||||
Group = "keystone";
|
||||
ExecStart = "${cfg.package}/bin/keystone-all --config-file=${keystoneConf}";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -57,7 +57,7 @@ in
|
||||
|
||||
boot.kernelModules = [ "prl_tg" "prl_eth" "prl_fs" "prl_fs_freeze" "acpi_memhotplug" ];
|
||||
|
||||
services.ntp.enable = false;
|
||||
services.timesyncd.enable = false;
|
||||
|
||||
systemd.services.prltoolsd = {
|
||||
description = "Parallels Tools' service";
|
||||
|
@ -70,7 +70,7 @@ let
|
||||
'')}
|
||||
|
||||
# Start QEMU.
|
||||
exec ${pkgs.qemu_kvm}/bin/qemu-kvm \
|
||||
exec ${cfg.qemu.program} \
|
||||
-name ${vmName} \
|
||||
-m ${toString config.virtualisation.memorySize} \
|
||||
${optionalString (pkgs.stdenv.system == "x86_64-linux") "-cpu kvm64"} \
|
||||
@ -299,6 +299,14 @@ in
|
||||
};
|
||||
|
||||
virtualisation.qemu = {
|
||||
program = mkOption {
|
||||
type = types.path;
|
||||
default = "${pkgs.qemu_kvm}/bin/qemu-kvm";
|
||||
defaultText = "\${pkgs.qemu_kvm}/bin/qemu-kvm";
|
||||
example = literalExample "\${pkgs.qemu_test}/bin/qemu-kvm";
|
||||
description = "The QEMU variant used to start the VM.";
|
||||
};
|
||||
|
||||
options =
|
||||
mkOption {
|
||||
type = types.listOf types.unspecified;
|
||||
@ -470,7 +478,7 @@ in
|
||||
boot.initrd.luks.devices = mkVMOverride {};
|
||||
|
||||
# Don't run ntpd in the guest. It should get the correct time from KVM.
|
||||
services.ntp.enable = false;
|
||||
services.timesyncd.enable = false;
|
||||
|
||||
system.build.vm = pkgs.runCommand "nixos-vm" { preferLocalBuild = true; }
|
||||
''
|
||||
|
@ -18,5 +18,5 @@
|
||||
services.syslogd.tty = "hvc0";
|
||||
|
||||
# Don't run ntpd, since we should get the correct time from Dom0.
|
||||
services.ntp.enable = false;
|
||||
services.timesyncd.enable = false;
|
||||
}
|
||||
|
@ -229,6 +229,8 @@ in rec {
|
||||
tests.containers-extra_veth = callTest tests/containers-extra_veth.nix {};
|
||||
tests.containers-physical_interfaces = callTest tests/containers-physical_interfaces.nix {};
|
||||
tests.containers-tmpfs = callTest tests/containers-tmpfs.nix {};
|
||||
tests.containers-hosts = callTest tests/containers-hosts.nix {};
|
||||
tests.containers-macvlans = callTest tests/containers-macvlans.nix {};
|
||||
tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
|
||||
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
|
||||
tests.ecryptfs = callTest tests/ecryptfs.nix {};
|
||||
@ -256,6 +258,7 @@ in rec {
|
||||
tests.kde5 = callTest tests/kde5.nix {};
|
||||
tests.keymap = callSubTests tests/keymap.nix {};
|
||||
tests.initrdNetwork = callTest tests/initrd-network.nix {};
|
||||
tests.keystone = callTest tests/keystone.nix {};
|
||||
tests.kubernetes = hydraJob (import tests/kubernetes.nix { system = "x86_64-linux"; });
|
||||
tests.latestKernel.login = callTest tests/login.nix { latestKernel = true; };
|
||||
#tests.lightdm = callTest tests/lightdm.nix {};
|
||||
|
52
nixos/tests/containers-hosts.nix
Normal file
52
nixos/tests/containers-hosts.nix
Normal file
@ -0,0 +1,52 @@
|
||||
# Test for NixOS' container support.
|
||||
|
||||
import ./make-test.nix ({ pkgs, ...} : {
|
||||
name = "containers-hosts";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ montag451 ];
|
||||
};
|
||||
|
||||
machine =
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
virtualisation.memorySize = 256;
|
||||
virtualisation.vlans = [];
|
||||
|
||||
networking.bridges.br0.interfaces = [];
|
||||
networking.interfaces.br0 = {
|
||||
ip4 = [ { address = "10.11.0.254"; prefixLength = 24; } ];
|
||||
};
|
||||
|
||||
# Force /etc/hosts to be the only source for host name resolution
|
||||
environment.etc."nsswitch.conf".text = lib.mkForce ''
|
||||
hosts: files
|
||||
'';
|
||||
|
||||
containers.simple = {
|
||||
autoStart = true;
|
||||
privateNetwork = true;
|
||||
localAddress = "10.10.0.1";
|
||||
hostAddress = "10.10.0.254";
|
||||
|
||||
config = {};
|
||||
};
|
||||
|
||||
containers.netmask = {
|
||||
autoStart = true;
|
||||
privateNetwork = true;
|
||||
hostBridge = "br0";
|
||||
localAddress = "10.11.0.1/24";
|
||||
|
||||
config = {};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
$machine->waitForUnit("default.target");
|
||||
|
||||
# Ping the containers using the entries added in /etc/hosts
|
||||
$machine->succeed("ping -n -c 1 simple.containers");
|
||||
$machine->succeed("ping -n -c 1 netmask.containers");
|
||||
'';
|
||||
})
|
82
nixos/tests/containers-macvlans.nix
Normal file
82
nixos/tests/containers-macvlans.nix
Normal file
@ -0,0 +1,82 @@
|
||||
# Test for NixOS' container support.
|
||||
|
||||
let
|
||||
# containers IP on VLAN 1
|
||||
containerIp1 = "192.168.1.253";
|
||||
containerIp2 = "192.168.1.254";
|
||||
in
|
||||
|
||||
import ./make-test.nix ({ pkgs, ...} : {
|
||||
name = "containers-macvlans";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ montag451 ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
|
||||
machine1 =
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
virtualisation.memorySize = 256;
|
||||
virtualisation.vlans = [ 1 ];
|
||||
|
||||
# To be able to ping containers from the host, it is necessary
|
||||
# to create a macvlan on the host on the VLAN 1 network.
|
||||
networking.macvlans.mv-eth1-host = {
|
||||
interface = "eth1";
|
||||
mode = "bridge";
|
||||
};
|
||||
networking.interfaces.eth1.ip4 = lib.mkForce [];
|
||||
networking.interfaces.mv-eth1-host = {
|
||||
ip4 = [ { address = "192.168.1.1"; prefixLength = 24; } ];
|
||||
};
|
||||
|
||||
containers.test1 = {
|
||||
autoStart = true;
|
||||
macvlans = [ "eth1" ];
|
||||
|
||||
config = {
|
||||
networking.interfaces.mv-eth1 = {
|
||||
ip4 = [ { address = containerIp1; prefixLength = 24; } ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
containers.test2 = {
|
||||
autoStart = true;
|
||||
macvlans = [ "eth1" ];
|
||||
|
||||
config = {
|
||||
networking.interfaces.mv-eth1 = {
|
||||
ip4 = [ { address = containerIp2; prefixLength = 24; } ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
machine2 =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
virtualisation.memorySize = 256;
|
||||
virtualisation.vlans = [ 1 ];
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
$machine1->waitForUnit("default.target");
|
||||
$machine2->waitForUnit("default.target");
|
||||
|
||||
# Ping between containers to check that macvlans are created in bridge mode
|
||||
$machine1->succeed("nixos-container run test1 -- ping -n -c 1 ${containerIp2}");
|
||||
|
||||
# Ping containers from the host (machine1)
|
||||
$machine1->succeed("ping -n -c 1 ${containerIp1}");
|
||||
$machine1->succeed("ping -n -c 1 ${containerIp2}");
|
||||
|
||||
# Ping containers from the second machine to check that containers are reachable from the outside
|
||||
$machine2->succeed("ping -n -c 1 ${containerIp1}");
|
||||
$machine2->succeed("ping -n -c 1 ${containerIp2}");
|
||||
'';
|
||||
})
|
@ -8,7 +8,9 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||
|
||||
machine = { config, pkgs, ... }:
|
||||
{ security.grsecurity.enable = true;
|
||||
boot.kernel.sysctl."kernel.grsecurity.audit_mount" = 0;
|
||||
boot.kernel.sysctl."kernel.grsecurity.deter_bruteforce" = 0;
|
||||
networking.useDHCP = false;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
@ -20,16 +22,14 @@ import ./make-test.nix ({ pkgs, ...} : {
|
||||
|
||||
subtest "paxtest", sub {
|
||||
# TODO: running paxtest blackhat hangs the vm
|
||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/anonmap") =~ /Killed/ or die;
|
||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/execbss") =~ /Killed/ or die;
|
||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/execdata") =~ /Killed/ or die;
|
||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/execheap") =~ /Killed/ or die;
|
||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/execstack") =~ /Killed/ or die;
|
||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotanon") =~ /Killed/ or die;
|
||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotbss") =~ /Killed/ or die;
|
||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotdata") =~ /Killed/ or die;
|
||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotheap") =~ /Killed/ or die;
|
||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotstack") =~ /Killed/ or die;
|
||||
my @pax_mustkill = (
|
||||
"anonmap", "execbss", "execdata", "execheap", "execstack",
|
||||
"mprotanon", "mprotbss", "mprotdata", "mprotheap", "mprotstack",
|
||||
);
|
||||
foreach my $name (@pax_mustkill) {
|
||||
my $paxtest = "${pkgs.paxtest}/lib/paxtest/" . $name;
|
||||
$machine->succeed($paxtest) =~ /Killed/ or die
|
||||
}
|
||||
};
|
||||
|
||||
# tcc -run executes run-time generated code and so allows us to test whether
|
||||
|
82
nixos/tests/keystone.nix
Normal file
82
nixos/tests/keystone.nix
Normal file
@ -0,0 +1,82 @@
|
||||
{ system ? builtins.currentSystem }:
|
||||
|
||||
with import ../lib/testing.nix { inherit system; };
|
||||
with pkgs.lib;
|
||||
|
||||
let
|
||||
keystoneMysqlPassword = "keystoneMysqlPassword";
|
||||
keystoneMysqlPasswordFile = "/var/run/keystoneMysqlPassword";
|
||||
keystoneAdminPassword = "keystoneAdminPassword";
|
||||
|
||||
createKeystoneDb = pkgs.writeText "create-keystone-db.sql" ''
|
||||
create database keystone;
|
||||
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '${keystoneMysqlPassword}';
|
||||
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '${keystoneMysqlPassword}';
|
||||
'';
|
||||
# The admin keystone account
|
||||
adminOpenstackCmd = "OS_TENANT_NAME=admin OS_USERNAME=admin OS_PASSWORD=${keystoneAdminPassword} OS_AUTH_URL=http://localhost:5000/v3 OS_IDENTITY_API_VERSION=3 openstack";
|
||||
# The created demo keystone account
|
||||
demoOpenstackCmd = "OS_TENANT_NAME=demo OS_USERNAME=demo OS_PASSWORD=demo OS_AUTH_URL=http://localhost:5000/v3 OS_IDENTITY_API_VERSION=3 openstack";
|
||||
|
||||
in makeTest {
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ lewo ];
|
||||
};
|
||||
machine =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
# This is to simulate nixops deployment process.
|
||||
# https://nixos.org/nixops/manual/#opt-deployment.keys
|
||||
boot.postBootCommands = "echo ${keystoneMysqlPassword} > ${keystoneMysqlPasswordFile}";
|
||||
|
||||
services.mysql.enable = true;
|
||||
services.mysql.initialScript = createKeystoneDb;
|
||||
|
||||
virtualisation = {
|
||||
|
||||
openstack.keystone = {
|
||||
enable = true;
|
||||
# Check if we can get the secret from a file
|
||||
database.password = {
|
||||
value = keystoneMysqlPasswordFile;
|
||||
storage = "fromFile";
|
||||
};
|
||||
adminToken = {
|
||||
value = "adminToken";
|
||||
storage = "fromNixStore";
|
||||
};
|
||||
|
||||
bootstrap.enable = true;
|
||||
# Check if we can get the secret from the store
|
||||
bootstrap.adminPassword = {
|
||||
value = keystoneAdminPassword;
|
||||
storage = "fromNixStore";
|
||||
};
|
||||
};
|
||||
|
||||
memorySize = 2096;
|
||||
diskSize = 4 * 1024;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs.pythonPackages; with pkgs; [
|
||||
openstackclient
|
||||
];
|
||||
};
|
||||
|
||||
testScript =
|
||||
''
|
||||
$machine->waitForUnit("keystone-all.service");
|
||||
|
||||
# Verify that admin ccount is working
|
||||
$machine->succeed("${adminOpenstackCmd} token issue");
|
||||
|
||||
# Try to create a new user
|
||||
$machine->succeed("${adminOpenstackCmd} project create --domain default --description 'Demo Project' demo");
|
||||
$machine->succeed("${adminOpenstackCmd} user create --domain default --password demo demo");
|
||||
$machine->succeed("${adminOpenstackCmd} role create user");
|
||||
$machine->succeed("${adminOpenstackCmd} role add --project demo --user demo user");
|
||||
|
||||
# Verify this new account is working
|
||||
$machine->succeed("${demoOpenstackCmd} token issue");
|
||||
'';
|
||||
}
|
@ -5,11 +5,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "moc-${version}";
|
||||
version = "2.5.1";
|
||||
version = "2.5.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://ftp.daper.net/pub/soft/moc/stable/moc-${version}.tar.bz2";
|
||||
sha256 = "1wn4za08z64bhsgfhr9c0crfyvy8c3b6a337wx7gz19am5srqh8v";
|
||||
sha256 = "026v977kwb0wbmlmf6mnik328plxg8wykfx9ryvqhirac0aq39pk";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
43
pkgs/applications/audio/sisco.lv2/default.nix
Normal file
43
pkgs/applications/audio/sisco.lv2/default.nix
Normal file
@ -0,0 +1,43 @@
|
||||
{ stdenv, fetchFromGitHub, lv2, pkgconfig, mesa, cairo, pango, libjack2 }:
|
||||
|
||||
let
|
||||
name = "sisco.lv2-${version}";
|
||||
version = "0.7.0";
|
||||
|
||||
robtkVersion = "80a2585253a861c81f0bfb7e4579c75f5c73af89";
|
||||
robtkName = "robtk-${robtkVersion}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "x42";
|
||||
repo = "sisco.lv2";
|
||||
rev = "v${version}";
|
||||
sha256 = "1r6g29yqbdqgkh01x6d3nvmvc58rk2dp94fd0qyyizq37a1qplj1";
|
||||
};
|
||||
|
||||
robtkSrc = fetchFromGitHub {
|
||||
owner = "x42";
|
||||
repo = "robtk";
|
||||
rev = robtkVersion;
|
||||
sha256 = "0gk16nrvnrffqqw0yd015kja9wkgbzvb648bl1pagriabhznhfxl";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
inherit name;
|
||||
|
||||
srcs = [ src robtkSrc ];
|
||||
sourceRoot = "sisco.lv2-${src.rev}-src";
|
||||
|
||||
buildInputs = [ pkgconfig lv2 pango cairo libjack2 mesa ];
|
||||
|
||||
postUnpack = "chmod u+w -R ${robtkName}-src; mv ${robtkName}-src/* ${sourceRoot}/robtk";
|
||||
sisco_VERSION = version;
|
||||
preConfigure = "makeFlagsArray=(PREFIX=$out)";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Simple audio oscilloscope with variable time scale, triggering, cursors and numeric readout in LV2 plugin format";
|
||||
homepage = http://x42.github.io/sisco.lv2/;
|
||||
license = licenses.gpl2;
|
||||
maintainers = [ maintainers.e-user ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -10,9 +10,15 @@
|
||||
, gnutar
|
||||
, gzip
|
||||
, jdk
|
||||
, fontconfig
|
||||
, freetype
|
||||
, libpulseaudio
|
||||
, libX11
|
||||
, libXext
|
||||
, libXi
|
||||
, libXrandr
|
||||
, libXrender
|
||||
, libXtst
|
||||
, makeWrapper
|
||||
, pciutils
|
||||
, pkgsi686Linux
|
||||
@ -27,8 +33,8 @@
|
||||
|
||||
let
|
||||
|
||||
version = "2.1.3.0";
|
||||
build = "143.3101438";
|
||||
version = "2.2.3.0";
|
||||
build = "145.3537739";
|
||||
|
||||
androidStudio = stdenv.mkDerivation {
|
||||
name = "android-studio";
|
||||
@ -75,11 +81,23 @@ let
|
||||
# For Android emulator
|
||||
libpulseaudio
|
||||
libX11
|
||||
libXext
|
||||
libXrender
|
||||
libXtst
|
||||
libXi
|
||||
freetype
|
||||
fontconfig
|
||||
]}" --set QT_XKB_CONFIG_ROOT "${xkeyboard_config}/share/X11/xkb"
|
||||
'';
|
||||
src = fetchurl {
|
||||
url = "https://dl.google.com/dl/android/studio/ide-zips/${version}/android-studio-ide-${build}-linux.zip";
|
||||
sha256 = "1xlz3ibqrm4ckw4lgbkzbxvpgg0y8hips9b54p4d15f34i0r8bvj";
|
||||
sha256 = "10fmffkvvbnmgjxb4rq7rjwnn16jp5phw6div4n7hh2ad6spf8wq";
|
||||
};
|
||||
meta = {
|
||||
description = "The Official IDE for Android";
|
||||
homepage = https://developer.android.com/studio/index.html;
|
||||
license = stdenv.lib.licenses.asl20;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -619,10 +619,10 @@
|
||||
el-search = callPackage ({ elpaBuild, emacs, fetchurl, lib, stream }:
|
||||
elpaBuild {
|
||||
pname = "el-search";
|
||||
version = "1.1.2";
|
||||
version = "1.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/el-search-1.1.2.tar";
|
||||
sha256 = "1cav55nx1045c3xasi5d76yyqi68ygp9dpqv9bazrqgcpsmw6y8b";
|
||||
url = "https://elpa.gnu.org/packages/el-search-1.2.tar";
|
||||
sha256 = "0sz78kn9nx390aq5wqz174p8ppw987rzsh892ly166qz4ikwys5a";
|
||||
};
|
||||
packageRequires = [ emacs stream ];
|
||||
meta = {
|
||||
@ -967,6 +967,19 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
json-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
|
||||
pname = "json-mode";
|
||||
version = "0.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/json-mode-0.1.el";
|
||||
sha256 = "025bwpx7nc1qhdyf2yaqjdr6x1qr6q45776yvy427xdh4nbk054l";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/json-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
jumpc = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "jumpc";
|
||||
version = "3.0";
|
||||
@ -1351,10 +1364,10 @@
|
||||
}) {};
|
||||
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "org";
|
||||
version = "20161118";
|
||||
version = "20161214";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/org-20161118.tar";
|
||||
sha256 = "1w9g8r08kaiw9f4fjsj0hbffzq85rj734j5lxvbaafbnz7dbklk1";
|
||||
url = "https://elpa.gnu.org/packages/org-20161214.tar";
|
||||
sha256 = "0pa9d0l6axif5wlzi7lvxl0fpjwwvc79cy9d37z7md4hxyjdvwzm";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1456,6 +1456,27 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
apib-mode = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, markdown-mode, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "apib-mode";
|
||||
version = "0.6";
|
||||
src = fetchFromGitHub {
|
||||
owner = "w-vi";
|
||||
repo = "apib-mode";
|
||||
rev = "18aebab7cd61b9d296b7d5d2de0c828e2058c906";
|
||||
sha256 = "0sj948j4s26sxxandjzjjzmjqma7vf86msyyi23gsljy1q28vwlf";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/dc2ebb04f975d8226a76260895399c937d6a1940/recipes/apib-mode";
|
||||
sha256 = "0y3n0xmyc4gkypq07v4sp0i6291qaj2m13zkg6mxp61zm669v2fb";
|
||||
name = "apib-mode";
|
||||
};
|
||||
packageRequires = [ emacs markdown-mode ];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/apib-mode";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
apples-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "apples-mode";
|
||||
@ -2452,12 +2473,12 @@
|
||||
bind-map = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "bind-map";
|
||||
version = "1.1.0";
|
||||
version = "1.1.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "justbur";
|
||||
repo = "emacs-bind-map";
|
||||
rev = "ffe5e636178ab9878fa8213fd1a1d4862ccb3d5f";
|
||||
sha256 = "1h07s8g4vpq6c8sl5m6vxvd598iks160bksv0wn51680gh05f0pa";
|
||||
rev = "bf4181e3a41463684adfffc6c5c305b30480e30f";
|
||||
sha256 = "0vrk17yg3jbww92p433p64ijmjf7cjg2wmzi9w418235w1xdfzz8";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/f58800af5965a6e7c9314aa00e971196ea0d036e/recipes/bind-map";
|
||||
@ -2788,12 +2809,12 @@
|
||||
bui = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "bui";
|
||||
version = "1.0";
|
||||
version = "1.0.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "alezost";
|
||||
repo = "bui.el";
|
||||
rev = "c08d91b2d314b52c9ca5c2d5be7a7b2367b68162";
|
||||
sha256 = "104q089cyy0m0hkdnvblss884npc4bv5xf03qr35x3s3573lxh4a";
|
||||
rev = "70ea295ec04cb34e383dc7d62927452410876999";
|
||||
sha256 = "1whpln3zibqxnszvrm9chsaaxxxfb0kg3vvfy6j4drrjy5ah2vky";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/38b7c9345de75a707b4a73e8bb8e2f213e4fd739/recipes/bui";
|
||||
@ -3909,6 +3930,27 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
clues-theme = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "clues-theme";
|
||||
version = "1.0.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "jasonm23";
|
||||
repo = "emacs-clues-theme";
|
||||
rev = "abd61f2b7f3e98de58ca26e6d1230e70c6406cc7";
|
||||
sha256 = "118k5bnlk9sc2n04saaxjncmc1a4m1wlf2y7xyklpffkazbd0m72";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/bf43125306df445ac829c2edb98dd608bc1407de/recipes/clues-theme";
|
||||
sha256 = "12g7373js5a2fa0m396k9kjhxvx3qws7n1r435nr9zgwaw7xvciy";
|
||||
name = "clues-theme";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/clues-theme";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
cm-mode = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "cm-mode";
|
||||
@ -4650,6 +4692,27 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
company-statistics = callPackage ({ company, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "company-statistics";
|
||||
version = "0.2.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "company-mode";
|
||||
repo = "company-statistics";
|
||||
rev = "906d8137224c1a5bd1dc913940e0d32ffecf5523";
|
||||
sha256 = "0c98kfg7gimjx9cf8dmbk9mdsrybhphshrdl8dhif3zqvn6gxyd7";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/89d05b43f31ec157ce8e7bfba4b7c9119bda6dd2/recipes/company-statistics";
|
||||
sha256 = "1fl4ldj17m3xhi6xbw3bp9c2jir34xv3jh9daiw8g912fv2l5dcj";
|
||||
name = "company-statistics";
|
||||
};
|
||||
packageRequires = [ company emacs ];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/company-statistics";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
company-tern = callPackage ({ cl-lib ? null, company, dash, dash-functional, fetchFromGitHub, fetchurl, lib, melpaBuild, s, tern }:
|
||||
melpaBuild {
|
||||
pname = "company-tern";
|
||||
@ -4860,6 +4923,27 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
copy-as-format = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "copy-as-format";
|
||||
version = "0.0.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "sshaw";
|
||||
repo = "copy-as-format";
|
||||
rev = "e3e130a34d70deaa1ff81fe1e3b3898c1121c107";
|
||||
sha256 = "1llkzvbw7ci4x20pqaacri82qplsfzxb20xw7v373i5jc83wjv9z";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/42fe8a2113d1c15701abe7a7e0a68e939c3d789b/recipes/copy-as-format";
|
||||
sha256 = "1yij5mqm0dg6326yms0a2w8gs42kdxq0ih8dhkpdar54r0bk3m8k";
|
||||
name = "copy-as-format";
|
||||
};
|
||||
packageRequires = [ cl-lib ];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/copy-as-format";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
copyit = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "copyit";
|
||||
@ -5386,12 +5470,12 @@
|
||||
cython-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "cython-mode";
|
||||
version = "0.25.2pre0";
|
||||
version = "0.25.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "cython";
|
||||
repo = "cython";
|
||||
rev = "1b61bc346a8233f6ef7576bbbba0cb8a19c46efb";
|
||||
sha256 = "1czd04vvl7gzaj1fmzkmd36cpsg22d3gg7sqyfh742ycw1ggkpzz";
|
||||
rev = "c9bcf1bed3acf367d6deb0c273cf22db0f18dab2";
|
||||
sha256 = "16yd296n0nh96pnkjpdbdz4i7ga4j961pkzm3cbnika26xwndx03";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/be9bfabe3f79153cb859efc7c3051db244a63879/recipes/cython-mode";
|
||||
@ -5614,6 +5698,27 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
debpaste = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild, xml-rpc }:
|
||||
melpaBuild {
|
||||
pname = "debpaste";
|
||||
version = "0.1.5";
|
||||
src = fetchFromGitHub {
|
||||
owner = "alezost";
|
||||
repo = "debpaste.el";
|
||||
rev = "6f2a400665062468ebd03a2ce1de2a73d9084958";
|
||||
sha256 = "1wi70r56pd5z0x4dp4m58p9asq03j74kdm4fi9vai83vsl2z9amq";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/13098bae76a3386689a9bf9c12f25b9a9b15145c/recipes/debpaste";
|
||||
sha256 = "1vgirfy4vdqkhllnnmcplhwmzqqwca3la5jfvvansykqriwbq9lw";
|
||||
name = "debpaste";
|
||||
};
|
||||
packageRequires = [ xml-rpc ];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/debpaste";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
decide = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "decide";
|
||||
@ -6690,35 +6795,14 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
dummy-h-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "dummy-h-mode";
|
||||
version = "1.0.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "yascentur";
|
||||
repo = "dummy-h-mode-el";
|
||||
rev = "27ad0991abb53e65d0402ef6c378075e4be0ed2d";
|
||||
sha256 = "033yqc19xxirbva65lz8hnwxj7pn7fx7dlnf70kq71iqclqa4v25";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f/recipes/dummy-h-mode";
|
||||
sha256 = "10lzfzq7md6s28w2zzlhswn3d6765g4vqzyjn2q5ms8pd2i4b4in";
|
||||
name = "dummy-h-mode";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/dummy-h-mode";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
dyalog-mode = callPackage ({ cl-lib ? null, fetchhg, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "dyalog-mode";
|
||||
version = "0.7";
|
||||
src = fetchhg {
|
||||
url = "https://bitbucket.com/harsman/dyalog-mode";
|
||||
rev = "befb5c650dfd";
|
||||
sha256 = "154bm7l1ra3l9lj9l1x21qi7f57k46kg24hyalrbawjw3q8c5np2";
|
||||
rev = "20a2166c8210";
|
||||
sha256 = "0gz0aiks3f53lqvnrnb33a1clq52ipd3i3miymvkkgspnz3vl12p";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/dyalog-mode";
|
||||
@ -7719,12 +7803,12 @@
|
||||
elm-mode = callPackage ({ emacs, f, fetchFromGitHub, fetchurl, let-alist, lib, melpaBuild, s }:
|
||||
melpaBuild {
|
||||
pname = "elm-mode";
|
||||
version = "0.20.2";
|
||||
version = "0.20.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "jcollard";
|
||||
repo = "elm-mode";
|
||||
rev = "529c20acb9efda756b69e267d73d33c66fa08293";
|
||||
sha256 = "08zl1v0k3dnn8g06l3xf1lp31fp60jpk6f3lkczi1l6ns36g11jx";
|
||||
rev = "29f50a940113d793a21998f3bb414fdd9b0c5daa";
|
||||
sha256 = "02c7xl9w81140l7p9kywr5qwsdyv92nxdhzqcxjk0r09x7s0cvsk";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/5d1a4d786b137f61ed3a1dd4ec236d0db120e571/recipes/elm-mode";
|
||||
@ -7853,8 +7937,8 @@
|
||||
sha256 = "1h0k3nvxy84wjsiiwpxd8xnwnvbiqld26ndv6wmxqpwsjav186ik";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/a36daf2b034653cd73ee2db2bc30df2a5be6f3d1/recipes/elpy";
|
||||
sha256 = "0n802bh7jj9zgz84xjrxvy33jl6s3hj5dqxafyfr87fank97hb6d";
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/1d8fcd8745bb15402c9f3b6f4573ea151415237a/recipes/elpy";
|
||||
sha256 = "1ri3dwnkw005plj1g5grmmq9np41sqk4s2v18pwsvr18ysnq6nnr";
|
||||
name = "elpy";
|
||||
};
|
||||
packageRequires = [
|
||||
@ -8790,12 +8874,12 @@
|
||||
erlang = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "erlang";
|
||||
version = "19.1.6";
|
||||
version = "19.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "erlang";
|
||||
repo = "otp";
|
||||
rev = "2b41d8f318b7e5ec139d42fd2f01a132699be839";
|
||||
sha256 = "120dqi8h2fwqfmh9g2nmkf153zlglzw9kkddz57xqvqq5arcs72y";
|
||||
rev = "3473ecd83a7bbe7e0bebb865f25dddb93e3bf10f";
|
||||
sha256 = "06pr4ydrqpp1skx85zjb1an4kvzv6vacb771vy71k54j7w6lh9hk";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/d9cd526f43981e0826af59cdc4bb702f644781d9/recipes/erlang";
|
||||
@ -9628,12 +9712,12 @@
|
||||
evil-opener = callPackage ({ evil, fetchFromGitHub, fetchurl, lib, melpaBuild, opener }:
|
||||
melpaBuild {
|
||||
pname = "evil-opener";
|
||||
version = "0.2.1";
|
||||
version = "0.2.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "0robustus1";
|
||||
repo = "opener.el";
|
||||
rev = "ad3c65a5a748230bf07c18f56b1998ac03e3807a";
|
||||
sha256 = "178h7sbpgsn0xl93j7375f2ahmqcszmbl3f7mfb6vgjmm791q03p";
|
||||
rev = "c384f67278046fdcd220275fdd212ab85672cbeb";
|
||||
sha256 = "0gci909a2rbx5i8dyzyrcddwdic7nvpk6y6djvn521yaag4sq87h";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/da8d4e5bf23985632f993336b9183fe9f480addc/recipes/evil-opener";
|
||||
@ -10871,6 +10955,27 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
flycheck-objc-clang = callPackage ({ emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "flycheck-objc-clang";
|
||||
version = "1.0.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "GyazSquare";
|
||||
repo = "flycheck-objc-clang";
|
||||
rev = "3140e4c74dbaa10e6f8edd794144d07399a8fda8";
|
||||
sha256 = "0zzb03qxfs5wky40hzmldkzq5gn4c7qknkd5ra2lghzj0az6n9ld";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/4ff4412f507371b93cfb85fc744e54110cd87338/recipes/flycheck-objc-clang";
|
||||
sha256 = "07mzwd04a69d7xpkjmhfmf95j69h6accnf9bb9br7jb1hi9vdalp";
|
||||
name = "flycheck-objc-clang";
|
||||
};
|
||||
packageRequires = [ emacs flycheck ];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/flycheck-objc-clang";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
flycheck-ocaml = callPackage ({ emacs, fetchFromGitHub, fetchurl, flycheck, let-alist, lib, melpaBuild, merlin }:
|
||||
melpaBuild {
|
||||
pname = "flycheck-ocaml";
|
||||
@ -11018,6 +11123,27 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
flycheck-swift3 = callPackage ({ emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "flycheck-swift3";
|
||||
version = "1.0.5";
|
||||
src = fetchFromGitHub {
|
||||
owner = "GyazSquare";
|
||||
repo = "flycheck-swift3";
|
||||
rev = "846b3045d018a13cadb8a8bfde83587802d7e1a2";
|
||||
sha256 = "06wzsi3lw938mc8sz06jxyclxpvrlyjgvs9998kpiyhz752sgfsw";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/f1fb8c731c118327dc0bbb726e046fec46bcfb82/recipes/flycheck-swift3";
|
||||
sha256 = "05yfrn42svcvdkr8mx16ii8llhzn33lxdawksjqiqg671s6fgdpa";
|
||||
name = "flycheck-swift3";
|
||||
};
|
||||
packageRequires = [ emacs flycheck ];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/flycheck-swift3";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
flycheck-tip = callPackage ({ emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild, popup }:
|
||||
melpaBuild {
|
||||
pname = "flycheck-tip";
|
||||
@ -17980,27 +18106,6 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
judge-indent = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "judge-indent";
|
||||
version = "1.1.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "yascentur";
|
||||
repo = "judge-indent-el";
|
||||
rev = "4cf8c8d3375f4d655b909a415cc4fa8d235a657a";
|
||||
sha256 = "11wybxrl2lny6vbf7qrxyf9wxw88ppvbrlfcd65paalrna2hn46h";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/73fb2c31f6af63145aae7c449bfde1bbb00e1100/recipes/judge-indent";
|
||||
sha256 = "1gakdhnlxfq8knnykqdw4bizb5y67m8xhi07zannd7bsfwi4k6rh";
|
||||
name = "judge-indent";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/judge-indent";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
jump = callPackage ({ fetchFromGitHub, fetchurl, findr, inflections, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "jump";
|
||||
@ -19292,12 +19397,12 @@
|
||||
magic-filetype = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, s }:
|
||||
melpaBuild {
|
||||
pname = "magic-filetype";
|
||||
version = "0.1.3";
|
||||
version = "0.2.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "zonuexe";
|
||||
repo = "magic-filetype.el";
|
||||
rev = "bccd17a8d152e4a2692c2bd71999f1d53c00262a";
|
||||
sha256 = "1rw5lvcj2v4b21akmsinkz24fbmp19s3jdqsd8jgmk3qqv0z81fc";
|
||||
rev = "0dfe3d9e0e22c7b06e34c8338f110e337306e3fd";
|
||||
sha256 = "1yjn2w0ykczhlj4q3dnfw2z4q66201dn3jz31yw7hh8bxjlsvwfh";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/0d6027c5a66386f7140305a4cde12d66da4dfa09/recipes/magic-filetype";
|
||||
@ -19832,8 +19937,8 @@
|
||||
sha256 = "0grljxihip0xyfm47ljwz6hy4kn30vw69bv4w5dw8kr33d51y5ym";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/011d26360a109b074cdecbcb133269ec6452ab86/recipes/markdown-preview-mode";
|
||||
sha256 = "0i0mld45d8y96nkqn2r77nvbyw6wgsf8r54d3c2jrv04mnaxs7pg";
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/d3c5d222cf0d7eca6a4e3eb914907f8ca58e40f0/recipes/markdown-preview-mode";
|
||||
sha256 = "1cam5wfxca91q3i1kl0qbdvnfy62hr5ksargi4430kgaz34bcbyn";
|
||||
name = "markdown-preview-mode";
|
||||
};
|
||||
packageRequires = [ cl-lib markdown-mode websocket ];
|
||||
@ -20115,22 +20220,22 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
mentor = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
mentor = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild, xml-rpc }:
|
||||
melpaBuild {
|
||||
pname = "mentor";
|
||||
version = "0.1";
|
||||
version = "0.1.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "skangas";
|
||||
repo = "mentor";
|
||||
rev = "bd8e4b89341686bbaf4c44680bbae778b96fb8f0";
|
||||
sha256 = "1y4ra5z3ayw3w7dszzlkk3qz3nv2jg1vvx8cf0y5j1pqpx8vy3jf";
|
||||
rev = "f53dac51a29f67e31f1fb82702b19d158cc6fa22";
|
||||
sha256 = "0qqapsp4gpkrj3faii7qbfssddl3vqfmwqcy259s7f896kzwaaky";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/083de4bd25b6b013a31b9d5ecdffad139a4ba91e/recipes/mentor";
|
||||
sha256 = "0nkf7f90m2qf11l97zwvb114yrpbqk1xxr2bh2nvbx8m1c8nad9s";
|
||||
name = "mentor";
|
||||
};
|
||||
packageRequires = [];
|
||||
packageRequires = [ xml-rpc ];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/mentor";
|
||||
license = lib.licenses.free;
|
||||
@ -20642,12 +20747,12 @@
|
||||
monokai-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "monokai-theme";
|
||||
version = "3.2.0";
|
||||
version = "3.2.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "oneKelvinSmith";
|
||||
repo = "monokai-emacs";
|
||||
rev = "47afc7419ddd26462ad6e66e122b244c334da0b9";
|
||||
sha256 = "1bkfqlfag62mixd933d1ryvnbaq3ny2bgbqbagqbrgprl7558577";
|
||||
rev = "fc5822fcb11c3c6af67b5fb152f92c3e6e3c49d3";
|
||||
sha256 = "0r81jdwfmgzivfpkxqr425qajgw3dzzs8y2v5lsiwl1d5z8rz52a";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/2bc9ce95a02fc4bcf7bc7547849c1c15d6db5089/recipes/monokai-theme";
|
||||
@ -22159,12 +22264,12 @@
|
||||
opener = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, request }:
|
||||
melpaBuild {
|
||||
pname = "opener";
|
||||
version = "0.2.1";
|
||||
version = "0.2.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "0robustus1";
|
||||
repo = "opener.el";
|
||||
rev = "ad3c65a5a748230bf07c18f56b1998ac03e3807a";
|
||||
sha256 = "178h7sbpgsn0xl93j7375f2ahmqcszmbl3f7mfb6vgjmm791q03p";
|
||||
rev = "c384f67278046fdcd220275fdd212ab85672cbeb";
|
||||
sha256 = "0gci909a2rbx5i8dyzyrcddwdic7nvpk6y6djvn521yaag4sq87h";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/c5a448f1936f46176bc2462eb03955a0c19efb9e/recipes/opener";
|
||||
@ -22516,12 +22621,12 @@
|
||||
org-jira = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild, request }:
|
||||
melpaBuild {
|
||||
pname = "org-jira";
|
||||
version = "1.0.1";
|
||||
version = "2.2.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ahungry";
|
||||
repo = "org-jira";
|
||||
rev = "3fc4dd52a5235fa97b0fca06b08ae443ccc43242";
|
||||
sha256 = "017k8hw2wy4fzdrkjniaqyz4mfsm60qqxrxhd1s49dfs54kch0hq";
|
||||
rev = "d2db2827ff030a8c11b52402adcd3a4b3050f3c1";
|
||||
sha256 = "16wzrq2syk03710iklrayf4s9ap4brvlzyd4b0rya0rxy2q2rck7";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/730a585e5c9216a2428a134c09abcc20bc7c631d/recipes/org-jira";
|
||||
@ -23267,12 +23372,12 @@
|
||||
osx-dictionary = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "osx-dictionary";
|
||||
version = "0.3";
|
||||
version = "0.4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "xuchunyang";
|
||||
repo = "osx-dictionary.el";
|
||||
rev = "8bbe1c700830e004f34974900b840ec2be7c589c";
|
||||
sha256 = "0pv9j3nza71kd2i9a78w1y10r965b2wrnywjk1zgvab8q9rzwxdn";
|
||||
rev = "0e5e5f1b0077a62673855889d529dd4f0cc8f665";
|
||||
sha256 = "1zpr50q7i4wg1x7vsj69rh1b8xvk9r0591y4fvvs3a2l1llca2mq";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/ae4467ad646d663f0266f39a76f9764004903424/recipes/osx-dictionary";
|
||||
@ -28505,22 +28610,22 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
smeargle = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
smeargle = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "smeargle";
|
||||
version = "0.2";
|
||||
version = "0.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "syohex";
|
||||
repo = "emacs-smeargle";
|
||||
rev = "fe0494bb859ea51800d6e7ae7d9eda2fe98e0097";
|
||||
sha256 = "1pcpg3lalbrc24z3vwcaysps8dbdzmncdgqdd5ig6yk2a9wyj9ng";
|
||||
rev = "0665b1ff5109731898bc4a0ca6d939933b804777";
|
||||
sha256 = "0p0kxmjdr02l9injlyyrnnzqdbb7mirz1xx79c3lw1rgpalf0jnf";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/c5b985b24a23499454dc61bf071073df325de571/recipes/smeargle";
|
||||
sha256 = "1dy87ah1w21csvrkq5icnx7g7g7nxqkcyggxyazqwwxvh2silibd";
|
||||
name = "smeargle";
|
||||
};
|
||||
packageRequires = [ cl-lib emacs ];
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/smeargle";
|
||||
license = lib.licenses.free;
|
||||
@ -29054,12 +29159,12 @@
|
||||
sqlup-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "sqlup-mode";
|
||||
version = "0.7.0";
|
||||
version = "0.7.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Trevoke";
|
||||
repo = "sqlup-mode.el";
|
||||
rev = "4bf563b0b95f5a1e627e55d52d1c2fd0dd3af95f";
|
||||
sha256 = "0hxkkpylnf5phavcd2y3bxzikcnr7cdk3rbqgp3nw74sxz0223w2";
|
||||
rev = "65e75ebc7d85a63e4e27900ba746623a8e4bfa95";
|
||||
sha256 = "1yiz1k2dg010dypql5l9ahcl33nvqxl731wghv4jvp6bdxcf90g3";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/7fabdb05de9b8ec18a3a566f99688b50443b6b44/recipes/sqlup-mode";
|
||||
@ -29238,6 +29343,27 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
string-inflection = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "string-inflection";
|
||||
version = "1.0.4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "akicho8";
|
||||
repo = "string-inflection";
|
||||
rev = "af1fb965784eff308d6b4031dc2ef5f6961cd38a";
|
||||
sha256 = "017rq1vll53i4xs1l24insjkfvr7nlq6l9g7gjmgnd8g9ck6jqg0";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/5c2e2b6dba8686236c2595475cfddac5fd700e60/recipes/string-inflection";
|
||||
sha256 = "1vrjcg1fa5adw16s4v9dq0fid0gfazxk15z9cawz0kmnpyzz3fg2";
|
||||
name = "string-inflection";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/string-inflection";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
string-utils = callPackage ({ fetchFromGitHub, fetchurl, lib, list-utils, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "string-utils";
|
||||
@ -32250,8 +32376,8 @@
|
||||
version = "0.9.1";
|
||||
src = fetchhg {
|
||||
url = "https://bitbucket.com/ArneBab/wisp";
|
||||
rev = "c8c2934f6674";
|
||||
sha256 = "0wsnmwfkiyic40v8dl65ccxv3n3hazmlxlbqr8v6ggr8kcx4ydyy";
|
||||
rev = "a67adbf5fc75";
|
||||
sha256 = "1av071s0s6x0idbklfnps8j7vgjqxapk9y23prk6jrdbbwhfzb8n";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/wisp-mode";
|
||||
@ -32789,6 +32915,27 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
yang-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "yang-mode";
|
||||
version = "0.9.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "mbj4668";
|
||||
repo = "yang-mode";
|
||||
rev = "351a17bfd4b78616cf740fc1c7148bc1d85b63a4";
|
||||
sha256 = "14hrr4ix77g795b4xhdwwqkgpbbb3axpim1r4yl1bv9jbbkqllx5";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/bb42ab9b5f118baaf6766c478046552b686981a1/recipes/yang-mode";
|
||||
sha256 = "0rl90xbcf3383ls95g1dixh2dr02kc4g60d324cqbb4h59wffp40";
|
||||
name = "yang-mode";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://melpa.org/#/yang-mode";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
yascroll = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "yascroll";
|
||||
@ -32857,8 +33004,8 @@
|
||||
version = "1.78";
|
||||
src = fetchhg {
|
||||
url = "https://www.yatex.org/hgrepos/yatex/";
|
||||
rev = "0c098405a3c9";
|
||||
sha256 = "0vk5wk7b05lyr1724wnwxlwfcw7myghpcis0ya1v11pwlad1vwha";
|
||||
rev = "5428250c886a";
|
||||
sha256 = "0q1b0wpdfdghp6hchc59jgkyra5qqqdam47q7g2ni4ym8nlhwd3c";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/04867a574773e8794335a2664d4f5e8b243f3ec9/recipes/yatex";
|
||||
@ -33010,12 +33157,12 @@
|
||||
zerodark-theme = callPackage ({ all-the-icons, fetchFromGitHub, fetchurl, flycheck, lib, magit, melpaBuild }:
|
||||
melpaBuild {
|
||||
pname = "zerodark-theme";
|
||||
version = "4.1";
|
||||
version = "4.2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "NicolasPetton";
|
||||
repo = "zerodark-theme";
|
||||
rev = "63df2ae09a9e1d670f0694f7c15f19f9170e2407";
|
||||
sha256 = "18a0g33z70yqr066cxm9d17jwvrx8hpgp0v2c6swk05h9b4h3pb2";
|
||||
rev = "af231794425255d436690c9c31bceb2052251210";
|
||||
sha256 = "1xnhcxf5d0gn8lhapjg7b289bqpf8w0d2mp76ksb8rsvx4r0bdbw";
|
||||
};
|
||||
recipeFile = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/72ef967a9bea2e100ae17aad1a88db95820f4f6a/recipes/zerodark-theme";
|
||||
|
@ -1,10 +1,10 @@
|
||||
{ callPackage }: {
|
||||
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "org";
|
||||
version = "20161118";
|
||||
version = "20161214";
|
||||
src = fetchurl {
|
||||
url = "http://orgmode.org/elpa/org-20161118.tar";
|
||||
sha256 = "1lk2j93zcaamj2m2720nxsza7j35054kg72w35w9z1bbiqmv2haj";
|
||||
url = "http://orgmode.org/elpa/org-20161214.tar";
|
||||
sha256 = "1x3wvagx7437xr4lawxr24kivb661997bncq2w9iz3fkg9rrr73m";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
@ -14,10 +14,10 @@
|
||||
}) {};
|
||||
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||
pname = "org-plus-contrib";
|
||||
version = "20161118";
|
||||
version = "20161214";
|
||||
src = fetchurl {
|
||||
url = "http://orgmode.org/elpa/org-plus-contrib-20161118.tar";
|
||||
sha256 = "1la8qw18akqc4p7p0qi675xm3r149vwazzjc2gkik97p12ip83z7";
|
||||
url = "http://orgmode.org/elpa/org-plus-contrib-20161214.tar";
|
||||
sha256 = "1rc3p1cys15i9vnll946w5hlckmmbgkw22yw98mna9cwqdpc387c";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -1,5 +1,6 @@
|
||||
{ stdenv, fetchurl, ncurses, pkgconfig, texinfo, libxml2, gnutls, gettext
|
||||
, AppKit, Carbon, Cocoa, IOKit, OSAKit, Quartz, QuartzCore, WebKit
|
||||
, autoconf, automake
|
||||
, ImageCaptureCore, GSS, ImageIO # These may be optional
|
||||
}:
|
||||
|
||||
@ -21,7 +22,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
buildInputs = [ ncurses libxml2 gnutls pkgconfig texinfo gettext ];
|
||||
buildInputs = [ ncurses libxml2 gnutls pkgconfig texinfo gettext autoconf automake ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
AppKit Carbon Cocoa IOKit OSAKit Quartz QuartzCore WebKit
|
||||
@ -47,7 +48,7 @@ stdenv.mkDerivation rec {
|
||||
"--enable-mac-app=$$out/Applications"
|
||||
];
|
||||
|
||||
CFLAGS = "-O3 -DMAC_OS_X_VERSION_MAX_ALLOWED=1090";
|
||||
CFLAGS = "-O3 -DMAC_OS_X_VERSION_MAX_ALLOWED=1090 -DMAC_OS_X_VERSION_MIN_REQUIRED=1090";
|
||||
LDFLAGS = "-O3 -L${ncurses.out}/lib";
|
||||
|
||||
postInstall = ''
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
emacsName = "emacs-25.1";
|
||||
name = "${emacsName}-mac-6.0";
|
||||
name = "${emacsName}-mac-6.1";
|
||||
|
||||
builder = ./builder.sh;
|
||||
|
||||
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
macportSrc = fetchurl {
|
||||
url = "ftp://ftp.math.s.chiba-u.ac.jp/emacs/${name}.tar.gz";
|
||||
sha256 = "2f7a3fd826e6dea541ada04f4a1ff2903a87a1f736b89c5b90bf7bb820568e34";
|
||||
sha256 = "1zwxh7zsvwcg221mpjh0dhpdas3j9mc5q92pprf8yljl7clqvg62";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
@ -48,7 +48,7 @@ stdenv.mkDerivation rec {
|
||||
"--enable-mac-app=$$out/Applications"
|
||||
];
|
||||
|
||||
CFLAGS = "-O3 -DMAC_OS_X_VERSION_MAX_ALLOWED=1090";
|
||||
CFLAGS = "-O3 -DMAC_OS_X_VERSION_MAX_ALLOWED=1090 -DMAC_OS_X_VERSION_MIN_REQUIRED=1090";
|
||||
LDFLAGS = "-O3 -L${ncurses.out}/lib";
|
||||
|
||||
postInstall = ''
|
||||
|
@ -208,12 +208,12 @@ in
|
||||
|
||||
idea-ultimate = buildIdea rec {
|
||||
name = "idea-ultimate-${version}";
|
||||
version = "2016.3";
|
||||
version = "2016.3.1";
|
||||
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 = "1sax3sjhsyvb9qfnn0gc74p3ym6j5f30mmapd4irq9fk4bsl8c31";
|
||||
sha256 = "1696gfmqi76ybgi5r84kisjx9mv0hd70hsn16banw61zy4rfllhw";
|
||||
};
|
||||
wmClass = "jetbrains-idea";
|
||||
};
|
||||
|
@ -4,12 +4,12 @@ with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "kakoune-nightly-${version}";
|
||||
version = "2016-07-26";
|
||||
version = "2016-12-10";
|
||||
src = fetchFromGitHub {
|
||||
repo = "kakoune";
|
||||
owner = "mawww";
|
||||
rev = "0d2c5072b083a893843e4fa87f9f702979069e14";
|
||||
sha256 = "01qqs5yr9xvvklg3gg45lgnyh6gji28m854mi1snzvjd7fksf50n";
|
||||
rev = "e44129577a010ebb4dc609b806104d3175659074";
|
||||
sha256 = "1jkpbk6wa9x5nlv002y1whv6ddhqawxzbp3jcbzcb51cg8bz0b1l";
|
||||
};
|
||||
buildInputs = [ ncurses boost asciidoc docbook_xsl libxslt ];
|
||||
|
||||
|
@ -12,10 +12,10 @@ with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "nano-${version}";
|
||||
version = "2.7.1";
|
||||
version = "2.7.2";
|
||||
src = fetchurl {
|
||||
url = "mirror://gnu/nano/${name}.tar.xz";
|
||||
sha256 = "1kapx0fyp0a0pvsdd1n59pm3acrimdrp7ciglg098wqxhdlvwp6z";
|
||||
sha256 = "1hlhwgvzdgkc7k74fbbn49hn6vmvzqr7h8gclgl7r1c6qrrny0bp";
|
||||
};
|
||||
nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext;
|
||||
buildInputs = [ ncurses ];
|
||||
|
@ -2,20 +2,20 @@
|
||||
makeWrapper, libXScrnSaver }:
|
||||
|
||||
let
|
||||
version = "1.6.1";
|
||||
rev = "9e4e44c19e393803e2b05fe2323cf4ed7e36880e";
|
||||
version = "1.8.0";
|
||||
rev = "38746938a4ab94f2f57d9e1309c51fd6fb37553d";
|
||||
|
||||
sha256 = if stdenv.system == "i686-linux" then "1aks84siflpjbd2s9y1f0vvvf3nas4f50cimjf25lijxzjxrlivy"
|
||||
else if stdenv.system == "x86_64-linux" then "05kbi081ih64fadj4k74grkk9ca3wga6ybwgs5ld0bal4ilw1q6i"
|
||||
else if stdenv.system == "x86_64-darwin" then "00p2m8b0l3pkf5k74szw6kcql3j1fjnv3rwnhy24wfkg4b4ah2x9"
|
||||
sha256 = if stdenv.system == "i686-linux" then "0p7r1i71v2ab4dzlwh43hqih958a31cqskf64ds4vgc35x2mfjcq"
|
||||
else if stdenv.system == "x86_64-linux" then "1k15701jskk7w5kwzlzfri96vvw7fcinyfqqafls8nms8h5csv76"
|
||||
else if stdenv.system == "x86_64-darwin" then "12fqz62gs2wcg2wwx1k6gv2gqil9c54yq254vk3rqdf82q9zyapk"
|
||||
else throw "Unsupported system: ${stdenv.system}";
|
||||
|
||||
urlBase = "https://az764295.vo.msecnd.net/stable/${rev}/";
|
||||
|
||||
urlStr = if stdenv.system == "i686-linux" then
|
||||
urlBase + "code-stable-code_${version}-1476372351_i386.tar.gz"
|
||||
urlBase + "code-stable-code_${version}-1481650382_i386.tar.gz"
|
||||
else if stdenv.system == "x86_64-linux" then
|
||||
urlBase + "code-stable-code_${version}-1476373175_amd64.tar.gz"
|
||||
urlBase + "code-stable-code_${version}-1481651903_amd64.tar.gz"
|
||||
else if stdenv.system == "x86_64-darwin" then
|
||||
urlBase + "VSCode-darwin-stable.zip"
|
||||
else throw "Unsupported system: ${stdenv.system}";
|
||||
|
@ -38,6 +38,7 @@ stdenv.mkDerivation rec {
|
||||
"mirror://imagemagick/releases/ImageMagick-${version}.tar.xz"
|
||||
# the original source above removes tarballs quickly
|
||||
"http://distfiles.macports.org/ImageMagick/ImageMagick-${version}.tar.xz"
|
||||
"https://bintray.com/homebrew/mirror/download_file?file_path=imagemagick-${version}.tar.xz"
|
||||
];
|
||||
inherit (cfg) sha256;
|
||||
};
|
||||
|
@ -7,13 +7,13 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
name = "vimiv";
|
||||
version = "0.7.2";
|
||||
version = "0.7.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "karlch";
|
||||
repo = "vimiv";
|
||||
rev = "v${version}";
|
||||
sha256 = "1g97ms84xk4ci4crq9wdc3744jnrqkq2qz9sg69lhm9sr5f68bw4";
|
||||
sha256 = "18dn81n8hcrqhrqfida34qz7a0ar9rz2rrmzsvyp54zc6nyvv1cn";
|
||||
};
|
||||
|
||||
testimages = fetchFromGitHub {
|
||||
@ -23,8 +23,6 @@ python3Packages.buildPythonApplication rec {
|
||||
sha256 = "0a3aybzpms0381dz9japhm4c7j5klhmw91prcac6zaww6x34nmxb";
|
||||
};
|
||||
|
||||
patches = [ ./fixes.patch ];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs scripts/install_icons.sh
|
||||
sed -i -e 's,/usr,,g' -e '/setup\.py/d' Makefile scripts/install_icons.sh
|
||||
|
@ -1,128 +0,0 @@
|
||||
Patch submitted upstream at https://github.com/karlch/vimiv/pull/32
|
||||
|
||||
diff --git a/tests/main_test.py b/tests/main_test.py
|
||||
index a1870e7..2edc86d 100644
|
||||
--- a/tests/main_test.py
|
||||
+++ b/tests/main_test.py
|
||||
@@ -15,7 +15,7 @@ class MainTest(TestCase):
|
||||
|
||||
def test_main_until_quit(self):
|
||||
"""Run through vimiv main once."""
|
||||
- v_main.main(True)
|
||||
+ v_main.main([], True)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
diff --git a/vimiv/helpers.py b/vimiv/helpers.py
|
||||
index 22f0115..bfaf016 100644
|
||||
--- a/vimiv/helpers.py
|
||||
+++ b/vimiv/helpers.py
|
||||
@@ -3,7 +3,6 @@
|
||||
"""Wrappers around standard library functions used in vimiv."""
|
||||
|
||||
import os
|
||||
-from subprocess import Popen, PIPE
|
||||
from gi import require_version
|
||||
require_version('Gtk', '3.0')
|
||||
from gi.repository import Gtk
|
||||
@@ -20,17 +19,17 @@ scrolltypes["K"] = (Gtk.ScrollType.START, False)
|
||||
scrolltypes["L"] = (Gtk.ScrollType.END, True)
|
||||
|
||||
# A list of all external commands
|
||||
-external_commands = []
|
||||
-try:
|
||||
- p = Popen('echo $PATH | tr \':\' \'\n\' | xargs -n 1 ls -1',
|
||||
- stdout=PIPE, stderr=PIPE, shell=True)
|
||||
- out, err = p.communicate()
|
||||
- out = out.decode('utf-8').split()
|
||||
- for cmd in sorted(list(set(out))):
|
||||
- external_commands.append("!" + cmd)
|
||||
-except:
|
||||
- external_commands = []
|
||||
-external_commands = tuple(external_commands)
|
||||
+pathenv = os.environ.get('PATH')
|
||||
+if pathenv is not None:
|
||||
+ executables = set()
|
||||
+ for path in pathenv.split(':'):
|
||||
+ try:
|
||||
+ executables |= set(["!" + e for e in os.listdir(path)])
|
||||
+ except OSError:
|
||||
+ continue
|
||||
+ external_commands = tuple(sorted(list(executables)))
|
||||
+else:
|
||||
+ external_commands = ()
|
||||
|
||||
|
||||
def listdir_wrapper(path, show_hidden=False):
|
||||
diff --git a/vimiv/imageactions.py b/vimiv/imageactions.py
|
||||
index d92eb73..b9bc986 100644
|
||||
--- a/vimiv/imageactions.py
|
||||
+++ b/vimiv/imageactions.py
|
||||
@@ -157,8 +157,8 @@ class Thumbnails:
|
||||
# Correct name
|
||||
thumb_ext = ".thumbnail_%dx%d" % (self.thumbsize[0],
|
||||
self.thumbsize[1])
|
||||
- outfile_ext = infile.split(".")[0] + thumb_ext + ".png"
|
||||
- outfile_base = os.path.basename(outfile_ext)
|
||||
+ infile_base = os.path.basename(infile)
|
||||
+ outfile_base = infile_base.split(".")[0] + thumb_ext + ".png"
|
||||
outfile = os.path.join(self.directory, outfile_base)
|
||||
# Only if they aren't cached already
|
||||
if outfile_base not in self.thumbnails:
|
||||
diff --git a/vimiv/main.py b/vimiv/main.py
|
||||
index a0e38cf..39f7407 100644
|
||||
--- a/vimiv/main.py
|
||||
+++ b/vimiv/main.py
|
||||
@@ -27,7 +27,7 @@ from vimiv.mark import Mark
|
||||
from vimiv.information import Information
|
||||
|
||||
|
||||
-def main(running_tests=False):
|
||||
+def main(arguments, running_tests=False):
|
||||
"""Starting point for vimiv.
|
||||
|
||||
Args:
|
||||
@@ -36,7 +36,7 @@ def main(running_tests=False):
|
||||
parser = get_args()
|
||||
parse_dirs()
|
||||
settings = parse_config()
|
||||
- settings = parse_args(parser, settings)
|
||||
+ settings = parse_args(parser, settings, arguments)
|
||||
|
||||
args = settings["GENERAL"]["paths"]
|
||||
|
||||
diff --git a/vimiv/parser.py b/vimiv/parser.py
|
||||
index 874a538..9d5afce 100644
|
||||
--- a/vimiv/parser.py
|
||||
+++ b/vimiv/parser.py
|
||||
@@ -56,7 +56,7 @@ def get_args():
|
||||
return parser
|
||||
|
||||
|
||||
-def parse_args(parser, settings, arguments=None):
|
||||
+def parse_args(parser, settings, arguments):
|
||||
"""Parse the arguments and return the modified settings.
|
||||
|
||||
Args:
|
||||
@@ -66,10 +66,7 @@ def parse_args(parser, settings, arguments=None):
|
||||
|
||||
Return: Modified settings after parsing the arguments.
|
||||
"""
|
||||
- if arguments:
|
||||
- args = parser.parse_args(arguments)
|
||||
- else:
|
||||
- args = parser.parse_args()
|
||||
+ args = parser.parse_args(arguments)
|
||||
if args.show_version:
|
||||
information = Information()
|
||||
print(information.get_version())
|
||||
diff --git a/vimiv/vimiv b/vimiv/vimiv
|
||||
index 5497e08..57f34f1 100755
|
||||
--- a/vimiv/vimiv
|
||||
+++ b/vimiv/vimiv
|
||||
@@ -5,4 +5,4 @@ import sys
|
||||
import vimiv
|
||||
|
||||
if __name__ == '__main__':
|
||||
- sys.exit(vimiv.main.main())
|
||||
+ sys.exit(vimiv.main.main(sys.argv))
|
@ -75,7 +75,7 @@ stdenv.mkDerivation rec {
|
||||
dontStrip = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
decription = "Ethereum C++ client";
|
||||
description = "Ethereum C++ client";
|
||||
homepage = https://github.com/ethereum/cpp-ethereum;
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ artuuge ];
|
||||
|
@ -94,12 +94,12 @@ let
|
||||
|
||||
flash = stdenv.mkDerivation rec {
|
||||
name = "flashplayer-ppapi-${version}";
|
||||
version = "23.0.0.207";
|
||||
version = "24.0.0.186";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/"
|
||||
+ "${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
||||
sha256 = "1spwv06rynaw45pdll6hzsq6zbz1q10bf7dx4zz25gh8x3sl9l6a";
|
||||
sha256 = "1pwayhnfjvb6gal5msw0k8rv4h6jvl0mpfsi0jqlka00cnyfjqpd";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
@ -223,7 +223,7 @@ stdenv.mkDerivation {
|
||||
tr " " ":"`; do
|
||||
# create an entry for every locale
|
||||
cat >> $tmpfile <<EOF
|
||||
{ url = "$url$version/$arch/`echo $line | cut -d":" -f3`";"
|
||||
{ url = "$url$version/`echo $line | cut -d":" -f3`";
|
||||
locale = "`echo $line | cut -d":" -f3 | sed "s/$arch\///" | sed "s/\/.*//"`";
|
||||
arch = "$arch";
|
||||
sha512 = "`echo $line | cut -d":" -f1`";
|
||||
@ -236,7 +236,7 @@ stdenv.mkDerivation {
|
||||
}
|
||||
EOF
|
||||
|
||||
cat $tmpfile > ${if isBeta then "beta_" else ""}sources.nix
|
||||
mv $tmpfile ${if isBeta then "beta_" else ""}sources.nix
|
||||
|
||||
popd
|
||||
'';
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -147,14 +147,14 @@ in {
|
||||
|
||||
firefox-unwrapped = common {
|
||||
pname = "firefox";
|
||||
version = "50.0.2";
|
||||
sha512 = "cfcc3e5a703e4d3284e3b3dcb34e5f77825e5a98b49a75bf22f8ac431c0429e6cd21c4e1f5e046fe82899cb4d2bc5b7a432b306c4af35034d83a9f351393f7fd";
|
||||
version = "50.1.0";
|
||||
sha512 = "2jwpk3aymkcq9f4xhzc31sb1c90vy3dvyqq2hvw97vk9dw7rgvv2cki10ns5cshbc4k57yd3j8nm7ppy2kw6na6771mj6sbijdjw39p";
|
||||
};
|
||||
|
||||
firefox-esr-unwrapped = common {
|
||||
pname = "firefox-esr";
|
||||
version = "45.5.1esr";
|
||||
sha512 = "36c56e1486a6a35f71526bd81d01fb4fc2b9df852eb2feb39b77c902fcf90d713d8fcdcd6113978630345e1ed36fa5cf0df6da7b6bf7e85a84fe014cb11f9a03";
|
||||
version = "45.6.0esr";
|
||||
sha512 = "086ci461hmz6kdn0ly9dlc723gc117si4a11a1c51gh79hczhahdaxg5s4r3k59rb43gpwxrlvm4wx1aka36bsihnh8a4caxnp72v5r";
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
# Linked dynamic libraries.
|
||||
, glib, fontconfig, freetype, pango, cairo, libX11, libXi, atk, gconf, nss, nspr
|
||||
, libXcursor, libXext, libXfixes, libXrender, libXScrnSaver, libXcomposite
|
||||
, libXcursor, libXext, libXfixes, libXrender, libXScrnSaver, libXcomposite, libxcb
|
||||
, alsaLib, libXdamage, libXtst, libXrandr, expat, cups
|
||||
, dbus_libs, gtk2, gdk_pixbuf, gcc
|
||||
|
||||
@ -42,7 +42,7 @@ let
|
||||
deps = [
|
||||
stdenv.cc.cc
|
||||
glib fontconfig freetype pango cairo libX11 libXi atk gconf nss nspr
|
||||
libXcursor libXext libXfixes libXrender libXScrnSaver libXcomposite
|
||||
libXcursor libXext libXfixes libXrender libXScrnSaver libXcomposite libxcb
|
||||
alsaLib libXdamage libXtst libXrandr expat cups
|
||||
dbus_libs gtk2 gdk_pixbuf gcc
|
||||
systemd
|
||||
|
@ -14,6 +14,11 @@ buildGoPackage rec {
|
||||
sha256 = "0l4a5bqfw8i8wrl5yzkqy848r7vdx6hw8p5m3z3vzabvsmsjjwy7";
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $bin/share/bash-completion/completions/
|
||||
cp go/src/github.com/docker/machine/contrib/completion/bash/* $bin/share/bash-completion/completions/
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
mv $bin/bin/cmd $bin/bin/docker-machine
|
||||
'';
|
||||
|
45
pkgs/applications/networking/cluster/helm/default.nix
Normal file
45
pkgs/applications/networking/cluster/helm/default.nix
Normal file
@ -0,0 +1,45 @@
|
||||
{ stdenv, fetchurl, kubernetes }:
|
||||
let
|
||||
arch = if stdenv.isLinux
|
||||
then "linux-amd64"
|
||||
else "darwin-amd64";
|
||||
checksum = if stdenv.isLinux
|
||||
then "dad3791fb07e6cf34f4cf611728cb8ae109a75234498a888529a68ac6923f200"
|
||||
else "d27bd7e40e12c0a5f08782a8a883166008565b28e0b82126d2089300ff3f8465";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "helm";
|
||||
version = "2.0.2";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://kubernetes-helm.storage.googleapis.com/helm-v${version}-${arch}.tar.gz";
|
||||
sha256 = "${checksum}";
|
||||
};
|
||||
|
||||
preferLocalBuild = true;
|
||||
|
||||
buildInputs = [ ];
|
||||
|
||||
propagatedBuildInputs = [ kubernetes ];
|
||||
|
||||
phases = [ "buildPhase" "installPhase" ];
|
||||
|
||||
buildPhase = ''
|
||||
mkdir -p $out/bin
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
tar -xvzf $src
|
||||
cp ${arch}/helm $out/bin/${pname}
|
||||
chmod +x $out/bin/${pname}
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://github.com/kubernetes/helm;
|
||||
description = "A package manager for kubernetes";
|
||||
license = licenses.asl20;
|
||||
maintainers = [ maintainers.rlupton20 ];
|
||||
platforms = platforms.linux ++ platforms.darwin;
|
||||
};
|
||||
}
|
@ -32,19 +32,28 @@ stdenv.mkDerivation rec {
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace "hack/lib/golang.sh" --replace "_cgo" ""
|
||||
substituteInPlace "hack/generate-docs.sh" --replace "make" "make SHELL=${stdenv.shell}"
|
||||
substituteInPlace "hack/update-munge-docs.sh" --replace "make" "make SHELL=${stdenv.shell}"
|
||||
substituteInPlace "hack/update-munge-docs.sh" --replace "kube::util::git_upstream_remote_name" "echo origin"
|
||||
|
||||
patchShebangs ./hack
|
||||
'';
|
||||
|
||||
WHAT="--use_go_build ${concatStringsSep " " components}";
|
||||
|
||||
postBuild = "(cd build/pause && gcc pause.c -o pause)";
|
||||
postBuild = ''
|
||||
./hack/generate-docs.sh
|
||||
(cd build/pause && gcc pause.c -o pause)
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out/bin" "$man/share/man" "$pause/bin"
|
||||
mkdir -p "$out/bin" "$out/share/bash-completion/completions" "$man/share/man" "$pause/bin"
|
||||
|
||||
cp _output/local/go/bin/* "$out/bin/"
|
||||
cp build/pause/pause "$pause/bin/pause"
|
||||
cp -R docs/man/man1 "$man/share/man"
|
||||
|
||||
$out/bin/kubectl completion bash > $out/share/bash-completion/completions/kubectl
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
|
@ -30,6 +30,9 @@ stdenv.mkDerivation rec {
|
||||
installPhase = ''
|
||||
cp $src $out/bin/${pname}
|
||||
chmod +x $out/bin/${pname}
|
||||
|
||||
mkdir -p $out/share/bash-completion/completions/
|
||||
HOME=$(pwd) $out/bin/minikube completion bash > $out/share/bash-completion/completions/minikube
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -1,9 +1,11 @@
|
||||
{ stdenv, fetchFromGitHub, go, which }:
|
||||
|
||||
let
|
||||
version = "1.3.1";
|
||||
versionMajor = "1";
|
||||
versionMinor = "3";
|
||||
version = "1.3.2";
|
||||
ver = stdenv.lib.elemAt (stdenv.lib.splitString "." version);
|
||||
versionMajor = ver 0;
|
||||
versionMinor = ver 1;
|
||||
versionPatch = ver 2;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "openshift-origin-${version}";
|
||||
@ -13,7 +15,7 @@ stdenv.mkDerivation rec {
|
||||
owner = "openshift";
|
||||
repo = "origin";
|
||||
rev = "v${version}";
|
||||
sha256 = "1kxa1k38hvi1vg52p82mmkmp9k4bbbm2pryzapsxwga7d8x4bnbh";
|
||||
sha256 = "0zw8zb9c6icigcq6y47ppnjnqyghk2kril07bapbddvgnvbbfp6m";
|
||||
};
|
||||
|
||||
buildInputs = [ go which ];
|
||||
@ -43,7 +45,7 @@ stdenv.mkDerivation rec {
|
||||
description = "Build, deploy, and manage your applications with Docker and Kubernetes";
|
||||
license = licenses.asl20;
|
||||
homepage = http://www.openshift.org;
|
||||
maintainers = with maintainers; [offline];
|
||||
maintainers = with maintainers; [offline bachp];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
24
pkgs/applications/networking/cluster/pachyderm/default.nix
Normal file
24
pkgs/applications/networking/cluster/pachyderm/default.nix
Normal file
@ -0,0 +1,24 @@
|
||||
{ lib, fetchFromGitHub, buildGoPackage }:
|
||||
|
||||
buildGoPackage rec {
|
||||
name = "pachyderm-${version}";
|
||||
version = "1.3.0";
|
||||
rev = "v${version}";
|
||||
|
||||
goPackagePath = "github.com/pachyderm/pachyderm";
|
||||
subPackages = [ "src/server/cmd/pachctl" ];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
inherit rev;
|
||||
owner = "pachyderm";
|
||||
repo = "pachyderm";
|
||||
sha256 = "0y25xh6h7p8hg0bzrjlschmz62r6dwh5mrvbnni1hb1pm0w9jb6g";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Containerized Data Analytics";
|
||||
homepage = https://github.com/pachyderm/pachyderm;
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [offline];
|
||||
};
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
|
||||
buildGoPackage rec {
|
||||
name = "terraform-${version}";
|
||||
version = "0.7.11";
|
||||
version = "0.8.1";
|
||||
rev = "v${version}";
|
||||
|
||||
goPackagePath = "github.com/hashicorp/terraform";
|
||||
@ -11,7 +11,7 @@ buildGoPackage rec {
|
||||
inherit rev;
|
||||
owner = "hashicorp";
|
||||
repo = "terraform";
|
||||
sha256 = "0rmzhf2rwxci57ll5nv2vvmic9cn64dbbg1fb5g78njljzpsc5qw";
|
||||
sha256 = "1fgnivhn6hrxpwwajl80vj2w81lv6vypprlbgif8m0z0na7p8956";
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
|
@ -1,13 +1,13 @@
|
||||
{ stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext
|
||||
, pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla, nettle }:
|
||||
|
||||
let version = "3.22.2.2"; in
|
||||
let version = "3.23.0.2"; in
|
||||
stdenv.mkDerivation {
|
||||
name = "filezilla-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
|
||||
sha256 = "1h02k13x88f04gkf433cxx1xvbr7kkl2aygb4i6581gzhzjifwdv";
|
||||
sha256 = "0bq22nq2g1b0x5msm9if74ync2qk13n2782mwj2r1r7hsmx4liiz";
|
||||
};
|
||||
|
||||
configureFlags = [
|
||||
|
23
pkgs/applications/networking/gopher/gopher/default.nix
Normal file
23
pkgs/applications/networking/gopher/gopher/default.nix
Normal file
@ -0,0 +1,23 @@
|
||||
{stdenv, fetchurl, ncurses}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "gopher-${version}";
|
||||
version = "3.0.11";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://gopher.quux.org:70/devel/gopher/Downloads/gopher_${version}.tar.gz";
|
||||
sha256 = "15r7x518wlpfqpd6z0hbdwm8rw8ll8hbpskdqgxxhrmy00aa7w9c";
|
||||
};
|
||||
|
||||
buildInputs = [ ncurses ];
|
||||
|
||||
preConfigure = "export LIBS=-lncurses";
|
||||
|
||||
meta = {
|
||||
homepage = http://gopher.quux.org:70/devel/gopher;
|
||||
description = "A ncurses gopher client";
|
||||
platforms = stdenv.lib.platforms.unix;
|
||||
license = stdenv.lib.licenses.gpl2;
|
||||
maintainers = with stdenv.lib.maintainers; [ sternenseemann ];
|
||||
};
|
||||
}
|
@ -1,17 +1,17 @@
|
||||
{ stdenv, fetchurl
|
||||
{ stdenv, fetchurl, makeDesktopItem
|
||||
, alsaLib, atk, cairo, cups, dbus, expat, fontconfig, freetype, gdk_pixbuf
|
||||
, glib, gnome2, gtk2, libnotify, libX11, libXcomposite, libXcursor, libXdamage
|
||||
, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst, nspr, nss, pango
|
||||
, systemd, libXScrnSaver }:
|
||||
|
||||
let version = "0.0.11"; in
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
stdenv.mkDerivation {
|
||||
|
||||
name = "discord-${version}";
|
||||
pname = "discord";
|
||||
version = "0.0.11";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://cdn-canary.discordapp.com/apps/linux/${version}/discord-canary-${version}.tar.gz";
|
||||
url = "https://cdn-canary.discordapp.com/apps/linux/${version}/${pname}-canary-${version}.tar.gz";
|
||||
sha256 = "1lk53vm14vr5pb8xxcx6hinpc2mkdns2xxv0bfzxvlmhfr6d6y18";
|
||||
};
|
||||
|
||||
@ -23,7 +23,7 @@ stdenv.mkDerivation {
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
mkdir -p $out/{bin,share/pixmaps}
|
||||
mv * $out
|
||||
|
||||
# Copying how adobe-reader does it,
|
||||
@ -33,11 +33,22 @@ stdenv.mkDerivation {
|
||||
$out/DiscordCanary
|
||||
|
||||
ln -s $out/DiscordCanary $out/bin/
|
||||
ln -s $out/discord.png $out/share/pixmaps
|
||||
|
||||
# Putting udev in the path won't work :(
|
||||
ln -s ${systemd.lib}/lib/libudev.so.1 $out
|
||||
ln -s "${desktopItem}/share/applications" $out/share/
|
||||
'';
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = pname;
|
||||
exec = "DiscordCanary";
|
||||
icon = pname;
|
||||
desktopName = "Discord Canary";
|
||||
genericName = meta.description;
|
||||
categories = "Network;InstantMessaging;";
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "All-in-one voice and text chat for gamers that’s free, secure, and works on both your desktop and phone";
|
||||
homepage = "https://discordapp.com/";
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ stdenv, fetchurl, automake, autoconf, pkgconfig, glib, openssl, expat
|
||||
, ncurses, libotr, curl, libstrophe, readline, libuuid
|
||||
{ stdenv, fetchurl, pkgconfig, glib, openssl, expat, libmesode
|
||||
, ncurses, libotr, curl, readline, libuuid
|
||||
|
||||
, autoAwaySupport ? false, libXScrnSaver ? null, libX11 ? null
|
||||
, notifySupport ? false, libnotify ? null, gdk_pixbuf ? null
|
||||
@ -12,21 +12,19 @@ with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "profanity-${version}";
|
||||
version = "0.4.7";
|
||||
version = "0.5.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.profanity.im/profanity-${version}.tar.gz";
|
||||
sha256 = "1p8ixvxacvf63r6lnf6iwlyz4pgiyp6widna1h2l2jg8kw14wb5h";
|
||||
sha256 = "0s4njc4rcaii51qw1najxa0fa8bb2fnas00z47y94wdbdsmfhfvq";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
automake autoconf pkgconfig readline libuuid
|
||||
glib openssl expat ncurses libotr curl libstrophe
|
||||
pkgconfig readline libuuid libmesode
|
||||
glib openssl expat ncurses libotr curl
|
||||
] ++ optionals autoAwaySupport [ libXScrnSaver libX11 ]
|
||||
++ optionals notifySupport [ libnotify gdk_pixbuf ];
|
||||
|
||||
preConfigure = "sh bootstrap.sh";
|
||||
|
||||
meta = {
|
||||
description = "A console based XMPP client";
|
||||
longDescription = ''
|
||||
|
@ -17,9 +17,9 @@ stdenv.mkDerivation rec {
|
||||
|
||||
nativeBuildInputs = [ pkgconfig libconfig ];
|
||||
buildInputs = [
|
||||
libtoxcore-dev libsodium ncurses libqrencode curl
|
||||
libtoxcore-dev libsodium ncurses curl
|
||||
] ++ stdenv.lib.optionals (!stdenv.isArm) [
|
||||
openal libvpx freealut
|
||||
openal libvpx freealut libqrencode
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -1,64 +0,0 @@
|
||||
{ stdenv, fetchurl, ncurses, which, perl, autoreconfHook, autoconf, automake, notmuch
|
||||
, sslSupport ? true
|
||||
, imapSupport ? true
|
||||
, headerCache ? true
|
||||
, saslSupport ? true
|
||||
, gpgmeSupport ? true
|
||||
, gdbm ? null
|
||||
, openssl ? null
|
||||
, cyrus_sasl ? null
|
||||
, gpgme ? null
|
||||
}:
|
||||
|
||||
assert headerCache -> gdbm != null;
|
||||
assert sslSupport -> openssl != null;
|
||||
assert saslSupport -> cyrus_sasl != null;
|
||||
assert gpgmeSupport -> gpgme != null;
|
||||
|
||||
let
|
||||
version = "1.5.23.1";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "mutt-kz-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/karelzak/mutt-kz/archive/v${version}.tar.gz";
|
||||
sha256 = "01k4hrf8x2100pcqnrm61mm1x0pqi2kr3rx22k5hwvbs1wh8zyhz";
|
||||
};
|
||||
|
||||
buildInputs = with stdenv.lib;
|
||||
[ ncurses which perl autoreconfHook autoconf automake notmuch]
|
||||
++ optional headerCache gdbm
|
||||
++ optional sslSupport openssl
|
||||
++ optional saslSupport cyrus_sasl
|
||||
++ optional gpgmeSupport gpgme;
|
||||
|
||||
configureFlags = [
|
||||
"--with-mailpath=" "--enable-smtp"
|
||||
|
||||
# This allows calls with "-d N", that output debug info into ~/.muttdebug*
|
||||
"--enable-debug"
|
||||
|
||||
"--enable-pop" "--enable-imap"
|
||||
|
||||
"--enable-notmuch"
|
||||
|
||||
# The next allows building mutt without having anything setgid
|
||||
# set by the installer, and removing the need for the group 'mail'
|
||||
# I set the value 'mailbox' because it is a default in the configure script
|
||||
"--with-homespool=mailbox"
|
||||
(if headerCache then "--enable-hcache" else "--disable-hcache")
|
||||
(if sslSupport then "--with-ssl" else "--without-ssl")
|
||||
(if imapSupport then "--enable-imap" else "--disable-imap")
|
||||
(if saslSupport then "--with-sasl" else "--without-sasl")
|
||||
(if gpgmeSupport then "--enable-gpgme" else "--disable-gpgme")
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A small but very powerful text-based mail client, forked to support notmuch";
|
||||
homepage = https://github.com/karelzak/mutt-kz/;
|
||||
license = stdenv.lib.licenses.gpl2Plus;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ magnetophon ];
|
||||
};
|
||||
}
|
@ -12,7 +12,7 @@ assert withQt -> !withGtk && qt4 != null;
|
||||
with stdenv.lib;
|
||||
|
||||
let
|
||||
version = "2.2.2";
|
||||
version = "2.2.3";
|
||||
variant = if withGtk then "gtk" else if withQt then "qt" else "cli";
|
||||
in
|
||||
|
||||
@ -21,7 +21,7 @@ stdenv.mkDerivation {
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.bz2";
|
||||
sha256 = "1csm035ayfzn1xzzsmzcjk2ixx39d70aykr4nh0a88chk9gfzb7r";
|
||||
sha256 = "0fsrvl6sp772g2q2j24h10h9lfda6q67x7wahjjm8849i2gciflp";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -1,29 +1,22 @@
|
||||
{ fetchurl, stdenv, gtk, pkgconfig, libofx, intltool, wrapGAppsHook
|
||||
, hicolor_icon_theme, libsoup}:
|
||||
|
||||
let
|
||||
download_root = "http://homebank.free.fr/public/";
|
||||
name = "homebank-5.1.1";
|
||||
lastrelease = download_root + name + ".tar.gz";
|
||||
oldrelease = download_root + "old/" + name + ".tar.gz";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
inherit name;
|
||||
, hicolor_icon_theme, libsoup, gnome3 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "homebank-5.1.2";
|
||||
src = fetchurl {
|
||||
urls = [ lastrelease oldrelease ];
|
||||
sha256 = "1gd4b8fsq89w486mfrclw4r1nrgh7lxp4sncbgprbz9id7f6vlww";
|
||||
url = "http://homebank.free.fr/public/${name}.tar.gz";
|
||||
sha256 = "09zsq5l3s8cg4slhsyybsq8v1arnhh07i0rzka3j6ahysky15pfh";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig gtk libofx intltool hicolor_icon_theme
|
||||
wrapGAppsHook libsoup ];
|
||||
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||
buildInputs = [ gtk libofx intltool hicolor_icon_theme libsoup
|
||||
gnome3.defaultIconTheme ];
|
||||
|
||||
meta = {
|
||||
meta = with stdenv.lib; {
|
||||
description = "Free, easy, personal accounting for everyone";
|
||||
homepage = http://homebank.free.fr/;
|
||||
license = stdenv.lib.licenses.gpl2Plus;
|
||||
maintainers = with stdenv.lib.maintainers; [viric];
|
||||
platforms = with stdenv.lib.platforms; linux;
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ viric pSub ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
88
pkgs/applications/science/logic/coq/8.6.nix
Normal file
88
pkgs/applications/science/logic/coq/8.6.nix
Normal file
@ -0,0 +1,88 @@
|
||||
# - coqide compilation can be disabled by setting lablgtk to null;
|
||||
# - The csdp program used for the Micromega tactic is statically referenced.
|
||||
# However, coq can build without csdp by setting it to null.
|
||||
# In this case some Micromega tactics will search the user's path for the csdp program and will fail if it is not found.
|
||||
# - The patch-level version can be specified through the `pl` argument to
|
||||
# the derivation; it defaults to the greatest.
|
||||
|
||||
{ stdenv, fetchurl, writeText, pkgconfig
|
||||
, ocaml, findlib, camlp5, ncurses
|
||||
, lablgtk ? null, csdp ? null
|
||||
, pl ? "1"
|
||||
}:
|
||||
|
||||
let
|
||||
# version = "8.6pl${pl}";
|
||||
version = "8.6";
|
||||
sha256 = "1pw1xvy1657l1k69wrb911iqqflzhhp8wwsjvihbgc72r3skqg3f";
|
||||
coq-version = "8.6";
|
||||
buildIde = lablgtk != null;
|
||||
ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
|
||||
csdpPatch = if csdp != null then ''
|
||||
substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
|
||||
substituteInPlace plugins/micromega/coq_micromega.ml --replace "System.is_in_system_path \"csdp\"" "true"
|
||||
'' else "";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "coq-${version}";
|
||||
|
||||
inherit coq-version;
|
||||
inherit ocaml camlp5;
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://coq.inria.fr/distrib/V${version}/files/coq-${version}.tar.gz";
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig ocaml findlib camlp5 ncurses lablgtk ];
|
||||
|
||||
postPatch = ''
|
||||
UNAME=$(type -tp uname)
|
||||
RM=$(type -tp rm)
|
||||
substituteInPlace configure --replace "/bin/uname" "$UNAME"
|
||||
substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM"
|
||||
substituteInPlace configure.ml --replace '"md5 -q"' '"md5sum"'
|
||||
${csdpPatch}
|
||||
'';
|
||||
|
||||
setupHook = writeText "setupHook.sh" ''
|
||||
addCoqPath () {
|
||||
if test -d "''$1/lib/coq/${coq-version}/user-contrib"; then
|
||||
export COQPATH="''${COQPATH}''${COQPATH:+:}''$1/lib/coq/${coq-version}/user-contrib/"
|
||||
fi
|
||||
}
|
||||
|
||||
envHooks=(''${envHooks[@]} addCoqPath)
|
||||
'';
|
||||
|
||||
preConfigure = ''
|
||||
configureFlagsArray=(
|
||||
-opt
|
||||
${ideFlags}
|
||||
)
|
||||
'';
|
||||
|
||||
prefixKey = "-prefix ";
|
||||
|
||||
buildFlags = "revision coq coqide bin/votour";
|
||||
|
||||
postInstall = ''
|
||||
cp bin/votour $out/bin/
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Coq proof assistant";
|
||||
longDescription = ''
|
||||
Coq is a formal proof management system. It provides a formal language
|
||||
to write mathematical definitions, executable algorithms and theorems
|
||||
together with an environment for semi-interactive development of
|
||||
machine-checked proofs.
|
||||
'';
|
||||
homepage = "http://coq.inria.fr";
|
||||
license = licenses.lgpl21;
|
||||
branch = coq-version;
|
||||
maintainers = with maintainers; [ roconnor thoughtpolice vbgl ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
@ -6,8 +6,8 @@
|
||||
{stdenv, fetchgit, writeText, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null, csdp ? null}:
|
||||
|
||||
let
|
||||
version = "8.5pre-0c999f02";
|
||||
coq-version = "8.5";
|
||||
version = "8.6pre-0c999f02";
|
||||
coq-version = "8.6";
|
||||
buildIde = lablgtk != null;
|
||||
ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
|
||||
csdpPatch = if csdp != null then ''
|
||||
@ -24,20 +24,18 @@ stdenv.mkDerivation {
|
||||
|
||||
src = fetchgit {
|
||||
url = git://scm.gforge.inria.fr/coq/coq.git;
|
||||
rev = "0c999f02ffcd61fcace0cc2d045056a82992a100";
|
||||
sha256 = "08z9z4bv4a8ha1jrn18vxad6d7y7h92ggr00rx8jfvvi290n9344";
|
||||
rev = "ad768e435a736ca51ac79a575967b388b34918c7";
|
||||
sha256 = "05s7sk1l3mvdjag3idnhkpj707y4bv56da7kpffw862f2qgfr77j";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig ocaml findlib camlp5 ncurses lablgtk ];
|
||||
|
||||
patches = [ ./no-codesign.patch ];
|
||||
|
||||
postPatch = ''
|
||||
UNAME=$(type -tp uname)
|
||||
RM=$(type -tp rm)
|
||||
substituteInPlace configure --replace "/bin/uname" "$UNAME"
|
||||
substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM"
|
||||
substituteInPlace Makefile.build --replace "ifeq (\$(ARCH),Darwin)" "ifeq (\$(ARCH),Darwinx)"
|
||||
substituteInPlace configure.ml --replace "\"Darwin\"; \"FreeBSD\"; \"OpenBSD\"" "\"Darwinx\"; \"FreeBSD\"; \"OpenBSD\""
|
||||
${csdpPatch}
|
||||
'';
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
{ stdenv, fetchurl, python2Packages }:
|
||||
{ stdenv, fetchurl, python2Packages
|
||||
, withSFTP ? true
|
||||
}:
|
||||
|
||||
python2Packages.buildPythonApplication rec {
|
||||
version = "2.7";
|
||||
@ -12,6 +14,9 @@ python2Packages.buildPythonApplication rec {
|
||||
|
||||
doCheck = false;
|
||||
|
||||
propagatedBuildInputs = []
|
||||
++ stdenv.lib.optionals withSFTP [ python2Packages.paramiko ];
|
||||
|
||||
# Bazaar can't find the certificates alone
|
||||
patches = [ ./add_certificates.patch ];
|
||||
postPatch = ''
|
||||
|
@ -103,15 +103,13 @@ let
|
||||
});
|
||||
|
||||
in {
|
||||
|
||||
subversion18 = common {
|
||||
version = "1.8.16";
|
||||
sha256 = "0imkxn25n6sbcgfldrx4z29npjprb1lxjm5fb89q4297161nx3zi";
|
||||
version = "1.8.17";
|
||||
sha256 = "1450fkj1jmxyphqn6cd95z1ykwsabajm9jw4i412qpwss8w9a4fy";
|
||||
};
|
||||
|
||||
subversion19 = common {
|
||||
version = "1.9.4";
|
||||
sha256 = "16cjkvvq628hbznkhqkppzs8nifcr7k43s5y4c32cgwqmgigjrqj";
|
||||
version = "1.9.5";
|
||||
sha256 = "1ramwly6p74jhb2rdm5ygxjri7jds940cilyvnsdq60xzy5cckwa";
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ stdenv.mkDerivation {
|
||||
done)
|
||||
'';
|
||||
|
||||
preferLocalBuilds = true;
|
||||
preferLocalBuild = true;
|
||||
|
||||
meta = with kodi.meta; {
|
||||
inherit license homepage;
|
||||
|
@ -11,13 +11,13 @@ with lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "docker-${version}";
|
||||
version = "1.12.3";
|
||||
version = "1.12.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "docker";
|
||||
repo = "docker";
|
||||
rev = "v${version}";
|
||||
sha256 = "0jifd35h22lgh36w1j2k97pgndjh5sppr3cwndlv0saf9618wx5k";
|
||||
sha256 = "1hnxmh2j1vm8714f7jwjrslkqkd1ry25g5wq76aqlpsz5fh2kqb0";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -11,6 +11,7 @@
|
||||
, vncSupport ? true, libjpeg, libpng
|
||||
, spiceSupport ? !stdenv.isDarwin, spice, spice_protocol, usbredir
|
||||
, x86Only ? false
|
||||
, nixosTestRunner ? false
|
||||
}:
|
||||
|
||||
with stdenv.lib;
|
||||
@ -133,7 +134,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
# from http://git.qemu.org/?p=qemu.git;a=patch;h=ff55e94d23ae94c8628b0115320157c763eb3e06
|
||||
./CVE-2016-9102.patch
|
||||
];
|
||||
] ++ optional nixosTestRunner ./force-uid0-on-9p.patch;
|
||||
hardeningDisable = [ "stackprotector" ];
|
||||
|
||||
configureFlags =
|
||||
|
77
pkgs/applications/virtualization/qemu/force-uid0-on-9p.patch
Normal file
77
pkgs/applications/virtualization/qemu/force-uid0-on-9p.patch
Normal file
@ -0,0 +1,77 @@
|
||||
diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c
|
||||
index 3f271fc..dc273f4 100644
|
||||
--- a/hw/9pfs/9p-local.c
|
||||
+++ b/hw/9pfs/9p-local.c
|
||||
@@ -45,6 +45,23 @@
|
||||
|
||||
#define VIRTFS_META_DIR ".virtfs_metadata"
|
||||
|
||||
+static int is_in_store_path(const char *path)
|
||||
+{
|
||||
+ static char *store_path = NULL;
|
||||
+ int store_path_len = -1;
|
||||
+
|
||||
+ if (store_path_len == -1) {
|
||||
+ if ((store_path = getenv("NIX_STORE")) != NULL)
|
||||
+ store_path_len = strlen(store_path);
|
||||
+ else
|
||||
+ store_path_len = 0;
|
||||
+ }
|
||||
+
|
||||
+ if (store_path_len > 0)
|
||||
+ return strncmp(path, store_path, strlen(store_path)) == 0;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static char *local_mapped_attr_path(FsContext *ctx, const char *path)
|
||||
{
|
||||
int dirlen;
|
||||
@@ -128,6 +145,8 @@ static int local_lstat(FsContext *fs_ctx, V9fsPath *fs_path, struct stat *stbuf)
|
||||
if (err) {
|
||||
goto err_out;
|
||||
}
|
||||
+ stbuf->st_uid = 0;
|
||||
+ stbuf->st_gid = 0;
|
||||
if (fs_ctx->export_flags & V9FS_SM_MAPPED) {
|
||||
/* Actual credentials are part of extended attrs */
|
||||
uid_t tmp_uid;
|
||||
@@ -462,6 +481,11 @@ static ssize_t local_pwritev(FsContext *ctx, V9fsFidOpenState *fs,
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static inline int maybe_chmod(const char *path, mode_t mode)
|
||||
+{
|
||||
+ return is_in_store_path(path) ? 0 : chmod(path, mode);
|
||||
+}
|
||||
+
|
||||
static int local_chmod(FsContext *fs_ctx, V9fsPath *fs_path, FsCred *credp)
|
||||
{
|
||||
char *buffer;
|
||||
@@ -477,7 +501,7 @@ static int local_chmod(FsContext *fs_ctx, V9fsPath *fs_path, FsCred *credp)
|
||||
} else if ((fs_ctx->export_flags & V9FS_SM_PASSTHROUGH) ||
|
||||
(fs_ctx->export_flags & V9FS_SM_NONE)) {
|
||||
buffer = rpath(fs_ctx, path);
|
||||
- ret = chmod(buffer, credp->fc_mode);
|
||||
+ ret = maybe_chmod(buffer, credp->fc_mode);
|
||||
g_free(buffer);
|
||||
}
|
||||
return ret;
|
||||
@@ -621,6 +645,8 @@ static int local_fstat(FsContext *fs_ctx, int fid_type,
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
+ stbuf->st_uid = 0;
|
||||
+ stbuf->st_gid = 0;
|
||||
if (fs_ctx->export_flags & V9FS_SM_MAPPED) {
|
||||
/* Actual credentials are part of extended attrs */
|
||||
uid_t tmp_uid;
|
||||
@@ -916,7 +942,8 @@ static int local_chown(FsContext *fs_ctx, V9fsPath *fs_path, FsCred *credp)
|
||||
(fs_ctx->export_flags & V9FS_SM_PASSTHROUGH) ||
|
||||
(fs_ctx->export_flags & V9FS_SM_NONE)) {
|
||||
buffer = rpath(fs_ctx, path);
|
||||
- ret = lchown(buffer, credp->fc_uid, credp->fc_gid);
|
||||
+ ret = is_in_store_path(buffer)
|
||||
+ ? 0 : lchown(buffer, credp->fc_uid, credp->fc_gid);
|
||||
g_free(buffer);
|
||||
} else if (fs_ctx->export_flags & V9FS_SM_MAPPED) {
|
||||
buffer = rpath(fs_ctx, path);
|
@ -12,7 +12,7 @@ let
|
||||
stage1Dir = "lib/rkt/stage1-images";
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
version = "1.20.0";
|
||||
version = "1.21.0";
|
||||
name = "rkt-${version}";
|
||||
BUILDDIR="build-${name}";
|
||||
|
||||
@ -20,7 +20,7 @@ in stdenv.mkDerivation rec {
|
||||
owner = "coreos";
|
||||
repo = "rkt";
|
||||
rev = "v${version}";
|
||||
sha256 = "0cypksr13k0qp6qvbd6y8my1dg82s44k6qkiqkpn1vs2ynjg3i52";
|
||||
sha256 = "0zd7f3yrnzik96a634m2qyrz25f5mi28caadghqdl9q2apxfb896";
|
||||
};
|
||||
|
||||
stage1BaseImage = fetchurl {
|
||||
|
@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i python3 -p python3
|
||||
|
||||
import os
|
||||
import re
|
||||
import json
|
||||
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"__NOTE": "Generated using update.py from the same directory.",
|
||||
"extpack": "d28bcd01c14eb07eedd2b964d1abe4876f0a7e0e89530e7ba285a5d6267bf322",
|
||||
"extpackRev": "111374",
|
||||
"guest": "347fd39df6ddee8079ad41fbc038e2fb64952a40255d75292e8e49a0a0cbf657",
|
||||
"main": "e447031de468aee746529b2cf60768922f9beff22a13c54284aa430f5e925933",
|
||||
"version": "5.1.8"
|
||||
"extpack": "3982657fd4853bcbc79b9162e618545a479b65aca08e9ced43a904aeeba3ffa5",
|
||||
"extpackRev": "112026",
|
||||
"guest": "29fa0af66a3dd273b0c383c4adee31a52061d52f57d176b67f444698300b8c41",
|
||||
"main": "98073b1b2adee4e6553df73cb5bb6ea8ed7c3a41a475757716fd9400393bea40",
|
||||
"version": "5.1.10"
|
||||
}
|
||||
|
@ -291,8 +291,8 @@ _clone_user_rev() {
|
||||
pushd "$dir" >/dev/null
|
||||
fullRev=$( (git rev-parse "$rev" 2>/dev/null || git rev-parse "refs/heads/$branchName") | tail -n1)
|
||||
humanReadableRev=$(git describe "$fullRev" 2> /dev/null || git describe --tags "$fullRev" 2> /dev/null || echo -- none --)
|
||||
commitDate=$(git show --no-patch --pretty=%ci "$fullRev")
|
||||
commitDateStrict8601=$(git show --no-patch --pretty=%cI "$fullRev")
|
||||
commitDate=$(git show -1 --no-patch --pretty=%ci "$fullRev")
|
||||
commitDateStrict8601=$(git show -1 --no-patch --pretty=%cI "$fullRev")
|
||||
popd >/dev/null
|
||||
|
||||
# Allow doing additional processing before .git removal
|
||||
@ -322,6 +322,18 @@ clone_user_rev() {
|
||||
fi
|
||||
}
|
||||
|
||||
json_escape() {
|
||||
local s="$1"
|
||||
s="${s//\\/\\\\}" # \
|
||||
s="${s//\"/\\\"}" # "
|
||||
s="${s//^H/\\\b}" # \b (backspace)
|
||||
s="${s//^L/\\\f}" # \f (form feed)
|
||||
s="${s//
|
||||
/\\\n}" # \n (newline)
|
||||
s="${s//^M/\\\r}" # \r (carriage return)
|
||||
s="${s// /\\t}" # \t (tab)
|
||||
echo "$s"
|
||||
}
|
||||
|
||||
print_results() {
|
||||
hash="$1"
|
||||
@ -338,17 +350,15 @@ print_results() {
|
||||
fi
|
||||
fi
|
||||
if test -n "$hash"; then
|
||||
echo "{"
|
||||
echo " \"url\": \"$url\","
|
||||
echo " \"rev\": \"$fullRev\","
|
||||
echo " \"date\": \"$commitDateStrict8601\","
|
||||
echo -n " \"$hashType\": \"$hash\""
|
||||
if test -n "$fetchSubmodules"; then
|
||||
echo ","
|
||||
echo -n " \"fetchSubmodules\": true"
|
||||
fi
|
||||
echo ""
|
||||
echo "}"
|
||||
cat <<EOF
|
||||
{
|
||||
"url": "$(json_escape "$url")",
|
||||
"rev": "$(json_escape "$fullRev")",
|
||||
"date": "$(json_escape "$commitDateStrict8601")",
|
||||
"$(json_escape "$hashType")": "$(json_escape "$hash")",
|
||||
"fetchSubmodules": $([[ -n "fetchSubmodules" ]] && echo true || echo false)
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,11 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
makeFlags = [ "MANDIR=$(out)/share/man" ];
|
||||
postInstall = ''
|
||||
# conflict with shadow-utils
|
||||
rm $out/share/man/man5/passwd.5 \
|
||||
$out/share/man/man3/getspnam.3
|
||||
'';
|
||||
outputDocdev = "out";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
36
pkgs/data/fonts/unscii/default.nix
Normal file
36
pkgs/data/fonts/unscii/default.nix
Normal file
@ -0,0 +1,36 @@
|
||||
{stdenv, fetchurl, perl, bdftopcf, perlPackages, fontforge, SDL, SDL_image}:
|
||||
stdenv.mkDerivation rec {
|
||||
name = "${pname}-${version}";
|
||||
pname = "unscii";
|
||||
version = "1.1";
|
||||
# or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
|
||||
src = fetchurl {
|
||||
url = "http://pelulamu.net/${pname}/${name}-src.tar.gz";
|
||||
sha256 = "0qcxcnqz2nlwfzlrn115kkp3n8dd7593h762vxs6vfqm13i39lq1";
|
||||
};
|
||||
buildInputs = [];
|
||||
nativeBuildInputs = [perl bdftopcf perlPackages.TextCharWidth fontforge
|
||||
SDL SDL_image];
|
||||
preConfigure = ''
|
||||
patchShebangs .
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p "$out/share/fonts"/{truetype,opentype,web,svg}
|
||||
cp *.hex "$out/share/fonts/"
|
||||
cp *.pcf "$out/share/fonts/"
|
||||
cp *.ttf "$out/share/fonts/truetype"
|
||||
cp *.otf "$out/share/fonts/opentype"
|
||||
cp *.svg "$out/share/fonts/svg"
|
||||
cp *.woff "$out/share/fonts/web"
|
||||
'';
|
||||
meta = {
|
||||
inherit version;
|
||||
description = ''Bitmapped character-art-friendly Unicode fonts'';
|
||||
# Basically GPL2+ with font exception — because of the Unifont-augmented
|
||||
# version. The reduced version is public domain.
|
||||
license = http://unifoundry.com/LICENSE.txt;
|
||||
maintainers = [stdenv.lib.maintainers.raskin];
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
homepage = "http://pelulamu.net/unscii/";
|
||||
};
|
||||
}
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "efl-${version}";
|
||||
version = "1.18.3";
|
||||
version = "1.18.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.enlightenment.org/rel/libs/efl/${name}.tar.xz";
|
||||
sha256 = "1h347sfxajyb5s931m9qga14wwiqci7aicww2imxjhzm8w4fqj07";
|
||||
sha256 = "09c0ajszjarcs6d62zlgnf1aha2f921mfr0gxg6nwza36xzc1srr";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user