mirror of
https://github.com/CHN-beta/nixpkgs.git
synced 2026-01-13 03:22:53 +08:00
Compare commits
1 Commits
binary
...
backups/0.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7eec5e69f8 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,4 +0,0 @@
|
||||
*~
|
||||
,*
|
||||
.*.swp
|
||||
.*.swo
|
||||
13
doc/Makefile
13
doc/Makefile
@@ -1,6 +1,5 @@
|
||||
# You may need to override this.
|
||||
docbookxsl = $(HOME)/.nix-profile/xml/xsl/docbook
|
||||
dblatex = dblatex
|
||||
|
||||
XMLLINT = xmllint --catalogs
|
||||
XSLTPROC = xsltproc --catalogs \
|
||||
@@ -17,7 +16,7 @@ NEWS_OPTS = \
|
||||
--stringparam section.autolabel.max.depth 0 \
|
||||
--stringparam header.rule 0
|
||||
|
||||
all: NEWS.html NEWS.txt manual.html manual.pdf
|
||||
all: NEWS.html NEWS.txt
|
||||
|
||||
NEWS.html: release-notes.xml
|
||||
$(XSLTPROC) --nonet --xinclude --output $@ $(NEWS_OPTS) \
|
||||
@@ -29,13 +28,3 @@ NEWS.txt: release-notes.xml
|
||||
$(docbookxsl)/html/docbook.xsl -
|
||||
LANG=en_US w3m -dump $@.tmp.html > $@
|
||||
rm $@.tmp.html
|
||||
|
||||
manual.html: *.xml
|
||||
$(XSLTPROC) --nonet --xinclude --output manual.html \
|
||||
$(docbookxsl)/html/docbook.xsl manual.xml
|
||||
|
||||
manual.pdf: *.xml
|
||||
$(dblatex) \
|
||||
-P doc.collab.show=0 \
|
||||
-P latex.output.revhistory=0 \
|
||||
manual.xml
|
||||
|
||||
@@ -1,605 +0,0 @@
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xml:id="chap-conventions">
|
||||
|
||||
<title>Coding conventions</title>
|
||||
|
||||
|
||||
<section><title>Syntax</title>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Use 2 spaces of indentation per indentation level in
|
||||
Nix expressions, 4 spaces in shell scripts.</para></listitem>
|
||||
|
||||
<listitem><para>Do not use tab characters, i.e. configure your
|
||||
editor to use soft tabs. For instance, use <literal>(setq-default
|
||||
indent-tabs-mode nil)</literal> in Emacs. Everybody has different
|
||||
tab settings so it’s asking for trouble.</para></listitem>
|
||||
|
||||
<listitem><para>Use <literal>lowerCamelCase</literal> for variable
|
||||
names, not <literal>UpperCamelCase</literal>. TODO: naming of
|
||||
attributes in
|
||||
<filename>all-packages.nix</filename>?</para></listitem>
|
||||
|
||||
<listitem><para>Function calls with attribute set arguments are
|
||||
written as
|
||||
|
||||
<programlisting>
|
||||
foo {
|
||||
arg = ...;
|
||||
}
|
||||
</programlisting>
|
||||
|
||||
not
|
||||
|
||||
<programlisting>
|
||||
foo
|
||||
{
|
||||
arg = ...;
|
||||
}
|
||||
</programlisting>
|
||||
|
||||
Also fine is
|
||||
|
||||
<programlisting>
|
||||
foo { arg = ...; }
|
||||
</programlisting>
|
||||
|
||||
if it's a short call.</para></listitem>
|
||||
|
||||
<listitem><para>In attribute sets or lists that span multiple lines,
|
||||
the attribute names or list elements should be aligned:
|
||||
|
||||
<programlisting>
|
||||
# A long list.
|
||||
list =
|
||||
[ elem1
|
||||
elem2
|
||||
elem3
|
||||
];
|
||||
|
||||
# A long attribute set.
|
||||
attrs =
|
||||
{ attr1 = short_expr;
|
||||
attr2 =
|
||||
if true then big_expr else big_expr;
|
||||
};
|
||||
|
||||
# Alternatively:
|
||||
attrs = {
|
||||
attr1 = short_expr;
|
||||
attr2 =
|
||||
if true then big_expr else big_expr;
|
||||
};
|
||||
</programlisting>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>Short lists or attribute sets can be written on one
|
||||
line:
|
||||
|
||||
<programlisting>
|
||||
# A short list.
|
||||
list = [ elem1 elem2 elem3 ];
|
||||
|
||||
# A short set.
|
||||
attrs = { x = 1280; y = 1024; };
|
||||
</programlisting>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>Breaking in the middle of a function argument can
|
||||
give hard-to-read code, like
|
||||
|
||||
<programlisting>
|
||||
someFunction { x = 1280;
|
||||
y = 1024; } otherArg
|
||||
yetAnotherArg
|
||||
</programlisting>
|
||||
|
||||
(especially if the argument is very large, spanning multiple
|
||||
lines).</para>
|
||||
|
||||
<para>Better:
|
||||
|
||||
<programlisting>
|
||||
someFunction
|
||||
{ x = 1280; y = 1024; }
|
||||
otherArg
|
||||
yetAnotherArg
|
||||
</programlisting>
|
||||
|
||||
or
|
||||
|
||||
<programlisting>
|
||||
let res = { x = 1280; y = 1024; };
|
||||
in someFunction res otherArg yetAnotherArg
|
||||
</programlisting>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>The bodies of functions, asserts, and withs are not
|
||||
indented to prevent a lot of superfluous indentation levels, i.e.
|
||||
|
||||
<programlisting>
|
||||
{ arg1, arg2 }:
|
||||
assert system == "i686-linux";
|
||||
stdenv.mkDerivation { ...
|
||||
</programlisting>
|
||||
|
||||
not
|
||||
|
||||
<programlisting>
|
||||
{ arg1, arg2 }:
|
||||
assert system == "i686-linux";
|
||||
stdenv.mkDerivation { ...
|
||||
</programlisting>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>Function formal arguments are written as:
|
||||
|
||||
<programlisting>
|
||||
{ arg1, arg2, arg3 }:
|
||||
</programlisting>
|
||||
|
||||
but if they don't fit on one line they're written as:
|
||||
|
||||
<programlisting>
|
||||
{ arg1, arg2, arg3
|
||||
, arg4, ...
|
||||
, # Some comment...
|
||||
argN
|
||||
}:
|
||||
</programlisting>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>Functions should list their expected arguments as
|
||||
precisely as possible. That is, write
|
||||
|
||||
<programlisting>
|
||||
{ stdenv, fetchurl, perl }: <replaceable>...</replaceable>
|
||||
</programlisting>
|
||||
|
||||
instead of
|
||||
|
||||
<programlisting>
|
||||
args: with args; <replaceable>...</replaceable>
|
||||
</programlisting>
|
||||
|
||||
or
|
||||
|
||||
<programlisting>
|
||||
{ stdenv, fetchurl, perl, ... }: <replaceable>...</replaceable>
|
||||
</programlisting>
|
||||
|
||||
</para>
|
||||
|
||||
<para>For functions that are truly generic in the number of
|
||||
arguments (such as wrappers around <varname>mkDerivation</varname>)
|
||||
that have some required arguments, you should write them using an
|
||||
<literal>@</literal>-pattern:
|
||||
|
||||
<programlisting>
|
||||
{ stdenv, doCoverageAnalysis ? false, ... } @ args:
|
||||
|
||||
stdenv.mkDerivation (args // {
|
||||
<replaceable>...</replaceable> if doCoverageAnalysis then "bla" else "" <replaceable>...</replaceable>
|
||||
})
|
||||
</programlisting>
|
||||
|
||||
instead of
|
||||
|
||||
<programlisting>
|
||||
args:
|
||||
|
||||
args.stdenv.mkDerivation (args // {
|
||||
<replaceable>...</replaceable> if args ? doCoverageAnalysis && args.doCoverageAnalysis then "bla" else "" <replaceable>...</replaceable>
|
||||
})
|
||||
</programlisting>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section><title>Package naming</title>
|
||||
|
||||
<para>In Nixpkgs, there are generally three different names associated with a package:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>The <varname>name</varname> attribute of the
|
||||
derivation (excluding the version part). This is what most users
|
||||
see, in particular when using
|
||||
<command>nix-env</command>.</para></listitem>
|
||||
|
||||
<listitem><para>The variable name used for the instantiated package
|
||||
in <filename>all-packages.nix</filename>, and when passing it as a
|
||||
dependency to other functions. This is what Nix expression authors
|
||||
see. It can also be used when installing using <command>nix-env
|
||||
-iA</command>.</para></listitem>
|
||||
|
||||
<listitem><para>The filename for (the directory containing) the Nix
|
||||
expression.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
Most of the time, these are the same. For instance, the package
|
||||
<literal>e2fsprogs</literal> has a <varname>name</varname> attribute
|
||||
<literal>"e2fsprogs-<replaceable>version</replaceable>"</literal>, is
|
||||
bound to the variable name <varname>e2fsprogs</varname> in
|
||||
<filename>all-packages.nix</filename>, and the Nix expression is in
|
||||
<filename>pkgs/os-specific/linux/e2fsprogs/default.nix</filename>.
|
||||
However, identifiers in the Nix language don’t allow certain
|
||||
characters (e.g. dashes), so sometimes a different variable name
|
||||
should be used. For instance, the
|
||||
<literal>module-init-tools</literal> package is bound to the
|
||||
<literal>module_init_tools</literal> variable in
|
||||
<filename>all-packages.nix</filename>.</para>
|
||||
|
||||
<para>There are a few naming guidelines:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Generally, try to stick to the upstream package
|
||||
name.</para></listitem>
|
||||
|
||||
<listitem><para>Don’t use uppercase letters in the
|
||||
<literal>name</literal> attribute — e.g.,
|
||||
<literal>"mplayer-1.0rc2"</literal> instead of
|
||||
<literal>"MPlayer-1.0rc2"</literal>.</para></listitem>
|
||||
|
||||
<listitem><para>The version part of the <literal>name</literal>
|
||||
attribute <emphasis>must</emphasis> start with a digit (following a
|
||||
dash) — e.g., <literal>"hello-0.3-pre-r3910"</literal> instead of
|
||||
<literal>"hello-svn-r3910"</literal>, as the latter would be seen as
|
||||
a package named <literal>hello-svn</literal> by
|
||||
<command>nix-env</command>.</para></listitem>
|
||||
|
||||
<listitem><para>Dashes in the package name should be changed to
|
||||
underscores in variable names, rather than to camel case — e.g.,
|
||||
<varname>module_init_tools</varname> instead of
|
||||
<varname>moduleInitTools</varname>.</para></listitem>
|
||||
|
||||
<listitem><para>If there are multiple versions of a package, this
|
||||
should be reflected in the variable names in
|
||||
<filename>all-packages.nix</filename>,
|
||||
e.g. <varname>hello_0_3</varname> and <varname>hello_0_4</varname>.
|
||||
If there is an obvious “default” version, make an attribute like
|
||||
<literal>hello = hello_0_4;</literal>.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section xml:id="sec-organisation"><title>File naming and organisation</title>
|
||||
|
||||
<para>Names of files and directories should be in lowercase, with
|
||||
dashes between words — not in camel case. For instance, it should be
|
||||
<filename>all-packages.nix</filename>, not
|
||||
<filename>allPackages.nix</filename> or
|
||||
<filename>AllPackages.nix</filename>.</para>
|
||||
|
||||
<section><title>Hierachy</title>
|
||||
|
||||
<para>Each package should be stored in its own directory somewhere in
|
||||
the <filename>pkgs/</filename> tree, i.e. in
|
||||
<filename>pkgs/<replaceable>category</replaceable>/<replaceable>subcategory</replaceable>/<replaceable>...</replaceable>/<replaceable>pkgname</replaceable></filename>.
|
||||
Below are some rules for picking the right category for a package.
|
||||
Many packages fall under several categories; what matters is the
|
||||
<emphasis>primary</emphasis> purpose of a package. For example, the
|
||||
<literal>libxml2</literal> package builds both a library and some
|
||||
tools; but it’s a library foremost, so it goes under
|
||||
<filename>pkgs/development/libraries</filename>.</para>
|
||||
|
||||
<para>When in doubt, consider refactoring the
|
||||
<filename>pkgs/</filename> tree, e.g. creating new categories or
|
||||
splitting up an existing category.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s used to support <emphasis>software development</emphasis>:</term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>library</emphasis> used by other packages:</term>
|
||||
<listitem>
|
||||
<para><filename>development/libraries</filename> (e.g. <filename>libxml2</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>compiler</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>development/compilers</filename> (e.g. <filename>gcc</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s an <emphasis>interpreter</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>development/interpreters</filename> (e.g. <filename>guile</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a (set of) development <emphasis>tool(s)</emphasis>:</term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>parser generator</emphasis> (including lexers):</term>
|
||||
<listitem>
|
||||
<para><filename>development/tools/parsing</filename> (e.g. <filename>bison</filename>, <filename>flex</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>build manager</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>development/tools/build-managers</filename> (e.g. <filename>gnumake</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Else:</term>
|
||||
<listitem>
|
||||
<para><filename>development/tools/misc</filename> (e.g. <filename>binutils</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Else:</term>
|
||||
<listitem>
|
||||
<para><filename>development/misc</filename></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a (set of) <emphasis>tool(s)</emphasis>:</term>
|
||||
<listitem>
|
||||
<para>(A tool is a relatively small program, especially one intented
|
||||
to be used non-interactively.)</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s for <emphasis>networking</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>tools/networking</filename> (e.g. <filename>wget</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s for <emphasis>text processing</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>tools/text</filename> (e.g. <filename>diffutils</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>system utility</emphasis>, i.e.,
|
||||
something related or essential to the operation of a
|
||||
system:</term>
|
||||
<listitem>
|
||||
<para><filename>tools/system</filename> (e.g. <filename>cron</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s an <emphasis>archiver</emphasis> (which may
|
||||
include a compression function):</term>
|
||||
<listitem>
|
||||
<para><filename>tools/archivers</filename> (e.g. <filename>zip</filename>, <filename>tar</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>compression</emphasis> program:</term>
|
||||
<listitem>
|
||||
<para><filename>tools/compression</filename> (e.g. <filename>gzip</filename>, <filename>bzip2</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>security</emphasis>-related program:</term>
|
||||
<listitem>
|
||||
<para><filename>tools/security</filename> (e.g. <filename>nmap</filename>, <filename>gnupg</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Else:</term>
|
||||
<listitem>
|
||||
<para><filename>tools/misc</filename></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>shell</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>shells</filename> (e.g. <filename>bash</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>server</emphasis>:</term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s a web server:</term>
|
||||
<listitem>
|
||||
<para><filename>servers/http</filename> (e.g. <filename>apache-httpd</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s an implementation of the X Windowing System:</term>
|
||||
<listitem>
|
||||
<para><filename>servers/x11</filename> (e.g. <filename>xorg</filename> — this includes the client libraries and programs)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Else:</term>
|
||||
<listitem>
|
||||
<para><filename>servers/misc</filename></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>desktop environment</emphasis>
|
||||
(including <emphasis>window managers</emphasis>):</term>
|
||||
<listitem>
|
||||
<para><filename>desktops</filename> (e.g. <filename>kde</filename>, <filename>gnome</filename>, <filename>enlightenment</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s an <emphasis>application</emphasis>:</term>
|
||||
<listitem>
|
||||
<para>A (typically large) program with a distinct user
|
||||
interface, primarily used interactively.</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>version management system</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>applications/version-management</filename> (e.g. <filename>subversion</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s for <emphasis>video playback / editing</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>applications/video</filename> (e.g. <filename>vlc</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s for <emphasis>graphics viewing / editing</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>applications/graphics</filename> (e.g. <filename>gimp</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s for <emphasis>networking</emphasis>:</term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>mailreader</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>applications/networking/mailreaders</filename> (e.g. <filename>thunderbird</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>newsreader</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>applications/networking/newsreaders</filename> (e.g. <filename>pan</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>web browser</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>applications/networking/browsers</filename> (e.g. <filename>firefox</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Else:</term>
|
||||
<listitem>
|
||||
<para><filename>applications/networking/misc</filename></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Else:</term>
|
||||
<listitem>
|
||||
<para><filename>applications/misc</filename></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s <emphasis>data</emphasis> (i.e., does not have a
|
||||
straight-forward executable semantics):</term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>font</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>data/fonts</filename></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s related to <emphasis>SGML/XML processing</emphasis>:</term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s an <emphasis>XML DTD</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>data/sgml+xml/schemas/xml-dtd</filename> (e.g. <filename>docbook</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s an <emphasis>XSLT stylesheet</emphasis>:</term>
|
||||
<listitem>
|
||||
<para>(Okay, these are executable...)</para>
|
||||
<para><filename>data/sgml+xml/stylesheets/xslt</filename> (e.g. <filename>docbook-xsl</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>game</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>games</filename></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Else:</term>
|
||||
<listitem>
|
||||
<para><filename>misc</filename></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
</section>
|
||||
|
||||
<section><title>Versioning</title>
|
||||
|
||||
<para>Because every version of a package in Nixpkgs creates a
|
||||
potential maintenance burden, old versions of a package should not be
|
||||
kept unless there is a good reason to do so. For instance, Nixpkgs
|
||||
contains several versions of GCC because other packages don’t build
|
||||
with the latest version of GCC. Other examples are having both the
|
||||
latest stable and latest pre-release version of a package, or to keep
|
||||
several major releases of an application that differ significantly in
|
||||
functionality.</para>
|
||||
|
||||
<para>If there is only one version of a package, its Nix expression
|
||||
should be named <filename>e2fsprogs/default.nix</filename>. If there
|
||||
are multiple versions, this should be reflected in the filename,
|
||||
e.g. <filename>e2fsprogs/1.41.8.nix</filename> and
|
||||
<filename>e2fsprogs/1.41.9.nix</filename>. The version in the
|
||||
filename should leave out unnecessary detail. For instance, if we
|
||||
keep the latest Firefox 2.0.x and 3.5.x versions in Nixpkgs, they
|
||||
should be named <filename>firefox/2.0.nix</filename> and
|
||||
<filename>firefox/3.5.nix</filename>, respectively (which, at a given
|
||||
point, might contain versions <literal>2.0.0.20</literal> and
|
||||
<literal>3.5.4</literal>). If a version requires many auxiliary
|
||||
files, you can use a subdirectory for each version,
|
||||
e.g. <filename>firefox/2.0/default.nix</filename> and
|
||||
<filename>firefox/3.5/default.nix</filename>.</para>
|
||||
|
||||
<para>All versions of a package <emphasis>must</emphasis> be included
|
||||
in <filename>all-packages.nix</filename> to make sure that they
|
||||
evaluate correctly.</para>
|
||||
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
</chapter>
|
||||
@@ -1,21 +0,0 @@
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xml:id="chap-introduction">
|
||||
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>This manual tells you how to write packages for the Nix Packages
|
||||
collection (Nixpkgs). Thus it’s for packagers and developers who want
|
||||
to add packages to Nixpkgs. End users are kindly referred to the
|
||||
<link xlink:href="http://hydra.nixos.org/job/nix/trunk/tarball/latest/download-by-type/doc/manual">Nix
|
||||
manual</link>.</para>
|
||||
|
||||
<para>This manual does not describe the syntax and semantics of the
|
||||
Nix expression language, which are given in the Nix manual in the
|
||||
<link
|
||||
xlink:href="http://hydra.nixos.org/job/nix/trunk/tarball/latest/download-by-type/doc/manual/#chap-writing-nix-expressions">chapter
|
||||
on writing Nix expressions</link>. It only describes the facilities
|
||||
provided by Nixpkgs to make writing packages easier, such as the
|
||||
standard build environment (<literal>stdenv</literal>).</para>
|
||||
|
||||
</chapter>
|
||||
@@ -1,223 +0,0 @@
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xml:id="chap-language-support">
|
||||
|
||||
<title>Support for specific programming languages</title>
|
||||
|
||||
<para>The <link linkend="chap-stdenv">standard build
|
||||
environment</link> makes it easy to build typical Autotools-based
|
||||
packages with very little code. Any other kind of package can be
|
||||
accomodated by overriding the appropriate phases of
|
||||
<literal>stdenv</literal>. However, there are specialised functions
|
||||
in Nixpkgs to easily build packages for other programming languages,
|
||||
such as Perl or Haskell. These are described in this chapter.</para>
|
||||
|
||||
|
||||
<section xml:id="ssec-language-perl"><title>Perl</title>
|
||||
|
||||
<para>Nixpkgs provides a function <varname>buildPerlPackage</varname>,
|
||||
a generic package builder function for any Perl package that has a
|
||||
standard <varname>Makefile.PL</varname>. It’s implemented in <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/perl-modules/generic"><filename>pkgs/development/perl-modules/generic</filename></link>.</para>
|
||||
|
||||
<para>Perl packages from CPAN are defined in <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/perl-packages.nix"><filename>pkgs/perl-packages.nix</filename></link>,
|
||||
rather than <filename>pkgs/all-packages.nix</filename>. Most Perl
|
||||
packages are so straight-forward to build that they are defined here
|
||||
directly, rather than having a separate function for each package
|
||||
called from <filename>perl-packages.nix</filename>. However, more
|
||||
complicated packages should be put in a separate file, typically in
|
||||
<filename>pkgs/development/perl-modules</filename>. Here is an
|
||||
example of the former:
|
||||
|
||||
<programlisting>
|
||||
ClassC3 = buildPerlPackage rec {
|
||||
name = "Class-C3-0.21";
|
||||
src = fetchurl {
|
||||
url = "mirror://cpan/authors/id/F/FL/FLORA/${name}.tar.gz";
|
||||
sha256 = "1bl8z095y4js66pwxnm7s853pi9czala4sqc743fdlnk27kq94gz";
|
||||
};
|
||||
};
|
||||
</programlisting>
|
||||
|
||||
Note the use of <literal>mirror://cpan/</literal>, and the
|
||||
<literal>${name}</literal> in the URL definition to ensure that the
|
||||
name attribute is consistent with the source that we’re actually
|
||||
downloading. Perl packages are made available in
|
||||
<filename>all-packages.nix</filename> through the variable
|
||||
<varname>perlPackages</varname>. For instance, if you have a package
|
||||
that needs <varname>ClassC3</varname>, you would typically write
|
||||
|
||||
<programlisting>
|
||||
foo = import ../path/to/foo.nix {
|
||||
inherit stdenv fetchurl ...;
|
||||
inherit (perlPackages) ClassC3;
|
||||
};
|
||||
</programlisting>
|
||||
|
||||
in <filename>all-packages.nix</filename>. You can test building a
|
||||
Perl package as follows:
|
||||
|
||||
<screen>
|
||||
$ nix-build -A perlPackages.ClassC3
|
||||
</screen>
|
||||
|
||||
<varname>buildPerlPackage</varname> adds <literal>perl-</literal> to
|
||||
the start of the name attribute, so the package above is actually
|
||||
called <literal>perl-Class-C3-0.21</literal>. So to install it, you
|
||||
can say:
|
||||
|
||||
<screen>
|
||||
$ nix-env -i perl-Class-C3
|
||||
</screen>
|
||||
|
||||
(Of course you can also install using the attribute name:
|
||||
<literal>nix-env -i -A perlPackages.ClassC3</literal>.)</para>
|
||||
|
||||
<para>So what does <varname>buildPerlPackage</varname> do? It does
|
||||
the following:
|
||||
|
||||
<orderedlist>
|
||||
|
||||
<listitem><para>In the configure phase, it calls <literal>perl
|
||||
Makefile.PL</literal> to generate a Makefile. You can set the
|
||||
variable <varname>makeMakerFlags</varname> to pass flags to
|
||||
<filename>Makefile.PL</filename></para></listitem>
|
||||
|
||||
<listitem><para>It adds the contents of the <envar>PERL5LIB</envar>
|
||||
environment variable to <literal>#! .../bin/perl</literal> line of
|
||||
Perl scripts as <literal>-I<replaceable>dir</replaceable></literal>
|
||||
flags. This ensures that a script can find its
|
||||
dependencies.</para></listitem>
|
||||
|
||||
<listitem><para>In the fixup phase, it writes the propagated build
|
||||
inputs (<varname>propagatedBuildInputs</varname>) to the file
|
||||
<filename>$out/nix-support/propagated-user-env-packages</filename>.
|
||||
<command>nix-env</command> recursively installs all packages listed
|
||||
in this file when you install a package that has it. This ensures
|
||||
that a Perl package can find its dependencies.</para></listitem>
|
||||
|
||||
</orderedlist>
|
||||
|
||||
</para>
|
||||
|
||||
<para><varname>buildPerlPackage</varname> is built on top of
|
||||
<varname>stdenv</varname>, so everything can be customised in the
|
||||
usual way. For instance, the <literal>BerkeleyDB</literal> module has
|
||||
a <varname>preConfigure</varname> hook to generate a configuration
|
||||
file used by <filename>Makefile.PL</filename>:
|
||||
|
||||
<programlisting>
|
||||
{buildPerlPackage, fetchurl, db4}:
|
||||
|
||||
buildPerlPackage rec {
|
||||
name = "BerkeleyDB-0.36";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://cpan/authors/id/P/PM/PMQS/${name}.tar.gz";
|
||||
sha256 = "07xf50riarb60l1h6m2dqmql8q5dij619712fsgw7ach04d8g3z1";
|
||||
};
|
||||
|
||||
preConfigure = ''
|
||||
echo "LIB = ${db4}/lib" > config.in
|
||||
echo "INCLUDE = ${db4}/include" >> config.in
|
||||
'';
|
||||
}
|
||||
</programlisting>
|
||||
|
||||
</para>
|
||||
|
||||
<para>Dependencies on other Perl packages can be specified in the
|
||||
<varname>buildInputs</varname> and
|
||||
<varname>propagatedBuildInputs</varname> attributes. If something is
|
||||
exclusively a build-time dependency, use
|
||||
<varname>buildInputs</varname>; if it’s (also) a runtime dependency,
|
||||
use <varname>propagatedBuildInputs</varname>. For instance, this
|
||||
builds a Perl module that has runtime dependencies on a bunch of other
|
||||
modules:
|
||||
|
||||
<programlisting>
|
||||
ClassC3Componentised = buildPerlPackage rec {
|
||||
name = "Class-C3-Componentised-1.0004";
|
||||
src = fetchurl {
|
||||
url = "mirror://cpan/authors/id/A/AS/ASH/${name}.tar.gz";
|
||||
sha256 = "0xql73jkcdbq4q9m0b0rnca6nrlvf5hyzy8is0crdk65bynvs8q1";
|
||||
};
|
||||
propagatedBuildInputs = [
|
||||
ClassC3 ClassInspector TestException MROCompat
|
||||
];
|
||||
};
|
||||
</programlisting>
|
||||
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section><title>Python</title>
|
||||
|
||||
<para>
|
||||
Python packages that
|
||||
use <link xlink:href="http://pypi.python.org/pypi/setuptools/"><literal>setuptools</literal></link>,
|
||||
which many Python packages do nowadays, can be built very simply using
|
||||
the <varname>buildPythonPackage</varname> function. This function is
|
||||
implemented
|
||||
in <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/python-modules/generic/default.nix"><filename>pkgs/development/python-modules/generic/default.nix</filename></link>
|
||||
and works similarly to <varname>buildPerlPackage</varname>. (See
|
||||
<xref linkend="ssec-language-perl"/> for details.)
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Python packages that use <varname>buildPythonPackage</varname> are
|
||||
defined
|
||||
in <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/python-packages.nix"><filename>pkgs/top-level/python-packages.nix</filename></link>.
|
||||
Most of them are simple. For example:
|
||||
|
||||
<programlisting>
|
||||
twisted = buildPythonPackage {
|
||||
name = "twisted-8.1.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = http://tmrc.mit.edu/mirror/twisted/Twisted/8.1/Twisted-8.1.0.tar.bz2;
|
||||
sha256 = "0q25zbr4xzknaghha72mq57kh53qw1bf8csgp63pm9sfi72qhirl";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ pkgs.ZopeInterface ];
|
||||
|
||||
meta = {
|
||||
homepage = http://twistedmatrix.com/;
|
||||
description = "Twisted, an event-driven networking engine written in Python";
|
||||
license = "MIT";
|
||||
};
|
||||
};
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section><title>Java</title>
|
||||
|
||||
<para>Java packages should install JAR files in
|
||||
<filename>$out/lib/java</filename>.</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<!--
|
||||
<section><title>Haskell</title>
|
||||
|
||||
<para>TODO</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section><title>TeX / LaTeX</title>
|
||||
|
||||
<para>* Special support for building TeX documents</para>
|
||||
|
||||
</section>
|
||||
-->
|
||||
|
||||
|
||||
</chapter>
|
||||
@@ -1,37 +0,0 @@
|
||||
<book xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<info>
|
||||
|
||||
<title>Nixpkgs Manual</title>
|
||||
|
||||
<subtitle>Draft (Version <xi:include href="../VERSION"
|
||||
parse="text" />)</subtitle>
|
||||
|
||||
<author>
|
||||
<personname>
|
||||
<firstname>Eelco</firstname>
|
||||
<surname>Dolstra</surname>
|
||||
</personname>
|
||||
<affiliation>
|
||||
<orgname>LogicBlox</orgname>
|
||||
</affiliation>
|
||||
</author>
|
||||
|
||||
<copyright>
|
||||
<year>2008-2012</year>
|
||||
<holder>Eelco Dolstra</holder>
|
||||
</copyright>
|
||||
|
||||
</info>
|
||||
|
||||
<xi:include href="introduction.xml" />
|
||||
<xi:include href="quick-start.xml" />
|
||||
<xi:include href="stdenv.xml" />
|
||||
<xi:include href="meta.xml" />
|
||||
<xi:include href="language-support.xml" />
|
||||
<xi:include href="package-notes.xml" />
|
||||
<xi:include href="coding-conventions.xml" />
|
||||
|
||||
|
||||
</book>
|
||||
244
doc/meta.xml
244
doc/meta.xml
@@ -1,244 +0,0 @@
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xml:id="chap-meta">
|
||||
|
||||
<title>Meta-attributes</title>
|
||||
|
||||
<para>Nix packages can declare <emphasis>meta-attributes</emphasis>
|
||||
that contain information about a package such as a description, its
|
||||
homepage, its license, and so on. For instance, the GNU Hello package
|
||||
has a <varname>meta</varname> declaration like this:
|
||||
|
||||
<programlisting>
|
||||
meta = {
|
||||
description = "A program that produces a familiar, friendly greeting";
|
||||
longDescription = ''
|
||||
GNU Hello is a program that prints "Hello, world!" when you run it.
|
||||
It is fully customizable.
|
||||
'';
|
||||
homepage = http://www.gnu.org/software/hello/manual/;
|
||||
license = "GPLv3+";
|
||||
};
|
||||
</programlisting>
|
||||
|
||||
</para>
|
||||
|
||||
<para>Meta-attributes are not passed to the builder of the package.
|
||||
Thus, a change to a meta-attribute doesn’t trigger a recompilation of
|
||||
the package. The value of a meta-attribute must a string.</para>
|
||||
|
||||
<para>The meta-attributes of a package can be queried from the
|
||||
command-line using <command>nix-env</command>:
|
||||
|
||||
<screen>
|
||||
$ nix-env -qa hello --meta --xml
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<items>
|
||||
<item attrPath="hello" name="hello-2.3" system="i686-linux">
|
||||
<meta name="description" value="A program that produces a familiar, friendly greeting" />
|
||||
<meta name="homepage" value="http://www.gnu.org/software/hello/manual/" />
|
||||
<meta name="license" value="GPLv3+" />
|
||||
<meta name="longDescription" value="GNU Hello is a program that prints &quot;Hello, world!&quot; when you run it.&#xA;It is fully customizable.&#xA;" />
|
||||
</item>
|
||||
</items>
|
||||
</screen>
|
||||
|
||||
<command>nix-env</command> knows about the
|
||||
<varname>description</varname> field specifically:
|
||||
|
||||
<screen>
|
||||
$ nix-env -qa hello --description
|
||||
hello-2.3 A program that produces a familiar, friendly greeting
|
||||
</screen>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
<section><title>Standard meta-attributes</title>
|
||||
|
||||
<para>The following meta-attributes have a standard
|
||||
interpretation:</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>description</varname></term>
|
||||
<listitem><para>A short (one-line) description of the package.
|
||||
This is shown by <command>nix-env -q --description</command> and
|
||||
also on the Nixpkgs release pages.</para>
|
||||
|
||||
<para>Don’t include a period at the end. Don’t include newline
|
||||
characters. Capitalise the first character. For brevity, don’t
|
||||
repeat the name of package — just describe what it does.</para>
|
||||
|
||||
<para>Wrong: <literal>"libpng is a library that allows you to decode PNG images."</literal></para>
|
||||
|
||||
<para>Right: <literal>"A library for decoding PNG images"</literal></para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>longDescription</varname></term>
|
||||
<listitem><para>An arbitrarily long description of the
|
||||
package.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>homepage</varname></term>
|
||||
<listitem><para>The package’s homepage. Example:
|
||||
<literal>http://www.gnu.org/software/hello/manual/</literal></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>license</varname></term>
|
||||
<listitem><para>The license for the package. See below for the
|
||||
allowed values.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>maintainers</varname></term>
|
||||
<listitem><para>A list of names and e-mail addresses of the
|
||||
maintainers of this Nix expression, e.g. <literal>["Alice
|
||||
<alice@example.org>" "Bob <bob@example.com>"]</literal>. If
|
||||
you are the maintainer of multiple packages, you may want to add
|
||||
yourself to <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/lib/maintainers.nix"><filename>pkgs/lib/maintainers.nix</filename></link>
|
||||
and write something like <literal>[stdenv.lib.maintainers.alice
|
||||
stdenv.lib.maintainers.bob]</literal>.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>priority</varname></term>
|
||||
<listitem><para>The <emphasis>priority</emphasis> of the package,
|
||||
used by <command>nix-env</command> to resolve file name conflicts
|
||||
between packages. See the Nix manual page for
|
||||
<command>nix-env</command> for details. Example:
|
||||
<literal>"10"</literal> (a low-priority
|
||||
package).</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section xml:id="sec-meta-license"><title>Licenses</title>
|
||||
|
||||
<note><para>This is just a first attempt at standardising the license
|
||||
attribute.</para></note>
|
||||
|
||||
<para>The <varname>meta.license</varname> attribute must be one of the
|
||||
following:
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>GPL</varname></term>
|
||||
<listitem><para>GNU General Public License; version not
|
||||
specified.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>GPLv2</varname></term>
|
||||
<listitem><para>GNU General Public License, version
|
||||
2.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>GPLv2+</varname></term>
|
||||
<listitem><para>GNU General Public License, version
|
||||
2 or higher.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>GPLv3</varname></term>
|
||||
<listitem><para>GNU General Public License, version
|
||||
3.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>GPLv3+</varname></term>
|
||||
<listitem><para>GNU General Public License, version
|
||||
3 or higher.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>bsd</varname></term>
|
||||
<listitem><para>Catch-all for licenses that are essentially
|
||||
similar to <link
|
||||
xlink:href="http://www.gnu.org/licenses/license-list.html#ModifiedBSD">the
|
||||
original BSD license with the advertising clause removed</link>,
|
||||
i.e. permissive non-copyleft free software licenses. This
|
||||
includes the <link
|
||||
xlink:href="http://www.gnu.org/licenses/license-list.html#X11License">X11
|
||||
(“MIT”) License</link>.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>perl5</varname></term>
|
||||
<listitem><para>The Perl 5 license (Artistic License, version 1
|
||||
and GPL, version 1 or later).</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>free</varname></term>
|
||||
<listitem><para>Catch-all for free software licenses not listed
|
||||
above.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>free-copyleft</varname></term>
|
||||
<listitem><para>Catch-all for free, copyleft software licenses not
|
||||
listed above.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>free-non-copyleft</varname></term>
|
||||
<listitem><para>Catch-all for free, non-copyleft software licenses
|
||||
not listed above.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>unfree-redistributable</varname></term>
|
||||
<listitem><para>Unfree package that can be redistributed in binary
|
||||
form. That is, it’s legal to redistribute the
|
||||
<emphasis>output</emphasis> of the derivation. This means that
|
||||
the package can be included in the Nixpkgs
|
||||
channel.</para>
|
||||
|
||||
<para>Sometimes proprietary software can only be redistributed
|
||||
unmodified. Make sure the builder doesn’t actually modify the
|
||||
original binaries; otherwise we’re breaking the license. For
|
||||
instance, the NVIDIA X11 drivers can be redistributed unmodified,
|
||||
but our builder applies <command>patchelf</command> to make them
|
||||
work. Thus, its license is <varname>unfree</varname> and it
|
||||
cannot be included in the Nixpkgs channel.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>unfree</varname></term>
|
||||
<listitem><para>Unfree package that cannot be redistributed. You
|
||||
can build it yourself, but you cannot redistribute the output of
|
||||
the derivation. Thus it cannot be included in the Nixpkgs
|
||||
channel.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>unfree-redistributable-firmware</varname></term>
|
||||
<listitem><para>This package supplies unfree, redistributable
|
||||
firmware. This is a separate value from
|
||||
<varname>unfree-redistributable</varname> because not everybody
|
||||
cares whether firmware is free.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
</chapter>
|
||||
158
doc/outline.txt
158
doc/outline.txt
@@ -1,158 +0,0 @@
|
||||
- The standard environment
|
||||
|
||||
(Some of this can be moved from the Nix manual)
|
||||
|
||||
- Special attributes
|
||||
|
||||
- Generic builder
|
||||
|
||||
- Helper functions
|
||||
|
||||
- GCC / ld wrapper (+ env vars)
|
||||
|
||||
- Phases (+ how to add phases) and hooks
|
||||
|
||||
- Override functions for stdenv
|
||||
|
||||
- Overriding GCC
|
||||
|
||||
- Overriding the setup script
|
||||
|
||||
- Predefined override functions in all-packages.nix: static binary
|
||||
stdenv, dietlibc stdenv
|
||||
|
||||
- Stdenv bootstrap; how to update the Linux bootstrap binaries
|
||||
|
||||
- Specific platform notes (Linux, Native, Cygwin, Mingw)
|
||||
|
||||
|
||||
- Support for specific languages
|
||||
|
||||
- Perl
|
||||
|
||||
- Generic Perl builder
|
||||
|
||||
- Python
|
||||
|
||||
- Wrapper generation
|
||||
|
||||
- Haskell
|
||||
|
||||
- TODO
|
||||
|
||||
- Java
|
||||
|
||||
- TODO; Java needs lots of improvement
|
||||
|
||||
- TeX/LaTeX
|
||||
|
||||
- Special support for building TeX documents
|
||||
|
||||
|
||||
- Special kinds of applications
|
||||
|
||||
- OpenGL apps
|
||||
|
||||
- Binary-only apps
|
||||
|
||||
- Linux kernel modules
|
||||
|
||||
- Mozilla plugins/extensions
|
||||
|
||||
- X apps
|
||||
|
||||
- KDE apps
|
||||
|
||||
- GConf-based apps
|
||||
|
||||
- Programs that need wrappers
|
||||
|
||||
- makeWrapper etc.
|
||||
|
||||
- Initial ramdisks
|
||||
|
||||
|
||||
- Library functions
|
||||
|
||||
- i.e. in lib/default.nix
|
||||
|
||||
|
||||
- Specific package notes
|
||||
|
||||
- Linux kernel; how to update; feature tests
|
||||
|
||||
- X.org; how to update
|
||||
|
||||
- Gnome; how to update
|
||||
|
||||
- GCC?
|
||||
|
||||
- GHC?
|
||||
|
||||
- ...
|
||||
|
||||
|
||||
- Meta attributes
|
||||
|
||||
- License attr; possible values
|
||||
|
||||
|
||||
- Virtual machine support (for the build farm)
|
||||
|
||||
- vmtools
|
||||
|
||||
- KVM notes
|
||||
|
||||
- Performing a build in a VM
|
||||
|
||||
- In the host FS
|
||||
|
||||
- In a disk image
|
||||
|
||||
- RPM builds
|
||||
|
||||
- RPM image creation
|
||||
|
||||
- Deb builds
|
||||
|
||||
- Deb image creation
|
||||
|
||||
- Debugging VM builds
|
||||
|
||||
|
||||
- Guidelines for Nixpkgs contributions
|
||||
|
||||
- File naming conventions
|
||||
|
||||
- Versioning of packages
|
||||
|
||||
- Tree organisation
|
||||
|
||||
- Variable naming
|
||||
|
||||
- Layout / indentations style
|
||||
|
||||
- Output FS hierarchy (e.g. $out/share/man instead of $out/man)
|
||||
|
||||
|
||||
- Misc
|
||||
|
||||
- Building outside of the Nixpkgs tree
|
||||
|
||||
- Config options
|
||||
|
||||
- Downloading stuff
|
||||
|
||||
- fetchurl
|
||||
|
||||
- mirror:// scheme
|
||||
|
||||
- fetchsvn
|
||||
|
||||
- fetchcvs
|
||||
|
||||
- fetchdarcs
|
||||
|
||||
|
||||
- Appendix: Nixpkgs config options
|
||||
|
||||
@@ -1,246 +0,0 @@
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xml:id="chap-package-notes">
|
||||
|
||||
<title>Package Notes</title>
|
||||
|
||||
<para>This chapter contains information about how to use and maintain
|
||||
the Nix expressions for a number of specific packages, such as the
|
||||
Linux kernel or X.org.</para>
|
||||
|
||||
|
||||
<!--============================================================-->
|
||||
|
||||
<section xml:id="sec-linux-kernel">
|
||||
|
||||
<title>Linux kernel</title>
|
||||
|
||||
<para>The Nix expressions to build the Linux kernel are in <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/os-specific/linux/kernel"><filename>pkgs/os-specific/linux/kernel</filename></link>.</para>
|
||||
|
||||
<para>The function that builds the kernel has an argument
|
||||
<varname>kernelPatches</varname> which should be a list of
|
||||
<literal>{name, patch, extraConfig}</literal> attribute sets, where
|
||||
<varname>name</varname> is the name of the patch (which is included in
|
||||
the kernel’s <varname>meta.description</varname> attribute),
|
||||
<varname>patch</varname> is the patch itself (possibly compressed),
|
||||
and <varname>extraConfig</varname> (optional) is a string specifying
|
||||
extra options to be concatenated to the kernel configuration file
|
||||
(<filename>.config</filename>).</para>
|
||||
|
||||
<para>The kernel derivation exports an attribute
|
||||
<varname>features</varname> specifying whether optional functionality
|
||||
is or isn’t enabled. This is used in NixOS to implement
|
||||
kernel-specific behaviour. For instance, if the kernel has the
|
||||
<varname>iwlwifi</varname> feature (i.e. has built-in support for
|
||||
Intel wireless chipsets), then NixOS doesn’t have to build the
|
||||
external <varname>iwlwifi</varname> package:
|
||||
|
||||
<programlisting>
|
||||
modulesTree = [kernel]
|
||||
++ pkgs.lib.optional (!kernel.features ? iwlwifi) kernelPackages.iwlwifi
|
||||
++ ...;
|
||||
</programlisting>
|
||||
|
||||
</para>
|
||||
|
||||
<para>How to add a new (major) version of the Linux kernel to Nixpkgs:
|
||||
|
||||
<orderedlist>
|
||||
|
||||
<listitem>
|
||||
<para>Copy the old Nix expression
|
||||
(e.g. <filename>linux-2.6.21.nix</filename>) to the new one
|
||||
(e.g. <filename>linux-2.6.22.nix</filename>) and update it.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Add the new kernel to <filename>all-packages.nix</filename>
|
||||
(e.g., create an attribute
|
||||
<varname>kernel_2_6_22</varname>).</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Now we’re going to update the kernel configuration. First
|
||||
unpack the kernel. Then for each supported platform
|
||||
(<literal>i686</literal>, <literal>x86_64</literal>,
|
||||
<literal>uml</literal>) do the following:
|
||||
|
||||
<orderedlist>
|
||||
|
||||
<listitem>
|
||||
<para>Make an copy from the old
|
||||
config (e.g. <filename>config-2.6.21-i686-smp</filename>) to
|
||||
the new one
|
||||
(e.g. <filename>config-2.6.22-i686-smp</filename>).</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Copy the config file for this platform
|
||||
(e.g. <filename>config-2.6.22-i686-smp</filename>) to
|
||||
<filename>.config</filename> in the kernel source tree.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Run <literal>make oldconfig
|
||||
ARCH=<replaceable>{i386,x86_64,um}</replaceable></literal>
|
||||
and answer all questions. (For the uml configuration, also
|
||||
add <literal>SHELL=bash</literal>.) Make sure to keep the
|
||||
configuration consistent between platforms (i.e. don’t
|
||||
enable some feature on <literal>i686</literal> and disable
|
||||
it on <literal>x86_64</literal>).
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>If needed you can also run <literal>make
|
||||
menuconfig</literal>:
|
||||
|
||||
<screen>
|
||||
$ nix-env -i ncurses
|
||||
$ export NIX_CFLAGS_LINK=-lncurses
|
||||
$ make menuconfig ARCH=<replaceable>arch</replaceable></screen>
|
||||
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Make sure that
|
||||
<literal>CONFIG_FB_TILEBLITTING</literal> is <emphasis>not
|
||||
set</emphasis> (otherwise <command>fbsplash</command> won't
|
||||
work). This option has a tendency to be enabled as a
|
||||
side-effect of other options. If it is, investigate why
|
||||
(there's probably another option that forces it to be on)
|
||||
and fix it.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Copy <filename>.config</filename> over the new config
|
||||
file (e.g. <filename>config-2.6.22-i686-smp</filename>).</para>
|
||||
</listitem>
|
||||
|
||||
</orderedlist>
|
||||
|
||||
</para>
|
||||
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Test building the kernel: <literal>nix-build -A
|
||||
kernel_2_6_22</literal>. If it compiles, ship it! For extra
|
||||
credit, try booting NixOS with it.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>It may be that the new kernel requires updating the external
|
||||
kernel modules and kernel-dependent packages listed in the
|
||||
<varname>kernelPackagesFor</varname> function in
|
||||
<filename>all-packages.nix</filename> (such as the NVIDIA drivers,
|
||||
AUFS, splashutils, etc.). If the updated packages aren’t
|
||||
backwards compatible with older kernels, you need to keep the
|
||||
older versions and use some conditionals. For example, new
|
||||
kernels require splashutils 1.5 while old kernel require 1.3, so
|
||||
<varname>kernelPackagesFor</varname> says:
|
||||
|
||||
<programlisting>
|
||||
splashutils =
|
||||
if kernel.features ? fbSplash then splashutils_13 else
|
||||
if kernel.features ? fbConDecor then splashutils_15 else
|
||||
null;
|
||||
|
||||
splashutils_13 = ...;
|
||||
splashutils_15 = ...;</programlisting>
|
||||
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</orderedlist>
|
||||
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<!--============================================================-->
|
||||
|
||||
<section>
|
||||
|
||||
<title>X.org</title>
|
||||
|
||||
<para>The Nix expressions for the X.org packages reside in
|
||||
<filename>pkgs/servers/x11/xorg/default.nix</filename>. This file is
|
||||
automatically generated from lists of tarballs in an X.org release.
|
||||
As such it should not be modified directly; rather, you should modify
|
||||
the lists, the generator script or the file
|
||||
<filename>pkgs/servers/x11/xorg/overrides.nix</filename>, in which you
|
||||
can override or add to the derivations produced by the
|
||||
generator.</para>
|
||||
|
||||
<para>The generator is invoked as follows:
|
||||
|
||||
<screen>
|
||||
$ cd pkgs/servers/x11/xorg
|
||||
$ cat tarballs-7.5.list extra.list old.list \
|
||||
| perl ./generate-expr-from-tarballs.pl
|
||||
</screen>
|
||||
|
||||
For each of the tarballs in the <filename>.list</filename> files, the
|
||||
script downloads it, unpacks it, and searches its
|
||||
<filename>configure.ac</filename> and <filename>*.pc.in</filename>
|
||||
files for dependencies. This information is used to generate
|
||||
<filename>default.nix</filename>. The generator caches downloaded
|
||||
tarballs between runs. Pay close attention to the <literal>NOT FOUND:
|
||||
<replaceable>name</replaceable></literal> messages at the end of the
|
||||
run, since they may indicate missing dependencies. (Some might be
|
||||
optional dependencies, however.)</para>
|
||||
|
||||
<para>A file like <filename>tarballs-7.5.list</filename> contains all
|
||||
tarballs in a X.org release. It can be generated like this:
|
||||
|
||||
<screen>
|
||||
$ export i="mirror://xorg/X11R7.4/src/everything/"
|
||||
$ cat $(PRINT_PATH=1 nix-prefetch-url $i | tail -n 1) \
|
||||
| perl -e 'while (<>) { if (/(href|HREF)="([^"]*.bz2)"/) { print "$ENV{'i'}$2\n"; }; }' \
|
||||
| sort > tarballs-7.4.list
|
||||
</screen>
|
||||
|
||||
<filename>extra.list</filename> contains libraries that aren’t part of
|
||||
X.org proper, but are closely related to it, such as
|
||||
<literal>libxcb</literal>. <filename>old.list</filename> contains
|
||||
some packages that were removed from X.org, but are still needed by
|
||||
some people or by other packages (such as
|
||||
<varname>imake</varname>).</para>
|
||||
|
||||
<para>If the expression for a package requires derivation attributes
|
||||
that the generator cannot figure out automatically (say,
|
||||
<varname>patches</varname> or a <varname>postInstall</varname> hook),
|
||||
you should modify
|
||||
<filename>pkgs/servers/x11/xorg/overrides.nix</filename>.</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<!--============================================================-->
|
||||
|
||||
<!--
|
||||
<section>
|
||||
<title>Gnome</title>
|
||||
<para>* Expression is auto-generated</para>
|
||||
<para>* How to update</para>
|
||||
</section>
|
||||
-->
|
||||
|
||||
|
||||
<!--============================================================-->
|
||||
|
||||
<!--
|
||||
<section>
|
||||
<title>GCC</title>
|
||||
<para>…</para>
|
||||
</section>
|
||||
-->
|
||||
|
||||
|
||||
</chapter>
|
||||
@@ -1,239 +0,0 @@
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xml:id="chap-quick-start">
|
||||
|
||||
<title>Quick Start to Adding a Package</title>
|
||||
|
||||
<para>To add a package to Nixpkgs:
|
||||
|
||||
<orderedlist>
|
||||
|
||||
<listitem>
|
||||
<para>Checkout the Nixpkgs source tree:
|
||||
|
||||
<screen>
|
||||
$ git clone git://github.com/NixOS/nixpkgs.git
|
||||
$ cd nixpkgs</screen>
|
||||
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Find a good place in the Nixpkgs tree to add the Nix
|
||||
expression for your package. For instance, a library package
|
||||
typically goes into
|
||||
<filename>pkgs/development/libraries/<replaceable>pkgname</replaceable></filename>,
|
||||
while a web browser goes into
|
||||
<filename>pkgs/applications/networking/browsers/<replaceable>pkgname</replaceable></filename>.
|
||||
See <xref linkend="sec-organisation" /> for some hints on the tree
|
||||
organisation. Create a directory for your package, e.g.
|
||||
|
||||
<screen>
|
||||
$ mkdir pkgs/development/libraries/libfoo</screen>
|
||||
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>In the package directory, create a Nix expression — a piece
|
||||
of code that describes how to build the package. In this case, it
|
||||
should be a <emphasis>function</emphasis> that is called with the
|
||||
package dependencies as arguments, and returns a build of the
|
||||
package in the Nix store. The expression should usually be called
|
||||
<filename>default.nix</filename>.
|
||||
|
||||
<screen>
|
||||
$ emacs pkgs/development/libraries/libfoo/default.nix
|
||||
$ git add pkgs/development/libraries/libfoo/default.nix</screen>
|
||||
|
||||
</para>
|
||||
|
||||
<para>You can have a look at the existing Nix expressions under
|
||||
<filename>pkgs/</filename> to see how it’s done. Here are some
|
||||
good ones:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>GNU cpio: <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/archivers/cpio/default.nix"><filename>pkgs/tools/archivers/cpio/default.nix</filename></link>.
|
||||
The simplest possible package. The generic builder in
|
||||
<varname>stdenv</varname> does everything for you. It has
|
||||
no dependencies beyond <varname>stdenv</varname>.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>GNU Hello: <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/misc/hello/ex-2/default.nix"><filename>pkgs/applications/misc/hello/ex-2/default.nix</filename></link>.
|
||||
Also trivial, but it specifies some <varname>meta</varname>
|
||||
attributes which is good practice.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>GNU Multiple Precision arithmetic library (GMP): <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/gmp/default.nix"><filename>pkgs/development/libraries/gmp/default.nix</filename></link>.
|
||||
Also done by the generic builder, but has a dependency on
|
||||
<varname>m4</varname>.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Pan, a GTK-based newsreader: <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/networking/newsreaders/pan/default.nix"><filename>pkgs/applications/networking/newsreaders/pan/default.nix</filename></link>.
|
||||
Has an optional dependency on <varname>gtkspell</varname>,
|
||||
which is only built if <varname>spellCheck</varname> is
|
||||
<literal>true</literal>.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Apache HTTPD: <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/http/apache-httpd/default.nix"><filename>pkgs/servers/http/apache-httpd/default.nix</filename></link>.
|
||||
A bunch of optional features, variable substitutions in the
|
||||
configure flags, a post-install hook, and miscellaneous
|
||||
hackery.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>BitTorrent (wxPython-based): <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/networking/p2p/bittorrent/default.nix"><filename>pkgs/tools/networking/p2p/bittorrent/default.nix</filename></link>.
|
||||
Uses an external <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/networking/p2p/bittorrent/builder.sh">build
|
||||
script</link>, which can be useful if you have lots of code
|
||||
that you don’t want cluttering up the Nix expression. But
|
||||
external builders are mostly obsolete.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Thunderbird: <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/networking/mailreaders/thunderbird/3.x.nix"><filename>pkgs/applications/networking/mailreaders/thunderbird/3.x.nix</filename></link>.
|
||||
Lots of dependencies.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>JDiskReport, a Java utility: <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/misc/jdiskreport/default.nix"><filename>pkgs/tools/misc/jdiskreport/default.nix</filename></link>
|
||||
(and the <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/misc/jdiskreport/builder.sh">builder</link>).
|
||||
Nixpkgs doesn’t have a decent <varname>stdenv</varname> for
|
||||
Java yet so this is pretty ad-hoc.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>XML::Simple, a Perl module: <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/perl-packages.nix"><filename>pkgs/top-level/perl-packages.nix</filename></link>
|
||||
(search for the <varname>XMLSimple</varname> attribute).
|
||||
Most Perl modules are so simple to build that they are
|
||||
defined directly in <filename>perl-packages.nix</filename>;
|
||||
no need to make a separate file for them.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Adobe Reader: <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/misc/adobe-reader/default.nix"><filename>pkgs/applications/misc/adobe-reader/default.nix</filename></link>.
|
||||
Shows how binary-only packages can be supported. In
|
||||
particular the <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/misc/adobe-reader/builder.sh">builder</link>
|
||||
uses <command>patchelf</command> to set the RUNPATH and ELF
|
||||
interpreter of the executables so that the right libraries
|
||||
are found at runtime.</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
|
||||
<para>Some notes:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>All <varname linkend="chap-meta">meta</varname>
|
||||
attributes are optional, but it’s still a good idea to
|
||||
provide at least the <varname>description</varname>,
|
||||
<varname>homepage</varname> and <varname
|
||||
linkend="sec-meta-license">license</varname>.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>You can use <command>nix-prefetch-url</command>
|
||||
<replaceable>url</replaceable> to get the SHA-256 hash of
|
||||
source distributions.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>A list of schemes for <literal>mirror://</literal>
|
||||
URLs can be found in <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/fetchurl/mirrors.nix"><filename>pkgs/build-support/fetchurl/mirrors.nix</filename></link>.</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
|
||||
<para>The exact syntax and semantics of the Nix expression
|
||||
language, including the built-in function, are described in the
|
||||
Nix manual in the <link
|
||||
xlink:href="http://hydra.nixos.org/job/nix/trunk/tarball/latest/download-by-type/doc/manual/#chap-writing-nix-expressions">chapter
|
||||
on writing Nix expressions</link>.</para>
|
||||
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Add a call to the function defined in the previous step to
|
||||
<link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/all-packages.nix"><filename>pkgs/top-level/all-packages.nix</filename></link>
|
||||
with some descriptive name for the variable,
|
||||
e.g. <varname>libfoo</varname>.
|
||||
|
||||
<screen>
|
||||
$ emacs pkgs/top-level/all-packages.nix</screen>
|
||||
|
||||
</para>
|
||||
|
||||
<para>The attributes in that file are sorted by category (like
|
||||
“Development / Libraries”) that more-or-less correspond to the
|
||||
directory structure of Nixpkgs, and then by attribute name.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Test whether the package builds:
|
||||
|
||||
<screen>
|
||||
$ nix-build -A libfoo</screen>
|
||||
|
||||
where <varname>libfoo</varname> should be the variable name
|
||||
defined in the previous step. You may want to add the flag
|
||||
<option>-K</option> to keep the temporary build directory in case
|
||||
something fails. If the build succeeds, a symlink
|
||||
<filename>./result</filename> to the package in the Nix store is
|
||||
created.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>If you want to install the package into your profile
|
||||
(optional), do
|
||||
|
||||
<screen>
|
||||
$ nix-env -f . -iA libfoo</screen>
|
||||
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Optionally commit the new package, or send a patch to
|
||||
<literal>nix-dev@cs.uu.nl</literal>.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>If you want the TU Delft build farm to build binaries of the
|
||||
package and make them available in the <link
|
||||
xlink:href="http://nixos.org/releases/nixpkgs/channels/nixpkgs-unstable/"><literal>nixpkgs</literal>
|
||||
channel</link>, add it to <link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/release.nix"><filename>pkgs/top-level/release.nix</filename></link>.</para>
|
||||
</listitem>
|
||||
|
||||
</orderedlist>
|
||||
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
@@ -5,134 +5,6 @@
|
||||
<title>Nixpkgs Release Notes</title>
|
||||
|
||||
|
||||
<section><title>Release 0.14 (June 4, 2012)</title>
|
||||
|
||||
<para>In preparation for the switch from Subversion to Git, this
|
||||
release is mainly the prevent the Nixpkgs version number from going
|
||||
backwards. (This would happen because prerelease version numbers
|
||||
produced for the Git repository are lower than those for the
|
||||
Subversion repository.)</para>
|
||||
|
||||
<para>Since the last release, there have been thousands of changes and
|
||||
new packages by numerous contributors. For details, see the commit
|
||||
logs.</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section><title>Release 0.13 (February 5, 2010)</title>
|
||||
|
||||
<para>As always, there are many changes. Some of the most important
|
||||
updates are:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Glibc 2.9.</para></listitem>
|
||||
|
||||
<listitem><para>GCC 4.3.3.</para></listitem>
|
||||
|
||||
<listitem><para>Linux 2.6.32.</para></listitem>
|
||||
|
||||
<listitem><para>X.org 7.5.</para></listitem>
|
||||
|
||||
<listitem><para>KDE 4.3.4.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section><title>Release 0.12 (April 24, 2009)</title>
|
||||
|
||||
<para>There are way too many additions to Nixpkgs since the last
|
||||
release to list here: for example, the number of packages on Linux has
|
||||
increased from 1002 to 2159. However, some specific improvements are
|
||||
worth listing:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Nixpkgs now has a manual. In particular, it
|
||||
describes the standard build environment in
|
||||
detail.</para></listitem>
|
||||
|
||||
<listitem><para>Major new packages:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>KDE 4.</para></listitem>
|
||||
|
||||
<listitem><para>TeXLive.</para></listitem>
|
||||
|
||||
<listitem><para>VirtualBox.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
… and many others.
|
||||
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>Important updates:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Glibc 2.7.</para></listitem>
|
||||
|
||||
<listitem><para>GCC 4.2.4.</para></listitem>
|
||||
|
||||
<listitem><para>Linux 2.6.25 — 2.6.28.</para></listitem>
|
||||
|
||||
<listitem><para>Firefox 3.</para></listitem>
|
||||
|
||||
<listitem><para>X.org 7.3.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>Support for building derivations in a virtual
|
||||
machine, including RPM and Debian builds in automatically generated
|
||||
VM images. See
|
||||
<filename>pkgs/build-support/vm/default.nix</filename> for
|
||||
details.</para></listitem>
|
||||
|
||||
<listitem><para>Improved support for building Haskell
|
||||
packages.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
|
||||
<para>The following people contributed to this release:
|
||||
|
||||
Andres Löh,
|
||||
Arie Middelkoop,
|
||||
Armijn Hemel,
|
||||
Eelco Dolstra,
|
||||
Lluís Batlle,
|
||||
Ludovic Courtès,
|
||||
Marc Weber,
|
||||
Mart Kolthof,
|
||||
Martin Bravenboer,
|
||||
Michael Raskin,
|
||||
Nicolas Pierron,
|
||||
Peter Simons,
|
||||
Pjotr Prins,
|
||||
Rob Vermaas,
|
||||
Sander van der Burg,
|
||||
Tobias Hammerschmidt,
|
||||
Valentin David,
|
||||
Wouter den Breejen and
|
||||
Yury G. Kudryashov.
|
||||
|
||||
In addition, several people contributed patches on the
|
||||
<literal>nix-dev</literal> mailing list.</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section><title>Release 0.11 (September 11, 2007)</title>
|
||||
|
||||
<para>This release has the following improvements:
|
||||
@@ -237,12 +109,12 @@ fetchurl {
|
||||
|
||||
<function>fetchurl</function> will first try to download this file
|
||||
from <link
|
||||
xlink:href="http://nixos.org/tarballs/sha1/eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"/>.
|
||||
xlink:href="http://nix.cs.uu.nl/dist/tarballs/sha1/eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"/>.
|
||||
If that file doesn’t exist, it will try the original URL. In
|
||||
general, the “content-addressed” location is
|
||||
<replaceable>mirror</replaceable><literal>/</literal><replaceable>hash-type</replaceable><literal>/</literal><replaceable>hash</replaceable>.
|
||||
There is currently only one content-addressable mirror (<link
|
||||
xlink:href="http://nixos.org/tarballs"/>), but more can be
|
||||
xlink:href="http://nix.cs.uu.nl/dist/tarballs"/>), but more can be
|
||||
specified in the <varname>hashedMirrors</varname> attribute in
|
||||
<filename>pkgs/build-support/fetchurl/mirrors.nix</filename>, or by
|
||||
setting the <envar>NIX_HASHED_MIRRORS</envar> environment variable
|
||||
@@ -337,7 +209,7 @@ export NIX_MIRRORS_sourceforge=http://osdn.dl.sourceforge.net/sourceforge/</prog
|
||||
<section><title>Release 0.10 (October 12, 2006)</title>
|
||||
|
||||
<note><para>This release of Nixpkgs requires <link
|
||||
xlink:href='http://nixos.org/releases/nix/nix-0.10/'>Nix
|
||||
xlink:href='http://nix.cs.uu.nl/dist/nix/nix-0.10/'>Nix
|
||||
0.10</link> or higher.</para></note>
|
||||
|
||||
<para>This release has the following improvements:</para>
|
||||
@@ -543,7 +415,7 @@ some of the more notable changes:</para>
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Distribution files have been moved to <link
|
||||
xlink:href="http://nixos.org/" />.</para></listitem>
|
||||
xlink:href="http://nix.cs.uu.nl/" />.</para></listitem>
|
||||
|
||||
<listitem><para>The C library on Linux, Glibc, has been updated to
|
||||
version 2.3.6.</para></listitem>
|
||||
|
||||
1184
doc/stdenv.xml
1184
doc/stdenv.xml
File diff suppressed because it is too large
Load Diff
116
doc/style.css
116
doc/style.css
@@ -8,14 +8,15 @@
|
||||
|
||||
body
|
||||
{
|
||||
font-family: "Nimbus Sans L", sans-serif;
|
||||
font-family: sans-serif;
|
||||
background: white;
|
||||
margin: 2em 1em 2em 1em;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4
|
||||
h1,h2,h3
|
||||
{
|
||||
color: #005aa0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1 /* title */
|
||||
@@ -45,11 +46,6 @@ h3 /* subsections */
|
||||
font-size: 125%;
|
||||
}
|
||||
|
||||
div.simplesect h2
|
||||
{
|
||||
font-size: 110%;
|
||||
}
|
||||
|
||||
div.appendix h3
|
||||
{
|
||||
font-size: 150%;
|
||||
@@ -74,13 +70,11 @@ div.refsection h3
|
||||
|
||||
div.example
|
||||
{
|
||||
border: 1px solid #b0b0b0;
|
||||
border: 1px solid #6185a0;
|
||||
padding: 6px 6px;
|
||||
margin-left: 1.5em;
|
||||
margin-right: 1.5em;
|
||||
background: #f4f4f8;
|
||||
border-radius: 0.4em;
|
||||
box-shadow: 0.4em 0.4em 0.5em #e0e0e0;
|
||||
}
|
||||
|
||||
div.example p.title
|
||||
@@ -88,11 +82,6 @@ div.example p.title
|
||||
margin-top: 0em;
|
||||
}
|
||||
|
||||
div.example pre
|
||||
{
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Screen dumps:
|
||||
@@ -100,15 +89,14 @@ div.example pre
|
||||
|
||||
pre.screen, pre.programlisting
|
||||
{
|
||||
border: 1px solid #b0b0b0;
|
||||
border: 1px solid #6185a0;
|
||||
padding: 3px 3px;
|
||||
margin-left: 1.5em;
|
||||
margin-right: 1.5em;
|
||||
color: #600000;
|
||||
background: #f4f4f8;
|
||||
font-family: monospace;
|
||||
border-radius: 0.4em;
|
||||
box-shadow: 0.4em 0.4em 0.5em #e0e0e0;
|
||||
/* font-size: 90%; */
|
||||
}
|
||||
|
||||
div.example pre.programlisting
|
||||
@@ -125,15 +113,13 @@ div.example pre.programlisting
|
||||
|
||||
.note, .warning
|
||||
{
|
||||
border: 1px solid #b0b0b0;
|
||||
border: 1px solid #6185a0;
|
||||
padding: 3px 3px;
|
||||
margin-left: 1.5em;
|
||||
margin-right: 1.5em;
|
||||
margin-bottom: 1em;
|
||||
padding: 0.3em 0.3em 0.3em 0.3em;
|
||||
background: #fffff5;
|
||||
border-radius: 0.4em;
|
||||
box-shadow: 0.4em 0.4em 0.5em #e0e0e0;
|
||||
}
|
||||
|
||||
div.note, div.warning
|
||||
@@ -145,6 +131,7 @@ div.note h3, div.warning h3
|
||||
{
|
||||
color: red;
|
||||
font-size: 100%;
|
||||
// margin: 0 0 0 0;
|
||||
padding-right: 0.5em;
|
||||
display: inline;
|
||||
}
|
||||
@@ -175,26 +162,20 @@ div.navfooter *
|
||||
Links colors and highlighting:
|
||||
***************************************************************************/
|
||||
|
||||
a { text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
a:link { color: #0048b3; }
|
||||
a:visited { color: #002a6a; }
|
||||
a:hover { background: #ffffcd; }
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Table of contents:
|
||||
***************************************************************************/
|
||||
|
||||
div.toc
|
||||
.toc
|
||||
{
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
div.toc dl
|
||||
{
|
||||
margin-top: 0em;
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
@@ -227,29 +208,76 @@ div.glosslist dt
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.default
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.availability
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.varname
|
||||
{
|
||||
color: #400000;
|
||||
}
|
||||
|
||||
span.command strong
|
||||
|
||||
div.informaltable table
|
||||
{
|
||||
font-weight: normal;
|
||||
border: 1px solid #6185a0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div.informaltable td
|
||||
{
|
||||
border: 0;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
div.informaltable td.default
|
||||
{
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.informaltable th
|
||||
{
|
||||
text-align: left;
|
||||
color: #005aa0;
|
||||
border: 0;
|
||||
padding: 5px;
|
||||
background: #fffff5;
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
td.varname, td.tagname, td.paramname
|
||||
{
|
||||
font-weight: bold;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.epigraph
|
||||
{
|
||||
font-style: italic;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
table.productionset table.productionset
|
||||
{
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
strong.command
|
||||
{
|
||||
// font-family: monospace;
|
||||
// font-style: italic;
|
||||
// font-weight: normal;
|
||||
color: #400000;
|
||||
}
|
||||
|
||||
div.calloutlist table
|
||||
div.calloutlist td
|
||||
{
|
||||
box-shadow: none;
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
|
||||
table
|
||||
{
|
||||
border-collapse: collapse;
|
||||
box-shadow: 0.4em 0.4em 0.5em #e0e0e0;
|
||||
}
|
||||
|
||||
div.affiliation
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
49
maintainers/docs/bugs.txt
Normal file
49
maintainers/docs/bugs.txt
Normal file
@@ -0,0 +1,49 @@
|
||||
*** All these bugs should be moved to JIRA (if they still exist) ***
|
||||
|
||||
|
||||
* If NIX_DEBUG is turned on (set to "1"), autoconf configure scripts
|
||||
may fail to find the correct preprocessor:
|
||||
|
||||
checking how to run the C preprocessor... /lib/cpp
|
||||
|
||||
|
||||
* When building gcc using a Nix gcc, generated libraries link against
|
||||
the libraries of the latter:
|
||||
|
||||
$ ldd /nix/store/3b1d3995c4edbf026be5c73f66f69245-gcc-3.3.3/lib/libstdc++.so
|
||||
...
|
||||
libgcc_s.so.1 => /nix/store/1f19e61d1b7051f1131f78b41b2a0e7e-gcc-3.3.2/lib/libgcc_s.so.1 (0x400de000)
|
||||
(wrong! should be .../3b1d.../lib/libgcc_s...)
|
||||
...
|
||||
|
||||
|
||||
* In libXt:
|
||||
|
||||
/bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DXTHREADS -DXUSE_MTSAFE_API -I/nix/store/aadf0bd4a908da11d14f6538503b8408-libX11-6.2.1/include -I/nix/store/ba366e3b944ead64ec9b0490bb615874-xproto-6.6.1/include -I./include/X11 -g -O2 -c -o ActionHook.lo `test -f 'ActionHook.c' || echo './'`ActionHook.c
|
||||
mkdir .libs
|
||||
gcc -DHAVE_CONFIG_H -I. -I. -I. -DXTHREADS -DXUSE_MTSAFE_API -I/nix/store/aadf0bd4a908da11d14f6538503b8408-libX11-6.2.1/include -I/nix/store/ba366e3b944ead64ec9b0490bb615874-xproto-6.6.1/include -I./include/X11 -g -O2 -c ActionHook.c -fPIC -DPIC -o .libs/ActionHook.o
|
||||
In file included from IntrinsicI.h:55,
|
||||
from ActionHook.c:69:
|
||||
include/X11/IntrinsicP.h:54:27: X11/Intrinsic.h: No such file or directory
|
||||
|
||||
|
||||
* Then:
|
||||
|
||||
gcc -DHAVE_CONFIG_H -I. -I. -I. -DXTHREADS -DXUSE_MTSAFE_API -I/nix/store/aadf0bd4a908da11d14f6538503b8408-libX11-6.2.1/include -I/nix/store/ba366e3b944ead64ec9b0490bb615874-xproto-6.6.1/include -I./include -I./include/X11 -g -O2 -c ActionHook.c -fPIC -DPIC -o .libs/ActionHook.o
|
||||
In file included from IntrinsicI.h:55,
|
||||
from ActionHook.c:69:
|
||||
include/X11/IntrinsicP.h:202:25: X11/ObjectP.h: No such file or directory
|
||||
|
||||
(moved to include/X11; should edit include/Makefile.am)
|
||||
|
||||
|
||||
* In gtksourceview-sharp: does the prefix patch cause problems (e.g.,
|
||||
makefile.am says "mimeinfodir should be the same as the gnome
|
||||
prefix")?
|
||||
|
||||
|
||||
* fgrep/egrep: these fail if grep is not in the $PATH.
|
||||
|
||||
|
||||
* teTeX: some programs (such as epstopdf) depend on /usr/bin/env, and
|
||||
expect perl to be in the environment.
|
||||
116
maintainers/docs/classification.txt
Normal file
116
maintainers/docs/classification.txt
Normal file
@@ -0,0 +1,116 @@
|
||||
* Classification scheme for packages
|
||||
|
||||
- many packages fall under several categories; what matters is the
|
||||
*primary* purpose of a package. For example, the libxml2 package
|
||||
builds both a library and some tools; but it's a library foremost,
|
||||
so it goes under ./development/libraries.
|
||||
|
||||
- when in doubt, refactor.
|
||||
|
||||
IF it's used to support SOFTWARE DEVELOPMENT:
|
||||
|
||||
IF it's a LIBRARY used by other packages:
|
||||
IF it's directly related to GTK:
|
||||
./development/libraries/gtk+
|
||||
ELSE
|
||||
./development/libraries
|
||||
(e.g., libxml2)
|
||||
ELSE IF it's a COMPILER:
|
||||
./development/compilers
|
||||
(e.g., gcc)
|
||||
ELSE IF it's an INTERPRETER:
|
||||
./development/interpreters
|
||||
ELSE IF it's a development TOOL (or set of):
|
||||
IF it's a PARSER GENERATOR (incl. lexers):
|
||||
./development/tools/parsing
|
||||
(e.g., bison, flex)
|
||||
ELSE IF it's a BUILD MANAGER:
|
||||
./development/tools/build-managers
|
||||
(e.g., gnumake
|
||||
ELSE
|
||||
./development/tools/misc
|
||||
(e.g., binutils)
|
||||
ELSE
|
||||
./development/misc
|
||||
|
||||
ELSE IF it's a TOOL (or set of):
|
||||
# a tool is a relatively *small* program, esp. one intented to be
|
||||
# used non-interactively
|
||||
|
||||
IF it's for NETWORKING:
|
||||
./tools/networking
|
||||
(e.g., wget)
|
||||
ELSE IF it's for TEXT PROCESSING:
|
||||
./tools/text
|
||||
(e.g., diffutils)
|
||||
ELSE IF it's a SYSTEM utility, i.e., something related or essential
|
||||
to the operation of a system:
|
||||
./tools/system
|
||||
(e.g., init)
|
||||
ELSE IF it's an ARCHIVER (which may include a compression function):
|
||||
./tools/archivers
|
||||
(e.g., zip, tar)
|
||||
ELSE IF it's a COMPRESSION program:
|
||||
./tools/compression
|
||||
(e.g., gzip, bzip2)
|
||||
ELSE IF it's a SECURITY program:
|
||||
./tools/security
|
||||
(e.g., nmap, gnupg)
|
||||
ELSE
|
||||
./tools/misc
|
||||
|
||||
ELSE IF it's a SHELL:
|
||||
|
||||
./shells
|
||||
|
||||
ELSE IF it's a SERVER:
|
||||
|
||||
IF it's a HTTP server:
|
||||
./servers/http
|
||||
(e.g., apache)
|
||||
IF it's a X11 server:
|
||||
./servers/x11
|
||||
(e.g., xfree86)
|
||||
ELSE
|
||||
./servers/misc
|
||||
|
||||
ELSE IF it's a DESKTOP ENVIRONMENT (incl. WINDOW MANAGERS):
|
||||
|
||||
./desktops
|
||||
(e.g., kde, gnome, fvwm)
|
||||
|
||||
ELSE IF it's an APPLICATION:
|
||||
# a (typically large) program with a distinct user interface,
|
||||
# primarily used interactively
|
||||
|
||||
IF it's a VERSION MANAGEMENT system:
|
||||
./applications/version-management
|
||||
ELSE IF it's for VIDEO playback/etc:
|
||||
./applications/video
|
||||
ELSE IF it's for GRAPHICS viewing/editing/etc:
|
||||
./applications/graphics
|
||||
ELSE IF it's for NETWORKING:
|
||||
IF it's a MAILREADER:
|
||||
./applications/networking/mailreaders
|
||||
IF it's a NEWSREADER:
|
||||
./applications/networking/newsreaders
|
||||
ELSE
|
||||
./applications/networking/misc
|
||||
ELSE
|
||||
./applications/misc
|
||||
|
||||
ELSE IF it's DATA (i.e., does not have a straight-forward executable semantics):
|
||||
|
||||
IF it's related to SGML/XML processing:
|
||||
IF it's a XML DTD:
|
||||
./data/sgml+xml/schemas/xml-dtd
|
||||
ELSE IF it's an XSLT stylesheet (okay, these are executable...):
|
||||
./data/sgml+xml/stylesheets/xslt
|
||||
|
||||
ELSE IF it's a GAME:
|
||||
|
||||
./games
|
||||
|
||||
ELSE:
|
||||
|
||||
./misc
|
||||
31
maintainers/docs/create-new-static-env
Normal file
31
maintainers/docs/create-new-static-env
Normal file
@@ -0,0 +1,31 @@
|
||||
Creating a new static stdenv
|
||||
----------------------------
|
||||
|
||||
When Nix is ported to a new (Linux) platform and you want to have a completely
|
||||
pure setup for the stdenv (for example for NixOS) it is necessary to rebuild
|
||||
the static tools.
|
||||
|
||||
The challenge is that there is no Nix environment yet, for bootstrapping.
|
||||
The first task is to create all the tools that are necessary. For most tools
|
||||
there are ready made Nix expressions.
|
||||
|
||||
|
||||
GCC
|
||||
|
||||
There is an expression gcc-static-3.4. Depending on whether or not you already
|
||||
have an environment built with Nix (x86-linux: yes, rest: not yet) you should
|
||||
set the noSysDirs parameter in all-packages.nix. If there is an environment,
|
||||
leave it, but if the system is still impure (like most systems), set noSysDirs
|
||||
to false.
|
||||
|
||||
bash
|
||||
|
||||
There is an expression for bash-static. Simply build it.
|
||||
|
||||
bzip2
|
||||
|
||||
There is an expression for bzip2-static. Simply build it.
|
||||
|
||||
findutils
|
||||
|
||||
There is an expression for findutils-static. Simply build it.
|
||||
@@ -233,9 +233,9 @@ preConfigure() {
|
||||
fi
|
||||
|
||||
# Cross compiler evilness
|
||||
mkdir -p $out
|
||||
mkdir -p $out/arm-linux
|
||||
mkdir -p $out/arm-linux/bin
|
||||
ensureDir $out
|
||||
ensureDir $out/arm-linux
|
||||
ensureDir $out/arm-linux/bin
|
||||
ln -s $binutilsArm/arm-linux/bin/as $out/arm-linux/bin/as
|
||||
ln -s $binutilsArm/arm-linux/bin/ld $out/arm-linux/bin/ld
|
||||
ln -s $binutilsArm/arm-linux/bin/ar $out/arm-linux/bin/ar
|
||||
|
||||
35
maintainers/docs/static-initial-env
Normal file
35
maintainers/docs/static-initial-env
Normal file
@@ -0,0 +1,35 @@
|
||||
Upgrading the standard initial environment
|
||||
|
||||
For Nix on i686-linux we make use of an environment of statically linked
|
||||
tools (see $nixpkgs/stdenv/linux). The first version of these tools were
|
||||
compiled outside of Nix, in an impure environment. They are used as some
|
||||
magical ingredient to make everything work. To keep these tools more in
|
||||
synchronization with the rest of nixpkgs and to make porting of nixpkgs
|
||||
to other platforms easier the static versions are now also built with Nix
|
||||
and nixpkgs.
|
||||
|
||||
The tools can be found in nixpkgs in:
|
||||
|
||||
- shells/bash-static
|
||||
- tools/networking/curl-diet
|
||||
- tools/archivers/gnutar-diet
|
||||
- tools/compression/gzip-diet
|
||||
- tools/compression/bzip2-static
|
||||
- tools/text/gnused-diet
|
||||
- tools/text/diffutils-diet
|
||||
- tools/text/gnupatch-diet
|
||||
- tools/misc/findutils-static
|
||||
|
||||
and
|
||||
- development/compilers/gcc-static-3.4
|
||||
|
||||
Most packages are compiled with dietlibc, an alternate C library, apart
|
||||
from bash and findutils, which are statically linked to glibc. The reason
|
||||
we chose dietlibc has various reasons. First of all, curl cannot be built
|
||||
statically with glibc. If we do, we get a static binary, but it cannot resolve
|
||||
hostnames to IP addresses. glibc dynamically loads functionality at runtime
|
||||
to do resolving. When linking with dietlibc this doesn't happen.
|
||||
|
||||
The static tools are not used as part of the input hashing (see Eelco's
|
||||
PhD thesis, paragraph 5.4.1), so changing them does not change anything and
|
||||
will not force a massive rebuild.
|
||||
12
maintainers/docs/todo.txt
Normal file
12
maintainers/docs/todo.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
* Patch development/tools/misc/libtool not to search standard
|
||||
directories for libraries (like setup.sh does now). [do we want
|
||||
this?]
|
||||
|
||||
* Inform freedesktop people that Xaw requires Xpm.
|
||||
|
||||
* After building gcc, filter out references to /tmp/nix... in
|
||||
.../lib/libsupc++.la and .../lib/libstdc++.la
|
||||
|
||||
* Add gettext to glib propagatedBuildInputs? Glib's `gi18n.h' doesn't
|
||||
seem to like Glibc `libintl.h'; needs the gettext one instead.
|
||||
[Move from libbonoboui]
|
||||
@@ -1,14 +0,0 @@
|
||||
Semi-automatic source information updating using "update-upstream-data.sh" script and "src-{,info-}for-*.nix"
|
||||
|
||||
1. Recognizing when a pre-existing package uses this mechanism.
|
||||
|
||||
Packages using this automatical update mechanism have src-info-for-default.nix and src-for-default.nix next to default.nix. src-info-for-default.nix describes getting the freshest source from upstream web site; src-for-default.nix is a generated file with the current data about used source. Both files define a simple attrSet.
|
||||
|
||||
src-info-for-default.nix (for a file grabbed via http) contains at least downloadPage attribute - it is the page we need to look at to find out the latest version. It also contains baseName that is used for automatical generation of package name containing version. It can contain extra data for trickier cases.
|
||||
|
||||
src-for-default.nix will contain advertisedUrl (raw URL chosen on the site; its change prompts regeneration of source data), url for fetchurl, hash, version retrieved from the download URL and suggested package name.
|
||||
|
||||
2. Updating a package
|
||||
|
||||
nixpkgs/pkgs/build-support/upstream-updater directory contains some scripts. The worker script is called update-upstream-data.sh. This script requires main expression name (e.g. default.nix). It can optionally accpet a second parameter, URL which will be used instead of getting one by parsing the downloadPage (version extraction, mirror URL creation etc. will still be run). After running the script, check src-for-default.nix (or replace default.nix with expression name, if there are seceral expressions in the directory) for new version information.
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
#! /bin/sh -e
|
||||
|
||||
distDir=/data/webserver/tarballs
|
||||
|
||||
url="$1"
|
||||
file="$2"
|
||||
if [ -z "$url" ]; then echo "syntax: $0 URL"; exit 0; fi
|
||||
|
||||
base="$(basename "$url")"
|
||||
if [ -z "$base" ]; then echo "bad URL"; exit 1; fi
|
||||
dstPath="$distDir/$base"
|
||||
|
||||
if [ -e "$dstPath" ]; then if [ -n "$VERBOSE" ]; then echo "$dstPath already exists"; fi; exit 0; fi
|
||||
|
||||
if [ -z "$file" ]; then
|
||||
|
||||
echo "downloading $url to $dstPath"
|
||||
|
||||
if [ -n "$DRY_RUN" ]; then exit 0; fi
|
||||
|
||||
declare -a res
|
||||
if ! res=($(PRINT_PATH=1 nix-prefetch-url "$url")); then
|
||||
exit
|
||||
fi
|
||||
|
||||
storePath=${res[1]}
|
||||
|
||||
else
|
||||
storePath="$file"
|
||||
fi
|
||||
|
||||
cp $storePath "$dstPath.tmp.$$"
|
||||
mv -f "$dstPath.tmp.$$" "$dstPath"
|
||||
|
||||
echo "hashing $dstPath"
|
||||
|
||||
md5=$(nix-hash --flat --type md5 "$dstPath")
|
||||
ln -sfn "../$base" $distDir/md5/$md5
|
||||
|
||||
sha1=$(nix-hash --flat --type sha1 "$dstPath")
|
||||
ln -sfn "../$base" $distDir/sha1/$sha1
|
||||
|
||||
sha256=$(nix-hash --flat --type sha256 "$dstPath")
|
||||
ln -sfn "../$base" $distDir/sha256/$sha256
|
||||
ln -sfn "../$base" $distDir/sha256/$(nix-hash --type sha256 --to-base32 "$sha256")
|
||||
@@ -1,27 +0,0 @@
|
||||
#! /bin/sh -e
|
||||
|
||||
urls=$(nix-instantiate --eval-only --xml --strict '<nixpkgs/maintainers/scripts/eval-release.nix>' \
|
||||
| grep -A2 'name="urls"' \
|
||||
| grep '<string value=' \
|
||||
| sed 's/.*"\(.*\)".*/\1/' \
|
||||
| sort | uniq)
|
||||
|
||||
for url in $urls; do
|
||||
if echo "$url" | grep -q -E "www.cs.uu.nl|nixos.org|.stratego-language.org|java.sun.com|ut2004|linuxq3a|RealPlayer|Adbe|belastingdienst|microsoft|armijn/.nix|sun.com|archive.eclipse.org"; then continue; fi
|
||||
|
||||
# Check the URL scheme.
|
||||
if ! echo "$url" | grep -q -E "^[a-z]+://"; then echo "skipping $url (no URL scheme)"; continue; fi
|
||||
|
||||
# Check the basename. It should include something resembling a version.
|
||||
base="$(basename "$url")"
|
||||
#if ! echo "$base" | grep -q -E "[-_].*[0-9].*"; then echo "skipping $url (no version)"; continue; fi
|
||||
if ! echo "$base" | grep -q -E "[a-zA-Z]"; then echo "skipping $url (no letter in name)"; continue; fi
|
||||
if ! echo "$base" | grep -q -E "[0-9]"; then echo "skipping $url (no digit in name)"; continue; fi
|
||||
if ! echo "$base" | grep -q -E "[-_\.]"; then echo "skipping $url (no dot/underscore in name)"; continue; fi
|
||||
if echo "$base" | grep -q -E "[&?=%]"; then echo "skipping $url (bad character in name)"; continue; fi
|
||||
if [ "${base:0:1}" = "." ]; then echo "skipping $url (starts with a dot)"; continue; fi
|
||||
|
||||
$(dirname $0)/copy-tarball.sh "$url"
|
||||
done
|
||||
|
||||
echo DONE
|
||||
@@ -1,32 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Download patches from debian project
|
||||
# Usage $0 debian-patches.txt debian-patches.nix
|
||||
# An example input and output files can be found in applications/graphics/xara/
|
||||
|
||||
DEB_URL=http://patch-tracker.debian.org/patch/series/dl
|
||||
declare -a deb_patches
|
||||
mapfile -t deb_patches < $1
|
||||
|
||||
prefix="${DEB_URL}/${deb_patches[0]}"
|
||||
|
||||
if [[ -n "$2" ]]; then
|
||||
exec 1> $2
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
# Generated by $(basename $0) from $(basename $1)
|
||||
let
|
||||
prefix = "${prefix}";
|
||||
in
|
||||
[
|
||||
EOF
|
||||
for ((i=1;i < ${#deb_patches[@]}; ++i)); do
|
||||
url="${prefix}/${deb_patches[$i]}"
|
||||
sha256=$(nix-prefetch-url $url)
|
||||
echo " {"
|
||||
echo " url = \"\${prefix}/${deb_patches[$i]}\";"
|
||||
echo " sha256 = \"$sha256\";"
|
||||
echo " }"
|
||||
done
|
||||
echo "]"
|
||||
@@ -1,57 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
attr=$1
|
||||
|
||||
: ${NIXPKGS=/etc/nixos/nixpkgs}
|
||||
|
||||
tmp=$(mktemp --tmpdir -d nixpkgs-dep-license.XXXXXX)
|
||||
|
||||
exitHandler() {
|
||||
exitCode=$?
|
||||
rm -rf "$tmp"
|
||||
exit $exitCode
|
||||
}
|
||||
|
||||
trap "exitHandler" EXIT
|
||||
|
||||
# fetch the trace and the drvPath of the attribute.
|
||||
nix-instantiate $NIXPKGS -A $attr --show-trace > "$tmp/drvPath" 2> "$tmp/trace" || {
|
||||
cat 1>&2 - "$tmp/trace" <<EOF
|
||||
An error occured while evaluating $attr.
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
# generate a sed script based on the trace output.
|
||||
sed '
|
||||
\,@:.*:@, {
|
||||
# \1 *.drv file
|
||||
# \2 License terms
|
||||
s,.*@:drv:\(.*\):\(.*\):@.*,s!\1!\1: \2!; t;,
|
||||
s!Str(\\\"\([^,]*\)\\\",\[\])!\1!g
|
||||
b
|
||||
}
|
||||
d
|
||||
' "$tmp/trace" > "$tmp/filter.sed"
|
||||
|
||||
if test $(wc -l "$tmp/filter.sed" | sed 's/ .*//') == 0; then
|
||||
echo 1>&2 "
|
||||
No derivation mentionned in the stack trace. Either your derivation does
|
||||
not use stdenv.mkDerivation or you forgot to use the stdenv adapter named
|
||||
traceDrvLicenses.
|
||||
|
||||
- defaultStdenv = allStdenvs.stdenv;
|
||||
+ defaultStdenv = traceDrvLicenses allStdenvs.stdenv;
|
||||
"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# remove all dependencies which are using stdenv.mkDerivation
|
||||
echo '
|
||||
d
|
||||
' >> "$tmp/filter.sed"
|
||||
|
||||
nix-store -q --tree $(cat "$tmp/drvPath") | sed -f "$tmp/filter.sed"
|
||||
|
||||
exit 0;
|
||||
83
maintainers/scripts/evacuate-urls.sh
Executable file
83
maintainers/scripts/evacuate-urls.sh
Executable file
@@ -0,0 +1,83 @@
|
||||
#! /bin/sh -e
|
||||
|
||||
distDir=/data/webserver/dist/tarballs
|
||||
|
||||
find "$1" -name "*.nix" | while read fn; do
|
||||
|
||||
grep -E '^ *url = ' "$fn" | while read line; do
|
||||
|
||||
if url=$(echo "$line" | sed 's^url = \(.*\);^\1^'); then
|
||||
|
||||
if ! echo "$url" | grep -q -E "www.cs.uu.nl|nix.cs.uu.nl|.stratego-language.org|java.sun.com|ut2004|linuxq3a|RealPlayer|Adbe|belastingdienst|microsoft|armijn/.nix|sun.com|archive.eclipse.org"; then
|
||||
base="$(basename "$url")"
|
||||
newPath="$distDir/$base"
|
||||
|
||||
if test -e "$newPath"; then
|
||||
|
||||
#echo "$fn: checking hash of existing $newPath"
|
||||
hash=$(fgrep -A 1 "$url" "$fn" | grep md5 | sed 's^.*md5 = \"\(.*\)\";.*^\1^')
|
||||
hashType=md5
|
||||
if test -z "$hash"; then
|
||||
hash=$(fgrep -A 1 "$url" "$fn" | grep sha256 | sed 's^.*sha256 = \"\(.*\)\";.*^\1^')
|
||||
hashType="sha256 --base32"
|
||||
if test -n "$hash"; then
|
||||
if test "${#hash}" = 64; then
|
||||
hash=$(nix-hash --to-base32 --type sha256 $hash)
|
||||
fi
|
||||
else
|
||||
hash=$(fgrep -A 1 "$url" "$fn" | grep sha1 | sed 's^.*sha1 = \"\(.*\)\";.*^\1^')
|
||||
hashType="sha1"
|
||||
if test -z "$hash"; then
|
||||
echo "WARNING: $fn: cannot figure out the hash for $url"
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
#echo "HASH = $hash"
|
||||
if ! test "$(nix-hash --type $hashType --flat "$newPath")" = "$hash"; then
|
||||
echo "WARNING: $fn: $newPath exists and differs, hash should be $hash!"
|
||||
continue
|
||||
fi
|
||||
|
||||
else
|
||||
|
||||
if echo $url | grep -q 'mirror://'; then
|
||||
#echo "$fn: skipping mirrored $url"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "$fn: $url -> $newPath"
|
||||
|
||||
if test -n "$doCopy"; then
|
||||
if ! curl --disable-epsv --fail --location --max-redirs 20 --remote-time \
|
||||
"$url" --output "$newPath".tmp; then
|
||||
continue
|
||||
fi
|
||||
mv -f "$newPath".tmp "$newPath"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if test -n "$doCopy" -a -e "$newPath"; then
|
||||
|
||||
md5=$(nix-hash --flat --type md5 "$newPath")
|
||||
ln -sfn "../$base" $distDir/md5/$md5
|
||||
|
||||
sha1=$(nix-hash --flat --type sha1 "$newPath")
|
||||
ln -sfn "../$base" $distDir/sha1/$sha1
|
||||
|
||||
sha256=$(nix-hash --flat --type sha256 "$newPath")
|
||||
ln -sfn "../$base" $distDir/sha256/$sha256
|
||||
ln -sfn "../$base" $distDir/sha256/$(nix-hash --type sha256 --to-base32 "$sha256")
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
done
|
||||
|
||||
echo DONE
|
||||
@@ -1,32 +0,0 @@
|
||||
# Evaluate `release.nix' like Hydra would (i.e. call each job
|
||||
# attribute with the expected `system' argument). Too bad
|
||||
# nix-instantiate can't to do this.
|
||||
|
||||
with import ../../pkgs/lib;
|
||||
|
||||
let
|
||||
trace = if builtins.getEnv "VERBOSE" == "1" then builtins.trace else (x: y: y);
|
||||
|
||||
rel = removeAttrs (import ../../pkgs/top-level/release.nix) [ "tarball" "xbursttools" ];
|
||||
|
||||
seqList = xs: res: fold (x: xs: seq x xs) res xs;
|
||||
|
||||
strictAttrs = as: seqList (attrValues as) as;
|
||||
|
||||
maybe = as: let y = builtins.tryEval (strictAttrs as); in if y.success then y.value else builtins.trace "FAIL" {};
|
||||
|
||||
call = attrs: flip mapAttrs attrs
|
||||
(n: v: trace n (
|
||||
if builtins.isFunction v then maybe (v { system = "x86_64-linux"; })
|
||||
else if builtins.isAttrs v then call v
|
||||
else null
|
||||
));
|
||||
|
||||
# Add the ‘recurseForDerivations’ attribute to ensure that
|
||||
# nix-instantiate recurses into nested attribute sets.
|
||||
recurse = attrs:
|
||||
if isDerivation attrs
|
||||
then attrs
|
||||
else { recurseForDerivations = true; } // mapAttrs (n: v: recurse v) attrs;
|
||||
|
||||
in recurse (call rel)
|
||||
@@ -1,122 +0,0 @@
|
||||
#! /bin/sh -e
|
||||
|
||||
export PERL5LIB=/nix/var/nix/profiles/per-user/eelco/cpan-generator/lib/perl5/site_perl
|
||||
|
||||
name="$1"
|
||||
[ -n "$name" ] || { echo "no name"; exit 1; }
|
||||
|
||||
cpan -D "$name" > cpan-info
|
||||
|
||||
url="$(echo $(cat cpan-info | sed '6!d'))"
|
||||
[ -n "$url" ] || { echo "no URL"; exit 1; }
|
||||
url="mirror://cpan/authors/id/$url"
|
||||
echo "URL = $url" >&2
|
||||
|
||||
version=$(cat cpan-info | grep 'CPAN: ' | awk '{ print $2 }')
|
||||
echo "VERSION = $version"
|
||||
|
||||
declare -a xs=($(PRINT_PATH=1 nix-prefetch-url "$url"))
|
||||
hash=${xs[0]}
|
||||
path=${xs[1]}
|
||||
echo "HASH = $hash" >&2
|
||||
|
||||
namedash="$(echo $name | sed s/::/-/g)-$version"
|
||||
|
||||
attr=$(echo $name | sed s/:://g)
|
||||
|
||||
rm -rf cpan_tmp
|
||||
mkdir cpan_tmp
|
||||
tar xf "$path" -C cpan_tmp
|
||||
|
||||
shopt -s nullglob
|
||||
meta=$(echo cpan_tmp/*/META.json)
|
||||
if [ -z "$meta" ]; then
|
||||
yaml=$(echo cpan_tmp/*/META.yml)
|
||||
[ -n "$yaml" ] || { echo "no meta file"; exit 1; }
|
||||
meta=$(echo $yaml | sed s/\.yml$/.json/)
|
||||
perl -e '
|
||||
use YAML;
|
||||
use JSON;
|
||||
local $/;
|
||||
$x = YAML::Load(<>);
|
||||
print encode_json $x;
|
||||
' < $yaml > $meta
|
||||
fi
|
||||
|
||||
description="$(json abstract < $meta | perl -e '$x = <>; print uc(substr($x, 0, 1)), substr($x, 1);')"
|
||||
homepage="$(json resources.homepage < $meta)"
|
||||
if [ -z "$homepage" ]; then
|
||||
#homepage="$(json meta-spec.url < $meta)"
|
||||
true
|
||||
fi
|
||||
|
||||
license="$(json license < $meta | json -a 2> /dev/null || true)"
|
||||
if [ -z "$license" ]; then
|
||||
license="$(json -a license < $meta)"
|
||||
fi
|
||||
license="$(echo $license | sed s/perl_5/perl5/)"
|
||||
|
||||
f() {
|
||||
local type="$1"
|
||||
perl -e '
|
||||
use JSON;
|
||||
local $/;
|
||||
$x = decode_json <>;
|
||||
if (defined $x->{prereqs}) {
|
||||
$x2 = $x->{prereqs}->{'$type'}->{requires};
|
||||
} elsif ("'$type'" eq "runtime") {
|
||||
$x2 = $x->{requires};
|
||||
} elsif ("'$type'" eq "configure") {
|
||||
$x2 = $x->{configure_requires};
|
||||
} elsif ("'$type'" eq "build") {
|
||||
$x2 = $x->{build_requires};
|
||||
}
|
||||
foreach my $y (keys %{$x2}) {
|
||||
next if $y eq "perl";
|
||||
eval "use $y;";
|
||||
if (!$@) {
|
||||
print STDERR "skipping Perl-builtin module $y\n";
|
||||
next;
|
||||
}
|
||||
print $y, "\n";
|
||||
};
|
||||
' < $meta | sed s/:://g
|
||||
}
|
||||
|
||||
confdeps=$(f configure)
|
||||
builddeps=$(f build)
|
||||
testdeps=$(f test)
|
||||
runtimedeps=$(f runtime)
|
||||
|
||||
buildInputs=$(echo $(for i in $confdeps $builddeps $testdeps; do echo $i; done | sort | uniq))
|
||||
propagatedBuildInputs=$(echo $(for i in $runtimedeps; do echo $i; done | sort | uniq))
|
||||
|
||||
echo "===" >&2
|
||||
|
||||
cat <<EOF
|
||||
$attr = buildPerlPackage {
|
||||
name = "$namedash";
|
||||
src = fetchurl {
|
||||
url = $url;
|
||||
sha256 = "$hash";
|
||||
};
|
||||
EOF
|
||||
if [ -n "$buildInputs" ]; then
|
||||
cat <<EOF
|
||||
buildInputs = [ $buildInputs ];
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$propagatedBuildInputs" ]; then
|
||||
cat <<EOF
|
||||
propagatedBuildInputs = [ $propagatedBuildInputs ];
|
||||
EOF
|
||||
fi
|
||||
cat <<EOF
|
||||
meta = {
|
||||
homepage = $homepage;
|
||||
description = "$description";
|
||||
license = "$license";
|
||||
};
|
||||
};
|
||||
EOF
|
||||
|
||||
@@ -1,95 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
GNOME_FTP="ftp.gnome.org/pub/GNOME/sources"
|
||||
|
||||
project=$1
|
||||
|
||||
if [ "$project" == "--help" ]; then
|
||||
echo "Usage: $0 project [major.minor]"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
baseVersion=$2
|
||||
|
||||
if [ -z "$project" ]; then
|
||||
echo "No project specified, exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# curl -l ftp://... doesn't work from my office in HSE, and I don't want to have
|
||||
# any conversations with sysadmin. Somehow lftp works.
|
||||
if [ "$FTP_CLIENT" = "lftp" ]; then
|
||||
ls_ftp() {
|
||||
lftp -c "open $1; cls"
|
||||
}
|
||||
else
|
||||
ls_ftp() {
|
||||
curl -l "$1"/
|
||||
}
|
||||
fi
|
||||
|
||||
if [ -z "$baseVersion" ]; then
|
||||
echo "Looking for available versions..." >&2
|
||||
available_baseversions=( `ls_ftp ftp://${GNOME_FTP}/${project} | grep '[0-9]\.[0-9]' | sort -t. -k1,1n -k 2,2n` )
|
||||
echo -e "The following versions are available:\n ${available_baseversions[@]}" >&2
|
||||
echo -en "Choose one of them: " >&2
|
||||
read baseVersion
|
||||
fi
|
||||
|
||||
FTPDIR="${GNOME_FTP}/${project}/${baseVersion}"
|
||||
|
||||
#version=`curl -l ${FTPDIR}/ 2>/dev/null | grep LATEST-IS | sed -e s/LATEST-IS-//`
|
||||
# gnome's LATEST-IS is broken. Do not trust it.
|
||||
|
||||
files=$(ls_ftp "${FTPDIR}")
|
||||
declare -A versions
|
||||
|
||||
for f in $files; do
|
||||
case $f in
|
||||
(LATEST-IS-*|*.news|*.changes|*.sha256sum|*.diff*):
|
||||
;;
|
||||
($project-*.*.9*.tar.*):
|
||||
tmp=${f#$project-}
|
||||
tmp=${tmp%.tar*}
|
||||
echo "Ignored unstable version ${tmp}" >&2
|
||||
;;
|
||||
($project-*.tar.*):
|
||||
tmp=${f#$project-}
|
||||
tmp=${tmp%.tar*}
|
||||
versions[${tmp}]=1
|
||||
;;
|
||||
(*):
|
||||
echo "UNKNOWN FILE $f"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
echo "Found versions ${!versions[@]}" >&2
|
||||
version=`echo ${!versions[@]} | sed -e 's/ /\n/g' | sort -t. -k1,1n -k 2,2n -k 3,3n | tail -n1`
|
||||
echo "Latest version is: ${version}" >&2
|
||||
|
||||
name=${project}-${version}
|
||||
echo "Fetching .sha256 file" >&2
|
||||
curl -O http://${FTPDIR}/${name}.sha256sum
|
||||
|
||||
extensions=( "xz" "bz2" "gz" )
|
||||
echo "Choosing archive extension (known are ${extensions[@]})..." >&2
|
||||
for ext in ${extensions[@]}; do
|
||||
if grep "\\.tar\\.${ext}$" ${name}.sha256sum >& /dev/null; then
|
||||
ext_pref=$ext
|
||||
sha256=$(grep "\\.tar\\.${ext}$" ${name}.sha256sum | cut -f1 -d\ )
|
||||
break
|
||||
fi
|
||||
done
|
||||
sha256=`nix-hash --to-base32 --type sha256 $sha256`
|
||||
echo "Chosen ${ext_pref}, hash is ${sha256}" >&2
|
||||
|
||||
cat <<EOF
|
||||
name = "${project}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://gnome/sources/${project}/${baseVersion}/${project}-${version}.tar.${ext_pref};
|
||||
sha256 = "${sha256}";
|
||||
};
|
||||
EOF
|
||||
|
||||
rm -v ${name}.sha256sum >&2
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,12 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
# give absolute path of release.nix as argument
|
||||
hydra_eval_jobs \
|
||||
--argstr system x86_64-linux \
|
||||
--argstr system i686-linux \
|
||||
--argstr system x86_64-darwin \
|
||||
--argstr system i686-cygwin \
|
||||
--argstr system i686-freebsd \
|
||||
--arg officialRelease false \
|
||||
--arg nixpkgs "{ outPath = builtins.storePath ./. ; rev = 1234; }" \
|
||||
$@
|
||||
@@ -1,5 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
echo "let pkgs = import /etc/nixos/nixpkgs$2 {}; x = pkgs.callPackage $1 { $3 }; in ${4:-x}" |
|
||||
nix-instantiate --show-trace - |
|
||||
xargs nix-store -r -K
|
||||
@@ -1,84 +0,0 @@
|
||||
|
||||
usage() {
|
||||
echo "
|
||||
$0 <path to unpacked binary distribution directory>
|
||||
|
||||
This program return the list of libraries and where to find them based on
|
||||
your currently installed programs.
|
||||
";
|
||||
exit 1
|
||||
}
|
||||
|
||||
if test $# -ne 1; then
|
||||
usage
|
||||
fi
|
||||
|
||||
binaryDist=$1
|
||||
|
||||
hasBinaries=false
|
||||
for bin in $(find $binaryDist -executable -type f) :; do
|
||||
if test $bin = ":"; then
|
||||
$hasBinaries || \
|
||||
echo "No patchable found in this directory."
|
||||
break
|
||||
fi
|
||||
hasBinaries=true
|
||||
|
||||
echo ""
|
||||
echo "$bin:"
|
||||
hasLibraries=false
|
||||
unset interpreter
|
||||
unset addRPath
|
||||
for lib in $(strings $bin | grep '^\(/\|\)lib.*\.so' | sort | uniq) :; do
|
||||
if test $lib = ":"; then
|
||||
$hasLibraries || \
|
||||
echo " This program is a script or it is statically linked."
|
||||
break
|
||||
fi
|
||||
hasLibraries=true
|
||||
|
||||
echo " $lib:";
|
||||
|
||||
libPath=$lib
|
||||
lib=$(basename $lib)
|
||||
|
||||
#versionLessLib=$(echo $lib | sed 's,[.][.0-9]*$,,')
|
||||
|
||||
libs="$(
|
||||
find /nix/store/*/lib* \( -type f -or -type l \) -name $lib |
|
||||
grep -v '\(bootstrap-tools\|system-path\|user-environment\|extra-utils\)'
|
||||
)"
|
||||
|
||||
echo "$libs" |
|
||||
sed 's,^/nix/store/[a-z0-9]*-\([^/]*\)/.*/\([^/]*\)$, \1 -> \2,' |
|
||||
sort |
|
||||
uniq;
|
||||
|
||||
names=$(
|
||||
echo "$libs" |
|
||||
sed 's,^/nix/store/[a-z0-9]*-\([^/]*\)-[.0-9]*/.*$,\1,' |
|
||||
sort |
|
||||
uniq;
|
||||
)
|
||||
|
||||
if test "$names" = "glibc"; then names="stdenv.glibc"; fi
|
||||
if echo $names | grep -c "gcc" &> /dev/null; then names="stdenv.gcc.gcc"; fi
|
||||
|
||||
if test $lib != $libPath; then
|
||||
interpreter="--interpreter \${$names}/lib/$lib"
|
||||
elif echo $addRPath | grep -c "$names" &> /dev/null; then
|
||||
:
|
||||
else
|
||||
addRPath=${addRPath+$addRPath:}"\${$names}/lib"
|
||||
fi
|
||||
done;
|
||||
$hasLibraries && \
|
||||
echo "
|
||||
Patchelf command:
|
||||
|
||||
patchelf $interpreter \\
|
||||
${addRPath+--set-rpath $addRPath \\
|
||||
} \$out/$bin
|
||||
|
||||
"
|
||||
done;
|
||||
@@ -1,260 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
usage () {
|
||||
echo 1>&2 "
|
||||
usage:
|
||||
$0
|
||||
[--git commit..commit | --git commit]
|
||||
[--svn rev:rev | --svn rev]
|
||||
[--path path[:path]*]
|
||||
[--help]
|
||||
|
||||
This program is used to investigate how any changes inside your nixpkgs
|
||||
repository may hurt. With these kind of information you may choose wisely
|
||||
where you should commit your changes.
|
||||
|
||||
This program adapts it-self to your versionning system to avoid too much
|
||||
effort on your Internet bandwidth. If you need to check more than one
|
||||
commits / revisions, you may use the following commands:
|
||||
|
||||
--git remotes/trunk..master
|
||||
--svn 17670:17677
|
||||
|
||||
Check the differences between each commit separating the first and the
|
||||
last commit.
|
||||
|
||||
--path /etc/nixos/nixpkgs:/tmp/nixpkgs_1:/tmp/nixpkgs_2
|
||||
|
||||
Check the differences between multiple directories containing different
|
||||
versions of nixpkgs.
|
||||
|
||||
All these options exist with one commit / revision argument. Such options
|
||||
are used to compare your \$NIXPKGS path with the specified version.
|
||||
|
||||
If you omit to mention any other commit / revision, then your \$NIXPKGS path
|
||||
is compared with its last update. This command is useful to test code from
|
||||
a dirty repository.
|
||||
|
||||
"
|
||||
|
||||
exit 1;
|
||||
}
|
||||
|
||||
#####################
|
||||
# Process Arguments #
|
||||
#####################
|
||||
|
||||
: ${NIXPKGS=/etc/nixos/nixpkgs/}
|
||||
|
||||
vcs=""
|
||||
gitCommits=""
|
||||
svnRevisions=""
|
||||
pathLocations=""
|
||||
verbose=false
|
||||
|
||||
argfun=""
|
||||
for arg; do
|
||||
if test -z "$argfun"; then
|
||||
case $arg in
|
||||
--git) vcs="git"; argfun="set_gitCommits";;
|
||||
--svn) vcs="svn"; argfun="set_svnRevisions";;
|
||||
--path) vcs="path"; argfun="set_pathLocations";;
|
||||
--verbose) verbose=true;;
|
||||
--help) usage;;
|
||||
*) usage;;
|
||||
esac
|
||||
else
|
||||
case $argfun in
|
||||
set_*)
|
||||
var=$(echo $argfun | sed 's,^set_,,')
|
||||
eval $var=$arg
|
||||
;;
|
||||
esac
|
||||
argfun=""
|
||||
fi
|
||||
done
|
||||
|
||||
if $verbose; then
|
||||
set -x
|
||||
else
|
||||
set +x
|
||||
fi
|
||||
|
||||
############################
|
||||
# Find the repository type #
|
||||
############################
|
||||
|
||||
if test -z "$vcs"; then
|
||||
if test -x "$NIXPKGS/.git"; then
|
||||
if git --git-dir="$NIXPKGS/.git" branch > /dev/null 2>&1; then
|
||||
vcs="git"
|
||||
gitCommits=$(git --git-dir="$NIXPKGS/.git" log -n 1 --pretty=format:%H 2> /dev/null)
|
||||
fi
|
||||
elif test -x "$NIXPKGS/.svn"; then
|
||||
cd "$NIXPKGS"
|
||||
if svn info > /dev/null 2>&1; then
|
||||
vcs="svn";
|
||||
svnRevisions=$(svn info | sed -n 's,Revision: ,,p')
|
||||
fi
|
||||
cd -
|
||||
else
|
||||
usage
|
||||
fi
|
||||
fi
|
||||
|
||||
###############################
|
||||
# Define a storage directory. #
|
||||
###############################
|
||||
|
||||
pkgListDir=""
|
||||
exitCode=1
|
||||
cleanup(){
|
||||
test -e "$pkgListDir" && rm -rf "$pkgListDir"
|
||||
exit $exitCode;
|
||||
}
|
||||
|
||||
trap cleanup EXIT SIGINT SIGQUIT ERR
|
||||
|
||||
pkgListDir=$(mktemp --tmpdir -d rebuild-amount-XXXXXXXX)
|
||||
vcsDir="$pkgListDir/.vcs"
|
||||
|
||||
###########################
|
||||
# Versionning for Dummies #
|
||||
###########################
|
||||
|
||||
path_init() {
|
||||
if test "${pathLocations#*:}" = "$pathLocations"; then
|
||||
pathLocations="$NIXPKGS:$pathLocations"
|
||||
fi
|
||||
pathLocations="${pathLocations}:"
|
||||
}
|
||||
|
||||
path_getNext() {
|
||||
pathLoc="${pathLocations%%:*}"
|
||||
pathLocations="${pathLocations#*:}"
|
||||
}
|
||||
|
||||
path_setPath() {
|
||||
path="$pathLoc"
|
||||
}
|
||||
|
||||
path_setName() {
|
||||
name=$(echo "$pathLoc" | tr '/' '_')
|
||||
}
|
||||
|
||||
################
|
||||
# Git Commands #
|
||||
################
|
||||
|
||||
git_init() {
|
||||
git clone "$NIXPKGS/.git" "$vcsDir" > /dev/null 2>&1
|
||||
if echo "gitCommits" | grep -c "\.\." > /dev/null 2>&1; then
|
||||
gitCommits=$(git --git-dir="$vcsDir/.git" log --reverse --pretty=format:%H $gitCommits 2> /dev/null)
|
||||
else
|
||||
pathLocations="$vcsDir:$NIXPKGS"
|
||||
vcs="path"
|
||||
path_init
|
||||
fi
|
||||
}
|
||||
|
||||
git_getNext() {
|
||||
git --git-dir="$vcsDir/.git" checkout $(echo "$gitCommits" | head -n 1) > /dev/null 2>&1
|
||||
gitCommits=$(echo "$gitCommits" | sed '1 d')
|
||||
}
|
||||
|
||||
git_setPath() {
|
||||
path="$vcsDir"
|
||||
}
|
||||
|
||||
git_setName() {
|
||||
name=$(git --git-dir="$vcsDir/.git" log -n 1 --pretty=format:%H 2> /dev/null)
|
||||
}
|
||||
|
||||
#######################
|
||||
# Subversion Commands #
|
||||
#######################
|
||||
|
||||
svn_init() {
|
||||
cp -r "$NIXPKGS" "$vcsDir" > /dev/null 2>&1
|
||||
if echo "svnRevisions" | grep -c ":" > /dev/null 2>&1; then
|
||||
svnRevisions=$(seq ${svnRevisions%:*} ${svnRevisions#*:})
|
||||
else
|
||||
pathLocations="$vcsDir:$NIXPKGS"
|
||||
vcs="path"
|
||||
path_init
|
||||
fi
|
||||
}
|
||||
|
||||
svn_getNext() {
|
||||
cd "$vcsDir"
|
||||
svn checkout $(echo "$svnRevisions" | head -n 1) > /dev/null 2>&1
|
||||
cd -
|
||||
svnRevisions=$(echo "$svnRevisions" | sed '1 d')
|
||||
}
|
||||
|
||||
svn_setPath() {
|
||||
path="$vcsDir"
|
||||
}
|
||||
|
||||
svn_setName() {
|
||||
name=$(svn info 2> /dev/null | sed -n 's,Revision: ,,p')
|
||||
}
|
||||
|
||||
####################
|
||||
# Logical Commands #
|
||||
####################
|
||||
|
||||
init () { ${vcs}_init; }
|
||||
getNext () { ${vcs}_getNext; }
|
||||
setPath () { ${vcs}_setPath; }
|
||||
setName () { ${vcs}_setName; }
|
||||
|
||||
|
||||
#####################
|
||||
# Check for Rebuild #
|
||||
#####################
|
||||
|
||||
# Generate the list of all derivations that could be build from a nixpkgs
|
||||
# respository. This list of derivation hashes is compared with previous
|
||||
# lists and a brief summary is produced on the output.
|
||||
|
||||
compareNames () {
|
||||
nb=$(diff -y --suppress-common-lines --speed-large-files "$pkgListDir/$1.drvs" "$pkgListDir/$2.drvs" 2> /dev/null | wc -l)
|
||||
echo "$1 -> $2: $nb"
|
||||
}
|
||||
|
||||
echo "Please wait, this may take some minutes ..."
|
||||
|
||||
init
|
||||
first=""
|
||||
oldPrev=""
|
||||
|
||||
prev=""
|
||||
curr=""
|
||||
|
||||
while true; do
|
||||
getNext
|
||||
setPath # set path=...
|
||||
setName # set name=...
|
||||
curr="$name"
|
||||
|
||||
test -z "$curr" && break || true
|
||||
|
||||
nix-instantiate "$path" > "$pkgListDir/$curr.drvs" > /dev/null 2>&1 || true
|
||||
|
||||
if test -n "$prev"; then
|
||||
compareNames "$prev" "$curr"
|
||||
else
|
||||
echo "Number of package to rebuild:"
|
||||
first="$curr"
|
||||
fi
|
||||
oldPrev="$prev"
|
||||
prev="$curr"
|
||||
done
|
||||
|
||||
if test "$first" != "$oldPrev"; then
|
||||
echo "Number of package to rebuild (first -> last):"
|
||||
compareNames "$first" "$curr"
|
||||
fi
|
||||
|
||||
exitCode=0
|
||||
@@ -1,7 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
if [[ -z "$VERBOSE" ]]; then
|
||||
echo "You may set VERBOSE=1 to see debug output or to any other non-empty string to make this script completely silent"
|
||||
fi
|
||||
unset HOME NIXPKGS_CONFIG # Force empty config
|
||||
nix-instantiate --strict --eval-only --xml --show-trace "$(dirname "$0")"/eval-release.nix 2>&1 > /dev/null
|
||||
13
pkgs/applications/audio/GStreamer/default.nix
Normal file
13
pkgs/applications/audio/GStreamer/default.nix
Normal file
@@ -0,0 +1,13 @@
|
||||
{stdenv, fetchurl, perl
|
||||
, bison, flex, glib
|
||||
, pkgconfig, libxml2}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "GStreamer-0.10.10";
|
||||
src = fetchurl {
|
||||
url = http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.10.tar.bz2;
|
||||
md5 = "6875bf0bd3cf38b9ae1362b9e644e6fc";
|
||||
};
|
||||
|
||||
buildInputs = [perl bison flex glib pkgconfig libxml2];
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
{ stdenv, fetchurl, alsaLib, dbus, jackaudio, pkgconfig, python }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "a2jmidid-${version}";
|
||||
version = "7";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.gna.org/a2jmidid/${name}.tar.bz2";
|
||||
sha256 = "1pl91y7npirhmikzlizpbyx2vkfvdkvc6qvc2lv4capj3cp6ypx7";
|
||||
};
|
||||
|
||||
buildInputs = [ alsaLib dbus jackaudio pkgconfig python ];
|
||||
|
||||
configurePhase = "python waf configure --prefix=$out";
|
||||
|
||||
buildPhase = "python waf";
|
||||
|
||||
installPhase = "python waf install";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://home.gna.org/a2jmidid;
|
||||
description = "daemon for exposing legacy ALSA sequencer applications in JACK MIDI system";
|
||||
license = licenses.gpl2;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
|
||||
};
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
Two changes:
|
||||
|
||||
* Add an alias for `which', so abcde can find things in store
|
||||
* Choose the right CDROM reader syntax for `cd-paranoia'
|
||||
|
||||
--- abcde-2.5.4/abcde~ 2012-09-18 06:09:31.000000000 -0700
|
||||
+++ abcde-2.5.4/abcde 2012-10-27 00:08:48.000862364 -0700
|
||||
@@ -17,6 +17,11 @@
|
||||
|
||||
VERSION='2.5.4'
|
||||
|
||||
+which ()
|
||||
+{
|
||||
+ type -P $1
|
||||
+}
|
||||
+
|
||||
usage ()
|
||||
{
|
||||
echo "This is abcde v$VERSION."
|
||||
@@ -3497,6 +3502,10 @@
|
||||
for DEFAULT_CDROMREADER in $DEFAULT_CDROMREADERS; do
|
||||
if new_checkexec $DEFAULT_CDROMREADER; then
|
||||
CDROMREADERSYNTAX=$DEFAULT_CDROMREADER
|
||||
+ case "$DEFAULT_CDROMREADER" in
|
||||
+ cd-paranoia) CDROMREADERSYNTAX=cdparanoia;;
|
||||
+ *) CDROMREADERSYNTAX=$DEFAULT_CDROMREADER;;
|
||||
+ esac
|
||||
break
|
||||
fi
|
||||
done
|
||||
@@ -1,74 +0,0 @@
|
||||
{ stdenv, fetchurl, libcdio, cddiscid, wget, bash, vorbisTools, id3v2, lame, flac, eject, mkcue
|
||||
, perl, DigestSHA, MusicBrainz, MusicBrainzDiscID
|
||||
, makeWrapper }:
|
||||
|
||||
let version = "2.5.4";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "abcde-${version}";
|
||||
src = fetchurl {
|
||||
url = "mirror://debian/pool/main/a/abcde/abcde_${version}.orig.tar.gz";
|
||||
sha256 = "14g5lsgh53hza9848351kwpygc0yqpvvzp3s923aja77f2wpkdl5";
|
||||
};
|
||||
|
||||
# FIXME: This package does not support MP3 encoding (only Ogg),
|
||||
# nor `distmp3', `eject', etc.
|
||||
|
||||
patches = [ ./abcde.patch ];
|
||||
|
||||
configurePhase = ''
|
||||
sed -i "s|^[[:blank:]]*prefix *=.*$|prefix = $out|g ;
|
||||
s|^[[:blank:]]*etcdir *=.*$|etcdir = $out/etc|g ;
|
||||
s|^[[:blank:]]*INSTALL *=.*$|INSTALL = install -c|g" \
|
||||
"Makefile";
|
||||
|
||||
# We use `cd-paranoia' from GNU libcdio, which contains a hyphen
|
||||
# in its name, unlike Xiph's cdparanoia.
|
||||
sed -i "s|^[[:blank:]]*CDPARANOIA=.*$|CDPARANOIA=cd-paranoia|g ;
|
||||
s|^[[:blank:]]*DEFAULT_CDROMREADERS=.*$|DEFAULT_CDROMREADERS=\"cd-paranoia cdda2wav\"|g" \
|
||||
"abcde"
|
||||
|
||||
substituteInPlace "abcde" \
|
||||
--replace "/etc/abcde.conf" "$out/etc/abcde.conf"
|
||||
|
||||
'';
|
||||
|
||||
# no ELFs in this package, only scripts
|
||||
dontStrip = true;
|
||||
dontPatchELF = true;
|
||||
|
||||
buildInputs = [ makeWrapper ];
|
||||
|
||||
postInstall = ''
|
||||
# substituteInPlace "$out/bin/cddb-tool" \
|
||||
# --replace '#!/bin/sh' '#!${bash}/bin/sh'
|
||||
# substituteInPlace "$out/bin/abcde" \
|
||||
# --replace '#!/bin/bash' '#!${bash}/bin/bash'
|
||||
|
||||
# generic fixup script should be doing this, but it ignores this file for some reason
|
||||
substituteInPlace "$out/bin/abcde-musicbrainz-tool" \
|
||||
--replace '#!/usr/bin/perl' '#!${perl}/bin/perl'
|
||||
|
||||
wrapProgram "$out/bin/abcde" --prefix PATH ":" \
|
||||
"$out/bin:${libcdio}/bin:${cddiscid}/bin:${wget}/bin:${vorbisTools}/bin:${id3v2}/bin:${lame}/bin"
|
||||
|
||||
wrapProgram "$out/bin/cddb-tool" --prefix PATH ":" \
|
||||
"${wget}/bin"
|
||||
|
||||
wrapProgram "$out/bin/abcde-musicbrainz-tool" --prefix PATH ":" \
|
||||
"${wget}/bin"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = "http://lly.org/~rcw/abcde/page/";
|
||||
licence = "GPLv2+";
|
||||
description = "A Better CD Encoder (ABCDE)";
|
||||
|
||||
longDescription = ''
|
||||
abcde is a front-end command-line utility (actually, a shell
|
||||
script) that grabs tracks off a CD, encodes them to
|
||||
Ogg/Vorbis, MP3, FLAC, Ogg/Speex and/or MPP/MP+ (Musepack)
|
||||
format, and tags them, all in one go.
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{ stdenv, fetchurl, lib, qtscriptgenerator, perl, gettext, curl
|
||||
, libxml2, mysql, taglib, taglib_extras, loudmouth , kdelibs
|
||||
, qca2, libmtp, liblastfm, libgpod, pkgconfig, automoc4, phonon
|
||||
, strigi, soprano, qjson, ffmpeg, libofa }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "${pname}-${version}";
|
||||
|
||||
pname = "amarok";
|
||||
version = "2.6.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.bz2";
|
||||
sha256 = "1h6jzl0jnn8g05pz4mw01kz20wjjxwwz6iki7lvgj70qi3jq04m9";
|
||||
};
|
||||
|
||||
QT_PLUGIN_PATH="${qtscriptgenerator}/lib/qt4/plugins";
|
||||
patches = ./find-mysql.patch;
|
||||
buildInputs = [ qtscriptgenerator stdenv.gcc.libc gettext curl
|
||||
libxml2 mysql taglib taglib_extras loudmouth kdelibs automoc4 phonon strigi
|
||||
soprano qca2 libmtp liblastfm libgpod pkgconfig qjson ffmpeg libofa ];
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/nix-support
|
||||
echo ${qtscriptgenerator} > $out/nix-support/propagated-user-env-packages
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Popular music player for KDE";
|
||||
license = "GPL";
|
||||
homepage = http://amarok.kde.org;
|
||||
inherit (kdelibs.meta) platforms maintainers;
|
||||
};
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
commit 9979970f05f25329100168d85a5c4cdc8c084b7a
|
||||
Author: Yury G. Kudryashov <urkud.urkud@gmail.com>
|
||||
Date: Thu Aug 30 12:32:53 2012 +0400
|
||||
|
||||
FindMySQLAmarok.cmake: use PATH_SUFFIXES
|
||||
|
||||
diff --git a/cmake/modules/FindMySQLAmarok.cmake b/cmake/modules/FindMySQLAmarok.cmake
|
||||
index 910b434..4c8b8e8 100644
|
||||
--- a/cmake/modules/FindMySQLAmarok.cmake
|
||||
+++ b/cmake/modules/FindMySQLAmarok.cmake
|
||||
@@ -13,18 +13,17 @@
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
if(NOT WIN32)
|
||||
- find_program(MYSQLCONFIG_EXECUTABLE NAMES mysql_config mysql_config5 PATHS ${BIN_INSTALL_DIR} ~/usr/bin /usr/local/bin)
|
||||
+ find_program(MYSQLCONFIG_EXECUTABLE NAMES mysql_config mysql_config5 HINTS ${BIN_INSTALL_DIR})
|
||||
endif(NOT WIN32)
|
||||
|
||||
find_path(MYSQL_INCLUDE_DIR mysql.h
|
||||
- /opt/local/include/mysql5/mysql
|
||||
+ PATHS
|
||||
+ /opt/local/include
|
||||
/opt/mysql/mysql/include
|
||||
- /opt/mysqle/include/mysql
|
||||
- /opt/ports/include/mysql5/mysql
|
||||
- /usr/include/mysql
|
||||
- /usr/local/include/mysql
|
||||
- /usr/mysql/include/mysql
|
||||
- ~/usr/include/mysql
|
||||
+ /opt/mysqle/include
|
||||
+ /opt/ports/include
|
||||
+ /usr/mysql/include
|
||||
+ PATH_SUFFIXES mysql mysql5/mysql
|
||||
)
|
||||
|
||||
if(MYSQLCONFIG_EXECUTABLE)
|
||||
@@ -40,8 +39,7 @@ if(MYSQLCONFIG_EXECUTABLE)
|
||||
|
||||
find_library(MYSQLD_PIC_SEPARATE
|
||||
mysqld_pic
|
||||
- PATHS
|
||||
- /usr/lib/mysql
|
||||
+ PATH_SUFFIXES mysql
|
||||
)
|
||||
|
||||
if(MYSQLD_PIC_SEPARATE)
|
||||
@@ -1,59 +0,0 @@
|
||||
{ stdenv, fetchsvn, alsaLib, aubio, boost, cairomm, curl, fftw
|
||||
, fftwSinglePrec, flac, glib, glibmm, gtk, gtkmm, jackaudio
|
||||
, 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 3 Beta 5
|
||||
rev = "13072";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "ardour3-svn-${rev}";
|
||||
|
||||
src = fetchsvn {
|
||||
url = http://subversion.ardour.org/svn/ardour2/branches/3.0;
|
||||
inherit rev;
|
||||
sha256 = "17k990kdb5q17z6jcz5b60imvvfbjw9zfxzy9fk0vg8gd6yq7736";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
[ alsaLib aubio boost cairomm curl fftw fftwSinglePrec
|
||||
flac glib glibmm gtk gtkmm jackaudio libgnomecanvas
|
||||
libgnomecanvasmm liblo libmad libogg librdf librdf_raptor
|
||||
librdf_rasqal libsamplerate libsigcxx libsndfile libusb libuuid
|
||||
libxml2 libxslt lilv lv2 pango perl pkgconfig python serd sord
|
||||
sratom suil
|
||||
];
|
||||
|
||||
patchPhase = ''
|
||||
printf '#include "ardour/svn_revision.h"\nnamespace ARDOUR { const char* svn_revision = \"${rev}\"; }\n' > libs/ardour/svn_revision.cc
|
||||
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 --prefix=$out";
|
||||
|
||||
buildPhase = "python waf";
|
||||
|
||||
installPhase = "python waf install";
|
||||
|
||||
postInstall = ''
|
||||
mkdir -pv $out/gtk-2.0/2.10.0/engines
|
||||
mv lib/ardour3/libclearlooks.so $out/gtk-2.0/2.10.0/engines/
|
||||
wrapProgram $out/bin/ardour3 --prefix GTK_PATH : $out/gtk-2.0
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Multi-track hard disk recording software";
|
||||
longDescription = ''
|
||||
Also read "The importance of Paying Something" on their homepage, please!
|
||||
'';
|
||||
homepage = http://ardour.org/;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
};
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
{ stdenv, fetchsvn, scons, boost, pkgconfig, fftw, librdf_raptor
|
||||
, librdf_rasqal, jackaudio, flac, libsamplerate, alsaLib, libxml2
|
||||
, libxslt, libsndfile, libsigcxx, libusb, cairomm, glib, pango
|
||||
, gtk, glibmm, gtkmm, libgnomecanvas, liblo, aubio
|
||||
, fftwSinglePrec, libmad, automake, autoconf, libtool, liblrdf }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ardour-${version}";
|
||||
version = "2.8.12";
|
||||
|
||||
# svn is the source to get official releases from their site?
|
||||
# alternative: wget --data-urlencode 'key=7c4b2e1df903aae5ff5cc4077cda801e' http://ardour.org/downloader
|
||||
# but hash is changing ?
|
||||
|
||||
# TODO: see if this is also true when using a tag (~goibhniu)
|
||||
|
||||
# This version does not run it exits with the following error:
|
||||
# raptor_new_uri_for_rdf_concept called with Raptor V1 world object
|
||||
# raptor_general.c:240:raptor_init: fatal error: raptor_init() failedAborted
|
||||
src = fetchsvn {
|
||||
url = "http://subversion.ardour.org/svn/ardour2/tags/${version}";
|
||||
sha256 = "0d4y8bv12kb0yd2srvxn5388sa4cl5d5rk381saj9f3jgpiciyky";
|
||||
};
|
||||
|
||||
patchPhase = ''
|
||||
sed -e "s#/usr/bin/which#type -P#" -i libs/glibmm2/autogen.sh
|
||||
echo '#include "ardour/svn_revision.h"' > libs/ardour/svn_revision.cc
|
||||
echo -e 'namespace ARDOUR {\n extern const char* svn_revision = "2.8.12";\n }\n' >> libs/ardour/svn_revision.cc
|
||||
'';
|
||||
|
||||
buildInputs = [
|
||||
scons boost pkgconfig fftw librdf_raptor librdf_rasqal jackaudio
|
||||
flac libsamplerate alsaLib libxml2 libxslt libsndfile libsigcxx
|
||||
libusb cairomm glib pango gtk glibmm gtkmm libgnomecanvas liblrdf
|
||||
liblo aubio fftwSinglePrec libmad autoconf automake libtool
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
mkdir -p $out
|
||||
export CXX=g++
|
||||
scons PREFIX=$out install
|
||||
'';
|
||||
|
||||
installPhase = ":";
|
||||
|
||||
meta = {
|
||||
description = "Multi-track hard disk recording software";
|
||||
longDescription = ''
|
||||
Broken: use ardour3-svn instead
|
||||
Also read "The importance of Paying Something" on their homepage, please!
|
||||
'';
|
||||
homepage = http://ardour.org/;
|
||||
license = "GPLv2";
|
||||
maintainers = [ stdenv.lib.maintainers.marcweber ];
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{ stdenv, fetchurl, pkgconfig, glib, gtk, libmowgli, libmcs
|
||||
, gettext, dbus_glib, libxml2, libmad, xlibs, alsaLib, libogg
|
||||
, libvorbis, libcdio, libcddb, flac, ffmpeg
|
||||
}:
|
||||
|
||||
let
|
||||
version = "3.2.2";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "audacious-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://distfiles.audacious-media-player.org/audacious-${version}.tar.bz2";
|
||||
sha256 = "1vj2f3jq67r9wc3s8p51w8338cjhidj3lpxmzyh31lrfikj21766";
|
||||
};
|
||||
|
||||
pluginsSrc = fetchurl {
|
||||
url = "http://distfiles.audacious-media-player.org/audacious-plugins-${version}.tar.bz2";
|
||||
sha256 = "1z5p4ny0kzszaki4f1fgrvcr0q1j6i19847jhplc07nl1rvycdy6";
|
||||
};
|
||||
|
||||
# `--enable-amidiplug' is to prevent configure from looking in /proc/asound.
|
||||
configureFlags = "--enable-amidiplug --disable-oss";
|
||||
|
||||
buildInputs =
|
||||
[ gettext pkgconfig glib gtk libmowgli libmcs libxml2 dbus_glib
|
||||
libmad xlibs.libXcomposite libogg libvorbis flac alsaLib libcdio
|
||||
libcddb ffmpeg
|
||||
];
|
||||
|
||||
# Here we build bouth audacious and audacious-plugins in one
|
||||
# derivations, since they really expect to be in the same prefix.
|
||||
# This is slighly tricky.
|
||||
builder = builtins.toFile "builder.sh"
|
||||
''
|
||||
# First build audacious.
|
||||
(
|
||||
source $stdenv/setup
|
||||
genericBuild
|
||||
)
|
||||
|
||||
# Then build the plugins.
|
||||
(
|
||||
buildNativeInputs="$out $buildNativeInputs" # to find audacious
|
||||
source $stdenv/setup
|
||||
rm -rfv audacious-*
|
||||
src=$pluginsSrc
|
||||
genericBuild
|
||||
)
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = {
|
||||
description = "Audacious, a media player forked from the Beep Media Player, which was itself an XMMS fork";
|
||||
homepage = http://audacious-media-player.org/;
|
||||
maintainers = [ stdenv.lib.maintainers.eelco stdenv.lib.maintainers.simons ];
|
||||
};
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
{ stdenv, fetchurl, wxGTK, pkgconfig, gettext, gtk, glib, zlib, perl, intltool,
|
||||
libogg, libvorbis, libmad, alsaLib, libsndfile, libsamplerate, flac, lame,
|
||||
expat, id3lib, ffmpeg, portaudio
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2.0.2";
|
||||
name = "audacity-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://audacity.googlecode.com/files/audacity-minsrc-${version}.tar.bz2";
|
||||
sha256 = "17c7p5jww5zcg2k2fs1751mv5kbadcmgicszi1zxwj2p5b35x2mc";
|
||||
};
|
||||
buildInputs = [ pkgconfig wxGTK libsndfile expat alsaLib libsamplerate
|
||||
libvorbis libmad flac id3lib ffmpeg gettext ];
|
||||
|
||||
dontDisableStatic = true;
|
||||
|
||||
meta = {
|
||||
description = "Sound editor with graphical UI";
|
||||
homepage = http://audacity.sourceforge.net;
|
||||
license = "GPLv2+";
|
||||
platforms = with stdenv.lib.platforms; linux;
|
||||
};
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
{stdenv, fetchurl, gettext, ncurses
|
||||
, gtkGUI ? false
|
||||
, pkgconfig ? null
|
||||
, gtk ? null}:
|
||||
|
||||
assert gtkGUI -> pkgconfig != null && gtk != null;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "aumix-2.9.1";
|
||||
src = fetchurl {
|
||||
url = "http://www.jpj.net/~trevor/aumix/releases/${name}.tar.bz2";
|
||||
sha256 = "0a8fwyxnc5qdxff8sl2sfsbnvgh6pkij4yafiln0fxgg6bal7knj";
|
||||
};
|
||||
|
||||
buildInputs = [ gettext ncurses ]
|
||||
++ (if gtkGUI then [pkgconfig gtk] else []);
|
||||
|
||||
meta = {
|
||||
description = "Aumix, an audio mixer for X and the console";
|
||||
longDescription = ''
|
||||
Aumix adjusts an audio mixer from X, the console, a terminal,
|
||||
the command line or a script.
|
||||
'';
|
||||
homepage = http://www.jpj.net/~trevor/aumix.html;
|
||||
license = "GPLv2+";
|
||||
|
||||
maintainers = [ stdenv.lib.maintainers.ludo ];
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
{ stdenv, fetchurl, zlib, guile, libart_lgpl, pkgconfig, intltool
|
||||
, gtk, glib, libogg, libvorbis, libgnomecanvas, gettext, perl }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "beast-0.7.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = ftp://beast.gtk.org/pub/beast/v0.7/beast-0.7.1.tar.bz2;
|
||||
sha256 = "0jyl1i1918rsn4296w07fsf6wx3clvad522m3bzgf8ms7gxivg5l";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
[ zlib guile libart_lgpl pkgconfig intltool gtk glib
|
||||
libogg libvorbis libgnomecanvas gettext
|
||||
];
|
||||
|
||||
patchPhase = ''
|
||||
unset patchPhase; patchPhase
|
||||
sed 's=-DG_DISABLE_DEPRECATED==g' -i `find -type f` # the patches didn't remove all occurences
|
||||
sed 's=/bin/bash=/${stdenv.shell}=g' -i `find -type f`
|
||||
sed 's=/usr/bin/perl=/${perl}/bin/perl=g' -i `find -type f`
|
||||
'';
|
||||
|
||||
patches =
|
||||
[ (fetchurl {
|
||||
url = mirror://gentoo/distfiles/beast-0.7.1-guile-1.8.diff.bz2;
|
||||
sha256 = "dc5194deff4b0a0eec368a69090db682d0c3113044ce2c2ed017ddfec9d3814e";
|
||||
})
|
||||
./patch.patch # patches taken from gentoo
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "BEAST - the Bedevilled Sound Engine";
|
||||
homepage = http://beast.gtk.org;
|
||||
license = ["GPL-2" "LGPL-2.1"];
|
||||
};
|
||||
}
|
||||
@@ -1,187 +0,0 @@
|
||||
Index: beast-0.7.1/shell/Makefile.in
|
||||
===================================================================
|
||||
--- beast-0.7.1.orig/shell/Makefile.in
|
||||
+++ beast-0.7.1/shell/Makefile.in
|
||||
@@ -859,10 +859,7 @@ check-before: check-installation
|
||||
check-installation:
|
||||
@for p in $(bin_PROGRAMS) ; do \
|
||||
pp="$(DESTDIR)$(bindir)/$$p" ; \
|
||||
- echo "TEST: test -x \"$$pp\"" ; \
|
||||
- test -x "$$pp" || \
|
||||
- { echo "Failed to verify installation of executable: $$pp"; \
|
||||
- exit 1 ; } \
|
||||
+ echo "TEST: test -x \"$$pp\" Test disabled" ; \
|
||||
done
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
Index: beast-0.7.1/shell/Makefile.am
|
||||
===================================================================
|
||||
--- beast-0.7.1.orig/shell/Makefile.am
|
||||
+++ beast-0.7.1/shell/Makefile.am
|
||||
@@ -859,10 +859,7 @@ check-before: check-installation
|
||||
check-installation:
|
||||
@for p in $(bin_PROGRAMS) ; do \
|
||||
pp="$(DESTDIR)$(bindir)/$$p" ; \
|
||||
- echo "TEST: test -x \"$$pp\"" ; \
|
||||
- test -x "$$pp" || \
|
||||
- { echo "Failed to verify installation of executable: $$pp"; \
|
||||
- exit 1 ; } \
|
||||
+ echo "TEST: test -x \"$$pp\" Test disabled" ; \
|
||||
done
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
Index: beast-0.7.1/birnet/birnettests.h
|
||||
===================================================================
|
||||
--- beast-0.7.1.orig/birnet/birnettests.h
|
||||
+++ beast-0.7.1/birnet/birnettests.h
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
+#include <signal.h>
|
||||
|
||||
BIRNET_EXTERN_C_BEGIN();
|
||||
|
||||
Index: beast-0.7.1/tools/bseloopfuncs.c
|
||||
===================================================================
|
||||
--- beast-0.7.1.orig/tools/bseloopfuncs.c
|
||||
+++ beast-0.7.1/tools/bseloopfuncs.c
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
+#include <signal.h>
|
||||
|
||||
typedef struct {
|
||||
gdouble score;
|
||||
--- beast-0.7.1.orig/bse/Makefile.am 2008-06-01 13:12:28.116708321 +0200
|
||||
+++ beast-0.7.1/bse/Makefile.am 2008-06-01 13:12:40.000000000 +0200
|
||||
@@ -10,7 +10,7 @@
|
||||
# need -I$(top_builddir) for <sfi/sficonfig.h>
|
||||
# need -I$(srcdir) for "bseserver.h" in .genprc.c
|
||||
# need -I. (builddir) for "bsecore.genidl.hh" in bsecore.cc
|
||||
-INCLUDES += -I$(top_srcdir) -I$(top_builddir) -I$(srcdir) -I. $(BSE_CFLAGS) -DG_DISABLE_DEPRECATED -DG_DISABLE_CONST_RETURNS
|
||||
+INCLUDES += -I$(top_srcdir) -I$(top_builddir) -I$(srcdir) -I. $(BSE_CFLAGS) -DG_DISABLE_CONST_RETURNS
|
||||
DEFS += $(strip \
|
||||
$(patsubst %, -DG_LOG_DOMAIN=\"BSE\" -DBSE_COMPILATION, \
|
||||
$(filter $(<F), $(bse_sources) $(bse_sources))) \
|
||||
--- beast-0.7.1.orig/bse/zintern/Makefile.am 2008-06-01 13:14:25.880028999 +0200
|
||||
+++ beast-0.7.1/bse/zintern/Makefile.am 2008-06-01 13:14:38.000000000 +0200
|
||||
@@ -4,7 +4,7 @@
|
||||
## GNU Lesser General Public License version 2 or any later version.
|
||||
include $(top_srcdir)/Makefile.decl
|
||||
|
||||
-INCLUDES += -I$(top_srcdir) -I$(top_builddir) $(BSE_CFLAGS) -DG_DISABLE_DEPRECATED -DG_DISABLE_CONST_RETURNS
|
||||
+INCLUDES += -I$(top_srcdir) -I$(top_builddir) $(BSE_CFLAGS) -DG_DISABLE_CONST_RETURNS
|
||||
|
||||
ZFILE_DEFS = $(strip \
|
||||
wave-mono $(srcdir)/wave-mono.bse \
|
||||
--- a/configure.in 2008-06-01 15:19:46.000000000 +0200
|
||||
+++ b/configure.in 2008-06-01 15:27:45.000000000 +0200
|
||||
@@ -159,39 +159,33 @@
|
||||
dnl # Define package requirements.
|
||||
dnl #
|
||||
dnl ## include acintltool.m4 to provide IT_PROG_INTLTOOL
|
||||
-builtin(include, acintltool.m4)dnl
|
||||
-AC_DEFUN([AC_I18N_REQUIREMENTS],
|
||||
-[
|
||||
- ALL_LINGUAS=`cat "$srcdir/po/LINGUAS" | grep -v '^#' | xargs echo -n `
|
||||
- AC_SUBST(ALL_LINGUAS)
|
||||
- AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/po/LINGUAS'])
|
||||
-
|
||||
- dnl # versioned BEAST gettext domain (po/)
|
||||
- BST_GETTEXT_DOMAIN=beast-v$BIN_VERSION # version without -rcZ
|
||||
- AC_SUBST(BST_GETTEXT_DOMAIN)
|
||||
- AC_DEFINE_UNQUOTED(BST_GETTEXT_DOMAIN, "$BST_GETTEXT_DOMAIN", [Versioned BEAST gettext domain])
|
||||
- GETTEXT_PACKAGE=$BST_GETTEXT_DOMAIN
|
||||
- AC_SUBST(GETTEXT_PACKAGE)
|
||||
-
|
||||
- dnl # locale directory for all domains
|
||||
- dnl # (AM_GLIB_DEFINE_LOCALEDIR() could do this if it would do AC_SUBST())
|
||||
- saved_prefix="$prefix"
|
||||
- saved_exec_prefix="$exec_prefix"
|
||||
- test "x$prefix" = xNONE && prefix=$ac_default_prefix
|
||||
- test "x$exec_prefix" = xNONE && exec_prefix=$prefix
|
||||
- if test "x$CATOBJEXT" = "x.mo" ; then
|
||||
- beastlocaledir=`eval echo "${libdir}/locale"`
|
||||
- else
|
||||
- beastlocaledir=`eval echo "${datadir}/locale"`
|
||||
- fi
|
||||
- exec_prefix="$saved_exec_prefix"
|
||||
- prefix="$saved_prefix"
|
||||
- AC_SUBST(beastlocaledir)
|
||||
-
|
||||
- dnl # do gettext checks and prepare for intltool
|
||||
- AM_GLIB_GNU_GETTEXT
|
||||
- IT_PROG_INTLTOOL
|
||||
-])
|
||||
+IT_PROG_INTLTOOL([0.35.0])
|
||||
+
|
||||
+dnl # versioned BEAST gettext domain (po/)
|
||||
+BST_GETTEXT_DOMAIN=beast-v$BIN_VERSION # version without -rcZ
|
||||
+AC_SUBST(BST_GETTEXT_DOMAIN)
|
||||
+AC_DEFINE_UNQUOTED(BST_GETTEXT_DOMAIN, "$BST_GETTEXT_DOMAIN", [Versioned BEAST gettext domain])
|
||||
+GETTEXT_PACKAGE=$BST_GETTEXT_DOMAIN
|
||||
+AC_SUBST(GETTEXT_PACKAGE)
|
||||
+
|
||||
+dnl # locale directory for all domains
|
||||
+dnl # (AM_GLIB_DEFINE_LOCALEDIR() could do this if it would do AC_SUBST())
|
||||
+saved_prefix="$prefix"
|
||||
+saved_exec_prefix="$exec_prefix"
|
||||
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
|
||||
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
|
||||
+if test "x$CATOBJEXT" = "x.mo" ; then
|
||||
+ beastlocaledir=`eval echo "${libdir}/locale"`
|
||||
+else
|
||||
+ beastlocaledir=`eval echo "${datadir}/locale"`
|
||||
+fi
|
||||
+exec_prefix="$saved_exec_prefix"
|
||||
+prefix="$saved_prefix"
|
||||
+AC_SUBST(beastlocaledir)
|
||||
+
|
||||
+dnl # do gettext checks and prepare for intltool
|
||||
+AM_GLIB_GNU_GETTEXT
|
||||
+
|
||||
AC_DEFUN([AC_SFI_REQUIREMENTS],
|
||||
[
|
||||
dnl # check for GLib libs, libbirnet already provides gthread-2.0 and glib-2.0
|
||||
@@ -570,7 +564,6 @@
|
||||
AC_BIRNET_REQUIREMENTS
|
||||
|
||||
# Check requirement sets
|
||||
-AC_I18N_REQUIREMENTS
|
||||
AC_SFI_REQUIREMENTS
|
||||
AC_BSE_REQUIREMENTS
|
||||
AC_BSESCM_REQUIREMENTS
|
||||
--- a/po/POTFILES.in 2008-06-22 15:12:10.000000000 +0200
|
||||
+++ b/po/POTFILES.in 2008-06-22 15:13:28.000000000 +0200
|
||||
@@ -131,3 +131,29 @@
|
||||
plugins/davxtalstrings.c
|
||||
plugins/freeverb/bsefreeverb.c
|
||||
tools/bsewavetool.cc
|
||||
+
|
||||
+beast-gtk/bstgentypes.c
|
||||
+birnet/birnetcpu.cc
|
||||
+birnet/birnetutils.hh
|
||||
+bse/bsebus.genprc.c
|
||||
+bse/bsebusmodule.genidl.hh
|
||||
+bse/bsecontainer.genprc.c
|
||||
+bse/bsecore.genidl.hh
|
||||
+bse/bseieee754.h
|
||||
+bse/bseladspamodule.c
|
||||
+bse/bseparasite.genprc.c
|
||||
+bse/bsesong.genprc.c
|
||||
+bse/bsesource.genprc.c
|
||||
+bse/bsetrack.genprc.c
|
||||
+plugins/artscompressor.genidl.hh
|
||||
+plugins/bseamplifier.genidl.hh
|
||||
+plugins/bsebalance.genidl.hh
|
||||
+plugins/bsecontribsampleandhold.genidl.hh
|
||||
+plugins/bsenoise.genidl.hh
|
||||
+plugins/bsequantizer.genidl.hh
|
||||
+plugins/bsesummation.genidl.hh
|
||||
+plugins/davbassfilter.genidl.hh
|
||||
+plugins/davchorus.genidl.hh
|
||||
+plugins/standardguspatchenvelope.genidl.hh
|
||||
+plugins/standardsaturator.genidl.hh
|
||||
+tests/latency/bselatencytest.genidl.hh
|
||||
6
pkgs/applications/audio/bmp-plugins/musepack/builder.sh
Normal file
6
pkgs/applications/audio/bmp-plugins/musepack/builder.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
source $stdenv/setup
|
||||
|
||||
ensureDir "$out/lib/bmp/Input"
|
||||
installFlags="install libdir=$out/lib/bmp/Input"
|
||||
|
||||
genericBuild
|
||||
11
pkgs/applications/audio/bmp-plugins/musepack/default.nix
Normal file
11
pkgs/applications/audio/bmp-plugins/musepack/default.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{stdenv, fetchurl, pkgconfig, bmp, libmpcdec, taglib}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "bmp-plugin-musepack-1.2";
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = http://files2.musepack.net/linux/plugins/bmp-musepack-1.2.tar.bz2;
|
||||
md5 = "5fe0c9d341ca37d05c780a478f829a5f";
|
||||
};
|
||||
buildInputs = [pkgconfig bmp libmpcdec taglib];
|
||||
}
|
||||
11
pkgs/applications/audio/bmp-plugins/wma/builder.sh
Normal file
11
pkgs/applications/audio/bmp-plugins/wma/builder.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
source $stdenv/setup
|
||||
|
||||
buildFlags="-f Makefile.bmp"
|
||||
|
||||
installPhase=installPhase
|
||||
installPhase() {
|
||||
ensureDir "$out/lib/bmp/Input"
|
||||
cp libwma.so "$out/lib/bmp/Input"
|
||||
}
|
||||
|
||||
genericBuild
|
||||
11
pkgs/applications/audio/bmp-plugins/wma/default.nix
Normal file
11
pkgs/applications/audio/bmp-plugins/wma/default.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{stdenv, fetchurl, pkgconfig, bmp}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "bmp-plugin-wma-1.0.5";
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = http://mcmcc.bat.ru/xmms-wma/xmms-wma-1.0.5.tar.bz2;
|
||||
md5 = "5d62a0f969617aeb40096362c7a8a506";
|
||||
};
|
||||
buildInputs = [pkgconfig bmp];
|
||||
}
|
||||
21
pkgs/applications/audio/bmp/default.nix
Normal file
21
pkgs/applications/audio/bmp/default.nix
Normal file
@@ -0,0 +1,21 @@
|
||||
{ stdenv, fetchurl, pkgconfig, alsaLib, esound, libogg, libvorbis, id3lib
|
||||
, glib, gtk, libglade
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "bmp-0.9.7.1";
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/beepmp/bmp-0.9.7.1.tar.gz;
|
||||
md5 = "c25d5a8d49cc5851d13d525a20023c4c";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
pkgconfig alsaLib esound libogg libvorbis id3lib libglade
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Beep Media Player, an XMMS fork";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [glib gtk];
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{ stdenv, fetchurl, alsaLib, jackaudio, pkgconfig, pulseaudio, xlibs }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "bristol-${version}";
|
||||
version = "0.60.10";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/bristol/${name}.tar.gz";
|
||||
sha256 = "070rn5zdx6vrqmq7w1rrpxig3bxlylbsw82nlmkjnhjrgm6yx753";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
alsaLib jackaudio pkgconfig pulseaudio xlibs.libX11 xlibs.libXext
|
||||
xlibs.xproto
|
||||
];
|
||||
|
||||
preInstall = ''
|
||||
sed -e "s@\`which bristol\`@$out/bin/bristol@g" -i bin/startBristol
|
||||
sed -e "s@\`which brighton\`@$out/bin/brighton@g" -i bin/startBristol
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A range of synthesiser, electric piano and organ emulations";
|
||||
homepage = http://bristol.sourceforge.net;
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
};
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
{ stdenv, fetchurl, cairo, expat, fftwSinglePrec, fluidsynth, glib
|
||||
, gtk, jackaudio, ladspaH , libglade, lv2, pkgconfig }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "calf-${version}";
|
||||
version = "0.0.19-rc7";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/calf/${name}.tar.gz";
|
||||
sha256 = "0515pzc7ishrq0j5hza83s0yp3x34r977h776lpky389whcyf45j";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
cairo expat fftwSinglePrec fluidsynth glib gtk jackaudio ladspaH
|
||||
libglade lv2 pkgconfig
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://calf.sourceforge.net;
|
||||
description = "A set of high quality open source audio plugins for musicians";
|
||||
license = licenses.lgpl2;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
{ fetchurl, stdenv }:
|
||||
|
||||
let version = "0.9";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "cd-discid-${version}";
|
||||
src = fetchurl {
|
||||
url = "mirror://debian/pool/main/c/cd-discid/cd-discid_${version}.orig.tar.gz";
|
||||
sha256 = "1fx2ky1pb07l1r0bldpw16wdsfzw7a0093ib9v66kmilwy2sq5s9";
|
||||
};
|
||||
|
||||
patches = [ ./install.patch ];
|
||||
|
||||
configurePhase = ''
|
||||
sed -i "s|^[[:blank:]]*prefix *=.*$|prefix = $out|g ;
|
||||
s|^[[:blank:]]*INSTALL *=.*$|INSTALL = install -c|g" \
|
||||
"Makefile";
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = http://lly.org/~rcw/cd-discid/;
|
||||
licence = "GPLv2+";
|
||||
description = "cd-discid, a command-line utility to retrieve a disc's CDDB ID";
|
||||
|
||||
longDescription = ''
|
||||
cd-discid is a backend utility to get CDDB discid information
|
||||
from a CD-ROM disc. It was originally designed for cdgrab (now
|
||||
abcde), but can be used for any purpose requiring CDDB data.
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
--- cd-discid-0.9/Makefile 2003-01-05 21:18:07.000000000 +0100
|
||||
+++ cd-discid-0.9/Makefile 2008-05-26 22:14:56.000000000 +0200
|
||||
@@ -32,9 +32,9 @@ clean:
|
||||
|
||||
install: cd-discid
|
||||
$(INSTALL) -d -m 755 $(bindir)
|
||||
- $(INSTALL) -s -m 755 -o 0 cd-discid $(bindir)
|
||||
+ $(INSTALL) -s -m 755 cd-discid $(bindir)
|
||||
$(INSTALL) -d -m 755 $(mandir)
|
||||
- $(INSTALL) -m 644 -o 0 cd-discid.1 $(mandir)
|
||||
+ $(INSTALL) -m 644 cd-discid.1 $(mandir)
|
||||
|
||||
tarball:
|
||||
@cd .. && tar czvf cd-discid_$(VERSION).orig.tar.gz \
|
||||
@@ -1,15 +1,11 @@
|
||||
{ stdenv, fetchurl }:
|
||||
{stdenv, fetchurl}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "cdparanoia-III-10.2";
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "cdparanoia-III-alpha9.8";
|
||||
src = fetchurl {
|
||||
url = "http://downloads.xiph.org/releases/cdparanoia/${name}.src.tgz";
|
||||
sha256 = "1pv4zrajm46za0f6lv162iqffih57a8ly4pc69f7y0gfyigb8p80";
|
||||
url = http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-alpha9.8.src.tgz;
|
||||
md5 = "7218e778b5970a86c958e597f952f193";
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = http://xiph.org/paranoia;
|
||||
description = "A tool and library for reading digital audio from CDs";
|
||||
};
|
||||
patches = [./fix.patch];
|
||||
}
|
||||
|
||||
46
pkgs/applications/audio/cdparanoia/fix.patch
Normal file
46
pkgs/applications/audio/cdparanoia/fix.patch
Normal file
@@ -0,0 +1,46 @@
|
||||
*** cdparanoia-III-alpha9.8/interface/utils.h Thu Apr 20 00:41:04 2000
|
||||
--- cdparanoia-III-alpha9.8-old/interface/utils.h Wed Jan 19 21:44:08 2005
|
||||
***************
|
||||
*** 110,117 ****
|
||||
case CDDA_MESSAGE_LOGIT:
|
||||
d->errorbuf=catstring(d->errorbuf,s);
|
||||
break;
|
||||
- case CDDA_MESSAGE_FORGETIT:
|
||||
- default:
|
||||
}
|
||||
}
|
||||
}
|
||||
--- 110,115 ----
|
||||
***************
|
||||
*** 125,132 ****
|
||||
case CDDA_MESSAGE_LOGIT:
|
||||
d->messagebuf=catstring(d->messagebuf,s);
|
||||
break;
|
||||
- case CDDA_MESSAGE_FORGETIT:
|
||||
- default:
|
||||
}
|
||||
}
|
||||
}
|
||||
--- 123,128 ----
|
||||
***************
|
||||
*** 167,174 ****
|
||||
}
|
||||
}
|
||||
break;
|
||||
- case CDDA_MESSAGE_FORGETIT:
|
||||
- default:
|
||||
}
|
||||
}
|
||||
if(malloced)free(buffer);
|
||||
--- 163,168 ----
|
||||
***************
|
||||
*** 203,210 ****
|
||||
if(!malloced)*messages=catstring(*messages,"\n");
|
||||
}
|
||||
break;
|
||||
- case CDDA_MESSAGE_FORGETIT:
|
||||
- default:
|
||||
}
|
||||
}
|
||||
if(malloced)free(buffer);
|
||||
--- 197,202 ----
|
||||
@@ -1,21 +0,0 @@
|
||||
{ stdenv, fetchurl, ncurses, pkgconfig, alsaLib, flac, libmad, ffmpeg, libvorbis, mpc, mp4v2 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "cmus-${version}";
|
||||
version = "2.3.3";
|
||||
|
||||
configurePhase = "./configure prefix=$out";
|
||||
|
||||
buildInputs = [ ncurses pkgconfig alsaLib flac libmad ffmpeg libvorbis mpc mp4v2 ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/cmus/cmus-v${version}.tar.bz2";
|
||||
sha256 = "13hc5d7h2ayjwnip345hc59rpjj9fgrp1i5spjw3s14prdqr733v";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "cmus is a small, fast and powerful console music player for Linux and *BSD";
|
||||
homepage = http://cmus.sourceforge.net;
|
||||
license = stdenv.lib.licenses.gpl2;
|
||||
};
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{ stdenv, fetchurl, cmake, libsndfile, flex, bison
|
||||
, alsaLib ? null
|
||||
, pulseaudio ? null
|
||||
, tcltk ? null
|
||||
|
||||
# maybe csound can be compiled with support for those, see configure output
|
||||
# , ladspa ? null
|
||||
# , fluidsynth ? null
|
||||
# , jack ? null
|
||||
# , gmm ? null
|
||||
# , wiiuse ? null
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "csound5.18.02";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
src = fetchurl {
|
||||
url = http://netcologne.dl.sourceforge.net/project/csound/csound5/csound5.18/Csound5.18.02.tar.gz;
|
||||
sha256 = "4c461cf3bf60b83671224949dd33805379b7121bf2c0ad6af5e191e7f6f8adc8";
|
||||
};
|
||||
|
||||
buildInputs = [ cmake libsndfile flex bison alsaLib pulseaudio tcltk ];
|
||||
|
||||
meta = {
|
||||
description = "sound design, audio synthesis, and signal processing system, providing facilities for music composition and performance on all major operating systems and platforms";
|
||||
homepage = http://www.csounds.com/;
|
||||
license = stdenv.lib.licenses.gpl2;
|
||||
maintainers = [stdenv.lib.maintainers.marcweber];
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
{ stdenv, fetchgit, alsaLib, fftwSinglePrec, freetype, jackaudio
|
||||
, libxslt, lv2, pkgconfig, premake, xlibs }:
|
||||
|
||||
let
|
||||
rev = "7815b3545978e";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "distrho-${rev}";
|
||||
|
||||
src = fetchgit {
|
||||
url = "git://distrho.git.sf.net/gitroot/distrho/distrho";
|
||||
inherit rev;
|
||||
sha256 = "2e260f16ee67b1166c39e2d55c8dd5593902c8b3d8d86485545ef83139e1e844";
|
||||
};
|
||||
|
||||
patchPhase = ''
|
||||
sed -e "s#xsltproc#${libxslt}/bin/xsltproc#" -i Makefile
|
||||
sed -e "s#PREFIX = /usr/local#PREFIX = $out#" -i Makefile
|
||||
sed -e "s#/etc/HybridReverb2#$out/etc/Hybridreverb2#" \
|
||||
-i ports/hybridreverb2/source/SystemConfig.cpp
|
||||
sed -e "s#/usr#$out#" -i ports/hybridreverb2/data/HybridReverb2.conf
|
||||
'';
|
||||
|
||||
buildInputs = [
|
||||
alsaLib fftwSinglePrec freetype jackaudio pkgconfig premake
|
||||
xlibs.libX11 xlibs.libXcomposite xlibs.libXcursor xlibs.libXext
|
||||
xlibs.libXinerama xlibs.libXrender
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
sh ./scripts/premake-update.sh linux
|
||||
make standalone
|
||||
make lv2
|
||||
|
||||
# generate lv2 ttl
|
||||
sh scripts/generate-ttl.sh
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp bin/standalone/* $out/bin/
|
||||
mkdir -p $out/lib/lv2
|
||||
cp -a bin/lv2/* $out/lib/lv2/
|
||||
|
||||
# HybridReverb2 data
|
||||
mkdir -p $out/etc/HybridReverb2
|
||||
cp ports/hybridreverb2/data/HybridReverb2.conf $out/etc/HybridReverb2/
|
||||
mkdir -p $out/share
|
||||
cp -a ports/hybridreverb2/data/HybridReverb2 $out/share/
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://distrho.sourceforge.net;
|
||||
description = "A collection of cross-platform audio effects and plugins";
|
||||
longDescription = ''
|
||||
Includes:
|
||||
3BandEQ bitmangler drowaudio-distortion drowaudio-flanger
|
||||
drowaudio-tremolo eqinox HybridReverb2 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
|
||||
'';
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{ stdenv, fetchurl, pkgconfig, gtk, libid3tag, id3lib, libvorbis, libogg, flac }:
|
||||
|
||||
let
|
||||
|
||||
version = "2.1.7";
|
||||
sha256 = "bfed34cbdce96aca299a0db2b531dbc66feb489b911a34f0a9c67f2eb6ee9301";
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
name = "easytag-${version}";
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/easytag/easytag-${version}.tar.bz2";
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig gtk libid3tag id3lib libvorbis libogg flac ];
|
||||
|
||||
meta = {
|
||||
description = "an utility for viewing and editing tags for various audio files";
|
||||
homepage = http://http://easytag.sourceforge.net/;
|
||||
license = stdenv.lib.licenses.gpl2;
|
||||
};
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{stdenv, fetchurl, unzip, portaudio }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "espeak-1.46.02";
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/espeak/espeak-1.46.02-source.zip;
|
||||
sha256 = "1fjlv5fm0gzvr5wzy1dp4nspw04k0bqv3jymha2p2qfjbfifp2zg";
|
||||
};
|
||||
|
||||
buildInputs = [ unzip portaudio ];
|
||||
|
||||
patchPhase = ''
|
||||
sed -e s,/bin/ln,ln,g -i src/Makefile
|
||||
sed -e 's,^CXXFLAGS=-O2,CXXFLAGS=-O2 -D PATH_ESPEAK_DATA=\\\"$(DATADIR)\\\",' -i src/Makefile
|
||||
'' + (if portaudio.api_version == 19 then ''
|
||||
cp src/portaudio19.h src/portaudio.h
|
||||
'' else "");
|
||||
|
||||
configurePhase = ''
|
||||
cd src
|
||||
makeFlags="PREFIX=$out DATADIR=$out/share/espeak-data"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Compact open source software speech synthesizer";
|
||||
homepage = http://espeak.sourceforge.net/;
|
||||
license = "GPLv3+";
|
||||
};
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
{stdenv, fetchurl, unzip, portaudio, wxGTK}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "espeakedit-1.46.02";
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/espeak/espeakedit-1.46.02.zip;
|
||||
sha256 = "1cc5r89sn8zz7b8wj4grx9xb7aqyi0ybj0li9hpy7hd67r56kqkl";
|
||||
};
|
||||
|
||||
buildInputs = [ unzip portaudio wxGTK ];
|
||||
|
||||
patchPhase = if portaudio.api_version == 19 then ''
|
||||
cp src/portaudio19.h src/portaudio.h
|
||||
'' else "";
|
||||
|
||||
buildPhase = ''
|
||||
cd src
|
||||
gcc -o espeakedit *.cpp `wx-config --cxxflags --libs`
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
ensureDir $out/bin
|
||||
cp espeakedit $out/bin
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Phoneme editor for espeak";
|
||||
homepage = http://espeak.sourceforge.net/;
|
||||
license = "GPLv3+";
|
||||
};
|
||||
}
|
||||
@@ -1,25 +1,11 @@
|
||||
{ stdenv, fetchurl, libogg }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "flac-1.2.1";
|
||||
{stdenv, fetchurl, libogg}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "flac-1.1.2";
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/flac/flac-1.2.1.tar.gz;
|
||||
sha256 = "1pry5lgzfg57pga1zbazzdd55fkgk3v5qy4axvrbny5lrr5s8dcn";
|
||||
url = http://downloads.xiph.org/releases/flac/flac-1.1.2.tar.gz;
|
||||
md5 = "2bfc127cdda02834d0491ab531a20960";
|
||||
};
|
||||
|
||||
buildInputs = [ libogg ];
|
||||
|
||||
patches =
|
||||
[ # Fix for building on GCC 4.3.
|
||||
(fetchurl {
|
||||
url = "http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/media-libs/flac/files/flac-1.2.1-gcc-4.3-includes.patch?rev=1.1";
|
||||
sha256 = "1m6ql5vyjb2jlp5qiqp6w0drq1m6x6y3i1dnl5ywywl3zd36k0mr";
|
||||
})
|
||||
];
|
||||
|
||||
meta = {
|
||||
homepage = http://flac.sourceforge.net;
|
||||
description = "Library and tools for encoding and decoding the FLAC lossless audio file format";
|
||||
};
|
||||
buildInputs = [libogg] ;
|
||||
}
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
{ stdenv, fetchurl, alsaLib, glib, jackaudio, libsndfile, pkgconfig
|
||||
, pulseaudio }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "fluidsynth-${version}";
|
||||
version = "1.1.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/fluidsynth/${name}.tar.bz2";
|
||||
sha256 = "1x73a5rsyvfmh1j0484kzgnk251q61g1g2jdja673l8fizi0xd24";
|
||||
};
|
||||
|
||||
buildInputs = [ alsaLib glib jackaudio libsndfile pkgconfig pulseaudio ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "real-time software synthesizer based on the SoundFont 2 specifications";
|
||||
homepage = http://www.fluidsynth.org;
|
||||
license = licenses.lgpl2;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
};
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
{ stdenv, fetchsvn, autoconf, automake, docbook_xml_dtd_45
|
||||
, docbook_xsl, gtkmm, intltool, libgig, libsndfile, libtool, libxslt
|
||||
, pkgconfig }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "gigedit-svn-${version}";
|
||||
version = "2342";
|
||||
|
||||
src = fetchsvn {
|
||||
url = "https://svn.linuxsampler.org/svn/gigedit/trunk";
|
||||
rev = "${version}";
|
||||
sha256 = "0wi94gymj0ns5ck9lq1d970gb4gnzrq4b57j5j7k3d6185yg2gjs";
|
||||
};
|
||||
|
||||
patchPhase = "sed -e 's/which/type -P/g' -i Makefile.cvs";
|
||||
|
||||
preConfigure = "make -f Makefile.cvs";
|
||||
|
||||
buildInputs = [
|
||||
autoconf automake docbook_xml_dtd_45 docbook_xsl gtkmm intltool
|
||||
libgig libsndfile libtool libxslt pkgconfig
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://www.linuxsampler.org;
|
||||
description = "Gigasampler file access library";
|
||||
license = licenses.gpl2;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
};
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
{stdenv, fetchurl, SDL, SDL_gfx, SDL_image, tremor, flac, mpg123, libmikmod
|
||||
, speex
|
||||
, keymap ? "newdefault"
|
||||
, conf ? "unknown"
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "gmu-0.7.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = http://wejp.k.vu/files/gmu-0.7.2.tar.gz;
|
||||
sha256 = "0gvhwhhlj64lc425wqch4g6v59ldd5i3rxll3zdcrdgk2vkh8nys";
|
||||
};
|
||||
|
||||
buildInputs = [ SDL SDL_gfx SDL_image tremor flac mpg123 libmikmod speex ];
|
||||
|
||||
NIX_LDFLAGS = "-lgcc_s";
|
||||
|
||||
preBuild = ''
|
||||
makeFlags="$makeFlags PREFIX=$out"
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
cp ${keymap}.keymap $out/share/gmu/default.keymap
|
||||
cp gmuinput.${conf}.conf $out/share/gmu/gmuinput.conf
|
||||
mkdir -p $out/etc/gmu
|
||||
cp gmu.${conf}.conf $out/etc/gmu/gmu.conf
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = http://wejp.k.vu/projects/gmu;
|
||||
description = "Open source music player for portable gaming consoles and handhelds";
|
||||
license = "GPLv2";
|
||||
};
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
{ stdenv, fetchurl, pkgconfig, libgpod, gtk, glib, gettext, perl, perlXMLParser
|
||||
, libglade, flex, libid3tag, libvorbis, intltool }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "gtkpod-1.0.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/gtkpod/gtkpod-1.0.0.tar.gz;
|
||||
sha256 = "04jzybs55c27kyp7r9c58prcq0q4ssvj5iggva857f49s1ar826q";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig libgpod gettext perl perlXMLParser gtk libglade flex
|
||||
libid3tag libvorbis intltool ];
|
||||
|
||||
patchPhase = ''
|
||||
sed -i 's/which/type -P/' scripts/*.sh
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "GTK Manager for an Apple ipod";
|
||||
homepage = http://gtkpod.sourceforge.net;
|
||||
license = "GPLv2+";
|
||||
platforms = with stdenv.lib.platforms; linux;
|
||||
};
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
{ stdenv, fetchurl, python, gettext, intltool, pkgconfig, jackaudio, libsndfile
|
||||
, glib, gtk, glibmm, gtkmm, fftw, librdf, ladspaH, boost }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "guitarix-${version}";
|
||||
version = "0.25.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/guitarix/guitarix2-${version}.tar.bz2";
|
||||
sha256 = "1wcg3yc2iy72hj6z9l88393f00by0iwhhn8xrc3q55p4rj0mnrga";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
[ python gettext intltool pkgconfig jackaudio libsndfile glib gtk glibmm
|
||||
gtkmm fftw librdf ladspaH boost
|
||||
];
|
||||
|
||||
configurePhase = "python waf configure --prefix=$out";
|
||||
|
||||
buildPhase = "python waf build";
|
||||
|
||||
installPhase = "python waf install";
|
||||
|
||||
meta = {
|
||||
description = "A virtual guitar amplifier for Linux running with JACK";
|
||||
longDescription = ''
|
||||
guitarix is a virtual guitar amplifier for Linux running with
|
||||
JACK (Jack Audio Connection Kit). It is free as in speech and
|
||||
free as in beer. Its free sourcecode allows to build it for
|
||||
other UNIX-like systems also, namely for BSD and for MacOSX.
|
||||
|
||||
It takes the signal from your guitar as any real amp would do:
|
||||
as a mono-signal from your sound card. Your tone is processed by
|
||||
a main amp and a rack-section. Both can be routed separately and
|
||||
deliver a processed stereo-signal via JACK. You may fill the
|
||||
rack with effects from more than 25 built-in modules spanning
|
||||
from a simple noise-gate to brain-slashing modulation-fx like
|
||||
flanger, phaser or auto-wah. Your signal is processed with
|
||||
minimum latency. On any properly set-up Linux-system you do not
|
||||
need to wait for more than 10 milli-seconds for your playing to
|
||||
be delivered, processed by guitarix.
|
||||
|
||||
guitarix offers the range of sounds you would expect from a
|
||||
full-featured universal guitar-amp. You can get crisp
|
||||
clean-sounds, nice overdrive, fat distortion and a diversity of
|
||||
crazy sounds never heard before.
|
||||
'';
|
||||
homepage = http://guitarix.sourceforge.net/;
|
||||
license = stdenv.lib.licenses.gpl3Plus;
|
||||
maintainers = [ stdenv.lib.maintainers.astsmtl ];
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{ stdenv, fetchurl, alsaLib, boost, glib, jackaudio, ladspaPlugins
|
||||
, libarchive, liblrdf , libsndfile, pkgconfig, qt4, scons, subversion }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.9.5";
|
||||
name = "hydrogen-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/hydrogen/hydrogen-${version}.tar.gz";
|
||||
sha256 = "1hyri49va2ss26skd6p9swkx0kbr7ggifbahkrcfgj8yj7pp6g4n";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
alsaLib boost glib jackaudio ladspaPlugins libarchive liblrdf
|
||||
libsndfile pkgconfig qt4 scons subversion
|
||||
];
|
||||
|
||||
patches = [ ./scons-env.patch ];
|
||||
|
||||
postPatch = ''
|
||||
sed -e 's#/usr/lib/ladspa#${ladspaPlugins}/lib/ladspa#' -i libs/hydrogen/src/preferences.cpp
|
||||
sed '/\/usr/d' -i libs/hydrogen/src/preferences.cpp
|
||||
'';
|
||||
|
||||
# why doesn't scons find librdf?
|
||||
buildPhase = ''
|
||||
scons prefix=$out libarchive=1 lrdf=0 install
|
||||
'';
|
||||
|
||||
installPhase = ":";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Advanced drum machine";
|
||||
homepage = http://www.hydrogen-music.org;
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
};
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
--- hydrogen-0.9.5/Sconstruct 2011-03-15 13:22:35.000000000 +0100
|
||||
+++ hydrogen-0.9.5/Sconstruct 2011-04-17 16:06:54.000000000 +0200
|
||||
@@ -178,7 +178,7 @@
|
||||
|
||||
includes.append( "libs/hydrogen/include" )
|
||||
|
||||
- env = Environment( options = opts )
|
||||
+ env = Environment( options = opts, ENV = os.environ )
|
||||
|
||||
|
||||
#location of qt4.py
|
||||
@@ -298,7 +298,6 @@
|
||||
|
||||
for N in glob.glob('./data/i18n/hydrogen.*'):
|
||||
env.Alias(target="install", source=env.Install(dir= env['DESTDIR'] + env['prefix'] + '/share/hydrogen/data/i18n', source=N))
|
||||
- env.Alias(target="install", source=env.Install(dir= env['DESTDIR'] + env['prefix'] + '/share/hydrogen/data', source="./data/img"))
|
||||
|
||||
#add every img in ./data/img to the install list.
|
||||
os.path.walk("./data/img/",install_images,env)
|
||||
@@ -379,7 +379,7 @@
|
||||
|
||||
includes, a , b = get_platform_flags( opts )
|
||||
|
||||
-env = Environment(options = opts, CPPPATH = includes)
|
||||
+env = Environment(options = opts, ENV = os.environ)
|
||||
|
||||
|
||||
Help(opts.GenerateHelpText(env))
|
||||
@@ -1,28 +0,0 @@
|
||||
{stdenv, fetchurl, id3lib, groff}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "id3v2-0.1.11";
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/id3v2/${name}.tar.gz";
|
||||
sha256 = "00r6f9yzmkrqa62dnkm8njg5cjzhmy0l17nj1ba15nrrm0mnand4";
|
||||
};
|
||||
|
||||
patches = [ ./id3v2-0.1.11-track-bad-free.patch ];
|
||||
|
||||
buildNativeInputs = [ groff ];
|
||||
buildInputs = [ id3lib ];
|
||||
|
||||
configurePhase = ''
|
||||
export makeFlags=PREFIX=$out
|
||||
'';
|
||||
|
||||
preInstall = ''
|
||||
mkdir -p $out/bin $out/man/man1
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "A command line editor for id3v2 tags";
|
||||
homepage = http://id3v2.sourceforge.net/;
|
||||
license = "GPLv2+";
|
||||
};
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
http://sourceforge.net/tracker/index.php?func=detail&aid=1252035&group_id=4193&atid=304193
|
||||
|
||||
diff -up id3v2-0.1.11/id3v2.cpp~ id3v2-0.1.11/id3v2.cpp
|
||||
--- id3v2-0.1.11/id3v2.cpp~ 2004-05-04 21:30:15.000000000 +0300
|
||||
+++ id3v2-0.1.11/id3v2.cpp 2008-01-03 21:22:02.000000000 +0200
|
||||
@@ -423,7 +423,7 @@ int main( int argc, char *argv[])
|
||||
{
|
||||
// check if there is a total track number and if we only have
|
||||
// the track number for this file. In this case combine them.
|
||||
- char *currentTrackNum, *newTrackNum;
|
||||
+ char *currentTrackNum, *newTrackNum = NULL;
|
||||
|
||||
if (pFrame != NULL)
|
||||
{
|
||||
@@ -1,28 +0,0 @@
|
||||
{ stdenv, fetchurl, jackaudio, libsndfile, pkgconfig }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "jack_capture-${version}";
|
||||
version = "0.9.69";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://archive.notam02.no/arkiv/src/${name}.tar.gz";
|
||||
sha256 = "0sk7b92my1v1g7rhkpl1c608rb0rdb28m9zqfll95kflxajd16zv";
|
||||
};
|
||||
|
||||
buildInputs = [ jackaudio libsndfile pkgconfig ];
|
||||
|
||||
buildPhase = "PREFIX=$out make jack_capture";
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp jack_capture $out/bin/
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A program for recording soundfiles with jack";
|
||||
homepage = http://archive.notam02.no/arkiv/src;
|
||||
license = licenses.gpl2;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
{ stdenv, fetchurl, jackaudio, pkgconfig }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "jackmeter-0.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.aelius.com/njh/jackmeter/${name}.tar.gz";
|
||||
sha256 = "03siznnq3f0nnqyighgw9qdq1y4bfrrxs0mk6394pza3sz4b6sgp";
|
||||
};
|
||||
|
||||
buildInputs = [ jackaudio pkgconfig ];
|
||||
|
||||
meta = {
|
||||
description = "Console jack loudness meter";
|
||||
homepage = http://www.aelius.com/njh/jackmeter/;
|
||||
license = "GPLv2";
|
||||
maintainers = [ stdenv.lib.maintainers.marcweber ];
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{ stdenv, fetchurl, fftw, ladspaH, pkgconfig }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "swh-plugins-0.4.15";
|
||||
|
||||
src = fetchurl {
|
||||
url = http://plugin.org.uk/releases/0.4.15/swh-plugins-0.4.15.tar.gz;
|
||||
sha256 = "0h462s4mmqg4iw7zdsihnrmz2vjg0fd49qxw2a284bnryjjfhpnh";
|
||||
};
|
||||
|
||||
buildInputs = [fftw ladspaH pkgconfig];
|
||||
|
||||
postInstall =
|
||||
''
|
||||
mkdir -p $out/share/ladspa/
|
||||
ln -sv $out/lib/ladspa $out/share/ladspa/lib
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "LADSPA format audio plugins";
|
||||
};
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
{ stdenv, fetchurl, builderDefs }:
|
||||
|
||||
let
|
||||
src = fetchurl {
|
||||
url = http://www.ladspa.org/ladspa_sdk/ladspa.h.txt;
|
||||
sha256 = "1b908csn85ng9sz5s5d1mqk711cmawain2z8px2ajngihdrynb67";
|
||||
};
|
||||
in
|
||||
let localDefs = builderDefs.passthru.function {
|
||||
buildInputs = [];
|
||||
inherit src;
|
||||
};
|
||||
in with localDefs;
|
||||
let
|
||||
copyFile = fullDepEntry ("
|
||||
mkdir -p \$out/include
|
||||
cp ${src} \$out/include/ladspa.h
|
||||
") [minInit defEnsureDir];
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "ladspa.h";
|
||||
builder = writeScript "ladspa.h-builder"
|
||||
(textClosure localDefs [copyFile]);
|
||||
meta = {
|
||||
description = "LADSPA format audio plugins";
|
||||
inherit src;
|
||||
};
|
||||
}
|
||||
@@ -1,17 +1,9 @@
|
||||
{stdenv, fetchurl, nasm}:
|
||||
{stdenv, fetchurl}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "lame-3.98.4";
|
||||
stdenv.mkDerivation {
|
||||
name = "lame-3.96.1";
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/lame/${name}.tar.gz";
|
||||
sha256 = "1j3jywv6ic2cy0x0q1a1h6rcl6xmcs5f58xawjdkl8hpcv3l8cdc";
|
||||
url = mirror://sourceforge/lame/lame-3.96.1.tar.gz ;
|
||||
md5 = "e1206c46a5e276feca11a7149e2fc6ac" ;
|
||||
};
|
||||
|
||||
buildInputs = [ nasm ];
|
||||
|
||||
configureFlags = [ "--enable-nasm" ];
|
||||
|
||||
# Either disable static, or fix the rpath of 'lame' for it to point
|
||||
# properly to the libmp3lame shared object.
|
||||
dontDisableStatic = true;
|
||||
}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
{ stdenv, fetchurl, alsaLib, gtk, jackaudio, libuuid, libxml2
|
||||
, makeWrapper, pkgconfig, readline }:
|
||||
|
||||
assert libuuid != null;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "lash-${version}";
|
||||
version = "0.5.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://savannah/lash/${name}.tar.gz";
|
||||
sha256 = "05kc4brcx8mncai0rj2gz4s4bsrsy9q8xlnaddf75i0m8jl7snhh";
|
||||
};
|
||||
|
||||
patches = [ ./socket.patch ];
|
||||
|
||||
buildInputs = [ alsaLib gtk jackaudio libuuid libxml2 makeWrapper
|
||||
pkgconfig readline ];
|
||||
|
||||
postInstall = ''
|
||||
for i in lash_control lash_panel
|
||||
do wrapProgram "$out/bin/$i" --prefix LD_LIBRARY_PATH ":" "${libuuid}/lib"
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "LASH Audio Session Handler";
|
||||
longDescription = ''
|
||||
Session management system for GNU/Linux audio applications.
|
||||
'';
|
||||
homepage = http://www.nongnu.org/lash;
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
};
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
Via http://bugs.gentoo.org/show_bug.cgi?id=229603
|
||||
|
||||
--- lash-0.5.4/liblash/socket.c 2008-06-26 15:20:44.227064193 +0200
|
||||
+++ lash-0.5.4/liblash/socket.c 2008-06-26 15:21:18.245063129 +0200
|
||||
@@ -20,6 +20,11 @@
|
||||
|
||||
#define _POSIX_SOURCE /* addrinfo */
|
||||
|
||||
+#ifdef LASH_BUILD
|
||||
+#define _GNU_SOURCE
|
||||
+#include "config.h"
|
||||
+#endif /* LASH_BUILD */
|
||||
+
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
@@ -1,29 +0,0 @@
|
||||
{ stdenv, fetchgit, pythonPackages }:
|
||||
|
||||
pythonPackages.buildPythonPackage rec {
|
||||
name = "lastwatch-${version}";
|
||||
namePrefix = "";
|
||||
version = "0.4.1";
|
||||
|
||||
src = fetchgit {
|
||||
url = "git://github.com/aszlig/LastWatch.git";
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "c43f0fd87e9f3daafc7e8676daf2e89c8e21fbabc278eb1455e28d2997587a92";
|
||||
};
|
||||
|
||||
pythonPath = [
|
||||
pythonPackages.pyinotify
|
||||
pythonPackages.pylast
|
||||
pythonPackages.mutagen
|
||||
];
|
||||
|
||||
propagatedBuildInputs = pythonPath;
|
||||
|
||||
installCommand = "python setup.py install --prefix=$out";
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/aszlig/LastWatch";
|
||||
description = "An inotify-based last.fm audio scrobbler";
|
||||
license = stdenv.lib.licenses.gpl2;
|
||||
};
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{ stdenv, fetchurl, pkgconfig, intltool, gtk, alsaLib, libglade }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "lingot-0.9.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = http://download.savannah.gnu.org/releases/lingot/lingot-0.9.0.tar.gz;
|
||||
sha256 = "07z129lp8m4sz608q409wb11c639w7cbn497r7bscgg08p6c07xb";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig intltool gtk alsaLib libglade ];
|
||||
|
||||
configureFlags = "--disable-jack";
|
||||
|
||||
meta = {
|
||||
description = "Not a Guitar-Only tuner";
|
||||
homepage = http://www.nongnu.org/lingot/;
|
||||
license = "GPLv2+";
|
||||
platforms = with stdenv.lib.platforms; linux;
|
||||
maintainers = with stdenv.lib.maintainers; [viric];
|
||||
};
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
{ stdenv, fetchsvn, alsaLib, asio, autoconf, automake, bison
|
||||
, jackaudio, libgig, libsndfile, libtool, lv2, pkgconfig }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "linuxsampler-svn-${version}";
|
||||
version = "2340";
|
||||
|
||||
src = fetchsvn {
|
||||
url = "https://svn.linuxsampler.org/svn/linuxsampler/trunk";
|
||||
rev = "${version}";
|
||||
sha256 = "0zsrvs9dwwhjx733m45vfi11yjkqv33z8qxn2i9qriq5zs1f0kd7";
|
||||
};
|
||||
|
||||
patches = ./linuxsampler_lv2_sfz_fix.diff;
|
||||
|
||||
preConfigure = ''
|
||||
sed -e 's/which/type -P/g' -i scripts/generate_parser.sh
|
||||
make -f Makefile.cvs
|
||||
'';
|
||||
|
||||
buildInputs = [
|
||||
alsaLib asio autoconf automake bison jackaudio libgig libsndfile
|
||||
libtool lv2 pkgconfig
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://www.linuxsampler.org;
|
||||
description = "Sampler backend";
|
||||
longDescription = ''
|
||||
Includes sampler engine, audio and MIDI drivers, network layer
|
||||
(LSCP) API and native C++ API.
|
||||
|
||||
LinuxSampler is licensed under the GNU GPL with the exception
|
||||
that USAGE of the source code, libraries and applications FOR
|
||||
COMMERCIAL HARDWARE OR SOFTWARE PRODUCTS IS NOT ALLOWED without
|
||||
prior written permission by the LinuxSampler authors. If you
|
||||
have questions on the subject, that are not yet covered by the
|
||||
FAQ, please contact us.
|
||||
'';
|
||||
license = licenses.proprietary;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
Index: linuxsampler-r2359/src/hostplugins/lv2/PluginLv2.cpp
|
||||
===================================================================
|
||||
--- linuxsampler-r2359/src/hostplugins/lv2/PluginLv2.cpp (revision 2359)
|
||||
+++ linuxsampler-r2359/src/hostplugins/lv2/PluginLv2.cpp (working copy)
|
||||
@@ -18,6 +18,8 @@
|
||||
* MA 02110-1301 USA *
|
||||
***************************************************************************/
|
||||
|
||||
+#define _BSD_SOURCE 1 /* for realpath() */
|
||||
+
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
#include <cstdio>
|
||||
@@ -118,6 +120,23 @@
|
||||
dmsg(2, ("linuxsampler: Deactivate\n"));
|
||||
}
|
||||
|
||||
+ static String RealPath(const String& path)
|
||||
+ {
|
||||
+ String out = path;
|
||||
+ char* cpath = NULL;
|
||||
+#ifdef _WIN32
|
||||
+ cpath = (char*)malloc(MAX_PATH);
|
||||
+ GetFullPathName(path.c_str(), MAX_PATH, cpath, NULL);
|
||||
+#else
|
||||
+ cpath = realpath(path.c_str(), NULL);
|
||||
+#endif
|
||||
+ if (cpath) {
|
||||
+ out = cpath;
|
||||
+ free(cpath);
|
||||
+ }
|
||||
+ return out;
|
||||
+ }
|
||||
+
|
||||
String PluginLv2::PathToState(const String& path) {
|
||||
if (MapPath) {
|
||||
char* cstr = MapPath->abstract_path(MapPath->handle, path.c_str());
|
||||
@@ -131,9 +150,10 @@
|
||||
String PluginLv2::PathFromState(const String& path) {
|
||||
if (MapPath) {
|
||||
char* cstr = MapPath->absolute_path(MapPath->handle, path.c_str());
|
||||
- const String abstract_path(cstr);
|
||||
+ // Resolve symbolic links so SFZ sample paths load correctly
|
||||
+ const String absolute_path(RealPath(cstr));
|
||||
free(cstr);
|
||||
- return abstract_path;
|
||||
+ return absolute_path;
|
||||
}
|
||||
return path;
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{ stdenv, fetchurl, SDL, alsaLib, cmake, fftw, jackaudio, libogg,
|
||||
libsamplerate, libsndfile, pkgconfig, pulseaudio, qt4 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "lmms-${version}";
|
||||
version = "0.4.10";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/lmms/${name}.tar.bz2";
|
||||
sha256 = "035cqmxcbr9ipnicdv5l7h05q2hqbavxkbaxyq06ppnv2y7fxwrb";
|
||||
};
|
||||
|
||||
buildInputs = [ SDL alsaLib cmake fftw jackaudio libogg
|
||||
libsamplerate libsndfile pkgconfig pulseaudio qt4 ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Linux MultiMedia Studio";
|
||||
homepage = "http://lmms.sourceforge.net";
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
};
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
{ stdenv, fetchurl, SDL , alsaLib, gtk, jackaudio, ladspaH
|
||||
, ladspaPlugins, libsamplerate, libsndfile, pkgconfig, pulseaudio }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "mhwaveedit-${version}";
|
||||
version = "1.4.21";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.gna.org/mhwaveedit/${name}.tar.bz2";
|
||||
sha256 = "0jl7gvhwsz4fcn5d146h4m6i3hlxdsw4mmj280cv9g70p6zqi1w7";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
[ SDL alsaLib gtk jackaudio ladspaH libsamplerate libsndfile
|
||||
pkgconfig pulseaudio
|
||||
];
|
||||
|
||||
configureFlags = "--with-default-ladspa-path=${ladspaPlugins}/lib/ladspa";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "graphical program for editing, playing and recording sound files";
|
||||
homepage = https://gna.org/projects/mhwaveedit;
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
};
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{ stdenv, fetchurl, libmikmod, ncurses }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "mikmod-3.2.2";
|
||||
src = fetchurl {
|
||||
url = "http://mikmod.shlomifish.org/files/${name}.tar.gz";
|
||||
sha256 = "105vl1kyah588wpbpq6ck1wlr0jj55l2ps72q5i01gs9px8ncmp8";
|
||||
};
|
||||
|
||||
buildInputs = [ libmikmod ncurses ];
|
||||
|
||||
meta = {
|
||||
description = "Tracker music player for the terminal";
|
||||
homepage = http://mikmod.shlomifish.org/;
|
||||
license = "GPLv2+";
|
||||
maintainers = with stdenv.lib.maintainers; [ viric ];
|
||||
platforms = with stdenv.lib.platforms; linux;
|
||||
};
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
{ fetchurl, stdenv, ncurses, pkgconfig, gtk }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "mp3info-0.8.5a";
|
||||
|
||||
src = fetchurl {
|
||||
url = "ftp://ftp.ibiblio.org/pub/linux/apps/sound/mp3-utils/mp3info/${name}.tgz";
|
||||
sha256 = "042f1czcs9n2sbqvg4rsvfwlqib2gk976mfa2kxlfjghx5laqf04";
|
||||
};
|
||||
|
||||
buildInputs = [ ncurses pkgconfig gtk ];
|
||||
|
||||
configurePhase =
|
||||
'' sed -i Makefile \
|
||||
-e "s|^prefix=.*$|prefix=$out|g ;
|
||||
s|/bin/rm|rm|g ;
|
||||
s|/usr/bin/install|install|g"
|
||||
'';
|
||||
|
||||
preInstall =
|
||||
'' mkdir -p "$out/bin"
|
||||
mkdir -p "$out/man/man1"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "MP3Info, an MP3 technical info viewer and ID3 1.x tag editor";
|
||||
|
||||
longDescription =
|
||||
'' MP3Info is a little utility used to read and modify the ID3 tags of
|
||||
MP3 files. MP3Info can also display various techincal aspects of an
|
||||
MP3 file including playing time, bit-rate, sampling frequency and
|
||||
other attributes in a pre-defined or user-specifiable output format.
|
||||
'';
|
||||
|
||||
homepage = http://www.ibiblio.org/mp3info/;
|
||||
|
||||
license = "GPLv2+";
|
||||
|
||||
maintainers = [ stdenv.lib.maintainers.ludo ];
|
||||
platforms = stdenv.lib.platforms.unix;
|
||||
};
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{ fetchurl, stdenv, gettext, libmpcdec, libao }:
|
||||
|
||||
let version = "0.2.4"; in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "mpc123-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/mpc123/version%20${version}/${name}.tar.gz";
|
||||
sha256 = "0sf4pns0245009z6mbxpx7kqy4kwl69bc95wz9v23wgappsvxgy1";
|
||||
};
|
||||
|
||||
patches = [ ./use-gcc.patch ];
|
||||
|
||||
buildInputs = [ gettext libmpcdec libao ];
|
||||
|
||||
installPhase =
|
||||
# XXX: Should install locales too (though there's only 1 available).
|
||||
'' mkdir -p "$out/bin"
|
||||
cp -v mpc123 "$out/bin"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = http://mpc123.sourceforge.net/;
|
||||
|
||||
description = "mpc123, a Musepack (.mpc) audio player";
|
||||
|
||||
license = "GPLv2+";
|
||||
|
||||
maintainers = [ stdenv.lib.maintainers.ludo ];
|
||||
platforms = stdenv.lib.platforms.gnu; # arbitrary choice
|
||||
};
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
Don't worry, just use GCC and everything's gonna be alright.
|
||||
|
||||
--- mpc123-0.2.4/Makefile 2008-03-21 22:14:38.000000000 +0100
|
||||
+++ mpc123-0.2.4/Makefile 2010-01-28 23:26:49.000000000 +0100
|
||||
@@ -17,7 +17,7 @@
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
-CC := $(shell which colorgcc || which cc)
|
||||
+CC := gcc
|
||||
|
||||
TAGSPRG := ctags
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
{stdenv, fetchurl, alsaLib }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "mpg123-1.12.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/mpg123/mpg123-1.12.3.tar.bz2;
|
||||
sha256 = "1ij689s7jch3d4g0ja3jylaphallc8vgrsrm9b12254phnyy23xf";
|
||||
};
|
||||
|
||||
buildInputs = [ alsaLib ];
|
||||
|
||||
crossAttrs = {
|
||||
configureFlags = if stdenv.cross ? mpg123 then
|
||||
"--with-cpu=${stdenv.cross.mpg123.cpu}" else "";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Command-line MP3 player";
|
||||
homepage = http://mpg123.sourceforge.net/;
|
||||
license = "LGPL";
|
||||
};
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
{stdenv, fetchurl, libao, libmad, libid3tag, zlib}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "mpg321-0.2.13-2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/mpg321/0.2.13/${name}.tar.gz";
|
||||
sha256 = "0zx9xyr97frlyrwyk2msm9h1sn2b84vqaxcy5drbzcd2n585lwlx";
|
||||
};
|
||||
|
||||
buildInputs = [libao libid3tag libmad zlib];
|
||||
|
||||
meta = {
|
||||
description = "mpg321, a command-line MP3 player";
|
||||
homepage = http://mpg321.sourceforge.net/;
|
||||
license = "GPLv2";
|
||||
maintainers = [ stdenv.lib.maintainers.ludo ];
|
||||
platforms = stdenv.lib.platforms.gnu;
|
||||
};
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
{stdenv, fetchurl, ncurses, curl, taglib, fftw, mpd_clientlib, pkgconfig}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.5.10";
|
||||
name = "ncmpcpp-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://ncmpcpp.rybczak.net/stable/ncmpcpp-${version}.tar.bz2";
|
||||
sha256 = "ff6d5376a2d9caba6f5bb78e68af77cefbdb2f04cd256f738e39f8ac9a79a4a8";
|
||||
};
|
||||
|
||||
buildInputs = [ ncurses curl taglib fftw mpd_clientlib pkgconfig ];
|
||||
|
||||
meta = {
|
||||
description = "Curses-based interface for MPD (music player daemon)";
|
||||
homepage = http://unkart.ovh.org/ncmpcpp/;
|
||||
license = "GPLv2+";
|
||||
maintainers = [ stdenv.lib.maintainers.mornfall ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
{stdenv, fetchurl, libogg, libao, pkgconfig, libopus}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "opus-tools-0.1.5";
|
||||
src = fetchurl {
|
||||
url = "http://downloads.xiph.org/releases/opus/${name}.tar.gz";
|
||||
sha256 = "0184zfamg3qcjknk4liz4smws3mbv77gjhq2pn9xgcx9nw78srvn";
|
||||
};
|
||||
|
||||
buildInputs = [ libogg libao pkgconfig libopus ];
|
||||
|
||||
meta = {
|
||||
description = "Tools to work with opus encoded audio streams";
|
||||
homepage = http://www.opus-codec.org/;
|
||||
license = "BSD";
|
||||
};
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
{ fetchurl, stdenv, pkgconfig, pulseaudio, gtkmm, libsigcxx
|
||||
, libglademm, libcanberra, intltool, gettext }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "pavucontrol-1.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://freedesktop.org/software/pulseaudio/pavucontrol/${name}.tar.xz";
|
||||
sha256 = "1plcyrc7p6gqxjhxx2xh6162bkb29wixjrqrjnl9b8g3nrjjigix";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig pulseaudio gtkmm libsigcxx libglademm libcanberra
|
||||
intltool gettext ];
|
||||
|
||||
configureFlags = "--disable-lynx --disable-gtk3";
|
||||
|
||||
meta = {
|
||||
description = "PulseAudio Volume Control";
|
||||
|
||||
longDescription = ''
|
||||
PulseAudio Volume Control (pavucontrol) provides a GTK+
|
||||
graphical user interface to connect to a PulseAudio server and
|
||||
easily control the volume of all clients, sinks, etc.
|
||||
'';
|
||||
|
||||
homepage = http://0pointer.de/lennart/projects/pavucontrol/;
|
||||
|
||||
license = "GPLv2+";
|
||||
|
||||
maintainers = [ stdenv.lib.maintainers.ludo ];
|
||||
platforms = stdenv.lib.platforms.gnu; # arbitrary choice
|
||||
};
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{ stdenv, fetchgit, alsaLib, cmake, gtk, jackaudio, libgnomecanvas
|
||||
, libpthreadstubs, libsamplerate, libsndfile, libtool, libxml2
|
||||
, pkgconfig }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "petri-foo";
|
||||
|
||||
src = fetchgit {
|
||||
url = https://github.com/licnep/Petri-Foo.git;
|
||||
rev = "eef3b6efebe842d2fa18ed32b881fea4562b84e0";
|
||||
sha256 = "a20c3f1a633500a65c099c528c7dc2405daa60738b64d881bb8f2036ae59913c";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
[ alsaLib cmake gtk jackaudio libgnomecanvas libpthreadstubs
|
||||
libsamplerate libsndfile libtool libxml2 pkgconfig
|
||||
];
|
||||
|
||||
dontUseCmakeBuildDir=true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "MIDI controllable audio sampler";
|
||||
longDescription = "a fork of Specimen";
|
||||
homepage = http://petri-foo.sourceforge.net;
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
};
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{ stdenv, fetchurl, alsaLib, cmake, qt4 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "pianobooster-${version}";
|
||||
version = "0.6.4b";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/pianobooster/pianobooster-src-0.6.4b.tar.gz";
|
||||
sha256 = "1xwyap0288xcl0ihjv52vv4ijsjl0yq67scc509aia4plmlm6l35";
|
||||
};
|
||||
|
||||
preConfigure = "cd src";
|
||||
|
||||
buildInputs = [ alsaLib cmake qt4 ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A MIDI file player that teaches you how to play the piano";
|
||||
homepage = http://pianobooster.sourceforge.net;
|
||||
license = licenses.gpl3;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
};
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user