Merge branch 'master' into staging
This commit is contained in:
commit
86e4c9ed46
@ -4,7 +4,7 @@ matrix:
|
|||||||
- os: linux
|
- os: linux
|
||||||
sudo: false
|
sudo: false
|
||||||
script:
|
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
|
- ./maintainers/scripts/travis-nox-review-pr.sh nixos-options nixos-manual
|
||||||
- os: linux
|
- os: linux
|
||||||
sudo: required
|
sudo: required
|
||||||
|
@ -382,4 +382,138 @@ it. Place the resulting <filename>package.nix</filename> file into
|
|||||||
|
|
||||||
</section>
|
</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>
|
</chapter>
|
||||||
|
@ -132,6 +132,7 @@
|
|||||||
drets = "Dmytro Rets <dmitryrets@gmail.com>";
|
drets = "Dmytro Rets <dmitryrets@gmail.com>";
|
||||||
drewkett = "Andrew Burkett <burkett.andrew@gmail.com>";
|
drewkett = "Andrew Burkett <burkett.andrew@gmail.com>";
|
||||||
dtzWill = "Will Dietz <nix@wdtz.org>";
|
dtzWill = "Will Dietz <nix@wdtz.org>";
|
||||||
|
e-user = "Alexander Kahl <nixos@sodosopa.io>";
|
||||||
ebzzry = "Rommel Martinez <ebzzry@gmail.com>";
|
ebzzry = "Rommel Martinez <ebzzry@gmail.com>";
|
||||||
ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>";
|
ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>";
|
||||||
eduarrrd = "Eduard Bachmakov <e.bachmakov@gmail.com>";
|
eduarrrd = "Eduard Bachmakov <e.bachmakov@gmail.com>";
|
||||||
@ -187,6 +188,7 @@
|
|||||||
gridaphobe = "Eric Seidel <eric@seidel.io>";
|
gridaphobe = "Eric Seidel <eric@seidel.io>";
|
||||||
guibert = "David Guibert <david.guibert@gmail.com>";
|
guibert = "David Guibert <david.guibert@gmail.com>";
|
||||||
guillaumekoenig = "Guillaume Koenig <guillaume.edward.koenig@gmail.com>";
|
guillaumekoenig = "Guillaume Koenig <guillaume.edward.koenig@gmail.com>";
|
||||||
|
guyonvarch = "Joris Guyonvarch <joris@guyonvarch.me>";
|
||||||
hakuch = "Jesse Haber-Kucharsky <hakuch@gmail.com>";
|
hakuch = "Jesse Haber-Kucharsky <hakuch@gmail.com>";
|
||||||
havvy = "Ryan Scheel <ryan.havvy@gmail.com>";
|
havvy = "Ryan Scheel <ryan.havvy@gmail.com>";
|
||||||
hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>";
|
hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>";
|
||||||
@ -242,6 +244,7 @@
|
|||||||
leonardoce = "Leonardo Cecchi <leonardo.cecchi@gmail.com>";
|
leonardoce = "Leonardo Cecchi <leonardo.cecchi@gmail.com>";
|
||||||
lethalman = "Luca Bruno <lucabru@src.gnome.org>";
|
lethalman = "Luca Bruno <lucabru@src.gnome.org>";
|
||||||
lewo = "Antoine Eiche <lewo@abesis.fr>";
|
lewo = "Antoine Eiche <lewo@abesis.fr>";
|
||||||
|
lheckemann = "Linus Heckemann <git@sphalerite.org>";
|
||||||
lhvwb = "Nathaniel Baxter <nathaniel.baxter@gmail.com>";
|
lhvwb = "Nathaniel Baxter <nathaniel.baxter@gmail.com>";
|
||||||
lihop = "Leroy Hopson <nixos@leroy.geek.nz>";
|
lihop = "Leroy Hopson <nixos@leroy.geek.nz>";
|
||||||
linquize = "Linquize <linquize@yahoo.com.hk>";
|
linquize = "Linquize <linquize@yahoo.com.hk>";
|
||||||
@ -273,6 +276,7 @@
|
|||||||
matthiasbeyer = "Matthias Beyer <mail@beyermatthias.de>";
|
matthiasbeyer = "Matthias Beyer <mail@beyermatthias.de>";
|
||||||
maurer = "Matthew Maurer <matthew.r.maurer+nix@gmail.com>";
|
maurer = "Matthew Maurer <matthew.r.maurer+nix@gmail.com>";
|
||||||
mbakke = "Marius Bakke <mbakke@fastmail.com>";
|
mbakke = "Marius Bakke <mbakke@fastmail.com>";
|
||||||
|
mbbx6spp = "Susan Potter <me@susanpotter.net>";
|
||||||
mbe = "Brandon Edens <brandonedens@gmail.com>";
|
mbe = "Brandon Edens <brandonedens@gmail.com>";
|
||||||
mboes = "Mathieu Boespflug <mboes@tweag.net>";
|
mboes = "Mathieu Boespflug <mboes@tweag.net>";
|
||||||
mcmtroffaes = "Matthias C. M. Troffaes <matthias.troffaes@gmail.com>";
|
mcmtroffaes = "Matthias C. M. Troffaes <matthias.troffaes@gmail.com>";
|
||||||
@ -383,6 +387,7 @@
|
|||||||
retrry = "Tadas Barzdžius <retrry@gmail.com>";
|
retrry = "Tadas Barzdžius <retrry@gmail.com>";
|
||||||
rick68 = "Wei-Ming Yang <rick68@gmail.com>";
|
rick68 = "Wei-Ming Yang <rick68@gmail.com>";
|
||||||
rickynils = "Rickard Nilsson <rickynils@gmail.com>";
|
rickynils = "Rickard Nilsson <rickynils@gmail.com>";
|
||||||
|
rlupton20 = "Richard Lupton <richard.lupton@gmail.com>";
|
||||||
rnhmjoj = "Michele Guerini Rocco <micheleguerinirocco@me.com>";
|
rnhmjoj = "Michele Guerini Rocco <micheleguerinirocco@me.com>";
|
||||||
rob = "Rob Vermaas <rob.vermaas@gmail.com>";
|
rob = "Rob Vermaas <rob.vermaas@gmail.com>";
|
||||||
robberer = "Longrin Wischnewski <robberer@freakmail.de>";
|
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
|
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)
|
nixpkgs-lint)
|
||||||
echo "=== Checking 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:
|
typical use:
|
||||||
|
|
||||||
<screen>
|
<screen>
|
||||||
$ nix-repl '<nixos>'
|
$ nix-repl '<nixpkgs/nixos>'
|
||||||
|
|
||||||
nix-repl> config.networking.hostName
|
nix-repl> config.networking.hostName
|
||||||
"mandark"
|
"mandark"
|
||||||
|
@ -68,7 +68,7 @@ desired operation. It must be one of the following:
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>Build and activate the new configuration, and make it the
|
<para>Build and activate the new configuration, and make it the
|
||||||
boot default. That is, the configuration is added to the GRUB
|
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
|
will boot the system into the new configuration. Previous
|
||||||
configurations activated with <command>nixos-rebuild
|
configurations activated with <command>nixos-rebuild
|
||||||
switch</command> or <command>nixos-rebuild boot</command> remain
|
switch</command> or <command>nixos-rebuild boot</command> remain
|
||||||
|
@ -7,11 +7,11 @@ with lib;
|
|||||||
gnu = mkOption {
|
gnu = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description =
|
description = ''
|
||||||
'' When enabled, GNU software is chosen by default whenever a there is
|
When enabled, GNU software is chosen by default whenever a there is
|
||||||
a choice between GNU and non-GNU software (e.g., GNU lsh
|
a choice between GNU and non-GNU software (e.g., GNU lsh
|
||||||
vs. OpenSSH).
|
vs. OpenSSH).
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ in
|
|||||||
default = with pkgs.kbdKeymaps; [ dvp neo ];
|
default = with pkgs.kbdKeymaps; [ dvp neo ];
|
||||||
defaultText = ''with pkgs.kbdKeymaps; [ dvp neo ]'';
|
defaultText = ''with pkgs.kbdKeymaps; [ dvp neo ]'';
|
||||||
description = ''
|
description = ''
|
||||||
List of additional packages that provide console fonts, keymaps and
|
List of additional packages that provide console fonts, keymaps and
|
||||||
other resources.
|
other resources.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -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 = {
|
networking.proxy = {
|
||||||
|
|
||||||
default = lib.mkOption {
|
default = lib.mkOption {
|
||||||
|
@ -10,9 +10,21 @@ let
|
|||||||
inherit (config.services.samba) nsswins;
|
inherit (config.services.samba) nsswins;
|
||||||
ldap = (config.users.ldap.enable && config.users.ldap.nsswitch);
|
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 = {
|
options = {
|
||||||
|
|
||||||
# NSS modules. Hacky!
|
# NSS modules. Hacky!
|
||||||
@ -39,24 +51,26 @@ in
|
|||||||
# Name Service Switch configuration file. Required by the C
|
# Name Service Switch configuration file. Required by the C
|
||||||
# library. !!! Factor out the mdns stuff. The avahi module
|
# library. !!! Factor out the mdns stuff. The avahi module
|
||||||
# should define an option used by this module.
|
# should define an option used by this module.
|
||||||
environment.etc."nsswitch.conf".text =
|
environment.etc."nsswitch.conf".text = ''
|
||||||
''
|
passwd: ${concatStringsSep " " passwdArray}
|
||||||
passwd: files ${optionalString ldap "ldap"}
|
group: ${concatStringsSep " " passwdArray}
|
||||||
group: files ${optionalString ldap "ldap"}
|
shadow: ${concatStringsSep " " shadowArray}
|
||||||
shadow: files ${optionalString ldap "ldap"}
|
|
||||||
hosts: files ${optionalString nssmdns "mdns_minimal [NOTFOUND=return]"} dns ${optionalString nssmdns "mdns"} ${optionalString nsswins "wins"} myhostname mymachines
|
hosts: ${concatStringsSep " " hostArray}
|
||||||
networks: files dns
|
networks: files
|
||||||
ethers: files
|
|
||||||
services: files
|
ethers: files
|
||||||
protocols: files
|
services: files
|
||||||
'';
|
protocols: files
|
||||||
|
rpc: files
|
||||||
|
'';
|
||||||
|
|
||||||
# Systemd provides nss-myhostname to ensure that our hostname
|
# Systemd provides nss-myhostname to ensure that our hostname
|
||||||
# always resolves to a valid IP address. It returns all locally
|
# always resolves to a valid IP address. It returns all locally
|
||||||
# configured IP addresses, or ::1 and 127.0.0.2 as
|
# configured IP addresses, or ::1 and 127.0.0.2 as
|
||||||
# fallbacks. Systemd also provides nss-mymachines to return IP
|
# fallbacks. Systemd also provides nss-mymachines to return IP
|
||||||
# addresses of local containers.
|
# addresses of local containers.
|
||||||
system.nssModules = [ config.systemd.package ];
|
system.nssModules = [ config.systemd.package.out ];
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,6 @@
|
|||||||
lambdabot = 191;
|
lambdabot = 191;
|
||||||
asterisk = 192;
|
asterisk = 192;
|
||||||
plex = 193;
|
plex = 193;
|
||||||
bird = 195;
|
|
||||||
grafana = 196;
|
grafana = 196;
|
||||||
skydns = 197;
|
skydns = 197;
|
||||||
ripple-rest = 198;
|
ripple-rest = 198;
|
||||||
@ -281,6 +280,7 @@
|
|||||||
stanchion = 262;
|
stanchion = 262;
|
||||||
riak-cs = 263;
|
riak-cs = 263;
|
||||||
infinoted = 264;
|
infinoted = 264;
|
||||||
|
keystone = 265;
|
||||||
|
|
||||||
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
# 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
|
#asterisk = 192; # unused
|
||||||
plex = 193;
|
plex = 193;
|
||||||
sabnzbd = 194;
|
sabnzbd = 194;
|
||||||
bird = 195;
|
|
||||||
#grafana = 196; #unused
|
#grafana = 196; #unused
|
||||||
#skydns = 197; #unused
|
#skydns = 197; #unused
|
||||||
#ripple-rest = 198; #unused
|
#ripple-rest = 198; #unused
|
||||||
@ -532,6 +531,7 @@
|
|||||||
stanchion = 262;
|
stanchion = 262;
|
||||||
riak-cs = 263;
|
riak-cs = 263;
|
||||||
infinoted = 264;
|
infinoted = 264;
|
||||||
|
keystone = 265;
|
||||||
|
|
||||||
# When adding a gid, make sure it doesn't match an existing
|
# When adding a gid, make sure it doesn't match an existing
|
||||||
# uid. Users and groups with the same name should have equal
|
# uid. Users and groups with the same name should have equal
|
||||||
|
@ -133,9 +133,11 @@
|
|||||||
./services/cluster/fleet.nix
|
./services/cluster/fleet.nix
|
||||||
./services/cluster/kubernetes.nix
|
./services/cluster/kubernetes.nix
|
||||||
./services/cluster/panamax.nix
|
./services/cluster/panamax.nix
|
||||||
|
./services/computing/boinc/client.nix
|
||||||
./services/computing/torque/server.nix
|
./services/computing/torque/server.nix
|
||||||
./services/computing/torque/mom.nix
|
./services/computing/torque/mom.nix
|
||||||
./services/computing/slurm/slurm.nix
|
./services/computing/slurm/slurm.nix
|
||||||
|
./services/continuous-integration/buildbot/master.nix
|
||||||
./services/continuous-integration/buildkite-agent.nix
|
./services/continuous-integration/buildkite-agent.nix
|
||||||
./services/continuous-integration/hydra/default.nix
|
./services/continuous-integration/hydra/default.nix
|
||||||
./services/continuous-integration/gitlab-runner.nix
|
./services/continuous-integration/gitlab-runner.nix
|
||||||
@ -629,4 +631,5 @@
|
|||||||
./virtualisation/vmware-guest.nix
|
./virtualisation/vmware-guest.nix
|
||||||
./virtualisation/xen-dom0.nix
|
./virtualisation/xen-dom0.nix
|
||||||
./virtualisation/xe-guest-utilities.nix
|
./virtualisation/xe-guest-utilities.nix
|
||||||
|
./virtualisation/openstack/keystone.nix
|
||||||
]
|
]
|
||||||
|
@ -9,14 +9,14 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.programs.mosh = {
|
options.programs.mosh = {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
description = ''
|
description = ''
|
||||||
Whether to enable mosh. Note, this will open ports in your firewall!
|
Whether to enable mosh. Note, this will open ports in your firewall!
|
||||||
'';
|
'';
|
||||||
default = false;
|
default = false;
|
||||||
example = true;
|
example = true;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -484,7 +484,7 @@ in {
|
|||||||
|
|
||||||
clusterDns = mkOption {
|
clusterDns = mkOption {
|
||||||
description = "Use alternative dns.";
|
description = "Use alternative dns.";
|
||||||
default = "10.10.1.1";
|
default = "10.10.0.1";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ in
|
|||||||
only the hosts listed in <varname>dataDir</varname>/remote_hosts.cfg will be allowed to
|
only the hosts listed in <varname>dataDir</varname>/remote_hosts.cfg will be allowed to
|
||||||
connect.
|
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
|
if [ "$(id -u)" = 0 ]; then
|
||||||
chown ${cfg.user}:${cfg.group} `dirname ${cfg.uriFile}`;
|
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.databaseDir}
|
||||||
chown ${cfg.user}:${cfg.group} ${cfg.viewIndexDir}
|
chown ${cfg.user}:${cfg.group} ${cfg.viewIndexDir}
|
||||||
chown ${cfg.user}:${cfg.group} ${cfg.configFile}
|
chown ${cfg.user}:${cfg.group} ${cfg.configFile}
|
||||||
|
@ -86,6 +86,12 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
{ assertion = cfg.users != [];
|
||||||
|
message = "services.psd.users must contain at least one user";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
systemd = {
|
systemd = {
|
||||||
services = {
|
services = {
|
||||||
psd = {
|
psd = {
|
||||||
|
@ -64,7 +64,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
worldPath = mkOption {
|
worldPath = mkOption {
|
||||||
type = types.path;
|
type = types.nullOr types.path;
|
||||||
default = null;
|
default = null;
|
||||||
description = ''
|
description = ''
|
||||||
The path to the world file (<literal>.wld</literal>) which should be loaded.
|
The path to the world file (<literal>.wld</literal>) which should be loaded.
|
||||||
@ -126,8 +126,8 @@ in
|
|||||||
User = "terraria";
|
User = "terraria";
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
RemainAfterExit = true;
|
RemainAfterExit = true;
|
||||||
ExecStart = "${pkgs.tmux.bin}/bin/tmux -S /var/lib/terraria/terraria.sock new -d ${pkgs.terraria-server}/bin/TerrariaServer ${concatStringsSep " " flags}";
|
ExecStart = "${getBin pkgs.tmux}/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";
|
ExecStop = "${getBin pkgs.tmux}/bin/tmux -S /var/lib/terraria/terraria.sock send-keys Enter \"exit\" Enter";
|
||||||
};
|
};
|
||||||
|
|
||||||
postStart = ''
|
postStart = ''
|
||||||
|
@ -100,6 +100,12 @@ in
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
assertions =
|
||||||
|
[ { assertion = !config.services.rsyslogd.enable;
|
||||||
|
message = "rsyslogd conflicts with syslogd";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.sysklogd ];
|
environment.systemPackages = [ pkgs.sysklogd ];
|
||||||
|
|
||||||
services.syslogd.extraParams = optional cfg.enableNetworkInput "-r";
|
services.syslogd.extraParams = optional cfg.enableNetworkInput "-r";
|
||||||
|
@ -20,17 +20,29 @@ in {
|
|||||||
description = "Whether to enable the postsrsd SRS server for Postfix.";
|
description = "Whether to enable the postsrsd SRS server for Postfix.";
|
||||||
};
|
};
|
||||||
|
|
||||||
domain = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
description = "Domain name for rewrite";
|
|
||||||
};
|
|
||||||
|
|
||||||
secretsFile = mkOption {
|
secretsFile = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
default = "/var/lib/postsrsd/postsrsd.secret";
|
default = "/var/lib/postsrsd/postsrsd.secret";
|
||||||
description = "Secret keys used for signing and verification";
|
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 {
|
forwardPort = mkOption {
|
||||||
type = types.int;
|
type = types.int;
|
||||||
default = 10001;
|
default = 10001;
|
||||||
@ -43,6 +55,18 @@ in {
|
|||||||
description = "Port for the reverse SRS lookup";
|
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 {
|
user = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "postsrsd";
|
default = "postsrsd";
|
||||||
@ -86,7 +110,7 @@ in {
|
|||||||
path = [ pkgs.coreutils ];
|
path = [ pkgs.coreutils ];
|
||||||
|
|
||||||
serviceConfig = {
|
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;
|
User = cfg.user;
|
||||||
Group = cfg.group;
|
Group = cfg.group;
|
||||||
PermissionsStartOnly = true;
|
PermissionsStartOnly = true;
|
||||||
|
@ -108,7 +108,8 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
preStart = ''
|
preStart = ''
|
||||||
mkdir -m 0700 -p ${cfg.dataDir}
|
mkdir -p ${cfg.dataDir}
|
||||||
|
chmod 755 ${cfg.dataDir}
|
||||||
install -D /dev/null ${cfg.pidFile}
|
install -D /dev/null ${cfg.pidFile}
|
||||||
if [ "$(id -u)" = 0 ]; then
|
if [ "$(id -u)" = 0 ]; then
|
||||||
chown -R ${cfg.user} ${cfg.dataDir};
|
chown -R ${cfg.user} ${cfg.dataDir};
|
||||||
|
@ -1,76 +1,68 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (lib) mkEnableOption mkIf mkOption singleton types;
|
inherit (lib) mkEnableOption mkIf mkOption types;
|
||||||
inherit (pkgs) bird;
|
|
||||||
cfg = config.services.bird;
|
|
||||||
|
|
||||||
configFile = pkgs.writeText "bird.conf" ''
|
generic = variant:
|
||||||
${cfg.config}
|
let
|
||||||
'';
|
cfg = config.services.${variant};
|
||||||
in
|
pkg = pkgs.${variant};
|
||||||
|
birdc = if variant == "bird6" then "birdc6" else "birdc";
|
||||||
{
|
configFile = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "${variant}.conf";
|
||||||
###### interface
|
text = cfg.config;
|
||||||
|
preferLocalBuild = true;
|
||||||
options = {
|
buildCommand = ''
|
||||||
|
echo -n "$text" > $out
|
||||||
services.bird = {
|
${pkg}/bin/${variant} -d -p -c $out
|
||||||
|
|
||||||
enable = mkEnableOption "BIRD Internet Routing Daemon";
|
|
||||||
|
|
||||||
config = mkOption {
|
|
||||||
type = types.string;
|
|
||||||
description = ''
|
|
||||||
BIRD Internet Routing Daemon configuration file.
|
|
||||||
<link xlink:href='http://bird.network.cz/'/>
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
in {
|
||||||
user = mkOption {
|
###### interface
|
||||||
type = types.string;
|
options = {
|
||||||
default = "bird";
|
services.${variant} = {
|
||||||
description = ''
|
enable = mkEnableOption "BIRD Internet Routing Daemon";
|
||||||
BIRD Internet Routing Daemon user.
|
config = mkOption {
|
||||||
'';
|
type = types.lines;
|
||||||
|
description = ''
|
||||||
|
BIRD Internet Routing Daemon configuration file.
|
||||||
|
<link xlink:href='http://bird.network.cz/'/>
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
group = mkOption {
|
###### implementation
|
||||||
type = types.string;
|
config = mkIf cfg.enable {
|
||||||
default = "bird";
|
systemd.services.${variant} = {
|
||||||
description = ''
|
description = "BIRD Internet Routing Daemon";
|
||||||
BIRD Internet Routing Daemon group.
|
wantedBy = [ "multi-user.target" ];
|
||||||
'';
|
serviceConfig = {
|
||||||
};
|
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
|
||||||
###### implementation
|
"CAP_NET_BIND_SERVICE" "CAP_NET_BROADCAST" "CAP_NET_ADMIN" "CAP_NET_RAW" ];
|
||||||
|
ProtectSystem = "full";
|
||||||
config = mkIf cfg.enable {
|
ProtectHome = "yes";
|
||||||
|
SystemCallFilter="~@cpu-emulation @debug @keyring @module @mount @obsolete @raw-io";
|
||||||
users.extraUsers = singleton {
|
MemoryDenyWriteExecute = "yes";
|
||||||
name = cfg.user;
|
};
|
||||||
description = "BIRD Internet Routing Daemon user";
|
};
|
||||||
uid = config.ids.uids.bird;
|
users = {
|
||||||
group = cfg.group;
|
extraUsers.${variant} = {
|
||||||
};
|
description = "BIRD Internet Routing Daemon user";
|
||||||
|
group = "${variant}";
|
||||||
users.extraGroups = singleton {
|
};
|
||||||
name = cfg.group;
|
extraGroups.${variant} = {};
|
||||||
gid = config.ids.gids.bird;
|
};
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.bird = {
|
|
||||||
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}";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
inherit (config.services) bird bird6;
|
||||||
|
in {
|
||||||
|
imports = [(generic "bird") (generic "bird6")];
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
servers = mkOption {
|
servers = mkOption {
|
||||||
default = config.services.ntp.servers;
|
default = config.networking.timeServers;
|
||||||
description = ''
|
description = ''
|
||||||
The set of NTP servers from which to synchronise.
|
The set of NTP servers from which to synchronise.
|
||||||
'';
|
'';
|
||||||
@ -102,7 +102,7 @@ in
|
|||||||
home = stateDir;
|
home = stateDir;
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.ntpd.enable = mkForce false;
|
systemd.services.timesyncd.enable = mkForce false;
|
||||||
|
|
||||||
systemd.services.chronyd =
|
systemd.services.chronyd =
|
||||||
{ description = "chrony NTP daemon";
|
{ description = "chrony NTP daemon";
|
||||||
|
@ -22,7 +22,7 @@ in
|
|||||||
|
|
||||||
config = mkOption {
|
config = mkOption {
|
||||||
default = null;
|
default = null;
|
||||||
type = types.str;
|
type = types.nullOr types.str;
|
||||||
description = ''
|
description = ''
|
||||||
Contents of Dante's configuration file
|
Contents of Dante's configuration file
|
||||||
NOTE: user.privileged/user.unprivileged are set by the service
|
NOTE: user.privileged/user.unprivileged are set by the service
|
||||||
|
@ -51,6 +51,7 @@ in {
|
|||||||
before = [ "network-pre.target" ];
|
before = [ "network-pre.target" ];
|
||||||
wants = [ "network-pre.target" ];
|
wants = [ "network-pre.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
reloadIfChanged = true;
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type="oneshot";
|
Type="oneshot";
|
||||||
RemainAfterExit = "yes";
|
RemainAfterExit = "yes";
|
||||||
|
@ -34,7 +34,7 @@ in
|
|||||||
services.ntp = {
|
services.ntp = {
|
||||||
|
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
default = !config.boot.isContainer;
|
default = false;
|
||||||
description = ''
|
description = ''
|
||||||
Whether to synchronise your machine's time using the NTP
|
Whether to synchronise your machine's time using the NTP
|
||||||
protocol.
|
protocol.
|
||||||
@ -42,12 +42,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
servers = mkOption {
|
servers = mkOption {
|
||||||
default = [
|
default = config.networking.timeServers;
|
||||||
"0.nixos.pool.ntp.org"
|
|
||||||
"1.nixos.pool.ntp.org"
|
|
||||||
"2.nixos.pool.ntp.org"
|
|
||||||
"3.nixos.pool.ntp.org"
|
|
||||||
];
|
|
||||||
description = ''
|
description = ''
|
||||||
The set of NTP servers from which to synchronise.
|
The set of NTP servers from which to synchronise.
|
||||||
'';
|
'';
|
||||||
@ -70,6 +65,7 @@ in
|
|||||||
|
|
||||||
# Make tools such as ntpq available in the system path.
|
# Make tools such as ntpq available in the system path.
|
||||||
environment.systemPackages = [ pkgs.ntp ];
|
environment.systemPackages = [ pkgs.ntp ];
|
||||||
|
services.timesyncd.enable = mkForce false;
|
||||||
|
|
||||||
users.extraUsers = singleton
|
users.extraUsers = singleton
|
||||||
{ name = ntpUser;
|
{ name = ntpUser;
|
||||||
|
@ -34,7 +34,7 @@ with lib;
|
|||||||
|
|
||||||
assertions = singleton
|
assertions = singleton
|
||||||
{ assertion = !(config.services.openfire.usePostgreSQL -> config.services.postgresql.enable);
|
{ 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 = {
|
systemd.services.openfire = {
|
||||||
|
@ -49,7 +49,7 @@ in
|
|||||||
###### implementation
|
###### implementation
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.ntp.enable = mkForce false;
|
services.timesyncd.enable = mkForce false;
|
||||||
|
|
||||||
# Add ntpctl to the environment for status checking
|
# Add ntpctl to the environment for status checking
|
||||||
environment.systemPackages = [ package ];
|
environment.systemPackages = [ package ];
|
||||||
|
@ -31,18 +31,22 @@ let
|
|||||||
default = null;
|
default = null;
|
||||||
example = "rVXs/Ni9tu3oDBLS4hOyAUAa1qTWVA3loR8eL20os3I=";
|
example = "rVXs/Ni9tu3oDBLS4hOyAUAa1qTWVA3loR8eL20os3I=";
|
||||||
type = with types; nullOr str;
|
type = with types; nullOr str;
|
||||||
description = ''base64 preshared key generated by wg genpsk. Optional,
|
description = ''
|
||||||
and may be omitted. This option adds an additional layer of
|
base64 preshared key generated by wg genpsk. Optional,
|
||||||
symmetric-key cryptography to be mixed into the already existing
|
and may be omitted. This option adds an additional layer of
|
||||||
public-key cryptography, for post-quantum resistance.'';
|
symmetric-key cryptography to be mixed into the already existing
|
||||||
|
public-key cryptography, for post-quantum resistance.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
listenPort = mkOption {
|
listenPort = mkOption {
|
||||||
default = null;
|
default = null;
|
||||||
type = with types; nullOr int;
|
type = with types; nullOr int;
|
||||||
example = 51820;
|
example = 51820;
|
||||||
description = ''16-bit port for listening. Optional; if not specified,
|
description = ''
|
||||||
automatically generated based on interface name.'';
|
16-bit port for listening. Optional; if not specified,
|
||||||
|
automatically generated based on interface name.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
preSetup = mkOption {
|
preSetup = mkOption {
|
||||||
@ -51,8 +55,9 @@ let
|
|||||||
''];
|
''];
|
||||||
default = [];
|
default = [];
|
||||||
type = with types; listOf str;
|
type = with types; listOf str;
|
||||||
description = ''A list of commands called at the start of the interface
|
description = ''
|
||||||
setup.'';
|
A list of commands called at the start of the interface setup.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
postSetup = mkOption {
|
postSetup = mkOption {
|
||||||
|
@ -75,7 +75,7 @@ let
|
|||||||
'') cfg.listenAddresses}
|
'') cfg.listenAddresses}
|
||||||
Listen /var/run/cups/cups.sock
|
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"}
|
DefaultShared ${if cfg.defaultShared then "Yes" else "No"}
|
||||||
|
|
||||||
@ -310,6 +310,13 @@ in
|
|||||||
for i in *; do
|
for i in *; do
|
||||||
[ ! -e "/var/lib/cups/$i" ] && ln -s "${rootdir}/etc/cups/$i" "/var/lib/cups/$i"
|
[ ! -e "/var/lib/cups/$i" ] && ln -s "${rootdir}/etc/cups/$i" "/var/lib/cups/$i"
|
||||||
done
|
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 ''
|
${optionalString cfg.gutenprint ''
|
||||||
if [ -d /var/lib/cups/ppd ]; then
|
if [ -d /var/lib/cups/ppd ]; then
|
||||||
${gutenprint}/bin/cups-genppdupdate -p /var/lib/cups/ppd
|
${gutenprint}/bin/cups-genppdupdate -p /var/lib/cups/ppd
|
||||||
|
@ -143,7 +143,7 @@ in
|
|||||||
services.fail2ban.jails.ssh-iptables =
|
services.fail2ban.jails.ssh-iptables =
|
||||||
''
|
''
|
||||||
filter = sshd
|
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
|
maxretry = 5
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -4,6 +4,14 @@ with lib;
|
|||||||
|
|
||||||
let
|
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;
|
xcfg = config.services.xserver;
|
||||||
cfg = xcfg.desktopManager.lxqt;
|
cfg = xcfg.desktopManager.lxqt;
|
||||||
|
|
||||||
@ -18,8 +26,14 @@ in
|
|||||||
description = "Enable the LXQt desktop manager";
|
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) {
|
config = mkIf (xcfg.enable && cfg.enable) {
|
||||||
|
|
||||||
@ -31,47 +45,12 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages =
|
||||||
pkgs.kde5.kwindowsystem # provides some QT5 plugins needed by lxqt-panel
|
pkgs.lxqt.preRequisitePackages ++
|
||||||
pkgs.kde5.libkscreen # provides plugins for screen management software
|
pkgs.lxqt.corePackages ++
|
||||||
pkgs.kde5.oxygen-icons5 # default icon theme
|
(removePackagesByName
|
||||||
pkgs.libfm
|
pkgs.lxqt.optionalPackages
|
||||||
pkgs.libfm-extra
|
config.environment.lxqt.excludePackages);
|
||||||
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
|
|
||||||
];
|
|
||||||
|
|
||||||
# Link some extra directories in /run/current-system/software/share
|
# Link some extra directories in /run/current-system/software/share
|
||||||
environment.pathsToLink = [
|
environment.pathsToLink = [
|
||||||
@ -80,5 +59,8 @@ in
|
|||||||
"/share/lxqt"
|
"/share/lxqt"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.gvfs}/lib/gio/modules" ];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ in {
|
|||||||
|
|
||||||
services.urxvtd = {
|
services.urxvtd = {
|
||||||
description = "urxvt terminal daemon";
|
description = "urxvt terminal daemon";
|
||||||
|
path = [ pkgs.xsel ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkgs.rxvt_unicode-with-plugins}/bin/urxvtd -o";
|
ExecStart = "${pkgs.rxvt_unicode-with-plugins}/bin/urxvtd -o";
|
||||||
Environment = "RXVT_SOCKET=%t/urxvtd-socket";
|
Environment = "RXVT_SOCKET=%t/urxvtd-socket";
|
||||||
|
@ -44,10 +44,10 @@ in
|
|||||||
copyKernels = mkOption {
|
copyKernels = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
description = "
|
description = ''
|
||||||
Whether copy the necessary boot files into /boot, so
|
Whether copy the necessary boot files into /boot, so
|
||||||
/nix/store is not needed by the boot loader.
|
/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 // {
|
linkOptions = commonNetworkOptions // {
|
||||||
@ -515,6 +520,8 @@ let
|
|||||||
''
|
''
|
||||||
[Link]
|
[Link]
|
||||||
${attrsToSection def.linkConfig}
|
${attrsToSection def.linkConfig}
|
||||||
|
|
||||||
|
${def.extraConfig}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -565,6 +572,7 @@ let
|
|||||||
${attrsToSection def.bondConfig}
|
${attrsToSection def.bondConfig}
|
||||||
|
|
||||||
''}
|
''}
|
||||||
|
${def.extraConfig}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -603,9 +611,14 @@ let
|
|||||||
${attrsToSection x.routeConfig}
|
${attrsToSection x.routeConfig}
|
||||||
|
|
||||||
'')}
|
'')}
|
||||||
|
${def.extraConfig}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
unitFiles = map (name: {
|
||||||
|
target = "systemd/network/${name}";
|
||||||
|
source = "${cfg.units.${name}.unit}/${name}";
|
||||||
|
}) (attrNames cfg.units);
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -657,17 +670,15 @@ in
|
|||||||
systemd.additionalUpstreamSystemUnits =
|
systemd.additionalUpstreamSystemUnits =
|
||||||
[ "systemd-networkd.service" "systemd-networkd-wait-online.service" ];
|
[ "systemd-networkd.service" "systemd-networkd-wait-online.service" ];
|
||||||
|
|
||||||
systemd.network.units =
|
systemd.network.units = mapAttrs' (n: v: nameValuePair "${n}.link" (linkToUnit n v)) cfg.links
|
||||||
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}.netdev" (netdevToUnit n v)) cfg.netdevs
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.network" (networkToUnit n v)) cfg.networks;
|
// mapAttrs' (n: v: nameValuePair "${n}.network" (networkToUnit n v)) cfg.networks;
|
||||||
|
|
||||||
environment.etc."systemd/network".source =
|
environment.etc = unitFiles;
|
||||||
generateUnits "network" cfg.units [] [];
|
|
||||||
|
|
||||||
systemd.services.systemd-networkd = {
|
systemd.services.systemd-networkd = {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
restartTriggers = [ config.environment.etc."systemd/network".source ];
|
restartTriggers = map (f: f.source) (unitFiles);
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.systemd-networkd-wait-online = {
|
systemd.services.systemd-networkd-wait-online = {
|
||||||
@ -687,8 +698,5 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
services.resolved.enable = mkDefault true;
|
services.resolved.enable = mkDefault true;
|
||||||
services.timesyncd.enable = mkDefault config.services.ntp.enable;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,14 +6,21 @@ with lib;
|
|||||||
|
|
||||||
options = {
|
options = {
|
||||||
|
|
||||||
services.timesyncd.enable = mkOption {
|
services.timesyncd = {
|
||||||
default = false;
|
enable = mkOption {
|
||||||
type = types.bool;
|
default = !config.boot.isContainer;
|
||||||
description = ''
|
type = types.bool;
|
||||||
Enables the systemd NTP client daemon.
|
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 {
|
config = mkIf config.services.timesyncd.enable {
|
||||||
@ -30,8 +37,6 @@ with lib;
|
|||||||
NTP=${concatStringsSep " " config.services.ntp.servers}
|
NTP=${concatStringsSep " " config.services.ntp.servers}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
systemd.services.ntpd.enable = false;
|
|
||||||
|
|
||||||
users.extraUsers.systemd-timesync.uid = config.ids.uids.systemd-timesync;
|
users.extraUsers.systemd-timesync.uid = config.ids.uids.systemd-timesync;
|
||||||
users.extraGroups.systemd-timesync.gid = config.ids.gids.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 = {
|
config = {
|
||||||
|
|
||||||
systemd.services.backdoor =
|
systemd.services.backdoor =
|
||||||
@ -110,6 +119,9 @@ let kernel = config.boot.kernelPackages.kernel; in
|
|||||||
|
|
||||||
networking.usePredictableInterfaceNames = false;
|
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.
|
# Make it easy to log in as root when running the test interactively.
|
||||||
users.extraUsers.root.initialHashedPassword = mkOverride 150 "";
|
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 {
|
extraVeths = mkOption {
|
||||||
type = with types; attrsOf (submodule { options = networkOptions; });
|
type = with types; attrsOf (submodule { options = networkOptions; });
|
||||||
default = {};
|
default = {};
|
||||||
@ -654,6 +665,7 @@ in
|
|||||||
''}
|
''}
|
||||||
''}
|
''}
|
||||||
INTERFACES="${toString cfg.interfaces}"
|
INTERFACES="${toString cfg.interfaces}"
|
||||||
|
MACVLANS="${toString cfg.macvlans}"
|
||||||
${optionalString cfg.autoStart ''
|
${optionalString cfg.autoStart ''
|
||||||
AUTO_START=1
|
AUTO_START=1
|
||||||
''}
|
''}
|
||||||
@ -664,7 +676,7 @@ in
|
|||||||
# Generate /etc/hosts entries for the containers.
|
# Generate /etc/hosts entries for the containers.
|
||||||
networking.extraHosts = concatStrings (mapAttrsToList (name: cfg: optionalString (cfg.localAddress != null)
|
networking.extraHosts = concatStrings (mapAttrsToList (name: cfg: optionalString (cfg.localAddress != null)
|
||||||
''
|
''
|
||||||
${cfg.localAddress} ${name}.containers
|
${head (splitString "/" cfg.localAddress)} ${name}.containers
|
||||||
'') config.containers);
|
'') config.containers);
|
||||||
|
|
||||||
networking.dhcpcd.denyInterfaces = [ "ve-*" "vb-*" ];
|
networking.dhcpcd.denyInterfaces = [ "ve-*" "vb-*" ];
|
||||||
|
@ -125,7 +125,7 @@ in
|
|||||||
169.254.169.254 metadata.google.internal metadata
|
169.254.169.254 metadata.google.internal metadata
|
||||||
'';
|
'';
|
||||||
|
|
||||||
services.ntp.servers = [ "metadata.google.internal" ];
|
networking.timeServers = [ "metadata.google.internal" ];
|
||||||
|
|
||||||
networking.usePredictableInterfaceNames = false;
|
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" ];
|
boot.kernelModules = [ "prl_tg" "prl_eth" "prl_fs" "prl_fs_freeze" "acpi_memhotplug" ];
|
||||||
|
|
||||||
services.ntp.enable = false;
|
services.timesyncd.enable = false;
|
||||||
|
|
||||||
systemd.services.prltoolsd = {
|
systemd.services.prltoolsd = {
|
||||||
description = "Parallels Tools' service";
|
description = "Parallels Tools' service";
|
||||||
|
@ -70,7 +70,7 @@ let
|
|||||||
'')}
|
'')}
|
||||||
|
|
||||||
# Start QEMU.
|
# Start QEMU.
|
||||||
exec ${pkgs.qemu_kvm}/bin/qemu-kvm \
|
exec ${cfg.qemu.program} \
|
||||||
-name ${vmName} \
|
-name ${vmName} \
|
||||||
-m ${toString config.virtualisation.memorySize} \
|
-m ${toString config.virtualisation.memorySize} \
|
||||||
${optionalString (pkgs.stdenv.system == "x86_64-linux") "-cpu kvm64"} \
|
${optionalString (pkgs.stdenv.system == "x86_64-linux") "-cpu kvm64"} \
|
||||||
@ -299,6 +299,14 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
virtualisation.qemu = {
|
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 =
|
options =
|
||||||
mkOption {
|
mkOption {
|
||||||
type = types.listOf types.unspecified;
|
type = types.listOf types.unspecified;
|
||||||
@ -470,7 +478,7 @@ in
|
|||||||
boot.initrd.luks.devices = mkVMOverride {};
|
boot.initrd.luks.devices = mkVMOverride {};
|
||||||
|
|
||||||
# Don't run ntpd in the guest. It should get the correct time from KVM.
|
# 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; }
|
system.build.vm = pkgs.runCommand "nixos-vm" { preferLocalBuild = true; }
|
||||||
''
|
''
|
||||||
|
@ -18,5 +18,5 @@
|
|||||||
services.syslogd.tty = "hvc0";
|
services.syslogd.tty = "hvc0";
|
||||||
|
|
||||||
# Don't run ntpd, since we should get the correct time from Dom0.
|
# 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-extra_veth = callTest tests/containers-extra_veth.nix {};
|
||||||
tests.containers-physical_interfaces = callTest tests/containers-physical_interfaces.nix {};
|
tests.containers-physical_interfaces = callTest tests/containers-physical_interfaces.nix {};
|
||||||
tests.containers-tmpfs = callTest tests/containers-tmpfs.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.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
|
||||||
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
|
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
|
||||||
tests.ecryptfs = callTest tests/ecryptfs.nix {};
|
tests.ecryptfs = callTest tests/ecryptfs.nix {};
|
||||||
@ -256,6 +258,7 @@ in rec {
|
|||||||
tests.kde5 = callTest tests/kde5.nix {};
|
tests.kde5 = callTest tests/kde5.nix {};
|
||||||
tests.keymap = callSubTests tests/keymap.nix {};
|
tests.keymap = callSubTests tests/keymap.nix {};
|
||||||
tests.initrdNetwork = callTest tests/initrd-network.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.kubernetes = hydraJob (import tests/kubernetes.nix { system = "x86_64-linux"; });
|
||||||
tests.latestKernel.login = callTest tests/login.nix { latestKernel = true; };
|
tests.latestKernel.login = callTest tests/login.nix { latestKernel = true; };
|
||||||
#tests.lightdm = callTest tests/lightdm.nix {};
|
#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, ... }:
|
machine = { config, pkgs, ... }:
|
||||||
{ security.grsecurity.enable = true;
|
{ security.grsecurity.enable = true;
|
||||||
|
boot.kernel.sysctl."kernel.grsecurity.audit_mount" = 0;
|
||||||
boot.kernel.sysctl."kernel.grsecurity.deter_bruteforce" = 0;
|
boot.kernel.sysctl."kernel.grsecurity.deter_bruteforce" = 0;
|
||||||
|
networking.useDHCP = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
@ -20,16 +22,14 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
|
|
||||||
subtest "paxtest", sub {
|
subtest "paxtest", sub {
|
||||||
# TODO: running paxtest blackhat hangs the vm
|
# TODO: running paxtest blackhat hangs the vm
|
||||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/anonmap") =~ /Killed/ or die;
|
my @pax_mustkill = (
|
||||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/execbss") =~ /Killed/ or die;
|
"anonmap", "execbss", "execdata", "execheap", "execstack",
|
||||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/execdata") =~ /Killed/ or die;
|
"mprotanon", "mprotbss", "mprotdata", "mprotheap", "mprotstack",
|
||||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/execheap") =~ /Killed/ or die;
|
);
|
||||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/execstack") =~ /Killed/ or die;
|
foreach my $name (@pax_mustkill) {
|
||||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotanon") =~ /Killed/ or die;
|
my $paxtest = "${pkgs.paxtest}/lib/paxtest/" . $name;
|
||||||
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotbss") =~ /Killed/ or die;
|
$machine->succeed($paxtest) =~ /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;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# tcc -run executes run-time generated code and so allows us to test whether
|
# 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 {
|
stdenv.mkDerivation rec {
|
||||||
name = "moc-${version}";
|
name = "moc-${version}";
|
||||||
version = "2.5.1";
|
version = "2.5.2";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://ftp.daper.net/pub/soft/moc/stable/moc-${version}.tar.bz2";
|
url = "http://ftp.daper.net/pub/soft/moc/stable/moc-${version}.tar.bz2";
|
||||||
sha256 = "1wn4za08z64bhsgfhr9c0crfyvy8c3b6a337wx7gz19am5srqh8v";
|
sha256 = "026v977kwb0wbmlmf6mnik328plxg8wykfx9ryvqhirac0aq39pk";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig ];
|
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
|
, gnutar
|
||||||
, gzip
|
, gzip
|
||||||
, jdk
|
, jdk
|
||||||
|
, fontconfig
|
||||||
|
, freetype
|
||||||
, libpulseaudio
|
, libpulseaudio
|
||||||
, libX11
|
, libX11
|
||||||
|
, libXext
|
||||||
|
, libXi
|
||||||
, libXrandr
|
, libXrandr
|
||||||
|
, libXrender
|
||||||
|
, libXtst
|
||||||
, makeWrapper
|
, makeWrapper
|
||||||
, pciutils
|
, pciutils
|
||||||
, pkgsi686Linux
|
, pkgsi686Linux
|
||||||
@ -27,8 +33,8 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
version = "2.1.3.0";
|
version = "2.2.3.0";
|
||||||
build = "143.3101438";
|
build = "145.3537739";
|
||||||
|
|
||||||
androidStudio = stdenv.mkDerivation {
|
androidStudio = stdenv.mkDerivation {
|
||||||
name = "android-studio";
|
name = "android-studio";
|
||||||
@ -75,11 +81,23 @@ let
|
|||||||
# For Android emulator
|
# For Android emulator
|
||||||
libpulseaudio
|
libpulseaudio
|
||||||
libX11
|
libX11
|
||||||
|
libXext
|
||||||
|
libXrender
|
||||||
|
libXtst
|
||||||
|
libXi
|
||||||
|
freetype
|
||||||
|
fontconfig
|
||||||
]}" --set QT_XKB_CONFIG_ROOT "${xkeyboard_config}/share/X11/xkb"
|
]}" --set QT_XKB_CONFIG_ROOT "${xkeyboard_config}/share/X11/xkb"
|
||||||
'';
|
'';
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://dl.google.com/dl/android/studio/ide-zips/${version}/android-studio-ide-${build}-linux.zip";
|
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 }:
|
el-search = callPackage ({ elpaBuild, emacs, fetchurl, lib, stream }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "el-search";
|
pname = "el-search";
|
||||||
version = "1.1.2";
|
version = "1.2";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/el-search-1.1.2.tar";
|
url = "https://elpa.gnu.org/packages/el-search-1.2.tar";
|
||||||
sha256 = "1cav55nx1045c3xasi5d76yyqi68ygp9dpqv9bazrqgcpsmw6y8b";
|
sha256 = "0sz78kn9nx390aq5wqz174p8ppw987rzsh892ly166qz4ikwys5a";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs stream ];
|
packageRequires = [ emacs stream ];
|
||||||
meta = {
|
meta = {
|
||||||
@ -967,6 +967,19 @@
|
|||||||
license = lib.licenses.free;
|
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 {
|
jumpc = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "jumpc";
|
pname = "jumpc";
|
||||||
version = "3.0";
|
version = "3.0";
|
||||||
@ -1351,10 +1364,10 @@
|
|||||||
}) {};
|
}) {};
|
||||||
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "org";
|
pname = "org";
|
||||||
version = "20161118";
|
version = "20161214";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/org-20161118.tar";
|
url = "https://elpa.gnu.org/packages/org-20161214.tar";
|
||||||
sha256 = "1w9g8r08kaiw9f4fjsj0hbffzq85rj734j5lxvbaafbnz7dbklk1";
|
sha256 = "0pa9d0l6axif5wlzi7lvxl0fpjwwvc79cy9d37z7md4hxyjdvwzm";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1456,6 +1456,27 @@
|
|||||||
license = lib.licenses.free;
|
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 }:
|
apples-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "apples-mode";
|
pname = "apples-mode";
|
||||||
@ -2452,12 +2473,12 @@
|
|||||||
bind-map = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
bind-map = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "bind-map";
|
pname = "bind-map";
|
||||||
version = "1.1.0";
|
version = "1.1.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "justbur";
|
owner = "justbur";
|
||||||
repo = "emacs-bind-map";
|
repo = "emacs-bind-map";
|
||||||
rev = "ffe5e636178ab9878fa8213fd1a1d4862ccb3d5f";
|
rev = "bf4181e3a41463684adfffc6c5c305b30480e30f";
|
||||||
sha256 = "1h07s8g4vpq6c8sl5m6vxvd598iks160bksv0wn51680gh05f0pa";
|
sha256 = "0vrk17yg3jbww92p433p64ijmjf7cjg2wmzi9w418235w1xdfzz8";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/f58800af5965a6e7c9314aa00e971196ea0d036e/recipes/bind-map";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/f58800af5965a6e7c9314aa00e971196ea0d036e/recipes/bind-map";
|
||||||
@ -2788,12 +2809,12 @@
|
|||||||
bui = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
bui = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "bui";
|
pname = "bui";
|
||||||
version = "1.0";
|
version = "1.0.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "alezost";
|
owner = "alezost";
|
||||||
repo = "bui.el";
|
repo = "bui.el";
|
||||||
rev = "c08d91b2d314b52c9ca5c2d5be7a7b2367b68162";
|
rev = "70ea295ec04cb34e383dc7d62927452410876999";
|
||||||
sha256 = "104q089cyy0m0hkdnvblss884npc4bv5xf03qr35x3s3573lxh4a";
|
sha256 = "1whpln3zibqxnszvrm9chsaaxxxfb0kg3vvfy6j4drrjy5ah2vky";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/38b7c9345de75a707b4a73e8bb8e2f213e4fd739/recipes/bui";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/38b7c9345de75a707b4a73e8bb8e2f213e4fd739/recipes/bui";
|
||||||
@ -3909,6 +3930,27 @@
|
|||||||
license = lib.licenses.free;
|
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 }:
|
cm-mode = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "cm-mode";
|
pname = "cm-mode";
|
||||||
@ -4650,6 +4692,27 @@
|
|||||||
license = lib.licenses.free;
|
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 }:
|
company-tern = callPackage ({ cl-lib ? null, company, dash, dash-functional, fetchFromGitHub, fetchurl, lib, melpaBuild, s, tern }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "company-tern";
|
pname = "company-tern";
|
||||||
@ -4860,6 +4923,27 @@
|
|||||||
license = lib.licenses.free;
|
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 }:
|
copyit = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "copyit";
|
pname = "copyit";
|
||||||
@ -5386,12 +5470,12 @@
|
|||||||
cython-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
cython-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "cython-mode";
|
pname = "cython-mode";
|
||||||
version = "0.25.2pre0";
|
version = "0.25.2";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cython";
|
owner = "cython";
|
||||||
repo = "cython";
|
repo = "cython";
|
||||||
rev = "1b61bc346a8233f6ef7576bbbba0cb8a19c46efb";
|
rev = "c9bcf1bed3acf367d6deb0c273cf22db0f18dab2";
|
||||||
sha256 = "1czd04vvl7gzaj1fmzkmd36cpsg22d3gg7sqyfh742ycw1ggkpzz";
|
sha256 = "16yd296n0nh96pnkjpdbdz4i7ga4j961pkzm3cbnika26xwndx03";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/be9bfabe3f79153cb859efc7c3051db244a63879/recipes/cython-mode";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/be9bfabe3f79153cb859efc7c3051db244a63879/recipes/cython-mode";
|
||||||
@ -5614,6 +5698,27 @@
|
|||||||
license = lib.licenses.free;
|
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 }:
|
decide = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "decide";
|
pname = "decide";
|
||||||
@ -6690,35 +6795,14 @@
|
|||||||
license = lib.licenses.free;
|
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 }:
|
dyalog-mode = callPackage ({ cl-lib ? null, fetchhg, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "dyalog-mode";
|
pname = "dyalog-mode";
|
||||||
version = "0.7";
|
version = "0.7";
|
||||||
src = fetchhg {
|
src = fetchhg {
|
||||||
url = "https://bitbucket.com/harsman/dyalog-mode";
|
url = "https://bitbucket.com/harsman/dyalog-mode";
|
||||||
rev = "befb5c650dfd";
|
rev = "20a2166c8210";
|
||||||
sha256 = "154bm7l1ra3l9lj9l1x21qi7f57k46kg24hyalrbawjw3q8c5np2";
|
sha256 = "0gz0aiks3f53lqvnrnb33a1clq52ipd3i3miymvkkgspnz3vl12p";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/dyalog-mode";
|
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 }:
|
elm-mode = callPackage ({ emacs, f, fetchFromGitHub, fetchurl, let-alist, lib, melpaBuild, s }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "elm-mode";
|
pname = "elm-mode";
|
||||||
version = "0.20.2";
|
version = "0.20.3";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "jcollard";
|
owner = "jcollard";
|
||||||
repo = "elm-mode";
|
repo = "elm-mode";
|
||||||
rev = "529c20acb9efda756b69e267d73d33c66fa08293";
|
rev = "29f50a940113d793a21998f3bb414fdd9b0c5daa";
|
||||||
sha256 = "08zl1v0k3dnn8g06l3xf1lp31fp60jpk6f3lkczi1l6ns36g11jx";
|
sha256 = "02c7xl9w81140l7p9kywr5qwsdyv92nxdhzqcxjk0r09x7s0cvsk";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/5d1a4d786b137f61ed3a1dd4ec236d0db120e571/recipes/elm-mode";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/5d1a4d786b137f61ed3a1dd4ec236d0db120e571/recipes/elm-mode";
|
||||||
@ -7853,8 +7937,8 @@
|
|||||||
sha256 = "1h0k3nvxy84wjsiiwpxd8xnwnvbiqld26ndv6wmxqpwsjav186ik";
|
sha256 = "1h0k3nvxy84wjsiiwpxd8xnwnvbiqld26ndv6wmxqpwsjav186ik";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/a36daf2b034653cd73ee2db2bc30df2a5be6f3d1/recipes/elpy";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/1d8fcd8745bb15402c9f3b6f4573ea151415237a/recipes/elpy";
|
||||||
sha256 = "0n802bh7jj9zgz84xjrxvy33jl6s3hj5dqxafyfr87fank97hb6d";
|
sha256 = "1ri3dwnkw005plj1g5grmmq9np41sqk4s2v18pwsvr18ysnq6nnr";
|
||||||
name = "elpy";
|
name = "elpy";
|
||||||
};
|
};
|
||||||
packageRequires = [
|
packageRequires = [
|
||||||
@ -8790,12 +8874,12 @@
|
|||||||
erlang = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
erlang = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "erlang";
|
pname = "erlang";
|
||||||
version = "19.1.6";
|
version = "19.2";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "erlang";
|
owner = "erlang";
|
||||||
repo = "otp";
|
repo = "otp";
|
||||||
rev = "2b41d8f318b7e5ec139d42fd2f01a132699be839";
|
rev = "3473ecd83a7bbe7e0bebb865f25dddb93e3bf10f";
|
||||||
sha256 = "120dqi8h2fwqfmh9g2nmkf153zlglzw9kkddz57xqvqq5arcs72y";
|
sha256 = "06pr4ydrqpp1skx85zjb1an4kvzv6vacb771vy71k54j7w6lh9hk";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/d9cd526f43981e0826af59cdc4bb702f644781d9/recipes/erlang";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/d9cd526f43981e0826af59cdc4bb702f644781d9/recipes/erlang";
|
||||||
@ -9628,12 +9712,12 @@
|
|||||||
evil-opener = callPackage ({ evil, fetchFromGitHub, fetchurl, lib, melpaBuild, opener }:
|
evil-opener = callPackage ({ evil, fetchFromGitHub, fetchurl, lib, melpaBuild, opener }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "evil-opener";
|
pname = "evil-opener";
|
||||||
version = "0.2.1";
|
version = "0.2.2";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "0robustus1";
|
owner = "0robustus1";
|
||||||
repo = "opener.el";
|
repo = "opener.el";
|
||||||
rev = "ad3c65a5a748230bf07c18f56b1998ac03e3807a";
|
rev = "c384f67278046fdcd220275fdd212ab85672cbeb";
|
||||||
sha256 = "178h7sbpgsn0xl93j7375f2ahmqcszmbl3f7mfb6vgjmm791q03p";
|
sha256 = "0gci909a2rbx5i8dyzyrcddwdic7nvpk6y6djvn521yaag4sq87h";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/da8d4e5bf23985632f993336b9183fe9f480addc/recipes/evil-opener";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/da8d4e5bf23985632f993336b9183fe9f480addc/recipes/evil-opener";
|
||||||
@ -10871,6 +10955,27 @@
|
|||||||
license = lib.licenses.free;
|
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 }:
|
flycheck-ocaml = callPackage ({ emacs, fetchFromGitHub, fetchurl, flycheck, let-alist, lib, melpaBuild, merlin }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "flycheck-ocaml";
|
pname = "flycheck-ocaml";
|
||||||
@ -11018,6 +11123,27 @@
|
|||||||
license = lib.licenses.free;
|
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 }:
|
flycheck-tip = callPackage ({ emacs, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild, popup }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "flycheck-tip";
|
pname = "flycheck-tip";
|
||||||
@ -17980,27 +18106,6 @@
|
|||||||
license = lib.licenses.free;
|
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 }:
|
jump = callPackage ({ fetchFromGitHub, fetchurl, findr, inflections, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "jump";
|
pname = "jump";
|
||||||
@ -19292,12 +19397,12 @@
|
|||||||
magic-filetype = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, s }:
|
magic-filetype = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, s }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "magic-filetype";
|
pname = "magic-filetype";
|
||||||
version = "0.1.3";
|
version = "0.2.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "zonuexe";
|
owner = "zonuexe";
|
||||||
repo = "magic-filetype.el";
|
repo = "magic-filetype.el";
|
||||||
rev = "bccd17a8d152e4a2692c2bd71999f1d53c00262a";
|
rev = "0dfe3d9e0e22c7b06e34c8338f110e337306e3fd";
|
||||||
sha256 = "1rw5lvcj2v4b21akmsinkz24fbmp19s3jdqsd8jgmk3qqv0z81fc";
|
sha256 = "1yjn2w0ykczhlj4q3dnfw2z4q66201dn3jz31yw7hh8bxjlsvwfh";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/0d6027c5a66386f7140305a4cde12d66da4dfa09/recipes/magic-filetype";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/0d6027c5a66386f7140305a4cde12d66da4dfa09/recipes/magic-filetype";
|
||||||
@ -19832,8 +19937,8 @@
|
|||||||
sha256 = "0grljxihip0xyfm47ljwz6hy4kn30vw69bv4w5dw8kr33d51y5ym";
|
sha256 = "0grljxihip0xyfm47ljwz6hy4kn30vw69bv4w5dw8kr33d51y5ym";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/011d26360a109b074cdecbcb133269ec6452ab86/recipes/markdown-preview-mode";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/d3c5d222cf0d7eca6a4e3eb914907f8ca58e40f0/recipes/markdown-preview-mode";
|
||||||
sha256 = "0i0mld45d8y96nkqn2r77nvbyw6wgsf8r54d3c2jrv04mnaxs7pg";
|
sha256 = "1cam5wfxca91q3i1kl0qbdvnfy62hr5ksargi4430kgaz34bcbyn";
|
||||||
name = "markdown-preview-mode";
|
name = "markdown-preview-mode";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib markdown-mode websocket ];
|
packageRequires = [ cl-lib markdown-mode websocket ];
|
||||||
@ -20115,22 +20220,22 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
mentor = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
mentor = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild, xml-rpc }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "mentor";
|
pname = "mentor";
|
||||||
version = "0.1";
|
version = "0.1.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "skangas";
|
owner = "skangas";
|
||||||
repo = "mentor";
|
repo = "mentor";
|
||||||
rev = "bd8e4b89341686bbaf4c44680bbae778b96fb8f0";
|
rev = "f53dac51a29f67e31f1fb82702b19d158cc6fa22";
|
||||||
sha256 = "1y4ra5z3ayw3w7dszzlkk3qz3nv2jg1vvx8cf0y5j1pqpx8vy3jf";
|
sha256 = "0qqapsp4gpkrj3faii7qbfssddl3vqfmwqcy259s7f896kzwaaky";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/083de4bd25b6b013a31b9d5ecdffad139a4ba91e/recipes/mentor";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/083de4bd25b6b013a31b9d5ecdffad139a4ba91e/recipes/mentor";
|
||||||
sha256 = "0nkf7f90m2qf11l97zwvb114yrpbqk1xxr2bh2nvbx8m1c8nad9s";
|
sha256 = "0nkf7f90m2qf11l97zwvb114yrpbqk1xxr2bh2nvbx8m1c8nad9s";
|
||||||
name = "mentor";
|
name = "mentor";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [ xml-rpc ];
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://melpa.org/#/mentor";
|
homepage = "https://melpa.org/#/mentor";
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
@ -20642,12 +20747,12 @@
|
|||||||
monokai-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
monokai-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "monokai-theme";
|
pname = "monokai-theme";
|
||||||
version = "3.2.0";
|
version = "3.2.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "oneKelvinSmith";
|
owner = "oneKelvinSmith";
|
||||||
repo = "monokai-emacs";
|
repo = "monokai-emacs";
|
||||||
rev = "47afc7419ddd26462ad6e66e122b244c334da0b9";
|
rev = "fc5822fcb11c3c6af67b5fb152f92c3e6e3c49d3";
|
||||||
sha256 = "1bkfqlfag62mixd933d1ryvnbaq3ny2bgbqbagqbrgprl7558577";
|
sha256 = "0r81jdwfmgzivfpkxqr425qajgw3dzzs8y2v5lsiwl1d5z8rz52a";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/2bc9ce95a02fc4bcf7bc7547849c1c15d6db5089/recipes/monokai-theme";
|
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 }:
|
opener = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, request }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "opener";
|
pname = "opener";
|
||||||
version = "0.2.1";
|
version = "0.2.2";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "0robustus1";
|
owner = "0robustus1";
|
||||||
repo = "opener.el";
|
repo = "opener.el";
|
||||||
rev = "ad3c65a5a748230bf07c18f56b1998ac03e3807a";
|
rev = "c384f67278046fdcd220275fdd212ab85672cbeb";
|
||||||
sha256 = "178h7sbpgsn0xl93j7375f2ahmqcszmbl3f7mfb6vgjmm791q03p";
|
sha256 = "0gci909a2rbx5i8dyzyrcddwdic7nvpk6y6djvn521yaag4sq87h";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/c5a448f1936f46176bc2462eb03955a0c19efb9e/recipes/opener";
|
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 }:
|
org-jira = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild, request }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "org-jira";
|
pname = "org-jira";
|
||||||
version = "1.0.1";
|
version = "2.2.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ahungry";
|
owner = "ahungry";
|
||||||
repo = "org-jira";
|
repo = "org-jira";
|
||||||
rev = "3fc4dd52a5235fa97b0fca06b08ae443ccc43242";
|
rev = "d2db2827ff030a8c11b52402adcd3a4b3050f3c1";
|
||||||
sha256 = "017k8hw2wy4fzdrkjniaqyz4mfsm60qqxrxhd1s49dfs54kch0hq";
|
sha256 = "16wzrq2syk03710iklrayf4s9ap4brvlzyd4b0rya0rxy2q2rck7";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/730a585e5c9216a2428a134c09abcc20bc7c631d/recipes/org-jira";
|
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 }:
|
osx-dictionary = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "osx-dictionary";
|
pname = "osx-dictionary";
|
||||||
version = "0.3";
|
version = "0.4";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "xuchunyang";
|
owner = "xuchunyang";
|
||||||
repo = "osx-dictionary.el";
|
repo = "osx-dictionary.el";
|
||||||
rev = "8bbe1c700830e004f34974900b840ec2be7c589c";
|
rev = "0e5e5f1b0077a62673855889d529dd4f0cc8f665";
|
||||||
sha256 = "0pv9j3nza71kd2i9a78w1y10r965b2wrnywjk1zgvab8q9rzwxdn";
|
sha256 = "1zpr50q7i4wg1x7vsj69rh1b8xvk9r0591y4fvvs3a2l1llca2mq";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/ae4467ad646d663f0266f39a76f9764004903424/recipes/osx-dictionary";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/ae4467ad646d663f0266f39a76f9764004903424/recipes/osx-dictionary";
|
||||||
@ -28505,22 +28610,22 @@
|
|||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
smeargle = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
smeargle = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "smeargle";
|
pname = "smeargle";
|
||||||
version = "0.2";
|
version = "0.3";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "syohex";
|
owner = "syohex";
|
||||||
repo = "emacs-smeargle";
|
repo = "emacs-smeargle";
|
||||||
rev = "fe0494bb859ea51800d6e7ae7d9eda2fe98e0097";
|
rev = "0665b1ff5109731898bc4a0ca6d939933b804777";
|
||||||
sha256 = "1pcpg3lalbrc24z3vwcaysps8dbdzmncdgqdd5ig6yk2a9wyj9ng";
|
sha256 = "0p0kxmjdr02l9injlyyrnnzqdbb7mirz1xx79c3lw1rgpalf0jnf";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/c5b985b24a23499454dc61bf071073df325de571/recipes/smeargle";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/c5b985b24a23499454dc61bf071073df325de571/recipes/smeargle";
|
||||||
sha256 = "1dy87ah1w21csvrkq5icnx7g7g7nxqkcyggxyazqwwxvh2silibd";
|
sha256 = "1dy87ah1w21csvrkq5icnx7g7g7nxqkcyggxyazqwwxvh2silibd";
|
||||||
name = "smeargle";
|
name = "smeargle";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://melpa.org/#/smeargle";
|
homepage = "https://melpa.org/#/smeargle";
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
@ -29054,12 +29159,12 @@
|
|||||||
sqlup-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
sqlup-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "sqlup-mode";
|
pname = "sqlup-mode";
|
||||||
version = "0.7.0";
|
version = "0.7.1";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Trevoke";
|
owner = "Trevoke";
|
||||||
repo = "sqlup-mode.el";
|
repo = "sqlup-mode.el";
|
||||||
rev = "4bf563b0b95f5a1e627e55d52d1c2fd0dd3af95f";
|
rev = "65e75ebc7d85a63e4e27900ba746623a8e4bfa95";
|
||||||
sha256 = "0hxkkpylnf5phavcd2y3bxzikcnr7cdk3rbqgp3nw74sxz0223w2";
|
sha256 = "1yiz1k2dg010dypql5l9ahcl33nvqxl731wghv4jvp6bdxcf90g3";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/7fabdb05de9b8ec18a3a566f99688b50443b6b44/recipes/sqlup-mode";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/7fabdb05de9b8ec18a3a566f99688b50443b6b44/recipes/sqlup-mode";
|
||||||
@ -29238,6 +29343,27 @@
|
|||||||
license = lib.licenses.free;
|
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 }:
|
string-utils = callPackage ({ fetchFromGitHub, fetchurl, lib, list-utils, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "string-utils";
|
pname = "string-utils";
|
||||||
@ -32250,8 +32376,8 @@
|
|||||||
version = "0.9.1";
|
version = "0.9.1";
|
||||||
src = fetchhg {
|
src = fetchhg {
|
||||||
url = "https://bitbucket.com/ArneBab/wisp";
|
url = "https://bitbucket.com/ArneBab/wisp";
|
||||||
rev = "c8c2934f6674";
|
rev = "a67adbf5fc75";
|
||||||
sha256 = "0wsnmwfkiyic40v8dl65ccxv3n3hazmlxlbqr8v6ggr8kcx4ydyy";
|
sha256 = "1av071s0s6x0idbklfnps8j7vgjqxapk9y23prk6jrdbbwhfzb8n";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/wisp-mode";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/wisp-mode";
|
||||||
@ -32789,6 +32915,27 @@
|
|||||||
license = lib.licenses.free;
|
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 }:
|
yascroll = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "yascroll";
|
pname = "yascroll";
|
||||||
@ -32857,8 +33004,8 @@
|
|||||||
version = "1.78";
|
version = "1.78";
|
||||||
src = fetchhg {
|
src = fetchhg {
|
||||||
url = "https://www.yatex.org/hgrepos/yatex/";
|
url = "https://www.yatex.org/hgrepos/yatex/";
|
||||||
rev = "0c098405a3c9";
|
rev = "5428250c886a";
|
||||||
sha256 = "0vk5wk7b05lyr1724wnwxlwfcw7myghpcis0ya1v11pwlad1vwha";
|
sha256 = "0q1b0wpdfdghp6hchc59jgkyra5qqqdam47q7g2ni4ym8nlhwd3c";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/04867a574773e8794335a2664d4f5e8b243f3ec9/recipes/yatex";
|
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 }:
|
zerodark-theme = callPackage ({ all-the-icons, fetchFromGitHub, fetchurl, flycheck, lib, magit, melpaBuild }:
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "zerodark-theme";
|
pname = "zerodark-theme";
|
||||||
version = "4.1";
|
version = "4.2";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "NicolasPetton";
|
owner = "NicolasPetton";
|
||||||
repo = "zerodark-theme";
|
repo = "zerodark-theme";
|
||||||
rev = "63df2ae09a9e1d670f0694f7c15f19f9170e2407";
|
rev = "af231794425255d436690c9c31bceb2052251210";
|
||||||
sha256 = "18a0g33z70yqr066cxm9d17jwvrx8hpgp0v2c6swk05h9b4h3pb2";
|
sha256 = "1xnhcxf5d0gn8lhapjg7b289bqpf8w0d2mp76ksb8rsvx4r0bdbw";
|
||||||
};
|
};
|
||||||
recipeFile = fetchurl {
|
recipeFile = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/milkypostman/melpa/72ef967a9bea2e100ae17aad1a88db95820f4f6a/recipes/zerodark-theme";
|
url = "https://raw.githubusercontent.com/milkypostman/melpa/72ef967a9bea2e100ae17aad1a88db95820f4f6a/recipes/zerodark-theme";
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
{ callPackage }: {
|
{ callPackage }: {
|
||||||
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "org";
|
pname = "org";
|
||||||
version = "20161118";
|
version = "20161214";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://orgmode.org/elpa/org-20161118.tar";
|
url = "http://orgmode.org/elpa/org-20161214.tar";
|
||||||
sha256 = "1lk2j93zcaamj2m2720nxsza7j35054kg72w35w9z1bbiqmv2haj";
|
sha256 = "1x3wvagx7437xr4lawxr24kivb661997bncq2w9iz3fkg9rrr73m";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
@ -14,10 +14,10 @@
|
|||||||
}) {};
|
}) {};
|
||||||
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
|
||||||
pname = "org-plus-contrib";
|
pname = "org-plus-contrib";
|
||||||
version = "20161118";
|
version = "20161214";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://orgmode.org/elpa/org-plus-contrib-20161118.tar";
|
url = "http://orgmode.org/elpa/org-plus-contrib-20161214.tar";
|
||||||
sha256 = "1la8qw18akqc4p7p0qi675xm3r149vwazzjc2gkik97p12ip83z7";
|
sha256 = "1rc3p1cys15i9vnll946w5hlckmmbgkw22yw98mna9cwqdpc387c";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{ stdenv, fetchurl, ncurses, pkgconfig, texinfo, libxml2, gnutls, gettext
|
{ stdenv, fetchurl, ncurses, pkgconfig, texinfo, libxml2, gnutls, gettext
|
||||||
, AppKit, Carbon, Cocoa, IOKit, OSAKit, Quartz, QuartzCore, WebKit
|
, AppKit, Carbon, Cocoa, IOKit, OSAKit, Quartz, QuartzCore, WebKit
|
||||||
|
, autoconf, automake
|
||||||
, ImageCaptureCore, GSS, ImageIO # These may be optional
|
, ImageCaptureCore, GSS, ImageIO # These may be optional
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -21,7 +22,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
buildInputs = [ ncurses libxml2 gnutls pkgconfig texinfo gettext ];
|
buildInputs = [ ncurses libxml2 gnutls pkgconfig texinfo gettext autoconf automake ];
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
AppKit Carbon Cocoa IOKit OSAKit Quartz QuartzCore WebKit
|
AppKit Carbon Cocoa IOKit OSAKit Quartz QuartzCore WebKit
|
||||||
@ -47,7 +48,7 @@ stdenv.mkDerivation rec {
|
|||||||
"--enable-mac-app=$$out/Applications"
|
"--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";
|
LDFLAGS = "-O3 -L${ncurses.out}/lib";
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
emacsName = "emacs-25.1";
|
emacsName = "emacs-25.1";
|
||||||
name = "${emacsName}-mac-6.0";
|
name = "${emacsName}-mac-6.1";
|
||||||
|
|
||||||
builder = ./builder.sh;
|
builder = ./builder.sh;
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
macportSrc = fetchurl {
|
macportSrc = fetchurl {
|
||||||
url = "ftp://ftp.math.s.chiba-u.ac.jp/emacs/${name}.tar.gz";
|
url = "ftp://ftp.math.s.chiba-u.ac.jp/emacs/${name}.tar.gz";
|
||||||
sha256 = "2f7a3fd826e6dea541ada04f4a1ff2903a87a1f736b89c5b90bf7bb820568e34";
|
sha256 = "1zwxh7zsvwcg221mpjh0dhpdas3j9mc5q92pprf8yljl7clqvg62";
|
||||||
};
|
};
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
@ -48,7 +48,7 @@ stdenv.mkDerivation rec {
|
|||||||
"--enable-mac-app=$$out/Applications"
|
"--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";
|
LDFLAGS = "-O3 -L${ncurses.out}/lib";
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
@ -208,12 +208,12 @@ in
|
|||||||
|
|
||||||
idea-ultimate = buildIdea rec {
|
idea-ultimate = buildIdea rec {
|
||||||
name = "idea-ultimate-${version}";
|
name = "idea-ultimate-${version}";
|
||||||
version = "2016.3";
|
version = "2016.3.1";
|
||||||
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
|
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz";
|
url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz";
|
||||||
sha256 = "1sax3sjhsyvb9qfnn0gc74p3ym6j5f30mmapd4irq9fk4bsl8c31";
|
sha256 = "1696gfmqi76ybgi5r84kisjx9mv0hd70hsn16banw61zy4rfllhw";
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-idea";
|
wmClass = "jetbrains-idea";
|
||||||
};
|
};
|
||||||
|
@ -4,12 +4,12 @@ with stdenv.lib;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "kakoune-nightly-${version}";
|
name = "kakoune-nightly-${version}";
|
||||||
version = "2016-07-26";
|
version = "2016-12-10";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
repo = "kakoune";
|
repo = "kakoune";
|
||||||
owner = "mawww";
|
owner = "mawww";
|
||||||
rev = "0d2c5072b083a893843e4fa87f9f702979069e14";
|
rev = "e44129577a010ebb4dc609b806104d3175659074";
|
||||||
sha256 = "01qqs5yr9xvvklg3gg45lgnyh6gji28m854mi1snzvjd7fksf50n";
|
sha256 = "1jkpbk6wa9x5nlv002y1whv6ddhqawxzbp3jcbzcb51cg8bz0b1l";
|
||||||
};
|
};
|
||||||
buildInputs = [ ncurses boost asciidoc docbook_xsl libxslt ];
|
buildInputs = [ ncurses boost asciidoc docbook_xsl libxslt ];
|
||||||
|
|
||||||
|
@ -12,10 +12,10 @@ with stdenv.lib;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "nano-${version}";
|
name = "nano-${version}";
|
||||||
version = "2.7.1";
|
version = "2.7.2";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnu/nano/${name}.tar.xz";
|
url = "mirror://gnu/nano/${name}.tar.xz";
|
||||||
sha256 = "1kapx0fyp0a0pvsdd1n59pm3acrimdrp7ciglg098wqxhdlvwp6z";
|
sha256 = "1hlhwgvzdgkc7k74fbbn49hn6vmvzqr7h8gclgl7r1c6qrrny0bp";
|
||||||
};
|
};
|
||||||
nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext;
|
nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext;
|
||||||
buildInputs = [ ncurses ];
|
buildInputs = [ ncurses ];
|
||||||
|
@ -2,20 +2,20 @@
|
|||||||
makeWrapper, libXScrnSaver }:
|
makeWrapper, libXScrnSaver }:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "1.6.1";
|
version = "1.8.0";
|
||||||
rev = "9e4e44c19e393803e2b05fe2323cf4ed7e36880e";
|
rev = "38746938a4ab94f2f57d9e1309c51fd6fb37553d";
|
||||||
|
|
||||||
sha256 = if stdenv.system == "i686-linux" then "1aks84siflpjbd2s9y1f0vvvf3nas4f50cimjf25lijxzjxrlivy"
|
sha256 = if stdenv.system == "i686-linux" then "0p7r1i71v2ab4dzlwh43hqih958a31cqskf64ds4vgc35x2mfjcq"
|
||||||
else if stdenv.system == "x86_64-linux" then "05kbi081ih64fadj4k74grkk9ca3wga6ybwgs5ld0bal4ilw1q6i"
|
else if stdenv.system == "x86_64-linux" then "1k15701jskk7w5kwzlzfri96vvw7fcinyfqqafls8nms8h5csv76"
|
||||||
else if stdenv.system == "x86_64-darwin" then "00p2m8b0l3pkf5k74szw6kcql3j1fjnv3rwnhy24wfkg4b4ah2x9"
|
else if stdenv.system == "x86_64-darwin" then "12fqz62gs2wcg2wwx1k6gv2gqil9c54yq254vk3rqdf82q9zyapk"
|
||||||
else throw "Unsupported system: ${stdenv.system}";
|
else throw "Unsupported system: ${stdenv.system}";
|
||||||
|
|
||||||
urlBase = "https://az764295.vo.msecnd.net/stable/${rev}/";
|
urlBase = "https://az764295.vo.msecnd.net/stable/${rev}/";
|
||||||
|
|
||||||
urlStr = if stdenv.system == "i686-linux" then
|
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
|
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
|
else if stdenv.system == "x86_64-darwin" then
|
||||||
urlBase + "VSCode-darwin-stable.zip"
|
urlBase + "VSCode-darwin-stable.zip"
|
||||||
else throw "Unsupported system: ${stdenv.system}";
|
else throw "Unsupported system: ${stdenv.system}";
|
||||||
|
@ -38,6 +38,7 @@ stdenv.mkDerivation rec {
|
|||||||
"mirror://imagemagick/releases/ImageMagick-${version}.tar.xz"
|
"mirror://imagemagick/releases/ImageMagick-${version}.tar.xz"
|
||||||
# the original source above removes tarballs quickly
|
# the original source above removes tarballs quickly
|
||||||
"http://distfiles.macports.org/ImageMagick/ImageMagick-${version}.tar.xz"
|
"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;
|
inherit (cfg) sha256;
|
||||||
};
|
};
|
||||||
|
@ -7,13 +7,13 @@
|
|||||||
|
|
||||||
python3Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
name = "vimiv";
|
name = "vimiv";
|
||||||
version = "0.7.2";
|
version = "0.7.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "karlch";
|
owner = "karlch";
|
||||||
repo = "vimiv";
|
repo = "vimiv";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1g97ms84xk4ci4crq9wdc3744jnrqkq2qz9sg69lhm9sr5f68bw4";
|
sha256 = "18dn81n8hcrqhrqfida34qz7a0ar9rz2rrmzsvyp54zc6nyvv1cn";
|
||||||
};
|
};
|
||||||
|
|
||||||
testimages = fetchFromGitHub {
|
testimages = fetchFromGitHub {
|
||||||
@ -23,8 +23,6 @@ python3Packages.buildPythonApplication rec {
|
|||||||
sha256 = "0a3aybzpms0381dz9japhm4c7j5klhmw91prcac6zaww6x34nmxb";
|
sha256 = "0a3aybzpms0381dz9japhm4c7j5klhmw91prcac6zaww6x34nmxb";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [ ./fixes.patch ];
|
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
patchShebangs scripts/install_icons.sh
|
patchShebangs scripts/install_icons.sh
|
||||||
sed -i -e 's,/usr,,g' -e '/setup\.py/d' Makefile 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;
|
dontStrip = true;
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
decription = "Ethereum C++ client";
|
description = "Ethereum C++ client";
|
||||||
homepage = https://github.com/ethereum/cpp-ethereum;
|
homepage = https://github.com/ethereum/cpp-ethereum;
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
maintainers = with maintainers; [ artuuge ];
|
maintainers = with maintainers; [ artuuge ];
|
||||||
|
@ -94,12 +94,12 @@ let
|
|||||||
|
|
||||||
flash = stdenv.mkDerivation rec {
|
flash = stdenv.mkDerivation rec {
|
||||||
name = "flashplayer-ppapi-${version}";
|
name = "flashplayer-ppapi-${version}";
|
||||||
version = "23.0.0.207";
|
version = "24.0.0.186";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/"
|
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/"
|
||||||
+ "${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
+ "${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
||||||
sha256 = "1spwv06rynaw45pdll6hzsq6zbz1q10bf7dx4zz25gh8x3sl9l6a";
|
sha256 = "1pwayhnfjvb6gal5msw0k8rv4h6jvl0mpfsi0jqlka00cnyfjqpd";
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -223,7 +223,7 @@ stdenv.mkDerivation {
|
|||||||
tr " " ":"`; do
|
tr " " ":"`; do
|
||||||
# create an entry for every locale
|
# create an entry for every locale
|
||||||
cat >> $tmpfile <<EOF
|
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/\/.*//"`";
|
locale = "`echo $line | cut -d":" -f3 | sed "s/$arch\///" | sed "s/\/.*//"`";
|
||||||
arch = "$arch";
|
arch = "$arch";
|
||||||
sha512 = "`echo $line | cut -d":" -f1`";
|
sha512 = "`echo $line | cut -d":" -f1`";
|
||||||
@ -236,7 +236,7 @@ stdenv.mkDerivation {
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat $tmpfile > ${if isBeta then "beta_" else ""}sources.nix
|
mv $tmpfile ${if isBeta then "beta_" else ""}sources.nix
|
||||||
|
|
||||||
popd
|
popd
|
||||||
'';
|
'';
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -147,14 +147,14 @@ in {
|
|||||||
|
|
||||||
firefox-unwrapped = common {
|
firefox-unwrapped = common {
|
||||||
pname = "firefox";
|
pname = "firefox";
|
||||||
version = "50.0.2";
|
version = "50.1.0";
|
||||||
sha512 = "cfcc3e5a703e4d3284e3b3dcb34e5f77825e5a98b49a75bf22f8ac431c0429e6cd21c4e1f5e046fe82899cb4d2bc5b7a432b306c4af35034d83a9f351393f7fd";
|
sha512 = "2jwpk3aymkcq9f4xhzc31sb1c90vy3dvyqq2hvw97vk9dw7rgvv2cki10ns5cshbc4k57yd3j8nm7ppy2kw6na6771mj6sbijdjw39p";
|
||||||
};
|
};
|
||||||
|
|
||||||
firefox-esr-unwrapped = common {
|
firefox-esr-unwrapped = common {
|
||||||
pname = "firefox-esr";
|
pname = "firefox-esr";
|
||||||
version = "45.5.1esr";
|
version = "45.6.0esr";
|
||||||
sha512 = "36c56e1486a6a35f71526bd81d01fb4fc2b9df852eb2feb39b77c902fcf90d713d8fcdcd6113978630345e1ed36fa5cf0df6da7b6bf7e85a84fe014cb11f9a03";
|
sha512 = "086ci461hmz6kdn0ly9dlc723gc117si4a11a1c51gh79hczhahdaxg5s4r3k59rb43gpwxrlvm4wx1aka36bsihnh8a4caxnp72v5r";
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Linked dynamic libraries.
|
# Linked dynamic libraries.
|
||||||
, glib, fontconfig, freetype, pango, cairo, libX11, libXi, atk, gconf, nss, nspr
|
, 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
|
, alsaLib, libXdamage, libXtst, libXrandr, expat, cups
|
||||||
, dbus_libs, gtk2, gdk_pixbuf, gcc
|
, dbus_libs, gtk2, gdk_pixbuf, gcc
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ let
|
|||||||
deps = [
|
deps = [
|
||||||
stdenv.cc.cc
|
stdenv.cc.cc
|
||||||
glib fontconfig freetype pango cairo libX11 libXi atk gconf nss nspr
|
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
|
alsaLib libXdamage libXtst libXrandr expat cups
|
||||||
dbus_libs gtk2 gdk_pixbuf gcc
|
dbus_libs gtk2 gdk_pixbuf gcc
|
||||||
systemd
|
systemd
|
||||||
|
@ -14,6 +14,11 @@ buildGoPackage rec {
|
|||||||
sha256 = "0l4a5bqfw8i8wrl5yzkqy848r7vdx6hw8p5m3z3vzabvsmsjjwy7";
|
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 = ''
|
postFixup = ''
|
||||||
mv $bin/bin/cmd $bin/bin/docker-machine
|
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;
|
||||||
|
};
|
||||||
|
}
|
@ -28,23 +28,32 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
buildInputs = [ makeWrapper which go rsync go-bindata ];
|
buildInputs = [ makeWrapper which go rsync go-bindata ];
|
||||||
|
|
||||||
outputs = ["out" "man""pause"];
|
outputs = ["out" "man" "pause"];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
substituteInPlace "hack/lib/golang.sh" --replace "_cgo" ""
|
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
|
patchShebangs ./hack
|
||||||
'';
|
'';
|
||||||
|
|
||||||
WHAT="--use_go_build ${concatStringsSep " " components}";
|
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 = ''
|
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 _output/local/go/bin/* "$out/bin/"
|
||||||
cp build/pause/pause "$pause/bin/pause"
|
cp build/pause/pause "$pause/bin/pause"
|
||||||
cp -R docs/man/man1 "$man/share/man"
|
cp -R docs/man/man1 "$man/share/man"
|
||||||
|
|
||||||
|
$out/bin/kubectl completion bash > $out/share/bash-completion/completions/kubectl
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preFixup = ''
|
preFixup = ''
|
||||||
|
@ -30,6 +30,9 @@ stdenv.mkDerivation rec {
|
|||||||
installPhase = ''
|
installPhase = ''
|
||||||
cp $src $out/bin/${pname}
|
cp $src $out/bin/${pname}
|
||||||
chmod +x $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; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
{ stdenv, fetchFromGitHub, go, which }:
|
{ stdenv, fetchFromGitHub, go, which }:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "1.3.1";
|
version = "1.3.2";
|
||||||
versionMajor = "1";
|
ver = stdenv.lib.elemAt (stdenv.lib.splitString "." version);
|
||||||
versionMinor = "3";
|
versionMajor = ver 0;
|
||||||
|
versionMinor = ver 1;
|
||||||
|
versionPatch = ver 2;
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "openshift-origin-${version}";
|
name = "openshift-origin-${version}";
|
||||||
@ -13,7 +15,7 @@ stdenv.mkDerivation rec {
|
|||||||
owner = "openshift";
|
owner = "openshift";
|
||||||
repo = "origin";
|
repo = "origin";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1kxa1k38hvi1vg52p82mmkmp9k4bbbm2pryzapsxwga7d8x4bnbh";
|
sha256 = "0zw8zb9c6icigcq6y47ppnjnqyghk2kril07bapbddvgnvbbfp6m";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ go which ];
|
buildInputs = [ go which ];
|
||||||
@ -43,7 +45,7 @@ stdenv.mkDerivation rec {
|
|||||||
description = "Build, deploy, and manage your applications with Docker and Kubernetes";
|
description = "Build, deploy, and manage your applications with Docker and Kubernetes";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
homepage = http://www.openshift.org;
|
homepage = http://www.openshift.org;
|
||||||
maintainers = with maintainers; [offline];
|
maintainers = with maintainers; [offline bachp];
|
||||||
platforms = platforms.linux;
|
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 {
|
buildGoPackage rec {
|
||||||
name = "terraform-${version}";
|
name = "terraform-${version}";
|
||||||
version = "0.7.11";
|
version = "0.8.1";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
|
|
||||||
goPackagePath = "github.com/hashicorp/terraform";
|
goPackagePath = "github.com/hashicorp/terraform";
|
||||||
@ -11,7 +11,7 @@ buildGoPackage rec {
|
|||||||
inherit rev;
|
inherit rev;
|
||||||
owner = "hashicorp";
|
owner = "hashicorp";
|
||||||
repo = "terraform";
|
repo = "terraform";
|
||||||
sha256 = "0rmzhf2rwxci57ll5nv2vvmic9cn64dbbg1fb5g78njljzpsc5qw";
|
sha256 = "1fgnivhn6hrxpwwajl80vj2w81lv6vypprlbgif8m0z0na7p8956";
|
||||||
};
|
};
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
{ stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext
|
{ stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext
|
||||||
, pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla, nettle }:
|
, pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla, nettle }:
|
||||||
|
|
||||||
let version = "3.22.2.2"; in
|
let version = "3.23.0.2"; in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "filezilla-${version}";
|
name = "filezilla-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
|
url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
|
||||||
sha256 = "1h02k13x88f04gkf433cxx1xvbr7kkl2aygb4i6581gzhzjifwdv";
|
sha256 = "0bq22nq2g1b0x5msm9if74ync2qk13n2782mwj2r1r7hsmx4liiz";
|
||||||
};
|
};
|
||||||
|
|
||||||
configureFlags = [
|
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
|
, alsaLib, atk, cairo, cups, dbus, expat, fontconfig, freetype, gdk_pixbuf
|
||||||
, glib, gnome2, gtk2, libnotify, libX11, libXcomposite, libXcursor, libXdamage
|
, glib, gnome2, gtk2, libnotify, libX11, libXcomposite, libXcursor, libXdamage
|
||||||
, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst, nspr, nss, pango
|
, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst, nspr, nss, pango
|
||||||
, systemd, libXScrnSaver }:
|
, systemd, libXScrnSaver }:
|
||||||
|
|
||||||
let version = "0.0.11"; in
|
stdenv.mkDerivation rec {
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
pname = "discord";
|
||||||
|
version = "0.0.11";
|
||||||
name = "discord-${version}";
|
name = "${pname}-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
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";
|
sha256 = "1lk53vm14vr5pb8xxcx6hinpc2mkdns2xxv0bfzxvlmhfr6d6y18";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ stdenv.mkDerivation {
|
|||||||
];
|
];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/{bin,share/pixmaps}
|
||||||
mv * $out
|
mv * $out
|
||||||
|
|
||||||
# Copying how adobe-reader does it,
|
# Copying how adobe-reader does it,
|
||||||
@ -33,11 +33,22 @@ stdenv.mkDerivation {
|
|||||||
$out/DiscordCanary
|
$out/DiscordCanary
|
||||||
|
|
||||||
ln -s $out/DiscordCanary $out/bin/
|
ln -s $out/DiscordCanary $out/bin/
|
||||||
|
ln -s $out/discord.png $out/share/pixmaps
|
||||||
|
|
||||||
# Putting udev in the path won't work :(
|
# Putting udev in the path won't work :(
|
||||||
ln -s ${systemd.lib}/lib/libudev.so.1 $out
|
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; {
|
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";
|
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/";
|
homepage = "https://discordapp.com/";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{ stdenv, fetchurl, automake, autoconf, pkgconfig, glib, openssl, expat
|
{ stdenv, fetchurl, pkgconfig, glib, openssl, expat, libmesode
|
||||||
, ncurses, libotr, curl, libstrophe, readline, libuuid
|
, ncurses, libotr, curl, readline, libuuid
|
||||||
|
|
||||||
, autoAwaySupport ? false, libXScrnSaver ? null, libX11 ? null
|
, autoAwaySupport ? false, libXScrnSaver ? null, libX11 ? null
|
||||||
, notifySupport ? false, libnotify ? null, gdk_pixbuf ? null
|
, notifySupport ? false, libnotify ? null, gdk_pixbuf ? null
|
||||||
@ -12,21 +12,19 @@ with stdenv.lib;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "profanity-${version}";
|
name = "profanity-${version}";
|
||||||
version = "0.4.7";
|
version = "0.5.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://www.profanity.im/profanity-${version}.tar.gz";
|
url = "http://www.profanity.im/profanity-${version}.tar.gz";
|
||||||
sha256 = "1p8ixvxacvf63r6lnf6iwlyz4pgiyp6widna1h2l2jg8kw14wb5h";
|
sha256 = "0s4njc4rcaii51qw1najxa0fa8bb2fnas00z47y94wdbdsmfhfvq";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
automake autoconf pkgconfig readline libuuid
|
pkgconfig readline libuuid libmesode
|
||||||
glib openssl expat ncurses libotr curl libstrophe
|
glib openssl expat ncurses libotr curl
|
||||||
] ++ optionals autoAwaySupport [ libXScrnSaver libX11 ]
|
] ++ optionals autoAwaySupport [ libXScrnSaver libX11 ]
|
||||||
++ optionals notifySupport [ libnotify gdk_pixbuf ];
|
++ optionals notifySupport [ libnotify gdk_pixbuf ];
|
||||||
|
|
||||||
preConfigure = "sh bootstrap.sh";
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "A console based XMPP client";
|
description = "A console based XMPP client";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
|
@ -17,9 +17,9 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig libconfig ];
|
nativeBuildInputs = [ pkgconfig libconfig ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
libtoxcore-dev libsodium ncurses libqrencode curl
|
libtoxcore-dev libsodium ncurses curl
|
||||||
] ++ stdenv.lib.optionals (!stdenv.isArm) [
|
] ++ stdenv.lib.optionals (!stdenv.isArm) [
|
||||||
openal libvpx freealut
|
openal libvpx freealut libqrencode
|
||||||
];
|
];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
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;
|
with stdenv.lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "2.2.2";
|
version = "2.2.3";
|
||||||
variant = if withGtk then "gtk" else if withQt then "qt" else "cli";
|
variant = if withGtk then "gtk" else if withQt then "qt" else "cli";
|
||||||
in
|
in
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.bz2";
|
url = "http://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.bz2";
|
||||||
sha256 = "1csm035ayfzn1xzzsmzcjk2ixx39d70aykr4nh0a88chk9gfzb7r";
|
sha256 = "0fsrvl6sp772g2q2j24h10h9lfda6q67x7wahjjm8849i2gciflp";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -1,29 +1,22 @@
|
|||||||
{ fetchurl, stdenv, gtk, pkgconfig, libofx, intltool, wrapGAppsHook
|
{ fetchurl, stdenv, gtk, pkgconfig, libofx, intltool, wrapGAppsHook
|
||||||
, hicolor_icon_theme, libsoup}:
|
, hicolor_icon_theme, libsoup, gnome3 }:
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "homebank-5.1.2";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
urls = [ lastrelease oldrelease ];
|
url = "http://homebank.free.fr/public/${name}.tar.gz";
|
||||||
sha256 = "1gd4b8fsq89w486mfrclw4r1nrgh7lxp4sncbgprbz9id7f6vlww";
|
sha256 = "09zsq5l3s8cg4slhsyybsq8v1arnhh07i0rzka3j6ahysky15pfh";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ pkgconfig gtk libofx intltool hicolor_icon_theme
|
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||||
wrapGAppsHook libsoup ];
|
buildInputs = [ gtk libofx intltool hicolor_icon_theme libsoup
|
||||||
|
gnome3.defaultIconTheme ];
|
||||||
|
|
||||||
meta = {
|
meta = with stdenv.lib; {
|
||||||
description = "Free, easy, personal accounting for everyone";
|
description = "Free, easy, personal accounting for everyone";
|
||||||
homepage = http://homebank.free.fr/;
|
homepage = http://homebank.free.fr/;
|
||||||
license = stdenv.lib.licenses.gpl2Plus;
|
license = licenses.gpl2Plus;
|
||||||
maintainers = with stdenv.lib.maintainers; [viric];
|
maintainers = with maintainers; [ viric pSub ];
|
||||||
platforms = with stdenv.lib.platforms; linux;
|
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}:
|
{stdenv, fetchgit, writeText, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null, csdp ? null}:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "8.5pre-0c999f02";
|
version = "8.6pre-0c999f02";
|
||||||
coq-version = "8.5";
|
coq-version = "8.6";
|
||||||
buildIde = lablgtk != null;
|
buildIde = lablgtk != null;
|
||||||
ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
|
ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
|
||||||
csdpPatch = if csdp != null then ''
|
csdpPatch = if csdp != null then ''
|
||||||
@ -24,20 +24,18 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = git://scm.gforge.inria.fr/coq/coq.git;
|
url = git://scm.gforge.inria.fr/coq/coq.git;
|
||||||
rev = "0c999f02ffcd61fcace0cc2d045056a82992a100";
|
rev = "ad768e435a736ca51ac79a575967b388b34918c7";
|
||||||
sha256 = "08z9z4bv4a8ha1jrn18vxad6d7y7h92ggr00rx8jfvvi290n9344";
|
sha256 = "05s7sk1l3mvdjag3idnhkpj707y4bv56da7kpffw862f2qgfr77j";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ pkgconfig ocaml findlib camlp5 ncurses lablgtk ];
|
buildInputs = [ pkgconfig ocaml findlib camlp5 ncurses lablgtk ];
|
||||||
|
|
||||||
patches = [ ./no-codesign.patch ];
|
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
UNAME=$(type -tp uname)
|
UNAME=$(type -tp uname)
|
||||||
RM=$(type -tp rm)
|
RM=$(type -tp rm)
|
||||||
substituteInPlace configure --replace "/bin/uname" "$UNAME"
|
substituteInPlace configure --replace "/bin/uname" "$UNAME"
|
||||||
substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM"
|
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}
|
${csdpPatch}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
{ stdenv, fetchurl, python2Packages }:
|
{ stdenv, fetchurl, python2Packages
|
||||||
|
, withSFTP ? true
|
||||||
|
}:
|
||||||
|
|
||||||
python2Packages.buildPythonApplication rec {
|
python2Packages.buildPythonApplication rec {
|
||||||
version = "2.7";
|
version = "2.7";
|
||||||
@ -12,6 +14,9 @@ python2Packages.buildPythonApplication rec {
|
|||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
|
propagatedBuildInputs = []
|
||||||
|
++ stdenv.lib.optionals withSFTP [ python2Packages.paramiko ];
|
||||||
|
|
||||||
# Bazaar can't find the certificates alone
|
# Bazaar can't find the certificates alone
|
||||||
patches = [ ./add_certificates.patch ];
|
patches = [ ./add_certificates.patch ];
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -103,15 +103,13 @@ let
|
|||||||
});
|
});
|
||||||
|
|
||||||
in {
|
in {
|
||||||
|
|
||||||
subversion18 = common {
|
subversion18 = common {
|
||||||
version = "1.8.16";
|
version = "1.8.17";
|
||||||
sha256 = "0imkxn25n6sbcgfldrx4z29npjprb1lxjm5fb89q4297161nx3zi";
|
sha256 = "1450fkj1jmxyphqn6cd95z1ykwsabajm9jw4i412qpwss8w9a4fy";
|
||||||
};
|
};
|
||||||
|
|
||||||
subversion19 = common {
|
subversion19 = common {
|
||||||
version = "1.9.4";
|
version = "1.9.5";
|
||||||
sha256 = "16cjkvvq628hbznkhqkppzs8nifcr7k43s5y4c32cgwqmgigjrqj";
|
sha256 = "1ramwly6p74jhb2rdm5ygxjri7jds940cilyvnsdq60xzy5cckwa";
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ stdenv.mkDerivation {
|
|||||||
done)
|
done)
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preferLocalBuilds = true;
|
preferLocalBuild = true;
|
||||||
|
|
||||||
meta = with kodi.meta; {
|
meta = with kodi.meta; {
|
||||||
inherit license homepage;
|
inherit license homepage;
|
||||||
|
@ -11,13 +11,13 @@ with lib;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "docker-${version}";
|
name = "docker-${version}";
|
||||||
version = "1.12.3";
|
version = "1.12.5";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "docker";
|
owner = "docker";
|
||||||
repo = "docker";
|
repo = "docker";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0jifd35h22lgh36w1j2k97pgndjh5sppr3cwndlv0saf9618wx5k";
|
sha256 = "1hnxmh2j1vm8714f7jwjrslkqkd1ry25g5wq76aqlpsz5fh2kqb0";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
, vncSupport ? true, libjpeg, libpng
|
, vncSupport ? true, libjpeg, libpng
|
||||||
, spiceSupport ? !stdenv.isDarwin, spice, spice_protocol, usbredir
|
, spiceSupport ? !stdenv.isDarwin, spice, spice_protocol, usbredir
|
||||||
, x86Only ? false
|
, x86Only ? false
|
||||||
|
, nixosTestRunner ? false
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
@ -133,7 +134,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
# from http://git.qemu.org/?p=qemu.git;a=patch;h=ff55e94d23ae94c8628b0115320157c763eb3e06
|
# from http://git.qemu.org/?p=qemu.git;a=patch;h=ff55e94d23ae94c8628b0115320157c763eb3e06
|
||||||
./CVE-2016-9102.patch
|
./CVE-2016-9102.patch
|
||||||
];
|
] ++ optional nixosTestRunner ./force-uid0-on-9p.patch;
|
||||||
hardeningDisable = [ "stackprotector" ];
|
hardeningDisable = [ "stackprotector" ];
|
||||||
|
|
||||||
configureFlags =
|
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";
|
stage1Dir = "lib/rkt/stage1-images";
|
||||||
|
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
version = "1.20.0";
|
version = "1.21.0";
|
||||||
name = "rkt-${version}";
|
name = "rkt-${version}";
|
||||||
BUILDDIR="build-${name}";
|
BUILDDIR="build-${name}";
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ in stdenv.mkDerivation rec {
|
|||||||
owner = "coreos";
|
owner = "coreos";
|
||||||
repo = "rkt";
|
repo = "rkt";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0cypksr13k0qp6qvbd6y8my1dg82s44k6qkiqkpn1vs2ynjg3i52";
|
sha256 = "0zd7f3yrnzik96a634m2qyrz25f5mi28caadghqdl9q2apxfb896";
|
||||||
};
|
};
|
||||||
|
|
||||||
stage1BaseImage = fetchurl {
|
stage1BaseImage = fetchurl {
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i python3 -p python3
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import json
|
import json
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"__NOTE": "Generated using update.py from the same directory.",
|
"__NOTE": "Generated using update.py from the same directory.",
|
||||||
"extpack": "d28bcd01c14eb07eedd2b964d1abe4876f0a7e0e89530e7ba285a5d6267bf322",
|
"extpack": "3982657fd4853bcbc79b9162e618545a479b65aca08e9ced43a904aeeba3ffa5",
|
||||||
"extpackRev": "111374",
|
"extpackRev": "112026",
|
||||||
"guest": "347fd39df6ddee8079ad41fbc038e2fb64952a40255d75292e8e49a0a0cbf657",
|
"guest": "29fa0af66a3dd273b0c383c4adee31a52061d52f57d176b67f444698300b8c41",
|
||||||
"main": "e447031de468aee746529b2cf60768922f9beff22a13c54284aa430f5e925933",
|
"main": "98073b1b2adee4e6553df73cb5bb6ea8ed7c3a41a475757716fd9400393bea40",
|
||||||
"version": "5.1.8"
|
"version": "5.1.10"
|
||||||
}
|
}
|
||||||
|
@ -291,8 +291,8 @@ _clone_user_rev() {
|
|||||||
pushd "$dir" >/dev/null
|
pushd "$dir" >/dev/null
|
||||||
fullRev=$( (git rev-parse "$rev" 2>/dev/null || git rev-parse "refs/heads/$branchName") | tail -n1)
|
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 --)
|
humanReadableRev=$(git describe "$fullRev" 2> /dev/null || git describe --tags "$fullRev" 2> /dev/null || echo -- none --)
|
||||||
commitDate=$(git show --no-patch --pretty=%ci "$fullRev")
|
commitDate=$(git show -1 --no-patch --pretty=%ci "$fullRev")
|
||||||
commitDateStrict8601=$(git show --no-patch --pretty=%cI "$fullRev")
|
commitDateStrict8601=$(git show -1 --no-patch --pretty=%cI "$fullRev")
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
|
||||||
# Allow doing additional processing before .git removal
|
# Allow doing additional processing before .git removal
|
||||||
@ -322,6 +322,18 @@ clone_user_rev() {
|
|||||||
fi
|
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() {
|
print_results() {
|
||||||
hash="$1"
|
hash="$1"
|
||||||
@ -338,17 +350,15 @@ print_results() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if test -n "$hash"; then
|
if test -n "$hash"; then
|
||||||
echo "{"
|
cat <<EOF
|
||||||
echo " \"url\": \"$url\","
|
{
|
||||||
echo " \"rev\": \"$fullRev\","
|
"url": "$(json_escape "$url")",
|
||||||
echo " \"date\": \"$commitDateStrict8601\","
|
"rev": "$(json_escape "$fullRev")",
|
||||||
echo -n " \"$hashType\": \"$hash\""
|
"date": "$(json_escape "$commitDateStrict8601")",
|
||||||
if test -n "$fetchSubmodules"; then
|
"$(json_escape "$hashType")": "$(json_escape "$hash")",
|
||||||
echo ","
|
"fetchSubmodules": $([[ -n "fetchSubmodules" ]] && echo true || echo false)
|
||||||
echo -n " \"fetchSubmodules\": true"
|
}
|
||||||
fi
|
EOF
|
||||||
echo ""
|
|
||||||
echo "}"
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,6 +10,11 @@ stdenv.mkDerivation rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
makeFlags = [ "MANDIR=$(out)/share/man" ];
|
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";
|
outputDocdev = "out";
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user