Merge remote-tracking branch 'origin/master' into staging.

Conflicts:
	pkgs/desktops/e18/enlightenment.nix
This commit is contained in:
Peter Simons 2014-08-04 16:51:47 +02:00
commit 2d326e5032
1261 changed files with 4697 additions and 3318 deletions

View File

@ -92,6 +92,7 @@
skeidel = "Sven Keidel <svenkeidel@gmail.com>";
smironov = "Sergey Mironov <ierton@gmail.com>";
sprock = "Roger Mason <rmason@mun.ca>";
tailhook = "Paul Colomiets <paul@colomiets.name>";
thammers = "Tobias Hammerschmidt <jawr@gmx.de>";
the-kenny = "Moritz Ulrich <moritz@tarn-vedra.de>";
thoughtpolice = "Austin Seipp <aseipp@pobox.com>";

View File

@ -1,146 +0,0 @@
/* Tool to sort attribute sets. Primarily useful for keeping
all-packages.nix tidy.
To compile:
$ strc -i ../../maintainers/scripts/sort-attrs.str -la stratego-lib
Typical invocation:
$ sglr -m -p ~/Dev/nix/src/libexpr/nix.tbl -i all-packages.nix \
| implode-asfix --lex \
| ../../maintainers/scripts/sort-attrs \
| asfix-yield
*/
module sort-attrs
imports
libstratego-lib
libstratego-sglr
strategies
no-wsp = !appl(prod([], cf(opt(layout())), no-attrs()), [])
rules
list-sep(s): [] -> []
list-sep(s): [x | xs] -> [[x | before] | <list-sep(s)> [split | after]]
where
<split-fetch-keep(s)> xs => (before, split, after)
list-sep(s): [x | xs] -> [[x | xs]]
where
<not(split-fetch-keep(s))> xs
list-sep-end(s): xs -> [<conc> (before, [split]) | <list-sep-end(s)> after]
where
<split-fetch-keep(s)> xs => (before, split, after)
list-sep-end(s): xs -> [xs]
where
<not(split-fetch-keep(s))> xs
sort-attrs:
appl(p@prod(_, _, attrs([term(cons("Attrs"))])),
[ lit("{")
, ws1
, appl(p2@list(cf(iter-star(sort("Bind")))), attrs)
, ws2
, lit("}")
]
) ->
appl(p, [lit("{"), <no-wsp>, appl(p2, <concat> attrs'), ws2, lit("}")])
where
<debug> "found it";
<attach-wsp> [ws1 | attrs] => withWSP;
<list-sep(starts-section)> withWSP => groups;
<length; debug> groups;
<map({x', x'', x''', xs', starts, starts': \[x | xs] -> [x''' | xs']
where
<remove-section-start> x => (x', starts);
<map(regularise-empty-lines); if !starts; debug; sortable-section; debug then qsort(compare-attrs) else id end> [x' | xs] => [x'' | xs'];
<[] <+ \x -> ["\n\n\n" | x]\ > starts => starts';
<prepend-layout> (starts', x'') => x'''
\ })> groups => attrs';
<debug> "did it"
attach-wsp: [a, b | cs] -> [(a, b) | <attach-wsp> cs]
attach-wsp: [] -> []
strategies
starts-section =
?x@(appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs), attr);
<implode-string; is-substring(!"###")> cs;
!x
rules
sortable-section = ?[s]; !s; explode-string; not(fetch({x: ?x; !(x, 97); geq}))
remove-section-start:
(appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs), attr) ->
((appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs'), attr), starts)
where
!cs;
list-sep-end(?10); // separate into lines, keeping the \n
map(implode-string);
partition(where(is-substring(!"###"))) => (starts, rest);
<map(explode-string); concat> rest => cs'
regularise-empty-lines:
(appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs), attr) ->
(appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs''), attr)
where
// separate into lines, keeping the \n
// last whitespace is significant, keep
<list-sep-end(?10); split-init-last> cs => (init, last);
<regularise-empty-lines'> init => cs'; // remove whitespace-only lines
<concat> [<explode-string> "\n\n", <concat> cs', last] => cs'' // add one empty line
/* Dirty hack: *do* keep the first empty line following a non-empty line. !!! order matters */
regularise-empty-lines': [] -> []
regularise-empty-lines': [x, y | xs] -> [x, y | <regularise-empty-lines'> xs]
where
<fetch-elem(not(?10 <+ ?32))> x;
<not(fetch-elem(not(?10 <+ ?32)))> y
regularise-empty-lines': [x | xs] -> [x | <regularise-empty-lines'> xs]
where <fetch-elem(not(?10 <+ ?32))> x
regularise-empty-lines': [x | xs] -> <regularise-empty-lines'> xs
where <not(fetch-elem(not(?10 <+ ?32)))> x
prepend-layout:
(text, (appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs), attr)) ->
(appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs''), attr)
where
<implode-string> cs => cs';
<conc-strings; explode-string> (<concat-strings> text, cs') => cs''
compare-attrs:
x@
( (_, appl(p1@prod(_, _, attrs([term(cons("Bind"))])), [id1 | xs1]))
, (_, appl(p2@prod(_, _, attrs([term(cons("Bind"))])), [id2 | xs2]))
)
-> x
where
<string-lt> (id1, id2)
strategies
main = io-wrap(
oncetd(sort-attrs)
)

View File

@ -1036,21 +1036,22 @@ users.extraUsers.alice =
{ createHome = true;
home = "/home/alice";
description = "Alice Foobar";
extraGroups = [ "wheel" ];
extraGroups = [ "wheel" "networkmanager" ];
useDefaultShell = true;
openssh.authorizedKeys.keys = [ "ssh-dss AAAAB3Nza... alice@foobar" ];
};
</programlisting>
Note that <literal>alice</literal> is a member of the
<literal>wheel</literal> group, which allows her to use
<command>sudo</command> to execute commands as
<literal>root</literal>. Also note the SSH public key that allows
remote logins with the corresponding private key. Users created in
this way do not have a password by default, so they cannot log in via
mechanisms that require a password. However, you can use the
<command>passwd</command> program to set a password, which is retained
across invocations of <command>nixos-rebuild</command>.</para>
<literal>wheel</literal> and <literal>networkmanager</literal> groups,
which allows her to use <command>sudo</command> to execute commands as
<literal>root</literal> and to configure the network, respectively.
Also note the SSH public key that allows remote logins with the
corresponding private key. Users created in this way do not have a
password by default, so they cannot log in via mechanisms that require
a password. However, you can use the <command>passwd</command> program
to set a password, which is retained across invocations of
<command>nixos-rebuild</command>.</para>
<para>A user ID (uid) is assigned automatically. You can also specify
a uid manually by adding
@ -1277,6 +1278,28 @@ services.xserver.synaptics.twoFingerScroll = true;
<section xml:id="sec-networking"><title>Networking</title>
<section xml:id="sec-networkmanager"><title>NetworkManager</title>
<para>To facilitate network configuration, some desktop environments
use NetworkManager. You can enable NetworkManager by setting:
<programlisting>
services.networkmanager.enable = true;
</programlisting>
Some desktop managers (e.g., GNOME) enable NetworkManager
automatically for you.</para>
<para>All users that should have permission to change network settings
must belong to the <code>networkmanager</code> group.</para>
<note><para><code>services.networkmanager</code> and
<code>services.wireless</code> can not be enabled at the same time:
you can still connect to the wireless networks using
NetworkManager.</para></note>
</section>
<section xml:id="sec-ssh"><title>Secure shell access</title>
<para>Secure shell (SSH) access to your machine can be enabled by
@ -1399,6 +1422,11 @@ always allowed.)</para>
<section xml:id="sec-wireless"><title>Wireless networks</title>
<para>For a desktop installation using NetworkManager (e.g., GNOME),
you just have to make sure the user is in the
<code>networkmanager</code> group and you can skip the rest of this
section on wireless networks.</para>
<para>
NixOS will start wpa_supplicant for you if you enable this setting:

View File

@ -117,7 +117,7 @@ rec {
report = releaseTools.gcovReport { coverageRuns = [ test ]; };
in (if makeCoverageReport then report else test) // { inherit driver test; };
in (if makeCoverageReport then report else test) // { inherit nodes driver test; };
runInMachine =

View File

@ -179,7 +179,6 @@ in
fileSystems."/" =
{ fsType = "tmpfs";
device = "none";
options = "mode=0755";
};
@ -192,6 +191,8 @@ in
noCheck = true;
};
# In stage 1, mount a tmpfs on top of /nix/store (the squashfs
# image) to make this a live CD.
fileSystems."/nix/.ro-store" =
{ fsType = "squashfs";
device = "/iso/nix-store.squashfs";
@ -201,23 +202,20 @@ in
fileSystems."/nix/.rw-store" =
{ fsType = "tmpfs";
device = "none";
options = "mode=0755";
neededForBoot = true;
};
fileSystems."/nix/store" =
{ fsType = "unionfs-fuse";
device = "unionfs";
options = "allow_other,cow,nonempty,chroot=/mnt-root,max_files=32768,hide_meta_files,dirs=/nix/.rw-store=rw:/nix/.ro-store=ro";
};
boot.initrd.availableKernelModules = [ "squashfs" "iso9660" ];
boot.initrd.kernelModules = [ "loop" ];
# In stage 1, mount a tmpfs on top of /nix/store (the squashfs
# image) to make this a live CD.
boot.initrd.postMountCommands =
''
mkdir -p $targetRoot/nix/store
unionfs -o allow_other,cow,nonempty,chroot=$targetRoot,max_files=32768 /nix/.rw-store=RW:/nix/.ro-store=RO $targetRoot/nix/store
'';
# Closures to be copied to the Nix store on the CD, namely the init
# script and the top-level system configuration directory.
isoImage.storeContents =
@ -313,8 +311,8 @@ in
'';
# Add vfat support to the initrd to enable people to copy the
# contents of the CD to a bootable USB stick. Need unionfs-fuse for union mounts
boot.initrd.supportedFilesystems = [ "vfat" "unionfs-fuse" ];
# contents of the CD to a bootable USB stick.
boot.initrd.supportedFilesystems = [ "vfat" ];
};

View File

@ -137,6 +137,7 @@
gitolite = 127;
znc = 128;
polipo = 129;
mopidy = 130;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
@ -248,6 +249,8 @@
firebird = 127;
znc = 128;
polipo = 129;
mopidy = 130;
docker = 131;
# When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399!

View File

@ -79,6 +79,7 @@
./services/audio/alsa.nix
./services/audio/fuppes.nix
./services/audio/mpd.nix
./services/audio/mopidy.nix
./services/backup/almir.nix
./services/backup/bacula.nix
./services/backup/mysql-backup.nix
@ -296,6 +297,7 @@
./services/x11/xserver.nix
./system/activation/activation-script.nix
./system/activation/top-level.nix
./system/boot/emergency-mode.nix
./system/boot/kernel.nix
./system/boot/kexec.nix
./system/boot/loader/efi.nix
@ -311,15 +313,17 @@
./system/boot/stage-1.nix
./system/boot/stage-2.nix
./system/boot/systemd.nix
./system/boot/tmp.nix
./system/etc/etc.nix
./system/upstart/upstart.nix
./tasks/cpu-freq.nix
./tasks/encrypted-devices.nix
./tasks/filesystems.nix
./tasks/filesystems/btrfs.nix
./tasks/filesystems/cifs.nix
./tasks/filesystems/ext.nix
./tasks/filesystems/f2fs.nix
./tasks/filesystems/nfs.nix
./tasks/filesystems.nix
./tasks/filesystems/reiserfs.nix
./tasks/filesystems/unionfs-fuse.nix
./tasks/filesystems/vfat.nix
@ -334,6 +338,7 @@
./testing/service-runner.nix
./virtualisation/container-config.nix
./virtualisation/containers.nix
./virtualisation/docker.nix
./virtualisation/libvirtd.nix
#./virtualisation/nova.nix
./virtualisation/virtualbox-guest.nix

View File

@ -7,7 +7,6 @@
# Include some utilities that are useful for installing or repairing
# the system.
environment.systemPackages = [
pkgs.subversion # for nixos-checkout
pkgs.w3m # needed for the manual anyway
pkgs.testdisk # useful for repairing boot problems
pkgs.mssys # for writing Microsoft boot sectors / MBRs

View File

@ -13,8 +13,9 @@ with lib;
];
environment.sessionVariables =
{ OPENSSL_X509_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt";
CURL_CA_BUNDLE = "/etc/ssl/certs/ca-bundle.crt";
{ SSL_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt";
# FIXME: unneeded - remove eventually.
OPENSSL_X509_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt";
GIT_SSL_CAINFO = "/etc/ssl/certs/ca-bundle.crt";
};

View File

@ -0,0 +1,107 @@
{ config, lib, pkgs, ... }:
with pkgs;
with lib;
let
uid = config.ids.uids.mopidy;
gid = config.ids.gids.mopidy;
cfg = config.services.mopidy;
mopidyConf = writeText "mopidy.conf" cfg.configuration;
mopidyLauncher = stdenv.mkDerivation {
name = "mopidy-launcher";
phases = [ "installPhase" ];
buildInputs = [ makeWrapper python ];
installPhase = ''
mkdir -p $out/bin
ln -s ${mopidy}/bin/mopidy $out/bin/mopidy
wrapProgram $out/bin/mopidy \
--prefix PYTHONPATH : \
"${concatStringsSep ":" (map (p: "$(toPythonPath ${p})") cfg.extensionPackages)}"
'';
};
in {
options = {
services.mopidy = {
enable = mkOption {
default = false;
type = types.bool;
description = ''
Whether to enable Mopidy, a music player daemon.
'';
};
dataDir = mkOption {
default = "/var/lib/mopidy";
type = types.str;
description = ''
The directory where Mopidy stores its state.
'';
};
extensionPackages = mkOption {
default = [];
type = types.listOf types.package;
example = [ mopidy-spotify ];
description = ''
Mopidy extensions that should be loaded by the service.
'';
};
configuration = mkOption {
type = types.lines;
description = ''
The configuration that Mopidy should use.
'';
};
extraConfigFiles = mkOption {
default = [];
type = types.listOf types.str;
description = ''
Extra config file read by Mopidy when the service starts.
Later files in the list overrides earlier configuration.
'';
};
};
};
###### implementation
config = mkIf cfg.enable {
systemd.services.mopidy = {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "sound.target" ];
description = "mopidy music player daemon";
preStart = "mkdir -p ${cfg.dataDir} && chown -R mopidy:mopidy ${cfg.dataDir}";
serviceConfig = {
ExecStart = "${mopidyLauncher}/bin/mopidy --config ${concatStringsSep ":" ([mopidyConf] ++ cfg.extraConfigFiles)}";
User = "mopidy";
PermissionsStartOnly = true;
};
};
users.extraUsers.mopidy = {
inherit uid;
group = "mopidy";
extraGroups = [ "audio" ];
description = "Mopidy daemon user";
home = "${cfg.dataDir}";
};
users.extraGroups.mopidy.gid = gid;
};
}

View File

@ -22,14 +22,11 @@ let
nixConf =
let
# Tricky: if we're using a chroot for builds, then we need
# /bin/sh in the chroot (our own compromise to purity).
# However, since /bin/sh is a symlink to some path in the
# Nix store, which furthermore has runtime dependencies on
# other paths in the store, we need the closure of /bin/sh
# in `build-chroot-dirs' - otherwise any builder that uses
# /bin/sh won't work.
binshDeps = pkgs.writeReferencesToFile config.system.build.binsh;
# If we're using a chroot for builds, then provide /bin/sh in
# the chroot as a bind-mount to bash. This means we also need to
# include the entire closure of bash.
sh = pkgs.stdenv.shell;
binshDeps = pkgs.writeReferencesToFile sh;
in
pkgs.runCommand "nix.conf" {extraOptions = cfg.extraOptions; } ''
extraPaths=$(for i in $(cat ${binshDeps}); do if test -d $i; then echo $i; fi; done)
@ -40,7 +37,7 @@ let
build-users-group = nixbld
build-max-jobs = ${toString (cfg.maxJobs)}
build-use-chroot = ${if cfg.useChroot then "true" else "false"}
build-chroot-dirs = ${toString cfg.chrootDirs} $(echo $extraPaths)
build-chroot-dirs = ${toString cfg.chrootDirs} /bin/sh=${sh} $(echo $extraPaths)
binary-caches = ${toString cfg.binaryCaches}
trusted-binary-caches = ${toString cfg.trustedBinaryCaches}
$extraOptions
@ -253,8 +250,6 @@ in
config = {
nix.chrootDirs = [ "/bin" ];
environment.etc."nix/nix.conf".source = nixConf;
# List of machines for distributed Nix builds in the format

View File

@ -122,9 +122,8 @@ in {
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment = { ES_HOME = cfg.dataDir; };
path = [ pkgs.elasticsearch ];
serviceConfig = {
ExecStart = "elasticsearch -Des.path.conf=${configDir} ${toString cfg.extraCmdLineOptions}";
ExecStart = "${pkgs.elasticsearch}/bin/elasticsearch -Des.path.conf=${configDir} ${toString cfg.extraCmdLineOptions}";
User = "elasticsearch";
PermissionsStartOnly = true;
};

View File

@ -387,7 +387,7 @@ let
'';
enablePHP = any (svc: svc.enablePHP) allSubservices;
enablePHP = mainCfg.enablePHP || any (svc: svc.enablePHP) allSubservices;
# Generate the PHP configuration file. Should probably be factored
@ -531,6 +531,12 @@ in
'';
};
enablePHP = mkOption {
type = types.bool;
default = false;
description = "Whether to enable the PHP module.";
};
phpOptions = mkOption {
type = types.lines;
default = "";

View File

@ -29,6 +29,14 @@ ${extraWorkersProperties}
'';
in
{
options = {
extraWorkersProperties = lib.mkOption {
default = "";
description = "Additional configuration for the workers.properties file.";
};
};
extraModules = [
{ name = "jk"; path = "${pkgs.tomcat_connectors}/modules/mod_jk.so"; }
];

View File

@ -77,6 +77,11 @@ in
description = "Whether to enable logging per virtual host.";
};
jdk = mkOption {
default = pkgs.jdk;
description = "Which JDK to use.";
};
axis2 = {
enable = mkOption {
@ -332,13 +337,13 @@ in
'';
script = ''
${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c 'CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${pkgs.jdk} JAVA_OPTS="${cfg.javaOpts}" CATALINA_OPTS="${cfg.catalinaOpts}" ${tomcat}/bin/startup.sh'
${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c 'CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${cfg.jdk} JAVA_OPTS="${cfg.javaOpts}" CATALINA_OPTS="${cfg.catalinaOpts}" ${tomcat}/bin/startup.sh'
'';
postStop =
''
echo "Stopping tomcat..."
CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${pkgs.jdk} ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c ${tomcat}/bin/shutdown.sh
CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${cfg.jdk} ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c ${tomcat}/bin/shutdown.sh
'';
};

View File

@ -1,6 +1,6 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
with pkgs.lib;
with lib;
let

View File

@ -41,16 +41,19 @@ in {
};
accelFactor = mkOption {
type = types.nullOr types.string;
default = "0.001";
description = "Cursor acceleration (how fast speed increases from minSpeed to maxSpeed).";
};
minSpeed = mkOption {
type = types.nullOr types.string;
default = "0.6";
description = "Cursor speed factor for precision finger motion.";
};
maxSpeed = mkOption {
type = types.nullOr types.string;
default = "1.0";
description = "Cursor speed factor for highest-speed finger motion.";
};
@ -120,9 +123,9 @@ in {
MatchIsTouchpad "on"
${optionalString (cfg.dev != null) ''MatchDevicePath "${cfg.dev}"''}
Driver "synaptics"
Option "MinSpeed" "${cfg.minSpeed}"
Option "MaxSpeed" "${cfg.maxSpeed}"
Option "AccelFactor" "${cfg.accelFactor}"
${optionalString (cfg.minSpeed != null) ''Option "MinSpeed" "${cfg.minSpeed}"''}
${optionalString (cfg.maxSpeed != null) ''Option "MaxSpeed" "${cfg.maxSpeed}"''}
${optionalString (cfg.accelFactor != null) ''Option "AccelFactor" "${cfg.accelFactor}"''}
${optionalString cfg.tapButtons tapConfig}
Option "ClickFinger1" "${builtins.elemAt cfg.buttonsMap 0}"
Option "ClickFinger2" "${builtins.elemAt cfg.buttonsMap 1}"

View File

@ -0,0 +1,37 @@
{ config, lib, ... }:
with lib;
{
###### interface
options = {
systemd.enableEmergencyMode = mkOption {
default = true;
type = types.bool;
description = ''
Whether to enable emergency mode, which is an
<command>sulogin</command> shell started on the console if
mounting a filesystem fails. Since some machines (like EC2
instances) have no console of any kind, emergency mode doesn't
make sense, and it's better to continue with the boot insofar
as possible.
'';
};
};
###### implementation
config = {
systemd.additionalUpstreamSystemUnits = optionals
config.systemd.enableEmergencyMode [
"emergency.target" "emergency.service"
];
};
}

View File

@ -68,20 +68,15 @@ with lib;
config = mkIf (!config.boot.isContainer) {
environment.etc = [
{ source = "${pkgs.kmod-blacklist-ubuntu}/modprobe.conf";
target = "modprobe.d/ubuntu.conf";
}
{ source = pkgs.writeText "modprobe.conf"
''
${flip concatMapStrings config.boot.blacklistedKernelModules (name: ''
blacklist ${name}
'')}
${config.boot.extraModprobeConfig}
'';
target = "modprobe.d/nixos.conf";
}
];
environment.etc."modprobe.d/ubuntu.conf".source = "${pkgs.kmod-blacklist-ubuntu}/modprobe.conf";
environment.etc."modprobe.d/nixos.conf".text =
''
${flip concatMapStrings config.boot.blacklistedKernelModules (name: ''
blacklist ${name}
'')}
${config.boot.extraModprobeConfig}
'';
environment.systemPackages = [ config.system.sbin.modprobe pkgs.kmod ];

View File

@ -4,7 +4,8 @@ targetRoot=/mnt-root
console=tty1
export LD_LIBRARY_PATH=@extraUtils@/lib
export PATH=@extraUtils@/bin:@extraUtils@/sbin
export PATH=@extraUtils@/bin
ln -s @extraUtils@/bin /bin
fail() {
@ -262,6 +263,13 @@ mountFS() {
checkFS "$device" "$fsType"
# Create backing directories for unionfs-fuse.
if [ "$fsType" = unionfs-fuse ]; then
for i in $(IFS=:; echo ${options##*,dirs=}); do
mkdir -m 0700 -p /mnt-root"${i%=*}"
done
fi
echo "mounting $device on $mountPoint..."
mkdir -p "/mnt-root$mountPoint" || true

View File

@ -23,22 +23,6 @@ let
};
needsCifsUtils = kernelPackages.kernel ? features
&& kernelPackages.kernel.features ? needsCifsUtils
&& kernelPackages.kernel.features.needsCifsUtils
&& any (fs: fs.fsType == "cifs") fileSystems;
busybox =
if needsCifsUtils
then pkgs.busybox.override {
extraConfig = ''
CONFIG_FEATURE_MOUNT_CIFS n
CONFIG_FEATURE_MOUNT_HELPERS y
'';
}
else pkgs.busybox;
# Some additional utilities needed in stage 1, like mount, lvm, fsck
# etc. We don't want to bring in all of those packages, so we just
# copy what we need. Instead of using statically linked binaries,
@ -51,6 +35,7 @@ let
}
''
mkdir -p $out/bin $out/lib
ln -s $out/bin $out/sbin
# Copy what we need from Glibc.
cp -pv ${pkgs.glibc}/lib/ld*.so.? $out/lib
@ -62,11 +47,10 @@ let
cp -pv ${pkgs.gcc.gcc}/lib*/libgcc_s.so.* $out/lib
# Copy BusyBox.
cp -rvd ${busybox}/{bin,sbin} $out/
chmod -R u+w $out
cp -pvd ${pkgs.busybox}/bin/* ${pkgs.busybox}/sbin/* $out/bin/
# Copy some utillinux stuff.
cp -v ${pkgs.utillinux}/sbin/blkid $out/bin
cp -vf ${pkgs.utillinux}/sbin/blkid $out/bin
cp -pdv ${pkgs.utillinux}/lib/libblkid*.so.* $out/lib
cp -pdv ${pkgs.utillinux}/lib/libuuid*.so.* $out/lib
@ -89,12 +73,7 @@ let
# Copy modprobe.
cp -v ${pkgs.kmod}/bin/kmod $out/bin/
ln -s kmod $out/bin/modprobe
# Maybe copy cifs utils
${optionalString needsCifsUtils ''
cp -v ${pkgs.cifs_utils}/sbin/mount.cifs $out/bin
''}
ln -sf kmod $out/bin/modprobe
${config.boot.initrd.extraUtilsCommands}
@ -313,6 +292,13 @@ in
example = "xz";
};
boot.initrd.supportedFilesystems = mkOption {
default = [ ];
example = [ "btrfs" ];
type = types.listOf types.string;
description = "Names of supported filesystem types in the initial ramdisk.";
};
fileSystems = mkOption {
options.neededForBoot = mkOption {
default = false;
@ -347,5 +333,7 @@ in
# Prevent systemd from waiting for the /dev/root symlink.
systemd.units."dev-root.device".text = "";
boot.initrd.supportedFilesystems = map (fs: fs.fsType) fileSystems;
};
}

View File

@ -29,7 +29,7 @@ setPath "@path@"
# Normally, stage 1 mounts the root filesystem read/writable.
# However, in some environments, stage 2 is executed directly, and the
# root is read-only. So make it writable here.
mount -n -o remount,rw /
mount -n -o remount,rw none /
# Likewise, stage 1 mounts /proc, /dev and /sys, so if we don't have a
@ -98,12 +98,6 @@ mkdir -m 0755 -p /etc/nixos
rm -rf /var/run /var/lock
rm -f /etc/{group,passwd,shadow}.lock
if test -n "@cleanTmpDir@"; then
echo -n "cleaning \`/tmp'..."
find /tmp -maxdepth 1 -mindepth 1 -print0 | xargs -0r rm -rf --one-file-system
echo " done"
fi
# Also get rid of temporary GC roots.
rm -rf /nix/var/nix/gcroots/tmp /nix/var/nix/temproots

View File

@ -17,7 +17,7 @@ let
src = ./stage-2-init.sh;
shellDebug = "${pkgs.bashInteractive}/bin/bash";
isExecutable = true;
inherit (config.boot) devShmSize runSize cleanTmpDir;
inherit (config.boot) devShmSize runSize;
inherit (config.nix) readOnlyStore;
inherit (config.networking) useHostResolvConf;
ttyGid = config.ids.gids.tty;
@ -26,8 +26,7 @@ let
pkgs.utillinux
pkgs.sysvtools
pkgs.openresolv
] ++ (optional config.boot.cleanTmpDir pkgs.findutils)
++ optional config.nix.readOnlyStore readonlyMountpoint;
] ++ optional config.nix.readOnlyStore readonlyMountpoint;
postBootCommands = pkgs.writeText "local-cmds"
''
${config.boot.postBootCommands}
@ -81,15 +80,6 @@ in
'';
};
# FIXME: should replace this with something that uses systemd-tmpfiles.
cleanTmpDir = mkOption {
type = types.bool;
default = false;
description = ''
Whether to delete all files in <filename>/tmp</filename> during boot.
'';
};
};
};

View File

@ -162,10 +162,7 @@ let
"systemd-sysctl.service"
]
++ optionals cfg.enableEmergencyMode [
"emergency.target"
"emergency.service"
];
++ cfg.additionalUpstreamSystemUnits;
upstreamSystemWants =
[ #"basic.target.wants"
@ -317,7 +314,9 @@ let
''
[Service]
${let env = cfg.globalEnvironment // def.environment;
in concatMapStrings (n: "Environment=\"${n}=${getAttr n env}\"\n") (attrNames env)}
in concatMapStrings (n:
let s = "Environment=\"${n}=${getAttr n env}\"\n";
in if stringLength s >= 2048 then throw "The value of the environment variable ${n} in systemd service ${name}.service is too long." else s) (attrNames env)}
${if def.reloadIfChanged then ''
X-ReloadIfChanged=true
'' else if !def.restartIfChanged then ''
@ -635,19 +634,6 @@ in
'';
};
systemd.enableEmergencyMode = mkOption {
default = true;
type = types.bool;
description = ''
Whether to enable emergency mode, which is an
<command>sulogin</command> shell started on the console if
mounting a filesystem fails. Since some machines (like EC2
instances) have no console of any kind, emergency mode doesn't
make sense, and it's better to continue with the boot insofar
as possible.
'';
};
systemd.tmpfiles.rules = mkOption {
type = types.listOf types.str;
default = [];
@ -690,6 +676,15 @@ in
description = "Definition of systemd per-user socket units.";
};
systemd.additionalUpstreamSystemUnits = mkOption {
default = [ ];
type = types.listOf types.str;
example = [ "debug-shell.service" "systemd-quotacheck.service" ];
description = ''
Additional units shipped with systemd that shall be enabled.
'';
};
};

View File

@ -0,0 +1,39 @@
{ config, lib, ... }:
with lib;
{
###### interface
options = {
boot.cleanTmpDir = mkOption {
type = types.bool;
default = false;
description = ''
Whether to delete all files in <filename>/tmp</filename> during boot.
'';
};
boot.tmpOnTmpfs = mkOption {
type = types.bool;
default = false;
description = ''
Whether to mount a tmpfs on <filename>/tmp</filename> during boot.
'';
};
};
###### implementation
config = {
systemd.additionalUpstreamSystemUnits = optional config.boot.tmpOnTmpfs "tmp.mount";
systemd.tmpfiles.rules = optional config.boot.cleanTmpDir "D! /tmp 1777 root root";
};
}

View File

@ -9,7 +9,7 @@ let
prioOption = prio: optionalString (prio !=null) " pri=${toString prio}";
fileSystemOpts = { name, ... }: {
fileSystemOpts = { name, config, ... }: {
options = {
@ -68,6 +68,7 @@ let
config = {
mountPoint = mkDefault name;
device = mkIf (config.fsType == "tmpfs") (mkDefault config.fsType);
};
};
@ -124,13 +125,6 @@ in
description = "Names of supported filesystem types.";
};
boot.initrd.supportedFilesystems = mkOption {
default = [ ];
example = [ "btrfs" ];
type = types.listOf types.string;
description = "Names of supported filesystem types in the initial ramdisk.";
};
};
@ -140,15 +134,11 @@ in
boot.supportedFilesystems = map (fs: fs.fsType) fileSystems;
boot.initrd.supportedFilesystems =
map (fs: fs.fsType)
(filter (fs: fs.mountPoint == "/" || fs.neededForBoot) fileSystems);
# Add the mount helpers to the system path so that `mount' can find them.
system.fsPackages = [ pkgs.dosfstools ];
environment.systemPackages =
[ pkgs.ntfs3g pkgs.cifs_utils pkgs.fuse ]
[ pkgs.ntfs3g pkgs.fuse ]
++ config.system.fsPackages;
environment.etc.fstab.text =
@ -157,7 +147,9 @@ in
# Filesystems.
${flip concatMapStrings fileSystems (fs:
(if fs.device != null then fs.device else "/dev/disk/by-label/${fs.label}")
(if fs.device != null then fs.device
else if fs.label != null then "/dev/disk/by-label/${fs.label}"
else throw "No device specified for mount point ${fs.mountPoint}.")
+ " " + fs.mountPoint
+ " " + fs.fsType
+ " " + fs.options

View File

@ -0,0 +1,25 @@
{ config, lib, pkgs, ... }:
with lib;
let
inInitrd = any (fs: fs == "cifs") config.boot.initrd.supportedFilesystems;
in
{
config = {
system.fsPackages = [ pkgs.cifs_utils ];
boot.initrd.availableKernelModules = mkIf inInitrd
[ "cifs" "nls_utf8" "hmac" "md4" "ecb" "des_generic" "sha256" ];
boot.initrd.extraUtilsCommands = mkIf inInitrd
''
cp -v ${pkgs.cifs_utils}/sbin/mount.cifs $out/bin
'';
};
}

View File

@ -2,14 +2,21 @@
{
config = lib.mkMerge [
(lib.mkIf (lib.any (fs: fs == "unionfs-fuse") config.boot.initrd.supportedFilesystems) {
boot.initrd.kernelModules = [ "fuse" ];
boot.initrd.extraUtilsCommands = ''
cp -v ${pkgs.fuse}/lib/libfuse* $out/lib
cp -v ${pkgs.fuse}/sbin/mount.fuse $out/bin
cp -v ${pkgs.unionfs-fuse}/bin/unionfs $out/bin
substitute ${pkgs.unionfs-fuse}/sbin/mount.unionfs-fuse $out/bin/mount.unionfs-fuse \
--replace '${pkgs.bash}/bin/bash' /bin/sh \
--replace '${pkgs.fuse}/sbin' /bin \
--replace '${pkgs.unionfs-fuse}/bin' /bin
chmod +x $out/bin/mount.unionfs-fuse
'';
boot.initrd.postDeviceCommands = ''
# Hacky!!! fuse hard-codes the path to mount
mkdir -p /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${pkgs.utillinux.name}/bin
@ -17,8 +24,10 @@
ln -s $(which umount) /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${pkgs.utillinux.name}/bin
'';
})
(lib.mkIf (lib.any (fs: fs == "unionfs-fuse") config.boot.supportedFilesystems) {
system.fsPackages = [ pkgs.unionfs-fuse ];
})
];
}

View File

@ -46,21 +46,15 @@ with lib;
config = mkIf config.hardware.trackpoint.enable {
jobs.trackpoint =
{ description = "Initialize trackpoint";
services.udev.extraRules =
''
ACTION=="add|change", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/speed}="${toString config.hardware.trackpoint.speed}", ATTR{device/sensitivity}="${toString config.hardware.trackpoint.sensitivity}"
'';
startOn = "started udev";
task = true;
script = ''
echo -n ${toString config.hardware.trackpoint.sensitivity} \
> /sys/devices/platform/i8042/serio1/sensitivity
echo -n ${toString config.hardware.trackpoint.speed} \
> /sys/devices/platform/i8042/serio1/speed
'';
};
system.activationScripts.trackpoint =
''
${config.systemd.package}/bin/udevadm trigger --attr-match=name="TPPS/2 IBM TrackPoint"
'';
};
}

View File

@ -172,7 +172,7 @@ in
boot.initrd.extraUtilsCommands =
''
# We need swapon in the initrd.
cp ${pkgs.utillinux}/sbin/swapon $out/bin
cp --remove-destination ${pkgs.utillinux}/sbin/swapon $out/bin
'';
# Don't put old configurations in the GRUB menu. The user has no

View File

@ -0,0 +1,109 @@
# Systemd services for docker.
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.virtualisation.docker;
in
{
###### interface
options.virtualisation.docker = {
enable =
mkOption {
type = types.bool;
default = false;
description =
''
This option enables docker, a daemon that manages
linux containers. Users in the "docker" group can interact with
the daemon (e.g. to start or stop containers) using the
<command>docker</command> command line tool.
'';
};
socketActivation =
mkOption {
type = types.bool;
default = false;
description =
''
This option enables docker with socket activation. I.e. docker will
start when first called by client.
Note: This is false by default because systemd lower than 214 that
nixos uses so far, doesn't support SocketGroup option, so socket
created by docker has root group now. This will likely be changed
in future. So set this option explicitly to false if you wish.
'';
};
extraOptions =
mkOption {
type = types.str;
default = "";
description =
''
The extra command-line options to pass to
<command>docker</command> daemon.
'';
};
};
###### implementation
config = mkIf cfg.enable (mkMerge [
{ environment.systemPackages = [ pkgs.docker ];
}
(mkIf cfg.socketActivation {
systemd.services.docker = {
description = "Docker Application Container Engine";
after = [ "network.target" "docker.socket" ];
requires = [ "docker.socket" ];
serviceConfig = {
ExecStart = "${pkgs.docker}/bin/docker --daemon=true --host=fd:// --group=docker ${cfg.extraOptions}";
# I'm not sure if that limits aren't too high, but it's what
# goes in config bundled with docker itself
LimitNOFILE = 1048576;
LimitNPROC = 1048576;
};
};
systemd.sockets.docker = {
description = "Docker Socket for the API";
wantedBy = [ "sockets.target" ];
socketConfig = {
ListenStream = "/var/run/docker.sock";
SocketMode = "0660";
SocketUser = "root";
SocketGroup = "docker";
};
};
})
(mkIf (!cfg.socketActivation) {
systemd.services.docker = {
description = "Docker Application Container Engine";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker}/bin/docker --daemon=true --group=docker ${cfg.extraOptions}";
# I'm not sure if that limits aren't too high, but it's what
# goes in config bundled with docker itself
LimitNOFILE = 1048576;
LimitNPROC = 1048576;
};
# Presumably some containers are running we don't want to interrupt
restartIfChanged = false;
};
})
]);
}

View File

@ -121,19 +121,6 @@ in
networking.usePredictableInterfaceNames = false;
systemd.services.wait-metadata-online = {
description = "Wait for GCE metadata server to become reachable";
wantedBy = [ "network-online.target" ];
before = [ "network-online.target" ];
path = [ pkgs.netcat ];
script = ''
# wait for the metadata server to become available for up to 60 seconds
for counter in {1..30}; do sleep 2 && nc -vzw 2 metadata 80 && break; done
'';
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
};
systemd.services.fetch-ssh-keys =
{ description = "Fetch host keys and authorized_keys for root user";
@ -142,14 +129,15 @@ in
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
path = [ pkgs.curl ];
path = [ pkgs.wget ];
script =
''
wget="wget --retry-connrefused -t 6 --waitretry=10"
# Don't download the SSH key if it has already been downloaded
if ! [ -e /root/.ssh/authorized_keys ]; then
echo "obtaining SSH key..."
mkdir -p /root/.ssh
curl -o /root/authorized-keys-metadata http://metadata/0.1/meta-data/authorized-keys
$wget -O /root/authorized-keys-metadata http://metadata/0.1/meta-data/authorized-keys
if [ $? -eq 0 -a -e /root/authorized-keys-metadata ]; then
cat /root/authorized-keys-metadata | cut -d: -f2- > /root/key.pub
if ! grep -q -f /root/key.pub /root/.ssh/authorized_keys; then
@ -162,7 +150,7 @@ in
fi
echo "obtaining SSH private host key..."
curl -o /root/ssh_host_ecdsa_key --retry-max-time 60 http://metadata/0.1/meta-data/attributes/ssh_host_ecdsa_key
$wget -O /root/ssh_host_ecdsa_key http://metadata/0.1/meta-data/attributes/ssh_host_ecdsa_key
if [ $? -eq 0 -a -e /root/ssh_host_ecdsa_key ]; then
mv -f /root/ssh_host_ecdsa_key /etc/ssh/ssh_host_ecdsa_key
echo "downloaded ssh_host_ecdsa_key"
@ -170,7 +158,7 @@ in
fi
echo "obtaining SSH public host key..."
curl -o /root/ssh_host_ecdsa_key.pub --retry-max-time 60 http://metadata/0.1/meta-data/attributes/ssh_host_ecdsa_key_pub
$wget -O /root/ssh_host_ecdsa_key.pub http://metadata/0.1/meta-data/attributes/ssh_host_ecdsa_key_pub
if [ $? -eq 0 -a -e /root/ssh_host_ecdsa_key.pub ]; then
mv -f /root/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
echo "downloaded ssh_host_ecdsa_key.pub"
@ -179,7 +167,7 @@ in
'';
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
serviceConfig.StandardError = "journal+console";
serviceConfig.StandardOutput = "journal+console";
};
}

View File

@ -275,12 +275,10 @@ in
boot.loader.grub.device = mkVMOverride "/dev/vda";
boot.initrd.supportedFilesystems = optional cfg.writableStore "unionfs-fuse";
boot.initrd.extraUtilsCommands =
''
# We need mke2fs in the initrd.
cp ${pkgs.e2fsprogs}/sbin/mke2fs $out/bin
cp -f ${pkgs.e2fsprogs}/sbin/mke2fs $out/bin
'';
boot.initrd.postDeviceCommands =
@ -303,20 +301,6 @@ in
chmod 1777 $targetRoot/tmp
mkdir -p $targetRoot/boot
${optionalString cfg.writableStore ''
mkdir -p /unionfs-chroot/ro-store
mount --rbind $targetRoot/nix/store /unionfs-chroot/ro-store
mkdir /unionfs-chroot/rw-store
${if cfg.writableStoreUseTmpfs then ''
mount -t tmpfs -o "mode=755" none /unionfs-chroot/rw-store
'' else ''
mkdir $targetRoot/.nix-rw-store
mount --bind $targetRoot/.nix-rw-store /unionfs-chroot/rw-store
''}
unionfs -o allow_other,cow,nonempty,chroot=/unionfs-chroot,max_files=32768,hide_meta_files /rw-store=RW:/ro-store=RO $targetRoot/nix/store
''}
'';
# After booting, register the closure of the paths in
@ -343,12 +327,13 @@ in
# configuration, where the regular value for the `fileSystems'
# attribute should be disregarded for the purpose of building a VM
# test image (since those filesystems don't exist in the VM).
fileSystems = mkVMOverride
fileSystems = mkVMOverride (
{ "/".device = "/dev/vda";
"/nix/store" =
${if cfg.writableStore then "/nix/.ro-store" else "/nix/store"} =
{ device = "store";
fsType = "9p";
options = "trans=virtio,version=9p2000.L,msize=1048576,cache=loose";
neededForBoot = true;
};
"/tmp/xchg" =
{ device = "xchg";
@ -362,6 +347,18 @@ in
options = "trans=virtio,version=9p2000.L,msize=1048576";
neededForBoot = true;
};
} // optionalAttrs cfg.writableStore
{ "/nix/store" =
{ fsType = "unionfs-fuse";
device = "unionfs";
options = "allow_other,cow,nonempty,chroot=/mnt-root,max_files=32768,hide_meta_files,dirs=/nix/.rw-store=rw:/nix/.ro-store=ro";
};
} // optionalAttrs (cfg.writableStore && cfg.writableStoreUseTmpfs)
{ "/nix/.rw-store" =
{ fsType = "tmpfs";
options = "mode=0755";
neededForBoot = true;
};
} // optionalAttrs cfg.useBootLoader
{ "/boot" =
{ device = "/dev/disk/by-label/boot";
@ -369,7 +366,7 @@ in
options = "ro";
noCheck = true; # fsck fails on a r/o filesystem
};
};
});
swapDevices = mkVMOverride [ ];
boot.initrd.luks.devices = mkVMOverride [];

View File

@ -35,7 +35,7 @@ import ./make-test.nix {
# multi-user.target, we should now be able to access it.
my $ip = $machine->succeed("nixos-container show-ip webserver");
chomp $ip;
$machine->succeed("ping -c1 $ip");
#$machine->succeed("ping -c1 $ip"); # FIXME
$machine->succeed("curl --fail http://$ip/ > /dev/null");
# Stop the container.

View File

@ -12,8 +12,7 @@ import ./make-test.nix {
services.nixosManual.enable = mkOverride 0 true;
systemd.tmpfiles.rules = [ "d /tmp 1777 root root 10d" ];
fileSystems = mkVMOverride { "/tmp2" =
{ device = "none";
fsType = "tmpfs";
{ fsType = "tmpfs";
options = "mode=1777,noauto";
};
};

View File

@ -61,7 +61,7 @@ in
meta = {
homepage = "http://lly.org/~rcw/abcde/page/";
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
description = "Command-line audio CD ripper";
longDescription = ''

View File

@ -47,6 +47,21 @@ stdenv.mkDerivation rec {
mkdir -pv $out/gtk2/engines
cp build/libs/clearlooks-newer/libclearlooks.so $out/gtk2/engines/
wrapProgram $out/bin/ardour3 --prefix GTK_PATH : $out/gtk2
# Install desktop file
mkdir -p "$out/share/applications"
cat > "$out/share/applications/ardour.desktop" << EOF
[Desktop Entry]
Name=Ardour 3
GenericName=Digital Audio Workstation
Comment=Multitrack harddisk recorder
Exec=$out/bin/ardour3
Icon=$out/share/ardour3/icons/ardour_icon_256px.png
Terminal=false
Type=Application
X-MultipleArgs=false
Categories=GTK;Audio;AudioVideoEditing;AudioVideo;Video;
EOF
'';
meta = with stdenv.lib; {

View File

@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Sound editor with graphical UI";
homepage = http://audacity.sourceforge.net;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
platforms = with stdenv.lib.platforms; linux;
maintainers = with stdenv.lib.maintainers; [ the-kenny ];
};

View File

@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
the command line or a script.
'';
homepage = http://www.jpj.net/~trevor/aumix.html;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ stdenv.lib.maintainers.ludo ];
platforms = stdenv.lib.platforms.linux;

View File

@ -19,7 +19,7 @@ in
meta = {
homepage = http://lly.org/~rcw/cd-discid/;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
description = "cd-discid, a command-line utility to retrieve a disc's CDDB ID";
longDescription = ''

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "drumkv1-${version}";
version = "0.4.2";
version = "0.5.0";
src = fetchurl {
url = "mirror://sourceforge/drumkv1/${name}.tar.gz";
sha256 = "18rvfgblynlmklk25azmppibn1bdjid97hipa323gnzmxgq0rfjq";
sha256 = "16bjkp22hfpmzj5di98dddzslavgvhw5z7pgjzmjqz9dxvbqwq1k";
};
buildInputs = [ jack2 libsndfile lv2 qt4 ];

View File

@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
description = "Compact open source software speech synthesizer";
homepage = http://espeak.sourceforge.net/;
license = "GPLv3+";
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View File

@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
description = "Phoneme editor for espeak";
homepage = http://espeak.sourceforge.net/;
license = "GPLv3+";
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View File

@ -30,6 +30,6 @@ stdenv.mkDerivation rec {
meta = {
homepage = http://wejp.k.vu/projects/gmu;
description = "Open source music player for portable gaming consoles and handhelds";
license = "GPLv2";
license = stdenv.lib.licenses.gpl2;
};
}

View File

@ -1,25 +1,43 @@
{ stdenv, fetchurl, pkgconfig, libgpod, gtk, glib, gettext, perl, perlXMLParser
, libglade, flex, libid3tag, libvorbis, intltool }:
{ stdenv, fetchurl, pkgconfig, makeWrapper, intltool, libgpod, curl, flac,
gnome3_12, gtk3, glib, gettext, perl, perlXMLParser , libglade, flex, libid3tag,
libvorbis, hicolor_icon_theme, gdk_pixbuf }:
stdenv.mkDerivation {
name = "gtkpod-1.0.0";
let
gnome = gnome3_12;
in stdenv.mkDerivation rec {
version = "2.1.4";
name = "gtkpod-${version}";
src = fetchurl {
url = mirror://sourceforge/gtkpod/gtkpod-1.0.0.tar.gz;
sha256 = "04jzybs55c27kyp7r9c58prcq0q4ssvj5iggva857f49s1ar826q";
url = "mirror://sourceforge/gtkpod/${name}.tar.gz";
sha256 = "ba12b35f3f24a155b68f0ffdaf4d3c5c7d1b8df04843a53306e1c83fc811dfaa";
};
buildInputs = [ pkgconfig libgpod gettext perl perlXMLParser gtk libglade flex
libid3tag libvorbis intltool ];
propagatedUserEnvPkgs = [ gnome.gnome_themes_standard ];
buildInputs = [ pkgconfig makeWrapper intltool curl gettext perl perlXMLParser
flex libgpod libid3tag flac libvorbis gtk3 gdk_pixbuf libglade gnome.anjuta
gnome.gdl gnome.gnome_icon_theme_symbolic gnome.gnome_icon_theme
hicolor_icon_theme ];
patchPhase = ''
sed -i 's/which/type -P/' scripts/*.sh
'';
meta = {
preFixup = ''
wrapProgram "$out/bin/gtkpod" \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gnome.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
'';
enableParallelBuilding = true;
meta = with stdenv.lib; {
description = "GTK Manager for an Apple ipod";
homepage = http://gtkpod.sourceforge.net;
license = "GPLv2+";
platforms = with stdenv.lib.platforms; linux;
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = [ maintainers.skeidel ];
};
}

View File

@ -23,6 +23,6 @@ stdenv.mkDerivation rec {
meta = {
description = "A command line editor for id3v2 tags";
homepage = http://id3v2.sourceforge.net/;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
};
}

View File

@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Console jack loudness meter";
homepage = http://www.aelius.com/njh/jackmeter/;
license = "GPLv2";
license = stdenv.lib.licenses.gpl2;
maintainers = [ stdenv.lib.maintainers.marcweber ];
platforms = stdenv.lib.platforms.linux;
};

View File

@ -15,7 +15,7 @@ stdenv.mkDerivation {
meta = {
description = "Not a Guitar-Only tuner";
homepage = http://www.nongnu.org/lingot/;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
platforms = with stdenv.lib.platforms; linux;
maintainers = with stdenv.lib.maintainers; [viric];
};

View File

@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Tracker music player for the terminal";
homepage = http://mikmod.shlomifish.org/;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = with stdenv.lib.maintainers; [ viric ];
platforms = with stdenv.lib.platforms; linux;
};

View File

@ -0,0 +1,24 @@
{ stdenv, fetchurl, pythonPackages, mopidy }:
pythonPackages.buildPythonPackage rec {
name = "mopidy-moped-${version}";
version = "0.3.1";
src = fetchurl {
url = "https://github.com/martijnboland/moped/archive/v${version}.tar.gz";
sha256 = "0sjp8vr4yfyjx233gamhg0p67zjnlpc9yq3szbw897igsh23j2yr";
};
propagatedBuildInputs = [ mopidy ];
doCheck = false;
meta = with stdenv.lib; {
homepage = https://github.com/martijnboland/moped;
description = "A web client for Mopidy";
license = licenses.mit;
maintainers = [ maintainers.rickynils ];
hydraPlatforms = [];
};
}

View File

@ -3,11 +3,11 @@
pythonPackages.buildPythonPackage rec {
name = "mopidy-spotify-${version}";
version = "1.1.3";
version = "1.2.0";
src = fetchurl {
url = "https://github.com/mopidy/mopidy-spotify/archive/v${version}.tar.gz";
sha256 = "09s6841qb24nrmlc2izb8vxbgv185ddra6ndskrsw907hfli2kl6";
sha256 = "1fgxakylsx0nggis11v6bxfy8h3dl1n1v86liyfcj0xazb1mx69m";
};
propagatedBuildInputs = [ mopidy pythonPackages.pyspotify ];

View File

@ -5,15 +5,15 @@
pythonPackages.buildPythonPackage rec {
name = "mopidy-${version}";
version = "0.18.3";
version = "0.19.0";
src = fetchurl {
url = "https://github.com/mopidy/mopidy/archive/v${version}.tar.gz";
sha256 = "0b8ss6qjzj1pawd8469i5310ily3rad0ashfy87vdyj6xdyfyp0q";
sha256 = "10cnc1bipr0brk7478201cgm71lp5bci3qiaadyxv9hhcn0nmn9b";
};
propagatedBuildInputs = with pythonPackages; [
gst_python pygobject pykka cherrypy ws4py gst_plugins_base gst_plugins_good
gst_python pygobject pykka tornado gst_plugins_base gst_plugins_good
];
# There are no tests

View File

@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
homepage = http://www.ibiblio.org/mp3info/;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ stdenv.lib.maintainers.ludo ];
platforms = stdenv.lib.platforms.unix;

View File

@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
meta = {
description = "A minimalist command line interface to MPD";
homepage = http://www.musicpd.org/clients/mpc/;
license = "GPL2";
license = stdenv.lib.licenses.gpl2;
maintainers = [ stdenv.lib.maintainers.algorith ];
platforms = stdenv.lib.platforms.linux;
};

View File

@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
description = "mpc123, a Musepack (.mpc) audio player";
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ ];
platforms = stdenv.lib.platforms.gnu; # arbitrary choice

View File

@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
meta = {
description = "mpg321, a command-line MP3 player";
homepage = http://mpg321.sourceforge.net/;
license = "GPLv2";
license = stdenv.lib.licenses.gpl2;
maintainers = [ ];
platforms = stdenv.lib.platforms.gnu;
};

View File

@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
homepage = http://freedesktop.org/software/pulseaudio/pavucontrol/ ;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ ];
platforms = stdenv.lib.platforms.gnu; # arbitrary choice

View File

@ -22,7 +22,7 @@ stdenv.mkDerivation {
meta = {
description = "Doing phonetics by computer";
homepage = http://www.fon.hum.uva.nl/praat/;
license = "GPLv2+"; # Has some 3rd-party code in it though
license = stdenv.lib.licenses.gpl2Plus; # Has some 3rd-party code in it though
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -3,12 +3,12 @@
, libtool, libvorbis, pkgconfig, qt4, rubberband, stdenv }:
stdenv.mkDerivation rec {
version = "0.6.1";
version = "0.6.2";
name = "qtractor-${version}";
src = fetchurl {
url = "mirror://sourceforge/qtractor/${name}.tar.gz";
sha256 = "09lyz1pn2dadr1ii2msyv3n13kq3mbgpcwcyfm0brm01c2fnh6wc";
sha256 = "08cr4lgm8bkkmsvfljszcqij3i52n989s7ncrbrn17n61rmgf8yw";
};
buildInputs =

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "samplv1-${version}";
version = "0.4.2";
version = "0.5.0";
src = fetchurl {
url = "mirror://sourceforge/samplv1/${name}.tar.gz";
sha256 = "1vr6jbqnsgdq3v2h1ndp4pirnil3119dqwlq0k0kdscmcskvb9j4";
sha256 = "02mm5y1yzklvs5bpxl86y3dqcg7migfybmin8llk91pws6rl9b41";
};
buildInputs = [ jack2 libsndfile lv2 qt4 ];

View File

@ -8,14 +8,14 @@ assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
let
version = if stdenv.system == "i686-linux"
then "0.9.4.183.g644e24e.428"
else "0.9.10.17.g4129e1c.78";
else "0.9.11.27.g2b1a638.81";
qt4webkit =
if stdenv.system == "i686-linux" then
fetchurl {
name = "libqtwebkit4_2.3.2_i386.deb";
url = http://ie.archive.ubuntu.com/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.3.2-0ubuntu7_i386.deb;
sha256 = "0hi6cwx2b2cwa4nv5phqqw526lc8p9x7kjkcza9x47ny3npw2924";
sha256 = "0q4abhczx91ma57fjss0gn8j6nkfbfsbsh6kxhykzj88dih2s8rn";
}
else
fetchurl {
@ -73,7 +73,7 @@ stdenv.mkDerivation {
else if stdenv.system == "x86_64-linux" then
fetchurl {
url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client_${version}-1_amd64.deb";
sha256 = "1a4vn2ij3nghnc0fq3nsyb95gwhaw4zabdq6jd52hxz8iv31pn1z";
sha256 = "0yfljiw01kssj3qaz8m0ppgrpjs6xrhzlr2wccp64bsnmin7g4sg";
}
else throw "Spotify not supported on this platform.";
@ -149,7 +149,7 @@ stdenv.mkDerivation {
meta = {
homepage = https://www.spotify.com/;
description = "Spotify for Linux allows you to play music from the Spotify music service";
license = "unfree";
license = stdenv.lib.licenses.unfree;
maintainers = [ stdenv.lib.maintainers.eelco ];
};
}

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "synthv1-${version}";
version = "0.4.2";
version = "0.5.0";
src = fetchurl {
url = "mirror://sourceforge/synthv1/${name}.tar.gz";
sha256 = "1r4fszbzwd0yfcch0mcsmh7781zw1317hiljn85w79721fs2m8hc";
sha256 = "011kjccrdwb62rpck5gb8h4kvvm8rk6n77lj78ykxz4pxip5hf14";
};
buildInputs = [ qt4 jack2 lv2 ];

View File

@ -16,6 +16,6 @@ stdenv.mkDerivation {
files, notably the `ogg123' player and the `oggenc' encoder.
'';
homepage = http://xiph.org/vorbis/;
license = "GPLv2";
license = stdenv.lib.licenses.gpl2;
};
}

View File

@ -6,11 +6,11 @@ assert stdenv ? glibc;
stdenv.mkDerivation rec {
name = "yoshimi-${version}";
version = "1.2.0";
version = "1.2.2";
src = fetchurl {
url = "mirror://sourceforge/yoshimi/${name}.tar.bz2";
sha256 = "0p4v39kxxzzfvaazzxarx54i164ghpfxq0ljkavlgr8fnix5v3mx";
sha256 = "1w23ral1qrbg9gqx833giqmchx7952f18yaa52aya9shsdlla83c";
};
buildInputs = [

View File

@ -13,6 +13,6 @@ stdenv.mkDerivation {
meta = {
description = "Hex editor with vim style keybindings";
homepage = http://bvi.sourceforge.net/download.html;
license = "GPL2";
license = stdenv.lib.licenses.gpl2;
};
}

View File

@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
full-screen editors such as GNU Emacs or GNU Moe.
'';
license = "GPLv3+";
license = stdenv.lib.licenses.gpl3Plus;
homepage = http://www.gnu.org/software/ed/;

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Auto-complete extension for Emacs";
homepage = http://cx4a.org/software/auto-complete/;
license = "GPLv3+";
license = stdenv.lib.licenses.gpl3Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
meta = {
description = "A calendar framework for Emacs";
license = "GPLv3+";
license = stdenv.lib.licenses.gpl3Plus;
maintainers = with stdenv.lib.maintainers; [ chaoflow ];
platforms = stdenv.lib.platforms.gnu;

View File

@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
Development Environment), and COGRE (COnnected GRaph Editor).
'';
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
homepage = http://cedet.sourceforge.net/;
};

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Emacs major mode for CoffeeScript, unfancy JavaScript";
homepage = https://github.com/defunkt/coffee-mode;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Emacs-lisp mode for skinning your Emacs";
homepage = http://www.nongnu.org/color-theme;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -28,7 +28,7 @@ stdenv.mkDerivation {
meta = {
description = "A pcl-cvs like interface for managing darcs patches.";
homepage = "http://hub.darcs.net/simon/darcsum";
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ stdenv.lib.maintainers.falsifian ];
};
}

View File

@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
navigation and overview.
'';
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
homepage = http://ecb.sourceforge.net/;

View File

@ -20,7 +20,6 @@ clangStdenv.mkDerivation {
meta = {
homepage = "https://github.com/Golevka/emacs-clang-complete-async";
description = "An emacs plugin to complete C and C++ code using libclang";
license = "GPLv3+";
license = clangStdenv.lib.licenses.gpl3Plus;
};
}

View File

@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
developed a simple Emacs interface to w3m.
'';
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
homepage = http://emacs-w3m.namazu.org/;

View File

@ -64,7 +64,7 @@ stdenv.mkDerivation rec {
homepage = http://www.gnu.org/software/emms/;
license = "GPLv3+";
license = stdenv.lib.licenses.gpl3Plus;
maintainers = [ stdenv.lib.maintainers.ludo ];
platforms = stdenv.lib.platforms.unix;

View File

@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
meta = {
description = "A (very early) GitHub client library for Emacs";
homepage = https://github.com/sigma/gh.el;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Emacs integration for gist.github.com";
homepage = https://github.com/sigma/gist.el;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Emacs major mode for Idris";
homepage = https://github.com/idris-hackers/idris-mode;
license = "GPLv3";
license = stdenv.lib.licenses.gpl3;
platforms = stdenv.lib.platforms.all;
};

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation {
meta = {
description = "Emacs major mode for jade and stylus";
homepage = https://github.com/brianc/jade-mode;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -89,7 +89,7 @@ in
* Java source interpreter (Pat Neimeyer's BeanShell)
'';
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ ];
platforms = stdenv.lib.platforms.gnu; # arbitrary choice

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
meta = {
description = "tiny logging framework for Emacs";
homepage = https://github.com/sigma/logito;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Insert dummy pseudo Latin text for Emacs";
homepage = http://www.emacswiki.org/emacs/LoremIpsum;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
meta = {
homepage = "https://github.com/magit/magit";
description = "Magit, an Emacs interface to Git";
license = "GPLv3+";
license = stdenv.lib.licenses.gpl3Plus;
longDescription = ''
With Magit, you can inspect and modify your Git repositories with

View File

@ -13,7 +13,7 @@ stdenv.mkDerivation {
meta = {
description = "Emacs mode for the programming language Maude";
license = "GPLv2";
license = stdenv.lib.licenses.gpl2;
platforms = stdenv.lib.platforms.all;
maintainers = [ stdenv.lib.maintainers.simons ];
};

View File

@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
meta = {
description = "an emacs library to access metaweblog based weblogs";
homepage = https://github.com/punchagan/metaweblog;
license = "GPLv3+";
license = stdenv.lib.licenses.gpl3Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -2,11 +2,11 @@
, texLiveAggregationFun }:
stdenv.mkDerivation rec {
name = "org-8.2.7b";
name = "org-8.2.7c";
src = fetchurl {
url = "http://orgmode.org/${name}.tar.gz";
sha256 = "07hq2q126d967nj7xq46q4mkca5r2rw61bn8d6nzkhksghp8b2v1";
sha256 = "0qqf58xqw1kkgjxm9z40s6h7xd209rx3933klla22lryv3yclc1k";
};
buildInputs = [ emacs ];
@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
than that found in GNU Emacs.
'';
license = "GPLv3+";
license = stdenv.lib.licenses.gpl3Plus;
maintainers = with stdenv.lib.maintainers; [ chaoflow pSub ];
platforms = stdenv.lib.platforms.unix;

View File

@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Publish directly from Emacs org-mode to WordPress blogs";
homepage = https://github.com/punchagan/org2blog;
license = "GPLv3+";
license = stdenv.lib.licenses.gpl3Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Persistent caching for Emacs";
homepage = https://github.com/sigma/pcache.el;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -18,7 +18,7 @@ stdenv.mkDerivation (rec {
s|/sbin/install-info|install-info|g"
# Workaround for bug #458
# Workaround for bug #458
# ProofGeneral 4.2 byte-compilation fails with Emacs 24.2.90
# http://proofgeneral.inf.ed.ac.uk/trac/ticket/458
sed -i "Makefile" \
@ -48,7 +48,7 @@ stdenv.mkDerivation (rec {
interactive theorem provers), based on the customizable text editor Emacs.
'';
homepage = http://proofgeneral.inf.ed.ac.uk;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.unix; # arbitrary choice
};
})

View File

@ -26,7 +26,7 @@ stdenv.mkDerivation {
meta = {
description = "Enhanced Emacs support for editing and running Scheme code";
homepage = http://www.neilvandyke.org/quack/;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ ];
};
}

View File

@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Mark a rectangle of text with highlighting";
homepage = http://emacswiki.org/emacs/RectangleMark;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -40,6 +40,6 @@ stdenv.mkDerivation rec {
'';
homepage = http://gna.org/projects/remember-el/;
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
};
}

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Two-pane file manager for Emacs based on Dired and inspired by MC";
homepage = http://www.emacswiki.org/emacs/Sunrise_Commander;
license = "GPLv3+";
license = stdenv.lib.licenses.gpl3Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -25,6 +25,6 @@ in stdenv.mkDerivation {
homepage = https://github.com/bnbeckwith/writegood-mode;
platforms = stdenv.lib.platforms.all;
maintainers = [ stdenv.lib.maintainers.pSub ];
license = "GPL3";
license = stdenv.lib.licenses.gpl3;
};
}

View File

@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Elisp implementation of clientside XML-RPC";
homepage = https://launchpad.net/xml-rpc-el;
license = "GPLv3+";
license = stdenv.lib.licenses.gpl3Plus;
platforms = stdenv.lib.platforms.all;
};

View File

@ -13,7 +13,7 @@ stdenv.mkDerivation {
meta = {
description = "WYSIWYG PostScript annotator";
homepage = "http://http://flpsed.org/flpsed.html";
license = "GPLv3";
license = stdenv.lib.licenses.gpl3;
platforms = stdenv.lib.platforms.mesaPlatforms;
};
}

View File

@ -24,7 +24,7 @@ in stdenv.mkDerivation rec {
meta = with stdenv.lib; {
homepage = http://gobby.0x539.de/;
description = "A GTK-based collaborative editor supporting multiple documents in one session and a multi-user chat";
license = "GPLv2+";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ maintainers.phreedom ];
platforms = platforms.all;
};

View File

@ -35,6 +35,6 @@ stdenv.mkDerivation rec {
meta = {
description = "Sophisticated text editor for code, markup and prose";
license = "unfree";
license = stdenv.lib.licenses.unfree;
};
}

View File

@ -57,7 +57,6 @@ in stdenv.mkDerivation {
meta = {
description = "Sophisticated text editor for code, markup and prose";
maintainers = stdenv.lib.maintainers.wmertens;
license = "unfree";
license = stdenv.lib.licenses.unfree;
};
}

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