Merge branch 'master' of github.com:NixOS/nixpkgs

This commit is contained in:
jz 2015-05-20 15:18:26 -06:00
commit f2cc21a8b4
2682 changed files with 30613 additions and 57515 deletions

View File

@ -1 +1 @@
15.05
15.06

View File

@ -169,8 +169,8 @@ stdenv.mkDerivation { ...
args: with args; <replaceable>...</replaceable>
</programlisting>
or
or
<programlisting>
{ stdenv, fetchurl, perl, ... }: <replaceable>...</replaceable>
</programlisting>
@ -598,6 +598,51 @@ evaluate correctly.</para>
</section>
</section>
<section xml:id="sec-sources"><title>Fetching Sources</title>
<para>There are multiple ways to fetch a package source in nixpkgs. The
general guidline is that you should package sources with a high degree of
availability. Right now there is only one fetcher which has mirroring
support and that is <literal>fetchurl</literal>. Note that you should also
prefer protocols which have a corresponding proxy environment variable.
</para>
<para>You can find many source fetch helpers in <literal>pkgs/build-support/fetch*</literal>.
</para>
<para>In the file <literal>pkgs/top-level/all-packages.nix</literal> you can
find fetch helpers, these have names on the form
<literal>fetchFrom*</literal>. The intention of these are to provide
snapshot fetches but using the same api as some of the version controlled
fetchers from <literal>pkgs/build-support/</literal>. As an example going
from bad to good:
<itemizedlist>
<listitem><para>Uses <literal>git://</literal> which won't be proxied.
<programlisting>
src = fetchgit {
url = "git://github.com/NixOS/nix.git";
rev = "1f795f9f44607cc5bec70d1300150bfefcef2aae";
sha256 = "1cw5fszffl5pkpa6s6wjnkiv6lm5k618s32sp60kvmvpy7a2v9kg";
}
</programlisting></para>
</listitem>
<listitem><para>This is ok, but an archive fetch will still be faster.
<programlisting>
src = fetchgit {
url = "https://github.com/NixOS/nix.git";
rev = "1f795f9f44607cc5bec70d1300150bfefcef2aae";
sha256 = "1cw5fszffl5pkpa6s6wjnkiv6lm5k618s32sp60kvmvpy7a2v9kg";
}
</programlisting></para>
</listitem>
<listitem><para>Fetches a snapshot archive and you get the rev you want.
<programlisting>
src = fetchFromGitHub {
owner = "NixOS";
repo = "nix";
rev = "1f795f9f44607cc5bec70d1300150bfefcef2aae";
sha256 = "04yri911rj9j19qqqn6m82266fl05pz98inasni0vxr1cf1gdgv9";
}
</programlisting></para>
</listitem>
</itemizedlist>
</para>
</section>
</chapter>

View File

@ -624,7 +624,7 @@ $ cat > Gemfile
source 'https://rubygems.org'
gem 'sensu'
$ bundler package --path /tmp/vendor/bundle
$ $(nix-build '&nixpkgs>' -A bundix)/bin/bundix
$ $(nix-build '<nixpkgs>' -A bundix)/bin/bundix
$ cat > default.nix
{ lib, bundlerEnv, ruby }:
@ -662,20 +662,19 @@ standard Go packages.
<programlisting>
net = buildGoPackage rec {
name = "go.net-${rev}";
goPackagePath = "code.google.com/p/go.net"; <co xml:id='ex-buildGoPackage-1' />
goPackagePath = "golang.org/x/net"; <co xml:id='ex-buildGoPackage-1' />
subPackages = [ "ipv4" "ipv6" ]; <co xml:id='ex-buildGoPackage-2' />
rev = "28ff664507e4";
src = fetchhg {
rev = "e0403b4e005";
src = fetchFromGitHub {
inherit rev;
url = "https://${goPackagePath}";
sha256 = "1lkz4c9pyz3yz2yz18hiycvlfhgy3jxp68bs7mv7bcfpaj729qav";
owner = "golang";
repo = "net";
sha256 = "1g7cjzw4g4301a3yqpbk8n1d4s97sfby2aysl275x04g0zh8jxqp";
};
renameImports = [ <co xml:id='ex-buildGoPackage-3' />
"code.google.com/p/go.crypto golang.org/x/crypto"
"code.google.com/p/goprotobuf github.com/golang/protobuf"
];
goPackageAliases = [ "code.google.com/p/go.net" ]; <co xml:id='ex-buildGoPackage-3' />
propagatedBuildInputs = [ goPackages.text ]; <co xml:id='ex-buildGoPackage-4' />
buildFlags = "--tags release"; <co xml:id='ex-buildGoPackage-5' />
disabled = isGo13;<co xml:id='ex-buildGoPackage-6' />
};
</programlisting>
</example>
@ -703,17 +702,18 @@ the following arguments are of special significance to the function:
</para>
</callout>
<callout arearefs='ex-buildGoPackage-4'>
<callout arearefs='ex-buildGoPackage-3'>
<para>
<varname>renameImports</varname> is a list of import paths to be renamed before
building the package. The path to be renamed can be a regular expression.
<varname>goPackageAliases</varname> is a list of alternative import paths
that are valid for this library.
Packages that depend on this library will automatically rename
import paths that match any of the aliases to <literal>goPackagePath</literal>.
</para>
<para>
In this example imports will be renamed from
<literal>code.google.com/p/go.crypto</literal> to
<literal>golang.org/x/crypto</literal> and from
<literal>code.google.com/p/goprotobuf</literal> to
<literal>github.com/golang/protobuf</literal>.
<literal>code.google.com/p/go.net</literal> to
<literal>golang.org/x/net</literal> in every package that depend on the
<literal>go.net</literal> library.
</para>
</callout>
@ -732,6 +732,18 @@ the following arguments are of special significance to the function:
</para>
</callout>
<callout arearefs='ex-buildGoPackage-6'>
<para>
If <varname>disabled</varname> is <literal>true</literal>,
nix will refuse to build this package.
</para>
<para>
In this example the package will not be built for go 1.3. The <literal>isGo13</literal>
is an utility function that returns <literal>true</literal> if go used to build the
package has version 1.3.x.
</para>
</callout>
</calloutlist>
</para>

View File

@ -513,8 +513,8 @@ script) if it exists.</para>
<term><varname>dontAddPrefix</varname></term>
<listitem><para>By default, the flag
<literal>--prefix=$prefix</literal> is added to the configure
flags. If this is undesirable, set this variable to a non-empty
value.</para></listitem>
flags. If this is undesirable, set this variable to
true.</para></listitem>
</varlistentry>
<varlistentry>
@ -530,8 +530,7 @@ script) if it exists.</para>
<listitem><para>By default, the flag
<literal>--disable-dependency-tracking</literal> is added to the
configure flags to speed up Automake-based builds. If this is
undesirable, set this variable to a non-empty
value.</para></listitem>
undesirable, set this variable to true.</para></listitem>
</varlistentry>
<varlistentry>
@ -544,7 +543,16 @@ script) if it exists.</para>
variables in the Libtool script to prevent Libtool from using
libraries in <filename>/usr/lib</filename> and
such.</para></footnote>. If this is undesirable, set this
variable to a non-empty value.</para></listitem>
variable to true.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>dontDisableStatic</varname></term>
<listitem><para>By default, when the configure script has
<option>--enable-static</option>, the option
<option>--disable-static</option> is added to the configure flags.</para>
<para>If this is undesirable, set this variable to
true.</para></listitem>
</varlistentry>
<varlistentry>

View File

@ -41,7 +41,9 @@
bodil = "Bodil Stokke <nix@bodil.org>";
boothead = "Ben Ford <ben@perurbis.com>";
bosu = "Boris Sukholitko <boriss@gmail.com>";
bramd = "Bram Duvigneau <bram@bramd.nl>";
bstrik = "Berno Strik <dutchman55@gmx.com>";
c0dehero = "CodeHero <codehero@nerdpol.ch>";
calrama = "Moritz Maxeiner <moritz@ucworks.org>";
campadrenalin = "Philip Horger <campadrenalin@gmail.com>";
cdepillabout = "Dennis Gosnell <cdep.illabout@gmail.com>";
@ -115,6 +117,7 @@
kovirobi = "Kovacsics Robert <kovirobi@gmail.com>";
kragniz = "Louis Taylor <kragniz@gmail.com>";
ktosiek = "Tomasz Kontusz <tomasz.kontusz@gmail.com>";
lassulus = "Lassulus <lassulus@gmail.com>";
lethalman = "Luca Bruno <lucabru@src.gnome.org>";
lhvwb = "Nathaniel Baxter <nathaniel.baxter@gmail.com>";
linquize = "Linquize <linquize@yahoo.com.hk>";
@ -131,6 +134,7 @@
meditans = "Carlo Nucera <meditans@gmail.com>";
meisternu = "Matt Miemiec <meister@krutt.org>";
michelk = "Michel Kuhlmann <michel@kuhlmanns.info>";
mschristiansen = "Mikkel Christiansen <mikkel@rheosystems.com>";
modulistic = "Pablo Costa <modulistic@gmail.com>";
mornfall = "Petr Ročkai <me@mornfall.net>";
MP2E = "Cray Elliott <MP2E@archlinux.us>";
@ -147,11 +151,14 @@
offline = "Jaka Hudoklin <jakahudoklin@gmail.com>";
olcai = "Erik Timan <dev@timan.info>";
orbitz = "Malcolm Matalka <mmatalka@gmail.com>";
osener = "Ozan Sener <ozan@ozansener.com>";
page = "Carles Pagès <page@cubata.homelinux.net>";
paholg = "Paho Lurie-Gregg <paho@paholg.com>";
pakhfn = "Fedor Pakhomov <pakhfn@gmail.com>";
pashev = "Igor Pashev <pashev.igor@gmail.com>";
pesterhazy = "Paulus Esterhazy <pesterhazy@gmail.com>";
phausmann = "Philipp Hausmann <nix@314.ch>";
philandstuff = "Philip Potter <philip.g.potter@gmail.com>";
phreedom = "Evgeny Egorochkin <phreedom@yandex.ru>";
pierron = "Nicolas B. Pierron <nixos@nbp.name>";
piotr = "Piotr Pietraszkiewicz <ppietrasa@gmail.com>";
@ -159,6 +166,7 @@
pkmx = "Chih-Mao Chen <pkmx.tw@gmail.com>";
plcplc = "Philip Lykke Carlsen <plcplc@gmail.com>";
pmahoney = "Patrick Mahoney <pat@polycrystal.org>";
pmiddend = "Philipp Middendorf <pmidden@secure.mailbox.org>";
prikhi = "Pavan Rikhi <pavan.rikhi@gmail.com>";
pSub = "Pascal Wittmann <mail@pascal-wittmann.de>";
puffnfresh = "Brian McKenna <brian@brianmckenna.org>";
@ -182,6 +190,7 @@
schmitthenner = "Fabian Schmitthenner <development@schmitthenner.eu>";
schristo = "Scott Christopher <schristopher@konputa.com>";
sepi = "Raffael Mancini <raffael@mancini.lu>";
sheganinans = "Aistis Raulinaitis <sheganinans@gmail.com>";
shell = "Shell Turner <cam.turn@gmail.com>";
shlevy = "Shea Levy <shea@shealevy.com>";
simons = "Peter Simons <simons@cryp.to>";
@ -218,6 +227,7 @@
winden = "Antonio Vargas Gonzalez <windenntw@gmail.com>";
wizeman = "Ricardo M. Correia <rcorreia@wizy.org>";
wjlroe = "William Roe <willroe@gmail.com>";
womfoo = "Kranium Gikos Mendoza <kranium@gikos.net>";
wkennington = "William A. Kennington III <william@wkennington.com>";
wmertens = "Wout Mertens <Wout.Mertens@gmail.com>";
wscott = "Wayne Scott <wsc9tt@gmail.com>";

View File

@ -24,6 +24,9 @@ $ mkdir -p <replaceable>/my/sources</replaceable>
$ cd <replaceable>/my/sources</replaceable>
$ nix-env -i git
$ git clone git://github.com/NixOS/nixpkgs.git
$ cd nixpkgs
$ git remote add channels git://github.com/NixOS/nixpkgs-channels.git
$ git remote update channels
</screen>
This will check out the latest NixOS sources to
@ -31,7 +34,12 @@ This will check out the latest NixOS sources to
and the Nixpkgs sources to
<filename><replaceable>/my/sources</replaceable>/nixpkgs</filename>.
(The NixOS source tree lives in a subdirectory of the Nixpkgs
repository.)</para>
repository.) The remote <literal>channels</literal> refers to a
read-only repository that tracks the Nixpkgs/NixOS channels (see <xref
linkend="sec-upgrading"/> for more information about channels). Thus,
the Git branch <literal>channels/nixos-14.12</literal> will contain
the latest built and tested version available in the
<literal>nixos-14.12</literal> channel.</para>
<para>Its often inconvenient to develop directly on the master
branch, since if somebody has just committed (say) a change to GCC,
@ -40,28 +48,32 @@ rebuild everything from source. So you may want to create a local
branch based on your current NixOS version:
<screen>
$ <replaceable>/my/sources</replaceable>/nixpkgs/maintainers/scripts/update-channel-branches.sh
Fetching channels from https://nixos.org/channels:
* [new branch] cbe467e -> channels/remotes/nixos-unstable
Fetching channels from nixos-version:
* [new branch] 9ff4738 -> channels/current-system
Fetching channels from ~/.nix-defexpr:
* [new branch] 0d4acad -> channels/root/nixos
$ git checkout -b local channels/current-system
$ nixos-version
14.04.273.ea1952b (Baboon)
$ git checkout -b local ea1952b
</screen>
Or, to base your local branch on the latest version available in the
Or, to base your local branch on the latest version available in a
NixOS channel:
<screen>
$ <replaceable>/my/sources</replaceable>/nixpkgs/maintainers/scripts/update-channel-branches.sh
$ git checkout -b local channels/remotes/nixos-unstable
$ git remote update channels
$ git checkout -b local channels/nixos-14.12
</screen>
You can then use <command>git rebase</command> to sync your local
branch with the upstream branch, and use <command>git
cherry-pick</command> to copy commits from your local branch to the
upstream branch.</para>
(Replace <literal>nixos-14.12</literal> with the name of the channel
you want to use.) You can use <command>git merge</command> or
<command>git rebase</command> to keep your local branch in sync with
the channel, e.g.
<screen>
$ git remote update channels
$ git merge channels/nixos-14.12
</screen>
You can use <command>git cherry-pick</command> to copy commits from
your local branch to the upstream branch.</para>
<para>If you want to rebuild your system using your (modified)
sources, you need to tell <command>nixos-rebuild</command> about them

View File

@ -15,9 +15,9 @@
<para>Following new services were added since the last release:
<!--<itemizedlist>
</itemizedlist>-->
<itemizedlist>
<listitem><para><literal>brltty</literal></para></listitem>
</itemizedlist>
</para>
<para>When upgrading from a previous release, please be aware of the
@ -49,6 +49,28 @@ was accordingly renamed to <literal>bomi</literal>
</para>
</listitem>
<listitem>
<para>
The CUPS printing service has been updated to version <literal>2.0.2</literal>.
Furthermore its systemd service has been renamed to <literal>cups.service</literal>.
</para>
<para>
Local printers are no longer shared or advertised by default. This behavior
can be changed by enabling <literal>services.printing.defaultShared</literal>
or <literal>services.printing.browsing</literal> respectively.
</para>
</listitem>
<listitem>
<para>
HPLIP (printer, scanner, and fax drivers for HP devices) has
been updated to version <literal>3.15.4</literal>. This release
adds support for the <literal>arm6l-linux</literal> and
<literal>arm7l-linux</literal> platforms.
</para>
</listitem>
</itemizedlist>
</para>

View File

@ -105,7 +105,7 @@ in
options = {
isoImage.isoName = mkOption {
default = "${config.isoImage.isoName}.iso";
default = "${config.isoImage.isoBaseName}.iso";
description = ''
Name of the generated ISO image file.
'';

View File

@ -1,5 +1,5 @@
# This module generates the nixos-checkout script, which replaces the
# Nixpkgs source trees in /etc/nixos/nixpkgs with a Git checkout.
# This module generates the nixos-checkout script, which performs a
# checkout of the Nixpkgs Git repository.
{ config, lib, pkgs, ... }:
@ -37,8 +37,19 @@ let
mv nixpkgs nixpkgs-$backupTimestamp
fi
# Check out the NixOS and Nixpkgs sources.
git clone git://github.com/NixOS/nixpkgs.git nixpkgs
# Check out the Nixpkgs sources.
if ! [ -e nixpkgs/.git ]; then
echo "Creating repository in $prefix/nixpkgs..."
git init --quiet nixpkgs
else
echo "Updating repository in $prefix/nixpkgs..."
fi
cd nixpkgs
git remote add origin git://github.com/NixOS/nixpkgs.git || true
git remote add channels git://github.com/NixOS/nixpkgs-channels.git || true
git remote set-url origin --push git@github.com:NixOS/nixpkgs.git
git remote update
git checkout master
'';
};

View File

@ -352,7 +352,7 @@ EOF
if ($fsType eq "btrfs") {
my ($status, @id_info) = runCommand("btrfs subvol show $rootDir$mountPoint");
if ($status != 0 || join("", @msg) =~ /ERROR:/) {
die "Failed to retreive subvolume info for $mountPoint\n";
die "Failed to retrieve subvolume info for $mountPoint\n";
}
my @ids = join("", @id_info) =~ m/Object ID:[ \t\n]*([^ \t\n]*)/;
if ($#ids > 0) {

View File

@ -263,7 +263,7 @@ export NIX_PATH=$NIX_PATH:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix
# Ask the user to set a root password.
if [ "$(chroot $mountPoint nix-instantiate --eval '<nixpkgs/nixos>' -A config.users.mutableUsers)" = true ] && [ -t 1 ] ; then
if [ "$(chroot $mountPoint nix-instantiate --eval '<nixpkgs/nixos>' -A config.users.mutableUsers)" = true ] && [ -t 0 ] ; then
echo "setting root password..."
chroot $mountPoint /var/setuid-wrappers/passwd
fi

View File

@ -411,6 +411,7 @@
lambdabot = 191;
#asterisk = 192; # unused
plex = 193;
sabnzbd = 194;
# When adding a gid, make sure it doesn't match an existing
# uid. Users and groups with the same name should have equal

View File

@ -62,6 +62,7 @@
./programs/environment.nix
./programs/info.nix
./programs/ibus.nix
./programs/kbdlight.nix
./programs/light.nix
./programs/nano.nix
./programs/screen.nix
@ -152,6 +153,7 @@
./services/hardware/actkbd.nix
./services/hardware/amd-hybrid-graphics.nix
./services/hardware/bluetooth.nix
./services/hardware/brltty.nix
./services/hardware/freefall.nix
./services/hardware/nvidia-optimus.nix
./services/hardware/pcscd.nix
@ -185,6 +187,7 @@
./services/misc/canto-daemon.nix
./services/misc/cpuminer-cryptonight.nix
./services/misc/cgminer.nix
./services/misc/confd.nix
./services/misc/dictd.nix
./services/misc/disnix.nix
./services/misc/docker-registry.nix
@ -195,6 +198,7 @@
./services/misc/gitolite.nix
./services/misc/gpsd.nix
./services/misc/ihaskell.nix
./services/misc/mbpfan.nix
./services/misc/mediatomb.nix
./services/misc/mesos-master.nix
./services/misc/mesos-slave.nix
@ -250,6 +254,7 @@
./services/networking/bind.nix
./services/networking/bitlbee.nix
./services/networking/btsync.nix
./services/networking/charybdis.nix
./services/networking/chrony.nix
./services/networking/cjdns.nix
./services/networking/cntlm.nix
@ -285,6 +290,7 @@
./services/networking/nat.nix
./services/networking/networkmanager.nix
./services/networking/ngircd.nix
./services/networking/nix-serve.nix
./services/networking/notbit.nix
./services/networking/nsd.nix
./services/networking/ntopng.nix
@ -457,5 +463,6 @@
./virtualisation/openvswitch.nix
./virtualisation/parallels-guest.nix
./virtualisation/virtualbox-guest.nix
./virtualisation/vmware-guest.nix
./virtualisation/xen-dom0.nix
]

View File

@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.kbdlight;
in
{
options.programs.kbdlight.enable = mkEnableOption "kbdlight";
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.kbdlight ];
security.setuidPrograms = [ "kbdlight" ];
};
}

View File

@ -38,7 +38,7 @@ in
type = types.bool;
default = false;
description = ''
Enable the testing grsecurity patch, based on Linux 3.19.
Enable the testing grsecurity patch, based on Linux 4.0.
'';
};
@ -223,7 +223,7 @@ in
message = ''
If grsecurity is enabled, you must select either the
stable patch (with kernel 3.14), or the testing patch (with
kernel 3.19) to continue.
kernel 4.0) to continue.
'';
}
{ assertion = !(cfg.stable && cfg.testing);

View File

@ -36,6 +36,16 @@ let
'';
};
u2fAuth = mkOption {
default = config.security.pam.enableU2F;
type = types.bool;
description = ''
If set, users listed in
<filename>~/.yubico/u2f_keys</filename> are able to log in
with the associated U2F key.
'';
};
usbAuth = mkOption {
default = config.security.pam.usb.enable;
type = types.bool;
@ -209,6 +219,8 @@ let
"auth sufficient ${pkgs.pam_ssh_agent_auth}/libexec/pam_ssh_agent_auth.so file=~/.ssh/authorized_keys:~/.ssh/authorized_keys2:/etc/ssh/authorized_keys.d/%u"}
${optionalString cfg.fprintAuth
"auth sufficient ${pkgs.fprintd}/lib/security/pam_fprintd.so"}
${optionalString cfg.u2fAuth
"auth sufficient ${pkgs.pam_u2f}/lib/security/pam_u2f.so"}
${optionalString cfg.usbAuth
"auth sufficient ${pkgs.pam_usb}/lib/security/pam_usb.so"}
${optionalString cfg.unixAuth
@ -364,6 +376,13 @@ in
'';
};
security.pam.enableU2F = mkOption {
default = false;
description = ''
Enable the U2F PAM module.
'';
};
security.pam.enableEcryptfs = mkOption {
default = false;
description = ''
@ -392,6 +411,7 @@ in
++ optionals config.krb5.enable [pam_krb5 pam_ccreds]
++ optionals config.security.pam.enableOTPW [ pkgs.otpw ]
++ optionals config.security.pam.enableOATH [ pkgs.oathToolkit ]
++ optionals config.security.pam.enableU2F [ pkgs.pam_u2f ]
++ optionals config.security.pam.enableEcryptfs [ pkgs.ecryptfs ];
security.setuidPrograms =

View File

@ -3,13 +3,13 @@
with lib;
let
inherit (pkgs) postgresql gzip;
inherit (pkgs) gzip;
location = config.services.postgresqlBackup.location ;
location = config.services.postgresqlBackup.location;
postgresqlBackupCron = db:
''
${config.services.postgresqlBackup.period} root ${postgresql}/bin/pg_dump ${db} | ${gzip}/bin/gzip -c > ${location}/${db}.gz
${config.services.postgresqlBackup.period} root ${config.services.postgresql.package}/bin/pg_dump ${db} | ${gzip}/bin/gzip -c > ${location}/${db}.gz
'';
in

View File

@ -249,6 +249,8 @@ in
script = ''
mkdir -p -m 0755 ${dirOf cfg.cachedir}
mkdir -p -m 0700 ${cfg.cachedir}
chown root:root ${cfg.cachedir}
chmod 0700 ${cfg.cachedir}
DIRS=`cat /etc/tarsnap/$1.dirs`
exec tarsnap --configfile /etc/tarsnap/$1.conf -c -f $1-$(date +"%Y%m%d%H%M%S") $DIRS
'';

View File

@ -176,11 +176,11 @@ in
touch /tmp/mysql_init
fi
mkdir -m 0700 -p ${cfg.pidDir}
mkdir -m 0755 -p ${cfg.pidDir}
chown -R ${cfg.user} ${cfg.pidDir}
# Make the socket directory
mkdir -m 0700 -p /run/mysqld
mkdir -m 0755 -p /run/mysqld
chown -R ${cfg.user} /run/mysqld
'';

View File

@ -34,6 +34,8 @@ with lib;
services.dbus.packages = [ pkgs.geoclue2 ];
systemd.packages = [ pkgs.geoclue2 ];
};
}

View File

@ -0,0 +1,42 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.brltty;
stateDir = "/run/brltty";
pidFile = "${stateDir}/brltty.pid";
in {
options = {
services.brltty.enable = mkOption {
type = types.bool;
default = false;
description = "Whether to enable the BRLTTY daemon.";
};
};
config = mkIf cfg.enable {
systemd.services.brltty = {
description = "Braille console driver";
preStart = ''
mkdir -p ${stateDir}
'';
serviceConfig = {
ExecStart = "${pkgs.brltty}/bin/brltty --pid-file=${pidFile}";
Type = "forking";
PIDFile = pidFile;
};
before = [ "sysinit.target" ];
wantedBy = [ "sysinit.target" ];
};
};
}

View File

@ -265,7 +265,7 @@ in
extraAliases = mkOption {
default = "";
description = "
Additional entries to put verbatim into aliases file.
Additional entries to put verbatim into aliases file, cf. man-page aliases(8).
";
};
@ -302,7 +302,7 @@ in
virtual = mkOption {
default = "";
description = "
Entries for the virtual alias map.
Entries for the virtual alias map, cf. man-page virtual(8).
";
};

View File

@ -0,0 +1,89 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.services.confd;
confdConfig = ''
backend = "${cfg.backend}"
confdir = "${cfg.confDir}"
interval = ${toString cfg.interval}
nodes = [ ${concatMapStringsSep "," (s: ''"${s}"'') cfg.nodes}, ]
prefix = "${cfg.prefix}"
log-level = "${cfg.logLevel}"
watch = ${if cfg.watch then "true" else "false"}
'';
in {
options.services.confd = {
enable = mkEnableOption "Whether to enable confd service.";
backend = mkOption {
description = "Confd config storage backend to use.";
default = "etcd";
type = types.enum ["etcd" "consul" "redis" "zookeeper"];
};
interval = mkOption {
description = "Confd check interval.";
default = 10;
type = types.int;
};
nodes = mkOption {
description = "Confd list of nodes to connect to.";
default = [ "http://127.0.0.1:4001" ];
type = types.listOf types.str;
};
watch = mkOption {
description = "Confd, whether to watch etcd config for changes.";
default = true;
type = types.bool;
};
prefix = mkOption {
description = "The string to prefix to keys.";
default = "/";
type = types.path;
};
logLevel = mkOption {
description = "Confd log level.";
default = "info";
type = types.enum ["info" "debug"];
};
confDir = mkOption {
description = "The path to the confd configs.";
default = "/etc/confd";
type = types.path;
};
package = mkOption {
description = "Confd package to use.";
default = pkgs.goPackages.confd;
type = types.package;
};
};
config = mkIf cfg.enable {
systemd.services.confd = {
description = "Confd Service.";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
ExecStart = "${cfg.package}/bin/confd";
};
};
environment.etc = {
"confd/confd.toml".text = confdConfig;
};
environment.systemPackages = [ cfg.package ];
services.etcd.enable = mkIf (cfg.backend == "etcd") (mkDefault true);
};
}

View File

@ -0,0 +1,113 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.mbpfan;
verbose = if cfg.verbose then "v" else "";
in {
options.services.mbpfan = {
enable = mkOption {
default = false;
type = types.bool;
description = ''
Whether to enable the mbpfan daemon.
'';
};
package = mkOption {
default = pkgs.mbpfan;
description = ''
The package used for the mbpfan daemon.
'';
};
minFanSpeed = mkOption {
type = types.int;
default = 2000;
description = ''
The minimum fan speed.
'';
};
maxFanSpeed = mkOption {
type = types.int;
default = 6200;
description = ''
The maximum fan speed.
'';
};
lowTemp = mkOption {
type = types.int;
default = 63;
description = ''
The low temperature.
'';
};
highTemp = mkOption {
type = types.int;
default = 66;
description = ''
The high temperature.
'';
};
maxTemp = mkOption {
type = types.int;
default = 86;
description = ''
The maximum temperature.
'';
};
pollingInterval = mkOption {
type = types.int;
default = 7;
description = ''
The polling interval.
'';
};
verbose = mkOption {
type = types.bool;
default = false;
description = ''
If true, sets the log level to verbose.
'';
};
};
config = mkIf cfg.enable {
boot.kernelModules = [ "coretemp" "applesmc" ];
environment = {
etc."mbpfan.conf".text = ''
[general]
min_fan_speed = ${toString cfg.minFanSpeed}
max_fan_speed = ${toString cfg.maxFanSpeed}
low_temp = ${toString cfg.lowTemp}
high_temp = ${toString cfg.highTemp}
max_temp = ${toString cfg.maxTemp}
polling_interval = ${toString cfg.pollingInterval}
'';
systemPackages = [ cfg.package ];
};
systemd.services.mbpfan = {
description = "A fan manager daemon for MacBook Pro";
wantedBy = [ "sysinit.target" ];
after = [ "syslog.target" "sysinit.target" ];
restartTriggers = [ config.environment.etc."mbpfan.conf".source ];
serviceConfig = {
Type = "simple";
ExecStart = "${cfg.package}/bin/mbpfan -f${verbose}";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
PIDFile = "/var/run/mbpfan.pid";
Restart = "always";
};
};
};
}

View File

@ -40,10 +40,10 @@ in {
extraCmdLineOptions = mkOption {
description = ''
Extra command line options for Mesos Master.
Extra command line options for Mesos Master.
See https://mesos.apache.org/documentation/latest/configuration/
'';
See https://mesos.apache.org/documentation/latest/configuration/
'';
default = [ "" ];
type = types.listOf types.string;
example = [ "--credentials=VALUE" ];
@ -82,20 +82,21 @@ in {
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
serviceConfig = {
ExecStart = ''
${pkgs.mesos}/bin/mesos-master \
--port=${toString cfg.port} \
--zk=${cfg.zk} \
${if cfg.quorum == 0 then "--registry=in_memory" else "--registry=replicated_log --quorum=${toString cfg.quorum}"} \
--work_dir=${cfg.workDir} \
--logging_level=${cfg.logLevel} \
${toString cfg.extraCmdLineOptions}
'';
Restart = "on-failure";
PermissionsStartOnly = true;
ExecStart = ''
${pkgs.mesos}/bin/mesos-master \
--port=${toString cfg.port} \
${if cfg.quorum == 0
then "--registry=in_memory"
else "--zk=${cfg.zk} --registry=replicated_log --quorum=${toString cfg.quorum}"} \
--work_dir=${cfg.workDir} \
--logging_level=${cfg.logLevel} \
${toString cfg.extraCmdLineOptions}
'';
Restart = "on-failure";
PermissionsStartOnly = true;
};
preStart = ''
mkdir -m 0700 -p ${cfg.workDir}
mkdir -m 0700 -p ${cfg.workDir}
'';
};
};

View File

@ -30,6 +30,30 @@ in
default = "plex";
description = "Group under which Plex runs.";
};
managePlugins = mkOption {
type = types.bool;
default = true;
description = ''
If set to true, this option will cause all of the symlinks in Plex's
plugin directory to be removed and symlinks for paths specified in
<option>extraPlugins</option> to be added.
'';
};
extraPlugins = mkOption {
type = types.listOf types.path;
default = [];
description = ''
A list of paths to extra plugin bundles to install in Plex's plugin
directory. Every time the systemd unit for Plex starts up, all of the
symlinks in Plex's plugin directory will be cleared and this module
will symlink all of the paths specified here to that directory. If
this behavior is undesired, set <option>managePlugins</option> to
false.
'';
};
};
};
@ -45,13 +69,48 @@ in
mkdir -p "${cfg.dataDir}"
chown -R ${cfg.user}:${cfg.group} "${cfg.dataDir}"
}
# Copy the database skeleton files to /var/lib/plex/.skeleton
# See the the Nix expression for Plex's package for more information on
# why this is done.
test -d "${cfg.dataDir}/.skeleton" || mkdir "${cfg.dataDir}/.skeleton"
for db in "com.plexapp.plugins.library.db"; do
cp "${plex}/usr/lib/plexmediaserver/Resources/base_$db" "${cfg.dataDir}/.skeleton/$db"
chmod u+w "${cfg.dataDir}/.skeleton/$db"
chown ${cfg.user}:${cfg.group} "${cfg.dataDir}/.skeleton/$db"
done
# If managePlugins is enabled, setup symlinks for plugins.
${optionalString cfg.managePlugins ''
echo "Preparing plugin directory."
PLUGINDIR="${cfg.dataDir}/Plex Media Server/Plug-ins"
test -d "$PLUGINDIR" || {
mkdir -p "$PLUGINDIR";
chown ${cfg.user}:${cfg.group} "$PLUGINDIR";
}
echo "Removing old symlinks."
# First, remove all of the symlinks in the directory.
for f in `ls "$PLUGINDIR/"`; do
if [[ -L "$PLUGINDIR/$f" ]]; then
echo "Removing plugin symlink $PLUGINDIR/$f."
rm "$PLUGINDIR/$f"
fi
done
echo "Symlinking plugins."
for path in ${toString cfg.extraPlugins}; do
dest="$PLUGINDIR/$(basename $path)"
if [[ ! -d "$path" ]]; then
echo "Error symlinking plugin from $path: no such directory."
elif [[ -d "$dest" || -L "$dest" ]]; then
echo "Error symlinking plugin from $path to $dest: file or directory already exists."
else
echo "Symlinking plugin at $path..."
ln -s "$path" "$dest"
fi
done
''}
'';
serviceConfig = {
Type = "simple";

View File

@ -0,0 +1,98 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkEnableOption mkIf mkOption singleton types;
inherit (pkgs) coreutils charybdis;
cfg = config.services.charybdis;
configFile = pkgs.writeText "charybdis.conf" ''
${cfg.config}
'';
in
{
###### interface
options = {
services.charybdis = {
enable = mkEnableOption "Charybdis IRC daemon";
config = mkOption {
type = types.string;
description = ''
Charybdis IRC daemon configuration file.
'';
};
statedir = mkOption {
type = types.string;
default = "/var/lib/charybdis";
description = ''
Location of the state directory of charybdis.
'';
};
user = mkOption {
type = types.string;
default = "ircd";
description = ''
Charybdis IRC daemon user.
'';
};
group = mkOption {
type = types.string;
default = "ircd";
description = ''
Charybdis IRC daemon group.
'';
};
};
};
###### implementation
config = mkIf cfg.enable {
users.extraUsers = singleton {
name = cfg.user;
description = "Charybdis IRC daemon user";
uid = config.ids.uids.ircd;
group = cfg.group;
};
users.extraGroups = singleton {
name = cfg.group;
gid = config.ids.gids.ircd;
};
systemd.services.charybdis = {
description = "Charybdis IRC daemon";
wantedBy = [ "multi-user.target" ];
environment = {
BANDB_DBPATH = "${cfg.statedir}/ban.db";
};
serviceConfig = {
ExecStart = "${charybdis}/bin/charybdis-ircd -foreground -logfile /dev/stdout -configfile ${configFile}";
Group = cfg.group;
User = cfg.user;
PermissionsStartOnly = true; # preStart needs to run with root permissions
};
preStart = ''
if ! test -d /var/lib/charybdis; then
${coreutils}/bin/mkdir -p ${cfg.statedir}
${coreutils}/bin/chown ${cfg.user}:${cfg.group} ${cfg.statedir}
fi
'';
};
};
}

View File

@ -6,11 +6,9 @@ let
dataDir = "/var/lib/consul";
cfg = config.services.consul;
configOptions = {
data_dir = dataDir;
}
// (if cfg.webUi then { ui_dir = "${pkgs.consul.ui}"; } else { })
// cfg.extraConfig;
configOptions = { data_dir = dataDir; } //
(if cfg.webUi then { ui_dir = "${pkgs.consul.ui}"; } else { }) //
cfg.extraConfig;
configFiles = [ "/etc/consul.json" "/etc/consul-addrs.json" ]
++ cfg.extraConfigFiles;
@ -52,23 +50,6 @@ in
'';
};
joinNodes = mkOption {
type = types.listOf types.str;
default = [ ];
description = ''
A list of addresses of nodes which should be joined at startup if the
current node is in a left state.
'';
};
joinRetries = mkOption {
type = types.int;
default = 10;
description = ''
The number of times to retry connecting to the join nodes.
'';
};
interface = {
advertise = mkOption {
@ -159,10 +140,14 @@ in
users.extraUsers."consul" = {
description = "Consul agent daemon user";
uid = config.ids.uids.consul;
# The shell is needed for health checks
shell = "/run/current-system/sw/bin/bash";
};
environment = {
etc."consul.json".text = builtins.toJSON configOptions;
# We need consul.d to exist for consul to start
etc."consul.d/dummy.json".text = "{ }";
systemPackages = with pkgs; [ consul ];
};
@ -170,10 +155,12 @@ in
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ] ++ systemdDevices;
bindsTo = systemdDevices;
restartTriggers = [ config.environment.etc."consul.json".source ];
restartTriggers = [ config.environment.etc."consul.json".source ]
++ mapAttrsToList (_: d: d.source)
(filterAttrs (n: _: hasPrefix "consul.d/" n) config.environment.etc);
serviceConfig = {
ExecStart = "@${pkgs.consul}/bin/consul consul agent"
ExecStart = "@${pkgs.consul}/bin/consul consul agent -config-dir /etc/consul.d"
+ concatMapStrings (n: " -config-file ${n}") configFiles;
ExecReload = "${pkgs.consul}/bin/consul reload";
PermissionsStartOnly = true;
@ -219,18 +206,6 @@ in
+ ''
echo "}" >> /etc/consul-addrs.json
'';
postStart = ''
# Issues joins to nodes which we statically connect to
${flip concatMapStrings cfg.joinNodes (addr: ''
for i in {0..${toString cfg.joinRetries}}; do
# Try to join the other nodes ${toString cfg.joinRetries} times before failing
consul join "${addr}" && break
sleep 1
done &
'')}
wait
exit 0
'';
};
systemd.services.consul-alerts = mkIf (cfg.alerts.enable) {

View File

@ -98,13 +98,23 @@ in {
'';
};
# Ugly hack for using the correct gnome3 packageSet
basePackages = mkOption {
type = types.attrsOf types.path;
default = { inherit networkmanager modemmanager wpa_supplicant
networkmanager_openvpn networkmanager_vpnc
networkmanager_openconnect
networkmanager_pptp networkmanager_l2tp; };
internal = true;
};
packages = mkOption {
type = types.listOf types.path;
default = [ ];
description = ''
Extra packages that provide NetworkManager plugins.
'';
apply = list: [ networkmanager modemmanager wpa_supplicant ] ++ list;
apply = list: (attrValues cfg.basePackages) ++ list;
};
appendNameservers = mkOption {
@ -164,7 +174,7 @@ in {
boot.kernelModules = [ "ppp_mppe" ]; # Needed for most (all?) PPTP VPN connections.
environment.etc = [
environment.etc = with cfg.basePackages; [
{ source = ipUpScript;
target = "NetworkManager/dispatcher.d/01nixos-ip-up";
}
@ -195,14 +205,7 @@ in {
target = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
}) cfg.dispatcherScripts;
environment.systemPackages = cfg.packages ++ [
networkmanager_openvpn
networkmanager_vpnc
networkmanager_openconnect
networkmanager_pptp
networkmanager_l2tp
modemmanager
];
environment.systemPackages = cfg.packages;
users.extraGroups = singleton {
name = "networkmanager";
@ -238,15 +241,7 @@ in {
security.polkit.extraConfig = polkitConf;
# openvpn plugin has only dbus interface
services.dbus.packages = cfg.packages ++ [
networkmanager_openvpn
networkmanager_vpnc
networkmanager_openconnect
networkmanager_pptp
networkmanager_l2tp
modemmanager
];
services.dbus.packages = cfg.packages;
services.udev.packages = cfg.packages;
};

View File

@ -0,0 +1,56 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.services.nix-serve;
in
{
options = {
services.nix-serve = {
enable = mkEnableOption "nix-serve, the standalone Nix binary cache server";
port = mkOption {
type = types.int;
default = 5000;
description = ''
Port number where nix-serve will listen on.
'';
};
bindAddress = mkOption {
type = types.string;
default = "0.0.0.0";
description = ''
IP address where nix-serve will bind its listening socket.
'';
};
extraParams = mkOption {
type = types.string;
default = "";
description = ''
Extra command line parameters for nix-serve.
'';
};
};
};
config = mkIf cfg.enable {
systemd.services.nix-serve = {
description = "nix-serve binary cache server";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
path = [ config.nix.package pkgs.bzip2 ];
environment.NIX_REMOTE = "daemon";
serviceConfig = {
ExecStart = "${pkgs.nix-serve}/bin/nix-serve " +
"--port ${cfg.bindAddress}:${toString cfg.port} ${cfg.extraParams}";
User = "nobody";
Group = "nogroup";
};
};
};
}

View File

@ -17,11 +17,21 @@ in
services.sabnzbd = {
enable = mkOption {
default = false;
description = "Whether to enable the sabnzbd FTP server.";
description = "Whether to enable the sabnzbd server.";
};
configFile = mkOption {
default = "/var/sabnzbd/sabnzbd.ini";
description = "Path to config file. (You need to create this file yourself!)";
default = "/var/lib/sabnzbd/sabnzbd.ini";
description = "Path to config file.";
};
user = mkOption {
default = "sabnzbd";
description = "User to run the service as";
};
group = mkOption {
default = "sabnzbd";
description = "Group to run the service as";
};
};
};
@ -31,23 +41,29 @@ in
config = mkIf cfg.enable {
users.extraUsers =
[ { name = "sabnzbd";
users.extraUsers.sabnzbd = {
uid = config.ids.uids.sabnzbd;
group = "sabnzbd";
description = "sabnzbd user";
home = "/homeless-shelter";
}
];
home = "/var/lib/sabnzbd/";
createHome = true;
};
systemd.services.sabnzbd =
{ description = "sabnzbd server";
users.extraGroups.sabnzbd = {
gid = config.ids.gids.sabnzbd;
};
systemd.services.sabnzbd = {
description = "sabnzbd server";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
Type = "forking";
GuessMainPID = "no";
User = "${cfg.user}";
Group = "${cfg.group}";
ExecStart = "${sabnzbd}/bin/sabnzbd -d -f ${cfg.configFile}";
};
};
};
};
}

View File

@ -282,8 +282,8 @@ in
config = mkIf cfg.enable {
users.extraUsers.sshd =
{ description = "SSH privilege separation user";
home = "/var/empty";
{ isSystemUser = true;
description = "SSH privilege separation user";
};
environment.etc = authKeysFiles ++ [

View File

@ -72,6 +72,30 @@ in
'';
};
defaultShared = mkOption {
type = types.bool;
default = false;
description = ''
Specifies whether local printers are shared by default.
'';
};
browsing = mkOption {
type = types.bool;
default = false;
description = ''
Specifies whether shared printers are advertised.
'';
};
webInterface = mkOption {
type = types.bool;
default = true;
description = ''
Specifies whether the web interface is enabled.
'';
};
cupsdConf = mkOption {
type = types.lines;
default = "";
@ -183,10 +207,10 @@ in
# gets loaded, and then cups cannot access the printers.
boot.blacklistedKernelModules = [ "usblp" ];
systemd.services.cups =
{ description = "CUPS Printing Daemon";
systemd.packages = [ cups ];
wantedBy = [ "multi-user.target" ];
systemd.services.cups =
{ wantedBy = [ "multi-user.target" ];
wants = [ "network.target" ];
after = [ "network.target" ];
@ -200,9 +224,6 @@ in
mkdir -m 0755 -p ${cfg.tempDir}
'';
serviceConfig.Type = "forking";
serviceConfig.ExecStart = "@${cups}/sbin/cupsd cupsd";
restartTriggers =
[ config.environment.etc."cups/cups-files.conf".source
config.environment.etc."cups/cupsd.conf".source
@ -262,9 +283,11 @@ in
SetEnv PATH ${bindir}/lib/cups/filter:${bindir}/bin:${bindir}/sbin
Browsing On
BrowseOrder allow,deny
BrowseAllow @LOCAL
DefaultShared ${if cfg.defaultShared then "Yes" else "No"}
Browsing ${if cfg.browsing then "Yes" else "No"}
WebInterface ${if cfg.webInterface then "Yes" else "No"}
DefaultAuthType Basic

View File

@ -42,7 +42,10 @@ in
config = mkIf cfg.enable {
users.extraUsers.nscd.description = "Name service cache daemon user";
users.extraUsers.nscd =
{ isSystemUser = true;
description = "Name service cache daemon user";
};
systemd.services.nscd =
{ description = "Name Service Cache Daemon";

View File

@ -21,7 +21,7 @@ let
destination = "/share/applications/mimeapps.list";
text = ''
[Default Applications]
inode/directory=nautilus.desktop
inode/directory=nautilus.desktop;org.gnome.Nautilus.desktop
'';
};
@ -45,7 +45,7 @@ in {
environment.gnome3.packageSet = mkOption {
default = null;
example = literalExample "pkgs.gnome3_12";
example = literalExample "pkgs.gnome3_16";
description = "Which GNOME 3 package set to use.";
apply = p: if p == null then pkgs.gnome3 else p;
};
@ -80,6 +80,7 @@ in {
services.telepathy.enable = mkDefault true;
networking.networkmanager.enable = mkDefault true;
services.upower.enable = config.powerManagement.enable;
hardware.bluetooth.enable = mkDefault true;
fonts.fonts = [ pkgs.dejavu_fonts pkgs.cantarell_fonts ];
@ -108,9 +109,6 @@ in {
# Override default mimeapps
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${mimeAppsList}/share
# Let gnome-control-center find gnome-shell search providers
export GNOME_SEARCH_PROVIDERS_DIR=${config.system.path}/share/gnome-shell/search-providers/
# Let nautilus find extensions
export NAUTILUS_EXTENSION_DIR=${config.system.path}/lib/nautilus/extensions-3.0/
@ -120,6 +118,9 @@ in {
# Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
${pkgs.xdg-user-dirs}/bin/xdg-user-dirs-update
# Find the mouse
export XCURSOR_PATH=~/.icons:${config.system.path}/share/icons
${gnome3.gnome_session}/bin/gnome-session&
waitPID=$!
'';
@ -128,52 +129,15 @@ in {
environment.variables.GIO_EXTRA_MODULES = [ "${gnome3.dconf}/lib/gio/modules"
"${gnome3.glib_networking}/lib/gio/modules"
"${gnome3.gvfs}/lib/gio/modules" ];
environment.systemPackages =
[ pkgs.desktop_file_utils
gnome3.glib_networking
gnome3.gtk3 # for gtk-update-icon-cache
pkgs.ibus
pkgs.shared_mime_info # for update-mime-database
gnome3.gvfs
gnome3.dconf
gnome3.gnome-backgrounds
gnome3.gnome_control_center
gnome3.gnome_icon_theme
gnome3.gnome-menus
gnome3.gnome_settings_daemon
gnome3.gnome_shell
gnome3.gnome_themes_standard
] ++ cfg.sessionPath ++ (removePackagesByName [
gnome3.baobab
gnome3.empathy
gnome3.eog
gnome3.epiphany
gnome3.evince
gnome3.gucharmap
gnome3.nautilus
gnome3.totem
gnome3.vino
gnome3.yelp
gnome3.gnome-calculator
gnome3.gnome-contacts
gnome3.gnome-font-viewer
gnome3.gnome-screenshot
gnome3.gnome-shell-extensions
gnome3.gnome-system-log
gnome3.gnome-system-monitor
gnome3.gnome_terminal
gnome3.gnome-user-docs
environment.systemPackages = gnome3.corePackages ++ cfg.sessionPath
++ (removePackagesByName gnome3.optionalPackages config.environment.gnome3.excludePackages);
gnome3.bijiben
gnome3.evolution
gnome3.file-roller
gnome3.gedit
gnome3.gnome-clocks
gnome3.gnome-music
gnome3.gnome-tweak-tool
gnome3.gnome-photos
gnome3.nautilus-sendto
] config.environment.gnome3.excludePackages);
# Use the correct gnome3 packageSet
networking.networkmanager.basePackages =
{ inherit (pkgs) networkmanager modemmanager wpa_supplicant;
inherit (gnome3) networkmanager_openvpn networkmanager_vpnc
networkmanager_openconnect networkmanager_pptp
networkmanager_l2tp; };
# Needed for themes and backgrounds
environment.pathsToLink = [ "/share" ];

View File

@ -76,7 +76,7 @@ in
services.xserver.desktopManager.session = singleton {
name = "kde5";
bgSupport = true;
start = ''exec ${plasma5.startkde}/bin/startkde;'';
start = ''exec ${plasma5.plasma-workspace}/bin/startkde;'';
};
security.setuidOwners = singleton {

View File

@ -58,14 +58,14 @@ in
# Find the mouse
XCURSOR_PATH = "~/.icons:${config.system.path}/share/icons";
};
execCmd = "exec ${gdm}/sbin/gdm";
execCmd = "exec ${gdm}/bin/gdm";
};
# Because sd_login_monitor_new requires /run/systemd/machines
systemd.services.display-manager.wants = [ "systemd-machined.service" ];
systemd.services.display-manager.after = [ "systemd-machined.service" ];
systemd.services.display-manager.path = [ gnome3.gnome_shell gnome3.caribou ];
systemd.services.display-manager.path = [ gnome3.gnome_shell gnome3.caribou pkgs.xlibs.xhost pkgs.dbus_tools ];
services.dbus.packages = [ gdm ];

View File

@ -19,7 +19,7 @@ let
'';
theme = pkgs.gnome3.gnome_themes_standard;
icons = pkgs.gnome3.gnome_icon_theme;
icons = pkgs.gnome3.defaultIconTheme;
# The default greeter provided with this expression is the GTK greeter.
# Again, we need a few things in the environment for the greeter to run with

View File

@ -60,22 +60,26 @@ addEntry() {
fi
local kernel=$(readlink -f $path/kernel)
# local initrd=$(readlink -f $path/initrd)
local initrd=$(readlink -f $path/initrd)
if test -n "@copyKernels@"; then
copyToKernelsDir $kernel; kernel=$result
# copyToKernelsDir $initrd; initrd=$result
copyToKernelsDir $initrd; initrd=$result
fi
echo $(readlink -f $path) > $outdir/$generation-system
echo $(readlink -f $path/init) > $outdir/$generation-init
cp $path/kernel-params $outdir/$generation-cmdline.txt
# echo $initrd > $outdir/$generation-initrd
echo $initrd > $outdir/$generation-initrd
echo $kernel > $outdir/$generation-kernel
if test $(readlink -f "$path") = "$default"; then
copyForced $kernel /boot/kernel.img
# copyForced $initrd /boot/initrd
if [ @version@ -eq 1 ]; then
copyForced $kernel /boot/kernel.img
else
copyForced $kernel /boot/kernel7.img
fi
copyForced $initrd /boot/initrd
cp "$(readlink -f "$path/init")" /boot/nixos-init
echo "`cat $path/kernel-params` init=$path/init" >/boot/cmdline.txt
@ -98,8 +102,11 @@ fwdir=@firmware@/share/raspberrypi/boot/
copyForced $fwdir/bootcode.bin /boot/bootcode.bin
copyForced $fwdir/fixup.dat /boot/fixup.dat
copyForced $fwdir/fixup_cd.dat /boot/fixup_cd.dat
copyForced $fwdir/fixup_db.dat /boot/fixup_db.dat
copyForced $fwdir/start.elf /boot/start.elf
copyForced $fwdir/start_cd.elf /boot/start_cd.elf
copyForced $fwdir/start_db.elf /boot/start_db.elf
copyForced $fwdir/start_x.elf /boot/start_x.elf
# Remove obsolete files from /boot/old.
for fn in /boot/old/*linux* /boot/old/*initrd*; do

View File

@ -3,6 +3,7 @@
with lib;
let
cfg = config.boot.loader.raspberryPi;
builder = pkgs.substituteAll {
src = ./builder.sh;
@ -10,6 +11,7 @@ let
inherit (pkgs) bash;
path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
firmware = pkgs.raspberrypifw;
version = cfg.version;
};
platform = pkgs.stdenv.platform;
@ -29,11 +31,23 @@ in
'';
};
boot.loader.raspberryPi.version = mkOption {
default = 2;
type = types.int;
description = ''
'';
};
};
config = mkIf config.boot.loader.raspberryPi.enable {
system.build.installBootLoader = builder;
system.boot.loader.id = "raspberrypi";
system.boot.loader.kernelFile = platform.kernelTarget;
assertions = [
{ assertion = (cfg.version == 1 || cfg.version == 2);
message = "loader.raspberryPi.version should be 1 or 2";
}
];
};
}

View File

@ -286,8 +286,8 @@ in
type = types.bool;
description = ''
Whether to allow TRIM requests to the underlying device. This option
has security implications, please read the LUKS documentation before
activating in.
has security implications; please read the LUKS documentation before
activating it.
'';
};
@ -303,43 +303,43 @@ in
twoFactor = mkOption {
default = true;
type = types.bool;
description = "Whether to use a passphrase and a Yubikey (true), or only a Yubikey (false)";
description = "Whether to use a passphrase and a Yubikey (true), or only a Yubikey (false).";
};
slot = mkOption {
default = 2;
type = types.int;
description = "Which slot on the Yubikey to challenge";
description = "Which slot on the Yubikey to challenge.";
};
saltLength = mkOption {
default = 16;
type = types.int;
description = "Length of the new salt in byte (64 is the effective maximum)";
description = "Length of the new salt in byte (64 is the effective maximum).";
};
keyLength = mkOption {
default = 64;
type = types.int;
description = "Length of the LUKS slot key derived with PBKDF2 in byte";
description = "Length of the LUKS slot key derived with PBKDF2 in byte.";
};
iterationStep = mkOption {
default = 0;
type = types.int;
description = "How much the iteration count for PBKDF2 is increased at each successful authentication";
description = "How much the iteration count for PBKDF2 is increased at each successful authentication.";
};
gracePeriod = mkOption {
default = 2;
type = types.int;
description = "Time in seconds to wait before attempting to find the Yubikey";
description = "Time in seconds to wait before attempting to find the Yubikey.";
};
ramfsMountPoint = mkOption {
default = "/crypt-ramfs";
type = types.string;
description = "Path where the ramfs used to update the LUKS key will be mounted in stage-1";
description = "Path where the ramfs used to update the LUKS key will be mounted during early boot.";
};
/* TODO: Add to the documentation of the current module:
@ -359,13 +359,13 @@ in
fsType = mkOption {
default = "vfat";
type = types.string;
description = "The filesystem of the unencrypted device";
description = "The filesystem of the unencrypted device.";
};
mountPoint = mkOption {
default = "/crypt-storage";
type = types.string;
description = "Path where the unencrypted device will be mounted in stage-1";
description = "Path where the unencrypted device will be mounted during early boot.";
};
path = mkOption {
@ -419,10 +419,10 @@ in
mkdir -p $out/etc/ssl
cp -pdv ${pkgs.openssl}/etc/ssl/openssl.cnf $out/etc/ssl
cat > $out/bin/openssl-wrap <<EOF
#!$out/bin/sh
EOF
chmod +x $out/bin/openssl-wrap
cat > $out/bin/openssl-wrap <<EOF
#!$out/bin/sh
EOF
chmod +x $out/bin/openssl-wrap
''}
'';
@ -432,10 +432,10 @@ EOF
$out/bin/ykchalresp -V
$out/bin/ykinfo -V
cat > $out/bin/openssl-wrap <<EOF
#!$out/bin/sh
export OPENSSL_CONF=$out/etc/ssl/openssl.cnf
$out/bin/openssl "\$@"
EOF
#!$out/bin/sh
export OPENSSL_CONF=$out/etc/ssl/openssl.cnf
$out/bin/openssl "\$@"
EOF
$out/bin/openssl-wrap version
''}
'';

View File

@ -132,7 +132,7 @@ let
commonNetworkOptions = {
enable = mkOption {
default = false;
default = true;
type = types.bool;
description = ''
Whether to manage network configuration using <command>systemd-network</command>.
@ -482,6 +482,11 @@ let
};
};
commonMatchText = def: ''
[Match]
${attrsToSection def.matchConfig}
'';
linkToUnit = name: def:
{ inherit (def) enable;
text = commonMatchText def +

View File

@ -25,6 +25,69 @@ rec {
ln -s /dev/null $out/${shellEscape name}
'';
boolValues = [true false "yes" "no"];
digits = map toString (range 0 9);
isByteFormat = s:
let
l = reverseList (stringToCharacters s);
suffix = head l;
nums = tail l;
in elem suffix (["K" "M" "G" "T"] ++ digits)
&& all (num: elem num digits) nums;
assertByteFormat = name: group: attr:
optional (attr ? ${name} && ! isByteFormat attr.${name})
"Systemd ${group} field `${name}' must be in byte format [0-9]+[KMGT].";
hexChars = stringToCharacters "0123456789abcdefABCDEF";
isMacAddress = s: stringLength s == 17
&& flip all (splitString ":" s) (bytes:
all (byte: elem byte hexChars) (stringToCharacters bytes)
);
assertMacAddress = name: group: attr:
optional (attr ? ${name} && ! isMacAddress attr.${name})
"Systemd ${group} field `${name}' must be a valid mac address.";
assertValueOneOf = name: values: group: attr:
optional (attr ? ${name} && !elem attr.${name} values)
"Systemd ${group} field `${name}' cannot have value `${attr.${name}}'.";
assertHasField = name: group: attr:
optional (!(attr ? ${name}))
"Systemd ${group} field `${name}' must exist.";
assertRange = name: min: max: group: attr:
optional (attr ? ${name} && !(min <= attr.${name} && max >= attr.${name}))
"Systemd ${group} field `${name}' is outside the range [${toString min},${toString max}]";
assertOnlyFields = fields: group: attr:
let badFields = filter (name: ! elem name fields) (attrNames attr); in
optional (badFields != [ ])
"Systemd ${group} has extra fields [${concatStringsSep " " badFields}].";
checkUnitConfig = group: checks: v:
let errors = concatMap (c: c group v) checks; in
if errors == [] then true
else builtins.trace (concatStringsSep "\n" errors) false;
toOption = x:
if x == true then "true"
else if x == false then "false"
else toString x;
attrsToSection = as:
concatStrings (concatLists (mapAttrsToList (name: value:
map (x: ''
${name}=${toOption x}
'')
(if isList value then value else [value]))
as));
generateUnits = type: units: upstreamUnits: upstreamWants:
pkgs.runCommand "${type}-units" { preferLocalBuild = true; } ''
mkdir -p $out

View File

@ -1,58 +1,9 @@
{ config, lib }:
with lib;
with import ./systemd-lib.nix { inherit config lib pkgs; };
let
boolValues = [true false "yes" "no"];
assertValueOneOf = name: values: group: attr:
optional (attr ? ${name} && !elem attr.${name} values)
"Systemd ${group} field `${name}' cannot have value `${attr.${name}}'.";
assertHasField = name: group: attr:
optional (!(attr ? ${name}))
"Systemd ${group} field `${name}' must exist.";
assertOnlyFields = fields: group: attr:
let badFields = filter (name: ! elem name fields) (attrNames attr); in
optional (badFields != [ ])
"Systemd ${group} has extra fields [${concatStringsSep " " badFields}].";
assertRange = name: min: max: group: attr:
optional (attr ? ${name} && !(min <= attr.${name} && max >= attr.${name}))
"Systemd ${group} field `${name}' is outside the range [${toString min},${toString max}]";
digits = map toString (range 0 9);
isByteFormat = s:
let
l = reverseList (stringToCharacters s);
suffix = head l;
nums = tail l;
in elem suffix (["K" "M" "G" "T"] ++ digits)
&& all (num: elem num digits) nums;
assertByteFormat = name: group: attr:
optional (attr ? ${name} && ! isByteFormat attr.${name})
"Systemd ${group} field `${name}' must be in byte format [0-9]+[KMGT].";
hexChars = stringToCharacters "0123456789abcdefABCDEF";
isMacAddress = s: stringLength s == 17
&& flip all (splitString ":" s) (bytes:
all (byte: elem byte hexChars) (stringToCharacters bytes)
);
assertMacAddress = name: group: attr:
optional (attr ? ${name} && ! isMacAddress attr.${name})
"Systemd ${group} field `${name}' must be a valid mac address.";
checkUnitConfig = group: checks: v:
let errors = concatMap (c: c group v) checks; in
if errors == [] then true
else builtins.trace (concatStringsSep "\n" errors) false;
checkService = checkUnitConfig "Service" [
(assertValueOneOf "Type" [
"simple" "forking" "oneshot" "dbus" "notify" "idle"

View File

@ -276,19 +276,6 @@ let
};
};
toOption = x:
if x == true then "true"
else if x == false then "false"
else toString x;
attrsToSection = as:
concatStrings (concatLists (mapAttrsToList (name: value:
map (x: ''
${name}=${toOption x}
'')
(if isList value then value else [value]))
as));
commonUnitText = def: ''
[Unit]
${attrsToSection def.unitConfig}
@ -369,11 +356,6 @@ let
'';
};
commonMatchText = def: ''
[Match]
${attrsToSection def.matchConfig}
'';
in
{
@ -754,10 +736,18 @@ in
${concatStringsSep "\n" cfg.tmpfiles.rules}
'';
# Some overrides to upstream units.
systemd.services."systemd-backlight@".restartIfChanged = false;
systemd.services."systemd-rfkill@".restartIfChanged = false;
systemd.services."user@".restartIfChanged = false;
systemd.services.systemd-remount-fs.restartIfChanged = false;
systemd.services.systemd-journal-flush.restartIfChanged = false;
systemd.services.systemd-journald.restartIfChanged = false; # FIXME: shouldn't be necessary with systemd 219
systemd.services.systemd-random-seed.restartIfChanged = false;
systemd.services.systemd-remount-fs.restartIfChanged = false;
systemd.services.systemd-update-utmp.restartIfChanged = false;
systemd.services.systemd-user-sessions.restartIfChanged = false; # Restart kills all active sessions.
systemd.targets.local-fs.unitConfig.X-StopOnReconfiguration = true;
systemd.targets.remote-fs.unitConfig.X-StopOnReconfiguration = true;
};

View File

@ -0,0 +1,61 @@
{ config, lib, pkgs, ... }:
with lib;
{
imports = [ ../profiles/headless.nix ];
boot.kernelParams = [ "console=ttyS0" "earlyprintk=ttyS0" "rootdelay=300" "panic=1" "boot.panic_on_fail" ];
boot.initrd.kernelModules = [ "hv_vmbus" "hv_netvsc" "hv_utils" "hv_storvsc" ];
# Generate a GRUB menu.
boot.loader.grub.device = "/dev/sda";
boot.loader.grub.version = 2;
boot.loader.grub.timeout = 0;
# Don't put old configurations in the GRUB menu. The user has no
# way to select them anyway.
boot.loader.grub.configurationLimit = 0;
fileSystems."/".device = "/dev/disk/by-label/nixos";
# Allow root logins only using the SSH key that the user specified
# at instance creation time, ping client connections to avoid timeouts
services.openssh.enable = true;
services.openssh.permitRootLogin = "without-password";
services.openssh.extraConfig = ''
ClientAliveInterval 180
'';
# Force getting the hostname from Azure
networking.hostName = mkDefault "";
# Always include cryptsetup so that NixOps can use it.
# sg_scan is needed to finalize disk removal on older kernels
environment.systemPackages = [ pkgs.cryptsetup pkgs.sg3_utils ];
networking.usePredictableInterfaceNames = false;
services.udev.extraRules = ''
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:0", ATTR{removable}=="0", SYMLINK+="disk/by-lun/0",
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:1", ATTR{removable}=="0", SYMLINK+="disk/by-lun/1",
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:2", ATTR{removable}=="0", SYMLINK+="disk/by-lun/2"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:3", ATTR{removable}=="0", SYMLINK+="disk/by-lun/3"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:4", ATTR{removable}=="0", SYMLINK+="disk/by-lun/4"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:5", ATTR{removable}=="0", SYMLINK+="disk/by-lun/5"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:6", ATTR{removable}=="0", SYMLINK+="disk/by-lun/6"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:7", ATTR{removable}=="0", SYMLINK+="disk/by-lun/7"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:8", ATTR{removable}=="0", SYMLINK+="disk/by-lun/8"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:9", ATTR{removable}=="0", SYMLINK+="disk/by-lun/9"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:10", ATTR{removable}=="0", SYMLINK+="disk/by-lun/10"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:11", ATTR{removable}=="0", SYMLINK+="disk/by-lun/11"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:12", ATTR{removable}=="0", SYMLINK+="disk/by-lun/12"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:13", ATTR{removable}=="0", SYMLINK+="disk/by-lun/13"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:14", ATTR{removable}=="0", SYMLINK+="disk/by-lun/14"
ENV{DEVTYPE}=="disk", KERNEL!="sda" SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="?:0:0:15", ATTR{removable}=="0", SYMLINK+="disk/by-lun/15"
'';
}

View File

@ -5,8 +5,6 @@ let
diskSize = "4096";
in
{
imports = [ ../profiles/headless.nix ];
system.build.azureImage =
pkgs.vmTools.runInLinuxVM (
pkgs.runCommand "azure-image"
@ -24,7 +22,6 @@ in
postVM =
''
echo Converting
mkdir -p $out
${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -O vpc $diskImage $out/disk.vhd
rm $diskImage
@ -93,34 +90,11 @@ in
''
);
fileSystems."/".device = "/dev/disk/by-label/nixos";
imports = [ ./azure-common.nix ];
# Azure metadata is available as a CD-ROM drive.
fileSystems."/metadata".device = "/dev/sr0";
boot.kernelParams = [ "console=ttyS0" "earlyprintk=ttyS0" "rootdelay=300" "panic=1" "boot.panic_on_fail" ];
boot.initrd.kernelModules = [ "hv_vmbus" "hv_netvsc" "hv_utils" "hv_storvsc" ];
# Generate a GRUB menu.
boot.loader.grub.device = "/dev/sda";
boot.loader.grub.version = 2;
boot.loader.grub.timeout = 0;
# Don't put old configurations in the GRUB menu. The user has no
# way to select them anyway.
boot.loader.grub.configurationLimit = 0;
# Allow root logins only using the SSH key that the user specified
# at instance creation time.
services.openssh.enable = true;
services.openssh.permitRootLogin = "without-password";
# Force getting the hostname from Azure
networking.hostName = mkDefault "";
# Always include cryptsetup so that NixOps can use it.
environment.systemPackages = [ pkgs.cryptsetup ];
systemd.services.fetch-ssh-keys =
{ description = "Fetch host keys and authorized_keys for root user";
@ -157,8 +131,4 @@ in
serviceConfig.StandardOutput = "journal+console";
};
networking.usePredictableInterfaceNames = false;
#users.extraUsers.root.openssh.authorizedKeys.keys = [ (builtins.readFile <ssh-pub-key>) ];
}

View File

@ -35,8 +35,8 @@ with lib;
wget="wget -q --retry-connrefused -O -"
echo "setting host name..."
${optionalString (config.networking.hostName == "") ''
echo "setting host name..."
${pkgs.nettools}/bin/hostname $($wget http://169.254.169.254/1.0/meta-data/hostname)
''}
@ -69,9 +69,11 @@ with lib;
fi
${optionalString (! config.ec2.metadata) ''
# Since the user data is sensitive, prevent it from being
# accessed from now on.
ip route add blackhole 169.254.169.254/32
# Since the user data is sensitive, prevent it from
# being accessed from now on. FIXME: remove at some
# point, since current NixOps no longer relies on
# metadata secrecy.
ip route add blackhole 169.254.169.254/32
''}
'';

View File

@ -1,5 +1,5 @@
{ config, pkgs, modulesPath, ... }:
{ config, pkgs, ... }:
{
imports = [ "${modulesPath}/virtualisation/google-compute-image.nix" ];
imports = [ <nixpkgs/nixos/modules/virtualisation/google-compute-image.nix> ];
}

View File

@ -57,6 +57,17 @@ in
'';
};
virtualisation.libvirtd.extraOptions =
mkOption {
type = types.listOf types.str;
default = [ ];
example = [ "--verbose" ];
description =
''
Extra command line arguments passed to libvirtd on startup.
'';
};
virtualisation.libvirtd.onShutdown =
mkOption {
type = types.enum ["shutdown" "suspend" ];
@ -140,7 +151,7 @@ in
done
''; # */
serviceConfig.ExecStart = ''@${pkgs.libvirt}/sbin/libvirtd libvirtd --config "${configFile}" --daemon --verbose'';
serviceConfig.ExecStart = ''@${pkgs.libvirt}/sbin/libvirtd libvirtd --config "${configFile}" --daemon ${concatStringsSep " " cfg.extraOptions}'';
serviceConfig.Type = "forking";
serviceConfig.KillMode = "process"; # when stopping, leave the VMs alone

View File

@ -0,0 +1,47 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.vmwareGuest;
open-vm-tools = pkgs.open-vm-tools;
in
{
options = {
services.vmwareGuest.enable = mkEnableOption "Enable VMWare Guest Support";
};
config = mkIf cfg.enable {
assertions = [ {
assertion = pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64;
message = "VMWare guest is not currently supported on ${pkgs.stdenv.system}";
} ];
environment.systemPackages = [ open-vm-tools ];
systemd.services.vmware =
{ description = "VMWare Guest Service";
wantedBy = [ "multi-user.target" ];
serviceConfig.ExecStart = "${open-vm-tools}/bin/vmtoolsd";
};
services.xserver = {
videoDrivers = mkOverride 50 [ "vmware" ];
config = ''
Section "InputDevice"
Identifier "VMMouse"
Driver "vmmouse"
EndSection
'';
serverLayoutSection = ''
InputDevice "VMMouse"
'';
displayManager.sessionCommands = ''
${open-vm-tools}/bin/vmware-user-suid-wrapper
'';
};
};
}

View File

@ -1,10 +1,9 @@
{ pkgs, ... }:
{ lib, ... }:
{ users.extraUsers = pkgs.lib.singleton
{ users.extraUsers = lib.singleton
{ isNormalUser = true;
name = "alice";
description = "Alice Foobar";
password = "foobar";
uid = 1000;
};
}

View File

@ -9,6 +9,7 @@ import ./make-test.nix ({pkgs, ... }: {
{ config, pkgs, ... }:
{ services.printing.enable = true;
services.printing.listenAddresses = [ "*:631" ];
services.printing.defaultShared = true;
services.printing.extraConf =
''
<Location />
@ -33,6 +34,7 @@ import ./make-test.nix ({pkgs, ... }: {
# Make sure that cups is up on both sides.
$server->waitForUnit("cups.service");
$client->waitForUnit("cups.service");
$client->sleep(10); # wait until cups is fully initialized
$client->succeed("lpstat -r") =~ /scheduler is running/ or die;
$client->succeed("lpstat -H") =~ "/var/run/cups/cups.sock" or die;
$client->succeed("curl --fail http://localhost:631/");
@ -48,7 +50,7 @@ import ./make-test.nix ({pkgs, ... }: {
# Do some status checks.
$client->succeed("lpstat -a") =~ /DeskjetRemote accepting requests/ or die;
$client->succeed("lpstat -h server -a") =~ /DeskjetLocal accepting requests/ or die;
$client->succeed("lpstat -h server:631 -a") =~ /DeskjetLocal accepting requests/ or die;
$client->succeed("cupsdisable DeskjetRemote");
$client->succeed("lpq") =~ /DeskjetRemote is not ready.*no entries/s or die;
$client->succeed("cupsenable DeskjetRemote");
@ -66,6 +68,7 @@ import ./make-test.nix ({pkgs, ... }: {
# Print the file on the client.
$client->succeed("lp $file");
$client->sleep(10);
$client->succeed("lpq") =~ /active.*root.*$fn/ or die;
# Ensure that a raw PCL file appeared in the server's queue
@ -73,11 +76,13 @@ import ./make-test.nix ({pkgs, ... }: {
# course, since there is no actual USB printer attached, the
# file will stay in the queue forever.
$server->waitForFile("/var/spool/cups/d00001-001");
$server->sleep(10);
$server->succeed("lpq -a") =~ /$fn/ or die;
# Delete the job on the client. It should disappear on the
# server as well.
$client->succeed("lprm");
$client->sleep(10);
$client->succeed("lpq -a") =~ /no entries/;
Machine::retry sub {
return 1 if $server->succeed("lpq -a") =~ /no entries/;

View File

@ -6,13 +6,14 @@ with stdenv.lib;
stdenv.mkDerivation rec{
name = "bitcoin" + (toString (optional (!withGui) "d")) + "-" + version;
version = "0.10.0";
core_version = "0.10.1";
version = core_version;
src = fetchurl {
url = [ "https://bitcoin.org/bin/bitcoin-core-0.10.0/bitcoin-${version}.tar.gz"
"mirror://sourceforge/bitcoin/Bitcoin/bitcoin-0.10.0/bitcoin-${version}.tar.gz"
url = [ "https://bitcoin.org/bin/bitcoin-core-${core_version}/bitcoin-${version}.tar.gz"
"mirror://sourceforge/bitcoin/Bitcoin/bitcoin-${core_version}/bitcoin-${version}.tar.gz"
];
sha256 = "a516cf6d9f58a117607148405334b35d3178df1ba1c59229609d2bcd08d30624";
sha256 = "287873f9ba4fd49cd4e4be7eba070d2606878f1690c5be0273164d37cbf3c138";
};
buildInputs = [ pkgconfig autoreconfHook openssl db48 boost zlib

View File

@ -1,4 +1,4 @@
{ fetchurl, stdenv, pkgconfig
{ fetchzip, stdenv, pkgconfig
, openssl, db48, boost, zlib, miniupnpc, qt4, qrencode, glib, protobuf
, utillinux
, withGui }:
@ -9,9 +9,9 @@ stdenv.mkDerivation rec {
name = "darkcoin" + (toString (optional (!withGui) "d")) + "-" + version;
version = "0.10.99.99";
src = fetchurl {
src = fetchzip {
url = "https://github.com/darkcoin/darkcoin/archive/v${version}.tar.gz";
sha256 = "1a05a7l878klg4wqk9ykndkhyknrd7jp75v38k99qgk5fi8wa752";
sha256 = "0sigvimqwc1mvaq43a8c2aq7fjla2ncafrals08qfq3jd6in8b4f";
};
buildInputs = [ pkgconfig glib openssl db48 boost zlib miniupnpc ]

View File

@ -0,0 +1,94 @@
{ stdenv, fetchgit, alsaLib, aubio, boost, cairomm, curl, fftw
, fftwSinglePrec, flac, glibc, glibmm, gtk, gtkmm, jack2
, libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg, librdf
, librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile
, libusb, libuuid, libxml2, libxslt, lilv, lv2, makeWrapper, pango
, perl, pkgconfig, python, serd, sord, sratom, suil }:
let
# Ardour git repo uses a mix of annotated and lightweight tags. Annotated
# tags are used for MAJOR.MINOR versioning, and lightweight tags are used
# in-between; MAJOR.MINOR.REV where REV is the number of commits since the
# last annotated tag. A slightly different version string format is needed
# for the 'revision' info that is built into the binary; it is the format of
# "git describe" when _not_ on an annotated tag(!): MAJOR.MINOR-REV-HASH.
# Version to build.
tag = "3.5.403";
# Version info that is built into the binary. Keep in sync with 'tag'. The
# last 8 digits is a (fake) commit id.
revision = "3.5-403-00000000";
in
stdenv.mkDerivation rec {
name = "ardour-${tag}";
src = fetchgit {
url = git://git.ardour.org/ardour/ardour.git;
rev = "refs/tags/${tag}";
sha256 = "0k1z8sbjf88dqn12kf9cykrqj38vkr879n2g6b4adk6cghn8wz3x";
};
buildInputs =
[ alsaLib aubio boost cairomm curl fftw fftwSinglePrec flac glibc
glibmm gtk gtkmm jack2 libgnomecanvas libgnomecanvasmm liblo
libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate
libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv lv2
makeWrapper pango perl pkgconfig python serd sord sratom suil
];
patchPhase = ''
printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${revision}\"; }\n' > libs/ardour/revision.cc
sed 's|/usr/include/libintl.h|${glibc}/include/libintl.h|' -i wscript
sed -e 's|^#!/usr/bin/perl.*$|#!${perl}/bin/perl|g' -i tools/fmt-bindings
sed -e 's|^#!/usr/bin/env.*$|#!${perl}/bin/perl|g' -i tools/*.pl
'';
configurePhase = "python waf configure --optimize --prefix=$out";
buildPhase = "python waf";
# For the custom ardour clearlooks gtk-engine to work, it must be
# moved to a directory called "engines" and added to GTK_PATH
installPhase = ''
python waf install
mkdir -pv $out/gtk2/engines
cp build/libs/clearlooks-newer/libclearlooks.so $out/gtk2/engines/
wrapProgram $out/bin/ardour3 --prefix GTK_PATH : $out/gtk2
# Install desktop file
mkdir -p "$out/share/applications"
cat > "$out/share/applications/ardour.desktop" << EOF
[Desktop Entry]
Name=Ardour 3
GenericName=Digital Audio Workstation
Comment=Multitrack harddisk recorder
Exec=$out/bin/ardour3
Icon=$out/share/ardour3/icons/ardour_icon_256px.png
Terminal=false
Type=Application
X-MultipleArgs=false
Categories=GTK;Audio;AudioVideoEditing;AudioVideo;Video;
EOF
'';
meta = with stdenv.lib; {
description = "Multi-track hard disk recording software";
longDescription = ''
Ardour is a digital audio workstation (DAW), You can use it to
record, edit and mix multi-track audio and midi. Produce your
own CDs. Mix video soundtracks. Experiment with new ideas about
music and sound.
Please consider supporting the ardour project financially:
https://community.ardour.org/node/8288
'';
homepage = http://ardour.org/;
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = [ maintainers.goibhniu ];
};
}

View File

@ -1,9 +1,11 @@
{ stdenv, fetchgit, alsaLib, aubio, boost, cairomm, curl, fftw
{ stdenv, fetchgit, alsaLib, aubio, boost, cairomm, curl, dbus, fftw
, fftwSinglePrec, flac, glibc, glibmm, gtk, gtkmm, jack2
, libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg, librdf
, librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile
, libusb, libuuid, libxml2, libxslt, lilv, lv2, makeWrapper, pango
, perl, pkgconfig, python, serd, sord, sratom, suil }:
, perl, pkgconfig, python, rubberband, serd, sord, sratom, suil, taglib
, vampSDK
}:
let
@ -15,11 +17,11 @@ let
# "git describe" when _not_ on an annotated tag(!): MAJOR.MINOR-REV-HASH.
# Version to build.
tag = "3.5.403";
tag = "4.0";
# Version info that is built into the binary. Keep in sync with 'tag'. The
# last 8 digits is a (fake) commit id.
revision = "3.5-403-00000000";
revision = "4.0-e1aa66cb3f";
in
@ -28,17 +30,18 @@ stdenv.mkDerivation rec {
src = fetchgit {
url = git://git.ardour.org/ardour/ardour.git;
rev = "refs/tags/${tag}";
sha256 = "0k1z8sbjf88dqn12kf9cykrqj38vkr879n2g6b4adk6cghn8wz3x";
rev = "e1aa66cb3f";
sha256 = "396668fb9116a68f5079f0d880930e890fd0cdf7ee5f3b97fcf44b88cf840b4c";
};
buildInputs =
[ alsaLib aubio boost cairomm curl fftw fftwSinglePrec flac glibc
glibmm gtk gtkmm jack2 libgnomecanvas libgnomecanvasmm liblo
libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate
libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv lv2
makeWrapper pango perl pkgconfig python serd sord sratom suil
];
buildInputs = [
alsaLib aubio boost cairomm curl dbus fftw fftwSinglePrec flac
glibc glibmm gtk gtkmm jack2 libgnomecanvas libgnomecanvasmm liblo
libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate
libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv lv2
makeWrapper pango perl pkgconfig python rubberband serd sord
sratom suil taglib vampSDK
];
patchPhase = ''
printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${revision}\"; }\n' > libs/ardour/revision.cc
@ -47,7 +50,7 @@ stdenv.mkDerivation rec {
sed -e 's|^#!/usr/bin/env.*$|#!${perl}/bin/perl|g' -i tools/*.pl
'';
configurePhase = "python waf configure --optimize --prefix=$out";
configurePhase = "python waf configure --with-backend=alsa,jack --optimize --prefix=$out";
buildPhase = "python waf";
@ -57,17 +60,17 @@ stdenv.mkDerivation rec {
python waf install
mkdir -pv $out/gtk2/engines
cp build/libs/clearlooks-newer/libclearlooks.so $out/gtk2/engines/
wrapProgram $out/bin/ardour3 --prefix GTK_PATH : $out/gtk2
wrapProgram $out/bin/ardour4 --prefix GTK_PATH : $out/gtk2
# Install desktop file
mkdir -p "$out/share/applications"
cat > "$out/share/applications/ardour.desktop" << EOF
[Desktop Entry]
Name=Ardour 3
Name=Ardour 4
GenericName=Digital Audio Workstation
Comment=Multitrack harddisk recorder
Exec=$out/bin/ardour3
Icon=$out/share/ardour3/icons/ardour_icon_256px.png
Exec=$out/bin/ardour4
Icon=$out/share/ardour4/icons/ardour_icon_256px.png
Terminal=false
Type=Application
X-MultipleArgs=false
@ -78,7 +81,13 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
description = "Multi-track hard disk recording software";
longDescription = ''
Also read "The importance of Paying Something" on their homepage, please!
Ardour is a digital audio workstation (DAW), You can use it to
record, edit and mix multi-track audio and midi. Produce your
own CDs. Mix video soundtracks. Experiment with new ideas about
music and sound.
Please consider supporting the ardour project financially:
https://community.ardour.org/node/8288
'';
homepage = http://ardour.org/;
license = licenses.gpl2;

View File

@ -0,0 +1,22 @@
{ stdenv, fetchgit, cairomm, cmake, jack2, libpthreadstubs, libXdmcp, libxshmfence, libsndfile, lv2, ntk, pkgconfig }:
stdenv.mkDerivation rec {
name = "artyFX-git-${version}";
version = "2015-05-07";
src = fetchgit {
url = "https://github.com/harryhaaren/openAV-ArtyFX.git";
rev = "3a8cb9a5e4ffaf27a497a31cc9cd6f2e79622d5b";
sha256 = "2e3f6ab6f829c0ec177e85f4e419286616cf35fb7303445caa09d3438cac27d5";
};
buildInputs = [ cairomm cmake jack2 libpthreadstubs libXdmcp libxshmfence libsndfile lv2 ntk pkgconfig ];
meta = with stdenv.lib; {
homepage = http://openavproductions.com/artyfx/;
description = "A LV2 plugin bundle of artistic realtime effects";
license = licenses.gpl2;
maintainers = [ maintainers.magnetophon ];
platforms = platforms.linux;
};
}

View File

@ -57,7 +57,7 @@ stdenv.mkDerivation rec {
buildInputs =
[ cmake ]
++ stdenv.lib.optional withQt4 qt4
++ stdenv.lib.optional withQt5 qt5
++ stdenv.lib.optionals withQt5 (with qt5; [ base svg tools ])
++ stdenv.lib.optional withKDE4 kde4.kdelibs
++ stdenv.lib.optionals withTaglib [ taglib taglib_extras ]
++ stdenv.lib.optionals withReplaygain [ ffmpeg speex mpg123 ]

View File

@ -2,14 +2,25 @@
stdenv.mkDerivation rec {
name = "cdparanoia-III-10.2";
src = fetchurl {
url = "http://downloads.xiph.org/releases/cdparanoia/${name}.src.tgz";
sha256 = "1pv4zrajm46za0f6lv162iqffih57a8ly4pc69f7y0gfyigb8p80";
};
preConfigure = "unset CC";
patches = stdenv.lib.optionals stdenv.isDarwin [
(fetchurl {
url = "https://trac.macports.org/export/70964/trunk/dports/audio/cdparanoia/files/osx_interface.patch";
sha1 = "c86e573f51e6d58d5f349b22802a7a7eeece9fcd";
})
(fetchurl {
url = "https://trac.macports.org/export/70964/trunk/dports/audio/cdparanoia/files/patch-paranoia_paranoia.c.10.4.diff";
sha1 = "d7dc121374df3b82e82adf544df7bf1eec377bdb";
})
];
meta = {
homepage = http://xiph.org/paranoia;
description = "A tool and library for reading digital audio from CDs";

View File

@ -0,0 +1,36 @@
From ec580cb815c16ec1ab43a469d5af7d51d8d03082 Mon Sep 17 00:00:00 2001
From: Chocobozzz <florian.chocobo@gmail.com>
Date: Wed, 16 Jul 2014 15:57:25 +0200
Subject: [PATCH] No namespaces for DBus interfaces. Fixes #4401
---
src/CMakeLists.txt | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 650fa74..775b0a5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -892,11 +892,6 @@ optional_source(LINUX SOURCES widgets/osd_x11.cpp)
if(HAVE_DBUS)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/dbus)
- # Hack to get it to generate interfaces without namespaces - required
- # because otherwise org::freedesktop::UDisks and
- # org::freedesktop::UDisks::Device conflict.
- list(APPEND QT_DBUSXML2CPP_EXECUTABLE -N)
-
# MPRIS DBUS interfaces
qt4_add_dbus_adaptor(SOURCES
dbus/org.freedesktop.MediaPlayer.player.xml
@@ -964,6 +959,10 @@ if(HAVE_DBUS)
# DeviceKit DBUS interfaces
if(HAVE_DEVICEKIT)
+ set_source_files_properties(dbus/org.freedesktop.UDisks.xml
+ PROPERTIES NO_NAMESPACE dbus/udisks)
+ set_source_files_properties(dbus/org.freedesktop.UDisks.Device.xml
+ PROPERTIES NO_NAMESPACE dbus/udisksdevice)
qt4_add_dbus_interface(SOURCES
dbus/org.freedesktop.UDisks.xml
dbus/udisks)

View File

@ -0,0 +1,25 @@
From d9ebe7ec09a48b1ea505ccc33686b72642f083f4 Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
Date: Mon, 4 May 2015 19:59:38 -0500
Subject: [PATCH] Runtime selection of Spotify blob
---
src/internet/spotifyservice.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/internet/spotifyservice.cpp b/src/internet/spotifyservice.cpp
index 543744e..d987a36 100644
--- a/src/internet/spotifyservice.cpp
+++ b/src/internet/spotifyservice.cpp
@@ -65,7 +65,7 @@ SpotifyService::SpotifyService(Application* app, InternetModel* parent)
system_blob_path_ = QCoreApplication::applicationDirPath() +
"/../PlugIns/clementine-spotifyblob";
#else
- system_blob_path_ = QCoreApplication::applicationDirPath() +
+ system_blob_path_ = qgetenv("CLEMENTINE_SPOTIFYBLOB") +
"/clementine-spotifyblob" CMAKE_EXECUTABLE_SUFFIX;
#endif
--
2.3.6

View File

@ -1,20 +1,25 @@
{ stdenv, fetchurl, boost, cmake, gettext, gstreamer, gst_plugins_base
, gst_plugins_good, gst_plugins_bad, gst_plugins_ugly, gst_ffmpeg
, liblastfm, qt4, taglib, fftw, glew, qjson, sqlite, libgpod, libplist
, usbmuxd, libmtp, gvfs, libcdio, protobuf, libspotify, qca2, pkgconfig
, sparsehash, config, makeWrapper }:
, usbmuxd, libmtp, gvfs, libcdio, libspotify, protobuf, qca2, pkgconfig
, sparsehash, config, makeWrapper, runCommand, gst_plugins }:
let withSpotify = config.clementine.spotify or false;
in
stdenv.mkDerivation {
name = "clementine-1.2.3";
let
withSpotify = config.clementine.spotify or false;
version = "1.2.3";
exeName = "clementine";
src = fetchurl {
url = https://github.com/clementine-player/Clementine/archive/1.2.3.tar.gz;
sha256 = "1gx1109i4pylz6x7gvp4rdzc6dvh0w6in6hfbygw01d08l26bxbx";
};
patches = [ ./clementine-1.2.1-include-paths.patch ];
patches = [
./clementine-1.2.1-include-paths.patch
./clementine-dbus-namespace.patch
./clementine-spotify-blob.patch
];
buildInputs = [
boost
@ -23,9 +28,6 @@ stdenv.mkDerivation {
gettext
glew
gst_plugins_base
gst_plugins_good
gst_plugins_ugly
gst_ffmpeg
gstreamer
gvfs
libcdio
@ -33,7 +35,6 @@ stdenv.mkDerivation {
liblastfm
libmtp
libplist
makeWrapper
pkgconfig
protobuf
qca2
@ -43,22 +44,77 @@ stdenv.mkDerivation {
sqlite
taglib
usbmuxd
] ++ stdenv.lib.optional withSpotify libspotify;
];
enableParallelBuilding = true;
free = stdenv.mkDerivation {
name = "clementine-free-${version}";
inherit patches src buildInputs;
enableParallelBuilding = true;
meta = with stdenv.lib; {
homepage = "http://www.clementine-player.org";
description = "A multiplatform music player";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = [ maintainers.ttuegel ];
};
};
postInstall = ''
wrapProgram $out/bin/clementine \
--set GST_PLUGIN_SYSTEM_PATH "$GST_PLUGIN_SYSTEM_PATH"
'';
# Spotify blob for Clementine
blob = stdenv.mkDerivation {
name = "clementine-blob-${version}";
# Use the same patches and sources as Clementine
inherit patches src;
buildInputs = buildInputs ++ [ libspotify ];
# Only build and install the Spotify blob
preBuild = ''
cd ext/clementine-spotifyblob
'';
postInstall = ''
mkdir -p $out/libexec/clementine
mv $out/bin/clementine-spotifyblob $out/libexec/clementine
rmdir $out/bin
'';
enableParallelBuilding = true;
meta = with stdenv.lib; {
homepage = "http://www.clementine-player.org";
description = "Spotify integration for Clementine";
# The blob itself is Apache-licensed, although libspotify is unfree.
license = licenses.asl20;
platforms = platforms.linux;
maintainers = [ maintainers.ttuegel ];
};
};
meta = with stdenv.lib; {
in
with stdenv.lib;
runCommand "clementine-${version}"
{
inherit blob free;
buildInputs = [ makeWrapper ] ++ gst_plugins; # for the setup-hooks
dontPatchELF = true;
dontStrip = true;
meta = {
homepage = "http://www.clementine-player.org";
description = "A multiplatform music player";
description = "A multiplatform music player"
+ " (" + (optionalString withSpotify "with Spotify, ")
+ "with gstreamer plugins: "
+ concatStrings (intersperse ", " (map (x: x.name) gst_plugins))
+ ")";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = [ maintainers.ttuegel ];
# libspotify is unfree
hydraPlatforms = optionals (!withSpotify) platforms.linux;
};
}
''
mkdir -p $out/bin
makeWrapper "$free/bin/${exeName}" "$out/bin/${exeName}" \
${optionalString withSpotify "--set CLEMENTINE_SPOTIFYBLOB \"$blob/libexec/clementine\""} \
--prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH"
mkdir -p $out/share
for dir in applications icons kde4; do
ln -s "$free/share/$dir" "$out/share/$dir"
done
''

View File

@ -0,0 +1,21 @@
{ stdenv, fetchFromGitHub, libsndfile, libsamplerate, liblo, jack2 }:
stdenv.mkDerivation rec {
name = "dirt-git";
src = fetchFromGitHub {
repo = "Dirt";
owner = "tidalcycles";
rev = "cfc5e85318defda7462192b5159103c823ce61f7";
sha256 = "1shbyp54q64g6bsl6hhch58k3z1dyyy9ph6cq2xvdf8syy00sisz";
};
buildInputs = [ libsndfile libsamplerate liblo jack2 ];
configurePhase = ''
export DESTDIR=$out
'';
meta = {
description = "An unimpressive thingie for playing bits of samples with some level of accuracy";
homepage = "https://github.com/tidalcycles/Dirt";
license = stdenv.lib.licenses.gpl3;
};
}

View File

@ -2,12 +2,12 @@
, libxslt, lv2, pkgconfig, premake3, xlibs }:
stdenv.mkDerivation rec {
name = "distrho-ports-git-2015-01-28";
name = "distrho-ports-git-2015-05-04";
src = fetchgit {
url = "https://github.com/DISTRHO/DISTRHO-Ports.git";
rev = "b4e2dc24802fe6804c60fcd2559a0bca46b7709c";
sha256 = "661ff6f7cda71a8dd08cbcea3f560e99f0fc2232053cbc9a2aaba854137805c6";
rev = "3f13db5dc7722ed0dcbb5256d7fac1ac9165c2d8";
sha256 = "6f740f6a8af714436ef75b858944e8122490a2faa04591a201105e84bca42fa0";
};
patchPhase = ''
@ -22,13 +22,11 @@ stdenv.mkDerivation rec {
buildPhase = ''
sh ./scripts/premake-update.sh linux
make standalone
make lv2
'';
installPhase = ''
mkdir -p $out/bin
cp bin/standalone/* $out/bin/
mkdir -p $out/lib/lv2
cp -a bin/lv2/* $out/lib/lv2/
'';
@ -38,18 +36,14 @@ stdenv.mkDerivation rec {
description = "A collection of cross-platform audio effects and plugins";
longDescription = ''
Includes:
3BandEQ bitmangler drowaudio-distortion drowaudio-flanger
drowaudio-tremolo eqinox juce_pitcher sDelay TAL-Filter
TAL-NoiseMaker TAL-Reverb-2 TAL-Vocoder-2 ThePilgrim
Wolpertinger argotlunar capsaicin drowaudio-distortionshaper
drowaudio-reverb drumsynth highlife JuceDemoPlugin PingPongPan
TAL-Dub-3 TAL-Filter-2 TAL-Reverb TAL-Reverb-3 TheFunction vex
Dexed drowaudio-distortion drowaudio-distortionshaper drowaudio-flanger
drowaudio-reverb drowaudio-tremolo drumsynt EasySSP eqinox
JuceDemoPlugin klangfalter LUFSMeter luftikus obxd pitchedDelay
stereosourceseparation TAL-Dub-3 TAL-Filter TAL-Filter-2 TAL-NoiseMaker
TAL-Reverb TAL-Reverb-2 TAL-Reverb-3 TAL-Vocoder-2 TheFunction
ThePilgrim Vex Wolpertinger
'';
maintainers = [ maintainers.goibhniu ];
platforms = platforms.linux;
# The old repo was removed and split into multiple repos. More
# work is required to get everything to build and work.
broken = true;
};
}

View File

@ -1,6 +1,6 @@
{ stdenv, fetchurl, pkgconfig, intltool, gtk3, glib, libid3tag, id3lib, taglib
, libvorbis, libogg, flac, itstool, libxml2, gsettings_desktop_schemas
, makeWrapper, gnome_icon_theme, dconf
, makeWrapper, gnome3
}:
stdenv.mkDerivation rec {
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
preFixup = ''
wrapProgram $out/bin/easytag \
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:$out/share" \
--prefix GIO_EXTRA_MODULES : "${dconf}/lib/gio/modules"
--prefix GIO_EXTRA_MODULES : "${gnome3.dconf}/lib/gio/modules"
'';
NIX_LDFLAGS = "-lid3tag -lz";
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ makeWrapper ];
buildInputs = [
pkgconfig intltool gtk3 glib libid3tag id3lib taglib libvorbis libogg flac
itstool libxml2 gsettings_desktop_schemas gnome_icon_theme dconf
itstool libxml2 gsettings_desktop_schemas gnome3.defaultIconTheme gnome3.dconf
];
meta = {

View File

@ -0,0 +1,27 @@
{ stdenv, fetchurl, lv2, pkgconfig, python }:
stdenv.mkDerivation rec {
name = "fomp-${version}";
version = "1.0.0";
src = fetchurl {
url = "http://download.drobilla.net/${name}.tar.bz2";
sha256 = "1hh2xhknanqn3iwp12ihl6bf8p7bqxryms9qk7mh21lixl42b8k5";
};
buildInputs = [ lv2 pkgconfig python ];
installPhase = ''
python waf configure --prefix=$out
python waf
python waf install
'';
meta = with stdenv.lib; {
homepage = http://drobilla.net/software/fomp/;
description = "An LV2 port of the MCP, VCO, FIL, and WAH plugins by Fons Adriaensen";
license = licenses.gpl2;
maintainers = [ maintainers.magnetophon ];
platforms = platforms.linux;
};
}

View File

@ -1,4 +1,4 @@
{ stdenv, fetchsvn, pkgconfig, autoconf, automake, gnutls, freetype
{ stdenv, fetchsvn, pkgconfig, autoconf, automake, gnutls33, freetype
, SDL, SDL_gfx, SDL_ttf, liblo, libxml2, alsaLib, jack2, libvorbis
, libsndfile, libogg
}:
@ -13,7 +13,7 @@ stdenv.mkDerivation {
};
buildInputs = [
pkgconfig autoconf automake gnutls freetype SDL SDL_gfx SDL_ttf
pkgconfig autoconf automake gnutls33 freetype SDL SDL_gfx SDL_ttf
liblo libxml2 jack2 alsaLib libvorbis libsndfile libogg
];

View File

@ -1,5 +1,5 @@
{ pkgs, stdenv, fetchurl, python, buildPythonPackage, pythonPackages, mygpoclient, intltool,
ipodSupport ? true, libgpod, gnome3, hicolor_icon_theme }:
ipodSupport ? true, libgpod, gnome3 }:
with pkgs.lib;
@ -16,8 +16,7 @@ in buildPythonPackage rec {
buildInputs = [
coverage feedparser minimock sqlite3 mygpoclient intltool
gnome3.gnome_themes_standard gnome3.gnome_icon_theme
gnome3.gnome_icon_theme_symbolic hicolor_icon_theme
gnome3.gnome_themes_standard gnome3.defaultIconTheme
gnome3.gsettings_desktop_schemas
];

View File

@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
buildInputs = [ pkgconfig makeWrapper intltool curl gettext perl perlXMLParser
flex libgpod libid3tag flac libvorbis gtk3 gdk_pixbuf libglade gnome.anjuta
gnome.gdl gnome.gnome_icon_theme_symbolic gnome.gnome_icon_theme
gnome.gdl gnome.defaultIconTheme
hicolor_icon_theme ];
patchPhase = ''

View File

@ -1,24 +1,27 @@
{ stdenv, fetchsvn, boost, ganv, glibmm, gtk, gtkmm, jack2, lilv
, lv2, makeWrapper, pkgconfig, python, raul, rdflib, serd, sord, sratom
{ stdenv, fetchsvn, boost, ganv, glibmm, gtk, gtkmm, jack2, lilv-svn
, lv2, makeWrapper, pkgconfig, python, raul, rdflib, serd, sord-svn, sratom
, suil
}:
stdenv.mkDerivation rec {
name = "ingen-svn-${rev}";
rev = "5490";
rev = "5675";
src = fetchsvn {
url = "http://svn.drobilla.net/lad/trunk/ingen";
rev = rev;
sha256 = "09h2mrkzpwzhhyqy21xr7jhfbl82gmqfyj0lzhnjsrab8z56yzk6";
sha256 = "1dk56rzbc0rwlbzr90rv8bh5163xwld32nmkvcz7ajfchi4fnv86";
};
buildInputs = [
boost ganv glibmm gtk gtkmm jack2 lilv lv2 makeWrapper pkgconfig
python raul serd sord sratom suil
boost ganv glibmm gtk gtkmm jack2 lilv-svn lv2 makeWrapper pkgconfig
python raul serd sord-svn sratom suil
];
configurePhase = "python waf configure --prefix=$out";
configurePhase = ''
sed -e "s@{PYTHONDIR}/'@out/'@" -i wscript
python waf configure --prefix=$out
'';
propagatedBuildInputs = [ rdflib ];

View File

@ -0,0 +1,40 @@
{ stdenv, fetchurl, gtk, lv2, libsamplerate, libsndfile, pkgconfig, zita-convolver }:
stdenv.mkDerivation rec {
name = "ir.lv2-${version}";
version = "1.2.2";
src = fetchurl {
url = "http://factorial.hu/system/files/${name}.tar.gz";
sha256 = "17a6h2mv9xv41jpbx6bdakkngin4kqzh2v67l4076ddq609k5a7v";
};
buildInputs = [ gtk lv2 libsamplerate libsndfile pkgconfig zita-convolver ];
buildPhase = ''
make
make convert4chan
'';
installPhase = ''
mkdir "$out/bin"
mkdir "$out/include"
mkdir "$out/share"
mkdir "$out/share/doc"
make PREFIX="$out" install
install -Dm755 convert4chan "$out/bin/convert4chan"
# fixed location
sed -i 's/, but seem like its gone://' README
sed -i 's@rhythminmind.net/1313@rhythminmind.net/STN@' README
install -Dm644 README "$out/share/doc/README"
'';
meta = with stdenv.lib; {
homepage = http://factorial.hu/plugins/lv2/ir;
description = "Zero-latency, realtime, high performance signal convolver especially for creating reverb effects";
license = licenses.gpl2;
maintainers = [ maintainers.magnetophon ];
platforms = platforms.linux;
};
}

View File

@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
};
# TODO: upgrade libav when "Audio sample format conversion failed" is fixed
buildInputs = [ libav_0_8 libkeyfinder qt5 taglib ];
buildInputs = [ libav_0_8 libkeyfinder qt5.base qt5.xmlpatterns taglib ];
configurePhase = ''
substituteInPlace is_KeyFinder.pro \

View File

@ -0,0 +1,28 @@
{ stdenv, fetchurl }:
stdenv.mkDerivation rec {
name = "ladspa-sdk-${version}";
version = "1.13";
src = fetchurl {
url = "http://www.ladspa.org/download/ladspa_sdk_${version}.tgz";
sha256 = "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm";
};
patchPhase = ''
cd src
sed -i 's@/usr/@$(out)/@g' makefile
sed -i 's@-mkdirhier@mkdir -p@g' makefile
'';
meta = {
description = "The SDK for the LADSPA audio plugin standard";
longDescription = ''
The LADSPA SDK, including the ladspa.h API header file,
ten example LADSPA plugins and
three example programs (applyplugin, analyseplugin and listplugins).
'';
homepage = http://www.ladspa.org/ladspa_sdk/overview.html;
license = stdenv.lib.licenses.lgpl2;
maintainers = [ stdenv.lib.maintainers.magnetophon ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
};
buildInputs = [
makeWrapper cmake qt5 pkgconfig alsaLib portaudio jack2 lame libsndfile libvorbis
makeWrapper cmake qt5.base pkgconfig alsaLib portaudio jack2 lame libsndfile libvorbis
];
patchPhase = ''

View File

@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
'';
buildInputs = [ pulseaudio gtkmm3 libcanberra_gtk3 makeWrapper
gnome3.gnome_icon_theme ];
gnome3.defaultIconTheme ];
nativeBuildInputs = [ pkgconfig intltool ];

View File

@ -19,11 +19,11 @@ stdenv.mkDerivation rec {
configurePhase = "export CC=${CC}";
meta = {
meta = with stdenv.lib; {
description = "A console front-end for Pandora.com";
homepage = "http://6xq.net/projects/pianobar/";
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.mit; # expat version
maintainers = stdenv.lib.maintainers.eduarrrd;
platforms = platforms.linux;
license = licenses.mit; # expat version
maintainers = with maintainers; [ eduarrrd ];
};
}

View File

@ -0,0 +1,28 @@
{ stdenv, fetchgit, boost, ladspaH, lilv, lv2, pkgconfig, serd, sord, sratom }:
stdenv.mkDerivation rec {
name = "plugin-torture-git-${version}";
version = "2013-10-03";
src = fetchgit {
url = "https://github.com/cth103/plugin-torture";
rev = "9ee06016982bdfbaa215cd0468cc6ada6367462a";
sha256 = "bfe9213fd2c1451d7acc1381d63301c4e6ff69ce86d31a886ece5159ba850706";
};
buildInputs = [ boost ladspaH lilv lv2 pkgconfig serd sord sratom ];
installPhase = ''
mkdir -p $out/bin
cp plugin-torture $out/bin/
cp README $out/bin/
'';
meta = with stdenv.lib; {
homepage = https://github.com/cth103/plugin-torture;
description = "A tool to test LADSPA and LV2 plugins";
license = licenses.gpl2;
maintainers = [ maintainers.magnetophon ];
platforms = platforms.linux;
};
}

View File

@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
};
buildInputs =
[ libsndfile qt5 fftw /* should be fftw3f ??*/ bzip2 librdf rubberband
[ libsndfile qt5.base fftw /* should be fftw3f ??*/ bzip2 librdf rubberband
libsamplerate vampSDK alsaLib librdf_raptor librdf_rasqal redland
serd
sord

View File

@ -0,0 +1,26 @@
{ stdenv, fetchurl, boost, cairomm, cmake, libsndfile, lv2, ntk, pkgconfig, python }:
stdenv.mkDerivation rec {
name = "sorcer-${version}";
version = "1.1.1";
src = fetchurl {
url = "https://github.com/harryhaaren/openAV-Sorcer/archive/release-${version}.tar.gz";
sha256 = "1jkhs2rhn4givac7rlbj8067r7qq6jnj3ixabb346nw7pd6gn1wn";
};
buildInputs = [ boost cairomm cmake libsndfile lv2 ntk pkgconfig python ];
installPhase = ''
make install
cp -a ../presets/* "$out/lib/lv2"
'';
meta = with stdenv.lib; {
homepage = http://openavproductions.com/sorcer/;
description = "A wavetable LV2 plugin synth, targeted at the electronic / dubstep genre";
license = licenses.gpl3;
maintainers = [ maintainers.magnetophon ];
platforms = platforms.linux;
};
}

View File

@ -1,30 +0,0 @@
# This file was auto-generated by cabal2nix. Please do NOT edit manually!
{ cabal, c2hs, dataDefault, deepseq, filepath, hspec
, hspecExpectations, libmpd, mtl, ncurses, QuickCheck, time
, transformers, utf8String, wcwidth
}:
cabal.mkDerivation (self: {
pname = "vimus";
version = "0.2.0";
sha256 = "0s7hfyil9rnr9rmjb08g1l1sxybx3qdkw2f59p433fkdjp2m140h";
isLibrary = true;
isExecutable = true;
buildDepends = [
dataDefault deepseq filepath libmpd mtl time utf8String wcwidth
];
testDepends = [
dataDefault hspec hspecExpectations mtl QuickCheck transformers
wcwidth
];
buildTools = [ c2hs ];
extraLibraries = [ ncurses ];
meta = {
description = "An MPD client with vim-like key bindings";
license = self.stdenv.lib.licenses.mit;
platforms = self.ghc.meta.platforms;
maintainers = with self.stdenv.lib.maintainers; [ jzellner ];
broken = self.stdenv.isLinux && self.stdenv.isi686;
};
})

View File

@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
sed -e "s@/usr/local@$out@" -i Makefile
'';
makeFlags = [ "TKLIB=-ltk8.5" "TCLLIB=-ltcl8.5" ];
makeFlags = [ "TKLIB=-l${tk.libPrefix}" "TCLLIB=-l${tcl.libPrefix}" ];
postInstall = ''
wrapProgram $out/bin/vkeybd --set TK_LIBRARY "${tk}/lib/${tk.libPrefix}"

View File

@ -0,0 +1,30 @@
{ stdenv, fetchurl, fetchgit, ftgl, freefont_ttf, jack2, mesa_glu, pkgconfig
, libltc, libsndfile, libsamplerate
, lv2, mesa, gtk2, cairo, pango, fftwFloat, zita-convolver }:
stdenv.mkDerivation rec {
version = "2014-11-01";
name = "x42-plugins-${version}";
src = fetchurl {
url = "http://gareus.org/misc/x42-plugins/x42-plugins-20141101.tar.xz";
sha256 = "0pjdhj58hb4n2053v92l7v7097fjm4xzrl8ks4g1hc7miy98ymdk";
};
buildInputs = [ mesa_glu ftgl freefont_ttf jack2 libltc libsndfile libsamplerate lv2 mesa gtk2 cairo pango fftwFloat pkgconfig zita-convolver];
makeFlags = [ "PREFIX=$(out)" "FONTFILE=${freefont_ttf}/share/fonts/truetype/FreeSansBold.ttf" ];
# remove check for zita-convolver in /usr/
patchPhase = ''
sed -i "38,42d" convoLV2/Makefile
'';
meta = with stdenv.lib;
{ description = "Collection of LV2 plugins by Robin Gareus";
homepage = https://github.com/x42/x42-plugins;
maintainers = with maintainers; [ magnetophon ];
license = licenses.gpl2;
platforms = platforms.linux;
};
}

View File

@ -1,7 +1,7 @@
{ stdenv, fetchurl, pkgconfig, alsaLib, libxmp }:
stdenv.mkDerivation rec {
name = "xmp-4.0.7";
name = "xmp-4.0.10";
meta = with stdenv.lib; {
description = "Extended module player";
@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "mirror://sourceforge/xmp/xmp/${name}.tar.gz";
sha256 = "0qgzzaxhshz5l7s21x89xb43pbbi0zap6a4lk4s7gjp1qca2agcw";
sha256 = "0gjylvvmq7ha0nhcjg56qfp0xxpsrcsj7y5r914svd5x1ppmzm5n";
};
buildInputs = [ pkgconfig alsaLib libxmp ];

View File

@ -0,0 +1,29 @@
{ stdenv, fetchurl, boost, libX11, mesa, liblo, jack2, ladspaH, lv2, pkgconfig, rubberband, libsndfile }:
stdenv.mkDerivation rec {
name = "zam-plugins-${version}";
version = "3.5";
src = fetchurl {
url = "https://github.com/zamaudio/zam-plugins/archive/${version}.tar.gz";
sha256 = "0icdrs4vaaj8gqi76jkkx5yk9h3agipa11cyb5h52y814q6mx6vm";
};
buildInputs = [ boost libX11 mesa liblo jack2 ladspaH lv2 pkgconfig rubberband libsndfile ];
patchPhase = ''
patchShebangs ./libs/generate-ttl.sh
'';
makeFlags = [
"PREFIX=$(out)"
];
meta = with stdenv.lib; {
homepage = http://www.zamaudio.com/?p=976;
description = "A collection of LV2/LADSPA/VST/JACK audio plugins by ZamAudio";
license = licenses.gpl2Plus;
maintainers = [ maintainers.magnetophon ];
platforms = platforms.linux;
};
}

View File

@ -4,28 +4,27 @@
}:
let
ver_branch = "1.14";
version = "1.14.0";
ver_branch = "1.15";
version = "1.15.0";
in
stdenv.mkDerivation rec {
name = "lightdm-${version}";
src = fetchurl {
url = "${meta.homepage}/${ver_branch}/${version}/+download/${name}.tar.xz";
sha256 = "0fkbzqncx34dhylrg5328fih7xywmsqj2p40smnx33nyf047jdgc";
sha256 = "0f0c2irb7qq49dabxhh99bwyvkxpfpscy4vynm7y800sz15lm2hs";
};
buildInputs = [
pkgconfig pam libxcb glib libXdmcp itstool libxml2 intltool libxklavier libgcrypt
qt4 qt5
];
qt4
] ++ stdenv.lib.optional (qt5 != null) qt5.base;
configureFlags = [
"--enable-liblightdm-gobject"
"--localstatedir=/var"
"--sysconfdir=/etc"
] ++ stdenv.lib.optional (qt4 != null) "--enable-liblightdm-qt"
++ stdenv.lib.optional (qt5 != null) "--enable-liblightdm-qt5";
++ stdenv.lib.optional ((qt5.base or null) != null) "--enable-liblightdm-qt5";
installFlags = [
"sysconfdir=\${out}/etc"

View File

@ -298,7 +298,7 @@ in {
};
"i686-linux" = fetchurl {
url = http://download.eclipse.org/eclipse/downloads/drops4/R-4.4.2-201502041700/eclipse-SDK-4.4.2-linux-gtk.tar.gz;
sha256 = "9f4238ce9f887a1a57bbc6c6898e43357d14a6d74f59385327813c5e82aa735d";
sha256 = "1hacyjjwhhxi7r3xyhpqgjqpd5r0irw9bfkalz5s5l6shb0lq4i7";
};
};
};

View File

@ -10,10 +10,6 @@ stdenv.mkDerivation rec {
buildInputs = [ ncurses ];
patchPhase = ''
sed -i s/-lcurses/-lncurses/ configure
'';
preConfigure = ''
mkdir -p $out/share/man/man1
'';

View File

@ -22,7 +22,7 @@ stdenv.mkDerivation
meta = {
homepage = "http://rudel.sourceforge.net/";
description = "Rudel is a collaborative editing environment for GNU Emacs";
description = "A collaborative editing environment for GNU Emacs";
license = "GPL";
};
}

View File

@ -1,23 +0,0 @@
{ cabal, emacs, haskellMode, haskellSrcExts }:
cabal.mkDerivation (self: {
pname = "structured-haskell-mode";
version = "1.0.4";
sha256 = "1402wx27py7292ad7whsb13ywv71k36501jpfrn2p0v7knzknj8z";
isLibrary = false;
isExecutable = true;
buildDepends = [ haskellSrcExts haskellMode ];
buildTools = [ emacs ];
postInstall = ''
emacs -L elisp -L ${haskellMode}/share/emacs/site-lisp \
--batch -f batch-byte-compile "elisp/"*.el
install -d $out/share/emacs/site-lisp
install "elisp/"*.el "elisp/"*.elc $out/share/emacs/site-lisp
'';
meta = {
homepage = "https://github.com/chrisdone/structured-haskell-mode";
description = "Structured editing Emacs mode for Haskell";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
};
})

View File

@ -212,86 +212,86 @@ in
android-studio = buildAndroidStudio rec {
name = "android-studio-${version}";
version = "1.2.0.8";
build = "141.1845774";
version = "1.2.0.12";
build = "141.1890965";
description = "Android development environment based on IntelliJ IDEA";
license = stdenv.lib.licenses.asl20;
src = fetchurl {
url = "https://dl.google.com/dl/android/studio/ide-zips/${version}" +
"/android-studio-ide-${build}-linux.zip";
sha256 = "1l201qv1aya1l9jrybgqclv2v2fgzdpcb6qsnxszcq3npplisw9h";
sha256 = "01k96rql192ksnprc4yai97fcals7msf06m9bx1q7asn46887h7n";
};
};
clion = buildClion rec {
name = "clion-${version}";
version = "1.0";
build = "141.353";
version = "1.0.2";
build = "141.871";
description = "C/C++ IDE. New. Intelligent. Cross-platform";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/cpp/${name}.tar.gz";
sha256 = "0xjdx13ljp1vy51a7rsj25wg3bsvry4kxq5cdng8zrc1g2y1fqw5";
sha256 = "1b9lsgl71pbcr5br0vkr2gn09b98dl9ykdxlqwzqpwnv7ckqcb69";
};
};
idea-community = buildIdea rec {
name = "idea-community-${version}";
version = "14.1.2";
build = "IC-141.713.2";
version = "14.1.3";
build = "IC-141.1010.3";
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
license = stdenv.lib.licenses.asl20;
src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
sha256 = "1skxbax7gsxxf7519qasxwp9q0v9ff755ibqr1w47dv2al47kjzq";
sha256 = "104ba057p49l41g9gdcgbywdxyqzkm4rfm7yivkcsddh5drsk4jv";
};
};
idea-ultimate = buildIdea rec {
name = "idea-ultimate-${version}";
version = "14.1.2";
build = "IU-141.713.2";
version = "14.1.3";
build = "IU-141.1010.3";
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz";
sha256 = "1ddy0f83rs3yx3w8v49cmlhkc8qxapdh702g26gzlapbpvfw58ay";
sha256 = "1flg3rpb86xfcxlys5rxywa0z9c6j9h3qd8mkadx5pnay1f97pwi";
};
};
ruby-mine = buildRubyMine rec {
name = "ruby-mine-${version}";
version = "7.0.4";
build = "139.1231";
version = "7.1.2";
build = "141.1119";
description = "The Most Intelligent Ruby and Rails IDE";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
sha256 = "08b0iwccb5w9b1yk0kbs99r5mxkcyxqs9mkr57wb5j71an80yx38";
sha256 = "1gz14lv5jhnrnshp7lkx3wgrdf0y60abs4q78yhv2x9dc6ld1gmj";
};
};
pycharm-community = buildPycharm rec {
name = "pycharm-community-${version}";
version = "4.0.6";
build = "139.1659";
description = "PyCharm 4.0 Community Edition";
version = "4.5";
build = "141.1116";
description = "PyCharm Community Edition";
license = stdenv.lib.licenses.asl20;
src = fetchurl {
url = "https://download.jetbrains.com/python/${name}.tar.gz";
sha256 = "16lf2slssfgbds6zyp2rs0ssrg8aw5d2w7b755iqimiyfhyyv83s";
sha256 = "0igx62rijalppsd1nwrri1r4m1597n93ncglyb6b94m3fm32fca6";
};
};
pycharm-professional = buildPycharm rec {
name = "pycharm-professional-${version}";
version = "4.0.6";
build = "139.1659";
description = "PyCharm 4.0 Professional Edition";
version = "4.5";
build = "141.1116";
description = "PyCharm Professional Edition";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/python/${name}.tar.gz";
sha256 = "0wavw41nzqnx75y3k3l5kq09i5d9j8hb4r6a0y3nxzqvmdfza55r";
sha256 = "0zga8sxwrvjvyw9v1pvq40gasp485r1d627jj6jvwzcv78il50d9";
};
};
@ -309,13 +309,13 @@ in
webstorm = buildWebStorm rec {
name = "webstorm-${version}";
version = "9.0.3";
build = "139.1112";
version = "10.0.2";
build = "141.728";
description = "Professional IDE for Web and JavaScript devlopment";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
sha256 = "e4cfe7b5f1220b68d880c4f236df9c9df2b1efcc04775afad6149d949f45f0aa";
sha256 = "0ghv1r145qb5kmp2x375f5674b86d51w024fz390znlnniclizqx";
};
};

View File

@ -4,49 +4,84 @@
}:
stdenv.mkDerivation rec {
version = "5.7.0.660";
revision = "6a74f9bdb90d9415b597064d815c9be38b401fee";
version = "5.9.0.431";
revision = "7560726734fc7267de2fa9abed2509968deefaa8";
name = "monodevelop-${version}";
srcs = [
(fetchurl {
url = "http://download.mono-project.com/sources/monodevelop/${name}.tar.bz2";
sha256 = "0i9fpjkcys991dhxh02zf9imar3aj6fldk9ymy09vmr10f4d7vbf";
})
(fetchurl {
url = "https://launchpadlibrarian.net/153448659/NUnit-2.6.3.zip";
sha256 = "0vzbziq44zy7fyyhb44mf9ypfi7gvs17rxpg8c9d9lvvdpkshhcp";
})
(fetchurl {
url = "https://launchpadlibrarian.net/68057829/NUnit-2.5.10.11092.zip";
sha256 = "0k5h5bz1p2v3d0w0hpkpbpvdkcszgp8sr9ik498r1bs72w5qlwnc";
})
(fetchgit {
url = "https://github.com/mono/nuget-binary.git";
rev = "ecb27dd49384d70b6c861d28763906f2b25b7c8";
sha256 = "0dj0yglgwn07xw2crr66vl0vcgnr6m041pynyq0kdd0z8nlp92ki";
})
];
src = fetchurl {
url = "http://download.mono-project.com/sources/monodevelop/${name}.tar.bz2";
sha256 = "1bgqvlfi6pilj2zxsviqilh63qq98wsijqdiqwpkqchcw741zlyn";
};
sourceRoot = "monodevelop-5.7";
srcNugetBinary = fetchgit {
url = "https://github.com/mono/nuget-binary.git";
rev = "da1f2102f8172df6f7a1370a4998e3f88b91c047";
sha256 = "1hbnckc4gvqkknf8gh1k7iwqb4vdzifdjd19i60fnczly5v8m1c3";
};
srcNUnit = fetchurl {
url = "https://www.nuget.org/api/v2/package/NUnit/2.6.3";
sha256 = "0bb16i4ggwz32wkxsh485wf014cqqzhbyx0b3wbpmqjw7p4canph";
};
srcNUnitRunners = fetchurl {
url = "https://www.nuget.org/api/v2/package/NUnit.Runners/2.6.3";
sha256 = "0qwx1i9lxkp9pijj2bsczzgsamz651hngkxraqjap1v4m7d09a3b";
};
srcNUnit2510 = fetchurl {
url = "http://launchpad.net/nunitv2/2.5/2.5.10/+download/NUnit-2.5.10.11092.zip";
sha256 = "0k5h5bz1p2v3d0w0hpkpbpvdkcszgp8sr9ik498r1bs72w5qlwnc";
};
srcNugetSystemWebMvcExtensions = fetchurl {
url = https://www.nuget.org/api/v2/package/System.Web.Mvc.Extensions.Mvc.4/1.0.9;
sha256 = "19wi662m8primpimzifv8k560m6ymm73z0mf1r8ixl0xqag1hx6j";
};
srcNugetMicrosoftAspNetMvc = fetchurl {
url = https://www.nuget.org/api/v2/package/Microsoft.AspNet.Mvc/5.2.2;
sha256 = "1jwfmz42kw2yb1g2hgp2h34fc4wx6s8z71da3mw5i4ivs25w9n2b";
};
srcNugetMicrosoftAspNetRazor = fetchurl {
url = https://www.nuget.org/api/v2/package/Microsoft.AspNet.Razor/3.2.2;
sha256 = "1db3apn4vzz1bx6q5fyv6nyx0drz095xgazqbw60qnhfs7z45axd";
};
srcNugetMicrosoftAspNetWebPages = fetchurl {
url = https://www.nuget.org/api/v2/package/Microsoft.AspNet.WebPages/3.2.2;
sha256 = "17fwb5yj165sql80i47zirjnm0gr4n8ypz408mz7p8a1n40r4i5l";
};
srcNugetMicrosoftWebInfrastructure = fetchurl {
url = https://www.nuget.org/api/v2/package/Microsoft.Web.Infrastructure/1.0.0.0;
sha256 = "1mxl9dri5729d0jl84gkpqifqf4xzb6aw1rzcfh6l0r24bix9afn";
};
postPatch = ''
# From https://bugzilla.xamarin.com/show_bug.cgi?id=23696#c19
# it seems parts of MonoDevelop 5.2+ need NUnit 2.6.4, which isn't included
# (?), so download it and put it in the right place in the tree
mkdir -v -p packages/NUnit.2.6.3/lib
cp -vfR ../NUnit-2.6.3/bin/framework/* packages/NUnit.2.6.3/lib
mkdir -v -p packages/NUnit.Runners.2.6.3/tools/lib
cp -vfR ../NUnit-2.6.3/bin/lib/* packages/NUnit.Runners.2.6.3/tools/lib
mkdir packages
unzip ${srcNUnit} -d packages/NUnit.2.6.3
unzip ${srcNUnitRunners} -d packages/NUnit.Runners.2.6.3
# cecil needs NUnit 2.5.10 - this is also missing from the tar
cp -vfR ../NUnit-2.5.10.11092/bin/net-2.0/framework/* external/cecil/Test/libs/nunit-2.5.10
unzip -j ${srcNUnit2510} -d external/cecil/Test/libs/nunit-2.5.10 NUnit-2.5.10.11092/bin/net-2.0/framework/\*
# the tar doesn't include the nuget binary, so grab it from github and copy it
# into the right place
cp -vfR ../nuget-binary-*/* external/nuget-binary/
'';
cp -vfR ${srcNugetBinary}/* external/nuget-binary/
# AspNet plugin requires these packages
unzip ${srcNugetSystemWebMvcExtensions} -d packages/System.Web.Mvc.Extensions.Mvc.4.1.0.9
unzip ${srcNugetMicrosoftAspNetMvc} -d packages/Microsoft.AspNet.Mvc.5.2.2
unzip ${srcNugetMicrosoftAspNetRazor} -d packages/Microsoft.AspNet.Razor.3.2.2
unzip ${srcNugetMicrosoftAspNetWebPages} -d packages/Microsoft.AspNet.WebPages.3.2.2
unzip ${srcNugetMicrosoftWebInfrastructure} -d packages/Microsoft.Web.Infrastructure.1.0.0.0
'';
buildInputs = [
autoconf automake pkgconfig shared_mime_info intltool
@ -54,6 +89,7 @@ stdenv.mkDerivation rec {
];
preConfigure = "patchShebangs ./configure";
preBuild = ''
cat > ./buildinfo <<EOF
Release ID: ${version}

View File

@ -17,9 +17,9 @@ stdenv.mkDerivation rec {
# nvi tries to write to a usual tmp directory (/var/tmp),
# so we will force it to use /tmp.
patchPhase = ''
sed -i -e s/-lcurses/-lncurses/ \
sed -i build/configure \
-e s@vi_cv_path_preserve=no@vi_cv_path_preserve=/tmp/vi.recover@ \
-e s@/var/tmp@@ build/configure
-e s@/var/tmp@@
'';
configurePhase = ''

View File

@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
buildInputs = [
unzip cmake pkgconfig
hunspell minizip boost xercesc qt5
hunspell minizip boost xercesc qt5.base qt5.tools qt5.webkit qt5.xmlpatterns
];
# XXX: the compiler seems to treat the .h file inappropriately:

View File

@ -2,20 +2,19 @@
stdenv.mkDerivation rec {
pname = "texmaker";
version = "4.1.1";
version = "4.4.1";
name = "${pname}-${version}";
src = fetchurl {
url = "http://www.xm1math.net/texmaker/${name}.tar.bz2";
sha256 = "1h5rxdq6f05wk3lnlw96fxwrb14k77cx1mwy648127h2c8nsgw4z";
sha256 = "1d5lb4sibdhvzgfr0zi48j92b4acvvvdy2biqi3jzjdnzy9r94w0";
};
buildInputs = [ qt4 poppler_qt4 zlib ];
nativeBuildInputs = [ pkgconfig poppler ];
NIX_CFLAGS_COMPILE="-I${poppler}/include/poppler";
preConfigure = ''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$(echo ${poppler}/include/poppler/) " # for poppler-config.h
qmake PREFIX=$out DESKTOPDIR=$out/share/applications ICONDIR=$out/share/pixmaps texmaker.pro
'';

View File

@ -1,21 +1,20 @@
{ stdenv, fetchurl, qt4, poppler_qt4, zlib}:
{ stdenv, fetchurl, qt4, poppler_qt4, zlib, pkgconfig}:
stdenv.mkDerivation rec {
pname = "texstudio";
version = "2.7.0";
version = "2.9.4";
name = "${pname}-${version}";
altname="Texstudio";
src = fetchurl {
url = "mirror://sourceforge/texstudio/${name}.tar.gz";
sha256 = "167d78nfk265jjvl129nr70v8ladb2rav2qyhw7ngr6m54gak831";
sha256 = "1smmc4xqs8x8qzp6iqj2wr4xarfnxxxp6rq6chx1kb256w75jwfw";
};
buildInputs = [ qt4 poppler_qt4 zlib ];
buildInputs = [ qt4 poppler_qt4 zlib pkgconfig];
preConfigure = ''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$(echo ${poppler_qt4}/include/poppler/qt4) "
qmake PREFIX=$out texstudio.pro
qmake PREFIX=$out NO_APPDATA=True texstudio.pro
'';
meta = with stdenv.lib; {

View File

@ -1,39 +0,0 @@
# This file was auto-generated by cabal2nix. Please do NOT edit manually!
{ cabal, binary, Cabal, cautiousFile, dataDefault, derive, dlist
, dynamicState, dyre, exceptions, filepath, glib, gtk, hashable
, hint, HUnit, lens, mtl, ooPrototypes, pango, parsec, pointedlist
, QuickCheck, random, regexBase, regexTdfa, safe, semigroups, split
, tagged, tasty, tastyHunit, tastyQuickcheck, text, time
, transformersBase, unixCompat, unorderedContainers, utf8String
, vty, wordTrie, xdgBasedir, yiLanguage, yiRope
}:
cabal.mkDerivation (self: {
pname = "yi";
version = "0.11.1";
sha256 = "15m1wwrxmszl930az79lpgyz5rxg72gy8vi17ibpac1cszfdx192";
isLibrary = true;
isExecutable = true;
buildDepends = [
binary Cabal cautiousFile dataDefault derive dlist dynamicState
dyre exceptions filepath glib gtk hashable hint lens mtl
ooPrototypes pango parsec pointedlist QuickCheck random regexBase
regexTdfa safe semigroups split tagged text time transformersBase
unixCompat unorderedContainers utf8String vty wordTrie xdgBasedir
yiLanguage yiRope
];
testDepends = [
filepath HUnit lens QuickCheck semigroups tasty tastyHunit
tastyQuickcheck text yiLanguage yiRope
];
configureFlags = "-fpango -fvty";
noHaddock = self.stdenv.lib.versionOlder self.ghc.version "7.8";
meta = {
homepage = http://haskell.org/haskellwiki/Yi;
description = "The Haskell-Scriptable Editor";
license = self.stdenv.lib.licenses.gpl2;
platforms = self.ghc.meta.platforms;
maintainers = with self.stdenv.lib.maintainers; [ fuuzetsu ];
};
})

View File

@ -79,7 +79,7 @@ in stdenv.mkDerivation rec {
'';
meta = {
description = "Zed is a fully offline-capable, open source, keyboard-focused, text and code editor for power users";
description = "A fully offline-capable, open source, keyboard-focused, text and code editor for power users";
license = stdenv.lib.licenses.mit;
homepage = http://zedapp.org/;
maintainers = [ stdenv.lib.maintainers.matejc ];

View File

@ -2,7 +2,7 @@
pyqt4, qwt, fcgi, pythonPackages, libspatialindex, libspatialite, qscintilla, postgresql, makeWrapper }:
stdenv.mkDerivation rec {
name = "qgis-2.8.1";
name = "qgis-2.8.2";
buildInputs = [ gdal qt4 flex bison proj geos x11 sqlite gsl pyqt4 qwt qscintilla
fcgi libspatialindex libspatialite postgresql ] ++
@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "http://qgis.org/downloads/${name}.tar.bz2";
sha256 = "19acb74e4e2739238b87bf64f2750e10e366e9d61d070a4b8ca341ce01ca9741";
sha256 = "fd3c01e48224f611c3bb279b0af9cc1dff3844cdc93f7b45e4f37cf8f350bc4b";
};
postInstall = ''

Some files were not shown because too many files have changed in this diff Show More